示例#1
0
        private void rangedAttack(Model target, int ballisticSkillToUse)
        {
            int shots = ranged.shots;
            int hits  = rollForRangedHits(shots, ballisticSkillToUse);

            if (hits == 0)
            {
                return;
            }

            int armourPiercingRating = ranged.armourPiercingRating;
            int unsavedHits          = target.rollSaves(hits, armourPiercingRating);

            int weaponStrength = ranged.strength;

            target.inflictWounds(unsavedHits, weaponStrength);
        }
示例#2
0
        public void meleeCombat(Model enemy, Unit squad)
        {
            assaultWoundsInflicted = 0;

            bool isStillAlive = isAliveCheck();

            if (isStillAlive == false)
            {
                return;
            }

            Announcer.announceModelAction(this, Announcer.ModelActions.melee, enemy);

            int targetWeaponSkill = enemy.weaponSkill;
            int meleeToHitScore   = Global.getAssaultToHitScore(weaponSkill, targetWeaponSkill);

            int hits = rollForMeleeHits(attacks, meleeToHitScore);

            string addon = string.Format(" {0} hits", hits);

            Announcer.announceAction(Announcer.GeneralActions.score + addon);

            if (hits == 0)
            {
                return;
            }

            int armourPiercingRating = melee.armourPiercingRating;
            int unsavedHits          = enemy.rollSaves(hits, armourPiercingRating, rangedCombat: false);

            addon = string.Format(" to avoid {0} hits", unsavedHits);
            Announcer.announceModelAction(enemy, Announcer.GeneralActions.fail + addon);

            int weaponStrength = melee.getWeaponStrength(strength);

            assaultWoundsInflicted = enemy.inflictWounds(unsavedHits, weaponStrength);
            Announcer.announceModelAction(this, Announcer.ModelActions.wound, enemy);
        }
示例#3
0
        private void rangedAttack(Model target, int ballisticSkillToUse)
        {
            int shots = ranged.shots;
            int hits = rollForRangedHits(shots, ballisticSkillToUse);
            if (hits == 0)
            {
                return;
            }

            int armourPiercingRating = ranged.armourPiercingRating;
            int unsavedHits = target.rollSaves(hits, armourPiercingRating);

            int weaponStrength = ranged.strength;
            target.inflictWounds(unsavedHits, weaponStrength);
        }
示例#4
0
        public void meleeCombat(Model enemy, Unit squad)
        {
            assaultWoundsInflicted = 0;

            bool isStillAlive = isAliveCheck();
            if (isStillAlive == false)
            {
                return;
            }

            Announcer.announceModelAction(this, Announcer.ModelActions.melee, enemy);

            int targetWeaponSkill = enemy.weaponSkill;
            int meleeToHitScore = Global.getAssaultToHitScore(weaponSkill, targetWeaponSkill);

            int hits = rollForMeleeHits(attacks, meleeToHitScore);

            string addon = string.Format(" {0} hits", hits);
            Announcer.announceAction(Announcer.GeneralActions.score + addon);

            if (hits == 0)
            {
                return;
            }

            int armourPiercingRating = melee.armourPiercingRating;
            int unsavedHits = enemy.rollSaves(hits, armourPiercingRating, rangedCombat : false);

            addon = string.Format(" to avoid {0} hits", unsavedHits);
            Announcer.announceModelAction(enemy, Announcer.GeneralActions.fail + addon);

            int weaponStrength = melee.getWeaponStrength(strength);

            assaultWoundsInflicted = enemy.inflictWounds(unsavedHits, weaponStrength);
            Announcer.announceModelAction(this, Announcer.ModelActions.wound, enemy);
        }