mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Merge pull request #15995 from ShinDarth/mmr
Core/Arena: more arena configs
This commit is contained in:
@@ -612,6 +612,8 @@ uint32 ArenaTeam::GetPoints(uint32 memberRating)
|
||||
else if (Type == ARENA_TEAM_3v3)
|
||||
points *= 0.88f;
|
||||
|
||||
points *= sWorld->getRate(RATE_ARENA_POINTS);
|
||||
|
||||
return (uint32) points;
|
||||
}
|
||||
|
||||
@@ -673,7 +675,7 @@ int32 ArenaTeam::GetMatchmakerRatingMod(uint32 ownRating, uint32 opponentRating,
|
||||
*/
|
||||
|
||||
// Real rating modification
|
||||
mod *= 24.0f;
|
||||
mod *= sWorld->getFloatConfig(CONFIG_ARENA_MATCHMAKER_RATING_MODIFIER);
|
||||
|
||||
return (int32)ceil(mod);
|
||||
}
|
||||
@@ -683,21 +685,27 @@ int32 ArenaTeam::GetRatingMod(uint32 ownRating, uint32 opponentRating, bool won
|
||||
// 'Chance' calculation - to beat the opponent
|
||||
// This is a simulation. Not much info on how it really works
|
||||
float chance = GetChanceAgainst(ownRating, opponentRating);
|
||||
float won_mod = (won) ? 1.0f : 0.0f;
|
||||
|
||||
// Calculate the rating modification
|
||||
float mod;
|
||||
|
||||
/// @todo Replace this hack with using the confidence factor (limiting the factor to 2.0f)
|
||||
if (won && ownRating < 1300)
|
||||
if (won)
|
||||
{
|
||||
if (ownRating < 1000)
|
||||
mod = 48.0f * (won_mod - chance);
|
||||
if (ownRating < 1300)
|
||||
{
|
||||
float win_rating_modifier1 = sWorld->getFloatConfig(CONFIG_ARENA_WIN_RATING_MODIFIER_1);
|
||||
|
||||
if (ownRating < 1000)
|
||||
mod = win_rating_modifier1 * (1.0f - chance);
|
||||
else
|
||||
mod = ((win_rating_modifier1 / 2.0f) + ((win_rating_modifier1 / 2.0f) * (1300.0f - float(ownRating)) / 300.0f)) * (1.0f - chance);
|
||||
}
|
||||
else
|
||||
mod = (24.0f + (24.0f * (1300.0f - float(ownRating)) / 300.0f)) * (won_mod - chance);
|
||||
mod = sWorld->getFloatConfig(CONFIG_ARENA_WIN_RATING_MODIFIER_2) * (1.0f - chance);
|
||||
}
|
||||
else
|
||||
mod = 24.0f * (won_mod - chance);
|
||||
mod = sWorld->getFloatConfig(CONFIG_ARENA_LOSE_RATING_MODIFIER) * (-chance);
|
||||
|
||||
return (int32)ceil(mod);
|
||||
}
|
||||
|
||||
@@ -483,6 +483,7 @@ void World::LoadConfigSettings(bool reload)
|
||||
rate_values[RATE_AUCTION_DEPOSIT] = sConfigMgr->GetFloatDefault("Rate.Auction.Deposit", 1.0f);
|
||||
rate_values[RATE_AUCTION_CUT] = sConfigMgr->GetFloatDefault("Rate.Auction.Cut", 1.0f);
|
||||
rate_values[RATE_HONOR] = sConfigMgr->GetFloatDefault("Rate.Honor", 1.0f);
|
||||
rate_values[RATE_ARENA_POINTS] = sConfigMgr->GetFloatDefault("Rate.ArenaPoints", 1.0f);
|
||||
rate_values[RATE_INSTANCE_RESET_TIME] = sConfigMgr->GetFloatDefault("Rate.InstanceResetTime", 1.0f);
|
||||
rate_values[RATE_TALENT] = sConfigMgr->GetFloatDefault("Rate.Talent", 1.0f);
|
||||
if (rate_values[RATE_TALENT] < 0.0f)
|
||||
@@ -1046,6 +1047,10 @@ void World::LoadConfigSettings(bool reload)
|
||||
m_int_configs[CONFIG_ARENA_START_MATCHMAKER_RATING] = sConfigMgr->GetIntDefault ("Arena.ArenaStartMatchmakerRating", 1500);
|
||||
m_bool_configs[CONFIG_ARENA_SEASON_IN_PROGRESS] = sConfigMgr->GetBoolDefault("Arena.ArenaSeason.InProgress", true);
|
||||
m_bool_configs[CONFIG_ARENA_LOG_EXTENDED_INFO] = sConfigMgr->GetBoolDefault("ArenaLog.ExtendedInfo", false);
|
||||
m_float_configs[CONFIG_ARENA_WIN_RATING_MODIFIER_1] = sConfigMgr->GetFloatDefault("Arena.ArenaWinRatingModifier1", 48.0f);
|
||||
m_float_configs[CONFIG_ARENA_WIN_RATING_MODIFIER_2] = sConfigMgr->GetFloatDefault("Arena.ArenaWinRatingModifier2", 24.0f);
|
||||
m_float_configs[CONFIG_ARENA_LOSE_RATING_MODIFIER] = sConfigMgr->GetFloatDefault("Arena.ArenaLoseRatingModifier", 24.0f);
|
||||
m_float_configs[CONFIG_ARENA_MATCHMAKER_RATING_MODIFIER] = sConfigMgr->GetFloatDefault("Arena.ArenaMatchmakerRatingModifier", 24.0f);
|
||||
|
||||
m_bool_configs[CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN] = sConfigMgr->GetBoolDefault("OffhandCheckAtSpellUnlearn", true);
|
||||
|
||||
|
||||
@@ -186,6 +186,10 @@ enum WorldFloatConfigs
|
||||
CONFIG_STATS_LIMITS_PARRY,
|
||||
CONFIG_STATS_LIMITS_BLOCK,
|
||||
CONFIG_STATS_LIMITS_CRIT,
|
||||
CONFIG_ARENA_WIN_RATING_MODIFIER_1,
|
||||
CONFIG_ARENA_WIN_RATING_MODIFIER_2,
|
||||
CONFIG_ARENA_LOSE_RATING_MODIFIER,
|
||||
CONFIG_ARENA_MATCHMAKER_RATING_MODIFIER,
|
||||
FLOAT_CONFIG_VALUE_COUNT
|
||||
};
|
||||
|
||||
@@ -410,6 +414,7 @@ enum Rates
|
||||
RATE_AUCTION_DEPOSIT,
|
||||
RATE_AUCTION_CUT,
|
||||
RATE_HONOR,
|
||||
RATE_ARENA_POINTS,
|
||||
RATE_TALENT,
|
||||
RATE_CORPSE_DECAY_LOOTED,
|
||||
RATE_INSTANCE_RESET_TIME,
|
||||
|
||||
@@ -1938,6 +1938,13 @@ Rate.Auction.Cut = 1
|
||||
|
||||
Rate.Honor = 1
|
||||
|
||||
#
|
||||
# Rate.ArenaPoints
|
||||
# Description: Arena points gain rate.
|
||||
# Default: 1
|
||||
|
||||
Rate.ArenaPoints = 1
|
||||
|
||||
#
|
||||
# Rate.Talent
|
||||
# Description: Talent point rate.
|
||||
@@ -2430,6 +2437,39 @@ Arena.ArenaStartPersonalRating = 0
|
||||
|
||||
Arena.ArenaStartMatchmakerRating = 1500
|
||||
|
||||
#
|
||||
# Arena.ArenaWinRatingModifier1
|
||||
# Description: Modifier of rating addition when winner team rating is less than 1300
|
||||
# be aware that from 1000 to 1300 it gradually decreases automatically down to the half of it
|
||||
# (increasing this value will give more rating)
|
||||
# Default: 48
|
||||
|
||||
Arena.ArenaWinRatingModifier1 = 48
|
||||
|
||||
#
|
||||
# Arena.ArenaWinRatingModifier2
|
||||
# Description: Modifier of rating addition when winner team rating is equal or more than 1300
|
||||
# (increasing this value will give more rating)
|
||||
# Default: 24
|
||||
|
||||
Arena.ArenaWinRatingModifier2 = 24
|
||||
|
||||
|
||||
#
|
||||
# Arena.ArenaLoseRatingModifier
|
||||
# Description: Modifier of rating subtraction for loser team
|
||||
# (increasing this value will subtract more rating)
|
||||
# Default: 24
|
||||
|
||||
Arena.ArenaLoseRatingModifier = 24
|
||||
|
||||
#
|
||||
# Arena.ArenaMatchmakerRatingModifier
|
||||
# Description: Modifier of matchmaker rating
|
||||
# Default: 24
|
||||
|
||||
Arena.ArenaMatchmakerRatingModifier = 24
|
||||
|
||||
#
|
||||
# ArenaLog.ExtendedInfo
|
||||
# Description: Include extended info to ArenaLogFile for each player after rated arena
|
||||
|
||||
Reference in New Issue
Block a user