public override void OnEvent(SpellHealingDoneEvent spellHealingEvent) { base.OnEvent(spellHealingEvent); if (LocalPlayer == null || !World.UnitManager.TryFind(spellHealingEvent.Target.PackedValue, out Unit target)) { return; } EventHandler.ExecuteEvent(EventHandler.GlobalDispatcher, GameEvents.SpellHealingDone, (Unit)LocalPlayer, target, spellHealingEvent.HealAmount, spellHealingEvent.IsCrit); }
private void OnSpellHealingDone(SpellHealInfo healInfo) { if (healInfo.Healer is Player player && World.IsControlledByHuman(player)) { SpellHealingDoneEvent spellDamageEvent = player.IsController ? SpellHealingDoneEvent.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered) : SpellHealingDoneEvent.Create(player.BoltEntity.Controller, ReliabilityModes.ReliableOrdered); spellDamageEvent.Target = healInfo.Target.BoltEntity.NetworkId; spellDamageEvent.HealAmount = (int)healInfo.Heal; spellDamageEvent.IsCrit = healInfo.HasCrit; spellDamageEvent.Send(); } // ignore unit healing event, since it currently affects nothing }