checked the remaining 6 gametypes scripts

ctf, dem, dom, hq, koth, and oneflag have all been checked.
This commit is contained in:
JezuzLizard 2020-05-05 12:41:38 -07:00
parent 20883d4bec
commit dd94baef78
7 changed files with 927 additions and 1320 deletions

View File

@ -5,15 +5,19 @@
#include maps/mp/_scoreevents;
#include maps/mp/_popups;
#include maps/mp/gametypes/_globallogic_utils;
#include maps/mp/gametypes/_hud_message;
#include maps/mp/gametypes/_spawnlogic;
#include maps/mp/gametypes/_spawning;
#include maps/mp/gametypes/_gameobjects;
#include maps/mp/gametypes/_globallogic_score;
#include maps/mp/teams/_teams;
#include maps/mp/gametypes/_globallogic_audio;
#include maps/mp/gametypes/_callbacksetup;
#include maps/mp/gametypes/_globallogic;
#include maps/mp/gametypes/_hud_util;
#include maps/mp/_utility;
main()
main() //checked matches cerberus output
{
if ( getDvar( "mapname" ) == "mp_background" )
{
@ -80,7 +84,7 @@ main()
maps/mp/gametypes/_globallogic_audio::registerdialoggroup( "ctf_flag_enemy", 0 );
}
onprecachegametype()
onprecachegametype() //checked matches cerberus output
{
game[ "flag_dropped_sound" ] = "mp_war_objective_lost";
game[ "flag_recovered_sound" ] = "mp_war_objective_taken";
@ -122,15 +126,17 @@ onprecachegametype()
game[ "strings" ][ "score_limit_reached" ] = &"MP_CAP_LIMIT_REACHED";
}
onstartgametype()
onstartgametype() //checked changed to match cerberus output
{
if ( !isDefined( game[ "switchedsides" ] ) )
{
game[ "switchedsides" ] = 0;
}
/*
/#
setdebugsideswitch( game[ "switchedsides" ] );
#/
*/
setclientnamemode( "auto_change" );
maps/mp/gametypes/_globallogic_score::resetteamscores();
setobjectivetext( "allies", &"OBJECTIVES_CTF" );
@ -189,19 +195,15 @@ onstartgametype()
level.spawn_axis = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_axis" );
level.spawn_allies = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_allies" );
level.spawn_start = [];
_a256 = level.teams;
_k256 = getFirstArrayKey( _a256 );
while ( isDefined( _k256 ) )
foreach ( team in level.teams )
{
team = _a256[ _k256 ];
level.spawn_start[ team ] = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_" + team + "_start" );
_k256 = getNextArrayKey( _a256, _k256 );
}
thread updategametypedvars();
thread ctf();
}
shouldplayovertimeround()
shouldplayovertimeround() //checked matches cerberus output
{
if ( isDefined( game[ "overtime_round" ] ) )
{
@ -234,7 +236,7 @@ shouldplayovertimeround()
return 0;
}
minutesandsecondsstring( milliseconds )
minutesandsecondsstring( milliseconds ) //checked matches cerberus output
{
minutes = floor( milliseconds / 60000 );
milliseconds -= minutes * 60000;
@ -249,7 +251,7 @@ minutesandsecondsstring( milliseconds )
}
}
setmatchscorehudelemforteam( team )
setmatchscorehudelemforteam( team ) //checked changed to match cerberus output
{
if ( !isDefined( game[ "overtime_round" ] ) )
{
@ -259,21 +261,18 @@ setmatchscorehudelemforteam( team )
{
self settext( minutesandsecondsstring( game[ "ctf_overtime_best_time" ] ) );
}
else if ( isDefined( game[ "ctf_overtime_first_winner" ] ) && game[ "ctf_overtime_first_winner" ] == team )
{
self settext( minutesandsecondsstring( game[ "ctf_overtime_time_to_beat" ] ) );
return;
}
else
{
if ( isDefined( game[ "ctf_overtime_first_winner" ] ) && game[ "ctf_overtime_first_winner" ] == team )
{
self settext( minutesandsecondsstring( game[ "ctf_overtime_time_to_beat" ] ) );
return;
}
else
{
self settext( &"" );
}
self settext( &"" );
}
}
onroundswitch()
onroundswitch() //checked matches cerberus output
{
if ( !isDefined( game[ "switchedsides" ] ) )
{
@ -283,7 +282,7 @@ onroundswitch()
game[ "switchedsides" ] = !game[ "switchedsides" ];
}
onendgame( winningteam )
onendgame( winningteam ) //checked changed to match cerberus output
{
if ( isDefined( game[ "overtime_round" ] ) )
{
@ -294,7 +293,6 @@ onendgame( winningteam )
game[ "ctf_overtime_first_winner" ] = winningteam;
game[ "ctf_overtime_time_to_beat" ] = maps/mp/gametypes/_globallogic_utils::gettimepassed();
}
return;
}
else
{
@ -304,7 +302,7 @@ onendgame( winningteam )
}
}
onroundendgame( winningteam )
onroundendgame( winningteam ) //checked changed to match cerberus output
{
if ( isDefined( game[ "overtime_round" ] ) )
{
@ -325,24 +323,17 @@ onroundendgame( winningteam )
level.enddefeatreasontext = &"MPUI_CTF_OVERTIME_DEFEAT_DID_NOT_DEFEND";
}
}
else
else if ( !isDefined( winningteam ) || winningteam == "tie" )
{
if ( !isDefined( winningteam ) || winningteam == "tie" )
{
return "tie";
}
return "tie";
}
return winningteam;
}
if ( level.roundscorecarry == 0 )
{
_a402 = level.teams;
_k402 = getFirstArrayKey( _a402 );
while ( isDefined( _k402 ) )
foreach ( team in level.teams )
{
team = _a402[ _k402 ];
[[ level._setteamscore ]]( team, game[ "roundswon" ][ team ] );
_k402 = getNextArrayKey( _a402, _k402 );
}
winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "roundswon" );
}
@ -353,7 +344,7 @@ onroundendgame( winningteam )
return winner;
}
onspawnplayerunified()
onspawnplayerunified() //checked matches cerberus output
{
self.isflagcarrier = 0;
self.flagcarried = undefined;
@ -361,7 +352,7 @@ onspawnplayerunified()
maps/mp/gametypes/_spawning::onspawnplayer_unified();
}
onspawnplayer( predictedspawn )
onspawnplayer( predictedspawn ) //checked matches cerberus output
{
self.isflagcarrier = 0;
self.flagcarried = undefined;
@ -383,9 +374,11 @@ onspawnplayer( predictedspawn )
{
spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_nearteam( level.spawn_allies );
}
/*
/#
assert( isDefined( spawnpoint ) );
#/
*/
if ( predictedspawn )
{
self predictspawnpoint( spawnpoint.origin, spawnpoint.angles );
@ -396,7 +389,7 @@ onspawnplayer( predictedspawn )
}
}
updategametypedvars()
updategametypedvars() //checked matches cerberus output
{
level.flagcapturetime = getgametypesetting( "captureTime" );
level.flagtouchreturntime = getgametypesetting( "defuseTime" );
@ -417,7 +410,7 @@ updategametypedvars()
}
}
createflag( trigger )
createflag( trigger ) //checked matches cerberus output
{
if ( isDefined( trigger.target ) )
{
@ -466,7 +459,7 @@ createflag( trigger )
return flag;
}
createflagzone( trigger )
createflagzone( trigger ) //checked changed to match cerberus output
{
visuals = [];
entityteam = trigger.script_team;
@ -474,7 +467,7 @@ createflagzone( trigger )
{
entityteam = getotherteam( entityteam );
}
flagzone = maps/mp/gametypes/_gameobjects::createuseobject( entityteam, trigger, visuals, ( 0, 0, -1 ), istring( entityteam + "_base" ) );
flagzone = maps/mp/gametypes/_gameobjects::createuseobject( entityteam, trigger, visuals, ( 0, 0, 0 ), istring( entityteam + "_base" ) );
flagzone maps/mp/gametypes/_gameobjects::allowuse( "friendly" );
flagzone maps/mp/gametypes/_gameobjects::setusetime( 0 );
flagzone maps/mp/gametypes/_gameobjects::setusetext( &"MP_CAPTURING_FLAG" );
@ -485,7 +478,7 @@ createflagzone( trigger )
flag = level.teamflags[ entityteam ];
flag.flagbase = flagzone;
flagzone.flag = flag;
tracestart = trigger.origin + vectorScale( ( 0, 0, -1 ), 32 );
tracestart = trigger.origin + vectorScale( ( 0, 0, 1 ), 32 );
traceend = trigger.origin + vectorScale( ( 0, 0, -1 ), 32 );
trace = bullettrace( tracestart, traceend, 0, undefined );
upangles = vectorToAngle( trace[ "normal" ] );
@ -497,7 +490,7 @@ createflagzone( trigger )
return flagzone;
}
createflaghint( team, origin )
createflaghint( team, origin ) //checked matches cerberus output
{
radius = 128;
height = 64;
@ -509,7 +502,7 @@ createflaghint( team, origin )
return trigger;
}
ctf()
ctf() //checked changed to match cerberus output
{
level.flags = [];
level.teamflags = [];
@ -549,31 +542,32 @@ ctf()
flag_triggers = getentarray( "ctf_flag_pickup_trig", "targetname" );
if ( !isDefined( flag_triggers ) || flag_triggers.size != 2 )
{
/*
/#
maps/mp/_utility::error( "Not enough ctf_flag_pickup_trig triggers found in map. Need two." );
#/
*/
return;
}
index = 0;
while ( index < flag_triggers.size )
for ( index = 0; index < flag_triggers.size; index++ )
{
trigger = flag_triggers[ index ];
flag = createflag( trigger );
team = flag maps/mp/gametypes/_gameobjects::getownerteam();
level.flags[ level.flags.size ] = flag;
level.teamflags[ team ] = flag;
index++;
}
flag_zones = getentarray( "ctf_flag_zone_trig", "targetname" );
if ( !isDefined( flag_zones ) || flag_zones.size != 2 )
{
/*
/#
maps/mp/_utility::error( "Not enough ctf_flag_zone_trig triggers found in map. Need two." );
#/
*/
return;
}
index = 0;
while ( index < flag_zones.size )
for ( index = 0; index < flag_zones.size; index++ )
{
trigger = flag_zones[ index ];
flagzone = createflagzone( trigger );
@ -583,19 +577,18 @@ ctf()
level.flaghints[ team ] = createflaghint( team, trigger.origin );
facing_angle = getDvarInt( "scr_ctf_spawnPointFacingAngle" );
setspawnpointsbaseweight( getotherteamsmask( team ), trigger.origin, facing_angle, level.spawnsystem.objective_facing_bonus );
index++;
}
createreturnmessageelems();
}
ctf_icon_hide()
ctf_icon_hide() //checked matches cerberus output
{
level waittill( "game_ended" );
level.teamflags[ "allies" ] maps/mp/gametypes/_gameobjects::setvisibleteam( "none" );
level.teamflags[ "axis" ] maps/mp/gametypes/_gameobjects::setvisibleteam( "none" );
}
removeinfluencers()
removeinfluencers() //checked matches cerberus output
{
if ( isDefined( self.spawn_influencer_enemy_carrier ) )
{
@ -614,7 +607,7 @@ removeinfluencers()
}
}
ondrop( player )
ondrop( player ) //checked matches cerberus output
{
if ( isDefined( player ) )
{
@ -693,7 +686,7 @@ ondrop( player )
self.spawn_influencer_dropped = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, flag_origin, ss.ctf_dropped_influencer_radius, ss.ctf_dropped_influencer_score, player_team_mask | enemy_team_mask, "ctf_flag_dropped,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( ss.ctf_dropped_influencer_score_curve ), level.idleflagreturntime, self.trigger );
}
onpickup( player )
onpickup( player ) //checked matches cerberus output
{
carrierkilledby = self.carrierkilledby;
self.carrierkilledby = undefined;
@ -792,17 +785,19 @@ onpickup( player )
}
}
onpickupmusicstate( player )
onpickupmusicstate( player ) //checked changed at own discretion
{
self endon( "disconnect" );
self endon( "death" );
wait 6;
if ( player.isflagcarrier )
if (player.isFlagCarrier)
{
//imported from bo1 ctf.gsc
player thread maps\mp\gametypes\_globallogic_audio::set_music_on_player( "SUSPENSE", false, false);
}
}
ishome()
ishome() //checked matches cerberus output
{
if ( isDefined( self.carrier ) )
{
@ -815,7 +810,7 @@ ishome()
return 1;
}
returnflag()
returnflag() //checked matches cerberus output
{
team = self maps/mp/gametypes/_gameobjects::getownerteam();
otherteam = getotherteam( team );
@ -838,7 +833,7 @@ returnflag()
maps/mp/gametypes/_globallogic_audio::leaderdialog( "theyreturn_flag", otherteam, "ctf_flag" );
}
oncapture( player )
oncapture( player ) //checked matches cerberus output
{
team = player.pers[ "team" ];
enemyteam = getotherteam( team );
@ -883,13 +878,13 @@ oncapture( player )
flag removeinfluencers();
}
giveflagcapturexp( player )
giveflagcapturexp( player ) //checked matches cerberus output
{
maps/mp/_scoreevents::processscoreevent( "flag_capture", player );
player recordgameevent( "capture" );
}
onreset()
onreset() //checked matches cerberus output
{
update_hints();
team = self maps/mp/gametypes/_gameobjects::getownerteam();
@ -908,7 +903,7 @@ onreset()
self clearreturnflaghudelems();
}
getotherflag( flag )
getotherflag( flag ) //checked matches cerberus output
{
if ( flag == level.flags[ 0 ] )
{
@ -917,12 +912,11 @@ getotherflag( flag )
return level.flags[ 0 ];
}
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration )
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output
{
while ( isDefined( attacker ) && isplayer( attacker ) )
if ( isDefined( attacker ) && isplayer( attacker ) )
{
index = 0;
while ( index < level.flags.size )
for ( index = 0; index < level.flags.size; index++ )
{
flagteam = "invalidTeam";
inflagzone = 0;
@ -959,7 +953,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
if ( level.flags[ index ].ownerteam == attacker.pers[ "team" ] )
{
defendedflag = 1;
break;
}
else
{
@ -973,7 +966,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
if ( level.flags[ index ].ownerteam == attacker.pers[ "team" ] )
{
defendedflag = 1;
break;
}
else
{
@ -1016,19 +1008,17 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
self recordkillmodifier( "defending" );
}
}
index++;
}
}
if ( !isDefined( self.isflagcarrier ) || !self.isflagcarrier )
else if ( !isDefined( self.isflagcarrier ) || !self.isflagcarrier )
{
return;
}
if ( isDefined( attacker ) && isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] )
{
while ( isDefined( self.flagcarried ) )
if ( isDefined( self.flagcarried ) )
{
index = 0;
while ( index < level.flags.size )
for ( index = 0; index < level.flags.size; index++ )
{
currentflag = level.flags[ index ];
if ( currentflag.ownerteam == self.team )
@ -1043,10 +1033,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
}
}
}
else
{
index++;
}
}
}
attacker recordgameevent( "kill_carrier" );
@ -1054,7 +1040,7 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
}
}
createreturnmessageelems()
createreturnmessageelems() //checked matches cerberus output
{
level.returnmessageelems = [];
level.returnmessageelems[ "allies" ][ "axis" ] = createservertimer( "objective", 1,4, "allies" );
@ -1079,7 +1065,7 @@ createreturnmessageelems()
level.returnmessageelems[ "axis" ][ "axis" ].archived = 0;
}
returnflagaftertimemsg( time )
returnflagaftertimemsg( time ) //checked matches cerberus output
{
if ( level.touchreturn || level.idleflagreturntime == 0 )
{
@ -1096,19 +1082,23 @@ returnflagaftertimemsg( time )
}
}
returnflaghudelems( time )
returnflaghudelems( time ) //checked matches cerberus output
{
self endon( "picked_up" );
level endon( "game_ended" );
ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam();
/*
/#
assert( !level.returnmessageelems[ "axis" ][ ownerteam ].alpha );
#/
*/
level.returnmessageelems[ "axis" ][ ownerteam ].alpha = 1;
level.returnmessageelems[ "axis" ][ ownerteam ] settimer( time );
/*
/#
assert( !level.returnmessageelems[ "allies" ][ ownerteam ].alpha );
#/
*/
level.returnmessageelems[ "allies" ][ ownerteam ].alpha = 1;
level.returnmessageelems[ "allies" ][ ownerteam ] settimer( time );
if ( time <= 0 )
@ -1122,16 +1112,16 @@ returnflaghudelems( time )
return 1;
}
clearreturnflaghudelems()
clearreturnflaghudelems() //checked matches cerberus output
{
ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam();
level.returnmessageelems[ "allies" ][ ownerteam ].alpha = 0;
level.returnmessageelems[ "axis" ][ ownerteam ].alpha = 0;
}
resetflagbaseeffect()
resetflagbaseeffect() //checked matches cerberus output
{
wait 0,1;
wait 0.1;
if ( isDefined( self.baseeffect ) )
{
self.baseeffect delete();
@ -1146,7 +1136,7 @@ resetflagbaseeffect()
triggerfx( self.baseeffect );
}
turn_on()
turn_on() //checked matches cerberus output
{
if ( level.hardcoremode )
{
@ -1155,12 +1145,12 @@ turn_on()
self.origin = self.original_origin;
}
turn_off()
turn_off() //checked matches cerberus output
{
self.origin = ( self.original_origin[ 0 ], self.original_origin[ 1 ], self.original_origin[ 2 ] - 10000 );
}
update_hints()
update_hints() //checked matches cerberus output
{
allied_flag = level.teamflags[ "allies" ];
axis_flag = level.teamflags[ "axis" ];
@ -1186,7 +1176,7 @@ update_hints()
}
}
claim_trigger( trigger )
claim_trigger( trigger ) //checked matches cerberus output
{
self endon( "disconnect" );
self clientclaimtrigger( trigger );
@ -1194,7 +1184,7 @@ claim_trigger( trigger )
self clientreleasetrigger( trigger );
}
createflagspawninfluencer( entityteam )
createflagspawninfluencer( entityteam ) //checked matches cerberus output
{
ctf_friendly_base_influencer_score = level.spawnsystem.ctf_friendly_base_influencer_score;
ctf_friendly_base_influencer_score_curve = level.spawnsystem.ctf_friendly_base_influencer_score_curve;
@ -1209,7 +1199,7 @@ createflagspawninfluencer( entityteam )
self.spawn_influencer_enemy = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, self.trigger.origin, ctf_enemy_base_influencer_radius, ctf_enemy_base_influencer_score, other_team_mask, "ctf_enemy_base,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( ctf_enemy_base_influencer_score_curve ) );
}
ctf_gamemodespawndvars( reset_dvars )
ctf_gamemodespawndvars( reset_dvars ) //checked matches cerberus output
{
ss = level.spawnsystem;
ss.ctf_friendly_base_influencer_score = set_dvar_float_if_unset( "scr_spawn_ctf_friendly_base_influencer_score", "0", reset_dvars );
@ -1229,7 +1219,7 @@ ctf_gamemodespawndvars( reset_dvars )
ss.ctf_dropped_influencer_radius = set_dvar_float_if_unset( "scr_spawn_ctf_dropped_influencer_radius", "" + ( 10 * get_player_height() ), reset_dvars );
}
ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon )
ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) //checked matches cerberus output
{
teamkill_penalty = maps/mp/gametypes/_globallogic_defaults::default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon );
if ( isDefined( self.isflagcarrier ) && self.isflagcarrier )
@ -1239,7 +1229,7 @@ ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon )
return teamkill_penalty;
}
ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon )
ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) //checked matches cerberus output
{
teamkill_score = maps/mp/gametypes/_rank::getscoreinfovalue( "kill" );
if ( isDefined( self.isflagcarrier ) && self.isflagcarrier )
@ -1248,3 +1238,5 @@ ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon )
}
return int( teamkill_score );
}

