diff options
author | ModoX <moardox@gmail.com> | 2024-12-29 00:17:07 +0100 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-12-29 12:17:25 +0100 |
commit | 74f9ad8c2e3efa6b18ecb0f7df6a6e37a85d3c3f (patch) | |
tree | 2c4b208e5aebf6f37ef271ff6ee1e471238841a2 | |
parent | 1f81c961f24337abdc8de25bd23d9834d0c7392b (diff) |
Core/AI: Remove default arguments for inter-script communication
(cherry picked from commit 6b96facee3389f79e579e8a325440051891fa27e)
20 files changed, 112 insertions, 59 deletions
diff --git a/src/server/game/AI/CoreAI/AreaTriggerAI.h b/src/server/game/AI/CoreAI/AreaTriggerAI.h index 55e8f188586..c1639291143 100644 --- a/src/server/game/AI/CoreAI/AreaTriggerAI.h +++ b/src/server/game/AI/CoreAI/AreaTriggerAI.h @@ -61,10 +61,10 @@ class TC_GAME_API AreaTriggerAI // Pass parameters between AI virtual void DoAction([[maybe_unused]] int32 param) { } - virtual uint32 GetData([[maybe_unused]] uint32 id = 0) const { return 0; } + virtual uint32 GetData([[maybe_unused]] uint32 id) const { return 0; } virtual void SetData([[maybe_unused]] uint32 id, [[maybe_unused]] uint32 value) { } - virtual void SetGUID([[maybe_unused]] ObjectGuid const& guid, [[maybe_unused]] int32 id = 0) { } - virtual ObjectGuid GetGUID([[maybe_unused]] int32 id = 0) const { return ObjectGuid::Empty; } + virtual void SetGUID([[maybe_unused]] ObjectGuid const& guid, [[maybe_unused]] int32 id) { } + virtual ObjectGuid GetGUID([[maybe_unused]] int32 id) const { return ObjectGuid::Empty; } // Gets the id of the AI (script id) uint32 GetId() const { return _scriptId; } diff --git a/src/server/game/AI/CoreAI/ConversationAI.h b/src/server/game/AI/CoreAI/ConversationAI.h index 25adc8bc68b..3a41d0f1b60 100644 --- a/src/server/game/AI/CoreAI/ConversationAI.h +++ b/src/server/game/AI/CoreAI/ConversationAI.h @@ -55,10 +55,10 @@ class TC_GAME_API ConversationAI // Pass parameters between AI virtual void DoAction([[maybe_unused]] int32 param) { } - virtual uint32 GetData([[maybe_unused]] uint32 id = 0) const { return 0; } + virtual uint32 GetData([[maybe_unused]] uint32 id) const { return 0; } virtual void SetData([[maybe_unused]] uint32 id, [[maybe_unused]] uint32 value) { } - virtual void SetGUID([[maybe_unused]] ObjectGuid const& guid, [[maybe_unused]] int32 id = 0) { } - virtual ObjectGuid GetGUID([[maybe_unused]] int32 id = 0) const { return ObjectGuid::Empty; } + virtual void SetGUID([[maybe_unused]] ObjectGuid const& guid, [[maybe_unused]] int32 id) { } + virtual ObjectGuid GetGUID([[maybe_unused]] int32 id) const { return ObjectGuid::Empty; } // Gets the id of the AI (script id) uint32 GetId() const { return _scriptId; } diff --git a/src/server/game/AI/CoreAI/GameObjectAI.h b/src/server/game/AI/CoreAI/GameObjectAI.h index b99a9e8180c..40e56887244 100644 --- a/src/server/game/AI/CoreAI/GameObjectAI.h +++ b/src/server/game/AI/CoreAI/GameObjectAI.h @@ -63,9 +63,9 @@ class TC_GAME_API GameObjectAI virtual void Reset() { } // Pass parameters between AI - virtual void DoAction(int32 /*param = 0 */) { } - virtual void SetGUID(ObjectGuid const& /*guid*/, int32 /*id = 0 */) { } - virtual ObjectGuid GetGUID(int32 /*id = 0 */) const { return ObjectGuid::Empty; } + virtual void DoAction([[maybe_unused]] int32 param) { } + virtual void SetGUID([[maybe_unused]] ObjectGuid const& guid, [[maybe_unused]] int32 id) { } + virtual ObjectGuid GetGUID([[maybe_unused]] int32 id) const { return ObjectGuid::Empty; } static int32 Permissible(GameObject const* go); diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index b5cda811617..6da9179b961 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -69,11 +69,11 @@ class TC_GAME_API UnitAI virtual void OnCharmed(bool isNew); // Pass parameters between AI - virtual void DoAction(int32 /*param*/) { } - virtual uint32 GetData(uint32 /*id = 0*/) const { return 0; } - virtual void SetData(uint32 /*id*/, uint32 /*value*/) { } - virtual void SetGUID(ObjectGuid const& /*guid*/, int32 /*id*/ = 0) { } - virtual ObjectGuid GetGUID(int32 /*id*/ = 0) const { return ObjectGuid::Empty; } + virtual void DoAction([[maybe_unused]] int32 param) { } + virtual uint32 GetData([[maybe_unused]] uint32 id) const { return 0; } + virtual void SetData([[maybe_unused]] uint32 id, [[maybe_unused]] uint32 value) { } + virtual void SetGUID([[maybe_unused]] ObjectGuid const& guid, [[maybe_unused]] int32 id) { } + virtual ObjectGuid GetGUID([[maybe_unused]] int32 id) const { return ObjectGuid::Empty; } // Select the best target (in <targetType> order) from the threat list that fulfill the following: // - Not among the first <offset> entries in <targetType> order (or SelectTargetMethod::MaxThreat order, diff --git a/src/server/game/AI/PlayerAI/PlayerAI.cpp b/src/server/game/AI/PlayerAI/PlayerAI.cpp index d4aa01e1a54..cc992d12d13 100644 --- a/src/server/game/AI/PlayerAI/PlayerAI.cpp +++ b/src/server/game/AI/PlayerAI/PlayerAI.cpp @@ -950,7 +950,7 @@ PlayerAI::TargetedSpell SimpleCharmedPlayerAI::SelectAppropriateCastForSpec() case SPEC_SHAMAN_ELEMENTAL: if (Unit* victim = me->GetVictim()) { - if (victim->GetAuraOfRankedSpell(SPELL_FLAME_SHOCK, GetGUID())) + if (victim->GetAuraOfRankedSpell(SPELL_FLAME_SHOCK, me->GetGUID())) VerifyAndPushSpellCast(spells, SPELL_LAVA_BURST, TARGET_VICTIM, 5); else VerifyAndPushSpellCast(spells, SPELL_FLAME_SHOCK, TARGET_VICTIM, 3); diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h index 16a7790a645..02e9b73bb76 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.h +++ b/src/server/game/AI/SmartScripts/SmartAI.h @@ -174,20 +174,20 @@ class TC_GAME_API SmartAI : public CreatureAI void OnCharmed(bool isNew) override; // Used in scripts to share variables - void DoAction(int32 param = 0) override; + void DoAction(int32 param) override; // Used in scripts to share variables - uint32 GetData(uint32 id = 0) const override; + uint32 GetData(uint32 id) const override; // Used in scripts to share variables void SetData(uint32 id, uint32 value) override { SetData(id, value, nullptr); } void SetData(uint32 id, uint32 value, Unit* invoker); // Used in scripts to share variables - void SetGUID(ObjectGuid const& guid, int32 id = 0) override; + void SetGUID(ObjectGuid const& guid, int32 id) override; // Used in scripts to share variables - ObjectGuid GetGUID(int32 id = 0) const override; + ObjectGuid GetGUID(int32 id) const override; // Makes the creature run/walk void SetRun(bool run = true); diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 9c2969e0704..ccd5dbe4b7d 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -73,6 +73,11 @@ enum UnworthyInitiatePhase PHASE_ATTACKING, }; +enum UnworthyInitiateData +{ + DATA_PRISONER_GUID = 0 +}; + uint32 acherus_soul_prison[12] = { 191577, @@ -191,7 +196,7 @@ public: { if (Creature* anchor = me->FindNearestCreature(29521, 30)) { - anchor->AI()->SetGUID(me->GetGUID()); + anchor->AI()->SetGUID(me->GetGUID(), DATA_PRISONER_GUID); anchor->CastSpell(me, SPELL_SOUL_PRISON_CHAIN, true); anchorGUID = anchor->GetGUID(); } @@ -312,8 +317,11 @@ public: ObjectGuid prisonerGUID; - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + void SetGUID(ObjectGuid const& guid, int32 id) override { + if (id != DATA_PRISONER_GUID) + return; + prisonerGUID = guid; } @@ -337,7 +345,7 @@ class go_acherus_soul_prison : public GameObjectScript { if (Creature* anchor = me->FindNearestCreature(29521, 15)) { - ObjectGuid prisonerGUID = anchor->AI()->GetGUID(); + ObjectGuid prisonerGUID = anchor->AI()->GetGUID(DATA_PRISONER_GUID); if (!prisonerGUID.IsEmpty()) if (Creature* prisoner = ObjectAccessor::GetCreature(*player, prisonerGUID)) ENSURE_AI(npc_unworthy_initiate::npc_unworthy_initiateAI, prisoner->AI())->EventStart(anchor, player); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp index 108ce771e0b..9dce483983b 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp @@ -88,12 +88,13 @@ enum Action ACTION_REVIVE = 1 }; -enum Misc +enum MandokirMisc { POINT_START_REVIVE = 1, DATA_OHGANOT_SO_FAST = 5762, + DATA_REVIVE_GUID = 0, }; enum SummonGroups @@ -198,7 +199,7 @@ struct boss_mandokir : public BossAI { if (Creature* chainedSpirit = ObjectAccessor::GetCreature(*me, (*itr)->GetGUID())) { - chainedSpirit->AI()->SetGUID(_reviveGUID); + chainedSpirit->AI()->SetGUID(_reviveGUID, DATA_REVIVE_GUID); chainedSpirit->AI()->DoAction(ACTION_REVIVE); _reviveGUID.Clear(); } @@ -219,7 +220,7 @@ struct boss_mandokir : public BossAI return 0; } - void SetGUID(ObjectGuid const& guid, int32 /*type = 0 */) override + void SetGUID(ObjectGuid const& guid, int32 /*type*/) override { _reviveGUID = guid; } @@ -343,7 +344,7 @@ struct npc_chained_spirit : public ScriptedAI _revivePlayerGUID.Clear(); } - void SetGUID(ObjectGuid const& guid, int32 /*type = 0 */) override + void SetGUID(ObjectGuid const& guid, int32 /*type*/) override { _revivePlayerGUID = guid; } @@ -383,7 +384,7 @@ struct npc_chained_spirit : public ScriptedAI if (Creature* mandokir = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_MANDOKIR))) { - mandokir->GetAI()->SetGUID(target->GetGUID()); + mandokir->GetAI()->SetGUID(target->GetGUID(), DATA_REVIVE_GUID); mandokir->GetAI()->DoAction(ACTION_START_REVIVE); } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp index c44c56bb0f1..2889c7e4e05 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp @@ -85,7 +85,8 @@ enum InnEventLines enum InnEventMisc { DATA_REQUEST_FACING = 0, - DATA_REACHED_WP = 1 + DATA_REACHED_WP = 1, + DATA_INVOKING_PLAYER_GUID, }; class npc_hearthsinger_forresten_cot : public CreatureScript @@ -158,8 +159,11 @@ class npc_hearthsinger_forresten_cot : public CreatureScript } // Player has hit the Belfast stairs areatrigger, we are taking him over for a moment - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + void SetGUID(ObjectGuid const& guid, int32 id) override { + if (id != DATA_INVOKING_PLAYER_GUID) + return; + if (_hadBelfast) return; _hadBelfast = true; @@ -226,7 +230,7 @@ class at_stratholme_inn_stairs_cot : public AreaTriggerScript if (instance->GetData(DATA_INSTANCE_PROGRESS) <= CRATES_IN_PROGRESS) // Forrest's script will handle Belfast for this, since SmartAI lacks the features to do it (we can't pass a custom target) if (Creature* forrest = player->FindNearestCreature(NPC_FORREST, 200.0f, true)) - forrest->AI()->SetGUID(player->GetGUID()); + forrest->AI()->SetGUID(player->GetGUID(), DATA_INVOKING_PLAYER_GUID); return true; } }; diff --git a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp index fc9e400c7a0..b59e43a4075 100644 --- a/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp +++ b/src/server/scripts/Kalimdor/Firelands/boss_baleroc.cpp @@ -218,7 +218,7 @@ struct boss_baleroc : public firelands_bossAI firelands_bossAI::UpdateAI(diff); } - void SetGUID(ObjectGuid const& guid, int32 type = 0) override + void SetGUID(ObjectGuid const& guid, int32 type) override { switch (type) { diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp index 5694682b7bd..637dc68e499 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_prince_taldaram.cpp @@ -54,7 +54,9 @@ enum PrinceTaldaramMisc { DATA_EMBRACE_DMG = 20000, H_DATA_EMBRACE_DMG = 40000, - SUMMON_GROUP_CONTROLLERS = 1 + SUMMON_GROUP_CONTROLLERS = 1, + + DATA_FLAME_SPHERE_TARGET_GUID = 0, }; enum PrinceTaldaramYells @@ -123,7 +125,7 @@ struct boss_prince_taldaram : public BossAI case NPC_FLAME_SPHERE_1: case NPC_FLAME_SPHERE_2: case NPC_FLAME_SPHERE_3: - summon->AI()->SetGUID(_flameSphereTargetGUID); + summon->AI()->SetGUID(_flameSphereTargetGUID, DATA_FLAME_SPHERE_TARGET_GUID); break; case NPC_JEDOGA_CONTROLLER: summon->CastSpell(me, SPELL_BEAM_VISUAL); @@ -307,8 +309,11 @@ struct npc_prince_taldaram_flame_sphere : public ScriptedAI _events.ScheduleEvent(EVENT_DESPAWN, 13s); } - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + void SetGUID(ObjectGuid const& guid, int32 id) override { + if (id != DATA_FLAME_SPHERE_TARGET_GUID) + return; + _flameSphereTargetGUID = guid; } diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp index 9a295622a7b..f0ee0c58f96 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp @@ -116,7 +116,8 @@ enum Data { DATA_CRUSHER_PACK_ID = 1, DATA_HADRONOX_ENTERED_COMBAT, - DATA_HADRONOX_WEBBED_DOORS + DATA_HADRONOX_WEBBED_DOORS, + DATA_ANUBAR_GUID, }; enum Creatures @@ -264,8 +265,11 @@ struct boss_hadronox : public BossAI nerubian->DespawnOrUnsummon(); } - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + void SetGUID(ObjectGuid const& guid, int32 id) override { + if (id != DATA_ANUBAR_GUID) + return; + _anubar.push_back(guid); } @@ -664,7 +668,7 @@ struct npc_hadronox_foeAI : public ScriptedAI { ScriptedAI::InitializeAI(); if (Creature* hadronox = _instance->GetCreature(DATA_HADRONOX)) - hadronox->AI()->SetGUID(me->GetGUID()); + hadronox->AI()->SetGUID(me->GetGUID(), DATA_ANUBAR_GUID); } void MovementInform(uint32 type, uint32 id) override diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 0d9673d354b..be50f9066d4 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -179,7 +179,8 @@ enum Misc DATA_MATERIAL_DAMAGE_TAKEN = 2, DATA_STACKS_DISPELLED = 3, DATA_FIGHT_PHASE = 4, - DATA_SPAWNED_FLAMES = 5 + DATA_SPAWNED_FLAMES = 5, + DATA_ROOT_GUID = 6, }; enum OrbCarrierSeats @@ -1110,7 +1111,7 @@ class npc_meteor_strike : public CreatureScript { Position pos = me->GetNearPosition(5.0f, frand(-static_cast<float>(M_PI / 6.0f), static_cast<float>(M_PI / 6.0f))); if (Creature* flame = me->SummonCreature(NPC_METEOR_STRIKE_FLAME, pos, TEMPSUMMON_TIMED_DESPAWN, 25s)) - flame->AI()->SetGUID(me->GetGUID()); + flame->AI()->SetGUID(me->GetGUID(), DATA_ROOT_GUID); } } @@ -1139,8 +1140,11 @@ class npc_meteor_strike_flame : public CreatureScript SetCombatMovement(false); } - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + void SetGUID(ObjectGuid const& guid, int32 id) override { + if (id != DATA_ROOT_GUID) + return; + _rootOwnerGuid = guid; _events.ScheduleEvent(EVENT_SPAWN_METEOR_FLAME, Milliseconds(800)); } @@ -1170,7 +1174,7 @@ class npc_meteor_strike_flame : public CreatureScript Position pos = me->GetNearPosition(5.0f, frand(-static_cast<float>(M_PI / 6.0f), static_cast<float>(M_PI / 6.0f))); if (Creature* flame = me->SummonCreature(NPC_METEOR_STRIKE_FLAME, pos, TEMPSUMMON_TIMED_DESPAWN, 25s)) - flame->AI()->SetGUID(_rootOwnerGuid); + flame->AI()->SetGUID(_rootOwnerGuid, DATA_ROOT_GUID); } void EnterEvadeMode(EvadeReason /*why*/) override { } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp index ccbed6d6e31..0ca2b57d1eb 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_blood_prince_council.cpp @@ -170,7 +170,8 @@ enum Misc SUMMON_PRINCES_GROUP = 1, DATA_INTRO = 2, DATA_INTRO_DONE = 3, - DATA_PRINCE_EVADE = 4 + DATA_PRINCE_EVADE = 4, + DATA_CHASE_TARGET_GUID = 5, }; class StandUpEvent : public BasicEvent @@ -698,7 +699,7 @@ struct boss_prince_taldaram_icc : public BloodPrincesBossAI Talk(EMOTE_TALDARAM_FLAME, target); if (target) - summon->AI()->SetGUID(target->GetGUID()); + summon->AI()->SetGUID(target->GetGUID(), DATA_CHASE_TARGET_GUID); } void UpdateAI(uint32 diff) override @@ -930,8 +931,11 @@ struct npc_ball_of_flame : public ScriptedAI } } - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + void SetGUID(ObjectGuid const& guid, int32 id) override { + if (id != DATA_CHASE_TARGET_GUID) + return; + _chaseGUID = guid; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp index b6948a05f50..b28d92a4175 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp @@ -166,6 +166,11 @@ enum Actions ACTION_START_INTRO }; +enum LadyDeathwhisperData +{ + DATA_VENGEFUL_SHADE_TARGET_GUID = 0 +}; + #define NPC_DARNAVAN RAID_MODE<uint32>(NPC_DARNAVAN_10, NPC_DARNAVAN_25, NPC_DARNAVAN_10, NPC_DARNAVAN_25) #define NPC_DARNAVAN_CREDIT RAID_MODE<uint32>(NPC_DARNAVAN_CREDIT_10, NPC_DARNAVAN_CREDIT_25, NPC_DARNAVAN_CREDIT_10, NPC_DARNAVAN_CREDIT_25) #define QUEST_DEPROGRAMMING RAID_MODE<uint32>(QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25, QUEST_DEPROGRAMMING_10, QUEST_DEPROGRAMMING_25) @@ -477,7 +482,7 @@ struct boss_lady_deathwhisper : public BossAI case NPC_VENGEFUL_SHADE: if (_nextVengefulShadeTargetGUID.empty()) break; - summon->AI()->SetGUID(_nextVengefulShadeTargetGUID.front()); + summon->AI()->SetGUID(_nextVengefulShadeTargetGUID.front(), DATA_VENGEFUL_SHADE_TARGET_GUID); _nextVengefulShadeTargetGUID.pop_front(); break; case NPC_CULT_ADHERENT: @@ -782,8 +787,11 @@ struct npc_vengeful_shade : public ScriptedAI }); } - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + void SetGUID(ObjectGuid const& guid, int32 id) override { + if (id != DATA_VENGEFUL_SHADE_TARGET_GUID) + return; + _targetGUID = guid; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index b7236028725..9de7dea9523 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -291,7 +291,7 @@ struct boss_lord_marrowgar : public BossAI return &_coldflameLastPos; } - ObjectGuid GetGUID(int32 type /*= 0 */) const override + ObjectGuid GetGUID(int32 type) const override { switch (type) { 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 a4cf8553ea9..a8eac473250 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -358,13 +358,11 @@ enum MiscData SOUND_PAIN = 17360, // separate sound, not attached to any text EQUIP_ASHBRINGER_GLOWING = 50442, - EQUIP_BROKEN_FROSTMOURNE = 50840 -}; + EQUIP_BROKEN_FROSTMOURNE = 50840, -enum Misc -{ DATA_PLAGUE_STACK = 70337, DATA_VILE = 45814622, + DATA_GRABBED_PLAYER_GUID = 0, GOSSIP_MENU_START_INTRO = 10993 }; @@ -1500,8 +1498,11 @@ struct npc_valkyr_shadowguard : public ScriptedAI } } - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + void SetGUID(ObjectGuid const& guid, int32 id) override { + if (id != DATA_GRABBED_PLAYER_GUID) + return; + _grabbedPlayer = guid; } @@ -2304,7 +2305,7 @@ class spell_the_lich_king_valkyr_target_search : public SpellScript _target = Trinity::Containers::SelectRandomContainerElement(targets); targets.clear(); targets.push_back(_target); - GetCaster()->GetAI()->SetGUID(_target->GetGUID()); + GetCaster()->GetAI()->SetGUID(_target->GetGUID(), DATA_GRABBED_PLAYER_GUID); } void ReplaceTarget(std::list<WorldObject*>& targets) diff --git a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp index 7a2b208929b..9aa6f4d2636 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_maexxna.cpp @@ -69,6 +69,11 @@ enum Events EVENT_SUMMON, }; +enum MaexxnaData +{ + DATA_WEBWRAP_VICTIM_GUID = 0 +}; + const float WEB_WRAP_MOVE_SPEED = 20.0f; struct WebTargetSelector @@ -143,7 +148,7 @@ struct boss_maexxna : public BossAI target->RemoveAura(SPELL_WEB_SPRAY); if (Creature* wrap = DoSummon(NPC_WEB_WRAP, WrapPositions[wrapPos], 70s, TEMPSUMMON_TIMED_DESPAWN)) { - wrap->AI()->SetGUID(target->GetGUID()); // handles application of debuff + wrap->AI()->SetGUID(target->GetGUID(), DATA_WEBWRAP_VICTIM_GUID); // handles application of debuff target->GetMotionMaster()->MoveJump(WrapPositions[wrapPos], WEB_WRAP_MOVE_SPEED, WEB_WRAP_MOVE_SPEED); // move after stun to avoid stun cancelling move } } @@ -188,10 +193,14 @@ struct npc_webwrap : public NullCreatureAI me->SetVisible(false); } - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + void SetGUID(ObjectGuid const& guid, int32 id) override { + if (id != DATA_WEBWRAP_VICTIM_GUID) + return; + if (!guid) return; + victimGUID = guid; if (Unit* victim = ObjectAccessor::GetUnit(*me, victimGUID)) { diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index 1bdff8f8adf..b4ac065ce14 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -1260,7 +1260,9 @@ enum BloodsporeRuination NPC_BLOODMAGE_LAURITH = 25381, SAY_BLOODMAGE_LAURITH = 0, EVENT_TALK = 1, - EVENT_RESET_ORIENTATION + EVENT_RESET_ORIENTATION, + + DATA_FACING_PLAYER_GUID = 0 }; // 45997 - Bloodspore Ruination @@ -1270,7 +1272,7 @@ class spell_q11719_bloodspore_ruination_45997 : public SpellScript { if (Unit* caster = GetCaster()) if (Creature* laurith = caster->FindNearestCreature(NPC_BLOODMAGE_LAURITH, 100.0f)) - laurith->AI()->SetGUID(caster->GetGUID()); + laurith->AI()->SetGUID(caster->GetGUID(), DATA_FACING_PLAYER_GUID); } void Register() override @@ -1289,8 +1291,11 @@ struct npc_bloodmage_laurith : public ScriptedAI _playerGUID.Clear(); } - void SetGUID(ObjectGuid const& guid, int32 /*id*/) override + void SetGUID(ObjectGuid const& guid, int32 id) override { + if (id != DATA_FACING_PLAYER_GUID) + return; + if (!_playerGUID.IsEmpty()) return; diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp index 4db5d93b6e6..0c6aa3f1fb5 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_leotheras_the_blind.cpp @@ -102,7 +102,7 @@ struct npc_inner_demon : public ScriptedAI victimGUID = guid; } - ObjectGuid GetGUID(int32 id/* = 0 */) const override + ObjectGuid GetGUID(int32 id) const override { if (id == INNER_DEMON_VICTIM) return victimGUID; |