[Charm] Push up fragments of Kayen's PR back up (#1659)

This commit is contained in:
Chris Miles 2021-10-31 00:04:48 -05:00 committed by GitHub
parent 1231d44b55
commit 9e7a763482
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -728,11 +728,32 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove
snprintf(effect_desc, _EDLEN, "Charm: %+i (up to lvl %d)", effect_value, spell.max[i]); snprintf(effect_desc, _EDLEN, "Charm: %+i (up to lvl %d)", effect_value, spell.max[i]);
#endif #endif
if (!caster) // can't be someone's pet unless we know who that someone is if (!caster) { // can't be someone's pet unless we know who that someone is
break; break;
}
if(IsNPC()) 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(); CastToNPC()->SaveGuardSpotCharm();
} }
InterruptSpell(); InterruptSpell();
@ -740,24 +761,6 @@ bool Mob::SpellEffect(Mob* caster, uint16 spell_id, float partial, int level_ove
entity_list.RemoveFromTargets(this); entity_list.RemoveFromTargets(this);
WipeHateList(); 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(); Mob *my_pet = GetPet();
if(my_pet) if(my_pet)
{ {