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
        }