From f52364e05c91c5c2094d62abb2be70d60e4f89e9 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Thu, 26 Jul 2018 21:08:12 +0300 Subject: [PATCH] [Client] Always create new references for new creature disguises Previously, attempts to reuse the same reference for multiple creature disguises led to movement animation issues, as well as a dynamic_cast error in Creature::getInventoryStore() that made a DedicatedPlayer vanish completely when they first lost their creature disguise, then disguised themselves as a creature that could not hold weapons and then disguised themselves as a creature that could hold weapons. --- apps/openmw/mwmp/DedicatedPlayer.cpp | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/apps/openmw/mwmp/DedicatedPlayer.cpp b/apps/openmw/mwmp/DedicatedPlayer.cpp index 960cafaa9..9d7cb93b4 100644 --- a/apps/openmw/mwmp/DedicatedPlayer.cpp +++ b/apps/openmw/mwmp/DedicatedPlayer.cpp @@ -186,10 +186,7 @@ void DedicatedPlayer::setShapeshift() { if (!creatureRefId.empty() && RecordHelper::doesCreatureExist(creatureRefId)) { - if (isNpc) - { - deleteReference(); - } + deleteReference(); const ESM::Creature *tmpCreature = world->getStore().get().search(creatureRefId); creature = *tmpCreature; @@ -211,15 +208,8 @@ void DedicatedPlayer::setShapeshift() RecordHelper::overrideCreatureRecord(creature); } - if (!reference) - { - LOG_APPEND(Log::LOG_INFO, "- Creating reference for %s", creature.mId.c_str()); - createReference(creature.mId); - } - else - { - reloadPtr(); - } + LOG_APPEND(Log::LOG_INFO, "- Creating reference for %s", creature.mId.c_str()); + createReference(creature.mId); } // This player was already a creature, but the new creature refId was empty or // invalid, so we'll turn this player into their NPC self again as a result