예제 #1
0
    void takeKineticDamage(int _damage)
    {
        var   Shields             = state.shields;
        var   armourType          = state.armourType;
        float shieldDefense       = 0.5f;
        float lightArmourDefense  = 1f;
        float mediumArmourDefense = 0.9f;
        float heavyArmourDefense  = 0.6f;

        int shieldDamage = 0;
        int armourDamage = 0;

        #region Shields Remaininag
        if (Shields > 0)
        {
            shieldDamage  = (int)(_damage * shieldDefense);
            state.shields = state.shields - shieldDamage;
        }
        #endregion

        #region No Shields Remaining
        else
        {
            switch (armourType)
            {
            case ArmourType.light:
            {
                armourDamage = (int)(_damage * lightArmourDefense);
                if (armourDamage > 0)
                {
                    state.armour = state.armour - armourDamage;
                }
            }
            break;

            case ArmourType.medium:
            {
                armourDamage = (int)(_damage * mediumArmourDefense);
                if (armourDamage > 0)
                {
                    state.armour = state.armour - armourDamage;
                }
            }
            break;

            case ArmourType.heavy:
            {
                armourDamage = (int)(_damage * heavyArmourDefense);
                if (armourDamage > 0)
                {
                    state.armour = state.armour - armourDamage;
                }
            }
            break;
            }
        }
        #endregion

        BattleLog.Damage(this, "Kinetic", _damage, shieldDamage, armourDamage);
    }