From 9a519b5cc2768fbb22846767ceb03cf433726331 Mon Sep 17 00:00:00 2001 From: David Cernat Date: Fri, 23 Jun 2017 09:22:48 +0300 Subject: [PATCH] [Client] Avoid incrementing actor death count if we aren't its authority --- apps/openmw/mwmechanics/actors.cpp | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/apps/openmw/mwmechanics/actors.cpp b/apps/openmw/mwmechanics/actors.cpp index c7c2e206c..139538dad 100644 --- a/apps/openmw/mwmechanics/actors.cpp +++ b/apps/openmw/mwmechanics/actors.cpp @@ -1482,7 +1482,20 @@ namespace MWMechanics { iter->first.getClass().getCreatureStats(iter->first).notifyDied(); - ++mDeathCount[Misc::StringUtils::lowerCase(iter->first.getCellRef().getRefId())]; + /* + Start of tes3mp change (major) + + Only increment death count for an actor if we are its authority, to avoid + situations where we increment it locally after having already received an + ID_PLAYER_KILL_COUNT packet about it + */ + bool isLocalActor = mwmp::Main::get().getCellController()->isLocalActor(iter->first); + + if (isLocalActor) + ++mDeathCount[Misc::StringUtils::lowerCase(iter->first.getCellRef().getRefId())]; + /* + End of tes3mp change (major) + */ /* Start of tes3mp addition @@ -1490,7 +1503,7 @@ namespace MWMechanics Send an ID_PLAYER_KILL_COUNT packet every time the kill count changes, as long as we are the authority over the actor's cell */ - if (mwmp::Main::get().getCellController()->isLocalActor(iter->first)) + if (isLocalActor) { std::string refId = Misc::StringUtils::lowerCase(iter->first.getCellRef().getRefId()); int number = mDeathCount[refId];