View File

@ -11,12 +11,17 @@
#include maps/mp/_medals;
#include maps/mp/gametypes/_spawnlogic;
#include maps/mp/gametypes/_spawning;
#include maps/mp/gametypes/_gameobjects;
#include maps/mp/gametypes/_rank;
#include maps/mp/gametypes/_globallogic_defaults;
#include maps/mp/gametypes/_callbacksetup;
#include maps/mp/gametypes/_globallogic;
#include maps/mp/gametypes/_hud_util;
#include maps/mp/_utility;
#include common_scripts/utility;
main()
main() //checked matches cerberus output
{
if ( getDvar( "mapname" ) == "mp_background" )
{
@ -68,7 +73,7 @@ main()
}
}
onprecachegametype()
onprecachegametype() //checked matches cerberus output
{
game[ "bombmodelname" ] = "t5_weapon_briefcase_bomb_world";
game[ "bombmodelnameobj" ] = "t5_weapon_briefcase_bomb_world";
@ -107,27 +112,27 @@ onprecachegametype()
precachestring( &"MP_TIME_EXTENDED" );
}
dem_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon )
dem_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) //checked changed to match cerberus output
{
teamkill_penalty = maps/mp/gametypes/_globallogic_defaults::default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon );
if ( isDefined( self.isdefusing ) || self.isdefusing && isDefined( self.isplanting ) && self.isplanting )
if ( isDefined( self.isdefusing ) && self.isdefusing || isDefined( self.isplanting ) && self.isplanting )
{
teamkill_penalty *= level.teamkillpenaltymultiplier;
}
return teamkill_penalty;
}
dem_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon )
dem_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) //checked changed to match cerberus output
{
teamkill_score = maps/mp/gametypes/_rank::getscoreinfovalue( "team_kill" );
if ( isDefined( self.isdefusing ) || self.isdefusing && isDefined( self.isplanting ) && self.isplanting )
if ( isDefined( self.isdefusing ) && self.isdefusing || isDefined( self.isplanting ) && self.isplanting )
{
teamkill_score *= level.teamkillscoremultiplier;
}
return int( teamkill_score );
}
onroundswitch()
onroundswitch() //checked matches cerberus output
{
if ( !isDefined( game[ "switchedsides" ] ) )
{
@ -149,14 +154,13 @@ onroundswitch()
}
}
getbetterteam()
getbetterteam() //checked changed to match cerberus output
{
kills[ "allies" ] = 0;
kills[ "axis" ] = 0;
deaths[ "allies" ] = 0;
deaths[ "axis" ] = 0;
i = 0;
while ( i < level.players.size )
for ( i = 0; i < level.players.size; i++ )
{
player = level.players[ i ];
team = player.pers[ "team" ];
@ -165,29 +169,22 @@ getbetterteam()
kills[ team ] += player.kills;
deaths[ team ] += player.deaths;
}
i++;
}
if ( kills[ "allies" ] > kills[ "axis" ] )
{
return "allies";
}
else
else if ( kills[ "axis" ] > kills[ "allies" ] )
{
if ( kills[ "axis" ] > kills[ "allies" ] )
{
return "axis";
}
return "axis";
}
if ( deaths[ "allies" ] < deaths[ "axis" ] )
{
return "allies";
}
else
else if ( deaths[ "axis" ] < deaths[ "allies" ] )
{
if ( deaths[ "axis" ] < deaths[ "allies" ] )
{
return "axis";
}
return "axis";
}
if ( randomint( 2 ) == 0 )
{
@ -196,7 +193,7 @@ getbetterteam()
return "axis";
}
gamemodespawndvars( reset_dvars )
gamemodespawndvars( reset_dvars ) //checked matches cerberus output
{
ss = level.spawnsystem;
ss.dem_enemy_base_influencer_score = set_dvar_float_if_unset( "scr_spawn_dem_enemy_base_influencer_score", "-500", reset_dvars );
@ -204,7 +201,7 @@ gamemodespawndvars( reset_dvars )
ss.dem_enemy_base_influencer_radius = set_dvar_float_if_unset( "scr_spawn_dem_enemy_base_influencer_radius", "" + ( 15 * get_player_height() ), reset_dvars );
}
onstartgametype()
onstartgametype() //checked changed to match cerberus output
{
setbombtimer( "A", 0 );
setmatchflag( "bomb_timer_a", 0 );
@ -275,8 +272,8 @@ onstartgametype()
allowed[ 3 ] = "dem";
maps/mp/gametypes/_gameobjects::main( allowed );
maps/mp/gametypes/_spawning::create_map_placed_influencers();
level.spawnmins = ( 0, 0, 1 );
level.spawnmaxs = ( 0, 0, 1 );
level.spawnmins = ( 0, 0, 0 );
level.spawnmaxs = ( 0, 0, 0 );
maps/mp/gametypes/_spawnlogic::dropspawnpoints( "mp_dem_spawn_attacker_a" );
maps/mp/gametypes/_spawnlogic::dropspawnpoints( "mp_dem_spawn_attacker_b" );
maps/mp/gametypes/_spawnlogic::dropspawnpoints( "mp_dem_spawn_defender_a" );
@ -318,7 +315,7 @@ onstartgametype()
thread bombs();
}
onspawnplayerunified()
onspawnplayerunified() //checked matches cerberus output
{
self.isplanting = 0;
self.isdefusing = 0;
@ -326,7 +323,7 @@ onspawnplayerunified()
maps/mp/gametypes/_spawning::onspawnplayer_unified();
}
onspawnplayer( predictedspawn )
onspawnplayer( predictedspawn ) //checked matches cerberus output
{
if ( !predictedspawn )
{
@ -362,9 +359,11 @@ onspawnplayer( predictedspawn )
}
}
spawnpoints = maps/mp/gametypes/_spawnlogic::getspawnpointarray( spawnpointname );
/*
/#
assert( spawnpoints.size );
#/
*/
spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_random( spawnpoints );
if ( predictedspawn )
{
@ -376,17 +375,16 @@ onspawnplayer( predictedspawn )
}
}
dem_playerspawnedcb()
dem_playerspawnedcb() //checked matches cerberus output
{
level notify( "spawned_player" );
}
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration )
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output
{
thread checkallowspectating();
bombzone = undefined;
index = 0;
while ( index < level.bombzones.size )
for ( index = 0; index < level.bombzones.size; index++ )
{
if ( !isDefined( level.bombzones[ index ].bombexploded ) || !level.bombzones[ index ].bombexploded )
{
@ -403,10 +401,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
break;
}
}
else
{
index++;
}
}
if ( isDefined( bombzone ) && isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] )
{
@ -426,9 +420,11 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
}
else
{
/*
/#
attacker iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU OFFENSIVE CREDIT AS BOOSTING PREVENTION" );
#/
*/
}
}
else if ( !isDefined( attacker.dem_defends ) )
@ -450,9 +446,11 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
}
else
{
/*
/#
attacker iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU DEFENSIVE CREDIT AS BOOSTING PREVENTION" );
#/
*/
}
}
if ( self.isplanting == 1 )
@ -465,13 +463,13 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
}
}
checkallowspectating()
checkallowspectating() //checked changed to match cerberus output
{
self endon( "disconnect" );
wait 0,05;
update = 0;
if ( level.numliveslivesleft = self.pers[ "lives" ];
&& !level.alivecount[ game[ "attackers" ] ] && !livesleft )
livesleft = !level.numlives && !self.pers["lives"];
if ( !level.alivecount[ game[ "attackers" ] ] && !livesleft )
{
level.spectateoverride[ game[ "attackers" ] ].allowenemyspectate = 1;
update = 1;
@ -487,7 +485,7 @@ checkallowspectating()
}
}
dem_endgame( winningteam, endreasontext )
dem_endgame( winningteam, endreasontext ) //checked matches cerberus output
{
if ( isDefined( winningteam ) && winningteam != "tie" )
{
@ -496,7 +494,7 @@ dem_endgame( winningteam, endreasontext )
thread maps/mp/gametypes/_globallogic::endgame( winningteam, endreasontext );
}
ondeadevent( team )
ondeadevent( team ) //checked changed to match cerberus output
{
if ( level.bombexploded || level.bombdefused )
{
@ -521,16 +519,13 @@ ondeadevent( team )
}
dem_endgame( game[ "defenders" ], game[ "strings" ][ game[ "attackers" ] + "_eliminated" ] );
}
else
else if ( team == game[ "defenders" ] )
{
if ( team == game[ "defenders" ] )
{
dem_endgame( game[ "attackers" ], game[ "strings" ][ game[ "defenders" ] + "_eliminated" ] );
}
dem_endgame( game[ "attackers" ], game[ "strings" ][ game[ "defenders" ] + "_eliminated" ] );
}
}
ononeleftevent( team )
ononeleftevent( team ) //checked matches cerberus output
{
if ( level.bombexploded || level.bombdefused )
{
@ -539,7 +534,7 @@ ononeleftevent( team )
warnlastplayer( team );
}
ontimelimit()
ontimelimit() //checked changed to match cerberus output
{
if ( isDefined( game[ "overtime_round" ] ) )
{
@ -548,14 +543,12 @@ ontimelimit()
else if ( level.teambased )
{
bombzonesleft = 0;
index = 0;
while ( index < level.bombzones.size )
for ( index = 0; index < level.bombzones.size; index++ )
{
if ( !isDefined( level.bombzones[ index ].bombexploded ) || !level.bombzones[ index ].bombexploded )
{
bombzonesleft++;
}
index++;
}
if ( bombzonesleft == 0 )
{
@ -572,7 +565,7 @@ ontimelimit()
}
}
warnlastplayer( team )
warnlastplayer( team ) //checked changed to match cerberus output
{
if ( !isDefined( level.warnedlastplayer ) )
{
@ -584,8 +577,7 @@ warnlastplayer( team )
}
level.warnedlastplayer[ team ] = 1;
players = level.players;
i = 0;
while ( i < players.size )
for ( i = 0; i < players.size; i++ )
{
player = players[ i ];
if ( isDefined( player.pers[ "team" ] ) && player.pers[ "team" ] == team && isDefined( player.pers[ "class" ] ) )
@ -595,10 +587,6 @@ warnlastplayer( team )
break;
}
}
else
{
i++;
}
}
if ( i == players.size )
{
@ -607,12 +595,12 @@ warnlastplayer( team )
players[ i ] thread givelastattackerwarning();
}
givelastattackerwarning()
givelastattackerwarning() //checked changed to match cerberus output
{
self endon( "death" );
self endon( "disconnect" );
fullhealthtime = 0;
interval = 0,05;
interval = 0.05;
while ( 1 )
{
if ( self.health != self.maxhealth )
@ -628,14 +616,11 @@ givelastattackerwarning()
{
break;
}
else
{
}
}
self maps/mp/gametypes/_globallogic_audio::leaderdialogonplayer( "sudden_death" );
}
updategametypedvars()
updategametypedvars() //checked matches cerberus output
{
level.planttime = getgametypesetting( "plantTime" );
level.defusetime = getgametypesetting( "defuseTime" );
@ -650,7 +635,7 @@ updategametypedvars()
level.playerdefensivemax = getgametypesetting( "maxPlayerDefensive" );
}
resetbombzone()
resetbombzone() //checked matches cerberus output
{
if ( isDefined( game[ "overtime_round" ] ) )
{
@ -673,7 +658,7 @@ resetbombzone()
self.useweapon = "briefcase_bomb_mp";
}
setupfordefusing()
setupfordefusing() //checked matches cerberus output
{
self maps/mp/gametypes/_gameobjects::allowuse( "friendly" );
self maps/mp/gametypes/_gameobjects::setusetime( level.defusetime );
@ -687,7 +672,7 @@ setupfordefusing()
self maps/mp/gametypes/_gameobjects::setvisibleteam( "any" );
}
bombs()
bombs() //checked changed to match cerberus output
{
level.bombaplanted = 0;
level.bombbplanted = 0;
@ -719,39 +704,32 @@ bombs()
trigger delete();
defusetrig delete();
visuals[ 0 ] delete();
_a831 = clipbrushes;
_k831 = getFirstArrayKey( _a831 );
while ( isDefined( _k831 ) )
foreach ( clip in clipbrushes )
{
clip = _a831[ _k831 ];
clip delete();
_k831 = getNextArrayKey( _a831, _k831 );
}
index++;
continue;
}
else bombsiteteamowner = "neutral";
bombsiteteamowner = "neutral";
bombsiteallowuse = "any";
scriptlabel = "_a";
}
else
else if ( scriptlabel == "_overtime" )
{
if ( scriptlabel == "_overtime" )
trigger delete();
defusetrig delete();
visuals[ 0 ] delete();
foreach ( clip in clipbrushes )
{
trigger delete();
defusetrig delete();
visuals[ 0 ] delete();
_a846 = clipbrushes;
_k846 = getFirstArrayKey( _a846 );
while ( isDefined( _k846 ) )
{
clip = _a846[ _k846 ];
clip delete();
_k846 = getNextArrayKey( _a846, _k846 );
}
clip delete();
}
index++;
continue;
}
else name = istring( scriptlabel );
name = istring( scriptlabel );
precachestring( name );
bombzone = maps/mp/gametypes/_gameobjects::createuseobject( bombsiteteamowner, trigger, visuals, ( 0, 0, 1 ), name );
bombzone = maps/mp/gametypes/_gameobjects::createuseobject( bombsiteteamowner, trigger, visuals, ( 0, 0, 0 ), name );
bombzone maps/mp/gametypes/_gameobjects::allowuse( bombsiteallowuse );
bombzone maps/mp/gametypes/_gameobjects::setusetime( level.planttime );
bombzone maps/mp/gametypes/_gameobjects::setusetext( &"MP_PLANTING_EXPLOSIVE" );
@ -770,25 +748,22 @@ bombs()
bombzone.oncantuse = ::oncantuse;
bombzone.useweapon = "briefcase_bomb_mp";
bombzone.visuals[ 0 ].killcament = spawn( "script_model", bombzone.visuals[ 0 ].origin + vectorScale( ( 0, 0, 1 ), 128 ) );
i = 0;
while ( i < visuals.size )
for ( i = 0; i < visuals.size; i++ )
{
if ( isDefined( visuals[ i ].script_exploder ) )
{
bombzone.exploderindex = visuals[ i ].script_exploder;
break;
}
else
{
i++;
}
}
level.bombzones[ level.bombzones.size ] = bombzone;
bombzone.bombdefusetrig = defusetrig;
/*
/#
assert( isDefined( bombzone.bombdefusetrig ) );
#/
bombzone.bombdefusetrig.origin += vectorScale( ( 0, 0, 1 ), 10000 );
*/
bombzone.bombdefusetrig.origin += vectorScale( ( 0, 0, -1 ), 10000 );
bombzone.bombdefusetrig.label = scriptlabel;
dem_enemy_base_influencer_score = level.spawnsystem.dem_enemy_base_influencer_score;
dem_enemy_base_influencer_score_curve = level.spawnsystem.dem_enemy_base_influencer_score_curve;
@ -797,25 +772,21 @@ bombs()
bombzone.spawninfluencer = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, trigger.origin, dem_enemy_base_influencer_radius, dem_enemy_base_influencer_score, team_mask, "dem_enemy_base,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( dem_enemy_base_influencer_score_curve ) );
index++;
}
index = 0;
while ( index < level.bombzones.size )
for ( index = 0; index < level.bombzones.size; index++ )
{
array = [];
otherindex = 0;
while ( otherindex < level.bombzones.size )
for ( otherindex = 0; otherindex < level.bombzones.size; otherindex++ )
{
if ( otherindex != index )
{
array[ array.size ] = level.bombzones[ otherindex ];
}
otherindex++;
}
level.bombzones[ index ].otherbombzones = array;
index++;
}
}
onbeginuse( player )
onbeginuse( player ) //checked partially changed to match cerberus output did not change while loop to for loop see github for more info
{
timeremaining = maps/mp/gametypes/_globallogic_utils::gettimeremaining();
if ( timeremaining <= ( level.planttime * 1000 ) )
@ -842,20 +813,19 @@ onbeginuse( player )
bomblabel++;
continue;
}
else
dist = distancesquared( player.origin, bomb.origin );
if ( dist < bestdistance )
{
dist = distancesquared( player.origin, bomb.origin );
if ( dist < bestdistance )
{
bestdistance = dist;
closestbomb = bomb;
}
bestdistance = dist;
closestbomb = bomb;
}
bomblabel++;
}
/*
/#
assert( isDefined( closestbomb ) );
#/
*/
player.defusing = closestbomb;
closestbomb hide();
}
@ -868,7 +838,7 @@ onbeginuse( player )
player playsound( "fly_bomb_raise_plr" );
}
onenduse( team, player, result )
onenduse( team, player, result ) //checked matches cerberus output
{
if ( !isDefined( player ) )
{
@ -891,12 +861,12 @@ onenduse( team, player, result )
}
}
oncantuse( player )
oncantuse( player ) //checked matches cerberus output
{
player iprintlnbold( &"MP_CANT_PLANT_WITHOUT_BOMB" );
}
onuseobject( player )
onuseobject( player ) //checked matches cerberus output
{
team = player.team;
enemyteam = getotherteam( team );
@ -925,9 +895,11 @@ onuseobject( player )
}
else
{
/*
/#
player iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU PLANT CREDIT AS BOOSTING PREVENTION" );
#/
#/
*/
}
level thread maps/mp/_popups::displayteammessagetoall( &"MP_EXPLOSIVES_PLANTED_BY", player );
maps/mp/gametypes/_globallogic_audio::leaderdialog( "bomb_planted" );
@ -954,9 +926,11 @@ onuseobject( player )
}
else
{
/*
/#
player iprintlnbold( "GAMETYPE DEBUG: NOT GIVING YOU DEFUSE CREDIT AS BOOSTING PREVENTION" );
#/
*/
}
level thread maps/mp/_popups::displayteammessagetoall( &"MP_EXPLOSIVES_DEFUSED_BY", player );
thread maps/mp/gametypes/_globallogic_audio::set_music_on_team( "DEM_WE_DEFUSE", team, 0, 0, 5 );
@ -965,7 +939,7 @@ onuseobject( player )
}
}
ondrop( player )
ondrop( player ) //checked matches cerberus output
{
if ( !level.bombplanted )
{
@ -983,7 +957,7 @@ ondrop( player )
maps/mp/_utility::playsoundonplayers( game[ "bomb_dropped_sound" ], game[ "attackers" ] );
}
onpickup( player )
onpickup( player ) //checked matches cerberus output
{
player.isbombcarrier = 1;
self maps/mp/gametypes/_gameobjects::set3dicon( "friendly", "waypoint_defend" );
@ -996,11 +970,11 @@ onpickup( player )
maps/mp/_utility::playsoundonplayers( game[ "bomb_recovered_sound" ], game[ "attackers" ] );
}
onreset()
onreset() //checked matches cerberus output
{
}
bombreset( label, reason )
bombreset( label, reason ) //checked matches cerberus output
{
if ( label == "_a" )
{
@ -1020,13 +994,13 @@ bombreset( label, reason )
self.visuals[ 0 ] maps/mp/gametypes/_globallogic_utils::stoptickingsound();
}
dropbombmodel( player, site )
dropbombmodel( player, site ) //checked matches cerberus output
{
trace = bullettrace( player.origin + vectorScale( ( 0, 0, 1 ), 20 ), player.origin - vectorScale( ( 0, 0, 1 ), 2000 ), 0, player );
tempangle = randomfloat( 360 );
forward = ( cos( tempangle ), sin( tempangle ), 0 );
forward = vectornormalize( forward - vectorScale( trace[ "normal" ], vectordot( forward, trace[ "normal" ] ) ) );
dropangles = vectorToAngle( forward );
dropangles = vectorToAngles( forward );
if ( isDefined( trace[ "surfacetype" ] ) && trace[ "surfacetype" ] == "water" )
{
phystrace = playerphysicstrace( player.origin + vectorScale( ( 0, 0, 1 ), 20 ), player.origin - vectorScale( ( 0, 0, 1 ), 2000 ) );
@ -1093,18 +1067,16 @@ bombplanted( destroyedobj, player )
destroyedobj.visuals[ 0 ] radiusdamage( explosionorigin, 512, 200, 20, undefined, "MOD_EXPLOSIVE", "briefcase_bomb_mp" );
}
currenttime = getTime();
while ( isDefined( level.lastbombexplodetime ) && level.lastbombexplodebyteam == player.team )
if ( isDefined( level.lastbombexplodetime ) && level.lastbombexplodebyteam == player.team )
{
while ( ( level.lastbombexplodetime + 10000 ) > currenttime )
if ( ( level.lastbombexplodetime + 10000 ) > currenttime )
{
i = 0;
while ( i < level.players.size )
for ( i = 0; i < level.players.size; i++ )
{
if ( level.players[ i ].team == player.team )
{
level.players[ i ] maps/mp/_challenges::bothbombsdetonatewithintime();
}
i++;
}
}
}
@ -1119,14 +1091,12 @@ bombplanted( destroyedobj, player )
exploder( destroyedobj.exploderindex );
}
bombzonesleft = 0;
index = 0;
while ( index < level.bombzones.size )
for ( index = 0; index < level.bombzones.size; index++ )
{
if ( !isDefined( level.bombzones[ index ].bombexploded ) || !level.bombzones[ index ].bombexploded )
{
bombzonesleft++;
}
index++;
}
destroyedobj maps/mp/gametypes/_gameobjects::disableobject();
if ( bombzonesleft == 0 )
@ -1165,7 +1135,7 @@ bombplanted( destroyedobj, player )
}
}
gettimelimit()
gettimelimit() //checked matches cerberus output
{
timelimit = maps/mp/gametypes/_globallogic_defaults::default_gettimelimit();
if ( isDefined( game[ "overtime_round" ] ) )
@ -1179,7 +1149,7 @@ gettimelimit()
return timelimit;
}
shouldplayovertimeround()
shouldplayovertimeround() //checked matches cerberus output
{
if ( isDefined( game[ "overtime_round" ] ) )
{
@ -1192,15 +1162,17 @@ shouldplayovertimeround()
return 0;
}
waitlongdurationwithbombtimeupdate( whichbomb, duration )
waitlongdurationwithbombtimeupdate( whichbomb, duration ) //checked matches cerberus output
{
if ( duration == 0 )
{
return;
}
/*
/#
assert( duration > 0 );
#/
*/
starttime = getTime();
endtime = getTime() + ( duration * 1000 );
while ( getTime() < endtime )
@ -1210,25 +1182,27 @@ waitlongdurationwithbombtimeupdate( whichbomb, duration )
{
endtime += 250;
updatebombtimers( whichbomb, endtime );
wait 0,25;
wait 0.25;
}
}
/*
/#
if ( getTime() != endtime )
{
println( "SCRIPT WARNING: gettime() = " + getTime() + " NOT EQUAL TO endtime = " + endtime );
#/
}
*/
while ( isDefined( level.hostmigrationtimer ) )
{
endtime += 250;
updatebombtimers( whichbomb, endtime );
wait 0,25;
wait 0.25;
}
return getTime() - starttime;
}
updatebombtimers( whichbomb, detonatetime )
updatebombtimers( whichbomb, detonatetime ) //checked matches cerberus output
{
if ( whichbomb == "_a" )
{
@ -1243,7 +1217,7 @@ updatebombtimers( whichbomb, detonatetime )
setmatchflag( "bomb_timer" + whichbomb, int( detonatetime ) );
}
bombdefused()
bombdefused() //checked matches cerberus output
{
self.tickingobject maps/mp/gametypes/_globallogic_utils::stoptickingsound();
self maps/mp/gametypes/_gameobjects::allowuse( "none" );
@ -1254,7 +1228,7 @@ bombdefused()
self bombreset( self.label, "bomb_defused" );
}
play_one_left_underscore( team, enemyteam )
play_one_left_underscore( team, enemyteam ) //checked matches cerberus output
{
wait 3;
if ( !isDefined( team ) || !isDefined( enemyteam ) )
@ -1265,7 +1239,7 @@ play_one_left_underscore( team, enemyteam )
thread maps/mp/gametypes/_globallogic_audio::set_music_on_team( "DEM_ONE_LEFT_UNDERSCORE", enemyteam, 0, 0 );
}
updateeventsperminute()
updateeventsperminute() //checked matches cerberus output
{
if ( !isDefined( self.eventsperminute ) )
{
@ -1285,7 +1259,7 @@ updateeventsperminute()
}
}
isscoreboosting( player, flag )
isscoreboosting( player, flag ) //checked matches cerberus output
{
if ( !level.rankedmatch )
{
@ -1301,3 +1275,5 @@ isscoreboosting( player, flag )
}
return 0;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -6,15 +6,19 @@
#include maps/mp/gametypes/_weapons;
#include maps/mp/_popups;
#include maps/mp/gametypes/_globallogic_utils;
#include maps/mp/gametypes/_hud_message;
#include maps/mp/gametypes/_spawnlogic;
#include maps/mp/gametypes/_spawning;
#include maps/mp/gametypes/_gameobjects;
#include maps/mp/gametypes/_globallogic_score;
#include maps/mp/teams/_teams;
#include maps/mp/gametypes/_globallogic_audio;
#include maps/mp/gametypes/_callbacksetup;
#include maps/mp/gametypes/_globallogic;
#include maps/mp/gametypes/_hud_util;
#include maps/mp/_utility;
main()
main() //checked matches cerberus output
{
if ( getDvar( "mapname" ) == "mp_background" )
{
@ -81,7 +85,7 @@ main()
maps/mp/gametypes/_globallogic_audio::registerdialoggroup( "ctf_flag_enemy", 0 );
}
onprecachegametype()
onprecachegametype() //checked matches cerberus output
{
game[ "flag_dropped_sound" ] = "mp_war_objective_lost";
game[ "flag_recovered_sound" ] = "mp_war_objective_taken";
@ -132,15 +136,17 @@ onprecachegametype()
game[ "strings" ][ "score_limit_reached" ] = &"MP_CAP_LIMIT_REACHED";
}
onstartgametype()
onstartgametype() //checked changed to match cerberus output
{
if ( !isDefined( game[ "switchedsides" ] ) )
{
game[ "switchedsides" ] = 0;
}
/*
/#
setdebugsideswitch( game[ "switchedsides" ] );
#/
#/
*/
setclientnamemode( "auto_change" );
maps/mp/gametypes/_globallogic_score::resetteamscores();
setobjectivetext( "allies", &"OBJECTIVES_ONEFLAG" );
@ -186,34 +192,26 @@ onstartgametype()
allowed[ 1 ] = "dom";
maps/mp/gametypes/_gameobjects::main( allowed );
entities = getentarray();
entity_index = entities.size - 1;
while ( entity_index >= 0 )
for ( entity_index = entities.size - 1; entity_index >= 0; entity_index-- )
{
entity = entities[ entity_index ];
while ( isDefined( entity.script_gameobjectname ) && entity.script_gameobjectname != "[all_modes]" )
if ( isDefined( entity.script_gameobjectname ) && entity.script_gameobjectname != "[all_modes]" )
{
gameobjectnames = strtok( entity.script_gameobjectname, " " );
i = 0;
while ( i < gameobjectnames.size )
for ( i = 0; i < gameobjectnames.size; i++ )
{
if ( gameobjectnames[ i ] == "ctf" && gameobjectnames.size > 1 )
{
entity delete();
entity_index--;
continue;
}
else
{
i++;
break;
}
}
}
entity_index--;
}
maps/mp/gametypes/_spawning::create_map_placed_influencers();
level.spawnmins = ( 0, 0, -1 );
level.spawnmaxs = ( 0, 0, -1 );
level.spawnmins = ( 0, 0, 0 );
level.spawnmaxs = ( 0, 0, 0 );
maps/mp/gametypes/_spawnlogic::placespawnpoints( "mp_ctf_spawn_allies_start" );
maps/mp/gametypes/_spawnlogic::placespawnpoints( "mp_ctf_spawn_axis_start" );
maps/mp/gametypes/_spawnlogic::addspawnpoints( "allies", "mp_ctf_spawn_allies" );
@ -226,15 +224,11 @@ onstartgametype()
level.spawn_axis = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_axis" );
level.spawn_allies = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_allies" );
level.spawn_start = [];
_a283 = level.teams;
_k283 = getFirstArrayKey( _a283 );
while ( isDefined( _k283 ) )
foreach ( team in level.teams )
{
team = _a283[ _k283 ];
level.spawn_start[ team ] = maps/mp/gametypes/_spawnlogic::getspawnpointarray( "mp_ctf_spawn_" + team + "_start" );
_k283 = getNextArrayKey( _a283, _k283 );
}
level.oneflagtimer = createservertimer( "objective", 1,4 );
level.oneflagtimer = createservertimer( "objective", 1.4 );
level.oneflagtimer.x = 11;
level.oneflagtimer.y = 120;
level.oneflagtimer.horzalign = "user_left";
@ -253,13 +247,13 @@ onstartgametype()
thread ctf();
}
hidetimerdisplayongameend( timerdisplay )
hidetimerdisplayongameend( timerdisplay ) //checked matches cerberus output
{
level waittill( "game_ended" );
timerdisplay.alpha = 0;
}
shouldplayovertimeround()
shouldplayovertimeround() //checked matches cerberus output
{
if ( isDefined( game[ "overtime_round" ] ) )
{
@ -292,7 +286,7 @@ shouldplayovertimeround()
return 0;
}
minutesandsecondsstring( milliseconds )
minutesandsecondsstring( milliseconds ) //checked matches cerberus output
{
minutes = floor( milliseconds / 60000 );
milliseconds -= minutes * 60000;
@ -307,7 +301,7 @@ minutesandsecondsstring( milliseconds )
}
}
setmatchscorehudelemforteam( team )
setmatchscorehudelemforteam( team ) //checked changed to match cerberus output
{
if ( !isDefined( game[ "overtime_round" ] ) )
{
@ -317,21 +311,18 @@ setmatchscorehudelemforteam( team )
{
self settext( minutesandsecondsstring( game[ "ctf_overtime_best_time" ] ) );
}
else if ( isDefined( game[ "ctf_overtime_first_winner" ] ) && game[ "ctf_overtime_first_winner" ] == team )
{
self settext( minutesandsecondsstring( game[ "ctf_overtime_time_to_beat" ] ) );
return;
}
else
{
if ( isDefined( game[ "ctf_overtime_first_winner" ] ) && game[ "ctf_overtime_first_winner" ] == team )
{
self settext( minutesandsecondsstring( game[ "ctf_overtime_time_to_beat" ] ) );
return;
}
else
{
self settext( &"" );
}
self settext( &"" );
}
}
onroundswitch()
onroundswitch() //checked matches cerberus output
{
if ( !isDefined( game[ "switchedsides" ] ) )
{
@ -341,7 +332,7 @@ onroundswitch()
game[ "switchedsides" ] = !game[ "switchedsides" ];
}
onendgame( winningteam )
onendgame( winningteam ) //checked matches cerberus output
{
if ( isDefined( game[ "overtime_round" ] ) )
{
@ -362,7 +353,7 @@ onendgame( winningteam )
}
}
onroundendgame( winningteam )
onroundendgame( winningteam ) //checked changed to match cerberus output
{
if ( isDefined( game[ "overtime_round" ] ) )
{
@ -383,24 +374,17 @@ onroundendgame( winningteam )
level.enddefeatreasontext = &"MP_ONE_FLAG_CTF_OVERTIME_DEFEAT_DID_NOT_DEFEND";
}
}
else
else if ( !isDefined( winningteam ) || winningteam == "tie" )
{
if ( !isDefined( winningteam ) || winningteam == "tie" )
{
return "tie";
}
return "tie";
}
return winningteam;
}
if ( level.roundscorecarry == 0 )
{
_a451 = level.teams;
_k451 = getFirstArrayKey( _a451 );
while ( isDefined( _k451 ) )
foreach ( team in level.teams )
{
team = _a451[ _k451 ];
[[ level._setteamscore ]]( team, game[ "roundswon" ][ team ] );
_k451 = getNextArrayKey( _a451, _k451 );
}
winner = maps/mp/gametypes/_globallogic::determineteamwinnerbygamestat( "roundswon" );
}
@ -411,7 +395,7 @@ onroundendgame( winningteam )
return winner;
}
onspawnplayerunified()
onspawnplayerunified() //checked matches cerberus output
{
self.isflagcarrier = 0;
self.flagcarried = undefined;
@ -419,7 +403,7 @@ onspawnplayerunified()
maps/mp/gametypes/_spawning::onspawnplayer_unified();
}
onspawnplayer( predictedspawn )
onspawnplayer( predictedspawn ) //checked matches cerberus output
{
self.isflagcarrier = 0;
self.flagcarried = undefined;
@ -441,9 +425,11 @@ onspawnplayer( predictedspawn )
{
spawnpoint = maps/mp/gametypes/_spawnlogic::getspawnpoint_nearteam( level.spawn_allies );
}
/*
/#
assert( isDefined( spawnpoint ) );
#/
*/
if ( predictedspawn )
{
self predictspawnpoint( spawnpoint.origin, spawnpoint.angles );
@ -454,7 +440,7 @@ onspawnplayer( predictedspawn )
}
}
updategametypedvars()
updategametypedvars() //checked matches cerberus output
{
level.flagcapturetime = getgametypesetting( "captureTime" );
level.flagtouchreturntime = getgametypesetting( "defuseTime" );
@ -475,7 +461,7 @@ updategametypedvars()
}
}
createflag( trigger )
createflag( trigger ) //checked matches cerberus output
{
if ( isDefined( trigger.target ) )
{
@ -543,7 +529,7 @@ createflag( trigger )
return flag;
}
createflagzone( trigger )
createflagzone( trigger ) //checked changed to match cerberus output
{
visuals = [];
entityteam = trigger.script_team;
@ -551,7 +537,7 @@ createflagzone( trigger )
{
entityteam = getotherteam( entityteam );
}
flagzone = maps/mp/gametypes/_gameobjects::createuseobject( entityteam, trigger, visuals, ( 0, 0, -1 ), istring( entityteam + "_base" ) );
flagzone = maps/mp/gametypes/_gameobjects::createuseobject( entityteam, trigger, visuals, ( 0, 0, 0 ), istring( entityteam + "_base" ) );
flagzone maps/mp/gametypes/_gameobjects::allowuse( "friendly" );
flagzone maps/mp/gametypes/_gameobjects::setusetime( 0 );
flagzone maps/mp/gametypes/_gameobjects::setusetext( &"MP_CAPTURING_FLAG" );
@ -562,7 +548,7 @@ createflagzone( trigger )
flag = level.teamflags[ entityteam ];
flag.flagbase = flagzone;
flagzone.flag = flag;
tracestart = trigger.origin + vectorScale( ( 0, 0, -1 ), 32 );
tracestart = trigger.origin + vectorScale( ( 0, 0, 1 ), 32 );
traceend = trigger.origin + vectorScale( ( 0, 0, -1 ), 32 );
trace = bullettrace( tracestart, traceend, 0, undefined );
upangles = vectorToAngle( trace[ "normal" ] );
@ -574,7 +560,7 @@ createflagzone( trigger )
return flagzone;
}
createflaghint( team, origin )
createflaghint( team, origin ) //checked matches cerberus output
{
radius = 128;
height = 64;
@ -586,7 +572,7 @@ createflaghint( team, origin )
return trigger;
}
ctf()
ctf() //checked changed to match cerberus output
{
level.flags = [];
level.teamflags = [];
@ -627,38 +613,33 @@ ctf()
flag_triggers = getentarray( "ctf_flag_pickup_trig", "targetname" );
if ( !isDefined( flag_triggers ) || flag_triggers.size != 2 )
{
/*
/#
maps/mp/_utility::error( "Not enough ctf_flag_pickup_trig triggers found in map. Need two." );
#/
*/
return;
}
index = 0;
while ( index < flag_triggers.size )
for ( index = 0; index < flag_triggers.size; index++ )
{
trigger = flag_triggers[ index ];
flag = createflag( trigger );
team = flag maps/mp/gametypes/_gameobjects::getownerteam();
level.flags[ level.flags.size ] = flag;
level.teamflags[ team ] = flag;
index++;
}
primaryflags = getentarray( "flag_primary", "targetname" );
secondaryflags = getentarray( "flag_secondary", "targetname" );
domflags = [];
index = 0;
while ( index < primaryflags.size )
for ( index = 0; index < primaryflags.size; index++ )
{
domflags[ domflags.size ] = primaryflags[ index ];
index++;
}
index = 0;
while ( index < secondaryflags.size )
for ( index = 0; index < secondaryflags.size; index++ )
{
domflags[ domflags.size ] = secondaryflags[ index ];
index++;
}
index = 0;
while ( index < domflags.size )
for ( index = 0; index < domflags.size; index++ )
{
trigger = domflags[ index ];
if ( trigger.script_label == "_b" )
@ -669,18 +650,18 @@ ctf()
level.neutralflag = flag;
flag maps/mp/gametypes/_gameobjects::allowcarry( "any" );
}
index++;
}
flag_zones = getentarray( "ctf_flag_zone_trig", "targetname" );
if ( !isDefined( flag_zones ) || flag_zones.size != 2 )
{
/*
/#
maps/mp/_utility::error( "Not enough ctf_flag_zone_trig triggers found in map. Need two." );
#/
*/
return;
}
index = 0;
while ( index < flag_zones.size )
for ( index = 0; index < flag_zones.size; index++ )
{
trigger = flag_zones[ index ];
flagzone = createflagzone( trigger );
@ -690,19 +671,18 @@ ctf()
level.flaghints[ team ] = createflaghint( team, trigger.origin );
facing_angle = getDvarInt( "scr_ctf_spawnPointFacingAngle" );
setspawnpointsbaseweight( getotherteamsmask( team ), trigger.origin, facing_angle, level.spawnsystem.objective_facing_bonus );
index++;
}
createreturnmessageelems();
}
ctf_icon_hide()
ctf_icon_hide() //checked matches cerberus output
{
level waittill( "game_ended" );
level.teamflags[ "allies" ] maps/mp/gametypes/_gameobjects::setvisibleteam( "none" );
level.teamflags[ "axis" ] maps/mp/gametypes/_gameobjects::setvisibleteam( "none" );
}
removeinfluencers()
removeinfluencers() //checked matches cerberus output
{
if ( isDefined( self.spawn_influencer_enemy_carrier ) )
{
@ -721,19 +701,15 @@ removeinfluencers()
}
}
ondrop( player )
ondrop( player ) //checked changed to match cerberus output
{
if ( isDefined( player ) )
{
player clearclientflag( 0 );
}
_a825 = level.flagzones;
_k825 = getFirstArrayKey( _a825 );
while ( isDefined( _k825 ) )
foreach ( goal in level.flagzones )
{
goal = _a825[ _k825 ];
goal maps/mp/gametypes/_gameobjects::setflags( 0 );
_k825 = getNextArrayKey( _a825, _k825 );
}
otherteam = self maps/mp/gametypes/_gameobjects::getownerteam();
team = getotherteam( otherteam );
@ -810,7 +786,7 @@ ondrop( player )
self.spawn_influencer_dropped = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, flag_origin, ss.ctf_dropped_influencer_radius, ss.ctf_dropped_influencer_score, player_team_mask | enemy_team_mask, "ctf_flag_dropped,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( ss.ctf_dropped_influencer_score_curve ), level.idleflagreturntime, self.trigger );
}
onpickup( player )
onpickup( player ) //checked changed to match cerberus output
{
carrierkilledby = self.carrierkilledby;
self.carrierkilledby = undefined;
@ -821,16 +797,12 @@ onpickup( player )
}
player addplayerstatwithgametype( "PICKUPS", 1 );
self.ownerteam = player.team;
_a945 = level.flagzones;
_k945 = getFirstArrayKey( _a945 );
while ( isDefined( _k945 ) )
foreach ( goal in level.flagzones )
{
goal = _a945[ _k945 ];
if ( goal.ownerteam != player.team )
{
goal maps/mp/gametypes/_gameobjects::setflags( 1 );
}
_k945 = getNextArrayKey( _a945, _k945 );
}
if ( level.touchreturn )
{
@ -880,7 +852,7 @@ onpickup( player )
self.spawn_influencer_friendly_carrier = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, player.origin, ss.ctf_friendly_carrier_influencer_radius, ss.ctf_friendly_carrier_influencer_score, player_team_mask, "ctf_flag_friendly_carrier,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( ss.ctf_friendly_carrier_influencer_score_curve ), 0, player );
}
watchforscore()
watchforscore() //checked changed to match cerberus output
{
level endon( "game_ended" );
self endon( "death" );
@ -897,21 +869,13 @@ watchforscore()
flag maps/mp/gametypes/_gameobjects::setvisibleteam( "none" );
flag maps/mp/gametypes/_gameobjects::returnhome();
flag.visuals[ 0 ] hide();
_a1063 = level.flags;
_k1063 = getFirstArrayKey( _a1063 );
while ( isDefined( _k1063 ) )
foreach ( baseflag in level.flags )
{
baseflag = _a1063[ _k1063 ];
baseflag.visuals[ 0 ] hide();
_k1063 = getNextArrayKey( _a1063, _k1063 );
}
_a1067 = level.flagzones;
_k1067 = getFirstArrayKey( _a1067 );
while ( isDefined( _k1067 ) )
foreach ( goal in level.flagzones )
{
goal = _a1067[ _k1067 ];
goal maps/mp/gametypes/_gameobjects::setflags( 0 );
_k1067 = getNextArrayKey( _a1067, _k1067 );
}
level.oneflagtimer.label = game[ "strings" ][ "flag_respawning_in" ];
level.oneflagtimer settimer( level.flagrespawntime );
@ -926,17 +890,19 @@ watchforscore()
}
}
onpickupmusicstate( player )
onpickupmusicstate( player ) //checked changed at own discretion
{
self endon( "disconnect" );
self endon( "death" );
wait 6;
if ( player.isflagcarrier )
{
//added from bo1 ctf.gsc
player thread maps\mp\gametypes\_globallogic_audio::set_music_on_player( "SUSPENSE", false, false);
}
}
ishome()
ishome() //checked matches cerberus output
{
if ( isDefined( self.carrier ) )
{
@ -949,7 +915,7 @@ ishome()
return 1;
}
returnflag()
returnflag() //checked matches cerberus output
{
team = self maps/mp/gametypes/_gameobjects::getownerteam();
otherteam = getotherteam( team );
@ -972,7 +938,7 @@ returnflag()
maps/mp/gametypes/_globallogic_audio::leaderdialog( "theyreturn_flag", otherteam, "ctf_flag" );
}
oncapture( player )
oncapture( player ) //checked matches cerberus output
{
team = player.pers[ "team" ];
enemyteam = getotherteam( team );
@ -1015,13 +981,13 @@ oncapture( player )
flag removeinfluencers();
}
giveflagcapturexp( player )
giveflagcapturexp( player ) //checked matches cerberus output
{
maps/mp/_scoreevents::processscoreevent( "flag_capture", player );
player recordgameevent( "capture" );
}
onreset()
onreset() //checked matches cerberus output
{
update_hints();
team = self maps/mp/gametypes/_gameobjects::getownerteam();
@ -1032,7 +998,7 @@ onreset()
self.visuals[ 0 ] clearclientflag( 6 );
}
getotherflag( flag )
getotherflag( flag ) //checked matches cerberus output
{
if ( flag == level.flags[ 0 ] )
{
@ -1041,7 +1007,7 @@ getotherflag( flag )
return level.flags[ 0 ];
}
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration )
onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shitloc, psoffsettime, deathanimduration ) //checked changed to match cerberus output
{
if ( isDefined( attacker ) && isplayer( attacker ) )
{
@ -1144,10 +1110,9 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
}
if ( isDefined( attacker ) && isplayer( attacker ) && attacker.pers[ "team" ] != self.pers[ "team" ] )
{
while ( isDefined( self.flagcarried ) )
if ( isDefined( self.flagcarried ) )
{
index = 0;
while ( index < level.flags.size )
for ( index = 0; index < level.flags.size; index++ )
{
currentflag = level.flags[ index ];
if ( currentflag.ownerteam == self.team )
@ -1162,10 +1127,6 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
}
}
}
else
{
index++;
}
}
}
attacker recordgameevent( "kill_carrier" );
@ -1173,32 +1134,32 @@ onplayerkilled( einflictor, attacker, idamage, smeansofdeath, sweapon, vdir, shi
}
}
createreturnmessageelems()
createreturnmessageelems() //checked matches cerberus output
{
level.returnmessageelems = [];
level.returnmessageelems[ "allies" ][ "axis" ] = createservertimer( "objective", 1,4, "allies" );
level.returnmessageelems[ "allies" ][ "axis" ] = createservertimer( "objective", 1.4, "allies" );
level.returnmessageelems[ "allies" ][ "axis" ] setpoint( "TOPRIGHT", "TOPRIGHT", 0, 0 );
level.returnmessageelems[ "allies" ][ "axis" ].label = &"MP_ENEMY_FLAG_RETURNING_IN";
level.returnmessageelems[ "allies" ][ "axis" ].alpha = 0;
level.returnmessageelems[ "allies" ][ "axis" ].archived = 0;
level.returnmessageelems[ "allies" ][ "allies" ] = createservertimer( "objective", 1,4, "allies" );
level.returnmessageelems[ "allies" ][ "allies" ] = createservertimer( "objective", 1.4, "allies" );
level.returnmessageelems[ "allies" ][ "allies" ] setpoint( "TOPRIGHT", "TOPRIGHT", 0, 20 );
level.returnmessageelems[ "allies" ][ "allies" ].label = &"MP_YOUR_FLAG_RETURNING_IN";
level.returnmessageelems[ "allies" ][ "allies" ].alpha = 0;
level.returnmessageelems[ "allies" ][ "allies" ].archived = 0;
level.returnmessageelems[ "axis" ][ "allies" ] = createservertimer( "objective", 1,4, "axis" );
level.returnmessageelems[ "axis" ][ "allies" ] = createservertimer( "objective", 1.4, "axis" );
level.returnmessageelems[ "axis" ][ "allies" ] setpoint( "TOPRIGHT", "TOPRIGHT", 0, 0 );
level.returnmessageelems[ "axis" ][ "allies" ].label = &"MP_ENEMY_FLAG_RETURNING_IN";
level.returnmessageelems[ "axis" ][ "allies" ].alpha = 0;
level.returnmessageelems[ "axis" ][ "allies" ].archived = 0;
level.returnmessageelems[ "axis" ][ "axis" ] = createservertimer( "objective", 1,4, "axis" );
level.returnmessageelems[ "axis" ][ "axis" ] = createservertimer( "objective", 1.4, "axis" );
level.returnmessageelems[ "axis" ][ "axis" ] setpoint( "TOPRIGHT", "TOPRIGHT", 0, 20 );
level.returnmessageelems[ "axis" ][ "axis" ].label = &"MP_YOUR_FLAG_RETURNING_IN";
level.returnmessageelems[ "axis" ][ "axis" ].alpha = 0;
level.returnmessageelems[ "axis" ][ "axis" ].archived = 0;
}
returnflagaftertimemsg( time )
returnflagaftertimemsg( time ) //checked matches cerberus output
{
if ( level.touchreturn || level.idleflagreturntime == 0 )
{
@ -1215,19 +1176,23 @@ returnflagaftertimemsg( time )
}
}
returnflaghudelems( time )
returnflaghudelems( time ) //checked matches cerberus output
{
self endon( "picked_up" );
level endon( "game_ended" );
ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam();
/*
/#
assert( !level.returnmessageelems[ "axis" ][ ownerteam ].alpha );
#/
*/
level.returnmessageelems[ "axis" ][ ownerteam ].alpha = 1;
level.returnmessageelems[ "axis" ][ ownerteam ] settimer( time );
/*
/#
assert( !level.returnmessageelems[ "allies" ][ ownerteam ].alpha );
#/
*/
level.returnmessageelems[ "allies" ][ ownerteam ].alpha = 1;
level.returnmessageelems[ "allies" ][ ownerteam ] settimer( time );
if ( time <= 0 )
@ -1241,16 +1206,16 @@ returnflaghudelems( time )
return 1;
}
clearreturnflaghudelems()
clearreturnflaghudelems() //checked matches cerberus output
{
ownerteam = self maps/mp/gametypes/_gameobjects::getownerteam();
level.returnmessageelems[ "allies" ][ ownerteam ].alpha = 0;
level.returnmessageelems[ "axis" ][ ownerteam ].alpha = 0;
}
resetflagbaseeffect()
resetflagbaseeffect() //checked matches cerberus output
{
wait 0,1;
wait 0.1;
if ( isDefined( self.baseeffect ) )
{
self.baseeffect delete();
@ -1265,7 +1230,7 @@ resetflagbaseeffect()
triggerfx( self.baseeffect );
}
turn_on()
turn_on() //checked matches cerberus output
{
if ( level.hardcoremode )
{
@ -1274,12 +1239,12 @@ turn_on()
self.origin = self.original_origin;
}
turn_off()
turn_off() //checked matches cerberus output
{
self.origin = ( self.original_origin[ 0 ], self.original_origin[ 1 ], self.original_origin[ 2 ] - 10000 );
}
update_hints()
update_hints() //checked matches cerberus output
{
allied_flag = level.teamflags[ "allies" ];
axis_flag = level.teamflags[ "axis" ];
@ -1305,7 +1270,7 @@ update_hints()
}
}
claim_trigger( trigger )
claim_trigger( trigger ) //checked matches cerberus output
{
self endon( "disconnect" );
self clientclaimtrigger( trigger );
@ -1313,7 +1278,7 @@ claim_trigger( trigger )
self clientreleasetrigger( trigger );
}
createflagspawninfluencer( entityteam )
createflagspawninfluencer( entityteam ) //checked matches cerberus output
{
ctf_friendly_base_influencer_score = level.spawnsystem.ctf_friendly_base_influencer_score;
ctf_friendly_base_influencer_score_curve = level.spawnsystem.ctf_friendly_base_influencer_score_curve;
@ -1328,7 +1293,7 @@ createflagspawninfluencer( entityteam )
self.spawn_influencer_enemy = addsphereinfluencer( level.spawnsystem.einfluencer_type_game_mode, self.trigger.origin, ctf_enemy_base_influencer_radius, ctf_enemy_base_influencer_score, other_team_mask, "ctf_enemy_base,r,s", maps/mp/gametypes/_spawning::get_score_curve_index( ctf_enemy_base_influencer_score_curve ) );
}
ctf_gamemodespawndvars( reset_dvars )
ctf_gamemodespawndvars( reset_dvars ) //checked matches cerberus output
{
ss = level.spawnsystem;
ss.ctf_friendly_base_influencer_score = set_dvar_float_if_unset( "scr_spawn_ctf_friendly_base_influencer_score", "0", reset_dvars );
@ -1348,7 +1313,7 @@ ctf_gamemodespawndvars( reset_dvars )
ss.ctf_dropped_influencer_radius = set_dvar_float_if_unset( "scr_spawn_ctf_dropped_influencer_radius", "" + ( 10 * get_player_height() ), reset_dvars );
}
ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon )
ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon ) //checked matches cerberus output
{
teamkill_penalty = maps/mp/gametypes/_globallogic_defaults::default_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon );
if ( isDefined( self.isflagcarrier ) && self.isflagcarrier )
@ -1358,7 +1323,7 @@ ctf_getteamkillpenalty( einflictor, attacker, smeansofdeath, sweapon )
return teamkill_penalty;
}
ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon )
ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon ) //checked matches cerberus output
{
teamkill_score = maps/mp/gametypes/_rank::getscoreinfovalue( "kill" );
if ( isDefined( self.isflagcarrier ) && self.isflagcarrier )
@ -1367,3 +1332,5 @@ ctf_getteamkillscore( einflictor, attacker, smeansofdeath, sweapon )
}
return int( teamkill_score );
}

View File

@ -23,13 +23,6 @@ patch_mp/maps/mp/bots/_bot.gsc
patch_mp/maps/mp/bots/_bot_combat.gsc
patch_mp/maps/mp/bots/_bot_loadout.gsc
patch_mp/maps/mp/gametypes/conf.gsc
patch_mp/maps/mp/gametypes/dm.gsc
patch_mp/maps/mp/gametypes/gun.gsc
patch_mp/maps/mp/gametypes/oic.gsc
patch_mp/maps/mp/gametypes/sas.gsc
patch_mp/maps/mp/gametypes/shrp.gsc
patch_mp/maps/mp/gametypes/tdm.gsc
patch_mp/maps/mp/gametypes/_callbacksetup.gsc
patch_mp/maps/mp/gametypes/_damagefeedback.gsc
patch_mp/maps/mp/gametypes/_healthoverlay.gsc
@ -40,6 +33,20 @@ patch_mp/maps/mp/gametypes/_perplayer.gsc
patch_mp/maps/mp/gametypes/_serversettings.gsc
patch_mp/maps/mp/gametypes/_tweakables.gsc
patch_mp/maps/mp/gametypes/_weapon_utils.gsc
patch_mp/maps/mp/gametypes/conf.gsc
patch_mp/maps/mp/gametypes/ctf.gsc
patch_mp/maps/mp/gametypes/dem.gsc
patch_mp/maps/mp/gametypes/dm.gsc
patch_mp/maps/mp/gametypes/dom.gsc
patch_mp/maps/mp/gametypes/gun.gsc
patch_mp/maps/mp/gametypes/hq.gsc
patch_mp/maps/mp/gametypes/koth.gsc
patch_mp/maps/mp/gametypes/oic.gsc
patch_mp/maps/mp/gametypes/oneflag.gsc
patch_mp/maps/mp/gametypes/sas.gsc
patch_mp/maps/mp/gametypes/sd.gsc
patch_mp/maps/mp/gametypes/shrp.gsc
patch_mp/maps/mp/gametypes/tdm.gsc
```
### The following scripts are not checked yet, uploaded to setup a baseline:
```
@ -81,13 +88,6 @@ patch_mp/maps/mp/gametypes/_spectating.gsc
patch_mp/maps/mp/gametypes/_wager.gsc
patch_mp/maps/mp/gametypes/_weaponobjects.gsc
patch_mp/maps/mp/gametypes/_weapons.gsc
patch_mp/maps/mp/gametypes/ctf.gsc
patch_mp/maps/mp/gametypes/dem.gsc
patch_mp/maps/mp/gametypes/dom.gsc
patch_mp/maps/mp/gametypes/hq.gsc
patch_mp/maps/mp/gametypes/koth.gsc
patch_mp/maps/mp/gametypes/oneflag.gsc
patch_mp/maps/mp/gametypes/sd.gsc
```
### The following scipts are dev scripts filled with dev calls making them useless to modify for now
```