mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
debuff on attacker
This commit is contained in:
@@ -292,3 +292,7 @@ Value<Unit*>* BuffOnMainTankAction::GetTargetValue()
|
|||||||
return context->GetValue<Unit*>("main tank", spell);
|
return context->GetValue<Unit*>("main tank", spell);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CastDebuffSpellAction::isUseful()
|
||||||
|
{
|
||||||
|
return CastAuraSpellAction::isUseful() && GetTarget() && (GetTarget()->GetHealth() / AI_VALUE(float, "expected group dps")) >= needLifeTime;
|
||||||
|
}
|
||||||
@@ -50,13 +50,16 @@ class CastMeleeSpellAction : public CastSpellAction
|
|||||||
class CastDebuffSpellAction : public CastAuraSpellAction
|
class CastDebuffSpellAction : public CastAuraSpellAction
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CastDebuffSpellAction(PlayerbotAI* botAI, std::string const spell, bool isOwner = false) : CastAuraSpellAction(botAI, spell, isOwner) { }
|
CastDebuffSpellAction(PlayerbotAI* botAI, std::string const spell, bool isOwner = false, float needLifeTime = 8.0f) : CastAuraSpellAction(botAI, spell, isOwner), needLifeTime(needLifeTime) { }
|
||||||
|
bool isUseful() override;
|
||||||
|
private:
|
||||||
|
float needLifeTime;
|
||||||
};
|
};
|
||||||
|
|
||||||
class CastDebuffSpellOnAttackerAction : public CastAuraSpellAction
|
class CastDebuffSpellOnAttackerAction : public CastDebuffSpellAction
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CastDebuffSpellOnAttackerAction(PlayerbotAI* botAI, std::string const spell, bool isOwner = true) : CastAuraSpellAction(botAI, spell, isOwner) { }
|
CastDebuffSpellOnAttackerAction(PlayerbotAI* botAI, std::string const spell, bool isOwner = true, float needLifeTime = 8.0f) : CastDebuffSpellAction(botAI, spell, isOwner, needLifeTime) { }
|
||||||
|
|
||||||
Value<Unit*>* GetTargetValue() override;
|
Value<Unit*>* GetTargetValue() override;
|
||||||
std::string const getName() override { return spell + " on attacker"; }
|
std::string const getName() override { return spell + " on attacker"; }
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "HunterTriggers.h"
|
#include "HunterTriggers.h"
|
||||||
|
#include "GenericTriggers.h"
|
||||||
#include "HunterActions.h"
|
#include "HunterActions.h"
|
||||||
#include "Playerbots.h"
|
#include "Playerbots.h"
|
||||||
#include "ServerFacade.h"
|
#include "ServerFacade.h"
|
||||||
@@ -18,7 +19,7 @@ bool HunterAspectOfTheHawkTrigger::IsActive()
|
|||||||
bool HunterNoStingsActiveTrigger::IsActive()
|
bool HunterNoStingsActiveTrigger::IsActive()
|
||||||
{
|
{
|
||||||
Unit* target = AI_VALUE(Unit*, "current target");
|
Unit* target = AI_VALUE(Unit*, "current target");
|
||||||
return target && AI_VALUE2(uint8, "health", "current target") > 15 &&
|
return DebuffTrigger::IsActive() && target &&
|
||||||
!botAI->HasAura("serpent sting", target, false, true) &&
|
!botAI->HasAura("serpent sting", target, false, true) &&
|
||||||
!botAI->HasAura("scorpid sting", target, false, true) &&
|
!botAI->HasAura("scorpid sting", target, false, true) &&
|
||||||
!botAI->HasAura("viper sting", target, false, true);
|
!botAI->HasAura("viper sting", target, false, true);
|
||||||
|
|||||||
@@ -11,10 +11,10 @@
|
|||||||
|
|
||||||
class PlayerbotAI;
|
class PlayerbotAI;
|
||||||
|
|
||||||
class HunterNoStingsActiveTrigger : public Trigger
|
class HunterNoStingsActiveTrigger : public DebuffTrigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
HunterNoStingsActiveTrigger(PlayerbotAI* botAI): Trigger(botAI, "no stings") {}
|
HunterNoStingsActiveTrigger(PlayerbotAI* botAI): DebuffTrigger(botAI, "no stings") {}
|
||||||
bool IsActive() override;
|
bool IsActive() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ class DebuffOnBossTrigger : public DebuffTrigger
|
|||||||
class DebuffOnAttackerTrigger : public DebuffTrigger
|
class DebuffOnAttackerTrigger : public DebuffTrigger
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
DebuffOnAttackerTrigger(PlayerbotAI* botAI, std::string const spell, bool checkIsOwner = true, float needLifeTime = 8000.0f) : DebuffTrigger(botAI, spell, 1, checkIsOwner, needLifeTime) { }
|
DebuffOnAttackerTrigger(PlayerbotAI* botAI, std::string const spell, bool checkIsOwner = true, float needLifeTime = 8.0f) : DebuffTrigger(botAI, spell, 1, checkIsOwner, needLifeTime) { }
|
||||||
|
|
||||||
Value<Unit*>* GetTargetValue() override;
|
Value<Unit*>* GetTargetValue() override;
|
||||||
std::string const getName() override { return spell + " on attacker"; }
|
std::string const getName() override { return spell + " on attacker"; }
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ class CastBanishAction : public CastBuffSpellAction
|
|||||||
class CastSeedOfCorruptionAction : public CastDebuffSpellAction
|
class CastSeedOfCorruptionAction : public CastDebuffSpellAction
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CastSeedOfCorruptionAction(PlayerbotAI* botAI) : CastDebuffSpellAction(botAI, "seed of corruption", true) { }
|
CastSeedOfCorruptionAction(PlayerbotAI* botAI) : CastDebuffSpellAction(botAI, "seed of corruption", true, 0) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
class CastRainOfFireAction : public CastSpellAction
|
class CastRainOfFireAction : public CastSpellAction
|
||||||
|
|||||||
Reference in New Issue
Block a user