mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-01-13 17:09:08 +00:00
This is my first attempt of implementing playerbot strategies. A team of 40 can steamroll Molten Core relatively easy, even with lower item levels. Regardless, this PR adds resistance triggers and actions to mitigate some damage. Additionally, improvements were made for the encounters with Garr, Baron Geddon, Shazzrah and Golemagg. A short summary per boss is listed below. All planned features are included, but feedback is of course appreciated. ### Lucifron - Shadow resistance: mitigate damage from [Impending Doom](https://www.wowhead.com/classic/spell=19702/impending-doom) and [Shadow Shock](https://www.wowhead.com/classic/spell=19460/shadow-shock). ### Magmadar - Fire resistance: mitigate damage from [Lava Bomb](https://www.wowhead.com/classic/spell=19411/lava-bomb) and [Magma Spit](https://www.wowhead.com/classic/spell=19450/magma-spit). - Like King Dred and the fraction commander (Nexus), this fight might profit from an anti-fear strategy in order to counter [Panic](https://www.wowhead.com/classic/spell=19408/panic). Not implemented here. ### Gehennas - Shadow resistance: mitigate damage from [Shadow Bolt](https://www.wowhead.com/classic/spell=19728/shadow-bolt) and increase the chance to resist [Gehennas' Curse](https://www.wowhead.com/classic/spell=19716/gehennas-curse). ### Garr - Fire resistance: mitigate damage from the Firesworn adds ([Immolate](https://www.wowhead.com/classic/spell=20294/immolate) and [Eruption](https://www.wowhead.com/classic/spell=19497/eruption)). - Disabled dps aoe abilities via multiplier. This one is important because multiple exploding adds at once might delete bots rather quick... ### Baron Geddon - Refactored the existing strategy. - Fire resistance: mitigate damage from [Ignite Mana](https://www.wowhead.com/classic/spell=19659/ignite-mana), [Inferno](https://www.wowhead.com/classic/spell=19695/inferno) and [Living Bomb](https://www.wowhead.com/classic/spell=20475/living-bomb). - Better Inferno handling: Before moving away, bots stop attacking and interrupt their spells. Additionally, the new multiplier prevents bots from running back to Geddon while Inferno is still active. ### Shazzrah - Ranged bots now position themselves in a sweet spot that prevents them from getting hit with [Arcane Explosion](https://www.wowhead.com/classic/spell=19712/arcane-explosion) but still close enough to dps and heal. ### Sulfuron Harbinger - Fire resistance: mitigate damage from [Hand of Ragnaros](https://www.wowhead.com/classic/spell=19780/hand-of-ragnaros) and [Immolate](https://www.wowhead.com/classic/spell=20294/immolate). To be fair, this one is quite negligible... ### Golemagg - Fire resistance: mitigate damage from [Magma Splash](https://www.wowhead.com/classic/spell=13880/magma-splash) and [Pyroblast](https://www.wowhead.com/classic/spell=20228/pyroblast). - Disabled dps aoe abilities via multiplier. Kind of a preference on my side. Otherwise, the Core Ragers spam emotes about not wanting to die. ### Majordomo Executus - Shadow resistance: mitigate damage from [Aegis of Ragnaros](https://www.wowhead.com/classic/spell=20620/aegis-of-ragnaros), [Shadow Shock](https://www.wowhead.com/classic/spell=20603/shadow-shock) and [Shadow Bolt](https://www.wowhead.com/classic/spell=21077/shadow-bolt). This one is also negligible, TBF. ### Ragnaros - Fire resistance: mitigate damage from [Wrath of Ragnaros](https://www.wowhead.com/classic/spell=20566/wrath-of-ragnaros) and [Lava Burst](https://www.wowhead.com/classic/spell=21158/lava-burst).
82 lines
3.7 KiB
C++
82 lines
3.7 KiB
C++
#include "RaidMcStrategy.h"
|
|
|
|
#include "RaidMcMultipliers.h"
|
|
#include "Strategy.h"
|
|
|
|
void RaidMcStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|
{
|
|
// Lucifron
|
|
triggers.push_back(
|
|
new TriggerNode("mc lucifron shadow resistance",
|
|
NextAction::array(0, new NextAction("mc lucifron shadow resistance", ACTION_RAID), nullptr)));
|
|
|
|
// Magmadar
|
|
// TODO: Fear ward / tremor totem, or general anti-fear strat development. Same as King Dred (Drak'Tharon) and faction commander (Nexus).
|
|
triggers.push_back(
|
|
new TriggerNode("mc magmadar fire resistance",
|
|
NextAction::array(0, new NextAction("mc magmadar fire resistance", ACTION_RAID), nullptr)));
|
|
|
|
// Gehennas
|
|
triggers.push_back(
|
|
new TriggerNode("mc gehennas shadow resistance",
|
|
NextAction::array(0, new NextAction("mc gehennas shadow resistance", ACTION_RAID), nullptr)));
|
|
|
|
// Garr
|
|
triggers.push_back(
|
|
new TriggerNode("mc garr fire resistance",
|
|
NextAction::array(0, new NextAction("mc garr fire resistance", ACTION_RAID), nullptr)));
|
|
|
|
// Baron Geddon
|
|
triggers.push_back(
|
|
new TriggerNode("mc baron geddon fire resistance",
|
|
NextAction::array(0, new NextAction("mc baron geddon fire resistance", ACTION_RAID), nullptr)));
|
|
triggers.push_back(
|
|
new TriggerNode("mc living bomb debuff",
|
|
NextAction::array(0, new NextAction("mc move from group", ACTION_RAID), nullptr)));
|
|
triggers.push_back(
|
|
new TriggerNode("mc baron geddon inferno",
|
|
NextAction::array(0, new NextAction("mc move from baron geddon", ACTION_RAID), nullptr)));
|
|
|
|
// Shazzrah
|
|
triggers.push_back(
|
|
new TriggerNode("mc shazzrah ranged",
|
|
NextAction::array(0, new NextAction("mc shazzrah move away", ACTION_RAID), nullptr)));
|
|
|
|
// Sulfuron Harbinger
|
|
// Alternatively, shadow resistance is also possible.
|
|
triggers.push_back(
|
|
new TriggerNode("mc sulfuron harbinger fire resistance",
|
|
NextAction::array(0, new NextAction("mc sulfuron harbinger fire resistance", ACTION_RAID), nullptr)));
|
|
|
|
// Golemagg the Incinerator
|
|
triggers.push_back(
|
|
new TriggerNode("mc golemagg fire resistance",
|
|
NextAction::array(0, new NextAction("mc golemagg fire resistance", ACTION_RAID), nullptr)));
|
|
triggers.push_back(
|
|
new TriggerNode("mc golemagg mark boss",
|
|
NextAction::array(0, new NextAction("mc golemagg mark boss", ACTION_RAID), nullptr)));
|
|
triggers.push_back(
|
|
new TriggerNode("mc golemagg is main tank",
|
|
NextAction::array(0, new NextAction("mc golemagg main tank attack golemagg", ACTION_RAID), nullptr)));
|
|
triggers.push_back(
|
|
new TriggerNode("mc golemagg is assist tank",
|
|
NextAction::array(0, new NextAction("mc golemagg assist tank attack core rager", ACTION_RAID), nullptr)));
|
|
|
|
// Majordomo Executus
|
|
triggers.push_back(
|
|
new TriggerNode("mc majordomo shadow resistance",
|
|
NextAction::array(0, new NextAction("mc majordomo shadow resistance", ACTION_RAID), nullptr)));
|
|
|
|
// Ragnaros
|
|
triggers.push_back(
|
|
new TriggerNode("mc ragnaros fire resistance",
|
|
NextAction::array(0, new NextAction("mc ragnaros fire resistance", ACTION_RAID), nullptr)));
|
|
}
|
|
|
|
void RaidMcStrategy::InitMultipliers(std::vector<Multiplier*>& multipliers)
|
|
{
|
|
multipliers.push_back(new GarrDisableDpsAoeMultiplier(botAI));
|
|
multipliers.push_back(new BaronGeddonAbilityMultiplier(botAI));
|
|
multipliers.push_back(new GolemaggMultiplier(botAI));
|
|
}
|