From f33ed3d4cd53717c60dedaf8ce467b0aa34f3d8e Mon Sep 17 00:00:00 2001 From: nytmyr <53322305+nytmyr@users.noreply.github.com> Date: Tue, 17 Dec 2024 13:09:22 -0600 Subject: [PATCH] more blocked buff tweaks --- zone/bot.cpp | 31 ++++++++++++++++++++----------- zone/bot.h | 4 ++-- zone/spells.cpp | 6 ++++-- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/zone/bot.cpp b/zone/bot.cpp index 70a57cf6a..0c5a77b25 100644 --- a/zone/bot.cpp +++ b/zone/bot.cpp @@ -9585,22 +9585,31 @@ bool Bot::CastChecks(uint16 spell_id, Mob* tar, uint16 spellType, bool doPrechec return false; } - if (RuleB(Spells, EnableBlockedBuffs) && IsBeneficialSpell(spell_id) && tar->IsClient() && tar->IsBlockedBuff(spell_id)) { - LogBotPreChecksDetail("{} says, 'Cancelling cast of {} on {} due to IsBlockedBuff.'", GetCleanName(), GetSpellName(spell_id), tar->GetCleanName()); //deleteme - return false; - } - - if (RuleB(Bots, AllowBotBlockedBuffs) && IsBeneficialSpell(spell_id)) { - if (tar->IsBot() && tar->IsBlockedBuff(spell_id)) { - LogBotPreChecksDetail("{} says, 'Cancelling cast of {} on {} due to IsBlockedBuff.'", GetCleanName(), GetSpellName(spell_id), tar->GetCleanName()); //deleteme - return false; - } - else if (tar->IsPet() && tar->GetOwner() && tar->GetOwner()->IsBot() && tar->GetOwner()->IsBlockedPetBuff(spell_id)) { + if ( + IsBeneficialSpell(spell_id) && + ( + (RuleB(Spells, EnableBlockedBuffs) && tar->IsClient()) || + (RuleB(Bots, AllowBotBlockedBuffs) && tar->IsBot()) + ) + ) { + if (tar->IsBlockedBuff(spell_id)) { LogBotPreChecksDetail("{} says, 'Cancelling cast of {} on {} due to IsBlockedPetBuff.'", GetCleanName(), GetSpellName(spell_id), tar->GetCleanName()); //deleteme return false; } } + if ( + IsBeneficialSpell(spell_id) && tar->IsPet() && + ( + (RuleB(Spells, EnableBlockedBuffs) && tar->GetOwner() && tar->GetOwner()->IsClient()) || + (RuleB(Bots, AllowBotBlockedBuffs) && tar->GetOwner() && tar->GetOwner()->IsBot()) + ) + ) { + if (tar->GetOwner()->IsBlockedPetBuff(spell_id)) { + LogBotPreChecksDetail("{} says, 'Cancelling cast of {} on {} due to IsBlockedPetBuff.'", GetCleanName(), GetSpellName(spell_id), tar->GetCleanName()); //deleteme + return false; + } + } LogBotPreChecksDetail("{} says, 'Doing CanCastSpellType checks of {} on {}.'", GetCleanName(), GetSpellName(spell_id), tar->GetCleanName()); //deleteme if (!CanCastSpellType(spellType, spell_id, tar)) { return false; diff --git a/zone/bot.h b/zone/bot.h index cffadc4d3..20a2c479e 100644 --- a/zone/bot.h +++ b/zone/bot.h @@ -480,8 +480,8 @@ public: uint16 GetSpellByAA(int id, AA::Rank* &rank); void CleanBotBlockedBuffs(); void ClearBotBlockedBuffs() { bot_blocked_buffs.clear(); } - bool IsBlockedBuff(int32 spell_id) override; //TODO bot rewrite - fix these to call from mob.h - bool IsBlockedPetBuff(int32 spell_id) override; //TODO bot rewrite - fix these to call from mob.h + bool IsBlockedBuff(int32 spell_id) override; + bool IsBlockedPetBuff(int32 spell_id) override; void SetBotBlockedBuff(uint16 spell_id, bool block); void SetBotBlockedPetBuff(uint16 spell_id, bool block); diff --git a/zone/spells.cpp b/zone/spells.cpp index 4b5aa8fc4..2cb4151d7 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -4081,8 +4081,10 @@ bool Mob::SpellOnTarget( // now check if the spell is allowed to land if ( - (!spelltar->IsBot() && RuleB(Spells, EnableBlockedBuffs)) || - (spelltar->IsBot() && RuleB(Bots, AllowBotBlockedBuffs)) + (RuleB(Spells, EnableBlockedBuffs) && spelltar->IsClient()) || + (RuleB(Spells, EnableBlockedBuffs) && spelltar->IsPet() && spelltar->GetOwner() && spelltar->GetOwner()->IsClient()) || + (RuleB(Bots, AllowBotBlockedBuffs) && spelltar->IsBot()) || + (RuleB(Bots, AllowBotBlockedBuffs) && spelltar->IsPet() && spelltar->GetOwner() && spelltar->GetOwner()->IsBot()) ) { // We return true here since the caster's client should act like normal if (spelltar->IsBlockedBuff(spell_id)) {