I
Inspiratium Entertainment
Guest
Help!
Hey guys, so, this is going to be a lot of code to look at, but, if you have time can you tell me what I'm doing wrong here?
I'm trying to make things update the EnemyHealthDisplay and PlayerHealthDisplay once attacks complete. I'm not sure if attacks are just not compkleting successfully or I'm doing something else wrong. I'll provide the code for the create, draw_gui, and step events.
Create Event
Code:
//Menu setup
//set current view mode
CurrentPlayerMode = "platformer";
//set global variables
playerHealth = 25;
playerMaxHealth = 25;
playerBaseDamage = 5;
playerAccuracy = 0;
playerCanHit = false;
weaponDamage = 0;
EnemyMaxHealth = 25;
EnemyHealth = 25;
EnemyAttack = 1;
EnemyAccuracy = 1;
EnemyBaseDamage = 5;
EnemyCanHit = false;
//gui dimensions
gui_width = display_get_gui_width();
gui_height = display_get_gui_height();
//gui_margin = 32;
menu_x = gui_width +200;
menu_y = gui_height -200;
menu_x_target = gui_width * .75;
menu_speed = 25; //lower is faster
menu_font = font_Menu;
menu_itemHeight = font_get_size(font_Menu);
menu_committed = -1;
menu_control = true;
menu_array[2] = "Fight";
menu_array[1] = "Items";
menu_array[0] = "Flee";
menu_items = array_length_1d(menu_array);
menu_cursor = 2;
//logic for fight stats controlled by fightscreen obj
playerDamage = 0;
criticalChance = 0;
damageModifier = 0;
enemyDamage = 0;
//alarm for timing enemy attacks
alarm[0] = 0;
fightTimer = false;
Code:
//Draw Menu
draw_set_font(menu_font);
draw_set_halign(fa_left);
draw_set_valign(fa_bottom);
for (var i = 0; i < menu_items; i++) {
var offset = 2;
var txt = menu_array[i];
if (menu_cursor == i) {
txt = string_insert("> ", txt, 0);
var color = c_white;
}
else {
var color = c_gray;
}
var xx = menu_x;
var yy = menu_y - (menu_itemHeight * (i * 1.5));
draw_set_color(c_black);
draw_text(xx-offset,yy,txt);
draw_text(xx+offset,yy,txt);
draw_text(xx,yy+offset,txt);
draw_text(xx,yy-offset,txt);
draw_set_color(color);
draw_text(xx,yy,txt);
}
playerHealthDisplay = string(playerHealth) + "/" + string(playerMaxHealth);
draw_set_color(color);
draw_text(400, 400, playerHealthDisplay);
enemyHealthDisplay = string(EnemyHealth) + "/" + string(EnemyMaxHealth);
draw_set_color(color);
draw_text(600, 400, enemyHealthDisplay);
Code:
//Menu control logic
//menu transitions from right of screen inward
menu_x += (menu_x_target - menu_x) / menu_speed;
//Keyboard menu controls
if (menu_control == true) {
if (keyboard_check_pressed(ord("W"))) {
menu_cursor++;
if (menu_cursor >= menu_items) {
menu_cursor = 0;
}
}
if (keyboard_check_pressed(ord("S"))) {
menu_cursor--;
if (menu_cursor < 0) {
menu_cursor = menu_items - 1;
}
}
if (keyboard_check_pressed(vk_enter)) {
menu_committed = menu_cursor;
menu_control = false;
}
}
//perform committed menu action
if (menu_committed != -1) {
switch(menu_committed) {
case 2: default:
randomize();
//get random number for accuracy check
playerAccuracy = random_range(1,10);
if (playerAccuracy > 3) {
playerCanHit = true;
}
if (playerAccuracy < 3) {
playerCanHit = false;
}
//begin attack logic if CanHit is true
if (playerCanHit = true) {
//roll critical hit chance logic, if a 3 is rolled a second roll starts
criticalChance = random_range(1,3);
//perform second roll for 50/50 chance of succeeding at critical
if (criticalChance = 3) {
var critical5050 = random_range(1,2);
if (critical5050 = 1) {
damageModifier = 3;
}
if (critical5050 = 2) {
damageModifier = 2;
}
}
//perform calculation for and apply player attack damage
playerDamage = damageModifier * (playerBaseDamage + weaponDamage);
EnemyHealth = EnemyHealth - playerDamage;
draw_set_color(c_white);
draw_text(600, 400, enemyHealthDisplay); break;
//start alarm timer for enemy attack
fightTimer = true;
if (fightTimer = true) {
alarm[0] = room_speed * 3;
}
EnemyAccuracy = random_range(1,10);
if (EnemyAccuracy > 3) {
EnemyCanHit = true;
}
if (EnemyAccuracy < 3) {
EnemyCanHit = false;
}
//begin attack logic if CanHit is true
if (EnemyCanHit = true) {
//roll critical hit chance logic, if a 3 is rolled a second roll starts
criticalChance = random_range(1,3);
//perform second roll for 50/50 chance of succeeding at critical
if (criticalChance = 3) {
var critical5050 = random_range(1,2);
if (critical5050 = 1) {
damageModifier = 3;
}
if (critical5050 = 2) {
damageModifier = 2;
}
}
}
}
//set fightTimer to false and apply enemy damage to player
fightTimer = false;
enemyDamage = (damageModifier * EnemyBaseDamage);
playerHealth = playerHealth - enemyDamage;
draw_text(400, 400, playerHealthDisplay);
menu_control = true;
menu_committed = -1;
break;
case 0: game_end(); break;
}
}