コード例 #1
0
ファイル: Health.cs プロジェクト: Evellex/Eldrinth
        public void ApplyDamage(DamageInfo info)
        {
            damageModifiers.RemoveAll((p) => { return p == null; });
            info.amount = DamageModifier.ApplyDamageModifiers(info.amount, info.type, damageModifiers);

            currentHealth = Mathf.Clamp(currentHealth - info.amount, 0, maximumHealth);

            if (info.amount > 0)
            {
                changeHistory.Add(info);
                damageHistory.Add(info);
                InvokeOnDamage(info);
            }
            if (info.amount < 0)
            {
                changeHistory.Add(info);
                healHistory.Add(info);
                InvokeOnHeal(info);
            }
            if (currentHealth == 0)
            {
                InvokeOnDeath(info);
                if (info.responsibleAgent != null && responsibleAgent != null)
                    Console.PrintText(info.responsibleAgent.GetName() + "(ID: " + info.responsibleAgent.GetID() + ") killed " + responsibleAgent.GetName() + "(ID: " + responsibleAgent.GetID() + ") with " + info.damageIdentifier);
            }
        }
コード例 #2
0
ファイル: HealthEventAction.cs プロジェクト: Evellex/Eldrinth
 void IHealthEvent.OnHealReceived(DamageInfo info)
 {
     if ((triggerOn & HealthEventFlags.OnHealReceived) > 0)
         Trigger();
 }
コード例 #3
0
ファイル: HealthEventAction.cs プロジェクト: Evellex/Eldrinth
 void IHealthEvent.OnDeath(DamageInfo info)
 {
     if ((triggerOn & HealthEventFlags.OnDeath) > 0)
         Trigger();
 }
コード例 #4
0
ファイル: Health.cs プロジェクト: Evellex/Eldrinth
 private void InvokeOnHeal(DamageInfo info)
 {
     Refresh(); if (list != null) foreach (IHE t in list) { t.OnHealReceived(info); }
 }
コード例 #5
0
ファイル: Health.cs プロジェクト: Evellex/Eldrinth
 private void InvokeOnDeath(DamageInfo info)
 {
     Refresh(); if (list != null) foreach (IHE t in list) { t.OnDeath(info); }
 }
コード例 #6
0
ファイル: Damage.cs プロジェクト: Evellex/Eldrinth
 private void AttemptDamage(Collider target)
 {
     interimDamageInfo = BuildDamageInfo(target);
     IEnumerable<DamageReceiver> list = target.GetPhysicsRoot().GetComponents<DamageReceiver>();
     foreach (DamageReceiver c in list) { c.RequestHandshake(this); }
 }
コード例 #7
0
ファイル: DamageEventAction.cs プロジェクト: Evellex/Eldrinth
 void IDamageEvent.OnHealSent(DamageInfo info)
 {
     if ((triggerOn & DamageEventFlags.OnHealSent) > 0)
         Trigger();
 }