1
0
Fork 1
mirror of https://github.com/TES3MP/openmw-tes3mp.git synced 2025-01-21 11:23:51 +00:00

[Client] Fix #533. LocalPlayer.cpp joins neccessary faction only.

This commit is contained in:
Michal Marchewka 2020-02-16 10:44:40 +01:00
parent 4f98d67ed4
commit 44c13154ff

View file

@ -1276,10 +1276,11 @@ void LocalPlayer::setFactions()
MWWorld::Ptr ptrPlayer = getPlayerPtr();
MWMechanics::NpcStats &ptrNpcStats = ptrPlayer.getClass().getNpcStats(ptrPlayer);
LOG_MESSAGE_SIMPLE(TimedLog::LOG_INFO, "Received ID_PLAYER_FACTION from server\n- action: %i", factionChanges.action);
LOG_MESSAGE_SIMPLE(TimedLog::LOG_INFO, "Received ID_PLAYER_FACTION from server - action: %i", factionChanges.action);
for (const auto &faction : factionChanges.factions)
{
LOG_APPEND(TimedLog::LOG_VERBOSE, " - processing faction: %s", faction.factionId.c_str());
const ESM::Faction *esmFaction = MWBase::Environment::get().getWorld()->getStore().get<ESM::Faction>().search(faction.factionId);
if (!esmFaction)
@ -1288,12 +1289,17 @@ void LocalPlayer::setFactions()
continue;
}
// If the player isn't in this faction, make them join it
if (!ptrNpcStats.isInFaction(faction.factionId))
ptrNpcStats.joinFaction(faction.factionId);
if (factionChanges.action == mwmp::FactionChanges::RANK)
{
if (!ptrNpcStats.isInFaction(faction.factionId))
{
// If the player isn't in this faction, make them join it
ptrNpcStats.joinFaction(faction.factionId);
LOG_APPEND(TimedLog::LOG_VERBOSE, "\t>JOINED FACTION: %s on rank change to: %d.",
faction.factionId.c_str(), faction.rank);
}
// While the faction rank is different in the packet than in the NpcStats,
// adjust the NpcStats accordingly
while (faction.rank != ptrNpcStats.getFactionRanks().at(faction.factionId))