public HeroPreDamageEvent OnHeroPreDamage(Hero hero, Character attacker, int damageAmount) { HeroPreDamageEvent heroPreDamageEvent = new HeroPreDamageEvent() { Hero = hero, Attacker = attacker, DamageAmount = damageAmount }; HeroPreDamageHandler.OnNext(heroPreDamageEvent); foreach (Minion battlefieldMinion in GameManager.Instance.GetAllMinions()) { battlefieldMinion.Buffs.OnHeroPreDamage.OnNext(heroPreDamageEvent); } return(heroPreDamageEvent); }
public override void Damage(Character attacker, int damageAmount) { HeroPreDamageEvent heroPreDamageEvent = EventManager.Instance.OnHeroPreDamage(this, attacker, damageAmount); if (attacker != null) { if (attacker.IsAlive()) { Debugger.LogHero(this, "receiving " + heroPreDamageEvent.DamageAmount + " damage by " + attacker.GetName()); Damage(heroPreDamageEvent.DamageAmount); EventManager.Instance.OnHeroDamaged(this, attacker, heroPreDamageEvent.DamageAmount); } } else { Debugger.LogHero(this, "receiving " + heroPreDamageEvent.DamageAmount + " damage by " + attacker.GetName()); Damage(heroPreDamageEvent.DamageAmount); EventManager.Instance.OnHeroDamaged(this, null, heroPreDamageEvent.DamageAmount); } }