more pull tweaks

This commit is contained in:
nytmyr
2024-12-02 09:16:11 -06:00
parent 1af85092f7
commit f12e597ff3
2 changed files with 27 additions and 31 deletions
+20 -30
View File
@@ -2200,15 +2200,28 @@ void Bot::AI_Process()
// PULLING FLAG (ACTIONABLE RANGE)
if (GetPullingFlag()) {
if (!IsBotNonSpellFighter() && !HOLDING && AI_HasSpells()) {
SetPullingSpell(true);
if (!TargetValidation(tar)) { return; }
if (atCombatRange) {
if (RuleB(Bots, AllowRangedPulling) && IsBotRanged() && ranged_timer.Check(false)) {
StopMoving(CalculateHeadingToTarget(tar->GetX(), tar->GetY()));
if (BotRangedAttack(tar) && CheckDoubleRangedAttack()) {
BotRangedAttack(tar, true);
}
ranged_timer.Start();
if (AI_EngagedCastCheck()) {
SetPullingSpell(false);
return;
}
SetPullingSpell(false);
if (RuleB(Bots, AllowAISpellPulling) && !IsBotNonSpellFighter() && AI_HasSpells()) {
SetPullingSpell(true);
AI_EngagedCastCheck();
SetPullingSpell(false);
return;
}
}
if (RuleB(Bots, UseSpellPulling)) {
@@ -2216,38 +2229,15 @@ void Bot::AI_Process()
if (tar_distance <= spells[pullSpell].range) {
StopMoving();
if (!TargetValidation(tar)) { return; }
SetPullingSpell(true);
CastSpell(pullSpell, tar->GetID());
SetPullingSpell(false);
return;
}
}
else {
if (atCombatRange) {
if (RuleB(Bots, AllowRangedPulling) && IsBotRanged() && ranged_timer.Check(false)) {
StopMoving(CalculateHeadingToTarget(tar->GetX(), tar->GetY()));
if (BotRangedAttack(tar) && CheckDoubleRangedAttack()) {
BotRangedAttack(tar, true);
}
ranged_timer.Start();
SetPullingSpell(false);
return;
}
else if (RuleB(Bots, AllowAISpellPulling) && !IsBotNonSpellFighter() && !HOLDING && AI_HasSpells() && AI_EngagedCastCheck()) {
SetPullingSpell(false);
return;
}
}
return;
}
return;
}
// ENGAGED AT COMBAT RANGE
+7 -1
View File
@@ -15,6 +15,12 @@ void bot_command_pull(Client *c, const Seperator *sep)
std::string arg1 = sep->arg[1];
int ab_arg = 1;
std::string actionableArg = sep->arg[ab_arg];
if (actionableArg.empty()) {
actionableArg = "spawned";
}
std::string class_race_arg = sep->arg[ab_arg];
bool class_race_check = false;
@@ -24,7 +30,7 @@ void bot_command_pull(Client *c, const Seperator *sep)
std::list<Bot*> sbl;
if (ActionableBots::PopulateSBL(c, sep->arg[ab_arg], sbl, ab_mask, !class_race_check ? sep->arg[ab_arg + 1] : nullptr, class_race_check ? atoi(sep->arg[ab_arg + 1]) : 0) == ActionableBots::ABT_None) {
if (ActionableBots::PopulateSBL(c, actionableArg, sbl, ab_mask, !class_race_check ? sep->arg[ab_arg + 1] : nullptr, class_race_check ? atoi(sep->arg[ab_arg + 1]) : 0) == ActionableBots::ABT_None) {
return;
}