diff options
| author | ModoX <moardox@gmail.com> | 2023-04-05 23:49:46 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-04-05 23:49:46 +0200 |
| commit | 36044a9470e9c39a71916e908ab6cf4f95677793 (patch) | |
| tree | f3c6997cf2f58c6d2f20e2c074d7ed0a4e2915db /src/server/scripts | |
| parent | c1c04fe73bfbc232170b4d14b2f84637f3705dc5 (diff) | |
Core/Creature: Added possibility to give creatures multiple gossip menu ids and control them via conditions (#28159)
Diffstat (limited to 'src/server/scripts')
5 files changed, 18 insertions, 9 deletions
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index ac65e640ade..67f23cf43ba 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -678,7 +678,7 @@ public: bool OnGossipHello(Player* player) override { - uint32 gossipMenuId = Player::GetDefaultGossipMenuForSource(me); + uint32 gossipMenuId = player->GetGossipMenuForSource(me); InitGossipMenuFor(player, gossipMenuId); if (player->GetQuestStatus(QUEST_DEATH_CHALLENGE) == QUEST_STATUS_INCOMPLETE && me->IsFullHealth()) { @@ -688,7 +688,7 @@ public: if (player->IsInCombat() || me->IsInCombat()) return true; - AddGossipItemFor(player, gossipMenuId, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); + AddGossipItemFor(player, player->GetGossipMenuForSource(me), 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); SendGossipMenuFor(player, player->GetGossipTextId(me), me->GetGUID()); } return true; diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp index 4f6dfe7f7d7..992163dfa3a 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/shadowfang_keep.cpp @@ -130,7 +130,7 @@ public: bool OnGossipHello(Player* player) override { - uint32 gossipMenuId = Player::GetDefaultGossipMenuForSource(me); + uint32 gossipMenuId = player->GetGossipMenuForSource(me); InitGossipMenuFor(player, gossipMenuId); if (instance->GetData(TYPE_FREE_NPC) != DONE && instance->GetData(TYPE_RETHILGORE) == DONE) AddGossipItemFor(player, gossipMenuId, 0, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp index c520cdd56d7..4041d02be1e 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp @@ -69,7 +69,9 @@ enum Points enum Misc { - ITEM_VIRTUAL_ITEM = 5301 + ITEM_VIRTUAL_ITEM = 5301, + + GOSSIP_MENU_START_INTRO = 12797, }; Position const VoljinIntroWaypoint[4] = @@ -104,7 +106,7 @@ class npc_voljin_zulaman : public CreatureScript if (_instance->GetData(DATA_ZULAMAN_STATE) != NOT_STARTED) return true; - if (me->GetGossipMenuId() == menuId && !gossipListId) + if (menuId == GOSSIP_MENU_START_INTRO && !gossipListId) { _events.Reset(); me->SetMountDisplayId(0); diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp index 9258359eb16..b9fcfc779c4 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp @@ -104,6 +104,11 @@ enum Points MAX_BRANN_WAYPOINTS_INTRO = 17 }; +enum GossipMenuIds +{ + GOSSIP_MENU_START_INTRO = 11339, +}; + Position const AnraphetActivatePos = {-193.656f, 366.689f, 75.91001f, 3.138207f}; Position const BrannIntroWaypoint[MAX_BRANN_WAYPOINTS_INTRO] = @@ -331,12 +336,12 @@ class npc_brann_bronzebeard_anraphet : public CreatureScript { npc_brann_bronzebeard_anraphetAI(Creature* creature) : CreatureAI(creature), _currentPoint(0), _instance(creature->GetInstanceScript()) { } - bool OnGossipSelect(Player* /*player*/, uint32 sender, uint32 action) override + bool OnGossipSelect(Player* /*player*/, uint32 menuId, uint32 action) override { if (_instance->GetBossState(DATA_VAULT_OF_LIGHTS) == DONE) return true; - if (me->GetGossipMenuId() == sender && !action) + if (menuId == GOSSIP_MENU_START_INTRO && !action) { _instance->SetBossState(DATA_VAULT_OF_LIGHTS, IN_PROGRESS); _currentPoint = 0; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index eadbf4252cb..cbff6530c4f 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -364,7 +364,9 @@ enum MiscData enum Misc { DATA_PLAGUE_STACK = 70337, - DATA_VILE = 45814622 + DATA_VILE = 45814622, + + GOSSIP_MENU_START_INTRO = 10993 }; class NecroticPlagueTargetCheck @@ -1193,7 +1195,7 @@ struct npc_tirion_fordring_tft : public ScriptedAI bool OnGossipSelect(Player* /*player*/, uint32 menuId, uint32 gossipListId) override { - if (me->GetGossipMenuId() == menuId && !gossipListId) + if (menuId == GOSSIP_MENU_START_INTRO && !gossipListId) { _events.SetPhase(PHASE_INTRO); me->RemoveNpcFlag(UNIT_NPC_FLAG_GOSSIP); |
