diff options
author | Machiavelli <machiavelli.trinity@gmail.com> | 2011-03-06 23:45:22 +0100 |
---|---|---|
committer | Machiavelli <machiavelli.trinity@gmail.com> | 2011-03-06 23:45:22 +0100 |
commit | d6ddc6410c9c9cde6f6960bf57207b007195cf6c (patch) | |
tree | f890ea3f19f95dc64e5db772d9d2f5e825ef2456 /src/server/game/Globals/ObjectMgr.cpp | |
parent | 4437cb9e3cf13c6dcee88689b36ac8b921a43811 (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-x | src/server/game/Globals/ObjectMgr.cpp | 60 |
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; } |