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
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user