public WorldObject GetObjectByTypeMask(WorldObject p, ObjectGuid guid, TypeMask typemask) { switch (guid.GetHigh()) { case HighGuid.Item: if (typemask.HasAnyFlag(TypeMask.Item) && p.IsTypeId(TypeId.Player)) { return(((Player)p).GetItemByGuid(guid)); } break; case HighGuid.Player: if (typemask.HasAnyFlag(TypeMask.Player)) { return(GetPlayer(p, guid)); } break; case HighGuid.Transport: case HighGuid.GameObject: if (typemask.HasAnyFlag(TypeMask.GameObject)) { return(GetGameObject(p, guid)); } break; case HighGuid.Creature: case HighGuid.Vehicle: if (typemask.HasAnyFlag(TypeMask.Unit)) { return(GetCreature(p, guid)); } break; case HighGuid.Pet: if (typemask.HasAnyFlag(TypeMask.Unit)) { return(GetPet(p, guid)); } break; case HighGuid.DynamicObject: if (typemask.HasAnyFlag(TypeMask.DynamicObject)) { return(GetDynamicObject(p, guid)); } break; case HighGuid.AreaTrigger: if (typemask.HasAnyFlag(TypeMask.AreaTrigger)) { return(GetAreaTrigger(p, guid)); } break; case HighGuid.Conversation: if (typemask.HasAnyFlag(TypeMask.Conversation)) { return(GetConversation(p, guid)); } break; case HighGuid.Corpse: break; } return(null); }