Exemplo n.º 1
0
        public void Attack(SimulationState state, CombatWeapon weapon, CombatUnit target, bool isSecondaryAttack, float partDamage)
        {
            float singleAttackDamage    = weapon.GetDamage(target) * partDamage;
            int   framesUntilNextAttack = weapon.GetFramesUntilNextAttack();

            target.DealDamage(state, singleAttackDamage, false);

            if (!isSecondaryAttack)
            {
                FramesUntilNextAttack = framesUntilNextAttack;
            }
            PreviousAttackTarget = target;

            if (weapon.Attacks > 1)
            {
                if (isSecondaryAttack)
                {
                    AdditionalAttacksRemaining--;
                }
                else
                {
                    AdditionalAttacksRemaining = weapon.Attacks - 1;
                }
                SecondaryAttackFrame  = state.SimulationFrame + weapon.FramesUntilSecondaryAttack;
                SecondaryAttackWeapon = weapon;
            }
        }