diff --git a/Penumbra.GameData b/Penumbra.GameData index e9fc5930..e39a04c8 160000 --- a/Penumbra.GameData +++ b/Penumbra.GameData @@ -1 +1 @@ -Subproject commit e9fc5930a9c035c1e1e3c87ee9bcc4f05eb3015b +Subproject commit e39a04c83b67246580492677414888357b5ebed8 diff --git a/Penumbra/Interop/ResourceTree/ResolveContext.PathResolution.cs b/Penumbra/Interop/ResourceTree/ResolveContext.PathResolution.cs index 79f97881..b1cbb74d 100644 --- a/Penumbra/Interop/ResourceTree/ResolveContext.PathResolution.cs +++ b/Penumbra/Interop/ResourceTree/ResolveContext.PathResolution.cs @@ -36,17 +36,16 @@ internal partial record ResolveContext private Utf8GamePath ResolveEquipmentModelPath() { var path = IsEquipmentSlot(SlotIndex) - ? GamePaths.Equipment.Mdl.Path(Equipment.Set, ResolveModelRaceCode(), Slot.ToSlot()) + ? GamePaths.Equipment.Mdl.Path(Equipment.Set, ResolveModelRaceCode(), SlotIndex.ToEquipSlot()) : GamePaths.Accessory.Mdl.Path(Equipment.Set, ResolveModelRaceCode(), SlotIndex.ToEquipSlot()); return Utf8GamePath.FromString(path, out var gamePath) ? gamePath : Utf8GamePath.Empty; } private GenderRace ResolveModelRaceCode() - => ResolveEqdpRaceCode(Slot.ToSlot(), Equipment.Set); + => ResolveEqdpRaceCode(SlotIndex, Equipment.Set); - private unsafe GenderRace ResolveEqdpRaceCode(EquipSlot slot, PrimaryId primaryId) + private unsafe GenderRace ResolveEqdpRaceCode(uint slotIndex, PrimaryId primaryId) { - var slotIndex = slot.ToIndex(); if (!IsEquipmentOrAccessorySlot(slotIndex) || ModelType != ModelType.Human) return GenderRace.MidlanderMale; @@ -61,6 +60,7 @@ internal partial record ResolveContext var metaCache = Global.Collection.MetaCache; var entry = metaCache?.GetEqdpEntry(characterRaceCode, accessory, primaryId) ?? ExpandedEqdpFile.GetDefault(Global.MetaFileManager, characterRaceCode, accessory, primaryId); + var slot = slotIndex.ToEquipSlot(); if (entry.ToBits(slot).Item2) return characterRaceCode; @@ -272,7 +272,7 @@ internal partial record ResolveContext { var human = (Human*)CharacterBase; var equipment = ((CharacterArmor*)&human->Head)[slot.ToIndex()]; - return ResolveHumanExtraSkeletonData(ResolveEqdpRaceCode(slot, equipment.Set), type, equipment.Set); + return ResolveHumanExtraSkeletonData(ResolveEqdpRaceCode(slot.ToIndex(), equipment.Set), type, equipment.Set); } private (GenderRace RaceCode, string Slot, PrimaryId Set) ResolveHumanExtraSkeletonData(GenderRace raceCode, EstType type,