111 lines
3.7 KiB
Plaintext
111 lines
3.7 KiB
Plaintext
#include common_scripts\utility;
|
|
|
|
main()
|
|
{
|
|
replacefunc( maps\mp\gametypes\_rank::init, ::init_stub );
|
|
replacefunc( maps\mp\gametypes\_rank::syncxpstat, ::syncxpstat_stub );
|
|
|
|
replacefunc( common_scripts\utility::set_trigger_flag_permissions, ::set_trigger_flag_permissions_stub );
|
|
}
|
|
|
|
init_stub()
|
|
{
|
|
level.scoreinfo = [];
|
|
level.xpscale = getdvarint( "scr_xpscale" );
|
|
|
|
level.xpscale = max( level.xpscale, 1 );
|
|
level.teamxpscale["axis"] = 1;
|
|
level.teamxpscale["allies"] = 1;
|
|
level.ranktable = [];
|
|
level.weaponranktable = [];
|
|
level.maxrank = int( tablelookup( "mp/rankTable.csv", 0, "maxrank", 1 ) );
|
|
level.maxprestige = int( tablelookup( "mp/rankTable.csv", 0, "maxprestige", 1 ) );
|
|
level.maxforbotmatch = getdvarint( "max_xp_per_match", 0 );
|
|
var_0 = 0;
|
|
var_1 = 0;
|
|
|
|
for ( var_0 = 0; var_0 <= min( 10, level.maxprestige ); var_0++ )
|
|
{
|
|
for ( var_1 = 0; var_1 <= level.maxrank; var_1++ )
|
|
precacheshader( tablelookup( "mp/rankIconTable.csv", 0, var_1, var_0 + 1 ) );
|
|
}
|
|
|
|
var_2 = 0;
|
|
|
|
for ( var_3 = tablelookup( "mp/rankTable.csv", 0, var_2, 1 ); isdefined( var_3 ) && var_3 != ""; var_3 = tablelookup( "mp/rankTable.csv", 0, var_2, 1 ) )
|
|
{
|
|
level.ranktable[var_2][1] = tablelookup( "mp/rankTable.csv", 0, var_2, 1 );
|
|
level.ranktable[var_2][2] = tablelookup( "mp/rankTable.csv", 0, var_2, 2 );
|
|
level.ranktable[var_2][3] = tablelookup( "mp/rankTable.csv", 0, var_2, 3 );
|
|
level.ranktable[var_2][7] = tablelookup( "mp/rankTable.csv", 0, var_2, 7 );
|
|
precachestring( tablelookupistring( "mp/rankTable.csv", 0, var_2, 16 ) );
|
|
var_2++;
|
|
}
|
|
|
|
var_4 = int( tablelookup( "mp/weaponRankTable.csv", 0, "maxrank", 1 ) );
|
|
|
|
for ( var_5 = 0; var_5 < var_4 + 1; var_5++ )
|
|
{
|
|
level.weaponranktable[var_5][1] = tablelookup( "mp/weaponRankTable.csv", 0, var_5, 1 );
|
|
level.weaponranktable[var_5][2] = tablelookup( "mp/weaponRankTable.csv", 0, var_5, 2 );
|
|
level.weaponranktable[var_5][3] = tablelookup( "mp/weaponRankTable.csv", 0, var_5, 3 );
|
|
}
|
|
|
|
maps\mp\gametypes\_missions::buildchallegeinfo();
|
|
level thread maps\mp\gametypes\_rank::patientzerowaiter();
|
|
level thread maps\mp\gametypes\_rank::onplayerconnect();
|
|
}
|
|
|
|
syncxpstat_stub()
|
|
{
|
|
var_0 = maps\mp\gametypes\_rank::getrankxp();
|
|
var_1 = self.pers["activeSquadMember"];
|
|
|
|
/#
|
|
// Attempt to catch xp regression
|
|
old_xp = self getrankedplayerdata( "squadMembers", var_1, "squadMemXP" );
|
|
assert( var_0 >= old_xp, "Attempted XP regression in syncXPStat - " + old_xp + " -> " + var_0 + " for player " + self.name );
|
|
#/
|
|
|
|
self setrankedplayerdata( "squadMembers", var_1, "squadMemXP", var_0 );
|
|
self setrankedplayerdata( "experience", var_0 );
|
|
|
|
if ( var_0 >= maps\mp\gametypes\_rank::getrankinfomaxxp( level.maxrank ) )
|
|
{
|
|
var_3 = self getrankedplayerdata( "characterXP", var_1 );
|
|
|
|
if ( var_3 == 0 )
|
|
{
|
|
var_4 = getsystemtime();
|
|
self setrankedplayerdata( "characterXP", var_1, var_4 );
|
|
var_5 = self getrankedplayerdatareservedint( "prestigeLevel" );
|
|
var_6 = var_5 + 1;
|
|
self setrankedplayerdatareservedint( "prestigeLevel", var_6 );
|
|
self setrank( level.maxrank, var_6 );
|
|
thread maps\mp\gametypes\_hud_message::splashnotifyurgent( "prestige" + var_6 );
|
|
var_7 = self.pers["team"];
|
|
|
|
for ( var_8 = 0; var_8 < level.players.size; var_8++ )
|
|
{
|
|
var_9 = level.players[var_8];
|
|
var_10 = var_9.pers["team"];
|
|
|
|
if ( isdefined( var_10 ) && var_9 != self )
|
|
{
|
|
if ( var_10 == var_7 )
|
|
var_9 iprintln( &"RANK_PLAYER_WAS_PROMOTED", self, &"MPUI_PRESTIGE" );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
set_trigger_flag_permissions_stub( var_0 )
|
|
{
|
|
if ( !isdefined( level.trigger_flags ) || !isdefined( level.trigger_flags[var_0] ) )
|
|
return;
|
|
|
|
level.trigger_flags[var_0] = array_removeundefined( level.trigger_flags[var_0] );
|
|
array_thread( level.trigger_flags[var_0], ::update_trigger_based_on_flags );
|
|
}
|