diff --git a/src/strategy/rogue/RogueAiObjectContext.cpp b/src/strategy/rogue/RogueAiObjectContext.cpp index 355c8953..351c7c12 100644 --- a/src/strategy/rogue/RogueAiObjectContext.cpp +++ b/src/strategy/rogue/RogueAiObjectContext.cpp @@ -77,8 +77,6 @@ public: creators["tricks of the trade on main tank"] = &RogueTriggerFactoryInternal::tricks_of_the_trade_on_main_tank; creators["adrenaline rush"] = &RogueTriggerFactoryInternal::adrenaline_rush; creators["blade fury"] = &RogueTriggerFactoryInternal::blade_fury; - creators["target with combo points almost dead"] = - &RogueTriggerFactoryInternal::target_with_combo_points_almost_dead; } private: @@ -102,10 +100,6 @@ private: { return new TricksOfTheTradeOnMainTankTrigger(ai); } - static Trigger* target_with_combo_points_almost_dead(PlayerbotAI* ai) - { - return new TargetWithComboPointsLowerHealTrigger(ai, 3, 3.0f); - } }; class RogueAiObjectContextInternal : public NamedObjectContext diff --git a/src/strategy/rogue/RogueTriggers.cpp b/src/strategy/rogue/RogueTriggers.cpp index ed12016e..d4b89443 100644 --- a/src/strategy/rogue/RogueTriggers.cpp +++ b/src/strategy/rogue/RogueTriggers.cpp @@ -124,14 +124,3 @@ bool OffHandWeaponNoEnchantTrigger::IsActive() return false; return true; } - -bool TargetWithComboPointsLowerHealTrigger::IsActive() -{ - Unit* target = AI_VALUE(Unit*, "current target"); - if (!target || !target->IsAlive() || !target->IsInWorld()) - { - return false; - } - return ComboPointsAvailableTrigger::IsActive() && - (target->GetHealth() / AI_VALUE(float, "estimated group dps")) <= lifeTime; -} \ No newline at end of file diff --git a/src/strategy/rogue/RogueTriggers.h b/src/strategy/rogue/RogueTriggers.h index 467bd9fc..48ce772e 100644 --- a/src/strategy/rogue/RogueTriggers.h +++ b/src/strategy/rogue/RogueTriggers.h @@ -127,17 +127,6 @@ public: TricksOfTheTradeOnMainTankTrigger(PlayerbotAI* ai) : BuffOnMainTankTrigger(ai, "tricks of the trade", true) {} }; -class TargetWithComboPointsLowerHealTrigger : public ComboPointsAvailableTrigger -{ -public: - TargetWithComboPointsLowerHealTrigger(PlayerbotAI* ai, int32 combo_point = 5, float lifeTime = 8.0f) - : ComboPointsAvailableTrigger(ai, combo_point), lifeTime(lifeTime) - { - } - bool IsActive() override; -private: - float lifeTime; -}; #endif diff --git a/src/strategy/triggers/GenericTriggers.cpp b/src/strategy/triggers/GenericTriggers.cpp index 7c40ef37..32253186 100644 --- a/src/strategy/triggers/GenericTriggers.cpp +++ b/src/strategy/triggers/GenericTriggers.cpp @@ -83,6 +83,17 @@ bool EnergyAvailable::IsActive() { return AI_VALUE2(uint8, "energy", "self targe bool ComboPointsAvailableTrigger::IsActive() { return AI_VALUE2(uint8, "combo", "current target") >= amount; } +bool TargetWithComboPointsLowerHealTrigger::IsActive() +{ + Unit* target = AI_VALUE(Unit*, "current target"); + if (!target || !target->IsAlive() || !target->IsInWorld()) + { + return false; + } + return ComboPointsAvailableTrigger::IsActive() && + (target->GetHealth() / AI_VALUE(float, "estimated group dps")) <= lifeTime; +} + bool LoseAggroTrigger::IsActive() { return !AI_VALUE2(bool, "has aggro", "current target"); } bool HasAggroTrigger::IsActive() { return AI_VALUE2(bool, "has aggro", "current target"); } diff --git a/src/strategy/triggers/GenericTriggers.h b/src/strategy/triggers/GenericTriggers.h index 35a49e3f..674b514d 100644 --- a/src/strategy/triggers/GenericTriggers.h +++ b/src/strategy/triggers/GenericTriggers.h @@ -113,6 +113,19 @@ public: bool IsActive() override; }; +class TargetWithComboPointsLowerHealTrigger : public ComboPointsAvailableTrigger +{ +public: + TargetWithComboPointsLowerHealTrigger(PlayerbotAI* ai, int32 combo_point = 5, float lifeTime = 8.0f) + : ComboPointsAvailableTrigger(ai, combo_point), lifeTime(lifeTime) + { + } + bool IsActive() override; + +private: + float lifeTime; +}; + class LoseAggroTrigger : public Trigger { public: diff --git a/src/strategy/triggers/TriggerContext.h b/src/strategy/triggers/TriggerContext.h index 788b7743..acad38f0 100644 --- a/src/strategy/triggers/TriggerContext.h +++ b/src/strategy/triggers/TriggerContext.h @@ -96,6 +96,7 @@ public: creators["combo points available"] = &TriggerContext::ComboPointsAvailable; creators["combo points 3 available"] = &TriggerContext::ComboPoints3Available; + creators["target with combo points almost dead"] = &TriggerContext::target_with_combo_points_almost_dead; creators["medium threat"] = &TriggerContext::MediumThreat; @@ -309,6 +310,10 @@ private: } static Trigger* ComboPointsAvailable(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI); } static Trigger* ComboPoints3Available(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI, 3); } + static Trigger* target_with_combo_points_almost_dead(PlayerbotAI* ai) + { + return new TargetWithComboPointsLowerHealTrigger(ai, 3, 3.0f); + } static Trigger* MediumThreat(PlayerbotAI* botAI) { return new MediumThreatTrigger(botAI); } static Trigger* Dead(PlayerbotAI* botAI) { return new DeadTrigger(botAI); } static Trigger* corpse_near(PlayerbotAI* botAI) { return new CorpseNearTrigger(botAI); }