diff options
Diffstat (limited to 'src/server/game/Globals/ObjectMgr.cpp')
-rw-r--r-- | src/server/game/Globals/ObjectMgr.cpp | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index ea45fd3fbb5..1e65ba93062 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -3462,8 +3462,8 @@ void ObjectMgr::LoadVehicleTemplateAccessories() uint32 count = 0; - // 0 1 2 3 4 5 - QueryResult result = WorldDatabase.Query("SELECT `entry`, `accessory_entry`, `seat_id`, `minion`, `summontype`, `summontimer` FROM `vehicle_template_accessory`"); + // 0 1 2 3 4 5 6 + QueryResult result = WorldDatabase.Query("SELECT `entry`, `accessory_entry`, `seat_id`, `minion`, `summontype`, `summontimer`, `RideSpellID` FROM `vehicle_template_accessory`"); if (!result) { @@ -3482,6 +3482,18 @@ void ObjectMgr::LoadVehicleTemplateAccessories() uint8 summonType = fields[4].GetUInt8(); uint32 summonTimer = fields[5].GetUInt32(); + Optional<uint32> rideSpellId; + if (!fields[6].IsNull()) + { + rideSpellId = fields[6].GetUInt32(); + + if (!sSpellMgr->GetSpellInfo(*rideSpellId, DIFFICULTY_NONE)) + { + TC_LOG_ERROR("sql.sql", "Table `vehicle_template_accessory`: rideSpellId {} does not exist for entry {}.", *rideSpellId, entry); + continue; + } + } + if (!GetCreatureTemplate(entry)) { TC_LOG_ERROR("sql.sql", "Table `vehicle_template_accessory`: creature template entry {} does not exist.", entry); @@ -3500,7 +3512,7 @@ void ObjectMgr::LoadVehicleTemplateAccessories() continue; } - _vehicleTemplateAccessoryStore[entry].push_back(VehicleAccessory(accessory, seatId, isMinion, summonType, summonTimer)); + _vehicleTemplateAccessoryStore[entry].push_back(VehicleAccessory(accessory, seatId, isMinion, summonType, summonTimer, rideSpellId)); ++count; } @@ -3552,8 +3564,8 @@ void ObjectMgr::LoadVehicleAccessories() uint32 count = 0; - // 0 1 2 3 4 5 - QueryResult result = WorldDatabase.Query("SELECT `guid`, `accessory_entry`, `seat_id`, `minion`, `summontype`, `summontimer` FROM `vehicle_accessory`"); + // 0 1 2 3 4 5 6 + QueryResult result = WorldDatabase.Query("SELECT `guid`, `accessory_entry`, `seat_id`, `minion`, `summontype`, `summontimer`, `RideSpellID` FROM `vehicle_accessory`"); if (!result) { @@ -3572,13 +3584,25 @@ void ObjectMgr::LoadVehicleAccessories() uint8 uiSummonType = fields[4].GetUInt8(); uint32 uiSummonTimer= fields[5].GetUInt32(); + Optional<uint32> rideSpellId; + if (!fields[6].IsNull()) + { + rideSpellId = fields[6].GetUInt32(); + + if (!sSpellMgr->GetSpellInfo(*rideSpellId, DIFFICULTY_NONE)) + { + TC_LOG_ERROR("sql.sql", "Table `vehicle_accessory`: rideSpellId {} does not exist for guid {}.", *rideSpellId, uiGUID); + continue; + } + } + if (!GetCreatureTemplate(uiAccessory)) { TC_LOG_ERROR("sql.sql", "Table `vehicle_accessory`: Accessory {} does not exist.", uiAccessory); continue; } - _vehicleAccessoryStore[uiGUID].push_back(VehicleAccessory(uiAccessory, uiSeat, bMinion, uiSummonType, uiSummonTimer)); + _vehicleAccessoryStore[uiGUID].push_back(VehicleAccessory(uiAccessory, uiSeat, bMinion, uiSummonType, uiSummonTimer, rideSpellId)); ++count; } |