mirror of
https://github.com/mod-playerbots/mod-playerbots.git
synced 2026-02-16 08:36:10 +00:00
# Pull Request Brighton caught a mistake I made changeing the action registry, so the correct action was no longer triggering. I cleaned that up, and renamed the action. ## How to Test the Changes - This was tested by adding logging to both equip actions. But to test this without that, the best way to verify the fix is to stop alts from auto upgrading via config. Then they should correctly follow the configured behavior. ## 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: - AI tool or model used (e.g. ChatGPT, GPT-4, Claude, etc.) - Purpose of usage (e.g. brainstorming, refactoring, documentation, code generation) - Which parts of the change were influenced or generated - Whether the result was manually reviewed and adapted AI assistance is allowed, but all submitted code must be fully understood, reviewed, and owned by the contributor. Any AI-influenced changes must be verified against existing CORE and PB logic. We expect contributors to be honest about what they do and do not understand. --- ## 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 --- ## Notes for Reviewers Anything that significantly improves realism at the cost of stability or performance should be carefully discussed before merging.
66 lines
2.7 KiB
C++
66 lines
2.7 KiB
C++
/*
|
|
* Copyright (C) 2016+ AzerothCore <www.azerothcore.org>, released under GNU AGPL v3 license, you may redistribute it
|
|
* and/or modify it under version 3 of the License, or (at your option), any later version.
|
|
*/
|
|
|
|
#include "GenericHunterNonCombatStrategy.h"
|
|
|
|
#include "Playerbots.h"
|
|
|
|
class GenericHunterNonCombatStrategyActionNodeFactory : public NamedObjectFactory<ActionNode>
|
|
{
|
|
public:
|
|
GenericHunterNonCombatStrategyActionNodeFactory()
|
|
{
|
|
creators["rapid fire"] = &rapid_fire;
|
|
creators["boost"] = &rapid_fire;
|
|
creators["aspect of the pack"] = &aspect_of_the_pack;
|
|
}
|
|
|
|
private:
|
|
static ActionNode* rapid_fire([[maybe_unused]] PlayerbotAI* botAI)
|
|
{
|
|
return new ActionNode("rapid fire",
|
|
/*P*/ {},
|
|
/*A*/ { NextAction("readiness")},
|
|
/*C*/ {});
|
|
}
|
|
|
|
static ActionNode* aspect_of_the_pack([[maybe_unused]] PlayerbotAI* botAI)
|
|
{
|
|
return new ActionNode("aspect of the pack",
|
|
/*P*/ {},
|
|
/*A*/ { NextAction("aspect of the cheetah")},
|
|
/*C*/ {});
|
|
}
|
|
};
|
|
|
|
GenericHunterNonCombatStrategy::GenericHunterNonCombatStrategy(PlayerbotAI* botAI) : NonCombatStrategy(botAI)
|
|
{
|
|
actionNodeFactories.Add(new GenericHunterNonCombatStrategyActionNodeFactory());
|
|
}
|
|
|
|
void GenericHunterNonCombatStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|
{
|
|
NonCombatStrategy::InitTriggers(triggers);
|
|
|
|
triggers.push_back(new TriggerNode("trueshot aura", { NextAction("trueshot aura", 2.0f)}));
|
|
triggers.push_back(new TriggerNode("often", {
|
|
NextAction("apply stone", 1.0f),
|
|
NextAction("apply oil", 1.0f),
|
|
}));
|
|
triggers.push_back(new TriggerNode("low ammo", { NextAction("say::low ammo", ACTION_NORMAL)}));
|
|
triggers.push_back(new TriggerNode("no track", { NextAction("track humanoids", ACTION_NORMAL)}));
|
|
triggers.push_back(new TriggerNode("no ammo", { NextAction("equip upgrades packet action", ACTION_HIGH + 1)}));
|
|
}
|
|
|
|
void HunterPetStrategy::InitTriggers(std::vector<TriggerNode*>& triggers)
|
|
{
|
|
triggers.push_back(new TriggerNode("no pet", { NextAction("call pet", 60.0f)}));
|
|
triggers.push_back(new TriggerNode("has pet", { NextAction("toggle pet spell", 60.0f)}));
|
|
triggers.push_back(new TriggerNode("new pet", { NextAction("set pet stance", 60.0f)}));
|
|
triggers.push_back(new TriggerNode("pet not happy", { NextAction("feed pet", 60.0f)}));
|
|
triggers.push_back(new TriggerNode("hunters pet medium health", { NextAction("mend pet", 60.0f)}));
|
|
triggers.push_back(new TriggerNode("hunters pet dead", { NextAction("revive pet", 60.0f)}));
|
|
}
|