[Bug Fix] Charm Break Invisibility Fix. (#1855)

- Invisibility vs. Undead and Invisibility vs. Animals were not breaking charm.
- Add Invisibility enumerator.
- Add special identifier for Invisibility vs. Undead and Invisibility vs. Animals.
This commit is contained in:
Kinglykrab
2021-12-01 12:01:19 -05:00
committed by GitHub
parent bc0795bb48
commit 9a0c98397e
4 changed files with 20 additions and 9 deletions
+9 -6
View File
@@ -575,13 +575,16 @@ uint32 Mob::GetAppearanceValue(EmuAppearance iAppearance) {
void Mob::SetInvisible(uint8 state)
{
invisible = state;
SendAppearancePacket(AT_Invis, invisible);
if (state != Invisibility::Special) {
invisible = state;
SendAppearancePacket(AT_Invis, invisible);
}
// Invis and hide breaks charms
auto formerpet = GetPet();
if (formerpet && formerpet->GetPetType() == petCharmed && (invisible || hidden || improved_hidden || invisible_animals || invisible_undead)) {
if (RuleB(Pets, LivelikeBreakCharmOnInvis) || IsInvisible(formerpet)) {
formerpet->BuffFadeByEffect(SE_Charm);
auto pet = GetPet();
if (pet && pet->GetPetType() == petCharmed && (invisible || hidden || improved_hidden || invisible_animals || invisible_undead)) {
if (RuleB(Pets, LivelikeBreakCharmOnInvis) || IsInvisible(pet)) {
pet->BuffFadeByEffect(SE_Charm);
}
LogRules("Pets:LivelikeBreakCharmOnInvis for [{}] | Invis [{}] - Hidden [{}] - Shroud of Stealth [{}] - IVA [{}] - IVU [{}]", GetCleanName(), invisible, hidden, improved_hidden, invisible_animals, invisible_undead);