Beispiel #1
0
    private float CalculateAbsorbDamaged(Vector3Int cellPos, AttackType attackType, MetaDataNode data, BasicTile tile = null)
    {
        if (tile == null)
        {
            tile = metaTileMap.GetTile(cellPos, Layer.LayerType) as BasicTile;
        }

        float currentDamage = data.Damage;

        if (tile.MaxHealth < data.Damage)
        {
            currentDamage = tile.MaxHealth;
            data.ResetDamage();
        }

        if (tile.Armor.GetRatingValue(attackType) > 0 && (currentDamage - data.GetPreviousDamage()) > 0)
        {
            return((currentDamage - data.GetPreviousDamage()) / tile.Armor.GetRatingValue(attackType));
        }
        else
        {
            return(0);
        }
    }