diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/GameObject/GameObject.h | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Item/Item.h | 1 | ||||
-rw-r--r-- | src/server/game/Entities/Transport/Transport.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Entities/Transport/Transport.h | 2 | ||||
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 2 |
5 files changed, 9 insertions, 1 deletions
diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 70a09c26f11..400597cfb77 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -744,6 +744,7 @@ class GameObject : public WorldObject, public GridObject<GameObject> void EventInform(uint32 eventId); uint64 GetRotation() const { return m_rotation; } + virtual uint32 GetScriptId() const { return GetGOInfo()->ScriptId; } protected: uint32 m_spellId; time_t m_respawnTime; // (secs) time of next respawn (or despawn if GO have owner()), diff --git a/src/server/game/Entities/Item/Item.h b/src/server/game/Entities/Item/Item.h index c2b18badf9b..bab9bc9060a 100644 --- a/src/server/game/Entities/Item/Item.h +++ b/src/server/game/Entities/Item/Item.h @@ -347,6 +347,7 @@ class Item : public Object void BuildUpdate(UpdateDataMapType&); + uint32 GetScriptId() const { return GetProto()->ScriptId; } private: std::string m_text; uint8 m_slot; diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index e1036436af0..29bb3007b1b 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -33,7 +33,7 @@ void MapManager::LoadTransports() { - QueryResult_AutoPtr result = WorldDatabase.Query("SELECT entry, name, period FROM transports"); + QueryResult_AutoPtr result = WorldDatabase.Query("SELECT entry, name, period, ScriptName FROM transports"); uint32 count = 0; @@ -60,6 +60,7 @@ void MapManager::LoadTransports() uint32 entry = fields[0].GetUInt32(); std::string name = fields[1].GetCppString(); t->m_period = fields[2].GetUInt32(); + t->ScriptId = objmgr.GetScriptId(fields[3].GetString()); const GameObjectInfo *goinfo = objmgr.GetGameObjectInfo(entry); @@ -182,6 +183,7 @@ void MapManager::LoadTransportNPCs() Transport::Transport() : GameObject() { m_updateFlag = (UPDATEFLAG_TRANSPORT | UPDATEFLAG_HIGHGUID | UPDATEFLAG_HAS_POSITION | UPDATEFLAG_ROTATION); + ScriptId = 0; } bool Transport::Create(uint32 guidlow, uint32 mapid, float x, float y, float z, float ang, uint32 animprogress, uint32 dynflags) diff --git a/src/server/game/Entities/Transport/Transport.h b/src/server/game/Entities/Transport/Transport.h index aa8328afed4..00d9e0ef84b 100644 --- a/src/server/game/Entities/Transport/Transport.h +++ b/src/server/game/Entities/Transport/Transport.h @@ -59,6 +59,7 @@ class Transport : public GameObject void UpdateNPCPositions(); void BuildStartMovePacket(Map const *targetMap); void BuildStopMovePacket(Map const *targetMap); + uint32 GetScriptId() const { return ScriptId; } private: struct WayPoint { @@ -89,6 +90,7 @@ class Transport : public GameObject PlayerSet m_passengers; uint32 currenttguid; + uint32 ScriptId; public: WayPointMap m_WayPoints; uint32 m_nextNodeTime; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 469f9f5c021..305edb1bd3b 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -8740,6 +8740,8 @@ void ObjectMgr::LoadScriptNames() "UNION " "SELECT DISTINCT(ScriptName) FROM spell_script_names WHERE ScriptName <> '' " "UNION " + "SELECT DISTINCT(ScriptName) FROM transports WHERE ScriptName <> '' " + "UNION " "SELECT DISTINCT(script) FROM instance_template WHERE script <> ''"); if (!result) |