public static void SendMagicDamage(WorldObject victim, IEntity attacker, SpellId spell, uint damage, uint overkill, DamageSchoolMask schools, uint absorbed, uint resisted, uint blocked, bool unkBool, SpellLogFlags flags) { using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_SPELLNONMELEEDAMAGELOG, 40)) { victim.EntityId.WritePacked(packet); if (attacker != null) { attacker.EntityId.WritePacked(packet); } else { packet.Write((byte)0); } packet.Write((uint)spell); packet.Write(damage); packet.Write(overkill); packet.Write((byte)schools); packet.Write(absorbed); packet.Write(resisted); packet.Write(0); // apparently always 0 packet.Write(unkBool); // 0 or 1 packet.Write(blocked); // also flags 0x8, 0x10, packet.Write((uint)flags); packet.Write((byte)0); // unused by client victim.SendPacketToArea(packet, true, false); } }
public static void SendMagicDamage(WorldObject victim, IEntity attacker, SpellId spell, uint damage, uint overkill, DamageSchoolMask schools, uint absorbed, uint resisted, uint blocked, bool unkBool, SpellLogFlags flags) { using (RealmPacketOut packet = new RealmPacketOut((PacketId)RealmServerOpCode.SMSG_SPELLNONMELEEDAMAGELOG, 40)) { victim.EntityId.WritePacked((BinaryWriter)packet); if (attacker != null) { attacker.EntityId.WritePacked((BinaryWriter)packet); } else { packet.Write((byte)0); } packet.Write((uint)spell); packet.Write(damage); packet.Write(overkill); packet.Write((byte)schools); packet.Write(absorbed); packet.Write(resisted); packet.Write(0); packet.Write(unkBool); packet.Write(blocked); packet.Write((uint)flags); packet.Write((byte)0); victim.SendPacketToArea(packet, true, false, Locale.Any, new float?()); } }
/// <summary> /// Any spell and ranged damage /// SMSG_SPELLNONMELEEDAMAGELOG /// </summary> public static void SendMagicDamage(DamageAction state) { using (RealmPacketOut packet = new RealmPacketOut((PacketId)RealmServerOpCode.SMSG_SPELLNONMELEEDAMAGELOG, 40)) { state.Victim.EntityId.WritePacked((BinaryWriter)packet); if (state.Attacker != null) { state.Attacker.EntityId.WritePacked((BinaryWriter)packet); } else { packet.Write((byte)0); } packet.Write(state.SpellEffect != null ? state.SpellEffect.Spell.Id : 0U); packet.Write(state.Damage); packet.Write(0); packet.Write((byte)state.Schools); packet.Write(state.Absorbed); packet.Write(state.Resisted); packet.Write(state.Schools.HasAnyFlag(DamageSchoolMask.Physical)); packet.Write((byte)0); packet.Write(state.Blocked); SpellLogFlags spellLogFlags = state.IsCritical ? SpellLogFlags.Critical : SpellLogFlags.None; packet.Write((int)spellLogFlags); packet.Write((byte)0); state.Victim.SendPacketToArea(packet, true, false, Locale.Any, new float?()); } }
public static void SendMagicDamage(WorldObject victim, IEntity attacker, SpellId spell, uint damage, uint overkill, DamageSchoolMask schools, uint absorbed, uint resisted, uint blocked, bool unkBool, SpellLogFlags flags) { using (var packet = new RealmPacketOut(RealmServerOpCode.SMSG_SPELLNONMELEEDAMAGELOG, 40)) { victim.EntityId.WritePacked(packet); if (attacker != null) { attacker.EntityId.WritePacked(packet); } else { packet.Write((byte)0); } packet.Write((uint)spell); packet.Write(damage); packet.Write(overkill); packet.Write((byte)schools); packet.Write(absorbed); packet.Write(resisted); packet.Write(0); // apparently always 0 packet.Write(unkBool); // 0 or 1 packet.Write(blocked); // also flags 0x8, 0x10, packet.Write((uint)flags); packet.Write((byte)0);// unused by client victim.SendPacketToArea(packet, true); } }