mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
Improve and fix unholy dk rune triggers
This commit is contained in:
@@ -74,14 +74,14 @@ public:
|
|||||||
creators["plague strike"] = &DeathKnightTriggerFactoryInternal::plague_strike;
|
creators["plague strike"] = &DeathKnightTriggerFactoryInternal::plague_strike;
|
||||||
creators["plague strike on attacker"] = &DeathKnightTriggerFactoryInternal::plague_strike_on_attacker;
|
creators["plague strike on attacker"] = &DeathKnightTriggerFactoryInternal::plague_strike_on_attacker;
|
||||||
creators["icy touch"] = &DeathKnightTriggerFactoryInternal::icy_touch;
|
creators["icy touch"] = &DeathKnightTriggerFactoryInternal::icy_touch;
|
||||||
creators["icy touch 8s"] = &DeathKnightTriggerFactoryInternal::icy_touch_8s;
|
creators["icy touch 3s"] = &DeathKnightTriggerFactoryInternal::icy_touch_3s;
|
||||||
creators["dd cd and icy touch 8s"] = &DeathKnightTriggerFactoryInternal::dd_cd_and_icy_touch_8s;
|
creators["dd cd and icy touch 3s"] = &DeathKnightTriggerFactoryInternal::dd_cd_and_icy_touch_3s;
|
||||||
creators["death coil"] = &DeathKnightTriggerFactoryInternal::death_coil;
|
creators["death coil"] = &DeathKnightTriggerFactoryInternal::death_coil;
|
||||||
creators["icy touch on attacker"] = &DeathKnightTriggerFactoryInternal::icy_touch_on_attacker;
|
creators["icy touch on attacker"] = &DeathKnightTriggerFactoryInternal::icy_touch_on_attacker;
|
||||||
creators["improved icy talons"] = &DeathKnightTriggerFactoryInternal::improved_icy_talons;
|
creators["improved icy talons"] = &DeathKnightTriggerFactoryInternal::improved_icy_talons;
|
||||||
creators["plague strike"] = &DeathKnightTriggerFactoryInternal::plague_strike;
|
creators["plague strike"] = &DeathKnightTriggerFactoryInternal::plague_strike;
|
||||||
creators["plague strike 8s"] = &DeathKnightTriggerFactoryInternal::plague_strike_8s;
|
creators["plague strike 3s"] = &DeathKnightTriggerFactoryInternal::plague_strike_3s;
|
||||||
creators["dd cd and plague strike 8s"] = &DeathKnightTriggerFactoryInternal::dd_cd_and_plague_strike_8s;
|
creators["dd cd and plague strike 3s"] = &DeathKnightTriggerFactoryInternal::dd_cd_and_plague_strike_3s;
|
||||||
creators["horn of winter"] = &DeathKnightTriggerFactoryInternal::horn_of_winter;
|
creators["horn of winter"] = &DeathKnightTriggerFactoryInternal::horn_of_winter;
|
||||||
creators["mind freeze"] = &DeathKnightTriggerFactoryInternal::mind_freeze;
|
creators["mind freeze"] = &DeathKnightTriggerFactoryInternal::mind_freeze;
|
||||||
creators["mind freeze on enemy healer"] = &DeathKnightTriggerFactoryInternal::mind_freeze_on_enemy_healer;
|
creators["mind freeze on enemy healer"] = &DeathKnightTriggerFactoryInternal::mind_freeze_on_enemy_healer;
|
||||||
@@ -94,6 +94,7 @@ public:
|
|||||||
creators["high blood rune"] = &DeathKnightTriggerFactoryInternal::high_blood_rune;
|
creators["high blood rune"] = &DeathKnightTriggerFactoryInternal::high_blood_rune;
|
||||||
creators["high frost rune"] = &DeathKnightTriggerFactoryInternal::high_frost_rune;
|
creators["high frost rune"] = &DeathKnightTriggerFactoryInternal::high_frost_rune;
|
||||||
creators["high unholy rune"] = &DeathKnightTriggerFactoryInternal::high_unholy_rune;
|
creators["high unholy rune"] = &DeathKnightTriggerFactoryInternal::high_unholy_rune;
|
||||||
|
creators["no rune"] = &DeathKnightTriggerFactoryInternal::no_rune;
|
||||||
creators["freezing fog"] = &DeathKnightTriggerFactoryInternal::freezing_fog;
|
creators["freezing fog"] = &DeathKnightTriggerFactoryInternal::freezing_fog;
|
||||||
creators["no desolation"] = &DeathKnightTriggerFactoryInternal::no_desolation;
|
creators["no desolation"] = &DeathKnightTriggerFactoryInternal::no_desolation;
|
||||||
creators["dd cd and no desolation"] = &DeathKnightTriggerFactoryInternal::dd_cd_and_no_desolation;
|
creators["dd cd and no desolation"] = &DeathKnightTriggerFactoryInternal::dd_cd_and_no_desolation;
|
||||||
@@ -106,15 +107,15 @@ private:
|
|||||||
static Trigger* pestilence_glyph(PlayerbotAI* botAI) { return new PestilenceGlyphTrigger(botAI); }
|
static Trigger* pestilence_glyph(PlayerbotAI* botAI) { return new PestilenceGlyphTrigger(botAI); }
|
||||||
static Trigger* blood_strike(PlayerbotAI* botAI) { return new BloodStrikeTrigger(botAI); }
|
static Trigger* blood_strike(PlayerbotAI* botAI) { return new BloodStrikeTrigger(botAI); }
|
||||||
static Trigger* plague_strike(PlayerbotAI* botAI) { return new PlagueStrikeDebuffTrigger(botAI); }
|
static Trigger* plague_strike(PlayerbotAI* botAI) { return new PlagueStrikeDebuffTrigger(botAI); }
|
||||||
static Trigger* plague_strike_8s(PlayerbotAI* botAI) { return new PlagueStrike8sDebuffTrigger(botAI); }
|
static Trigger* plague_strike_3s(PlayerbotAI* botAI) { return new PlagueStrike3sDebuffTrigger(botAI); }
|
||||||
static Trigger* dd_cd_and_plague_strike_8s(PlayerbotAI* botAI) { return new TwoTriggers(botAI, "death and decay cooldown", "plague strike 8s"); }
|
static Trigger* dd_cd_and_plague_strike_3s(PlayerbotAI* botAI) { return new TwoTriggers(botAI, "death and decay cooldown", "plague strike 3s"); }
|
||||||
static Trigger* plague_strike_on_attacker(PlayerbotAI* botAI)
|
static Trigger* plague_strike_on_attacker(PlayerbotAI* botAI)
|
||||||
{
|
{
|
||||||
return new PlagueStrikeDebuffOnAttackerTrigger(botAI);
|
return new PlagueStrikeDebuffOnAttackerTrigger(botAI);
|
||||||
}
|
}
|
||||||
static Trigger* icy_touch(PlayerbotAI* botAI) { return new IcyTouchDebuffTrigger(botAI); }
|
static Trigger* icy_touch(PlayerbotAI* botAI) { return new IcyTouchDebuffTrigger(botAI); }
|
||||||
static Trigger* icy_touch_8s(PlayerbotAI* botAI) { return new IcyTouch8sDebuffTrigger(botAI); }
|
static Trigger* icy_touch_3s(PlayerbotAI* botAI) { return new IcyTouch3sDebuffTrigger(botAI); }
|
||||||
static Trigger* dd_cd_and_icy_touch_8s(PlayerbotAI* botAI) { return new TwoTriggers(botAI, "death and decay cooldown", "icy touch 8s"); }
|
static Trigger* dd_cd_and_icy_touch_3s(PlayerbotAI* botAI) { return new TwoTriggers(botAI, "death and decay cooldown", "icy touch 3s"); }
|
||||||
static Trigger* death_coil(PlayerbotAI* botAI) { return new DeathCoilTrigger(botAI); }
|
static Trigger* death_coil(PlayerbotAI* botAI) { return new DeathCoilTrigger(botAI); }
|
||||||
static Trigger* icy_touch_on_attacker(PlayerbotAI* botAI) { return new IcyTouchDebuffOnAttackerTrigger(botAI); }
|
static Trigger* icy_touch_on_attacker(PlayerbotAI* botAI) { return new IcyTouchDebuffOnAttackerTrigger(botAI); }
|
||||||
static Trigger* improved_icy_talons(PlayerbotAI* botAI) { return new ImprovedIcyTalonsTrigger(botAI); }
|
static Trigger* improved_icy_talons(PlayerbotAI* botAI) { return new ImprovedIcyTalonsTrigger(botAI); }
|
||||||
@@ -136,6 +137,7 @@ private:
|
|||||||
static Trigger* high_blood_rune(PlayerbotAI* botAI) { return new HighBloodRuneTrigger(botAI); }
|
static Trigger* high_blood_rune(PlayerbotAI* botAI) { return new HighBloodRuneTrigger(botAI); }
|
||||||
static Trigger* high_frost_rune(PlayerbotAI* botAI) { return new HighFrostRuneTrigger(botAI); }
|
static Trigger* high_frost_rune(PlayerbotAI* botAI) { return new HighFrostRuneTrigger(botAI); }
|
||||||
static Trigger* high_unholy_rune(PlayerbotAI* botAI) { return new HighUnholyRuneTrigger(botAI); }
|
static Trigger* high_unholy_rune(PlayerbotAI* botAI) { return new HighUnholyRuneTrigger(botAI); }
|
||||||
|
static Trigger* no_rune(PlayerbotAI* botAI) { return new NoRuneTrigger(botAI); }
|
||||||
static Trigger* freezing_fog(PlayerbotAI* botAI) { return new FreezingFogTrigger(botAI); }
|
static Trigger* freezing_fog(PlayerbotAI* botAI) { return new FreezingFogTrigger(botAI); }
|
||||||
static Trigger* no_desolation(PlayerbotAI* botAI) { return new DesolationTrigger(botAI); }
|
static Trigger* no_desolation(PlayerbotAI* botAI) { return new DesolationTrigger(botAI); }
|
||||||
static Trigger* dd_cd_and_no_desolation(PlayerbotAI* botAI) { return new TwoTriggers(botAI, "death and decay cooldown", "no desolation"); }
|
static Trigger* dd_cd_and_no_desolation(PlayerbotAI* botAI) { return new TwoTriggers(botAI, "death and decay cooldown", "no desolation"); }
|
||||||
|
|||||||
@@ -37,20 +37,32 @@ bool PestilenceGlyphTrigger::IsActive()
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Based on runeSlotTypes
|
||||||
bool HighBloodRuneTrigger::IsActive()
|
bool HighBloodRuneTrigger::IsActive()
|
||||||
{
|
{
|
||||||
return !bot->GetRuneCooldown(0) && !bot->GetRuneCooldown(1);
|
return bot->GetRuneCooldown(0) <= 2000 && bot->GetRuneCooldown(1) <= 2000;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HighFrostRuneTrigger::IsActive()
|
bool HighFrostRuneTrigger::IsActive()
|
||||||
{
|
{
|
||||||
return !bot->GetRuneCooldown(2) && !bot->GetRuneCooldown(3);
|
return bot->GetRuneCooldown(4) <= 2000 && bot->GetRuneCooldown(5) <= 2000;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HighUnholyRuneTrigger::IsActive()
|
bool HighUnholyRuneTrigger::IsActive()
|
||||||
{
|
{
|
||||||
return !bot->GetRuneCooldown(4) && !bot->GetRuneCooldown(5);
|
return bot->GetRuneCooldown(2) <= 2000 && bot->GetRuneCooldown(3) <= 2000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NoRuneTrigger::IsActive()
|
||||||
|
{
|
||||||
|
for (uint32 i = 0; i < MAX_RUNES; ++i)
|
||||||
|
{
|
||||||
|
if (!bot->GetRuneCooldown(i))
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
bool DesolationTrigger::IsActive()
|
bool DesolationTrigger::IsActive()
|
||||||
{
|
{
|
||||||
return bot->HasAura(66817) && BuffTrigger::IsActive();
|
return bot->HasAura(66817) && BuffTrigger::IsActive();
|
||||||
@@ -62,5 +74,5 @@ bool DeathAndDecayCooldownTrigger::IsActive()
|
|||||||
if (!spellId)
|
if (!spellId)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return bot->GetSpellCooldownDelay(spellId) >= 3000;
|
return bot->GetSpellCooldownDelay(spellId) >= 2000;
|
||||||
}
|
}
|
||||||
@@ -20,10 +20,10 @@ public:
|
|||||||
PlagueStrikeDebuffTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "blood plague", 1, true, .0f) {}
|
PlagueStrikeDebuffTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "blood plague", 1, true, .0f) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class PlagueStrike8sDebuffTrigger : public DebuffTrigger
|
class PlagueStrike3sDebuffTrigger : public DebuffTrigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PlagueStrike8sDebuffTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "blood plague", 1, true, .0f, 3000) {}
|
PlagueStrike3sDebuffTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "blood plague", 1, true, .0f, 3000) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
// DEBUFF_CHECKISOWNER_TRIGGER(IcyTouchDebuffTrigger, "frost fever");
|
// DEBUFF_CHECKISOWNER_TRIGGER(IcyTouchDebuffTrigger, "frost fever");
|
||||||
@@ -33,10 +33,10 @@ public:
|
|||||||
IcyTouchDebuffTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "frost fever", 1, true, .0f) {}
|
IcyTouchDebuffTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "frost fever", 1, true, .0f) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
class IcyTouch8sDebuffTrigger : public DebuffTrigger
|
class IcyTouch3sDebuffTrigger : public DebuffTrigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
IcyTouch8sDebuffTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "frost fever", 1, true, .0f, 3000) {}
|
IcyTouch3sDebuffTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "frost fever", 1, true, .0f, 3000) {}
|
||||||
};
|
};
|
||||||
|
|
||||||
BUFF_TRIGGER(UnbreakableArmorTrigger, "unbreakable armor");
|
BUFF_TRIGGER(UnbreakableArmorTrigger, "unbreakable armor");
|
||||||
@@ -165,6 +165,13 @@ public:
|
|||||||
bool IsActive() override;
|
bool IsActive() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class NoRuneTrigger : public Trigger
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
NoRuneTrigger(PlayerbotAI* botAI) : Trigger(botAI, "no rune") {}
|
||||||
|
bool IsActive() override;
|
||||||
|
};
|
||||||
|
|
||||||
class FreezingFogTrigger : public HasAuraTrigger
|
class FreezingFogTrigger : public HasAuraTrigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ NextAction** UnholyDKStrategy::getDefaultActions()
|
|||||||
return NextAction::array(
|
return NextAction::array(
|
||||||
0, new NextAction("death and decay", ACTION_HIGH + 5),
|
0, new NextAction("death and decay", ACTION_HIGH + 5),
|
||||||
new NextAction("summon gargoyle", ACTION_DEFAULT + 0.4f),
|
new NextAction("summon gargoyle", ACTION_DEFAULT + 0.4f),
|
||||||
new NextAction("empower rune weapon", ACTION_DEFAULT + 0.3f),
|
// new NextAction("empower rune weapon", ACTION_DEFAULT + 0.3f),
|
||||||
new NextAction("horn of winter", ACTION_DEFAULT + 0.2f),
|
new NextAction("horn of winter", ACTION_DEFAULT + 0.2f),
|
||||||
new NextAction("death coil", ACTION_DEFAULT + 0.1f),
|
new NextAction("death coil", ACTION_DEFAULT + 0.1f),
|
||||||
new NextAction("melee", ACTION_DEFAULT), nullptr);
|
new NextAction("melee", ACTION_DEFAULT), nullptr);
|
||||||
@@ -93,8 +93,8 @@ void UnholyDKStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|||||||
"death and decay cooldown", NextAction::array(0,
|
"death and decay cooldown", NextAction::array(0,
|
||||||
new NextAction("ghoul frenzy", ACTION_DEFAULT + 0.9f),
|
new NextAction("ghoul frenzy", ACTION_DEFAULT + 0.9f),
|
||||||
new NextAction("scourge strike", ACTION_DEFAULT + 0.8f),
|
new NextAction("scourge strike", ACTION_DEFAULT + 0.8f),
|
||||||
new NextAction("blood boil", ACTION_DEFAULT + 0.7f),
|
new NextAction("icy touch", ACTION_DEFAULT + 0.7f),
|
||||||
new NextAction("icy touch", ACTION_DEFAULT + 0.6f),
|
new NextAction("blood strike", ACTION_DEFAULT + 0.6f),
|
||||||
new NextAction("plague strike", ACTION_DEFAULT + 0.5f),
|
new NextAction("plague strike", ACTION_DEFAULT + 0.5f),
|
||||||
nullptr)));
|
nullptr)));
|
||||||
|
|
||||||
@@ -111,24 +111,26 @@ void UnholyDKStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|||||||
new NextAction("icy touch", ACTION_NORMAL + 3), nullptr)));
|
new NextAction("icy touch", ACTION_NORMAL + 3), nullptr)));
|
||||||
|
|
||||||
triggers.push_back(new TriggerNode(
|
triggers.push_back(new TriggerNode(
|
||||||
"high unholy rune", NextAction::array(0,
|
"high blood rune", NextAction::array(0, new NextAction("blood strike", ACTION_NORMAL + 2), nullptr)));
|
||||||
new NextAction("plague strike", ACTION_NORMAL + 2), nullptr)));
|
|
||||||
|
|
||||||
triggers.push_back(new TriggerNode(
|
triggers.push_back(new TriggerNode(
|
||||||
"high blood rune", NextAction::array(0, new NextAction("blood strike", ACTION_NORMAL + 1), nullptr)));
|
"high unholy rune", NextAction::array(0,
|
||||||
|
new NextAction("plague strike", ACTION_NORMAL + 1), nullptr)));
|
||||||
|
|
||||||
triggers.push_back(
|
triggers.push_back(
|
||||||
new TriggerNode("dd cd and plague strike 8s", NextAction::array(0, new NextAction("plague strike", ACTION_HIGH + 2), nullptr)));
|
new TriggerNode("dd cd and plague strike 3s", NextAction::array(0, new NextAction("plague strike", ACTION_HIGH + 1), nullptr)));
|
||||||
|
|
||||||
triggers.push_back(
|
triggers.push_back(
|
||||||
new TriggerNode("dd cd and icy touch 8s", NextAction::array(0, new NextAction("icy touch", ACTION_HIGH + 1), nullptr)));
|
new TriggerNode("dd cd and icy touch 3s", NextAction::array(0, new NextAction("icy touch", ACTION_HIGH + 2), nullptr)));
|
||||||
|
|
||||||
|
triggers.push_back(
|
||||||
|
new TriggerNode("no rune", NextAction::array(0, new NextAction("empower rune weapon", ACTION_HIGH + 1), nullptr)));
|
||||||
|
|
||||||
// triggers.push_back(new TriggerNode("often", NextAction::array(0, new NextAction(, ACTION_NORMAL + 2), nullptr)));
|
// triggers.push_back(new TriggerNode("often", NextAction::array(0, new NextAction(, ACTION_NORMAL + 2), nullptr)));
|
||||||
triggers.push_back(new TriggerNode(
|
triggers.push_back(new TriggerNode(
|
||||||
"army of the dead", NextAction::array(0, new NextAction("army of the dead", ACTION_HIGH + 6), nullptr)));
|
"army of the dead", NextAction::array(0, new NextAction("army of the dead", ACTION_HIGH + 6), nullptr)));
|
||||||
triggers.push_back(
|
triggers.push_back(
|
||||||
new TriggerNode("bone shield", NextAction::array(0, new NextAction("bone shield", ACTION_HIGH + 1), nullptr)));
|
new TriggerNode("bone shield", NextAction::array(0, new NextAction("bone shield", ACTION_HIGH + 3), nullptr)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void UnholyDKAoeStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
void UnholyDKAoeStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
||||||
|
|||||||
Reference in New Issue
Block a user