From 11c17ad9d5a98b7f580db45d0f93dc7aa421d6c3 Mon Sep 17 00:00:00 2001 From: Andrei Kortunov Date: Wed, 30 Jan 2019 10:18:48 +0400 Subject: [PATCH] Hide hairs when replace the Head bodypart by item's one in the editor --- apps/opencs/model/world/actoradapter.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apps/opencs/model/world/actoradapter.cpp b/apps/opencs/model/world/actoradapter.cpp index 2c827373d8..0e9b0745c7 100644 --- a/apps/opencs/model/world/actoradapter.cpp +++ b/apps/opencs/model/world/actoradapter.cpp @@ -530,6 +530,10 @@ namespace CSMWorld RaceDataPtr raceData = getRaceData(npc.mRace); data->reset_data(id, "", false, !npc.isMale(), raceData); + // Add head and hair + data->setPart(ESM::PRT_Head, npc.mHead, 0); + data->setPart(ESM::PRT_Hair, npc.mHair, 0); + // Add inventory items for (auto& item : npc.mInventory.mList) { @@ -537,10 +541,6 @@ namespace CSMWorld std::string itemId = item.mItem.toString(); addNpcItem(itemId, data); } - - // Add head and hair - data->setPart(ESM::PRT_Head, npc.mHead, 0); - data->setPart(ESM::PRT_Hair, npc.mHair, 0); } void ActorAdapter::addNpcItem(const std::string& itemId, ActorDataPtr data) @@ -574,6 +574,10 @@ namespace CSMWorld partId = part.mMale; data->setPart(partType, partId, priority); + + // An another vanilla quirk: hide hairs if an item replaces Head part + if (partType == ESM::PRT_Head) + data->setPart(ESM::PRT_Hair, "", priority); } };