diff --git a/Glamourer/Interop/MetaService.cs b/Glamourer/Interop/MetaService.cs index 7ed0948..30378a1 100644 --- a/Glamourer/Interop/MetaService.cs +++ b/Glamourer/Interop/MetaService.cs @@ -49,9 +49,9 @@ public unsafe class MetaService : IDisposable if (!actor.IsCharacter) return; - // The function seems to not do anything if the head is 0, sometimes? + // The function seems to not do anything if the head is 0, but also breaks for carbuncles turned human, sometimes? var old = actor.AsCharacter->DrawData.Head.Id; - if (old == 0) + if (old == 0 && actor.AsCharacter->CharacterData.ModelCharaId == 0) actor.AsCharacter->DrawData.Head.Id = 1; _hideHatGearHook.Original(&actor.AsCharacter->DrawData, 0, (byte)(value ? 0 : 1)); actor.AsCharacter->DrawData.Head.Id = old; diff --git a/Glamourer/Interop/WeaponService.cs b/Glamourer/Interop/WeaponService.cs index 7d25d82..389a05f 100644 --- a/Glamourer/Interop/WeaponService.cs +++ b/Glamourer/Interop/WeaponService.cs @@ -68,7 +68,8 @@ public unsafe class WeaponService : IDisposable if (equipSlot is not EquipSlot.Unknown) _event.Invoke(actor, equipSlot, ref tmpWeapon); // Sage hack for weapons appearing in animations? - else if (weaponValue == actor.GetMainhand().Value) + // Check for weapon value 0 for certain cases (e.g. carbuncles transforming to humans) because that breaks some stuff (weapon hiding?) otherwise. + else if (weaponValue == actor.GetMainhand().Value && weaponValue != 0) _event.Invoke(actor, EquipSlot.MainHand, ref tmpWeapon); _loadWeaponHook.Original(drawData, slot, weapon.Value, redrawOnEquality, unk2, skipGameObject, unk4);