示例#1
0
        public void attack_monster_in_grid(Floor fl, Weapon w, int c_monsterID, gridCoordinate current_gc, double multiplier, out bool rolled_max, bool charge_attack = false)
        {
            rolled_max = false;
            List<Attack> modified_attacks = new List<Attack>();

            if (fl.badguy_by_monster_id(c_monsterID) != null && !fl.monster_aware_of_player(c_monsterID) && my_class == Chara_Class.Rogue)
                max_energy += 2;

            if (fl.badguy_by_monster_id(c_monsterID) != null)
            {
                if (w != null)
                {
                    string attack_msg = "You attack the " + fl.badguy_by_monster_id(c_monsterID).my_name + " with your " + w.get_my_name() + "!";
                    message_buffer.Add(attack_msg);
                    List<Attack> attacks = new List<Attack>();
                    List<StatusEffect> debuffs = new List<StatusEffect>();

                    bool aoe_effect = false;
                    if (w.get_my_weapon_type() == Weapon.Type.Axe || w.get_my_weapon_type() == Weapon.Type.Lance)
                        aoe_effect = true;

                    handle_attack_damage(w, null, multiplier, charge_attack, out rolled_max, ref attacks, ref debuffs);
                    fl.damage_monster(attacks, debuffs, c_monsterID, true, aoe_effect);
                }
                else //Unarmed attack.
                {
                    double base_dmg_val = (double)rGen.Next(1, 4) * multiplier;

                    if (base_dmg_val == 3 * multiplier)
                        rolled_max = true;

                    int modified_dmg_val = (int)base_dmg_val;
                    if (my_character == Character.Falsael)
                        modified_dmg_val = (int)Math.Ceiling(base_dmg_val * 1.2);

                    modified_attacks.Add(new Attack(Attack.Damage.Crushing, modified_dmg_val));
                    string attack_msg = "You attack the " + fl.badguy_by_monster_id(c_monsterID).my_name + " with your fists!";
                    message_buffer.Add(attack_msg);
                    fl.damage_monster(modified_attacks, null, c_monsterID, true, false);
                }
            }
        }