Exemple #1
0
    private void OnDamage(DamageFrame f)
    {
        if (Disabled)
        {
            return;
        }

        foreach (SpawnObject a in SpawnOnDamage)
        {
            GameObject o = Instantiate(a.spawnObject, LevelLoader.TemporaryObjects);
            o.transform.position = (Vector3)f.hitPosition + a.position;
        }
    }
Exemple #2
0
 void Damageable.Damage(DamageFrame damageFrame)
 {
 }
    void Damageable.Damage(DamageFrame frame)
    {
        if (Invulnerable)
        {
            return;
        }

        if (Faction != Factions.AgainstAll)
        {
            if (frame.attacker != null)
            {
                if (frame.attacker.Faction != Factions.AgainstAll)
                {
                    if (frame.attacker.Faction == Faction)
                    {
                        return;
                    }
                }
            }
        }

        OnDamage.Invoke(frame);

        if (frame.attacker != null)
        {
            if (frame.attacker.Faction == Factions.Player)
            {
                frame.amount = (int)System.Math.Round((double)frame.amount * ((double)Difficulty.PlayerDamage / 100d));
            }
            else
            {
                frame.amount = (int)System.Math.Round((double)frame.amount * ((double)Difficulty.EnemyDamage / 100d));
            }
        }

        frame.amount *= 100;
        frame.amount /= 100 + Armor;

        Messaging.GUI.DamageIndicator.Invoke(frame.hitPosition, AxMath.OneThousanth(frame.amount).ToString(), frame.damageType);
        HitPoints -= frame.amount;

        if (frame.attacker != null)
        {
            frame.attacker.OnDealDamage.Invoke(frame.amount);
        }

        softDamageFrame.amount = frame.amount;
        GenerateSoftDamage.Invoke(softDamageFrame);
        SoftDamage += softDamageFrame.amount;

        if (HitPoints <= 0)
        {
            OnDeath.Invoke();

            if (CurrentWeapon != null)
            {
                Destroy(CurrentWeapon.gameObject);
            }

            Destroy(gameObject);
        }
    }