private void Awake() { text = GetComponent <Text>(); Messaging.Player.SoftDamage.AddListener((i) => { text.text = AxMath.OneThousanth(i).ToString(); }); }
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); } }