[Bug Fix] Fix Sympathetic Procs for Bots/Mercenariess (#4086)

# Notes
- Bots and Mercenaries were being rejected at the top of this method despite us allowing them to use this method where it's called.
This commit is contained in:
Alex King 2024-02-19 03:21:47 -05:00 committed by GitHub
parent 3f46210639
commit 4ad46b54df
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -6046,38 +6046,52 @@ bool Mob::TryFadeEffect(int slot)
void Mob::TrySympatheticProc(Mob* target, uint32 spell_id) void Mob::TrySympatheticProc(Mob* target, uint32 spell_id)
{ {
if(target == nullptr || !IsValidSpell(spell_id) || !IsClient()) if (!target || !IsValidSpell(spell_id) || !IsOfClientBotMerc()) {
return; return;
}
uint16 focus_spell = GetSympatheticFocusEffect(focusSympatheticProc,spell_id); const uint16 focus_spell = GetSympatheticFocusEffect(focusSympatheticProc, spell_id);
if(!IsValidSpell(focus_spell)) if (!IsValidSpell(focus_spell)) {
return; return;
}
uint16 focus_trigger = GetSympatheticSpellProcID(focus_spell); const uint16 focus_trigger = GetSympatheticSpellProcID(focus_spell);
if(!IsValidSpell(focus_trigger)) if (!IsValidSpell(focus_trigger)) {
return; return;
}
if (IsBeneficialSpell(spell_id)) {
// For beneficial spells, if the triggered spell is also beneficial then proc it on the target // For beneficial spells, if the triggered spell is also beneficial then proc it on the target
// if the triggered spell is detrimental, then it will trigger on the caster(ie cursed items) // if the triggered spell is detrimental, then it will trigger on the caster(ie cursed items)
if(IsBeneficialSpell(spell_id)) if (IsBeneficialSpell(focus_trigger)) {
{
if(IsBeneficialSpell(focus_trigger))
SpellFinished(focus_trigger, target); SpellFinished(focus_trigger, target);
} else {
else SpellFinished(
SpellFinished(focus_trigger, this, EQ::spells::CastingSlot::Item, 0, -1, spells[focus_trigger].resist_difficulty); focus_trigger,
this,
EQ::spells::CastingSlot::Item,
0,
-1,
spells[focus_trigger].resist_difficulty
);
} }
} else {
// For detrimental spells, if the triggered spell is beneficial, then it will land on the caster // For detrimental spells, if the triggered spell is beneficial, then it will land on the caster
// if the triggered spell is also detrimental, then it will land on the target // if the triggered spell is also detrimental, then it will land on the target
else if (IsBeneficialSpell(focus_trigger)) {
{
if(IsBeneficialSpell(focus_trigger))
SpellFinished(focus_trigger, this); SpellFinished(focus_trigger, this);
} else {
else SpellFinished(
SpellFinished(focus_trigger, target, EQ::spells::CastingSlot::Item, 0, -1, spells[focus_trigger].resist_difficulty); focus_trigger,
target,
EQ::spells::CastingSlot::Item,
0,
-1,
spells[focus_trigger].resist_difficulty
);
}
} }
CheckNumHitsRemaining(NumHit::MatchingSpells, -1, focus_spell); CheckNumHitsRemaining(NumHit::MatchingSpells, -1, focus_spell);