diff --git a/src/Ai/Raid/BlackwingLair/Action/RaidBwlActions.cpp b/src/Ai/Raid/BlackwingLair/Action/RaidBwlActions.cpp index 9014345cc..2d018fc91 100644 --- a/src/Ai/Raid/BlackwingLair/Action/RaidBwlActions.cpp +++ b/src/Ai/Raid/BlackwingLair/Action/RaidBwlActions.cpp @@ -1,35 +1,40 @@ #include "RaidBwlActions.h" #include "Playerbots.h" +#include "RaidBwlHelpers.h" + +using namespace BlackwingLairHelpers; + +// General bool BwlOnyxiaScaleCloakAuraCheckAction::Execute(Event /*event*/) { - bot->AddAura(22683, bot); + bot->AddAura(SPELL_ONYXIA_SCALE_CLOAK, bot); return true; } -bool BwlOnyxiaScaleCloakAuraCheckAction::isUseful() { return !bot->HasAura(22683); } +bool BwlOnyxiaScaleCloakAuraCheckAction::isUseful() +{ + return !bot->HasAura(SPELL_ONYXIA_SCALE_CLOAK); +} bool BwlTurnOffSuppressionDeviceAction::Execute(Event /*event*/) { GuidVector gos = AI_VALUE(GuidVector, "nearest game objects"); - for (GuidVector::iterator i = gos.begin(); i != gos.end(); i++) + for (auto i = gos.begin(); i != gos.end(); ++i) { GameObject* go = botAI->GetGameObject(*i); - if (!go) + if (IsActiveSuppressionDeviceInRange(go, bot)) { - continue; + go->SetGoState(GO_STATE_ACTIVE); } - if (go->GetEntry() != 179784 || go->GetDistance(bot) >= 15.0f || go->GetGoState() != GO_STATE_READY) - { - continue; - } - go->SetGoState(GO_STATE_ACTIVE); } return true; } +// Chromaggus + bool BwlUseHourglassSandAction::Execute(Event /*event*/) { - return botAI->CastSpell(23645, bot); + return botAI->CastSpell(SPELL_HOURGLASS_SAND, bot); } diff --git a/src/Ai/Raid/BlackwingLair/Action/RaidBwlActions.h b/src/Ai/Raid/BlackwingLair/Action/RaidBwlActions.h index 24dcf3996..27037414a 100644 --- a/src/Ai/Raid/BlackwingLair/Action/RaidBwlActions.h +++ b/src/Ai/Raid/BlackwingLair/Action/RaidBwlActions.h @@ -2,11 +2,8 @@ #define _PLAYERBOT_RAIDBWLACTIONS_H #include "Action.h" -#include "AttackAction.h" -#include "GenericActions.h" -#include "MovementActions.h" -#include "PlayerbotAI.h" -#include "Playerbots.h" + +// General class BwlOnyxiaScaleCloakAuraCheckAction : public Action { @@ -23,6 +20,8 @@ public: bool Execute(Event event) override; }; +// Chromaggus + class BwlUseHourglassSandAction : public Action { public: diff --git a/src/Ai/Raid/BlackwingLair/Strategy/RaidBwlStrategy.cpp b/src/Ai/Raid/BlackwingLair/Strategy/RaidBwlStrategy.cpp index c65a80ecb..ec36b2cde 100644 --- a/src/Ai/Raid/BlackwingLair/Strategy/RaidBwlStrategy.cpp +++ b/src/Ai/Raid/BlackwingLair/Strategy/RaidBwlStrategy.cpp @@ -1,15 +1,13 @@ #include "RaidBwlStrategy.h" -#include "Strategy.h" - void RaidBwlStrategy::InitTriggers(std::vector& triggers) { - triggers.push_back(new TriggerNode("often", - { NextAction("bwl check onyxia scale cloak", ACTION_RAID) })); + triggers.push_back(new TriggerNode("often", { + NextAction("bwl check onyxia scale cloak", ACTION_RAID) })); - triggers.push_back(new TriggerNode("bwl suppression device", - { NextAction("bwl turn off suppression device", ACTION_RAID) })); + triggers.push_back(new TriggerNode("bwl suppression device", { + NextAction("bwl turn off suppression device", ACTION_RAID) })); - triggers.push_back(new TriggerNode("bwl affliction bronze", - { NextAction("bwl use hourglass sand", ACTION_RAID) })); + triggers.push_back(new TriggerNode("bwl affliction bronze", { + NextAction("bwl use hourglass sand", ACTION_RAID) })); } diff --git a/src/Ai/Raid/BlackwingLair/Strategy/RaidBwlStrategy.h b/src/Ai/Raid/BlackwingLair/Strategy/RaidBwlStrategy.h index e09ea2f3e..375ddad71 100644 --- a/src/Ai/Raid/BlackwingLair/Strategy/RaidBwlStrategy.h +++ b/src/Ai/Raid/BlackwingLair/Strategy/RaidBwlStrategy.h @@ -8,9 +8,9 @@ class RaidBwlStrategy : public Strategy { public: RaidBwlStrategy(PlayerbotAI* ai) : Strategy(ai) {} - virtual std::string const getName() override { return "bwl"; } - virtual void InitTriggers(std::vector& triggers) override; - // virtual void InitMultipliers(std::vector &multipliers) override; + std::string const getName() override { return "bwl"; } + void InitTriggers(std::vector& triggers) override; + // void InitMultipliers(std::vector &multipliers) override; }; #endif diff --git a/src/Ai/Raid/BlackwingLair/Trigger/RaidBwlTriggers.cpp b/src/Ai/Raid/BlackwingLair/Trigger/RaidBwlTriggers.cpp index e34e7a9a6..4b4bee1ad 100644 --- a/src/Ai/Raid/BlackwingLair/Trigger/RaidBwlTriggers.cpp +++ b/src/Ai/Raid/BlackwingLair/Trigger/RaidBwlTriggers.cpp @@ -1,24 +1,29 @@ #include "RaidBwlTriggers.h" -#include "SharedDefines.h" +#include "Playerbots.h" +#include "RaidBwlHelpers.h" + +using namespace BlackwingLairHelpers; + +// General bool BwlSuppressionDeviceTrigger::IsActive() { GuidVector gos = AI_VALUE(GuidVector, "nearest game objects"); - for (GuidVector::iterator i = gos.begin(); i != gos.end(); i++) + for (auto i = gos.begin(); i != gos.end(); ++i) { - GameObject* go = botAI->GetGameObject(*i); - if (!go) + const GameObject* go = botAI->GetGameObject(*i); + if (IsActiveSuppressionDeviceInRange(go, bot)) { - continue; + return true; } - if (go->GetEntry() != 179784 || go->GetDistance(bot) >= 15.0f || go->GetGoState() != GO_STATE_READY) - { - continue; - } - return true; } return false; } -bool BwlAfflictionBronzeTrigger::IsActive() { return bot->HasAura(23170); } +// Chromaggus + +bool BwlAfflictionBronzeTrigger::IsActive() +{ + return bot->HasAura(SPELL_BROOD_AFFLICTION_BRONZE); +} diff --git a/src/Ai/Raid/BlackwingLair/Trigger/RaidBwlTriggers.h b/src/Ai/Raid/BlackwingLair/Trigger/RaidBwlTriggers.h index fc19acd5d..0aa290007 100644 --- a/src/Ai/Raid/BlackwingLair/Trigger/RaidBwlTriggers.h +++ b/src/Ai/Raid/BlackwingLair/Trigger/RaidBwlTriggers.h @@ -1,10 +1,10 @@ #ifndef _PLAYERBOT_RAIDBWLTRIGGERS_H #define _PLAYERBOT_RAIDBWLTRIGGERS_H -#include "PlayerbotAI.h" -#include "Playerbots.h" #include "Trigger.h" +// General + class BwlSuppressionDeviceTrigger : public Trigger { public: @@ -12,6 +12,8 @@ public: bool IsActive() override; }; +// Chromaggus + class BwlAfflictionBronzeTrigger : public Trigger { public: diff --git a/src/Ai/Raid/BlackwingLair/Util/RaidBwlHelpers.cpp b/src/Ai/Raid/BlackwingLair/Util/RaidBwlHelpers.cpp new file mode 100644 index 000000000..cc0714bd1 --- /dev/null +++ b/src/Ai/Raid/BlackwingLair/Util/RaidBwlHelpers.cpp @@ -0,0 +1,12 @@ +#include "RaidBwlHelpers.h" + +namespace BlackwingLairHelpers +{ + bool IsActiveSuppressionDeviceInRange(const GameObject* go, const Player* bot) + { + return go && + go->GetEntry() == GO_SUPPRESSION_DEVICE && + go->GetDistance(bot) < 15.0f && + go->GetGoState() == GO_STATE_READY; + } +} diff --git a/src/Ai/Raid/BlackwingLair/Util/RaidBwlHelpers.h b/src/Ai/Raid/BlackwingLair/Util/RaidBwlHelpers.h new file mode 100644 index 000000000..3333d826d --- /dev/null +++ b/src/Ai/Raid/BlackwingLair/Util/RaidBwlHelpers.h @@ -0,0 +1,27 @@ +#ifndef _PLAYERBOT_RAIDBWLHELPERS_H +#define _PLAYERBOT_RAIDBWLHELPERS_H + +#include "Player.h" + +namespace BlackwingLairHelpers +{ + enum BlackwingLairSpells + { + // General + SPELL_ONYXIA_SCALE_CLOAK = 22683, + + // Chromaggus + SPELL_BROOD_AFFLICTION_BRONZE = 23170, + SPELL_HOURGLASS_SAND = 23645 + }; + + enum BlackwingLairGameObjects + { + // General + GO_SUPPRESSION_DEVICE = 179784 + }; + + bool IsActiveSuppressionDeviceInRange(const GameObject* go, const Player* bot); +} + +#endif //_PLAYERBOT_RAIDBWLHELPERS_H