mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
[Class spell] Seed of corruption
This commit is contained in:
@@ -87,7 +87,10 @@ void DpsWarlockStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|||||||
|
|
||||||
void DpsAoeWarlockStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
void DpsAoeWarlockStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
||||||
{
|
{
|
||||||
triggers.push_back(new TriggerNode("medium aoe", NextAction::array(0, new NextAction("rain of fire", 37.0f), nullptr)));
|
triggers.push_back(new TriggerNode("medium aoe", NextAction::array(0,
|
||||||
|
new NextAction("seed of corruption", 39.0f),
|
||||||
|
new NextAction("seed of corruption on attacker", 38.0f),
|
||||||
|
new NextAction("rain of fire", 37.0f), nullptr)));
|
||||||
triggers.push_back(new TriggerNode("corruption on attacker", NextAction::array(0, new NextAction("corruption on attacker", 27.0f), nullptr)));
|
triggers.push_back(new TriggerNode("corruption on attacker", NextAction::array(0, new NextAction("corruption on attacker", 27.0f), nullptr)));
|
||||||
triggers.push_back(new TriggerNode("unstable affliction on attacker", NextAction::array(0, new NextAction("unstable affliction on attacker", 26.0f), NULL)));
|
triggers.push_back(new TriggerNode("unstable affliction on attacker", NextAction::array(0, new NextAction("unstable affliction on attacker", 26.0f), NULL)));
|
||||||
triggers.push_back(new TriggerNode("curse of agony on attacker", NextAction::array(0, new NextAction("curse of agony on attacker", 25.0f), nullptr)));
|
triggers.push_back(new TriggerNode("curse of agony on attacker", NextAction::array(0, new NextAction("curse of agony on attacker", 25.0f), nullptr)));
|
||||||
|
|||||||
@@ -67,12 +67,20 @@ class CastCorruptionAction : public CastDebuffSpellAction
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CastCorruptionAction(PlayerbotAI* botAI) : CastDebuffSpellAction(botAI, "corruption", true) { }
|
CastCorruptionAction(PlayerbotAI* botAI) : CastDebuffSpellAction(botAI, "corruption", true) { }
|
||||||
|
bool isUseful() override {
|
||||||
|
return CastDebuffSpellAction::isUseful() && !botAI->HasAura("seed of corruption", GetTarget(), false, true) ;
|
||||||
|
}
|
||||||
|
ActionThreatType getThreatType() override { return ActionThreatType::Aoe; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class CastCorruptionOnAttackerAction : public CastDebuffSpellOnAttackerAction
|
class CastCorruptionOnAttackerAction : public CastDebuffSpellOnAttackerAction
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CastCorruptionOnAttackerAction(PlayerbotAI* botAI) : CastDebuffSpellOnAttackerAction(botAI, "corruption", true) { }
|
CastCorruptionOnAttackerAction(PlayerbotAI* botAI) : CastDebuffSpellOnAttackerAction(botAI, "corruption", true) { }
|
||||||
|
bool isUseful() override {
|
||||||
|
return CastDebuffSpellOnAttackerAction::isUseful() && !botAI->HasAura("seed of corruption", GetTarget(), false, true) ;
|
||||||
|
}
|
||||||
|
ActionThreatType getThreatType() override { return ActionThreatType::Aoe; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class CastCurseOfAgonyOnAttackerAction : public CastDebuffSpellOnAttackerAction
|
class CastCurseOfAgonyOnAttackerAction : public CastDebuffSpellOnAttackerAction
|
||||||
@@ -142,6 +150,18 @@ class CastSeedOfCorruptionAction : public CastDebuffSpellAction
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CastSeedOfCorruptionAction(PlayerbotAI* botAI) : CastDebuffSpellAction(botAI, "seed of corruption", true, 0) { }
|
CastSeedOfCorruptionAction(PlayerbotAI* botAI) : CastDebuffSpellAction(botAI, "seed of corruption", true, 0) { }
|
||||||
|
bool isUseful() override {
|
||||||
|
return CastDebuffSpellAction::isUseful() && !botAI->HasAura("corruption", GetTarget(), false, true) ;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
class CastSeedOfCorruptionOnAttackerAction : public CastDebuffSpellOnAttackerAction
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CastSeedOfCorruptionOnAttackerAction(PlayerbotAI* botAI) : CastDebuffSpellOnAttackerAction(botAI, "seed of corruption", true, 0) { }
|
||||||
|
bool isUseful() override {
|
||||||
|
return CastDebuffSpellOnAttackerAction::isUseful() && !botAI->HasAura("corruption", GetTarget(), false, true) ;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CastRainOfFireAction : public CastSpellAction
|
class CastRainOfFireAction : public CastSpellAction
|
||||||
|
|||||||
@@ -158,6 +158,7 @@ class WarlockAiObjectContextInternal : public NamedObjectContext<Action>
|
|||||||
creators["banish"] = &WarlockAiObjectContextInternal::banish;
|
creators["banish"] = &WarlockAiObjectContextInternal::banish;
|
||||||
creators["banish on cc"] = &WarlockAiObjectContextInternal::banish_on_cc;
|
creators["banish on cc"] = &WarlockAiObjectContextInternal::banish_on_cc;
|
||||||
creators["seed of corruption"] = &WarlockAiObjectContextInternal::seed_of_corruption;
|
creators["seed of corruption"] = &WarlockAiObjectContextInternal::seed_of_corruption;
|
||||||
|
creators["seed of corruption on attacker"] = &WarlockAiObjectContextInternal::seed_of_corruption_on_attacker;
|
||||||
creators["rain of fire"] = &WarlockAiObjectContextInternal::rain_of_fire;
|
creators["rain of fire"] = &WarlockAiObjectContextInternal::rain_of_fire;
|
||||||
creators["shadowfury"] = &WarlockAiObjectContextInternal::shadowfury;
|
creators["shadowfury"] = &WarlockAiObjectContextInternal::shadowfury;
|
||||||
creators["life tap"] = &WarlockAiObjectContextInternal::life_tap;
|
creators["life tap"] = &WarlockAiObjectContextInternal::life_tap;
|
||||||
@@ -209,6 +210,7 @@ class WarlockAiObjectContextInternal : public NamedObjectContext<Action>
|
|||||||
static Action* banish(PlayerbotAI* botAI) { return new CastBanishAction(botAI); }
|
static Action* banish(PlayerbotAI* botAI) { return new CastBanishAction(botAI); }
|
||||||
static Action* banish_on_cc(PlayerbotAI* botAI) { return new CastBanishAction(botAI); }
|
static Action* banish_on_cc(PlayerbotAI* botAI) { return new CastBanishAction(botAI); }
|
||||||
static Action* seed_of_corruption(PlayerbotAI* botAI) { return new CastSeedOfCorruptionAction(botAI); }
|
static Action* seed_of_corruption(PlayerbotAI* botAI) { return new CastSeedOfCorruptionAction(botAI); }
|
||||||
|
static Action* seed_of_corruption_on_attacker(PlayerbotAI* botAI) { return new CastSeedOfCorruptionOnAttackerAction(botAI); }
|
||||||
static Action* rain_of_fire(PlayerbotAI* botAI) { return new CastRainOfFireAction(botAI); }
|
static Action* rain_of_fire(PlayerbotAI* botAI) { return new CastRainOfFireAction(botAI); }
|
||||||
static Action* shadowfury(PlayerbotAI* botAI) { return new CastShadowfuryAction(botAI); }
|
static Action* shadowfury(PlayerbotAI* botAI) { return new CastShadowfuryAction(botAI); }
|
||||||
static Action* life_tap(PlayerbotAI* botAI) { return new CastLifeTapAction(botAI); }
|
static Action* life_tap(PlayerbotAI* botAI) { return new CastLifeTapAction(botAI); }
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
#define _PLAYERBOT_WARLOCKTRIGGERS_H
|
#define _PLAYERBOT_WARLOCKTRIGGERS_H
|
||||||
|
|
||||||
#include "GenericTriggers.h"
|
#include "GenericTriggers.h"
|
||||||
|
#include "PlayerbotAI.h"
|
||||||
|
|
||||||
class PlayerbotAI;
|
class PlayerbotAI;
|
||||||
|
|
||||||
@@ -32,13 +33,24 @@ class CurseOfAgonyTrigger : public DebuffTrigger
|
|||||||
CurseOfAgonyTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "curse of agony", 1, true, 20.0f) { }
|
CurseOfAgonyTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "curse of agony", 1, true, 20.0f) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
DEBUFF_CHECKISOWNER_TRIGGER(CorruptionTrigger, "corruption");
|
class CorruptionTrigger : public DebuffTrigger
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CorruptionTrigger(PlayerbotAI* botAI) : DebuffTrigger(botAI, "corruption", 1, true) { } \
|
||||||
|
bool IsActive() override {
|
||||||
|
return DebuffTrigger::IsActive() && !botAI->HasAura("seed of corruption", GetTarget(), false, true) ;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
DEBUFF_CHECKISOWNER_TRIGGER(SiphonLifeTrigger, "siphon life");
|
DEBUFF_CHECKISOWNER_TRIGGER(SiphonLifeTrigger, "siphon life");
|
||||||
|
|
||||||
class CorruptionOnAttackerTrigger : public DebuffOnAttackerTrigger
|
class CorruptionOnAttackerTrigger : public DebuffOnAttackerTrigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CorruptionOnAttackerTrigger(PlayerbotAI* botAI) : DebuffOnAttackerTrigger(botAI, "corruption", true) { }
|
CorruptionOnAttackerTrigger(PlayerbotAI* botAI) : DebuffOnAttackerTrigger(botAI, "corruption", true) { }
|
||||||
|
bool IsActive() override {
|
||||||
|
return DebuffOnAttackerTrigger::IsActive() && !botAI->HasAura("seed of corruption", GetTarget(), false, true) ;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CastCurseOfAgonyOnAttackerTrigger : public DebuffOnAttackerTrigger
|
class CastCurseOfAgonyOnAttackerTrigger : public DebuffOnAttackerTrigger
|
||||||
|
|||||||
Reference in New Issue
Block a user