mirror of
https://github.com/mod-playerbots/mod-playerbots
synced 2025-11-29 15:58:20 +08:00
Merge pull request #340 from Bobblybook/master
Fix/rewrite Shaman weapon buff checking (incl. dual wield support)
This commit is contained in:
@@ -49,7 +49,8 @@ void CasterShamanStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
||||
GenericShamanStrategy::InitTriggers(triggers);
|
||||
|
||||
// triggers.push_back(new TriggerNode("enemy out of spell", NextAction::array(0, new NextAction("reach spell", ACTION_NORMAL + 9), nullptr)));
|
||||
triggers.push_back(new TriggerNode("shaman weapon", NextAction::array(0, new NextAction("flametongue weapon", 23.0f), nullptr)));
|
||||
// triggers.push_back(new TriggerNode("shaman weapon", NextAction::array(0, new NextAction("flametongue weapon", 23.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode("main hand weapon no imbue", NextAction::array(0, new NextAction("flametongue weapon", 22.0f), nullptr)));
|
||||
// triggers.push_back(new TriggerNode("searing totem", NextAction::array(0, new NextAction("searing totem", 19.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode("flame shock", NextAction::array(0, new NextAction("flame shock", 20.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode("elemental mastery", NextAction::array(0, new NextAction("elemental mastery", 27.0f), nullptr)));
|
||||
|
||||
@@ -35,7 +35,7 @@ class GenericShamanStrategyActionNodeFactory : public NamedObjectFactory<ActionN
|
||||
{
|
||||
return new ActionNode ("flametongue weapon",
|
||||
/*P*/ nullptr,
|
||||
/*A*/ NextAction::array(0, new NextAction("frostbrand weapon"), nullptr),
|
||||
/*A*/ NextAction::array(0, new NextAction("flametongue weapon"), nullptr),
|
||||
/*C*/ nullptr);
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ class GenericShamanStrategyActionNodeFactory : public NamedObjectFactory<ActionN
|
||||
{
|
||||
return new ActionNode ("frostbrand weapon",
|
||||
/*P*/ nullptr,
|
||||
/*A*/ NextAction::array(0, new NextAction("rockbiter weapon"), nullptr),
|
||||
/*A*/ NextAction::array(0, new NextAction("frostbrand weapon"), nullptr),
|
||||
/*C*/ nullptr);
|
||||
}
|
||||
|
||||
@@ -51,7 +51,7 @@ class GenericShamanStrategyActionNodeFactory : public NamedObjectFactory<ActionN
|
||||
{
|
||||
return new ActionNode ("windfury weapon",
|
||||
/*P*/ nullptr,
|
||||
/*A*/ NextAction::array(0, new NextAction("rockbiter weapon"), nullptr),
|
||||
/*A*/ NextAction::array(0, new NextAction("windfury weapon"), nullptr),
|
||||
/*C*/ nullptr);
|
||||
}
|
||||
|
||||
|
||||
@@ -42,7 +42,8 @@ void HealShamanStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
||||
GenericShamanStrategy::InitTriggers(triggers);
|
||||
|
||||
// triggers.push_back(new TriggerNode("enemy out of spell", NextAction::array(0, new NextAction("reach spell", ACTION_NORMAL + 9), nullptr)));
|
||||
triggers.push_back(new TriggerNode("shaman weapon", NextAction::array(0, new NextAction("earthliving weapon", 22.0f), nullptr)));
|
||||
// triggers.push_back(new TriggerNode("shaman weapon", NextAction::array(0, new NextAction("earthliving weapon", 22.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode("main hand weapon no imbue", NextAction::array(0, new NextAction("earthliving weapon", 22.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode(
|
||||
"group heal occasion",
|
||||
NextAction::array(0, new NextAction("riptide on party", 23.0f), new NextAction("chain heal", 22.0f), NULL)));
|
||||
|
||||
@@ -63,7 +63,9 @@ void MeleeShamanStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
||||
{
|
||||
GenericShamanStrategy::InitTriggers(triggers);
|
||||
|
||||
triggers.push_back(new TriggerNode("shaman weapon", NextAction::array(0, new NextAction("flametongue weapon", 22.0f), nullptr)));
|
||||
//triggers.push_back(new TriggerNode("shaman weapon", NextAction::array(0, new NextAction("flametongue weapon", 22.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode("main hand weapon no imbue", NextAction::array(0, new NextAction("windfury weapon", 22.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode("off hand weapon no imbue", NextAction::array(0, new NextAction("flametongue weapon", 21.0f), nullptr)));
|
||||
// triggers.push_back(new TriggerNode("searing totem", NextAction::array(0, new NextAction("reach melee", 22.0f), new NextAction("searing totem", 22.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode("flame shock", NextAction::array(0, new NextAction("flame shock", 20.0f), nullptr)));
|
||||
triggers.push_back(new TriggerNode(
|
||||
|
||||
@@ -79,7 +79,9 @@ class ShamanATriggerFactoryInternal : public NamedObjectContext<Trigger>
|
||||
creators["searing totem"] = &ShamanATriggerFactoryInternal::searing_totem;
|
||||
creators["wind shear"] = &ShamanATriggerFactoryInternal::wind_shear;
|
||||
creators["purge"] = &ShamanATriggerFactoryInternal::purge;
|
||||
creators["shaman weapon"] = &ShamanATriggerFactoryInternal::shaman_weapon;
|
||||
//creators["shaman weapon"] = &ShamanATriggerFactoryInternal::shaman_weapon;
|
||||
creators["main hand weapon no imbue"] = &ShamanATriggerFactoryInternal::main_hand_weapon_no_imbue;
|
||||
creators["off hand weapon no imbue"] = &ShamanATriggerFactoryInternal::off_hand_weapon_no_imbue;
|
||||
creators["water shield"] = &ShamanATriggerFactoryInternal::water_shield;
|
||||
creators["lightning shield"] = &ShamanATriggerFactoryInternal::lightning_shield;
|
||||
creators["water breathing"] = &ShamanATriggerFactoryInternal::water_breathing;
|
||||
@@ -136,7 +138,9 @@ class ShamanATriggerFactoryInternal : public NamedObjectContext<Trigger>
|
||||
static Trigger* searing_totem(PlayerbotAI* botAI) { return new SearingTotemTrigger(botAI); }
|
||||
static Trigger* wind_shear(PlayerbotAI* botAI) { return new WindShearInterruptSpellTrigger(botAI); }
|
||||
static Trigger* purge(PlayerbotAI* botAI) { return new PurgeTrigger(botAI); }
|
||||
static Trigger* shaman_weapon(PlayerbotAI* botAI) { return new ShamanWeaponTrigger(botAI); }
|
||||
//static Trigger* shaman_weapon(PlayerbotAI* botAI) { return new ShamanWeaponTrigger(botAI); }
|
||||
static Trigger* main_hand_weapon_no_imbue(PlayerbotAI* botAI) { return new MainHandWeaponNoImbueTrigger(botAI); }
|
||||
static Trigger* off_hand_weapon_no_imbue(PlayerbotAI* botAI) { return new OffHandWeaponNoImbueTrigger(botAI); }
|
||||
static Trigger* water_shield(PlayerbotAI* botAI) { return new WaterShieldTrigger(botAI); }
|
||||
static Trigger* lightning_shield(PlayerbotAI* botAI) { return new LightningShieldTrigger(botAI); }
|
||||
static Trigger* shock(PlayerbotAI* botAI) { return new ShockTrigger(botAI); }
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "ShamanTriggers.h"
|
||||
#include "Playerbots.h"
|
||||
|
||||
/*
|
||||
std::vector<std::string> ShamanWeaponTrigger::spells;
|
||||
|
||||
bool ShamanWeaponTrigger::IsActive()
|
||||
@@ -30,6 +31,21 @@ bool ShamanWeaponTrigger::IsActive()
|
||||
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
|
||||
bool MainHandWeaponNoImbueTrigger::IsActive() {
|
||||
Item* const itemForSpell = bot->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND );
|
||||
if (!itemForSpell || itemForSpell->GetEnchantmentId(TEMP_ENCHANTMENT_SLOT))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool OffHandWeaponNoImbueTrigger::IsActive() {
|
||||
Item* const itemForSpell = bot->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND );
|
||||
if (!itemForSpell || itemForSpell->GetEnchantmentId(TEMP_ENCHANTMENT_SLOT))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ShockTrigger::IsActive()
|
||||
{
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
|
||||
class PlayerbotAI;
|
||||
|
||||
/*
|
||||
class ShamanWeaponTrigger : public BuffTrigger
|
||||
{
|
||||
public:
|
||||
@@ -21,6 +22,21 @@ class ShamanWeaponTrigger : public BuffTrigger
|
||||
private:
|
||||
static std::vector<std::string> spells;
|
||||
};
|
||||
*/
|
||||
|
||||
class MainHandWeaponNoImbueTrigger : public BuffTrigger
|
||||
{
|
||||
public:
|
||||
MainHandWeaponNoImbueTrigger(PlayerbotAI* ai) : BuffTrigger(ai, "main hand", 1) {}
|
||||
virtual bool IsActive();
|
||||
};
|
||||
|
||||
class OffHandWeaponNoImbueTrigger : public BuffTrigger
|
||||
{
|
||||
public:
|
||||
OffHandWeaponNoImbueTrigger(PlayerbotAI* ai) : BuffTrigger(ai, "off hand", 1) {}
|
||||
virtual bool IsActive();
|
||||
};
|
||||
|
||||
class TotemTrigger : public Trigger
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user