public override void OnEvent(SpellMissDoneEvent spellMissEvent) { base.OnEvent(spellMissEvent); if (LocalPlayer == null || !World.UnitManager.TryFind(spellMissEvent.TargetId.PackedValue, out Unit target)) { return; } EventHandler.ExecuteEvent(EventHandler.GlobalDispatcher, GameEvents.SpellMissDone, (Unit)LocalPlayer, target, (SpellMissType)spellMissEvent.MissType); }
private void OnServerSpellHit(Unit caster, Unit target, SpellInfo spellInfo, SpellMissType missType) { if (missType != SpellMissType.None && caster is Player player && World.IsControlledByHuman(player)) { SpellMissDoneEvent spellMissEvent = player.IsController ? SpellMissDoneEvent.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered) : SpellMissDoneEvent.Create(player.BoltEntity.Controller, ReliabilityModes.ReliableOrdered); spellMissEvent.TargetId = target.BoltEntity.NetworkId; spellMissEvent.MissType = (int)missType; spellMissEvent.Send(); } UnitSpellHitEvent unitSpellHitEvent = UnitSpellHitEvent.Create(target.BoltEntity, EntityTargets.Everyone); unitSpellHitEvent.CasterId = caster.BoltEntity.NetworkId; unitSpellHitEvent.SpellId = spellInfo.Id; unitSpellHitEvent.MissType = (int)missType; unitSpellHitEvent.Send(); }