public void SendCastEffect(Unit Target, ushort AbilityEntry, GameData.CombatEvent Event, uint Count) { if (IsPlayer()) { PacketOut Out = new PacketOut((byte)Opcodes.F_CAST_PLAYER_EFFECT); Out.WriteUInt16(Oid); Out.WriteUInt16(Target.Oid); Out.WriteUInt16(AbilityEntry); Out.WriteByte(0); Out.WriteByte((byte)Event); Out.WriteByte(0x13); Out.WriteByte((byte)((128 + (Count % 64) * 2) + 1)); Out.WriteByte((byte)(Count / 64)); Out.WriteByte(0); DispatchGroup(Out); } if (Target != this && Target.IsPlayer()) { PacketOut Out = new PacketOut((byte)Opcodes.F_CAST_PLAYER_EFFECT); Out.WriteUInt16(Oid); Out.WriteUInt16(Target.Oid); Out.WriteUInt16(AbilityEntry); Out.WriteByte(0); Out.WriteByte((byte)Event); Out.WriteByte(0x13); Out.WriteByte((byte)((128 + (Count % 64) * 2) + 1)); Out.WriteByte((byte)(Count / 64)); Out.WriteByte(0); Target.DispatchGroup(Out); } }
// Draw Damages Text public void SendSpellDamage(Unit Target, uint Damage, bool Heal) { if (Caster.IsPlayer()) { PacketOut Out = new PacketOut((byte)Opcodes.F_CAST_PLAYER_EFFECT); Out.WriteUInt16(Caster.Oid); Out.WriteUInt16(Target.Oid); Out.WriteUInt16(Info.Entry); // 00 00 07 D D Out.WriteByte(0); Out.WriteByte(0); Out.WriteByte(7); Out.WriteByte((byte)((128 + (Damage % 64) * 2) + (Heal ? 0 : 1))); Out.WriteByte((byte)(Damage / 64)); Out.WriteByte(0xCE); Out.WriteByte(0x07); Caster.DispatchGroup(Out); } if (Caster != Target && Target.IsPlayer()) { PacketOut Out = new PacketOut((byte)Opcodes.F_CAST_PLAYER_EFFECT); Out.WriteUInt16(Caster.Oid); Out.WriteUInt16(Target.Oid); Out.WriteUInt16(Info.Entry); // 00 00 07 D D Out.WriteByte(0); Out.WriteByte(0); Out.WriteByte(7); Out.WriteByte((byte)((128 + (Damage % 64) * 2) + (Heal ? 0 : 1))); Out.WriteByte((byte)(Damage / 64)); Out.WriteByte(0xCE); Out.WriteByte(0x07); Target.DispatchGroup(Out); } }