fix(Core/Vehicles): feat vehicle seat addon, vehicle enter/exit positions (#20082)

* implement initial vehicle_seat_addon

Co-authored-by: Ovah <dreadkiller@gmx.de>

* add more vehicle_seat_addon data

* make exiting passenger visible

fixes "immediate despawn" of travelers mammoth

* style, update comments

* remove hacked pos relocate

* remove sending MSG_MOVE_ROOT/UNROOT on Ack

* set and unset UNIT_NPC_FLAG_PLAYER_VEHICLE on init/entry

* ulduar demolisher: remove flag correction and no longer needed usableseat

* fixup! implement initial vehicle_seat_addon

* fixup! fixup! implement initial vehicle_seat_addon

* re-add AddPassenger Flame Leviathan hack

was commented by mistake

* Update rev_1725993194571320983.sql

add missing ticks

---------

Co-authored-by: Ovah <dreadkiller@gmx.de>
This commit is contained in:
Jelle Meeus
2024-10-11 07:08:14 +02:00
committed by GitHub
parent e43b760c08
commit 859a42a41e
10 changed files with 192 additions and 54 deletions
+12
View File
@@ -518,6 +518,7 @@ typedef std::map<std::pair<std::string, uint32>, ModuleString> ModuleStringConta
typedef std::unordered_map<int32, AcoreString> AcoreStringContainer;
typedef std::unordered_map<uint32, GossipMenuItemsLocale> GossipMenuItemsLocaleContainer;
typedef std::unordered_map<uint32, PointOfInterestLocale> PointOfInterestLocaleContainer;
typedef std::unordered_map<uint32, VehicleSeatAddon> VehicleSeatAddonContainer;
typedef std::multimap<uint32, uint32> QuestRelations;
typedef std::pair<QuestRelations::const_iterator, QuestRelations::const_iterator> QuestRelationBounds;
@@ -1052,6 +1053,7 @@ public:
void LoadMailServerTemplates();
void LoadVehicleTemplateAccessories();
void LoadVehicleAccessories();
void LoadVehicleSeatAddon();
void LoadGossipText();
@@ -1429,6 +1431,15 @@ public:
[[nodiscard]] bool IsTransportMap(uint32 mapId) const { return _transportMaps.count(mapId) != 0; }
VehicleSeatAddon const* GetVehicleSeatAddon(uint32 seatId) const
{
VehicleSeatAddonContainer::const_iterator itr = _vehicleSeatAddonStore.find(seatId);
if (itr == _vehicleSeatAddonStore.end())
return nullptr;
return &itr->second;
}
[[nodiscard]] uint32 GetQuestMoneyReward(uint8 level, uint32 questMoneyDifficulty) const;
void SendServerMail(Player* player, uint32 id, uint32 reqLevel, uint32 reqPlayTime, uint32 rewardMoneyA, uint32 rewardMoneyH, uint32 rewardItemA, uint32 rewardItemCountA, uint32 rewardItemH, uint32 rewardItemCountH, std::string subject, std::string body, uint8 active) const;
private:
@@ -1506,6 +1517,7 @@ private:
VehicleAccessoryContainer _vehicleTemplateAccessoryStore;
VehicleAccessoryContainer _vehicleAccessoryStore;
VehicleSeatAddonContainer _vehicleSeatAddonStore;
LocaleConstant DBCLocaleIndex;