Merge remote-tracking branch 'upstream/master' into more-chat-filters

This commit is contained in:
crow
2025-09-02 17:10:42 -05:00
24 changed files with 35 additions and 6 deletions

View File

@@ -472,6 +472,10 @@ void AiFactory::AddDefaultCombatStrategies(Player* player, PlayerbotAI* const fa
}
}
}
if (sRandomPlayerbotMgr->IsRandomBot(player))
{
engine->ChangeStrategy(sPlayerbotAIConfig->randomBotCombatStrategies);
}
else
{
engine->ChangeStrategy(sPlayerbotAIConfig->combatStrategies);

View File

@@ -722,7 +722,8 @@ void PlayerbotAI::HandleTeleportAck()
// SetNextCheckDelay(urand(2000, 5000));
if (sPlayerbotAIConfig->applyInstanceStrategies)
ApplyInstanceStrategies(bot->GetMapId(), true);
EvaluateHealerDpsStrategy();
if (sPlayerbotAIConfig->restrictHealerDPS)
EvaluateHealerDpsStrategy();
Reset(true);
}

View File

@@ -375,7 +375,7 @@ bool PlayerbotAIConfig::Initialize()
randomChangeMultiplier = sConfigMgr->GetOption<float>("AiPlayerbot.RandomChangeMultiplier", 1.0);
randomBotCombatStrategies = sConfigMgr->GetOption<std::string>("AiPlayerbot.RandomBotCombatStrategies", "-threat");
randomBotCombatStrategies = sConfigMgr->GetOption<std::string>("AiPlayerbot.RandomBotCombatStrategies", "");
randomBotNonCombatStrategies = sConfigMgr->GetOption<std::string>("AiPlayerbot.RandomBotNonCombatStrategies", "");
combatStrategies = sConfigMgr->GetOption<std::string>("AiPlayerbot.CombatStrategies", "+custom::say");
nonCombatStrategies = sConfigMgr->GetOption<std::string>("AiPlayerbot.NonCombatStrategies", "+custom::say,+return");

View File

@@ -123,7 +123,7 @@ void PlayerbotFactory::Init()
if (id == 47181 || id == 50358 || id == 47242 || id == 52639 || id == 47147 || id == 7218) // Test Enchant
continue;
if (id == 15463) // Legendary Arcane Amalgamation
if (id == 15463 || id == 15490) // Legendary Arcane Amalgamation
continue;
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(id);

View File

@@ -20,6 +20,8 @@ public:
creators["emalon lighting nova action"] = &RaidVoAActionContext::emalon_lighting_nova_action;
creators["emalon overcharge action"] = &RaidVoAActionContext::emalon_overcharge_action;
creators["emalon fall from floor action"] = &RaidVoAActionContext::emalon_fall_from_floor_action;
creators["emalon nature resistance action"] = &RaidVoAActionContext::emalon_nature_resistance_action;
creators["koralon fire resistance action"] = &RaidVoAActionContext::koralon_fire_resistance_action;
}
private:
@@ -27,6 +29,8 @@ private:
static Action* emalon_lighting_nova_action(PlayerbotAI* ai) { return new EmalonLightingNovaAction(ai); }
static Action* emalon_overcharge_action(PlayerbotAI* ai) { return new EmalonOverchargeAction(ai); }
static Action* emalon_fall_from_floor_action(PlayerbotAI* ai) { return new EmalonFallFromFloorAction(ai); }
static Action* emalon_nature_resistance_action(PlayerbotAI* ai) { return new BossNatureResistanceAction(ai, "emalon the storm watcher"); }
static Action* koralon_fire_resistance_action(PlayerbotAI* ai) { return new BossFireResistanceAction(ai, "koralon the flame watcher"); }
};
#endif

View File

@@ -24,4 +24,16 @@ void RaidVoAStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
triggers.push_back(new TriggerNode(
"emalon fall from floor trigger",
NextAction::array(0, new NextAction("emalon fall from floor action", ACTION_RAID), nullptr)));
triggers.push_back(new TriggerNode(
"emalon nature resistance trigger",
NextAction::array(0, new NextAction("emalon nature resistance action", ACTION_RAID), nullptr)));
//
// Koralon the Flame Watcher
//
triggers.push_back(new TriggerNode(
"koralon fire resistance trigger",
NextAction::array(0, new NextAction("koralon fire resistance action", ACTION_RAID), nullptr)));
}

View File

@@ -19,6 +19,8 @@ public:
creators["emalon lighting nova trigger"] = &RaidVoATriggerContext::emalon_lighting_nova_trigger;
creators["emalon overcharge trigger"] = &RaidVoATriggerContext::emalon_overcharge_trigger;
creators["emalon fall from floor trigger"] = &RaidVoATriggerContext::emalon_fall_from_floor_trigger;
creators["emalon nature resistance trigger"] = &RaidVoATriggerContext::emalon_nature_resistance_trigger;
creators["koralon fire resistance trigger"] = &RaidVoATriggerContext::koralon_fire_resistance_trigger;
}
private:
@@ -26,6 +28,8 @@ private:
static Trigger* emalon_lighting_nova_trigger(PlayerbotAI* ai) { return new EmalonLightingNovaTrigger(ai); }
static Trigger* emalon_overcharge_trigger(PlayerbotAI* ai) { return new EmalonOverchargeTrigger(ai); }
static Trigger* emalon_fall_from_floor_trigger(PlayerbotAI* ai) { return new EmalonFallFromFloorTrigger(ai); }
static Trigger* emalon_nature_resistance_trigger(PlayerbotAI* ai) { return new BossNatureResistanceTrigger(ai, "emalon the storm watcher"); }
static Trigger* koralon_fire_resistance_trigger(PlayerbotAI* ai) { return new BossFireResistanceTrigger(ai, "koralon the flame watcher"); }
};
#endif