mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-31 01:13:48 +00:00
General trigger fix
This commit is contained in:
@@ -77,8 +77,6 @@ public:
|
|||||||
creators["tricks of the trade on main tank"] = &RogueTriggerFactoryInternal::tricks_of_the_trade_on_main_tank;
|
creators["tricks of the trade on main tank"] = &RogueTriggerFactoryInternal::tricks_of_the_trade_on_main_tank;
|
||||||
creators["adrenaline rush"] = &RogueTriggerFactoryInternal::adrenaline_rush;
|
creators["adrenaline rush"] = &RogueTriggerFactoryInternal::adrenaline_rush;
|
||||||
creators["blade fury"] = &RogueTriggerFactoryInternal::blade_fury;
|
creators["blade fury"] = &RogueTriggerFactoryInternal::blade_fury;
|
||||||
creators["target with combo points almost dead"] =
|
|
||||||
&RogueTriggerFactoryInternal::target_with_combo_points_almost_dead;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
@@ -102,10 +100,6 @@ private:
|
|||||||
{
|
{
|
||||||
return new TricksOfTheTradeOnMainTankTrigger(ai);
|
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<Action>
|
class RogueAiObjectContextInternal : public NamedObjectContext<Action>
|
||||||
|
|||||||
@@ -124,14 +124,3 @@ bool OffHandWeaponNoEnchantTrigger::IsActive()
|
|||||||
return false;
|
return false;
|
||||||
return true;
|
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;
|
|
||||||
}
|
|
||||||
@@ -127,17 +127,6 @@ public:
|
|||||||
TricksOfTheTradeOnMainTankTrigger(PlayerbotAI* ai) : BuffOnMainTankTrigger(ai, "tricks of the trade", true) {}
|
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
|
#endif
|
||||||
|
|||||||
@@ -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 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 LoseAggroTrigger::IsActive() { return !AI_VALUE2(bool, "has aggro", "current target"); }
|
||||||
|
|
||||||
bool HasAggroTrigger::IsActive() { return AI_VALUE2(bool, "has aggro", "current target"); }
|
bool HasAggroTrigger::IsActive() { return AI_VALUE2(bool, "has aggro", "current target"); }
|
||||||
|
|||||||
@@ -113,6 +113,19 @@ public:
|
|||||||
bool IsActive() override;
|
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
|
class LoseAggroTrigger : public Trigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -96,6 +96,7 @@ public:
|
|||||||
|
|
||||||
creators["combo points available"] = &TriggerContext::ComboPointsAvailable;
|
creators["combo points available"] = &TriggerContext::ComboPointsAvailable;
|
||||||
creators["combo points 3 available"] = &TriggerContext::ComboPoints3Available;
|
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;
|
creators["medium threat"] = &TriggerContext::MediumThreat;
|
||||||
|
|
||||||
@@ -309,6 +310,10 @@ private:
|
|||||||
}
|
}
|
||||||
static Trigger* ComboPointsAvailable(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI); }
|
static Trigger* ComboPointsAvailable(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI); }
|
||||||
static Trigger* ComboPoints3Available(PlayerbotAI* botAI) { return new ComboPointsAvailableTrigger(botAI, 3); }
|
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* MediumThreat(PlayerbotAI* botAI) { return new MediumThreatTrigger(botAI); }
|
||||||
static Trigger* Dead(PlayerbotAI* botAI) { return new DeadTrigger(botAI); }
|
static Trigger* Dead(PlayerbotAI* botAI) { return new DeadTrigger(botAI); }
|
||||||
static Trigger* corpse_near(PlayerbotAI* botAI) { return new CorpseNearTrigger(botAI); }
|
static Trigger* corpse_near(PlayerbotAI* botAI) { return new CorpseNearTrigger(botAI); }
|
||||||
|
|||||||
Reference in New Issue
Block a user