diff options
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; } |