public static void CastSpell(PlayerSocket socket, Packet packet) { byte castSpellID = packet.ReadByte(); IMobile m = socket.Mobile; ISpell spell = World.GetSpellByCastID(castSpellID); if (spell == null) { return; } if (spell.SpellTargetType == SpellTargetType.Location) { int X = packet.ReadInt16(); int Y = packet.ReadInt16(); byte Z = packet.ReadByte(); m.CastSpell(spell, new Point3D(X, Y, Z)); } else if (spell.SpellTargetType == SpellTargetType.Player) { byte playerType = packet.ReadByte(); int playerID = packet.ReadInt16(); IMobile target = null; switch (playerType) { case 0: //NPC/Mob target = m.Map.GetMobile(playerID); break; case 1: //Players if (Listener.Instance.PlayerSockets[playerID] != null) { target = Listener.Instance.PlayerSockets[playerID].Mobile; } break; } m.CastSpell(spell, target); } }