mirror of
https://github.com/liyunfan1223/mod-playerbots.git
synced 2026-06-20 15:39:25 +02:00
# Pull Request Small fixes to naxxramas strategy --- ## Complexity & Impact Does this change add new decision branches? - - [x] No - - [ ] Yes (**explain below**) Does this change increase per-bot or per-tick processing? - - [x] No - - [ ] Yes (**describe and justify impact**) Could this logic scale poorly under load? - - [x] No - - [ ] Yes (**explain why**) --- ## Defaults & Configuration Does this change modify default bot behavior? - - [x] No - - [ ] Yes (**explain why**) If this introduces more advanced or AI-heavy logic: - - [x] Lightweight mode remains the default - - [ ] More complex behavior is optional and thereby configurable --- ## AI Assistance Was AI assistance (e.g. ChatGPT or similar tools) used while working on this change? - - [x] No - - [ ] Yes (**explain below**) If yes, please specify: Copilot CLI to code review --- ## Final Checklist - - [x] Stability is not compromised - - [x] Performance impact is understood, tested, and acceptable - - [x] Added logic complexity is justified and explained - - [x] Documentation updated if needed
157 lines
5.0 KiB
C++
157 lines
5.0 KiB
C++
#include "RaidNaxxStrategy.h"
|
|
|
|
#include "RaidNaxxMultipliers.h"
|
|
|
|
void RaidNaxxStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|
{
|
|
// Grobbulus
|
|
triggers.push_back(new TriggerNode("mutating injection melee",
|
|
{ NextAction("grobbulus move away", ACTION_RAID + 2) }
|
|
));
|
|
|
|
triggers.push_back(new TriggerNode("mutating injection ranged",
|
|
{ NextAction("grobbulus go behind the boss", ACTION_RAID + 2) }
|
|
));
|
|
|
|
triggers.push_back(new TriggerNode("mutating injection removed",
|
|
{ NextAction("grobbulus move center", ACTION_RAID + 1) }
|
|
));
|
|
|
|
triggers.push_back(new TriggerNode("grobbulus cloud",
|
|
{ NextAction("rotate grobbulus", ACTION_RAID + 1) }
|
|
));
|
|
|
|
// Heigan the Unclean
|
|
//triggers.push_back(new TriggerNode("heigan melee",
|
|
// { NextAction("heigan dance melee", ACTION_RAID + 1) }
|
|
//));
|
|
|
|
//triggers.push_back(new TriggerNode("heigan ranged",
|
|
// { NextAction("heigan dance ranged", ACTION_RAID + 1) }
|
|
//));
|
|
|
|
// Kel'Thuzad
|
|
triggers.push_back(
|
|
new TriggerNode("kel'thuzad",
|
|
{
|
|
NextAction("kel'thuzad position", ACTION_RAID + 2),
|
|
NextAction("kel'thuzad choose target", ACTION_RAID + 1)
|
|
})
|
|
);
|
|
|
|
// Anub'Rekhan
|
|
triggers.push_back(new TriggerNode("anub'rekhan",
|
|
{ NextAction("anub'rekhan position", ACTION_RAID + 1) }
|
|
));
|
|
|
|
// Grand Widow Faerlina
|
|
triggers.push_back(new TriggerNode("faerlina",
|
|
{ NextAction("avoid aoe", ACTION_RAID + 1) }
|
|
));
|
|
|
|
// Maexxna
|
|
triggers.push_back(
|
|
new TriggerNode("maexxna",
|
|
{
|
|
NextAction("rear flank", ACTION_RAID + 1),
|
|
NextAction("avoid aoe", ACTION_RAID + 1)
|
|
})
|
|
);
|
|
|
|
// Patchwerk
|
|
//triggers.push_back(new TriggerNode("patchwerk tank",
|
|
// { NextAction("tank face", ACTION_RAID + 2) }
|
|
//));
|
|
|
|
//triggers.push_back(new TriggerNode("patchwerk ranged",
|
|
// { NextAction("patchwerk ranged position", ACTION_RAID + 2) }
|
|
//));
|
|
|
|
//triggers.push_back(new TriggerNode("patchwerk non-tank",
|
|
// { NextAction("rear flank", ACTION_RAID + 1) }
|
|
//));
|
|
|
|
// Thaddius
|
|
triggers.push_back(new TriggerNode("thaddius phase pet",
|
|
{ NextAction("thaddius attack nearest pet", ACTION_RAID + 1) }
|
|
));
|
|
|
|
triggers.push_back(new TriggerNode("thaddius phase pet lose aggro",
|
|
{ NextAction("taunt spell", ACTION_RAID + 2) }
|
|
));
|
|
|
|
triggers.push_back(new TriggerNode("thaddius phase transition",
|
|
{ NextAction("thaddius move to platform", ACTION_RAID + 1) }
|
|
));
|
|
|
|
triggers.push_back(new TriggerNode("thaddius phase thaddius",
|
|
{ NextAction("thaddius move polarity", ACTION_RAID + 1) }
|
|
));
|
|
|
|
// Instructor Razuvious
|
|
triggers.push_back(new TriggerNode("razuvious tank",
|
|
{ NextAction("razuvious use obedience crystal", ACTION_RAID + 1) }
|
|
));
|
|
|
|
triggers.push_back(new TriggerNode("razuvious nontank",
|
|
{ NextAction("razuvious target", ACTION_RAID + 1) }
|
|
));
|
|
|
|
// four horsemen
|
|
triggers.push_back(new TriggerNode("four horsemen attractors",
|
|
{ NextAction("four horsemen attract alternatively", ACTION_RAID + 1) }
|
|
));
|
|
|
|
triggers.push_back(new TriggerNode("four horsemen except attractors",
|
|
{ NextAction("four horsemen attack in order", ACTION_RAID + 1) }
|
|
));
|
|
|
|
// sapphiron
|
|
triggers.push_back(new TriggerNode("sapphiron ground",
|
|
{ NextAction("sapphiron ground position", ACTION_RAID + 1) }
|
|
));
|
|
|
|
triggers.push_back(new TriggerNode("sapphiron flight",
|
|
{ NextAction("sapphiron flight position", ACTION_RAID + 1) }
|
|
));
|
|
|
|
// Gluth
|
|
triggers.push_back(
|
|
new TriggerNode("gluth",
|
|
{
|
|
NextAction("gluth choose target", ACTION_RAID + 1),
|
|
NextAction("gluth position", ACTION_RAID + 1),
|
|
NextAction("gluth slowdown", ACTION_RAID)
|
|
})
|
|
);
|
|
|
|
triggers.push_back(new TriggerNode("gluth main tank mortal wound",
|
|
{ NextAction("taunt spell", ACTION_RAID + 1) }
|
|
));
|
|
|
|
// Loatheb
|
|
triggers.push_back(
|
|
new TriggerNode("loatheb",
|
|
{
|
|
NextAction("loatheb position", ACTION_RAID + 1),
|
|
NextAction("loatheb choose target", ACTION_RAID + 1)
|
|
})
|
|
);
|
|
|
|
}
|
|
|
|
void RaidNaxxStrategy::InitMultipliers(std::vector<Multiplier*>& multipliers)
|
|
{
|
|
multipliers.push_back(new GrobbulusMultiplier(botAI));
|
|
//multipliers.push_back(new HeiganDanceMultiplier(botAI));
|
|
multipliers.push_back(new LoathebGenericMultiplier(botAI));
|
|
multipliers.push_back(new ThaddiusGenericMultiplier(botAI));
|
|
multipliers.push_back(new SapphironGenericMultiplier(botAI));
|
|
multipliers.push_back(new InstructorRazuviousGenericMultiplier(botAI));
|
|
multipliers.push_back(new KelthuzadGenericMultiplier(botAI));
|
|
multipliers.push_back(new AnubrekhanGenericMultiplier(botAI));
|
|
multipliers.push_back(new FourHorsemenGenericMultiplier(botAI));
|
|
// multipliers.push_back(new GothikGenericMultiplier(botAI));
|
|
multipliers.push_back(new GluthGenericMultiplier(botAI));
|
|
}
|