diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-07-01 15:19:31 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-07-01 15:19:31 +0200 |
| commit | 4ac86c13d2b00817c9213ca2c22b747d3fff454e (patch) | |
| tree | c40dab4bf4ef1211a91e0f5215de2e6ade95901e /src/server/game/World | |
| parent | cfca26c2641f684533e07d9933ba1f31e5ef8204 (diff) | |
Core/WorldStates: Migrate war mode bonus value worldstates to new system
Diffstat (limited to 'src/server/game/World')
| -rw-r--r-- | src/server/game/World/World.cpp | 61 | ||||
| -rw-r--r-- | src/server/game/World/World.h | 5 |
2 files changed, 34 insertions, 32 deletions
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 94b36940189..17247bde9d7 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -160,9 +160,6 @@ World::World() _guidAlert = false; _warnDiff = 0; _warnShutdownTime = GameTime::GetGameTime(); - - _warModeDominantFaction = TEAM_NEUTRAL; - _warModeOutnumberedFactionReward = 0; } /// World destructor @@ -2248,6 +2245,10 @@ void World::SetInitialWorldSettings() TC_LOG_INFO("server.loading", "Loading World States..."); // must be loaded before battleground, outdoor PvP and conditions LoadWorldStates(); + // TODO: this is temporary until custom world states are purged from old world state saved values + sWorldStateMgr->SetValue(WS_WAR_MODE_HORDE_BUFF_VALUE, getWorldState(WS_WAR_MODE_HORDE_BUFF_VALUE), nullptr); + sWorldStateMgr->SetValue(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, getWorldState(WS_WAR_MODE_ALLIANCE_BUFF_VALUE), nullptr); + sObjectMgr->LoadPhases(); TC_LOG_INFO("server.loading", "Loading Conditions..."); @@ -2494,8 +2495,12 @@ void World::SetInitialWorldSettings() void World::SetForcedWarModeFactionBalanceState(TeamId team, int32 reward) { - _warModeDominantFaction = team; - _warModeOutnumberedFactionReward = reward; + sWorldStateMgr->SetValue(WS_WAR_MODE_HORDE_BUFF_VALUE, 10 + (team == TEAM_ALLIANCE ? reward : 0), nullptr); + sWorldStateMgr->SetValue(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, 10 + (team == TEAM_HORDE ? reward : 0), nullptr); + + // save to db + setWorldState(WS_WAR_MODE_HORDE_BUFF_VALUE, sWorldStateMgr->GetValue(WS_WAR_MODE_HORDE_BUFF_VALUE, nullptr)); + setWorldState(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, sWorldStateMgr->GetValue(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, nullptr)); } void World::DisableForcedWarModeFactionBalanceState() @@ -3919,33 +3924,35 @@ void World::UpdateWarModeRewardValues() } while (result->NextRow()); } - _warModeDominantFaction = TEAM_NEUTRAL; - _warModeOutnumberedFactionReward = 0; - - if (std::all_of(warModeEnabledFaction.begin(), warModeEnabledFaction.end(), [](int64 val) { return val == 0; })) - return; - - int64 dominantFactionCount = warModeEnabledFaction[TEAM_ALLIANCE]; TeamId dominantFaction = TEAM_ALLIANCE; - if (warModeEnabledFaction[TEAM_ALLIANCE] < warModeEnabledFaction[TEAM_HORDE]) + int32 outnumberedFactionReward = 0; + + if (std::any_of(warModeEnabledFaction.begin(), warModeEnabledFaction.end(), [](int64 val) { return val != 0; })) { - dominantFactionCount = warModeEnabledFaction[TEAM_HORDE]; - dominantFaction = TEAM_HORDE; - } + int64 dominantFactionCount = warModeEnabledFaction[TEAM_ALLIANCE]; + if (warModeEnabledFaction[TEAM_ALLIANCE] < warModeEnabledFaction[TEAM_HORDE]) + { + dominantFactionCount = warModeEnabledFaction[TEAM_HORDE]; + dominantFaction = TEAM_HORDE; + } - double total = warModeEnabledFaction[TEAM_ALLIANCE] + warModeEnabledFaction[TEAM_HORDE]; - double pct = dominantFactionCount / total; + double total = warModeEnabledFaction[TEAM_ALLIANCE] + warModeEnabledFaction[TEAM_HORDE]; + double pct = dominantFactionCount / total; - if (pct >= sWorld->getFloatConfig(CONFIG_CALL_TO_ARMS_20_PCT)) - _warModeOutnumberedFactionReward = 20; - else if (pct >= sWorld->getFloatConfig(CONFIG_CALL_TO_ARMS_10_PCT)) - _warModeOutnumberedFactionReward = 10; - else if (pct >= sWorld->getFloatConfig(CONFIG_CALL_TO_ARMS_5_PCT)) - _warModeOutnumberedFactionReward = 5; - else - return; + if (pct >= sWorld->getFloatConfig(CONFIG_CALL_TO_ARMS_20_PCT)) + outnumberedFactionReward = 20; + else if (pct >= sWorld->getFloatConfig(CONFIG_CALL_TO_ARMS_10_PCT)) + outnumberedFactionReward = 10; + else if (pct >= sWorld->getFloatConfig(CONFIG_CALL_TO_ARMS_5_PCT)) + outnumberedFactionReward = 5; + } + + sWorldStateMgr->SetValue(WS_WAR_MODE_HORDE_BUFF_VALUE, 10 + (dominantFaction == TEAM_ALLIANCE ? outnumberedFactionReward : 0), nullptr); + sWorldStateMgr->SetValue(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, 10 + (dominantFaction == TEAM_HORDE ? outnumberedFactionReward : 0), nullptr); - _warModeDominantFaction = dominantFaction; + // save to db + setWorldState(WS_WAR_MODE_HORDE_BUFF_VALUE, sWorldStateMgr->GetValue(WS_WAR_MODE_HORDE_BUFF_VALUE, nullptr)); + setWorldState(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, sWorldStateMgr->GetValue(WS_WAR_MODE_ALLIANCE_BUFF_VALUE, nullptr)); } Realm realm; diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index eb49382921f..70634f51a42 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -805,8 +805,6 @@ class TC_GAME_API World bool IsGuidAlert() { return _guidAlert; } // War mode balancing - TeamId GetWarModeDominantFaction() const { return _warModeDominantFaction; } - int32 GetWarModeOutnumberedFactionReward() const { return _warModeOutnumberedFactionReward; } void SetForcedWarModeFactionBalanceState(TeamId team, int32 reward = 0); void DisableForcedWarModeFactionBalanceState(); @@ -938,9 +936,6 @@ class TC_GAME_API World // War mode balancing void UpdateWarModeRewardValues(); - TeamId _warModeDominantFaction; // the team that has higher percentage - int32 _warModeOutnumberedFactionReward; - friend class debug_commandscript; }; |
