bool MOTransport::Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint8 animprogress, uint16 dynamicLowValue) { Relocate(WorldLocation(mapid, x, y, z, ang)); // FIXME - instance id and phaseMask isn't set to values different from std. if(!IsPositionValid()) { sLog.outError("Transport (GUID: %u) not created. Suggested coordinates isn't valid (X: %f Y: %f)", guidlow,x,y); return false; } Object::_Create(ObjectGuid(HIGHGUID_MO_TRANSPORT, guidlow)); GameObjectInfo const* goinfo = ObjectMgr::GetGameObjectInfo(guidlow); if (!goinfo) { sLog.outErrorDb("Transport not created: entry in `gameobject_template` not found, guidlow: %u map: %u (X: %f Y: %f Z: %f) ang: %f",guidlow, mapid, x, y, z, ang); return false; } m_goInfo = goinfo; SetObjectScale(goinfo->size); SetUInt32Value(GAMEOBJECT_FACTION, goinfo->faction); //SetUInt32Value(GAMEOBJECT_FLAGS, goinfo->flags); SetUInt32Value(GAMEOBJECT_FLAGS, (GO_FLAG_TRANSPORT | GO_FLAG_NODESPAWN)); SetUInt32Value(GAMEOBJECT_LEVEL, GetPeriod(true)); SetEntry(goinfo->id); SetDisplayId(goinfo->displayId); SetGoState(GO_STATE_READY); SetGoType(GameobjectTypes(goinfo->type)); SetGoArtKit(0); SetGoAnimProgress(animprogress); SetUInt16Value(GAMEOBJECT_DYNAMIC, 0, dynamicLowValue); SetUInt16Value(GAMEOBJECT_DYNAMIC, 1, 0); SetName(goinfo->name); m_transportKit = new TransportKit(*this); m_anchorageTimer.SetInterval(0); m_anchorageTimer.Reset(); return true; }
bool Transport::Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint8 animprogress, uint16 dynamicHighValue) { Relocate(x, y, z, ang); // instance id and phaseMask isn't set to values different from std. if (!IsPositionValid()) { sLog.outError("Transport (GUID: %u) not created. Suggested coordinates isn't valid (X: %f Y: %f)", guidlow, x, y); return false; } Object::_Create(guidlow, 0, HIGHGUID_MO_TRANSPORT); GameObjectInfo const* goinfo = ObjectMgr::GetGameObjectInfo(guidlow); if (!goinfo) { sLog.outErrorDb("Transport not created: entry in `gameobject_template` not found, guidlow: %u map: %u (X: %f Y: %f Z: %f) ang: %f", guidlow, mapid, x, y, z, ang); return false; } m_goInfo = goinfo; SetObjectScale(goinfo->size); SetUInt32Value(GAMEOBJECT_FACTION, goinfo->faction); // SetUInt32Value(GAMEOBJECT_FLAGS, goinfo->flags); SetUInt32Value(GAMEOBJECT_FLAGS, (GO_FLAG_TRANSPORT | GO_FLAG_NODESPAWN)); SetUInt32Value(GAMEOBJECT_LEVEL, m_period); SetEntry(goinfo->id); //SetDisplayId(goinfo->displayId); // Use SetDisplayId only if we have the GO assigned to a proper map! SetUInt32Value(GAMEOBJECT_DISPLAYID, goinfo->displayId); m_displayInfo = sGameObjectDisplayInfoStore.LookupEntry(goinfo->displayId); SetGoState(GO_STATE_READY); SetGoType(GameobjectTypes(goinfo->type)); SetGoArtKit(0); SetGoAnimProgress(animprogress); // low part always 0, dynamicHighValue is some kind of progression (not implemented) SetUInt16Value(GAMEOBJECT_DYNAMIC, 0, 0); SetUInt16Value(GAMEOBJECT_DYNAMIC, 1, dynamicHighValue); SetName(goinfo->name); return true; }