public override void OnEvent(SpellDamageDoneEvent spellDamageEvent) { base.OnEvent(spellDamageEvent); if (LocalPlayer == null || !World.UnitManager.TryFind(spellDamageEvent.Target.PackedValue, out Unit target)) { return; } EventHandler.ExecuteEvent(EventHandler.GlobalDispatcher, GameEvents.SpellDamageDone, (Unit)LocalPlayer, target, spellDamageEvent.DamageAmount, (HitType)spellDamageEvent.HitType); }
private void OnSpellDamageDone(SpellDamageInfo damageInfo) { if (damageInfo.Caster is Player player && World.IsControlledByHuman(player)) { SpellDamageDoneEvent spellDamageEvent = player.IsController ? SpellDamageDoneEvent.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered) : SpellDamageDoneEvent.Create(player.BoltEntity.Controller, ReliabilityModes.ReliableOrdered); spellDamageEvent.Target = damageInfo.Target.BoltEntity.NetworkId; spellDamageEvent.DamageAmount = (int)damageInfo.Damage; spellDamageEvent.IsCrit = damageInfo.HasCrit; spellDamageEvent.Send(); } UnitSpellDamageEvent unitSpellDemageEvent = UnitSpellDamageEvent.Create(damageInfo.Target.BoltEntity, EntityTargets.Everyone); unitSpellDemageEvent.CasterId = damageInfo.Caster.BoltEntity.NetworkId; unitSpellDemageEvent.Damage = (int)damageInfo.Damage; unitSpellDemageEvent.IsCrit = damageInfo.HasCrit; unitSpellDemageEvent.Send(); }