public override void Message(IGameMessage msg) { if (msg is DamageMessage && flashing == 0) { if (Engine.Instance.Invincible && Parent.Name == "Player") { return; } DamageMessage damage = (DamageMessage)msg; if (!Engine.Instance.NoDamage) { Health -= damage.Damage; } Hit = true; clearHitNextFrame = false; flashing = flashtime; } else if (msg is HealMessage) { HealMessage heal = (HealMessage)msg; Health += heal.Health; } }
private void CollideWith(IEntity entity, CollisionBox myBox, CollisionBox targetBox) { float mult = targetBox.DamageMultiplier(Parent.Name); float damage = myBox.ContactDamage * mult; IGameMessage dmgmsg; if (damage > 0) { dmgmsg = new DamageMessage(Parent, damage); } else { dmgmsg = new HealMessage(Parent, damage * -1); } float prevhealth = damage; HealthComponent comp = entity.GetComponent <HealthComponent>(); if (comp != null) { prevhealth = comp.Health; } entity.SendMessage(dmgmsg); DamageDealt = Math.Min(damage, prevhealth); }
private void CollideWith(IEntity entity, CollisionBox myBox, CollisionBox targetBox) { float mult = targetBox.DamageMultiplier(Parent.Name); float damage = myBox.ContactDamage * mult; IGameMessage dmgmsg; if (damage > 0) dmgmsg = new DamageMessage(Parent, damage); else dmgmsg = new HealMessage(Parent, damage * -1); float prevhealth = damage; HealthComponent comp = entity.GetComponent<HealthComponent>(); if (comp != null) prevhealth = comp.Health; entity.SendMessage(dmgmsg); DamageDealt = Math.Min(damage, prevhealth); }