public void bash_attack(Floor fl, Monster m, gridCoordinate target_coord, Doodad d, Weapon wp) { bool rolled_max = false; int xdif = 0; int ydif = 0; if (m != null) { xdif = target_coord.x - my_grid_coord.x; ydif = target_coord.y - my_grid_coord.y; } else { xdif = d.get_g_coord().x - my_grid_coord.x; ydif = d.get_g_coord().y - my_grid_coord.y; } double multiplier = 1.4; if (wp.get_hand_count() == 2) multiplier = 1.6; int m_hp = 0; if(m!= null) m_hp = m.hitPoints; gridCoordinate opposition_coord = new gridCoordinate(-1, -1); if(m != null) opposition_coord = target_coord; else opposition_coord = d.get_g_coord(); fl.add_effect(wp.get_my_damage_type(), opposition_coord); if (m != null) attack_monster_in_grid(fl, wp, m.my_Index, target_coord, multiplier, out rolled_max); else attack_Doodad_in_grid(fl, wp, d.get_my_index(), d.get_g_coord(), multiplier, out rolled_max); if (m!= null && m.hitPoints > 0 && m_hp > m.hitPoints) { if(!m.shove(xdif, ydif, this, fl)) { fl.add_effect(wp.get_my_damage_type(), target_coord); attack_monster_in_grid(fl, wp, m.my_Index, target_coord, 0.5, out rolled_max); } } wp.set_cooldown(standard_wpn_cooldown); if (my_class == Chara_Class.Warrior) { c_energy += 5 + rGen.Next(2); if (rolled_max) c_energy++; } }
public void whirlwind_attack(Floor fl, Weapon target_weapon) { bool rolled_max = false; List<gridCoordinate> target_coordinates = new List<gridCoordinate>(); for (int x = my_grid_coord.x - 1; x <= my_grid_coord.x + 1; x++) for (int y = my_grid_coord.y - 1; y <= my_grid_coord.y + 1; y++) if(!(x== my_grid_coord.x && y== my_grid_coord.y)) target_coordinates.Add(new gridCoordinate(x, y)); int monster_ID = -1; int Doodad_ID = -1; for (int i = 0; i < target_coordinates.Count; i++) { double multiplier = 1.3; if (target_weapon.get_hand_count() == 2) multiplier = 1.6; if (fl.is_monster_here(target_coordinates[i], out monster_ID)) attack_monster_in_grid(fl, target_weapon, monster_ID, target_coordinates[i], multiplier, out rolled_max); if (fl.is_destroyable_Doodad_here(target_coordinates[i], out Doodad_ID)) attack_Doodad_in_grid(fl, target_weapon, Doodad_ID, target_coordinates[i], multiplier, out rolled_max); if (fl.isWalkable(target_coordinates[i])) fl.add_effect(target_weapon.get_my_damage_type(), target_coordinates[i]); } target_weapon.set_cooldown(standard_wpn_cooldown); if (my_class == Chara_Class.Warrior) { c_energy += 5 + rGen.Next(2); if (rolled_max) c_energy++; } }