mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-22 13:06:23 +00:00
fix party member dispel.
This commit is contained in:
@@ -22,6 +22,7 @@ class ChatTriggerContext : public NamedObjectContext<Trigger>
|
||||
creators["reputation"] = &ChatTriggerContext::reputation;
|
||||
creators["log"] = &ChatTriggerContext::log;
|
||||
creators["los"] = &ChatTriggerContext::los;
|
||||
creators["aura"] = &ChatTriggerContext::aura;
|
||||
creators["drop"] = &ChatTriggerContext::drop;
|
||||
creators["share"] = &ChatTriggerContext::share;
|
||||
creators["q"] = &ChatTriggerContext::q;
|
||||
@@ -187,6 +188,7 @@ class ChatTriggerContext : public NamedObjectContext<Trigger>
|
||||
static Trigger* reputation(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "reputation"); }
|
||||
static Trigger* log(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "log"); }
|
||||
static Trigger* los(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "los"); }
|
||||
static Trigger* aura(PlayerbotAI* ai) { return new ChatCommandTrigger(ai, "aura"); }
|
||||
static Trigger* loot_all(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "add all loot"); }
|
||||
static Trigger* release(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "release"); }
|
||||
static Trigger* reset_ai(PlayerbotAI* botAI) { return new ChatCommandTrigger(botAI, "reset botAI"); }
|
||||
|
||||
@@ -13,7 +13,7 @@ class Unit;
|
||||
class NeedCureTrigger : public SpellTrigger
|
||||
{
|
||||
public:
|
||||
NeedCureTrigger(PlayerbotAI* botAI, std::string const spell, uint32 dispelType) : SpellTrigger(botAI, spell, 5), dispelType(dispelType) { }
|
||||
NeedCureTrigger(PlayerbotAI* botAI, std::string const spell, uint32 dispelType) : SpellTrigger(botAI, spell, 1), dispelType(dispelType) { }
|
||||
|
||||
std::string const GetTargetName() override { return "self target"; }
|
||||
bool IsActive() override;
|
||||
|
||||
@@ -21,6 +21,10 @@ bool NoPetTrigger::IsActive()
|
||||
return !AI_VALUE(Unit*, "pet target") && !AI_VALUE2(bool, "mounted", "self target");
|
||||
}
|
||||
|
||||
bool HasPetTrigger::IsActive() {
|
||||
return AI_VALUE(Unit*, "pet target") && !AI_VALUE2(bool, "mounted", "self target");;
|
||||
}
|
||||
|
||||
bool HighManaTrigger::IsActive()
|
||||
{
|
||||
return AI_VALUE2(bool, "has mana", "self target") && AI_VALUE2(uint8, "mana", "self target") < 65;
|
||||
|
||||
@@ -418,6 +418,14 @@ class NoPetTrigger : public Trigger
|
||||
bool IsActive() override;
|
||||
};
|
||||
|
||||
class HasPetTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
HasPetTrigger(PlayerbotAI* ai) : Trigger(ai, "no pet", 5) {}
|
||||
|
||||
virtual bool IsActive() override;
|
||||
};
|
||||
|
||||
class ItemCountTrigger : public Trigger
|
||||
{
|
||||
public:
|
||||
|
||||
@@ -30,3 +30,8 @@ bool AoeHealTrigger::IsActive()
|
||||
return AI_VALUE2(uint8, "aoe heal", type) >= count;
|
||||
}
|
||||
|
||||
bool AoeInGroupTrigger::IsActive()
|
||||
{
|
||||
Group *group = bot->GetGroup();
|
||||
return group && AI_VALUE2(uint8, "aoe heal", type) >= (group->GetMembersCount() * ratio);
|
||||
}
|
||||
@@ -132,4 +132,14 @@ class AoeHealTrigger : public Trigger
|
||||
std::string const type;
|
||||
};
|
||||
|
||||
class AoeInGroupTrigger : public Trigger {
|
||||
public:
|
||||
AoeInGroupTrigger(PlayerbotAI* ai, std::string name, std::string type, float ratio) :
|
||||
Trigger(ai, name), ratio(ratio), type(type) {}
|
||||
virtual bool IsActive();
|
||||
protected:
|
||||
float ratio;
|
||||
std::string type;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -97,6 +97,7 @@ class TriggerContext : public NamedObjectContext<Trigger>
|
||||
creators["corpse near"] = &TriggerContext::corpse_near;
|
||||
creators["party member dead"] = &TriggerContext::PartyMemberDead;
|
||||
creators["no pet"] = &TriggerContext::no_pet;
|
||||
creators["has pet"] = &TriggerContext::has_pet;
|
||||
creators["has attackers"] = &TriggerContext::has_attackers;
|
||||
creators["no possible targets"] = &TriggerContext::no_possible_targets;
|
||||
creators["possible adds"] = &TriggerContext::possible_adds;
|
||||
@@ -118,6 +119,7 @@ class TriggerContext : public NamedObjectContext<Trigger>
|
||||
creators["critical aoe heal"] = &TriggerContext::critical_aoe_heal;
|
||||
creators["low aoe heal"] = &TriggerContext::low_aoe_heal;
|
||||
creators["medium aoe heal"] = &TriggerContext::medium_aoe_heal;
|
||||
creators["group heal occasion"] = &TriggerContext::group_heal_occasion;
|
||||
creators["invalid target"] = &TriggerContext::invalid_target;
|
||||
creators["lfg proposal active"] = &TriggerContext::lfg_proposal_active;
|
||||
|
||||
@@ -210,6 +212,7 @@ class TriggerContext : public NamedObjectContext<Trigger>
|
||||
static Trigger* critical_aoe_heal(PlayerbotAI* botAI) { return new AoeHealTrigger(botAI, "critical aoe heal", "critical", 2); }
|
||||
static Trigger* low_aoe_heal(PlayerbotAI* botAI) { return new AoeHealTrigger(botAI, "low aoe heal", "low", 2); }
|
||||
static Trigger* medium_aoe_heal(PlayerbotAI* botAI) { return new AoeHealTrigger(botAI, "medium aoe heal", "medium", 2); }
|
||||
static Trigger* group_heal_occasion(PlayerbotAI* ai) { return new AoeInGroupTrigger(ai, "group heal occasion", "almost full", 0.4); }
|
||||
static Trigger* target_changed(PlayerbotAI* botAI) { return new TargetChangedTrigger(botAI); }
|
||||
static Trigger* swimming(PlayerbotAI* botAI) { return new IsSwimmingTrigger(botAI); }
|
||||
static Trigger* no_possible_targets(PlayerbotAI* botAI) { return new NoPossibleTargetsTrigger(botAI); }
|
||||
@@ -277,6 +280,7 @@ class TriggerContext : public NamedObjectContext<Trigger>
|
||||
static Trigger* PartyMemberCriticalHealth(PlayerbotAI* botAI) { return new PartyMemberCriticalHealthTrigger(botAI); }
|
||||
static Trigger* protect_party_member(PlayerbotAI* botAI) { return new ProtectPartyMemberTrigger(botAI); }
|
||||
static Trigger* no_pet(PlayerbotAI* botAI) { return new NoPetTrigger(botAI); }
|
||||
static Trigger* has_pet(PlayerbotAI* botAI) { return new HasPetTrigger(botAI); }
|
||||
static Trigger* has_attackers(PlayerbotAI* botAI) { return new HasAttackersTrigger(botAI); }
|
||||
static Trigger* random_bot_update_trigger(PlayerbotAI* botAI) { return new RandomBotUpdateTrigger(botAI); }
|
||||
static Trigger* no_non_bot_players_around(PlayerbotAI* botAI) { return new NoNonBotPlayersAroundTrigger(botAI); }
|
||||
|
||||
Reference in New Issue
Block a user