aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Globals/ObjectMgr.cpp
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2011-03-06 23:45:22 +0100
committerMachiavelli <machiavelli.trinity@gmail.com>2011-03-06 23:45:22 +0100
commitd6ddc6410c9c9cde6f6960bf57207b007195cf6c (patch)
treef890ea3f19f95dc64e5db772d9d2f5e825ef2456 /src/server/game/Globals/ObjectMgr.cpp
parent4437cb9e3cf13c6dcee88689b36ac8b921a43811 (diff)
Core/Vehicles: Rename vehicle_accessory to vehicle_template_accessory, and implement a new table named vehicle_accessory to allow accessory definitions based on GUID that will overwrite defeinitions based on entry.
Fixes #Nay
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rwxr-xr-xsrc/server/game/Globals/ObjectMgr.cpp60
1 files changed, 58 insertions, 2 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 48cca2df14b..f6a17695f1d 100755
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -2741,6 +2741,62 @@ void ObjectMgr::LoadItemSetNames()
sLog->outString();
}
+void ObjectMgr::LoadVehicleTemplateAccessories()
+{
+ uint32 oldMSTime = getMSTime();
+
+ m_VehicleTemplateAccessoryMap.clear(); // needed for reload case
+
+ uint32 count = 0;
+
+ QueryResult result = WorldDatabase.Query("SELECT `entry`,`accessory_entry`,`seat_id`,`minion`,`summontype`,`summontimer` FROM `vehicle_template_accessory`");
+
+ if (!result)
+ {
+ sLog->outErrorDb(">> Loaded 0 vehicle template accessories. DB table `vehicle_template_accessory` is empty.");
+ sLog->outString();
+ return;
+ }
+
+ do
+ {
+ Field *fields = result->Fetch();
+
+ uint32 uiEntry = fields[0].GetUInt32();
+ uint32 uiAccessory = fields[1].GetUInt32();
+ int8 uiSeat = int8(fields[2].GetInt16());
+ bool bMinion = fields[3].GetBool();
+ uint8 uiSummonType = fields[4].GetUInt8();
+ uint32 uiSummonTimer= fields[5].GetUInt32();
+
+ if (!sCreatureStorage.LookupEntry<CreatureInfo>(uiEntry))
+ {
+ sLog->outErrorDb("Table `vehicle_template_accessory`: creature template entry %u does not exist.", uiEntry);
+ continue;
+ }
+
+ if (!sCreatureStorage.LookupEntry<CreatureInfo>(uiAccessory))
+ {
+ sLog->outErrorDb("Table `vehicle_template_accessory`: Accessory %u does not exist.", uiAccessory);
+ continue;
+ }
+
+ if (mSpellClickInfoMap.find(uiEntry) == mSpellClickInfoMap.end())
+ {
+ sLog->outErrorDb("Table `vehicle_template_accessory`: creature template entry %u has no data in npc_spellclick_spells", uiEntry);
+ continue;
+ }
+
+ m_VehicleTemplateAccessoryMap[uiEntry].push_back(VehicleAccessory(uiAccessory, uiSeat, bMinion, uiSummonType, uiSummonTimer));
+
+ ++count;
+ }
+ while (result->NextRow());
+
+ sLog->outString(">> Loaded %u Vehicle Accessories in %u ms", count, GetMSTimeDiffToNow(oldMSTime));
+ sLog->outString();
+}
+
void ObjectMgr::LoadVehicleAccessories()
{
uint32 oldMSTime = getMSTime();
@@ -2749,11 +2805,11 @@ void ObjectMgr::LoadVehicleAccessories()
uint32 count = 0;
- QueryResult result = WorldDatabase.Query("SELECT `entry`,`accessory_entry`,`seat_id`,`minion`,`summontype`,`summontimer` FROM `vehicle_accessory`");
+ QueryResult result = WorldDatabase.Query("SELECT `guid`,`accessory_entry`,`seat_id`,`minion`,`summontype`,`summontimer` FROM `vehicle_accessory`");
if (!result)
{
- sLog->outErrorDb(">> Loaded 0 LoadVehicleAccessor. DB table `vehicle_accessory` is empty.");
+ sLog->outErrorDb(">> Loaded 0 vehicle accessories. DB table `vehicle_accessory` is empty.");
sLog->outString();
return;
}