aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/World
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2022-07-01 15:19:31 +0200
committerShauren <shauren.trinity@gmail.com>2022-07-01 15:19:31 +0200
commit4ac86c13d2b00817c9213ca2c22b747d3fff454e (patch)
treec40dab4bf4ef1211a91e0f5215de2e6ade95901e /src/server/game/World
parentcfca26c2641f684533e07d9933ba1f31e5ef8204 (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.cpp61
-rw-r--r--src/server/game/World/World.h5
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;
};