forked from mirror/openmw-tes3mp
[General] Allow changes from PlayerBaseInfo without player stat reset
This commit is contained in:
parent
34893ff631
commit
73dea494c4
4 changed files with 39 additions and 10 deletions
|
@ -440,13 +440,6 @@ void LocalPlayer::updateCell(bool forceUpdate)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void LocalPlayer::updateChar()
|
|
||||||
{
|
|
||||||
MWBase::Environment::get().getMechanicsManager()->setPlayerRace(npc.mRace, npc.isMale(), npc.mHead, npc.mHair);
|
|
||||||
MWBase::Environment::get().getMechanicsManager()->setPlayerBirthsign(birthsign);
|
|
||||||
MWBase::Environment::get().getWindowManager()->getInventoryWindow()->rebuildAvatar();
|
|
||||||
}
|
|
||||||
|
|
||||||
void LocalPlayer::updateEquipment(bool forceUpdate)
|
void LocalPlayer::updateEquipment(bool forceUpdate)
|
||||||
{
|
{
|
||||||
MWWorld::Ptr ptrPlayer = getPlayerPtr();
|
MWWorld::Ptr ptrPlayer = getPlayerPtr();
|
||||||
|
@ -838,6 +831,40 @@ void LocalPlayer::closeInventoryWindows()
|
||||||
MWBase::Environment::get().getWindowManager()->finishDragDrop();
|
MWBase::Environment::get().getWindowManager()->finishDragDrop();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void LocalPlayer::setCharacter()
|
||||||
|
{
|
||||||
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
||||||
|
|
||||||
|
// Ignore invalid races
|
||||||
|
if (world->getStore().get<ESM::Race>().search(npc.mRace) != 0)
|
||||||
|
{
|
||||||
|
MWBase::Environment::get().getWorld()->getPlayer().setBirthSign(birthsign);
|
||||||
|
|
||||||
|
if (resetStats)
|
||||||
|
MWBase::Environment::get().getMechanicsManager()->setPlayerRace(npc.mRace, npc.isMale(), npc.mHead, npc.mHair);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ESM::NPC player = *world->getPlayerPtr().get<ESM::NPC>()->mBase;
|
||||||
|
|
||||||
|
player.mRace = npc.mRace;
|
||||||
|
player.mHead = npc.mHead;
|
||||||
|
player.mHair = npc.mHair;
|
||||||
|
player.setIsMale(npc.isMale());
|
||||||
|
world->createRecord(player);
|
||||||
|
|
||||||
|
MWBase::Environment::get().getMechanicsManager()->playerLoaded();
|
||||||
|
}
|
||||||
|
|
||||||
|
setEquipment();
|
||||||
|
|
||||||
|
MWBase::Environment::get().getWindowManager()->getInventoryWindow()->rebuildAvatar();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LOG_APPEND(Log::LOG_INFO, "- Character update was ignored due to invalid race %s", npc.mRace.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void LocalPlayer::setDynamicStats()
|
void LocalPlayer::setDynamicStats()
|
||||||
{
|
{
|
||||||
MWBase::World *world = MWBase::Environment::get().getWorld();
|
MWBase::World *world = MWBase::Environment::get().getWorld();
|
||||||
|
|
|
@ -33,7 +33,6 @@ namespace mwmp
|
||||||
void updateReputation(bool forceUpdate = false);
|
void updateReputation(bool forceUpdate = false);
|
||||||
void updatePosition(bool forceUpdate = false);
|
void updatePosition(bool forceUpdate = false);
|
||||||
void updateCell(bool forceUpdate = false);
|
void updateCell(bool forceUpdate = false);
|
||||||
void updateChar();
|
|
||||||
void updateEquipment(bool forceUpdate = false);
|
void updateEquipment(bool forceUpdate = false);
|
||||||
void updateInventory(bool forceUpdate = false);
|
void updateInventory(bool forceUpdate = false);
|
||||||
void updateAttack();
|
void updateAttack();
|
||||||
|
@ -52,6 +51,7 @@ namespace mwmp
|
||||||
|
|
||||||
void closeInventoryWindows();
|
void closeInventoryWindows();
|
||||||
|
|
||||||
|
void setCharacter();
|
||||||
void setDynamicStats();
|
void setDynamicStats();
|
||||||
void setAttributes();
|
void setAttributes();
|
||||||
void setSkills();
|
void setSkills();
|
||||||
|
|
|
@ -32,8 +32,8 @@ namespace mwmp
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG_APPEND(Log::LOG_INFO, "- Updating LocalPlayer");
|
LOG_APPEND(Log::LOG_INFO, "- Setting character for LocalPlayer");
|
||||||
static_cast<LocalPlayer*>(player)->updateChar();
|
static_cast<LocalPlayer*>(player)->setCharacter();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -225,6 +225,7 @@ namespace mwmp
|
||||||
spellbookChanges.action = 0;
|
spellbookChanges.action = 0;
|
||||||
spellbookChanges.count = 0;
|
spellbookChanges.count = 0;
|
||||||
displayCreatureName = false;
|
displayCreatureName = false;
|
||||||
|
resetStats = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
BasePlayer()
|
BasePlayer()
|
||||||
|
@ -285,6 +286,7 @@ namespace mwmp
|
||||||
std::string sound;
|
std::string sound;
|
||||||
Animation animation;
|
Animation animation;
|
||||||
|
|
||||||
|
bool resetStats;
|
||||||
float scale;
|
float scale;
|
||||||
bool isWerewolf;
|
bool isWerewolf;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue