diff --git a/apps/openmw/mwmp/LocalPlayer.cpp b/apps/openmw/mwmp/LocalPlayer.cpp index 214821eda..46ea85915 100644 --- a/apps/openmw/mwmp/LocalPlayer.cpp +++ b/apps/openmw/mwmp/LocalPlayer.cpp @@ -841,7 +841,10 @@ void LocalPlayer::setCharacter() MWBase::Environment::get().getWorld()->getPlayer().setBirthSign(birthsign); if (resetStats) + { MWBase::Environment::get().getMechanicsManager()->setPlayerRace(npc.mRace, npc.isMale(), npc.mHead, npc.mHair); + setEquipment(); + } else { ESM::NPC player = *world->getPlayerPtr().get()->mBase; @@ -855,8 +858,6 @@ void LocalPlayer::setCharacter() MWBase::Environment::get().getMechanicsManager()->playerLoaded(); } - setEquipment(); - MWBase::Environment::get().getWindowManager()->getInventoryWindow()->rebuildAvatar(); } else @@ -1103,7 +1104,11 @@ void LocalPlayer::setEquipment() } } else - ptrInventory.equip(slot, it, ptrPlayer); + { + // Don't try to equip an item that is already equipped + if (!ptrInventory.getSlot(slot).isEqual(it)) + ptrInventory.equip(slot, it, ptrPlayer); + } } else ptrInventory.unequipSlot(slot, ptrPlayer);