From d0ee39aa3ad9e1c622529f4599c1ceb571450968 Mon Sep 17 00:00:00 2001 From: Yunfan Li Date: Wed, 5 Jun 2024 19:37:39 +0800 Subject: [PATCH] [Raid] Naxx grobbulus --- src/strategy/actions/MovementActions.cpp | 2 +- src/strategy/deathknight/DKActions.h | 2 ++ .../raids/naxxramas/RaidNaxxMultipliers.cpp | 12 ++++++++++ .../raids/naxxramas/RaidNaxxMultipliers.h | 24 ++++++++++++------- .../raids/naxxramas/RaidNaxxStrategy.cpp | 1 + 5 files changed, 32 insertions(+), 9 deletions(-) diff --git a/src/strategy/actions/MovementActions.cpp b/src/strategy/actions/MovementActions.cpp index 89257233..c0de3249 100644 --- a/src/strategy/actions/MovementActions.cpp +++ b/src/strategy/actions/MovementActions.cpp @@ -829,7 +829,7 @@ bool MovementAction::Follow(Unit* target, float distance) void MovementAction::UpdateMovementState() { - if (bot->Unit::IsInWater() || bot->Unit::IsUnderWater()) + if (bot->Unit::IsUnderWater()) { bot->SetSwim(true); } diff --git a/src/strategy/deathknight/DKActions.h b/src/strategy/deathknight/DKActions.h index e4907ac8..6106af18 100644 --- a/src/strategy/deathknight/DKActions.h +++ b/src/strategy/deathknight/DKActions.h @@ -234,6 +234,8 @@ class CastDeathAndDecayAction : public CastSpellAction { public: CastDeathAndDecayAction(PlayerbotAI* botAI) : CastSpellAction(botAI, "death and decay") { } + + ActionThreatType getThreatType() override { return ActionThreatType::Aoe; } }; class CastHornOfWinterAction : public CastSpellAction diff --git a/src/strategy/raids/naxxramas/RaidNaxxMultipliers.cpp b/src/strategy/raids/naxxramas/RaidNaxxMultipliers.cpp index b22dc604..72ea08dd 100644 --- a/src/strategy/raids/naxxramas/RaidNaxxMultipliers.cpp +++ b/src/strategy/raids/naxxramas/RaidNaxxMultipliers.cpp @@ -19,6 +19,18 @@ #include "WarriorActions.h" #include "DruidBearActions.h" +float GrobbulusMultiplier::GetValue(Action* action) +{ + Unit* boss = AI_VALUE2(Unit*, "find target", "grobbulus"); + if (!boss) { + return 1.0f; + } + if (dynamic_cast(action)) { + return 0.0f; + } + return 1.0f; +} + float HeiganDanceMultiplier::GetValue(Action* action) { Unit* boss = AI_VALUE2(Unit*, "find target", "heigan the unclean"); diff --git a/src/strategy/raids/naxxramas/RaidNaxxMultipliers.h b/src/strategy/raids/naxxramas/RaidNaxxMultipliers.h index 4d80d566..8ac9e071 100644 --- a/src/strategy/raids/naxxramas/RaidNaxxMultipliers.h +++ b/src/strategy/raids/naxxramas/RaidNaxxMultipliers.h @@ -5,22 +5,30 @@ #include "Multiplier.h" #include "raids/naxxramas/RaidNaxxBossHelper.h" +class GrobbulusMultiplier : public Multiplier +{ + public: + GrobbulusMultiplier(PlayerbotAI* ai) : Multiplier(ai, "grobbulus") {} + + public: + virtual float GetValue(Action* action); +}; class HeiganDanceMultiplier : public Multiplier { -public: - HeiganDanceMultiplier(PlayerbotAI* ai) : Multiplier(ai, "helgan dance") {} + public: + HeiganDanceMultiplier(PlayerbotAI* ai) : Multiplier(ai, "helgan dance") {} -public: - virtual float GetValue(Action* action); + public: + virtual float GetValue(Action* action); }; class LoathebGenericMultiplier : public Multiplier { -public: - LoathebGenericMultiplier(PlayerbotAI* ai) : Multiplier(ai, "loatheb generic") {} + public: + LoathebGenericMultiplier(PlayerbotAI* ai) : Multiplier(ai, "loatheb generic") {} -public: - virtual float GetValue(Action* action); + public: + virtual float GetValue(Action* action); }; class ThaddiusGenericMultiplier : public Multiplier diff --git a/src/strategy/raids/naxxramas/RaidNaxxStrategy.cpp b/src/strategy/raids/naxxramas/RaidNaxxStrategy.cpp index c58d8b32..0d640273 100644 --- a/src/strategy/raids/naxxramas/RaidNaxxStrategy.cpp +++ b/src/strategy/raids/naxxramas/RaidNaxxStrategy.cpp @@ -112,6 +112,7 @@ void RaidNaxxStrategy::InitTriggers(std::vector &triggers) void RaidNaxxStrategy::InitMultipliers(std::vector &multipliers) { + multipliers.push_back(new GrobbulusMultiplier(botAI)); multipliers.push_back(new HeiganDanceMultiplier(botAI)); multipliers.push_back(new LoathebGenericMultiplier(botAI)); multipliers.push_back(new ThaddiusGenericMultiplier(botAI));