diff --git a/zone/entity.cpp b/zone/entity.cpp index 8630cbfcf..28bb5e144 100644 --- a/zone/entity.cpp +++ b/zone/entity.cpp @@ -1514,9 +1514,7 @@ void EntityList::RemoveFromTargets(Mob *mob, bool RemoveFromXTargets) mob->CastToClient()->RemoveXTarget(m, false); } - if (m->IsAIControlled()) { - m->RemoveFromHateList(mob); - } + m->RemoveFromHateList(mob); } } diff --git a/zone/mob.cpp b/zone/mob.cpp index 51fa71d4a..a60a9f563 100644 --- a/zone/mob.cpp +++ b/zone/mob.cpp @@ -2875,7 +2875,7 @@ bool Mob::RemoveFromHateList(Mob* mob) ResetAssistCap(); } } - if(IsAIControlled() && GetTarget() == mob) + if(GetTarget() == mob) { SetTarget(hate_list.GetEntWithMostHateOnList(this)); } diff --git a/zone/spell_effects.cpp b/zone/spell_effects.cpp index 3a4a59490..2aa4e92da 100644 --- a/zone/spell_effects.cpp +++ b/zone/spell_effects.cpp @@ -731,27 +731,6 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove if (!caster) // can't be someone's pet unless we know who that someone is break; - if (IsClient() && caster->IsClient()) { - caster->Message(Chat::White, "Unable to cast charm on a fellow player."); - BuffFadeByEffect(SE_Charm); - break; - } - else if (IsCorpse()) { - caster->Message(Chat::White, "Unable to cast charm on a corpse."); - BuffFadeByEffect(SE_Charm); - break; - } - else if (caster->GetPet() != nullptr && caster->IsClient()) { - caster->Message(Chat::White, "You cannot charm something when you already have a pet."); - BuffFadeByEffect(SE_Charm); - break; - } - else if (GetOwner()) { - caster->Message(Chat::White, "You cannot charm someone else's pet!"); - BuffFadeByEffect(SE_Charm); - break; - } - if(IsNPC()) { CastToNPC()->SaveGuardSpotCharm(); @@ -760,7 +739,25 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove entity_list.RemoveDebuffs(this); entity_list.RemoveFromTargets(this); WipeHateList(); - + + if (IsClient() && caster->IsClient()) { + caster->Message(Chat::White, "Unable to cast charm on a fellow player."); + BuffFadeByEffect(SE_Charm); + break; + } else if(IsCorpse()) { + caster->Message(Chat::White, "Unable to cast charm on a corpse."); + BuffFadeByEffect(SE_Charm); + break; + } else if(caster->GetPet() != nullptr && caster->IsClient()) { + caster->Message(Chat::White, "You cannot charm something when you already have a pet."); + BuffFadeByEffect(SE_Charm); + break; + } else if(GetOwner()) { + caster->Message(Chat::White, "You cannot charm someone else's pet!"); + BuffFadeByEffect(SE_Charm); + break; + } + Mob *my_pet = GetPet(); if(my_pet) {