Added MW3 Scripts

This commit is contained in:
InfinityLoader
2023-10-27 03:47:01 -04:00
commit d559c1d414
981 changed files with 539970 additions and 0 deletions

View File

@ -0,0 +1,72 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_areas.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 5
* Decompile Time: 113 ms
* Timestamp: 10/27/2023 2:27:34 AM
*******************************************************************/
//Function Number: 1
init()
{
level.softlandingtriggers = getentarray("trigger_multiple_softlanding","classname");
var_00 = getentarray("destructible_vehicle","targetname");
foreach(var_02 in level.softlandingtriggers)
{
if(var_02.script_type != "car")
{
continue;
}
foreach(var_04 in var_00)
{
if(distance(var_02.origin,var_04.origin) > 64)
{
continue;
}
var_02.destructible = var_04;
}
}
thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.softlanding = undefined;
var_00 thread softlandingwaiter();
}
}
//Function Number: 3
func_2DC4(param_00)
{
self.softlanding = param_00;
}
//Function Number: 4
func_2DC5(param_00)
{
self.softlanding = undefined;
}
//Function Number: 5
softlandingwaiter()
{
self endon("disconnect");
for(;;)
{
self waittill("soft_landing",var_00,var_01);
if(!isdefined(var_00.destructible))
{
continue;
}
}
}

View File

@ -0,0 +1,29 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_art.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 4
* Decompile Time: 57 ms
* Timestamp: 10/27/2023 2:28:54 AM
*******************************************************************/
//Function Number: 1
main()
{
}
//Function Number: 2
func_1684()
{
}
//Function Number: 3
fovslidercheck()
{
}
//Function Number: 4
func_16B2()
{
}

View File

@ -0,0 +1,92 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_audio.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 10
* Decompile Time: 187 ms
* Timestamp: 10/27/2023 2:27:35 AM
*******************************************************************/
//Function Number: 1
func_2B8B()
{
if(!isdefined(level.audio))
{
level.audio = spawnstruct();
}
func_3351();
func_3356();
level.onplayerconnectaudioinit = ::onplayerconnectaudioinit;
}
//Function Number: 2
onplayerconnectaudioinit()
{
func_3355("default");
}
//Function Number: 3
func_3351()
{
func_3352("default","generic",0.15,0.9,2);
}
//Function Number: 4
func_3352(param_00,param_01,param_02,param_03,param_04)
{
var_05 = [];
is_roomtype_valid(param_01);
level.audio.reverb_settings[param_01] = var_41;
}
//Function Number: 5
is_roomtype_valid(param_00)
{
}
//Function Number: 6
func_3355(param_00)
{
if(!isdefined(level.audio.reverb_settings[param_00]))
{
var_01 = level.audio.reverb_settings["default"];
}
else
{
var_01 = level.audio.reverb_settings[var_01];
}
self setreverb("snd_enveffectsprio_level",var_01["roomtype"],var_01["drylevel"],var_01["wetlevel"],var_01["fadetime"]);
}
//Function Number: 7
func_3356()
{
level.audio.whizby_settings = [];
set_whizby_radius(15,30,50);
set_whizby_spread(150,250,350);
}
//Function Number: 8
set_whizby_radius(param_00,param_01,param_02)
{
level.audio.whizby_settings["radius"] = [param_00,param_01,param_02];
}
//Function Number: 9
set_whizby_spread(param_00,param_01,param_02)
{
level.audio.whizby_settings["spread"] = [param_00,param_01,param_02];
}
//Function Number: 10
func_335A()
{
var_00 = level.audio.whizby_settings;
var_01 = var_00["spread"];
var_02 = var_00["radius"];
self setwhizbyspreads(var_01[0],var_01[1],var_01[2]);
self setwhizbyradii(var_02[0],var_02[1],var_02[2]);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,67 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_createfx.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 4
* Decompile Time: 85 ms
* Timestamp: 10/27/2023 2:27:39 AM
*******************************************************************/
//Function Number: 1
createfx()
{
level.func_position_player = ::common_scripts\utility::void;
level.func_position_player_get = ::func_position_player_get;
level.func_loopfxthread = ::common_scripts\_fx::loopfxthread;
level.func_oneshotfxthread = ::common_scripts\_fx::oneshotfxthread;
level.func_create_loopsound = ::common_scripts\_fx::create_loopsound;
level.func_updatefx = ::common_scripts\_createfx::restart_fx_looper;
level.func_process_fx_rotater = ::common_scripts\_createfx::process_fx_rotater;
level.mp_createfx = 1;
level.callbackstartgametype = ::common_scripts\utility::void;
level.callbackplayerconnect = ::common_scripts\utility::void;
level.callbackplayerdisconnect = ::common_scripts\utility::void;
level.callbackplayerdamage = ::common_scripts\utility::void;
level.callbackplayerkilled = ::common_scripts\utility::void;
level.callbackcodeendgame = ::common_scripts\utility::void;
level.callbackplayerlaststand = ::common_scripts\utility::void;
level.callbackplayerconnect = ::callback_playerconnect;
level.callbackplayermigrated = ::common_scripts\utility::void;
thread common_scripts\_createfx::func_get_level_fx();
common_scripts\_createfx::createfx_common();
level waittill("eternity");
}
//Function Number: 2
func_position_player_get(param_00)
{
return level.player.origin;
}
//Function Number: 3
callback_playerconnect()
{
self waittill("begin");
if(!isdefined(level.player))
{
var_00 = getentarray("mp_global_intermission","classname");
self spawn(var_00[0].origin,var_00[0].angles);
maps\mp\gametypes\_playerlogic::func_2B67("playing","");
self.maxhealth = 10000000;
self.health = 10000000;
level.player = self;
thread common_scripts\_createfx::createfxlogic();
thread func_2B86();
return;
}
kick(self getentitynumber());
}
//Function Number: 4
func_2B86()
{
level.player openpopupmenu("painter_mp");
level.player closepopupmenu("painter_mp");
}

View File

@ -0,0 +1,653 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_crib.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 36
* Decompile Time: 573 ms
* Timestamp: 10/27/2023 2:28:58 AM
*******************************************************************/
//Function Number: 1
init()
{
precacheshellshock("frag_grenade_mp");
radial_button_definitions();
radial_init();
func_3384();
func_18B7();
}
//Function Number: 2
radial_button_definitions()
{
func_3368("main","player_view1_start","player_view1_end");
var_00 = func_336A("main","Primary Weapon","radial_weapons_primary",::func_337F);
var_01 = func_336A("main","Secondary Weapon","radial_weapons_secondary",::func_3380);
var_02 = func_336A("main","Gears","radial_gears",::action_gears);
var_03 = func_336A("main","Kill Streaks","radial_killstreaks",::func_3382);
var_04 = func_336A("main","Leaderboards","radial_leaderboards",::func_3383);
func_3368("gears","player_view2_start","player_view2_end");
func_3368("weapons_primary","player_view3_start","player_view3_end");
func_3368("weapons_secondary","player_view3_start","player_view3_end");
func_3368("killstreak","player_view4_start","player_view4_end");
func_3368("leaderboards","player_view5_start","player_view5_end");
}
//Function Number: 3
radial_init()
{
foreach(var_01 in level.radial_button_group)
{
func_3374(var_01);
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
if(isdefined(var_01[var_02 + 1]))
{
var_03 = getmidangle(var_01[var_02].var_335E,var_01[var_02 + 1].var_335E);
var_01[var_02].end_angle = var_03;
var_01[var_02 + 1].var_3360 = var_03;
continue;
}
var_03 = getmidangle(var_01[var_02].var_335E,var_01[0].var_335E) + 180;
if(var_03 > 360)
{
var_03 = var_03 - 360;
}
var_01[var_02].end_angle = var_03;
var_01[0].var_3360 = var_03;
}
}
thread updateselectedbutton();
thread watchselectbuttonpress();
thread func_3373();
thread func_3361();
}
//Function Number: 4
func_3361()
{
level endon("game_ended");
level.var_3362 = 1;
for(;;)
{
if(!isdefined(level.observer))
{
wait 0.05;
continue;
}
var_00 = 1;
while(!level.observer buttonpressed("BUTTON_Y"))
{
wait 0.05;
}
level.observer playsound("mouse_click");
if(var_00)
{
level.var_3362 = level.var_3362 * -1;
var_00 = 0;
}
while(level.observer buttonpressed("BUTTON_Y"))
{
wait 0.05;
}
}
}
//Function Number: 5
func_18B7()
{
level thread onplayerconnect();
level thread func_3364();
}
//Function Number: 6
func_3364()
{
level waittill("game_ended");
setdvar("cg_draw2d",1);
}
//Function Number: 7
onplayerconnect()
{
level waittill("connected",var_00);
var_00 thread func_3365();
var_00 waittill("spawned_player");
wait 1;
var_00 takeallweapons();
setdvar("cg_draw2d",0);
if(!isdefined(var_00))
{
return;
}
else
{
level.observer = var_00;
}
var_00 thread func_3366();
zoom_to_radial_menu("main");
}
//Function Number: 8
func_3365()
{
self endon("disconnect");
var_00 = "autoassign";
while(!isdefined(self.pers["team"]))
{
wait 0.05;
}
self notify("menuresponse",game["menu_team"],var_00);
wait 0.5;
var_01 = getarraykeys(level.classmap);
var_02 = [];
for(var_03 = 0;var_03 < var_01.size;var_03++)
{
if(!issubstr(var_01[var_03],"custom"))
{
var_02[var_02.size] = var_01[var_03];
}
}
for(;;)
{
var_04 = var_02[0];
self notify("menuresponse","changeclass",var_04);
self waittill("spawned_player");
wait 0.1;
}
}
//Function Number: 9
func_3366()
{
level endon("game_ended");
self endon("disconnect");
for(;;)
{
var_00 = self getnormalizedmovement();
var_01 = vectortoangles(var_00);
level.rs_angle = int(var_01[1]);
wait 0.05;
}
}
//Function Number: 10
func_3368(param_00,param_01,param_02)
{
if(isdefined(level.radial_button_group) && level.radial_button_group.size)
{
}
var_03 = getent(param_02,"targetname");
var_04 = vectornormalize(anglestoforward(var_03.angles)) * 40;
level.radial_button_group[param_00] = [];
level.var_3369[param_00]["view_start"] = param_01;
level.var_3369[param_00]["view_pos"] = var_03.origin + var_04;
level.var_3369[param_00]["player_view_pos"] = var_03.origin;
level.var_3369[param_00]["view_angles"] = var_03.angles;
}
//Function Number: 11
func_336A(param_00,param_01,param_02,param_03)
{
var_04 = getent(param_02,"targetname");
var_05 = func_337A(param_00,var_04);
var_06 = spawnstruct();
var_06.pos = var_04.origin;
var_06.label = param_01;
var_06.font_size = 1;
var_06.font_color = (0.5,0.5,1);
var_06.var_335E = var_05;
var_06.action_func = param_03;
var_06.var_336E = 8;
level.radial_button_group[param_00][level.radial_button_group[param_00].size] = var_06;
return var_06;
}
//Function Number: 12
updateselectedbutton()
{
level endon("game_ended");
for(;;)
{
if(!isdefined(level.radial_button_current_group))
{
wait 0.05;
continue;
}
var_00 = level.var_3371;
foreach(var_02 in level.radial_button_group[level.radial_button_current_group])
{
if(func_337D(var_02.var_3360,var_02.end_angle))
{
level.var_3371 = var_02;
continue;
}
var_02.font_color = (0.5,0.5,1);
}
if(isdefined(level.var_3371))
{
level.var_3371.font_color = (1,1,0.5);
if(isdefined(var_00) && var_00 != level.var_3371)
{
level.observer playsound("mouse_over");
}
}
wait 0.05;
}
}
//Function Number: 13
watchselectbuttonpress()
{
level endon("game_ended");
for(;;)
{
if(!isdefined(level.observer))
{
wait 0.05;
continue;
}
var_00 = 1;
while(!level.observer buttonpressed("BUTTON_A"))
{
wait 0.05;
}
level.observer playsound("mouse_click");
if(isdefined(level.var_3371) && var_00)
{
level.var_3371 notify("select_button_pressed");
[[ level.var_3371.action_func ]]();
var_00 = 0;
}
while(level.observer buttonpressed("BUTTON_A"))
{
wait 0.05;
}
}
}
//Function Number: 14
func_3373()
{
level endon("game_ended");
for(;;)
{
if(!isdefined(level.observer))
{
wait 0.05;
continue;
}
var_00 = 1;
while(!level.observer buttonpressed("BUTTON_X"))
{
wait 0.05;
}
level.observer playsound("mouse_click");
if(var_00)
{
action_back();
var_00 = 0;
}
while(level.observer buttonpressed("BUTTON_X"))
{
wait 0.05;
}
}
}
//Function Number: 15
func_3374(param_00)
{
for(var_01 = 0;var_01 < param_00.size - 1;var_01++)
{
for(var_02 = 0;var_02 < param_00.size - 1 - var_01;var_02++)
{
if(param_00[var_02 + 1].var_335E < param_00[var_02].var_335E)
{
func_3375(param_00[var_02],param_00[var_02 + 1]);
}
}
}
}
//Function Number: 16
func_3375(param_00,param_01)
{
var_02 = param_00.pos;
var_03 = param_00.label;
var_04 = param_00.var_335E;
var_05 = param_00.action_func;
var_06 = param_00.var_336E;
param_00.pos = param_01.pos;
param_00.label = param_01.label;
param_00.var_335E = param_01.var_335E;
param_00.action_func = param_01.action_func;
param_00.var_336E = param_01.var_336E;
param_01.pos = var_02;
param_01.label = var_03;
param_01.var_335E = var_04;
param_01.action_func = var_05;
param_01.var_336E = var_06;
}
//Function Number: 17
draw_radial_buttons(param_00)
{
foreach(var_02 in level.radial_button_group[param_00])
{
var_02 thread draw_radial_button(param_00);
}
}
//Function Number: 18
draw_radial_button(param_00)
{
level endon("game_ended");
self endon("remove_button");
var_01 = level.var_3369[param_00]["view_pos"];
var_02 = var_01 + func_337B(self.var_335E,4);
for(;;)
{
var_03 = (1,0,0);
if(func_337D(self.var_3360,self.end_angle))
{
var_03 = (1,1,0);
}
if(isdefined(level.var_3362) && level.var_3362 > 0)
{
var_04 = var_01 + func_337B(level.rs_angle,2);
}
wait 0.05;
}
}
//Function Number: 19
zoom_to_radial_menu(param_00,param_01)
{
level.var_3371 = undefined;
if(isdefined(level.radial_button_current_group) && level.radial_button_current_group != "")
{
level.var_3379 = level.radial_button_current_group;
}
else
{
level.var_3379 = "main";
level.radial_button_current_group = "main";
}
foreach(var_03 in level.radial_button_group[level.var_3379])
{
var_03 notify("remove_button");
}
if(isdefined(param_01) && param_01)
{
level.observer func_3389(level.var_3369[level.var_3379]["view_start"],param_00);
}
else
{
level.observer go_path_by_targetname(level.var_3369[param_00]["view_start"]);
}
level thread draw_radial_buttons(param_00);
level.radial_button_current_group = param_00;
}
//Function Number: 20
func_337A(param_00,param_01)
{
var_02 = level.var_3369[param_00]["view_angles"];
var_03 = level.var_3369[param_00]["view_pos"];
var_03 = var_03 + vectornormalize(anglestoforward(var_02)) * 40;
var_04 = anglestoforward(var_02);
var_05 = vectornormalize(anglestoup(var_02));
var_06 = param_01.angles;
var_07 = param_01.origin;
var_08 = vectornormalize(vectorfromlinetopoint(var_03,var_03 + var_04,var_07));
var_09 = acos(vectordot(var_08,var_05));
if(vectordot(anglestoright(var_02),var_08) < 0)
{
var_09 = 360 - var_09;
}
return var_09;
}
//Function Number: 21
func_337B(param_00,param_01)
{
var_02 = (270 - param_00,0,0);
var_03 = anglestoforward(var_02);
var_04 = vectornormalize(var_03);
var_05 = var_04 * param_01;
return var_05;
}
//Function Number: 22
getmidangle(param_00,param_01)
{
var_02 = param_00 + param_01 + 720 / 2 - 360;
return var_02;
}
//Function Number: 23
func_337D(param_00,param_01)
{
var_02 = level.rs_angle > param_00 && level.rs_angle < 360;
var_03 = level.rs_angle > 0 && level.rs_angle < param_01;
if(param_00 > param_01)
{
var_04 = var_02 || var_03;
}
else
{
var_04 = level.rs_angle > param_01 && level.rs_angle < var_02;
}
return var_04;
}
//Function Number: 24
action_back()
{
if(isdefined(level.radial_button_current_group) && level.radial_button_current_group != "main")
{
zoom_to_radial_menu("main",1);
return;
}
}
//Function Number: 25
func_337F()
{
iprintlnbold("action_weapons_primary");
zoom_to_radial_menu("weapons_primary");
}
//Function Number: 26
func_3380()
{
iprintlnbold("action_weapons_secondary");
zoom_to_radial_menu("weapons_secondary");
}
//Function Number: 27
action_gears()
{
iprintlnbold("action_gears");
zoom_to_radial_menu("gears");
}
//Function Number: 28
func_3382()
{
iprintlnbold("action_killstreak");
zoom_to_radial_menu("killstreak");
}
//Function Number: 29
func_3383()
{
iprintlnbold("action_leaderboards");
zoom_to_radial_menu("leaderboards");
}
//Function Number: 30
func_3384()
{
level.view_paths = [];
build_path_by_targetname("player_view1_start");
build_path_by_targetname("player_view2_start");
build_path_by_targetname("player_view3_start");
build_path_by_targetname("player_view4_start");
build_path_by_targetname("player_view5_start");
}
//Function Number: 31
build_path_by_targetname(param_00)
{
level.view_paths[param_00] = [];
var_01 = getent(param_00,"targetname");
level.view_paths[param_00][level.view_paths[param_00].size] = var_01;
while(isdefined(var_01) && isdefined(var_01.target))
{
var_02 = getent(var_01.target,"targetname");
level.view_paths[param_00][level.view_paths[param_00].size] = var_02;
var_01 = var_02;
}
}
//Function Number: 32
go_path_by_targetname(param_00)
{
if(!isdefined(level.dummy_mover))
{
var_01 = level.view_paths[param_00][0];
level.dummy_mover = spawn("script_model",var_01.origin);
level.dummy_mover.angles = var_01.angles;
self setorigin(level.dummy_mover.origin - (0,0,65));
self linkto(level.dummy_mover);
wait 0.05;
self setplayerangles(level.dummy_mover.angles);
thread func_338C();
}
var_02 = 1;
var_03 = abs(distance(level.dummy_mover.origin,level.view_paths[param_00][level.view_paths[param_00].size - 1].origin));
var_02 = var_02 * var_03 / 1200;
var_02 = max(var_02,0.1);
var_04 = var_02;
if(!1)
{
var_04 = var_04 * var_02 * level.view_paths[param_00].size + 1;
}
thread func_338B(3,var_04);
foreach(var_07, var_06 in level.view_paths[param_00])
{
if(1)
{
if(var_07 != level.view_paths[param_00].size - 1)
{
continue;
}
}
level.dummy_mover moveto(var_06.origin,var_02,var_02 * 0.5,0);
level.dummy_mover rotateto(var_06.angles,var_02,var_02 * 0.5,0);
wait var_02;
}
}
//Function Number: 33
func_3389(param_00,param_01)
{
var_02 = 1;
var_03 = abs(distance(level.dummy_mover.origin,level.var_3369[param_01]["player_view_pos"]));
var_02 = var_02 * var_03 / 1200;
var_02 = max(var_02,0.1);
var_04 = var_02;
if(!1)
{
var_04 = var_04 * var_02 * level.view_paths[param_00].size + 1;
}
thread func_338B(3,var_04);
if(!1)
{
for(var_05 = level.view_paths[param_00].size - 1;var_05 >= 0;var_05--)
{
var_06 = level.view_paths[param_00][var_05];
level.dummy_mover moveto(var_06.origin,var_02);
level.dummy_mover rotateto(var_06.angles,var_02);
wait var_02;
}
}
thread func_338B(3,var_02);
var_07 = level.var_3369[param_01]["player_view_pos"];
var_08 = level.var_3369[param_01]["view_angles"];
level.dummy_mover moveto(var_07,var_02,var_02 * 0.5,0);
level.dummy_mover rotateto(var_08,var_02,var_02 * 0.5,0);
wait var_02;
}
//Function Number: 34
func_338A(param_00)
{
self setblurforplayer(20,param_00 + 0.2 / 2);
self setblurforplayer(0,param_00 + 0.2 / 2);
self shellshock("frag_grenade_mp",param_00 + 0.2);
}
//Function Number: 35
func_338B(param_00,param_01)
{
var_02 = int(param_01 / 0.05);
for(var_03 = 0;var_03 < var_02;var_03++)
{
var_04 = var_03 / var_02;
var_05 = sin(180 * var_04);
var_06 = param_00 * var_05;
setdvar("r_blur",var_06);
wait 0.05;
}
setdvar("r_blur",0);
}
//Function Number: 36
func_338C()
{
level endon("game_ended");
self endon("disconnect");
level.dummy_mover endon("remove_dummy");
for(;;)
{
self setplayerangles(level.dummy_mover.angles);
wait 0.05;
}
}

View File

@ -0,0 +1,140 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_defcon.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 4
* Decompile Time: 78 ms
* Timestamp: 10/27/2023 2:27:40 AM
*******************************************************************/
//Function Number: 1
init()
{
if(!isdefined(level.defconmode) || level.defconmode == 0)
{
return;
}
if(!isdefined(game["defcon"]))
{
game["defcon"] = 4;
}
makedvarserverinfo("scr_defcon",game["defcon"]);
level.defconstreakadd[5] = 0;
level.defconstreakadd[4] = 0;
level.defconstreakadd[3] = -1;
level.defconstreakadd[2] = -1;
level.defconstreakadd[1] = -1;
level.defconpointmod[5] = 1;
level.defconpointmod[4] = 1;
level.defconpointmod[3] = 1;
level.defconpointmod[2] = 1;
level.defconpointmod[1] = 2;
updatedefcon(game["defcon"]);
thread defconkillstreakthread();
}
//Function Number: 2
defconkillstreakwait(param_00)
{
for(;;)
{
level waittill("player_got_killstreak_" + param_00,var_01);
level notify("defcon_killstreak",param_00,var_01);
}
}
//Function Number: 3
defconkillstreakthread()
{
level endon("game_ended");
var_00 = 10;
level thread defconkillstreakwait(var_00);
level thread defconkillstreakwait(var_00 - 1);
level thread defconkillstreakwait(var_00 - 2);
level thread defconkillstreakwait(var_00 * 2);
level thread defconkillstreakwait(var_00 * 2 - 1);
level thread defconkillstreakwait(var_00 * 2 - 2);
level thread defconkillstreakwait(var_00 * 3);
level thread defconkillstreakwait(var_00 * 3 - 1);
level thread defconkillstreakwait(var_00 * 3 - 2);
for(;;)
{
level waittill("defcon_killstreak",var_01,var_02);
if(game["defcon"] <= 1)
{
continue;
}
if(var_01 % var_00 == var_00 - 2)
{
foreach(var_04 in level.players)
{
if(!isalive(var_04))
{
continue;
}
var_04 thread maps\mp\gametypes\_hud_message::playercardsplashnotify("two_from_defcon",var_02);
}
continue;
}
if(var_01 % var_00 == var_00 - 1)
{
foreach(var_04 in level.players)
{
if(!isalive(var_04))
{
continue;
}
var_04 thread maps\mp\gametypes\_hud_message::playercardsplashnotify("one_from_defcon",var_02);
}
continue;
}
updatedefcon(game["defcon"] - 1,var_02,var_01);
}
}
//Function Number: 4
updatedefcon(param_00,param_01,param_02)
{
param_00 = int(param_00);
var_03 = game["defcon"];
game["defcon"] = param_00;
level.objectivepointsmod = level.defconpointmod[param_00];
setdvar("scr_defcon",game["defcon"]);
if(isdefined(param_01))
{
param_01 notify("changed_defcon");
}
if(param_00 == var_03)
{
return;
}
if(game["defcon"] == 3 && isdefined(param_01))
{
param_01 maps\mp\killstreaks\_killstreaks::givekillstreak("airdrop_mega");
param_01 thread maps\mp\gametypes\_hud_message::func_2892("caused_defcon",param_02);
}
foreach(var_05 in level.players)
{
if(isalive(var_05))
{
var_05 thread maps\mp\gametypes\_hud_message::defconsplashnotify(game["defcon"],param_00 < var_03);
if(isdefined(param_01))
{
var_05 thread maps\mp\gametypes\_hud_message::playercardsplashnotify("changed_defcon",param_01);
}
}
}
}

View File

@ -0,0 +1,142 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_destructables.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 7
* Decompile Time: 138 ms
* Timestamp: 10/27/2023 2:27:41 AM
*******************************************************************/
//Function Number: 1
init()
{
var_00 = getentarray("destructable","targetname");
if(getdvar("scr_destructables") == "0")
{
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
var_00[var_01] delete();
}
return;
}
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
var_00[var_01] thread destructable_think();
}
}
//Function Number: 2
destructable_think()
{
var_00 = 40;
var_01 = 0;
if(isdefined(self.script_accumulate))
{
var_00 = self.script_accumulate;
}
if(isdefined(self.script_threshold))
{
var_01 = self.script_threshold;
}
if(isdefined(self.script_destructable_area))
{
var_02 = strtok(self.script_destructable_area," ");
for(var_03 = 0;var_03 < var_02.size;var_03++)
{
blockarea(var_02[var_03]);
}
}
if(isdefined(self.script_fxid))
{
self.fx = loadfx(self.script_fxid);
}
var_04 = 0;
self setcandamage(1);
for(;;)
{
self waittill("damage",var_05,var_06);
if(var_05 >= var_01)
{
var_04 = var_04 + var_05;
if(var_04 >= var_00)
{
thread func_272A();
return;
}
}
}
}
//Function Number: 3
func_272A()
{
var_00 = self;
if(isdefined(self.script_destructable_area))
{
var_01 = strtok(self.script_destructable_area," ");
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
func_272E(var_01[var_02]);
}
}
if(isdefined(var_00.fx))
{
playfx(var_00.fx,var_00.origin + (0,0,6));
}
var_00 delete();
}
//Function Number: 4
blockarea(param_00)
{
var_01 = getentarray("mp_tdm_spawn","classname");
blockentsinarea(var_01,param_00);
var_01 = getentarray("mp_dm_spawn","classname");
blockentsinarea(var_01,param_00);
}
//Function Number: 5
blockentsinarea(param_00,param_01)
{
for(var_02 = 0;var_02 < param_00.size;var_02++)
{
if(!isdefined(param_00[var_02].script_destructable_area) || param_00[var_02].script_destructable_area != param_01)
{
continue;
}
param_00[var_02].blockedoff = 1;
}
}
//Function Number: 6
func_272E(param_00)
{
var_01 = getentarray("mp_tdm_spawn","classname");
unblockentsinarea(var_01,param_00);
var_01 = getentarray("mp_dm_spawn","classname");
unblockentsinarea(var_01,param_00);
}
//Function Number: 7
unblockentsinarea(param_00,param_01)
{
for(var_02 = 0;var_02 < param_00.size;var_02++)
{
if(!isdefined(param_00[var_02].script_destructable_area) || param_00[var_02].script_destructable_area != param_01)
{
continue;
}
param_00[var_02].blockedoff = 0;
}
}

View File

@ -0,0 +1,167 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_empgrenade.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 9
* Decompile Time: 159 ms
* Timestamp: 10/27/2023 2:28:53 AM
*******************************************************************/
//Function Number: 1
init()
{
precacheshellshock("flashbang_mp");
thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread onplayerspawned();
}
}
//Function Number: 3
onplayerspawned()
{
self endon("disconnect");
for(;;)
{
self waittill("spawned_player");
thread func_27AD();
}
}
//Function Number: 4
func_27AD()
{
self endon("death");
self endon("disconnect");
self endon("faux_spawn");
self.empendtime = 0;
for(;;)
{
self waittill("emp_grenaded",var_00);
if(!isalive(self))
{
continue;
}
if(isdefined(self.usingremote))
{
continue;
}
if(maps\mp\_utility::func_27AF("specialty_empimmune"))
{
continue;
}
var_01 = 1;
var_02 = 0;
if(level.teambased && isdefined(var_00) && isdefined(var_00.pers["team"]) && var_00.pers["team"] == self.pers["team"] && var_00 != self)
{
if(level.friendlyfire == 0)
{
continue;
}
else if(level.friendlyfire == 1)
{
var_02 = 0;
var_01 = 1;
}
else if(level.friendlyfire == 2)
{
var_01 = 0;
var_02 = 1;
}
else if(level.friendlyfire == 3)
{
var_02 = 1;
var_01 = 1;
}
}
else if(isdefined(var_00))
{
var_00 notify("emp_hit");
if(var_00 != self)
{
var_00 maps\mp\gametypes\_missions::processchallenge("ch_onthepulse");
}
}
if(var_01 && isdefined(self))
{
thread func_27B0();
}
if(var_02 && isdefined(var_00))
{
var_00 thread func_27B0();
}
}
}
//Function Number: 5
func_27B0()
{
self notify("applyEmp");
self endon("applyEmp");
self endon("death");
wait 0.05;
self.var_27B1 = 10;
self.empgrenaded = 1;
self shellshock("flashbang_mp",1);
self.empendtime = gettime() + self.var_27B1 * 1000;
thread func_27B7(0.75);
self setempjammed(1);
thread func_27B3();
wait self.var_27B1;
self notify("empGrenadeTimedOut");
checktoturnoffemp();
}
//Function Number: 6
func_27B3()
{
self notify("empGrenadeDeathWaiter");
self endon("empGrenadeDeathWaiter");
self endon("empGrenadeTimedOut");
self waittill("death");
checktoturnoffemp();
}
//Function Number: 7
checktoturnoffemp()
{
self.empgrenaded = 0;
if((level.teambased && level.teamemped[self.team] || level.teamnukeemped[self.team]) || !level.teambased && isdefined(level.empplayer) && level.empplayer != self || !level.teambased && isdefined(level.nukeinfo.player) && level.nukeinfo.player != self)
{
return;
}
self setempjammed(0);
}
//Function Number: 8
func_27B7(param_00)
{
self endon("emp_rumble_loop");
self notify("emp_rumble_loop");
var_01 = gettime() + param_00 * 1000;
while(gettime() < var_01)
{
self playrumbleonentity("damage_heavy");
wait 0.05;
}
}
//Function Number: 9
func_27B8()
{
return isdefined(self.empendtime) && gettime() < self.empendtime;
}

View File

@ -0,0 +1,358 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_entityheadicons.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 10
* Decompile Time: 183 ms
* Timestamp: 10/27/2023 2:27:41 AM
*******************************************************************/
//Function Number: 1
init()
{
if(isdefined(level.initedentityheadicons))
{
return;
}
level.initedentityheadicons = 1;
game["entity_headicon_allies"] = maps\mp\gametypes\_teams::func_2770("allies");
game["entity_headicon_axis"] = maps\mp\gametypes\_teams::func_2770("axis");
precacheshader(game["entity_headicon_allies"]);
precacheshader(game["entity_headicon_axis"]);
if(!level.teambased)
{
}
}
//Function Number: 2
func_277C(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A)
{
if(!isdefined(self.entityheadicons))
{
self.entityheadicons = [];
}
if(!isdefined(param_05))
{
param_05 = 1;
}
if(!isdefined(param_06))
{
param_06 = 0.05;
}
if(!isdefined(param_07))
{
param_07 = 1;
}
if(!isdefined(param_08))
{
param_08 = 1;
}
if(!isdefined(param_09))
{
param_09 = 0;
}
if(!isdefined(param_0A))
{
param_0A = 1;
}
if(!isplayer(param_00) && param_00 == "none")
{
foreach(var_0D, var_0C in self.entityheadicons)
{
if(isdefined(var_0C))
{
var_0C destroy();
}
self.entityheadicons[var_0D] = undefined;
}
return;
}
if(isplayer(param_03))
{
if(isdefined(self.entityheadicons[param_03.guid]))
{
self.entityheadicons[param_03.guid] destroy();
self.entityheadicons[param_03.guid] = undefined;
}
if(param_04 == "")
{
return;
}
if(isdefined(self.entityheadicons[param_03.team]))
{
self.entityheadicons[param_03.team] destroy();
self.entityheadicons[param_03.team] = undefined;
}
var_0C = newclienthudelem(param_03);
self.entityheadicons[param_02.guid] = var_0D;
}
else
{
if(isdefined(self.entityheadicons[param_03]))
{
self.entityheadicons[param_03] destroy();
self.entityheadicons[param_03] = undefined;
}
if(param_04 == "")
{
return;
}
foreach(var_0E in self.entityheadicons)
{
if(var_10 == "axis" || var_10 == "allies")
{
continue;
}
var_0F = maps\mp\_utility::getplayerforguid(var_10);
if(var_0F.team == param_01)
{
self.entityheadicons[var_10] destroy();
self.entityheadicons[var_10] = undefined;
}
}
var_0C = newteamhudelem(param_01);
self.entityheadicons[param_01] = var_0C;
}
if(!isdefined(param_04) || !isdefined(param_05))
{
param_04 = 10;
param_05 = 10;
}
var_0C.archived = param_06;
var_0C.x = self.origin[0] + param_03[0];
var_0C.y = self.origin[1] + param_03[1];
var_0C.z = self.origin[2] + param_03[2];
var_0C.alpha = 0.85;
var_0C setshader(param_02,param_04,param_05);
var_0C setwaypoint(param_08,param_09,param_0A,var_0B);
var_0C thread func_2781(self,param_03,param_07);
thread func_2780();
if(isplayer(param_01))
{
var_0C thread func_277F(param_01);
}
if(isplayer(self))
{
var_0C thread func_277F(self);
}
return var_0C;
}
//Function Number: 3
func_277F(param_00)
{
self endon("death");
param_00 waittill("disconnect");
self destroy();
}
//Function Number: 4
func_2780()
{
self notify("destroyIconsOnDeath");
self endon("destroyIconsOnDeath");
self waittill("death");
foreach(var_01 in self.entityheadicons)
{
if(!isdefined(var_01))
{
continue;
}
var_01 destroy();
}
}
//Function Number: 5
func_2781(param_00,param_01,param_02)
{
self endon("death");
param_00 endon("death");
param_00 endon("disconnect");
var_03 = param_00.origin;
for(;;)
{
if(!isdefined(param_00))
{
return;
}
if(var_03 != param_00.origin)
{
var_03 = param_00.origin;
self.x = var_03[0] + param_01[0];
self.y = var_03[1] + param_01[1];
self.z = var_03[2] + param_01[2];
}
if(param_02 > 0.05)
{
self.alpha = 0.85;
self fadeovertime(param_02);
self.alpha = 0;
}
wait param_02;
}
}
//Function Number: 6
setteamheadicon(param_00,param_01)
{
if(!level.teambased)
{
return;
}
if(!isdefined(self.entityheadiconteam))
{
self.entityheadiconteam = "none";
self.entityheadicon = undefined;
}
var_02 = game["entity_headicon_" + param_00];
self.entityheadiconteam = param_00;
if(isdefined(param_01))
{
self.entityheadiconoffset = param_01;
}
else
{
self.entityheadiconoffset = (0,0,0);
}
self notify("kill_entity_headicon_thread");
if(param_00 == "none")
{
if(isdefined(self.entityheadicon))
{
self.entityheadicon destroy();
}
return;
}
var_03 = newteamhudelem(param_00);
var_03.archived = 1;
var_03.x = self.origin[0] + self.entityheadiconoffset[0];
var_03.y = self.origin[1] + self.entityheadiconoffset[1];
var_03.z = self.origin[2] + self.entityheadiconoffset[2];
var_03.alpha = 0.8;
var_03 setshader(var_02,10,10);
var_03 setwaypoint(0,0,0,1);
self.entityheadicon = var_03;
thread keepiconpositioned();
thread destroyheadiconsondeath();
}
//Function Number: 7
setplayerheadicon(param_00,param_01)
{
if(level.teambased)
{
return;
}
if(!isdefined(self.entityheadiconteam))
{
self.entityheadiconteam = "none";
self.entityheadicon = undefined;
}
self notify("kill_entity_headicon_thread");
if(!isdefined(param_00))
{
if(isdefined(self.entityheadicon))
{
self.entityheadicon destroy();
}
return;
}
var_02 = param_00.team;
self.entityheadiconteam = var_02;
if(isdefined(param_01))
{
self.entityheadiconoffset = param_01;
}
else
{
self.entityheadiconoffset = (0,0,0);
}
var_03 = game["entity_headicon_" + var_02];
var_04 = newclienthudelem(param_00);
var_04.archived = 1;
var_04.x = self.origin[0] + self.entityheadiconoffset[0];
var_04.y = self.origin[1] + self.entityheadiconoffset[1];
var_04.z = self.origin[2] + self.entityheadiconoffset[2];
var_04.alpha = 0.8;
var_04 setshader(var_03,10,10);
var_04 setwaypoint(0,0,0,1);
self.entityheadicon = var_04;
thread keepiconpositioned();
thread destroyheadiconsondeath();
}
//Function Number: 8
keepiconpositioned()
{
self endon("kill_entity_headicon_thread");
self endon("death");
var_00 = self.origin;
for(;;)
{
if(var_00 != self.origin)
{
func_2787();
var_00 = self.origin;
}
wait 0.05;
}
}
//Function Number: 9
destroyheadiconsondeath()
{
self endon("kill_entity_headicon_thread");
self waittill("death");
if(!isdefined(self.entityheadicon))
{
return;
}
self.entityheadicon destroy();
}
//Function Number: 10
func_2787()
{
self.entityheadicon.x = self.origin[0] + self.entityheadiconoffset[0];
self.entityheadicon.y = self.origin[1] + self.entityheadiconoffset[1];
self.entityheadicon.z = self.origin[2] + self.entityheadiconoffset[2];
}

View File

@ -0,0 +1,832 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_events.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 31
* Decompile Time: 556 ms
* Timestamp: 10/27/2023 2:27:44 AM
*******************************************************************/
//Function Number: 1
init()
{
maps\mp\gametypes\_rank::registerscoreinfo("headshot",50);
maps\mp\gametypes\_rank::registerscoreinfo("execution",100);
maps\mp\gametypes\_rank::registerscoreinfo("avenger",50);
maps\mp\gametypes\_rank::registerscoreinfo("defender",50);
maps\mp\gametypes\_rank::registerscoreinfo("posthumous",25);
maps\mp\gametypes\_rank::registerscoreinfo("revenge",50);
maps\mp\gametypes\_rank::registerscoreinfo("double",50);
maps\mp\gametypes\_rank::registerscoreinfo("triple",75);
maps\mp\gametypes\_rank::registerscoreinfo("multi",100);
maps\mp\gametypes\_rank::registerscoreinfo("buzzkill",100);
maps\mp\gametypes\_rank::registerscoreinfo("firstblood",100);
maps\mp\gametypes\_rank::registerscoreinfo("comeback",100);
maps\mp\gametypes\_rank::registerscoreinfo("longshot",50);
maps\mp\gametypes\_rank::registerscoreinfo("assistedsuicide",100);
maps\mp\gametypes\_rank::registerscoreinfo("knifethrow",100);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("damage",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("heavy_damage",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("damaged",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("kill",1);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("killed",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("healed",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("headshot",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("melee",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("backstab",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("longshot",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("assistedsuicide",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("defender",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("avenger",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("execution",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("comeback",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("revenge",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("buzzkill",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("double",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("triple",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("multi",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("assist",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("firstBlood",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("capture",1);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("assistedCapture",1);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("plant",1);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("defuse",1);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("vehicleDestroyed",1);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("3streak",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("4streak",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("5streak",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("6streak",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("7streak",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("8streak",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("9streak",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("10streak",0);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("regen",0);
precacheshader("crosshair_red");
level._effect["money"] = loadfx("props/cash_player_drop");
level.numkills = 0;
level thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.killedplayers = [];
var_00.killedplayerscurrent = [];
var_00.killedby = [];
var_00.lastkilledby = undefined;
var_00.greatestuniqueplayerkills = 0;
var_00.recentkillcount = 0;
var_00.lastkilltime = 0;
var_00.damagedplayers = [];
var_00 thread monitorcratejacking();
var_00 thread func_2AC7();
var_00 thread monitorhealed();
}
}
//Function Number: 3
func_2A96(param_00,param_01,param_02)
{
if(param_01 < 50 && param_01 > 10)
{
maps\mp\killstreaks\_killstreaks::giveadrenaline("damage");
return;
}
maps\mp\killstreaks\_killstreaks::giveadrenaline("heavy_damage");
}
//Function Number: 4
func_2A97(param_00,param_01,param_02,param_03)
{
var_04 = param_01.guid;
var_05 = self.guid;
var_06 = gettime();
thread func_2AC5(param_00);
self.lastkilltime = gettime();
self.lastkilledplayer = param_01;
self.modifiers = [];
level.numkills++;
self.damagedplayers[var_04] = undefined;
if(!maps\mp\_utility::func_2829(param_02) && !maps\mp\_utility::isjuggernaut() && !maps\mp\_utility::func_27AF("specialty_explosivebullets"))
{
if(param_02 == "none")
{
return 0;
}
if(isdefined(self.pers["copyCatLoadout"]) && isdefined(self.pers["copyCatLoadout"]["owner"]))
{
if(param_01 == self.pers["copyCatLoadout"]["owner"])
{
self.modifiers["clonekill"] = 1;
}
}
if(param_01.attackers.size == 1 && !isdefined(param_01.attackers[param_01.guid]))
{
var_0A = maps\mp\_utility::getweaponclass(param_02);
if(var_0A == "weapon_sniper" && param_03 != "MOD_MELEE" && gettime() == param_01.attackerdata[self.guid].firsttimedamaged)
{
self.modifiers["oneshotkill"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_ONE_SHOT_KILL");
}
}
if(isdefined(param_01.throwinggrenade) && param_01.throwinggrenade == "frag_grenade_mp")
{
self.modifiers["cooking"] = 1;
}
if(isdefined(self.assistedsuicide) && self.assistedsuicide)
{
assistedsuicide(param_00,param_02,param_03);
}
if(level.numkills == 1)
{
func_2ABF(param_00,param_02,param_03);
}
if(self.pers["cur_death_streak"] > 3)
{
func_2AC2(param_00,param_02,param_03);
}
if(param_03 == "MOD_HEAD_SHOT")
{
if(isdefined(param_01.laststand))
{
execution(param_00,param_02,param_03);
}
else
{
func_2AB7(param_00,param_02,param_03);
}
}
if(isdefined(self.wasti) && self.wasti && gettime() - self.spawntime <= 5000)
{
self.modifiers["jackintheboxkill"] = 1;
}
if(!isalive(self) && self.deathtime + 800 < gettime())
{
postdeathkill(param_00);
}
var_0B = 0;
if(level.teambased && var_06 - param_01.lastkilltime < 500)
{
if(param_01.lastkilledplayer != self)
{
func_2AB8(param_00,param_02,param_03);
}
}
foreach(var_0E, var_0D in param_01.damagedplayers)
{
if(var_0E == self.guid)
{
continue;
}
if(level.teambased && var_06 - var_0D < 500)
{
defendedplayer(param_00,param_02,param_03);
}
}
if(isdefined(param_01.attackerposition))
{
var_0F = param_01.attackerposition;
}
else
{
var_0F = self.origin;
}
if(islongshot(self,param_02,param_03,var_0F,param_01))
{
thread longshot(param_00,param_02,param_03);
}
if(param_01.pers["cur_kill_streak"] > 0 && isdefined(param_01.killstreaks[param_01.pers["cur_kill_streak"] + 1]))
{
buzzkill(param_00,param_01,param_02,param_03);
}
thread checkmatchdatakills(param_00,param_01,param_02,param_03);
}
if(!isdefined(self.killedplayers[var_04]))
{
self.killedplayers[var_04] = 0;
}
if(!isdefined(self.killedplayerscurrent[var_04]))
{
self.killedplayerscurrent[var_04] = 0;
}
if(!isdefined(param_01.killedby[var_05]))
{
param_01.killedby[var_05] = 0;
}
self.killedplayers[var_04]++;
if(self.killedplayers[var_04] > self.greatestuniqueplayerkills)
{
maps\mp\_utility::func_2AA1("killedsameplayer",self.killedplayers[var_04]);
}
self.killedplayerscurrent[var_04]++;
param_01.killedby[var_05]++;
param_01.lastkilledby = self;
}
//Function Number: 5
islongshot(param_00,param_01,param_02,param_03,param_04)
{
if(isalive(param_00) && !param_00 maps\mp\_utility::isusingremote() && param_02 == "MOD_RIFLE_BULLET" || param_02 == "MOD_PISTOL_BULLET" || param_02 == "MOD_HEAD_SHOT" && !maps\mp\_utility::func_2829(param_01) && !isdefined(param_00.assistedsuicide))
{
var_05 = maps\mp\_utility::getweaponclass(param_01);
switch(var_05)
{
case "weapon_pistol":
var_06 = 800;
break;
case "weapon_machine_pistol":
case "weapon_smg":
var_06 = 1200;
break;
case "weapon_lmg":
case "weapon_assault":
var_06 = 1500;
break;
case "weapon_sniper":
var_06 = 2000;
break;
case "weapon_shotgun":
var_06 = 500;
break;
case "weapon_projectile":
default:
var_06 = 1536;
break;
}
if(distance(param_03,param_04.origin) > var_06)
{
if(param_00 isitemunlocked("specialty_holdbreath") && param_00 maps\mp\_utility::func_27AF("specialty_holdbreath"))
{
param_00 maps\mp\gametypes\_missions::processchallenge("ch_longdistance");
}
return 1;
}
}
return 0;
}
//Function Number: 6
checkmatchdatakills(param_00,param_01,param_02,param_03)
{
var_04 = maps\mp\_utility::getweaponclass(param_02);
var_05 = 0;
thread campercheck();
if(isdefined(self.lastkilledby) && self.lastkilledby == param_01)
{
self.lastkilledby = undefined;
func_2ABC(param_00);
playfx(level._effect["money"],param_01 gettagorigin("j_spine4"));
}
if(param_01.idflags & level.idflags_penetration)
{
maps\mp\_utility::incplayerstat("bulletpenkills",1);
}
if(self.pers["rank"] < param_01.pers["rank"])
{
maps\mp\_utility::incplayerstat("higherrankkills",1);
}
if(self.pers["rank"] > param_01.pers["rank"])
{
maps\mp\_utility::incplayerstat("lowerrankkills",1);
}
if(isdefined(self.infinalstand) && self.infinalstand)
{
maps\mp\_utility::incplayerstat("laststandkills",1);
}
if(isdefined(param_01.infinalstand) && param_01.infinalstand)
{
maps\mp\_utility::incplayerstat("laststanderkills",1);
}
if(self getcurrentweapon() != self.primaryweapon && self getcurrentweapon() != self.secondaryweapon)
{
maps\mp\_utility::incplayerstat("otherweaponkills",1);
}
var_06 = gettime() - param_01.spawntime;
if(!maps\mp\_utility::matchmakinggame())
{
param_01 maps\mp\_utility::setplayerstatiflower("shortestlife",var_06);
}
param_01 maps\mp\_utility::func_2AAA("longestlife",var_06);
if(param_03 != "MOD_MELEE")
{
switch(var_04)
{
case "weapon_pistol":
case "weapon_projectile":
case "weapon_shotgun":
case "weapon_lmg":
case "weapon_sniper":
case "weapon_assault":
case "weapon_smg":
func_2AAB(param_01,param_02,param_03,var_04);
break;
case "weapon_explosive":
case "weapon_grenade":
func_2AAC(param_01,param_02,param_03);
break;
default:
break;
}
}
}
//Function Number: 7
func_2AAB(param_00,param_01,param_02,param_03)
{
var_04 = self;
var_05 = undefined;
var_06 = undefined;
var_07 = undefined;
switch(param_03)
{
case "weapon_pistol":
var_05 = "pistolkills";
var_06 = "pistolheadshots";
break;
case "weapon_smg":
var_05 = "smgkills";
var_06 = "smgheadshots";
break;
case "weapon_assault":
var_05 = "arkills";
var_06 = "arheadshots";
break;
case "weapon_projectile":
if(weaponclass(param_01) == "rocketlauncher")
{
var_05 = "rocketkills";
}
break;
case "weapon_sniper":
var_05 = "sniperkills";
var_06 = "sniperheadshots";
break;
case "weapon_shotgun":
var_05 = "shotgunkills";
var_06 = "shotgunheadshots";
var_07 = "shotgundeaths";
break;
case "weapon_lmg":
var_05 = "lmgkills";
var_06 = "lmgheadshots";
break;
default:
break;
}
if(isdefined(var_05))
{
var_04 maps\mp\_utility::incplayerstat(var_05,1);
}
if(isdefined(var_06) && param_02 == "MOD_HEAD_SHOT")
{
var_04 maps\mp\_utility::incplayerstat(var_06,1);
}
if(isdefined(var_07) && !maps\mp\_utility::matchmakinggame())
{
param_00 maps\mp\_utility::incplayerstat(var_07,1);
}
if(var_04 playerads() > 0.5)
{
var_04 maps\mp\_utility::incplayerstat("adskills",1);
if(param_03 == "weapon_sniper" || issubstr(param_01,"acog"))
{
var_04 maps\mp\_utility::incplayerstat("scopedkills",1);
}
if(issubstr(param_01,"thermal"))
{
var_04 maps\mp\_utility::incplayerstat("thermalkills",1);
return;
}
return;
}
var_04 maps\mp\_utility::incplayerstat("hipfirekills",1);
}
//Function Number: 8
func_2AAC(param_00,param_01,param_02)
{
var_03 = self;
switch(param_01)
{
case "frag_grenade_mp":
var_03 maps\mp\_utility::incplayerstat("fragkills",1);
var_03 maps\mp\_utility::incplayerstat("grenadekills",1);
var_04 = 1;
break;
case "c4_mp":
var_04 maps\mp\_utility::incplayerstat("c4kills",1);
var_04 = 1;
break;
case "semtex_mp":
var_04 maps\mp\_utility::incplayerstat("semtexkills",1);
var_04 maps\mp\_utility::incplayerstat("grenadekills",1);
var_04 = 1;
break;
case "claymore_mp":
var_04 maps\mp\_utility::incplayerstat("claymorekills",1);
var_04 = 1;
break;
case "throwingknife_mp":
var_04 maps\mp\_utility::incplayerstat("throwingknifekills",1);
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_KNIFETHROW");
var_04 = 1;
break;
default:
var_04 = 0;
break;
}
if(var_04)
{
var_03 maps\mp\_utility::incplayerstat("equipmentkills",1);
}
}
//Function Number: 9
campercheck()
{
self.lastkillwascamping = 0;
if(!isdefined(self.lastkilllocation))
{
self.lastkilllocation = self.origin;
self.lastcampkilltime = gettime();
return;
}
if(distance(self.lastkilllocation,self.origin) < 512 && gettime() - self.lastcampkilltime > 5000)
{
maps\mp\_utility::incplayerstat("mostcamperkills",1);
self.lastkillwascamping = 1;
}
self.lastkilllocation = self.origin;
self.lastcampkilltime = gettime();
}
//Function Number: 10
consolation(param_00)
{
}
//Function Number: 11
proximityassist(param_00)
{
self.modifiers["proximityAssist"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_PROXIMITYASSIST");
thread maps\mp\gametypes\_rank::func_2AB3("proximityassist");
}
//Function Number: 12
func_2AB4(param_00)
{
self.modifiers["proximityKill"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_PROXIMITYKILL");
thread maps\mp\gametypes\_rank::func_2AB3("proximitykill");
}
//Function Number: 13
longshot(param_00,param_01,param_02)
{
self.modifiers["longshot"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_LONGSHOT");
thread maps\mp\gametypes\_rank::func_2AB3("longshot",undefined,param_01,param_02);
maps\mp\killstreaks\_killstreaks::giveadrenaline("longshot");
maps\mp\_utility::incplayerstat("longshots",1);
thread maps\mp\_matchdata::func_28B4(param_00,"longshot");
}
//Function Number: 14
execution(param_00,param_01,param_02)
{
self.modifiers["execution"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_EXECUTION");
thread maps\mp\gametypes\_rank::func_2AB3("execution",undefined,param_01,param_02);
maps\mp\killstreaks\_killstreaks::giveadrenaline("execution");
thread maps\mp\_matchdata::func_28B4(param_00,"execution");
}
//Function Number: 15
func_2AB7(param_00,param_01,param_02)
{
self.modifiers["headshot"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_HEADSHOT");
thread maps\mp\gametypes\_rank::func_2AB3("headshot",undefined,param_01,param_02);
maps\mp\killstreaks\_killstreaks::giveadrenaline("headshot");
thread maps\mp\_matchdata::func_28B4(param_00,"headshot");
}
//Function Number: 16
func_2AB8(param_00,param_01,param_02)
{
self.modifiers["avenger"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_AVENGER");
thread maps\mp\gametypes\_rank::func_2AB3("avenger",undefined,param_01,param_02);
maps\mp\killstreaks\_killstreaks::giveadrenaline("avenger");
thread maps\mp\_matchdata::func_28B4(param_00,"avenger");
maps\mp\_utility::incplayerstat("avengekills",1);
}
//Function Number: 17
assistedsuicide(param_00,param_01,param_02)
{
self.modifiers["assistedsuicide"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_ASSISTEDSUICIDE");
thread maps\mp\gametypes\_rank::func_2AB3("assistedsuicide",undefined,param_01,param_02);
maps\mp\killstreaks\_killstreaks::giveadrenaline("assistedsuicide");
thread maps\mp\_matchdata::func_28B4(param_00,"assistedsuicide");
}
//Function Number: 18
defendedplayer(param_00,param_01,param_02)
{
self.modifiers["defender"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_DEFENDER");
thread maps\mp\gametypes\_rank::func_2AB3("defender",undefined,param_01,param_02);
maps\mp\killstreaks\_killstreaks::giveadrenaline("defender");
thread maps\mp\_matchdata::func_28B4(param_00,"defender");
maps\mp\_utility::incplayerstat("rescues",1);
}
//Function Number: 19
postdeathkill(param_00)
{
self.modifiers["posthumous"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_POSTHUMOUS");
thread maps\mp\gametypes\_rank::func_2AB3("posthumous");
thread maps\mp\_matchdata::func_28B4(param_00,"posthumous");
}
//Function Number: 20
backstab(param_00)
{
self iprintlnbold("backstab");
}
//Function Number: 21
func_2ABC(param_00)
{
self.modifiers["revenge"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_REVENGE");
thread maps\mp\gametypes\_rank::func_2AB3("revenge");
maps\mp\killstreaks\_killstreaks::giveadrenaline("revenge");
thread maps\mp\_matchdata::func_28B4(param_00,"revenge");
maps\mp\_utility::incplayerstat("revengekills",1);
}
//Function Number: 22
func_2ABD(param_00,param_01)
{
if(param_01 == 2)
{
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_DOUBLEKILL");
maps\mp\killstreaks\_killstreaks::giveadrenaline("double");
}
else if(param_01 == 3)
{
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_TRIPLEKILL");
maps\mp\killstreaks\_killstreaks::giveadrenaline("triple");
thread maps\mp\_utility::teamplayercardsplash("callout_3xkill",self);
}
else
{
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_MULTIKILL");
maps\mp\killstreaks\_killstreaks::giveadrenaline("multi");
thread maps\mp\_utility::teamplayercardsplash("callout_3xpluskill",self);
}
thread maps\mp\_matchdata::logmultikill(param_00,param_01);
maps\mp\_utility::func_2AAA("multikill",param_01);
maps\mp\_utility::incplayerstat("mostmultikills",1);
}
//Function Number: 23
func_2ABF(param_00,param_01,param_02)
{
self.modifiers["firstblood"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_FIRSTBLOOD");
thread maps\mp\gametypes\_rank::func_2AB3("firstblood",undefined,param_01,param_02);
thread maps\mp\_matchdata::func_28B4(param_00,"firstblood");
maps\mp\killstreaks\_killstreaks::giveadrenaline("firstBlood");
thread maps\mp\_utility::teamplayercardsplash("callout_firstblood",self);
}
//Function Number: 24
func_2AC0(param_00)
{
}
//Function Number: 25
buzzkill(param_00,param_01,param_02,param_03)
{
self.modifiers["buzzkill"] = param_01.pers["cur_kill_streak"];
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_BUZZKILL");
thread maps\mp\gametypes\_rank::func_2AB3("buzzkill",undefined,param_02,param_03);
maps\mp\killstreaks\_killstreaks::giveadrenaline("buzzkill");
thread maps\mp\_matchdata::func_28B4(param_00,"buzzkill");
}
//Function Number: 26
func_2AC2(param_00,param_01,param_02)
{
self.modifiers["comeback"] = 1;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_COMEBACK");
thread maps\mp\gametypes\_rank::func_2AB3("comeback",undefined,param_01,param_02);
maps\mp\killstreaks\_killstreaks::giveadrenaline("comeback");
thread maps\mp\_matchdata::func_28B4(param_00,"comeback");
maps\mp\_utility::incplayerstat("comebacks",1);
}
//Function Number: 27
func_2AC3()
{
var_00 = self.guid;
for(var_01 = 0;var_01 < level.players.size;var_01++)
{
if(isdefined(level.players[var_01].killedplayers[var_00]))
{
level.players[var_01].killedplayers[var_00] = undefined;
}
if(isdefined(level.players[var_01].killedplayerscurrent[var_00]))
{
level.players[var_01].killedplayerscurrent[var_00] = undefined;
}
if(isdefined(level.players[var_01].killedby[var_00]))
{
level.players[var_01].killedby[var_00] = undefined;
}
}
}
//Function Number: 28
monitorhealed()
{
level endon("end_game");
self endon("disconnect");
for(;;)
{
self waittill("healed");
maps\mp\killstreaks\_killstreaks::giveadrenaline("healed");
}
}
//Function Number: 29
func_2AC5(param_00)
{
self endon("disconnect");
level endon("game_ended");
self notify("updateRecentKills");
self endon("updateRecentKills");
self.recentkillcount++;
wait 1;
if(self.recentkillcount > 1)
{
func_2ABD(param_00,self.recentkillcount);
}
self.recentkillcount = 0;
}
//Function Number: 30
monitorcratejacking()
{
level endon("end_game");
self endon("disconnect");
for(;;)
{
self waittill("hijacker",var_00,var_01);
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_HIJACKER");
thread maps\mp\gametypes\_rank::func_2AB3("hijacker",100);
var_02 = "hijacked_airdrop";
var_03 = "ch_hijacker";
switch(var_00)
{
case "sentry":
var_02 = "hijacked_sentry";
break;
case "juggernaut":
var_02 = "hijacked_juggernaut";
break;
case "remote_tank":
var_02 = "hijacked_remote_tank";
break;
case "mega":
case "emergency_airdrop":
var_02 = "hijacked_emergency_airdrop";
var_03 = "ch_newjack";
break;
default:
break;
}
if(isdefined(var_01))
{
var_01 maps\mp\gametypes\_hud_message::playercardsplashnotify(var_02,self);
}
self notify("process",var_03);
}
}
//Function Number: 31
func_2AC7()
{
level endon("end_game");
self endon("disconnect");
for(;;)
{
self waittill("objective",var_00);
if(var_00 == "captured")
{
maps\mp\killstreaks\_killstreaks::giveadrenaline("capture");
if(isdefined(self.laststand) && self.laststand)
{
thread maps\mp\gametypes\_hud_message::func_2701("heroic",100);
thread maps\mp\gametypes\_rank::func_2AB3("reviver",100);
}
}
if(var_00 == "assistedCapture")
{
maps\mp\killstreaks\_killstreaks::giveadrenaline("assistedCapture");
}
if(var_00 == "plant")
{
maps\mp\killstreaks\_killstreaks::giveadrenaline("plant");
}
if(var_00 == "defuse")
{
maps\mp\killstreaks\_killstreaks::giveadrenaline("defuse");
}
}
}

View File

@ -0,0 +1,184 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_flashgrenades.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 7
* Decompile Time: 133 ms
* Timestamp: 10/27/2023 2:27:44 AM
*******************************************************************/
//Function Number: 1
main()
{
precacheshellshock("flashbang_mp");
}
//Function Number: 2
startmonitoringflash()
{
thread monitorflash();
}
//Function Number: 3
stopmonitoringflash(param_00)
{
self notify("stop_monitoring_flash");
}
//Function Number: 4
func_2210(param_00)
{
self endon("stop_monitoring_flash");
self endon("flash_rumble_loop");
self notify("flash_rumble_loop");
var_01 = gettime() + param_00 * 1000;
while(gettime() < var_01)
{
self playrumbleonentity("damage_heavy");
wait 0.05;
}
}
//Function Number: 5
monitorflash()
{
self endon("disconnect");
self.flashendtime = 0;
for(;;)
{
self waittill("flashbang",var_00,var_01,var_02,var_03);
if(!isalive(self))
{
continue;
}
if(isdefined(self.usingremote))
{
continue;
}
var_04 = 0;
var_05 = 1;
if(var_02 < 0.25)
{
var_02 = 0.25;
}
else if(var_02 > 0.8)
{
var_02 = 1;
}
var_06 = var_01 * var_02 * 5.5;
if(isdefined(self.stunscaler))
{
var_06 = var_06 * self.stunscaler;
}
if(var_06 < 0.25)
{
continue;
}
var_07 = undefined;
if(var_06 > 2)
{
var_07 = 0.75;
}
else
{
var_07 = 0.25;
}
if(level.teambased && isdefined(var_03) && isdefined(var_03.pers["team"]) && var_03.pers["team"] == self.pers["team"] && var_03 != self)
{
if(level.friendlyfire == 0)
{
continue;
}
else if(level.friendlyfire == 1)
{
}
else if(level.friendlyfire == 2)
{
var_06 = var_06 * 0.5;
var_07 = var_07 * 0.5;
var_05 = 0;
var_04 = 1;
}
else if(level.friendlyfire == 3)
{
var_06 = var_06 * 0.5;
var_07 = var_07 * 0.5;
var_04 = 1;
}
}
else if(isdefined(var_03))
{
var_03 notify("flash_hit");
if(var_03 != self)
{
var_03 maps\mp\gametypes\_missions::processchallenge("ch_indecentexposure");
}
}
if(var_05 && isdefined(self))
{
thread func_27AA(var_06,var_07);
if(isdefined(var_03) && var_03 != self)
{
var_03 thread maps\mp\gametypes\_damagefeedback::updatedamagefeedback("flash");
var_08 = self;
if(isplayer(var_03) && var_03 isitemunlocked("specialty_paint") && var_03 maps\mp\_utility::func_27AF("specialty_paint"))
{
if(!var_08 maps\mp\perks\_perkfunctions::ispainted())
{
var_03 maps\mp\gametypes\_missions::processchallenge("ch_paint_pro");
}
var_08 thread maps\mp\perks\_perkfunctions::func_2980();
}
}
}
if(var_04 && isdefined(var_03))
{
var_03 thread func_27AA(var_06,var_07);
}
}
}
//Function Number: 6
func_27AA(param_00,param_01)
{
if(!isdefined(self.flashduration) || param_00 > self.flashduration)
{
self.flashduration = param_00;
}
if(!isdefined(self.flashrumbleduration) || param_01 > self.flashrumbleduration)
{
self.flashrumbleduration = param_01;
}
wait 0.05;
if(isdefined(self.flashduration))
{
self shellshock("flashbang_mp",self.flashduration);
self.flashendtime = gettime() + self.flashduration * 1000;
}
if(isdefined(self.flashrumbleduration))
{
thread func_2210(self.flashrumbleduration);
}
self.flashduration = undefined;
self.flashrumbleduration = undefined;
}
//Function Number: 7
isflashbanged()
{
return isdefined(self.flashendtime) && gettime() < self.flashendtime;
}

101
MW3/Xbox/MP/maps/mp/_fx.gsc Normal file
View File

@ -0,0 +1,101 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_fx.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 7
* Decompile Time: 131 ms
* Timestamp: 10/27/2023 2:27:45 AM
*******************************************************************/
//Function Number: 1
script_print_fx()
{
if(!isdefined(self.script_fxid) || !isdefined(self.script_fxcommand) || !isdefined(self.script_delay))
{
self delete();
return;
}
if(isdefined(self.target))
{
var_00 = getent(self.target).origin;
}
else
{
var_00 = "undefined";
}
if(self.script_fxcommand == "OneShotfx")
{
}
if(self.script_fxcommand == "loopfx")
{
}
if(self.script_fxcommand == "loopsound")
{
}
}
//Function Number: 2
script_playfx(param_00,param_01,param_02)
{
if(!param_00)
{
return;
}
if(isdefined(param_02))
{
playfx(param_00,param_01,param_02);
return;
}
playfx(param_00,param_01);
}
//Function Number: 3
script_playfxontag(param_00,param_01,param_02)
{
if(!param_00)
{
return;
}
playfxontag(param_00,param_01,param_02);
}
//Function Number: 4
grenadeexplosionfx(param_00)
{
playfx(level._effect["mechanical explosion"],param_00);
earthquake(0.15,0.5,param_00,250);
}
//Function Number: 5
soundfx(param_00,param_01,param_02)
{
var_03 = spawn("script_origin",(0,0,0));
var_03.origin = param_01;
var_03 playloopsound(param_00);
if(isdefined(param_02))
{
var_03 thread soundfxdelete(param_02);
}
}
//Function Number: 6
soundfxdelete(param_00)
{
level waittill(param_00);
self delete();
}
//Function Number: 7
blenddelete(param_00)
{
self waittill("death");
param_00 delete();
}

View File

@ -0,0 +1,93 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_global_fx.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 3
* Decompile Time: 64 ms
* Timestamp: 10/27/2023 2:27:45 AM
*******************************************************************/
//Function Number: 1
main()
{
var_00 = randomfloatrange(-20,-15);
global_fx("barrel_fireFX_origin","global_barrel_fire","fire/firelp_barrel_pm",var_00,"fire_barrel_small");
global_fx("ch_streetlight_02_FX_origin","ch_streetlight_02_FX","misc/lighthaze",var_00);
global_fx("me_streetlight_01_FX_origin","me_streetlight_01_FX","misc/lighthaze_bog_a",var_00);
global_fx("ch_street_light_01_on","lamp_glow_FX","misc/light_glow_white",var_00);
global_fx("lamp_post_globe_on","lamp_glow_FX","misc/light_glow_white",var_00);
global_fx("highway_lamp_post","ch_streetlight_02_FX","misc/lighthaze_villassault",var_00);
global_fx("cs_cargoship_spotlight_on_FX_origin","cs_cargoship_spotlight_on_FX","misc/lighthaze",var_00);
global_fx("me_dumpster_fire_FX_origin","me_dumpster_fire_FX","fire/firelp_med_pm",var_00,"fire_dumpster_medium");
global_fx("com_tires_burning01_FX_origin","com_tires_burning01_FX","fire/tire_fire_med",var_00);
global_fx("icbm_powerlinetower_FX_origin","icbm_powerlinetower_FX","misc/power_tower_light_red_blink",var_00);
global_fx("icbm_mainframe_FX_origin","icbm_mainframe_FX","props/icbm_mainframe_lightblink",var_00);
global_fx("light_pulse_red_FX_origin","light_pulse_red_FX","misc/light_glow_red_generic_pulse",-2);
global_fx("light_pulse_red_FX_origin","light_pulse_red_FX","misc/light_glow_red_generic_pulse",-2);
global_fx("light_pulse_orange_FX_origin","light_pulse_orange_FX","misc/light_glow_orange_generic_pulse",-2);
global_fx("light_red_blink_FX_origin","light_red_blink","misc/power_tower_light_red_blink",-2);
global_fx("lighthaze_oilrig_FX_origin","lighthaze_oilrig","misc/lighthaze_oilrig",var_00);
global_fx("lighthaze_white_FX_origin","lighthaze_white","misc/lighthaze_white",var_00);
global_fx("light_glow_walllight_white_FX_origin","light_glow_walllight_white","misc/light_glow_walllight_white",var_00);
global_fx("fluorescent_glow_FX_origin","fluorescent_glow","misc/fluorescent_glow",var_00);
global_fx("light_glow_industrial_FX_origin","light_glow_industrial","misc/light_glow_industrial",var_00);
global_fx("light_red_steady_FX_origin","light_red_steady","misc/tower_light_red_steady",-2);
global_fx("light_blue_steady_FX_origin","light_blue_steady","misc/tower_light_blue_steady",-2);
global_fx("light_orange_steady_FX_origin","light_orange_steady","misc/tower_light_orange_steady",-2);
global_fx("glow_stick_pile_FX_origin","glow_stick_pile","misc/glow_stick_glow_pile",-2);
global_fx("glow_stick_orange_pile_FX_origin","glow_stick_pile_orange","misc/glow_stick_glow_pile_orange",-2);
global_fx("highrise_blinky_tower","highrise_blinky_tower_FX","misc/power_tower_light_red_blink_large",var_00);
global_fx("flare_ambient_FX_origin","flare_ambient_FX","misc/flare_ambient",var_00,"emt_road_flare_burn");
global_fx("light_glow_white_bulb_FX_origin","light_glow_white_bulb_FX","misc/light_glow_white_bulb",var_00);
global_fx("light_glow_white_lamp_FX_origin","light_glow_white_lamp_FX","misc/light_glow_white_lamp",var_00);
}
//Function Number: 2
global_fx(param_00,param_01,param_02,param_03,param_04)
{
var_05 = common_scripts\utility::getstructarray(param_00,"targetname");
if(!isdefined(var_05))
{
return;
}
if(var_05.size <= 0)
{
return;
}
for(var_06 = 0;var_06 < var_05.size;var_06++)
{
var_05[var_06] func_1798(param_01,param_02,param_03,param_04);
}
}
//Function Number: 3
func_1798(param_00,param_01,param_02,param_03)
{
if(!isdefined(level._effect))
{
level._effect = [];
}
if(!isdefined(level._effect[param_00]))
{
level._effect[param_00] = loadfx(param_01);
}
if(!isdefined(self.angles))
{
self.angles = (0,0,0);
}
var_04 = common_scripts\utility::createoneshoteffect(param_00);
var_04.v["origin"] = self.origin;
var_04.v["angles"] = self.angles;
var_04.v["fxid"] = param_00;
var_04.v["delay"] = param_02;
if(isdefined(param_03))
{
var_04.v["soundalias"] = param_03;
}
}

View File

@ -0,0 +1,23 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_highlights.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 1
* Decompile Time: 33 ms
* Timestamp: 10/27/2023 2:27:46 AM
*******************************************************************/
//Function Number: 1
func_2D71(param_00,param_01)
{
var_02 = getclientmatchdata("highlightCount");
if(var_02 < 18)
{
setclientmatchdata("highlights",var_02,"award",param_00);
setclientmatchdata("highlights",var_02,"clientId",self.clientmatchdataid);
setclientmatchdata("highlights",var_02,"value",param_01);
var_02++;
setclientmatchdata("highlightCount",var_02);
}
}

View File

@ -0,0 +1,509 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_javelin.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 15
* Decompile Time: 281 ms
* Timestamp: 10/27/2023 2:27:47 AM
*******************************************************************/
//Function Number: 1
func_27D0()
{
self.javelinstage = undefined;
self.javelinpoints = undefined;
self.javelinnormals = undefined;
self.javelinlockmisses = undefined;
self.javelintargetpoint = undefined;
self.javelintargetnormal = undefined;
self.javelinlockstarttime = undefined;
}
//Function Number: 2
func_27D8()
{
if(!isdefined(self.javelinuseentered))
{
return;
}
self.javelinuseentered = undefined;
self notify("stop_lockon_sound");
self weaponlockfree();
self weaponlocktargettooclose(0);
self weaponlocknoclearance(0);
self.currentlylocking = 0;
self.currentlylocked = 0;
self.javelintarget = undefined;
self stoplocalsound("javelin_clu_lock");
self stoplocalsound("javelin_clu_aquiring_lock");
func_27D0();
}
//Function Number: 3
func_27DD()
{
var_00 = self geteye();
var_01 = self getplayerangles();
var_02 = anglestoforward(var_01);
var_03 = var_00 + var_02 * 15000;
var_04 = bullettrace(var_00,var_03,0,undefined);
if(var_04["surfacetype"] == "none")
{
return undefined;
}
if(var_04["surfacetype"] == "default")
{
return undefined;
}
var_05 = var_04["entity"];
if(isdefined(var_05))
{
if(var_05 == level.ac130.planemodel)
{
return undefined;
}
}
var_06 = [];
return var_41;
}
//Function Number: 4
func_27DE()
{
self.javelinlockmisses = undefined;
}
//Function Number: 5
lockmissesincr()
{
if(!isdefined(self.javelinlockmisses))
{
self.javelinlockmisses = 1;
return;
}
self.javelinlockmisses++;
}
//Function Number: 6
lockmissespassedthreshold()
{
var_00 = 4;
if(isdefined(self.javelinlockmisses) && self.javelinlockmisses >= var_00)
{
return 1;
}
return 0;
}
//Function Number: 7
targetpointtooclose(param_00)
{
var_01 = 1100;
var_02 = distance(self.origin,param_00);
if(var_02 < var_01)
{
return 1;
}
return 0;
}
//Function Number: 8
func_27E2(param_00,param_01)
{
self endon("death");
self endon("disconnect");
self endon("stop_lockon_sound");
for(;;)
{
self playlocalsound(param_00);
wait param_01;
}
}
//Function Number: 9
func_27E3(param_00,param_01)
{
var_02 = param_00 + param_01 * 10;
var_03 = var_02 + (0,0,2000);
var_04 = bullettrace(var_02,var_03,0,undefined);
if(sighttracepassed(var_02,var_03,0,undefined))
{
return 1;
}
return 0;
}
//Function Number: 10
func_27E4()
{
self endon("death");
self endon("disconnect");
self endon("faux_spawn");
var_00 = 1150;
var_01 = 25;
var_02 = 100;
var_03 = 400;
var_04 = 12;
var_05 = 0;
var_06 = 0;
self.javelintarget = undefined;
func_27D0();
for(;;)
{
wait 0.05;
var_07 = 0;
if(getdvar("missileDebugDraw") == "1")
{
var_07 = 1;
}
var_08 = 0;
if(getdvar("missileDebugText") == "1")
{
var_08 = 1;
}
var_09 = self getcurrentweapon();
if(!issubstr(var_09,"javelin") || maps\mp\_utility::func_27E5())
{
func_27D8();
continue;
}
if(self playerads() < 0.95)
{
var_06 = gettime();
func_27D8();
continue;
}
self.javelinuseentered = 1;
if(!isdefined(self.javelinstage))
{
self.javelinstage = 1;
}
if(self.javelinstage == 1)
{
var_0A = maps\mp\_stinger::gettargetlist();
if(var_0A.size != 0)
{
var_0B = [];
foreach(var_0D in var_0A)
{
var_0E = self worldpointinreticle_circle(var_0D.origin,65,40);
if(var_0E)
{
var_0B[var_0B.size] = var_0D;
}
}
if(var_0B.size != 0)
{
var_10 = sortbydistance(var_0B,self.origin);
if(!vehiclelocksighttest(var_10[0]))
{
continue;
}
if(var_08)
{
}
self.javelintarget = var_10[0];
if(!isdefined(self.javelinlockstarttime))
{
self.javelinlockstarttime = gettime();
}
self.javelinstage = 2;
self.javelinlostsightlinetime = 0;
javelinlockvehicle(var_00);
self.javelinstage = 1;
continue;
}
}
if(lockmissespassedthreshold())
{
func_27D8();
continue;
}
var_11 = gettime() - var_06;
if(var_11 < var_02)
{
continue;
}
var_11 = gettime() - var_05;
if(var_11 < var_01)
{
continue;
}
var_05 = gettime();
var_15 = func_27DD();
if(!isdefined(var_15))
{
lockmissesincr();
continue;
}
if(targetpointtooclose(var_15[0]))
{
self weaponlocktargettooclose(1);
continue;
}
else
{
self weaponlocktargettooclose(0);
}
if(isdefined(self.javelinpoints))
{
var_16 = averagepoint(self.javelinpoints);
var_17 = distance(var_16,var_15[0]);
if(var_17 > var_03)
{
lockmissesincr();
continue;
}
}
else
{
self.javelinpoints = [];
self.javelinnormals = [];
}
self.javelinpoints[self.javelinpoints.size] = var_15[0];
self.javelinnormals[self.javelinnormals.size] = var_15[1];
func_27DE();
if(self.javelinpoints.size < var_04)
{
continue;
}
self.javelintargetpoint = averagepoint(self.javelinpoints);
self.javelintargetnormal = averagenormal(self.javelinnormals);
self.javelinlockmisses = undefined;
self.javelinpoints = undefined;
self.javelinnormals = undefined;
self.javelinlockstarttime = gettime();
self weaponlockstart(self.javelintargetpoint);
thread func_27E2("javelin_clu_aquiring_lock",0.6);
self.javelinstage = 2;
}
if(self.javelinstage == 2)
{
var_0E = self worldpointinreticle_circle(self.javelintargetpoint,65,45);
if(!var_0E)
{
func_27D8();
continue;
}
if(targetpointtooclose(self.javelintargetpoint))
{
self weaponlocktargettooclose(1);
}
else
{
self weaponlocktargettooclose(0);
}
var_11 = gettime() - self.javelinlockstarttime;
if(var_11 < var_00)
{
continue;
}
self weaponlockfinalize(self.javelintargetpoint,(0,0,0),1);
self notify("stop_lockon_sound");
self playlocalsound("javelin_clu_lock");
self.javelinstage = 3;
}
if(self.javelinstage == 3)
{
var_0E = self worldpointinreticle_circle(self.javelintargetpoint,65,45);
if(!var_0E)
{
func_27D8();
continue;
}
if(targetpointtooclose(self.javelintargetpoint))
{
self weaponlocktargettooclose(1);
}
else
{
self weaponlocktargettooclose(0);
}
continue;
}
}
}
//Function Number: 11
func_27E7(param_00,param_01,param_02)
{
}
//Function Number: 12
vehiclelocksighttest(param_00)
{
var_01 = self geteye();
var_02 = param_00 getpointinbounds(0,0,0);
var_03 = sighttracepassed(var_01,var_02,0,param_00);
func_27E7(var_01,var_02,var_03);
if(var_03)
{
return 1;
}
var_04 = param_00 getpointinbounds(1,0,0);
var_03 = sighttracepassed(var_01,var_04,0,param_00);
func_27E7(var_01,var_04,var_03);
if(var_03)
{
return 1;
}
var_05 = param_00 getpointinbounds(-1,0,0);
var_03 = sighttracepassed(var_01,var_05,0,param_00);
func_27E7(var_01,var_05,var_03);
if(var_03)
{
return 1;
}
return 0;
}
//Function Number: 13
javelinlockvehicle(param_00)
{
if(self.javelinstage == 2)
{
self weaponlockstart(self.javelintarget);
if(!stillvalidjavelinlock(self.javelintarget))
{
func_27D8();
self.javelinlockstarttime = undefined;
return;
}
var_01 = func_27C9();
if(!var_01)
{
self.javelinlockstarttime = undefined;
return;
}
if(!isdefined(self.currentlylocking) || !self.currentlylocking)
{
thread func_27E2("javelin_clu_aquiring_lock",0.6);
self.currentlylocking = 1;
}
var_02 = gettime() - self.javelinlockstarttime;
if(maps\mp\_utility::func_27AF("specialty_fasterlockon"))
{
if(var_02 < param_00 * 0.5)
{
return;
}
}
else if(var_02 < param_00)
{
return;
}
if(isplayer(self.javelintarget))
{
self weaponlockfinalize(self.javelintarget,(0,0,64),0);
}
else
{
self weaponlockfinalize(self.javelintarget,(0,0,0),0);
}
self notify("stop_lockon_sound");
if(!isdefined(self.currentlylocked) || !self.currentlylocked)
{
self playlocalsound("javelin_clu_lock");
self.currentlylocked = 1;
}
self.javelinstage = 3;
}
if(self.javelinstage == 3)
{
var_01 = func_27C9();
if(!var_01)
{
return;
}
if(!stillvalidjavelinlock(self.javelintarget))
{
func_27D8();
return;
}
}
}
//Function Number: 14
stillvalidjavelinlock(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(!self worldpointinreticle_circle(param_00.origin,65,85))
{
return 0;
}
return 1;
}
//Function Number: 15
func_27C9()
{
var_00 = 500;
if(vehiclelocksighttest(self.javelintarget))
{
self.javelinlostsightlinetime = 0;
return 1;
}
if(self.javelinlostsightlinetime == 0)
{
self.javelinlostsightlinetime = gettime();
}
var_01 = gettime() - self.javelinlostsightlinetime;
if(var_01 >= var_00)
{
func_27D8();
return 0;
}
return 1;
}

View File

@ -0,0 +1,430 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_load.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 7
* Decompile Time: 144 ms
* Timestamp: 10/27/2023 2:27:48 AM
*******************************************************************/
//Function Number: 1
main()
{
if(isdefined(level._loadstarted))
{
return;
}
level._loadstarted = 1;
level.createfx_enabled = getdvar("createfx") != "";
common_scripts\utility::struct_class_init();
maps\mp\_utility::func_2B87();
maps\mp\_utility::func_2B88();
level.generic_index = 0;
level.flag_struct = spawnstruct();
level.flag_struct common_scripts\utility::assign_unique_id();
if(!isdefined(level.flag))
{
level.flag = [];
level.flags_lock = [];
}
level.requiredmapaspectratio = getdvarfloat("scr_RequiredMapAspectratio",1);
level.createclientfontstring_func = ::maps\mp\gametypes\_hud_util::createfontstring;
level.hudsetpoint_func = ::maps\mp\gametypes\_hud_util::setpoint;
level.leaderdialogonplayer_func = ::maps\mp\_utility::func_2A60;
thread maps\mp\gametypes\_tweakables::init();
if(!isdefined(level.func))
{
level.func = [];
}
level.func["precacheMpAnim"] = ::precachempanim;
level.func["scriptModelPlayAnim"] = ::scriptmodelplayanim;
level.func["scriptModelClearAnim"] = ::scriptmodelclearanim;
if(!level.createfx_enabled)
{
thread maps\mp\_minefields::func_2715();
thread maps\mp\_radiation::func_2719();
thread maps\mp\_shutter::main();
thread maps\mp\_destructables::init();
thread common_scripts\_elevator::init();
thread common_scripts\_dynamic_world::init();
thread common_scripts\_destructible::init();
thread common_scripts\_pipes::main();
}
if(getmapcustom("thermal") == "invert")
{
game["thermal_vision"] = "thermal_snowlevel_mp";
setthermalbodymaterial("thermalbody_snowlevel");
}
else
{
game["thermal_vision"] = "thermal_mp";
}
visionsetnaked("",0);
visionsetnight("default_night_mp");
visionsetmissilecam("missilecam");
visionsetthermal(game["thermal_vision"]);
visionsetpain("near_death_mp",0);
var_00 = getentarray("lantern_glowFX_origin","targetname");
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
var_00[var_01] thread func_2B8D();
}
maps\mp\_audio::func_2B8B();
maps\mp\_art::main();
setupexploders();
thread common_scripts\_fx::initfx();
if(level.createfx_enabled)
{
maps\mp\_createfx::createfx();
}
if(getdvar("r_reflectionProbeGenerate") == "1")
{
maps\mp\gametypes\_spawnlogic::func_2B8C();
maps\mp\_global_fx::main();
level waittill("eternity");
}
thread maps\mp\_global_fx::main();
for(var_02 = 0;var_02 < 6;var_02++)
{
switch(var_02)
{
case 0:
var_03 = "trigger_multiple";
break;
case 1:
var_03 = "trigger_once";
break;
case 2:
var_03 = "trigger_use";
break;
case 3:
var_03 = "trigger_radius";
break;
case 4:
var_03 = "trigger_lookat";
break;
default:
var_03 = "trigger_damage";
break;
}
var_04 = getentarray(var_03,"classname");
for(var_01 = 0;var_01 < var_04.size;var_01++)
{
if(isdefined(var_04[var_01].script_prefab_exploder))
{
var_04[var_01].script_exploder = var_04[var_01].script_prefab_exploder;
}
if(isdefined(var_04[var_01].script_exploder))
{
level thread exploder_load(var_04[var_01]);
}
}
}
var_05 = getentarray("trigger_hurt","classname");
foreach(var_07 in var_05)
{
var_07 thread hurtplayersthink();
}
thread maps\mp\_animatedmodels::main();
level.func["damagefeedback"] = ::maps\mp\gametypes\_damagefeedback::updatedamagefeedback;
level.func["setTeamHeadIcon"] = ::maps\mp\_entityheadicons::setteamheadicon;
level.laseron_func = ::laseron;
level.laseroff_func = ::laseroff;
setdvar("sm_sunShadowScale",1);
setdvar("sm_spotLightScoreModelScale",0);
setdvar("r_specularcolorscale",2.5);
setdvar("r_diffusecolorscale",1);
setdvar("r_lightGridEnableTweaks",0);
setdvar("r_lightGridIntensity",1);
setdvar("r_lightGridContrast",0);
setupdestructiblekillcaments();
precacheitem("bomb_site_mp");
level.fauxvehiclecount = 0;
}
//Function Number: 2
exploder_load(param_00)
{
level endon("killexplodertridgers" + param_00.script_exploder);
param_00 waittill("trigger");
if(isdefined(param_00.script_chance) && randomfloat(1) > param_00.script_chance)
{
if(isdefined(param_00.script_delay))
{
wait param_00.script_delay;
}
else
{
wait 4;
}
level thread exploder_load(param_00);
return;
}
common_scripts\utility::exploder(param_00.script_exploder);
level notify("killexplodertridgers" + param_00.script_exploder);
}
//Function Number: 3
setupexploders()
{
var_00 = getentarray("script_brushmodel","classname");
var_01 = getentarray("script_model","classname");
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_00[var_00.size] = var_01[var_02];
}
for(var_02 = 0;var_02 < var_00.size;var_02++)
{
if(isdefined(var_00[var_02].script_prefab_exploder))
{
var_00[var_02].script_exploder = var_00[var_02].script_prefab_exploder;
}
if(isdefined(var_00[var_02].script_exploder))
{
if(var_00[var_02].model == "fx" && !isdefined(var_00[var_02].targetname) || var_00[var_02].targetname != "exploderchunk")
{
var_00[var_02] hide();
continue;
}
if(isdefined(var_00[var_02].targetname) && var_00[var_02].targetname == "exploder")
{
var_00[var_02] hide();
var_00[var_02] notsolid();
continue;
}
if(isdefined(var_00[var_02].targetname) && var_00[var_02].targetname == "exploderchunk")
{
var_00[var_02] hide();
var_00[var_02] notsolid();
}
}
}
var_03 = [];
var_04 = getentarray("script_brushmodel","classname");
for(var_02 = 0;var_02 < var_04.size;var_02++)
{
if(isdefined(var_04[var_02].script_prefab_exploder))
{
var_04[var_02].script_exploder = var_04[var_02].script_prefab_exploder;
}
if(isdefined(var_04[var_02].script_exploder))
{
var_03[var_03.size] = var_04[var_02];
}
}
var_04 = getentarray("script_model","classname");
for(var_02 = 0;var_02 < var_04.size;var_02++)
{
if(isdefined(var_04[var_02].script_prefab_exploder))
{
var_04[var_02].script_exploder = var_04[var_02].script_prefab_exploder;
}
if(isdefined(var_04[var_02].script_exploder))
{
var_03[var_03.size] = var_04[var_02];
}
}
var_04 = getentarray("item_health","classname");
for(var_02 = 0;var_02 < var_04.size;var_02++)
{
if(isdefined(var_04[var_02].script_prefab_exploder))
{
var_04[var_02].script_exploder = var_04[var_02].script_prefab_exploder;
}
if(isdefined(var_04[var_02].script_exploder))
{
var_03[var_03.size] = var_04[var_02];
}
}
if(!isdefined(level.createfxent))
{
level.createfxent = [];
}
var_05 = [];
for(var_03 = 0;var_03 < var_04.size;var_03++ = var_41["exploder"])
{
var_06 = var_04[var_03];
var_07 = common_scripts\utility::createexploder(var_06.script_fxid);
var_07.v = [];
var_07.v["origin"] = var_06.origin;
var_07.v["angles"] = var_06.angles;
var_07.v["delay"] = var_06.script_delay;
var_07.v["firefx"] = var_06.script_firefx;
var_07.v["firefxdelay"] = var_06.script_firefxdelay;
var_07.v["firefxsound"] = var_06.script_firefxsound;
var_07.v["firefxtimeout"] = var_06.script_firefxtimeout;
var_07.v["earthquake"] = var_06.script_earthquake;
var_07.v["damage"] = var_06.script_damage;
var_07.v["damage_radius"] = var_06.script_radius;
var_07.v["soundalias"] = var_06.script_soundalias;
var_07.v["repeat"] = var_06.script_repeat;
var_07.v["delay_min"] = var_06.script_delay_min;
var_07.v["delay_max"] = var_06.script_delay_max;
var_07.v["target"] = var_06.target;
var_07.v["ender"] = var_06.script_ender;
var_07.v["type"] = "exploder";
if(!isdefined(var_06.script_fxid))
{
var_07.v["fxid"] = "No FX";
}
else
{
var_07.v["fxid"] = var_06.script_fxid;
}
var_07.v["exploder"] = var_06.script_exploder;
if(!isdefined(var_07.v["delay"]))
{
var_07.v["delay"] = 0;
}
if(isdefined(var_06.target))
{
var_08 = getent(var_07.v["target"],"targetname").origin;
var_07.v["angles"] = vectortoangles(var_08 - var_07.v["origin"]);
}
if(var_06.classname == "script_brushmodel" || isdefined(var_06.model))
{
var_07.model = var_06;
var_07.model.disconnect_paths = var_06.script_disconnectpaths;
}
if(isdefined(var_06.targetname) && isdefined(var_41[var_06.targetname]))
{
var_07.v["exploder_type"] = var_06.targetname;
}
else
{
var_07.v["exploder_type"] = "normal";
}
var_07 common_scripts\_createfx::post_entity_creation_function();
}
}
//Function Number: 4
func_2B8D()
{
if(!isdefined(level._effect["lantern_light"]))
{
level._effect["lantern_light"] = loadfx("props/glow_latern");
}
common_scripts\_fx::loopfx("lantern_light",self.origin,0.3,self.origin + (0,0,1));
}
//Function Number: 5
hurtplayersthink()
{
level endon("game_ended");
wait randomfloat(1);
for(;;)
{
foreach(var_01 in level.players)
{
if(var_01 istouching(self) && maps\mp\_utility::isreallyalive(var_01))
{
var_01 maps\mp\_utility::_suicide();
}
}
wait 0.5;
}
}
//Function Number: 6
setupdestructiblekillcaments()
{
var_00 = getentarray("destructible_vehicle","targetname");
foreach(var_02 in var_00)
{
switch(getdvar("mapname"))
{
case "mp_interchange":
if(var_02.origin[2] > 150)
{
break;
}
break;
}
var_03 = var_02.origin + (0,0,5);
var_04 = var_02.origin + (0,0,128);
var_05 = bullettrace(var_03,var_04,0,var_02);
var_02.killcament = spawn("script_model",var_05["position"]);
var_02.killcament.targetname = "killCamEnt_destructible_vehicle";
var_02.killcament setscriptmoverkillcam("explosive");
var_02 thread func_2B90();
}
var_07 = getentarray("destructible_toy","targetname");
foreach(var_02 in var_07)
{
var_03 = var_02.origin + (0,0,5);
var_04 = var_02.origin + (0,0,128);
var_05 = bullettrace(var_03,var_04,0,var_02);
var_02.killcament = spawn("script_model",var_05["position"]);
var_02.killcament.targetname = "killCamEnt_destructible_toy";
var_02.killcament setscriptmoverkillcam("explosive");
var_02 thread func_2B90();
}
var_0A = getentarray("explodable_barrel","targetname");
foreach(var_02 in var_0A)
{
var_03 = var_02.origin + (0,0,5);
var_04 = var_02.origin + (0,0,128);
var_05 = bullettrace(var_03,var_04,0,var_02);
var_02.killcament = spawn("script_model",var_05["position"]);
var_02.killcament.targetname = "killCamEnt_explodable_barrel";
var_02.killcament setscriptmoverkillcam("explosive");
var_02 thread func_2B90();
}
}
//Function Number: 7
func_2B90()
{
level endon("game_ended");
var_00 = self.killcament;
var_00 endon("death");
self waittill("death");
wait 10;
if(isdefined(var_00))
{
var_00 delete();
}
}

View File

@ -0,0 +1,709 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_matchdata.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 25
* Decompile Time: 450 ms
* Timestamp: 10/27/2023 2:27:50 AM
*******************************************************************/
//Function Number: 1
init()
{
if(!isdefined(game["gamestarted"]))
{
setmatchdatadef("mp/matchdata.def");
setmatchdata("map",level.script);
if(level.hardcoremode)
{
var_00 = level.gametype + " hc";
setmatchdata("gametype",var_00);
}
else
{
setmatchdata("gametype",level.gametype);
}
setmatchdata("buildVersion",getbuildversion());
setmatchdata("buildNumber",getbuildnumber());
setmatchdata("dateTime",getsystemtime());
setmatchdataid();
}
level.maxlives = 285;
level.maxnamelength = 26;
level.maxevents = 150;
level.maxkillstreaks = 125;
level.maxlogclients = 30;
level.maxnumchallengesperplayer = 10;
level.maxnumawardsperplayer = 10;
level thread gameendlistener();
level thread func_28D2();
}
//Function Number: 2
getmatchdatetime()
{
return getmatchdata("dateTime");
}
//Function Number: 3
logkillstreakevent(param_00,param_01)
{
if(!canlogclient(self) || !canlogkillstreak())
{
return;
}
var_02 = getmatchdata("killstreakCount");
setmatchdata("killstreakCount",var_02 + 1);
setmatchdata("killstreaks",var_02,"eventType",param_00);
setmatchdata("killstreaks",var_02,"player",self.clientid);
setmatchdata("killstreaks",var_02,"eventTime",gettime());
setmatchdata("killstreaks",var_02,"eventPos",0,int(param_01[0]));
setmatchdata("killstreaks",var_02,"eventPos",1,int(param_01[1]));
setmatchdata("killstreaks",var_02,"eventPos",2,int(param_01[2]));
}
//Function Number: 4
loggameevent(param_00,param_01)
{
if(!canlogclient(self) || !canlogevent())
{
return;
}
var_02 = getmatchdata("eventCount");
setmatchdata("eventCount",var_02 + 1);
setmatchdata("events",var_02,"eventType",param_00);
setmatchdata("events",var_02,"player",self.clientid);
setmatchdata("events",var_02,"eventTime",gettime());
setmatchdata("events",var_02,"eventPos",0,int(param_01[0]));
setmatchdata("events",var_02,"eventPos",1,int(param_01[1]));
setmatchdata("events",var_02,"eventPos",2,int(param_01[2]));
}
//Function Number: 5
func_28B4(param_00,param_01)
{
if(!canloglife(param_00))
{
return;
}
setmatchdata("lives",param_00,"modifiers",param_01,1);
}
//Function Number: 6
logmultikill(param_00,param_01)
{
if(!canloglife(param_00))
{
return;
}
setmatchdata("lives",param_00,"multikill",param_01);
}
//Function Number: 7
func_28B6(param_00)
{
if(!canlogclient(self) || !canloglife(param_00))
{
return;
}
setmatchdata("lives",param_00,"player",self.clientid);
setmatchdata("lives",param_00,"spawnPos",0,int(self.spawnpos[0]));
setmatchdata("lives",param_00,"spawnPos",1,int(self.spawnpos[1]));
setmatchdata("lives",param_00,"spawnPos",2,int(self.spawnpos[2]));
setmatchdata("lives",param_00,"wasTacticalInsertion",self.wasti);
setmatchdata("lives",param_00,"team",self.team);
setmatchdata("lives",param_00,"spawnTime",self.spawntime);
setmatchdata("lives",param_00,"duration",gettime() - self.spawntime);
func_28BB(param_00);
}
//Function Number: 8
logplayerxp(param_00,param_01)
{
if(!canlogclient(self))
{
return;
}
setmatchdata("players",self.clientid,param_01,param_00);
}
//Function Number: 9
func_28BB(param_00)
{
if(!canlogclient(self) || !canloglife(param_00) || self.curclass == "gamemode")
{
return;
}
var_01 = self.curclass;
if(var_01 == "copycat")
{
var_02 = self.pers["copyCatLoadout"];
var_03 = var_02["loadoutPrimary"];
var_04 = var_02["loadoutPrimaryAttachment"];
var_05 = var_02["loadoutPrimaryAttachment2"];
var_06 = var_02["loadoutPrimaryCamo"];
var_07 = var_02["loadoutPrimaryBuff"];
var_08 = var_02["loadoutSecondary"];
var_09 = var_02["loadoutSecondaryAttachment"];
var_0A = var_02["loadoutSecondaryAttachment2"];
var_0B = var_02["loadoutSecondaryCamo"];
var_0C = var_02["loadoutSecondaryBuff"];
var_0D = var_02["loadoutEquipment"];
var_0E = var_02["loadoutPerk1"];
var_0F = var_02["loadoutPerk2"];
var_10 = var_02["loadoutPerk3"];
var_11 = var_02["loadoutOffhand"];
var_12 = var_02["loadoutDeathstreak"];
var_13 = var_02["loadoutStreakType"];
var_14 = var_02["loadoutKillstreak1"];
var_15 = var_02["loadoutKillstreak2"];
var_16 = var_02["loadoutKillstreak3"];
}
else if(issubstr(var_16,"custom"))
{
var_17 = maps\mp\gametypes\_class::func_28BD(var_16);
var_03 = maps\mp\gametypes\_class::func_282D(var_17,0);
var_04 = maps\mp\gametypes\_class::cac_getweaponattachment(var_17,0);
var_05 = maps\mp\gametypes\_class::func_28BF(var_17,0);
var_08 = maps\mp\gametypes\_class::func_282D(var_17,1);
var_09 = maps\mp\gametypes\_class::cac_getweaponattachment(var_17,1);
var_0A = maps\mp\gametypes\_class::func_28BF(var_17,1);
var_11 = maps\mp\gametypes\_class::cac_getoffhand(var_17);
var_0D = maps\mp\gametypes\_class::func_28C1(var_17,0);
var_0E = maps\mp\gametypes\_class::func_28C1(var_17,1);
var_0F = maps\mp\gametypes\_class::func_28C1(var_17,2);
var_10 = maps\mp\gametypes\_class::func_28C1(var_17,3);
var_13 = maps\mp\gametypes\_class::func_28C1(var_17,5);
var_12 = maps\mp\gametypes\_class::cac_getdeathstreak(var_17);
var_07 = maps\mp\gametypes\_class::cac_getweaponbuff(var_17,0);
var_0C = maps\mp\gametypes\_class::cac_getweaponbuff(var_17,1);
var_14 = maps\mp\gametypes\_class::func_28C4(var_17,var_13,0);
var_15 = maps\mp\gametypes\_class::func_28C4(var_17,var_13,1);
var_16 = maps\mp\gametypes\_class::func_28C4(var_17,var_13,2);
}
else
{
var_17 = maps\mp\gametypes\_class::func_28BD(var_17);
var_03 = maps\mp\gametypes\_class::func_28C6(level.classtablename,var_17,0);
var_04 = maps\mp\gametypes\_class::func_28C7(level.classtablename,var_17,0,0);
var_05 = maps\mp\gametypes\_class::func_28C7(level.classtablename,var_17,0,1);
var_08 = maps\mp\gametypes\_class::func_28C6(level.classtablename,var_17,1);
var_09 = maps\mp\gametypes\_class::func_28C7(level.classtablename,var_17,1,0);
var_0A = maps\mp\gametypes\_class::func_28C7(level.classtablename,var_17,1,1);
var_11 = maps\mp\gametypes\_class::table_getoffhand(level.classtablename,var_17);
var_0D = maps\mp\gametypes\_class::table_getequipment(level.classtablename,var_17,0);
var_0E = maps\mp\gametypes\_class::func_28CA(level.classtablename,var_17,1);
var_0F = maps\mp\gametypes\_class::func_28CA(level.classtablename,var_17,2);
var_10 = maps\mp\gametypes\_class::func_28CA(level.classtablename,var_17,3);
var_13 = maps\mp\gametypes\_class::func_28CA(level.classtablename,var_17,5);
var_12 = maps\mp\gametypes\_class::table_getdeathstreak(level.classtablename,var_17);
var_07 = maps\mp\gametypes\_class::table_getweaponbuff(level.classtablename,var_17,0);
var_0C = maps\mp\gametypes\_class::table_getweaponbuff(level.classtablename,var_17,1);
var_14 = maps\mp\gametypes\_class::table_getkillstreak(level.classtablename,var_17,1);
var_15 = maps\mp\gametypes\_class::table_getkillstreak(level.classtablename,var_17,2);
var_16 = maps\mp\gametypes\_class::table_getkillstreak(level.classtablename,var_17,3);
}
var_04 = maps\mp\_utility::validateattachment(var_04);
var_05 = maps\mp\_utility::validateattachment(var_05);
var_09 = maps\mp\_utility::validateattachment(var_09);
var_0A = maps\mp\_utility::validateattachment(var_0A);
setmatchdata("lives",param_00,"primaryWeapon",var_03);
setmatchdata("lives",param_00,"primaryAttachments",0,var_04);
setmatchdata("lives",param_00,"primaryAttachments",1,var_05);
setmatchdata("lives",param_00,"secondaryWeapon",var_08);
setmatchdata("lives",param_00,"secondaryAttachments",0,var_09);
setmatchdata("lives",param_00,"secondaryAttachments",1,var_09);
setmatchdata("lives",param_00,"offhandWeapon",var_11);
setmatchdata("lives",param_00,"equipment",var_0D);
setmatchdata("lives",param_00,"perks",0,var_0E);
setmatchdata("lives",param_00,"perks",1,var_0F);
setmatchdata("lives",param_00,"perks",2,var_10);
setmatchdata("lives",param_00,"strikePackage",var_13);
setmatchdata("lives",param_00,"deathstreak",var_12);
setmatchdata("lives",param_00,"weaponBuff",0,var_07);
setmatchdata("lives",param_00,"weaponBuff",1,var_0C);
switch(var_13)
{
case "streaktype_assault":
setmatchdata("lives",param_00,"assaultStreaks",0,var_14);
setmatchdata("lives",param_00,"assaultStreaks",1,var_15);
setmatchdata("lives",param_00,"assaultStreaks",2,var_16);
break;
case "streaktype_support":
setmatchdata("lives",param_00,"defenseStreaks",0,var_14);
setmatchdata("lives",param_00,"defenseStreaks",1,var_15);
setmatchdata("lives",param_00,"defenseStreaks",2,var_16);
break;
case "streaktype_specialist":
setmatchdata("lives",param_00,"specialistStreaks",0,var_14);
setmatchdata("lives",param_00,"specialistStreaks",1,var_15);
setmatchdata("lives",param_00,"specialistStreaks",2,var_16);
break;
case "none":
break;
}
}
//Function Number: 10
func_28CF(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
if(!canlogclient(self) || isplayer(param_01) && !canlogclient(param_01) || !canloglife(param_00))
{
return;
}
if(param_00 >= level.maxlives)
{
return;
}
if(param_04 == "none")
{
var_07 = "none";
var_08 = "none";
}
else
{
var_07 = weaponinventorytype(param_06);
var_08 = weaponclass(param_05);
}
if(issubstr(param_04,"destructible"))
{
param_04 = "destructible";
}
if(isdefined(var_07) && var_07 == "primary" || var_07 == "altmode" && var_08 == "pistol" || var_08 == "smg" || var_08 == "rifle" || var_08 == "spread" || var_08 == "mg" || var_08 == "grenade" || var_08 == "rocketlauncher" || var_08 == "sniper")
{
var_09 = undefined;
if(var_07 == "altmode")
{
var_09 = param_04;
param_04 = param_05;
setmatchdata("lives",param_00,"altMode",1);
}
var_0A = strtok(param_04,"_");
if(var_0A[0] == "iw5")
{
var_0F = var_0A[0] + "_" + var_0A[1];
setmatchdata("lives",param_00,"weapon",var_0F);
if(isdefined(var_0A[3]) && issubstr(var_0A[3],"scope") && issubstr(var_0A[3],"vz"))
{
var_0A[3] = "vzscope";
}
if(isdefined(var_0A[4]) && issubstr(var_0A[4],"scope") && issubstr(var_0A[4],"vz"))
{
var_0A[4] = "vzscope";
}
if(isdefined(var_0A[3]) && issubstr(var_0A[3],"scope") && !issubstr(var_0A[3],"vz"))
{
var_0A[3] = undefined;
}
if(isdefined(var_0A[4]) && issubstr(var_0A[4],"scope") && !issubstr(var_0A[4],"vz"))
{
var_0A[4] = undefined;
}
if(isdefined(var_0A[3]) && maps\mp\_utility::isattachment(var_0A[3]))
{
var_10 = maps\mp\_utility::validateattachment(var_0A[3]);
setmatchdata("lives",param_00,"attachments",0,var_10);
}
if(isdefined(var_0A[4]) && maps\mp\_utility::isattachment(var_0A[4]))
{
var_10 = maps\mp\_utility::validateattachment(var_0A[4]);
setmatchdata("lives",param_00,"attachments",1,var_10);
}
}
else if(var_0A[0] == "alt")
{
var_0F = var_0A[1] + "_" + var_0A[2];
setmatchdata("lives",param_00,"weapon",var_0F);
if(isdefined(var_0A[4]) && maps\mp\_utility::isattachment(var_0A[4]))
{
var_10 = maps\mp\_utility::validateattachment(var_0A[4]);
setmatchdata("lives",param_00,"attachments",0,var_10);
}
if(isdefined(var_0A[5]) && maps\mp\_utility::isattachment(var_0A[5]))
{
var_10 = maps\mp\_utility::validateattachment(var_0A[5]);
setmatchdata("lives",param_00,"attachments",1,var_10);
}
}
else
{
var_0A[var_0A.size - 1] = undefined;
setmatchdata("lives",param_00,"weapon",var_0A[0]);
if(isdefined(var_0A[1]) && var_07 != "altmode")
{
var_10 = maps\mp\_utility::validateattachment(var_0A[1]);
setmatchdata("lives",param_00,"attachments",0,var_10);
}
if(isdefined(var_0A[2]) && var_07 != "altmode")
{
var_10 = maps\mp\_utility::validateattachment(var_0A[2]);
setmatchdata("lives",param_00,"attachments",1,var_10);
}
}
}
else if(var_07 == "item" || var_07 == "offhand")
{
var_11 = maps\mp\_utility::strip_suffix(param_04,"_mp");
setmatchdata("lives",param_00,"weapon",var_11);
}
else
{
setmatchdata("lives",param_00,"weapon",param_04);
}
if(maps\mp\_utility::func_2829(param_04))
{
setmatchdata("lives",param_00,"modifiers","killstreak",1);
}
setmatchdata("lives",param_00,"mod",param_03);
if(isplayer(param_01))
{
setmatchdata("lives",param_00,"attacker",param_01.clientid);
setmatchdata("lives",param_00,"attackerPos",0,int(param_01.origin[0]));
setmatchdata("lives",param_00,"attackerPos",1,int(param_01.origin[1]));
setmatchdata("lives",param_00,"attackerPos",2,int(param_01.origin[2]));
var_12 = anglestoforward((0,self.angles[1],0));
var_13 = self.origin - param_01.origin;
var_13 = vectornormalize((var_13[0],var_13[1],0));
setmatchdata("lives",param_00,"dotOfDeath",vectordot(var_12,var_13));
if(param_01 maps\mp\_utility::isjuggernaut())
{
setmatchdata("lives",param_00,"attackerIsJuggernaut",1);
}
}
else
{
setmatchdata("lives",param_00,"attacker",255);
setmatchdata("lives",param_00,"attackerPos",0,int(self.origin[0]));
setmatchdata("lives",param_00,"attackerPos",1,int(self.origin[1]));
setmatchdata("lives",param_00,"attackerPos",2,int(self.origin[2]));
}
setmatchdata("lives",param_00,"player",self.clientid);
setmatchdata("lives",param_00,"deathPos",0,int(self.origin[0]));
setmatchdata("lives",param_00,"deathPos",1,int(self.origin[1]));
setmatchdata("lives",param_00,"deathPos",2,int(self.origin[2]));
setmatchdata("lives",param_00,"deathAngles",0,int(self.angles[0]));
setmatchdata("lives",param_00,"deathAngles",1,int(self.angles[1]));
setmatchdata("lives",param_00,"deathAngles",2,int(self.angles[2]));
}
//Function Number: 11
logplayerdata()
{
if(!canlogclient(self))
{
return;
}
setmatchdata("players",self.clientid,"score",maps\mp\_utility::getpersstat("score"));
if(maps\mp\_utility::getpersstat("assists") > 255)
{
setmatchdata("players",self.clientid,"assists",255);
}
else
{
setmatchdata("players",self.clientid,"assists",maps\mp\_utility::getpersstat("assists"));
}
if(maps\mp\_utility::getpersstat("longestStreak") > 255)
{
setmatchdata("players",self.clientid,"longestStreak",255);
return;
}
setmatchdata("players",self.clientid,"longestStreak",maps\mp\_utility::getpersstat("longestStreak"));
}
//Function Number: 12
func_28D2()
{
level waittill("game_ended");
foreach(var_01 in level.players)
{
wait 0.05;
if(!isdefined(var_01))
{
continue;
}
if(isdefined(var_01.detectedexploit) && var_01.detectedexploit)
{
var_01 setplayerdata("restXPGoal",var_01.detectedexploit);
}
if(isdefined(var_01.weaponsused))
{
var_01 doublebubblesort();
var_02 = 0;
if(var_01.weaponsused.size > 3)
{
for(var_03 = var_01.weaponsused.size - 1;var_03 > var_01.weaponsused.size - 3;var_03--)
{
var_01 setplayerdata("round","weaponsUsed",var_02,var_01.weaponsused[var_03]);
var_01 setplayerdata("round","weaponXpEarned",var_02,var_01.weaponxpearned[var_03]);
var_02++;
}
}
else
{
for(var_03 = var_01.weaponsused.size - 1;var_03 >= 0;var_03--)
{
var_01 setplayerdata("round","weaponsUsed",var_02,var_01.weaponsused[var_03]);
var_01 setplayerdata("round","weaponXpEarned",var_02,var_01.weaponxpearned[var_03]);
var_02++;
}
}
}
else
{
var_01 setplayerdata("round","weaponsUsed",0,"none");
var_01 setplayerdata("round","weaponsUsed",1,"none");
var_01 setplayerdata("round","weaponsUsed",2,"none");
var_01 setplayerdata("round","weaponXpEarned",0,0);
var_01 setplayerdata("round","weaponXpEarned",1,0);
var_01 setplayerdata("round","weaponXpEarned",2,0);
}
if(isdefined(var_01.challengescompleted))
{
var_01 setplayerdata("round","challengeNumCompleted",var_01.challengescompleted.size);
}
else
{
var_01 setplayerdata("round","challengeNumCompleted",0);
}
for(var_03 = 0;var_03 < 20;var_03++)
{
if(isdefined(var_01.challengescompleted) && isdefined(var_01.challengescompleted[var_03]) && var_01.challengescompleted[var_03] != "ch_prestige" && !issubstr(var_01.challengescompleted[var_03],"_daily") && !issubstr(var_01.challengescompleted[var_03],"_weekly"))
{
var_01 setplayerdata("round","challengesCompleted",var_03,var_01.challengescompleted[var_03]);
continue;
}
var_01 setplayerdata("round","challengesCompleted",var_03,"");
}
}
}
//Function Number: 13
doublebubblesort()
{
var_00 = self.weaponxpearned;
var_01 = self.weaponxpearned.size;
for(var_02 = var_01 - 1;var_02 > 0;var_02--)
{
for(var_03 = 1;var_03 <= var_02;var_03++)
{
if(var_00[var_03 - 1] < var_00[var_03])
{
var_04 = self.weaponsused[var_03];
self.weaponsused[var_03] = self.weaponsused[var_03 - 1];
self.weaponsused[var_03 - 1] = var_04;
var_05 = self.weaponxpearned[var_03];
self.weaponxpearned[var_03] = self.weaponxpearned[var_03 - 1];
self.weaponxpearned[var_03 - 1] = var_05;
var_00 = self.weaponxpearned;
}
}
}
}
//Function Number: 14
gameendlistener()
{
level waittill("game_ended");
foreach(var_01 in level.players)
{
var_01 logplayerdata();
if(!isalive(var_01))
{
continue;
}
var_02 = maps\mp\_utility::func_28D8();
var_01 func_28B6(var_02);
}
}
//Function Number: 15
canlogclient(param_00)
{
return param_00.clientid < level.maxlogclients;
}
//Function Number: 16
canlogevent()
{
return getmatchdata("eventCount") < level.maxevents;
}
//Function Number: 17
canlogkillstreak()
{
return getmatchdata("killstreakCount") < level.maxkillstreaks;
}
//Function Number: 18
canloglife(param_00)
{
return getmatchdata("lifeCount") < level.maxlives;
}
//Function Number: 19
logweaponstat(param_00,param_01,param_02)
{
if(!canlogclient(self))
{
return;
}
if(maps\mp\_utility::func_2829(param_00))
{
return;
}
var_03 = getmatchdata("players",self.clientid,"weaponStats",param_00,param_01);
if(param_01 == "kills" || param_01 == "deaths" || param_01 == "headShots")
{
if(var_03 + param_02 > 255)
{
setmatchdata("players",self.clientid,"weaponStats",param_00,param_01,255);
}
else
{
setmatchdata("players",self.clientid,"weaponStats",param_00,param_01,var_03 + param_02);
}
}
setmatchdata("players",self.clientid,"weaponStats",param_00,param_01,var_03 + param_02);
}
//Function Number: 20
func_28DE(param_00,param_01,param_02)
{
if(!canlogclient(self))
{
return;
}
var_03 = getmatchdata("players",self.clientid,"attachmentsStats",param_00,param_01);
setmatchdata("players",self.clientid,"attachmentsStats",param_00,param_01,var_03 + param_02);
}
//Function Number: 21
func_28DF()
{
var_00 = [];
var_01 = 149;
for(var_02 = 0;var_02 <= var_01;var_02++)
{
var_03 = tablelookup("mp/statstable.csv",0,var_02,4);
if(var_03 == "")
{
continue;
}
if(!issubstr(tablelookup("mp/statsTable.csv",0,var_02,2),"weapon_"))
{
continue;
}
if(tablelookup("mp/statsTable.csv",0,var_02,2) == "weapon_other")
{
continue;
}
var_00[var_00.size] = var_03;
}
return var_00;
}
//Function Number: 22
func_28E0(param_00,param_01)
{
if(!canlogclient(self))
{
return;
}
if(issubstr(param_00,"_daily") || issubstr(param_00,"_weekly"))
{
return;
}
var_02 = getmatchdata("players",self.clientid,"challengeCount");
if(var_02 < level.maxnumchallengesperplayer)
{
setmatchdata("players",self.clientid,"challenge",var_02,param_00);
setmatchdata("players",self.clientid,"tier",var_02,param_01);
setmatchdata("players",self.clientid,"challengeCount",var_02 + 1);
}
}
//Function Number: 23
logaward(param_00)
{
if(!canlogclient(self))
{
return;
}
var_01 = getmatchdata("players",self.clientid,"awardCount");
if(var_01 < level.maxnumawardsperplayer)
{
setmatchdata("players",self.clientid,"awards",var_01,param_00);
setmatchdata("players",self.clientid,"awardCount",var_01 + 1);
}
}
//Function Number: 24
func_80EF()
{
if(!canlogclient(self))
{
return;
}
setmatchdata("players",self.clientid,"killsConfirmed",self.pers["confirmed"]);
}
//Function Number: 25
func_80F0()
{
if(!canlogclient(self))
{
return;
}
setmatchdata("players",self.clientid,"killsDenied",self.pers["denied"]);
}

View File

@ -0,0 +1,356 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_matchevents.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 13
* Decompile Time: 227 ms
* Timestamp: 10/27/2023 2:27:50 AM
*******************************************************************/
//Function Number: 1
init()
{
level.match_events_fx["smoke"] = loadfx("smoke/smoke_grenade_11sec_mp");
level.match_events_fx["tracer"] = loadfx("misc/tracer_incoming");
level.match_events_fx["explosion"] = loadfx("explosions/building_explosion_huge_gulag");
level.matchevents["mortar"] = ::domortar;
level.matchevents["smoke"] = ::func_2ED3;
level.matchevents["airstrike"] = ::func_2ED4;
level.matchevents["pavelow"] = ::func_2EDA;
level.matchevents["heli_insertion"] = ::func_2EDB;
level.matchevents["osprey_insertion"] = ::func_2EDC;
level.matcheventstarted = 0;
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread onplayerspawned();
}
}
//Function Number: 3
onplayerspawned()
{
self endon("disconnect");
level endon("matchevent_started");
self waittill("spawned_player");
if(level.matcheventstarted == 0)
{
level.matcheventstarted = 1;
if(common_scripts\utility::cointoss())
{
self thread [[ common_scripts\utility::random(level.matchevents) ]]();
}
level notify("matchevent_started");
}
}
//Function Number: 4
getmapcenter()
{
if(isdefined(level.mapcenter))
{
return level.mapcenter;
}
var_00 = getentarray("mp_tdm_spawn_allies_start","classname");
var_01 = getentarray("mp_tdm_spawn_axis_start","classname");
if(isdefined(var_00) && isdefined(var_00[0]) && isdefined(var_01) && isdefined(var_01[0]))
{
var_02 = distance(var_00[0].origin,var_01[0].origin) / 2;
var_03 = vectortoangles(var_00[0].origin - var_01[0].origin);
var_03 = vectornormalize(var_03);
return var_00[0].origin + var_03 * var_02;
}
return (0,0,0);
}
//Function Number: 5
getstartspawns()
{
var_00 = getentarray("mp_tdm_spawn_allies_start","classname");
var_01 = getentarray("mp_tdm_spawn_axis_start","classname");
if(isdefined(var_00) && isdefined(var_00[0]) && isdefined(var_01) && isdefined(var_01[0]))
{
var_02 = [];
return var_41;
}
return undefined;
}
//Function Number: 6
domortar()
{
var_00 = getmapcenter();
var_01 = 1;
for(var_02 = 0;var_02 < 5;var_02++)
{
var_03 = var_00 + (randomintrange(100,600) * var_01,randomintrange(100,600) * var_01,0);
var_04 = bullettrace(var_03 + (0,0,500),var_03 - (0,0,500),0);
if(isdefined(var_04["position"]))
{
playfx(level.match_events_fx["tracer"],var_03);
thread maps\mp\_utility::func_2ED2("fast_artillery_round",var_03);
wait randomfloatrange(0.5,1.5);
playfx(level.match_events_fx["explosion"],var_03);
playrumbleonposition("grenade_rumble",var_03);
earthquake(1,0.6,var_03,2000);
thread maps\mp\_utility::func_2ED2("exp_suitcase_bomb_main",var_03);
physicsexplosionsphere(var_03 + (0,0,30),250,125,2);
var_01 = var_01 * -1;
}
}
}
//Function Number: 7
func_2ED3()
{
var_00 = getmapcenter();
var_01 = 1;
for(var_02 = 0;var_02 < 3;var_02++)
{
var_03 = var_00 + (randomintrange(100,600) * var_01,randomintrange(100,600) * var_01,0);
playfx(level.match_events_fx["smoke"],var_03);
var_01 = var_01 * -1;
wait 2;
}
}
//Function Number: 8
func_2ED4()
{
level endon("game_ended");
var_00 = 1;
var_01 = getmapcenter();
for(var_02 = 0;var_02 < 3;var_02++)
{
var_03 = var_01 + (randomintrange(100,600) * var_00,randomintrange(100,600) * var_00,0);
var_04 = bullettrace(var_03 + (0,0,500),var_03 - (0,0,500),0);
if(isdefined(var_04["position"]))
{
thread doairstrikeflyby(var_04["position"]);
var_00 = var_00 * -1;
wait randomintrange(2,4);
}
}
}
//Function Number: 9
doairstrikeflyby(param_00)
{
var_01 = randomint(level.spawnpoints.size - 1);
var_02 = level.spawnpoints[var_01].origin * (1,1,0);
var_03 = 8000;
var_04 = 8000;
var_05 = getent("airstrikeheight","targetname");
var_06 = (0,0,var_05.origin[2] + randomintrange(-100,600));
var_07 = anglestoforward((0,randomint(45),0));
var_08 = var_02 + var_06 + var_07 * var_03 * -1;
var_09 = var_02 + var_06 + var_07 * var_04;
var_0A = var_08 + (randomintrange(400,500),randomintrange(400,500),randomintrange(200,300));
var_0B = var_09 + (randomintrange(400,500),randomintrange(400,500),randomintrange(200,300));
var_0C = spawnplane(self,"script_model",var_08);
var_0D = spawnplane(self,"script_model",var_0A);
if(common_scripts\utility::cointoss())
{
var_0C setmodel("vehicle_av8b_harrier_jet_mp");
var_0D setmodel("vehicle_av8b_harrier_jet_mp");
}
else
{
var_0C setmodel("vehicle_av8b_harrier_jet_opfor_mp");
var_0D setmodel("vehicle_av8b_harrier_jet_opfor_mp");
}
var_0C.angles = vectortoangles(var_09 - var_08);
var_0C playloopsound("veh_mig29_dist_loop");
var_0C thread func_2ED7();
var_0D.angles = vectortoangles(var_09 - var_0A);
var_0D playloopsound("veh_mig29_dist_loop");
var_0D thread func_2ED7();
var_0E = distance(var_08,var_09);
var_0C moveto(var_09 * 2,var_0E / 2000,0,0);
wait randomfloatrange(0.25,0.5);
var_0D moveto(var_0B * 2,var_0E / 2000,0,0);
wait var_0E / 2000;
var_0C delete();
var_0D delete();
}
//Function Number: 10
func_2ED7()
{
self endon("death");
wait 0.5;
playfxontag(level.fx_airstrike_afterburner,self,"tag_engine_right");
wait 0.5;
playfxontag(level.fx_airstrike_afterburner,self,"tag_engine_left");
wait 0.5;
playfxontag(level.fx_airstrike_contrail,self,"tag_right_wingtip");
wait 0.5;
playfxontag(level.fx_airstrike_contrail,self,"tag_left_wingtip");
}
//Function Number: 11
func_2EDA()
{
var_00 = getmapcenter();
var_01 = bullettrace(var_00 + (0,0,500),var_00 - (0,0,500),0);
if(isdefined(var_01["position"]))
{
if(common_scripts\utility::cointoss())
{
var_02 = "vehicle_pavelow";
}
else
{
var_02 = "vehicle_pavelow_opfor";
}
var_03 = spawnhelicopter(self,var_01["position"] + (0,0,1000),(0,0,0),"pavelow_mp",var_02);
if(!isdefined(var_03))
{
return;
}
var_03.team = self.pers["team"];
var_03.heli_type = level.heli_types[var_02];
var_03 thread [[ level.lightfxfunc[level.heli_types[var_02]] ]]();
var_03.zoffset = (0,0,var_03 gettagorigin("tag_origin")[2] - var_03 gettagorigin("tag_ground")[2]);
wait 1;
playfxontag(level.chopper_fx["damage"]["on_fire"],var_03,"tag_engine_left");
var_03 thread maps\mp\killstreaks\_helicopter::func_2C24();
}
}
//Function Number: 12
func_2EDB()
{
var_00 = getstartspawns();
if(isdefined(var_00))
{
var_01 = 200;
var_02 = 200;
var_03 = 1000;
var_04 = anglestoforward(var_00["allies"][0].angles) * 300;
var_05 = anglestoup(var_00["allies"][0].angles) * var_01;
var_06 = anglestoright(var_00["allies"][0].angles) * 200;
var_07 = anglestoright(var_00["allies"][0].angles) * -200;
var_08 = var_00["allies"][0].origin + var_04 + var_05 + var_06;
var_09 = var_00["allies"][0].origin + var_04 + var_05 + var_07;
var_0A = spawnhelicopter(self,var_08,var_00["allies"][0].angles,"attack_littlebird_mp","vehicle_little_bird_bench");
var_0B = spawnhelicopter(self,var_09,var_00["allies"][0].angles,"attack_littlebird_mp","vehicle_little_bird_bench");
var_0C = anglestoforward(var_00["axis"][0].angles) * 300;
var_0D = anglestoup(var_00["axis"][0].angles) * var_01;
var_0E = anglestoright(var_00["axis"][0].angles) * 200;
var_0F = anglestoright(var_00["axis"][0].angles) * -200;
var_10 = var_00["axis"][0].origin + var_0C + var_0D + var_0E;
var_11 = var_00["axis"][0].origin + var_0C + var_0D + var_0F;
var_12 = spawnhelicopter(self,var_10,var_00["axis"][0].angles,"attack_littlebird_mp","vehicle_little_bird_bench");
var_13 = spawnhelicopter(self,var_11,var_00["axis"][0].angles,"attack_littlebird_mp","vehicle_little_bird_bench");
var_0A vehicle_setspeed(20,10);
var_0A setyawspeed(3,3,3,0.3);
var_0A setvehgoalpos(var_08 + (0,0,var_02),1);
var_0B vehicle_setspeed(20,10);
var_0B setyawspeed(3,3,3,0.3);
var_0B setvehgoalpos(var_09 + (0,0,var_02),1);
var_12 vehicle_setspeed(20,10);
var_12 setyawspeed(3,3,3,0.3);
var_12 setvehgoalpos(var_10 + (0,0,var_02),1);
var_13 vehicle_setspeed(20,10);
var_13 setyawspeed(3,3,3,0.3);
var_13 setvehgoalpos(var_11 + (0,0,var_02),1);
var_0A waittill("goal");
wait 2;
var_0A vehicle_setspeed(80,60);
var_0A setyawspeed(30,15,15,0.3);
var_0A setvehgoalpos(var_08 + (0,0,var_03) + var_06 * 2,1);
var_0B vehicle_setspeed(80,60);
var_0B setyawspeed(30,15,15,0.3);
var_0B setvehgoalpos(var_09 + (0,0,var_03) + var_07 * 2,1);
var_12 vehicle_setspeed(80,60);
var_12 setyawspeed(30,15,15,0.3);
var_12 setvehgoalpos(var_10 + (0,0,var_03) + var_0E * 2,1);
var_13 vehicle_setspeed(80,60);
var_13 setyawspeed(30,15,15,0.3);
var_13 setvehgoalpos(var_11 + (0,0,var_03) + var_0F * 2,1);
var_0A waittill("goal");
var_0A vehicle_setspeed(120,120);
var_0A setyawspeed(60,40,40,0.3);
var_0A setvehgoalpos(var_08 + (0,0,var_03) + var_06 * 2 + var_04 * -20,1);
var_0B vehicle_setspeed(120,120);
var_0B setyawspeed(60,40,40,0.3);
var_0B setvehgoalpos(var_09 + (0,0,var_03) + var_07 * 2 + var_04 * -20,1);
var_12 vehicle_setspeed(120,120);
var_12 setyawspeed(60,40,40,0.3);
var_12 setvehgoalpos(var_10 + (0,0,var_03) + var_0E * 2 + var_0C * -20,1);
var_13 vehicle_setspeed(120,120);
var_13 setyawspeed(60,40,40,0.3);
var_13 setvehgoalpos(var_11 + (0,0,var_03) + var_0F * 2 + var_0C * -20,1);
var_0A waittill("goal");
var_0A delete();
var_0B delete();
var_12 delete();
var_13 delete();
}
}
//Function Number: 13
func_2EDC()
{
var_00 = getstartspawns();
if(isdefined(var_00))
{
var_01 = 200;
var_02 = 200;
var_03 = 1000;
var_04 = anglestoforward(var_00["allies"][0].angles) * 300;
var_05 = anglestoup(var_00["allies"][0].angles) * var_01;
var_06 = var_00["allies"][0].origin + var_04 + var_05;
var_07 = spawnhelicopter(self,var_06,var_00["allies"][0].angles,"osprey_minigun_mp","vehicle_v22_osprey_body_mp");
var_08 = anglestoforward(var_00["axis"][0].angles) * 300;
var_09 = anglestoup(var_00["axis"][0].angles) * var_01;
var_0A = var_00["axis"][0].origin + var_08 + var_09;
var_0B = spawnhelicopter(self,var_0A,var_00["axis"][0].angles,"osprey_minigun_mp","vehicle_v22_osprey_body_mp");
var_07 thread maps\mp\killstreaks\_escortairdrop::airshippitchpropsup();
var_0B thread maps\mp\killstreaks\_escortairdrop::airshippitchpropsup();
var_07 thread maps\mp\killstreaks\_escortairdrop::airshippitchhatchdown();
var_0B thread maps\mp\killstreaks\_escortairdrop::airshippitchhatchdown();
var_07 vehicle_setspeed(20,10);
var_07 setyawspeed(3,3,3,0.3);
var_07 setvehgoalpos(var_06 + (0,0,var_02),1);
var_0B vehicle_setspeed(20,10);
var_0B setyawspeed(3,3,3,0.3);
var_0B setvehgoalpos(var_0A + (0,0,var_02),1);
var_07 waittill("goal");
var_07 thread maps\mp\killstreaks\_escortairdrop::airshippitchhatchup();
var_0B thread maps\mp\killstreaks\_escortairdrop::airshippitchhatchup();
wait 2;
var_07 vehicle_setspeed(80,60);
var_07 setyawspeed(30,15,15,0.3);
var_07 setvehgoalpos(var_06 + (0,0,var_03),1);
var_0B vehicle_setspeed(80,60);
var_0B setyawspeed(30,15,15,0.3);
var_0B setvehgoalpos(var_0A + (0,0,var_03),1);
var_07 waittill("goal");
var_07 thread maps\mp\killstreaks\_escortairdrop::func_2EBE();
var_0B thread maps\mp\killstreaks\_escortairdrop::func_2EBE();
var_07 vehicle_setspeed(120,120);
var_07 setyawspeed(100,100,40,0.3);
var_07 setvehgoalpos(var_06 + (0,0,var_03) + var_04 * -20,1);
var_0B vehicle_setspeed(120,120);
var_0B setyawspeed(100,100,40,0.3);
var_0B setvehgoalpos(var_0A + (0,0,var_03) + var_08 * -20,1);
var_07 waittill("goal");
var_07 delete();
var_0B delete();
}
}

View File

@ -0,0 +1,63 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_minefields.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 3
* Decompile Time: 82 ms
* Timestamp: 10/27/2023 2:27:51 AM
*******************************************************************/
//Function Number: 1
func_2715()
{
var_00 = getentarray("minefield","targetname");
if(var_00.size > 0)
{
level._effect["mine_explosion"] = loadfx("explosions/grenadeExp_dirt");
}
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
var_00[var_01] thread func_2716();
}
}
//Function Number: 2
func_2716()
{
for(;;)
{
self waittill("trigger",var_00);
if(isplayer(var_00))
{
var_00 thread minefield_kill(self);
}
}
}
//Function Number: 3
minefield_kill(param_00)
{
if(isdefined(self.minefield))
{
return;
}
self.minefield = 1;
self playsound("minefield_click");
wait 0.5;
wait randomfloat(0.5);
if(isdefined(self) && self istouching(param_00))
{
var_01 = self getorigin();
var_02 = 300;
var_03 = 2000;
var_04 = 50;
self playsound("explo_mine");
playfx(level._effect["mine_explosion"],var_01);
radiusdamage(var_01,var_02,var_03,var_04);
}
self.minefield = undefined;
}

View File

@ -0,0 +1,232 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_radiation.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 10
* Decompile Time: 286 ms
* Timestamp: 10/27/2023 2:27:52 AM
*******************************************************************/
//Function Number: 1
func_2719()
{
precachestring(&"SCRIPT_RADIATION_DEATH");
var_00 = getentarray("radiation","targetname");
if(var_00.size > 0)
{
precacheshellshock("mp_radiation_low");
precacheshellshock("mp_radiation_med");
precacheshellshock("mp_radiation_high");
foreach(var_02 in var_00)
{
var_02 thread common_scripts\_dynamic_world::triggertouchthink(::func_271B,::playerleavearea);
}
thread onplayerconnect();
}
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.var_271A = 0;
}
}
//Function Number: 3
func_271B(param_00)
{
self.var_271A++;
if(self.var_271A == 1)
{
func_2720();
}
}
//Function Number: 4
playerleavearea(param_00)
{
self.var_271A--;
if(self.var_271A != 0)
{
return;
}
self.var_271D = 0;
self notify("leftTrigger");
if(isdefined(self.var_271E))
{
self.var_271E fadeoutblackout(0.1,0);
}
}
//Function Number: 5
func_271F(param_00)
{
common_scripts\utility::waittill_any("death","leftTrigger");
self stoploopsound();
}
//Function Number: 6
func_2720()
{
self endon("disconnect");
self endon("game_ended");
self endon("death");
self endon("leftTrigger");
self.var_271D = 0;
thread func_271F(self);
for(;;)
{
self.var_271D++;
switch(self.var_271D)
{
case 1:
self.radiationsound = "item_geigercouner_level2";
self playloopsound(self.radiationsound);
self viewkick(1,self.origin);
break;
case 3:
self shellshock("mp_radiation_low",4);
self.radiationsound = "item_geigercouner_level3";
self stoploopsound();
self playloopsound(self.radiationsound);
self viewkick(3,self.origin);
doradiationdamage(15);
break;
case 4:
self shellshock("mp_radiation_med",5);
self.radiationsound = "item_geigercouner_level3";
self stoploopsound();
self playloopsound(self.radiationsound);
self viewkick(15,self.origin);
thread blackout();
doradiationdamage(25);
break;
case 6:
self shellshock("mp_radiation_high",5);
self.radiationsound = "item_geigercouner_level4";
self stoploopsound();
self playloopsound(self.radiationsound);
self viewkick(75,self.origin);
doradiationdamage(45);
break;
case 8:
self shellshock("mp_radiation_high",5);
self.radiationsound = "item_geigercouner_level4";
self stoploopsound();
self playloopsound(self.radiationsound);
self viewkick(127,self.origin);
doradiationdamage(175);
break;
}
wait 1;
}
wait 5;
}
//Function Number: 7
blackout()
{
self endon("disconnect");
self endon("game_ended");
self endon("death");
self endon("leftTrigger");
if(!isdefined(self.var_271E))
{
self.var_271E = newclienthudelem(self);
self.var_271E.x = 0;
self.var_271E.y = 0;
self.var_271E setshader("black",640,480);
self.var_271E.alignx = "left";
self.var_271E.aligny = "top";
self.var_271E.horzalign = "fullscreen";
self.var_271E.vertalign = "fullscreen";
self.var_271E.alpha = 0;
}
var_00 = 1;
var_01 = 2;
var_02 = 0.25;
var_03 = 1;
var_04 = 5;
var_05 = 100;
var_06 = 0;
for(;;)
{
while(self.var_271D > 1)
{
var_07 = var_05 - var_04;
var_06 = self.var_271D - var_04 / var_07;
if(var_06 < 0)
{
var_06 = 0;
}
else if(var_06 > 1)
{
var_06 = 1;
}
var_08 = var_01 - var_00;
var_09 = var_00 + var_08 * 1 - var_06;
var_0A = var_03 - var_02;
var_0B = var_02 + var_0A * var_06;
var_0C = var_06 * 0.5;
if(var_06 == 1)
{
break;
}
var_0D = var_09 / 2;
self.var_271E func_2724(var_0D,var_0B);
self.var_271E fadeoutblackout(var_0D,var_0C);
wait var_06 * 0.5;
}
if(var_06 == 1)
{
break;
}
if(self.var_271E.alpha != 0)
{
self.var_271E fadeoutblackout(1,0);
}
wait 0.05;
}
self.var_271E func_2724(2,0);
}
//Function Number: 8
doradiationdamage(param_00)
{
self thread [[ level.callbackplayerdamage ]](self,self,param_00,0,"MOD_SUICIDE","claymore_mp",self.origin,(0,0,0) - self.origin,"none",0);
}
//Function Number: 9
func_2724(param_00,param_01)
{
self fadeovertime(param_00);
self.alpha = param_01;
wait param_00;
}
//Function Number: 10
fadeoutblackout(param_00,param_01)
{
self fadeovertime(param_00);
self.alpha = param_01;
wait param_00;
}

View File

@ -0,0 +1,123 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_scoreboard.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 3
* Decompile Time: 74 ms
* Timestamp: 10/27/2023 2:27:53 AM
*******************************************************************/
//Function Number: 1
func_2EE1()
{
foreach(var_01 in level.placement["all"])
{
var_01 func_2EE2();
}
if(level.teambased)
{
var_03 = getteamscore("allies");
var_04 = getteamscore("axis");
if(var_03 == var_04)
{
var_05 = "tied";
}
else if(var_04 > var_05)
{
var_05 = "allies";
}
else
{
var_05 = "axis";
}
if(var_05 == "tied")
{
buildscoreboardtype("allies");
buildscoreboardtype("axis");
foreach(var_01 in level.players)
{
if(var_01.pers["team"] == "spectator")
{
var_01 setplayerdata("round","scoreboardType","allies");
continue;
}
var_01 setplayerdata("round","scoreboardType",var_01.pers["team"]);
}
}
else
{
buildscoreboardtype(var_05);
foreach(var_01 in level.players)
{
var_01 setplayerdata("round","scoreboardType",var_05);
}
}
}
else
{
buildscoreboardtype("neutral");
foreach(var_01 in level.players)
{
var_01 setplayerdata("round","scoreboardType","neutral");
}
}
foreach(var_01 in level.players)
{
var_01 setclientdvars("player_summary_xp",var_01.pers["summary"]["xp"],"player_summary_score",var_01.pers["summary"]["score"],"player_summary_challenge",var_01.pers["summary"]["challenge"],"player_summary_match",var_01.pers["summary"]["match"],"player_summary_misc",var_01.pers["summary"]["misc"]);
}
}
//Function Number: 2
func_2EE2()
{
var_00 = getclientmatchdata("scoreboardPlayerCount");
if(var_00 <= 24)
{
setclientmatchdata("players",self.clientmatchdataid,"score",self.pers["score"]);
var_01 = self.pers["kills"];
setclientmatchdata("players",self.clientmatchdataid,"kills",var_01);
var_02 = self.pers["assists"];
setclientmatchdata("players",self.clientmatchdataid,"assists",var_02);
var_03 = self.pers["deaths"];
setclientmatchdata("players",self.clientmatchdataid,"deaths",var_03);
var_04 = game[self.pers["team"]];
setclientmatchdata("players",self.clientmatchdataid,"faction",var_04);
var_00++;
setclientmatchdata("scoreboardPlayerCount",var_00);
}
}
//Function Number: 3
buildscoreboardtype(param_00)
{
if(param_00 == "neutral")
{
var_01 = 0;
foreach(var_03 in level.placement["all"])
{
setclientmatchdata("scoreboards",param_00,var_01,var_03.clientmatchdataid);
var_01++;
}
return;
}
var_05 = maps\mp\_utility::getotherteam(var_03);
var_01 = 0;
foreach(var_03 in level.placement[param_00])
{
setclientmatchdata("scoreboards",param_00,var_01,var_03.clientmatchdataid);
var_01++;
}
foreach(var_03 in level.placement[var_05])
{
setclientmatchdata("scoreboards",param_00,var_01,var_03.clientmatchdataid);
var_01++;
}
}

View File

@ -0,0 +1,193 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_shutter.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 5
* Decompile Time: 101 ms
* Timestamp: 10/27/2023 2:27:54 AM
*******************************************************************/
//Function Number: 1
main()
{
level.inc = 0;
common_scripts\utility::array_levelthread(getentarray("wire","targetname"),::wirewander);
var_00 = getentarray("shutter_left","targetname");
var_01 = getentarray("shutter_right_open","targetname");
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_00[var_00.size] = var_01[var_02];
}
var_01 = getentarray("shutter_left_closed","targetname");
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_00[var_00.size] = var_01[var_02];
}
for(var_02 = 0;var_02 < var_00.size;var_02++)
{
var_03 = var_00[var_02];
var_03 rotateto((var_03.angles[0],var_03.angles[1] + 180,var_03.angles[2]),0.1);
}
wait 0.2;
for(var_02 = 0;var_02 < var_00.size;var_02++)
{
var_00[var_02].startyaw = var_00[var_02].angles[1];
}
var_04 = getentarray("shutter_right","targetname");
var_01 = getentarray("shutter_left_open","targetname");
var_02 = 0;
while(var_02 < var_01.size)
{
var_03++ = var_41[var_04.size];
}
var_02 = getentarray("shutter_right_closed","targetname");
var_03 = 0;
while(var_03 < var_02.size)
{
var_03++ = var_41[var_41.size];
}
for(var_03 = 0;var_03 < var_41.size;var_03++ = var_02[var_03])
{
var_41[var_03].startyaw = var_41[var_03].angles[1];
}
var_02 = undefined;
var_05 = "left";
for(;;)
{
common_scripts\utility::array_levelthread(var_01,::func_196B,var_05);
common_scripts\utility::array_levelthread(var_41,::shutterwanderright,var_05);
level waittill(var_01[var_02],"wind blows",var_05);
}
}
//Function Number: 2
windcontroller()
{
for(;;)
{
var_00 = "left";
if(randomint(100) > 50)
{
var_00 = "right";
}
level notify("wind blows",var_00);
wait 2 + randomfloat(10);
}
}
//Function Number: 3
func_196B(param_00,param_01)
{
level.inc++;
level endon("wind blows");
var_02 = param_00.startyaw;
if(param_01 == "left")
{
var_02 = var_02 + 179.9;
}
var_03 = 0.2;
param_00 rotateto((param_00.angles[0],var_02,param_00.angles[2]),var_03);
wait var_03 + 0.1;
for(;;)
{
var_04 = randomint(80);
if(randomint(100) > 50)
{
var_04 = var_04 * -1;
}
var_02 = param_00.angles[1] + var_04;
var_05 = param_00.angles[1] + var_04 * -1;
if(var_02 < param_00.startyaw || var_02 > param_00.startyaw + 179)
{
var_02 = var_05;
}
var_06 = abs(param_00.angles[1] - var_02);
var_03 = var_06 * 0.02 + randomfloat(2);
if(var_03 < 0.3)
{
var_03 = 0.3;
}
param_00 rotateto((param_00.angles[0],var_02,param_00.angles[2]),var_03,var_03 * 0.5,var_03 * 0.5);
wait var_03;
}
}
//Function Number: 4
shutterwanderright(param_00,param_01)
{
level.inc++;
level endon("wind blows");
var_02 = param_00.startyaw;
if(param_01 == "left")
{
var_02 = var_02 + 179.9;
}
var_03 = 0.2;
param_00 rotateto((param_00.angles[0],var_02,param_00.angles[2]),var_03);
wait var_03 + 0.1;
for(;;)
{
var_04 = randomint(80);
if(randomint(100) > 50)
{
var_04 = var_04 * -1;
}
var_02 = param_00.angles[1] + var_04;
var_05 = param_00.angles[1] + var_04 * -1;
if(var_02 < param_00.startyaw || var_02 > param_00.startyaw + 179)
{
var_02 = var_05;
}
var_06 = abs(param_00.angles[1] - var_02);
var_03 = var_06 * 0.02 + randomfloat(2);
if(var_03 < 0.3)
{
var_03 = 0.3;
}
param_00 rotateto((param_00.angles[0],var_02,param_00.angles[2]),var_03,var_03 * 0.5,var_03 * 0.5);
wait var_03;
}
}
//Function Number: 5
wirewander(param_00)
{
var_01 = getentarray(param_00.target,"targetname");
var_02 = var_01[0].origin;
var_03 = var_01[1].origin;
var_04 = vectortoangles(var_02 - var_03);
var_05 = spawn("script_model",(0,0,0));
var_05.origin = var_02 * 0.5 + var_03 * 0.5;
var_05.angles = var_04;
param_00 linkto(var_05);
var_06 = 2;
var_07 = 0.9;
var_08 = 4 + randomfloat(2);
var_05 rotateroll(var_08 * 0.5,0.2);
wait 0.2;
for(;;)
{
var_09 = var_06 + randomfloat(var_07) - var_07 * 0.5;
var_05 rotateroll(var_08,var_09,var_09 * 0.5,var_09 * 0.5);
wait var_09;
var_05 rotateroll(var_08 * -1,var_09,var_09 * 0.5,var_09 * 0.5);
wait var_09;
}
}

View File

@ -0,0 +1,61 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_skill.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 6
* Decompile Time: 97 ms
* Timestamp: 10/27/2023 2:28:55 AM
*******************************************************************/
//Function Number: 1
init()
{
level thread onplayerconnect();
level thread onplayerdisconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.var_2BBC = gettime();
var_00.targets = [];
var_00 thread func_2BBF();
var_00 thread ondeath();
}
}
//Function Number: 3
onplayerdisconnect()
{
for(;;)
{
level waittill("disconnected",var_00);
var_00.targets = [];
}
}
//Function Number: 4
func_2BBF()
{
level endon("game_ended");
self endon("disconnected");
self waittill("weapon_fired");
}
//Function Number: 5
ondeath()
{
level endon("game_ended");
self endon("disconnected");
self waittill("death");
}
//Function Number: 6
processkill(param_00,param_01)
{
updateskill(param_00,param_01,"war",1);
}

View File

@ -0,0 +1,451 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_stinger.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 11
* Decompile Time: 214 ms
* Timestamp: 10/27/2023 2:27:55 AM
*******************************************************************/
//Function Number: 1
func_27B9()
{
self.stingerstage = undefined;
self.stingertarget = undefined;
self.stingerlockstarttime = undefined;
self.stingerlostsightlinetime = undefined;
thread resetstingerlockingondeath();
level.stingertargets = [];
}
//Function Number: 2
func_27BF()
{
if(!isdefined(self.stingeruseentered))
{
return;
}
self.stingeruseentered = undefined;
self notify("stop_javelin_locking_feedback");
self notify("stop_javelin_locked_feedback");
self weaponlockfree();
func_27B9();
}
//Function Number: 3
resetstingerlockingondeath()
{
self endon("disconnect");
self notify("ResetStingerLockingOnDeath");
self endon("ResetStingerLockingOnDeath");
for(;;)
{
self waittill("death");
func_27BF();
}
}
//Function Number: 4
func_27C2(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(!self worldpointinreticle_circle(param_00.origin,65,85))
{
return 0;
}
if(self.stingertarget == level.ac130.planemodel && !isdefined(level.ac130player))
{
return 0;
}
return 1;
}
//Function Number: 5
loopstingerlockingfeedback()
{
self endon("stop_javelin_locking_feedback");
for(;;)
{
if(isdefined(level.chopper) && isdefined(level.chopper.gunner) && isdefined(self.stingertarget) && self.stingertarget == level.chopper.gunner)
{
level.chopper.gunner playlocalsound("missile_locking");
}
if(isdefined(level.ac130player) && isdefined(self.stingertarget) && self.stingertarget == level.ac130.planemodel)
{
level.ac130player playlocalsound("missile_locking");
}
self playlocalsound("stinger_locking");
self playrumbleonentity("ac130_25mm_fire");
wait 0.6;
}
}
//Function Number: 6
func_27C6()
{
self endon("stop_javelin_locked_feedback");
for(;;)
{
if(isdefined(level.chopper) && isdefined(level.chopper.gunner) && isdefined(self.stingertarget) && self.stingertarget == level.chopper.gunner)
{
level.chopper.gunner playlocalsound("missile_locking");
}
if(isdefined(level.ac130player) && isdefined(self.stingertarget) && self.stingertarget == level.ac130.planemodel)
{
level.ac130player playlocalsound("missile_locking");
}
self playlocalsound("stinger_locked");
self playrumbleonentity("ac130_25mm_fire");
wait 0.25;
}
}
//Function Number: 7
locksighttest(param_00)
{
var_01 = self geteye();
if(!isdefined(param_00))
{
return 0;
}
var_02 = sighttracepassed(var_01,param_00.origin,0,param_00);
if(var_02)
{
return 1;
}
var_03 = param_00 getpointinbounds(1,0,0);
var_02 = sighttracepassed(var_01,var_03,0,param_00);
if(var_02)
{
return 1;
}
var_04 = param_00 getpointinbounds(-1,0,0);
var_02 = sighttracepassed(var_01,var_04,0,param_00);
if(var_02)
{
return 1;
}
return 0;
}
//Function Number: 8
stingerdebugdraw(param_00)
{
}
//Function Number: 9
func_27C9()
{
var_00 = 500;
if(locksighttest(self.stingertarget))
{
self.stingerlostsightlinetime = 0;
return 1;
}
if(self.stingerlostsightlinetime == 0)
{
self.stingerlostsightlinetime = gettime();
}
var_01 = gettime() - self.stingerlostsightlinetime;
if(var_01 >= var_00)
{
func_27BF();
return 0;
}
return 1;
}
//Function Number: 10
gettargetlist()
{
var_00 = [];
if(level.teambased)
{
if(isdefined(level.chopper) && level.chopper.team != self.team || isdefined(level.chopper.owner) && level.chopper.owner == self)
{
}
if(isdefined(level.ac130player) && level.ac130player.team != self.team)
{
}
if(isdefined(level.harriers))
{
foreach(var_02 in level.harriers)
{
if(isdefined(var_02) && var_02.team != self.team || isdefined(var_02.owner) && var_02.owner == self)
{
var_41[var_41.size] = var_02;
}
}
}
if(level.uavmodels[level.otherteam[self.team]].size)
{
foreach(var_05 in level.uavmodels[level.otherteam[self.team]])
{
var_41[var_41.size] = var_05;
}
}
if(isdefined(level.littlebirds))
{
foreach(var_08 in level.littlebirds)
{
if(isdefined(var_08) && var_08.team != self.team || isdefined(var_08.owner) && var_08.owner == self)
{
var_41[var_41.size] = var_08;
}
}
}
if(isdefined(level.ugvs))
{
foreach(var_0B in level.ugvs)
{
if(isdefined(var_0B) && var_0B.team != self.team || isdefined(var_0B.owner) && var_0B.owner == self)
{
var_41[var_41.size] = var_0B;
}
}
}
}
else
{
if(isdefined(level.chopper))
{
}
if(isdefined(level.ac130player))
{
}
if(isdefined(level.harriers))
{
foreach(var_02 in level.harriers)
{
if(isdefined(var_02))
{
var_41[var_41.size] = var_02;
}
}
}
if(level.uavmodels.size)
{
foreach(var_05 in level.uavmodels)
{
if(isdefined(var_05.owner) && var_05.owner == self)
{
continue;
}
var_41[var_41.size] = var_05;
}
}
if(isdefined(level.littlebirds))
{
foreach(var_08 in level.littlebirds)
{
if(!isdefined(var_08))
{
continue;
}
var_41[var_41.size] = var_08;
}
}
if(isdefined(level.ugvs))
{
foreach(var_0B in level.ugvs)
{
if(!isdefined(var_0B))
{
continue;
}
var_41[var_41.size] = var_0B;
}
}
foreach(var_16 in level.players)
{
if(!isalive(var_16))
{
continue;
}
if(level.teambased && var_16.team == self.team)
{
continue;
}
if(var_16 == self)
{
continue;
}
if(var_16 maps\mp\_utility::isjuggernaut())
{
var_41[var_41.size] = var_16;
}
}
}
return var_41;
}
//Function Number: 11
stingerusageloop()
{
self endon("death");
self endon("disconnect");
self endon("faux_spawn");
var_00 = 1000;
func_27B9();
for(;;)
{
wait 0.05;
var_01 = self getcurrentweapon();
if(var_01 != "stinger_mp" && var_01 != "at4_mp" && var_01 != "iw5_smaw_mp")
{
func_27BF();
continue;
}
if(self playerads() < 0.95)
{
func_27BF();
continue;
}
self.stingeruseentered = 1;
if(!isdefined(self.stingerstage))
{
self.stingerstage = 0;
}
stingerdebugdraw(self.stingertarget);
if(self.stingerstage == 0)
{
var_02 = gettargetlist();
if(var_02.size == 0)
{
continue;
}
var_03 = [];
foreach(var_05 in var_02)
{
if(!isdefined(var_05))
{
continue;
}
var_06 = self worldpointinreticle_circle(var_05.origin,65,75);
if(var_06)
{
var_03[var_03.size] = var_05;
}
}
if(var_03.size == 0)
{
continue;
}
var_08 = sortbydistance(var_03,self.origin);
if(!locksighttest(var_08[0]))
{
continue;
}
thread loopstingerlockingfeedback();
self.stingertarget = var_08[0];
self.stingerlockstarttime = gettime();
self.stingerstage = 1;
self.stingerlostsightlinetime = 0;
}
if(self.stingerstage == 1)
{
if(!func_27C2(self.stingertarget))
{
func_27BF();
continue;
}
var_09 = func_27C9();
if(!var_09)
{
continue;
}
var_0A = gettime() - self.stingerlockstarttime;
if(maps\mp\_utility::func_27AF("specialty_fasterlockon"))
{
if(var_0A < var_00 * 0.5)
{
continue;
}
}
else if(var_0A < var_00)
{
continue;
}
self notify("stop_javelin_locking_feedback");
thread func_27C6();
if(self.stingertarget.model == "vehicle_av8b_harrier_jet_opfor_mp" || self.stingertarget.model == "vehicle_av8b_harrier_jet_mp" || self.stingertarget.model == "vehicle_little_bird_armed" || self.stingertarget.model == "vehicle_ugv_talon_mp")
{
self weaponlockfinalize(self.stingertarget);
}
else if(isplayer(self.stingertarget))
{
self weaponlockfinalize(self.stingertarget,(100,0,64));
}
else
{
self weaponlockfinalize(self.stingertarget,(100,0,-32));
}
self.stingerstage = 2;
}
if(self.stingerstage == 2)
{
var_09 = func_27C9();
if(!var_09)
{
continue;
}
if(!func_27C2(self.stingertarget))
{
func_27BF();
continue;
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,400 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_battlechatter_mp.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 16
* Decompile Time: 207 ms
* Timestamp: 10/27/2023 2:25:11 AM
*******************************************************************/
//Function Number: 1
init()
{
level.isteamspeaking["allies"] = 0;
level.isteamspeaking["axis"] = 0;
level.speakers["allies"] = [];
level.speakers["axis"] = [];
level.bcsounds = [];
level.bcsounds["reload"] = "inform_reloading_generic";
level.bcsounds["frag_out"] = "inform_attack_grenade";
level.bcsounds["flash_out"] = "inform_attack_flashbang";
level.bcsounds["smoke_out"] = "inform_attack_smoke";
level.bcsounds["conc_out"] = "inform_attack_stun";
level.bcsounds["c4_plant"] = "inform_attack_thwc4";
level.bcsounds["claymore_plant"] = "inform_plant_claymore";
level.bcsounds["semtex_out"] = "semtex_use";
level.bcsounds["kill"] = "inform_killfirm_infantry";
level.bcsounds["casualty"] = "inform_casualty_generic";
level.bcsounds["suppressing_fire"] = "cmd_suppressfire";
level.bcsounds["semtex_incoming"] = "semtex_incoming";
level.bcsounds["c4_incoming"] = "c4_incoming";
level.bcsounds["flash_incoming"] = "flash_incoming";
level.bcsounds["stun_incoming"] = "stun_incoming";
level.bcsounds["grenade_incoming"] = "grenade_incoming";
level.bcsounds["rpg_incoming"] = "rpg_incoming";
level thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread onplayerspawned();
}
}
//Function Number: 3
onplayerspawned()
{
self endon("disconnect");
for(;;)
{
self waittill("spawned_player");
var_00 = maps\mp\gametypes\_teams::getteamvoiceprefix(self.team);
if(!isdefined(self.pers["voiceIndex"]) || var_00 != "RU_" && self.pers["voiceNum"] >= 3)
{
if(var_00 == "RU_")
{
self.pers["voiceNum"] = randomintrange(0,4);
}
else
{
self.pers["voiceNum"] = randomintrange(0,2);
}
self.pers["voicePrefix"] = var_00 + self.pers["voiceNum"] + "_";
}
if(level.splitscreen)
{
continue;
}
thread func_2CB4();
thread reloadtracking();
thread func_2CB6();
thread grenadeproximitytracking();
thread func_2CB2();
}
}
//Function Number: 4
grenadeproximitytracking()
{
self endon("disconnect");
self endon("death");
var_00 = self.origin;
for(;;)
{
if(!isdefined(level.grenades) || level.grenades.size < 1 || !maps\mp\_utility::isreallyalive(self))
{
wait 0.05;
continue;
}
var_01 = maps\mp\_utility::func_279B(level.grenades,level.missiles);
foreach(var_03 in var_01)
{
wait 0.05;
if(!isdefined(var_03))
{
continue;
}
if(isdefined(var_03.weaponname))
{
switch(var_03.weaponname)
{
case "claymore_mp":
break;
}
}
switch(var_03.model)
{
case "mp_trophy_system":
case "weapon_radar":
case "weapon_parabolic_knife":
case "weapon_jammer":
break;
}
if(!isdefined(var_03.owner))
{
var_03.owner = getmissileowner(var_03);
}
if(isdefined(var_03.owner) && level.teambased && var_03.owner.team == self.team)
{
continue;
}
var_04 = distancesquared(var_03.origin,self.origin);
if(var_04 < 147456)
{
if(bullettracepassed(var_03.origin,self.origin,0,self))
{
if(common_scripts\utility::cointoss())
{
continue;
wait 5;
continue;
}
if(var_03.model == "projectile_concussion_grenade")
{
level thread func_2CB8(self,"stun_incoming");
wait 5;
continue;
}
if(var_03.model == "projectile_m84_flashbang_grenade")
{
level thread func_2CB8(self,"flash_incoming");
wait 5;
continue;
}
if(var_03.model == "projectile_rocket")
{
level thread func_2CB8(self,"rpg_incoming");
wait 5;
continue;
}
if(var_03.model == "weapon_c4")
{
level thread func_2CB8(self,"c4_incoming");
wait 5;
continue;
}
if(var_03.model == "projectile_m203grenade")
{
level thread func_2CB8(self,"rpg_incoming");
wait 5;
continue;
}
if(var_03.model == "projectile_semtex_grenade")
{
level thread func_2CB8(self,"semtex_incoming");
wait 5;
continue;
}
level thread func_2CB8(self,"grenade_incoming");
wait 5;
}
}
}
}
}
//Function Number: 5
func_2CB2()
{
self endon("death");
self endon("disconnect");
self endon("faux_spawn");
var_00 = undefined;
for(;;)
{
self waittill("begin_firing");
thread func_2CB3();
self waittill("end_firing");
self notify("stoppedFiring");
}
}
//Function Number: 6
func_2CB3()
{
self notify("suppressWaiter");
self endon("suppressWaiter");
self endon("death");
self endon("disconnect");
self endon("stoppedFiring");
wait 2;
level thread func_2CB8(self,"suppressing_fire");
}
//Function Number: 7
func_2CB4()
{
self endon("death");
self endon("disconnect");
self endon("faux_spawn");
for(;;)
{
self waittill("begin_firing");
var_00 = self getcurrentweapon();
if(var_00 == "claymore_mp")
{
level thread func_2CB8(self,"claymore_plant");
}
}
}
//Function Number: 8
reloadtracking()
{
self endon("death");
self endon("disconnect");
self endon("faux_spawn");
for(;;)
{
self waittill("reload_start");
level thread func_2CB8(self,"reload");
}
}
//Function Number: 9
func_2CB6()
{
self endon("death");
self endon("disconnect");
self endon("faux_spawn");
for(;;)
{
self waittill("grenade_fire",var_00,var_01);
if(var_01 == "frag_grenade_mp")
{
level thread func_2CB8(self,"frag_out");
continue;
}
if(var_01 == "semtex_mp")
{
level thread func_2CB8(self,"semtex_out");
continue;
}
if(var_01 == "flash_grenade_mp")
{
level thread func_2CB8(self,"flash_out");
continue;
}
if(var_01 == "concussion_grenade_mp")
{
level thread func_2CB8(self,"conc_out");
continue;
}
if(var_01 == "smoke_grenade_mp")
{
level thread func_2CB8(self,"smoke_out");
continue;
}
if(var_01 == "c4_mp")
{
level thread func_2CB8(self,"c4_plant");
}
}
}
//Function Number: 10
saylocalsounddelayed(param_00,param_01,param_02)
{
param_00 endon("death");
param_00 endon("disconnect");
wait param_02;
func_2CB8(param_00,param_01);
}
//Function Number: 11
func_2CB8(param_00,param_01)
{
param_00 endon("death");
param_00 endon("disconnect");
if(func_2CBB(param_00))
{
return;
}
if(param_00.team != "spectator")
{
var_02 = param_00.pers["voicePrefix"];
var_03 = var_02 + level.bcsounds[param_01];
param_00 thread dosound(var_03);
}
}
//Function Number: 12
dosound(param_00)
{
var_01 = self.pers["team"];
level addspeaker(self,var_01);
self playsoundtoteam(param_00,var_01,self);
thread timehack(param_00);
common_scripts\utility::waittill_any(param_00,"death","disconnect");
level func_2CBD(self,var_01);
}
//Function Number: 13
timehack(param_00)
{
self endon("death");
self endon("disconnect");
wait 2;
self notify(param_00);
}
//Function Number: 14
func_2CBB(param_00)
{
param_00 endon("death");
param_00 endon("disconnect");
var_01 = 1000000;
if(isdefined(param_00) && isdefined(param_00.pers["team"]) && param_00.pers["team"] != "spectator")
{
for(var_02 = 0;var_02 < level.speakers[param_00.pers["team"]].size;var_02++)
{
var_03 = level.speakers[param_00.pers["team"]][var_02];
if(var_03 == param_00)
{
return 1;
}
if(!isdefined(var_03))
{
continue;
}
if(distancesquared(var_03.origin,param_00.origin) < var_01)
{
return 1;
}
}
}
return 0;
}
//Function Number: 15
addspeaker(param_00,param_01)
{
level.speakers[param_01][level.speakers[param_01].size] = param_00;
}
//Function Number: 16
func_2CBD(param_00,param_01)
{
var_02 = [];
for(var_03 = 0;var_03 < level.speakers[param_01].size;var_03++)
{
if(level.speakers[param_01][var_03] == param_00)
{
continue;
}
var_02[var_02.size] = level.speakers[param_01][var_03];
}
level.speakers[param_01] = var_02;
}

View File

@ -0,0 +1,154 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_callbacksetup.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 15
* Decompile Time: 205 ms
* Timestamp: 10/27/2023 2:25:12 AM
*******************************************************************/
//Function Number: 1
codecallback_startgametype()
{
if(getdvar("r_reflectionProbeGenerate") == "1")
{
level waittill("eternity");
}
if(!isdefined(level.gametypestarted) || !level.gametypestarted)
{
[[ level.callbackstartgametype ]]();
level.gametypestarted = 1;
}
}
//Function Number: 2
codecallback_playerconnect()
{
if(getdvar("r_reflectionProbeGenerate") == "1")
{
level waittill("eternity");
}
self endon("disconnect");
[[ level.callbackplayerconnect ]]();
}
//Function Number: 3
codecallback_playerdisconnect()
{
self notify("disconnect");
[[ level.callbackplayerdisconnect ]]();
}
//Function Number: 4
codecallback_playerdamage(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
self endon("disconnect");
[[ level.callbackplayerdamage ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09);
}
//Function Number: 5
codecallback_playerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
self endon("disconnect");
[[ level.callbackplayerkilled ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 6
codecallback_vehicledamage(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
if(isdefined(self.damagecallback))
{
self [[ self.damagecallback ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
return;
}
self vehicle_finishdamage(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B);
}
//Function Number: 7
codecallback_codeendgame()
{
self endon("disconnect");
[[ level.callbackcodeendgame ]]();
}
//Function Number: 8
codecallback_playerlaststand(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
{
self endon("disconnect");
[[ level.callbackplayerlaststand ]](param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08);
}
//Function Number: 9
codecallback_playermigrated()
{
self endon("disconnect");
[[ level.callbackplayermigrated ]]();
}
//Function Number: 10
codecallback_hostmigration()
{
[[ level.callbackhostmigration ]]();
}
//Function Number: 11
setupdamageflags()
{
level.idflags_radius = 1;
level.idflags_no_armor = 2;
level.idflags_no_knockback = 4;
level.idflags_penetration = 8;
level.idflags_stun = 16;
level.idflags_shield_explosive_impact = 32;
level.idflags_shield_explosive_impact_huge = 64;
level.idflags_shield_explosive_splash = 128;
level.idflags_no_team_protection = 256;
level.idflags_no_protection = 512;
level.idflags_passthru = 1024;
}
//Function Number: 12
setupcallbacks()
{
setdefaultcallbacks();
setupdamageflags();
}
//Function Number: 13
setdefaultcallbacks()
{
level.callbackstartgametype = ::maps\mp\gametypes\_gamelogic::func_2F22;
level.callbackplayerconnect = ::maps\mp\gametypes\_playerlogic::callback_playerconnect;
level.callbackplayerdisconnect = ::maps\mp\gametypes\_playerlogic::func_2B4B;
level.callbackplayerdamage = ::maps\mp\gametypes\_damage::func_2D32;
level.callbackplayerkilled = ::maps\mp\gametypes\_damage::callback_playerkilled;
level.callbackcodeendgame = ::maps\mp\gametypes\_gamelogic::func_2F2D;
level.callbackplayerlaststand = ::maps\mp\gametypes\_damage::func_2D34;
level.callbackplayermigrated = ::maps\mp\gametypes\_playerlogic::callback_playermigrated;
level.callbackhostmigration = ::maps\mp\gametypes\_hostmigration::callback_hostmigration;
}
//Function Number: 14
abortlevel()
{
level.callbackstartgametype = ::callbackvoid;
level.callbackplayerconnect = ::callbackvoid;
level.callbackplayerdisconnect = ::callbackvoid;
level.callbackplayerdamage = ::callbackvoid;
level.callbackplayerkilled = ::callbackvoid;
level.callbackcodeendgame = ::callbackvoid;
level.callbackplayerlaststand = ::callbackvoid;
level.callbackplayermigrated = ::callbackvoid;
level.callbackhostmigration = ::callbackvoid;
setdvar("g_gametype","dm");
exitlevel(0);
}
//Function Number: 15
callbackvoid()
{
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,118 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_damagefeedback.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 3
* Decompile Time: 49 ms
* Timestamp: 10/27/2023 2:25:18 AM
*******************************************************************/
//Function Number: 1
init()
{
precacheshader("damage_feedback");
precacheshader("damage_feedback_j");
precacheshader("damage_feedback_lightarmor");
precacheshader("damage_feedback_juggernaut");
precacheshader("scavenger_pickup");
level thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.hud_damagefeedback = newclienthudelem(var_00);
var_00.hud_damagefeedback.horzalign = "center";
var_00.hud_damagefeedback.vertalign = "middle";
var_00.hud_damagefeedback.x = -12;
var_00.hud_damagefeedback.y = -12;
var_00.hud_damagefeedback.alpha = 0;
var_00.hud_damagefeedback.archived = 1;
var_00.hud_damagefeedback setshader("damage_feedback",24,48);
}
}
//Function Number: 3
updatedamagefeedback(param_00)
{
if(!isplayer(self))
{
return;
}
var_01 = -12;
var_02 = -12;
if(getdvarint("camera_thirdPerson"))
{
var_03 = self getthirdpersoncrosshairoffset() * 240;
}
else
{
var_03 = getdvarfloat("cg_crosshairVerticalOffset") * 240;
}
if(level.splitscreen || self issplitscreenplayer())
{
var_03 = var_03 * 0.5;
}
var_04 = 0;
var_05 = 1;
if(param_00 == "hitBodyArmor")
{
self.hud_damagefeedback setshader("damage_feedback_j",24,48);
self playlocalsound("MP_hit_alert");
}
else if(param_00 == "hitLightArmor")
{
self.hud_damagefeedback setshader("damage_feedback_lightarmor",24,48);
self playlocalsound("MP_hit_alert");
}
else if(param_00 == "hitJuggernaut")
{
self.hud_damagefeedback setshader("damage_feedback_juggernaut",24,48);
self playlocalsound("MP_hit_alert");
}
else if(param_00 == "none")
{
return;
}
else if(param_00 == "scavenger" && !level.hardcoremode)
{
var_01 = -36;
var_02 = 32;
self.hud_damagefeedback setshader("scavenger_pickup",64,32);
var_04 = 2.5;
}
else
{
self.hud_damagefeedback setshader("damage_feedback",24,48);
self playlocalsound("MP_hit_alert");
}
self.hud_damagefeedback.alpha = var_05;
if(var_04 != 0)
{
self.hud_damagefeedback fadeovertime(var_04);
}
else
{
self.hud_damagefeedback fadeovertime(1);
}
self.hud_damagefeedback.alpha = 0;
if(self.hud_damagefeedback.x != var_01)
{
self.hud_damagefeedback.x = var_01;
}
var_02 = var_02 - int(var_03);
if(self.hud_damagefeedback.y != var_02)
{
self.hud_damagefeedback.y = var_02;
}
}

View File

@ -0,0 +1,95 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_deathicons.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 5
* Decompile Time: 74 ms
* Timestamp: 10/27/2023 2:25:19 AM
*******************************************************************/
//Function Number: 1
init()
{
if(!level.teambased)
{
return;
}
precacheshader("headicon_dead");
level thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.selfdeathicons = [];
}
}
//Function Number: 3
func_2BB8()
{
}
//Function Number: 4
adddeathicon(param_00,param_01,param_02,param_03)
{
if(!level.teambased)
{
return;
}
var_04 = param_00.origin;
param_01 endon("spawned_player");
param_01 endon("disconnect");
wait 0.05;
maps\mp\_utility::waittillslowprocessallowed();
if(getdvar("ui_hud_showdeathicons") == "0")
{
return;
}
if(level.hardcoremode)
{
return;
}
if(isdefined(self.lastdeathicon))
{
self.lastdeathicon destroy();
}
var_05 = newteamhudelem(param_02);
var_05.x = var_04[0];
var_05.y = var_04[1];
var_05.z = var_04[2] + 54;
var_05.alpha = 0.61;
var_05.archived = 1;
if(level.splitscreen)
{
var_05 setshader("headicon_dead",14,14);
}
else
{
var_05 setshader("headicon_dead",7,7);
}
var_05 setwaypoint(0);
self.lastdeathicon = var_05;
var_05 thread func_2BBB(param_03);
}
//Function Number: 5
func_2BBB(param_00)
{
self endon("death");
wait param_00;
self fadeovertime(1);
self.alpha = 0;
wait 1;
self destroy();
}

View File

@ -0,0 +1,69 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_dev.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 11
* Decompile Time: 176 ms
* Timestamp: 10/27/2023 2:29:03 AM
*******************************************************************/
//Function Number: 1
init()
{
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread updatereflectionprobe();
}
}
//Function Number: 3
func_344B(param_00,param_01,param_02)
{
}
//Function Number: 4
showspawnpoints()
{
}
//Function Number: 5
print3duntilnotified(param_00,param_01,param_02,param_03,param_04)
{
}
//Function Number: 6
func_344E(param_00,param_01,param_02,param_03)
{
}
//Function Number: 7
func_344F()
{
}
//Function Number: 8
updatereflectionprobe()
{
}
//Function Number: 9
func_3451()
{
}
//Function Number: 10
func_3452()
{
}
//Function Number: 11
func_3453()
{
}

View File

@ -0,0 +1,491 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_equipment.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 10
* Decompile Time: 141 ms
* Timestamp: 10/27/2023 2:25:20 AM
*******************************************************************/
//Function Number: 1
func_2788()
{
self endon("spawned_player");
self endon("disconnect");
self.trophyarray = [];
for(;;)
{
self waittill("grenade_fire",var_00,var_01);
if(var_01 == "trophy" || var_01 == "trophy_mp")
{
if(!isalive(self))
{
var_00 delete();
return;
}
var_00 hide();
var_00 waittill("missile_stuck");
var_02 = 40;
if(var_02 * var_02 < distancesquared(var_00.origin,self.origin))
{
var_03 = bullettrace(self.origin,self.origin - (0,0,var_02),0,self);
if(var_03["fraction"] == 1)
{
var_00 delete();
self setweaponammostock("trophy_mp",self getweaponammostock("trophy_mp") + 1);
continue;
}
var_00.origin = var_03["position"];
}
var_00 show();
self.trophyarray = common_scripts\utility::array_removeundefined(self.trophyarray);
if(self.trophyarray.size >= level.maxperplayerexplosives)
{
self.trophyarray[0] detonate();
}
var_04 = spawn("script_model",var_00.origin);
var_04 setmodel("mp_trophy_system");
var_04 thread maps\mp\gametypes\_weapons::createbombsquadmodel("mp_trophy_system_bombsquad","tag_origin",level.otherteam[self.team],self);
var_04.angles = var_00.angles;
self.trophyarray[self.trophyarray.size] = var_04;
var_04.owner = self;
var_04.team = self.team;
var_04.weaponname = var_01;
if(isdefined(self.trophyremainingammo) && self.trophyremainingammo > 0)
{
var_04.ammo = self.trophyremainingammo;
}
else
{
var_04.ammo = 2;
}
var_04.trigger = spawn("script_origin",var_04.origin);
var_04 thread trophydamage(self);
var_04 thread func_2797(self);
var_04 thread trophydisconnectwaiter(self);
var_04 thread trophyplayerspawnwaiter(self);
var_04 thread trophyuselistener(self);
var_04 thread maps\mp\gametypes\_weapons::func_2790();
if(level.teambased)
{
var_04 maps\mp\_entityheadicons::setteamheadicon(var_04.team,(0,0,65));
}
else
{
var_04 maps\mp\_entityheadicons::setplayerheadicon(var_04.owner,(0,0,65));
}
wait 0.05;
if(isdefined(var_00))
{
var_00 delete();
}
}
}
}
//Function Number: 2
trophyuselistener(param_00)
{
self endon("death");
level endon("game_ended");
param_00 endon("disconnect");
param_00 endon("death");
self.trigger setcursorhint("HINT_NOICON");
self.trigger sethintstring(&"MP_PICKUP_TROPHY");
self.trigger maps\mp\_utility::setselfusable(param_00);
self.trigger thread maps\mp\_utility::notusableforjoiningplayers(param_00);
for(;;)
{
self.trigger waittill("trigger",param_00);
param_00 playlocalsound("scavenger_pack_pickup");
if(!param_00 maps\mp\_utility::isjuggernaut())
{
param_00 maps\mp\_utility::giveperk("trophy_mp",0);
param_00.trophyremainingammo = self.ammo;
}
self.trigger delete();
self delete();
self notify("death");
}
}
//Function Number: 3
trophyplayerspawnwaiter(param_00)
{
self endon("disconnect");
self endon("death");
param_00 waittill("spawned");
thread trophybreak();
}
//Function Number: 4
trophydisconnectwaiter(param_00)
{
self endon("death");
param_00 waittill("disconnect");
thread trophybreak();
}
//Function Number: 5
func_2797(param_00)
{
param_00 endon("disconnect");
self endon("death");
var_01 = self.origin;
for(;;)
{
if(!isdefined(level.grenades) || level.grenades.size < 1 && level.missiles.size < 1 || isdefined(self.disabled))
{
wait 0.05;
continue;
}
var_02 = maps\mp\_utility::func_279B(level.grenades,level.missiles);
foreach(var_04 in var_02)
{
wait 0.05;
if(!isdefined(var_04))
{
continue;
}
if(var_04 == self)
{
continue;
}
if(isdefined(var_04.weaponname))
{
switch(var_04.weaponname)
{
case "claymore_mp":
break;
}
}
switch(var_04.model)
{
case "mp_trophy_system":
case "weapon_radar":
case "weapon_parabolic_knife":
case "weapon_jammer":
break;
}
if(!isdefined(var_04.owner))
{
var_04.owner = getmissileowner(var_04);
}
if(isdefined(var_04.owner) && level.teambased && var_04.owner.team == param_00.team)
{
continue;
}
if(isdefined(var_04.owner) && var_04.owner == param_00)
{
continue;
}
var_05 = distancesquared(var_04.origin,self.origin);
if(var_05 < 147456)
{
if(bullettracepassed(var_04.origin,self.origin,0,self))
{
playfx(level.sentry_fire,self.origin + (0,0,32),var_04.origin - self.origin,anglestoup(self.angles));
self playsound("trophy_detect_projectile");
if(isdefined(var_04.classname) && var_04.classname == "rocket" && isdefined(var_04.type) && var_04.type == "remote" || var_04.type == "remote_mortar")
{
if(isdefined(var_04.type) && var_04.type == "remote")
{
level thread maps\mp\gametypes\_missions::vehiclekilled(var_04.owner,param_00,undefined,param_00,undefined,"MOD_EXPLOSIVE","trophy_mp");
level thread maps\mp\_utility::teamplayercardsplash("callout_destroyed_predator_missile",param_00);
param_00 thread maps\mp\gametypes\_rank::func_2AB3("kill",100,"trophy_mp","MOD_EXPLOSIVE");
param_00 notify("destroyed_killstreak","trophy_mp");
}
if(isdefined(level.chopper_fx["explode"]["medium"]))
{
playfx(level.chopper_fx["explode"]["medium"],var_04.origin);
}
if(isdefined(level.barrelexpsound))
{
var_04 playsound(level.barrelexpsound);
}
}
param_00 thread projectileexplode(var_04,self);
param_00 maps\mp\gametypes\_missions::processchallenge("ch_noboomforyou");
self.ammo--;
if(self.ammo <= 0)
{
thread trophybreak();
}
}
}
}
}
}
//Function Number: 6
projectileexplode(param_00,param_01)
{
self endon("death");
var_02 = param_00.origin;
var_03 = param_00.model;
var_04 = param_00.angles;
if(var_03 == "weapon_light_marker")
{
playfx(level.empgrenadeexplode,var_02,anglestoforward(var_04),anglestoup(var_04));
param_01 thread trophybreak();
param_00 delete();
return;
}
param_00 delete();
param_01 playsound("trophy_fire");
playfx(level.mine_explode,var_02,anglestoforward(var_04),anglestoup(var_04));
radiusdamage(var_02,128,105,10,self,"MOD_EXPLOSIVE","trophy_mp");
}
//Function Number: 7
trophydamage(param_00)
{
self endon("death");
param_00 endon("death");
self setcandamage(1);
self.health = 999999;
self.maxhealth = 100;
self.damagetaken = 0;
for(;;)
{
self waittill("damage",var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A);
if(!isplayer(var_02))
{
continue;
}
if(!maps\mp\gametypes\_weapons::func_27A1(self.owner,var_02))
{
continue;
}
if(isdefined(var_0A))
{
switch(var_0A)
{
case "concussion_grenade_mp":
case "flash_grenade_mp":
case "smoke_grenade_mp":
break;
}
}
if(!isdefined(self))
{
return;
}
if(var_05 == "MOD_MELEE")
{
self.damagetaken = self.damagetaken + self.maxhealth;
}
if(isdefined(var_09) && var_09 & level.idflags_penetration)
{
self.wasdamagedfrombulletpenetration = 1;
}
self.wasdamaged = 1;
if(isdefined(var_0A) && var_0A == "emp_grenade_mp")
{
self.damagetaken = self.damagetaken + self.maxhealth;
}
self.damagetaken = self.damagetaken + var_01;
if(isplayer(var_02))
{
var_02 maps\mp\gametypes\_damagefeedback::updatedamagefeedback("trophy");
}
if(self.damagetaken >= self.maxhealth)
{
if(isdefined(param_00) && var_02 != param_00)
{
var_02 notify("destroyed_explosive");
}
thread trophybreak();
}
}
}
//Function Number: 8
trophybreak()
{
playfxontag(common_scripts\utility::func_539("sentry_explode_mp"),self,"tag_origin");
playfxontag(common_scripts\utility::func_539("sentry_smoke_mp"),self,"tag_origin");
self playsound("sentry_explode");
self notify("death");
var_00 = self.origin;
self.trigger makeunusable();
wait 3;
if(isdefined(self.trigger))
{
self.trigger delete();
}
if(isdefined(self))
{
self delete();
}
}
//Function Number: 9
createkilltriggers()
{
switch(level.script)
{
case "mp_dome":
createkilltrigger((65.2303,284.217,-307.954),20,64);
createkilltrigger((550.941,1778.53,-108.78),120,64);
break;
case "mp_hardhat":
createkilltrigger((916.224,-1911.95,332.625),230,64);
createkilltrigger((78.2076,800.055,498.384),120,32);
createkilltrigger((165.7,-208.641,408.544),90,64);
createkilltrigger((647.502,-619.168,318.386),70,64);
createkilltrigger((1353.14,1379.13,500.502),100,64);
break;
case "mp_paris":
createkilltrigger((442.346,-895.006,128.819),14,32);
createkilltrigger((277.62,-972.828,129.303),32,64);
createkilltrigger((1717.79,549.294,144.871),20,32);
createkilltrigger((130.734,2027.64,95.1856),32,64);
createkilltrigger((-2077.26,602.075,646.415),300,64);
break;
case "mp_plaza2":
createkilltrigger((-1355.79,-56.389,952.179),50,32);
createkilltrigger((-1354.92,147.436,914.707),40,32);
createkilltrigger((-266.038,976.432,761.29),30,32);
createkilltrigger((189.786,-472.274,738.957),60,40);
createkilltrigger((652.957,-398.834,687.308),60,40);
createkilltrigger((480.709,-1961.1,742.611),110,40);
createkilltrigger((-990.873,-140.348,905.785),45,64);
createkilltrigger((-1215.71,-140.041,905.785),45,64);
createkilltrigger((-485.723,559.951,801.125),50,64);
createkilltrigger((-350.711,559.951,801.125),50,64);
createkilltrigger((369.49,912.654,798.966),200,64);
createkilltrigger((-738.525,1698.84,796.122),100,200);
break;
case "mp_seatown":
createkilltrigger((-1965.25,-862.286,273.747),100,120);
createkilltrigger((-583.448,582.223,375.4),20,64);
createkilltrigger((-1400.83,1367.31,391.082),200,100);
break;
case "mp_lambeth":
createkilltrigger((202.69,1447.83,-85.4053),100,64);
createkilltrigger((1487.4,1713.4,-141.171),20,120);
createkilltrigger((1375.03,2067.73,3.36294),20,64);
createkilltrigger((333.856,2020.39,14.2658),32,64);
break;
case "mp_alpha":
createkilltrigger((-768,1277.92,162.01),8,40);
createkilltrigger((-768,1151.35,162.01),8,40);
createkilltrigger((-768,1024.97,162.01),8,40);
createkilltrigger((-768,896.526,162.01),8,40);
createkilltrigger((-115.306,-423.98,188.944),50,72);
break;
case "mp_underground":
createkilltrigger((975.678,1727.09,-121.848),20,72);
createkilltrigger((273.891,1933.97,-97.8215),12,72);
createkilltrigger((-44.8348,1878.63,-108.455),30,64);
createkilltrigger((-287.736,3014.45,60.6556),300,200);
break;
case "mp_bootleg":
createkilltrigger((-1353.36,33.4733,49.2629),60,32);
createkilltrigger((-1360.71,-37.7305,49.2629),60,32);
createkilltrigger((-1553.97,-744.555,113.469),14,64);
createkilltrigger((52.7655,-257.007,-48.4873),40,64);
createkilltrigger((-952.634,1634.85,-68.327),50,64);
createkilltrigger((-894.218,1518.04,-68.327),55,64);
createkilltrigger((44.5985,-1871.56,226.461),200,64);
createkilltrigger((-1476.79,-730.554,87.178),30,64);
createkilltrigger((-1336.19,141.716,61.0992),70,64);
break;
case "mp_radar":
createkilltrigger((-4213.97,2374.97,1287.35),120,64);
createkilltrigger((-4340.14,3693.87,1299.49),120,64);
createkilltrigger((-4832.37,4363.34,1365.7),120,64);
createkilltrigger((-3837.91,1665.4,1256),68,64);
createkilltrigger((-3841.18,1537.42,1267.05),68,64);
createkilltrigger((-6917.44,4752.67,1498.9),200,64);
createkilltrigger((-5801.42,3119.02,1638.7),300,300);
break;
case "mp_mogadishu":
createkilltrigger((-87.1578,483.38,152.515),24,64);
createkilltrigger((-140.927,129.438,84.5235),16,64);
createkilltrigger((1514.97,2500.66,171.984),32,32);
createkilltrigger((238.065,249.291,75.904),100,64);
createkilltrigger((564.572,1132.1,65.043),12,64);
createkilltrigger((-32.8942,297.377,88.8334),52,64);
createkilltrigger((219.136,1207.01,121.441),130,64);
createkilltrigger((722.165,1210.59,73.5508),150,64);
createkilltrigger((98.2886,-869.883,138.138),100,64);
break;
case "mp_carbon":
createkilltrigger((-1933.36,-4337.14,3890.75),14,90);
createkilltrigger((-2676.72,-3496.48,3694.44),14,14);
createkilltrigger((-3377.57,-4567.52,3785.84),40,80);
break;
case "mp_bravo":
createkilltrigger((878.518,-539.478,1171.53),14,64);
createkilltrigger((-1275.65,984.295,1394.08),200,64);
break;
case "mp_interchange":
createkilltrigger((-712.089,1183.13,192.016),100,64);
break;
case "mp_exchange":
createkilltrigger((76.163,-1513.53,265.376),600,64);
createkilltrigger((-1078.77,-1040.27,196.185),250,64);
createkilltrigger((1705.31,1012.04,238.247),40,64);
createkilltrigger((1706.24,881.525,238.247),40,64);
createkilltrigger((918.001,-1387.3,192.754),40,64);
createkilltrigger((1039.45,-1420.39,192.754),40,64);
createkilltrigger((-270.995,-691.246,184.239),40,64);
createkilltrigger((-511.649,-1104.71,169.967),40,64);
createkilltrigger((-841.228,-522.82,147.096),50,64);
createkilltrigger((445.223,1552.75,234.433),40,64);
createkilltrigger((261.291,814.016,204.573),50,64);
break;
}
}
//Function Number: 10
createkilltrigger(param_00,param_01,param_02)
{
thread maps\mp\_utility::killtrigger(param_00,param_01,param_02);
}

View File

@ -0,0 +1,125 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_friendicons.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 7
* Decompile Time: 102 ms
* Timestamp: 10/27/2023 2:28:56 AM
*******************************************************************/
//Function Number: 1
init()
{
level.drawfriend = 0;
game["headicon_allies"] = maps\mp\gametypes\_teams::func_2770("allies");
game["headicon_axis"] = maps\mp\gametypes\_teams::func_2770("axis");
precacheheadicon(game["headicon_allies"]);
precacheheadicon(game["headicon_axis"]);
precacheshader("waypoint_revive");
level thread onplayerconnect();
for(;;)
{
func_2EDF();
wait 5;
}
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread onplayerspawned();
var_00 thread onplayerkilled();
}
}
//Function Number: 3
onplayerspawned()
{
self endon("disconnect");
for(;;)
{
self waittill("spawned_player");
thread func_2EDE();
}
}
//Function Number: 4
onplayerkilled()
{
self endon("disconnect");
for(;;)
{
self waittill("killed_player");
self.headicon = "";
}
}
//Function Number: 5
func_2EDE()
{
if(level.drawfriend)
{
if(self.pers["team"] == "allies")
{
self.headicon = game["headicon_allies"];
self.headiconteam = "allies";
return;
}
self.headicon = game["headicon_axis"];
self.headiconteam = "axis";
}
}
//Function Number: 6
func_2EDF()
{
var_00 = maps\mp\_utility::getintproperty("scr_drawfriend",level.drawfriend);
if(level.drawfriend != var_00)
{
level.drawfriend = var_00;
func_2EE0();
}
}
//Function Number: 7
func_2EE0()
{
var_00 = level.players;
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
var_02 = var_00[var_01];
if(isdefined(var_02.pers["team"]) && var_02.pers["team"] != "spectator" && var_02.sessionstate == "playing")
{
if(level.drawfriend)
{
if(var_02.pers["team"] == "allies")
{
var_02.headicon = game["headicon_allies"];
var_02.headiconteam = "allies";
}
else
{
var_02.headicon = game["headicon_axis"];
var_02.headiconteam = "axis";
}
continue;
}
var_00 = level.players;
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
var_02 = var_00[var_01];
if(isdefined(var_02.pers["team"]) && var_02.pers["team"] != "spectator" && var_02.sessionstate == "playing")
{
var_02.headicon = "";
}
}
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,443 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_gamescore.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 20
* Decompile Time: 325 ms
* Timestamp: 10/27/2023 2:28:54 AM
*******************************************************************/
//Function Number: 1
func_26D0()
{
func_26F4();
if(!level.placement["all"].size)
{
return undefined;
}
return level.placement["all"][0];
}
//Function Number: 2
getlosingplayers()
{
func_26F4();
var_00 = level.placement["all"];
var_01 = [];
foreach(var_03 in var_00)
{
if(var_03 == level.placement["all"][0])
{
continue;
}
var_01[var_01.size] = var_03;
}
return var_01;
}
//Function Number: 3
func_26D3(param_00,param_01,param_02,param_03,param_04)
{
if(!isdefined(param_03))
{
param_03 = 0;
}
if(!isdefined(param_04))
{
param_04 = 0;
}
var_05 = param_01.pers["score"];
onplayerscore(param_00,param_01,param_02);
if(var_05 == param_01.pers["score"])
{
return;
}
if(!param_01 maps\mp\_utility::rankingenabled() && !level.hardcoremode && !param_04)
{
param_01 thread maps\mp\gametypes\_rank::xppointspopup(param_01.pers["score"] - var_05,0,(0.85,0.85,0.85),0);
}
param_01 maps\mp\gametypes\_persistence::statadd("score",param_01.pers["score"] - var_05);
param_01.score = param_01.pers["score"];
param_01 maps\mp\gametypes\_persistence::func_26D8("round","score",param_01.score);
if(!level.teambased)
{
thread sendupdateddmscores();
}
if(!param_03)
{
param_01 maps\mp\gametypes\_gamelogic::func_26DA();
}
var_06 = param_01 maps\mp\gametypes\_gamelogic::func_26DB();
}
//Function Number: 4
onplayerscore(param_00,param_01,param_02)
{
var_03 = maps\mp\gametypes\_rank::getscoreinfovalue(param_00);
param_01.pers["score"] = param_01.pers["score"] + var_03 * level.objectivepointsmod;
}
//Function Number: 5
_setplayerscore(param_00,param_01)
{
if(param_01 == param_00.pers["score"])
{
return;
}
param_00.pers["score"] = param_01;
param_00.score = param_00.pers["score"];
param_00 thread maps\mp\gametypes\_gamelogic::func_26DB();
}
//Function Number: 6
_getplayerscore(param_00)
{
return param_00.pers["score"];
}
//Function Number: 7
giveteamscoreforobjective(param_00,param_01)
{
param_01 = param_01 * level.objectivepointsmod;
var_02 = game["teamScores"][param_00];
var_03 = level.otherteam[param_00];
if(game["teamScores"][param_00] > game["teamScores"][var_03])
{
level.waswinning = param_00;
}
else if(game["teamScores"][var_03] > game["teamScores"][param_00])
{
level.waswinning = var_03;
}
_setteamscore(param_00,func_26EE(param_00) + param_01);
var_04 = "none";
if(game["teamScores"][param_00] > game["teamScores"][var_03])
{
var_04 = param_00;
}
else if(game["teamScores"][var_03] > game["teamScores"][param_00])
{
var_04 = var_03;
}
if(!level.splitscreen && var_04 != "none" && var_04 != level.waswinning && gettime() - level.laststatustime > 5000 && maps\mp\_utility::func_26E4() != 1)
{
level.laststatustime = gettime();
maps\mp\_utility::func_26E5("lead_taken",var_04,"status");
if(level.waswinning != "none")
{
maps\mp\_utility::func_26E5("lead_lost",level.waswinning,"status");
}
}
if(var_04 != "none")
{
level.waswinning = var_04;
}
}
//Function Number: 8
func_26E6()
{
if(game["teamScores"]["allies"] > game["teamScores"]["axis"])
{
return "allies";
}
else if(game["teamScores"]["allies"] < game["teamScores"]["axis"])
{
return "axis";
}
return "none";
}
//Function Number: 9
_setteamscore(param_00,param_01)
{
if(param_01 == game["teamScores"][param_00])
{
return;
}
game["teamScores"][param_00] = param_01;
func_26EB(param_00);
if((game["status"] == "overtime" && !isdefined(level.overtimescorewinoverride)) || isdefined(level.overtimescorewinoverride) && !level.overtimescorewinoverride)
{
thread maps\mp\gametypes\_gamelogic::func_26E9();
return;
}
thread maps\mp\gametypes\_gamelogic::func_26EA(param_00);
thread maps\mp\gametypes\_gamelogic::func_26DB();
}
//Function Number: 10
func_26EB(param_00)
{
var_01 = 0;
if(!maps\mp\_utility::func_26EC() || !maps\mp\_utility::isobjectivebased())
{
var_01 = func_26EE(param_00);
}
else
{
var_01 = game["roundsWon"][param_00];
}
setteamscore(param_00,var_01);
}
//Function Number: 11
func_26EE(param_00)
{
return game["teamScores"][param_00];
}
//Function Number: 12
sendupdatedteamscores()
{
level notify("updating_scores");
level endon("updating_scores");
wait 0.05;
maps\mp\_utility::waittillslowprocessallowed();
foreach(var_01 in level.players)
{
var_01 updatescores();
}
}
//Function Number: 13
sendupdateddmscores()
{
level notify("updating_dm_scores");
level endon("updating_dm_scores");
wait 0.05;
maps\mp\_utility::waittillslowprocessallowed();
for(var_00 = 0;var_00 < level.players.size;var_00++)
{
level.players[var_00] updatedmscores();
level.players[var_00].updateddmscores = 1;
}
}
//Function Number: 14
func_26F3()
{
var_00 = 0;
var_01 = level.placement["all"].size;
var_02 = 0;
for(var_03 = 0;var_03 < var_01;var_03++)
{
if(level.placement["all"][var_03] == self)
{
var_02 = 1;
}
if(var_02)
{
level.placement["all"][var_03] = level.placement["all"][var_03 + 1];
}
}
if(!var_02)
{
return;
}
level.placement["all"][var_01 - 1] = undefined;
if(level.teambased)
{
updateteamplacement();
return;
}
var_01 = level.placement["all"].size;
for(var_03 = 0;var_03 < var_01;var_03++)
{
var_04 = level.placement["all"][var_03];
var_04 notify("update_outcome");
}
}
//Function Number: 15
func_26F4()
{
var_00 = [];
foreach(var_02 in level.players)
{
if(isdefined(var_02.connectedpostgame) || var_02.pers["team"] != "allies" && var_02.pers["team"] != "axis")
{
continue;
}
var_00[var_00.size] = var_02;
}
for(var_04 = 1;var_04 < var_00.size;var_04++)
{
var_02 = var_00[var_04];
var_05 = var_02.score;
for(var_06 = var_04 - 1;var_06 >= 0 && getbetterplayer(var_02,var_00[var_06]) == var_02;var_06--)
{
var_00[var_06 + 1] = var_00[var_06];
}
var_00[var_06 + 1] = var_02;
}
level.placement["all"] = var_00;
if(level.teambased)
{
updateteamplacement();
}
}
//Function Number: 16
getbetterplayer(param_00,param_01)
{
if(param_00.score > param_01.score)
{
return param_00;
}
if(param_01.score > param_00.score)
{
return param_01;
}
if(param_00.deaths < param_01.deaths)
{
return param_00;
}
if(param_01.deaths < param_00.deaths)
{
return param_01;
}
if(common_scripts\utility::cointoss())
{
return param_00;
}
return param_01;
}
//Function Number: 17
updateteamplacement()
{
var_00["allies"] = [];
var_01 = level.placement["all"];
var_02 = var_01.size;
for(var_03 = 0;var_03 < var_02;var_03++ = var_41["spectator"])
{
var_04 = var_01[var_03];
var_05 = var_04.pers["team"];
var_41[var_05][var_41[var_05].size] = var_04;
}
level.placement["allies"] = var_41["allies"];
level.placement["axis"] = var_41["axis"];
}
//Function Number: 18
func_26F8()
{
wait 0.2;
var_00 = 0;
for(;;)
{
var_01 = 0;
var_02 = level.players;
for(var_03 = 0;var_03 < var_02.size;var_03++)
{
var_04 = var_02[var_03];
if(!isdefined(var_04))
{
continue;
}
if(isdefined(var_04.updateddmscores))
{
continue;
}
var_04.updateddmscores = 1;
var_04 updatedmscores();
var_01 = 1;
wait 0.5;
}
if(!var_01)
{
wait 3;
}
}
}
//Function Number: 19
func_26F9(param_00)
{
self endon("disconnect");
param_00 endon("disconnect");
wait 0.05;
maps\mp\_utility::waittillslowprocessallowed();
if(self.pers["team"] != "axis" && self.pers["team"] != "allies")
{
return;
}
if(self.pers["team"] == param_00.pers["team"])
{
return;
}
self thread [[ level.onxpevent ]]("assist");
maps\mp\_utility::func_26FB("assists",1);
self.assists = maps\mp\_utility::getpersstat("assists");
maps\mp\_utility::incplayerstat("assists",1);
maps\mp\gametypes\_persistence::func_26D8("round","assists",self.assists);
func_26D3("assist",self,param_00);
maps\mp\killstreaks\_killstreaks::giveadrenaline("assist");
thread maps\mp\gametypes\_missions::func_26FF();
}
//Function Number: 20
func_2700(param_00)
{
self endon("disconnect");
param_00 endon("disconnect");
wait 0.05;
maps\mp\_utility::waittillslowprocessallowed();
if(self.pers["team"] != "axis" && self.pers["team"] != "allies")
{
return;
}
if(self.pers["team"] == param_00.pers["team"])
{
return;
}
self thread [[ level.onxpevent ]]("assist");
self thread [[ level.onxpevent ]]("assist");
maps\mp\_utility::func_26FB("assists",1);
self.assists = maps\mp\_utility::getpersstat("assists");
maps\mp\_utility::incplayerstat("assists",1);
maps\mp\gametypes\_persistence::func_26D8("round","assists",self.assists);
func_26D3("assist",self,param_00);
thread maps\mp\gametypes\_hud_message::func_2701("shield_assist");
thread maps\mp\gametypes\_missions::func_26FF();
}

View File

@ -0,0 +1,190 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_globallogic.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 9
* Decompile Time: 136 ms
* Timestamp: 10/27/2023 2:25:28 AM
*******************************************************************/
//Function Number: 1
init()
{
level.splitscreen = issplitscreen();
level.ps3 = getdvar("ps3Game") == "true";
level.xenon = getdvar("xenonGame") == "true";
level.console = level.ps3 || level.xenon;
level.onlinegame = getdvarint("onlinegame");
level.rankedmatch = !level.onlinegame || !getdvarint("xblive_privatematch");
level.script = tolower(getdvar("mapname"));
level.gametype = tolower(getdvar("g_gametype"));
level.otherteam["allies"] = "axis";
level.otherteam["axis"] = "allies";
level.teambased = 0;
level.objectivebased = 0;
level.endgameontimelimit = 1;
level.showingfinalkillcam = 0;
level.tispawndelay = getdvarint("scr_tispawndelay");
if(!isdefined(level.tweakablesinitialized))
{
maps\mp\gametypes\_tweakables::init();
}
precachestring(&"MP_HALFTIME");
precachestring(&"MP_OVERTIME");
precachestring(&"MP_ROUNDEND");
precachestring(&"MP_INTERMISSION");
precachestring(&"MP_SWITCHING_SIDES");
precachestring(&"MP_FRIENDLY_FIRE_WILL_NOT");
precachestring(&"PLATFORM_REVIVE");
precachestring(&"MP_OBITUARY_NEUTRAL");
precachestring(&"MP_OBITUARY_FRIENDLY");
precachestring(&"MP_OBITUARY_ENEMY");
if(level.splitscreen)
{
precachestring(&"MP_ENDED_GAME");
}
else
{
precachestring(&"MP_HOST_ENDED_GAME");
}
level.halftimetype = "halftime";
level.halftimesubcaption = &"MP_SWITCHING_SIDES";
level.laststatustime = 0;
level.waswinning = "none";
level.lastslowprocessframe = 0;
level.placement["allies"] = [];
level.placement["axis"] = [];
level.placement["all"] = [];
level.postroundtime = 5;
level.playerslookingforsafespawn = [];
func_3456();
precachemodel("vehicle_mig29_desert");
precachemodel("projectile_cbu97_clusterbomb");
precachemodel("tag_origin");
level.fx_airstrike_afterburner = loadfx("fire/jet_afterburner");
level.fx_airstrike_contrail = loadfx("smoke/jet_contrail");
if(maps\mp\_utility::matchmakinggame())
{
var_00 = " LB_MAP_" + getdvar("ui_mapname");
var_01 = " LB_GM_" + level.gametype;
if(getdvarint("g_hardcore"))
{
var_01 = var_01 + "_HC";
}
precacheleaderboards("LB_GB_TOTALXP_AT LB_GB_TOTALXP_LT LB_GB_WINS_AT LB_GB_WINS_LT LB_GB_KILLS_AT LB_GB_KILLS_LT LB_GB_ACCURACY_AT LB_ACCOLADES" + var_01 + var_00);
}
level.teamcount["allies"] = 0;
level.teamcount["axis"] = 0;
level.teamcount["spectator"] = 0;
level.alivecount["allies"] = 0;
level.alivecount["axis"] = 0;
level.alivecount["spectator"] = 0;
level.livescount["allies"] = 0;
level.livescount["axis"] = 0;
level.onelefttime = [];
level.hasspawned["allies"] = 0;
level.hasspawned["axis"] = 0;
}
//Function Number: 2
func_3456()
{
makedvarserverinfo("ui_bomb_timer",0);
makedvarserverinfo("ui_nuke_end_milliseconds",0);
makedvarserverinfo("ui_danger_team","");
makedvarserverinfo("ui_inhostmigration",0);
makedvarserverinfo("ui_override_halftime",0);
makedvarserverinfo("camera_thirdPerson",getdvarint("scr_thirdPerson"));
}
//Function Number: 3
setupcallbacks()
{
level.onxpevent = ::onxpevent;
level.getspawnpoint = ::blank;
level.onspawnplayer = ::blank;
level.onrespawndelay = ::blank;
level.ontimelimit = ::maps\mp\gametypes\_gamelogic::func_2EEF;
level.onhalftime = ::maps\mp\gametypes\_gamelogic::func_2EF0;
level.ondeadevent = ::maps\mp\gametypes\_gamelogic::default_ondeadevent;
level.ononeleftevent = ::maps\mp\gametypes\_gamelogic::func_2EED;
level.onprecachegametype = ::blank;
level.onstartgametype = ::blank;
level.onplayerkilled = ::blank;
level.autoassign = ::maps\mp\gametypes\_menus::menuautoassign;
level.spectator = ::maps\mp\gametypes\_menus::func_2AE8;
level.class = ::maps\mp\gametypes\_menus::func_2AEA;
level.allies = ::maps\mp\gametypes\_menus::menuallies;
level.axis = ::maps\mp\gametypes\_menus::func_2AE7;
}
//Function Number: 4
blank(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
}
//Function Number: 5
func_3458()
{
self endon("death");
self endon("disconnect");
for(;;)
{
wait 10;
var_00 = spawnstruct();
var_00.titletext = &"MP_CHALLENGE_COMPLETED";
var_00.notifytext = "wheee";
var_00.sound = "mp_challenge_complete";
thread maps\mp\gametypes\_hud_message::func_EBE(var_00);
}
}
//Function Number: 6
func_3459()
{
self endon("death");
self endon("disconnect");
for(;;)
{
wait 3;
var_00 = randomint(6);
for(var_01 = 0;var_01 < var_00;var_01++)
{
iprintlnbold(var_00);
self shellshock("frag_grenade_mp",0.2);
wait 0.1;
}
}
}
//Function Number: 7
onxpevent(param_00)
{
thread maps\mp\gametypes\_rank::func_2AB3(param_00);
}
//Function Number: 8
fakelag()
{
self endon("disconnect");
self.fakelag = randomintrange(50,150);
for(;;)
{
self setclientdvar("fakelag_target",self.fakelag);
wait randomfloatrange(5,15);
}
}
//Function Number: 9
debugline(param_00,param_01)
{
for(var_02 = 0;var_02 < 50;var_02++)
{
wait 0.05;
}
}

View File

@ -0,0 +1,268 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_healthoverlay.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 8
* Decompile Time: 133 ms
* Timestamp: 10/27/2023 2:25:29 AM
*******************************************************************/
//Function Number: 1
init()
{
level.healthoverlaycutoff = 0.55;
var_00 = 5;
var_00 = maps\mp\gametypes\_tweakables::func_270D("player","healthregentime");
level.playerhealth_regularregendelay = var_00 * 1000;
level.healthregendisabled = level.playerhealth_regularregendelay <= 0;
level thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread onplayerspawned();
}
}
//Function Number: 3
onplayerspawned()
{
self endon("disconnect");
for(;;)
{
self waittill("spawned_player");
thread playerhealthregen();
self visionsetthermalforplayer(game["thermal_vision"]);
}
}
//Function Number: 4
playerhealthregen()
{
self endon("death");
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
self endon("faux_spawn");
level endon("game_ended");
if(self.health <= 0)
{
return;
}
var_00 = 0;
var_01 = 0;
thread playerpainbreathingsound(self.maxhealth * 0.55);
for(;;)
{
self waittill("damage");
if(self.health <= 0)
{
return;
}
var_01 = gettime();
var_02 = self.health / self.maxhealth;
if(!isdefined(self.healthregenlevel))
{
self.regenspeed = 1;
}
else if(self.healthregenlevel == 0.33)
{
self.regenspeed = 0.75;
}
else if(self.healthregenlevel == 0.66)
{
self.regenspeed = 0.5;
}
else if(self.healthregenlevel == 0.99)
{
self.regenspeed = 0.3;
}
else
{
self.regenspeed = 1;
}
if(var_02 <= level.healthoverlaycutoff)
{
self.atbrinkofdeath = 1;
}
thread func_2D60(var_01,var_02);
thread breathingmanager(var_01,var_02);
}
}
//Function Number: 5
breathingmanager(param_00,param_01)
{
self notify("breathingManager");
self endon("breathingManager");
self endon("death");
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
level endon("game_ended");
if(maps\mp\_utility::isusingremote())
{
return;
}
self.breathingstoptime = param_00 + 6000 * self.regenspeed;
wait 6 * self.regenspeed;
if(!level.gameended)
{
self playlocalsound("breathing_better");
}
}
//Function Number: 6
func_2D60(param_00,param_01)
{
self notify("healthRegeneration");
self endon("healthRegeneration");
self endon("death");
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
level endon("game_ended");
if(level.healthregendisabled)
{
return;
}
wait level.playerhealth_regularregendelay / 1000 * self.regenspeed;
if(param_01 < 0.55)
{
var_02 = 1;
}
else
{
var_02 = 0;
}
for(;;)
{
if(self.regenspeed == 0.75)
{
wait 0.2;
if(self.health < self.maxhealth)
{
self.health = self.health + 5;
}
else
{
break;
}
}
else if(self.regenspeed == 0.5)
{
wait 0.05;
if(self.health < self.maxhealth)
{
self.health = self.health + 2;
}
else
{
break;
}
}
else if(self.regenspeed == 0.3)
{
wait 0.15;
if(self.health < self.maxhealth)
{
self.health = self.health + 9;
}
else
{
break;
}
}
else if(!isdefined(self.regenspeed) || self.regenspeed == 1)
{
wait 0.05;
if(self.health < self.maxhealth)
{
self.health = self.health + 1;
param_01 = self.health / self.maxhealth;
}
else
{
break;
}
}
if(self.health > self.maxhealth)
{
self.health = self.maxhealth;
}
}
maps\mp\gametypes\_damage::func_2D31();
if(var_02)
{
maps\mp\gametypes\_missions::func_2D61();
}
}
//Function Number: 7
func_2D62()
{
self notify("waiting_to_stop_remote");
self endon("waiting_to_stop_remote");
self endon("death");
level endon("game_ended");
self waittill("stopped_using_remote");
if(isdefined(level.nukedetonated))
{
self visionsetnakedforplayer(level.nukevisionset,0);
return;
}
self visionsetnakedforplayer("",0);
}
//Function Number: 8
playerpainbreathingsound(param_00)
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
wait 2;
for(;;)
{
wait 0.2;
if(self.health <= 0)
{
return;
}
if(self.health >= param_00)
{
continue;
}
if(level.healthregendisabled && gettime() > self.breathingstoptime)
{
continue;
}
if(maps\mp\_utility::isusingremote())
{
continue;
}
self playlocalsound("breathing_hurt");
wait 0.784;
wait 0.1 + randomfloat(0.8);
}
}

View File

@ -0,0 +1,166 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_hostmigration.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 9
* Decompile Time: 124 ms
* Timestamp: 10/27/2023 2:25:30 AM
*******************************************************************/
//Function Number: 1
callback_hostmigration()
{
level.hostmigrationreturnedplayercount = 0;
if(level.gameended)
{
return;
}
level.hostmigrationtimer = 1;
setdvar("ui_inhostmigration",1);
level notify("host_migration_begin");
maps\mp\gametypes\_gamelogic::updatetimerpausedness();
foreach(var_01 in level.players)
{
var_01 thread func_273D();
}
level endon("host_migration_begin");
func_2735();
level.hostmigrationtimer = undefined;
setdvar("ui_inhostmigration",0);
level notify("host_migration_end");
maps\mp\gametypes\_gamelogic::updatetimerpausedness();
level thread maps\mp\gametypes\_gamelogic::func_2734();
}
//Function Number: 2
func_2735()
{
level endon("game_ended");
level.ingraceperiod = 25;
thread maps\mp\gametypes\_gamelogic::matchstarttimer("waiting_for_players",20);
hostmigrationwaitforplayers();
level.ingraceperiod = 10;
thread maps\mp\gametypes\_gamelogic::matchstarttimer("match_resuming_in",5);
wait 5;
level.ingraceperiod = 0;
}
//Function Number: 3
hostmigrationwaitforplayers()
{
level endon("hostmigration_enoughplayers");
wait 15;
}
//Function Number: 4
func_2739()
{
level endon("host_migration_begin");
level endon("host_migration_end");
self.hostmigrationcontrolsfrozen = 0;
while(!maps\mp\_utility::isreallyalive(self))
{
self waittill("spawned");
}
self.hostmigrationcontrolsfrozen = 1;
maps\mp\_utility::freezecontrolswrapper(1);
level waittill("host_migration_end");
}
//Function Number: 5
func_273D()
{
self endon("disconnect");
self setclientdvar("cg_scoreboardPingGraph","0");
func_2739();
if(self.hostmigrationcontrolsfrozen)
{
maps\mp\_utility::freezecontrolswrapper(0);
}
self setclientdvar("cg_scoreboardPingGraph","1");
}
//Function Number: 6
func_273E()
{
if(!isdefined(level.hostmigrationtimer))
{
return 0;
}
var_00 = gettime();
level waittill("host_migration_end");
return gettime() - var_00;
}
//Function Number: 7
func_273F(param_00)
{
if(isdefined(level.hostmigrationtimer))
{
return;
}
level endon("host_migration_begin");
wait param_00;
}
//Function Number: 8
func_2740(param_00)
{
if(param_00 == 0)
{
return;
}
var_01 = gettime();
var_02 = gettime() + param_00 * 1000;
while(gettime() < var_02)
{
func_273F(var_02 - gettime() / 1000);
if(isdefined(level.hostmigrationtimer))
{
var_03 = func_273E();
var_02 = var_02 + var_03;
}
}
func_273E();
return gettime() - var_01;
}
//Function Number: 9
waitlongdurationwithgameendtimeupdate(param_00)
{
if(param_00 == 0)
{
return;
}
var_01 = gettime();
var_02 = gettime() + param_00 * 1000;
while(gettime() < var_02)
{
func_273F(var_02 - gettime() / 1000);
while(isdefined(level.hostmigrationtimer))
{
var_02 = var_02 + 1000;
setgameendtime(int(var_02));
wait 1;
}
}
while(isdefined(level.hostmigrationtimer))
{
var_02 = var_02 + 1000;
setgameendtime(int(var_02));
wait 1;
}
return gettime() - var_01;
}

View File

@ -0,0 +1,78 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_hud.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 3
* Decompile Time: 56 ms
* Timestamp: 10/27/2023 2:25:30 AM
*******************************************************************/
//Function Number: 1
init()
{
precacheshader("progress_bar_bg");
precacheshader("progress_bar_fg");
precacheshader("progress_bar_fill");
level.uiparent = spawnstruct();
level.uiparent.horzalign = "left";
level.uiparent.vertalign = "top";
level.uiparent.alignx = "left";
level.uiparent.aligny = "top";
level.uiparent.x = 0;
level.uiparent.y = 0;
level.uiparent.width = 0;
level.uiparent.height = 0;
level.uiparent.children = [];
level.fontheight = 12;
level.hud["allies"] = spawnstruct();
level.hud["axis"] = spawnstruct();
level.primaryprogressbary = -61;
level.primaryprogressbarx = 0;
level.primaryprogressbarheight = 9;
level.primaryprogressbarwidth = 120;
level.primaryprogressbartexty = -75;
level.primaryprogressbartextx = 0;
level.primaryprogressbarfontsize = 0.6;
level.teamprogressbary = 32;
level.teamprogressbarheight = 14;
level.teamprogressbarwidth = 192;
level.teamprogressbartexty = 8;
level.teamprogressbarfontsize = 1.65;
level.lowertextyalign = "BOTTOM";
level.lowertexty = -90;
level.lowertextfontsize = 1.6;
}
//Function Number: 2
fontpulseinit(param_00)
{
self.basefontscale = self.fontscale;
if(isdefined(param_00))
{
self.maxfontscale = min(param_00,6.3);
}
else
{
self.maxfontscale = min(self.fontscale * 2,6.3);
}
self.inframes = 2;
self.outframes = 4;
}
//Function Number: 3
fontpulse(param_00)
{
self notify("fontPulse");
self endon("fontPulse");
self endon("death");
param_00 endon("disconnect");
param_00 endon("joined_team");
param_00 endon("joined_spectators");
self changefontscaleovertime(self.inframes * 0.05);
self.fontscale = self.maxfontscale;
wait self.inframes * 0.05;
self changefontscaleovertime(self.outframes * 0.05);
self.fontscale = self.basefontscale;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,621 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_killcam.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 22
* Decompile Time: 316 ms
* Timestamp: 10/27/2023 2:25:35 AM
*******************************************************************/
//Function Number: 1
init()
{
precachestring(&"PLATFORM_PRESS_TO_SKIP");
precachestring(&"PLATFORM_PRESS_TO_RESPAWN");
precachestring(&"PLATFORM_PRESS_TO_COPYCAT");
level.killcam = maps\mp\gametypes\_tweakables::func_270D("game","allowkillcam");
}
//Function Number: 2
killcam(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
self endon("disconnect");
self endon("spawned");
level endon("game_ended");
if(param_00 < 0)
{
return;
}
if(getdvar("scr_killcam_time") == "")
{
if(param_03 == "artillery_mp" || param_03 == "stealth_bomb_mp" || param_03 == "remote_mortar_missile_mp")
{
var_0A = gettime() - param_02 / 1000 - param_04 - 0.1;
}
else if(level.showingfinalkillcam)
{
var_0A = 4;
}
else if(param_04 == "apache_minigun_mp")
{
var_0A = 3;
}
else if(param_04 == "javelin_mp" || param_04 == "uav_strike_projectile_mp")
{
var_0A = 8;
}
else if(issubstr(param_04,"remotemissile_"))
{
var_0A = 5;
}
else if(!param_07 || param_07 > 5)
{
var_0A = 5;
}
else if(param_04 == "frag_grenade_mp" || param_04 == "frag_grenade_short_mp" || param_04 == "semtex_mp")
{
var_0A = 4.25;
}
else
{
var_0A = 2.5;
}
}
else
{
var_0A = getdvarfloat("scr_killcam_time");
}
if(isdefined(param_07))
{
if(var_0A > param_07)
{
var_0A = param_07;
}
if(var_0A < 0.05)
{
var_0A = 0.05;
}
}
if(getdvar("scr_killcam_posttime") == "")
{
var_0B = 2;
}
else
{
var_0B = getdvarfloat("scr_killcam_posttime");
if(var_0B < 0.05)
{
var_0B = 0.05;
}
}
var_0C = var_0A + var_0B;
if(isdefined(param_07) && var_0C > param_07)
{
if(param_07 < 2)
{
return;
}
if(param_07 - var_0A >= 1)
{
var_0B = param_07 - var_0A;
}
else
{
var_0B = 1;
var_0A = param_07 - 1;
}
var_0C = var_0A + var_0B;
}
var_0D = var_0A + param_04;
var_0E = gettime();
self notify("begin_killcam",var_0E);
if(isdefined(param_08))
{
param_08 visionsyncwithplayer(param_09);
}
self.sessionstate = "spectator";
self.forcespectatorclient = param_00;
self.killcamentity = -1;
if(param_01 >= 0)
{
thread func_2BA6(param_01,var_0D,param_02);
}
self.archivetime = var_0D;
self.killcamlength = var_0C;
self.psoffsettime = param_05;
self allowspectateteam("allies",1);
self allowspectateteam("axis",1);
self allowspectateteam("freelook",1);
self allowspectateteam("none",1);
if(isdefined(param_08) && level.showingfinalkillcam)
{
self openmenu("killedby_card_display");
self setcarddisplayslot(param_08,7);
}
thread func_2BAE();
wait 0.05;
if(self.archivetime < var_0D)
{
}
var_0A = self.archivetime - 0.05 - param_04;
var_0C = var_0A + var_0B;
self.killcamlength = var_0C;
if(var_0A <= 0)
{
self.sessionstate = "dead";
self.forcespectatorclient = -1;
self.killcamentity = -1;
self.archivetime = 0;
self.psoffsettime = 0;
self notify("killcam_ended");
return;
}
if(level.showingfinalkillcam)
{
thread func_2BA2(var_0A);
}
self.killcam = 1;
initkcelements();
if(!level.splitscreen || self issplitscreenplayer())
{
self.kc_timer.alpha = 1;
self.kc_timer settenthstimer(var_0A);
}
if(param_06 && !level.gameended)
{
maps\mp\_utility::setlowermessage("kc_info",&"PLATFORM_PRESS_TO_SKIP",undefined,undefined,undefined,undefined,undefined,undefined,1);
}
else if(!level.gameended)
{
maps\mp\_utility::setlowermessage("kc_info",&"PLATFORM_PRESS_TO_RESPAWN",undefined,undefined,undefined,undefined,undefined,undefined,1);
}
if(!level.showingfinalkillcam)
{
self.kc_skiptext.alpha = 1;
}
else
{
self.kc_skiptext.alpha = 0;
}
self.kc_othertext.alpha = 0;
self.kc_icon.alpha = 0;
thread func_2BAD();
if(self == param_09 && param_09 maps\mp\_utility::func_27AF("specialty_copycat") && isdefined(param_09.pers["copyCatLoadout"]) && !param_08 maps\mp\_utility::isjuggernaut())
{
thread func_2BA8(param_08);
}
if(!level.showingfinalkillcam)
{
thread func_2BA7(param_06);
}
else
{
self notify("showing_final_killcam");
}
thread endkillcamifnothingtoshow();
func_2BA5();
if(level.showingfinalkillcam)
{
thread maps\mp\gametypes\_playerlogic::spawnendofgame();
return;
}
thread calculatekillcamtime(var_0E);
thread func_2BAF(1);
}
//Function Number: 3
func_2BA2(param_00)
{
if(isdefined(level.doingfinalkillcamfx))
{
return;
}
level.doingfinalkillcamfx = 1;
var_01 = param_00;
if(var_01 > 1)
{
var_01 = 1;
wait param_00 - 1;
}
setslowmotion(1,0.25,var_01);
wait var_01 + 0.5;
setslowmotion(0.25,1,1);
level.doingfinalkillcamfx = undefined;
}
//Function Number: 4
calculatekillcamtime(param_00)
{
var_01 = int(gettime() - param_00);
maps\mp\_utility::incplayerstat("killcamtimewatched",var_01);
}
//Function Number: 5
func_2BA5()
{
self endon("abort_killcam");
wait self.killcamlength - 0.05;
}
//Function Number: 6
func_2BA6(param_00,param_01,param_02)
{
self endon("disconnect");
self endon("killcam_ended");
var_03 = gettime() - param_01 * 1000;
if(param_02 > var_03)
{
wait 0.05;
param_01 = self.archivetime;
var_03 = gettime() - param_01 * 1000;
if(param_02 > var_03)
{
wait param_02 - var_03 / 1000;
}
}
self.killcamentity = param_00;
}
//Function Number: 7
func_2BA7(param_00)
{
self endon("disconnect");
self endon("killcam_ended");
while(self usebuttonpressed())
{
wait 0.05;
}
while(!self usebuttonpressed())
{
wait 0.05;
}
if(!maps\mp\_utility::matchmakinggame())
{
maps\mp\_utility::incplayerstat("killcamskipped",1);
}
if(param_00 <= 0)
{
maps\mp\_utility::clearlowermessage("kc_info");
}
self notify("abort_killcam");
}
//Function Number: 8
func_2BA8(param_00)
{
self endon("disconnect");
self endon("killcam_ended");
waitcopycatbutton(param_00);
self notify("abort_killcam");
}
//Function Number: 9
func_2BA9(param_00)
{
self endon("disconnect");
initkcelements();
var_01 = waitcopycatbutton(param_00);
if(!isdefined(var_01))
{
self.kc_icon.alpha = 0;
self.kc_othertext.alpha = 0;
}
}
//Function Number: 10
waitcopycatbutton(param_00)
{
self endon("spawned_player");
self endon("death_delay_finished");
self.kc_icon setshader("specialty_copycat",48,48);
self.kc_othertext settext(&"PLATFORM_PRESS_TO_COPYCAT");
self.kc_othertext.alpha = 1;
self.kc_icon.alpha = 1;
self notifyonplayercommand("use_copycat","weapnext");
self waittill("use_copycat");
self.pers["copyCatLoadout"]["inUse"] = 1;
self.pers["copyCatLoadout"]["owner"] = param_00;
self.kc_othertext fadeovertime(0.5);
self.kc_othertext.alpha = 0;
self.kc_icon fadeovertime(0.25);
self.kc_icon scaleovertime(0.25,512,512);
self.kc_icon.alpha = 0;
if(isdefined(param_00))
{
param_00 thread maps\mp\gametypes\_hud_message::playercardsplashnotify("copied",self);
}
self playlocalsound("copycat_steal_class");
return 1;
}
//Function Number: 11
func_2BAB()
{
self endon("disconnect");
self endon("killcam_ended");
if(!maps\mp\gametypes\_playerlogic::mayspawn())
{
return;
}
while(self fragbuttonpressed())
{
wait 0.05;
}
while(!self fragbuttonpressed())
{
wait 0.05;
}
self.wantsafespawn = 1;
self notify("abort_killcam");
}
//Function Number: 12
endkillcamifnothingtoshow()
{
self endon("disconnect");
self endon("killcam_ended");
for(;;)
{
if(self.archivetime <= 0)
{
break;
}
wait 0.05;
}
self notify("abort_killcam");
}
//Function Number: 13
func_2BAD()
{
self endon("disconnect");
self endon("killcam_ended");
self waittill("spawned");
thread func_2BAF(0);
}
//Function Number: 14
func_2BAE()
{
self endon("disconnect");
self endon("killcam_ended");
level waittill("game_ended");
thread func_2BAF(1);
}
//Function Number: 15
func_2BAF(param_00)
{
if(isdefined(self.kc_skiptext))
{
self.kc_skiptext.alpha = 0;
}
if(isdefined(self.kc_timer))
{
self.kc_timer.alpha = 0;
}
if(isdefined(self.kc_icon))
{
self.kc_icon.alpha = 0;
}
if(isdefined(self.kc_othertext))
{
self.kc_othertext.alpha = 0;
}
self.killcam = undefined;
if(!level.gameended)
{
maps\mp\_utility::clearlowermessage("kc_info");
}
thread maps\mp\gametypes\_spectating::setspectatepermissions();
self notify("killcam_ended");
if(!param_00)
{
return;
}
self.sessionstate = "dead";
maps\mp\_utility::func_2B28();
}
//Function Number: 16
cancelkillcamonuse()
{
self.cancelkillcam = 0;
thread func_2BB5(::func_2BB1,::func_2BB3);
}
//Function Number: 17
func_2BB1()
{
return self usebuttonpressed();
}
//Function Number: 18
cancelkillcamsafespawnbutton()
{
return self fragbuttonpressed();
}
//Function Number: 19
func_2BB3()
{
self.cancelkillcam = 1;
}
//Function Number: 20
func_2BB4()
{
self.cancelkillcam = 1;
self.wantsafespawn = 1;
}
//Function Number: 21
func_2BB5(param_00,param_01)
{
self endon("death_delay_finished");
self endon("disconnect");
level endon("game_ended");
for(;;)
{
if(!self [[ param_00 ]]())
{
wait 0.05;
continue;
}
var_02 = 0;
while(self [[ param_00 ]]())
{
var_02 = var_02 + 0.05;
wait 0.05;
}
if(var_02 >= 0.5)
{
continue;
}
var_02 = 0;
while(!self [[ param_00 ]]() && var_02 < 0.5)
{
var_02 = var_02 + 0.05;
wait 0.05;
}
if(var_02 >= 0.5)
{
continue;
}
self [[ param_01 ]]();
}
}
//Function Number: 22
initkcelements()
{
if(!isdefined(self.kc_skiptext))
{
self.kc_skiptext = newclienthudelem(self);
self.kc_skiptext.archived = 0;
self.kc_skiptext.x = 0;
self.kc_skiptext.alignx = "center";
self.kc_skiptext.aligny = "top";
self.kc_skiptext.horzalign = "center_adjustable";
self.kc_skiptext.vertalign = "top_adjustable";
self.kc_skiptext.sort = 1;
self.kc_skiptext.font = "default";
self.kc_skiptext.foreground = 1;
self.kc_skiptext.hidewheninmenu = 1;
if(level.splitscreen || self issplitscreenplayer())
{
self.kc_skiptext.y = 20;
self.kc_skiptext.fontscale = 1.2;
}
else
{
self.kc_skiptext.y = 32;
self.kc_skiptext.fontscale = 1.8;
}
}
if(!isdefined(self.kc_othertext))
{
self.kc_othertext = newclienthudelem(self);
self.kc_othertext.archived = 0;
self.kc_othertext.y = 18;
self.kc_othertext.alignx = "left";
self.kc_othertext.aligny = "top";
self.kc_othertext.horzalign = "center";
self.kc_othertext.vertalign = "middle";
self.kc_othertext.sort = 10;
self.kc_othertext.font = "small";
self.kc_othertext.foreground = 1;
self.kc_othertext.hidewheninmenu = 1;
if(level.splitscreen)
{
self.kc_othertext.x = 16;
self.kc_othertext.fontscale = 1.2;
}
else
{
self.kc_othertext.x = 62;
self.kc_othertext.fontscale = 1.6;
}
}
if(!isdefined(self.kc_icon))
{
self.kc_icon = newclienthudelem(self);
self.kc_icon.archived = 0;
self.kc_icon.x = 16;
self.kc_icon.y = 16;
self.kc_icon.alignx = "left";
self.kc_icon.aligny = "top";
self.kc_icon.horzalign = "center";
self.kc_icon.vertalign = "middle";
self.kc_icon.sort = 1;
self.kc_icon.foreground = 1;
self.kc_icon.hidewheninmenu = 1;
}
if(!level.splitscreen || self issplitscreenplayer())
{
if(!isdefined(self.kc_timer))
{
self.kc_timer = maps\mp\gametypes\_hud_util::createfontstring("hudbig",1);
self.kc_timer.archived = 0;
self.kc_timer.x = 0;
self.kc_timer.alignx = "center";
self.kc_timer.aligny = "middle";
self.kc_timer.horzalign = "center_safearea";
self.kc_timer.vertalign = "top_adjustable";
self.kc_timer.y = 42;
self.kc_timer.sort = 1;
self.kc_timer.font = "hudbig";
self.kc_timer.foreground = 1;
self.kc_timer.color = (0.85,0.85,0.85);
self.kc_timer.hidewheninmenu = 1;
}
}
}

View File

@ -0,0 +1,594 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_menus.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 15
* Decompile Time: 222 ms
* Timestamp: 10/27/2023 2:25:36 AM
*******************************************************************/
//Function Number: 1
init()
{
if(!isdefined(game["gamestarted"]))
{
game["menu_team"] = "team_marinesopfor";
game["menu_class_allies"] = "class_marines";
game["menu_changeclass_allies"] = "changeclass_marines";
game["menu_initteam_allies"] = "initteam_marines";
game["menu_class_axis"] = "class_opfor";
game["menu_changeclass_axis"] = "changeclass_opfor";
game["menu_initteam_axis"] = "initteam_opfor";
game["menu_class"] = "class";
game["menu_changeclass"] = "changeclass";
game["menu_controls"] = "ingame_controls";
if(!level.console)
{
game["menu_muteplayer"] = "muteplayer";
precachemenu(game["menu_muteplayer"]);
}
else
{
game["menu_leavegame"] = "popup_leavegame";
if(level.splitscreen)
{
game["menu_team"] = game["menu_team"] + "_splitscreen";
game["menu_class_allies"] = game["menu_class_allies"] + "_splitscreen";
game["menu_changeclass_allies"] = game["menu_changeclass_allies"] + "_splitscreen";
game["menu_class_axis"] = game["menu_class_axis"] + "_splitscreen";
game["menu_changeclass_axis"] = game["menu_changeclass_axis"] + "_splitscreen";
game["menu_class"] = game["menu_class"] + "_splitscreen";
game["menu_controls"] = game["menu_controls"] + "_splitscreen";
game["menu_leavegame"] = game["menu_leavegame"] + "_splitscreen";
game["menu_changeclass_defaults_splitscreen"] = "changeclass_splitscreen_defaults";
game["menu_changeclass_custom_splitscreen"] = "changeclass_splitscreen_custom";
precachemenu(game["menu_changeclass_defaults_splitscreen"]);
precachemenu(game["menu_changeclass_custom_splitscreen"]);
}
precachemenu(game["menu_controls"]);
precachemenu(game["menu_leavegame"]);
}
precachemenu("scoreboard");
precachemenu(game["menu_team"]);
precachemenu(game["menu_class_allies"]);
precachemenu(game["menu_changeclass_allies"]);
precachemenu(game["menu_initteam_allies"]);
precachemenu(game["menu_class_axis"]);
precachemenu(game["menu_changeclass_axis"]);
precachemenu(game["menu_class"]);
precachemenu(game["menu_changeclass"]);
precachemenu(game["menu_initteam_axis"]);
precachestring(&"MP_HOST_ENDED_GAME");
precachestring(&"MP_HOST_ENDGAME_RESPONSE");
}
level thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread func_2AD3();
}
}
//Function Number: 3
func_2AD2(param_00)
{
if(param_00 == game["menu_changeclass"])
{
return 1;
}
if(param_00 == game["menu_team"])
{
return 1;
}
if(param_00 == game["menu_controls"])
{
return 1;
}
if(issubstr(param_00,"pc_options"))
{
return 1;
}
return 0;
}
//Function Number: 4
func_2AD3()
{
self endon("disconnect");
for(;;)
{
self waittill("menuresponse",var_00,var_01);
if(var_01 == "back")
{
if(var_00 != game["menu_team"] || self.pers["team"] != "spectator" || maps\mp\gametypes\_tweakables::func_270D("game","spectatetype") != 0)
{
self closepopupmenu();
self closeingamemenu();
if(func_2AD2(var_00))
{
if(self.pers["team"] == "allies")
{
self openpopupmenu(game["menu_class_allies"]);
}
if(self.pers["team"] == "axis")
{
self openpopupmenu(game["menu_class_axis"]);
}
}
}
continue;
}
if(var_01 == "changeteam")
{
self closepopupmenu();
self closeingamemenu();
self openpopupmenu(game["menu_team"]);
}
if(var_01 == "changeclass_marines")
{
self closepopupmenu();
self closeingamemenu();
self openpopupmenu(game["menu_changeclass_allies"]);
continue;
}
if(var_01 == "changeclass_opfor")
{
self closepopupmenu();
self closeingamemenu();
self openpopupmenu(game["menu_changeclass_axis"]);
continue;
}
if(var_01 == "changeclass_marines_splitscreen")
{
self openpopupmenu("changeclass_marines_splitscreen");
}
if(var_01 == "changeclass_opfor_splitscreen")
{
self openpopupmenu("changeclass_opfor_splitscreen");
}
if(var_01 == "endgame")
{
if(level.splitscreen)
{
endparty();
if(!level.gameended)
{
level thread maps\mp\gametypes\_gamelogic::forceend();
}
}
continue;
}
if(var_01 == "endround")
{
if(!level.gameended)
{
level thread maps\mp\gametypes\_gamelogic::forceend();
}
else
{
self closepopupmenu();
self closeingamemenu();
self iprintln(&"MP_HOST_ENDGAME_RESPONSE");
}
continue;
}
if(var_00 == game["menu_team"])
{
switch(var_01)
{
case "allies":
self [[ level.allies ]]();
break;
case "axis":
self [[ level.axis ]]();
break;
case "autoassign":
self [[ level.autoassign ]]();
break;
case "spectator":
self [[ level.spectator ]]();
break;
}
continue;
}
if(var_00 == game["menu_changeclass"] || isdefined(game["menu_changeclass_defaults_splitscreen"]) && var_00 == game["menu_changeclass_defaults_splitscreen"] || isdefined(game["menu_changeclass_custom_splitscreen"]) && var_00 == game["menu_changeclass_custom_splitscreen"])
{
self closepopupmenu();
self closeingamemenu();
self.selectedclass = 1;
self [[ level.class ]](var_01);
continue;
}
if(!level.console)
{
if(var_00 == game["menu_quickcommands"])
{
maps\mp\gametypes\_quickmessages::quickcommands(var_01);
continue;
}
if(var_00 == game["menu_quickstatements"])
{
maps\mp\gametypes\_quickmessages::quickstatements(var_01);
continue;
}
if(var_00 == game["menu_quickresponses"])
{
maps\mp\gametypes\_quickmessages::func_2ACB(var_01);
}
}
}
}
//Function Number: 5
getteamassignment()
{
var_00[0] = "allies";
if(!level.teambased)
{
return var_41[randomint(2)];
}
if(self.sessionteam != "none" && self.sessionteam != "spectator" && self.sessionstate != "playing" && self.sessionstate != "dead")
{
var_01 = self.sessionteam;
}
else
{
var_02 = maps\mp\gametypes\_teams::func_2764();
if(var_02["allies"] == var_02["axis"])
{
if(getteamscore("allies") == getteamscore("axis"))
{
var_01 = var_41[randomint(2)];
}
else if(getteamscore("allies") < getteamscore("axis"))
{
var_01 = "allies";
}
else
{
var_01 = "axis";
}
}
else if(var_02["allies"] < var_02["axis"])
{
var_01 = "allies";
}
else
{
var_01 = "axis";
}
}
return var_01;
}
//Function Number: 6
menuautoassign()
{
maps\mp\_utility::closemenus();
var_00 = getteamassignment();
if(isdefined(self.pers["team"]) && self.sessionstate == "playing" || self.sessionstate == "dead")
{
if(var_00 == self.pers["team"])
{
beginclasschoice();
return;
}
else
{
self.switching_teams = 1;
self.joining_team = var_00;
self.leaving_team = self.pers["team"];
self suicide();
}
}
func_2AF3(var_00);
self.pers["class"] = undefined;
self.class = undefined;
if(!isalive(self))
{
self.statusicon = "hud_status_dead";
}
self notify("end_respawn");
beginclasschoice();
}
//Function Number: 7
beginclasschoice(param_00)
{
var_01 = self.pers["team"];
if(maps\mp\_utility::allowclasschoice())
{
self openpopupmenu(game["menu_changeclass_" + var_01]);
}
else
{
thread func_2AE2();
}
if(!isalive(self))
{
thread maps\mp\gametypes\_playerlogic::predictabouttospawnplayerovertime(0.1);
}
}
//Function Number: 8
func_2AE2()
{
self.selectedclass = 1;
self [[ level.class ]]("class0");
}
//Function Number: 9
func_2AE3()
{
self openpopupmenu(game["menu_team"]);
}
//Function Number: 10
func_2AE4()
{
var_00 = self.pers["team"];
self openpopupmenu(game["menu_class_" + var_00]);
}
//Function Number: 11
menuallies()
{
maps\mp\_utility::closemenus();
if(self.pers["team"] != "allies")
{
if(level.teambased && !maps\mp\gametypes\_teams::getjointeampermissions("allies"))
{
self openpopupmenu(game["menu_team"]);
return;
}
if(level.ingraceperiod && !self.hasdonecombat)
{
self.hasspawned = 0;
}
if(self.sessionstate == "playing")
{
self.switching_teams = 1;
self.joining_team = "allies";
self.leaving_team = self.pers["team"];
self suicide();
}
func_2AF3("allies");
self.pers["class"] = undefined;
self.class = undefined;
self notify("end_respawn");
}
beginclasschoice();
}
//Function Number: 12
func_2AE7()
{
maps\mp\_utility::closemenus();
if(self.pers["team"] != "axis")
{
if(level.teambased && !maps\mp\gametypes\_teams::getjointeampermissions("axis"))
{
self openpopupmenu(game["menu_team"]);
return;
}
if(level.ingraceperiod && !self.hasdonecombat)
{
self.hasspawned = 0;
}
if(self.sessionstate == "playing")
{
self.switching_teams = 1;
self.joining_team = "axis";
self.leaving_team = self.pers["team"];
self suicide();
}
func_2AF3("axis");
self.pers["class"] = undefined;
self.class = undefined;
self notify("end_respawn");
}
beginclasschoice();
}
//Function Number: 13
func_2AE8()
{
maps\mp\_utility::closemenus();
if(isdefined(self.pers["team"]) && self.pers["team"] == "spectator")
{
return;
}
if(isalive(self))
{
self.switching_teams = 1;
self.joining_team = "spectator";
self.leaving_team = self.pers["team"];
self suicide();
}
func_2AF3("spectator");
self.pers["class"] = undefined;
self.class = undefined;
thread maps\mp\gametypes\_playerlogic::func_2AE9();
}
//Function Number: 14
func_2AEA(param_00)
{
maps\mp\_utility::closemenus();
if(param_00 == "demolitions_mp,0" && self getplayerdata("featureNew","demolitions"))
{
self setplayerdata("featureNew","demolitions",0);
}
if(param_00 == "sniper_mp,0" && self getplayerdata("featureNew","sniper"))
{
self setplayerdata("featureNew","sniper",0);
}
if(!isdefined(self.pers["team"]) || self.pers["team"] != "allies" && self.pers["team"] != "axis")
{
return;
}
var_01 = maps\mp\gametypes\_class::getclasschoice(param_00);
var_02 = maps\mp\gametypes\_class::func_2AEC(param_00);
if(var_01 == "restricted")
{
beginclasschoice();
return;
}
if(isdefined(self.pers["class"]) && self.pers["class"] == var_01 && isdefined(self.pers["primary"]) && self.pers["primary"] == var_02)
{
return;
}
if(self.sessionstate == "playing")
{
if(isdefined(self.pers["lastClass"]) && isdefined(self.pers["class"]))
{
self.pers["lastClass"] = self.pers["class"];
self.lastclass = self.pers["lastClass"];
}
self.pers["class"] = var_01;
self.class = var_01;
self.pers["primary"] = var_02;
if(game["state"] == "postgame")
{
return;
}
if(level.ingraceperiod && !self.hasdonecombat)
{
maps\mp\gametypes\_class::func_2AEE(self.pers["class"]);
self.tag_stowed_back = undefined;
self.tag_stowed_hip = undefined;
maps\mp\gametypes\_class::func_2A52(self.pers["team"],self.pers["class"]);
}
else
{
self iprintlnbold(game["strings"]["change_class"]);
}
}
else
{
if(isdefined(self.pers["lastClass"]) && isdefined(self.pers["class"]))
{
self.pers["lastClass"] = self.pers["class"];
self.lastclass = self.pers["lastClass"];
}
self.pers["class"] = var_01;
self.class = var_01;
self.pers["primary"] = var_02;
if(game["state"] == "postgame")
{
return;
}
if(game["state"] == "playing" && !maps\mp\_utility::func_2AF1())
{
thread maps\mp\gametypes\_playerlogic::spawnclient();
}
}
thread maps\mp\gametypes\_spectating::setspectatepermissions();
}
//Function Number: 15
func_2AF3(param_00,param_01)
{
if(isdefined(self.team))
{
maps\mp\gametypes\_playerlogic::removefromteamcount();
}
self.pers["team"] = param_00;
self.team = param_00;
if(!maps\mp\_utility::matchmakinggame() || isdefined(self.pers["isBot"]) || !maps\mp\_utility::allowteamchoice())
{
if(level.teambased)
{
self.sessionteam = param_00;
}
else if(param_00 == "spectator")
{
self.sessionteam = "spectator";
}
else
{
self.sessionteam = "none";
}
}
if(game["state"] != "postgame")
{
maps\mp\gametypes\_playerlogic::addtoteamcount();
}
maps\mp\_utility::updateobjectivetext();
if(isdefined(param_01) && param_01)
{
waittillframeend;
}
maps\mp\_utility::func_2AF8();
if(param_00 == "spectator")
{
self notify("joined_spectators");
level notify("joined_team");
return;
}
self notify("joined_team");
level notify("joined_team");
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,536 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_music_and_dialog.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 11
* Decompile Time: 165 ms
* Timestamp: 10/27/2023 2:25:41 AM
*******************************************************************/
//Function Number: 1
init()
{
game["music"]["spawn_allies"] = maps\mp\gametypes\_teams::getteamvoiceprefix("allies") + "spawn_music";
game["music"]["defeat_allies"] = maps\mp\gametypes\_teams::getteamvoiceprefix("allies") + "defeat_music";
game["music"]["victory_allies"] = maps\mp\gametypes\_teams::getteamvoiceprefix("allies") + "victory_music";
game["music"]["winning_allies"] = maps\mp\gametypes\_teams::getteamvoiceprefix("allies") + "winning_music";
game["music"]["losing_allies"] = maps\mp\gametypes\_teams::getteamvoiceprefix("allies") + "losing_music";
game["voice"]["allies"] = maps\mp\gametypes\_teams::getteamvoiceprefix("allies") + "1mc_";
game["music"]["spawn_axis"] = maps\mp\gametypes\_teams::getteamvoiceprefix("axis") + "spawn_music";
game["music"]["defeat_axis"] = maps\mp\gametypes\_teams::getteamvoiceprefix("axis") + "defeat_music";
game["music"]["victory_axis"] = maps\mp\gametypes\_teams::getteamvoiceprefix("axis") + "victory_music";
game["music"]["winning_axis"] = maps\mp\gametypes\_teams::getteamvoiceprefix("axis") + "winning_music";
game["music"]["losing_axis"] = maps\mp\gametypes\_teams::getteamvoiceprefix("axis") + "losing_music";
game["voice"]["axis"] = maps\mp\gametypes\_teams::getteamvoiceprefix("axis") + "1mc_";
game["music"]["losing_time"] = "mp_time_running_out_losing";
game["music"]["suspense"] = [];
game["music"]["suspense"][game["music"]["suspense"].size] = "mp_suspense_01";
game["music"]["suspense"][game["music"]["suspense"].size] = "mp_suspense_02";
game["music"]["suspense"][game["music"]["suspense"].size] = "mp_suspense_03";
game["music"]["suspense"][game["music"]["suspense"].size] = "mp_suspense_04";
game["music"]["suspense"][game["music"]["suspense"].size] = "mp_suspense_05";
game["music"]["suspense"][game["music"]["suspense"].size] = "mp_suspense_06";
game["dialog"]["mission_success"] = "mission_success";
game["dialog"]["mission_failure"] = "mission_fail";
game["dialog"]["mission_draw"] = "draw";
game["dialog"]["round_success"] = "encourage_win";
game["dialog"]["round_failure"] = "encourage_lost";
game["dialog"]["round_draw"] = "draw";
game["dialog"]["timesup"] = "timesup";
game["dialog"]["winning_time"] = "winning";
game["dialog"]["losing_time"] = "losing";
game["dialog"]["winning_score"] = "winning_fight";
game["dialog"]["losing_score"] = "losing_fight";
game["dialog"]["lead_lost"] = "lead_lost";
game["dialog"]["lead_tied"] = "tied";
game["dialog"]["lead_taken"] = "lead_taken";
game["dialog"]["last_alive"] = "lastalive";
game["dialog"]["boost"] = "boost";
if(!isdefined(game["dialog"]["offense_obj"]))
{
game["dialog"]["offense_obj"] = "boost";
}
if(!isdefined(game["dialog"]["defense_obj"]))
{
game["dialog"]["defense_obj"] = "boost";
}
game["dialog"]["hardcore"] = "hardcore";
game["dialog"]["highspeed"] = "highspeed";
game["dialog"]["tactical"] = "tactical";
game["dialog"]["challenge"] = "challengecomplete";
game["dialog"]["promotion"] = "promotion";
game["dialog"]["bomb_taken"] = "acheive_bomb";
game["dialog"]["bomb_lost"] = "bomb_taken";
game["dialog"]["bomb_defused"] = "bomb_defused";
game["dialog"]["bomb_planted"] = "bomb_planted";
game["dialog"]["obj_taken"] = "securedobj";
game["dialog"]["obj_lost"] = "lostobj";
game["dialog"]["obj_defend"] = "obj_defend";
game["dialog"]["obj_destroy"] = "obj_destroy";
game["dialog"]["obj_capture"] = "capture_obj";
game["dialog"]["objs_capture"] = "capture_objs";
game["dialog"]["hq_located"] = "hq_located";
game["dialog"]["hq_enemy_captured"] = "hq_captured";
game["dialog"]["hq_enemy_destroyed"] = "hq_destroyed";
game["dialog"]["hq_secured"] = "hq_secured";
game["dialog"]["hq_offline"] = "hq_offline";
game["dialog"]["hq_online"] = "hq_online";
game["dialog"]["move_to_new"] = "new_positions";
game["dialog"]["push_forward"] = "pushforward";
game["dialog"]["attack"] = "attack";
game["dialog"]["defend"] = "defend";
game["dialog"]["offense"] = "offense";
game["dialog"]["defense"] = "defense";
game["dialog"]["halftime"] = "halftime";
game["dialog"]["overtime"] = "overtime";
game["dialog"]["side_switch"] = "switching";
game["dialog"]["flag_taken"] = "ourflag";
game["dialog"]["flag_dropped"] = "ourflag_drop";
game["dialog"]["flag_returned"] = "ourflag_return";
game["dialog"]["flag_captured"] = "ourflag_capt";
game["dialog"]["flag_getback"] = "getback_ourflag";
game["dialog"]["enemy_flag_bringhome"] = "enemyflag_tobase";
game["dialog"]["enemy_flag_taken"] = "enemyflag";
game["dialog"]["enemy_flag_dropped"] = "enemyflag_drop";
game["dialog"]["enemy_flag_returned"] = "enemyflag_return";
game["dialog"]["enemy_flag_captured"] = "enemyflag_capt";
game["dialog"]["got_flag"] = "achieve_flag";
game["dialog"]["dropped_flag"] = "lost_flag";
game["dialog"]["enemy_got_flag"] = "enemy_has_flag";
game["dialog"]["enemy_dropped_flag"] = "enemy_dropped_flag";
game["dialog"]["capturing_a"] = "capturing_a";
game["dialog"]["capturing_b"] = "capturing_b";
game["dialog"]["capturing_c"] = "capturing_c";
game["dialog"]["captured_a"] = "capture_a";
game["dialog"]["captured_b"] = "capture_c";
game["dialog"]["captured_c"] = "capture_b";
game["dialog"]["securing_a"] = "securing_a";
game["dialog"]["securing_b"] = "securing_b";
game["dialog"]["securing_c"] = "securing_c";
game["dialog"]["secured_a"] = "secure_a";
game["dialog"]["secured_b"] = "secure_b";
game["dialog"]["secured_c"] = "secure_c";
game["dialog"]["losing_a"] = "losing_a";
game["dialog"]["losing_b"] = "losing_b";
game["dialog"]["losing_c"] = "losing_c";
game["dialog"]["lost_a"] = "lost_a";
game["dialog"]["lost_b"] = "lost_b";
game["dialog"]["lost_c"] = "lost_c";
game["dialog"]["enemy_taking_a"] = "enemy_take_a";
game["dialog"]["enemy_taking_b"] = "enemy_take_b";
game["dialog"]["enemy_taking_c"] = "enemy_take_c";
game["dialog"]["enemy_has_a"] = "enemy_has_a";
game["dialog"]["enemy_has_b"] = "enemy_has_b";
game["dialog"]["enemy_has_c"] = "enemy_has_c";
game["dialog"]["lost_all"] = "take_positions";
game["dialog"]["secure_all"] = "positions_lock";
game["dialog"]["destroy_sentry"] = "dest_sentrygun";
game["music"]["nuke_music"] = "nuke_music";
game["dialog"]["sentry_gone"] = "sentry_gone";
game["dialog"]["sentry_destroyed"] = "sentry_destroyed";
game["dialog"]["ti_gone"] = "ti_cancelled";
game["dialog"]["ti_destroyed"] = "ti_blocked";
game["dialog"]["ims_destroyed"] = "ims_destroyed";
game["dialog"]["lbguard_destroyed"] = "lbguard_destroyed";
game["dialog"]["ballistic_vest_destroyed"] = "ballistic_vest_destroyed";
game["dialog"]["remote_sentry_destroyed"] = "remote_sentry_destroyed";
game["dialog"]["sam_destroyed"] = "sam_destroyed";
game["dialog"]["sam_gone"] = "sam_gone";
level thread onplayerconnect();
level thread onlastalive();
level thread func_2D6D();
level thread func_2D67();
level thread func_2D66();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread onplayerspawned();
var_00 thread finalkillcammusic();
}
}
//Function Number: 3
onplayerspawned()
{
self endon("disconnect");
self waittill("spawned_player");
if(!level.splitscreen || level.splitscreen && !isdefined(level.playedstartingmusic))
{
if(!self issplitscreenplayer() || self issplitscreenplayerprimary())
{
self playlocalsound(game["music"]["spawn_" + self.team]);
}
if(level.splitscreen)
{
level.playedstartingmusic = 1;
}
}
if(isdefined(game["dialog"]["gametype"]) && !level.splitscreen || self == level.players[0])
{
if(isdefined(game["dialog"]["allies_gametype"]) && self.team == "allies")
{
maps\mp\_utility::func_2A60("allies_gametype");
}
else if(isdefined(game["dialog"]["axis_gametype"]) && self.team == "axis")
{
maps\mp\_utility::func_2A60("axis_gametype");
}
else if(!self issplitscreenplayer() || self issplitscreenplayerprimary())
{
maps\mp\_utility::func_2A60("gametype");
}
}
maps\mp\_utility::func_274B("prematch_done");
if(self.team == game["attackers"])
{
if(!self issplitscreenplayer() || self issplitscreenplayerprimary())
{
maps\mp\_utility::func_2A60("offense_obj","introboost");
return;
}
return;
}
if(!self issplitscreenplayer() || self issplitscreenplayerprimary())
{
maps\mp\_utility::func_2A60("defense_obj","introboost");
}
}
//Function Number: 4
onlastalive()
{
level endon("game_ended");
level waittill("last_alive",var_00);
if(!isalive(var_00))
{
return;
}
var_00 maps\mp\_utility::func_2A60("last_alive");
}
//Function Number: 5
func_2D66()
{
level waittill("round_switch",var_00);
switch(var_00)
{
case "halftime":
foreach(var_02 in level.players)
{
if(var_02 issplitscreenplayer() && !var_02 issplitscreenplayerprimary())
{
continue;
}
var_02 maps\mp\_utility::func_2A60("halftime");
}
break;
case "overtime":
foreach(var_02 in level.players)
{
if(var_02 issplitscreenplayer() && !var_02 issplitscreenplayerprimary())
{
continue;
}
var_02 maps\mp\_utility::func_2A60("overtime");
}
break;
default:
foreach(var_02 in level.players)
{
if(var_02 issplitscreenplayer() && !var_02 issplitscreenplayerprimary())
{
continue;
}
var_02 maps\mp\_utility::func_2A60("side_switch");
}
break;
}
}
//Function Number: 6
func_2D67()
{
level thread func_2D69();
level thread gamewinnerdialog();
level waittill("game_win",var_00);
if(level.teambased)
{
if(level.splitscreen)
{
if(var_00 == "allies")
{
maps\mp\_utility::func_2D68(game["music"]["victory_allies"],"allies");
return;
}
if(var_00 == "axis")
{
maps\mp\_utility::func_2D68(game["music"]["victory_axis"],"axis");
return;
}
maps\mp\_utility::func_2D68(game["music"]["nuke_music"]);
return;
}
if(var_00 == "allies")
{
maps\mp\_utility::func_2D68(game["music"]["victory_allies"],"allies");
maps\mp\_utility::func_2D68(game["music"]["defeat_axis"],"axis");
return;
}
if(var_00 == "axis")
{
maps\mp\_utility::func_2D68(game["music"]["victory_axis"],"axis");
maps\mp\_utility::func_2D68(game["music"]["defeat_allies"],"allies");
return;
}
maps\mp\_utility::func_2D68(game["music"]["nuke_music"]);
return;
}
foreach(var_02 in level.players)
{
if(var_02 issplitscreenplayer() && !var_02 issplitscreenplayerprimary())
{
continue;
}
if(var_02.pers["team"] != "allies" && var_02.pers["team"] != "axis")
{
var_02 playlocalsound(game["music"]["nuke_music"]);
continue;
}
if(isdefined(var_00) && isplayer(var_00) && var_02 == var_00)
{
var_02 playlocalsound(game["music"]["victory_" + var_02.pers["team"]]);
continue;
}
if(!level.splitscreen)
{
var_02 playlocalsound(game["music"]["defeat_" + var_02.pers["team"]]);
}
}
}
//Function Number: 7
func_2D69()
{
level waittill("round_win",var_00);
var_01 = level.roundenddelay / 4;
if(var_01 > 0)
{
wait var_01;
}
if(!isdefined(var_00) || isplayer(var_00))
{
return;
}
if(var_00 == "allies")
{
maps\mp\_utility::func_26E5("round_success","allies");
maps\mp\_utility::func_26E5("round_failure","axis");
return;
}
if(var_00 == "axis")
{
maps\mp\_utility::func_26E5("round_success","axis");
maps\mp\_utility::func_26E5("round_failure","allies");
}
}
//Function Number: 8
gamewinnerdialog()
{
level waittill("game_win",var_00);
var_01 = level.postroundtime / 2;
if(var_01 > 0)
{
wait var_01;
}
if(!isdefined(var_00) || isplayer(var_00))
{
return;
}
if(var_00 == "allies")
{
maps\mp\_utility::func_26E5("mission_success","allies");
maps\mp\_utility::func_26E5("mission_failure","axis");
return;
}
if(var_00 == "axis")
{
maps\mp\_utility::func_26E5("mission_success","axis");
maps\mp\_utility::func_26E5("mission_failure","allies");
return;
}
maps\mp\_utility::func_26E5("mission_draw");
}
//Function Number: 9
func_2D6D()
{
level endon("game_ended");
if(!level.hardcoremode)
{
thread suspensemusic();
}
level waittill("match_ending_soon",var_00);
if(maps\mp\_utility::func_18D0("roundlimit") == 1 || game["roundsPlayed"] == maps\mp\_utility::func_18D0("roundlimit") - 1)
{
if(!level.splitscreen)
{
if(var_00 == "time")
{
if(level.teambased)
{
if(game["teamScores"]["allies"] > game["teamScores"]["axis"])
{
if(!level.hardcoremode)
{
maps\mp\_utility::func_2D68(game["music"]["winning_allies"],"allies");
maps\mp\_utility::func_2D68(game["music"]["losing_axis"],"axis");
}
maps\mp\_utility::func_26E5("winning_time","allies");
maps\mp\_utility::func_26E5("losing_time","axis");
}
else if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
{
if(!level.hardcoremode)
{
maps\mp\_utility::func_2D68(game["music"]["winning_axis"],"axis");
maps\mp\_utility::func_2D68(game["music"]["losing_allies"],"allies");
}
maps\mp\_utility::func_26E5("winning_time","axis");
maps\mp\_utility::func_26E5("losing_time","allies");
}
}
else
{
if(!level.hardcoremode)
{
maps\mp\_utility::func_2D68(game["music"]["losing_time"]);
}
maps\mp\_utility::func_26E5("timesup");
}
}
else if(var_00 == "score")
{
if(level.teambased)
{
if(game["teamScores"]["allies"] > game["teamScores"]["axis"])
{
if(!level.hardcoremode)
{
maps\mp\_utility::func_2D68(game["music"]["winning_allies"],"allies");
maps\mp\_utility::func_2D68(game["music"]["losing_axis"],"axis");
}
maps\mp\_utility::func_26E5("winning_score","allies");
maps\mp\_utility::func_26E5("losing_score","axis");
}
else if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
{
if(!level.hardcoremode)
{
maps\mp\_utility::func_2D68(game["music"]["winning_axis"],"axis");
maps\mp\_utility::func_2D68(game["music"]["losing_allies"],"allies");
}
maps\mp\_utility::func_26E5("winning_score","axis");
maps\mp\_utility::func_26E5("losing_score","allies");
}
}
else
{
var_01 = maps\mp\gametypes\_gamescore::func_26D0();
var_02 = maps\mp\gametypes\_gamescore::getlosingplayers();
var_03[0] = var_01;
if(!level.hardcoremode)
{
var_01 playlocalsound(game["music"]["winning_" + var_01.pers["team"]]);
foreach(var_05 in level.players)
{
if(var_05 == var_01)
{
continue;
}
var_05 playlocalsound(game["music"]["losing_" + var_05.pers["team"]]);
}
}
var_01 maps\mp\_utility::func_2A60("winning_score");
maps\mp\_utility::func_2D6E("losing_score",var_02);
}
}
level waittill("match_ending_very_soon");
maps\mp\_utility::func_26E5("timesup");
return;
}
return;
}
if(!level.hardcoremode)
{
maps\mp\_utility::func_2D68(game["music"]["losing_allies"]);
}
maps\mp\_utility::func_26E5("timesup");
}
//Function Number: 10
suspensemusic()
{
level endon("game_ended");
level endon("match_ending_soon");
var_00 = game["music"]["suspense"].size;
wait 120;
for(;;)
{
wait randomfloatrange(60,120);
maps\mp\_utility::func_2D68(game["music"]["suspense"][randomint(var_00)]);
}
}
//Function Number: 11
finalkillcammusic()
{
self waittill("showing_final_killcam");
}

View File

@ -0,0 +1,184 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_objpoints.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 9
* Decompile Time: 135 ms
* Timestamp: 10/27/2023 2:25:42 AM
*******************************************************************/
//Function Number: 1
init()
{
precacheshader("objpoint_default");
level.objpointnames = [];
level.objpoints = [];
if(level.splitscreen)
{
level.objpointsize = 15;
}
else
{
level.objpointsize = 8;
}
level.objpoint_alpha_default = 0.5;
level.objpointscale = 1;
}
//Function Number: 2
func_2996(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = func_299C(param_00);
if(isdefined(var_06))
{
deleteobjpoint(var_06);
}
if(!isdefined(param_03))
{
param_03 = "objpoint_default";
}
if(!isdefined(param_05))
{
param_05 = 1;
}
if(param_02 != "all")
{
var_06 = newteamhudelem(param_02);
}
else
{
var_06 = newhudelem();
}
var_06.name = param_00;
var_06.x = param_01[0];
var_06.y = param_01[1];
var_06.z = param_01[2];
var_06.team = param_02;
var_06.isflashing = 0;
var_06.isshown = 1;
var_06 setshader(param_03,level.objpointsize,level.objpointsize);
var_06 setwaypoint(1,0);
if(isdefined(param_04))
{
var_06.alpha = param_04;
}
else
{
var_06.alpha = level.objpoint_alpha_default;
}
var_06.basealpha = var_06.alpha;
var_06.index = level.objpointnames.size;
level.objpoints[param_00] = var_06;
level.objpointnames[level.objpointnames.size] = param_00;
return var_06;
}
//Function Number: 3
deleteobjpoint(param_00)
{
if(level.objpoints.size == 1)
{
level.objpoints = [];
level.objpointnames = [];
param_00 destroy();
return;
}
var_01 = param_00.index;
var_02 = level.objpointnames.size - 1;
var_03 = getobjpointbyindex(var_02);
level.objpointnames[var_01] = var_03.name;
var_03.index = var_01;
level.objpointnames[var_02] = undefined;
level.objpoints[param_00.name] = undefined;
param_00 destroy();
}
//Function Number: 4
updateorigin(param_00)
{
if(self.x != param_00[0])
{
self.x = param_00[0];
}
if(self.y != param_00[1])
{
self.y = param_00[1];
}
if(self.z != param_00[2])
{
self.z = param_00[2];
}
}
//Function Number: 5
setoriginbyname(param_00,param_01)
{
var_02 = func_299C(param_00);
var_02 updateorigin(param_01);
}
//Function Number: 6
func_299C(param_00)
{
if(isdefined(level.objpoints[param_00]))
{
return level.objpoints[param_00];
}
return undefined;
}
//Function Number: 7
getobjpointbyindex(param_00)
{
if(isdefined(level.objpointnames[param_00]))
{
return level.objpoints[level.objpointnames[param_00]];
}
return undefined;
}
//Function Number: 8
startflashing()
{
self endon("stop_flashing_thread");
if(self.isflashing)
{
return;
}
self.isflashing = 1;
while(self.isflashing)
{
self fadeovertime(0.75);
self.alpha = 0.35 * self.basealpha;
wait 0.75;
self fadeovertime(0.75);
self.alpha = self.basealpha;
wait 0.75;
}
self.alpha = self.basealpha;
}
//Function Number: 9
stopflashing()
{
if(!self.isflashing)
{
return;
}
self.isflashing = 0;
}

View File

@ -0,0 +1,566 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_persistance.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 22
* Decompile Time: 307 ms
* Timestamp: 10/27/2023 2:25:43 AM
*******************************************************************/
//Function Number: 1
init()
{
level.persistentdatainfo = [];
maps\mp\gametypes\_class::init();
maps\mp\gametypes\_rank::init();
maps\mp\gametypes\_missions::init();
maps\mp\gametypes\_playercards::init();
level thread func_32DD();
level thread func_32DF();
}
//Function Number: 2
initbufferedstats()
{
self.bufferedstats = [];
self.bufferedstats["totalShots"] = self getplayerdata("totalShots");
self.bufferedstats["accuracy"] = self getplayerdata("accuracy");
self.bufferedstats["misses"] = self getplayerdata("misses");
self.bufferedstats["hits"] = self getplayerdata("hits");
self.bufferedstats["timePlayedAllies"] = self getplayerdata("timePlayedAllies");
self.bufferedstats["timePlayedOpfor"] = self getplayerdata("timePlayedOpfor");
self.bufferedstats["timePlayedOther"] = self getplayerdata("timePlayedOther");
self.bufferedstats["timePlayedTotal"] = self getplayerdata("timePlayedTotal");
self.bufferedchildstats = [];
self.bufferedchildstats["round"] = [];
self.bufferedchildstats["round"]["timePlayed"] = self getplayerdata("round","timePlayed");
self.bufferedchildstats["xpMultiplierTimePlayed"] = [];
self.bufferedchildstats["xpMultiplierTimePlayed"][0] = self getplayerdata("xpMultiplierTimePlayed",0);
self.bufferedchildstats["xpMultiplierTimePlayed"][1] = self getplayerdata("xpMultiplierTimePlayed",1);
self.bufferedchildstats["xpMultiplierTimePlayed"][2] = self getplayerdata("xpMultiplierTimePlayed",2);
self.bufferedchildstatsmax["xpMaxMultiplierTimePlayed"] = [];
self.bufferedchildstatsmax["xpMaxMultiplierTimePlayed"][0] = self getplayerdata("xpMaxMultiplierTimePlayed",0);
self.bufferedchildstatsmax["xpMaxMultiplierTimePlayed"][1] = self getplayerdata("xpMaxMultiplierTimePlayed",1);
self.bufferedchildstatsmax["xpMaxMultiplierTimePlayed"][2] = self getplayerdata("xpMaxMultiplierTimePlayed",2);
self.bufferedchildstats["challengeXPMultiplierTimePlayed"] = [];
self.bufferedchildstats["challengeXPMultiplierTimePlayed"][0] = self getplayerdata("challengeXPMultiplierTimePlayed",0);
self.bufferedchildstatsmax["challengeXPMaxMultiplierTimePlayed"] = [];
self.bufferedchildstatsmax["challengeXPMaxMultiplierTimePlayed"][0] = self getplayerdata("challengeXPMaxMultiplierTimePlayed",0);
self.bufferedchildstats["weaponXPMultiplierTimePlayed"] = [];
self.bufferedchildstats["weaponXPMultiplierTimePlayed"][0] = self getplayerdata("weaponXPMultiplierTimePlayed",0);
self.bufferedchildstatsmax["weaponXPMaxMultiplierTimePlayed"] = [];
self.bufferedchildstatsmax["weaponXPMaxMultiplierTimePlayed"][0] = self getplayerdata("weaponXPMaxMultiplierTimePlayed",0);
self.bufferedstats["prestigeDoubleXp"] = self getplayerdata("prestigeDoubleXp");
self.bufferedstats["prestigeDoubleXpTimePlayed"] = self getplayerdata("prestigeDoubleXpTimePlayed");
self.bufferedstatsmax["prestigeDoubleXpMaxTimePlayed"] = self getplayerdata("prestigeDoubleXpMaxTimePlayed");
self.bufferedstats["prestigeDoubleWeaponXp"] = self getplayerdata("prestigeDoubleWeaponXp");
self.bufferedstats["prestigeDoubleWeaponXpTimePlayed"] = self getplayerdata("prestigeDoubleWeaponXpTimePlayed");
self.bufferedstatsmax["prestigeDoubleWeaponXpMaxTimePlayed"] = self getplayerdata("prestigeDoubleWeaponXpMaxTimePlayed");
}
//Function Number: 3
func_2B58(param_00)
{
return self getplayerdata(param_00);
}
//Function Number: 4
func_2CD1(param_00,param_01)
{
if(!maps\mp\_utility::rankingenabled())
{
return;
}
self setplayerdata(param_00,param_01);
}
//Function Number: 5
statadd(param_00,param_01,param_02)
{
if(!maps\mp\_utility::rankingenabled())
{
return;
}
if(isdefined(param_02))
{
var_03 = self getplayerdata(param_00,param_02);
self setplayerdata(param_00,param_02,param_01 + var_03);
return;
}
var_03 = self getplayerdata(param_01);
self setplayerdata(param_00,param_01 + var_03);
}
//Function Number: 6
statgetchild(param_00,param_01)
{
return self getplayerdata(param_00,param_01);
}
//Function Number: 7
func_26D8(param_00,param_01,param_02)
{
if(!maps\mp\_utility::rankingenabled())
{
return;
}
self setplayerdata(param_00,param_01,param_02);
}
//Function Number: 8
func_32DB(param_00,param_01,param_02)
{
if(!maps\mp\_utility::rankingenabled())
{
return;
}
var_03 = self getplayerdata(param_00,param_01);
self setplayerdata(param_00,param_01,var_03 + param_02);
}
//Function Number: 9
func_32DC(param_00,param_01)
{
return self.bufferedchildstats[param_00][param_01];
}
//Function Number: 10
statsetchildbuffered(param_00,param_01,param_02)
{
if(!maps\mp\_utility::rankingenabled())
{
return;
}
self.bufferedchildstats[param_00][param_01] = param_02;
}
//Function Number: 11
func_2750(param_00,param_01,param_02)
{
if(!maps\mp\_utility::rankingenabled())
{
return;
}
var_03 = func_32DC(param_00,param_01);
statsetchildbuffered(param_00,param_01,var_03 + param_02);
}
//Function Number: 12
stataddbufferedwithmax(param_00,param_01,param_02)
{
if(!maps\mp\_utility::rankingenabled())
{
return;
}
var_03 = func_2845(param_00) + param_01;
if(var_03 > param_02)
{
var_03 = param_02;
}
if(var_03 < func_2845(param_00))
{
var_03 = param_02;
}
func_2846(param_00,var_03);
}
//Function Number: 13
stataddchildbufferedwithmax(param_00,param_01,param_02,param_03)
{
if(!maps\mp\_utility::rankingenabled())
{
return;
}
var_04 = func_32DC(param_00,param_01) + param_02;
if(var_04 > param_03)
{
var_04 = param_03;
}
if(var_04 < func_32DC(param_00,param_01))
{
var_04 = param_03;
}
statsetchildbuffered(param_00,param_01,var_04);
}
//Function Number: 14
func_2845(param_00)
{
return self.bufferedstats[param_00];
}
//Function Number: 15
func_2846(param_00,param_01)
{
if(!maps\mp\_utility::rankingenabled())
{
return;
}
self.bufferedstats[param_00] = param_01;
}
//Function Number: 16
func_274F(param_00,param_01)
{
if(!maps\mp\_utility::rankingenabled())
{
return;
}
var_02 = func_2845(param_00);
func_2846(param_00,var_02 + param_01);
}
//Function Number: 17
func_32DD()
{
wait 0.15;
var_00 = 0;
while(!level.gameended)
{
maps\mp\gametypes\_hostmigration::func_273E();
var_00++;
if(var_00 >= level.players.size)
{
var_00 = 0;
}
if(isdefined(level.players[var_00]))
{
level.players[var_00] func_32DE();
level.players[var_00] updateweaponbufferedstats();
}
wait 2;
}
foreach(var_02 in level.players)
{
var_02 func_32DE();
var_02 updateweaponbufferedstats();
}
}
//Function Number: 18
func_32DE()
{
foreach(var_02, var_01 in self.bufferedstats)
{
self setplayerdata(var_02,var_01);
}
foreach(var_02, var_01 in self.bufferedchildstats)
{
foreach(var_06, var_05 in var_01)
{
self setplayerdata(var_02,var_06,var_05);
}
}
}
//Function Number: 19
incrementweaponstat(param_00,param_01,param_02)
{
if(maps\mp\_utility::func_2829(param_00))
{
return;
}
if(maps\mp\_utility::rankingenabled())
{
var_03 = self getplayerdata("weaponStats",param_00,param_01);
self setplayerdata("weaponStats",param_00,param_01,var_03 + param_02);
}
}
//Function Number: 20
incrementattachmentstat(param_00,param_01,param_02)
{
if(maps\mp\_utility::rankingenabled())
{
var_03 = self getplayerdata("attachmentsStats",param_00,param_01);
self setplayerdata("attachmentsStats",param_00,param_01,var_03 + param_02);
}
}
//Function Number: 21
updateweaponbufferedstats()
{
if(!isdefined(self.trackingweaponname))
{
return;
}
if(self.trackingweaponname == "" || self.trackingweaponname == "none")
{
return;
}
var_00 = self.trackingweaponname;
if(maps\mp\_utility::func_2829(var_00) || maps\mp\_utility::func_2CC3(var_00))
{
return;
}
var_01 = strtok(var_00,"_");
if(var_01[0] == "iw5")
{
}
if(var_41[0] == "alt")
{
foreach(var_03 in var_41)
{
if(var_03 == "gl" || var_03 == "gp25" || var_03 == "m320")
{
var_41[0] = "gl";
break;
}
if(var_03 == "shotgun")
{
var_41[0] = "shotgun";
break;
}
}
if(var_41[0] == "alt")
{
var_41[0] = var_41[1] + "_" + var_41[2];
}
}
if(var_41[0] == "gl" || var_41[0] == "shotgun")
{
if(self.trackingweaponshots > 0)
{
incrementattachmentstat(var_41[0],"shots",self.trackingweaponshots);
maps\mp\_matchdata::func_28DE(var_41[0],"shots",self.trackingweaponshots);
}
if(self.trackingweaponkills > 0)
{
incrementattachmentstat(var_41[0],"kills",self.trackingweaponkills);
maps\mp\_matchdata::func_28DE(var_41[0],"kills",self.trackingweaponkills);
}
if(self.trackingweaponhits > 0)
{
incrementattachmentstat(var_41[0],"hits",self.trackingweaponhits);
maps\mp\_matchdata::func_28DE(var_41[0],"hits",self.trackingweaponhits);
}
if(self.trackingweaponheadshots > 0)
{
incrementattachmentstat(var_41[0],"headShots",self.trackingweaponheadshots);
maps\mp\_matchdata::func_28DE(var_41[0],"headShots",self.trackingweaponheadshots);
}
if(self.trackingweapondeaths > 0)
{
incrementattachmentstat(var_41[0],"deaths",self.trackingweapondeaths);
maps\mp\_matchdata::func_28DE(var_41[0],"deaths",self.trackingweapondeaths);
}
self.trackingweaponname = "none";
self.trackingweaponshots = 0;
self.trackingweaponkills = 0;
self.trackingweaponhits = 0;
self.trackingweaponheadshots = 0;
self.trackingweapondeaths = 0;
return;
}
if(!maps\mp\_utility::func_2827(var_41[0]) && !maps\mp\_utility::iscacsecondaryweapon(var_41[0]))
{
return;
}
if(self.trackingweaponshots > 0)
{
incrementweaponstat(var_41[0],"shots",self.trackingweaponshots);
maps\mp\_matchdata::logweaponstat(var_41[0],"shots",self.trackingweaponshots);
}
if(self.trackingweaponkills > 0)
{
incrementweaponstat(var_41[0],"kills",self.trackingweaponkills);
maps\mp\_matchdata::logweaponstat(var_41[0],"kills",self.trackingweaponkills);
}
if(self.trackingweaponhits > 0)
{
incrementweaponstat(var_41[0],"hits",self.trackingweaponhits);
maps\mp\_matchdata::logweaponstat(var_41[0],"hits",self.trackingweaponhits);
}
if(self.trackingweaponheadshots > 0)
{
incrementweaponstat(var_41[0],"headShots",self.trackingweaponheadshots);
maps\mp\_matchdata::logweaponstat(var_41[0],"headShots",self.trackingweaponheadshots);
}
if(self.trackingweapondeaths > 0)
{
incrementweaponstat(var_41[0],"deaths",self.trackingweapondeaths);
maps\mp\_matchdata::logweaponstat(var_41[0],"deaths",self.trackingweapondeaths);
}
var_41 = strtok(var_01,"_");
if(var_41[0] != "none")
{
for(var_05 = 0;var_05 < var_41.size;var_05++ = var_41[0])
{
if(var_41[var_05] == "mp" || var_41[var_05] == "scope1" || var_41[var_05] == "scope2" || var_41[var_05] == "scope3" || var_41[var_05] == "scope4" || var_41[var_05] == "scope5" || var_41[var_05] == "scope6" || var_41[var_05] == "scope7" || var_41[var_05] == "scope8" || var_41[var_05] == "scope9" || var_41[var_05] == "scope10")
{
continue;
}
if(issubstr(var_41[var_05],"camo"))
{
continue;
}
if(issubstr(var_41[var_05],"scope") && !issubstr(var_41[var_05],"vz"))
{
continue;
}
if(var_41[var_05] == "alt")
{
var_05 = var_05 + 2;
continue;
}
if(var_41[var_05] == "iw5")
{
var_05 = var_05 + 1;
continue;
}
var_41[var_05] = maps\mp\_utility::validateattachment(var_41[var_05]);
if(var_41[var_05] == "gl" || var_41[var_05] == "shotgun")
{
continue;
}
if(issubstr(var_41[var_05],"scope") && issubstr(var_41[var_05],"vz"))
{
var_41[var_05] = "vzscope";
}
if(var_05 == 0 && var_41[var_05] != "iw5" && var_41[var_05] != "alt")
{
continue;
}
if(self.trackingweaponshots > 0)
{
if(var_41[var_05] != "tactical")
{
incrementattachmentstat(var_41[var_05],"shots",self.trackingweaponshots);
maps\mp\_matchdata::func_28DE(var_41[var_05],"shots",self.trackingweaponshots);
}
}
if(self.trackingweaponkills > 0)
{
if(var_41[var_05] != "tactical")
{
incrementattachmentstat(var_41[var_05],"kills",self.trackingweaponkills);
maps\mp\_matchdata::func_28DE(var_41[var_05],"kills",self.trackingweaponkills);
}
}
if(self.trackingweaponhits > 0)
{
if(var_41[var_05] != "tactical")
{
incrementattachmentstat(var_41[var_05],"hits",self.trackingweaponhits);
maps\mp\_matchdata::func_28DE(var_41[var_05],"hits",self.trackingweaponhits);
}
}
if(self.trackingweaponheadshots > 0)
{
if(var_41[var_05] != "tactical")
{
incrementattachmentstat(var_41[var_05],"headShots",self.trackingweaponheadshots);
maps\mp\_matchdata::func_28DE(var_41[var_05],"headShots",self.trackingweaponheadshots);
}
}
if(self.trackingweapondeaths > 0)
{
incrementattachmentstat(var_41[var_05],"deaths",self.trackingweapondeaths);
maps\mp\_matchdata::func_28DE(var_41[var_05],"deaths",self.trackingweapondeaths);
}
}
}
self.trackingweaponname = "none";
self.trackingweaponshots = 0;
self.trackingweaponkills = 0;
self.trackingweaponhits = 0;
self.trackingweaponheadshots = 0;
self.trackingweapondeaths = 0;
}
//Function Number: 22
func_32DF()
{
level waittill("game_ended");
if(!maps\mp\_utility::matchmakinggame())
{
return;
}
var_00 = 0;
var_01 = 0;
var_02 = 0;
var_03 = 0;
var_04 = 0;
var_05 = 0;
foreach(var_07 in level.players)
{
var_05 = var_05 + var_07.timeplayed["total"];
}
incrementcounter("global_minutes",int(var_05 / 60));
if(!maps\mp\_utility::waslastround())
{
return;
}
wait 0.05;
foreach(var_07 in level.players)
{
var_00 = var_00 + var_07.kills;
var_01 = var_01 + var_07.deaths;
var_02 = var_02 + var_07.assists;
var_03 = var_03 + var_07.headshots;
var_04 = var_04 + var_07.suicides;
}
incrementcounter("global_kills",var_00);
incrementcounter("global_deaths",var_01);
incrementcounter("global_assists",var_02);
incrementcounter("global_headshots",var_03);
incrementcounter("global_suicides",var_04);
incrementcounter("global_games",1);
}

View File

@ -0,0 +1,32 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_playercards.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 2
* Decompile Time: 36 ms
* Timestamp: 10/27/2023 2:25:43 AM
*******************************************************************/
//Function Number: 1
init()
{
level thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_01 = var_00 maps\mp\gametypes\_persistence::func_2B58("cardIcon");
var_02 = tablelookupbyrow("mp/cardIconTable.csv",var_01,0);
var_00 setcardicon(var_02);
var_03 = var_00 maps\mp\gametypes\_persistence::func_2B58("cardTitle");
var_04 = tablelookupbyrow("mp/cardTitleTable.csv",var_03,0);
var_00 setcardtitle(var_04);
var_05 = var_00 maps\mp\gametypes\_persistence::func_2B58("cardNameplate");
var_00 setcardnameplate(var_05);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,253 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_portable_radar.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 10
* Decompile Time: 154 ms
* Timestamp: 10/27/2023 2:25:46 AM
*******************************************************************/
//Function Number: 1
setportableradar()
{
self setoffhandsecondaryclass("flash");
maps\mp\_utility::_giveweapon("portable_radar_mp",0);
self givestartammo("portable_radar_mp");
thread monitorportableradaruse();
}
//Function Number: 2
unsetportableradar()
{
self notify("end_monitorPortableRadarUse");
}
//Function Number: 3
deleteportableradar(param_00)
{
if(!isdefined(param_00))
{
return;
}
foreach(var_02 in level.players)
{
if(isdefined(var_02))
{
var_02.inplayerportableradar = undefined;
}
}
param_00 notify("death");
param_00 delete();
self.deployedportableradar = undefined;
}
//Function Number: 4
monitorportableradaruse()
{
self notify("end_monitorPortableRadarUse");
self endon("end_monitorPortableRadarUse");
self endon("disconnect");
level endon("game_ended");
for(;;)
{
self waittill("grenade_fire",var_00,var_01);
if(var_01 == "portabl_radar" || var_01 == "portable_radar_mp")
{
if(!isalive(self))
{
var_00 delete();
return;
}
if(isdefined(self.deployedportableradar))
{
deleteportableradar(self.deployedportableradar);
}
var_00 waittill("missile_stuck");
var_02 = var_00.origin;
if(isdefined(var_00))
{
var_00 delete();
}
var_03 = spawn("script_model",var_02);
var_03.health = 100;
var_03.team = self.team;
var_03.owner = self;
var_03 setcandamage(1);
var_03 makeportableradar(self);
var_03 portableradarsetup(self);
var_03 thread maps\mp\gametypes\_weapons::createbombsquadmodel("weapon_radar_bombsquad","tag_origin",level.otherteam[self.team],self);
var_03 thread func_291A();
thread func_2916(var_03);
self.deployedportableradar = var_03;
}
}
}
//Function Number: 5
portableradarsetup(param_00)
{
self setmodel("weapon_radar");
if(level.teambased)
{
maps\mp\_entityheadicons::setteamheadicon(self.team,(0,0,20));
}
else
{
maps\mp\_entityheadicons::setplayerheadicon(param_00,(0,0,20));
}
thread portableradardamagelistener(param_00);
thread portableradaruselistener(param_00);
thread portableradarbeepsounds();
thread maps\mp\_utility::notusableforjoiningplayers(param_00);
}
//Function Number: 6
func_2916(param_00)
{
param_00 endon("death");
level endon("game_ended");
common_scripts\utility::waittill_any("disconnect","joined_team","joined_spectators","spawned_player");
level thread deleteportableradar(param_00);
}
//Function Number: 7
portableradarbeepsounds()
{
self endon("death");
level endon("game_ended");
for(;;)
{
wait 2;
self playsound("sentry_gun_beep");
}
}
//Function Number: 8
portableradardamagelistener(param_00)
{
self endon("death");
self.health = 999999;
self.maxhealth = 100;
self.damagetaken = 0;
for(;;)
{
self waittill("damage",var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A);
if(!maps\mp\gametypes\_weapons::func_27A1(self.owner,var_02))
{
continue;
}
if(isdefined(var_0A))
{
switch(var_0A)
{
case "concussion_grenade_mp":
case "flash_grenade_mp":
case "smoke_grenade_mp":
break;
}
}
if(!isdefined(self))
{
return;
}
if(var_05 == "MOD_MELEE")
{
self.damagetaken = self.damagetaken + self.maxhealth;
}
if(isdefined(var_09) && var_09 & level.idflags_penetration)
{
self.wasdamagedfrombulletpenetration = 1;
}
self.wasdamaged = 1;
self.damagetaken = self.damagetaken + var_01;
if(isdefined(var_0A) && var_0A == "emp_grenade_mp")
{
self.damagetaken = self.maxhealth + 1;
}
if(isplayer(var_02))
{
var_02 maps\mp\gametypes\_damagefeedback::updatedamagefeedback("portable_radar");
}
if(self.damagetaken >= self.maxhealth)
{
if(isdefined(param_00) && var_02 != param_00)
{
var_02 notify("destroyed_explosive");
}
self playsound("sentry_explode");
self.deatheffect = playfx(common_scripts\utility::func_539("equipment_explode"),self.origin);
var_02 thread deleteportableradar(self);
}
}
}
//Function Number: 9
portableradaruselistener(param_00)
{
self endon("death");
level endon("game_ended");
param_00 endon("disconnect");
self setcursorhint("HINT_NOICON");
self sethintstring(&"MP_PATCH_PICKUP_PORTABLE_RADAR");
maps\mp\_utility::setselfusable(param_00);
for(;;)
{
self waittill("trigger",var_01);
var_01 playlocalsound("scavenger_pack_pickup");
if(var_01 getammocount("portable_radar_mp") == 0)
{
var_01 setportableradar();
}
var_01 thread deleteportableradar(self);
}
}
//Function Number: 10
func_291A()
{
self endon("death");
level endon("game_ended");
var_00 = 512;
for(;;)
{
foreach(var_02 in level.players)
{
if(!isdefined(var_02))
{
continue;
}
if(level.teambased && var_02.team == self.team)
{
continue;
}
var_03 = distancesquared(self.origin,var_02.origin);
if(distancesquared(var_02.origin,self.origin) < var_00 * var_00)
{
var_02.inplayerportableradar = self.owner;
continue;
}
var_02.inplayerportableradar = undefined;
}
wait 0.05;
}
}

View File

@ -0,0 +1,270 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_quickmessages.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 7
* Decompile Time: 96 ms
* Timestamp: 10/27/2023 2:25:47 AM
*******************************************************************/
//Function Number: 1
init()
{
game["menu_quickcommands"] = "quickcommands";
game["menu_quickstatements"] = "quickstatements";
game["menu_quickresponses"] = "quickresponses";
precachemenu(game["menu_quickcommands"]);
precachemenu(game["menu_quickstatements"]);
precachemenu(game["menu_quickresponses"]);
precacheheadicon("talkingicon");
precachestring(&"QUICKMESSAGE_FOLLOW_ME");
precachestring(&"QUICKMESSAGE_MOVE_IN");
precachestring(&"QUICKMESSAGE_FALL_BACK");
precachestring(&"QUICKMESSAGE_SUPPRESSING_FIRE");
precachestring(&"QUICKMESSAGE_ATTACK_LEFT_FLANK");
precachestring(&"QUICKMESSAGE_ATTACK_RIGHT_FLANK");
precachestring(&"QUICKMESSAGE_HOLD_THIS_POSITION");
precachestring(&"QUICKMESSAGE_REGROUP");
precachestring(&"QUICKMESSAGE_ENEMY_SPOTTED");
precachestring(&"QUICKMESSAGE_ENEMIES_SPOTTED");
precachestring(&"QUICKMESSAGE_IM_IN_POSITION");
precachestring(&"QUICKMESSAGE_AREA_SECURE");
precachestring(&"QUICKMESSAGE_GRENADE");
precachestring(&"QUICKMESSAGE_SNIPER");
precachestring(&"QUICKMESSAGE_NEED_REINFORCEMENTS");
precachestring(&"QUICKMESSAGE_HOLD_YOUR_FIRE");
precachestring(&"QUICKMESSAGE_YES_SIR");
precachestring(&"QUICKMESSAGE_NO_SIR");
precachestring(&"QUICKMESSAGE_IM_ON_MY_WAY");
precachestring(&"QUICKMESSAGE_SORRY");
precachestring(&"QUICKMESSAGE_GREAT_SHOT");
precachestring(&"QUICKMESSAGE_TOOK_LONG_ENOUGH");
precachestring(&"QUICKMESSAGE_ARE_YOU_CRAZY");
precachestring(&"QUICKMESSAGE_WATCH_SIX");
precachestring(&"QUICKMESSAGE_COME_ON");
}
//Function Number: 2
quickcommands(param_00)
{
self endon("disconnect");
if(!isdefined(self.pers["team"]) || self.pers["team"] == "spectator" || isdefined(self.spamdelay))
{
return;
}
self.spamdelay = 1;
switch(param_00)
{
case "1":
var_01 = "mp_cmd_followme";
var_02 = &"QUICKMESSAGE_FOLLOW_ME";
break;
case "2":
var_01 = "mp_cmd_movein";
var_02 = &"QUICKMESSAGE_MOVE_IN";
break;
case "3":
var_01 = "mp_cmd_fallback";
var_02 = &"QUICKMESSAGE_FALL_BACK";
break;
case "4":
var_01 = "mp_cmd_suppressfire";
var_02 = &"QUICKMESSAGE_SUPPRESSING_FIRE";
break;
case "5":
var_01 = "mp_cmd_attackleftflank";
var_02 = &"QUICKMESSAGE_ATTACK_LEFT_FLANK";
break;
case "6":
var_01 = "mp_cmd_attackrightflank";
var_02 = &"QUICKMESSAGE_ATTACK_RIGHT_FLANK";
break;
case "7":
var_01 = "mp_cmd_holdposition";
var_02 = &"QUICKMESSAGE_HOLD_THIS_POSITION";
break;
default:
var_01 = "mp_cmd_regroup";
var_02 = &"QUICKMESSAGE_REGROUP";
break;
}
saveheadicon();
doquickmessage(var_01,var_02);
wait 2;
self.spamdelay = undefined;
func_2AD1();
}
//Function Number: 3
quickstatements(param_00)
{
if(!isdefined(self.pers["team"]) || self.pers["team"] == "spectator" || isdefined(self.spamdelay))
{
return;
}
self.spamdelay = 1;
switch(param_00)
{
case "1":
var_01 = "mp_stm_enemyspotted";
var_02 = &"QUICKMESSAGE_ENEMY_SPOTTED";
break;
case "2":
var_01 = "mp_stm_enemiesspotted";
var_02 = &"QUICKMESSAGE_ENEMIES_SPOTTED";
break;
case "3":
var_01 = "mp_stm_iminposition";
var_02 = &"QUICKMESSAGE_IM_IN_POSITION";
break;
case "4":
var_01 = "mp_stm_areasecure";
var_02 = &"QUICKMESSAGE_AREA_SECURE";
break;
case "5":
var_01 = "mp_stm_watchsix";
var_02 = &"QUICKMESSAGE_WATCH_SIX";
break;
case "6":
var_01 = "mp_stm_sniper";
var_02 = &"QUICKMESSAGE_SNIPER";
break;
default:
var_01 = "mp_stm_needreinforcements";
var_02 = &"QUICKMESSAGE_NEED_REINFORCEMENTS";
break;
}
saveheadicon();
doquickmessage(var_01,var_02);
wait 2;
self.spamdelay = undefined;
func_2AD1();
}
//Function Number: 4
func_2ACB(param_00)
{
if(!isdefined(self.pers["team"]) || self.pers["team"] == "spectator" || isdefined(self.spamdelay))
{
return;
}
self.spamdelay = 1;
switch(param_00)
{
case "1":
var_01 = "mp_rsp_yessir";
var_02 = &"QUICKMESSAGE_YES_SIR";
break;
case "2":
var_01 = "mp_rsp_nosir";
var_02 = &"QUICKMESSAGE_NO_SIR";
break;
case "3":
var_01 = "mp_rsp_onmyway";
var_02 = &"QUICKMESSAGE_IM_ON_MY_WAY";
break;
case "4":
var_01 = "mp_rsp_sorry";
var_02 = &"QUICKMESSAGE_SORRY";
break;
case "5":
var_01 = "mp_rsp_greatshot";
var_02 = &"QUICKMESSAGE_GREAT_SHOT";
break;
default:
var_01 = "mp_rsp_comeon";
var_02 = &"QUICKMESSAGE_COME_ON";
break;
}
saveheadicon();
doquickmessage(var_01,var_02);
wait 2;
self.spamdelay = undefined;
func_2AD1();
}
//Function Number: 5
doquickmessage(param_00,param_01)
{
if(self.sessionstate != "playing")
{
return;
}
var_02 = maps\mp\gametypes\_teams::getteamvoiceprefix(self.team);
if(isdefined(level.quickmessagetoall) && level.quickmessagetoall)
{
self.headiconteam = "none";
self.headicon = "talkingicon";
self playsound(var_02 + param_00);
self sayall(param_01);
return;
}
if(self.sessionteam == "allies")
{
self.headiconteam = "allies";
}
else if(self.sessionteam == "axis")
{
self.headiconteam = "axis";
}
self.headicon = "talkingicon";
self playsound(var_02 + param_00);
self sayteam(param_01);
self pingplayer();
}
//Function Number: 6
saveheadicon()
{
if(isdefined(self.headicon))
{
self.oldheadicon = self.headicon;
}
if(isdefined(self.headiconteam))
{
self.oldheadiconteam = self.headiconteam;
}
}
//Function Number: 7
func_2AD1()
{
if(isdefined(self.oldheadicon))
{
self.headicon = self.oldheadicon;
}
if(isdefined(self.oldheadiconteam))
{
self.headiconteam = self.oldheadiconteam;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,123 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_serversettings.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 3
* Decompile Time: 48 ms
* Timestamp: 10/27/2023 2:25:50 AM
*******************************************************************/
//Function Number: 1
init()
{
level.hostname = getdvar("sv_hostname");
if(level.hostname == "")
{
level.hostname = "CoDHost";
}
setdvar("sv_hostname",level.hostname);
level.allowvote = getdvarint("g_allowvote",1);
setdvar("g_allowvote",level.allowvote);
makedvarserverinfo("ui_allowvote",level.allowvote);
level.friendlyfire = maps\mp\gametypes\_tweakables::func_270D("team","fftype");
makedvarserverinfo("ui_friendlyfire",level.friendlyfire);
func_2B94(getdvar("g_gametype"));
for(;;)
{
func_2B93();
wait 5;
}
}
//Function Number: 2
func_2B93()
{
var_00 = getdvar("sv_hostname");
if(level.hostname != var_00)
{
level.hostname = var_00;
}
var_01 = getdvarint("g_allowvote",1);
if(level.allowvote != var_01)
{
level.allowvote = var_01;
setdvar("ui_allowvote",level.allowvote);
}
var_02 = maps\mp\gametypes\_tweakables::func_270D("team","fftype");
if(level.friendlyfire != var_02)
{
level.friendlyfire = var_02;
setdvar("ui_friendlyfire",level.friendlyfire);
}
}
//Function Number: 3
func_2B94(param_00)
{
var_01 = getentarray();
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_03 = var_01[var_02];
if(param_00 == "dm")
{
if(isdefined(var_03.script_gametype_dm) && var_03.script_gametype_dm != "1")
{
var_03 delete();
}
continue;
}
if(param_00 == "tdm")
{
if(isdefined(var_03.script_gametype_tdm) && var_03.script_gametype_tdm != "1")
{
var_03 delete();
}
continue;
}
if(param_00 == "ctf")
{
if(isdefined(var_03.script_gametype_ctf) && var_03.script_gametype_ctf != "1")
{
var_03 delete();
}
continue;
}
if(param_00 == "hq")
{
if(isdefined(var_03.script_gametype_hq) && var_03.script_gametype_hq != "1")
{
var_03 delete();
}
continue;
}
if(param_00 == "sd")
{
if(isdefined(var_03.script_gametype_sd) && var_03.script_gametype_sd != "1")
{
var_03 delete();
}
continue;
}
if(param_00 == "koth")
{
if(isdefined(var_03.script_gametype_koth) && var_03.script_gametype_koth != "1")
{
var_03 delete();
}
}
}
}

View File

@ -0,0 +1,187 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_shellshock.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 9
* Decompile Time: 158 ms
* Timestamp: 10/27/2023 2:25:50 AM
*******************************************************************/
//Function Number: 1
init()
{
precacheshellshock("frag_grenade_mp");
precacheshellshock("damage_mp");
precacherumble("artillery_rumble");
precacherumble("grenade_rumble");
precachemenu("dirt_effect_center");
precachemenu("dirt_effect_left");
precachemenu("dirt_effect_right");
precachemenu("blood_effect_center");
precachemenu("blood_effect_left");
precachemenu("blood_effect_right");
}
//Function Number: 2
shellshockondamage(param_00,param_01)
{
if(maps\mp\_flashgrenades::isflashbanged())
{
return;
}
if(param_00 == "MOD_EXPLOSIVE" || param_00 == "MOD_GRENADE" || param_00 == "MOD_GRENADE_SPLASH" || param_00 == "MOD_PROJECTILE" || param_00 == "MOD_PROJECTILE_SPLASH")
{
if(param_01 > 10)
{
if(isdefined(self.shellshockreduction) && self.shellshockreduction)
{
self shellshock("frag_grenade_mp",self.shellshockreduction);
return;
}
self shellshock("frag_grenade_mp",0.5);
return;
}
}
}
//Function Number: 3
func_2374()
{
self waittill("death");
waittillframeend;
self notify("end_explode");
}
//Function Number: 4
grenade_earthquake()
{
thread func_2374();
self endon("end_explode");
self waittill("explode",var_00);
playrumbleonposition("grenade_rumble",var_00);
earthquake(0.5,0.75,var_00,800);
foreach(var_02 in level.players)
{
if(var_02 maps\mp\_utility::isusingremote())
{
continue;
}
if(distance(var_00,var_02.origin) > 600)
{
continue;
}
if(var_02 damageconetrace(var_00))
{
var_02 thread dirteffect(var_00);
}
}
}
//Function Number: 5
dirteffect(param_00)
{
self endon("disconnect");
var_01 = vectornormalize(anglestoforward(self.angles));
var_02 = vectornormalize(anglestoright(self.angles));
var_03 = vectornormalize(param_00 - self.origin);
var_04 = vectordot(var_03,var_01);
var_05 = vectordot(var_03,var_02);
var_06 = [];
if(var_04 > 0 && var_04 > 0.5 && self getcurrentweapon() != "riotshield_mp")
{
}
if(abs(var_05) < 0.866)
{
if(var_06 > 0)
{
}
else
{
}
}
foreach(var_08 in var_41)
{
self openmenu(var_08);
}
if(isalive(self))
{
common_scripts\utility::waittill_notify_or_timeout("death",2);
}
foreach(var_08 in var_41)
{
self closemenu(var_08);
}
}
//Function Number: 6
bloodeffect(param_00)
{
self endon("disconnect");
var_01 = vectornormalize(anglestoforward(self.angles));
var_02 = vectornormalize(anglestoright(self.angles));
var_03 = vectornormalize(param_00 - self.origin);
var_04 = vectordot(var_03,var_01);
var_05 = vectordot(var_03,var_02);
var_06 = [];
if(var_04 > 0 && var_04 > 0.5)
{
}
if(abs(var_05) < 0.866)
{
if(var_06 > 0)
{
}
else
{
}
}
foreach(var_08 in var_41)
{
self openmenu(var_08);
}
if(isalive(self))
{
common_scripts\utility::waittill_notify_or_timeout("death",7);
}
foreach(var_08 in var_41)
{
self closemenu(var_08);
}
}
//Function Number: 7
c4_earthquake()
{
thread func_2374();
self endon("end_explode");
self waittill("explode",var_00);
playrumbleonposition("grenade_rumble",var_00);
earthquake(0.4,0.75,var_00,512);
}
//Function Number: 8
barrel_earthquake()
{
playrumbleonposition("grenade_rumble",self.origin);
earthquake(0.4,0.5,self.origin,512);
}
//Function Number: 9
artillery_earthquake()
{
playrumbleonposition("artillery_rumble",self.origin);
earthquake(0.7,0.5,self.origin,800);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,161 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\_spectating.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 8
* Decompile Time: 124 ms
* Timestamp: 10/27/2023 2:25:53 AM
*******************************************************************/
//Function Number: 1
init()
{
level.spectateoverride["allies"] = spawnstruct();
level.spectateoverride["axis"] = spawnstruct();
level thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread func_2747();
var_00 thread func_2748();
var_00 thread func_2A87();
}
}
//Function Number: 3
func_2747()
{
self endon("disconnect");
for(;;)
{
self waittill("joined_team");
setspectatepermissions();
}
}
//Function Number: 4
func_2748()
{
self endon("disconnect");
for(;;)
{
self waittill("joined_spectators");
setspectatepermissions();
}
}
//Function Number: 5
func_2A87()
{
self endon("disconnect");
for(;;)
{
self waittill("spectating_cycle");
var_00 = self getspectatingplayer();
if(isdefined(var_00))
{
self setcarddisplayslot(var_00,6);
}
}
}
//Function Number: 6
updatespectatesettings()
{
level endon("game_ended");
for(var_00 = 0;var_00 < level.players.size;var_00++)
{
level.players[var_00] setspectatepermissions();
}
}
//Function Number: 7
getotherteam(param_00)
{
if(param_00 == "axis")
{
return "allies";
}
if(param_00 == "allies")
{
return "axis";
}
return "none";
}
//Function Number: 8
setspectatepermissions()
{
var_00 = self.sessionteam;
if(level.gameended && gettime() - level.gameendtime >= 2000)
{
self allowspectateteam("allies",0);
self allowspectateteam("axis",0);
self allowspectateteam("freelook",0);
self allowspectateteam("none",1);
return;
}
var_01 = maps\mp\gametypes\_tweakables::func_270D("game","spectatetype");
switch(var_01)
{
case 0:
self allowspectateteam("allies",0);
self allowspectateteam("axis",0);
self allowspectateteam("freelook",0);
self allowspectateteam("none",0);
break;
case 1:
if(!level.teambased)
{
self allowspectateteam("allies",1);
self allowspectateteam("axis",1);
self allowspectateteam("none",1);
self allowspectateteam("freelook",0);
}
else if(isdefined(var_00) && var_00 == "allies" || var_00 == "axis")
{
self allowspectateteam(var_00,1);
self allowspectateteam(getotherteam(var_00),0);
self allowspectateteam("freelook",0);
self allowspectateteam("none",0);
}
else
{
self allowspectateteam("allies",0);
self allowspectateteam("axis",0);
self allowspectateteam("freelook",0);
self allowspectateteam("none",0);
}
break;
case 2:
self allowspectateteam("allies",1);
self allowspectateteam("axis",1);
self allowspectateteam("freelook",1);
self allowspectateteam("none",1);
break;
}
if(isdefined(var_00) && var_00 == "axis" || var_00 == "allies")
{
if(isdefined(level.spectateoverride[var_00].allowfreespectate))
{
self allowspectateteam("freelook",1);
}
if(isdefined(level.spectateoverride[var_00].allowenemyspectate))
{
self allowspectateteam(getotherteam(var_00),1);
}
}
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,511 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\arena.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 25
* Decompile Time: 384 ms
* Timestamp: 10/27/2023 2:26:02 AM
*******************************************************************/
//Function Number: 1
main()
{
if(getdvar("mapname") == "mp_background")
{
return;
}
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
maps\mp\_utility::func_330E(level.gametype,0,0,9);
maps\mp\_utility::func_3315(level.gametype,10,0,1440);
maps\mp\_utility::registerscorelimitdvar(level.gametype,500,0,5000);
maps\mp\_utility::func_3312(level.gametype,1,0,10);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1,0,10);
maps\mp\_utility::func_330E(level.gametype,3,0,30);
maps\mp\_utility::func_3317(level.gametype,0,0,10);
maps\mp\_utility::registerhalftimedvar(level.gametype,0,0,1);
level.teambased = 1;
level.objectivebased = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onspawnplayer = ::onspawnplayer;
level.onnormaldeath = ::onnormaldeath;
level.onplayerkilled = ::onplayerkilled;
level.ondeadevent = ::ondeadevent;
game["dialog"]["gametype"] = "arena";
if(getdvarint("g_hardcore"))
{
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
}
else if(getdvarint("camera_thirdPerson"))
{
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_diehard"))
{
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
}
game["strings"]["overtime_hint"] = &"MP_FIRST_BLOOD";
}
//Function Number: 2
onprecachegametype()
{
precacheshader("compass_waypoint_captureneutral");
precacheshader("compass_waypoint_capture");
precacheshader("compass_waypoint_defend");
precacheshader("waypoint_captureneutral");
precacheshader("waypoint_capture");
precacheshader("waypoint_defend");
}
//Function Number: 3
onstartgametype()
{
setclientnamemode("auto_change");
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
if(game["switchedsides"])
{
var_00 = game["attackers"];
var_01 = game["defenders"];
game["attackers"] = var_01;
game["defenders"] = var_00;
}
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_ARENA");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_ARENA");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_ARENA");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_ARENA");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_ARENA_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_ARENA_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_ARENA_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_ARENA_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_allies_start");
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_axis_start");
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_tdm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_tdm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
var_02[0] = "dom";
maps\mp\gametypes\_rank::registerscoreinfo("capture",200);
maps\mp\gametypes\_gameobjects::main(var_41);
precacheflag();
thread func_3583();
thread arenatimeflagwaiter();
}
//Function Number: 4
precacheflag()
{
game["flagmodels"] = [];
game["flagmodels"]["neutral"] = "prop_flag_neutral";
game["flagmodels"]["allies"] = maps\mp\gametypes\_teams::func_2774("allies");
game["flagmodels"]["axis"] = maps\mp\gametypes\_teams::func_2774("axis");
precachemodel(game["flagmodels"]["neutral"]);
precachemodel(game["flagmodels"]["allies"]);
precachemodel(game["flagmodels"]["axis"]);
precachestring(&"MP_CAPTURING_FLAG");
precachestring(&"MP_LOSING_FLAG");
precachestring(&"MP_DOM_YOUR_FLAG_WAS_CAPTURED");
precachestring(&"MP_DOM_ENEMY_FLAG_CAPTURED");
precachestring(&"MP_DOM_NEUTRAL_FLAG_CAPTURED");
precachestring(&"MP_ENEMY_FLAG_CAPTURED_BY");
precachestring(&"MP_NEUTRAL_FLAG_CAPTURED_BY");
precachestring(&"MP_FRIENDLY_FLAG_CAPTURED_BY");
}
//Function Number: 5
arenatimeflagwaiter()
{
level endon("down_to_one");
level endon("game_end");
for(;;)
{
var_00 = maps\mp\gametypes\_gamelogic::func_2F0C();
if(var_00 < -4536)
{
break;
}
wait 1;
}
level notify("arena_flag_time");
thread arenaflag();
}
//Function Number: 6
func_3583()
{
level endon("game_end");
level endon("arena_flag_time");
for(;;)
{
if(level.ingraceperiod == 0)
{
break;
}
wait 0.05;
}
for(;;)
{
if(getteamplayersalive("axis") == 1)
{
thread arenaflag();
level notify("down_to_one");
break;
}
if(getteamplayersalive("allies") == 1)
{
thread arenaflag();
level notify("down_to_one");
break;
}
wait 1;
}
}
//Function Number: 7
getspawnpoint()
{
var_00 = self.pers["team"];
if(game["switchedsides"])
{
var_00 = maps\mp\_utility::getotherteam(var_00);
}
if(level.ingraceperiod)
{
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_tdm_spawn_" + var_00 + "_start");
var_02 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_01);
}
else
{
var_01 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(var_02);
var_02 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_02);
}
return var_02;
}
//Function Number: 8
onspawnplayer()
{
self.usingobj = undefined;
level notify("spawned_player");
}
//Function Number: 9
onnormaldeath(param_00,param_01,param_02)
{
var_03 = maps\mp\gametypes\_rank::getscoreinfovalue("kill");
param_01 maps\mp\gametypes\_gamescore::giveteamscoreforobjective(param_01.pers["team"],var_03);
var_04 = param_00.team;
if(game["state"] == "postgame")
{
param_01.finalkill = 1;
}
}
//Function Number: 10
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
thread checkallowspectating();
}
//Function Number: 11
ontimelimit()
{
if(game["status"] == "overtime")
{
var_00 = "forfeit";
}
else if(game["teamScores"]["allies"] == game["teamScores"]["axis"])
{
var_00 = "overtime";
}
else if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
{
var_00 = "axis";
}
else
{
var_00 = "allies";
}
thread maps\mp\gametypes\_gamelogic::endgame(var_00,game["strings"]["time_limit_reached"]);
}
//Function Number: 12
checkallowspectating()
{
wait 0.05;
var_00 = 0;
if(!level.alivecount[game["attackers"]])
{
level.spectateoverride[game["attackers"]].allowenemyspectate = 1;
var_00 = 1;
}
if(!level.alivecount[game["defenders"]])
{
level.spectateoverride[game["defenders"]].allowenemyspectate = 1;
var_00 = 1;
}
if(var_00)
{
maps\mp\gametypes\_spectating::updatespectatesettings();
}
}
//Function Number: 13
arenaflag()
{
level.laststatus["allies"] = 0;
level.laststatus["axis"] = 0;
var_00 = getentarray("flag_arena","targetname");
var_01 = getentarray("flag_primary","targetname");
var_02 = getentarray("flag_secondary","targetname");
if(!isdefined(var_00[0]))
{
if(var_01.size + var_02.size < 1)
{
maps\mp\gametypes\_callbacksetup::abortlevel();
return;
}
func_3585(var_01,var_02);
}
else
{
level.arenaflag = var_00[0];
}
var_03 = level.arenaflag;
if(isdefined(var_03.target))
{
var_04[0] = getent(var_03.target,"targetname");
}
else
{
var_00[0] = spawn("script_model",var_04.origin);
var_04[0].angles = var_03.angles;
}
var_04[0] setmodel(game["flagmodels"]["neutral"]);
var_00 = maps\mp\gametypes\_gameobjects::func_29E7("neutral",var_03,var_04,(0,0,100));
var_00 maps\mp\gametypes\_gameobjects::allowuse("enemy");
var_00 maps\mp\gametypes\_gameobjects::setusetime(20);
var_00 maps\mp\gametypes\_gameobjects::setusetext(&"MP_CAPTURING_FLAG");
var_05 = var_00 maps\mp\gametypes\_gameobjects::getlabel();
var_00.label = var_05;
var_00 maps\mp\gametypes\_gameobjects::set2dicon("friendly","compass_waypoint_defend");
var_00 maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_defend");
var_00 maps\mp\gametypes\_gameobjects::set2dicon("enemy","compass_waypoint_captureneutral");
var_00 maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_captureneutral");
var_00 maps\mp\gametypes\_gameobjects::setvisibleteam("any");
var_00.onuse = ::onuse;
var_00.onbeginuse = ::onbeginuse;
var_00.onuseupdate = ::onuseupdate;
var_00.onenduse = ::onenduse;
var_00.isarena = 1;
iprintlnbold("Arena flag spawned");
level.arenaflag playsound("flag_spawned");
var_06 = var_04[0].origin + (0,0,32);
var_07 = var_04[0].origin + (0,0,-32);
var_08 = bullettrace(var_06,var_07,0,undefined);
var_09 = vectortoangles(var_08["normal"]);
var_00.baseeffectforward = anglestoforward(var_09);
var_00.baseeffectright = anglestoright(var_09);
var_00.baseeffectpos = var_08["position"];
var_00.levelflag = level.arenaflag;
level.arenaflag = var_00;
}
//Function Number: 14
func_3585(param_00,param_01)
{
for(var_02 = 0;var_02 < param_00.size;var_02++)
{
var_03 = param_00[var_02].script_label;
if(var_03 != "_b")
{
param_00[var_02] delete();
continue;
}
level.arenaflag = param_00[var_02];
return;
}
}
//Function Number: 15
ondeadevent(param_00)
{
if(param_00 == game["attackers"])
{
level thread func_3586(game["defenders"],game["strings"][game["attackers"] + "_eliminated"]);
return;
}
if(param_00 == game["defenders"])
{
level thread func_3586(game["attackers"],game["strings"][game["defenders"] + "_eliminated"]);
}
}
//Function Number: 16
func_3586(param_00,param_01)
{
thread maps\mp\gametypes\_gamelogic::endgame(param_00,param_01);
}
//Function Number: 17
func_346E(param_00)
{
level endon("game_ended");
wait 0.05;
maps\mp\_utility::waittillslowprocessallowed();
var_01 = getarraykeys(param_00);
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_03 = param_00[var_01[var_02]].player;
var_03 thread [[ level.onxpevent ]]("capture");
maps\mp\gametypes\_gamescore::func_26D3("capture",var_03);
var_03 thread maps\mp\_matchdata::loggameevent("capture",var_03.origin);
}
}
//Function Number: 18
onuse(param_00)
{
var_01 = param_00.pers["team"];
var_02 = maps\mp\gametypes\_gameobjects::func_2A15();
var_03 = maps\mp\gametypes\_gameobjects::getlabel();
self.capturetime = gettime();
maps\mp\gametypes\_gameobjects::setownerteam(var_01);
maps\mp\gametypes\_gameobjects::set2dicon("enemy","compass_waypoint_capture");
maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_capture");
self.visuals[0] setmodel(game["flagmodels"][var_01]);
if(var_02 == "neutral")
{
var_04 = maps\mp\_utility::getotherteam(var_01);
thread maps\mp\_utility::func_32F9(var_01,var_04,&"MP_NEUTRAL_FLAG_CAPTURED_BY",&"MP_NEUTRAL_FLAG_CAPTURED_BY","mp_war_objective_taken",undefined,param_00);
statusdialog("captured_a",var_01);
statusdialog("enemy_has_a",var_04);
}
else
{
thread maps\mp\_utility::func_32F9(var_01,var_02,&"MP_ENEMY_FLAG_CAPTURED_BY",&"MP_FRIENDLY_FLAG_CAPTURED_BY","mp_war_objective_taken","mp_war_objective_lost",param_00);
}
thread func_346E(self.touchlist[var_01]);
param_00 notify("objective","captured");
thread flagcaptured(var_01,&"MP_DOM_NEUTRAL_FLAG_CAPTURED");
}
//Function Number: 19
onbeginuse(param_00)
{
var_01 = maps\mp\gametypes\_gameobjects::func_2A15();
self.didstatusnotify = 0;
if(var_01 == "neutral")
{
var_02 = maps\mp\_utility::getotherteam(param_00.pers["team"]);
statusdialog("securing",param_00.pers["team"]);
self.objpoints[param_00.pers["team"]] thread maps\mp\gametypes\_objpoints::startflashing();
statusdialog("enemy_taking",var_02);
return;
}
if(var_02 == "allies")
{
var_02 = "axis";
}
else
{
var_02 = "allies";
}
self.objpoints["allies"] thread maps\mp\gametypes\_objpoints::startflashing();
self.objpoints["axis"] thread maps\mp\gametypes\_objpoints::startflashing();
}
//Function Number: 20
onuseupdate(param_00,param_01,param_02)
{
if(param_01 > 0.05 && param_02 && !self.didstatusnotify)
{
var_03 = maps\mp\_utility::getotherteam(param_00);
statusdialog("losing_a",var_03);
statusdialog("securing_a",param_00);
self.didstatusnotify = 1;
}
}
//Function Number: 21
onenduse(param_00,param_01,param_02)
{
self.objpoints["allies"] thread maps\mp\gametypes\_objpoints::stopflashing();
self.objpoints["axis"] thread maps\mp\gametypes\_objpoints::stopflashing();
}
//Function Number: 22
statusdialog(param_00,param_01)
{
var_02 = gettime();
if(gettime() < level.laststatus[param_01] + 6000)
{
return;
}
thread func_346F(param_00,param_01);
level.laststatus[param_01] = gettime();
}
//Function Number: 23
func_346F(param_00,param_01)
{
level endon("game_ended");
wait 0.1;
maps\mp\_utility::waittillslowprocessallowed();
maps\mp\_utility::func_26E5(param_00,param_01);
}
//Function Number: 24
func_3470(param_00,param_01,param_02,param_03)
{
level endon("game_ended");
wait 0.1;
maps\mp\_utility::waittillslowprocessallowed();
maps\mp\_utility::leaderdialogbothteams(param_00,param_01,param_02,param_03);
}
//Function Number: 25
flagcaptured(param_00,param_01)
{
maps\mp\gametypes\_gamelogic::endgame(param_00,param_01);
}

View File

@ -0,0 +1,403 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\conf.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 16
* Decompile Time: 226 ms
* Timestamp: 10/27/2023 2:26:03 AM
*******************************************************************/
//Function Number: 1
main()
{
if(getdvar("mapname") == "mp_background")
{
return;
}
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_330E(level.gametype,0,0,9);
maps\mp\_utility::func_3315(level.gametype,10);
maps\mp\_utility::registerscorelimitdvar(level.gametype,65);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
level.teambased = 1;
level.initgametypeawards = ::initgametypeawards;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onnormaldeath = ::onnormaldeath;
level.onprecachegametype = ::onprecachegametype;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
game["dialog"]["gametype"] = "kill_confirmed";
level.conf_fx["vanish"] = loadfx("impacts/small_snowhit");
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C();
setdynamicdvar("scr_conf_roundswitch",0);
maps\mp\_utility::func_330E("conf",0,0,9);
setdynamicdvar("scr_conf_roundlimit",1);
maps\mp\_utility::func_3312("conf",1);
setdynamicdvar("scr_conf_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("conf",1);
setdynamicdvar("scr_conf_halftime",0);
maps\mp\_utility::registerhalftimedvar("conf",0);
setdynamicdvar("scr_conf_promode",0);
}
//Function Number: 3
onprecachegametype()
{
precachemodel("prop_dogtags_friend");
precachemodel("prop_dogtags_foe");
precacheshader("waypoint_dogtags");
}
//Function Number: 4
onstartgametype()
{
setclientnamemode("auto_change");
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
if(game["switchedsides"])
{
var_00 = game["attackers"];
var_01 = game["defenders"];
game["attackers"] = var_01;
game["defenders"] = var_00;
}
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_CONF");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_CONF");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_CONF");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_CONF");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_CONF_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_CONF_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_CONF_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_CONF_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_allies_start");
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_axis_start");
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_tdm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_tdm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
maps\mp\gametypes\_rank::registerscoreinfo("kill",50);
maps\mp\gametypes\_rank::registerscoreinfo("kill_confirmed",50);
maps\mp\gametypes\_rank::registerscoreinfo("kill_denied",50);
maps\mp\gametypes\_rank::registerscoreinfo("tags_retrieved",250);
level.dogtags = [];
var_02[0] = level.gametype;
maps\mp\gametypes\_gameobjects::main(var_02);
}
//Function Number: 5
getspawnpoint()
{
var_00 = self.pers["team"];
if(game["switchedsides"])
{
var_00 = maps\mp\_utility::getotherteam(var_00);
}
if(level.ingraceperiod)
{
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_tdm_spawn_" + var_00 + "_start");
var_02 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_01);
}
else
{
var_01 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(var_02);
var_02 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_02);
}
return var_02;
}
//Function Number: 6
onnormaldeath(param_00,param_01,param_02)
{
level thread func_3546(param_00,param_01);
if(game["state"] == "postgame" && game["teamScores"][param_01.team] > game["teamScores"][level.otherteam[param_01.team]])
{
param_01.finalkill = 1;
}
}
//Function Number: 7
func_3546(param_00,param_01)
{
if(isdefined(level.dogtags[param_00.guid]))
{
playfx(level.conf_fx["vanish"],level.dogtags[param_00.guid].curorigin);
level.dogtags[param_00.guid] notify("reset");
}
else
{
var_02[0] = spawn("script_model",(0,0,0));
var_02[0] setmodel("prop_dogtags_foe");
var_41[1] setmodel("prop_dogtags_friend");
var_03 = spawn("trigger_radius",(0,0,0),0,32,32);
level.dogtags[param_01.guid] = maps\mp\gametypes\_gameobjects::func_29E7("any",var_03,var_41,(0,0,16));
maps\mp\_utility::_objective_delete(level.dogtags[param_01.guid].objidallies);
maps\mp\_utility::_objective_delete(level.dogtags[param_01.guid].objidaxis);
maps\mp\gametypes\_objpoints::deleteobjpoint(level.dogtags[param_01.guid].objpoints["allies"]);
maps\mp\gametypes\_objpoints::deleteobjpoint(level.dogtags[param_01.guid].objpoints["axis"]);
level.dogtags[param_01.guid] maps\mp\gametypes\_gameobjects::setusetime(0);
level.dogtags[param_01.guid].onuse = ::onuse;
level.dogtags[param_01.guid].victim = param_01;
level.dogtags[param_01.guid].victimteam = param_01.pers["team"];
level.dogtags[param_01.guid].objid = maps\mp\gametypes\_gameobjects::func_2A31();
objective_add(level.dogtags[param_01.guid].objid,"invisible",(0,0,0));
objective_icon(level.dogtags[param_01.guid].objid,"waypoint_dogtags");
level thread func_354A(param_01);
param_01 thread tagteamupdater(level.dogtags[param_01.guid]);
}
var_04 = param_01.origin + (0,0,14);
level.dogtags[param_01.guid].curorigin = var_04;
level.dogtags[param_01.guid].trigger.origin = var_04;
level.dogtags[param_01.guid].visuals[0].origin = var_04;
level.dogtags[param_01.guid].visuals[1].origin = var_04;
level.dogtags[param_01.guid] maps\mp\gametypes\_gameobjects::allowuse("any");
level.dogtags[param_01.guid].visuals[0] thread func_3548(level.dogtags[param_01.guid],maps\mp\_utility::getotherteam(param_01.pers["team"]));
level.dogtags[param_01.guid].visuals[1] thread func_3548(level.dogtags[param_01.guid],param_01.pers["team"]);
level.dogtags[param_01.guid].attacker = var_02;
objective_position(level.dogtags[param_01.guid].objid,var_04);
objective_state(level.dogtags[param_01.guid].objid,"active");
objective_player(level.dogtags[param_01.guid].objid,var_02 getentitynumber());
playsoundatpos(var_04,"mp_killconfirm_tags_drop");
level.dogtags[param_01.guid] thread func_3549();
}
//Function Number: 8
func_3548(param_00,param_01)
{
param_00 endon("death");
param_00 endon("reset");
self hide();
foreach(var_03 in level.players)
{
if(var_03.team == param_01)
{
self showtoplayer(var_03);
}
}
for(;;)
{
level waittill("joined_team");
self hide();
foreach(var_03 in level.players)
{
if(var_03.team == param_01)
{
self showtoplayer(var_03);
}
if(param_00.victimteam == var_03.team && var_03 == param_00.attacker)
{
objective_state(param_00.objid,"invisible");
}
}
}
}
//Function Number: 9
onuse(param_00)
{
if(param_00.pers["team"] == self.victimteam)
{
self.trigger playsound("mp_killconfirm_tags_deny");
param_00 maps\mp\_utility::incplayerstat("killsdenied",1);
param_00 maps\mp\_utility::func_26FB("denied",1);
param_00 maps\mp\gametypes\_persistence::func_26D8("round","denied",param_00.pers["denied"]);
if(self.victim == param_00)
{
var_01 = "tags_retrieved";
var_02 = &"SPLASHES_TAGS_RETRIEVED";
}
else
{
var_01 = "kill_denied";
var_02 = &"SPLASHES_KILL_DENIED";
}
if(isdefined(self.attacker))
{
self.attacker thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_DENIED_KILL",(1,0.5,0.5));
}
}
else
{
self.trigger playsound("mp_killconfirm_tags_pickup");
var_01 = "kill_confirmed";
var_02 = &"SPLASHES_KILL_CONFIRMED";
param_00 maps\mp\_utility::incplayerstat("killsconfirmed",1);
param_00 maps\mp\_utility::func_26FB("confirmed",1);
param_00 maps\mp\gametypes\_persistence::func_26D8("round","confirmed",param_00.pers["confirmed"]);
if(self.attacker != param_00)
{
self.attacker thread onpickup(var_01,var_02);
}
self.trigger playsoundtoplayer(game["voice"][param_00.team] + "kill_confirmed",param_00);
param_00 maps\mp\gametypes\_gamescore::giveteamscoreforobjective(param_00.pers["team"],1);
}
param_00 thread onpickup(var_01,var_02);
resettags();
}
//Function Number: 10
onpickup(param_00,param_01)
{
level endon("game_ended");
self endon("disconnect");
while(!isdefined(self.pers))
{
wait 0.05;
}
thread maps\mp\gametypes\_rank::xpeventpopup(param_01);
maps\mp\gametypes\_gamescore::func_26D3(param_00,self,undefined,1);
thread maps\mp\gametypes\_rank::func_2AB3(param_00);
}
//Function Number: 11
resettags()
{
self.attacker = undefined;
self notify("reset");
self.visuals[0] hide();
self.visuals[1] hide();
self.curorigin = (0,0,1000);
self.trigger.origin = (0,0,1000);
self.visuals[0].origin = (0,0,1000);
self.visuals[1].origin = (0,0,1000);
maps\mp\gametypes\_gameobjects::allowuse("none");
objective_state(self.objid,"invisible");
}
//Function Number: 12
func_3549()
{
level endon("game_ended");
self endon("reset");
var_00 = self.curorigin;
var_01 = self.curorigin + (0,0,12);
for(;;)
{
self.visuals[0] moveto(var_01,0.5,0.15,0.15);
self.visuals[0] rotateyaw(180,0.5);
self.visuals[1] moveto(var_01,0.5,0.15,0.15);
self.visuals[1] rotateyaw(180,0.5);
wait 0.5;
self.visuals[0] moveto(var_00,0.5,0.15,0.15);
self.visuals[0] rotateyaw(180,0.5);
self.visuals[1] moveto(var_00,0.5,0.15,0.15);
self.visuals[1] rotateyaw(180,0.5);
wait 0.5;
}
}
//Function Number: 13
timeout(param_00)
{
level endon("game_ended");
param_00 endon("disconnect");
self notify("timeout");
self endon("timeout");
level maps\mp\gametypes\_hostmigration::func_2740(30);
self.visuals[0] hide();
self.visuals[1] hide();
self.curorigin = (0,0,1000);
self.trigger.origin = (0,0,1000);
self.visuals[0].origin = (0,0,1000);
self.visuals[1].origin = (0,0,1000);
maps\mp\gametypes\_gameobjects::allowuse("none");
}
//Function Number: 14
tagteamupdater(param_00)
{
level endon("game_ended");
self endon("disconnect");
for(;;)
{
self waittill("joined_team");
param_00.victimteam = self.pers["team"];
param_00 resettags();
}
}
//Function Number: 15
func_354A(param_00)
{
level endon("game_ended");
var_01 = param_00.guid;
param_00 waittill("disconnect");
if(isdefined(level.dogtags[var_01]))
{
level.dogtags[var_01] maps\mp\gametypes\_gameobjects::allowuse("none");
if(isdefined(level.dogtags[var_01].attacker))
{
level.dogtags[var_01].attacker thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_DENIED_KILL",(1,0.5,0.5));
}
playfx(level.conf_fx["vanish"],level.dogtags[var_01].curorigin);
level.dogtags[var_01] notify("reset");
wait 0.05;
if(isdefined(level.dogtags[var_01]))
{
objective_delete(level.dogtags[var_01].objid);
level.dogtags[var_01].trigger delete();
for(var_02 = 0;var_02 < level.dogtags[var_01].visuals.size;var_02++)
{
level.dogtags[var_01].visuals[var_02] delete();
}
level.dogtags[var_01] notify("deleted");
level.dogtags[var_01] = undefined;
}
}
}
//Function Number: 16
initgametypeawards()
{
}

View File

@ -0,0 +1,960 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\ctf.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 31
* Decompile Time: 421 ms
* Timestamp: 10/27/2023 2:26:04 AM
*******************************************************************/
//Function Number: 1
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_3315(level.gametype,5);
maps\mp\_utility::registerscorelimitdvar(level.gametype,3);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
maps\mp\_utility::func_3318(4);
func_34B3();
level.teambased = 1;
level.objectivebased = 1;
level.overtimescorewinoverride = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onplayerkilled = ::onplayerkilled;
level.initgametypeawards = ::initgametypeawards;
level.ontimelimit = ::ontimelimit;
level.onspawnplayer = ::onspawnplayer;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
level.flagreturntime = maps\mp\_utility::getintproperty("scr_ctf_returntime",30);
game["dialog"]["gametype"] = "captureflag";
if(getdvarint("g_hardcore"))
{
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
}
else if(getdvarint("camera_thirdPerson"))
{
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_diehard"))
{
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_" + level.gametype + "_promode"))
{
game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";
}
game["dialog"]["offense_obj"] = "capture_obj";
game["dialog"]["defense_obj"] = "capture_obj";
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C();
setdynamicdvar("scr_ctf_roundlimit",1);
maps\mp\_utility::func_3312("ctf",1);
setdynamicdvar("scr_ctf_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("ctf",1);
setdynamicdvar("scr_ctf_halftime",0);
maps\mp\_utility::registerhalftimedvar("ctf",0);
setdynamicdvar("scr_ctf_returntime",30);
setdynamicdvar("scr_ctf_promode",0);
}
//Function Number: 3
onprecachegametype()
{
precachestring(&"MP_FLAG_TAKEN_BY");
precachestring(&"MP_ENEMY_FLAG_TAKEN_BY");
precachestring(&"MP_FLAG_CAPTURED_BY");
precachestring(&"MP_ENEMY_FLAG_CAPTURED_BY");
precachestring(&"MP_FLAG_RETURNED");
precachestring(&"MP_ENEMY_FLAG_RETURNED");
precachestring(&"MP_YOUR_FLAG_RETURNING_IN");
precachestring(&"MP_ENEMY_FLAG_RETURNING_IN");
precachestring(&"MP_ENEMY_FLAG_DROPPED_BY");
precachestring(&"MP_DOM_NEUTRAL_FLAG_CAPTURED");
precachestring(&"MP_GRABBING_FLAG");
precachestring(&"MP_RETURNING_FLAG");
}
//Function Number: 4
onspawnplayer()
{
}
//Function Number: 5
func_34A3()
{
self endon("disconnect");
wait 0.25;
self.otspawned = 1;
var_00 = maps\mp\_utility::func_2B3B(self.team);
thread maps\mp\gametypes\_hud_message::hintmessage(var_00);
}
//Function Number: 6
onstartgametype()
{
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
if(maps\mp\_utility::inovertime())
{
setdvar("ui_override_halftime",0);
}
else if(game["switchedsides"])
{
setdvar("ui_override_halftime",2);
}
else
{
setdvar("ui_override_halftime",1);
}
if(!isdefined(game["original_defenders"]))
{
game["original_defenders"] = game["defenders"];
}
if(game["switchedsides"])
{
var_00 = game["attackers"];
var_01 = game["defenders"];
game["attackers"] = var_01;
game["defenders"] = var_00;
}
game["teamScores"][game["attackers"]] = 0;
setteamscore(game["attackers"],0);
game["teamScores"][game["defenders"]] = 0;
setteamscore(game["defenders"],0);
setclientnamemode("auto_change");
if(level.splitscreen)
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER");
}
else
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER_SCORE");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER_SCORE");
}
maps\mp\_utility::func_3305(game["attackers"],&"OBJECTIVES_CTF");
maps\mp\_utility::func_3305(game["defenders"],&"OBJECTIVES_CTF");
maps\mp\_utility::setobjectivehinttext(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER_HINT");
maps\mp\_utility::setobjectivehinttext(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER_HINT");
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::func_2FD0("allies","mp_ctf_spawn_allies");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_ctf_spawn_axis");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
maps\mp\gametypes\_rank::registerscoreinfo("kill",50);
maps\mp\gametypes\_rank::registerscoreinfo("headshot",50);
maps\mp\gametypes\_rank::registerscoreinfo("assist",20);
maps\mp\gametypes\_rank::registerscoreinfo("pickup",50);
maps\mp\gametypes\_rank::registerscoreinfo("return",50);
maps\mp\gametypes\_rank::registerscoreinfo("capture",250);
maps\mp\gametypes\_rank::registerscoreinfo("kill_carrier",50);
maps\mp\gametypes\_rank::registerscoreinfo("defend",100);
maps\mp\gametypes\_rank::registerscoreinfo("defend_assist",100);
maps\mp\gametypes\_rank::registerscoreinfo("assault",200);
maps\mp\gametypes\_rank::registerscoreinfo("assault_assist",40);
var_02[0] = "ctf";
maps\mp\gametypes\_gameobjects::main(var_02);
thread func_34F2();
}
//Function Number: 7
getspawnpoint()
{
if(self.team == "axis")
{
var_00 = game["attackers"];
}
else
{
var_00 = game["defenders"];
}
if(level.ingraceperiod)
{
var_01 = getentarray("mp_ctf_spawn_" + var_00 + "_start","classname");
var_02 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_01);
}
else
{
var_01 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(var_02);
var_02 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_02);
}
return var_02;
}
//Function Number: 8
func_34F2()
{
level.flagmodel["allies"] = maps\mp\gametypes\_teams::func_2774("allies");
level.icon2d["allies"] = maps\mp\gametypes\_teams::func_2776("allies");
level.carryflag["allies"] = maps\mp\gametypes\_teams::func_2775("allies");
precachemodel(level.flagmodel["allies"]);
precachemodel(level.carryflag["allies"]);
level.flagmodel["axis"] = maps\mp\gametypes\_teams::func_2774("axis");
level.icon2d["axis"] = maps\mp\gametypes\_teams::func_2776("axis");
level.carryflag["axis"] = maps\mp\gametypes\_teams::func_2775("axis");
precachemodel(level.flagmodel["axis"]);
precachemodel(level.carryflag["axis"]);
level.iconescort3d = "waypoint_escort";
level.iconescort2d = "waypoint_escort";
precacheshader(level.iconescort3d);
precacheshader(level.iconescort2d);
level.iconkill3d = "waypoint_kill";
level.iconkill2d = "waypoint_kill";
precacheshader(level.iconkill3d);
precacheshader(level.iconkill2d);
level.iconcaptureflag3d = "waypoint_capture_flag";
level.iconcaptureflag2d = "waypoint_capture_flag";
precacheshader(level.iconcaptureflag3d);
precacheshader(level.iconcaptureflag2d);
level.icondefendflag3d = "waypoint_defend_flag";
level.icondefendflag2d = "waypoint_defend_flag";
precacheshader(level.icondefendflag3d);
precacheshader(level.icondefendflag2d);
level.iconreturnflag3d = "waypoint_return_flag";
level.iconreturnflag2d = "waypoint_return_flag";
precacheshader(level.iconreturnflag3d);
precacheshader(level.iconreturnflag2d);
level.iconwaitforflag3d = "waypoint_waitfor_flag";
level.iconwaitforflag2d = "waypoint_waitfor_flag";
precacheshader(level.iconwaitforflag3d);
precacheshader(level.iconwaitforflag2d);
precacheshader(level.icon2d["axis"]);
precacheshader(level.icon2d["allies"]);
precacheshader("waypoint_flag_friendly");
precacheshader("waypoint_flag_enemy");
precachestring(&"OBJECTIVES_FLAG_HOME");
precachestring(&"OBJECTIVES_FLAG_NAME");
precachestring(&"OBJECTIVES_FLAG_AWAY");
level.teamflags[game["defenders"]] = func_34EC(game["defenders"],"allies");
level.teamflags[game["attackers"]] = func_34EC(game["attackers"],level.otherteam["allies"]);
level.capzones[game["defenders"]] = func_34ED(game["defenders"],"allies");
level.capzones[game["attackers"]] = func_34ED(game["attackers"],level.otherteam["allies"]);
if(level.splitscreen)
{
var_00 = 0;
}
else
{
var_00 = 0.85;
}
level.friendlyflagstatusicon["allies"] = maps\mp\gametypes\_hud_util::func_26A9("waypoint_flag_friendly",32,32,"allies");
level.friendlyflagstatusicon["allies"] maps\mp\gametypes\_hud_util::setpoint("TOP LEFT","TOP LEFT",132,0);
level.friendlyflagstatusicon["allies"].alpha = var_00;
level.friendlyflagstatusicon["allies"].hidewheninmenu = 1;
level thread func_3535(level.friendlyflagstatusicon["allies"]);
level.friendlyflagstatustext["allies"] = maps\mp\gametypes\_hud_util::createserverfontstring("small",1.6,"allies");
level.friendlyflagstatustext["allies"] maps\mp\gametypes\_hud_util::setparent(level.friendlyflagstatusicon["allies"]);
level.friendlyflagstatustext["allies"] maps\mp\gametypes\_hud_util::setpoint("LEFT","RIGHT",4);
level.friendlyflagstatustext["allies"] settext(&"OBJECTIVES_FLAG_HOME");
level.friendlyflagstatustext["allies"].alpha = var_00;
level.friendlyflagstatustext["allies"].color = (1,1,1);
level.friendlyflagstatustext["allies"].glowalpha = 1;
level.friendlyflagstatustext["allies"].hidewheninmenu = 1;
level thread func_3535(level.friendlyflagstatustext["allies"]);
level.enemyflagstatusicon["allies"] = maps\mp\gametypes\_hud_util::func_26A9("waypoint_flag_enemy",24,24,"allies");
level.enemyflagstatusicon["allies"] maps\mp\gametypes\_hud_util::setpoint("TOP LEFT","TOP LEFT",132,26);
level.enemyflagstatusicon["allies"].alpha = var_00;
level.enemyflagstatusicon["allies"].hidewheninmenu = 1;
level thread func_3535(level.enemyflagstatusicon["allies"]);
level.enemyflagstatustext["allies"] = maps\mp\gametypes\_hud_util::createserverfontstring("small",1.6,"allies");
level.enemyflagstatustext["allies"] maps\mp\gametypes\_hud_util::setparent(level.enemyflagstatusicon["allies"]);
level.enemyflagstatustext["allies"] maps\mp\gametypes\_hud_util::setpoint("LEFT","RIGHT",4);
level.enemyflagstatustext["allies"] settext(&"OBJECTIVES_FLAG_HOME");
level.enemyflagstatustext["allies"].alpha = var_00;
level.enemyflagstatustext["allies"].color = (1,1,1);
level.enemyflagstatustext["allies"].glowalpha = 1;
level.enemyflagstatustext["allies"].hidewheninmenu = 1;
level thread func_3535(level.enemyflagstatustext["allies"]);
level.friendlyflagstatusicon["axis"] = maps\mp\gametypes\_hud_util::func_26A9("waypoint_flag_friendly",32,32,"axis");
level.friendlyflagstatusicon["axis"] maps\mp\gametypes\_hud_util::setpoint("TOP LEFT","TOP LEFT",132,0);
level.friendlyflagstatusicon["axis"].alpha = var_00;
level.friendlyflagstatusicon["axis"].hidewheninmenu = 1;
level thread func_3535(level.friendlyflagstatusicon["axis"]);
level.friendlyflagstatustext["axis"] = maps\mp\gametypes\_hud_util::createserverfontstring("small",1.6,"axis");
level.friendlyflagstatustext["axis"] maps\mp\gametypes\_hud_util::setparent(level.friendlyflagstatusicon["axis"]);
level.friendlyflagstatustext["axis"] maps\mp\gametypes\_hud_util::setpoint("LEFT","RIGHT",4);
level.friendlyflagstatustext["axis"] settext(&"OBJECTIVES_FLAG_HOME");
level.friendlyflagstatustext["axis"].alpha = var_00;
level.friendlyflagstatustext["axis"].color = (1,1,1);
level.friendlyflagstatustext["axis"].glowalpha = 1;
level.friendlyflagstatustext["axis"].hidewheninmenu = 1;
level thread func_3535(level.friendlyflagstatustext["axis"]);
level.enemyflagstatusicon["axis"] = maps\mp\gametypes\_hud_util::func_26A9("waypoint_flag_enemy",24,24,"axis");
level.enemyflagstatusicon["axis"] maps\mp\gametypes\_hud_util::setpoint("TOP LEFT","TOP LEFT",132,26);
level.enemyflagstatusicon["axis"].alpha = var_00;
level.enemyflagstatusicon["axis"].hidewheninmenu = 1;
level thread func_3535(level.enemyflagstatusicon["axis"]);
level.enemyflagstatustext["axis"] = maps\mp\gametypes\_hud_util::createserverfontstring("small",1.6,"axis");
level.enemyflagstatustext["axis"] maps\mp\gametypes\_hud_util::setparent(level.enemyflagstatusicon["axis"]);
level.enemyflagstatustext["axis"] maps\mp\gametypes\_hud_util::setpoint("LEFT","RIGHT",4);
level.enemyflagstatustext["axis"] settext(&"OBJECTIVES_FLAG_HOME");
level.enemyflagstatustext["axis"].alpha = var_00;
level.enemyflagstatustext["axis"].color = (1,1,1);
level.enemyflagstatustext["axis"].glowalpha = 1;
level.enemyflagstatustext["axis"].hidewheninmenu = 1;
level thread func_3535(level.enemyflagstatustext["axis"]);
}
//Function Number: 9
func_3535(param_00)
{
level waittill("game_ended");
if(isdefined(param_00))
{
param_00.alpha = 0;
}
}
//Function Number: 10
func_3084(param_00,param_01,param_02,param_03,param_04)
{
wait param_04;
var_05 = spawnfx(param_00,param_01,param_02,param_03);
triggerfx(var_05);
}
//Function Number: 11
func_34EC(param_00,param_01)
{
var_02 = getent("ctf_zone_" + param_01,"targetname");
if(!isdefined(var_02))
{
common_scripts\utility::error("No ctf_zone_" + param_01 + " trigger found in map.");
return;
}
var_03[0] = getent("ctf_flag_" + param_01,"targetname");
if(!isdefined(var_03[0]))
{
common_scripts\utility::error("No ctf_flag_" + param_01 + " script_model found in map.");
return;
}
var_04 = spawn("trigger_radius",var_02.origin,0,96,var_02.height);
var_02 = var_04;
var_03[0] setmodel(level.flagmodel[param_00]);
var_05 = maps\mp\gametypes\_gameobjects::func_29A8(param_00,var_02,var_03,(0,0,85));
var_05 maps\mp\gametypes\_gameobjects::func_2A18("friendly",0.5);
var_05 maps\mp\gametypes\_gameobjects::func_2A18("enemy",0.5);
var_05 maps\mp\gametypes\_gameobjects::setteamusetext("enemy",&"MP_GRABBING_FLAG");
var_05 maps\mp\gametypes\_gameobjects::setteamusetext("friendly",&"MP_RETURNING_FLAG");
var_05 maps\mp\gametypes\_gameobjects::allowcarry("enemy");
var_05 maps\mp\gametypes\_gameobjects::setvisibleteam("none");
var_05 maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconkill2d);
var_05 maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconkill3d);
var_05 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d);
var_05 maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconescort3d);
var_05 maps\mp\gametypes\_gameobjects::setcarryicon(level.icon2d[param_00]);
var_05.objidpingfriendly = 1;
var_05.allowweapons = 1;
var_05.onpickup = ::onpickup;
var_05.onpickupfailed = ::onpickup;
var_05.ondrop = ::ondrop;
var_05.onreset = ::onreset;
var_05.oldradius = var_02.radius;
var_06 = var_02.origin + (0,0,32);
var_07 = var_02.origin + (0,0,-32);
var_08 = bullettrace(var_06,var_07,0,undefined);
var_09 = maps\mp\gametypes\_teams::func_2777(param_00);
var_0A = loadfx(var_09);
var_0B = vectortoangles(var_08["normal"]);
var_0C = anglestoforward(var_0B);
var_0D = anglestoright(var_0B);
thread func_3084(var_0A,var_08["position"],var_0C,var_0D,0.5);
return var_05;
}
//Function Number: 12
func_34ED(param_00,param_01)
{
var_02 = getent("ctf_zone_" + param_01,"targetname");
if(!isdefined(var_02))
{
common_scripts\utility::error("No ctf_zone_" + param_01 + " trigger found in map.");
return;
}
var_03 = [];
var_04 = maps\mp\gametypes\_gameobjects::func_29E7(param_00,var_02,var_03,(0,0,85));
var_04 maps\mp\gametypes\_gameobjects::allowuse("friendly");
var_04 maps\mp\gametypes\_gameobjects::setvisibleteam("any");
var_04 maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icondefendflag2d);
var_04 maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.icondefendflag3d);
var_04 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d);
var_04 maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconcaptureflag3d);
var_04 maps\mp\gametypes\_gameobjects::setusetime(0);
var_04 maps\mp\gametypes\_gameobjects::func_29EC(level.teamflags[maps\mp\_utility::getotherteam(param_00)]);
var_04.onuse = ::onuse;
var_04.oncantuse = ::oncantuse;
var_05 = var_02.origin + (0,0,32);
var_06 = var_02.origin + (0,0,-32);
var_07 = bullettrace(var_05,var_06,0,undefined);
var_08 = maps\mp\gametypes\_teams::func_2777(param_00);
var_09 = loadfx(var_08);
var_0A = vectortoangles(var_07["normal"]);
var_0B = anglestoforward(var_0A);
var_0C = anglestoright(var_0A);
thread func_3084(var_09,var_07["position"],var_0B,var_0C,0.5);
return var_04;
}
//Function Number: 13
onbeginuse(param_00)
{
var_01 = param_00.pers["team"];
if(var_01 == maps\mp\gametypes\_gameobjects::func_2A15())
{
self.trigger.radius = 1024;
return;
}
self.trigger.radius = self.oldradius;
}
//Function Number: 14
onenduse(param_00,param_01,param_02)
{
self.trigger.radius = self.oldradius;
}
//Function Number: 15
onpickup(param_00)
{
self notify("picked_up");
var_01 = param_00.pers["team"];
if(var_01 == "allies")
{
var_02 = "axis";
}
else
{
var_02 = "allies";
}
if(var_01 == maps\mp\gametypes\_gameobjects::func_2A15())
{
param_00 thread maps\mp\gametypes\_hud_message::func_2892("flagreturn",maps\mp\gametypes\_rank::getscoreinfovalue("return"));
param_00 thread [[ level.onxpevent ]]("return");
thread func_34EE();
param_00 maps\mp\_utility::incplayerstat("flagsreturned",1);
param_00 thread maps\mp\_matchdata::loggameevent("return",param_00.origin);
maps\mp\_utility::func_32F9(var_01,maps\mp\_utility::getotherteam(var_01),&"MP_FLAG_RETURNED",&"MP_ENEMY_FLAG_RETURNED","mp_obj_returned","mp_obj_returned","");
maps\mp\_utility::func_26E5("enemy_flag_returned",var_02,"status");
maps\mp\_utility::func_26E5("flag_returned",var_01,"status");
param_00 maps\mp\_utility::func_26FB("returns",1);
param_00 maps\mp\gametypes\_persistence::func_26D8("round","returns",param_00.pers["returns"]);
level.friendlyflagstatustext[var_01] settext(&"OBJECTIVES_FLAG_HOME");
level.friendlyflagstatustext[var_01].glowcolor = (1,1,1);
level.friendlyflagstatustext[var_01].glowalpha = 0;
level.enemyflagstatustext[var_02] settext(&"OBJECTIVES_FLAG_HOME");
level.enemyflagstatustext[var_02].glowcolor = (1,1,1);
level.enemyflagstatustext[var_02].glowalpha = 0;
return;
}
if(isdefined(level.ctf_loadouts) && isdefined(level.ctf_loadouts[var_01]))
{
param_00 thread applyflagcarrierclass();
}
else
{
param_00 func_34EF();
}
level.friendlyflagstatustext[var_02] setplayernamestring(param_00);
level.friendlyflagstatustext[var_02].glowcolor = (0.75,0.25,0.25);
level.friendlyflagstatustext[var_02].glowalpha = 1;
level.enemyflagstatustext[var_01] setplayernamestring(param_00);
level.enemyflagstatustext[var_01].glowcolor = (0.25,0.75,0.25);
level.enemyflagstatustext[var_01].glowalpha = 1;
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconkill2d);
maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconkill3d);
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d);
maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconescort3d);
level.capzones[var_02] maps\mp\gametypes\_gameobjects::allowuse("none");
level.capzones[var_02] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
if(!level.teamflags[var_01] maps\mp\gametypes\_gameobjects::func_29D8())
{
level.capzones[var_01].trigger maps\mp\_entityheadicons::func_277C(param_00,level.iconwaitforflag2d,(0,0,85),undefined,undefined,undefined,undefined,undefined,undefined,undefined,0);
if(isdefined(level.teamflags[var_01].carrier))
{
level.capzones[var_02].trigger maps\mp\_entityheadicons::func_277C(level.teamflags[var_01].carrier,level.iconwaitforflag2d,(0,0,85),undefined,undefined,undefined,undefined,undefined,undefined,undefined,0);
}
}
maps\mp\_utility::func_32F9(var_01,var_02,&"MP_ENEMY_FLAG_TAKEN_BY",&"MP_FLAG_TAKEN_BY","mp_obj_taken","mp_enemy_obj_taken",param_00);
maps\mp\_utility::func_26E5("enemy_flag_taken",var_01,"status");
maps\mp\_utility::func_26E5("flag_taken",var_02,"status");
thread maps\mp\_utility::teamplayercardsplash("callout_flagpickup",param_00);
param_00 thread maps\mp\gametypes\_hud_message::func_2892("flagpickup",maps\mp\gametypes\_rank::getscoreinfovalue("pickup"));
maps\mp\gametypes\_gamescore::func_26D3("pickup",param_00);
param_00 thread [[ level.onxpevent ]]("pickup");
param_00 maps\mp\_utility::incplayerstat("flagscarried",1);
param_00 thread maps\mp\_matchdata::loggameevent("pickup",param_00.origin);
}
//Function Number: 16
func_34EE()
{
maps\mp\gametypes\_gameobjects::func_29D7();
}
//Function Number: 17
ondrop(param_00)
{
var_01 = maps\mp\gametypes\_gameobjects::func_2A15();
var_02 = level.otherteam[var_01];
maps\mp\gametypes\_gameobjects::allowcarry("any");
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconreturnflag2d);
maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconreturnflag3d);
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d);
maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconcaptureflag3d);
level.friendlyflagstatustext[var_01] settext(&"OBJECTIVES_FLAG_AWAY");
level.friendlyflagstatustext[var_01].glowcolor = (1,1,1);
level.friendlyflagstatustext[var_01].glowalpha = 0;
level.enemyflagstatustext[var_02] settext(&"OBJECTIVES_FLAG_AWAY");
level.enemyflagstatustext[var_02].glowcolor = (1,1,1);
level.enemyflagstatustext[var_02].glowalpha = 0;
level.capzones[var_02].trigger maps\mp\_entityheadicons::func_277C("none","",(0,0,0));
if(isdefined(param_00))
{
if(isdefined(param_00.carryflag))
{
param_00 func_34F0();
}
maps\mp\_utility::func_32F9(var_02,"none",&"MP_ENEMY_FLAG_DROPPED_BY","","mp_war_objective_lost","",param_00);
}
else
{
maps\mp\_utility::func_2D68("mp_war_objective_lost",var_02);
}
maps\mp\_utility::func_26E5("enemy_flag_dropped",var_02,"status");
maps\mp\_utility::func_26E5("flag_dropped",var_01,"status");
thread returnaftertime();
}
//Function Number: 18
returnaftertime()
{
self endon("picked_up");
wait level.flagreturntime;
var_00 = maps\mp\gametypes\_gameobjects::func_2A15();
var_01 = level.otherteam[var_00];
maps\mp\_utility::func_2D68("mp_war_objective_taken",var_00);
maps\mp\_utility::func_2D68("mp_war_objective_lost",var_01);
maps\mp\gametypes\_gameobjects::func_29D7();
}
//Function Number: 19
onreset()
{
var_00 = maps\mp\gametypes\_gameobjects::func_2A15();
var_01 = level.otherteam[var_00];
maps\mp\gametypes\_gameobjects::allowcarry("enemy");
maps\mp\gametypes\_gameobjects::setvisibleteam("none");
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconkill2d);
maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconkill3d);
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d);
maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconescort3d);
level.friendlyflagstatustext[var_00] settext(&"OBJECTIVES_FLAG_HOME");
level.friendlyflagstatustext[var_00].glowcolor = (1,1,1);
level.friendlyflagstatustext[var_00].glowalpha = 0;
level.enemyflagstatustext[var_01] settext(&"OBJECTIVES_FLAG_HOME");
level.enemyflagstatustext[var_01].glowcolor = (1,1,1);
level.enemyflagstatustext[var_01].glowalpha = 0;
level.capzones[var_00] maps\mp\gametypes\_gameobjects::allowuse("friendly");
level.capzones[var_00] maps\mp\gametypes\_gameobjects::setvisibleteam("any");
level.capzones[var_00] maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icondefendflag2d);
level.capzones[var_00] maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.icondefendflag3d);
level.capzones[var_00] maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d);
level.capzones[var_00] maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconcaptureflag3d);
level.capzones[var_00].trigger maps\mp\_entityheadicons::func_277C("none","",(0,0,0));
}
//Function Number: 20
onuse(param_00)
{
var_01 = param_00.pers["team"];
if(var_01 == "allies")
{
var_02 = "axis";
}
else
{
var_02 = "allies";
}
maps\mp\_utility::func_26E5("enemy_flag_captured",var_01,"status");
maps\mp\_utility::func_26E5("flag_captured",var_02,"status");
thread maps\mp\_utility::teamplayercardsplash("callout_flagcapture",param_00);
maps\mp\gametypes\_gamescore::giveteamscoreforobjective(var_01,1);
param_00 thread maps\mp\gametypes\_hud_message::func_2892("flag_capture",maps\mp\gametypes\_rank::getscoreinfovalue("capture"));
maps\mp\gametypes\_gamescore::func_26D3("capture",param_00);
param_00 thread [[ level.onxpevent ]]("capture");
param_00 maps\mp\_utility::incplayerstat("flagscaptured",1);
param_00 notify("objective","captured");
param_00 thread maps\mp\_matchdata::loggameevent("capture",param_00.origin);
param_00 maps\mp\_utility::func_26FB("captures",1);
param_00 maps\mp\gametypes\_persistence::func_26D8("round","captures",param_00.pers["captures"]);
maps\mp\_utility::func_32F9(var_01,var_02,&"MP_ENEMY_FLAG_CAPTURED_BY",&"MP_FLAG_CAPTURED_BY","mp_obj_captured","mp_enemy_obj_captured",param_00);
if(isdefined(param_00.carryflag))
{
param_00 func_34F0();
}
if(isdefined(level.ctf_loadouts) && isdefined(level.ctf_loadouts[var_01]))
{
param_00 thread removeflagcarrierclass();
}
level.teamflags[var_02] func_34EE();
level thread func_3F1E(var_01);
}
//Function Number: 21
func_3F1E(param_00)
{
if(maps\mp\_utility::inovertime())
{
game["roundsWon"][param_00]++;
level.finalkillcam_winner = param_00;
game["teamScores"]["axis"] = game["roundsWon"]["axis"];
game["teamScores"]["allies"] = game["roundsWon"]["allies"];
setteamscore("axis",game["teamScores"]["axis"]);
setteamscore("allies",game["teamScores"]["allies"]);
thread maps\mp\gametypes\_gamelogic::endgame(param_00,game["strings"]["score_limit_reached"]);
return;
}
if(game["switchedsides"])
{
if(game["teamScores"][param_00] == maps\mp\_utility::func_18D0("scorelimit"))
{
game["roundsWon"][param_00]++;
game["teamScores"]["axis"] = game["roundsWon"]["axis"];
game["teamScores"]["allies"] = game["roundsWon"]["allies"];
setteamscore("axis",game["teamScores"]["axis"]);
setteamscore("allies",game["teamScores"]["allies"]);
if(game["roundsWon"][param_00] > game["roundsWon"][level.otherteam[param_00]])
{
level.finalkillcam_winner = param_00;
thread maps\mp\gametypes\_gamelogic::endgame(param_00,game["strings"]["score_limit_reached"]);
return;
}
level.finalkillcam_winner = "none";
thread maps\mp\gametypes\_gamelogic::endgame("overtime",game["strings"]["score_limit_reached"]);
return;
}
return;
}
if(game["teamScores"][param_00] == maps\mp\_utility::func_18D0("scorelimit"))
{
game["roundsWon"][param_00]++;
level.finalkillcam_winner = param_00;
game["teamScores"]["axis"] = game["roundsWon"]["axis"];
game["teamScores"]["allies"] = game["roundsWon"]["allies"];
setteamscore("axis",game["teamScores"]["axis"]);
setteamscore("allies",game["teamScores"]["allies"]);
thread maps\mp\gametypes\_gamelogic::endgame("halftime",game["strings"]["score_limit_reached"]);
return;
}
}
//Function Number: 22
ontimelimit()
{
if(maps\mp\_utility::inovertime())
{
game["teamScores"]["axis"] = game["roundsWon"]["axis"];
game["teamScores"]["allies"] = game["roundsWon"]["allies"];
setteamscore("axis",game["teamScores"]["axis"]);
setteamscore("allies",game["teamScores"]["allies"]);
level.finalkillcam_winner = "none";
thread maps\mp\gametypes\_gamelogic::endgame("tie",game["strings"]["time_limit_reached"]);
return;
}
if(game["switchedsides"])
{
if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
{
game["roundsWon"]["axis"]++;
}
else if(game["teamScores"]["allies"] > game["teamScores"]["axis"])
{
game["roundsWon"]["allies"]++;
}
game["teamScores"]["axis"] = game["roundsWon"]["axis"];
game["teamScores"]["allies"] = game["roundsWon"]["allies"];
setteamscore("axis",game["teamScores"]["axis"]);
setteamscore("allies",game["teamScores"]["allies"]);
if(game["roundsWon"]["axis"] > game["roundsWon"]["allies"])
{
level.finalkillcam_winner = "axis";
thread maps\mp\gametypes\_gamelogic::endgame("axis",game["strings"]["time_limit_reached"]);
return;
}
if(game["roundsWon"]["allies"] > game["roundsWon"]["axis"])
{
level.finalkillcam_winner = "allies";
thread maps\mp\gametypes\_gamelogic::endgame("allies",game["strings"]["time_limit_reached"]);
return;
}
level.finalkillcam_winner = "none";
thread maps\mp\gametypes\_gamelogic::endgame("overtime",game["strings"]["time_limit_reached"]);
return;
}
if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
{
game["roundsWon"]["axis"]++;
level.finalkillcam_winner = "axis";
}
else if(game["teamScores"]["allies"] > game["teamScores"]["axis"])
{
game["roundsWon"]["allies"]++;
level.finalkillcam_winner = "allies";
}
else
{
level.finalkillcam_winner = "none";
}
game["teamScores"]["axis"] = game["roundsWon"]["axis"];
game["teamScores"]["allies"] = game["roundsWon"]["allies"];
setteamscore("axis",game["teamScores"]["axis"]);
setteamscore("allies",game["teamScores"]["allies"]);
thread maps\mp\gametypes\_gamelogic::endgame("halftime",game["strings"]["time_limit_reached"]);
}
//Function Number: 23
applyflagcarrierclass()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
if(isdefined(self.iscarrying) && self.iscarrying == 1)
{
self notify("force_cancel_placement");
wait 0.05;
}
while(self ismantling())
{
wait 0.05;
}
while(!self isonground())
{
wait 0.05;
}
if(maps\mp\_utility::isjuggernaut())
{
self notify("lost_juggernaut");
wait 0.05;
}
self.pers["gamemodeLoadout"] = level.ctf_loadouts[self.team];
if(isdefined(self.setspawnpoint))
{
maps\mp\perks\_perkfunctions::func_2A63(self.setspawnpoint);
}
var_00 = spawn("script_model",self.origin);
var_00.angles = self.angles;
var_00.playerspawnpos = self.origin;
var_00.notti = 1;
self.setspawnpoint = var_00;
self.gamemode_chosenclass = self.class;
self.pers["class"] = "gamemode";
self.pers["lastClass"] = "gamemode";
self.class = "gamemode";
self.lastclass = "gamemode";
self notify("faux_spawn");
self.gameobject_fauxspawn = 1;
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
thread waitattachflag();
}
//Function Number: 24
waitattachflag()
{
level endon("game_ende");
self endon("disconnect");
self endon("death");
self waittill("spawned_player");
func_34EF();
}
//Function Number: 25
removeflagcarrierclass()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
if(isdefined(self.iscarrying) && self.iscarrying == 1)
{
self notify("force_cancel_placement");
wait 0.05;
}
while(self ismantling())
{
wait 0.05;
}
while(!self isonground())
{
wait 0.05;
}
if(maps\mp\_utility::isjuggernaut())
{
self notify("lost_juggernaut");
wait 0.05;
}
self.pers["gamemodeLoadout"] = undefined;
if(isdefined(self.setspawnpoint))
{
maps\mp\perks\_perkfunctions::func_2A63(self.setspawnpoint);
}
var_00 = spawn("script_model",self.origin);
var_00.angles = self.angles;
var_00.playerspawnpos = self.origin;
var_00.notti = 1;
self.setspawnpoint = var_00;
self notify("faux_spawn");
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
}
//Function Number: 26
oncantuse(param_00)
{
}
//Function Number: 27
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(isdefined(param_01) && isplayer(param_01) && param_01.pers["team"] != self.pers["team"])
{
if(isdefined(param_01.carryflag))
{
param_01 maps\mp\_utility::incplayerstat("killsasflagcarrier",1);
}
if(isdefined(self.carryflag))
{
param_01 thread [[ level.onxpevent ]]("kill_carrier");
maps\mp\gametypes\_gamescore::func_26D3("kill_carrier",param_01);
param_01 maps\mp\_utility::incplayerstat("flagcarrierkills",1);
param_01 maps\mp\_utility::func_26FB("defends",1);
param_01 maps\mp\gametypes\_persistence::func_26D8("round","defends",param_01.pers["defends"]);
thread maps\mp\_matchdata::func_28B4(param_09,"carrying");
func_34F0();
return;
}
return;
}
if(isdefined(self.carryflag))
{
func_34F0();
}
}
//Function Number: 28
func_34EF()
{
var_00 = level.otherteam[self.pers["team"]];
self attach(level.carryflag[var_00],"J_spine4",1);
self.carryflag = level.carryflag[var_00];
}
//Function Number: 29
func_34F0()
{
self detach(self.carryflag,"J_spine4");
self.carryflag = undefined;
}
//Function Number: 30
initgametypeawards()
{
maps\mp\_awards::func_2D85("flagscaptured",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("flagsreturned",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("flagcarrierkills",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("flagscarried",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("killsasflagcarrier",0,::maps\mp\_awards::func_2DA7);
}
//Function Number: 31
func_34B3()
{
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",5,"class","inUse"))
{
level.ctf_loadouts["axis"] = maps\mp\_utility::func_334E("axis",5);
}
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","allies",5,"class","inUse"))
{
level.ctf_loadouts["allies"] = maps\mp\_utility::func_334E("allies",5);
}
}

View File

@ -0,0 +1,715 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\ctfpro.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 26
* Decompile Time: 373 ms
* Timestamp: 10/27/2023 2:26:06 AM
*******************************************************************/
//Function Number: 1
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
maps\mp\_utility::registerscorelimitdvar(level.gametype,1000);
maps\mp\_utility::func_3315(level.gametype,6,0,0);
maps\mp\_utility::func_3312(level.gametype,2,0,0);
maps\mp\_utility::setoverridewatchdvar("winlimit",2);
maps\mp\_utility::func_330E(level.gametype,1,0,0);
maps\mp\_utility::func_3317(level.gametype,0,0,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,1,0,0);
level.teambased = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onplayerkilled = ::onplayerkilled;
level.initgametypeawards = ::initgametypeawards;
level.onhalftime = ::ontimelimit;
level.ontimelimit = ::ontimelimit;
level.onspawnplayer = ::onspawnplayer;
level.scorelimitoverride = 1;
level.overtimescorewinoverride = 1;
level.flagreturntime = maps\mp\_utility::getintproperty("scr_ctf_returntime",30);
game["dialog"]["gametype"] = "captureflag";
if(getdvarint("g_hardcore"))
{
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
}
else if(getdvarint("camera_thirdPerson"))
{
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_diehard"))
{
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_" + level.gametype + "_promode"))
{
game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";
}
game["dialog"]["offense_obj"] = "capture_obj";
game["dialog"]["defense_obj"] = "capture_obj";
}
//Function Number: 2
onprecachegametype()
{
precachestring(&"MP_FLAG_TAKEN_BY");
precachestring(&"MP_ENEMY_FLAG_TAKEN_BY");
precachestring(&"MP_FLAG_CAPTURED_BY");
precachestring(&"MP_ENEMY_FLAG_CAPTURED_BY");
precachestring(&"MP_FLAG_RETURNED");
precachestring(&"MP_ENEMY_FLAG_RETURNED");
precachestring(&"MP_YOUR_FLAG_RETURNING_IN");
precachestring(&"MP_ENEMY_FLAG_RETURNING_IN");
precachestring(&"MP_ENEMY_FLAG_DROPPED_BY");
precachestring(&"MP_DOM_NEUTRAL_FLAG_CAPTURED");
precachestring(&"MP_GRABBING_FLAG");
precachestring(&"MP_RETURNING_FLAG");
}
//Function Number: 3
onspawnplayer()
{
if(maps\mp\_utility::inovertime() && !isdefined(self.otspawned))
{
thread func_34A3();
}
}
//Function Number: 4
func_34A3()
{
self endon("disconnect");
wait 0.25;
self.otspawned = 1;
var_00 = maps\mp\_utility::func_2B3B(self.team);
thread maps\mp\gametypes\_hud_message::hintmessage(var_00);
}
//Function Number: 5
onstartgametype()
{
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
if(!isdefined(game["original_defenders"]))
{
game["original_defenders"] = game["defenders"];
}
if(game["switchedsides"])
{
var_00 = game["attackers"];
var_01 = game["defenders"];
game["attackers"] = var_01;
game["defenders"] = var_00;
if(game["roundsWon"][game["defenders"]] > 0)
{
game["teamScores"][game["defenders"]] = 500;
setteamscore(game["defenders"],500);
}
else
{
game["teamScores"][game["defenders"]] = 0;
setteamscore(game["defenders"],0);
}
}
setclientnamemode("auto_change");
if(level.splitscreen)
{
if(maps\mp\_utility::inovertime())
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_GRAB_FLAG");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_GRAB_FLAG");
}
else
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER");
}
}
else if(maps\mp\_utility::inovertime())
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_GRAB_FLAG_SCORE");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_GRAB_FLAG_SCORE");
}
else
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER_SCORE");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER_SCORE");
}
if(maps\mp\_utility::inovertime())
{
maps\mp\_utility::func_3305(game["attackers"],&"OBJECTIVES_OVERTIME_CTF");
maps\mp\_utility::func_3305(game["defenders"],&"OBJECTIVES_OVERTIME_CTF");
maps\mp\_utility::setobjectivehinttext(game["attackers"],&"OBJECTIVES_GRAB_FLAG_HINT");
maps\mp\_utility::setobjectivehinttext(game["defenders"],&"OBJECTIVES_GRAB_FLAG_HINT");
}
else
{
maps\mp\_utility::func_3305(game["attackers"],&"OBJECTIVES_CTF");
maps\mp\_utility::func_3305(game["defenders"],&"OBJECTIVES_CTF");
maps\mp\_utility::setobjectivehinttext(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER_HINT");
maps\mp\_utility::setobjectivehinttext(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER_HINT");
}
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_ctf_pro_spawn_attackers_start");
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_ctf_pro_spawn_defenders_start");
maps\mp\gametypes\_spawnlogic::func_2FD0(game["attackers"],"mp_ctf_pro_spawn_attackers");
maps\mp\gametypes\_spawnlogic::func_2FD0(game["defenders"],"mp_ctf_pro_spawn_defenders");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
maps\mp\gametypes\_rank::registerscoreinfo("kill",50);
maps\mp\gametypes\_rank::registerscoreinfo("headshot",50);
maps\mp\gametypes\_rank::registerscoreinfo("assist",20);
maps\mp\gametypes\_rank::registerscoreinfo("pickup",50);
maps\mp\gametypes\_rank::registerscoreinfo("return",50);
maps\mp\gametypes\_rank::registerscoreinfo("capture",250);
maps\mp\gametypes\_rank::registerscoreinfo("kill_carrier",50);
maps\mp\gametypes\_rank::registerscoreinfo("defend",100);
maps\mp\gametypes\_rank::registerscoreinfo("defend_assist",100);
maps\mp\gametypes\_rank::registerscoreinfo("assault",100);
maps\mp\gametypes\_rank::registerscoreinfo("assault_assist",100);
maps\mp\killstreaks\_killstreaks::registeradrenalineinfo("capture",1);
var_02[0] = "ctf_pro";
maps\mp\gametypes\_gameobjects::main(var_02);
thread func_3506();
}
//Function Number: 6
getspawnpoint()
{
if(level.ingraceperiod)
{
if(self.team == game["attackers"])
{
var_00 = "attackers";
}
else
{
var_00 = "defenders";
}
var_01 = getentarray("mp_ctf_pro_spawn_" + var_00 + "_start","classname");
var_02 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_01);
}
else
{
var_01 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(self.team);
var_02 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_02);
}
return var_02;
}
//Function Number: 7
func_3506()
{
level.flagmodel[game["defenders"]] = maps\mp\gametypes\_teams::func_2774(game["defenders"]);
level.icon2d[game["defenders"]] = maps\mp\gametypes\_teams::func_2776(game["defenders"]);
level.carryflag[game["defenders"]] = maps\mp\gametypes\_teams::func_2775(game["defenders"]);
precachemodel(level.flagmodel[game["defenders"]]);
precachemodel(level.carryflag[game["defenders"]]);
level.iconescort2d["a"] = "waypoint_escort_a";
level.iconescort2d["b"] = "waypoint_escort_b";
level.iconescort3d["a"] = level.iconescort2d["a"];
level.iconescort3d["b"] = level.iconescort2d["b"];
precacheshader(level.iconescort2d["a"]);
precacheshader(level.iconescort2d["b"]);
level.iconkill2d["a"] = "waypoint_kill_a";
level.iconkill2d["b"] = "waypoint_kill_b";
level.iconkill3d["a"] = level.iconkill2d["a"];
level.iconkill3d["b"] = level.iconkill2d["b"];
precacheshader(level.iconkill2d["a"]);
precacheshader(level.iconkill2d["b"]);
level.iconcaptureflag2d["a"] = "waypoint_capture_flag_a";
level.iconcaptureflag2d["b"] = "waypoint_capture_flag_b";
level.iconcaptureflag3d["a"] = level.iconcaptureflag2d["a"];
level.iconcaptureflag3d["b"] = level.iconcaptureflag2d["b"];
precacheshader(level.iconcaptureflag2d["a"]);
precacheshader(level.iconcaptureflag2d["b"]);
level.icondefendflag2d["a"] = "waypoint_defend_flag_a";
level.icondefendflag2d["b"] = "waypoint_defend_flag_b";
level.icondefendflag3d["a"] = level.icondefendflag2d["a"];
level.icondefendflag3d["b"] = level.icondefendflag2d["b"];
precacheshader(level.icondefendflag2d["a"]);
precacheshader(level.icondefendflag2d["b"]);
level.iconreturnflag2d["a"] = "waypoint_return_flag_a";
level.iconreturnflag2d["b"] = "waypoint_return_flag_b";
level.iconreturnflag3d["a"] = level.iconreturnflag2d["a"];
level.iconreturnflag3d["b"] = level.iconreturnflag2d["b"];
precacheshader(level.iconreturnflag2d["a"]);
precacheshader(level.iconreturnflag2d["b"]);
level.iconflagbase2d = "waypoint_flag_base";
level.iconflagbase3d = level.iconflagbase2d;
precacheshader(level.iconflagbase2d);
precacheshader(level.icon2d[game["defenders"]]);
precacheshader("waypoint_flag_friendly");
precacheshader("waypoint_flag_enemy");
precachestring(&"OBJECTIVES_FLAG_HOME");
precachestring(&"OBJECTIVES_FLAG_NAME");
precachestring(&"OBJECTIVES_FLAG_AWAY");
level.teamflags[game["defenders"]] = func_3509(game["defenders"]);
level.capzones[game["attackers"]] = createcapzones(game["attackers"]);
}
//Function Number: 8
ontimelimit()
{
if(game["switchedsides"] == 1)
{
if(game["roundsWon"][game["defenders"]] > 0)
{
game["teamScores"][game["defenders"]] = 1;
setteamscore(game["defenders"],1);
game["teamScores"][game["attackers"]] = 0;
setteamscore(game["attackers"],0);
maps\mp\_utility::setoverridewatchdvar("winlimit",1);
level.onlyroundoverride = 1;
thread maps\mp\gametypes\_gamelogic::endgame(game["defenders"],game["strings"]["time_limit_reached"]);
return;
}
game["teamScores"][game["defenders"]] = 0;
setteamscore(game["defenders"],0);
game["teamScores"][game["attackers"]] = 0;
setteamscore(game["attackers"],0);
thread maps\mp\gametypes\_gamelogic::endgame("tie",game["strings"]["time_limit_reached"]);
return;
}
game["roundsPlayed"]++;
game["teamScores"][game["attackers"]] = 0;
setteamscore(game["attackers"],0);
thread maps\mp\gametypes\_gamelogic::endgame("halftime",game["strings"]["time_limit_reached"]);
}
//Function Number: 9
func_3084(param_00,param_01,param_02,param_03,param_04)
{
wait param_04;
var_05 = spawnfx(param_00,param_01,param_02,param_03);
triggerfx(var_05);
}
//Function Number: 10
func_3509(param_00)
{
var_01 = [];
var_41[0].points = 200;
var_41[1].points = 200;
return var_41;
}
//Function Number: 11
func_34EC(param_00,param_01)
{
var_02 = getent("ctf_pro_trig_" + param_01,"targetname");
if(!isdefined(var_02))
{
common_scripts\utility::error("No ctf_pro_trig_" + param_01 + " trigger found in map.");
return;
}
var_03 = getent("ctf_pro_flag_" + param_01,"targetname");
if(!isdefined(var_03))
{
common_scripts\utility::error("No ctf_pro_flag_" + param_01 + " script_model found in map.");
return;
}
var_04 = getent("ctf_pro_flag_spawn_" + param_01,"targetname");
if(!isdefined(var_04))
{
common_scripts\utility::error("No ctf_pro_flag_spawn_" + param_01 + " script_origin found in map.");
return;
}
var_03 setmodel(level.flagmodel[param_00]);
var_05[0] = var_03;
var_06 = maps\mp\gametypes\_gameobjects::func_29A8(param_00,var_02,var_05,(0,0,85));
var_06 maps\mp\gametypes\_gameobjects::func_2A18("friendly",0.5);
var_06 maps\mp\gametypes\_gameobjects::func_2A18("enemy",0.5);
var_06 maps\mp\gametypes\_gameobjects::setteamusetext("enemy",&"MP_GRABBING_FLAG");
var_06 maps\mp\gametypes\_gameobjects::setteamusetext("friendly",&"MP_RETURNING_FLAG");
var_06 maps\mp\gametypes\_gameobjects::allowcarry("enemy");
var_06 maps\mp\gametypes\_gameobjects::setvisibleteam("none");
var_06 maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconkill2d[param_01]);
var_06 maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconkill3d[param_01]);
var_06 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d[param_01]);
var_06 maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconescort3d[param_01]);
var_06 maps\mp\gametypes\_gameobjects::setcarryicon(level.icon2d[param_00]);
var_06.objidpingfriendly = 1;
var_06.allowweapons = 1;
var_06.onpickup = ::onpickup;
var_06.onpickupfailed = ::onpickup;
var_06.ondrop = ::ondrop;
var_06.onreset = ::onreset;
var_06.oldradius = var_02.radius;
var_06.athome = 1;
var_06.label = param_01;
var_05 = [];
var_07 = maps\mp\gametypes\_gameobjects::func_29E7(param_00,var_04,var_05,(0,0,85));
var_07 maps\mp\gametypes\_gameobjects::allowuse("none");
var_07 maps\mp\gametypes\_gameobjects::setvisibleteam("any");
var_07 maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icondefendflag2d[param_01]);
var_07 maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.icondefendflag3d[param_01]);
var_07 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d[param_01]);
var_07 maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconcaptureflag3d[param_01]);
var_06.marker = var_07;
var_08 = var_02.origin + (0,0,32);
var_09 = var_02.origin + (0,0,-32);
var_0A = bullettrace(var_08,var_09,0,undefined);
var_0B = maps\mp\gametypes\_teams::func_2777(param_00);
var_0C = loadfx(var_0B);
var_0D = vectortoangles(var_0A["normal"]);
var_0E = anglestoforward(var_0D);
var_0F = anglestoright(var_0D);
thread func_3084(var_0C,var_0A["position"],var_0E,var_0F,0.5);
return var_06;
}
//Function Number: 12
createcapzones(param_00)
{
var_01 = [];
var_01 = getentarray("ctf_pro_zone","targetname");
if(!isdefined(var_01[0]))
{
common_scripts\utility::error("No ctf_pro_zone triggers found in map.");
return;
}
var_02 = [];
for(var_03 = 0;var_03 < var_01.size;var_03++)
{
if(isdefined(level.teamflags[maps\mp\_utility::getotherteam(param_00)][var_03]))
{
var_04 = [];
var_02[var_03] = maps\mp\gametypes\_gameobjects::func_29E7(param_00,var_01[var_03],var_04,(0,0,0));
var_02[var_03] maps\mp\gametypes\_gameobjects::allowuse("friendly");
var_02[var_03] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
var_02[var_03] maps\mp\gametypes\_gameobjects::setusetime(0);
var_02[var_03] maps\mp\gametypes\_gameobjects::func_29EC(level.teamflags[maps\mp\_utility::getotherteam(param_00)][var_03]);
var_02[var_03].onuse = ::onuse;
var_02[var_03].oncantuse = ::oncantuse;
}
}
var_02[0].origin = var_01[0].origin;
var_05 = var_01[0].origin + (0,0,32);
var_06 = var_01[0].origin + (0,0,-32);
var_07 = bullettrace(var_05,var_06,0,undefined);
var_08 = maps\mp\gametypes\_teams::func_2777(param_00);
var_09 = loadfx(var_08);
var_0A = vectortoangles(var_07["normal"]);
var_0B = anglestoforward(var_0A);
var_0C = anglestoright(var_0A);
thread func_3084(var_09,var_07["position"],var_0B,var_0C,0.5);
return var_02;
}
//Function Number: 13
onbeginuse(param_00)
{
var_01 = param_00.pers["team"];
if(var_01 == maps\mp\gametypes\_gameobjects::func_2A15())
{
self.trigger.radius = 1024;
return;
}
self.trigger.radius = self.oldradius;
}
//Function Number: 14
onenduse(param_00,param_01,param_02)
{
self.trigger.radius = self.oldradius;
}
//Function Number: 15
onpickup(param_00)
{
self notify("picked_up");
var_01 = param_00.pers["team"];
if(var_01 == "allies")
{
var_02 = "axis";
}
else
{
var_02 = "allies";
}
if(var_01 == maps\mp\gametypes\_gameobjects::func_2A15())
{
thread maps\mp\_utility::teamplayercardsplash("callout_flagreturn",param_00);
param_00 thread maps\mp\gametypes\_hud_message::func_2892("flagreturn",maps\mp\gametypes\_rank::getscoreinfovalue("return"));
maps\mp\gametypes\_gamescore::func_26D3("return",param_00);
param_00 thread [[ level.onxpevent ]]("return");
thread func_34EE();
param_00 maps\mp\_utility::incplayerstat("flagsreturned",1);
param_00 maps\mp\_utility::func_26FB("returns",1);
param_00 thread maps\mp\_matchdata::loggameevent("return",param_00.origin);
maps\mp\_utility::func_32F9(var_01,maps\mp\_utility::getotherteam(var_01),&"MP_FLAG_RETURNED",&"MP_ENEMY_FLAG_RETURNED","mp_obj_returned","mp_obj_returned","");
maps\mp\_utility::func_26E5("enemy_flag_returned",var_02,"status");
maps\mp\_utility::func_26E5("flag_returned",var_01,"status");
return;
}
param_00 func_34EF(self);
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconkill2d[self.label]);
maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconkill3d[self.label]);
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d[self.label]);
maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconescort3d[self.label]);
self.marker maps\mp\gametypes\_gameobjects::setvisibleteam("none");
param_00.zoneheadicon = level.capzones[game["attackers"]][0] maps\mp\_entityheadicons::func_277C(param_00,level.iconflagbase2d,(0,0,0),24,24,undefined,undefined,undefined,undefined,undefined,0);
param_00.zonemapicon = maps\mp\gametypes\_gameobjects::func_2A31();
objective_add(param_00.zonemapicon,"invisible",(0,0,0));
objective_position(param_00.zonemapicon,level.capzones[game["attackers"]][0].origin);
objective_state(param_00.zonemapicon,"active");
objective_player(param_00.zonemapicon,param_00 getentitynumber());
objective_icon(param_00.zonemapicon,level.iconflagbase2d);
maps\mp\_utility::func_32F9(var_01,var_02,&"MP_ENEMY_FLAG_TAKEN_BY",&"MP_FLAG_TAKEN_BY","mp_obj_taken","mp_enemy_obj_taken",param_00);
maps\mp\_utility::func_26E5("enemy_flag_taken",var_01,"status");
maps\mp\_utility::func_26E5("flag_taken",var_02,"status");
thread maps\mp\_utility::teamplayercardsplash("callout_flagpickup",param_00);
param_00 thread maps\mp\gametypes\_hud_message::func_2892("flagpickup",maps\mp\gametypes\_rank::getscoreinfovalue("pickup"));
maps\mp\gametypes\_gamescore::func_26D3("pickup",param_00);
param_00 thread [[ level.onxpevent ]]("pickup");
param_00 maps\mp\_utility::incplayerstat("flagscarried",1);
param_00 thread maps\mp\_matchdata::loggameevent("pickup",param_00.origin);
}
//Function Number: 16
func_34EE()
{
maps\mp\gametypes\_gameobjects::func_29D7();
}
//Function Number: 17
ondrop(param_00)
{
var_01 = maps\mp\gametypes\_gameobjects::func_2A15();
var_02 = level.otherteam[var_01];
maps\mp\gametypes\_gameobjects::allowcarry("any");
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconreturnflag2d[self.label]);
maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconreturnflag3d[self.label]);
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d[self.label]);
maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconcaptureflag3d[self.label]);
if(isdefined(param_00))
{
if(isdefined(param_00.carryflag))
{
param_00 func_34F0();
}
maps\mp\_utility::func_32F9(var_02,"none",&"MP_ENEMY_FLAG_DROPPED_BY","","mp_war_objective_lost","",param_00);
if(isdefined(param_00.zoneheadicon))
{
param_00.zoneheadicon destroy();
}
if(isdefined(param_00.zonemapicon))
{
maps\mp\_utility::_objective_delete(param_00.zonemapicon);
param_00.zonemapicon = undefined;
}
}
else
{
maps\mp\_utility::func_2D68("mp_war_objective_lost",var_02);
}
maps\mp\_utility::func_26E5("enemy_flag_dropped",var_02,"status");
maps\mp\_utility::func_26E5("flag_dropped",var_01,"status");
thread returnaftertime();
}
//Function Number: 18
returnaftertime()
{
self endon("picked_up");
wait level.flagreturntime;
maps\mp\gametypes\_gameobjects::func_29D7();
}
//Function Number: 19
onreset()
{
var_00 = maps\mp\gametypes\_gameobjects::func_2A15();
var_01 = level.otherteam[var_00];
maps\mp\gametypes\_gameobjects::allowcarry("enemy");
maps\mp\gametypes\_gameobjects::setvisibleteam("none");
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconkill2d[self.label]);
maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconkill3d[self.label]);
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d[self.label]);
maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconescort3d[self.label]);
self.marker maps\mp\gametypes\_gameobjects::setvisibleteam("any");
}
//Function Number: 20
onuse(param_00)
{
var_01 = param_00.pers["team"];
if(var_01 == "allies")
{
var_02 = "axis";
}
else
{
var_02 = "allies";
}
maps\mp\_utility::func_26E5("enemy_flag_captured",var_01,"status");
maps\mp\_utility::func_26E5("flag_captured",var_02,"status");
thread maps\mp\_utility::teamplayercardsplash("callout_flagcapture",param_00);
givescore(var_01,param_00.cappedflag.points);
param_00 thread maps\mp\gametypes\_hud_message::func_2892("flag_capture",maps\mp\gametypes\_rank::getscoreinfovalue("capture"));
maps\mp\gametypes\_gamescore::func_26D3("capture",param_00);
param_00 thread [[ level.onxpevent ]]("capture");
param_00 maps\mp\_utility::incplayerstat("flagscaptured",1);
param_00 maps\mp\_utility::func_26FB("captures",1);
param_00 notify("objective","captured");
param_00 thread maps\mp\_matchdata::loggameevent("capture",param_00.origin);
if(isdefined(level.adrenalineinfo["capture"]))
{
param_00 maps\mp\killstreaks\_killstreaks::giveadrenaline("capture");
}
maps\mp\_utility::func_32F9(var_01,var_02,&"MP_ENEMY_FLAG_CAPTURED_BY",&"MP_FLAG_CAPTURED_BY","mp_obj_captured","mp_enemy_obj_captured",param_00);
if(isdefined(param_00.carryflag))
{
param_00 func_34F0();
}
if(isdefined(param_00.zoneheadicon))
{
param_00.zoneheadicon destroy();
}
if(isdefined(param_00.zonemapicon))
{
maps\mp\_utility::_objective_delete(param_00.zonemapicon);
param_00.zonemapicon = undefined;
}
param_00.cappedflag func_34EE();
}
//Function Number: 21
givescore(param_00,param_01)
{
maps\mp\gametypes\_gamescore::giveteamscoreforobjective(param_00,param_01);
if(game["state"] != "playing")
{
return;
}
if(game["switchedsides"])
{
if(game["teamScores"][game["attackers"]] >= maps\mp\_utility::func_18D0("scorelimit"))
{
maps\mp\_utility::setoverridewatchdvar("winlimit",1);
level.onlyroundoverride = 1;
if(game["roundsWon"][game["defenders"]] == 0)
{
game["teamScores"][game["attackers"]] = 1;
setteamscore(game["attackers"],1);
game["teamScores"][game["defenders"]] = 0;
setteamscore(game["defenders"],0);
thread maps\mp\gametypes\_gamelogic::endgame(game["attackers"],game["strings"]["score_limit_reached"]);
return;
}
game["teamScores"][game["attackers"]] = 1;
setteamscore(game["attackers"],1);
game["teamScores"][game["defenders"]] = 1;
setteamscore(game["defenders"],1);
thread maps\mp\gametypes\_gamelogic::endgame("tie",game["strings"]["score_limit_reached"]);
return;
}
return;
}
if(game["teamScores"][game["attackers"]] >= maps\mp\_utility::func_18D0("scorelimit"))
{
game["roundsPlayed"]++;
game["teamScores"][game["attackers"]] = 1;
setteamscore(game["attackers"],1);
game["teamScores"][game["defenders"]] = 0;
setteamscore(game["defenders"],0);
game["roundsWon"][game["attackers"]]++;
maps\mp\gametypes\_gamescore::func_26EB(game["attackers"]);
thread maps\mp\gametypes\_gamelogic::endgame("halftime",game["strings"]["score_limit_reached"]);
}
}
//Function Number: 22
oncantuse(param_00)
{
}
//Function Number: 23
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(isdefined(param_01) && isplayer(param_01) && param_01.pers["team"] != self.pers["team"])
{
if(isdefined(param_01.carryflag))
{
param_01 maps\mp\_utility::incplayerstat("killsasflagcarrier",1);
}
if(isdefined(self.carryflag))
{
thread maps\mp\_utility::teamplayercardsplash("callout_killflagcarrier",param_01);
param_01 thread maps\mp\gametypes\_hud_message::func_2892("killflagcarrier",maps\mp\gametypes\_rank::getscoreinfovalue("kill_carrier"));
maps\mp\gametypes\_gamescore::func_26D3("kill_carrier",param_01);
param_01 thread [[ level.onxpevent ]]("kill_carrier");
param_01 maps\mp\_utility::func_26FB("defends",1);
thread maps\mp\_matchdata::func_28B4(param_09,"carrying");
func_34F0();
}
}
}
//Function Number: 24
func_34EF(param_00)
{
var_01 = level.otherteam[self.pers["team"]];
self attach(level.carryflag[var_01],"J_spine4",1);
self.carryflag = level.carryflag[var_01];
self.cappedflag = param_00;
}
//Function Number: 25
func_34F0()
{
self detach(self.carryflag,"J_spine4");
self.carryflag = undefined;
}
//Function Number: 26
initgametypeawards()
{
maps\mp\_awards::func_2D85("flagscaptured",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("flagsreturned",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("flagcarrierkills",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("flagscarried",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("killsasflagcarrier",0,::maps\mp\_awards::func_2DA7);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,141 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\dm.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 5
* Decompile Time: 74 ms
* Timestamp: 10/27/2023 2:26:08 AM
*******************************************************************/
//Function Number: 1
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_3315(level.gametype,10);
maps\mp\_utility::registerscorelimitdvar(level.gametype,1000);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onnormaldeath = ::onnormaldeath;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
game["dialog"]["gametype"] = "freeforall";
if(getdvarint("g_hardcore"))
{
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
return;
}
if(getdvarint("camera_thirdPerson"))
{
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
return;
}
if(getdvarint("scr_diehard"))
{
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
return;
}
if(getdvarint("scr_" + level.gametype + "_promode"))
{
game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";
return;
}
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C(1);
setdynamicdvar("scr_dm_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("dm",1);
setdynamicdvar("scr_dm_roundlimit",1);
maps\mp\_utility::func_3312("dm",1);
setdynamicdvar("scr_dm_halftime",0);
maps\mp\_utility::registerhalftimedvar("dm",0);
}
//Function Number: 3
onstartgametype()
{
setclientnamemode("auto_change");
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_DM");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_DM");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_DM");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_DM");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_DM_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_DM_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_DM_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_DM_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_dm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_dm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
var_00[0] = "dm";
maps\mp\gametypes\_gameobjects::main(var_00);
maps\mp\gametypes\_rank::registerscoreinfo("kill",50);
maps\mp\gametypes\_rank::registerscoreinfo("headshot",50);
maps\mp\gametypes\_rank::registerscoreinfo("assist",10);
maps\mp\gametypes\_rank::registerscoreinfo("suicide",0);
maps\mp\gametypes\_rank::registerscoreinfo("teamkill",0);
level.quickmessagetoall = 1;
}
//Function Number: 4
getspawnpoint()
{
var_00 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(self.pers["team"]);
var_01 = maps\mp\gametypes\_spawnlogic::func_2FEF(var_00);
return var_01;
}
//Function Number: 5
onnormaldeath(param_00,param_01,param_02)
{
var_03 = maps\mp\gametypes\_rank::getscoreinfovalue("kill");
var_04 = 0;
foreach(var_06 in level.players)
{
if(isdefined(var_06.score) && var_06.score > var_04)
{
var_04 = var_06.score;
}
}
if(game["state"] == "postgame" && param_01.score >= var_04)
{
param_01.finalkill = 1;
}
}

View File

@ -0,0 +1,953 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\dom.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 31
* Decompile Time: 439 ms
* Timestamp: 10/27/2023 2:26:09 AM
*******************************************************************/
//Function Number: 1
main()
{
if(getdvar("mapname") == "mp_background")
{
return;
}
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_3315(level.gametype,30);
maps\mp\_utility::registerscorelimitdvar(level.gametype,300);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
level.teambased = 1;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onplayerkilled = ::onplayerkilled;
level.onprecachegametype = ::onprecachegametype;
level.initgametypeawards = ::initgametypeawards;
level.onspawnplayer = ::onspawnplayer;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
game["dialog"]["gametype"] = "domination";
if(getdvarint("g_hardcore"))
{
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
}
else if(getdvarint("camera_thirdPerson"))
{
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_diehard"))
{
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_" + level.gametype + "_promode"))
{
game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";
}
game["dialog"]["offense_obj"] = "capture_objs";
game["dialog"]["defense_obj"] = "capture_objs";
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C();
setdynamicdvar("scr_dom_roundlimit",1);
maps\mp\_utility::func_3312("dom",1);
setdynamicdvar("scr_dom_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("dom",1);
setdynamicdvar("scr_dom_halftime",0);
maps\mp\_utility::registerhalftimedvar("dom",0);
setdynamicdvar("scr_dom_promode",0);
}
//Function Number: 3
onprecachegametype()
{
precacheshader("waypoint_captureneutral");
precacheshader("waypoint_capture");
precacheshader("waypoint_defend");
precacheshader("waypoint_captureneutral_a");
precacheshader("waypoint_capture_a");
precacheshader("waypoint_defend_a");
precacheshader("waypoint_captureneutral_b");
precacheshader("waypoint_capture_b");
precacheshader("waypoint_defend_b");
precacheshader("waypoint_captureneutral_c");
precacheshader("waypoint_capture_c");
precacheshader("waypoint_defend_c");
precacheshader("waypoint_captureneutral");
precacheshader("waypoint_capture");
precacheshader("waypoint_defend");
precacheshader("waypoint_captureneutral_a");
precacheshader("waypoint_capture_a");
precacheshader("waypoint_defend_a");
precacheshader("waypoint_captureneutral_b");
precacheshader("waypoint_capture_b");
precacheshader("waypoint_defend_b");
precacheshader("waypoint_captureneutral_c");
precacheshader("waypoint_capture_c");
precacheshader("waypoint_defend_c");
}
//Function Number: 4
onstartgametype()
{
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_DOM");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_DOM");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_DOM");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_DOM");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_DOM_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_DOM_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_DOM_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_DOM_HINT");
setclientnamemode("auto_change");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_dom_spawn_allies_start");
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_dom_spawn_axis_start");
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_dom_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_dom_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
level.spawn_all = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_dom_spawn");
level.spawn_axis_start = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_dom_spawn_axis_start");
level.spawn_allies_start = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_dom_spawn_allies_start");
level.startpos["allies"] = level.spawn_allies_start[0].origin;
level.startpos["axis"] = level.spawn_axis_start[0].origin;
level.flagbasefxid["allies"] = loadfx(maps\mp\gametypes\_teams::func_2777("allies"));
level.flagbasefxid["axis"] = loadfx(maps\mp\gametypes\_teams::func_2777("axis"));
var_00[0] = "dom";
maps\mp\gametypes\_gameobjects::main(var_00);
maps\mp\gametypes\_rank::registerscoreinfo("kill",50);
maps\mp\gametypes\_rank::registerscoreinfo("headshot",50);
maps\mp\gametypes\_rank::registerscoreinfo("assist",10);
maps\mp\gametypes\_rank::registerscoreinfo("capture",150);
maps\mp\gametypes\_rank::registerscoreinfo("defend",50);
maps\mp\gametypes\_rank::registerscoreinfo("defend_assist",10);
maps\mp\gametypes\_rank::registerscoreinfo("assault",50);
maps\mp\gametypes\_rank::registerscoreinfo("assault_assist",10);
thread domflags();
thread func_3471();
}
//Function Number: 5
getspawnpoint()
{
var_00 = undefined;
if(!level.usestartspawns)
{
var_01 = 0;
var_02 = 0;
var_03 = self.pers["team"];
var_04 = maps\mp\_utility::getotherteam(var_03);
for(var_05 = 0;var_05 < level.flags.size;var_05++)
{
var_06 = level.flags[var_05] func_3474();
if(var_06 == var_03)
{
var_01++;
continue;
}
if(var_06 == var_04)
{
var_02++;
}
}
if(var_01 == level.flags.size)
{
var_07 = level.bestspawnflag[maps\mp\_utility::getotherteam(self.pers["team"])];
var_00 = maps\mp\gametypes\_spawnlogic::func_2FE6(level.spawn_all,func_3477(var_07));
}
else if(var_01 > 0)
{
var_00 = maps\mp\gametypes\_spawnlogic::func_2FE6(level.spawn_all,getboundaryflagspawns(var_03));
}
else
{
var_08 = undefined;
if(var_02 > 0 && var_02 < level.flags.size)
{
var_08 = getunownedflagneareststart(var_03);
}
if(!isdefined(var_08))
{
var_08 = level.bestspawnflag[self.pers["team"]];
}
level.bestspawnflag[self.pers["team"]] = var_08;
var_00 = maps\mp\gametypes\_spawnlogic::func_2FE6(level.spawn_all,var_08.nearbyspawns);
}
}
if(!isdefined(var_00))
{
if(self.pers["team"] == "axis")
{
var_00 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(level.spawn_axis_start);
}
else
{
var_00 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(level.spawn_allies_start);
}
}
return var_00;
}
//Function Number: 6
domflags()
{
level.laststatus["allies"] = 0;
level.laststatus["axis"] = 0;
game["flagmodels"] = [];
game["flagmodels"]["neutral"] = "prop_flag_neutral";
game["flagmodels"]["allies"] = maps\mp\gametypes\_teams::func_2774("allies");
game["flagmodels"]["axis"] = maps\mp\gametypes\_teams::func_2774("axis");
precachemodel(game["flagmodels"]["neutral"]);
precachemodel(game["flagmodels"]["allies"]);
precachemodel(game["flagmodels"]["axis"]);
precachestring(&"MP_SECURING_POSITION");
var_00 = getentarray("flag_primary","targetname");
var_01 = getentarray("flag_secondary","targetname");
if(var_00.size + var_01.size < 2)
{
maps\mp\gametypes\_callbacksetup::abortlevel();
return;
}
level.flags = [];
for(var_02 = 0;var_02 < var_00.size;var_02++)
{
level.flags[level.flags.size] = var_00[var_02];
}
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
level.flags[level.flags.size] = var_01[var_02];
}
level.domflags = [];
for(var_02 = 0;var_02 < level.flags.size;var_02++)
{
var_03 = level.flags[var_02];
if(isdefined(var_03.target))
{
var_04[0] = getent(var_03.target,"targetname");
}
else
{
var_04[0] = spawn("script_model",var_03.origin);
var_04[0].angles = var_03.angles;
}
var_04[0] setmodel(game["flagmodels"]["neutral"]);
var_05 = maps\mp\gametypes\_gameobjects::func_29E7("neutral",var_03,var_04,(0,0,100));
var_05 maps\mp\gametypes\_gameobjects::allowuse("enemy");
var_05 maps\mp\gametypes\_gameobjects::setusetime(10);
var_05 maps\mp\gametypes\_gameobjects::setusetext(&"MP_SECURING_POSITION");
var_06 = var_05 maps\mp\gametypes\_gameobjects::getlabel();
var_05.label = var_06;
var_05 maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_defend" + var_06);
var_05 maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_defend" + var_06);
var_05 maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_captureneutral" + var_06);
var_05 maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_captureneutral" + var_06);
var_05 maps\mp\gametypes\_gameobjects::setvisibleteam("any");
var_05.onuse = ::onuse;
var_05.onbeginuse = ::onbeginuse;
var_05.onuseupdate = ::onuseupdate;
var_05.onenduse = ::onenduse;
var_07 = var_04[0].origin + (0,0,32);
var_08 = var_04[0].origin + (0,0,-32);
var_09 = bullettrace(var_07,var_08,0,undefined);
var_0A = vectortoangles(var_09["normal"]);
var_05.baseeffectforward = anglestoforward(var_0A);
var_05.baseeffectright = anglestoright(var_0A);
var_05.baseeffectpos = var_09["position"];
level.flags[var_02].useobj = var_05;
level.flags[var_02].adjflags = [];
level.flags[var_02].nearbyspawns = [];
var_05.levelflag = level.flags[var_02];
level.domflags[level.domflags.size] = var_05;
}
level.bestspawnflag = [];
level.bestspawnflag["allies"] = getunownedflagneareststart("allies",undefined);
level.bestspawnflag["axis"] = getunownedflagneareststart("axis",level.bestspawnflag["allies"]);
flagsetup();
}
//Function Number: 7
getunownedflagneareststart(param_00,param_01)
{
var_02 = undefined;
var_03 = undefined;
for(var_04 = 0;var_04 < level.flags.size;var_04++)
{
var_05 = level.flags[var_04];
if(var_05 func_3474() != "neutral")
{
continue;
}
var_06 = distancesquared(var_05.origin,level.startpos[param_00]);
if((!isdefined(param_01) || var_05 != param_01) && !isdefined(var_02) || var_06 < var_03)
{
var_03 = var_06;
var_02 = var_05;
}
}
return var_02;
}
//Function Number: 8
onbeginuse(param_00)
{
var_01 = maps\mp\gametypes\_gameobjects::func_2A15();
self.didstatusnotify = 0;
if(var_01 == "neutral")
{
statusdialog("securing" + self.label,param_00.pers["team"]);
self.objpoints[param_00.pers["team"]] thread maps\mp\gametypes\_objpoints::startflashing();
return;
}
if(var_01 == "allies")
{
var_02 = "axis";
}
else
{
var_02 = "allies";
}
self.objpoints["allies"] thread maps\mp\gametypes\_objpoints::startflashing();
self.objpoints["axis"] thread maps\mp\gametypes\_objpoints::startflashing();
}
//Function Number: 9
onuseupdate(param_00,param_01,param_02)
{
if(param_01 > 0.05 && param_02 && !self.didstatusnotify)
{
var_03 = maps\mp\gametypes\_gameobjects::func_2A15();
if(var_03 == "neutral")
{
statusdialog("securing" + self.label,param_00);
}
else
{
statusdialog("losing" + self.label,var_03);
statusdialog("securing" + self.label,param_00);
}
self.didstatusnotify = 1;
}
}
//Function Number: 10
statusdialog(param_00,param_01,param_02)
{
var_03 = gettime();
if(gettime() < level.laststatus[param_01] + 5000 && !isdefined(param_02) || !param_02)
{
return;
}
thread func_346F(param_00,param_01);
level.laststatus[param_01] = gettime();
}
//Function Number: 11
onenduse(param_00,param_01,param_02)
{
self.objpoints["allies"] thread maps\mp\gametypes\_objpoints::stopflashing();
self.objpoints["axis"] thread maps\mp\gametypes\_objpoints::stopflashing();
}
//Function Number: 12
resetflagbaseeffect()
{
if(isdefined(self.baseeffect))
{
self.baseeffect delete();
}
var_00 = maps\mp\gametypes\_gameobjects::func_2A15();
if(var_00 != "axis" && var_00 != "allies")
{
return;
}
var_01 = level.flagbasefxid[var_00];
self.baseeffect = spawnfx(var_01,self.baseeffectpos,self.baseeffectforward,self.baseeffectright);
triggerfx(self.baseeffect);
}
//Function Number: 13
onuse(param_00)
{
var_01 = param_00.pers["team"];
var_02 = maps\mp\gametypes\_gameobjects::func_2A15();
var_03 = maps\mp\gametypes\_gameobjects::getlabel();
self.capturetime = gettime();
maps\mp\gametypes\_gameobjects::setownerteam(var_01);
maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_capture" + var_03);
maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_capture" + var_03);
self.visuals[0] setmodel(game["flagmodels"][var_01]);
resetflagbaseeffect();
level.usestartspawns = 0;
if(var_02 == "neutral")
{
var_04 = maps\mp\_utility::getotherteam(var_01);
thread maps\mp\_utility::func_32F9(var_01,var_04,undefined,undefined,"mp_war_objective_taken",undefined,param_00);
statusdialog("secured" + self.label,var_01,1);
statusdialog("enemy_has" + self.label,var_04,1);
}
else
{
thread maps\mp\_utility::func_32F9(var_01,var_02,undefined,undefined,"mp_war_objective_taken","mp_war_objective_lost",param_00);
if(getteamflagcount(var_01) == level.flags.size)
{
statusdialog("secure_all",var_01);
statusdialog("lost_all",var_02);
}
else
{
statusdialog("secured" + self.label,var_01,1);
statusdialog("lost" + self.label,var_02,1);
}
level.bestspawnflag[var_02] = self.levelflag;
}
param_00 notify("objective","captured");
thread func_346E(self.touchlist[var_01]);
}
//Function Number: 14
func_346E(param_00)
{
level endon("game_ended");
var_01 = getarraykeys(param_00);
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_03 = param_00[var_01[var_02]].player;
var_03 thread maps\mp\gametypes\_hud_message::func_2892("capture",maps\mp\gametypes\_rank::getscoreinfovalue("capture"));
var_03 thread func_347C();
var_03 thread maps\mp\gametypes\_rank::func_2AB3("capture",maps\mp\gametypes\_rank::getscoreinfovalue("capture") * var_03 getcapxpscale());
maps\mp\gametypes\_gamescore::func_26D3("capture",var_03);
var_03 maps\mp\_utility::incplayerstat("pointscaptured",1);
var_03 maps\mp\_utility::func_26FB("captures",1);
var_03 maps\mp\gametypes\_persistence::func_26D8("round","captures",var_03.pers["captures"]);
if(var_03 != self)
{
var_03 notify("objective","assistedCapture");
}
}
var_03 = maps\mp\gametypes\_gameobjects::func_29F0();
level thread maps\mp\_utility::teamplayercardsplash("callout_securedposition" + self.label,var_03);
var_03 thread maps\mp\_matchdata::loggameevent("capture",var_03.origin);
}
//Function Number: 15
func_346F(param_00,param_01)
{
level endon("game_ended");
wait 0.1;
maps\mp\_utility::waittillslowprocessallowed();
maps\mp\_utility::func_26E5(param_00,param_01);
}
//Function Number: 16
func_3470(param_00,param_01,param_02,param_03)
{
level endon("game_ended");
wait 0.1;
maps\mp\_utility::waittillslowprocessallowed();
maps\mp\_utility::leaderdialogbothteams(param_00,param_01,param_02,param_03);
}
//Function Number: 17
func_3471()
{
level endon("game_ended");
while(!level.gameended)
{
var_00 = func_3472();
if(var_00.size)
{
for(var_01 = 1;var_01 < var_00.size;var_01++)
{
var_02 = var_00[var_01];
var_03 = gettime() - var_02.capturetime;
for(var_04 = var_01 - 1;var_04 >= 0 && var_03 > gettime() - var_00[var_04].capturetime;var_04--)
{
var_00[var_04 + 1] = var_00[var_04];
}
var_00[var_04 + 1] = var_02;
}
foreach(var_02 in var_00)
{
var_06 = var_02 maps\mp\gametypes\_gameobjects::func_2A15();
maps\mp\gametypes\_gamescore::giveteamscoreforobjective(var_06,1);
}
}
if(((maps\mp\_utility::gettimepassed() / 1000 > 120 && var_00.size < 2) || maps\mp\_utility::gettimepassed() / 1000 > 300 && var_00.size < 3) && maps\mp\_utility::matchmakinggame())
{
level.finalkillcam_winner = "none";
thread maps\mp\gametypes\_gamelogic::endgame("none",game["strings"]["time_limit_reached"]);
return;
}
wait 5;
maps\mp\gametypes\_hostmigration::func_273E();
}
}
//Function Number: 18
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(!isplayer(param_01) || param_01.pers["team"] == self.pers["team"])
{
return;
}
var_0A = 0;
var_0B = 0;
var_0C = self;
foreach(var_0E in var_0C.touchtriggers)
{
if(var_0E != level.flags[0] && var_0E != level.flags[1] && var_0E != level.flags[2])
{
continue;
}
var_0F = var_0E.useobj.ownerteam;
var_10 = var_0C.pers["team"];
if(var_0F == "neutral")
{
continue;
}
if(var_10 == var_0F)
{
var_0A = 1;
param_01 thread maps\mp\gametypes\_hud_message::func_2892("assault",maps\mp\gametypes\_rank::getscoreinfovalue("assault"));
param_01 thread maps\mp\gametypes\_rank::func_2AB3("assault");
maps\mp\gametypes\_gamescore::func_26D3("assault",param_01);
thread maps\mp\_matchdata::func_28B4(param_09,"defending");
continue;
}
var_0B = 1;
param_01 thread maps\mp\gametypes\_hud_message::func_2892("defend",maps\mp\gametypes\_rank::getscoreinfovalue("defend"));
param_01 thread maps\mp\gametypes\_rank::func_2AB3("defend");
maps\mp\gametypes\_gamescore::func_26D3("defend",param_01);
param_01 maps\mp\_utility::func_26FB("defends",1);
param_01 maps\mp\gametypes\_persistence::func_26D8("round","defends",param_01.pers["defends"]);
thread maps\mp\_matchdata::func_28B4(param_09,"assaulting");
}
foreach(var_0E in param_01.touchtriggers)
{
if(var_0E != level.flags[0] && var_0E != level.flags[1] && var_0E != level.flags[2])
{
continue;
}
var_0F = var_0E.useobj.ownerteam;
var_13 = param_01.pers["team"];
if(var_0F == "neutral")
{
continue;
}
if(var_13 != var_0F)
{
if(!var_0A)
{
param_01 thread maps\mp\gametypes\_hud_message::func_2892("assault",maps\mp\gametypes\_rank::getscoreinfovalue("assault"));
}
param_01 thread maps\mp\gametypes\_rank::func_2AB3("assault");
maps\mp\gametypes\_gamescore::func_26D3("assault",param_01);
thread maps\mp\_matchdata::func_28B4(param_09,"defending");
}
}
foreach(var_0E in level.flags)
{
var_0F = var_0E.useobj.ownerteam;
var_13 = param_01.pers["team"];
var_16 = distancesquared(var_0E.origin,var_0C.origin);
var_17 = 90000;
if(var_13 == var_0F && var_16 < var_17)
{
if(!var_0B)
{
param_01 thread maps\mp\gametypes\_hud_message::func_2892("defend",maps\mp\gametypes\_rank::getscoreinfovalue("defend"));
}
param_01 thread maps\mp\gametypes\_rank::func_2AB3("defend");
maps\mp\gametypes\_gamescore::func_26D3("defend",param_01);
thread maps\mp\_matchdata::func_28B4(param_09,"assaulting");
}
}
}
//Function Number: 19
func_3472()
{
var_00 = [];
foreach(var_02 in level.domflags)
{
if(var_02 maps\mp\gametypes\_gameobjects::func_2A15() != "neutral" && isdefined(var_02.capturetime))
{
var_00[var_00.size] = var_02;
}
}
return var_00;
}
//Function Number: 20
getteamflagcount(param_00)
{
var_01 = 0;
for(var_02 = 0;var_02 < level.flags.size;var_02++)
{
if(level.domflags[var_02] maps\mp\gametypes\_gameobjects::func_2A15() == param_00)
{
var_01++;
}
}
return var_01;
}
//Function Number: 21
func_3474()
{
return self.useobj maps\mp\gametypes\_gameobjects::func_2A15();
}
//Function Number: 22
func_3475()
{
var_00 = [];
for(var_01 = 0;var_01 < level.flags.size;var_01++)
{
for(var_02 = 0;var_02 < level.flags[var_01].adjflags.size;var_02++)
{
if(level.flags[var_01].useobj maps\mp\gametypes\_gameobjects::func_2A15() != level.flags[var_01].adjflags[var_02].useobj maps\mp\gametypes\_gameobjects::func_2A15())
{
var_00[var_00.size] = level.flags[var_01];
break;
}
}
}
return var_00;
}
//Function Number: 23
getboundaryflagspawns(param_00)
{
var_01 = [];
var_02 = func_3475();
for(var_03 = 0;var_03 < var_02.size;var_03++)
{
if(isdefined(param_00) && var_02[var_03] func_3474() != param_00)
{
continue;
}
for(var_04 = 0;var_04 < var_02[var_03].nearbyspawns.size;var_04++)
{
var_01[var_01.size] = var_02[var_03].nearbyspawns[var_04];
}
}
return var_01;
}
//Function Number: 24
func_3477(param_00)
{
var_01 = [];
for(var_02 = 0;var_02 < level.flags.size;var_02++)
{
var_03 = level.flags[var_02];
if(var_03 == param_00)
{
continue;
}
var_04 = 0;
for(var_05 = 0;var_05 < var_03.adjflags.size;var_05++)
{
if(var_03.adjflags[var_05] == param_00)
{
var_04 = 1;
break;
}
}
if(!var_04)
{
continue;
}
for(var_05 = 0;var_05 < var_03.nearbyspawns.size;var_05++)
{
var_01[var_01.size] = var_03.nearbyspawns[var_05];
}
}
return var_01;
}
//Function Number: 25
func_3478(param_00)
{
var_01 = [];
for(var_02 = 0;var_02 < level.flags.size;var_02++)
{
if(level.flags[var_02] func_3474() == param_00)
{
for(var_03 = 0;var_03 < level.flags[var_02].nearbyspawns.size;var_03++)
{
var_01[var_01.size] = level.flags[var_02].nearbyspawns[var_03];
}
continue;
}
for(var_04 = 0;var_04 < level.flags[var_02].adjflags.size;var_04++)
{
if(level.flags[var_02].adjflags[var_04] func_3474() == param_00)
{
for(var_03 = 0;var_03 < level.flags[var_02].nearbyspawns.size;var_03++)
{
var_01[var_01.size] = level.flags[var_02].nearbyspawns[var_03];
}
break;
}
}
}
return var_01;
}
//Function Number: 26
getownedflagspawns(param_00)
{
var_01 = [];
for(var_02 = 0;var_02 < level.flags.size;var_02++)
{
if(level.flags[var_02] func_3474() == param_00)
{
for(var_03 = 0;var_03 < level.flags[var_02].nearbyspawns.size;var_03++)
{
var_01[var_01.size] = level.flags[var_02].nearbyspawns[var_03];
}
}
}
return var_01;
}
//Function Number: 27
flagsetup()
{
var_00 = [];
var_01 = [];
var_02 = getentarray("flag_descriptor","targetname");
var_03 = level.flags;
for(var_04 = 0;var_04 < level.domflags.size;var_04++)
{
var_05 = undefined;
var_06 = undefined;
for(var_07 = 0;var_07 < var_02.size;var_07++)
{
var_08 = distance(var_03[var_04].origin,var_02[var_07].origin);
if(!isdefined(var_05) || var_08 < var_05)
{
var_05 = var_08;
var_06 = var_02[var_07];
}
}
if(!isdefined(var_06))
{
var_00[var_00.size] = "there is no flag_descriptor in the map! see explanation in dom.gsc";
break;
}
if(isdefined(var_06.flag))
{
var_00[var_00.size] = "flag_descriptor with script_linkname \" + var_06.script_linkname + "\" is nearby more than one flag; is there a unique descriptor near each flag?";
continue;
}
var_03[var_04].descriptor = var_06;
var_06.flag = var_03[var_04];
var_01[var_06.script_linkname] = var_06;
}
if(var_00.size == 0)
{
for(var_04 = 0;var_04 < var_03.size;var_04++)
{
if(isdefined(var_03[var_04].descriptor.script_linkto))
{
var_09 = strtok(var_03[var_04].descriptor.script_linkto," ");
}
else
{
var_09 = [];
}
for(var_07 = 0;var_07 < var_09.size;var_07++)
{
var_0A = var_01[var_09[var_07]];
if(!isdefined(var_0A) || var_0A.targetname != "flag_descriptor")
{
var_00[var_00.size] = "flag_descriptor with script_linkname \" + var_03[var_04].descriptor.script_linkname + "\" linked to \" + var_09[var_07] + "\" which does not exist as a script_linkname of any other entity with a targetname of flag_descriptor (or, if it does, that flag_descriptor has not been assigned to a flag)";
continue;
}
var_0B = var_0A.flag;
if(var_0B == var_03[var_04])
{
var_00[var_00.size] = "flag_descriptor with script_linkname \" + var_03[var_04].descriptor.script_linkname + "\" linked to itself";
continue;
}
var_03[var_04].adjflags[var_03[var_04].adjflags.size] = var_0B;
}
}
}
var_0C = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_dom_spawn");
for(var_04 = 0;var_04 < var_0C.size;var_04++)
{
if(isdefined(var_0C[var_04].script_linkto))
{
var_0D = var_01[var_0C[var_04].script_linkto];
if(!isdefined(var_0D) || var_0D.targetname != "flag_descriptor")
{
var_00[var_00.size] = "Spawnpoint at " + var_0C[var_04].origin + "\" linked to \" + var_0C[var_04].script_linkto + "\" which does not exist as a script_linkname of any entity with a targetname of flag_descriptor (or, if it does, that flag_descriptor has not been assigned to a flag)";
continue;
}
var_0E = var_0D.flag;
}
else
{
var_0E = undefined;
var_0F = undefined;
for(var_07 = 0;var_07 < var_03.size;var_07++)
{
var_08 = distancesquared(var_03[var_07].origin,var_0C[var_04].origin);
if(!isdefined(var_0E) || var_08 < var_0F)
{
var_0E = var_03[var_07];
var_0F = var_08;
}
}
}
var_0E.nearbyspawns[var_0E.nearbyspawns.size] = var_0C[var_04];
}
if(var_00.size > 0)
{
for(var_04 = 0;var_04 < var_00.size;var_04++)
{
}
common_scripts\utility::error("Map errors. See above");
maps\mp\gametypes\_callbacksetup::abortlevel();
}
}
//Function Number: 28
initgametypeawards()
{
maps\mp\_awards::func_2D85("pointscaptured",0,::maps\mp\_awards::func_2DA7);
}
//Function Number: 29
onspawnplayer()
{
}
//Function Number: 30
func_347C()
{
if(!isdefined(self.cpm))
{
self.numcaps = 0;
self.cpm = 0;
}
self.numcaps++;
if(maps\mp\_utility::getminutespassed() < 1)
{
return;
}
self.cpm = self.numcaps / maps\mp\_utility::getminutespassed();
}
//Function Number: 31
getcapxpscale()
{
if(self.cpm < 4)
{
return 1;
}
return 0.25;
}

View File

@ -0,0 +1,859 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\grnd.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 23
* Decompile Time: 343 ms
* Timestamp: 10/27/2023 2:26:11 AM
*******************************************************************/
//Function Number: 1
main()
{
if(getdvar("mapname") == "mp_background")
{
return;
}
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_330E(level.gametype,0,0,9);
maps\mp\_utility::func_3315(level.gametype,10);
maps\mp\_utility::registerscorelimitdvar(level.gametype,20000);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_droptime = 30;
level.matchrules_zoneswitchtime = 120;
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
level.teambased = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onspawnplayer = ::onspawnplayer;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
level.grnd_fx["smoke"] = loadfx("smoke/airdrop_flare_mp_effect_now");
level.grnd_fx["flare"] = loadfx("smoke/signal_smoke_airdrop");
level.grnd_targetfxid = loadfx("misc/ui_flagbase_red");
level.dangermaxradius["drop_zone"] = 1200;
level.dangerminradius["drop_zone"] = 1190;
level.dangerforwardpush["drop_zone"] = 0;
level.dangerovalscale["drop_zone"] = 1;
createzones();
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C();
level.matchrules_droptime = getmatchrulesdata("grndData","dropTime");
level.matchrules_zoneswitchtime = 60 * getmatchrulesdata("grndData","zoneSwitchTime");
if(level.matchrules_zoneswitchtime < 60)
{
level.matchrules_zoneswitchtime = 120;
}
setdynamicdvar("scr_grnd_roundswitch",0);
maps\mp\_utility::func_330E("grnd",0,0,9);
setdynamicdvar("scr_grnd_roundlimit",1);
maps\mp\_utility::func_3312("grnd",1);
setdynamicdvar("scr_grnd_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("grnd",1);
setdynamicdvar("scr_grnd_halftime",0);
maps\mp\_utility::registerhalftimedvar("grnd",0);
setdynamicdvar("scr_grnd_promode",0);
}
//Function Number: 3
onprecachegametype()
{
precacheshader("waypoint_captureneutral");
precacheshader("waypoint_capture");
precacheshader("waypoint_defend");
precachemodel("prop_flag_neutral");
precachestring(&"OBJECTIVES_GRND");
precachestring(&"OBJECTIVES_GRND_SCORE");
precachestring(&"OBJECTIVES_GRND_HINT");
precachestring(&"OBJECTIVES_GRND_CONFIRM");
precachestring(&"MP_CALLING_AIRDROP");
precachestring(&"MP_NEXT_DROP_ZONE_IN");
precachemodel("weapon_us_smoke_grenade_burnt2");
}
//Function Number: 4
onstartgametype()
{
setclientnamemode("auto_change");
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_GRND");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_GRND");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_GRND");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_GRND");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_GRND_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_GRND_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_GRND_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_GRND_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_sab_spawn_allies_start");
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_sab_spawn_axis_start");
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_tdm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_tdm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
var_00 = getent("sab_bomb","targetname");
level.grnd_centerloc = var_00.origin;
maps\mp\gametypes\_rank::registerscoreinfo("kill",50);
maps\mp\gametypes\_rank::registerscoreinfo("zone_kill",100);
maps\mp\gametypes\_rank::registerscoreinfo("zone_tick",20);
var_01[0] = level.gametype;
maps\mp\gametypes\_gameobjects::main(var_41);
level.grnd_hud["timerDisplay"] = maps\mp\gametypes\_hud_util::createservertimer("objective",1.4);
level.grnd_hud["timerDisplay"].label = &"MP_NEXT_DROP_ZONE_IN";
if(level.splitscreen)
{
level.grnd_hud["timerDisplay"] maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","TOPLEFT",80,0);
}
else
{
level.grnd_hud["timerDisplay"] maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","TOPLEFT",115,5);
}
level.grnd_hud["timerDisplay"].alpha = 0;
level.grnd_hud["timerDisplay"].archived = 0;
level.grnd_hud["timerDisplay"].hidewheninmenu = 1;
thread func_3535(level.grnd_hud["timerDisplay"]);
initfirstzone();
}
//Function Number: 5
initfirstzone()
{
level.zonescycling = 0;
level.var_8244 = 0;
var_00 = 999999;
var_01 = 0;
for(var_02 = 0;var_02 < level.grnd_dropzones[level.script].size;var_02++)
{
var_03 = level.grnd_dropzones[level.script][var_02];
var_04 = distance2d(level.grnd_centerloc,var_03);
if(var_04 < var_00)
{
var_00 = var_04;
var_01 = var_02;
}
}
level.grnd_initialindex = var_01;
var_05 = level.grnd_dropzones[level.script][var_01];
level.grnd_initialpos = var_05;
level.grnd_zone = spawn("script_model",var_05);
level.grnd_zone.origin = var_05;
level.grnd_zone.angles = (90,0,0);
level.grnd_zone setmodel("weapon_us_smoke_grenade_burnt2");
level.grnd_dangercenter = spawnstruct();
level.grnd_dangercenter.origin = var_05;
level.grnd_dangercenter.forward = anglestoforward((0,0,0));
level.grnd_dangercenter.streakname = "drop_zone";
level.artillerydangercenters[level.artillerydangercenters.size] = level.grnd_dangercenter;
level.favorclosespawnent = level.grnd_zone;
level.favorclosespawnscalar = 5;
level thread func_3525();
}
//Function Number: 6
func_3525()
{
level.grnd_zones = [];
for(var_00 = 0;var_00 < level.grnd_dropzones[level.script].size;var_00++)
{
var_01 = level.grnd_dropzones[level.script][var_00];
level.grnd_zones[var_00] = spawn("script_origin",var_01);
level.grnd_zones[var_00].origin = var_01;
wait 0.05;
}
level.grnd_zones[level.grnd_initialindex] delete();
level.grnd_zones[level.grnd_initialindex] = undefined;
level.grnd_zones = common_scripts\utility::array_removeundefined(level.grnd_zones);
}
//Function Number: 7
getspawnpoint()
{
if(level.ingraceperiod)
{
var_00 = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_sab_spawn_" + self.pers["team"] + "_start");
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_00);
}
else
{
var_00 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(self.pers["team"]);
var_01 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_01);
}
return var_01;
}
//Function Number: 8
onspawnplayer()
{
if(!isdefined(self.ingrindzone))
{
level thread setplayermessages(self);
if(!level.zonescycling)
{
level.zonescycling = 1;
level thread cyclezones();
level thread locationstatus();
level thread locationscoring();
}
thread waitreplaysmokefxfornewplayer();
}
level notify("spawned_player");
}
//Function Number: 9
waitreplaysmokefxfornewplayer()
{
level endon("game_ended");
self endon("disconnect");
maps\mp\_utility::func_274B("prematch_done");
wait 0.5;
if(!isdefined(self.grnd_fx_playing))
{
playfxontagforclients(level.grnd_fx["smoke"],level.grnd_zone,"tag_fx",self);
self.grnd_fx_playing = 1;
}
}
//Function Number: 10
createhudinfo(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
var_07 = maps\mp\gametypes\_hud_util::createfontstring(param_01,param_02);
var_07 settext(param_05);
if(level.splitscreen)
{
var_07 maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","TOPLEFT",param_03 - 35,param_04 - 5);
}
else
{
var_07 maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","TOPLEFT",param_03,param_04);
}
var_07.alpha = 1;
var_07.color = param_06;
var_07.glowcolor = param_06;
var_07.archived = 0;
var_07.hidewheninmenu = 1;
thread func_3535(var_07);
self.grnd_hud[param_00] = var_07;
}
//Function Number: 11
setplayermessages(param_00)
{
level endon("game_ended");
maps\mp\_utility::func_274B("prematch_done");
param_00.ingrindzonepoints = 0;
var_01 = param_00.team + "Score";
param_00 createhudinfo(var_01,"small",1.6,115,22,0,(0.6,1,0.6));
var_01 = param_00.team + "Text";
param_00 createhudinfo(var_01,"small",1.6,135,22,maps\mp\gametypes\_teams::func_276B(param_00.team),(0.6,1,0.6));
var_01 = level.otherteam[param_00.team] + "Score";
param_00 createhudinfo(var_01,"small",1.6,115,39,0,(1,0.6,0.6));
var_01 = level.otherteam[param_00.team] + "Text";
param_00 createhudinfo(var_01,"small",1.6,135,39,maps\mp\gametypes\_teams::func_276B(level.otherteam[param_00.team]),(1,0.6,0.6));
param_00.grndheadicon = level.grnd_zone maps\mp\_entityheadicons::func_277C(param_00,"waypoint_captureneutral",(0,0,0),14,14,undefined,undefined,undefined,1,undefined,0);
param_00.grndobjid = maps\mp\gametypes\_gameobjects::func_2A31();
objective_add(param_00.grndobjid,"invisible",(0,0,0));
objective_player(param_00.grndobjid,param_00 getentitynumber());
objective_onentity(param_00.grndobjid,level.grnd_zone);
objective_icon(param_00.grndobjid,"waypoint_captureneutral");
objective_state(param_00.grndobjid,"active");
if(param_00 isingrindzone())
{
param_00.ingrindzone = 1;
param_00.grndheadicon.alpha = 0;
}
else
{
param_00.ingrindzone = 0;
param_00.grndheadicon.alpha = 0.85;
}
param_00.grnd_wasspectator = 0;
if(param_00.team == "spectator")
{
param_00.ingrindzone = 0;
param_00.ingrindzonepoints = 0;
param_00.grndheadicon.alpha = 0;
param_00.grnd_hud["axisScore"].alpha = 0;
param_00.grnd_hud["axisText"].alpha = 0;
param_00.grnd_hud["alliesScore"].alpha = 0;
param_00.grnd_hud["alliesText"].alpha = 0;
param_00.grnd_wasspectator = 1;
}
param_00 thread grndtracking();
}
//Function Number: 12
getnextzone()
{
var_00 = undefined;
var_01 = undefined;
if(level.grnd_zones.size > 2)
{
var_02 = 999999;
var_03 = 0;
for(var_04 = 0;var_04 < level.grnd_zones.size;var_04++)
{
level.grnd_zones[var_04].index = var_04;
level.grnd_zones[var_04].disttozone = distance(level.grnd_zones[var_04].origin,level.grnd_zone.origin);
if(level.grnd_zones[var_04].disttozone > var_03)
{
var_03 = level.grnd_zones[var_04].disttozone;
continue;
}
if(level.grnd_zones[var_04].disttozone < var_02)
{
var_02 = level.grnd_zones[var_04].disttozone;
}
}
var_05 = [];
var_06 = [];
var_07 = int(var_02 + var_03 / 2);
for(var_04 = 0;var_04 < level.grnd_zones.size;var_04++)
{
if(level.grnd_zones[var_04].disttozone >= var_07)
{
var_05[var_05.size] = level.grnd_zones[var_04];
continue;
}
var_06[var_06.size] = level.grnd_zones[var_04];
}
var_08 = undefined;
if(var_05.size > 1)
{
var_08 = var_05[randomintrange(0,var_05.size)];
}
else if(var_05.size)
{
var_08 = var_05[0];
}
else
{
var_08 = var_06[randomintrange(0,var_06.size)];
}
var_01 = var_08.index;
}
else if(level.grnd_zones.size == 2)
{
var_09 = distance(level.grnd_zones[0].origin,level.grnd_zone.origin);
var_0A = distance(level.grnd_zones[1].origin,level.grnd_zone.origin);
if(var_09 > var_0A)
{
var_01 = 0;
}
else
{
var_01 = 1;
}
}
else if(level.grnd_zones.size == 1)
{
var_01 = 0;
}
if(isdefined(var_01))
{
var_00 = level.grnd_zones[var_01].origin;
level.grnd_zones[var_01] delete();
level.grnd_zones[var_01] = undefined;
level.grnd_zones = common_scripts\utility::array_removeundefined(level.grnd_zones);
}
else
{
var_00 = level.grnd_dropzones[level.script][level.grnd_initialindex];
level thread func_3525();
}
return var_00;
}
//Function Number: 13
cyclezones()
{
level endon("game_ended");
maps\mp\_utility::func_274B("prematch_done");
for(;;)
{
var_00 = undefined;
if(!level.var_8244)
{
level.var_8244 = 1;
var_00 = level.grnd_zone.origin;
}
else
{
var_00 = getnextzone();
stopfxontag(level.grnd_fx["smoke"],level.grnd_zone,"tag_fx");
wait 0.05;
}
var_01 = var_00 + (0,0,30);
var_02 = var_00 + (0,0,-1000);
var_03 = bullettrace(var_01,var_02,0,undefined);
level.grnd_zone.origin = var_03["position"] + (0,0,1);
level.grnd_dangercenter.origin = level.grnd_zone.origin;
var_04 = vectortoangles(var_03["normal"]);
var_05 = anglestoforward(var_04);
var_06 = anglestoright(var_04);
thread func_3084(var_03["position"],var_05,var_06,0.5);
wait 0.05;
playfxontag(level.grnd_fx["smoke"],level.grnd_zone,"tag_fx");
foreach(var_08 in level.players)
{
var_08.grnd_fx_playing = 1;
}
if(level.matchrules_droptime)
{
level thread func_3532();
}
level.grnd_hud["timerDisplay"].label = &"MP_NEXT_DROP_ZONE_IN";
level.grnd_hud["timerDisplay"] settimer(level.matchrules_zoneswitchtime);
level.grnd_hud["timerDisplay"].alpha = 1;
maps\mp\gametypes\_hostmigration::func_2740(level.matchrules_zoneswitchtime);
level.grnd_hud["timerDisplay"].alpha = 0;
maps\mp\_utility::func_2D68("mp_obj_captured");
}
}
//Function Number: 14
func_3084(param_00,param_01,param_02,param_03)
{
if(isdefined(level.grnd_targetfx))
{
level.grnd_targetfx delete();
}
wait param_03;
level.grnd_targetfx = spawnfx(level.grnd_targetfxid,param_00,param_01,param_02);
triggerfx(level.grnd_targetfx);
}
//Function Number: 15
grndtracking()
{
self endon("disconnect");
level endon("game_ended");
for(;;)
{
if(!self.grnd_wasspectator && self.team == "spectator")
{
self.ingrindzone = 0;
self.ingrindzonepoints = 0;
self.grndheadicon.alpha = 0;
self.grnd_hud["axisScore"].alpha = 0;
self.grnd_hud["axisText"].alpha = 0;
self.grnd_hud["alliesScore"].alpha = 0;
self.grnd_hud["alliesText"].alpha = 0;
self.grnd_wasspectator = 1;
}
else if(self.team != "spectator")
{
if((self.grnd_wasspectator || !self.ingrindzone) && isingrindzone())
{
self.ingrindzone = 1;
self.ingrindzonepoints = 0;
self iprintlnbold(&"OBJECTIVES_GRND_CONFIRM");
self.grnd_hud["axisScore"].alpha = 1;
self.grnd_hud["axisText"].alpha = 1;
self.grnd_hud["alliesScore"].alpha = 1;
self.grnd_hud["alliesText"].alpha = 1;
self.grnd_hud[self.team + "Score"].glowalpha = 1;
self.grnd_hud[self.team + "Text"].glowalpha = 1;
self.grndheadicon.alpha = 0;
}
else if((self.grnd_wasspectator || self.ingrindzone) && !isingrindzone())
{
self.ingrindzone = 0;
self.ingrindzonepoints = 0;
self iprintlnbold(&"OBJECTIVES_GRND_HINT");
self.grnd_hud["axisScore"].alpha = 1;
self.grnd_hud["axisText"].alpha = 1;
self.grnd_hud["alliesScore"].alpha = 1;
self.grnd_hud["alliesText"].alpha = 1;
self.grnd_hud[self.team + "Score"].glowalpha = 0;
self.grnd_hud[self.team + "Text"].glowalpha = 0;
self.grndheadicon.alpha = 0.85;
}
self.grnd_wasspectator = 0;
}
wait 0.05;
}
}
//Function Number: 16
locationstatus()
{
level endon("game_ended");
level.grnd_numplayers["axis"] = 0;
level.grnd_numplayers["allies"] = 0;
maps\mp\_utility::func_274B("prematch_done");
for(;;)
{
level.grnd_numplayers["axis"] = 0;
level.grnd_numplayers["allies"] = 0;
foreach(var_01 in level.players)
{
if(isdefined(var_01.ingrindzone) && maps\mp\_utility::isreallyalive(var_01) && var_01.pers["team"] != "spectator" && var_01 isingrindzone())
{
level.grnd_numplayers[var_01.pers["team"]]++;
}
}
foreach(var_01 in level.players)
{
if(isdefined(var_01.ingrindzone) && var_01.pers["team"] != "spectator")
{
var_01.grnd_hud["axisScore"] settext(level.grnd_numplayers["axis"]);
var_01.grnd_hud["alliesScore"] settext(level.grnd_numplayers["allies"]);
if(level.grnd_numplayers["axis"] == level.grnd_numplayers["allies"])
{
var_01.grndheadicon setshader("waypoint_captureneutral",14,14);
var_01.grndheadicon setwaypoint(0,1,0,0);
objective_icon(var_01.grndobjid,"waypoint_captureneutral");
continue;
}
if(level.grnd_numplayers[var_01.pers["team"]] > level.grnd_numplayers[level.otherteam[var_01.pers["team"]]])
{
var_01.grndheadicon setshader("waypoint_defend",14,14);
var_01.grndheadicon setwaypoint(0,1,0,0);
objective_icon(var_01.grndobjid,"waypoint_defend");
continue;
}
var_01.grndheadicon setshader("waypoint_capture",14,14);
var_01.grndheadicon setwaypoint(0,1,0,0);
objective_icon(var_01.grndobjid,"waypoint_capture");
}
}
wait 0.5;
}
}
//Function Number: 17
locationscoring()
{
level endon("game_ended");
maps\mp\_utility::func_274B("prematch_done");
var_00 = maps\mp\gametypes\_rank::getscoreinfovalue("zone_tick");
for(;;)
{
if(level.grnd_numplayers["axis"])
{
maps\mp\gametypes\_gamescore::giveteamscoreforobjective("axis",var_00 * level.grnd_numplayers["axis"]);
}
if(level.grnd_numplayers["allies"])
{
maps\mp\gametypes\_gamescore::giveteamscoreforobjective("allies",var_00 * level.grnd_numplayers["allies"]);
}
foreach(var_02 in level.players)
{
if(isdefined(var_02.ingrindzone) && maps\mp\_utility::isreallyalive(var_02) && var_02.pers["team"] != "spectator" && var_02 isingrindzone())
{
var_02.ingrindzonepoints = var_02.ingrindzonepoints + var_00;
maps\mp\gametypes\_gamescore::func_26D3("zone_tick",var_02,undefined,0,1);
var_02.xpupdatetotal = 0;
var_02 thread maps\mp\gametypes\_rank::xppointspopup(20,0,(1,1,0.5),0);
}
}
maps\mp\gametypes\_hostmigration::func_2740(1);
}
}
//Function Number: 18
func_3532()
{
level endon("game_ended");
level notify("reset_grnd_drops");
level endon("reset_grnd_drops");
level.grnd_previouscratetypes = [];
for(;;)
{
var_00 = func_3533();
var_01 = 1;
if(isdefined(var_00) && maps\mp\_utility::func_2BEC() < maps\mp\_utility::maxvehiclesallowed() && level.fauxvehiclecount + var_01 < maps\mp\_utility::maxvehiclesallowed() && level.numdropcrates < 8)
{
var_00 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_EARNED_CAREPACKAGE");
thread maps\mp\_utility::teamplayercardsplash("callout_earned_carepackage",var_00);
var_00 thread maps\mp\_utility::func_26E5(level.otherteam[var_00.team] + "_enemy_airdrop_assault_inbound",level.otherteam[var_00.team]);
var_00 thread maps\mp\_utility::func_26E5(var_00.team + "_friendly_airdrop_assault_inbound",var_00.team);
maps\mp\_utility::func_2D68("mp_war_objective_taken",var_00.team);
maps\mp\_utility::func_2D68("mp_war_objective_lost",level.otherteam[var_00.team]);
var_02 = level.grnd_zone.origin + (randomintrange(-50,50),randomintrange(-50,50),0);
var_03 = getdropzonecratetype();
if(issubstr(tolower(var_03),"juggernaut"))
{
level thread maps\mp\killstreaks\_airdrop::doc130flyby(var_00,var_02,randomfloat(360),var_03);
}
else if(var_03 == "mega")
{
level thread maps\mp\killstreaks\_airdrop::func_2E77(var_00,var_02,randomfloat(360),"airdrop_grnd",-360);
}
else
{
maps\mp\_utility::func_80C7();
level thread maps\mp\killstreaks\_airdrop::doflyby(var_00,var_02,randomfloat(360),"airdrop_grnd",0,var_03);
}
var_04 = level.matchrules_droptime;
}
else
{
var_04 = 0.5;
}
maps\mp\gametypes\_hostmigration::func_2740(var_04);
}
}
//Function Number: 19
func_3533()
{
var_00 = undefined;
var_01 = 0;
foreach(var_03 in level.players)
{
if(maps\mp\_utility::isreallyalive(var_03) && var_03.pers["team"] != "spectator")
{
if(var_03 isingrindzone() && var_03.ingrindzonepoints > var_01)
{
var_00 = var_03;
var_01 = var_03.ingrindzonepoints;
}
}
}
return var_00;
}
//Function Number: 20
getdropzonecratetype()
{
var_00 = undefined;
if(!isdefined(level.grnd_previouscratetypes["mega"]) && level.numdropcrates == 0 && randomintrange(0,100) < 5)
{
var_00 = "mega";
}
else
{
if(level.grnd_previouscratetypes.size)
{
for(var_01 = 200;var_01;var_01--)
{
var_00 = maps\mp\killstreaks\_airdrop::getrandomcratetype("airdrop_grnd");
if(isdefined(level.grnd_previouscratetypes[var_00]))
{
var_00 = undefined;
continue;
}
break;
}
}
if(!isdefined(var_00))
{
var_00 = maps\mp\killstreaks\_airdrop::getrandomcratetype("airdrop_grnd");
}
}
level.grnd_previouscratetypes[var_00] = 1;
if(level.grnd_previouscratetypes.size == 15)
{
level.grnd_previouscratetypes = [];
}
return var_00;
}
//Function Number: 21
isingrindzone()
{
if(distance2d(level.grnd_zone.origin,self.origin) < 300 && self.origin[2] > level.grnd_zone.origin[2] - 50)
{
return 1;
}
return 0;
}
//Function Number: 22
func_3535(param_00)
{
level waittill("game_ended");
if(isdefined(param_00))
{
param_00.alpha = 0;
}
}
//Function Number: 23
createzones()
{
level.grnd_dropzones = [];
var_00 = getentarray("grnd_dropZone","targetname");
if(isdefined(var_00) && var_00.size)
{
var_01 = 0;
foreach(var_03 in var_00)
{
level.grnd_dropzones[level.script][var_01] = var_03.origin;
var_01++;
}
return;
}
level.grnd_dropzones["mp_seatown"][0] = (-665,-209,226);
level.grnd_dropzones["mp_seatown"][1] = (-2225,1573,260);
level.grnd_dropzones["mp_seatown"][2] = (1275,-747,292);
level.grnd_dropzones["mp_seatown"][3] = (1210,963,225);
level.grnd_dropzones["mp_seatown"][4] = (-2343,-811,226);
level.grnd_dropzones["mp_seatown"][5] = (-1125,-1610,184);
level.grnd_dropzones["mp_dome"][0] = (649,1096,-250);
level.grnd_dropzones["mp_dome"][1] = (953,-501,-328);
level.grnd_dropzones["mp_dome"][2] = (-37,2099,-231);
level.grnd_dropzones["mp_dome"][3] = (-716,1100,-296);
level.grnd_dropzones["mp_dome"][4] = (-683,-51,-352);
level.grnd_dropzones["mp_plaza2"][0] = (266,-212,708);
level.grnd_dropzones["mp_plaza2"][1] = (295,1842,668);
level.grnd_dropzones["mp_plaza2"][2] = (-1449,1833,692);
level.grnd_dropzones["mp_plaza2"][3] = (835,-1815,668);
level.grnd_dropzones["mp_plaza2"][4] = (-1116,76,729);
level.grnd_dropzones["mp_plaza2"][5] = (-399,951,676);
level.grnd_dropzones["mp_mogadishu"][0] = (552,1315,8);
level.grnd_dropzones["mp_mogadishu"][1] = (990,3248,144);
level.grnd_dropzones["mp_mogadishu"][2] = (-879,2643,135);
level.grnd_dropzones["mp_mogadishu"][3] = (-68,-995,16);
level.grnd_dropzones["mp_mogadishu"][4] = (1499,-1206,15);
level.grnd_dropzones["mp_mogadishu"][5] = (2387,1786,61);
level.grnd_dropzones["mp_paris"][0] = (-150,-80,63);
level.grnd_dropzones["mp_paris"][1] = (-947,-1088,107);
level.grnd_dropzones["mp_paris"][2] = (1052,-614,50);
level.grnd_dropzones["mp_paris"][3] = (1886,648,24);
level.grnd_dropzones["mp_paris"][4] = (628,2096,30);
level.grnd_dropzones["mp_paris"][5] = (-2033,1082,308);
level.grnd_dropzones["mp_paris"][6] = (-1230,1836,295);
level.grnd_dropzones["mp_exchange"][0] = (904,441,-77);
level.grnd_dropzones["mp_exchange"][1] = (-1056,1435,141);
level.grnd_dropzones["mp_exchange"][2] = (800,1543,148);
level.grnd_dropzones["mp_exchange"][3] = (2423,1368,141);
level.grnd_dropzones["mp_exchange"][4] = (596,-1870,89);
level.grnd_dropzones["mp_exchange"][5] = (-1241,-821,30);
level.grnd_dropzones["mp_bootleg"][0] = (-444,-114,-8);
level.grnd_dropzones["mp_bootleg"][1] = (1053,-1051,-13);
level.grnd_dropzones["mp_bootleg"][2] = (889,1184,-28);
level.grnd_dropzones["mp_bootleg"][3] = (-994,1877,-41);
level.grnd_dropzones["mp_bootleg"][4] = (-1707,-1333,63);
level.grnd_dropzones["mp_bootleg"][5] = (-334,-2155,61);
level.grnd_dropzones["mp_carbon"][0] = (-1791,-3892,3813);
level.grnd_dropzones["mp_carbon"][1] = (-338,-4978,3964);
level.grnd_dropzones["mp_carbon"][2] = (-82,-2941,3990);
level.grnd_dropzones["mp_carbon"][3] = (-3198,-2829,3809);
level.grnd_dropzones["mp_carbon"][4] = (-3673,-3893,3610);
level.grnd_dropzones["mp_carbon"][5] = (-2986,-4863,3648);
level.grnd_dropzones["mp_hardhat"][0] = (1187,-322,238);
level.grnd_dropzones["mp_hardhat"][1] = (2010,-1379,357);
level.grnd_dropzones["mp_hardhat"][2] = (1615,1245,366);
level.grnd_dropzones["mp_hardhat"][3] = (-371,825,436);
level.grnd_dropzones["mp_hardhat"][4] = (-820,-927,348);
level.grnd_dropzones["mp_alpha"][0] = (-239,1315,52);
level.grnd_dropzones["mp_alpha"][1] = (-1678,-219,55);
level.grnd_dropzones["mp_alpha"][2] = (235,-369,60);
level.grnd_dropzones["mp_alpha"][3] = (-201,2138,60);
level.grnd_dropzones["mp_alpha"][4] = (-1903,2433,198);
level.grnd_dropzones["mp_village"][0] = (990,-821,331);
level.grnd_dropzones["mp_village"][1] = (658,2155,337);
level.grnd_dropzones["mp_village"][2] = (-559,1882,310);
level.grnd_dropzones["mp_village"][3] = (-1999,1184,343);
level.grnd_dropzones["mp_village"][4] = (215,-2875,384);
level.grnd_dropzones["mp_village"][5] = (1731,-483,290);
level.grnd_dropzones["mp_lambeth"][0] = (712,217,-196);
level.grnd_dropzones["mp_lambeth"][1] = (1719,-1095,-196);
level.grnd_dropzones["mp_lambeth"][2] = (2843,1034,-269);
level.grnd_dropzones["mp_lambeth"][3] = (1251,2645,-213);
level.grnd_dropzones["mp_lambeth"][4] = (-1114,1301,-200);
level.grnd_dropzones["mp_lambeth"][5] = (-693,-823,-132);
level.grnd_dropzones["mp_radar"][0] = (-5052,2371,1223);
level.grnd_dropzones["mp_radar"][1] = (-4550,4199,1268);
level.grnd_dropzones["mp_radar"][2] = (-7149,4449,1376);
level.grnd_dropzones["mp_radar"][3] = (-6350,1528,1302);
level.grnd_dropzones["mp_radar"][4] = (-3333,992,1222);
level.grnd_dropzones["mp_radar"][5] = (-4040,-361,1222);
level.grnd_dropzones["mp_interchange"][0] = (662,-513,142);
level.grnd_dropzones["mp_interchange"][1] = (674,1724,112);
level.grnd_dropzones["mp_interchange"][2] = (-1003,1103,30);
level.grnd_dropzones["mp_interchange"][3] = (385,-2910,209);
level.grnd_dropzones["mp_interchange"][4] = (2004,-1760,144);
level.grnd_dropzones["mp_interchange"][5] = (2458,-300,147);
level.grnd_dropzones["mp_underground"][0] = (31,1319,-196);
level.grnd_dropzones["mp_underground"][1] = (165,-940,60);
level.grnd_dropzones["mp_underground"][2] = (-747,143,4);
level.grnd_dropzones["mp_underground"][3] = (-1671,1666,-216);
level.grnd_dropzones["mp_underground"][4] = (-631,3158,-68);
level.grnd_dropzones["mp_underground"][5] = (500,2865,-89);
level.grnd_dropzones["mp_bravo"][0] = (-39,-119,1280);
level.grnd_dropzones["mp_bravo"][1] = (1861,-563,1229);
level.grnd_dropzones["mp_bravo"][2] = (-1548,-366,1007);
level.grnd_dropzones["mp_bravo"][3] = (-678,1272,1273);
level.grnd_dropzones["mp_bravo"][4] = (1438,842,1272);
}

View File

@ -0,0 +1,488 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\gtnw.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 21
* Decompile Time: 296 ms
* Timestamp: 10/27/2023 2:26:12 AM
*******************************************************************/
//Function Number: 1
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
maps\mp\_utility::func_3315(level.gametype,3,0,1440);
maps\mp\_utility::registerscorelimitdvar(level.gametype,101,0,10000);
maps\mp\_utility::func_3312(level.gametype,1,0,30);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1,0,10);
maps\mp\_utility::func_330E(level.gametype,0,0,30);
maps\mp\_utility::func_3317(level.gametype,0,0,10);
maps\mp\_utility::registerhalftimedvar(level.gametype,0,0,1);
level.teambased = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.ondeadevent = ::ondeadevent;
level.initgametypeawards = ::initgametypeawards;
level.ontimelimit = ::ontimelimit;
level.onnormaldeath = ::onnormaldeath;
level.gtnw = 1;
game["dialog"]["gametype"] = "gtw";
if(getdvarint("g_hardcore"))
{
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
}
else if(getdvarint("camera_thirdPerson"))
{
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_diehard"))
{
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_" + level.gametype + "_promode"))
{
game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";
}
game["dialog"]["offense_obj"] = "obj_destroy";
game["dialog"]["defense_obj"] = "obj_defend";
level thread onplayerconnect();
}
//Function Number: 2
func_35AC(param_00,param_01)
{
thread maps\mp\gametypes\_gamelogic::endgame(param_00,param_01);
}
//Function Number: 3
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_01 = var_00 maps\mp\gametypes\_hud_util::createprimaryprogressbar();
var_02 = var_00 maps\mp\gametypes\_hud_util::createprimaryprogressbartext();
var_02 settext(&"MP_CAPTURING_NUKE");
var_01.usetime = 100;
var_00.usebar = var_01;
var_00.usebar maps\mp\gametypes\_hud_util::hideelem();
var_00.usebartext = var_02;
var_00.usebartext maps\mp\gametypes\_hud_util::hideelem();
}
}
//Function Number: 4
onstartgametype()
{
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
if(!isdefined(game["original_defenders"]))
{
game["original_defenders"] = game["defenders"];
}
if(game["switchedsides"])
{
var_00 = game["attackers"];
var_01 = game["defenders"];
game["attackers"] = var_01;
game["defenders"] = var_00;
}
setclientnamemode("auto_change");
if(level.splitscreen)
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_GTNW");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_GTNW");
}
else
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_GTNW_SCORE");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_GTNW_SCORE");
}
maps\mp\_utility::func_3305(game["attackers"],&"OBJECTIVES_GTNW");
maps\mp\_utility::func_3305(game["defenders"],&"OBJECTIVES_GTNW");
maps\mp\_utility::setobjectivehinttext(game["attackers"],&"OBJECTIVES_GTNW_HINT");
maps\mp\_utility::setobjectivehinttext(game["defenders"],&"OBJECTIVES_GTNW_HINT");
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::func_2FD0("allies","mp_ctf_spawn_allies");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_ctf_spawn_axis");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
maps\mp\gametypes\_rank::registerscoreinfo("kill",50);
maps\mp\gametypes\_rank::registerscoreinfo("headshot",100);
maps\mp\gametypes\_rank::registerscoreinfo("assist",20);
maps\mp\gametypes\_rank::registerscoreinfo("capture",500);
var_02[0] = "airdrop_pallet";
maps\mp\gametypes\_gameobjects::main(var_41);
thread setupnukesite();
}
//Function Number: 5
onprecachegametype()
{
precacheshader("waypoint_defend");
precacheshader("waypoint_target");
precacheshader("waypoint_capture");
precacheshader("compass_waypoint_target");
precacheshader("compass_waypoint_defend");
precacheshader("compass_waypoint_capture");
precachestring(&"MP_CAPTURING_NUKE");
}
//Function Number: 6
setupnukesite()
{
level.laststatus["allies"] = 0;
level.laststatus["axis"] = 0;
var_00 = getent("gtnw_zone","targetname");
var_01 = [];
var_02 = maps\mp\gametypes\_gameobjects::func_29E7("neutral",var_00,var_01,(0,0,100));
var_02 maps\mp\gametypes\_gameobjects::set2dicon("friendly","compass_waypoint_defend");
var_02 maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_defend");
var_02 maps\mp\gametypes\_gameobjects::set2dicon("enemy","compass_waypoint_captureneutral");
var_02 maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_captureneutral");
var_02 maps\mp\gametypes\_gameobjects::allowuse("enemy");
var_02.nousebar = 1;
var_02 maps\mp\gametypes\_gameobjects::setvisibleteam("any");
var_02.onbeginuse = ::onbeginuse;
var_02.onenduse = ::onenduse;
level.nukesite = var_02;
var_02 thread scorecounter();
}
//Function Number: 7
getspawnpoint()
{
if(self.team == "axis")
{
var_00 = game["attackers"];
}
else
{
var_00 = game["defenders"];
}
if(level.ingraceperiod)
{
var_01 = getentarray("mp_ctf_spawn_" + var_00 + "_start","classname");
var_02 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_01);
}
else
{
var_01 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(var_02);
var_02 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_02);
}
return var_02;
}
//Function Number: 8
func_3084(param_00,param_01,param_02,param_03,param_04)
{
wait param_04;
var_05 = spawnfx(param_00,param_01,param_02,param_03);
triggerfx(var_05);
}
//Function Number: 9
ondeadevent(param_00)
{
if((isdefined(level.nukeincoming) && level.nukeincoming) || isdefined(level.nukedetonated) && level.nukedetonated)
{
return;
}
if(param_00 == game["attackers"])
{
maps\mp\gametypes\_gamescore::giveteamscoreforobjective(param_00,1);
level thread func_35AC(game["defenders"],game["strings"][game["attackers"] + "_eliminated"]);
return;
}
if(param_00 == game["defenders"])
{
maps\mp\gametypes\_gamescore::giveteamscoreforobjective(param_00,1);
level thread func_35AC(game["attackers"],game["strings"][game["defenders"] + "_eliminated"]);
}
}
//Function Number: 10
initgametypeawards()
{
}
//Function Number: 11
ontimelimit()
{
if(game["teamScores"]["allies"] == game["teamScores"]["axis"])
{
level thread func_34AE();
return;
}
if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
{
thread maps\mp\gametypes\_gamelogic::endgame("axis",game["strings"]["time_limit_reached"]);
return;
}
if(game["teamScores"]["axis"] < game["teamScores"]["allies"])
{
thread maps\mp\gametypes\_gamelogic::endgame("allies",game["strings"]["time_limit_reached"]);
return;
}
}
//Function Number: 12
func_34AE(param_00)
{
level endon("game_ended");
level.inovertime = 1;
level thread disablespawning(5);
level.endgametime = 120;
param_00 = level.endgametime;
foreach(var_02 in level.players)
{
var_02 thread maps\mp\gametypes\_hud_message::func_2892("gtnw_overtime");
}
maps\mp\gametypes\_gamelogic::pausetimer();
level.timelimitoverride = 1;
setgameendtime(int(gettime() + level.endgametime * 1000));
maps\mp\gametypes\_hostmigration::waitlongdurationwithgameendtimeupdate(param_00);
if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
{
thread maps\mp\gametypes\_gamelogic::endgame("axis",game["strings"]["time_limit_reached"]);
return;
}
if(game["teamScores"]["axis"] < game["teamScores"]["allies"])
{
thread maps\mp\gametypes\_gamelogic::endgame("allies",game["strings"]["time_limit_reached"]);
return;
}
thread maps\mp\gametypes\_gamelogic::endgame("tie",game["strings"]["time_limit_reached"]);
}
//Function Number: 13
disablespawning(param_00)
{
level endon("game_ended");
wait 5;
level.disablespawning = 1;
}
//Function Number: 14
onbeginuse(param_00)
{
param_00.usebar maps\mp\gametypes\_hud_util::func_26BD();
param_00.usebartext maps\mp\gametypes\_hud_util::func_26BD();
}
//Function Number: 15
onenduse(param_00,param_01,param_02)
{
param_01.usebar maps\mp\gametypes\_hud_util::hideelem();
param_01.usebartext maps\mp\gametypes\_hud_util::hideelem();
}
//Function Number: 16
scorecounter()
{
level endon("game_ended");
self endon("stop_counting");
for(;;)
{
if(!self.touchlist["axis"].size && !self.touchlist["allies"].size)
{
setdvar("ui_danger_team","none");
maps\mp\gametypes\_gameobjects::set2dicon("enemy","compass_waypoint_captureneutral");
maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_captureneutral");
maps\mp\gametypes\_gameobjects::setownerteam("none");
func_35B5();
wait 1;
continue;
}
maps\mp\gametypes\_gameobjects::set2dicon("friendly","compass_waypoint_defend");
maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_defend");
maps\mp\gametypes\_gameobjects::set2dicon("enemy","compass_waypoint_capture");
maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_capture");
if(self.touchlist["axis"].size > self.touchlist["allies"].size)
{
if(maps\mp\gametypes\_gamescore::func_26EE("axis") < 100)
{
maps\mp\gametypes\_gamescore::giveteamscoreforobjective("axis",1);
}
thread func_35B4("axis");
setdvar("ui_danger_team","allies");
maps\mp\gametypes\_gameobjects::setownerteam("axis");
if(maps\mp\gametypes\_gamescore::func_26EE("axis") >= 100)
{
maps\mp\gametypes\_gameobjects::allowuse("none");
func_35B3("axis");
self notify("stop_counting");
}
}
else if(self.touchlist["axis"].size < self.touchlist["allies"].size)
{
if(maps\mp\gametypes\_gamescore::func_26EE("allies") < 100)
{
maps\mp\gametypes\_gamescore::giveteamscoreforobjective("allies",1);
}
thread func_35B4("allies");
setdvar("ui_danger_team","axis");
maps\mp\gametypes\_gameobjects::setownerteam("allies");
if(maps\mp\gametypes\_gamescore::func_26EE("allies") >= 100)
{
maps\mp\gametypes\_gameobjects::allowuse("none");
func_35B3("allies");
self notify("stop_counting");
}
}
else
{
maps\mp\gametypes\_gameobjects::set2dicon("enemy","compass_waypoint_captureneutral");
maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_captureneutral");
maps\mp\gametypes\_gameobjects::setownerteam("none");
setdvar("ui_danger_team","contested");
}
func_35B5();
wait 1;
}
}
//Function Number: 17
func_35B3(param_00)
{
func_346E(self.touchlist[param_00]);
maps\mp\gametypes\_gameobjects::setvisibleteam("none");
maps\mp\gametypes\_gameobjects::allowuse("none");
var_01 = 99999999;
var_02 = undefined;
foreach(var_04 in level.players)
{
if(!isdefined(var_04))
{
continue;
}
var_04.usebar maps\mp\gametypes\_hud_util::hideelem();
var_04.usebartext maps\mp\gametypes\_hud_util::hideelem();
if(var_04.team != param_00)
{
continue;
}
if(!isdefined(self.touchlist[param_00][var_04.guid]))
{
continue;
}
var_05 = self.touchlist[param_00][var_04.guid].starttime;
if(var_05 < var_01)
{
var_02 = var_04;
var_01 = var_05;
}
}
var_02 maps\mp\killstreaks\_nuke::tryusenuke(1);
}
//Function Number: 18
func_346E(param_00)
{
level endon("game_ended");
wait 0.05;
maps\mp\_utility::waittillslowprocessallowed();
var_01 = getarraykeys(param_00);
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_03 = param_00[var_01[var_02]].player;
var_03 thread maps\mp\gametypes\_hud_message::func_2892("captured_nuke",maps\mp\gametypes\_rank::getscoreinfovalue("capture"));
var_03 thread [[ level.onxpevent ]]("capture");
maps\mp\gametypes\_gamescore::func_26D3("capture",var_03);
}
}
//Function Number: 19
func_35B4(param_00)
{
var_01 = getteamscore(param_00);
foreach(var_03 in level.players)
{
if(!isdefined(var_03))
{
continue;
}
if(var_03.team != param_00)
{
continue;
}
if(!isdefined(self.touchlist[param_00][var_03.guid]))
{
continue;
}
var_03.usebar maps\mp\gametypes\_hud_util::updatebar(var_01 / 100,0);
}
}
//Function Number: 20
func_35B5()
{
foreach(var_01 in level.players)
{
if(!isdefined(var_01))
{
continue;
}
if(!isdefined(self.touchlist["axis"][var_01.guid]) && !isdefined(self.touchlist["allies"][var_01.guid]))
{
var_01.usebar maps\mp\gametypes\_hud_util::hideelem();
var_01.usebartext maps\mp\gametypes\_hud_util::hideelem();
}
if(isdefined(self.touchlist["axis"][var_01.guid]) || isdefined(self.touchlist["allies"][var_01.guid]))
{
var_01.usebar maps\mp\gametypes\_hud_util::func_26BD();
var_01.usebartext maps\mp\gametypes\_hud_util::func_26BD();
}
}
}
//Function Number: 21
onnormaldeath(param_00,param_01,param_02)
{
if(!isdefined(level.inovertime) || !level.inovertime)
{
return;
}
var_03 = param_00.team;
if(game["state"] == "postgame")
{
param_01.finalkill = 1;
}
}

View File

@ -0,0 +1,876 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\gun.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 24
* Decompile Time: 340 ms
* Timestamp: 10/27/2023 2:26:13 AM
*******************************************************************/
//Function Number: 1
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
setguns();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_3315(level.gametype,10);
setdynamicdvar("scr_gun_scorelimit",level.gun_guns.size);
maps\mp\_utility::registerscorelimitdvar(level.gametype,level.gun_guns.size);
level thread func_810F();
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerwinlimitdvar(level.gametype,0);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_randomize = 0;
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
setspecialloadout();
level.teambased = 0;
level.doprematch = 1;
level.killstreakrewards = 0;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.onspawnplayer = ::onspawnplayer;
level.getspawnpoint = ::getspawnpoint;
level.onplayerkilled = ::onplayerkilled;
level.ontimelimit = ::ontimelimit;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C(1);
level.matchrules_randomize = getmatchrulesdata("gunData","randomize");
setdynamicdvar("scr_gun_scorelimit",level.gun_guns.size);
maps\mp\_utility::registerscorelimitdvar(level.gametype,level.gun_guns.size);
setdynamicdvar("scr_gun_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("gun",1);
setdynamicdvar("scr_gun_roundlimit",1);
maps\mp\_utility::func_3312("gun",1);
setdynamicdvar("scr_gun_halftime",0);
maps\mp\_utility::registerhalftimedvar("gun",0);
setdynamicdvar("scr_gun_playerrespawndelay",0);
setdynamicdvar("scr_gun_waverespawndelay",0);
setdynamicdvar("scr_player_forcerespawn",1);
setdynamicdvar("scr_gun_promode",0);
}
//Function Number: 3
func_810F()
{
setdynamicdvar("scr_gun_scorelimit",level.gun_guns.size);
maps\mp\_utility::registerscorelimitdvar(level.gametype,level.gun_guns.size);
}
//Function Number: 4
onprecachegametype()
{
precachestring(&"MP_GUN");
}
//Function Number: 5
onstartgametype()
{
setclientnamemode("auto_change");
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_DM");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_DM");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_DM");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_DM");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_DM_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_DM_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_DM_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_DM_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_dm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_dm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
maps\mp\gametypes\_rank::registerscoreinfo("kill",0);
maps\mp\gametypes\_rank::registerscoreinfo("assist",0);
maps\mp\gametypes\_rank::registerscoreinfo("suicide",0);
maps\mp\gametypes\_rank::registerscoreinfo("teamkill",0);
maps\mp\gametypes\_rank::registerscoreinfo("headshot",0);
maps\mp\gametypes\_rank::registerscoreinfo("execution",0);
maps\mp\gametypes\_rank::registerscoreinfo("avenger",0);
maps\mp\gametypes\_rank::registerscoreinfo("defender",0);
maps\mp\gametypes\_rank::registerscoreinfo("posthumous",0);
maps\mp\gametypes\_rank::registerscoreinfo("revenge",0);
maps\mp\gametypes\_rank::registerscoreinfo("double",0);
maps\mp\gametypes\_rank::registerscoreinfo("triple",0);
maps\mp\gametypes\_rank::registerscoreinfo("multi",0);
maps\mp\gametypes\_rank::registerscoreinfo("buzzkill",0);
maps\mp\gametypes\_rank::registerscoreinfo("firstblood",0);
maps\mp\gametypes\_rank::registerscoreinfo("comeback",0);
maps\mp\gametypes\_rank::registerscoreinfo("longshot",0);
maps\mp\gametypes\_rank::registerscoreinfo("assistedsuicide",0);
maps\mp\gametypes\_rank::registerscoreinfo("knifethrow",0);
maps\mp\gametypes\_rank::registerscoreinfo("gained_gun_score",1);
maps\mp\gametypes\_rank::registerscoreinfo("dropped_gun_score",-1);
maps\mp\gametypes\_rank::registerscoreinfo("gained_gun_rank",100);
maps\mp\gametypes\_rank::registerscoreinfo("dropped_enemy_gun_rank",100);
var_00 = [];
maps\mp\gametypes\_gameobjects::main(var_00);
if(maps\mp\_utility::matchmakinggame())
{
maps\mp\gametypes\_equipment::createkilltriggers();
}
level.quickmessagetoall = 1;
level.blockweapondrops = 1;
level thread onplayerconnect();
level.killstreakrewards = 0;
}
//Function Number: 6
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.gun_firstspawn = 1;
var_00.gungamegunindex = 0;
var_00.gungameprevgunindex = 0;
var_00 func_356D();
if(level.matchrules_randomize)
{
var_00.gun_nextguns = level.gun_guns;
var_00.gun_prevguns = [];
}
var_00 thread func_2E9E();
var_00 thread func_356C();
}
}
//Function Number: 7
getspawnpoint()
{
if(self.gun_firstspawn)
{
self.gun_firstspawn = 0;
self.pers["class"] = "gamemode";
self.pers["lastClass"] = "";
self.class = self.pers["class"];
self.lastclass = self.pers["lastClass"];
if(common_scripts\utility::cointoss())
{
maps\mp\gametypes\_menus::func_2AF3("axis",1);
}
else
{
maps\mp\gametypes\_menus::func_2AF3("allies",1);
}
}
var_00 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(self.pers["team"]);
var_01 = maps\mp\gametypes\_spawnlogic::func_2FEF(var_00);
return var_01;
}
//Function Number: 8
onspawnplayer()
{
self.pers["gamemodeLoadout"] = level.gun_loadouts[self.pers["team"]];
thread waitloadoutdone();
level notify("spawned_player");
}
//Function Number: 9
waitloadoutdone()
{
level endon("game_ended");
self endon("disconnect");
self waittill("spawned_player");
maps\mp\_utility::giveperk("specialty_bling",0);
func_3569(1);
}
//Function Number: 10
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(param_03 == "MOD_FALLING" || isdefined(param_01) && isplayer(param_01))
{
if(param_03 == "MOD_FALLING" || param_01 == self || param_03 == "MOD_MELEE" && param_04 != "riotshield_mp")
{
self playlocalsound("mp_war_objective_lost");
self.gungameprevgunindex = self.gungamegunindex;
self.gungamegunindex = int(max(0,self.gungamegunindex - 1));
if(self.gungameprevgunindex > self.gungamegunindex)
{
maps\mp\gametypes\_gamescore::func_26D3("dropped_gun_score",self,undefined,1,1);
}
if(param_03 == "MOD_MELEE")
{
if(self.gungameprevgunindex)
{
param_01 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_DROPPED_ENEMY_GUN_RANK");
param_01 thread maps\mp\gametypes\_rank::func_2AB3("dropped_enemy_gun_rank");
return;
}
return;
}
return;
}
if(param_03 == "MOD_PISTOL_BULLET" || param_03 == "MOD_RIFLE_BULLET" || param_03 == "MOD_HEAD_SHOT" || param_03 == "MOD_PROJECTILE" || param_03 == "MOD_PROJECTILE_SPLASH" || param_03 == "MOD_IMPACT" || param_03 == "MOD_GRENADE" || param_03 == "MOD_GRENADE_SPLASH" || param_03 == "MOD_MELEE" && param_04 == "riotshield_mp")
{
if(param_04 != param_01.primaryweapon)
{
return;
}
param_01.gungameprevgunindex = param_01.gungamegunindex;
param_01.gungamegunindex++;
param_01 thread maps\mp\gametypes\_rank::func_2AB3("gained_gun_rank");
maps\mp\gametypes\_gamescore::func_26D3("gained_gun_score",param_01,self,1,1);
if(param_01.gungamegunindex == level.gun_guns.size - 1)
{
maps\mp\_utility::func_2D68("mp_enemy_obj_captured");
level thread maps\mp\_utility::teamplayercardsplash("callout_top_gun_rank",param_01);
}
if(param_01.gungamegunindex < level.gun_guns.size)
{
param_01 playlocalsound("mp_war_objective_taken");
param_01 func_3569();
return;
}
return;
}
}
}
//Function Number: 11
func_3569(param_00)
{
var_01 = func_8113();
self.gun_curgun = var_01;
var_01 = func_8114(var_01);
self takeallweapons();
maps\mp\_utility::_giveweapon(var_01);
if(isdefined(param_00))
{
self setspawnweapon(var_01);
}
var_02 = strtok(var_01,"_");
if(var_02[0] == "iw5")
{
var_03 = var_02[0] + "_" + var_02[1];
}
else if(var_03[0] == "alt")
{
var_03 = var_03[1] + "_" + var_03[2];
}
else
{
var_03 = var_03[0];
}
self.pers["primaryWeapon"] = var_03;
self.primaryweapon = var_01;
self givestartammo(var_01);
self switchtoweapon(var_01);
if(self.gungameprevgunindex > self.gungamegunindex)
{
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_DROPPED_GUN_RANK");
}
else if(self.gungameprevgunindex < self.gungamegunindex)
{
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_GAINED_GUN_RANK");
}
self.gungameprevgunindex = self.gungamegunindex;
showweaponname(var_03);
updategunhud();
}
//Function Number: 12
func_8113()
{
if(level.matchrules_randomize)
{
if(self.gungameprevgunindex < self.gungamegunindex)
{
var_00 = randomint(self.gun_nextguns.size);
var_01 = self.gun_nextguns[var_00];
self.gun_prevguns[self.gun_prevguns.size] = self.gun_nextguns[var_00];
self.gun_nextguns[var_00] = undefined;
self.gun_nextguns = common_scripts\utility::array_removeundefined(self.gun_nextguns);
}
else if(self.gungameprevgunindex > self.gungamegunindex)
{
if(self.gun_prevguns.size > 1)
{
for(var_02 = 0;var_02 < self.gun_prevguns.size;var_02++)
{
if(self.gun_prevguns[var_02] == self.gun_curgun)
{
break;
}
}
self.gun_nextguns[self.gun_nextguns.size] = self.gun_prevguns[var_02];
self.gun_prevguns[var_02] = undefined;
self.gun_prevguns = common_scripts\utility::array_removeundefined(self.gun_prevguns);
}
var_00 = randomint(self.gun_prevguns.size);
var_01 = self.gun_prevguns[var_00];
}
else if(self.gun_prevguns.size)
{
var_00 = randomint(self.gun_prevguns.size);
var_01 = self.gun_prevguns[var_00];
}
else
{
var_00 = randomint(self.gun_nextguns.size);
var_01 = self.gun_nextguns[var_00];
self.gun_prevguns[self.gun_prevguns.size] = self.gun_nextguns[var_00];
self.gun_nextguns[var_00] = undefined;
self.gun_nextguns = common_scripts\utility::array_removeundefined(self.gun_nextguns);
}
}
else
{
var_01 = level.gun_guns[self.gungamegunindex];
}
return var_01;
}
//Function Number: 13
func_8114(param_00)
{
if(isdefined(level.gun_attachments[param_00]) && isdefined(level.gun_attachments[param_00]["attach1"]))
{
var_01 = level.gun_attachments[param_00]["attach1"];
}
else
{
var_01 = "none";
}
if(isdefined(level.gun_attachments[param_00]) && isdefined(level.gun_attachments[param_00]["attach2"]))
{
var_02 = level.gun_attachments[param_00]["attach2"];
}
else
{
var_02 = "none";
}
var_03 = maps\mp\gametypes\_class::func_32BC(param_00,var_01,var_02,0,0);
return var_03;
}
//Function Number: 14
ontimelimit()
{
level.finalkillcam_winner = "none";
var_00 = func_7FB4();
if(!isdefined(var_00) || !var_00.size)
{
thread maps\mp\gametypes\_gamelogic::endgame("tie",game["strings"]["time_limit_reached"]);
return;
}
if(var_00.size == 1)
{
thread maps\mp\gametypes\_gamelogic::endgame(var_00[0],game["strings"]["time_limit_reached"]);
return;
}
if(var_00[var_00.size - 1].gungamegunindex > var_00[var_00.size - 2].gungamegunindex)
{
thread maps\mp\gametypes\_gamelogic::endgame(var_00[var_00.size - 1],game["strings"]["time_limit_reached"]);
return;
}
thread maps\mp\gametypes\_gamelogic::endgame("tie",game["strings"]["time_limit_reached"]);
}
//Function Number: 15
func_7FB4()
{
var_00 = -1;
var_01 = [];
foreach(var_03 in level.players)
{
if(isdefined(var_03.gungamegunindex) && var_03.gungamegunindex >= var_00)
{
var_00 = var_03.gungamegunindex;
var_01[var_01.size] = var_03;
}
}
return var_01;
}
//Function Number: 16
func_2E9E()
{
level endon("game_ended");
self endon("disconnect");
for(;;)
{
self waittill("reload");
self givestartammo(self.primaryweapon);
}
}
//Function Number: 17
func_356C()
{
level endon("game_ended");
self endon("disconnect");
for(;;)
{
if(maps\mp\_utility::isreallyalive(self) && self.team != "spectator" && isdefined(self.primaryweapon) && self getammocount(self.primaryweapon) == 0)
{
wait 2;
self notify("reload");
wait 1;
continue;
}
wait 0.05;
}
}
//Function Number: 18
func_356D()
{
if(level.splitscreen)
{
self.gun_progressdisplay[0] = maps\mp\gametypes\_hud_util::createfontstring("small",1.2);
self.gun_progressdisplay[0] maps\mp\gametypes\_hud_util::setpoint("TOP LEFT","TOP LEFT",80,0);
self.gun_progressdisplay[0] settext(&"MP_WEAPON");
self.gun_progressdisplay[0].alpha = 1;
self.gun_progressdisplay[0].archived = 0;
self.gun_progressdisplay[0].hidewheninmenu = 1;
self.gun_progressdisplay[1] = maps\mp\gametypes\_hud_util::createfontstring("small",1.2);
self.gun_progressdisplay[1] maps\mp\gametypes\_hud_util::setpoint("TOP LEFT","TOP LEFT",80,12);
self.gun_progressdisplay[1] settext("1 / " + level.gun_guns.size);
self.gun_progressdisplay[1].alpha = 1;
self.gun_progressdisplay[1].archived = 0;
self.gun_progressdisplay[1].hidewheninmenu = 1;
}
else
{
self.gun_progressdisplay[0] = maps\mp\gametypes\_hud_util::createfontstring("small",1.2);
self.gun_progressdisplay[0] maps\mp\gametypes\_hud_util::setpoint("TOP LEFT","TOP LEFT",115,5);
self.gun_progressdisplay[0] settext(&"MP_WEAPON");
self.gun_progressdisplay[0].alpha = 1;
self.gun_progressdisplay[0].archived = 0;
self.gun_progressdisplay[0].hidewheninmenu = 1;
self.gun_progressdisplay[1] = maps\mp\gametypes\_hud_util::createfontstring("small",1.2);
self.gun_progressdisplay[1] maps\mp\gametypes\_hud_util::setpoint("TOP LEFT","TOP LEFT",115,17);
self.gun_progressdisplay[1] settext("1 / " + level.gun_guns.size);
self.gun_progressdisplay[1].alpha = 1;
self.gun_progressdisplay[1].archived = 0;
self.gun_progressdisplay[1].hidewheninmenu = 1;
}
thread func_3571();
thread hideinkillcam();
}
//Function Number: 19
updategunhud()
{
self.gun_progressdisplay[1] settext(self.gungamegunindex + 1 + " / " + level.gun_guns.size);
}
//Function Number: 20
hideinkillcam()
{
self endon("disconnect");
var_00 = 1;
for(;;)
{
if(var_00 && !isalive(self) || maps\mp\_utility::func_2AF1())
{
self.gun_progressdisplay[0].alpha = 0;
self.gun_progressdisplay[1].alpha = 0;
var_00 = 0;
}
else if(!var_00 && isalive(self) && !maps\mp\_utility::func_2AF1())
{
self.gun_progressdisplay[0].alpha = 1;
self.gun_progressdisplay[1].alpha = 1;
var_00 = 1;
}
wait 0.05;
}
}
//Function Number: 21
func_3571()
{
self endon("disconnect");
level waittill("game_ended");
self.gun_progressdisplay[0].alpha = 0;
self.gun_progressdisplay[1].alpha = 0;
}
//Function Number: 22
showweaponname(param_00)
{
self endon("disconnect");
maps\mp\_utility::func_274B("prematch_done");
var_01 = tablelookup("mp/statstable.csv",4,param_00,3);
switch(var_01)
{
case "WEAPON_RIOTSHIELD":
self iprintlnbold(&"WEAPON_RIOTSHIELD");
break;
case "WEAPON_MAGNUM":
self iprintlnbold(&"WEAPON_MAGNUM");
break;
case "WEAPON_USP":
self iprintlnbold(&"WEAPON_USP");
break;
case "WEAPON_DESERTEAGLE":
self iprintlnbold(&"WEAPON_DESERTEAGLE");
break;
case "WEAPON_MP412":
self iprintlnbold(&"WEAPON_MP412");
break;
case "WEAPON_P99":
self iprintlnbold(&"WEAPON_P99");
break;
case "WEAPON_FNFIVESEVEN":
self iprintlnbold(&"WEAPON_FNFIVESEVEN");
break;
case "WEAPON_FMG9":
self iprintlnbold(&"WEAPON_FMG9");
break;
case "WEAPON_SKORPION":
self iprintlnbold(&"WEAPON_SKORPION");
break;
case "WEAPON_MP9":
self iprintlnbold(&"WEAPON_MP9");
break;
case "WEAPON_GLOCK":
self iprintlnbold(&"WEAPON_GLOCK");
break;
case "WEAPON_MP5K":
self iprintlnbold(&"WEAPON_MP5K");
break;
case "WEAPON_UZI":
self iprintlnbold(&"WEAPON_UZI");
break;
case "WEAPON_P90":
self iprintlnbold(&"WEAPON_P90");
break;
case "WEAPON_PP90M1":
self iprintlnbold(&"WEAPON_PP90M1");
break;
case "WEAPON_UMP45":
self iprintlnbold(&"WEAPON_UMP45");
break;
case "WEAPON_MP7":
self iprintlnbold(&"WEAPON_MP7");
break;
case "WEAPON_AK47":
self iprintlnbold(&"WEAPON_AK47");
break;
case "WEAPON_M16":
self iprintlnbold(&"WEAPON_M16");
break;
case "WEAPON_M4":
self iprintlnbold(&"WEAPON_M4");
break;
case "WEAPON_FAD":
self iprintlnbold(&"WEAPON_FAD");
break;
case "WEAPON_ACR":
self iprintlnbold(&"WEAPON_ACR");
break;
case "WEAPON_TYPE95":
self iprintlnbold(&"WEAPON_TYPE95");
break;
case "WEAPON_MK14":
self iprintlnbold(&"WEAPON_MK14");
break;
case "WEAPON_SCAR":
self iprintlnbold(&"WEAPON_SCAR");
break;
case "WEAPON_G36":
self iprintlnbold(&"WEAPON_G36");
break;
case "WEAPON_CM901":
self iprintlnbold(&"WEAPON_CM901");
break;
case "WEAPON_GRENADE_LAUNCHER":
self iprintlnbold(&"WEAPON_GRENADE_LAUNCHER");
break;
case "WEAPON_M320":
self iprintlnbold(&"WEAPON_M320");
break;
case "WEAPON_RPG":
self iprintlnbold(&"WEAPON_RPG");
break;
case "WEAPON_SMAW":
self iprintlnbold(&"WEAPON_SMAW");
break;
case "WEAPON_STINGER":
self iprintlnbold(&"WEAPON_STINGER");
break;
case "WEAPON_JAVELIN":
self iprintlnbold(&"WEAPON_JAVELIN");
break;
case "WEAPON_XM25":
self iprintlnbold(&"WEAPON_XM25");
break;
case "WEAPON_DRAGUNOV":
self iprintlnbold(&"WEAPON_DRAGUNOV");
break;
case "WEAPON_MSR":
self iprintlnbold(&"WEAPON_MSR");
break;
case "WEAPON_BARRETT":
self iprintlnbold(&"WEAPON_BARRETT");
break;
case "WEAPON_RSASS":
self iprintlnbold(&"WEAPON_RSASS");
break;
case "WEAPON_AS50":
self iprintlnbold(&"WEAPON_AS50");
break;
case "WEAPON_L96A1":
self iprintlnbold(&"WEAPON_L96A1");
break;
case "WEAPON_KSG":
self iprintlnbold(&"WEAPON_KSG");
break;
case "WEAPON_MODEL1887":
self iprintlnbold(&"WEAPON_MODEL1887");
break;
case "WEAPON_STRIKER":
self iprintlnbold(&"WEAPON_STRIKER");
break;
case "WEAPON_AA12":
self iprintlnbold(&"WEAPON_AA12");
break;
case "WEAPON_USAS12":
self iprintlnbold(&"WEAPON_USAS12");
break;
case "WEAPON_SPAS12":
self iprintlnbold(&"WEAPON_SPAS12");
break;
case "WEAPON_M60":
self iprintlnbold(&"WEAPON_M60");
break;
case "WEAPON_MK46":
self iprintlnbold(&"WEAPON_MK46");
break;
case "WEAPON_PECHENEG":
self iprintlnbold(&"WEAPON_PECHENEG");
break;
case "WEAPON_SA80":
self iprintlnbold(&"WEAPON_SA80");
break;
case "WEAPON_MG36":
self iprintlnbold(&"WEAPON_MG36");
break;
default:
break;
}
}
//Function Number: 23
setguns()
{
level.gun_guns = [];
var_00 = 0;
if(isusingmatchrulesdata())
{
var_00 = getmatchrulesdata("gunData","numGuns");
}
if(var_00 > 20)
{
var_00 = 20;
}
if(var_00)
{
for(var_01 = 0;var_01 < var_00;var_01++)
{
level.gun_guns[var_01] = getmatchrulesdata("gunData","guns",var_01);
if(level.gun_guns[var_01] == "none")
{
level.gun_guns[var_01] = "iw5_mp5";
}
}
}
else
{
level.gun_guns[0] = "iw5_deserteagle";
level.gun_guns[1] = "iw5_g18";
level.gun_guns[2] = "iw5_mp9";
level.gun_guns[3] = "iw5_mp5";
level.gun_guns[4] = "iw5_p90";
level.gun_guns[5] = "iw5_mp7";
level.gun_guns[6] = "iw5_ak47";
level.gun_guns[7] = "iw5_scar";
level.gun_guns[8] = "iw5_pecheneg";
level.gun_guns[9] = "iw5_mg36";
level.gun_guns[10] = "iw5_spas12";
level.gun_guns[11] = "iw5_1887";
level.gun_guns[12] = "iw5_type95";
level.gun_guns[13] = "iw5_mk14";
level.gun_guns[14] = "iw5_barrett";
level.gun_guns[15] = "iw5_msr";
level.gun_guns[16] = "xm25";
level.gun_guns[17] = "javelin";
}
level.gun_attachments = [];
level.gun_attachments["iw5_44magnum"]["attach1"] = "tactical";
level.gun_attachments["iw5_deserteagle"]["attach1"] = "tactical";
level.gun_attachments["iw5_mp412"]["attach1"] = "tactical";
level.gun_attachments["iw5_fmg9"]["attach1"] = "reflex";
level.gun_attachments["iw5_skorpion"]["attach1"] = "reflex";
level.gun_attachments["iw5_mp9"]["attach1"] = "reflex";
level.gun_attachments["iw5_g18"]["attach1"] = "reflex";
level.gun_attachments["iw5_mp5"]["attach1"] = "reflex";
level.gun_attachments["iw5_m9"]["attach1"] = "reflex";
level.gun_attachments["iw5_p90"]["attach1"] = "reflex";
level.gun_attachments["iw5_pp90m1"]["attach1"] = "reflex";
level.gun_attachments["iw5_ump45"]["attach1"] = "reflex";
level.gun_attachments["iw5_mp7"]["attach1"] = "reflex";
level.gun_attachments["iw5_ak47"]["attach1"] = "reflex";
level.gun_attachments["iw5_m16"]["attach1"] = "reflex";
level.gun_attachments["iw5_m4"]["attach1"] = "reflex";
level.gun_attachments["iw5_fad"]["attach1"] = "reflex";
level.gun_attachments["iw5_acr"]["attach1"] = "reflex";
level.gun_attachments["iw5_type95"]["attach1"] = "reflex";
level.gun_attachments["iw5_mk14"]["attach1"] = "reflex";
level.gun_attachments["iw5_scar"]["attach1"] = "reflex";
level.gun_attachments["iw5_g36c"]["attach1"] = "reflex";
level.gun_attachments["iw5_cm901"]["attach1"] = "reflex";
level.gun_attachments["iw5_ksg"]["attach1"] = "grip";
level.gun_attachments["iw5_striker"]["attach1"] = "grip";
level.gun_attachments["iw5_aa12"]["attach1"] = "grip";
level.gun_attachments["iw5_usas12"]["attach1"] = "grip";
level.gun_attachments["iw5_spas12"]["attach1"] = "grip";
level.gun_attachments["iw5_m60"]["attach1"] = "grip";
level.gun_attachments["iw5_m60"]["attach2"] = "reflex";
level.gun_attachments["iw5_mk46"]["attach1"] = "grip";
level.gun_attachments["iw5_mk46"]["attach2"] = "reflex";
level.gun_attachments["iw5_pecheneg"]["attach1"] = "grip";
level.gun_attachments["iw5_pecheneg"]["attach2"] = "reflex";
level.gun_attachments["iw5_sa80"]["attach1"] = "grip";
level.gun_attachments["iw5_sa80"]["attach2"] = "reflex";
level.gun_attachments["iw5_mg36"]["attach1"] = "grip";
level.gun_attachments["iw5_mg36"]["attach2"] = "reflex";
}
//Function Number: 24
setspecialloadout()
{
level.gun_loadouts["axis"]["loadoutPrimary"] = "iw5_acr";
level.gun_loadouts["axis"]["loadoutPrimaryAttachment"] = "none";
level.gun_loadouts["axis"]["loadoutPrimaryAttachment2"] = "none";
level.gun_loadouts["axis"]["loadoutPrimaryBuff"] = "specialty_null";
level.gun_loadouts["axis"]["loadoutPrimaryCamo"] = "none";
level.gun_loadouts["axis"]["loadoutPrimaryReticle"] = "none";
level.gun_loadouts["axis"]["loadoutSecondary"] = "none";
level.gun_loadouts["axis"]["loadoutSecondaryAttachment"] = "none";
level.gun_loadouts["axis"]["loadoutSecondaryAttachment2"] = "none";
level.gun_loadouts["axis"]["loadoutSecondaryBuff"] = "specialty_null";
level.gun_loadouts["axis"]["loadoutSecondaryCamo"] = "none";
level.gun_loadouts["axis"]["loadoutSecondaryReticle"] = "none";
level.gun_loadouts["axis"]["loadoutEquipment"] = "specialty_null";
level.gun_loadouts["axis"]["loadoutOffhand"] = "none";
level.gun_loadouts["axis"]["loadoutPerk1"] = "specialty_null";
level.gun_loadouts["axis"]["loadoutPerk2"] = "specialty_null";
level.gun_loadouts["axis"]["loadoutPerk3"] = "specialty_null";
level.gun_loadouts["axis"]["loadoutDeathstreak"] = "specialty_null";
level.gun_loadouts["axis"]["loadoutJuggernaut"] = 0;
level.gun_loadouts["allies"] = level.gun_loadouts["axis"];
}

View File

@ -0,0 +1,919 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\infect.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 25
* Decompile Time: 386 ms
* Timestamp: 10/27/2023 2:26:14 AM
*******************************************************************/
//Function Number: 1
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_3315(level.gametype,10);
maps\mp\_utility::setoverridewatchdvar("scorelimit",0);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_numinitialinfected = 1;
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
func_34B3();
level.teambased = 1;
level.doprematch = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.onspawnplayer = ::onspawnplayer;
level.getspawnpoint = ::getspawnpoint;
level.onplayerkilled = ::onplayerkilled;
level.ondeadevent = ::ondeadevent;
level.ontimelimit = ::ontimelimit;
level.infect_perks = [];
level.infect_perks[level.infect_perks.size] = "specialty_longersprint";
level.infect_perks[level.infect_perks.size] = "specialty_fastreload";
level.infect_perks[level.infect_perks.size] = "specialty_scavenger";
level.infect_perks[level.infect_perks.size] = "specialty_blindeye";
level.infect_perks[level.infect_perks.size] = "specialty_paint";
level.infect_perks[level.infect_perks.size] = "specialty_hardline";
level.infect_perks[level.infect_perks.size] = "specialty_coldblooded";
level.infect_perks[level.infect_perks.size] = "specialty_quickdraw";
level.infect_perks[level.infect_perks.size] = "_specialty_blastshield";
level.infect_perks[level.infect_perks.size] = "specialty_detectexplosive";
level.infect_perks[level.infect_perks.size] = "specialty_autospot";
level.infect_perks[level.infect_perks.size] = "specialty_bulletaccuracy";
level.infect_perks[level.infect_perks.size] = "specialty_quieter";
level.infect_perks[level.infect_perks.size] = "specialty_stalker";
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C();
level.matchrules_numinitialinfected = getmatchrulesdata("infectData","numInitialInfected");
setdynamicdvar("scr_" + level.gametype + "_numLives",0);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::setoverridewatchdvar("scorelimit",0);
setdynamicdvar("scr_infect_roundswitch",0);
maps\mp\_utility::func_330E("infect",0,0,9);
setdynamicdvar("scr_infect_roundlimit",1);
maps\mp\_utility::func_3312("infect",1);
setdynamicdvar("scr_infect_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("infect",1);
setdynamicdvar("scr_infect_halftime",0);
maps\mp\_utility::registerhalftimedvar("infect",0);
setdynamicdvar("scr_infect_playerrespawndelay",0);
setdynamicdvar("scr_infect_waverespawndelay",0);
setdynamicdvar("scr_player_forcerespawn",1);
setdynamicdvar("scr_team_fftype",0);
setdynamicdvar("scr_infect_promode",0);
}
//Function Number: 3
onprecachegametype()
{
precachestring(&"MP_CONSCRIPTION_STARTS_IN");
}
//Function Number: 4
onstartgametype()
{
setclientnamemode("auto_change");
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_INFECT");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_INFECT");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_INFECT");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_INFECT");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_INFECT_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_INFECT_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_INFECT_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_INFECT_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_tdm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_tdm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
var_00 = [];
maps\mp\gametypes\_gameobjects::main(var_00);
if(maps\mp\_utility::matchmakinggame())
{
maps\mp\gametypes\_equipment::createkilltriggers();
}
maps\mp\gametypes\_rank::registerscoreinfo("firstblood",0);
maps\mp\gametypes\_rank::registerscoreinfo("first_draft",350);
maps\mp\gametypes\_rank::registerscoreinfo("final_rogue",200);
maps\mp\gametypes\_rank::registerscoreinfo("kill",50);
maps\mp\gametypes\_rank::registerscoreinfo("draft_rogue",200);
maps\mp\gametypes\_rank::registerscoreinfo("survivor",50);
level.quickmessagetoall = 1;
level.blockweapondrops = 1;
level.infect_allowsuicide = 0;
level.infect_timerdisplay = maps\mp\gametypes\_hud_util::createservertimer("objective",1.4);
level.infect_timerdisplay maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","TOPLEFT",115,5);
level.infect_timerdisplay.label = &"MP_DRAFT_STARTS_IN";
level.infect_timerdisplay.alpha = 0;
level.infect_timerdisplay.archived = 0;
level.infect_timerdisplay.hidewheninmenu = 1;
level.infect_chosefirstinfected = 0;
level.infect_choosingfirstinfected = 0;
level.infect_awardedfinalsurvivor = 0;
level.infect_teamscores["axis"] = 0;
level.infect_teamscores["allies"] = 0;
level.infect_players = [];
level thread onplayerconnect();
level thread watchinfectforfeit();
}
//Function Number: 5
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.infect_firstspawn = 1;
if(maps\mp\_utility::gameflag("prematch_done"))
{
var_00.infect_joinedatstart = 0;
}
else
{
var_00.infect_joinedatstart = 1;
}
if(isdefined(level.infect_players[var_00.name]))
{
var_00.infect_rejoined = 1;
}
}
}
//Function Number: 6
getspawnpoint()
{
if(self.infect_firstspawn)
{
self.infect_firstspawn = 0;
self.pers["class"] = "gamemode";
self.pers["lastClass"] = "";
self.class = self.pers["class"];
self.lastclass = self.pers["lastClass"];
if(isdefined(self.infect_rejoined))
{
maps\mp\gametypes\_menus::func_2AF3("axis",1);
}
else
{
maps\mp\gametypes\_menus::func_2AF3("allies",1);
}
thread func_29A7();
}
if(level.ingraceperiod)
{
var_00 = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_tdm_spawn");
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_00);
}
else
{
var_00 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(self.pers["team"]);
var_01 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_01);
}
return var_01;
}
//Function Number: 7
onspawnplayer()
{
self.teamchangedthisframe = undefined;
self.infect_spawnpos = self.origin;
func_3555();
if(!level.infect_choosingfirstinfected)
{
level.infect_choosingfirstinfected = 1;
level thread choosefirstinfected();
}
if(isdefined(self.infect_rejoined))
{
self.infect_rejoined = undefined;
if(!level.infect_allowsuicide)
{
level notify("infect_stopCountdown");
level.infect_chosefirstinfected = 1;
level.infect_allowsuicide = 1;
foreach(var_01 in level.players)
{
if(isdefined(var_01.infect_isbeingchosen))
{
var_01.infect_isbeingchosen = undefined;
}
}
}
foreach(var_01 in level.players)
{
if(isdefined(var_01.isinitialinfected))
{
var_01 thread setinitialtonormalinfected();
}
}
if(level.infect_teamscores["axis"] == 1)
{
self.isinitialinfected = 1;
}
}
if(isdefined(self.isinitialinfected))
{
self.pers["gamemodeLoadout"] = level.infect_loadouts["axis_initial"];
}
else
{
self.pers["gamemodeLoadout"] = level.infect_loadouts[self.pers["team"]];
}
thread onspawnfinished();
level notify("spawned_player");
}
//Function Number: 8
onspawnfinished()
{
self endon("death");
self endon("disconnect");
self waittill("spawned_player");
if(self.pers["team"] == "axis")
{
thread setinfectedmsg();
}
wait 0.05;
if(self.pers["team"] == "axis")
{
maps\mp\killstreaks\_killstreaks::func_2DD6();
}
if(maps\mp\_utility::matchmakinggame())
{
foreach(var_01 in level.infect_perks)
{
if(maps\mp\_utility::func_27AF(var_01))
{
var_02 = tablelookup("mp/perktable.csv",1,var_01,8);
if(!maps\mp\_utility::func_27AF(var_02))
{
maps\mp\_utility::giveperk(var_02,0);
}
}
}
if(self.pers["team"] == "allies")
{
if(!maps\mp\_utility::func_27AF("specialty_scavenger"))
{
maps\mp\_utility::giveperk("specialty_scavenger",0);
var_02 = tablelookup("mp/perktable.csv",1,"specialty_scavenger",8);
if(!maps\mp\_utility::func_27AF(var_02))
{
maps\mp\_utility::giveperk(var_02,0);
return;
}
return;
}
return;
}
if(self.pers["team"] == "axis")
{
if(isdefined(self.isinitialinfected) && !maps\mp\_utility::func_27AF("specialty_longersprint"))
{
maps\mp\_utility::giveperk("specialty_longersprint",0);
var_02 = tablelookup("mp/perktable.csv",1,"specialty_longersprint",8);
if(!maps\mp\_utility::func_27AF(var_02))
{
maps\mp\_utility::giveperk(var_02,0);
}
}
if(!maps\mp\_utility::func_27AF("specialty_falldamage"))
{
maps\mp\_utility::giveperk("specialty_falldamage",0);
}
if(maps\mp\_utility::func_27AF("specialty_longersprint"))
{
maps\mp\_utility::giveperk("specialty_lightweight",0);
self setmovespeedscale(1.2);
return;
}
return;
}
}
}
//Function Number: 9
setinfectedmsg()
{
if(isdefined(self.isinitialinfected))
{
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_FIRST_MERCENARY",(1,0,0),0.3);
return;
}
if(isdefined(self.changingtoregularinfected))
{
self.changingtoregularinfected = undefined;
if(isdefined(self.changingtoregularinfectedbykill))
{
self.changingtoregularinfectedbykill = undefined;
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_FIRSTBLOOD");
maps\mp\gametypes\_gamescore::func_26D3("first_draft",self);
thread maps\mp\gametypes\_rank::func_2AB3("first_draft");
return;
}
return;
}
thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_DRAFTED",(1,0,0),0.3);
}
//Function Number: 10
choosefirstinfected()
{
level endon("game_ended");
level endon("infect_stopCountdown");
level.infect_allowsuicide = 0;
maps\mp\_utility::func_274B("prematch_done");
level.infect_timerdisplay.label = &"MP_DRAFT_STARTS_IN";
level.infect_timerdisplay settimer(8);
level.infect_timerdisplay.alpha = 1;
maps\mp\gametypes\_hostmigration::func_2740(8);
level.infect_timerdisplay.alpha = 0;
level.players[randomint(level.players.size)] setfirstinfected(1);
}
//Function Number: 11
setfirstinfected(param_00)
{
self endon("disconnect");
if(param_00)
{
self.infect_isbeingchosen = 1;
}
while(!maps\mp\_utility::isreallyalive(self) || maps\mp\_utility::isusingremote())
{
wait 0.05;
}
if(isdefined(self.iscarrying) && self.iscarrying == 1)
{
self notify("force_cancel_placement");
wait 0.05;
}
while(self ismantling())
{
wait 0.05;
}
while(!self isonground() && !self isonladder())
{
wait 0.05;
}
if(maps\mp\_utility::isjuggernaut())
{
self notify("lost_juggernaut");
wait 0.05;
}
if(param_00)
{
maps\mp\gametypes\_menus::func_2AF3("axis");
level.infect_chosefirstinfected = 1;
self.infect_isbeingchosen = undefined;
func_3555();
level.infect_allowsuicide = 1;
}
self.isinitialinfected = 1;
self.pers["gamemodeLoadout"] = level.infect_loadouts["axis_initial"];
if(isdefined(self.setspawnpoint))
{
maps\mp\perks\_perkfunctions::func_2A63(self.setspawnpoint);
}
var_01 = spawn("script_model",self.origin);
var_01.angles = self.angles;
var_01.playerspawnpos = self.origin;
var_01.notti = 1;
self.setspawnpoint = var_01;
self notify("faux_spawn");
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
if(param_00)
{
level.infect_players[self.name] = 1;
}
thread maps\mp\_utility::teamplayercardsplash("callout_first_mercenary",self);
maps\mp\_utility::func_2D68("mp_enemy_obj_captured");
}
//Function Number: 12
setinitialtonormalinfected(param_00)
{
level endon("game_ended");
self.isinitialinfected = undefined;
self.changingtoregularinfected = 1;
if(isdefined(param_00))
{
self.changingtoregularinfectedbykill = 1;
}
while(!maps\mp\_utility::isreallyalive(self))
{
wait 0.05;
}
if(isdefined(self.iscarrying) && self.iscarrying == 1)
{
self notify("force_cancel_placement");
wait 0.05;
}
while(self ismantling())
{
wait 0.05;
}
while(!self isonground())
{
wait 0.05;
}
if(maps\mp\_utility::isjuggernaut())
{
self notify("lost_juggernaut");
wait 0.05;
}
while(!maps\mp\_utility::isreallyalive(self))
{
wait 0.05;
}
self.pers["gamemodeLoadout"] = level.infect_loadouts["axis"];
if(isdefined(self.setspawnpoint))
{
maps\mp\perks\_perkfunctions::func_2A63(self.setspawnpoint);
}
var_01 = spawn("script_model",self.origin);
var_01.angles = self.angles;
var_01.playerspawnpos = self.origin;
var_01.notti = 1;
self.setspawnpoint = var_01;
self notify("faux_spawn");
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
}
//Function Number: 13
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
var_0A = 0;
var_0B = 0;
if(self.team == "allies" && isdefined(param_01))
{
if(isplayer(param_01) && param_01 != self)
{
var_0A = 1;
}
else if(level.infect_allowsuicide && param_01 == self || !isplayer(param_01))
{
var_0A = 1;
var_0B = 1;
}
}
if(var_0A)
{
self.teamchangedthisframe = 1;
maps\mp\gametypes\_menus::func_2AF3("axis");
func_3555();
level.infect_players[self.name] = 1;
if(var_0B)
{
if(level.infect_teamscores["axis"] > 1)
{
foreach(var_0D in level.players)
{
if(isdefined(var_0D.isinitialinfected))
{
var_0D thread setinitialtonormalinfected();
}
}
}
}
else if(isdefined(param_01.isinitialinfected))
{
param_01 thread setinitialtonormalinfected(1);
}
else
{
param_01 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_DRAFTED");
maps\mp\gametypes\_gamescore::func_26D3("draft_rogue",param_01,self,1);
param_01 thread maps\mp\gametypes\_rank::func_2AB3("draft_rogue");
}
if(level.infect_teamscores["allies"] > 1)
{
maps\mp\_utility::func_2D68("mp_enemy_obj_captured","allies");
maps\mp\_utility::func_2D68("mp_war_objective_taken","axis");
thread maps\mp\_utility::teamplayercardsplash("callout_got_drafted",self,"allies");
if(!var_0B)
{
thread maps\mp\_utility::teamplayercardsplash("callout_drafted_rogue",param_01,"axis");
foreach(var_0D in level.players)
{
if(var_0D.team == "allies" && var_0D != self && distance(var_0D.infect_spawnpos,var_0D.origin) > 32)
{
var_0D thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_SURVIVOR");
maps\mp\gametypes\_gamescore::func_26D3("survivor",var_0D,undefined,1);
var_0D thread maps\mp\gametypes\_rank::func_2AB3("survivor");
}
}
return;
}
return;
}
if(level.infect_teamscores["allies"] == 1)
{
onfinalsurvivor();
return;
}
if(level.infect_teamscores["allies"] == 0)
{
onsurvivorseliminated();
return;
}
return;
}
}
//Function Number: 14
onfinalsurvivor()
{
maps\mp\_utility::func_2D68("mp_obj_captured");
foreach(var_01 in level.players)
{
if(var_01.team == "allies")
{
var_01 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_FINAL_ROGUE");
if(!level.infect_awardedfinalsurvivor)
{
if(var_01.infect_joinedatstart && distance(var_01.infect_spawnpos,var_01.origin) > 32)
{
maps\mp\gametypes\_gamescore::func_26D3("final_rogue",var_01,undefined,1);
var_01 thread maps\mp\gametypes\_rank::func_2AB3("final_rogue");
}
level.infect_awardedfinalsurvivor = 1;
}
thread maps\mp\_utility::teamplayercardsplash("callout_final_rogue",var_01);
if(maps\mp\_utility::matchmakinggame() && !var_01 maps\mp\_utility::isjuggernaut())
{
level thread finalsurvivoruav(var_01);
}
break;
}
}
}
//Function Number: 15
finalsurvivoruav(param_00)
{
level endon("game_ended");
param_00 endon("disconnect");
param_00 endon("eliminated");
level endon("infect_lateJoiner");
level thread enduavonlatejoiner(param_00);
var_01 = 0;
level.radarmode["axis"] = "normal_radar";
foreach(var_03 in level.players)
{
if(var_03.team == "axis")
{
var_03.radarmode = "normal_radar";
}
}
setteamradarstrength("axis",1);
for(;;)
{
var_05 = param_00.origin;
wait 4;
if(var_01)
{
setteamradar("axis",0);
var_01 = 0;
}
wait 6;
if(distance(var_05,param_00.origin) < 200)
{
setteamradar("axis",1);
var_01 = 1;
foreach(var_03 in level.players)
{
var_03 playlocalsound("recondrone_tag");
}
}
}
}
//Function Number: 16
enduavonlatejoiner(param_00)
{
level endon("game_ended");
param_00 endon("disconnect");
param_00 endon("eliminated");
for(;;)
{
if(level.infect_teamscores["allies"] > 1)
{
level notify("infect_lateJoiner");
wait 0.05;
setteamradar("axis",0);
break;
}
wait 0.05;
}
}
//Function Number: 17
func_29A7()
{
level endon("game_ended");
self endon("eliminated");
self waittill("disconnect");
func_3555();
if(isdefined(self.infect_isbeingchosen) || level.infect_chosefirstinfected)
{
if(level.infect_teamscores["axis"] && level.infect_teamscores["allies"])
{
if(self.team == "allies" && level.infect_teamscores["allies"] == 1)
{
onfinalsurvivor();
}
else if(self.team == "axis" && level.infect_teamscores["axis"] == 1)
{
foreach(var_01 in level.players)
{
if(var_01 != self && var_01.team == "axis")
{
var_01 setfirstinfected(0);
}
}
}
}
else if(level.infect_teamscores["allies"] == 0)
{
onsurvivorseliminated();
}
else if(level.infect_teamscores["axis"] == 0)
{
if(level.infect_teamscores["allies"] == 1)
{
level.finalkillcam_winner = "allies";
level thread maps\mp\gametypes\_gamelogic::endgame("allies",game["strings"]["axis_eliminated"]);
}
else if(level.infect_teamscores["allies"] > 1)
{
level.infect_chosefirstinfected = 0;
level thread choosefirstinfected();
}
}
}
self.isinitialinfected = undefined;
}
//Function Number: 18
watchinfectforfeit()
{
level endon("game_ended");
level.forfeitinprogress = 1;
for(;;)
{
if(!isdefined(level.forfeitinprogress))
{
level.forfeitinprogress = 1;
}
wait 0.05;
}
}
//Function Number: 19
ondeadevent(param_00)
{
}
//Function Number: 20
ontimelimit()
{
level.finalkillcam_winner = "allies";
level thread maps\mp\gametypes\_gamelogic::endgame("allies",game["strings"]["time_limit_reached"]);
}
//Function Number: 21
onsurvivorseliminated()
{
level.finalkillcam_winner = "axis";
level thread maps\mp\gametypes\_gamelogic::endgame("axis",game["strings"]["allies_eliminated"]);
}
//Function Number: 22
getnumaxis()
{
var_00 = 0;
foreach(var_02 in level.players)
{
if(isdefined(var_02.team) && var_02.team == "axis")
{
var_00++;
}
}
return var_00;
}
//Function Number: 23
getnumallies()
{
var_00 = 0;
foreach(var_02 in level.players)
{
if(isdefined(var_02.team) && var_02.team == "allies")
{
var_00++;
}
}
return var_00;
}
//Function Number: 24
func_3555()
{
level.infect_teamscores["axis"] = getnumaxis();
level.infect_teamscores["allies"] = getnumallies();
game["teamScores"]["axis"] = level.infect_teamscores["axis"];
setteamscore("axis",level.infect_teamscores["axis"]);
game["teamScores"]["allies"] = level.infect_teamscores["allies"];
setteamscore("allies",level.infect_teamscores["allies"]);
}
//Function Number: 25
func_34B3()
{
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",0,"class","inUse"))
{
level.infect_loadouts["axis"] = maps\mp\_utility::func_334E("axis",0);
level.infect_loadouts["axis"]["loadoutStreakType"] = "assault";
level.infect_loadouts["axis"]["loadoutKillstreak1"] = "none";
level.infect_loadouts["axis"]["loadoutKillstreak2"] = "none";
level.infect_loadouts["axis"]["loadoutKillstreak3"] = "none";
}
else
{
level.infect_loadouts["axis"]["loadoutPrimary"] = "iw5_fmg9";
level.infect_loadouts["axis"]["loadoutPrimaryAttachment"] = "reflex";
level.infect_loadouts["axis"]["loadoutPrimaryAttachment2"] = "none";
level.infect_loadouts["axis"]["loadoutPrimaryBuff"] = "specialty_null";
level.infect_loadouts["axis"]["loadoutPrimaryCamo"] = "none";
level.infect_loadouts["axis"]["loadoutPrimaryReticle"] = "none";
level.infect_loadouts["axis"]["loadoutSecondary"] = "none";
level.infect_loadouts["axis"]["loadoutSecondaryAttachment"] = "none";
level.infect_loadouts["axis"]["loadoutSecondaryAttachment2"] = "none";
level.infect_loadouts["axis"]["loadoutSecondaryBuff"] = "specialty_null";
level.infect_loadouts["axis"]["loadoutSecondaryCamo"] = "none";
level.infect_loadouts["axis"]["loadoutSecondaryReticle"] = "none";
level.infect_loadouts["axis"]["loadoutEquipment"] = "throwingknife_mp";
level.infect_loadouts["axis"]["loadoutOffhand"] = "none";
level.infect_loadouts["axis"]["loadoutPerk1"] = "specialty_longersprint";
level.infect_loadouts["axis"]["loadoutPerk2"] = "specialty_quickdraw";
level.infect_loadouts["axis"]["loadoutPerk3"] = "specialty_quieter";
level.infect_loadouts["axis"]["loadoutStreakType"] = "assault";
level.infect_loadouts["axis"]["loadoutKillstreak1"] = "none";
level.infect_loadouts["axis"]["loadoutKillstreak2"] = "none";
level.infect_loadouts["axis"]["loadoutKillstreak3"] = "none";
level.infect_loadouts["axis"]["loadoutDeathstreak"] = "specialty_grenadepulldeath";
level.infect_loadouts["axis"]["loadoutJuggernaut"] = 0;
}
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",5,"class","inUse"))
{
level.infect_loadouts["axis_initial"] = maps\mp\_utility::func_334E("axis",5);
level.infect_loadouts["axis_initial"]["loadoutStreakType"] = "assault";
level.infect_loadouts["axis_initial"]["loadoutKillstreak1"] = "none";
level.infect_loadouts["axis_initial"]["loadoutKillstreak2"] = "none";
level.infect_loadouts["axis_initial"]["loadoutKillstreak3"] = "none";
}
else
{
level.infect_loadouts["axis_initial"]["loadoutPrimary"] = "iw5_scar";
level.infect_loadouts["axis_initial"]["loadoutPrimaryAttachment"] = "reflex";
level.infect_loadouts["axis_initial"]["loadoutPrimaryAttachment2"] = "xmags";
level.infect_loadouts["axis_initial"]["loadoutPrimaryBuff"] = "specialty_bling";
level.infect_loadouts["axis_initial"]["loadoutPrimaryCamo"] = "none";
level.infect_loadouts["axis_initial"]["loadoutPrimaryReticle"] = "none";
level.infect_loadouts["axis_initial"]["loadoutSecondary"] = "none";
level.infect_loadouts["axis_initial"]["loadoutSecondaryAttachment"] = "none";
level.infect_loadouts["axis_initial"]["loadoutSecondaryAttachment2"] = "none";
level.infect_loadouts["axis_initial"]["loadoutSecondaryBuff"] = "specialty_null";
level.infect_loadouts["axis_initial"]["loadoutSecondaryCamo"] = "none";
level.infect_loadouts["axis_initial"]["loadoutSecondaryReticle"] = "none";
level.infect_loadouts["axis_initial"]["loadoutEquipment"] = "specialty_null";
level.infect_loadouts["axis_initial"]["loadoutOffhand"] = "none";
level.infect_loadouts["axis_initial"]["loadoutPerk1"] = "specialty_longersprint";
level.infect_loadouts["axis_initial"]["loadoutPerk2"] = "specialty_quickdraw";
level.infect_loadouts["axis_initial"]["loadoutPerk3"] = "specialty_bulletaccuracy";
level.infect_loadouts["axis_initial"]["loadoutStreakType"] = "assault";
level.infect_loadouts["axis_initial"]["loadoutKillstreak1"] = "none";
level.infect_loadouts["axis_initial"]["loadoutKillstreak2"] = "none";
level.infect_loadouts["axis_initial"]["loadoutKillstreak3"] = "none";
level.infect_loadouts["axis_initial"]["loadoutDeathstreak"] = "specialty_grenadepulldeath";
level.infect_loadouts["axis_initial"]["loadoutJuggernaut"] = 0;
}
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","allies",0,"class","inUse"))
{
level.infect_loadouts["allies"] = maps\mp\_utility::func_334E("allies",0);
return;
}
level.infect_loadouts["allies"]["loadoutPrimary"] = "iw5_spas12";
level.infect_loadouts["allies"]["loadoutPrimaryAttachment"] = "silencer03";
level.infect_loadouts["allies"]["loadoutPrimaryAttachment2"] = "none";
level.infect_loadouts["allies"]["loadoutPrimaryBuff"] = "specialty_longerrange";
level.infect_loadouts["allies"]["loadoutPrimaryCamo"] = "none";
level.infect_loadouts["allies"]["loadoutPrimaryReticle"] = "none";
level.infect_loadouts["allies"]["loadoutSecondary"] = "none";
level.infect_loadouts["allies"]["loadoutSecondaryAttachment"] = "none";
level.infect_loadouts["allies"]["loadoutSecondaryAttachment2"] = "none";
level.infect_loadouts["allies"]["loadoutSecondaryBuff"] = "specialty_null";
level.infect_loadouts["allies"]["loadoutSecondaryCamo"] = "none";
level.infect_loadouts["allies"]["loadoutSecondaryReticle"] = "none";
level.infect_loadouts["allies"]["loadoutEquipment"] = "claymore_mp";
level.infect_loadouts["allies"]["loadoutOffhand"] = "flash_grenade_mp";
level.infect_loadouts["allies"]["loadoutPerk1"] = "specialty_scavenger";
level.infect_loadouts["allies"]["loadoutPerk2"] = "specialty_quickdraw";
level.infect_loadouts["allies"]["loadoutPerk3"] = "specialty_quieter";
level.infect_loadouts["allies"]["loadoutDeathstreak"] = "specialty_null";
level.infect_loadouts["allies"]["loadoutJuggernaut"] = 0;
}

View File

@ -0,0 +1,438 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\jugg.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 17
* Decompile Time: 255 ms
* Timestamp: 10/27/2023 2:26:15 AM
*******************************************************************/
//Function Number: 1
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_3315(level.gametype,10);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerscorelimitdvar(level.gametype,10);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_respawnnewjugg = 0;
level.matchrules_showjuggradaricon = 1;
level.matchrules_showjuggworldicon = 0;
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
func_34B3();
level.teambased = 1;
level.doprematch = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onspawnplayer = ::onspawnplayer;
level.onplayerkilled = ::onplayerkilled;
level.ontimelimit = ::ontimelimit;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C();
level.matchrules_respawnnewjugg = getmatchrulesdata("juggData","respawnNewJugg");
level.matchrules_showjuggradaricon = getmatchrulesdata("juggData","showJuggRadarIcon");
level.matchrules_showjuggworldicon = getmatchrulesdata("juggData","showJuggWorldIcon");
setdynamicdvar("scr_jugg_roundswitch",0);
maps\mp\_utility::func_330E("jugg",0,0,9);
setdynamicdvar("scr_jugg_roundlimit",1);
maps\mp\_utility::func_3312("jugg",1);
setdynamicdvar("scr_jugg_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("jugg",1);
setdynamicdvar("scr_jugg_halftime",0);
maps\mp\_utility::registerhalftimedvar("jugg",0);
setdynamicdvar("scr_jugg_playerrespawndelay",0);
setdynamicdvar("scr_jugg_waverespawndelay",0);
setdynamicdvar("scr_player_forcerespawn",1);
setdynamicdvar("scr_team_fftype",0);
setdynamicdvar("scr_jugg_promode",0);
}
//Function Number: 3
onprecachegametype()
{
precachestring(&"MP_JUGG_NEXT_JUGG_IN");
precacheshader("waypoint_kill");
}
//Function Number: 4
onstartgametype()
{
setclientnamemode("auto_change");
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_JUGG");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_JUGG");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_JUGG");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_JUGG");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_JUGG_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_JUGG_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_JUGG_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_JUGG_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_tdm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_tdm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
maps\mp\gametypes\_rank::registerscoreinfo("got_juggernaut",250);
maps\mp\gametypes\_rank::registerscoreinfo("kill_as_juggernaut",50);
var_00 = [];
maps\mp\gametypes\_gameobjects::main(var_00);
level.quickmessagetoall = 1;
level.blockweapondrops = 1;
level.jugg_juggernaut = undefined;
level.jugg_choosingjugg = 0;
level thread onplayerconnect();
level.jugg_timerdisplay = maps\mp\gametypes\_hud_util::createservertimer("objective",1.4);
level.jugg_timerdisplay maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","TOPLEFT",115,5);
level.jugg_timerdisplay.label = &"MP_JUGG_NEXT_JUGG_IN";
level.jugg_timerdisplay.alpha = 0;
level.jugg_timerdisplay.archived = 0;
level.jugg_timerdisplay.hidewheninmenu = 1;
thread func_34CC(level.jugg_timerdisplay);
level.killstreakrewards = 0;
}
//Function Number: 5
func_355D()
{
level endon("game_ended");
level notify("chooseInitialJugg");
level endon("chooseInitialJugg");
maps\mp\_utility::func_274B("prematch_done");
level.jugg_timerdisplay.label = &"MP_JUGG_NEXT_JUGG_IN";
level.jugg_timerdisplay settimer(8);
level.jugg_timerdisplay.alpha = 1;
maps\mp\gametypes\_hostmigration::func_2740(8);
level.jugg_timerdisplay.alpha = 0;
while(!level.players.size)
{
wait 1;
}
func_3562(level.players[randomint(level.players.size)],undefined,1);
}
//Function Number: 6
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.jugg_juggscore = 0;
var_00.jugg_firstspawn = 1;
var_00 thread func_29A7();
}
}
//Function Number: 7
func_29A7()
{
level endon("game_ended");
self waittill("disconnect");
func_3564();
}
//Function Number: 8
onspawnplayer()
{
if(!level.jugg_choosingjugg)
{
level.jugg_choosingjugg = 1;
level thread func_355D();
}
self.pers["gamemodeLoadout"] = level.jugg_loadouts[self.pers["team"]];
level notify("spawned_player");
}
//Function Number: 9
getspawnpoint()
{
if(self.jugg_firstspawn)
{
self.jugg_firstspawn = 0;
self.pers["class"] = "gamemode";
self.pers["lastClass"] = "";
self.class = self.pers["class"];
self.lastclass = self.pers["lastClass"];
maps\mp\gametypes\_menus::func_2AF3("axis",1);
}
if(level.ingraceperiod)
{
var_00 = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_tdm_spawn");
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_00);
}
else
{
var_00 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(self.pers["team"]);
var_01 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_01);
}
return var_01;
}
//Function Number: 10
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(isdefined(param_01) && isplayer(param_01) && param_01 != self)
{
if(isdefined(level.jugg_juggernaut) && level.jugg_juggernaut == self)
{
if(level.matchrules_showjuggworldicon)
{
self.jugg_headicon destroy();
}
func_3562(param_01,self);
return;
}
if(isdefined(level.jugg_juggernaut) && level.jugg_juggernaut == param_01)
{
param_01.jugg_juggscore++;
param_01 maps\mp\gametypes\_gamescore::giveteamscoreforobjective(param_01.pers["team"],1);
param_01 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_JUGGERNAUT_KILL");
maps\mp\gametypes\_gamescore::func_26D3("kill_as_juggernaut",param_01,self,1);
param_01 thread maps\mp\gametypes\_rank::func_2AB3("kill_as_juggernaut");
return;
}
return;
}
if(isdefined(level.jugg_juggernaut) && level.jugg_juggernaut == self)
{
self.var_2AF3 = "axis";
maps\mp\_utility::func_2D68("mp_enemy_obj_captured");
level.jugg_juggernaut = undefined;
level thread func_355D();
}
}
//Function Number: 11
func_3562(param_00,param_01,param_02)
{
if(isdefined(param_01))
{
param_01.var_2AF3 = "axis";
}
if(isdefined(level.jugg_juggernaut))
{
maps\mp\_utility::func_2D68("mp_enemy_obj_captured");
level.jugg_juggernaut = undefined;
}
else
{
maps\mp\_utility::func_2D68("mp_obj_captured");
}
param_00 endon("disconnect");
param_00 thread func_822C();
while(!isalive(param_00))
{
wait 0.05;
}
while(param_00 ismantling())
{
wait 0.05;
}
while(!param_00 isonground())
{
wait 0.05;
}
if(param_00 maps\mp\_utility::isjuggernaut())
{
param_00 notify("lost_juggernaut");
wait 0.05;
}
param_00 maps\mp\gametypes\_menus::func_2AF3("allies");
level.jugg_juggernaut = param_00;
func_3564();
if(isdefined(param_02))
{
param_00 thread func_3563(1);
return;
}
param_00 thread func_3563();
}
//Function Number: 12
func_3563(param_00)
{
self.pers["gamemodeLoadout"] = level.jugg_loadouts[self.pers["team"]];
if(level.matchrules_respawnnewjugg)
{
self notify("faux_spawn");
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
}
else
{
if(isdefined(self.setspawnpoint))
{
maps\mp\perks\_perkfunctions::func_2A63(self.setspawnpoint);
}
var_01 = spawn("script_model",self.origin);
var_01.angles = self.angles;
var_01.playerspawnpos = self.origin;
var_01.notti = 1;
self.setspawnpoint = var_01;
self notify("faux_spawn");
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
}
if(level.matchrules_showjuggworldicon)
{
self.jugg_headicon = maps\mp\_entityheadicons::func_277C(level.otherteam[self.team],"waypoint_kill",(0,0,85),24,24,undefined,undefined,undefined,1,undefined,0);
}
if(!isdefined(param_00))
{
var_02 = maps\mp\gametypes\_rank::getscoreinfovalue("got_juggernaut");
thread maps\mp\gametypes\_hud_message::func_2892("got_juggernaut",var_02);
maps\mp\gametypes\_gamescore::func_26D3("got_juggernaut",self,undefined,1);
thread maps\mp\gametypes\_rank::func_2AB3("got_juggernaut");
}
level thread maps\mp\_utility::teamplayercardsplash("callout_new_juggernaut",self,level.otherteam[self.team]);
}
//Function Number: 13
func_3564()
{
if(isdefined(level.jugg_juggernaut))
{
game["teamScores"]["allies"] = level.jugg_juggernaut.jugg_juggscore;
setteamscore("allies",level.jugg_juggernaut.jugg_juggscore);
}
else
{
game["teamScores"]["allies"] = 0;
setteamscore("allies",0);
}
game["teamScores"]["axis"] = 0;
setteamscore("axis",0);
}
//Function Number: 14
func_822C()
{
level endon("game_ended");
self endon("death");
self waittill("disconnect");
level thread func_355D();
}
//Function Number: 15
ontimelimit()
{
level.finalkillcam_winner = "axis";
level thread maps\mp\gametypes\_gamelogic::endgame("axis",game["strings"]["time_limit_reached"]);
}
//Function Number: 16
func_34CC(param_00)
{
level waittill("game_ended");
param_00.alpha = 0;
}
//Function Number: 17
func_34B3()
{
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",0,"class","inUse"))
{
level.jugg_loadouts["axis"] = maps\mp\_utility::func_334E("axis",0);
level.jugg_loadouts["axis"]["loadoutJuggernaut"] = 0;
}
else
{
level.jugg_loadouts["axis"]["loadoutPrimary"] = "iw5_usas12";
level.jugg_loadouts["axis"]["loadoutPrimaryAttachment"] = "none";
level.jugg_loadouts["axis"]["loadoutPrimaryAttachment2"] = "none";
level.jugg_loadouts["axis"]["loadoutPrimaryBuff"] = "specialty_longerrange";
level.jugg_loadouts["axis"]["loadoutPrimaryCamo"] = "none";
level.jugg_loadouts["axis"]["loadoutPrimaryReticle"] = "none";
level.jugg_loadouts["axis"]["loadoutSecondary"] = "iw5_44magnum";
level.jugg_loadouts["axis"]["loadoutSecondaryAttachment"] = "none";
level.jugg_loadouts["axis"]["loadoutSecondaryAttachment2"] = "none";
level.jugg_loadouts["axis"]["loadoutSecondaryBuff"] = "specialty_null";
level.jugg_loadouts["axis"]["loadoutSecondaryCamo"] = "none";
level.jugg_loadouts["axis"]["loadoutSecondaryReticle"] = "none";
level.jugg_loadouts["axis"]["loadoutEquipment"] = "claymore_mp";
level.jugg_loadouts["axis"]["loadoutOffhand"] = "flash_grenade_mp";
level.jugg_loadouts["axis"]["loadoutPerk1"] = "specialty_longersprint";
level.jugg_loadouts["axis"]["loadoutPerk2"] = "specialty_quickdraw";
level.jugg_loadouts["axis"]["loadoutPerk3"] = "specialty_bulletaccuracy";
level.jugg_loadouts["axis"]["loadoutDeathstreak"] = "specialty_grenadepulldeath";
level.jugg_loadouts["axis"]["loadoutJuggernaut"] = 0;
}
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","allies",5,"class","inUse"))
{
level.jugg_loadouts["allies"] = maps\mp\_utility::func_334E("allies",5);
level.jugg_loadouts["allies"]["loadoutJuggernaut"] = 1;
return;
}
level.jugg_loadouts["allies"]["loadoutPrimary"] = "iw5_scar";
level.jugg_loadouts["allies"]["loadoutPrimaryAttachment"] = "none";
level.jugg_loadouts["allies"]["loadoutPrimaryAttachment2"] = "none";
level.jugg_loadouts["allies"]["loadoutPrimaryBuff"] = "specialty_bulletpenetration";
level.jugg_loadouts["allies"]["loadoutPrimaryCamo"] = "none";
level.jugg_loadouts["allies"]["loadoutPrimaryReticle"] = "none";
level.jugg_loadouts["allies"]["loadoutSecondary"] = "rpg";
level.jugg_loadouts["allies"]["loadoutSecondaryAttachment"] = "none";
level.jugg_loadouts["allies"]["loadoutSecondaryAttachment2"] = "none";
level.jugg_loadouts["allies"]["loadoutSecondaryBuff"] = "specialty_null";
level.jugg_loadouts["allies"]["loadoutSecondaryCamo"] = "none";
level.jugg_loadouts["allies"]["loadoutSecondaryReticle"] = "none";
level.jugg_loadouts["allies"]["loadoutEquipment"] = "frag_grenade_mp";
level.jugg_loadouts["allies"]["loadoutOffhand"] = "smoke_grenade_mp";
level.jugg_loadouts["allies"]["loadoutPerk1"] = "specialty_scavenger";
level.jugg_loadouts["allies"]["loadoutPerk2"] = "_specialty_blastshield";
level.jugg_loadouts["allies"]["loadoutPerk3"] = "specialty_bulletaccuracy";
level.jugg_loadouts["allies"]["loadoutDeathstreak"] = "specialty_null";
level.jugg_loadouts["allies"]["loadoutJuggernaut"] = 1;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,689 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\oic.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 23
* Decompile Time: 322 ms
* Timestamp: 10/27/2023 2:26:18 AM
*******************************************************************/
//Function Number: 1
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_3315(level.gametype,10);
maps\mp\_utility::registerscorelimitdvar(level.gametype,0);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,2);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
level.matchrules_oneshotkill = 0;
level.matchrules_initialammo = 2;
level.matchrules_rewardammo = 2;
}
func_351A();
func_34B3();
level.teambased = 0;
level.doprematch = 1;
level.onstartgametype = ::onstartgametype;
level.onspawnplayer = ::onspawnplayer;
level.getspawnpoint = ::getspawnpoint;
level.onplayerkilled = ::onplayerkilled;
level.ononeleftevent = ::ononeleftevent;
if(level.matchrules_oneshotkill)
{
level.modifyplayerdamage = ::modifyplayerdamage;
}
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C(1);
level.matchrules_initialammo = getmatchrulesdata("oicData","initialAmmoCount");
level.matchrules_rewardammo = getmatchrulesdata("oicData","killRewardAmmoCount");
level.matchrules_oneshotkill = getmatchrulesdata("oicData","oneShotKill");
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
setdynamicdvar("scr_oic_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("oic",1);
setdynamicdvar("scr_oic_roundlimit",1);
maps\mp\_utility::func_3312("oic",1);
setdynamicdvar("scr_oic_halftime",0);
maps\mp\_utility::registerhalftimedvar("oic",0);
setdynamicdvar("scr_oic_promode",0);
setdynamicdvar("scr_oic_playerrespawndelay",0);
setdynamicdvar("scr_oic_waverespawndelay",0);
setdynamicdvar("scr_player_forcerespawn",1);
setdynamicdvar("scr_player_maxhealth",100);
setdynamicdvar("scr_game_onlyheadshots",0);
setdynamicdvar("scr_player_healthregentime",5);
if(maps\mp\_utility::matchmakinggame())
{
setdynamicdvar("scr_game_hardpoints",1);
setdynamicdvar("scr_game_perks",1);
return;
}
setdynamicdvar("scr_game_hardpoints",0);
}
//Function Number: 3
onstartgametype()
{
setclientnamemode("auto_change");
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_OIC");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_OIC");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_OIC");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_OIC");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_OIC_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_OIC_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_OIC_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_OIC_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_dm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_dm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
var_00 = [];
maps\mp\gametypes\_gameobjects::main(var_00);
if(maps\mp\_utility::matchmakinggame())
{
maps\mp\gametypes\_equipment::createkilltriggers();
}
maps\mp\gametypes\_rank::registerscoreinfo("kill_bonus",50);
maps\mp\gametypes\_rank::registerscoreinfo("kill",100);
maps\mp\gametypes\_rank::registerscoreinfo("survivor",20);
maps\mp\gametypes\_rank::registerscoreinfo("assist",0);
maps\mp\gametypes\_rank::registerscoreinfo("suicide",0);
maps\mp\gametypes\_rank::registerscoreinfo("teamkill",0);
maps\mp\gametypes\_rank::registerscoreinfo("headshot",0);
maps\mp\gametypes\_rank::registerscoreinfo("execution",0);
maps\mp\gametypes\_rank::registerscoreinfo("avenger",0);
maps\mp\gametypes\_rank::registerscoreinfo("defender",0);
maps\mp\gametypes\_rank::registerscoreinfo("posthumous",0);
maps\mp\gametypes\_rank::registerscoreinfo("revenge",0);
maps\mp\gametypes\_rank::registerscoreinfo("double",0);
maps\mp\gametypes\_rank::registerscoreinfo("triple",0);
maps\mp\gametypes\_rank::registerscoreinfo("multi",0);
maps\mp\gametypes\_rank::registerscoreinfo("buzzkill",0);
maps\mp\gametypes\_rank::registerscoreinfo("firstblood",0);
maps\mp\gametypes\_rank::registerscoreinfo("comeback",0);
maps\mp\gametypes\_rank::registerscoreinfo("longshot",0);
maps\mp\gametypes\_rank::registerscoreinfo("assistedsuicide",0);
maps\mp\gametypes\_rank::registerscoreinfo("knifethrow",0);
level.quickmessagetoall = 1;
level.blockweapondrops = 1;
if(maps\mp\_utility::matchmakinggame())
{
level.killstreakrewards = 1;
level thread finalthreeuav();
}
else
{
level.killstreakrewards = 0;
}
level thread onplayerconnect();
}
//Function Number: 4
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.oic_firstspawn = 1;
var_00.oic_hasspawned = 0;
var_00.oichud_button = undefined;
var_00.oichud_text = undefined;
var_00.oichud_name = undefined;
}
}
//Function Number: 5
getspawnpoint()
{
if(self.oic_firstspawn)
{
self.oic_firstspawn = 0;
self.pers["class"] = "gamemode";
self.pers["lastClass"] = "";
self.class = self.pers["class"];
self.lastclass = self.pers["lastClass"];
if(common_scripts\utility::cointoss())
{
maps\mp\gametypes\_menus::func_2AF3("axis",1);
}
else
{
maps\mp\gametypes\_menus::func_2AF3("allies",1);
}
thread movelatejoinerstospectators();
}
var_00 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(self.pers["team"]);
var_01 = maps\mp\gametypes\_spawnlogic::func_2FEF(var_00);
return var_01;
}
//Function Number: 6
movelatejoinerstospectators()
{
level endon("game_ended");
self endon("disconnect");
maps\mp\_utility::func_274B("prematch_done");
maps\mp\_utility::func_274B("graceperiod_done");
maps\mp\gametypes\_hostmigration::func_2740(5);
if(!self.oic_hasspawned)
{
self notify("used_predicted_spawnpoint");
maps\mp\gametypes\_menus::func_2AF3("spectator",1);
if(level.console && maps\mp\_utility::matchmakinggame())
{
thread playerwager(0);
}
}
}
//Function Number: 7
onspawnplayer()
{
if(isdefined(self.oic_rewardammo) && self.oic_rewardammo)
{
func_3518();
}
else
{
self.oic_rewardammo = 0;
}
self.pers["gamemodeLoadout"] = level.oic_loadouts[self.pers["team"]];
thread waitloadoutdone();
level notify("spawned_player");
}
//Function Number: 8
waitloadoutdone()
{
level endon("game_ended");
self endon("disconnect");
self waittill("spawned_player");
self takeallweapons();
maps\mp\_utility::giveperk("specialty_bling",0);
var_00 = func_8114(level.oic_gun);
maps\mp\_utility::_giveweapon(var_00);
self switchtoweapon(var_00);
self setspawnweapon(var_00);
var_01 = strtok(var_00,"_");
if(var_01[0] == "iw5")
{
var_02 = var_01[0] + "_" + var_01[1];
}
else if(var_02[0] == "alt")
{
var_02 = var_02[1] + "_" + var_02[2];
}
else
{
var_02 = var_02[0];
}
self.pers["primaryWeapon"] = var_02;
self.primaryweapon = var_00;
var_03 = weaponclipsize(var_00);
if(level.matchrules_initialammo > var_03)
{
self setweaponammoclip(self.primaryweapon,var_03);
self setweaponammostock(self.primaryweapon,level.matchrules_initialammo - var_03);
}
else
{
self setweaponammoclip(self.primaryweapon,level.matchrules_initialammo);
self setweaponammostock(self.primaryweapon,0);
}
if(maps\mp\_utility::matchmakinggame())
{
thread removescavenger();
wait 0.05;
if(!maps\mp\_utility::func_27AF("specialty_fastmantle"))
{
maps\mp\_utility::giveperk("specialty_fastmantle",0);
}
if(!maps\mp\_utility::func_27AF("specialty_assists"))
{
maps\mp\_utility::giveperk("specialty_assists",0);
}
if(!maps\mp\_utility::func_27AF("specialty_falldamage"))
{
maps\mp\_utility::giveperk("specialty_falldamage",0);
}
}
self.oic_hasspawned = 1;
}
//Function Number: 9
func_8114(param_00)
{
if(isdefined(level.gun_attachments[param_00]) && isdefined(level.gun_attachments[param_00]["attach1"]))
{
var_01 = level.gun_attachments[param_00]["attach1"];
}
else
{
var_01 = "none";
}
if(isdefined(level.gun_attachments[param_00]) && isdefined(level.gun_attachments[param_00]["attach2"]))
{
var_02 = level.gun_attachments[param_00]["attach2"];
}
else
{
var_02 = "none";
}
var_03 = maps\mp\gametypes\_class::func_32BC(param_00,var_01,var_02,0,0);
return var_03;
}
//Function Number: 10
modifyplayerdamage(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
if(param_03 == "MOD_PISTOL_BULLET" || param_03 == "MOD_RIFLE_BULLET" || param_03 == "MOD_HEAD_SHOT")
{
param_02 = 999;
}
return param_02;
}
//Function Number: 11
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(isdefined(param_01) && isplayer(param_01) && self != param_01)
{
param_01.oic_rewardammo = param_01.oic_rewardammo + level.matchrules_rewardammo;
if(self attackbuttonpressed())
{
param_01 thread waitgiveammo();
}
else
{
param_01 func_3518();
}
if(maps\mp\_utility::getgametypenumlives() && self.pers["deaths"] == maps\mp\_utility::getgametypenumlives())
{
eliminateplayer();
}
if(level.console && maps\mp\_utility::matchmakinggame())
{
foreach(var_0B in level.players)
{
if(isdefined(var_0B.sessionstate) && var_0B.sessionstate == "spectator" || var_0B.sessionstate == "spectating" && isdefined(var_0B.wagingplayer) && var_0B.wagingplayer == param_01.name)
{
var_0B thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_PROXIMITYKILL");
var_0B thread maps\mp\gametypes\_rank::func_2AB3("kill_bonus");
}
}
}
}
}
//Function Number: 12
ononeleftevent(param_00)
{
var_01 = maps\mp\_utility::getlastlivingplayer();
logstring("last one alive, win: " + var_01.name);
level.finalkillcam_winner = "none";
level thread maps\mp\gametypes\_gamelogic::endgame(var_01,&"MP_ENEMIES_ELIMINATED");
}
//Function Number: 13
waitgiveammo()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
self notify("oic_waitGiveAmmo");
self endon("oic_waitGiveAmmo");
while(self attackbuttonpressed())
{
wait 0.05;
}
func_3518();
}
//Function Number: 14
func_3518()
{
var_00 = self getcurrentweapon();
var_01 = self getweaponammostock(var_00);
var_02 = self getweaponammoclip(var_00);
var_03 = weaponclipsize(var_00);
if(var_02 + self.oic_rewardammo > var_03)
{
self setweaponammoclip(var_00,var_03);
self setweaponammostock(var_00,var_01 + var_02 + self.oic_rewardammo - var_03);
}
else
{
self setweaponammoclip(var_00,var_02 + self.oic_rewardammo);
}
self playlocalsound("scavenger_pack_pickup");
self.oic_rewardammo = 0;
}
//Function Number: 15
eliminateplayer()
{
if(level.console && maps\mp\_utility::matchmakinggame())
{
thread playerwager(1);
}
thread maps\mp\_utility::teamplayercardsplash("callout_eliminated",self);
var_00 = [];
foreach(var_02 in level.players)
{
if(var_02.pers["deaths"] < maps\mp\_utility::getgametypenumlives() && var_02.oic_hasspawned)
{
var_00[var_00.size] = var_02;
var_02 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_SURVIVOR");
maps\mp\gametypes\_gamescore::func_26D3("survivor",var_02,undefined,1);
var_02 thread maps\mp\gametypes\_rank::func_2AB3("survivor");
continue;
}
if(isdefined(var_02.wagingplayer) && var_02.wagingplayer == self.name)
{
var_02.oichud_name settext(" ");
}
}
if(var_00.size > 2)
{
maps\mp\_utility::func_2D68("mp_enemy_obj_captured");
return;
}
if(var_00.size == 2)
{
maps\mp\_utility::func_2D68("mp_obj_captured");
var_00[0] thread maps\mp\gametypes\_hud_message::playercardsplashnotify("callout_lastenemyalive",var_00[1]);
var_00[1] thread maps\mp\gametypes\_hud_message::playercardsplashnotify("callout_lastenemyalive",var_00[0]);
}
}
//Function Number: 16
playerwager(param_00)
{
level endon("game_ended");
self endon("disconnect");
if(param_00)
{
wait 7;
}
self.oichud_button = createhudelem("^3[{+usereload}]^7",1.4,(0.8,0.8,0.8),0,-50,100);
self.oichud_text = createhudelem(&"MENU_SELECT",1.6,(0.8,0.8,0.8),0,-27,99);
self.oichud_name = createhudelem(" ",1.75,(0.25,0.75,0.25),0.75,-23,122);
thread hidebuttonsonfreespectate();
self notifyonplayercommand("selected_player","+usereload");
for(;;)
{
self waittill("selected_player");
var_01 = self getspectatingplayer();
if(isdefined(var_01))
{
self.wagingplayer = var_01.name;
self.oichud_name settext(var_01.name);
self playlocalsound("recondrone_lockon");
}
}
}
//Function Number: 17
createhudelem(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = maps\mp\gametypes\_hud_util::createfontstring("small",param_01);
var_06 settext(param_00);
if(self issplitscreenplayer())
{
param_05 = param_05 - 35;
}
var_06 maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","CENTER",param_04,param_05);
var_06.alpha = 0;
var_06.color = param_02;
var_06.glowcolor = param_02;
var_06.glowalpha = param_03;
var_06.archived = 0;
var_06.hidewheninmenu = 1;
level thread func_3535(var_06);
return var_06;
}
//Function Number: 18
hidebuttonsonfreespectate()
{
level endon("game_ended");
self endon("disconnect");
for(;;)
{
var_00 = self getspectatingplayer();
if(isdefined(var_00))
{
self.oichud_button.alpha = 1;
self.oichud_text.alpha = 1;
self.oichud_name.alpha = 1;
}
else
{
self.oichud_button.alpha = 0;
self.oichud_text.alpha = 0;
self.oichud_name.alpha = 0;
}
wait 0.05;
}
}
//Function Number: 19
func_3535(param_00)
{
level waittill("game_ended");
if(isdefined(param_00))
{
param_00.alpha = 0;
}
}
//Function Number: 20
removescavenger()
{
level endon("game_ended");
self endon("disconnect");
self endon("death");
for(;;)
{
if(maps\mp\_utility::func_27AF("specialty_scavenger"))
{
maps\mp\_utility::func_282E("specialty_scavenger");
}
wait 0.05;
}
}
//Function Number: 21
finalthreeuav()
{
level endon("game_ended");
maps\mp\_utility::func_274B("prematch_done");
maps\mp\_utility::func_274B("graceperiod_done");
for(;;)
{
var_00 = [];
foreach(var_02 in level.players)
{
if(var_02.pers["deaths"] < maps\mp\_utility::getgametypenumlives() && var_02.oic_hasspawned)
{
var_00[var_00.size] = var_02;
}
}
if(var_00.size < 4)
{
foreach(var_02 in var_00)
{
var_02 setclientdvars("g_compassShowEnemies",1);
}
setdynamicdvar("scr_game_forceuav",1);
break;
}
wait 0.5;
}
}
//Function Number: 22
func_351A()
{
level.oic_gun = undefined;
var_00 = "none";
if(isusingmatchrulesdata())
{
var_00 = getmatchrulesdata("oicData","weapon");
}
if(isdefined(var_00) && var_00 != "none")
{
level.oic_gun = var_00;
}
else
{
level.oic_gun = "iw5_deserteagle";
}
if(level.oic_gun == "iw5_type95" || level.oic_gun == "iw5_m16")
{
level.matchrules_initialammo = level.matchrules_initialammo * 3;
level.matchrules_rewardammo = level.matchrules_rewardammo * 3;
}
}
//Function Number: 23
func_34B3()
{
level.oic_loadouts["axis"]["loadoutPrimary"] = "iw5_acr";
level.oic_loadouts["axis"]["loadoutPrimaryAttachment"] = "none";
level.oic_loadouts["axis"]["loadoutPrimaryAttachment2"] = "none";
level.oic_loadouts["axis"]["loadoutPrimaryBuff"] = "specialty_null";
level.oic_loadouts["axis"]["loadoutPrimaryCamo"] = "none";
level.oic_loadouts["axis"]["loadoutPrimaryReticle"] = "none";
level.oic_loadouts["axis"]["loadoutSecondary"] = "none";
level.oic_loadouts["axis"]["loadoutSecondaryAttachment"] = "none";
level.oic_loadouts["axis"]["loadoutSecondaryAttachment2"] = "none";
level.oic_loadouts["axis"]["loadoutSecondaryBuff"] = "specialty_null";
level.oic_loadouts["axis"]["loadoutSecondaryCamo"] = "none";
level.oic_loadouts["axis"]["loadoutSecondaryReticle"] = "none";
level.oic_loadouts["axis"]["loadoutEquipment"] = "specialty_null";
level.oic_loadouts["axis"]["loadoutOffhand"] = "none";
if(maps\mp\_utility::matchmakinggame())
{
level.oic_loadouts["axis"]["loadoutPerk1"] = "specialty_longersprint";
level.oic_loadouts["axis"]["loadoutPerk2"] = "specialty_hardline";
level.oic_loadouts["axis"]["loadoutPerk3"] = "specialty_null";
level.oic_loadouts["axis"]["loadoutStreakType"] = "streaktype_specialist";
level.oic_loadouts["axis"]["loadoutKillstreak1"] = "specialty_quickdraw_ks";
level.oic_loadouts["axis"]["loadoutKillstreak2"] = "specialty_stalker_ks";
level.oic_loadouts["axis"]["loadoutKillstreak3"] = "specialty_bulletaccuracy_ks";
level.oic_loadouts["axis"]["loadoutDeathstreak"] = "specialty_juiced";
}
else
{
level.oic_loadouts["axis"]["loadoutPerk1"] = "specialty_null";
level.oic_loadouts["axis"]["loadoutPerk2"] = "specialty_null";
level.oic_loadouts["axis"]["loadoutPerk3"] = "specialty_null";
level.oic_loadouts["axis"]["loadoutDeathstreak"] = "specialty_null";
}
level.oic_loadouts["axis"]["loadoutJuggernaut"] = 0;
level.oic_loadouts["allies"] = level.oic_loadouts["axis"];
level.gun_attachments = [];
level.gun_attachments["iw5_usp45"]["attach1"] = "tactical";
level.gun_attachments["iw5_p99"]["attach1"] = "tactical";
level.gun_attachments["iw5_fnfiveseven"]["attach1"] = "tactical";
level.gun_attachments["iw5_44magnum"]["attach1"] = "tactical";
level.gun_attachments["iw5_deserteagle"]["attach1"] = "tactical";
level.gun_attachments["iw5_mp412"]["attach1"] = "tactical";
level.gun_attachments["iw5_fmg9"]["attach1"] = "reflex";
level.gun_attachments["iw5_skorpion"]["attach1"] = "reflex";
level.gun_attachments["iw5_mp9"]["attach1"] = "reflex";
level.gun_attachments["iw5_g18"]["attach1"] = "reflex";
level.gun_attachments["iw5_mp5"]["attach1"] = "reflex";
level.gun_attachments["iw5_m9"]["attach1"] = "reflex";
level.gun_attachments["iw5_p90"]["attach1"] = "reflex";
level.gun_attachments["iw5_pp90m1"]["attach1"] = "reflex";
level.gun_attachments["iw5_ump45"]["attach1"] = "reflex";
level.gun_attachments["iw5_mp7"]["attach1"] = "reflex";
level.gun_attachments["iw5_ak47"]["attach1"] = "reflex";
level.gun_attachments["iw5_m16"]["attach1"] = "reflex";
level.gun_attachments["iw5_m4"]["attach1"] = "reflex";
level.gun_attachments["iw5_fad"]["attach1"] = "reflex";
level.gun_attachments["iw5_acr"]["attach1"] = "reflex";
level.gun_attachments["iw5_type95"]["attach1"] = "reflex";
level.gun_attachments["iw5_mk14"]["attach1"] = "reflex";
level.gun_attachments["iw5_scar"]["attach1"] = "reflex";
level.gun_attachments["iw5_g36c"]["attach1"] = "reflex";
level.gun_attachments["iw5_cm901"]["attach1"] = "reflex";
level.gun_attachments["iw5_ksg"]["attach1"] = "grip";
level.gun_attachments["iw5_striker"]["attach1"] = "grip";
level.gun_attachments["iw5_aa12"]["attach1"] = "grip";
level.gun_attachments["iw5_usas12"]["attach1"] = "grip";
level.gun_attachments["iw5_spas12"]["attach1"] = "grip";
level.gun_attachments["iw5_m60"]["attach1"] = "grip";
level.gun_attachments["iw5_m60"]["attach2"] = "reflex";
level.gun_attachments["iw5_mk46"]["attach1"] = "grip";
level.gun_attachments["iw5_mk46"]["attach2"] = "reflex";
level.gun_attachments["iw5_pecheneg"]["attach1"] = "grip";
level.gun_attachments["iw5_pecheneg"]["attach2"] = "reflex";
level.gun_attachments["iw5_sa80"]["attach1"] = "grip";
level.gun_attachments["iw5_sa80"]["attach2"] = "reflex";
level.gun_attachments["iw5_mg36"]["attach1"] = "grip";
level.gun_attachments["iw5_mg36"]["attach2"] = "reflex";
}

View File

@ -0,0 +1,510 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\oneflag.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 23
* Decompile Time: 315 ms
* Timestamp: 10/27/2023 2:26:19 AM
*******************************************************************/
//Function Number: 1
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
maps\mp\_utility::func_3315(level.gametype,3,0,1440);
maps\mp\_utility::registerscorelimitdvar(level.gametype,1,0,10000);
maps\mp\_utility::func_3312(level.gametype,0,0,30);
maps\mp\_utility::registerwinlimitdvar(level.gametype,4,0,10);
maps\mp\_utility::func_330E(level.gametype,3,0,30);
maps\mp\_utility::func_3317(level.gametype,0,0,10);
maps\mp\_utility::registerhalftimedvar(level.gametype,0,0,1);
level.objectivebased = 1;
level.teambased = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onspawnplayer = ::onspawnplayer;
level.onplayerkilled = ::onplayerkilled;
level.ontimelimit = ::ontimelimit;
level.initgametypeawards = ::initgametypeawards;
game["dialog"]["gametype"] = "oneflag";
if(getdvarint("g_hardcore"))
{
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
}
else if(getdvarint("camera_thirdPerson"))
{
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_diehard"))
{
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_" + level.gametype + "_promode"))
{
game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";
}
if(getdvar("scr_oneflag_returntime") == "")
{
setdvar("scr_oneflag_returntime","15");
}
level.flagreturntime = getdvarint("scr_oneflag_returntime");
}
//Function Number: 2
onprecachegametype()
{
precachestring(&"MP_FLAG_TAKEN_BY");
precachestring(&"MP_ENEMY_FLAG_TAKEN_BY");
precachestring(&"MP_FLAG_CAPTURED_BY");
precachestring(&"MP_ENEMY_FLAG_CAPTURED_BY");
precachestring(&"MP_FLAG_RETURNED");
precachestring(&"MP_ENEMY_FLAG_RETURNED");
precachestring(&"MP_YOUR_FLAG_RETURNING_IN");
precachestring(&"MP_ENEMY_FLAG_RETURNING_IN");
precachestring(&"MP_ENEMY_FLAG_DROPPED_BY");
precachestring(&"MP_DOM_NEUTRAL_FLAG_CAPTURED");
}
//Function Number: 3
onstartgametype()
{
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
if(!isdefined(game["original_defenders"]))
{
game["original_defenders"] = game["defenders"];
}
if(game["switchedsides"])
{
var_00 = game["attackers"];
var_01 = game["defenders"];
game["attackers"] = var_01;
game["defenders"] = var_00;
}
setclientnamemode("auto_change");
maps\mp\_utility::func_3305(game["attackers"],&"OBJECTIVES_CTF");
maps\mp\_utility::func_3305(game["defenders"],&"OBJECTIVES_CTF");
if(level.splitscreen)
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER");
}
else
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER_SCORE");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER_SCORE");
}
maps\mp\_utility::setobjectivehinttext(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER_HINT");
maps\mp\_utility::setobjectivehinttext(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER_HINT");
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::func_2FD0("allies","mp_ctf_spawn_allies");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_ctf_spawn_axis");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
var_02[0] = "ctf";
maps\mp\gametypes\_gameobjects::main(var_02);
maps\mp\gametypes\_rank::registerscoreinfo("kill",100);
maps\mp\gametypes\_rank::registerscoreinfo("headshot",100);
maps\mp\gametypes\_rank::registerscoreinfo("assist",20);
maps\mp\gametypes\_rank::registerscoreinfo("pickup",100);
maps\mp\gametypes\_rank::registerscoreinfo("return",50);
maps\mp\gametypes\_rank::registerscoreinfo("capture",500);
maps\mp\gametypes\_rank::registerscoreinfo("kill_carrier",100);
maps\mp\gametypes\_rank::registerscoreinfo("defend",100);
maps\mp\gametypes\_rank::registerscoreinfo("defend_assist",100);
maps\mp\gametypes\_rank::registerscoreinfo("assault",200);
maps\mp\gametypes\_rank::registerscoreinfo("assault_assist",40);
thread func_34E0();
}
//Function Number: 4
getspawnpoint()
{
var_00 = self.pers["team"];
if(game["switchedsides"])
{
var_00 = maps\mp\_utility::getotherteam(var_00);
}
if(level.ingraceperiod)
{
var_01 = getentarray("mp_ctf_spawn_" + var_00 + "_start","classname");
var_02 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_01);
}
else
{
var_01 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(var_02);
var_02 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_02);
}
return var_02;
}
//Function Number: 5
onspawnplayer()
{
self.usingobj = undefined;
}
//Function Number: 6
func_34E0()
{
level.flagmodel["allies"] = maps\mp\gametypes\_teams::func_2774("allies");
level.icon2d["allies"] = maps\mp\gametypes\_teams::func_2776("allies");
level.carryflag["allies"] = maps\mp\gametypes\_teams::func_2775("allies");
precachemodel(level.flagmodel["allies"]);
precachemodel(level.carryflag["allies"]);
level.flagmodel["axis"] = maps\mp\gametypes\_teams::func_2774("axis");
level.icon2d["axis"] = maps\mp\gametypes\_teams::func_2776("axis");
level.carryflag["axis"] = maps\mp\gametypes\_teams::func_2775("axis");
precachemodel(level.flagmodel["axis"]);
precachemodel(level.carryflag["axis"]);
level.iconcapture3d = "waypoint_capture";
level.iconcapture2d = "compass_waypoint_capture";
level.icondefend3d = "waypoint_defend";
level.icondefend2d = "compass_waypoint_defend";
level.icontarget3d = "waypoint_target";
level.icontarget2d = "compass_waypoint_target";
precacheshader(level.icon2d["axis"]);
precacheshader(level.icon2d["allies"]);
precacheshader(level.iconcapture3d);
precacheshader(level.icondefend3d);
precacheshader(level.iconcapture2d);
precacheshader(level.icondefend2d);
precacheshader(level.icontarget3d);
precacheshader(level.icontarget2d);
precacheshader("waypoint_kill");
level.teamflags[game["defenders"]] = func_34EC(game["defenders"]);
level.capzones[game["attackers"]] = func_34ED(game["attackers"]);
level.flagcaptured = 0;
}
//Function Number: 7
func_3084(param_00,param_01,param_02,param_03,param_04)
{
wait param_04;
var_05 = spawnfx(param_00,param_01,param_02,param_03);
triggerfx(var_05);
}
//Function Number: 8
func_34EC(param_00)
{
var_01 = game["original_defenders"];
var_02 = getent("ctf_trig_" + var_01,"targetname");
if(!isdefined(var_02))
{
common_scripts\utility::error("No ctf_trig_" + var_01 + " trigger found in map.");
return;
}
var_03[0] = getent("ctf_flag_" + var_01,"targetname");
if(!isdefined(var_03[0]))
{
common_scripts\utility::error("No ctf_flag_" + var_01 + " script_model found in map.");
return;
}
var_04 = spawn("trigger_radius",var_02.origin,0,96,var_02.height);
var_02 delete();
var_02 = var_04;
var_03[0] setmodel(level.flagmodel[param_00]);
var_05 = maps\mp\gametypes\_gameobjects::func_29A8(param_00,var_02,var_03,(0,0,85));
var_05 maps\mp\gametypes\_gameobjects::func_2A18("friendly",15);
var_05 maps\mp\gametypes\_gameobjects::func_2A18("enemy",0);
var_05 maps\mp\gametypes\_gameobjects::setteamusetext("enemy",&"MP_CAPTURING_FLAG");
var_05 maps\mp\gametypes\_gameobjects::setteamusetext("friendly",&"MP_RETURNING_FLAG");
var_05 maps\mp\gametypes\_gameobjects::allowcarry("enemy");
var_05 maps\mp\gametypes\_gameobjects::setvisibleteam("any");
var_05 maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icondefend2d);
var_05 maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.icondefend3d);
var_05 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcapture2d);
var_05 maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconcapture3d);
var_05 maps\mp\gametypes\_gameobjects::setcarryicon(level.icon2d[param_00]);
var_05.allowweapons = 1;
var_05.onpickup = ::onpickup;
var_05.onpickupfailed = ::onpickup;
var_05.ondrop = ::ondrop;
var_05.onreset = ::onreset;
var_05.oldradius = var_02.radius;
var_06 = var_02.origin + (0,0,32);
var_07 = var_02.origin + (0,0,-32);
var_08 = bullettrace(var_06,var_07,0,undefined);
var_09 = maps\mp\gametypes\_teams::func_2777(param_00);
var_0A = loadfx(var_09);
var_0B = vectortoangles(var_08["normal"]);
var_0C = anglestoforward(var_0B);
var_0D = anglestoright(var_0B);
thread func_3084(var_0A,var_08["position"],var_0C,var_0D,0.5);
return var_05;
}
//Function Number: 9
func_34ED(param_00)
{
var_01 = level.otherteam[game["original_defenders"]];
var_02 = getent("ctf_zone_" + var_01,"targetname");
if(!isdefined(var_02))
{
common_scripts\utility::error("No ctf_zone_" + var_01 + " trigger found in map.");
return;
}
var_03[0] = getent("ctf_flag_" + var_01,"targetname");
if(!isdefined(var_03[0]))
{
common_scripts\utility::error("No ctf_flag_" + var_01 + " script_model found in map.");
return;
}
var_03[0] hide();
var_03 = [];
var_04 = maps\mp\gametypes\_gameobjects::func_29E7(param_00,var_02,var_03,(0,0,85));
var_04 maps\mp\gametypes\_gameobjects::allowuse("friendly");
var_04 maps\mp\gametypes\_gameobjects::setvisibleteam("none");
var_04 maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icontarget2d);
var_04 maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.icontarget3d);
var_04 maps\mp\gametypes\_gameobjects::setusetime(0);
var_04 maps\mp\gametypes\_gameobjects::func_29EC(level.teamflags[maps\mp\_utility::getotherteam(param_00)]);
var_04.onuse = ::onuse;
var_04.oncantuse = ::oncantuse;
var_05 = var_02.origin + (0,0,32);
var_06 = var_02.origin + (0,0,-32);
var_07 = bullettrace(var_05,var_06,0,undefined);
var_08 = maps\mp\gametypes\_teams::func_2777(param_00);
var_09 = loadfx(var_08);
var_0A = vectortoangles(var_07["normal"]);
var_0B = anglestoforward(var_0A);
var_0C = anglestoright(var_0A);
thread func_3084(var_09,var_07["position"],var_0B,var_0C,0.5);
return var_04;
}
//Function Number: 10
onbeginuse(param_00)
{
var_01 = param_00.pers["team"];
if(var_01 == maps\mp\gametypes\_gameobjects::func_2A15())
{
self.trigger.radius = 1024;
return;
}
self.trigger.radius = self.oldradius;
}
//Function Number: 11
onenduse(param_00,param_01,param_02)
{
self.trigger.radius = self.oldradius;
}
//Function Number: 12
onpickup(param_00)
{
var_01 = param_00.pers["team"];
if(var_01 == "allies")
{
var_02 = "axis";
}
else
{
var_02 = "allies";
}
if(var_01 == maps\mp\gametypes\_gameobjects::func_2A15())
{
param_00 thread maps\mp\gametypes\_hud_message::func_2892("flagreturn",maps\mp\gametypes\_rank::getscoreinfovalue("pickup"));
param_00 thread [[ level.onxpevent ]]("pickup");
thread func_34EE();
param_00 maps\mp\_utility::incplayerstat("flagsreturned",1);
param_00 thread maps\mp\_matchdata::loggameevent("return",param_00.origin);
return;
}
param_00 func_34EF();
level.capzones[var_01] maps\mp\gametypes\_gameobjects::setvisibleteam("any");
maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_defend");
maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_kill");
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icontarget2d);
maps\mp\_utility::func_32F9(var_01,var_02,&"MP_ENEMY_FLAG_TAKEN_BY",&"MP_FLAG_TAKEN_BY","mp_obj_taken","mp_enemy_obj_taken",param_00);
maps\mp\_utility::func_26E5("enemy_flag_taken",var_01,"status");
maps\mp\_utility::func_26E5("flag_taken",var_02,"status");
param_00 thread maps\mp\gametypes\_hud_message::func_2892("flagpickup",maps\mp\gametypes\_rank::getscoreinfovalue("pickup"));
maps\mp\gametypes\_gamescore::func_26D3("pickup",param_00);
param_00 thread [[ level.onxpevent ]]("pickup");
param_00 maps\mp\_utility::incplayerstat("flagscarried",1);
param_00 thread maps\mp\_matchdata::loggameevent("pickup",param_00.origin);
}
//Function Number: 13
func_34EE()
{
var_00 = maps\mp\gametypes\_gameobjects::func_2A15();
var_01 = level.otherteam[var_00];
maps\mp\gametypes\_gameobjects::func_29D7();
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
maps\mp\gametypes\_gameobjects::allowcarry("enemy");
level.capzones[var_01] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
maps\mp\_utility::func_32F9(var_00,maps\mp\_utility::getotherteam(var_00),&"MP_FLAG_RETURNED",&"MP_ENEMY_FLAG_RETURNED","mp_obj_returned","mp_obj_returned","");
maps\mp\_utility::func_26E5("enemy_flag_returned",var_01,"status");
maps\mp\_utility::func_26E5("flag_returned",var_00,"status");
}
//Function Number: 14
ondrop(param_00)
{
var_01 = maps\mp\gametypes\_gameobjects::func_2A15();
var_02 = level.otherteam[var_01];
maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.icondefend3d);
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icondefend2d);
maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconcapture3d);
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
maps\mp\gametypes\_gameobjects::allowcarry("any");
level.capzones[var_02] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
if(isdefined(param_00))
{
if(isdefined(param_00.carryflag))
{
param_00 func_34F0();
}
maps\mp\_utility::func_32F9(var_02,"none",&"MP_ENEMY_FLAG_DROPPED_BY","","mp_war_objective_lost","",param_00);
}
else
{
maps\mp\_utility::func_2D68("mp_war_objective_lost",var_02);
}
maps\mp\_utility::func_26E5("enemy_flag_dropped",var_02,"status");
maps\mp\_utility::func_26E5("flag_dropped",var_01,"status");
}
//Function Number: 15
onreset()
{
self notify("flag_reset");
var_00 = maps\mp\gametypes\_gameobjects::func_2A15();
var_01 = level.otherteam[var_00];
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.icondefend3d);
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icondefend2d);
maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconcapture3d);
level.capzones[var_01] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
}
//Function Number: 16
onuse(param_00)
{
var_01 = param_00.pers["team"];
if(var_01 == "allies")
{
var_02 = "axis";
}
else
{
var_02 = "allies";
}
maps\mp\_utility::func_26E5("enemy_flag_captured",var_01,"status");
maps\mp\_utility::func_26E5("flag_captured",var_02,"status");
maps\mp\gametypes\_gamescore::func_26D3("capture",param_00);
param_00 thread [[ level.onxpevent ]]("capture");
param_00 maps\mp\_utility::incplayerstat("flagscaptured",1);
param_00 notify("objective","captured");
param_00 thread maps\mp\_matchdata::loggameevent("capture",param_00.origin);
maps\mp\_utility::func_32F9(var_01,var_02,&"MP_ENEMY_FLAG_CAPTURED_BY",&"MP_FLAG_CAPTURED_BY","mp_obj_captured","mp_enemy_obj_captured",param_00);
thread flagcaptured(var_01,&"MP_DOM_NEUTRAL_FLAG_CAPTURED");
level.teamflags[var_02] maps\mp\gametypes\_gameobjects::allowcarry("none");
level.teamflags[var_02] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
level.teamflags[var_02] maps\mp\gametypes\_gameobjects::disableobject();
level.capzones[var_01] maps\mp\gametypes\_gameobjects::allowuse("none");
if(isdefined(param_00.carryflag))
{
param_00 func_34F0();
}
}
//Function Number: 17
flagcaptured(param_00,param_01)
{
maps\mp\gametypes\_gamelogic::endgame(param_00,param_01);
level.flagcaptured = 1;
}
//Function Number: 18
ontimelimit()
{
if(level.flagcaptured)
{
return;
}
maps\mp\gametypes\_gamelogic::endgame(game["defenders"],game["strings"]["time_limit_reached"]);
}
//Function Number: 19
oncantuse(param_00)
{
}
//Function Number: 20
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(isdefined(param_01) && isplayer(param_01) && param_01.pers["team"] != self.pers["team"])
{
if(isdefined(param_01.carryflag))
{
param_01 maps\mp\_utility::incplayerstat("killsasflagcarrier",1);
}
if(isdefined(self.carryflag))
{
param_01 thread [[ level.onxpevent ]]("kill_carrier");
maps\mp\gametypes\_gamescore::func_26D3("kill_carrier",param_01);
param_01 maps\mp\_utility::incplayerstat("flagcarrierkills",1);
thread maps\mp\_matchdata::func_28B4(param_09,"carrying");
func_34F0();
}
}
}
//Function Number: 21
func_34EF()
{
var_00 = level.otherteam[self.pers["team"]];
self attach(level.carryflag[var_00],"J_spine4",1);
self.carryflag = level.carryflag[var_00];
}
//Function Number: 22
func_34F0()
{
self detach(self.carryflag,"J_spine4");
self.carryflag = undefined;
}
//Function Number: 23
initgametypeawards()
{
maps\mp\_awards::func_2D85("flagscaptured",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("flagsreturned",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("flagcarrierkills",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("flagscarried",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("killsasflagcarrier",0,::maps\mp\_awards::func_2DA7);
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,984 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\sd.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 35
* Decompile Time: 508 ms
* Timestamp: 10/27/2023 2:26:25 AM
*******************************************************************/
//Function Number: 1
main()
{
if(getdvar("mapname") == "mp_background")
{
return;
}
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_330E(level.gametype,3,0,9);
maps\mp\_utility::func_3315(level.gametype,2.5);
maps\mp\_utility::registerscorelimitdvar(level.gametype,1);
maps\mp\_utility::func_3312(level.gametype,0);
maps\mp\_utility::registerwinlimitdvar(level.gametype,4);
maps\mp\_utility::func_3317(level.gametype,1);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
level.objectivebased = 1;
level.teambased = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onspawnplayer = ::onspawnplayer;
level.onplayerkilled = ::onplayerkilled;
level.ondeadevent = ::ondeadevent;
level.ononeleftevent = ::ononeleftevent;
level.ontimelimit = ::ontimelimit;
level.onnormaldeath = ::onnormaldeath;
level.initgametypeawards = ::initgametypeawards;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
game["dialog"]["gametype"] = "searchdestroy";
if(getdvarint("g_hardcore"))
{
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
}
else if(getdvarint("camera_thirdPerson"))
{
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_diehard"))
{
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_" + level.gametype + "_promode"))
{
game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";
}
game["dialog"]["offense_obj"] = "obj_destroy";
game["dialog"]["defense_obj"] = "obj_defend";
makedvarserverinfo("ui_bomb_timer_endtime",-1);
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C();
var_00 = getmatchrulesdata("sdData","roundLength");
setdynamicdvar("scr_sd_timelimit",var_00);
maps\mp\_utility::func_3315("sd",var_00);
var_01 = getmatchrulesdata("sdData","roundSwitch");
setdynamicdvar("scr_sd_roundswitch",var_01);
maps\mp\_utility::func_330E("sd",var_01,0,9);
var_02 = getmatchrulesdata("commonOption","scoreLimit");
setdynamicdvar("scr_sd_winlimit",var_02);
maps\mp\_utility::registerwinlimitdvar("sd",var_02);
setdynamicdvar("scr_sd_bombtimer",getmatchrulesdata("sdData","bombTimer"));
setdynamicdvar("scr_sd_planttime",getmatchrulesdata("sdData","plantTime"));
setdynamicdvar("scr_sd_defusetime",getmatchrulesdata("sdData","defuseTime"));
setdynamicdvar("scr_sd_multibomb",getmatchrulesdata("sdData","multiBomb"));
setdynamicdvar("scr_sd_roundlimit",0);
maps\mp\_utility::func_3312("sd",0);
setdynamicdvar("scr_sd_scorelimit",1);
maps\mp\_utility::registerscorelimitdvar("sd",1);
setdynamicdvar("scr_sd_halftime",0);
maps\mp\_utility::registerhalftimedvar("sd",0);
setdynamicdvar("scr_sd_promode",0);
}
//Function Number: 3
onprecachegametype()
{
game["bomb_dropped_sound"] = "mp_war_objective_lost";
game["bomb_recovered_sound"] = "mp_war_objective_taken";
precacheshader("waypoint_bomb");
precacheshader("hud_suitcase_bomb");
precacheshader("waypoint_target");
precacheshader("waypoint_target_a");
precacheshader("waypoint_target_b");
precacheshader("waypoint_defend");
precacheshader("waypoint_defend_a");
precacheshader("waypoint_defend_b");
precacheshader("waypoint_defuse");
precacheshader("waypoint_defuse_a");
precacheshader("waypoint_defuse_b");
precacheshader("waypoint_escort");
precachestring(&"MP_EXPLOSIVES_RECOVERED_BY");
precachestring(&"MP_EXPLOSIVES_DROPPED_BY");
precachestring(&"MP_EXPLOSIVES_PLANTED_BY");
precachestring(&"MP_EXPLOSIVES_DEFUSED_BY");
precachestring(&"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES");
precachestring(&"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES");
precachestring(&"MP_CANT_PLANT_WITHOUT_BOMB");
precachestring(&"MP_PLANTING_EXPLOSIVE");
precachestring(&"MP_DEFUSING_EXPLOSIVE");
}
//Function Number: 4
onstartgametype()
{
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
if(game["switchedsides"])
{
var_00 = game["attackers"];
var_01 = game["defenders"];
game["attackers"] = var_01;
game["defenders"] = var_00;
}
setclientnamemode("manual_change");
game["strings"]["target_destroyed"] = &"MP_TARGET_DESTROYED";
game["strings"]["bomb_defused"] = &"MP_BOMB_DEFUSED";
precachestring(game["strings"]["target_destroyed"]);
precachestring(game["strings"]["bomb_defused"]);
level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion");
maps\mp\_utility::func_3305(game["attackers"],&"OBJECTIVES_SD_ATTACKER");
maps\mp\_utility::func_3305(game["defenders"],&"OBJECTIVES_SD_DEFENDER");
if(level.splitscreen)
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_SD_ATTACKER");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_SD_DEFENDER");
}
else
{
maps\mp\_utility::func_3306(game["attackers"],&"OBJECTIVES_SD_ATTACKER_SCORE");
maps\mp\_utility::func_3306(game["defenders"],&"OBJECTIVES_SD_DEFENDER_SCORE");
}
maps\mp\_utility::setobjectivehinttext(game["attackers"],&"OBJECTIVES_SD_ATTACKER_HINT");
maps\mp\_utility::setobjectivehinttext(game["defenders"],&"OBJECTIVES_SD_DEFENDER_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_sd_spawn_attacker");
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_sd_spawn_defender");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
var_02[0] = "sd";
maps\mp\gametypes\_gameobjects::main(var_41);
maps\mp\gametypes\_rank::registerscoreinfo("win",2);
maps\mp\gametypes\_rank::registerscoreinfo("loss",1);
maps\mp\gametypes\_rank::registerscoreinfo("tie",1.5);
maps\mp\gametypes\_rank::registerscoreinfo("kill",50);
maps\mp\gametypes\_rank::registerscoreinfo("headshot",50);
maps\mp\gametypes\_rank::registerscoreinfo("assist",20);
maps\mp\gametypes\_rank::registerscoreinfo("plant",100);
maps\mp\gametypes\_rank::registerscoreinfo("defuse",100);
thread func_2F0E();
setspecialloadout();
thread func_348C();
}
//Function Number: 5
getspawnpoint()
{
if(self.pers["team"] == game["attackers"])
{
var_00 = "mp_sd_spawn_attacker";
}
else
{
var_00 = "mp_sd_spawn_defender";
}
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpointarray(var_00);
var_02 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_01);
return var_02;
}
//Function Number: 6
onspawnplayer()
{
self.isplanting = 0;
self.isdefusing = 0;
self.isbombcarrier = 0;
if(level.multibomb && !isdefined(self.carryicon) && self.pers["team"] == game["attackers"] && !level.bombplanted)
{
if(level.splitscreen)
{
self.carryicon = maps\mp\gametypes\_hud_util::createicon("hud_suitcase_bomb",33,33);
self.carryicon maps\mp\gametypes\_hud_util::setpoint("BOTTOM RIGHT","BOTTOM RIGHT",-50,-78);
self.carryicon.alpha = 0.75;
}
else
{
self.carryicon = maps\mp\gametypes\_hud_util::createicon("hud_suitcase_bomb",50,50);
self.carryicon maps\mp\gametypes\_hud_util::setpoint("BOTTOM RIGHT","BOTTOM RIGHT",-50,-65);
self.carryicon.alpha = 0.75;
}
self.carryicon.hidewheninmenu = 1;
thread func_80F4();
}
else if(level.multibomb && isdefined(self.carryicon) && self.pers["team"] != game["attackers"])
{
self.carryicon maps\mp\gametypes\_hud_util::destroyelem();
}
level notify("spawned_player");
}
//Function Number: 7
func_80F4()
{
self endon("disconnect");
level waittill("game_ended");
if(isdefined(self.carryicon))
{
self.carryicon.alpha = 0;
}
}
//Function Number: 8
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
thread checkallowspectating();
}
//Function Number: 9
checkallowspectating()
{
wait 0.05;
var_00 = 0;
if(!level.alivecount[game["attackers"]])
{
level.spectateoverride[game["attackers"]].allowenemyspectate = 1;
var_00 = 1;
}
if(!level.alivecount[game["defenders"]])
{
level.spectateoverride[game["defenders"]].allowenemyspectate = 1;
var_00 = 1;
}
if(var_00)
{
maps\mp\gametypes\_spectating::updatespectatesettings();
}
}
//Function Number: 10
sd_endgame(param_00,param_01)
{
level.finalkillcam_winner = param_00;
if(param_01 == game["strings"]["target_destroyed"] || param_01 == game["strings"]["bomb_defused"])
{
var_02 = 1;
foreach(var_04 in level.bombzones)
{
if(isdefined(level.finalkillcam_killcamentityindex[param_00]) && level.finalkillcam_killcamentityindex[param_00] == var_04.killcamentnum)
{
var_02 = 0;
break;
}
}
if(var_02)
{
maps\mp\gametypes\_damage::func_2D01();
}
}
thread maps\mp\gametypes\_gamelogic::endgame(param_00,param_01);
}
//Function Number: 11
ondeadevent(param_00)
{
if(level.bombexploded || level.bombdefused)
{
return;
}
if(param_00 == "all")
{
if(level.bombplanted)
{
sd_endgame(game["attackers"],game["strings"][game["defenders"] + "_eliminated"]);
return;
}
sd_endgame(game["defenders"],game["strings"][game["attackers"] + "_eliminated"]);
return;
}
if(param_00 == game["attackers"])
{
if(level.bombplanted)
{
return;
}
level thread sd_endgame(game["defenders"],game["strings"][game["attackers"] + "_eliminated"]);
return;
}
if(param_00 == game["defenders"])
{
level thread sd_endgame(game["attackers"],game["strings"][game["defenders"] + "_eliminated"]);
return;
}
}
//Function Number: 12
ononeleftevent(param_00)
{
if(level.bombexploded || level.bombdefused)
{
return;
}
var_01 = maps\mp\_utility::getlastlivingplayer(param_00);
var_01 thread func_2F52();
}
//Function Number: 13
onnormaldeath(param_00,param_01,param_02)
{
var_03 = maps\mp\gametypes\_rank::getscoreinfovalue("kill");
var_04 = param_00.team;
if(game["state"] == "postgame" && param_00.team == game["defenders"] || !level.bombplanted)
{
param_01.finalkill = 1;
}
if(param_00.isplanting)
{
thread maps\mp\_matchdata::func_28B4(param_02,"planting");
param_01 maps\mp\_utility::func_26FB("defends",1);
param_01 maps\mp\gametypes\_persistence::func_26D8("round","defends",param_01.pers["defends"]);
}
else if(param_00.isbombcarrier)
{
param_01 maps\mp\_utility::incplayerstat("bombcarrierkills",1);
thread maps\mp\_matchdata::func_28B4(param_02,"carrying");
}
else if(param_00.isdefusing)
{
thread maps\mp\_matchdata::func_28B4(param_02,"defusing");
param_01 maps\mp\_utility::func_26FB("defends",1);
param_01 maps\mp\gametypes\_persistence::func_26D8("round","defends",param_01.pers["defends"]);
}
if(param_01.isbombcarrier)
{
param_01 maps\mp\_utility::incplayerstat("killsasbombcarrier",1);
}
}
//Function Number: 14
func_2F52()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
maps\mp\_utility::func_2F53(3);
var_00 = maps\mp\_utility::getotherteam(self.pers["team"]);
level thread maps\mp\_utility::teamplayercardsplash("callout_lastteammemberalive",self,self.pers["team"]);
level thread maps\mp\_utility::teamplayercardsplash("callout_lastenemyalive",self,var_00);
level notify("last_alive",self);
maps\mp\gametypes\_missions::func_325D();
}
//Function Number: 15
ontimelimit()
{
sd_endgame(game["defenders"],game["strings"]["time_limit_reached"]);
}
//Function Number: 16
func_2F0E()
{
level.planttime = maps\mp\_utility::dvarfloatvalue("planttime",5,0,20);
level.defusetime = maps\mp\_utility::dvarfloatvalue("defusetime",5,0,20);
level.bombtimer = maps\mp\_utility::dvarfloatvalue("bombtimer",45,1,300);
level.multibomb = maps\mp\_utility::func_32FD("multibomb",0,0,1);
}
//Function Number: 17
func_348A(param_00)
{
var_01 = [];
var_02 = getentarray("script_brushmodel","classname");
foreach(var_04 in var_02)
{
if(isdefined(var_04.script_gameobjectname) && var_04.script_gameobjectname == "bombzone")
{
foreach(var_06 in param_00)
{
if(distance(var_04.origin,var_06.origin) < 100 && issubstr(tolower(var_06.script_label),"c"))
{
var_06.relatedbrushmodel = var_04;
var_01[var_01.size] = var_06;
break;
}
}
}
}
foreach(var_0A in var_01)
{
var_0A.relatedbrushmodel delete();
var_0B = getentarray(var_0A.target,"targetname");
foreach(var_0D in var_0B)
{
var_0D delete();
}
var_0A delete();
}
return common_scripts\utility::array_removeundefined(param_00);
}
//Function Number: 18
func_348C()
{
level.bombplanted = 0;
level.bombdefused = 0;
level.bombexploded = 0;
var_00 = getent("sd_bomb_pickup_trig","targetname");
if(!isdefined(var_00))
{
common_scripts\utility::error("No sd_bomb_pickup_trig trigger found in map.");
return;
}
var_01[0] = getent("sd_bomb","targetname");
if(!isdefined(var_01[0]))
{
common_scripts\utility::error("No sd_bomb script_model found in map.");
return;
}
precachemodel("prop_suitcase_bomb");
var_01[0] setmodel("prop_suitcase_bomb");
if(!level.multibomb)
{
level.sdbomb = maps\mp\gametypes\_gameobjects::func_29A8(game["attackers"],var_00,var_01,(0,0,32));
level.sdbomb maps\mp\gametypes\_gameobjects::allowcarry("friendly");
level.sdbomb maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_bomb");
level.sdbomb maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_bomb");
level.sdbomb maps\mp\gametypes\_gameobjects::setvisibleteam("friendly");
level.sdbomb maps\mp\gametypes\_gameobjects::setcarryicon("hud_suitcase_bomb");
level.sdbomb.allowweapons = 1;
level.sdbomb.onpickup = ::onpickup;
level.sdbomb.ondrop = ::ondrop;
}
else
{
var_00 delete();
var_01[0] delete();
}
level.bombzones = [];
var_02 = getentarray("bombzone","targetname");
var_02 = func_348A(var_02);
for(var_03 = 0;var_03 < var_02.size;var_03++)
{
var_00 = var_02[var_03];
var_01 = getentarray(var_02[var_03].target,"targetname");
var_04 = maps\mp\gametypes\_gameobjects::func_29E7(game["defenders"],var_00,var_01,(0,0,64));
var_04 maps\mp\gametypes\_gameobjects::allowuse("enemy");
var_04 maps\mp\gametypes\_gameobjects::setusetime(level.planttime);
var_04 maps\mp\gametypes\_gameobjects::setusetext(&"MP_PLANTING_EXPLOSIVE");
var_04 maps\mp\gametypes\_gameobjects::setusehinttext(&"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES");
if(!level.multibomb)
{
var_04 maps\mp\gametypes\_gameobjects::func_29EC(level.sdbomb);
}
var_05 = var_04 maps\mp\gametypes\_gameobjects::getlabel();
var_04.label = var_05;
var_04 maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_defend" + var_05);
var_04 maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_defend" + var_05);
var_04 maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_target" + var_05);
var_04 maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_target" + var_05);
var_04 maps\mp\gametypes\_gameobjects::setvisibleteam("any");
var_04.onbeginuse = ::onbeginuse;
var_04.onenduse = ::onenduse;
var_04.onuse = ::onuseplantobject;
var_04.oncantuse = ::oncantuse;
var_04.useweapon = "briefcase_bomb_mp";
for(var_06 = 0;var_06 < var_01.size;var_06++)
{
if(isdefined(var_01[var_06].script_exploder))
{
var_04.exploderindex = var_01[var_06].script_exploder;
var_01[var_06] thread func_3491(var_04);
break;
}
}
level.bombzones[level.bombzones.size] = var_04;
var_04.bombdefusetrig = getent(var_01[0].target,"targetname");
var_04.bombdefusetrig.origin = var_04.bombdefusetrig.origin + (0,0,-10000);
var_04.bombdefusetrig.label = var_05;
}
for(var_03 = 0;var_03 < level.bombzones.size;var_03++)
{
var_07 = [];
for(var_08 = 0;var_08 < level.bombzones.size;var_08++)
{
if(var_08 != var_03)
{
var_07[var_07.size] = level.bombzones[var_08];
}
}
level.bombzones[var_03].otherbombzones = var_07;
}
}
//Function Number: 19
func_3491(param_00)
{
var_01 = spawn("script_origin",self.origin);
var_01.angles = self.angles;
var_01 rotateyaw(-45,0.05);
wait 0.05;
var_02 = self.origin + (0,0,5);
var_03 = self.origin + anglestoforward(var_01.angles) * 100 + (0,0,128);
var_04 = bullettrace(var_02,var_03,0,self);
self.killcament = spawn("script_model",var_04["position"]);
self.killcament setscriptmoverkillcam("explosive");
param_00.killcamentnum = self.killcament getentitynumber();
var_01 delete();
}
//Function Number: 20
onbeginuse(param_00)
{
if(maps\mp\gametypes\_gameobjects::isfriendlyteam(param_00.pers["team"]))
{
param_00 playsound("mp_bomb_defuse");
param_00.isdefusing = 1;
if(isdefined(level.sdbombmodel))
{
level.sdbombmodel hide();
return;
}
return;
}
param_00.isplanting = 1;
if(level.multibomb)
{
for(var_01 = 0;var_01 < self.otherbombzones.size;var_01++)
{
self.otherbombzones[var_01] maps\mp\gametypes\_gameobjects::allowuse("none");
self.otherbombzones[var_01] maps\mp\gametypes\_gameobjects::setvisibleteam("friendly");
}
}
}
//Function Number: 21
onenduse(param_00,param_01,param_02)
{
if(!isdefined(param_01))
{
return;
}
if(isalive(param_01))
{
param_01.isdefusing = 0;
param_01.isplanting = 0;
}
if(maps\mp\gametypes\_gameobjects::isfriendlyteam(param_01.pers["team"]))
{
if(isdefined(level.sdbombmodel) && !param_02)
{
level.sdbombmodel show();
return;
}
return;
}
if(level.multibomb && !param_02)
{
for(var_03 = 0;var_03 < self.otherbombzones.size;var_03++)
{
self.otherbombzones[var_03] maps\mp\gametypes\_gameobjects::allowuse("enemy");
self.otherbombzones[var_03] maps\mp\gametypes\_gameobjects::setvisibleteam("any");
}
}
}
//Function Number: 22
oncantuse(param_00)
{
param_00 iprintlnbold(&"MP_CANT_PLANT_WITHOUT_BOMB");
}
//Function Number: 23
onuseplantobject(param_00)
{
if(!maps\mp\gametypes\_gameobjects::isfriendlyteam(param_00.pers["team"]))
{
level thread bombplanted(self,param_00);
for(var_01 = 0;var_01 < level.bombzones.size;var_01++)
{
if(level.bombzones[var_01] == self)
{
continue;
}
level.bombzones[var_01] maps\mp\gametypes\_gameobjects::disableobject();
}
param_00 playsound("mp_bomb_plant");
param_00 notify("bomb_planted");
param_00 notify("objective","plant");
param_00 maps\mp\_utility::func_26FB("plants",1);
param_00 maps\mp\gametypes\_persistence::func_26D8("round","plants",param_00.pers["plants"]);
if(isdefined(level.sd_loadout) && isdefined(level.sd_loadout[param_00.team]))
{
param_00 thread removebombcarrierclass();
}
maps\mp\_utility::func_26E5("bomb_planted");
level thread maps\mp\_utility::teamplayercardsplash("callout_bombplanted",param_00);
level.bombowner = param_00;
param_00 thread maps\mp\gametypes\_hud_message::func_2892("plant",maps\mp\gametypes\_rank::getscoreinfovalue("plant"));
param_00 thread maps\mp\gametypes\_rank::func_2AB3("plant");
param_00.bombplantedtime = gettime();
maps\mp\gametypes\_gamescore::func_26D3("plant",param_00);
param_00 thread maps\mp\_matchdata::loggameevent("plant",param_00.origin);
}
}
//Function Number: 24
func_3496()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
if(isdefined(self.iscarrying) && self.iscarrying == 1)
{
self notify("force_cancel_placement");
wait 0.05;
}
while(self ismantling())
{
wait 0.05;
}
while(!self isonground())
{
wait 0.05;
}
if(maps\mp\_utility::isjuggernaut())
{
self notify("lost_juggernaut");
wait 0.05;
}
self.pers["gamemodeLoadout"] = level.sd_loadout[self.team];
if(isdefined(self.setspawnpoint))
{
maps\mp\perks\_perkfunctions::func_2A63(self.setspawnpoint);
}
var_00 = spawn("script_model",self.origin);
var_00.angles = self.angles;
var_00.playerspawnpos = self.origin;
var_00.notti = 1;
self.setspawnpoint = var_00;
self.gamemode_chosenclass = self.class;
self.pers["class"] = "gamemode";
self.pers["lastClass"] = "gamemode";
self.class = "gamemode";
self.lastclass = "gamemode";
self notify("faux_spawn");
self.gameobject_fauxspawn = 1;
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
}
//Function Number: 25
removebombcarrierclass()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
if(isdefined(self.iscarrying) && self.iscarrying == 1)
{
self notify("force_cancel_placement");
wait 0.05;
}
while(self ismantling())
{
wait 0.05;
}
while(!self isonground())
{
wait 0.05;
}
if(maps\mp\_utility::isjuggernaut())
{
self notify("lost_juggernaut");
wait 0.05;
}
self.pers["gamemodeLoadout"] = undefined;
if(isdefined(self.setspawnpoint))
{
maps\mp\perks\_perkfunctions::func_2A63(self.setspawnpoint);
}
var_00 = spawn("script_model",self.origin);
var_00.angles = self.angles;
var_00.playerspawnpos = self.origin;
var_00.notti = 1;
self.setspawnpoint = var_00;
self notify("faux_spawn");
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
}
//Function Number: 26
func_3498(param_00)
{
param_00 notify("bomb_defused");
param_00 notify("objective","defuse");
level thread bombdefused();
maps\mp\gametypes\_gameobjects::disableobject();
maps\mp\_utility::func_26E5("bomb_defused");
level thread maps\mp\_utility::teamplayercardsplash("callout_bombdefused",param_00);
if(isdefined(level.bombowner) && level.bombowner.bombplantedtime + 3000 + level.defusetime * 1000 > gettime() && maps\mp\_utility::isreallyalive(level.bombowner))
{
param_00 thread maps\mp\gametypes\_hud_message::func_2892("ninja_defuse",maps\mp\gametypes\_rank::getscoreinfovalue("defuse"));
}
else
{
param_00 thread maps\mp\gametypes\_hud_message::func_2892("defuse",maps\mp\gametypes\_rank::getscoreinfovalue("defuse"));
}
param_00 thread maps\mp\gametypes\_rank::func_2AB3("defuse");
maps\mp\gametypes\_gamescore::func_26D3("defuse",param_00);
param_00 maps\mp\_utility::func_26FB("defuses",1);
param_00 maps\mp\gametypes\_persistence::func_26D8("round","defuses",param_00.pers["defuses"]);
param_00 thread maps\mp\_matchdata::loggameevent("defuse",param_00.origin);
}
//Function Number: 27
ondrop(param_00)
{
maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_bomb");
maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_bomb");
maps\mp\_utility::func_2D68(game["bomb_dropped_sound"],game["attackers"]);
}
//Function Number: 28
onpickup(param_00)
{
param_00.isbombcarrier = 1;
param_00 maps\mp\_utility::incplayerstat("bombscarried",1);
param_00 thread maps\mp\_matchdata::loggameevent("pickup",param_00.origin);
maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_escort");
maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_escort");
if(isdefined(level.sd_loadout) && isdefined(level.sd_loadout[param_00.team]))
{
param_00 thread func_3496();
}
if(!level.bombdefused)
{
maps\mp\_utility::teamplayercardsplash("callout_bombtaken",param_00,param_00.team);
maps\mp\_utility::func_26E5("bomb_taken",param_00.pers["team"]);
}
maps\mp\_utility::func_2D68(game["bomb_recovered_sound"],game["attackers"]);
}
//Function Number: 29
onreset()
{
}
//Function Number: 30
bombplanted(param_00,param_01)
{
maps\mp\gametypes\_gamelogic::pausetimer();
level.bombplanted = 1;
param_00.visuals[0] thread maps\mp\gametypes\_gamelogic::func_2F30();
level.tickingobject = param_00.visuals[0];
level.timelimitoverride = 1;
setgameendtime(int(gettime() + level.bombtimer * 1000));
setdvar("ui_bomb_timer",1);
if(!level.multibomb)
{
level.sdbomb maps\mp\gametypes\_gameobjects::allowcarry("none");
level.sdbomb maps\mp\gametypes\_gameobjects::setvisibleteam("none");
level.sdbomb maps\mp\gametypes\_gameobjects::setdropped();
level.sdbombmodel = level.sdbomb.visuals[0];
}
else
{
for(var_02 = 0;var_02 < level.players.size;var_02++)
{
if(isdefined(level.players[var_02].carryicon))
{
level.players[var_02].carryicon maps\mp\gametypes\_hud_util::destroyelem();
}
}
level.sdbombmodel = spawn("script_model",param_01.origin);
level.sdbombmodel.angles = param_01.angles;
level.sdbombmodel setmodel("prop_suitcase_bomb");
}
param_00 maps\mp\gametypes\_gameobjects::allowuse("none");
param_00 maps\mp\gametypes\_gameobjects::setvisibleteam("none");
var_03 = param_00 maps\mp\gametypes\_gameobjects::getlabel();
var_04 = param_00.bombdefusetrig;
var_04.origin = level.sdbombmodel.origin;
var_05 = [];
var_06 = maps\mp\gametypes\_gameobjects::func_29E7(game["defenders"],var_04,var_05,(0,0,32));
var_06 maps\mp\gametypes\_gameobjects::allowuse("friendly");
var_06 maps\mp\gametypes\_gameobjects::setusetime(level.defusetime);
var_06 maps\mp\gametypes\_gameobjects::setusetext(&"MP_DEFUSING_EXPLOSIVE");
var_06 maps\mp\gametypes\_gameobjects::setusehinttext(&"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES");
var_06 maps\mp\gametypes\_gameobjects::setvisibleteam("any");
var_06 maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_defuse" + var_03);
var_06 maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_defend" + var_03);
var_06 maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_defuse" + var_03);
var_06 maps\mp\gametypes\_gameobjects::func_2A25("enemy","waypoint_defend" + var_03);
var_06.label = var_03;
var_06.onbeginuse = ::onbeginuse;
var_06.onenduse = ::onenduse;
var_06.onuse = ::func_3498;
var_06.useweapon = "briefcase_bomb_defuse_mp";
func_349A();
setdvar("ui_bomb_timer",0);
param_00.visuals[0] maps\mp\gametypes\_gamelogic::func_2F32();
if(level.gameended || level.bombdefused)
{
return;
}
level.bombexploded = 1;
var_07 = level.sdbombmodel.origin;
level.sdbombmodel hide();
if(isdefined(param_01))
{
param_00.visuals[0] radiusdamage(var_07,512,200,20,param_01,"MOD_EXPLOSIVE","bomb_site_mp");
param_01 maps\mp\_utility::func_26FB("destructions",1);
param_01 maps\mp\gametypes\_persistence::func_26D8("round","destructions",param_01.pers["destructions"]);
}
else
{
param_00.visuals[0] radiusdamage(var_07,512,200,20,undefined,"MOD_EXPLOSIVE","bomb_site_mp");
}
var_08 = randomfloat(360);
var_09 = spawnfx(level._effect["bombexplosion"],var_07 + (0,0,50),(0,0,1),(cos(var_08),sin(var_08),0));
triggerfx(var_09);
playrumbleonposition("grenade_rumble",var_07);
earthquake(0.75,2,var_07,2000);
thread maps\mp\_utility::func_2ED2("exp_suitcase_bomb_main",var_07);
if(isdefined(param_00.exploderindex))
{
common_scripts\utility::exploder(param_00.exploderindex);
}
for(var_02 = 0;var_02 < level.bombzones.size;var_02++)
{
level.bombzones[var_02] maps\mp\gametypes\_gameobjects::disableobject();
}
var_06 maps\mp\gametypes\_gameobjects::disableobject();
setgameendtime(0);
wait 3;
sd_endgame(game["attackers"],game["strings"]["target_destroyed"]);
}
//Function Number: 31
func_349A()
{
level endon("game_ended");
level endon("bomb_defused");
var_00 = level.bombtimer * 1000 + gettime();
setdvar("ui_bomb_timer_endtime",var_00);
level thread func_349B(var_00);
maps\mp\gametypes\_hostmigration::waitlongdurationwithgameendtimeupdate(level.bombtimer);
}
//Function Number: 32
func_349B(param_00)
{
level endon("game_ended");
level endon("bomb_defused");
level endon("game_ended");
level endon("disconnect");
level waittill("host_migration_begin");
var_01 = maps\mp\gametypes\_hostmigration::func_273E();
if(var_01 > 0)
{
setdvar("ui_bomb_timer_endtime",param_00 + var_01);
}
}
//Function Number: 33
bombdefused()
{
level.tickingobject maps\mp\gametypes\_gamelogic::func_2F32();
level.bombdefused = 1;
setdvar("ui_bomb_timer",0);
level notify("bomb_defused");
wait 1.5;
setgameendtime(0);
sd_endgame(game["defenders"],game["strings"]["bomb_defused"]);
}
//Function Number: 34
initgametypeawards()
{
maps\mp\_awards::func_2D85("targetsdestroyed",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("bombsplanted",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("bombsdefused",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("bombcarrierkills",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("bombscarried",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("killsasbombcarrier",0,::maps\mp\_awards::func_2DA7);
}
//Function Number: 35
setspecialloadout()
{
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",5,"class","inUse"))
{
level.sd_loadout[game["attackers"]] = maps\mp\_utility::func_334E("axis",5);
}
}

View File

@ -0,0 +1,614 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\tdef.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 23
* Decompile Time: 354 ms
* Timestamp: 10/27/2023 2:26:26 AM
*******************************************************************/
//Function Number: 1
main()
{
if(getdvar("mapname") == "mp_background")
{
return;
}
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_330E(level.gametype,0,0,9);
maps\mp\_utility::func_3315(level.gametype,10);
maps\mp\_utility::registerscorelimitdvar(level.gametype,7500);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_enemyflagradar = 1;
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
func_34B3();
level.teambased = 1;
level.initgametypeawards = ::initgametypeawards;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onnormaldeath = ::onnormaldeath;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
precacheshader("waypoint_targetneutral");
game["dialog"]["gametype"] = "team_def";
if(getdvarint("g_hardcore"))
{
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
}
game["strings"]["overtime_hint"] = &"MP_FIRST_BLOOD";
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C();
level.matchrules_enemyflagradar = getmatchrulesdata("tdefData","enemyFlagRadar");
setdynamicdvar("scr_tdef_roundswitch",0);
maps\mp\_utility::func_330E("tdef",0,0,9);
setdynamicdvar("scr_tdef_roundlimit",1);
maps\mp\_utility::func_3312("tdef",1);
setdynamicdvar("scr_tdef_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("tdef",1);
setdynamicdvar("scr_tdef_halftime",0);
maps\mp\_utility::registerhalftimedvar("tdef",0);
setdynamicdvar("scr_tdef_promode",0);
}
//Function Number: 3
onprecachegametype()
{
precachestring(&"MP_NEUTRAL_FLAG_CAPTURED_BY");
precachestring(&"MP_NEUTRAL_FLAG_DROPPED_BY");
precachestring(&"MP_GRABBING_FLAG");
precachestring(&"OBJECTIVES_TDEF_ATTACKER_HINT");
precachestring(&"OBJECTIVES_TDEF_DEFENDER_HINT");
precachestring(&"OBJECTIVES_TDEF");
precachestring(&"OBJECTIVES_TDEF_SCORE");
precachestring(&"OBJECTIVES_TDEF_HINT");
}
//Function Number: 4
onstartgametype()
{
setclientnamemode("auto_change");
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
if(game["switchedsides"])
{
var_00 = game["attackers"];
var_01 = game["defenders"];
game["attackers"] = var_01;
game["defenders"] = var_00;
}
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_TDEF");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_TDEF");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_TDEF");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_TDEF");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_TDEF_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_TDEF_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_TDEF_ATTACKER_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_TDEF_ATTACKER_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_allies_start");
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_axis_start");
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_tdm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_tdm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
maps\mp\gametypes\_rank::registerscoreinfo("firstblood",200);
maps\mp\gametypes\_rank::registerscoreinfo("kill",50);
maps\mp\gametypes\_rank::registerscoreinfo("kill_bonus",50);
maps\mp\gametypes\_rank::registerscoreinfo("capture",100);
maps\mp\gametypes\_rank::registerscoreinfo("kill_carrier",50);
maps\mp\gametypes\_rank::registerscoreinfo("team_assist",20);
var_02[0] = level.gametype;
maps\mp\gametypes\_gameobjects::main(var_41);
func_3538();
}
//Function Number: 5
func_3538()
{
level.icon2d["allies"] = maps\mp\gametypes\_teams::func_2776("allies");
level.icon2d["axis"] = maps\mp\gametypes\_teams::func_2776("axis");
precacheshader(level.icon2d["axis"]);
precacheshader(level.icon2d["allies"]);
level.carryflag["allies"] = maps\mp\gametypes\_teams::func_2775("allies");
level.carryflag["axis"] = maps\mp\gametypes\_teams::func_2775("axis");
level.carryflag["neutral"] = "prop_flag_neutral";
precachemodel(level.carryflag["allies"]);
precachemodel(level.carryflag["axis"]);
precachemodel(level.carryflag["neutral"]);
level.iconescort3d = "waypoint_defend";
level.iconescort2d = "waypoint_defend";
precacheshader(level.iconescort3d);
precacheshader(level.iconescort2d);
level.iconkill3d = "waypoint_kill";
level.iconkill2d = "waypoint_kill";
precacheshader(level.iconkill3d);
precacheshader(level.iconkill2d);
level.iconcaptureflag3d = "waypoint_capture_flag";
level.iconcaptureflag2d = "waypoint_capture_flag";
precacheshader(level.iconcaptureflag3d);
precacheshader(level.iconcaptureflag2d);
precacheshader("waypoint_flag_friendly");
precacheshader("waypoint_flag_enemy");
level.gameflag = undefined;
}
//Function Number: 6
onnormaldeath(param_00,param_01,param_02)
{
var_03 = maps\mp\gametypes\_rank::getscoreinfovalue("kill");
if(isdefined(level.gameflag) && level.gameflag maps\mp\gametypes\_gameobjects::func_2A15() == param_01.pers["team"])
{
if(isdefined(param_01.carryflag))
{
param_01 maps\mp\_utility::incplayerstat("killsasflagcarrier",1);
}
else
{
level.gameflag.carrier thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_TEAM_ASSIST");
maps\mp\gametypes\_gamescore::func_26D3("team_assist",level.gameflag.carrier,param_00,1);
level.gameflag.carrier thread maps\mp\gametypes\_rank::func_2AB3("team_assist");
}
param_01 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_X2_BONUS");
maps\mp\gametypes\_gamescore::func_26D3("kill_bonus",param_01,param_00,1);
param_01 thread maps\mp\gametypes\_rank::func_2AB3("kill_bonus");
var_03 = var_03 * 2;
}
else if(!isdefined(level.gameflag) && cancreateflagatvictimorigin(param_00))
{
level.gameflag = createflag(param_00);
var_03 = var_03 + maps\mp\gametypes\_rank::getscoreinfovalue("firstblood");
maps\mp\gametypes\_gamescore::func_26D3("firstblood",param_01,param_00,1);
}
else if(isdefined(param_00.carryflag))
{
var_04 = maps\mp\gametypes\_rank::getscoreinfovalue("kill_carrier");
thread maps\mp\_utility::teamplayercardsplash("callout_killflagcarrier",param_01);
param_01 thread maps\mp\gametypes\_hud_message::func_2892("flag_carrier_killed",var_04);
maps\mp\gametypes\_gamescore::func_26D3("kill_carrier",param_01,param_00,1);
param_01 maps\mp\_utility::incplayerstat("flagcarrierkills",1);
param_01 thread [[ level.onxpevent ]]("kill_carrier");
param_01 notify("objective","kill_carrier");
param_01 thread maps\mp\_matchdata::loggameevent("kill_carrier",param_01.origin);
var_03 = var_03 + var_04;
}
param_01 maps\mp\gametypes\_gamescore::giveteamscoreforobjective(param_01.pers["team"],var_03);
if(game["state"] == "postgame" && game["teamScores"][param_01.team] > game["teamScores"][level.otherteam[param_01.team]])
{
param_01.finalkill = 1;
}
}
//Function Number: 7
ondrop(param_00)
{
if(isdefined(param_00) && isdefined(param_00.tdef_flagtime))
{
var_01 = int(gettime() - param_00.tdef_flagtime);
param_00 maps\mp\_utility::incplayerstat("holdingteamdefenderflag",var_01);
if(var_01 / 100 / 60 < 1)
{
var_02 = 0;
}
else
{
var_02 = int(var_02 / 100 / 60);
}
param_00 maps\mp\_utility::func_26FB("destructions",var_02);
param_00 maps\mp\gametypes\_persistence::func_26D8("round","destructions",param_00.pers["destructions"]);
param_00.tdef_flagtime = undefined;
param_00 notify("dropped_flag");
}
var_03 = maps\mp\gametypes\_gameobjects::func_2A15();
var_04 = level.otherteam[var_03];
if(isdefined(self.portable_radar))
{
level maps\mp\gametypes\_portable_radar::deleteportableradar(self.portable_radar);
self.portable_radar = undefined;
}
self.currentcarrier = undefined;
maps\mp\gametypes\_gameobjects::setownerteam("neutral");
maps\mp\gametypes\_gameobjects::allowcarry("any");
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconcaptureflag2d);
maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconcaptureflag3d);
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d);
maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconcaptureflag3d);
if(isdefined(param_00))
{
if(isdefined(param_00.carryflag))
{
param_00 func_34F0();
}
maps\mp\_utility::func_32F9(var_03,var_04,&"MP_NEUTRAL_FLAG_DROPPED_BY",&"MP_NEUTRAL_FLAG_DROPPED_BY","mp_war_objective_lost","mp_war_objective_lost",param_00);
}
else
{
maps\mp\_utility::func_2D68("mp_war_objective_lost",var_03);
maps\mp\_utility::func_2D68("mp_war_objective_lost",var_04);
}
maps\mp\_utility::func_26E5("dropped_flag",var_03,"status");
maps\mp\_utility::func_26E5("enemy_dropped_flag",var_04,"status");
}
//Function Number: 8
onpickup(param_00)
{
self notify("picked_up");
param_00.tdef_flagtime = gettime();
param_00 thread watchforendgame();
var_01 = maps\mp\gametypes\_rank::getscoreinfovalue("capture");
var_02 = param_00.pers["team"];
var_03 = level.otherteam[var_02];
if(isdefined(level.tdef_loadouts) && isdefined(level.tdef_loadouts[var_02]))
{
param_00 thread applyflagcarrierclass();
}
else
{
param_00 func_34EF();
}
self.currentcarrier = param_00;
param_00.carryicon setshader(level.icon2d[var_02],param_00.carryicon.width,param_00.carryicon.height);
maps\mp\gametypes\_gameobjects::setownerteam(var_02);
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconescort2d);
maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconescort2d);
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconkill3d);
maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconkill3d);
maps\mp\_utility::func_26E5("got_flag",var_02,"status");
maps\mp\_utility::func_26E5("enemy_got_flag",var_03,"status");
thread maps\mp\_utility::teamplayercardsplash("callout_flagcapture",param_00);
param_00 thread maps\mp\gametypes\_hud_message::func_2892("flag_capture",var_01);
maps\mp\gametypes\_gamescore::func_26D3("capture",param_00,undefined,1);
param_00 thread [[ level.onxpevent ]]("capture");
param_00 maps\mp\_utility::incplayerstat("flagscaptured",1);
param_00 notify("objective","captured");
param_00 thread maps\mp\_matchdata::loggameevent("capture",param_00.origin);
maps\mp\_utility::func_32F9(var_02,var_03,&"MP_NEUTRAL_FLAG_CAPTURED_BY",&"MP_NEUTRAL_FLAG_CAPTURED_BY","mp_obj_captured","mp_enemy_obj_captured",param_00);
if(self.currentteam == var_03)
{
param_00 maps\mp\gametypes\_gamescore::giveteamscoreforobjective(var_02,var_01);
}
self.currentteam = var_02;
if(level.matchrules_enemyflagradar)
{
thread flagattachradar(var_03);
}
}
//Function Number: 9
applyflagcarrierclass()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
if(isdefined(self.iscarrying) && self.iscarrying == 1)
{
self notify("force_cancel_placement");
wait 0.05;
}
while(self ismantling())
{
wait 0.05;
}
while(!self isonground())
{
wait 0.05;
}
if(maps\mp\_utility::isjuggernaut())
{
self notify("lost_juggernaut");
wait 0.05;
}
self.pers["gamemodeLoadout"] = level.tdef_loadouts[self.team];
if(isdefined(self.setspawnpoint))
{
maps\mp\perks\_perkfunctions::func_2A63(self.setspawnpoint);
}
var_00 = spawn("script_model",self.origin);
var_00.angles = self.angles;
var_00.playerspawnpos = self.origin;
var_00.notti = 1;
self.setspawnpoint = var_00;
self.gamemode_chosenclass = self.class;
self.pers["class"] = "gamemode";
self.pers["lastClass"] = "gamemode";
self.class = "gamemode";
self.lastclass = "gamemode";
thread waitattachflag();
self notify("faux_spawn");
self.gameobject_fauxspawn = 1;
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
}
//Function Number: 10
waitattachflag()
{
level endon("game_ende");
self endon("disconnect");
self endon("death");
self waittill("spawned_player");
func_34EF();
}
//Function Number: 11
watchforendgame()
{
self endon("dropped_flag");
self endon("disconnect");
level waittill("game_ended");
if(isdefined(self))
{
if(isdefined(self.tdef_flagtime))
{
var_00 = int(gettime() - self.tdef_flagtime);
maps\mp\_utility::incplayerstat("holdingteamdefenderflag",var_00);
if(var_00 / 100 / 60 < 1)
{
var_01 = 0;
}
else
{
var_01 = int(var_01 / 100 / 60);
}
maps\mp\_utility::func_26FB("destructions",var_01);
maps\mp\gametypes\_persistence::func_26D8("round","destructions",self.pers["destructions"]);
}
}
}
//Function Number: 12
cancreateflagatvictimorigin(param_00)
{
var_01 = getentarray("minefield","targetname");
var_02 = getentarray("trigger_hurt","classname");
var_03 = getentarray("radiation","targetname");
for(var_04 = 0;var_04 < var_03.size;var_04++)
{
if(param_00 istouching(var_03[var_04]))
{
return 0;
}
}
for(var_04 = 0;var_04 < var_01.size;var_04++)
{
if(param_00 istouching(var_01[var_04]))
{
return 0;
}
}
for(var_04 = 0;var_04 < var_02.size;var_04++)
{
if(param_00 istouching(var_02[var_04]))
{
return 0;
}
}
return 1;
}
//Function Number: 13
createflag(param_00)
{
var_01[0] = spawn("script_model",param_00.origin);
var_01[0] setmodel(level.carryflag["neutral"]);
var_02 = spawn("trigger_radius",param_00.origin,0,96,72);
var_03 = maps\mp\gametypes\_gameobjects::func_29A8("neutral",var_02,var_01,(0,0,85));
var_03 maps\mp\gametypes\_gameobjects::func_2A18("friendly",0.5);
var_03 maps\mp\gametypes\_gameobjects::func_2A18("enemy",0.5);
var_03 maps\mp\gametypes\_gameobjects::setteamusetext("enemy",&"MP_GRABBING_FLAG");
var_03 maps\mp\gametypes\_gameobjects::setteamusetext("friendly",&"MP_GRABBING_FLAG");
var_03 maps\mp\gametypes\_gameobjects::allowcarry("any");
var_03 maps\mp\gametypes\_gameobjects::setvisibleteam("any");
var_03 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d);
var_03 maps\mp\gametypes\_gameobjects::func_2A25("enemy",level.iconcaptureflag3d);
var_03 maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconcaptureflag2d);
var_03 maps\mp\gametypes\_gameobjects::func_2A25("friendly",level.iconcaptureflag3d);
var_03 maps\mp\gametypes\_gameobjects::setcarryicon(level.icon2d["axis"]);
var_03.allowweapons = 1;
var_03.onpickup = ::onpickup;
var_03.onpickupfailed = ::onpickup;
var_03.ondrop = ::ondrop;
var_03.oldradius = 96;
var_03.currentteam = "none";
var_03.requireslos = 1;
level.favorclosespawnent = var_03.trigger;
level.favorclosespawnscalar = 3;
var_03 thread updatebaseposition();
return var_03;
}
//Function Number: 14
updatebaseposition()
{
level endon("game_ended");
for(;;)
{
if(isdefined(self.safeorigin))
{
self.baseorigin = self.safeorigin;
self.trigger.baseorigin = self.safeorigin;
self.visuals[0].baseorigin = self.safeorigin;
}
wait 0.05;
}
}
//Function Number: 15
func_34EF()
{
self attach(level.carryflag[self.pers["team"]],"J_spine4",1);
self.carryflag = level.carryflag[self.pers["team"]];
level.favorclosespawnent = self;
}
//Function Number: 16
func_34F0()
{
self detach(self.carryflag,"J_spine4");
self.carryflag = undefined;
level.favorclosespawnent = level.gameflag.trigger;
}
//Function Number: 17
flagattachradar(param_00)
{
level endon("game_ended");
self endon("dropped");
var_01 = getflagradarowner(param_00);
var_02 = spawn("script_model",self.currentcarrier.origin);
var_02.team = param_00;
var_02.owner = var_01;
var_02 makeportableradar(var_01);
self.portable_radar = var_02;
thread flagradarmover();
thread func_3543();
}
//Function Number: 18
getflagradarowner(param_00)
{
level endon("game_ended");
self endon("dropped");
for(;;)
{
foreach(var_02 in level.players)
{
if(isalive(var_02) && var_02.pers["team"] == param_00)
{
return var_02;
}
}
wait 0.05;
}
}
//Function Number: 19
flagradarmover()
{
level endon("game_ended");
self endon("dropped");
self.portable_radar endon("death");
for(;;)
{
self.portable_radar moveto(self.currentcarrier.origin,0.05);
wait 0.05;
}
}
//Function Number: 20
func_3543()
{
level endon("game_ended");
self endon("dropped");
var_00 = self.portable_radar.team;
self.portable_radar.owner common_scripts\utility::waittill_any("disconnect","joined_team","joined_spectators");
level maps\mp\gametypes\_portable_radar::deleteportableradar(self.portable_radar);
self.portable_radar = undefined;
flagattachradar(var_00);
}
//Function Number: 21
getspawnpoint()
{
var_00 = self.pers["team"];
if(game["switchedsides"])
{
var_00 = maps\mp\_utility::getotherteam(var_00);
}
if(level.ingraceperiod)
{
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_tdm_spawn_" + var_00 + "_start");
var_02 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_01);
}
else
{
var_01 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(var_02);
var_02 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_02);
}
return var_02;
}
//Function Number: 22
initgametypeawards()
{
maps\mp\_awards::func_2D85("flagscaptured",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("flagcarrierkills",0,::maps\mp\_awards::func_2DA7);
maps\mp\_awards::func_2D85("killsasflagcarrier",0,::maps\mp\_awards::func_2DA7);
}
//Function Number: 23
func_34B3()
{
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",5,"class","inUse"))
{
level.tdef_loadouts["axis"] = maps\mp\_utility::func_334E("axis",5);
}
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","allies",5,"class","inUse"))
{
level.tdef_loadouts["allies"] = maps\mp\_utility::func_334E("allies",5);
}
}

View File

@ -0,0 +1,676 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\tjugg.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 18
* Decompile Time: 292 ms
* Timestamp: 10/27/2023 2:26:27 AM
*******************************************************************/
//Function Number: 1
main()
{
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_3315(level.gametype,10);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerscorelimitdvar(level.gametype,7500);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_juggswitchtime = 90;
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
func_34B3();
level.teambased = 1;
level.doprematch = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onplayerkilled = ::onplayerkilled;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C();
level.matchrules_juggswitchtime = getmatchrulesdata("tjuggData","juggSwitchTime");
if(level.matchrules_juggswitchtime < 1)
{
level.matchrules_juggswitchtime = 30;
}
setdynamicdvar("scr_tjugg_roundswitch",0);
maps\mp\_utility::func_330E("tjugg",0,0,9);
setdynamicdvar("scr_tjugg_roundlimit",1);
maps\mp\_utility::func_3312("tjugg",1);
setdynamicdvar("scr_tjugg_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("tjugg",1);
setdynamicdvar("scr_tjugg_halftime",0);
maps\mp\_utility::registerhalftimedvar("tjugg",0);
setdynamicdvar("scr_tjugg_playerrespawndelay",0);
setdynamicdvar("scr_tjugg_waverespawndelay",0);
setdynamicdvar("scr_player_forcerespawn",1);
setdynamicdvar("scr_team_fftype",0);
setdynamicdvar("scr_tjugg_promode",0);
}
//Function Number: 3
onprecachegametype()
{
precachestring(&"MP_JUGG_NEXT_JUGG_IN");
}
//Function Number: 4
onstartgametype()
{
setclientnamemode("auto_change");
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_TJUGG");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_TJUGG");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_TJUGG");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_TJUGG");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_TJUGG_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_TJUGG_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_TJUGG_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_TJUGG_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_allies_start");
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_axis_start");
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_tdm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_tdm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
maps\mp\gametypes\_rank::registerscoreinfo("got_juggernaut",250);
maps\mp\gametypes\_rank::registerscoreinfo("kill_juggernaut",250);
maps\mp\gametypes\_rank::registerscoreinfo("kill_as_juggernaut",100);
maps\mp\gametypes\_rank::registerscoreinfo("jugg_on_jugg",400);
var_00[0] = "tjugg";
maps\mp\gametypes\_gameobjects::main(var_00);
level.quickmessagetoall = 1;
level.blockweapondrops = 1;
level.respawnoldjugg_fx = loadfx("explosions/bouncing_betty_explosion");
level.jugg_available = [];
level.jugg_available["axis"] = 1;
level.jugg_available["allies"] = 1;
level.jugg_attackers = [];
level.jugg_attackers["axis"] = [];
level.jugg_attackers["allies"] = [];
level.jugg_currjugg = [];
level.jugg_currjugg["axis"] = undefined;
level.jugg_currjugg["allies"] = undefined;
level.tjugg_timerdisplay = [];
level.tjugg_timerdisplay["allies"] = maps\mp\gametypes\_hud_util::createservertimer("objective",1.4,"allies");
level.tjugg_timerdisplay["allies"] maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","TOPLEFT",115,5);
level.tjugg_timerdisplay["allies"].label = &"MP_JUGG_NEXT_JUGG_IN";
level.tjugg_timerdisplay["allies"].alpha = 0;
level.tjugg_timerdisplay["allies"].archived = 0;
level.tjugg_timerdisplay["allies"].hidewheninmenu = 1;
level.tjugg_timerdisplay["axis"] = maps\mp\gametypes\_hud_util::createservertimer("objective",1.4,"axis");
level.tjugg_timerdisplay["axis"] maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","TOPLEFT",115,5);
level.tjugg_timerdisplay["axis"].label = &"MP_JUGG_NEXT_JUGG_IN";
level.tjugg_timerdisplay["axis"].alpha = 0;
level.tjugg_timerdisplay["axis"].archived = 0;
level.tjugg_timerdisplay["axis"].hidewheninmenu = 1;
thread func_34CC(level.tjugg_timerdisplay["allies"]);
thread func_34CC(level.tjugg_timerdisplay["axis"]);
level.favorclosespawnscalar = 5;
level thread onplayerconnect();
}
//Function Number: 5
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00.jugg_alligience = 0;
}
}
//Function Number: 6
getspawnpoint()
{
if(level.ingraceperiod)
{
var_00 = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_tdm_spawn_" + self.pers["team"] + "_start");
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_00);
}
else
{
level.favorclosespawnent = level.jugg_currjugg[self.pers["team"]];
var_00 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(self.pers["team"]);
var_01 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_01);
}
return var_01;
}
//Function Number: 7
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
if(param_03 == "MOD_SUICIDE" && param_04 == "none" && isdefined(self.wasswitchingteamsforonplayerkilled))
{
return;
}
var_0A = self;
if(isdefined(param_01) && isplayer(param_01))
{
var_0B = 0;
var_0C = 0;
var_0D = 0;
var_0E = 0;
var_0F = 0;
var_10 = 0;
var_11 = 0;
if(param_01 == var_0A)
{
if(isdefined(var_0A.isjuggmodejuggernaut))
{
var_0C = 1;
}
}
else if(param_01.team != var_0A.team)
{
var_11 = var_11 + maps\mp\gametypes\_rank::getscoreinfovalue("kill");
if(isdefined(var_0A.isjuggmodejuggernaut))
{
var_0C = 1;
if(isdefined(param_01.isjuggmodejuggernaut))
{
var_0D = 1;
}
else
{
var_0E = 1;
}
}
else if(isdefined(param_01.isjuggmodejuggernaut))
{
var_0F = 1;
}
if(level.jugg_available[param_01.team])
{
var_0B = 1;
}
}
else if(isdefined(var_0A.isjuggmodejuggernaut) && param_01.team == var_0A.team)
{
var_0A thread func_3563();
return;
}
if(var_0B)
{
func_3562(param_01);
}
if(var_0C)
{
var_12 = getbestteammate(var_0A.team,0);
if(!isdefined(var_12))
{
var_12 = getbestteammate(var_0A.team,1);
}
if(!isdefined(var_12))
{
var_12 = var_0A;
}
func_3562(var_12,var_0A);
}
if(var_0B || var_0C)
{
maps\mp\_utility::func_2D68("mp_enemy_obj_captured");
}
if(param_01 != var_0A && param_01.team != var_0A.team && !isdefined(param_01.isjuggmodejuggernaut))
{
param_01.jugg_alligience = param_01.jugg_alligience + 50;
if(var_0E)
{
param_01.jugg_alligience = param_01.jugg_alligience + 100;
}
if(isdefined(level.jugg_attackers[param_01.team][var_0A.guid]))
{
var_10 = 1;
param_01.jugg_alligience = param_01.jugg_alligience + 100;
level.jugg_attackers[param_01.team][var_0A.guid] = undefined;
}
}
if(var_0E)
{
var_13 = maps\mp\gametypes\_rank::getscoreinfovalue("kill_juggernaut");
var_11 = var_11 + var_13;
param_01 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_KILLED_JUGGERNAUT");
maps\mp\gametypes\_gamescore::func_26D3("kill_juggernaut",param_01,var_0A,1);
param_01 thread maps\mp\gametypes\_rank::func_2AB3("kill_juggernaut");
}
else if(var_0D)
{
var_11 = var_11 + maps\mp\gametypes\_rank::getscoreinfovalue("jugg_on_jugg");
param_01 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_JUGGERNAUT_KILL_JUGGERNAUT");
maps\mp\gametypes\_gamescore::func_26D3("jugg_on_jugg",param_01,var_0A,1);
param_01 thread maps\mp\gametypes\_rank::func_2AB3("jugg_on_jugg");
}
else if(var_0F)
{
var_11 = var_11 + maps\mp\gametypes\_rank::getscoreinfovalue("kill_as_juggernaut");
param_01 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_JUGGERNAUT_KILL");
maps\mp\gametypes\_gamescore::func_26D3("kill_as_juggernaut",param_01,var_0A,1);
param_01 thread maps\mp\gametypes\_rank::func_2AB3("kill_as_juggernaut");
}
if(var_11)
{
param_01 maps\mp\gametypes\_gamescore::giveteamscoreforobjective(param_01.pers["team"],var_11);
}
if(param_01.team != var_0A.team && game["state"] == "postgame" && game["teamScores"][param_01.team] > game["teamScores"][level.otherteam[param_01.team]])
{
param_01.finalkill = 1;
return;
}
return;
}
if(isdefined(var_0A.isjuggmodejuggernaut))
{
var_12 = getbestteammate(var_0A.team,0);
if(!isdefined(var_12))
{
var_12 = getbestteammate(var_0A.team,1);
}
if(!isdefined(var_12))
{
var_12 = var_0A;
}
func_3562(var_12,var_0A);
}
}
//Function Number: 8
func_3562(param_00,param_01)
{
if(isdefined(param_01))
{
param_01.isjuggmodejuggernaut = undefined;
}
else
{
level.jugg_available[param_00.team] = 0;
}
level.jugg_currjugg[param_00.team] = undefined;
level.tjugg_timerdisplay[param_00.team].alpha = 0;
level.jugg_attackers[param_00.team] = [];
foreach(var_03 in level.players)
{
if(var_03.team == param_00.team)
{
var_03.jugg_alligience = 0;
}
}
param_00 thread func_3563();
}
//Function Number: 9
func_3563()
{
if(!maps\mp\_utility::isreallyalive(self) || maps\mp\_utility::isusingremote())
{
self endon("disconnect");
thread resetjuggloadoutondisconnect(0);
while(!maps\mp\_utility::isreallyalive(self) || maps\mp\_utility::isusingremote())
{
wait 0.05;
}
self notify("end_resetJuggLoadoutOnDisconnect");
}
if(isdefined(self.iscarrying) && self.iscarrying == 1)
{
self notify("force_cancel_placement");
wait 0.05;
}
while(self ismantling())
{
wait 0.05;
}
while(!self isonground())
{
wait 0.05;
}
if(maps\mp\_utility::isjuggernaut())
{
self notify("lost_juggernaut");
wait 0.05;
}
self.isjuggmodejuggernaut = 1;
level.jugg_currjugg[self.team] = self;
self.pers["gamemodeLoadout"] = level.tjugg_loadouts[self.pers["team"]];
if(isdefined(self.setspawnpoint))
{
maps\mp\perks\_perkfunctions::func_2A63(self.setspawnpoint);
}
var_00 = spawn("script_model",self.origin);
var_00.angles = self.angles;
var_00.playerspawnpos = self.origin;
var_00.notti = 1;
self.setspawnpoint = var_00;
self.gamemode_chosenclass = self.class;
self.pers["class"] = "gamemode";
self.pers["lastClass"] = "gamemode";
self.class = "gamemode";
self.lastclass = "gamemode";
self notify("faux_spawn");
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
var_01 = maps\mp\gametypes\_rank::getscoreinfovalue("got_juggernaut");
thread maps\mp\gametypes\_hud_message::func_2892("got_juggernaut",var_01);
maps\mp\gametypes\_gamescore::func_26D3("got_juggernaut",self,undefined,1);
thread resetjuggloadoutondisconnect(1);
thread resetjuggloadoutonchangeteam();
thread func_357D();
thread logattackers();
thread func_357B();
}
//Function Number: 10
func_357B()
{
level endon("game_ended");
self endon("disconnect");
self endon("death");
level.tjugg_timerdisplay[self.team].label = &"MP_JUGG_NEXT_JUGG_IN";
level.tjugg_timerdisplay[self.team] settimer(level.matchrules_juggswitchtime);
level.tjugg_timerdisplay[self.team].alpha = 1;
maps\mp\gametypes\_hostmigration::func_2740(level.matchrules_juggswitchtime);
level.tjugg_timerdisplay[self.team].alpha = 0;
var_00 = getbestteammate(self.team,0);
if(!isdefined(var_00))
{
var_00 = getbestteammate(self.team,1);
}
if(!isdefined(var_00))
{
var_00 = self;
}
maps\mp\_utility::func_2D68("mp_enemy_obj_captured");
func_3562(var_00,self);
if(var_00 != self)
{
thread respawnoldjugg();
}
}
//Function Number: 11
respawnoldjugg()
{
level endon("game_ended");
self endon("disconnect");
while(!maps\mp\_utility::isreallyalive(self) || maps\mp\_utility::isusingremote())
{
wait 0.05;
}
if(isdefined(self.iscarrying) && self.iscarrying == 1)
{
self notify("force_cancel_placement");
wait 0.05;
}
if(isdefined(self.setspawnpoint))
{
maps\mp\perks\_perkfunctions::func_2A63(self.setspawnpoint);
}
playfx(level.respawnoldjugg_fx,self.origin);
self notify("lost_juggernaut");
wait 0.05;
while(!self isonground())
{
wait 0.05;
}
self notify("faux_spawn");
self.faux_spawn_stance = self getstance();
thread maps\mp\gametypes\_playerlogic::func_2B25(1);
}
//Function Number: 12
func_357D()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
for(;;)
{
wait 1;
foreach(var_01 in level.players)
{
if(maps\mp\_utility::isreallyalive(var_01) && !var_01 maps\mp\_utility::isusingremote() && var_01 != self && var_01.team == self.team && distancesquared(var_01.origin,self.origin) < -17136)
{
var_01.jugg_alligience = var_01.jugg_alligience + 25;
}
}
}
}
//Function Number: 13
logattackers()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
for(;;)
{
self waittill("damage",var_00,var_01);
if(isplayer(var_01) && var_01.team != self.team)
{
if(!isdefined(level.jugg_attackers[self.team][var_01.guid]))
{
level.jugg_attackers[self.team][var_01.guid] = 1;
}
}
}
}
//Function Number: 14
resetjuggloadoutondisconnect(param_00)
{
level endon("game_ended");
if(param_00)
{
self endon("death");
}
else
{
self endon("end_resetJuggLoadoutOnDisconnect");
}
var_01 = self.team;
self waittill("disconnect");
var_02 = getbestteammate(var_01,0);
if(!isdefined(var_02))
{
var_02 = getbestteammate(var_01,1);
}
if(isdefined(var_02))
{
maps\mp\_utility::func_2D68("mp_enemy_obj_captured");
func_3562(var_02);
return;
}
level.jugg_available[var_01] = 1;
level.jugg_currjugg[var_01] = undefined;
level.tjugg_timerdisplay[var_01].alpha = 0;
level.jugg_attackers[var_01] = [];
foreach(var_04 in level.players)
{
if(var_04.team == var_01)
{
var_04.jugg_alligience = 0;
}
}
}
//Function Number: 15
resetjuggloadoutonchangeteam()
{
level endon("game_ended");
self endon("disconnect");
var_00 = self.team;
common_scripts\utility::waittill_any("joined_team","joined_spectators");
self.isjuggmodejuggernaut = undefined;
var_01 = getbestteammate(var_00,0);
if(!isdefined(var_01))
{
var_01 = getbestteammate(var_00,1);
}
if(isdefined(var_01))
{
maps\mp\_utility::func_2D68("mp_enemy_obj_captured");
func_3562(var_01);
return;
}
level.jugg_available[var_00] = 1;
level.jugg_currjugg[var_00] = undefined;
level.tjugg_timerdisplay[var_00].alpha = 0;
level.jugg_attackers[var_00] = [];
foreach(var_03 in level.players)
{
if(var_03.team == var_00)
{
var_03.jugg_alligience = 0;
}
}
}
//Function Number: 16
getbestteammate(param_00,param_01)
{
var_02 = undefined;
var_03 = -1;
foreach(var_05 in level.players)
{
if((param_01 || !var_05 maps\mp\_utility::isusingremote()) && var_05 != self && var_05.team == param_00 && var_05.jugg_alligience > var_03)
{
var_02 = var_05;
var_03 = var_05.jugg_alligience;
}
}
return var_02;
}
//Function Number: 17
func_34CC(param_00)
{
level waittill("game_ended");
param_00.alpha = 0;
}
//Function Number: 18
func_34B3()
{
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",5,"class","inUse"))
{
level.tjugg_loadouts["axis"] = maps\mp\_utility::func_334E("axis",5);
level.tjugg_loadouts["axis"]["loadoutJuggernaut"] = 1;
}
else
{
level.tjugg_loadouts["axis"]["loadoutPrimary"] = "iw5_scar";
level.tjugg_loadouts["axis"]["loadoutPrimaryAttachment"] = "none";
level.tjugg_loadouts["axis"]["loadoutPrimaryAttachment2"] = "none";
level.tjugg_loadouts["axis"]["loadoutPrimaryBuff"] = "specialty_bulletpenetration";
level.tjugg_loadouts["axis"]["loadoutPrimaryCamo"] = "none";
level.tjugg_loadouts["axis"]["loadoutPrimaryReticle"] = "none";
level.tjugg_loadouts["axis"]["loadoutSecondary"] = "rpg";
level.tjugg_loadouts["axis"]["loadoutSecondaryAttachment"] = "none";
level.tjugg_loadouts["axis"]["loadoutSecondaryAttachment2"] = "none";
level.tjugg_loadouts["axis"]["loadoutSecondaryBuff"] = "specialty_null";
level.tjugg_loadouts["axis"]["loadoutSecondaryCamo"] = "none";
level.tjugg_loadouts["axis"]["loadoutSecondaryReticle"] = "none";
level.tjugg_loadouts["axis"]["loadoutEquipment"] = "frag_grenade_mp";
level.tjugg_loadouts["axis"]["loadoutOffhand"] = "smoke_grenade_mp";
level.tjugg_loadouts["axis"]["loadoutPerk1"] = "specialty_scavenger";
level.tjugg_loadouts["axis"]["loadoutPerk2"] = "_specialty_blastshield";
level.tjugg_loadouts["axis"]["loadoutPerk3"] = "specialty_bulletaccuracy";
level.tjugg_loadouts["axis"]["loadoutDeathstreak"] = "specialty_null";
level.tjugg_loadouts["axis"]["loadoutJuggernaut"] = 1;
}
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","allies",5,"class","inUse"))
{
level.tjugg_loadouts["allies"] = maps\mp\_utility::func_334E("allies",5);
level.tjugg_loadouts["allies"]["loadoutJuggernaut"] = 1;
return;
}
level.tjugg_loadouts["allies"]["loadoutPrimary"] = "iw5_scar";
level.tjugg_loadouts["allies"]["loadoutPrimaryAttachment"] = "none";
level.tjugg_loadouts["allies"]["loadoutPrimaryAttachment2"] = "none";
level.tjugg_loadouts["allies"]["loadoutPrimaryBuff"] = "specialty_bulletpenetration";
level.tjugg_loadouts["allies"]["loadoutPrimaryCamo"] = "none";
level.tjugg_loadouts["allies"]["loadoutPrimaryReticle"] = "none";
level.tjugg_loadouts["allies"]["loadoutSecondary"] = "rpg";
level.tjugg_loadouts["allies"]["loadoutSecondaryAttachment"] = "none";
level.tjugg_loadouts["allies"]["loadoutSecondaryAttachment2"] = "none";
level.tjugg_loadouts["allies"]["loadoutSecondaryBuff"] = "specialty_null";
level.tjugg_loadouts["allies"]["loadoutSecondaryCamo"] = "none";
level.tjugg_loadouts["allies"]["loadoutSecondaryReticle"] = "none";
level.tjugg_loadouts["allies"]["loadoutEquipment"] = "frag_grenade_mp";
level.tjugg_loadouts["allies"]["loadoutOffhand"] = "smoke_grenade_mp";
level.tjugg_loadouts["allies"]["loadoutPerk1"] = "specialty_scavenger";
level.tjugg_loadouts["allies"]["loadoutPerk2"] = "_specialty_blastshield";
level.tjugg_loadouts["allies"]["loadoutPerk3"] = "specialty_bulletaccuracy";
level.tjugg_loadouts["allies"]["loadoutDeathstreak"] = "specialty_null";
level.tjugg_loadouts["allies"]["loadoutJuggernaut"] = 1;
}

View File

@ -0,0 +1,433 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\vip.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 23
* Decompile Time: 301 ms
* Timestamp: 10/27/2023 2:26:28 AM
*******************************************************************/
//Function Number: 1
main()
{
if(getdvar("mapname") == "mp_background")
{
return;
}
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
maps\mp\_utility::func_330E(level.gametype,0,0,9);
maps\mp\_utility::func_3315(level.gametype,10,0,1440);
maps\mp\_utility::registerscorelimitdvar(level.gametype,500,0,5000);
maps\mp\_utility::func_3312(level.gametype,1,0,10);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1,0,10);
maps\mp\_utility::func_330E(level.gametype,3,0,30);
maps\mp\_utility::func_3317(level.gametype,1,0,10);
maps\mp\_utility::func_3325("halftime",0);
level.teambased = 1;
level.objectivebased = 1;
level.onprecachegametype = ::onprecachegametype;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onspawnplayer = ::onspawnplayer;
level.onnormaldeath = ::onnormaldeath;
level.onplayerkilled = ::onplayerkilled;
level.ondeadevent = ::ondeadevent;
game["dialog"]["gametype"] = "VIP";
}
//Function Number: 2
onprecachegametype()
{
precacheshader("compass_waypoint_captureneutral");
precacheshader("compass_waypoint_capture");
precacheshader("compass_waypoint_defend");
precacheshader("waypoint_captureneutral");
precacheshader("waypoint_capture");
precacheshader("waypoint_defend");
precachestring(&"MP_ELIMINATED_VIP");
precachestring(&"MP_DEFENDED_VIP");
precachestring(&"SPLASHES_VIP");
game["flagmodels"] = [];
game["flagmodels"]["neutral"] = "prop_flag_neutral";
game["flagmodels"]["allies"] = maps\mp\gametypes\_teams::func_2774("allies");
game["flagmodels"]["axis"] = maps\mp\gametypes\_teams::func_2774("axis");
precachemodel(game["flagmodels"]["neutral"]);
precachemodel(game["flagmodels"]["allies"]);
precachemodel(game["flagmodels"]["axis"]);
}
//Function Number: 3
onstartgametype()
{
setclientnamemode("auto_change");
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
if(game["switchedsides"])
{
var_00 = game["attackers"];
var_01 = game["defenders"];
game["attackers"] = var_01;
game["defenders"] = var_00;
}
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_VIP");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_VIP");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_VIP");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_VIP");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_VIP_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_VIP_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_VIP_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_VIP_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_allies_start");
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_axis_start");
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_tdm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_tdm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
var_02[0] = "vip";
maps\mp\gametypes\_gameobjects::main(var_41);
thread func_3593();
}
//Function Number: 4
func_3593()
{
level endon("game_end");
level endon("waitSkipped");
thread extractionzone();
thread skipwait();
maps\mp\_utility::func_274B("prematch_done");
maps\mp\_utility::func_274B("graceperiod_done");
self notify("graceComplete");
thread vipselection();
}
//Function Number: 5
skipwait()
{
self endon("graceComplete");
for(;;)
{
if(level.players.size > 2)
{
break;
}
wait 0.5;
}
self notify("waitSkipped");
thread vipselection();
}
//Function Number: 6
getspawnpoint()
{
var_00 = self.pers["team"];
if(game["switchedsides"])
{
var_00 = maps\mp\_utility::getotherteam(var_00);
}
if(level.ingraceperiod)
{
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_tdm_spawn_" + var_00 + "_start");
var_02 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_01);
}
else
{
var_01 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(var_02);
var_02 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_02);
}
return var_02;
}
//Function Number: 7
onspawnplayer()
{
self.isvip = 0;
self.usingobj = undefined;
level notify("spawned_player");
}
//Function Number: 8
onnormaldeath(param_00,param_01,param_02)
{
var_03 = maps\mp\gametypes\_rank::getscoreinfovalue("kill");
param_01 maps\mp\gametypes\_gamescore::giveteamscoreforobjective(param_01.pers["team"],var_03);
var_04 = param_00.team;
if(isdefined(param_00.isvip) && param_00.isvip)
{
level thread func_35A4(game["attackers"],&"MP_ELIMINATED_VIP");
param_01.finalkill = 1;
}
}
//Function Number: 9
onplayerkilled(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
{
thread checkallowspectating();
}
//Function Number: 10
ontimelimit()
{
if(game["status"] == "overtime")
{
var_00 = "forfeit";
}
else if(game["teamScores"]["allies"] == game["teamScores"]["axis"])
{
var_00 = "overtime";
}
else if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
{
var_00 = "axis";
}
else
{
var_00 = "allies";
}
thread maps\mp\gametypes\_gamelogic::endgame(var_00,game["strings"]["time_limit_reached"]);
}
//Function Number: 11
checkallowspectating()
{
wait 0.05;
var_00 = 0;
if(!level.alivecount[game["attackers"]])
{
level.spectateoverride[game["attackers"]].allowenemyspectate = 1;
var_00 = 1;
}
if(!level.alivecount[game["defenders"]])
{
level.spectateoverride[game["defenders"]].allowenemyspectate = 1;
var_00 = 1;
}
if(var_00)
{
maps\mp\gametypes\_spectating::updatespectatesettings();
}
}
//Function Number: 12
ondeadevent(param_00)
{
if(param_00 == game["attackers"])
{
level thread func_35A4(game["defenders"],game["strings"][game["attackers"] + "_eliminated"]);
return;
}
if(param_00 == game["defenders"])
{
level thread func_35A4(game["attackers"],game["strings"][game["defenders"] + "_eliminated"]);
}
}
//Function Number: 13
func_35A4(param_00,param_01)
{
thread maps\mp\gametypes\_gamelogic::endgame(param_00,param_01);
}
//Function Number: 14
vipselection()
{
var_00 = [];
var_01 = 0;
for(;;)
{
if(level.players.size >= 2)
{
break;
}
if(var_01 >= 100)
{
iprintlnbold("Game mode only playable with 2 or more players");
wait 2;
maps\mp\gametypes\_callbacksetup::abortlevel();
}
var_01++;
wait 0.1;
}
foreach(var_03 in level.players)
{
if(var_03.team == game["defenders"])
{
var_00[var_00.size] = var_03;
}
}
var_05 = randomintrange(0,var_00.size);
var_06 = var_00[var_05];
if(!isalive(var_06) && !issubstr(var_06.guid,"bot"))
{
var_06 forcevipspawn();
}
func_35A6(var_06);
}
//Function Number: 15
func_35A6(param_00)
{
param_00 takeallweapons();
param_00 maps\mp\_utility::_clearperks();
param_00.isvip = 1;
param_00 giveweapon("deserteagle_fmj_mp");
param_00 givestartammo("deserteagle_fmj_mp");
param_00 giveweapon("riotshield_mp");
param_00 switchtoweapon("riotshield_mp");
param_00 maps\mp\_utility::giveperk("specialty_armorvest",0);
param_00 maps\mp\_utility::giveperk("specialty_finalstand",0);
param_00 iprintlnbold("You Are the VIP");
}
//Function Number: 16
extractionzone()
{
var_00 = getentarray("extraction_vip","targetname");
if(!isdefined(var_00))
{
maps\mp\gametypes\_callbacksetup::abortlevel();
return;
}
else
{
level.extractionzone = var_00;
}
var_01 = level.extractionzone[0];
if(isdefined(var_01.target))
{
var_02[0] = getent(var_01.target,"targetname");
}
else
{
var_00[0] = spawn("script_model",var_02.origin);
var_02[0].angles = var_01.angles;
}
var_00 = maps\mp\gametypes\_gameobjects::func_29E7(game["defenders"],var_01,var_02,(0,0,100));
var_00 maps\mp\gametypes\_gameobjects::allowuse("friendly");
var_00 maps\mp\gametypes\_gameobjects::setvisibleteam("none");
var_00 maps\mp\gametypes\_gameobjects::setusetext(&"MP_CALLING_EXTRACTION");
var_00 maps\mp\gametypes\_gameobjects::setusetime(0);
var_00.onuse = ::onuse;
var_00.oncantuse = ::oncantuse;
var_03 = var_01.origin + (0,0,32);
var_04 = var_01.origin + (0,0,-32);
var_05 = bullettrace(var_03,var_04,0,undefined);
var_06 = maps\mp\gametypes\_teams::func_2777(game["defenders"]);
var_07 = loadfx(var_06);
var_08 = vectortoangles(var_05["normal"]);
var_09 = anglestoforward(var_08);
var_0A = anglestoright(var_08);
thread func_3084(var_07,var_05["position"],var_09,var_0A,0.5);
var_00 maps\mp\gametypes\_gameobjects::set2dicon("friendly","compass_waypoint_defend");
var_00 maps\mp\gametypes\_gameobjects::func_2A25("friendly","waypoint_defend");
var_00 maps\mp\gametypes\_gameobjects::setvisibleteam("friendly");
level.extractionzone = var_00;
}
//Function Number: 17
setvipuse()
{
foreach(var_01 in level.players)
{
if(!var_01.isvip)
{
self.trigger disableplayeruse(var_01);
}
}
}
//Function Number: 18
onuse(param_00)
{
if(!isdefined(param_00.isvip) || !param_00.isvip)
{
return;
}
iprintlnbold("Extraction on its way");
func_35A9(param_00);
}
//Function Number: 19
func_35A9(param_00)
{
param_00 endon("death");
level endon("game_end");
level.extractiontime = 45;
maps\mp\gametypes\_gamelogic::pausetimer();
level.timelimitoverride = 1;
setgameendtime(int(gettime() + level.extractiontime * 1000));
wait level.extractiontime;
level thread func_35A4(game["defenders"],&"MP_DEFENDED_VIP");
}
//Function Number: 20
onenduse(param_00,param_01,param_02)
{
}
//Function Number: 21
oncantuse(param_00)
{
}
//Function Number: 22
func_3084(param_00,param_01,param_02,param_03,param_04)
{
wait param_04;
var_05 = spawnfx(param_00,param_01,param_02,param_03);
triggerfx(var_05);
}
//Function Number: 23
forcevipspawn()
{
self endon("death");
self endon("disconnect");
self endon("spawned");
if(self.hasspawned)
{
return;
}
if(!maps\mp\_utility::func_2B5F(self.pers["class"]))
{
self.pers["class"] = "CLASS_CUSTOM1";
self.class = self.pers["class"];
}
maps\mp\_utility::closemenus();
thread maps\mp\gametypes\_playerlogic::spawnclient();
}

View File

@ -0,0 +1,188 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\gametypes\war.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 6
* Decompile Time: 101 ms
* Timestamp: 10/27/2023 2:26:29 AM
*******************************************************************/
//Function Number: 1
main()
{
if(getdvar("mapname") == "mp_background")
{
return;
}
maps\mp\gametypes\_globallogic::init();
maps\mp\gametypes\_callbacksetup::setupcallbacks();
maps\mp\gametypes\_globallogic::setupcallbacks();
if(isusingmatchrulesdata())
{
level.initializematchrules = ::initializematchrules;
[[ level.initializematchrules ]]();
level thread maps\mp\_utility::func_810A();
}
else
{
maps\mp\_utility::func_330E(level.gametype,0,0,9);
maps\mp\_utility::func_3315(level.gametype,10);
maps\mp\_utility::registerscorelimitdvar(level.gametype,500);
maps\mp\_utility::func_3312(level.gametype,1);
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
maps\mp\_utility::func_3317(level.gametype,0);
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
level.matchrules_damagemultiplier = 0;
level.matchrules_vampirism = 0;
}
level.teambased = 1;
level.onstartgametype = ::onstartgametype;
level.getspawnpoint = ::getspawnpoint;
level.onnormaldeath = ::onnormaldeath;
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
{
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::func_2D57;
}
game["dialog"]["gametype"] = "tm_death";
if(getdvarint("g_hardcore"))
{
game["dialog"]["gametype"] = "hc_" + game["dialog"]["gametype"];
}
else if(getdvarint("camera_thirdPerson"))
{
game["dialog"]["gametype"] = "thirdp_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_diehard"))
{
game["dialog"]["gametype"] = "dh_" + game["dialog"]["gametype"];
}
else if(getdvarint("scr_" + level.gametype + "_promode"))
{
game["dialog"]["gametype"] = game["dialog"]["gametype"] + "_pro";
}
game["strings"]["overtime_hint"] = &"MP_FIRST_BLOOD";
}
//Function Number: 2
initializematchrules()
{
maps\mp\_utility::func_334C();
setdynamicdvar("scr_war_roundswitch",0);
maps\mp\_utility::func_330E("war",0,0,9);
setdynamicdvar("scr_war_roundlimit",1);
maps\mp\_utility::func_3312("war",1);
setdynamicdvar("scr_war_winlimit",1);
maps\mp\_utility::registerwinlimitdvar("war",1);
setdynamicdvar("scr_war_halftime",0);
maps\mp\_utility::registerhalftimedvar("war",0);
setdynamicdvar("scr_war_promode",0);
}
//Function Number: 3
onstartgametype()
{
setclientnamemode("auto_change");
if(!isdefined(game["switchedsides"]))
{
game["switchedsides"] = 0;
}
if(game["switchedsides"])
{
var_00 = game["attackers"];
var_01 = game["defenders"];
game["attackers"] = var_01;
game["defenders"] = var_00;
}
maps\mp\_utility::func_3305("allies",&"OBJECTIVES_WAR");
maps\mp\_utility::func_3305("axis",&"OBJECTIVES_WAR");
if(level.splitscreen)
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_WAR");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_WAR");
}
else
{
maps\mp\_utility::func_3306("allies",&"OBJECTIVES_WAR_SCORE");
maps\mp\_utility::func_3306("axis",&"OBJECTIVES_WAR_SCORE");
}
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_WAR_HINT");
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_WAR_HINT");
level.spawnmins = (0,0,0);
level.spawnmaxs = (0,0,0);
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_allies_start");
maps\mp\gametypes\_spawnlogic::placespawnpoints("mp_tdm_spawn_axis_start");
maps\mp\gametypes\_spawnlogic::func_2FD0("allies","mp_tdm_spawn");
maps\mp\gametypes\_spawnlogic::func_2FD0("axis","mp_tdm_spawn");
level.mapcenter = maps\mp\gametypes\_spawnlogic::func_2FCD(level.spawnmins,level.spawnmaxs);
setmapcenter(level.mapcenter);
var_02[0] = level.gametype;
maps\mp\gametypes\_gameobjects::main(var_41);
}
//Function Number: 4
getspawnpoint()
{
var_00 = self.pers["team"];
if(game["switchedsides"])
{
var_00 = maps\mp\_utility::getotherteam(var_00);
}
if(level.ingraceperiod)
{
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_tdm_spawn_" + var_00 + "_start");
var_02 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(var_01);
}
else
{
var_01 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(var_02);
var_02 = maps\mp\gametypes\_spawnlogic::func_2FE6(var_02);
}
return var_02;
}
//Function Number: 5
onnormaldeath(param_00,param_01,param_02)
{
var_03 = maps\mp\gametypes\_rank::getscoreinfovalue("kill");
param_01 maps\mp\gametypes\_gamescore::giveteamscoreforobjective(param_01.pers["team"],var_03);
if(game["state"] == "postgame" && game["teamScores"][param_01.team] > game["teamScores"][level.otherteam[param_01.team]])
{
param_01.finalkill = 1;
}
}
//Function Number: 6
ontimelimit()
{
level.finalkillcam_winner = "none";
if(game["status"] == "overtime")
{
var_00 = "forfeit";
}
else if(game["teamScores"]["allies"] == game["teamScores"]["axis"])
{
var_00 = "overtime";
}
else if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
{
level.finalkillcam_winner = "axis";
var_00 = "axis";
}
else
{
level.finalkillcam_winner = "allies";
var_00 = "allies";
}
thread maps\mp\gametypes\_gamelogic::endgame(var_00,game["strings"]["time_limit_reached"]);
}

View File

@ -0,0 +1,567 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\killstreaks\_a10.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 22
* Decompile Time: 316 ms
* Timestamp: 10/27/2023 2:26:30 AM
*******************************************************************/
//Function Number: 1
init()
{
precachestring(&"MP_WAR_AIRSTRIKE_INBOUND");
precachestring(&"SPLASHES_DESTROYED_A10");
precachestring(&"KILLSTREAKS_A10_SUPPORT");
precachemodel("vehicle_a10_warthog");
precacheitem("a10_30mm_mp");
precachempanim("MP_A10_strafing_run");
precacheshader("compass_objpoint_a10_friendly");
precacheshader("compass_objpoint_a10_enemy");
precacheminimapicon("compass_objpoint_a10_friendly");
precacheminimapicon("compass_objpoint_a10_enemy");
level.a10_fx["bullet_rain"] = loadfx("misc/warthog_volley_runner");
level.a10_fx["bullet_impacts"] = loadfx("impacts/warthog_volley_runner");
level.a10_fx["bullet_dust"] = loadfx("dust/wing_drop_dust");
level.a10_fx["afterburner"] = loadfx("fire/jet_afterburner");
level.a10_fx["contrail"] = loadfx("smoke/jet_contrail");
level.a10_fx["wingtip_light_green"] = loadfx("misc/aircraft_light_wingtip_green");
level.a10_fx["wingtip_light_red"] = loadfx("misc/aircraft_light_wingtip_red");
level.killstreakfuncs["a10_support"] = ::tryusea10strike;
level.killstreaksetupfuncs["a10_support"] = ::func_3430;
level.a10maxhealth = 350;
level.a10speed = 100;
level.a10speedreduction = 75;
level.a10startpointoffset = 5000;
level.a10impactfxdelay = 0.5;
level.a10damage = 200;
level.a10damageradius = 384;
level.a10damagedelay = 0.5;
level.a10bulletraindelay = 0.5;
level.a10bulletimpactsdelay = 0.5;
level.a10earthquakemagnitude = 0.1;
level.a10earthquakeduration = 0.5;
level.a10earthquakedelay = 0.5;
level.a10dirteffectradius = 350;
level.a10shootinggroundsounddelay = 0.1;
level.a10startpositionscalar = 2000;
}
//Function Number: 2
func_3430()
{
self.useduava10 = 0;
}
//Function Number: 3
tryusea10strike(param_00)
{
var_01 = undefined;
if(isdefined(level.civilianjetflyby))
{
self iprintlnbold(&"MP_CIVILIAN_AIR_TRAFFIC");
return 0;
}
if(maps\mp\_utility::isusingremote())
{
return 0;
}
if(maps\mp\_utility::func_2BE7())
{
return 0;
}
if(maps\mp\_utility::func_27E5())
{
return 0;
}
var_02 = "a10_support";
if(!self.useduava10)
{
self.useduava10 = 1;
maps\mp\killstreaks\_uav::useuav(var_02);
}
var_01 = func_3433(param_00,var_02);
if(!isdefined(var_01) || !var_01)
{
return 0;
}
return 1;
}
//Function Number: 4
func_3433(param_00,param_01)
{
self playlocalsound("US_KS_hqr_a10");
maps\mp\_utility::_beginlocationselection(param_01,"map_artillery_selector",1,500);
self endon("stop_location_selection");
self waittill("confirm_location",var_02,var_03);
self playlocalsound("US_KS_a10_inbound");
thread finisha10strikeusage(param_00,var_02,::calla10strike,var_03);
self setblurforplayer(0,0.3);
return 1;
}
//Function Number: 5
finisha10strikeusage(param_00,param_01,param_02,param_03)
{
self notify("used");
wait 0.05;
thread maps\mp\_utility::func_2EB1(0);
self thread [[ param_02 ]](param_00,param_01,param_03);
return 1;
}
//Function Number: 6
calla10strike(param_00,param_01,param_02)
{
if(!isdefined(self))
{
return;
}
if(level.teambased)
{
var_03 = level.players;
foreach(var_05 in level.players)
{
var_06 = var_05.pers["team"];
if(isdefined(var_06))
{
if(var_06 == self.team)
{
var_05 iprintln(&"MP_WAR_AIRSTRIKE_INBOUND",self);
}
}
}
}
var_08 = (0,param_02,0);
var_09 = 12000;
var_0A = param_01 + anglestoforward(var_08) * -1 * var_09;
var_0B = param_01 + anglestoforward(var_08) * var_09 * 2;
var_0A = var_0A * (1,1,0);
var_0B = var_0B * (1,1,0);
var_0C = getbestheight(var_0A,var_0B);
var_0B = var_0B + (0,0,var_0C);
var_0A = var_0A + (0,0,var_0C);
self endon("disconnect");
var_0D = self.lifeid;
level thread doa10strike(param_00,self,var_0D,param_01,var_0A,var_0B,var_08,0);
}
//Function Number: 7
getbestheight(param_00,param_01)
{
var_02 = getent("airstrikeheight","targetname");
var_03 = level.spawnpoints;
var_04 = var_03[0];
foreach(var_06 in var_03)
{
if(var_06.origin[2] < var_04.origin[2])
{
var_04 = var_06;
}
}
if(isdefined(var_02))
{
var_08 = var_02.origin[2];
}
else if(isdefined(level.airstrikeheightscale))
{
var_08 = 850 * level.airstrikeheightscale;
}
else
{
var_08 = 850;
}
var_09 = var_08;
var_0A = var_08;
var_0B = var_04.origin[2];
var_0C = undefined;
var_0D = 0;
for(;;)
{
var_0E = var_0A - var_0B / 2 + var_0B;
var_0F = bullettrace(param_00 + (0,0,var_0E),param_01 + (0,0,var_0E),0,undefined);
if(var_0F["surfacetype"] != "none")
{
var_0B = var_0E;
var_0D++;
if(var_0D > 4 && isdefined(var_0C))
{
var_08 = var_0C;
break;
}
else if(var_0D > 6)
{
var_08 = var_09;
break;
}
}
else
{
var_0C = var_0E;
var_0A = var_0E;
if(var_0E < var_04.origin[2] + 512)
{
var_08 = var_04.origin[2] + 512;
break;
}
}
wait 0.05;
}
var_0D = 0;
for(;;)
{
wait 0.05;
var_10 = bullettrace(param_00 + (0,0,var_08),param_01 + (0,0,var_08),0,undefined);
var_11 = bullettrace(param_00 + (50,50,var_08 + 50),param_01 + (50,50,var_08 + 50),0,undefined);
wait 0.05;
var_12 = bullettrace(param_00 + (-50,-50,var_08 - 50),param_01 + (-50,-50,var_08 - 50),0,undefined);
var_13 = bullettrace(param_00 + (50,50,var_08 - 50),param_01 + (50,50,var_08 - 50),0,undefined);
wait 0.05;
var_14 = bullettrace(param_00 + (-50,-50,var_08 + 50),param_01 + (-50,-50,var_08 + 50),0,undefined);
if(var_10["surfacetype"] != "none" || var_11["surfacetype"] != "none" || var_12["surfacetype"] != "none" || var_13["surfacetype"] != "none" || var_14["surfacetype"] != "none")
{
var_0D++;
var_08 = var_08 + 200;
if(var_0D > 5)
{
var_08 = var_09;
break;
}
continue;
}
break;
}
return var_08 + 175;
}
//Function Number: 8
doa10strike(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
{
if(!isdefined(param_01))
{
return;
}
var_08 = func_343E(param_01,param_04,param_05,param_03,param_07);
var_08.lifeid = param_00;
var_08 playloopsound("veh_mig29_dist_loop");
var_09 = level.spawnpoints;
var_0A = var_09[0];
foreach(var_0C in var_09)
{
if(var_0C.origin[2] > var_0A.origin[2])
{
var_0A = var_0C;
}
}
var_08.killcament = spawn("script_model",(var_08.origin[0],var_08.origin[1],var_0A.origin[2] + 5000));
var_08.killcament linkto(var_08);
param_01.a10 = var_08;
var_08 thread watchtimeout();
var_08 thread func_28F6();
var_08 endon("death");
var_08 thread func_3438();
}
//Function Number: 9
watchtimeout()
{
level endon("game_ended");
self endon("gone");
self endon("death");
maps\mp\gametypes\_hostmigration::func_2740(35);
self notify("death");
}
//Function Number: 10
func_3438()
{
self endon("death");
wait self.initialdelay;
var_00 = self.startpoint;
var_01 = self.attackpoint;
var_02 = self.endpoint;
var_01 = (var_01[0],var_01[1],var_00[2] - level.a10startpointoffset);
var_03 = distance(var_00,var_01) * 0.5;
var_04 = float(level.a10speed);
var_05 = var_03 / var_04 / 60;
var_06 = var_00 + vectornormalize(var_01 - var_00) * var_03;
thread a10playenginefx();
self moveto(var_06,var_05);
wait var_05;
var_03 = distance(var_00,var_01) * 0.5;
var_04 = float(level.a10speed - level.a10speedreduction);
var_05 = var_03 / var_04 / 60;
self moveto(var_01,var_05);
thread func_3440(var_05);
thread monitorkills();
wait var_05;
self notify("stopShooting");
var_03 = distance2d(var_01,var_02);
var_04 = level.a10speed;
var_05 = var_03 / var_04 / 60;
self moveto(var_02,var_05);
var_07 = vectortoangles(var_02 - var_01);
self waittill("movedone");
self notify("gone");
wait 0.5;
func_3448();
}
//Function Number: 11
a10playenginefx()
{
self endon("death");
wait 0.5;
playfxontag(level.a10_fx["afterburner"],self,"tag_engine_right");
wait 0.5;
playfxontag(level.a10_fx["afterburner"],self,"tag_engine_left");
wait 0.5;
playfxontag(level.a10_fx["contrail"],self,"tag_right_wingtip");
wait 0.5;
playfxontag(level.a10_fx["contrail"],self,"tag_left_wingtip");
wait 0.5;
playfxontag(level.a10_fx["wingtip_light_red"],self,"tag_right_wingtip");
wait 0.5;
playfxontag(level.a10_fx["wingtip_light_green"],self,"tag_left_wingtip");
}
//Function Number: 12
monitorkills()
{
level endon("game_ended");
self endon("gone");
self endon("death");
self endon("stopShooting");
for(;;)
{
self waittill("killedPlayer");
self.killcount++;
}
}
//Function Number: 13
func_343E(param_00,param_01,param_02,param_03,param_04)
{
param_01 = param_01 + (0,0,level.a10startpointoffset);
var_05 = vectortoangles(param_02 - param_01);
var_06 = spawn("script_model",param_01);
var_07 = spawnplane(param_00,"script_model",param_01,"compass_objpoint_a10_friendly","compass_objpoint_a10_enemy");
if(!isdefined(var_06))
{
return;
}
var_07 linkto(var_06);
var_06.fakea10 = var_07;
var_06 setmodel("vehicle_a10_warthog");
var_06.health = 999999;
var_06.maxhealth = level.a10maxhealth;
var_06.damagetaken = 0;
var_06.owner = param_00;
var_06.team = param_00.team;
var_06.killcount = 0;
var_06.startpoint = param_01;
var_06.endpoint = param_02;
var_06.attackpoint = param_03;
var_06.initialdelay = param_04;
var_06.angles = var_05;
return var_06;
}
//Function Number: 14
func_3440(param_00)
{
self endon("gone");
self endon("death");
self endon("stopShooting");
var_01 = level.spawnpoints;
var_02 = var_01[0];
var_03 = vectornormalize(self.origin - self.attackpoint) * level.a10startpositionscalar;
var_03 = self.attackpoint + (var_03[0],var_03[1],0);
var_04 = vectornormalize(self.origin - self.attackpoint) * -1 * level.a10startpositionscalar;
var_04 = self.attackpoint + (var_04[0],var_04[1],0);
var_05 = vectornormalize(var_04 - var_03);
var_06 = distance2d(var_03,var_04) / param_00 / 0.05;
self.a10shootingpos = (var_03[0],var_03[1],var_02.origin[2] - 128);
var_07 = var_05 * var_06;
thread func_3442();
thread func_3443();
thread manageshootinggroundsound();
thread func_3445();
while(param_00 > 0)
{
foreach(var_09 in level.players)
{
if(level.teambased)
{
if(var_09.team != self.owner.team)
{
var_0A = pointonsegmentnearesttopoint(self.origin,self.a10shootingpos,var_09.origin);
if(distancesquared(var_0A,var_09.origin) < level.a10damageradius * level.a10damageradius)
{
radiusdamage(var_0A,level.a10damageradius,level.a10damage,level.a10damage,self,"MOD_RIFLE_BULLET","a10_30mm_mp");
}
}
continue;
}
var_0A = pointonsegmentnearesttopoint(self.origin,self.a10shootingpos,var_09.origin);
if(distancesquared(var_0A,var_09.origin) < level.a10damageradius * level.a10damageradius)
{
radiusdamage(var_0A,level.a10damageradius,level.a10damage,level.a10damage,self,"MOD_RIFLE_BULLET","a10_30mm_mp");
}
}
var_0C = self gettagorigin("tag_gun");
for(var_0D = 0;var_0D < 1;var_0D++)
{
magicbullet("a10_30mm_mp",var_0C,self.a10shootingpos + (randomintrange(-100,100),randomintrange(-100,100),0),self.owner);
}
self.a10shootingpos = self.a10shootingpos + (var_07[0],var_07[1],0);
param_00 = param_00 - 0.05;
wait 0.05;
}
}
//Function Number: 15
func_3442()
{
self endon("gone");
self endon("death");
self endon("stopShooting");
for(;;)
{
var_00 = self gettagorigin("tag_gun");
var_01 = self.a10shootingpos - var_00;
var_02 = anglestoup(var_01);
playfx(level.a10_fx["bullet_rain"],var_00,var_01,var_02);
wait level.a10bulletraindelay;
}
}
//Function Number: 16
func_3443()
{
var_00 = spawn("script_origin",self gettagorigin("tag_gun"));
if(!isdefined(var_00))
{
return;
}
var_00 linkto(self,"tag_gun");
var_00 playloopsound("pavelow_mg_loop");
common_scripts\utility::waittill_any("stopShooting","gone","death");
var_00 stoploopsound("pavelow_mg_loop");
wait 0.5;
var_00 delete();
}
//Function Number: 17
manageshootinggroundsound()
{
self endon("death");
self endon("gone");
self endon("stopShooting");
for(;;)
{
level thread common_scripts\utility::play_sound_in_space("bullet_a10warthog_default",self.a10shootingpos);
wait level.a10shootinggroundsounddelay;
}
}
//Function Number: 18
func_3445()
{
self endon("death");
self endon("gone");
self endon("stopShooting");
for(;;)
{
playrumbleonposition("grenade_rumble",self.a10shootingpos);
earthquake(level.a10earthquakemagnitude,level.a10earthquakeduration,self.a10shootingpos,level.a10damageradius);
foreach(var_01 in level.players)
{
if(var_01 maps\mp\_utility::isusingremote())
{
continue;
}
if(distance(self.a10shootingpos,var_01.origin) > level.a10dirteffectradius)
{
continue;
}
if(var_01 damageconetrace(self.a10shootingpos))
{
var_01 thread maps\mp\gametypes\_shellshock::dirteffect(self.a10shootingpos);
}
}
wait level.a10earthquakedelay;
}
}
//Function Number: 19
func_28F6()
{
self endon("gone");
self waittill("death");
thread func_3446();
}
//Function Number: 20
func_3446()
{
self endon("gone");
if(!isdefined(self))
{
return;
}
wait randomfloatrange(0.5,1.5);
func_3447();
}
//Function Number: 21
func_3447()
{
self notify("explode");
func_3448();
}
//Function Number: 22
func_3448()
{
if(isdefined(self.killcament))
{
self.killcament delete();
}
if(isdefined(self.fakea10))
{
self.fakea10 delete();
}
self delete();
}

View File

@ -0,0 +1,253 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\killstreaks\_aamissile.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 11
* Decompile Time: 158 ms
* Timestamp: 10/27/2023 2:26:31 AM
*******************************************************************/
//Function Number: 1
init()
{
precacheitem("aamissile_projectile_mp");
precacheshader("ac130_overlay_grain");
level.aamissilelaunchvert = 14000;
level.aamissilelaunchhorz = 30000;
level.aamissilelaunchtargetdist = 1500;
level.rockets = [];
level.killstreakfuncs["aamissile"] = ::func_35B9;
}
//Function Number: 2
func_35B9(param_00)
{
if(isdefined(level.civilianjetflyby))
{
self iprintlnbold(&"MP_CIVILIAN_AIR_TRAFFIC");
return 0;
}
maps\mp\_utility::setusingremote("aamissile");
var_01 = maps\mp\killstreaks\_killstreaks::initridekillstreak();
if(var_01 != "success")
{
if(var_01 != "disconnect")
{
maps\mp\_utility::clearusingremote();
}
return 0;
}
level thread aa_missile_fire(param_00,self);
return 1;
}
//Function Number: 3
drawline(param_00,param_01,param_02,param_03)
{
var_04 = int(param_02 * 20);
for(var_05 = 0;var_05 < var_04;var_05++)
{
wait 0.05;
}
}
//Function Number: 4
gettargets()
{
var_00 = [];
var_01 = [];
if(isdefined(level.littlebirds) && level.littlebirds.size)
{
foreach(var_03 in level.littlebirds)
{
if(var_03.team != self.team)
{
var_00[var_00.size] = var_03;
}
}
}
if(isdefined(level.helis) && level.helis.size)
{
foreach(var_06 in level.helis)
{
if(var_06.team != self.team)
{
var_01[var_01.size] = var_06;
}
}
}
if(level.ac130inuse && isdefined(level.ac130.owner) && level.ac130.owner.team != self.team)
{
return level.ac130.planemodel;
}
if(isdefined(var_01) && var_01.size)
{
return var_01[0];
}
if(isdefined(var_00) && var_00.size)
{
return var_00[0];
}
}
//Function Number: 5
aa_missile_fire(param_00,param_01)
{
var_02 = undefined;
var_03 = (0,0,level.aamissilelaunchvert);
var_04 = level.aamissilelaunchhorz;
var_05 = level.aammissilelaunchtargetdist;
var_06 = param_01 gettargets();
if(!isdefined(var_06))
{
var_07 = (0,0,0);
}
else
{
var_07 = var_07.origin;
var_03 = (0,0,1) * var_07 + (0,0,1000);
}
var_08 = anglestoforward(param_01.angles);
var_09 = param_01.origin + var_03 + var_08 * var_04 * -1;
var_0A = magicbullet("aamissile_projectile_mp",var_09,var_07,param_01);
if(!isdefined(var_0A))
{
param_01 maps\mp\_utility::clearusingremote();
return;
}
var_0A.lifeid = param_00;
var_0A.type = "remote";
missileeyes(param_01,var_0A);
}
//Function Number: 6
missileeyes(param_00,param_01)
{
param_00 endon("joined_team");
param_00 endon("joined_spectators");
param_01 thread rocket_cleanupondeath();
param_00 thread player_cleanupongameended(param_01);
param_00 thread func_3077(param_01);
param_00 visionsetmissilecamforplayer("black_bw",0);
param_00 endon("disconnect");
if(isdefined(param_01))
{
param_00 visionsetmissilecamforplayer(game["thermal_vision"],1);
param_00 thread func_3074();
param_00 cameralinkto(param_01,"tag_origin");
param_00 controlslinkto(param_01);
if(getdvarint("camera_thirdPerson"))
{
param_00 maps\mp\_utility::setthirdpersondof(0);
}
param_01 waittill("death");
if(isdefined(param_01))
{
param_00 maps\mp\_matchdata::logkillstreakevent("predator_missile",param_01.origin);
}
param_00 controlsunlink();
param_00 maps\mp\_utility::freezecontrolswrapper(1);
if(!level.gameended || isdefined(param_00.finalkill))
{
param_00 thread staticeffect(0.5);
}
wait 0.5;
param_00 thermalvisionfofoverlayoff();
param_00 cameraunlink();
if(getdvarint("camera_thirdPerson"))
{
param_00 maps\mp\_utility::setthirdpersondof(1);
}
}
param_00 maps\mp\_utility::clearusingremote();
}
//Function Number: 7
func_3074()
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
wait 0.15;
self thermalvisionfofoverlayon();
}
//Function Number: 8
staticeffect(param_00)
{
self endon("disconnect");
var_01 = newclienthudelem(self);
var_01.horzalign = "fullscreen";
var_01.vertalign = "fullscreen";
var_01 setshader("white",640,480);
var_01.archive = 1;
var_01.sort = 10;
var_02 = newclienthudelem(self);
var_02.horzalign = "fullscreen";
var_02.vertalign = "fullscreen";
var_02 setshader("ac130_overlay_grain",640,480);
var_02.archive = 1;
var_02.sort = 20;
wait param_00;
var_02 destroy();
var_01 destroy();
}
//Function Number: 9
func_3077(param_00)
{
param_00 endon("death");
self endon("disconnect");
common_scripts\utility::waittill_any("joined_team","joined_spectators");
if(self.team != "spectator")
{
self thermalvisionfofoverlayoff();
self controlsunlink();
self cameraunlink();
if(getdvarint("camera_thirdPerson"))
{
maps\mp\_utility::setthirdpersondof(1);
}
}
maps\mp\_utility::clearusingremote();
level.remotemissileinprogress = undefined;
}
//Function Number: 10
rocket_cleanupondeath()
{
var_00 = self getentitynumber();
level.rockets[var_00] = self;
self waittill("death");
level.rockets[var_00] = undefined;
}
//Function Number: 11
player_cleanupongameended(param_00)
{
param_00 endon("death");
self endon("death");
level waittill("game_ended");
self thermalvisionfofoverlayoff();
self controlsunlink();
self cameraunlink();
if(getdvarint("camera_thirdPerson"))
{
maps\mp\_utility::setthirdpersondof(1);
}
}

View File

@ -0,0 +1,318 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\killstreaks\_aastrike.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 11
* Decompile Time: 185 ms
* Timestamp: 10/27/2023 2:26:32 AM
*******************************************************************/
//Function Number: 1
init()
{
precacheitem("aamissile_projectile_mp");
precachemodel("vehicle_av8b_harrier_jet_mp");
precachestring(&"MP_NO_AIR_TARGETS");
level.teamairdenied["axis"] = 0;
level.teamairdenied["allies"] = 0;
level.rockets = [];
level.killstreakfuncs["aastrike"] = ::tryuseaastrike;
}
//Function Number: 2
tryuseaastrike(param_00)
{
if(isdefined(level.civilianjetflyby))
{
self iprintlnbold(&"MP_CIVILIAN_AIR_TRAFFIC");
return 0;
}
if(maps\mp\_utility::isusingremote())
{
return 0;
}
if(maps\mp\_utility::func_2BE7())
{
return 0;
}
if(maps\mp\_utility::func_27E5())
{
return 0;
}
maps\mp\_matchdata::logkillstreakevent("aastrike",self.origin);
thread finishaastrike(param_00);
thread maps\mp\_utility::teamplayercardsplash("used_aastrike",self,self.team);
return 1;
}
//Function Number: 3
cycletargets()
{
self endon("stopFindingTargets");
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
self endon("game_ended");
for(;;)
{
wait 0.05;
func_35C0();
wait randomintrange(4,5);
}
}
//Function Number: 4
func_35C0()
{
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
self endon("game_ended");
var_00 = [];
var_01 = [];
var_02 = [];
if(isdefined(level.littlebirds) && level.littlebirds.size)
{
foreach(var_04 in level.littlebirds)
{
if(isdefined(var_04.team) && var_04.team != self.team)
{
var_00[var_00.size] = var_04;
}
}
}
if(isdefined(level.helis) && level.helis.size)
{
foreach(var_07 in level.helis)
{
if(var_07.team != self.team)
{
var_01[var_01.size] = var_07;
}
}
}
var_09 = maps\mp\_utility::getotherteam(self.team);
if(isdefined(level.activeuavs[var_09]))
{
foreach(var_0B in level.uavmodels[var_09])
{
var_02[var_02.size] = var_0B;
}
}
var_0D = 0;
foreach(var_04 in var_00)
{
wait 3;
if(var_0D % 2)
{
thread fireattarget(var_04,self.team,1);
}
else
{
thread fireattarget(var_04,self.team,0);
}
var_0D++;
}
foreach(var_07 in var_01)
{
wait 3;
thread fireattarget(var_07,self.team,1);
}
foreach(var_0B in var_02)
{
wait 0.5;
thread fireattarget(var_0B,self.team,0);
}
if(level.ac130inuse && isdefined(level.ac130.owner) && level.ac130.owner.team != self.team)
{
var_14 = level.ac130.planemodel;
wait 6;
thread fireattarget(var_14,self.team,1);
}
}
//Function Number: 5
func_35C1()
{
self endon("stopFindingTargets");
var_00 = self.team;
common_scripts\utility::waittill_any("disconnect","joined_team","joined_spectators","game_ended");
level.teamairdenied[maps\mp\_utility::getotherteam(var_00)] = 0;
level.airdeniedplayer = undefined;
}
//Function Number: 6
finishaastrike(param_00)
{
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
self endon("game_ended");
level.teamairdenied[maps\mp\_utility::getotherteam(self.team)] = 1;
level.airdeniedplayer = self;
thread func_35C1();
thread cycletargets();
for(var_01 = 0;var_01 < 4;var_01++)
{
wait 6;
if(var_01 == 1 || var_01 == 3)
{
thread doflyby(1);
continue;
}
thread doflyby(0);
}
wait 3;
self notify("stopFindingTargets");
level.teamairdenied[maps\mp\_utility::getotherteam(self.team)] = 0;
level.airdeniedplayer = undefined;
}
//Function Number: 7
fireattarget(param_00,param_01,param_02)
{
if(!isdefined(param_00))
{
return;
}
var_03 = (0,0,14000);
var_04 = (0,0,1500);
var_05 = 15000;
var_06 = 20000;
var_07 = param_00.origin;
var_03 = (0,0,1) * var_07 + (0,0,1000);
var_08 = param_00.angles * (0,1,0);
var_09 = anglestoforward(var_08);
var_0A = param_00.origin + var_04 + var_09 * var_05 * -1;
var_0B = param_00.origin + var_04 + var_09 * var_06;
var_0C = magicbullet("aamissile_projectile_mp",var_0A + (0,0,-75),param_00.origin,self);
var_0C missile_settargetent(param_00);
var_0C missile_setflightmodedirect();
var_0D = magicbullet("aamissile_projectile_mp",var_0A + (randomint(500),randomint(500),-75),param_00.origin,self);
var_0D missile_settargetent(param_00);
var_0D missile_setflightmodedirect();
if(param_02)
{
var_0E = spawnplane(self,"script_model",var_0A,"hud_minimap_harrier_green","hud_minimap_harrier_red");
}
else
{
var_0E = spawnplane(self,"script_model",var_0B);
}
if(self.team == "allies")
{
var_0E setmodel("vehicle_av8b_harrier_jet_mp");
}
else
{
var_0E setmodel("vehicle_av8b_harrier_jet_opfor_mp");
}
var_0F = distance(var_0A,var_0B);
var_0E.angles = vectortoangles(var_0B - var_0A);
var_0E thread aasoundmanager(var_0F);
var_0E thread func_2ED7();
var_0F = distance(var_0A,var_0B);
var_0E moveto(var_0B * 2,var_0F / 2000,0,0);
wait var_0F / 3000;
var_0E delete();
}
//Function Number: 8
aasoundmanager(param_00)
{
self playloopsound("veh_aastrike_flyover_loop");
wait param_00 / 2 / 2000;
self stoploopsound();
self playloopsound("veh_aastrike_flyover_outgoing_loop");
}
//Function Number: 9
doflyby(param_00)
{
self endon("disconnect");
var_01 = randomint(level.spawnpoints.size - 1);
var_02 = level.spawnpoints[var_01].origin * (1,1,0);
var_03 = 20000;
var_04 = 20000;
var_05 = getent("airstrikeheight","targetname");
var_06 = (0,0,var_05.origin[2] + randomintrange(-100,600));
var_07 = anglestoforward((0,randomint(45),0));
var_08 = var_02 + var_06 + var_07 * var_03 * -1;
var_09 = var_02 + var_06 + var_07 * var_04;
var_0A = var_08 + (randomintrange(400,500),randomintrange(400,500),randomintrange(200,300));
var_0B = var_09 + (randomintrange(400,500),randomintrange(400,500),randomintrange(200,300));
if(param_00)
{
var_0C = spawnplane(self,"script_model",var_08,"hud_minimap_harrier_green","hud_minimap_harrier_red");
}
else
{
var_0C = spawnplane(self,"script_model",var_09);
}
var_0D = spawnplane(self,"script_model",var_0A);
if(self.team == "allies")
{
var_0C setmodel("vehicle_av8b_harrier_jet_mp");
var_0D setmodel("vehicle_av8b_harrier_jet_mp");
}
else
{
var_0C setmodel("vehicle_av8b_harrier_jet_opfor_mp");
var_0D setmodel("vehicle_av8b_harrier_jet_opfor_mp");
}
var_0C.angles = vectortoangles(var_09 - var_08);
var_0C playloopsound("veh_aastrike_flyover_loop");
var_0C thread func_2ED7();
var_0D.angles = vectortoangles(var_09 - var_0A);
var_0D thread func_2ED7();
var_0E = distance(var_08,var_09);
var_0C moveto(var_09 * 2,var_0E / 1800,0,0);
wait randomfloatrange(0.25,0.5);
var_0D moveto(var_0B * 2,var_0E / 1800,0,0);
wait var_0E / 1600;
var_0C delete();
var_0D delete();
}
//Function Number: 10
drawline(param_00,param_01,param_02,param_03)
{
var_04 = int(param_02 * 20);
for(var_05 = 0;var_05 < var_04;var_05++)
{
wait 0.05;
}
}
//Function Number: 11
func_2ED7()
{
self endon("death");
wait 0.5;
playfxontag(level.fx_airstrike_afterburner,self,"tag_engine_right");
wait 0.5;
playfxontag(level.fx_airstrike_afterburner,self,"tag_engine_left");
wait 0.5;
playfxontag(level.fx_airstrike_contrail,self,"tag_right_wingtip");
wait 0.5;
playfxontag(level.fx_airstrike_contrail,self,"tag_left_wingtip");
}

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

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,132 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\killstreaks\_autoshotgun.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 9
* Decompile Time: 120 ms
* Timestamp: 10/27/2023 2:26:45 AM
*******************************************************************/
//Function Number: 1
init()
{
level.killstreakfuncs["auto_shotgun"] = ::func_338E;
level.killstreaksetupfuncs["auto_shotgun"] = ::func_338D;
level.killstreakfuncs["thumper"] = ::tryusethumper;
level.killstreaksetupfuncs["thumper"] = ::thumpersetup;
thread onplayerconnect();
}
//Function Number: 2
func_338D()
{
self givemaxammo("aa12_mp");
thread saveweaponammoondeath("aa12_mp");
}
//Function Number: 3
func_338E(param_00)
{
thread func_3392("aa12_mp");
return 1;
}
//Function Number: 4
thumpersetup()
{
self givemaxammo("m79_mp");
thread saveweaponammoondeath("m79_mp");
}
//Function Number: 5
tryusethumper()
{
thread func_3392("m79_mp");
return 1;
}
//Function Number: 6
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread onplayerspawned();
}
}
//Function Number: 7
onplayerspawned()
{
self endon("disconnect");
for(;;)
{
self waittill("spawned_player");
if(!isdefined(self.pers["ksWeapon_clip_ammo"]) || !isdefined(self.pers["ksWeapon_name"]))
{
continue;
}
var_00 = self.pers["ksWeapon_name"];
if(isdefined(self.pers["killstreak"]) && maps\mp\killstreaks\_killstreaks::func_2C01(self.pers["killstreak"]) != var_00)
{
self.pers["ksWeapon_name"] = undefined;
self.pers["ksWeapon_clip_ammo"] = undefined;
self.pers["ksWeapon_stock_ammo"] = undefined;
continue;
}
maps\mp\killstreaks\_killstreaks::func_31F2(var_00);
self setweaponammostock(var_00,self.pers["ksWeapon_stock_ammo"]);
self setweaponammoclip(var_00,self.pers["ksWeapon_clip_ammo"]);
thread func_3392(var_00);
thread saveweaponammoondeath(var_00);
}
}
//Function Number: 8
saveweaponammoondeath(param_00)
{
self endon("disconnect");
self endon("got_killstreak");
self notify("saveWeaponAmmoOnDeath");
self endon("saveWeaponAmmoOnDeath");
self.pers["ksWeapon_name"] = undefined;
self.pers["ksWeapon_clip_ammo"] = undefined;
self.pers["ksWeapon_stock_ammo"] = undefined;
self waittill("death");
if(!self hasweapon(param_00))
{
return;
}
self.pers["ksWeapon_name"] = param_00;
self.pers["ksWeapon_clip_ammo"] = self getweaponammoclip(param_00);
self.pers["ksWeapon_stock_ammo"] = self getweaponammostock(param_00);
}
//Function Number: 9
func_3392(param_00)
{
self endon("disconnect");
self endon("death");
self notify(param_00 + "_ammo_monitor");
self endon(param_00 + "_ammo_monitor");
for(;;)
{
self waittill("end_firing");
if(self getcurrentweapon() != param_00)
{
continue;
}
var_01 = self getweaponammoclip(param_00) + self getweaponammostock(param_00);
if(var_01)
{
continue;
}
self takeweapon(param_00);
}
}

View File

@ -0,0 +1,757 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\killstreaks\_deployablebox.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 28
* Decompile Time: 385 ms
* Timestamp: 10/27/2023 2:26:46 AM
*******************************************************************/
//Function Number: 1
init()
{
level.killstreakfuncs["deployable_vest"] = ::tryusedeployablevest;
level.boxsettings = [];
level.boxsettings["deployable_vest"] = spawnstruct();
level.boxsettings["deployable_vest"].weaponinfo = "deployable_vest_marker_mp";
level.boxsettings["deployable_vest"].modelbase = "com_deploy_ballistic_vest_friend_world";
level.boxsettings["deployable_vest"].hintstring = &"MP_LIGHT_ARMOR_PICKUP";
level.boxsettings["deployable_vest"].capturingstring = &"MP_BOX_GETTING_VEST";
level.boxsettings["deployable_vest"].eventstring = &"MP_DEPLOYED_VEST";
level.boxsettings["deployable_vest"].streakname = "deployable_vest";
level.boxsettings["deployable_vest"].splashname = "used_deployable_vest";
level.boxsettings["deployable_vest"].shadername = "compass_objpoint_deploy_friendly";
level.boxsettings["deployable_vest"].lifespan = 60;
level.boxsettings["deployable_vest"].xp = 50;
level.boxsettings["deployable_vest"].vodestroyed = "ballistic_vest_destroyed";
foreach(var_01 in level.boxsettings)
{
precacheitem(var_01.weaponinfo);
precachemodel(var_01.modelbase);
precachestring(var_01.hintstring);
precachestring(var_01.capturingstring);
precachestring(var_01.eventstring);
precacheshader(var_01.shadername);
}
precachestring(&"PLATFORM_HOLD_TO_USE");
level._effect["box_explode_mp"] = loadfx("fire/ballistic_vest_death");
}
//Function Number: 2
tryusedeployablevest(param_00)
{
var_01 = func_311A(param_00,"deployable_vest");
if(!isdefined(var_01) || !var_01)
{
return 0;
}
maps\mp\_matchdata::logkillstreakevent("deployable_vest",self.origin);
return 1;
}
//Function Number: 3
func_311A(param_00,param_01)
{
self endon("death");
self.marker = undefined;
thread watchmarkerusage(param_00,param_01);
var_02 = self getcurrentweapon();
if(func_3120(var_02))
{
var_03 = var_02;
}
else
{
var_03 = undefined;
}
while(func_3120(var_02))
{
self waittill("weapon_change",var_02);
if(func_3120(var_02))
{
var_03 = var_02;
}
}
self notify("stopWatchingMarker");
if(!isdefined(var_03))
{
return 0;
}
return !self getammocount(var_03) && self hasweapon(var_03);
}
//Function Number: 4
watchmarkerusage(param_00,param_01)
{
self notify("watchMarkerUsage");
self endon("death");
self endon("disconnect");
self endon("watchMarkerUsage");
self endon("stopWatchingMarker");
thread watchmarker(param_00,param_01);
for(;;)
{
self waittill("grenade_pullback",var_02);
if(!func_3120(var_02))
{
continue;
}
common_scripts\utility::_disableusability();
func_311E();
}
}
//Function Number: 5
watchmarker(param_00,param_01)
{
self notify("watchMarker");
self endon("watchMarker");
self endon("spawned_player");
self endon("disconnect");
self endon("stopWatchingMarker");
for(;;)
{
self waittill("grenade_fire",var_02,var_03);
if(!func_3120(var_03))
{
continue;
}
if(!isalive(self))
{
var_02 delete();
return;
}
var_02.owner = self;
var_02.weaponname = var_03;
self.marker = var_02;
thread takeweapononstuck(var_02,var_03);
var_02 thread markeractivate(param_00,param_01,::func_3123);
}
}
//Function Number: 6
takeweapononstuck(param_00,param_01)
{
self endon("death");
self endon("disconnect");
level endon("game_ended");
param_00 playsoundtoplayer("mp_vest_deployed_ui",self);
if(self hasweapon(param_01))
{
self takeweapon(param_01);
self switchtoweapon(common_scripts\utility::getlastweapon());
}
}
//Function Number: 7
func_311E()
{
self notify("beginMarkerTracking");
self endon("beginMarkerTracking");
self endon("death");
self endon("disconnect");
common_scripts\utility::waittill_any("grenade_fire","weapon_change");
common_scripts\utility::_enableusability();
}
//Function Number: 8
markeractivate(param_00,param_01,param_02)
{
self notify("markerActivate");
self endon("markerActivate");
self waittill("missile_stuck");
var_03 = self.owner;
var_04 = self.origin;
if(!isdefined(var_03))
{
return;
}
var_05 = func_3121(param_01,var_04,var_03);
wait 0.05;
var_05 thread [[ param_02 ]]();
self delete();
}
//Function Number: 9
func_3120(param_00)
{
switch(param_00)
{
case "deployable_vest_marker_mp":
return 1;
default:
return 0;
}
}
//Function Number: 10
func_3121(param_00,param_01,param_02)
{
var_03 = spawn("script_model",param_01);
var_03 setmodel(level.boxsettings[param_00].modelbase);
var_03.health = 1000;
var_03.angles = param_02.angles;
var_03.boxtype = param_00;
var_03.owner = param_02;
var_03.team = param_02.team;
var_03 func_3127();
var_03 thread box_handleownerdisconnect();
return var_03;
}
//Function Number: 11
func_3123()
{
self setcursorhint("HINT_NOICON");
self sethintstring(level.boxsettings[self.boxtype].hintstring);
self.inuse = 0;
if(level.teambased)
{
var_00 = maps\mp\gametypes\_gameobjects::func_2A31();
objective_add(var_00,"invisible",(0,0,0));
objective_position(var_00,self.origin);
objective_state(var_00,"active");
objective_icon(var_00,level.boxsettings[self.boxtype].shadername);
objective_team(var_00,self.team);
self.objidfriendly = var_00;
foreach(var_02 in level.players)
{
if(self.team == var_02.team && !var_02 maps\mp\_utility::isjuggernaut())
{
maps\mp\_entityheadicons::func_277C(var_02,maps\mp\killstreaks\_killstreaks::getkillstreakcrateicon(level.boxsettings[self.boxtype].streakname),(0,0,20),14,14,undefined,undefined,undefined,undefined,undefined,0);
}
}
}
else
{
var_00 = maps\mp\gametypes\_gameobjects::func_2A31();
objective_add(var_00,"invisible",(0,0,0));
objective_position(var_00,self.origin);
objective_state(var_00,"active");
objective_icon(var_00,level.boxsettings[self.boxtype].shadername);
objective_player(var_00,self.owner getentitynumber());
self.objidfriendly = var_00;
if(!self.owner maps\mp\_utility::isjuggernaut())
{
maps\mp\_entityheadicons::func_277C(self.owner,maps\mp\killstreaks\_killstreaks::getkillstreakcrateicon(level.boxsettings[self.boxtype].streakname),(0,0,20),14,14,undefined,undefined,undefined,undefined,undefined,0);
}
}
self makeusable();
self.isusable = 1;
self setcandamage(1);
thread func_3128();
thread func_3129();
thread func_312F();
thread disablewhenjuggernaut();
foreach(var_02 in level.players)
{
if(level.teambased)
{
if(self.team == var_02.team)
{
if(var_02 maps\mp\_utility::isjuggernaut())
{
self disableplayeruse(var_02);
thread func_312C(var_02);
}
else
{
self enableplayeruse(var_02);
}
thread boxthink(var_02);
}
else
{
self disableplayeruse(var_02);
}
thread func_3126(var_02);
continue;
}
if(isdefined(self.owner) && self.owner == var_02)
{
if(var_02 maps\mp\_utility::isjuggernaut())
{
self disableplayeruse(var_02);
thread func_312C(var_02);
}
else
{
self enableplayeruse(var_02);
}
thread boxthink(var_02);
continue;
}
self disableplayeruse(var_02);
}
level thread maps\mp\_utility::teamplayercardsplash(level.boxsettings[self.boxtype].splashname,self.owner,self.team);
thread func_3125();
}
//Function Number: 12
func_3125()
{
self endon("death");
level waittill("connected",var_00);
var_00 waittill("spawned_player");
if(level.teambased)
{
if(self.team == var_00.team)
{
self enableplayeruse(var_00);
thread boxthink(var_00);
maps\mp\_entityheadicons::func_277C(var_00,maps\mp\killstreaks\_killstreaks::getkillstreakcrateicon(level.boxsettings[self.boxtype].streakname),(0,0,20),14,14,undefined,undefined,undefined,undefined,undefined,0);
return;
}
self disableplayeruse(var_00);
maps\mp\_entityheadicons::func_277C(var_00,"",(0,0,0));
}
}
//Function Number: 13
func_3126(param_00)
{
self endon("death");
param_00 endon("disconnect");
for(;;)
{
param_00 waittill("joined_team");
if(level.teambased)
{
if(self.team == param_00.team)
{
self enableplayeruse(param_00);
thread boxthink(param_00);
maps\mp\_entityheadicons::func_277C(param_00,maps\mp\killstreaks\_killstreaks::getkillstreakcrateicon(level.boxsettings[self.boxtype].streakname),(0,0,20),14,14,undefined,undefined,undefined,undefined,undefined,0);
continue;
}
self disableplayeruse(param_00);
maps\mp\_entityheadicons::func_277C(param_00,"",(0,0,0));
}
}
}
//Function Number: 14
func_3127()
{
self makeunusable();
self.isusable = 0;
maps\mp\_entityheadicons::func_277C("none","",(0,0,0));
if(isdefined(self.objidfriendly))
{
maps\mp\_utility::_objective_delete(self.objidfriendly);
}
}
//Function Number: 15
func_3128()
{
self.health = 999999;
self.maxhealth = 300;
self.damagetaken = 0;
for(;;)
{
self waittill("damage",var_00,var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09);
if(!maps\mp\gametypes\_weapons::func_27A1(self.owner,var_01))
{
continue;
}
if(isdefined(var_09))
{
switch(var_09)
{
case "concussion_grenade_mp":
case "flash_grenade_mp":
case "smoke_grenade_mp":
break;
}
}
if(!isdefined(self))
{
return;
}
if(var_04 == "MOD_MELEE")
{
self.damagetaken = self.damagetaken + self.maxhealth;
}
if(isdefined(var_08) && var_08 & level.idflags_penetration)
{
self.wasdamagedfrombulletpenetration = 1;
}
self.wasdamaged = 1;
var_0A = var_00;
if(isplayer(var_01))
{
var_01 maps\mp\gametypes\_damagefeedback::updatedamagefeedback("deployable_bag");
if(var_04 == "MOD_RIFLE_BULLET" || var_04 == "MOD_PISTOL_BULLET")
{
if(var_01 maps\mp\_utility::func_27AF("specialty_armorpiercing"))
{
var_0A = var_0A + var_00 * level.armorpiercingmod;
}
}
}
if(isdefined(var_01.owner) && isplayer(var_01.owner))
{
var_01.owner maps\mp\gametypes\_damagefeedback::updatedamagefeedback("deployable_bag");
}
if(isdefined(var_09))
{
switch(var_09)
{
case "remote_mortar_missile_mp":
case "javelin_mp":
case "stinger_mp":
case "remotemissile_projectile_mp":
case "ac130_40mm_mp":
case "ac130_105mm_mp":
self.largeprojectiledamage = 1;
var_0A = self.maxhealth + 1;
break;
case "stealth_bomb_mp":
case "artillery_mp":
self.largeprojectiledamage = 0;
var_0A = var_0A + var_00 * 4;
break;
case "bomb_site_mp":
self.largeprojectiledamage = 0;
var_0A = self.maxhealth + 1;
break;
}
maps\mp\killstreaks\_killstreaks::killstreakhit(var_01,var_09,self);
}
self.damagetaken = self.damagetaken + var_0A;
if(self.damagetaken >= self.maxhealth)
{
if(isplayer(var_01) && !isdefined(self.owner) || var_01 != self.owner)
{
var_01 thread maps\mp\gametypes\_rank::func_2AB3("kill",100,var_09,var_04);
var_01 notify("destroyed_killstreak");
}
if(isdefined(self.owner))
{
self.owner thread maps\mp\_utility::func_2A60(level.boxsettings[self.boxtype].vodestroyed);
}
self notify("death");
return;
}
}
}
//Function Number: 16
func_3129()
{
self waittill("death");
if(!isdefined(self))
{
return;
}
func_3127();
playfx(common_scripts\utility::func_539("box_explode_mp"),self.origin);
wait 0.5;
self notify("deleting");
self delete();
}
//Function Number: 17
box_handleownerdisconnect()
{
self endon("death");
level endon("game_ended");
self notify("box_handleOwner");
self endon("box_handleOwner");
self.owner common_scripts\utility::waittill_any("disconnect","joined_team","joined_spectators");
self notify("death");
}
//Function Number: 18
boxthink(param_00)
{
self endon("death");
thread boxcapturethink(param_00);
for(;;)
{
self waittill("captured",var_01);
if(var_01 != param_00)
{
continue;
}
switch(self.boxtype)
{
case "deployable_vest":
param_00 playlocalsound("ammo_crate_use");
param_00 [[ level.killstreakfuncs["light_armor"] ]]();
break;
}
if(isdefined(self.owner) && param_00 != self.owner)
{
self.owner thread maps\mp\gametypes\_rank::xpeventpopup(level.boxsettings[self.boxtype].eventstring);
self.owner thread maps\mp\gametypes\_rank::func_2AB3("support",level.boxsettings[self.boxtype].xp);
}
maps\mp\_entityheadicons::func_277C(param_00,"",(0,0,0));
self disableplayeruse(param_00);
thread func_312C(param_00);
}
}
//Function Number: 19
func_312C(param_00)
{
self endon("death");
param_00 endon("disconnect");
param_00 waittill("death");
if(level.teambased)
{
if(self.team == param_00.team)
{
maps\mp\_entityheadicons::func_277C(param_00,maps\mp\killstreaks\_killstreaks::getkillstreakcrateicon(level.boxsettings[self.boxtype].streakname),(0,0,20),14,14,undefined,undefined,undefined,undefined,undefined,0);
self enableplayeruse(param_00);
return;
}
return;
}
if(isdefined(self.owner) && self.owner == param_00)
{
maps\mp\_entityheadicons::func_277C(param_00,maps\mp\killstreaks\_killstreaks::getkillstreakcrateicon(level.boxsettings[self.boxtype].streakname),(0,0,20),14,14,undefined,undefined,undefined,undefined,undefined,0);
self enableplayeruse(param_00);
}
}
//Function Number: 20
boxcapturethink(param_00)
{
while(isdefined(self))
{
self waittill("trigger",var_01);
if(var_01 != param_00)
{
continue;
}
if(!func_2A04(param_00,2000))
{
continue;
}
self notify("captured",param_00);
}
}
//Function Number: 21
func_312E(param_00)
{
if(level.teambased && self.team == param_00.team)
{
return 1;
}
return 0;
}
//Function Number: 22
func_312F()
{
self endon("death");
level endon("game_ended");
var_00 = level.boxsettings[self.boxtype].lifespan;
while(var_00)
{
wait 1;
maps\mp\gametypes\_hostmigration::func_273E();
if(!isdefined(self.carriedby))
{
var_00 = max(0,var_00 - 1);
}
}
self notify("death");
}
//Function Number: 23
func_2E5C(param_00)
{
wait 0.25;
self linkto(param_00,"tag_origin",(0,0,0),(0,0,0));
param_00 waittill("death");
self delete();
}
//Function Number: 24
box_modelteamupdater(param_00)
{
self endon("death");
self hide();
foreach(var_02 in level.players)
{
if(var_02.team == param_00)
{
self showtoplayer(var_02);
}
}
for(;;)
{
level waittill("joined_team");
self hide();
foreach(var_02 in level.players)
{
if(var_02.team == param_00)
{
self showtoplayer(var_02);
}
}
}
}
//Function Number: 25
func_2A04(param_00,param_01)
{
param_00 playerlinkto(self);
param_00 playerlinkedoffsetenable();
param_00 common_scripts\utility::_disableweapon();
param_00.boxparams = spawnstruct();
param_00.boxparams.curprogress = 0;
param_00.boxparams.inuse = 1;
param_00.boxparams.userate = 0;
if(isdefined(param_01))
{
param_00.boxparams.usetime = param_01;
}
else
{
param_00.boxparams.usetime = 3000;
}
param_00 thread personalusebar(self);
var_02 = func_2A08(param_00);
if(isalive(param_00))
{
param_00 common_scripts\utility::_enableweapon();
param_00 unlink();
}
if(!isdefined(self))
{
return 0;
}
param_00.boxparams.inuse = 0;
param_00.boxparams.curprogress = 0;
return var_02;
}
//Function Number: 26
personalusebar(param_00)
{
self endon("disconnect");
var_01 = maps\mp\gametypes\_hud_util::createprimaryprogressbar(0,25);
var_02 = maps\mp\gametypes\_hud_util::createprimaryprogressbartext(0,25);
var_02 settext(level.boxsettings[param_00.boxtype].capturingstring);
var_03 = -1;
while(maps\mp\_utility::isreallyalive(self) && isdefined(param_00) && self.boxparams.inuse && param_00.isusable && !level.gameended)
{
if(var_03 != self.boxparams.userate)
{
if(self.boxparams.curprogress > self.boxparams.usetime)
{
self.boxparams.curprogress = self.boxparams.usetime;
}
var_01 maps\mp\gametypes\_hud_util::updatebar(self.boxparams.curprogress / self.boxparams.usetime,1000 / self.boxparams.usetime * self.boxparams.userate);
if(!self.boxparams.userate)
{
var_01 maps\mp\gametypes\_hud_util::hideelem();
var_02 maps\mp\gametypes\_hud_util::hideelem();
}
else
{
var_01 maps\mp\gametypes\_hud_util::func_26BD();
var_02 maps\mp\gametypes\_hud_util::func_26BD();
}
}
var_03 = self.boxparams.userate;
wait 0.05;
}
var_01 maps\mp\gametypes\_hud_util::destroyelem();
var_02 maps\mp\gametypes\_hud_util::destroyelem();
}
//Function Number: 27
func_2A08(param_00)
{
while(!level.gameended && isdefined(self) && maps\mp\_utility::isreallyalive(param_00) && param_00 usebuttonpressed() && param_00.boxparams.curprogress < param_00.boxparams.usetime)
{
param_00.boxparams.curprogress = param_00.boxparams.curprogress + 50 * param_00.boxparams.userate;
if(isdefined(param_00.objectivescaler))
{
param_00.boxparams.userate = 1 * param_00.objectivescaler;
}
else
{
param_00.boxparams.userate = 1;
}
if(param_00.boxparams.curprogress >= param_00.boxparams.usetime)
{
return maps\mp\_utility::isreallyalive(param_00);
}
wait 0.05;
}
return 0;
}
//Function Number: 28
disablewhenjuggernaut()
{
level endon("game_ended");
self endon("death");
for(;;)
{
level waittill("juggernaut_equipped",var_00);
maps\mp\_entityheadicons::func_277C(var_00,"",(0,0,0));
self disableplayeruse(var_00);
thread func_312C(var_00);
}
}

View File

@ -0,0 +1,558 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\killstreaks\_emp.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 21
* Decompile Time: 356 ms
* Timestamp: 10/27/2023 2:26:47 AM
*******************************************************************/
//Function Number: 1
init()
{
level._effect["emp_flash"] = loadfx("explosions/emp_flash_mp");
level.teamemped["allies"] = 0;
level.teamemped["axis"] = 0;
level.empplayer = undefined;
level.emptimeout = 60;
level.emptimeremaining = int(level.emptimeout);
if(level.teambased)
{
level thread func_30E6();
}
else
{
level thread func_30E7();
}
level.killstreakfuncs["emp"] = ::func_30E0;
level thread onplayerconnect();
}
//Function Number: 2
onplayerconnect()
{
for(;;)
{
level waittill("connected",var_00);
var_00 thread onplayerspawned();
}
}
//Function Number: 3
onplayerspawned()
{
self endon("disconnect");
for(;;)
{
self waittill("spawned_player");
if((level.teambased && level.teamemped[self.team]) || !level.teambased && isdefined(level.empplayer) && level.empplayer != self)
{
self setempjammed(1);
}
}
}
//Function Number: 4
func_30E0(param_00)
{
if(!maps\mp\_utility::func_2DF3())
{
return 0;
}
var_01 = self.pers["team"];
var_02 = level.otherteam[var_01];
if(level.teambased)
{
thread emp_jamteam(var_02);
}
else
{
thread emp_jamplayers(self);
}
maps\mp\_matchdata::logkillstreakevent("emp",self.origin);
self notify("used_emp");
return 1;
}
//Function Number: 5
emp_jamteam(param_00)
{
level endon("game_ended");
thread maps\mp\_utility::teamplayercardsplash("used_emp",self);
level notify("EMP_JamTeam" + param_00);
level endon("EMP_JamTeam" + param_00);
foreach(var_02 in level.players)
{
var_02 playlocalsound("emp_activate");
if(var_02.team != param_00)
{
continue;
}
if(var_02 maps\mp\_utility::func_27AF("specialty_localjammer"))
{
var_02 radarjamoff();
}
}
visionsetnaked("coup_sunblind",0.1);
thread func_30E4();
wait 0.1;
visionsetnaked("coup_sunblind",0);
if(isdefined(level.nukedetonated))
{
visionsetnaked(level.nukevisionset,3);
}
else
{
visionsetnaked("",3);
}
level.teamemped[param_00] = 1;
level notify("emp_update");
level func_30E8(self,param_00);
level thread func_80F9();
maps\mp\gametypes\_hostmigration::func_2740(level.emptimeout);
level.teamemped[param_00] = 0;
foreach(var_02 in level.players)
{
if(var_02.team != param_00)
{
continue;
}
if(var_02 maps\mp\_utility::func_27AF("specialty_localjammer"))
{
var_02 radarjamon();
}
}
level notify("emp_update");
}
//Function Number: 6
emp_jamplayers(param_00)
{
level notify("EMP_JamPlayers");
level endon("EMP_JamPlayers");
foreach(var_02 in level.players)
{
var_02 playlocalsound("emp_activate");
if(var_02 == param_00)
{
continue;
}
if(var_02 maps\mp\_utility::func_27AF("specialty_localjammer"))
{
var_02 radarjamoff();
}
}
visionsetnaked("coup_sunblind",0.1);
thread func_30E4();
wait 0.1;
visionsetnaked("coup_sunblind",0);
if(isdefined(level.nukedetonated))
{
visionsetnaked(level.nukevisionset,3);
}
else
{
visionsetnaked("",3);
}
level notify("emp_update");
level.empplayer = param_00;
level.empplayer thread func_30E3();
level func_30E8(param_00);
level notify("emp_update");
level thread func_80F9();
maps\mp\gametypes\_hostmigration::func_2740(level.emptimeout);
foreach(var_02 in level.players)
{
if(var_02 == param_00)
{
continue;
}
if(var_02 maps\mp\_utility::func_27AF("specialty_localjammer"))
{
var_02 radarjamon();
}
}
level.empplayer = undefined;
level notify("emp_update");
level notify("emp_ended");
}
//Function Number: 7
func_80F9()
{
level notify("keepEMPTimeRemaining");
level endon("keepEMPTimeRemaining");
level endon("emp_ended");
level.emptimeremaining = int(level.emptimeout);
while(level.emptimeremaining)
{
wait 1;
level.emptimeremaining--;
}
}
//Function Number: 8
func_30E3()
{
level endon("EMP_JamPlayers");
level endon("emp_ended");
self waittill("disconnect");
level notify("emp_update");
}
//Function Number: 9
func_30E4()
{
foreach(var_01 in level.players)
{
var_02 = anglestoforward(var_01.angles);
var_02 = (var_02[0],var_02[1],0);
var_02 = vectornormalize(var_02);
var_03 = 20000;
var_04 = spawn("script_model",var_01.origin + (0,0,8000) + var_02 * var_03);
var_04 setmodel("tag_origin");
var_04.angles = var_04.angles + (270,0,0);
var_04 thread empeffect(var_01);
}
}
//Function Number: 10
empeffect(param_00)
{
param_00 endon("disconnect");
wait 0.5;
playfxontagforclients(level._effect["emp_flash"],self,"tag_origin",param_00);
}
//Function Number: 11
func_30E6()
{
level endon("game_ended");
for(;;)
{
level common_scripts\utility::waittill_either("joined_team","emp_update");
foreach(var_01 in level.players)
{
if(var_01.team == "spectator")
{
continue;
}
if(!level.teamemped[var_01.team] && !var_01 maps\mp\_utility::func_27E5())
{
var_01 setempjammed(0);
continue;
}
var_01 setempjammed(1);
}
}
}
//Function Number: 12
func_30E7()
{
level endon("game_ended");
for(;;)
{
level common_scripts\utility::waittill_either("joined_team","emp_update");
foreach(var_01 in level.players)
{
if(var_01.team == "spectator")
{
continue;
}
if(isdefined(level.empplayer) && level.empplayer != var_01)
{
var_01 setempjammed(1);
continue;
}
if(!var_01 maps\mp\_utility::func_27E5())
{
var_01 setempjammed(0);
}
}
}
}
//Function Number: 13
func_30E8(param_00,param_01)
{
thread destroyactivehelis(param_00,param_01);
thread destroyactivelittlebirds(param_00,param_01);
thread destroyactiveturrets(param_00,param_01);
thread destroyactiverockets(param_00,param_01);
thread destroyactiveuavs(param_00,param_01);
thread destroyactiveimss(param_00,param_01);
thread destroyactiveugvs(param_00,param_01);
thread destroyactiveac130(param_00,param_01);
}
//Function Number: 14
destroyactivehelis(param_00,param_01)
{
var_02 = "MOD_EXPLOSIVE";
var_03 = "killstreak_emp_mp";
var_04 = 5000;
var_05 = (0,0,0);
var_06 = (0,0,0);
var_07 = "";
var_08 = "";
var_09 = "";
var_0A = undefined;
foreach(var_0C in level.helis)
{
if(level.teambased && isdefined(param_01))
{
if(isdefined(var_0C.team) && var_0C.team != param_01)
{
continue;
}
}
else if(isdefined(var_0C.owner) && var_0C.owner == param_00)
{
continue;
}
var_0C notify("damage",var_04,param_00,var_05,var_06,var_02,var_07,var_08,var_09,var_0A,var_03);
wait 0.05;
}
}
//Function Number: 15
destroyactivelittlebirds(param_00,param_01)
{
var_02 = "MOD_EXPLOSIVE";
var_03 = "killstreak_emp_mp";
var_04 = 5000;
var_05 = (0,0,0);
var_06 = (0,0,0);
var_07 = "";
var_08 = "";
var_09 = "";
var_0A = undefined;
foreach(var_0C in level.littlebirds)
{
if(level.teambased && isdefined(param_01))
{
if(isdefined(var_0C.team) && var_0C.team != param_01)
{
continue;
}
}
else if(isdefined(var_0C.owner) && var_0C.owner == param_00)
{
continue;
}
var_0C notify("damage",var_04,param_00,var_05,var_06,var_02,var_07,var_08,var_09,var_0A,var_03);
wait 0.05;
}
}
//Function Number: 16
destroyactiveturrets(param_00,param_01)
{
var_02 = "MOD_EXPLOSIVE";
var_03 = "killstreak_emp_mp";
var_04 = 5000;
var_05 = (0,0,0);
var_06 = (0,0,0);
var_07 = "";
var_08 = "";
var_09 = "";
var_0A = undefined;
foreach(var_0C in level.turrets)
{
if(level.teambased && isdefined(param_01))
{
if(isdefined(var_0C.team) && var_0C.team != param_01)
{
continue;
}
}
else if(isdefined(var_0C.owner) && var_0C.owner == param_00)
{
continue;
}
var_0C notify("damage",var_04,param_00,var_05,var_06,var_02,var_07,var_08,var_09,var_0A,var_03);
wait 0.05;
}
}
//Function Number: 17
destroyactiverockets(param_00,param_01)
{
var_02 = "MOD_EXPLOSIVE";
var_03 = "killstreak_emp_mp";
var_04 = 5000;
var_05 = (0,0,0);
var_06 = (0,0,0);
var_07 = "";
var_08 = "";
var_09 = "";
var_0A = undefined;
foreach(var_0C in level.rockets)
{
if(level.teambased && isdefined(param_01))
{
if(isdefined(var_0C.team) && var_0C.team != param_01)
{
continue;
}
}
else if(isdefined(var_0C.owner) && var_0C.owner == param_00)
{
continue;
}
playfx(level.remotemissile_fx["explode"],var_0C.origin);
var_0C delete();
wait 0.05;
}
}
//Function Number: 18
destroyactiveuavs(param_00,param_01)
{
var_02 = "MOD_EXPLOSIVE";
var_03 = "killstreak_emp_mp";
var_04 = 5000;
var_05 = (0,0,0);
var_06 = (0,0,0);
var_07 = "";
var_08 = "";
var_09 = "";
var_0A = undefined;
var_0B = level.uavmodels;
if(level.teambased && isdefined(param_01))
{
var_0B = level.uavmodels[param_01];
}
foreach(var_0D in var_0B)
{
if(level.teambased && isdefined(param_01))
{
}
else if(isdefined(var_0D.owner) && var_0D.owner == param_00)
{
continue;
}
var_0D notify("damage",var_04,param_00,var_05,var_06,var_02,var_07,var_08,var_09,var_0A,var_03);
wait 0.05;
}
}
//Function Number: 19
destroyactiveimss(param_00,param_01)
{
var_02 = "MOD_EXPLOSIVE";
var_03 = "killstreak_emp_mp";
var_04 = 5000;
var_05 = (0,0,0);
var_06 = (0,0,0);
var_07 = "";
var_08 = "";
var_09 = "";
var_0A = undefined;
foreach(var_0C in level.ims)
{
if(level.teambased && isdefined(param_01))
{
if(isdefined(var_0C.team) && var_0C.team != param_01)
{
continue;
}
}
else if(isdefined(var_0C.owner) && var_0C.owner == param_00)
{
continue;
}
var_0C notify("damage",var_04,param_00,var_05,var_06,var_02,var_07,var_08,var_09,var_0A,var_03);
wait 0.05;
}
}
//Function Number: 20
destroyactiveugvs(param_00,param_01)
{
var_02 = "MOD_EXPLOSIVE";
var_03 = "killstreak_emp_mp";
var_04 = 5000;
var_05 = (0,0,0);
var_06 = (0,0,0);
var_07 = "";
var_08 = "";
var_09 = "";
var_0A = undefined;
foreach(var_0C in level.ugvs)
{
if(level.teambased && isdefined(param_01))
{
if(isdefined(var_0C.team) && var_0C.team != param_01)
{
continue;
}
}
else if(isdefined(var_0C.owner) && var_0C.owner == param_00)
{
continue;
}
var_0C notify("damage",var_04,param_00,var_05,var_06,var_02,var_07,var_08,var_09,var_0A,var_03);
wait 0.05;
}
}
//Function Number: 21
destroyactiveac130(param_00,param_01)
{
var_02 = "MOD_EXPLOSIVE";
var_03 = "killstreak_emp_mp";
var_04 = 5000;
var_05 = (0,0,0);
var_06 = (0,0,0);
var_07 = "";
var_08 = "";
var_09 = "";
var_0A = undefined;
if(level.teambased && isdefined(param_01))
{
if(isdefined(level.ac130player) && isdefined(level.ac130player.team) && level.ac130player.team == param_01)
{
level.ac130.planemodel notify("damage",var_04,param_00,var_05,var_06,var_02,var_07,var_08,var_09,var_0A,var_03);
return;
}
return;
}
if(isdefined(level.ac130player))
{
if(!isdefined(level.ac130.owner) || isdefined(level.ac130.owner) && level.ac130.owner != param_00)
{
level.ac130.planemodel notify("damage",var_04,param_00,var_05,var_06,var_02,var_07,var_08,var_09,var_0A,var_03);
return;
}
}
}

View File

@ -0,0 +1,989 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\killstreaks\_escortairdrop.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 33
* Decompile Time: 480 ms
* Timestamp: 10/27/2023 2:26:49 AM
*******************************************************************/
//Function Number: 1
init()
{
level.ospreysettings = [];
level.ospreysettings["escort_airdrop"] = spawnstruct();
level.ospreysettings["escort_airdrop"].vehicle = "osprey_mp";
level.ospreysettings["escort_airdrop"].modelbase = "vehicle_v22_osprey_body_mp";
level.ospreysettings["escort_airdrop"].modelblades = "vehicle_v22_osprey_blades_mp";
level.ospreysettings["escort_airdrop"].taghatchl = "tag_le_door_attach";
level.ospreysettings["escort_airdrop"].taghatchr = "tag_ri_door_attach";
level.ospreysettings["escort_airdrop"].tagdropcrates = "tag_turret_attach";
level.ospreysettings["escort_airdrop"].prompt = &"MP_DEFEND_AIRDROP_PACKAGES";
level.ospreysettings["escort_airdrop"].name = &"KILLSTREAKS_ESCORT_AIRDROP";
level.ospreysettings["escort_airdrop"].weaponinfo = "osprey_minigun_mp";
level.ospreysettings["escort_airdrop"].helitype = "osprey";
level.ospreysettings["escort_airdrop"].droptype = "airdrop_escort";
level.ospreysettings["escort_airdrop"].maxhealth = level.heli_maxhealth * 2;
level.ospreysettings["escort_airdrop"].timeout = 60;
level.ospreysettings["osprey_gunner"] = spawnstruct();
level.ospreysettings["osprey_gunner"].vehicle = "osprey_player_mp";
level.ospreysettings["osprey_gunner"].modelbase = "vehicle_v22_osprey_body_mp";
level.ospreysettings["osprey_gunner"].modelblades = "vehicle_v22_osprey_blades_mp";
level.ospreysettings["osprey_gunner"].taghatchl = "tag_le_door_attach";
level.ospreysettings["osprey_gunner"].taghatchr = "tag_ri_door_attach";
level.ospreysettings["osprey_gunner"].tagdropcrates = "tag_turret_attach";
level.ospreysettings["osprey_gunner"].prompt = &"MP_DEFEND_AIRDROP_PACKAGES";
level.ospreysettings["osprey_gunner"].name = &"KILLSTREAKS_OSPREY_GUNNER";
level.ospreysettings["osprey_gunner"].weaponinfo = "osprey_player_minigun_mp";
level.ospreysettings["osprey_gunner"].helitype = "osprey_gunner";
level.ospreysettings["osprey_gunner"].droptype = "airdrop_osprey_gunner";
level.ospreysettings["osprey_gunner"].maxhealth = level.heli_maxhealth * 2;
level.ospreysettings["osprey_gunner"].timeout = 75;
foreach(var_01 in level.ospreysettings)
{
precachevehicle(var_01.vehicle);
precacheitem(var_01.weaponinfo);
precachemodel(var_01.modelbase);
precachemodel(var_01.modelblades);
precachestring(var_01.prompt);
precachestring(var_01.name);
level.chopper_fx["explode"]["death"][var_01.modelbase] = loadfx("explosions/helicopter_explosion_osprey");
level.chopper_fx["explode"]["air_death"][var_01.modelbase] = loadfx("explosions/helicopter_explosion_osprey_air_mp");
level.chopper_fx["anim"]["blades_anim_up"][var_01.modelbase] = loadfx("props/osprey_blades_anim_up");
level.chopper_fx["anim"]["blades_anim_down"][var_01.modelbase] = loadfx("props/osprey_blades_anim_down");
level.chopper_fx["anim"]["blades_static_up"][var_01.modelbase] = loadfx("props/osprey_blades_up");
level.chopper_fx["anim"]["blades_static_down"][var_01.modelbase] = loadfx("props/osprey_blades_default");
level.chopper_fx["anim"]["hatch_left_static_up"][var_01.modelbase] = loadfx("props/osprey_bottom_door_left_default");
level.chopper_fx["anim"]["hatch_left_anim_down"][var_01.modelbase] = loadfx("props/osprey_bottom_door_left_anim_open");
level.chopper_fx["anim"]["hatch_left_static_down"][var_01.modelbase] = loadfx("props/osprey_bottom_door_left_up");
level.chopper_fx["anim"]["hatch_left_anim_up"][var_01.modelbase] = loadfx("props/osprey_bottom_door_left_anim_close");
level.chopper_fx["anim"]["hatch_right_static_up"][var_01.modelbase] = loadfx("props/osprey_bottom_door_right_default");
level.chopper_fx["anim"]["hatch_right_anim_down"][var_01.modelbase] = loadfx("props/osprey_bottom_door_right_anim_open");
level.chopper_fx["anim"]["hatch_right_static_down"][var_01.modelbase] = loadfx("props/osprey_bottom_door_right_up");
level.chopper_fx["anim"]["hatch_right_anim_up"][var_01.modelbase] = loadfx("props/osprey_bottom_door_right_anim_close");
}
level.air_support_locs = [];
level.killstreakfuncs["escort_airdrop"] = ::tryuseescortairdrop;
level.killstreakfuncs["osprey_gunner"] = ::tryuseospreygunner;
}
//Function Number: 2
tryuseescortairdrop(param_00,param_01)
{
var_02 = 1;
if(isdefined(self.laststand) && !maps\mp\_utility::func_27AF("specialty_finalstand"))
{
self iprintlnbold(&"MP_UNAVILABLE_IN_LASTSTAND");
return 0;
}
else if(isdefined(level.civilianjetflyby))
{
self iprintlnbold(&"MP_CIVILIAN_AIR_TRAFFIC");
return 0;
}
else if(isdefined(level.chopper))
{
self iprintlnbold(&"MP_AIR_SPACE_TOO_CROWDED");
return 0;
}
else if(maps\mp\_utility::func_2BEC() >= maps\mp\_utility::maxvehiclesallowed() || level.fauxvehiclecount + var_02 >= maps\mp\_utility::maxvehiclesallowed())
{
self iprintlnbold(&"MP_TOO_MANY_VEHICLES");
return 0;
}
else if(maps\mp\_utility::isusingremote())
{
return 0;
}
if(maps\mp\_utility::func_2BE7())
{
return 0;
}
if(maps\mp\_utility::func_27E5())
{
return 0;
}
maps\mp\_utility::func_80C7();
var_04 = maps\mp\killstreaks\_airdrop::beginairdropviamarker(param_00,param_01,"escort_airdrop");
if(!isdefined(var_04) || !var_04)
{
self notify("markerDetermined");
maps\mp\_utility::func_80C8();
return 0;
}
maps\mp\_matchdata::logkillstreakevent("escort_airdrop",self.origin);
return 1;
}
//Function Number: 3
tryuseospreygunner(param_00,param_01)
{
var_02 = 1;
if(isdefined(self.laststand) && !maps\mp\_utility::func_27AF("specialty_finalstand"))
{
self iprintlnbold(&"MP_UNAVILABLE_IN_LASTSTAND");
return 0;
}
else if(isdefined(level.civilianjetflyby))
{
self iprintlnbold(&"MP_CIVILIAN_AIR_TRAFFIC");
return 0;
}
else if(isdefined(level.chopper))
{
self iprintlnbold(&"MP_AIR_SPACE_TOO_CROWDED");
return 0;
}
else if(maps\mp\_utility::func_2BEC() >= maps\mp\_utility::maxvehiclesallowed() || level.fauxvehiclecount + var_02 >= maps\mp\_utility::maxvehiclesallowed())
{
self iprintlnbold(&"MP_TOO_MANY_VEHICLES");
return 0;
}
else if(maps\mp\_utility::isusingremote())
{
return 0;
}
if(maps\mp\_utility::func_2BE7())
{
return 0;
}
if(maps\mp\_utility::func_27E5())
{
return 0;
}
maps\mp\_utility::func_80C7();
var_04 = func_2EAF(param_00,"osprey_gunner","compass_objpoint_osprey_friendly","compass_objpoint_osprey_enemy",&"MP_SELECT_MOBILE_MORTAR_LOCATION");
if(!isdefined(var_04) || !var_04)
{
maps\mp\_utility::func_80C8();
return 0;
}
maps\mp\_matchdata::logkillstreakevent("osprey_gunner",self.origin);
return 1;
}
//Function Number: 4
finishsupportescortusage(param_00,param_01,param_02,param_03)
{
self notify("used");
var_04 = (0,param_02,0);
var_05 = 12000;
var_06 = getent("airstrikeheight","targetname");
var_07 = var_06.origin[2];
var_08 = level.heli_start_nodes[randomint(level.heli_start_nodes.size)];
var_09 = var_08.origin;
var_0A = (param_01[0],param_01[1],var_07);
var_0B = param_01 + anglestoforward(var_04) * var_05;
var_0C = vectortoangles(var_0A - var_09);
var_0D = param_01;
param_01 = (param_01[0],param_01[1],var_07);
var_0E = func_2EB4(self,param_00,var_09,var_0C,param_01,param_03);
var_09 = var_08;
func_2EB7(param_00,var_0E,var_09,var_0A,var_0B,var_07,var_0D);
}
//Function Number: 5
func_2EAD(param_00,param_01,param_02,param_03)
{
self notify("used");
var_04 = (0,param_02,0);
var_05 = 12000;
var_06 = getent("airstrikeheight","targetname");
var_07 = var_06.origin[2];
var_08 = level.heli_start_nodes[randomint(level.heli_start_nodes.size)];
var_09 = var_08.origin;
var_0A = (param_01[0],param_01[1],var_07);
var_0B = param_01 + anglestoforward(var_04) * var_05;
var_0C = vectortoangles(var_0A - var_09);
param_01 = (param_01[0],param_01[1],var_07);
var_0D = func_2EB4(self,param_00,var_09,var_0C,param_01,param_03);
var_09 = var_08;
useospreygunner(param_00,var_0D,var_09,var_0A,var_0B,var_07);
}
//Function Number: 6
func_2EAE()
{
self waittill("stop_location_selection",var_00);
switch(var_00)
{
case "emp":
case "weapon_change":
case "disconnect":
case "cancel_location":
case "death":
self notify("customCancelLocation");
break;
}
}
//Function Number: 7
func_2EAF(param_00,param_01,param_02,param_03,param_04)
{
self endon("customCancelLocation");
var_05 = undefined;
var_06 = level.mapsize / 6.46875;
if(level.splitscreen)
{
var_06 = var_06 * 1.5;
}
maps\mp\_utility::_beginlocationselection(param_01,"map_artillery_selector",0,500);
thread func_2EAE();
self waittill("confirm_location",var_07,var_08);
maps\mp\_utility::func_2EB1(0);
maps\mp\_utility::setusingremote(param_01);
var_09 = maps\mp\killstreaks\_killstreaks::initridekillstreak(param_01);
if(var_09 != "success")
{
if(var_09 != "disconnect")
{
maps\mp\_utility::clearusingremote();
}
return 0;
}
if(isdefined(level.chopper))
{
maps\mp\_utility::clearusingremote();
self iprintlnbold(&"MP_AIR_SPACE_TOO_CROWDED");
return 0;
}
else if(maps\mp\_utility::func_2BEC() >= maps\mp\_utility::maxvehiclesallowed() || level.fauxvehiclecount >= maps\mp\_utility::maxvehiclesallowed())
{
maps\mp\_utility::clearusingremote();
self iprintlnbold(&"MP_TOO_MANY_VEHICLES");
return 0;
}
thread func_2EAD(param_00,var_07,var_08,param_01);
return 1;
}
//Function Number: 8
func_2EB2(param_00,param_01,param_02,param_03)
{
var_04 = maps\mp\gametypes\_hud_util::createfontstring("bigfixed",0.5);
var_04 maps\mp\gametypes\_hud_util::setpoint("CENTER","CENTER",0,-150);
var_04 settext(param_02);
self.locationobjectives = [];
for(var_05 = 0;var_05 < param_03;var_05++)
{
self.locationobjectives[var_05] = maps\mp\gametypes\_gameobjects::func_2A31();
objective_add(self.locationobjectives[var_05],"invisible",(0,0,0));
objective_position(self.locationobjectives[var_05],level.air_support_locs[level.script][var_05]["origin"]);
objective_state(self.locationobjectives[var_05],"active");
objective_player(self.locationobjectives[var_05],self getentitynumber());
if(level.air_support_locs[level.script][var_05]["in_use"] == 1)
{
objective_icon(self.locationobjectives[var_05],param_01);
continue;
}
objective_icon(self.locationobjectives[var_05],param_00);
}
common_scripts\utility::waittill_any("cancel_location","picked_location","stop_location_selection");
var_04 maps\mp\gametypes\_hud_util::destroyelem();
for(var_05 = 0;var_05 < param_03;var_05++)
{
maps\mp\_utility::_objective_delete(self.locationobjectives[var_05]);
}
}
//Function Number: 9
func_2EB4(param_00,param_01,param_02,param_03,param_04,param_05)
{
var_06 = spawnhelicopter(param_00,param_02,param_03,level.ospreysettings[param_05].vehicle,level.ospreysettings[param_05].modelbase);
if(!isdefined(var_06))
{
return undefined;
}
var_06.ospreytype = param_05;
var_06.heli_type = level.ospreysettings[param_05].modelbase;
var_06.helitype = level.ospreysettings[param_05].helitype;
var_06.attractor = missile_createattractorent(var_06,level.heli_attract_strength,level.heli_attract_range);
var_06.lifeid = param_01;
var_06.team = param_00.pers["team"];
var_06.pers["team"] = param_00.pers["team"];
var_06.owner = param_00;
var_06.maxhealth = level.ospreysettings[param_05].maxhealth;
var_06.zoffset = (0,0,0);
var_06.targeting_delay = level.heli_targeting_delay;
var_06.primarytarget = undefined;
var_06.secondarytarget = undefined;
var_06.attacker = undefined;
var_06.currentstate = "ok";
var_06.droptype = level.ospreysettings[param_05].droptype;
level.chopper = var_06;
var_06 maps\mp\killstreaks\_helicopter::func_2C47();
var_06 thread maps\mp\killstreaks\_helicopter::heli_flares_monitor();
var_06 thread maps\mp\killstreaks\_helicopter::heli_leave_on_disconnect(param_00);
var_06 thread maps\mp\killstreaks\_helicopter::func_2C2B(param_00);
var_06 thread maps\mp\killstreaks\_helicopter::heli_leave_on_gameended(param_00);
var_07 = level.ospreysettings[param_05].timeout;
var_06 thread maps\mp\killstreaks\_helicopter::func_2C2E(var_07);
var_06 thread maps\mp\killstreaks\_helicopter::func_2447();
var_06 thread maps\mp\killstreaks\_helicopter::func_2C22();
var_06 thread maps\mp\killstreaks\_helicopter::func_2C14();
var_06 thread func_2EB6();
var_06 thread airshipfxonconnect();
if(param_05 == "escort_airdrop")
{
var_08 = var_06.origin + anglestoforward(var_06.angles) * -200 + anglestoright(var_06.angles) * -200 + (0,0,200);
var_06.killcament = spawn("script_model",var_08);
var_06.killcament setscriptmoverkillcam("explosive");
var_06.killcament linkto(var_06,"tag_origin");
}
return var_06;
}
//Function Number: 10
func_2EB6()
{
self endon("death");
wait 0.05;
playfxontag(level.chopper_fx["light"]["tail"],self,"tag_light_tail");
wait 0.05;
playfxontag(level.chopper_fx["light"]["belly"],self,"tag_light_belly");
wait 0.05;
playfxontag(level.chopper_fx["anim"]["blades_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,"TAG_BLADES_ATTACH");
wait 0.05;
playfxontag(level.chopper_fx["anim"]["hatch_left_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchl);
wait 0.05;
playfxontag(level.chopper_fx["anim"]["hatch_right_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchr);
}
//Function Number: 11
airshipfxonconnect()
{
self endon("death");
level endon("game_ended");
for(;;)
{
level waittill("connected",var_00);
thread airshipfxonclient(var_00);
}
}
//Function Number: 12
airshipfxonclient(param_00)
{
self endon("death");
level endon("game_ended");
param_00 endon("disconnect");
wait 0.05;
playfxontagforclients(level.chopper_fx["light"]["tail"],self,"tag_light_tail",param_00);
wait 0.05;
playfxontagforclients(level.chopper_fx["light"]["belly"],self,"tag_light_belly",param_00);
if(isdefined(self.propsstate))
{
if(self.propsstate == "up")
{
wait 0.05;
playfxontagforclients(level.chopper_fx["anim"]["blades_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,"TAG_BLADES_ATTACH",param_00);
}
else
{
wait 0.05;
playfxontagforclients(level.chopper_fx["anim"]["blades_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,"TAG_BLADES_ATTACH",param_00);
}
}
else
{
wait 0.05;
playfxontagforclients(level.chopper_fx["anim"]["blades_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,"TAG_BLADES_ATTACH",param_00);
}
if(isdefined(self.hatchstate))
{
if(self.hatchstate == "down")
{
wait 0.05;
playfxontagforclients(level.chopper_fx["anim"]["hatch_left_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchl,param_00);
wait 0.05;
playfxontagforclients(level.chopper_fx["anim"]["hatch_right_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchr,param_00);
return;
}
wait 0.05;
playfxontagforclients(level.chopper_fx["anim"]["hatch_left_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchl,param_00);
wait 0.05;
playfxontagforclients(level.chopper_fx["anim"]["hatch_right_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchr,param_00);
return;
}
wait 0.05;
playfxontagforclients(level.chopper_fx["anim"]["hatch_left_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchl,param_00);
wait 0.05;
playfxontagforclients(level.chopper_fx["anim"]["hatch_right_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchr,param_00);
}
//Function Number: 13
func_2EB7(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
{
param_01 thread airshipflydefense(self,param_02,param_03,param_04,param_05,param_06);
}
//Function Number: 14
useospreygunner(param_00,param_01,param_02,param_03,param_04,param_05)
{
thread ridegunner(param_00,param_01);
param_01 thread func_2EC8(self,param_02,param_03,param_04,param_05);
}
//Function Number: 15
ridegunner(param_00,param_01)
{
self endon("disconnect");
param_01 endon("helicopter_done");
thread maps\mp\_utility::teamplayercardsplash("used_osprey_gunner",self);
maps\mp\_utility::_giveweapon("heli_remote_mp");
self switchtoweapon("heli_remote_mp");
if(getdvarint("camera_thirdPerson"))
{
maps\mp\_utility::setthirdpersondof(0);
}
param_01 vehicleturretcontrolon(self);
self playerlinkweaponviewtodelta(param_01,"tag_player",1,0,0,0,0,1);
self setplayerangles(param_01 gettagangles("tag_player"));
param_01 thread maps\mp\killstreaks\_helicopter::func_2C17();
thread maps\mp\killstreaks\_helicopter::func_2BFD(param_01);
param_01.gunner = self;
self.heliridelifeid = param_00;
thread func_2ECB(param_01);
thread waitsetthermal(1,param_01);
thread maps\mp\_utility::reinitializethermal(param_01);
for(;;)
{
param_01 waittill("turret_fire");
param_01 fireweapon();
earthquake(0.2,1,param_01.origin,1000);
}
}
//Function Number: 16
waitsetthermal(param_00,param_01)
{
self endon("disconnect");
param_01 endon("death");
param_01 endon("helicopter_done");
param_01 endon("crashing");
param_01 endon("leaving");
wait param_00;
self visionsetthermalforplayer(level.ac130.enhanced_vision,0);
self.lastvisionsetthermal = level.ac130.enhanced_vision;
self thermalvisionon();
self thermalvisionfofoverlayon();
thread maps\mp\killstreaks\_helicopter::thermalvision(param_01);
}
//Function Number: 17
func_2EBB(param_00)
{
self endon("disconnect");
param_00 endon("helicopter_done");
self.escort_prompt = maps\mp\gametypes\_hud_util::createfontstring("bigfixed",1.5);
self.escort_prompt maps\mp\gametypes\_hud_util::setpoint("CENTER","CENTER",0,-150);
self.escort_prompt settext(level.ospreysettings[param_00.ospreytype].prompt);
wait 6;
if(isdefined(self.escort_prompt))
{
self.escort_prompt maps\mp\gametypes\_hud_util::destroyelem();
}
}
//Function Number: 18
airshippitchpropsup()
{
self endon("crashing");
self endon("death");
stopfxontag(level.chopper_fx["anim"]["blades_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,"TAG_BLADES_ATTACH");
playfxontag(level.chopper_fx["anim"]["blades_anim_up"][level.ospreysettings[self.ospreytype].modelbase],self,"TAG_BLADES_ATTACH");
wait 1;
if(isdefined(self))
{
playfxontag(level.chopper_fx["anim"]["blades_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,"TAG_BLADES_ATTACH");
self.propsstate = "up";
}
}
//Function Number: 19
func_2EBE()
{
self endon("crashing");
self endon("death");
stopfxontag(level.chopper_fx["anim"]["blades_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,"TAG_BLADES_ATTACH");
playfxontag(level.chopper_fx["anim"]["blades_anim_down"][level.ospreysettings[self.ospreytype].modelbase],self,"TAG_BLADES_ATTACH");
wait 1;
if(isdefined(self))
{
playfxontag(level.chopper_fx["anim"]["blades_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,"TAG_BLADES_ATTACH");
self.propsstate = "down";
}
}
//Function Number: 20
airshippitchhatchup()
{
self endon("crashing");
self endon("death");
stopfxontag(level.chopper_fx["anim"]["hatch_left_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchl);
playfxontag(level.chopper_fx["anim"]["hatch_left_anim_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchl);
stopfxontag(level.chopper_fx["anim"]["hatch_right_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchr);
playfxontag(level.chopper_fx["anim"]["hatch_right_anim_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchr);
wait 1;
if(isdefined(self))
{
playfxontag(level.chopper_fx["anim"]["hatch_left_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchl);
playfxontag(level.chopper_fx["anim"]["hatch_right_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchr);
self.hatchstate = "up";
}
}
//Function Number: 21
airshippitchhatchdown()
{
self endon("crashing");
self endon("death");
stopfxontag(level.chopper_fx["anim"]["hatch_left_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchl);
playfxontag(level.chopper_fx["anim"]["hatch_left_anim_down"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchl);
stopfxontag(level.chopper_fx["anim"]["hatch_right_static_up"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchr);
playfxontag(level.chopper_fx["anim"]["hatch_right_anim_down"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchr);
wait 1;
if(isdefined(self))
{
playfxontag(level.chopper_fx["anim"]["hatch_left_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchl);
playfxontag(level.chopper_fx["anim"]["hatch_right_static_down"][level.ospreysettings[self.ospreytype].modelbase],self,level.ospreysettings[self.ospreytype].taghatchr);
self.hatchstate = "down";
}
self notify("hatch_down");
}
//Function Number: 22
getbestheight(param_00)
{
self endon("helicopter_removed");
self endon("heightReturned");
var_01 = getent("airstrikeheight","targetname");
if(isdefined(var_01))
{
var_02 = var_01.origin[2];
}
else if(isdefined(level.airstrikeheightscale))
{
var_02 = 850 * level.airstrikeheightscale;
}
else
{
var_02 = 850;
}
self.bestheight = var_02;
var_03 = 200;
var_04 = 0;
var_05 = 0;
for(var_06 = 0;var_06 < 125;var_06++)
{
wait 0.05;
var_07 = var_06 % 8;
var_08 = var_06 * 3;
switch(var_07)
{
case 0:
var_04 = var_08;
var_05 = var_08;
break;
case 1:
var_04 = var_08 * -1;
var_05 = var_08 * -1;
break;
case 2:
var_04 = var_08 * -1;
var_05 = var_08;
break;
case 3:
var_04 = var_08;
var_05 = var_08 * -1;
break;
case 4:
var_04 = 0;
var_05 = var_08 * -1;
break;
case 5:
var_04 = var_08 * -1;
var_05 = 0;
break;
case 6:
var_04 = var_08;
var_05 = 0;
break;
case 7:
var_04 = 0;
var_05 = var_08;
break;
default:
break;
}
var_09 = bullettrace(param_00 + (var_04,var_05,1000),param_00 + (var_04,var_05,-10000),1,self);
if(var_09["position"][2] > var_03)
{
var_03 = var_09["position"][2];
}
}
self.bestheight = var_03 + 300;
switch(getdvar("mapname"))
{
case "mp_morningwood":
self.bestheight = self.bestheight + 600;
break;
case "mp_overwatch":
var_0A = level.spawnpoints;
var_0B = var_0A[0];
var_0C = var_0A[0];
foreach(var_0E in var_0A)
{
if(var_0E.origin[2] < var_0B.origin[2])
{
var_0B = var_0E;
}
if(var_0E.origin[2] > var_0C.origin[2])
{
var_0C = var_0E;
}
}
if(var_03 < var_0B.origin[2] - 100)
{
self.bestheight = var_0C.origin[2] + 900;
}
break;
}
}
//Function Number: 23
airshipflydefense(param_00,param_01,param_02,param_03,param_04,param_05)
{
self notify("airshipFlyDefense");
self endon("airshipFlyDefense");
self endon("helicopter_removed");
self endon("death");
self endon("leaving");
thread getbestheight(param_02);
maps\mp\killstreaks\_helicopter::heli_fly_simple_path(param_01);
self.pathgoal = param_02;
var_06 = self.angles;
self setyawspeed(30,30,30,0.3);
var_07 = self.origin;
var_08 = self.angles[1];
var_09 = self.angles[0];
self.timeout = level.ospreysettings[self.ospreytype].timeout;
self setvehgoalpos(param_02,1);
var_0A = gettime();
self waittill("goal");
var_0B = gettime() - var_0A * 0.001;
self.timeout = self.timeout - var_0B;
thread airshippitchpropsup();
var_0C = param_02 * (1,1,0);
var_0C = var_0C + (0,0,self.bestheight);
self vehicle_setspeed(25,10,10);
self setyawspeed(20,10,10,0.3);
self setvehgoalpos(var_0C,1);
var_0A = gettime();
self waittill("goal");
var_0B = gettime() - var_0A * 0.001;
self.timeout = self.timeout - var_0B;
self sethoverparams(65,50,50);
ospreydropcrateslowimpulse(1,level.ospreysettings[self.ospreytype].tagdropcrates,var_0C);
thread func_2EC4(param_05);
self waittill("leaving");
self notify("osprey_leaving");
thread func_2EBE();
}
//Function Number: 24
func_2C43(param_00)
{
self endon("death");
level endon("game_ended");
wait param_00;
self delete();
}
//Function Number: 25
func_2EC4(param_00)
{
self endon("osprey_leaving");
self endon("helicopter_removed");
self endon("death");
var_01 = param_00;
for(;;)
{
foreach(var_03 in level.players)
{
wait 0.05;
if(!isdefined(self))
{
return;
}
if(!isdefined(var_03))
{
continue;
}
if(!maps\mp\_utility::isreallyalive(var_03))
{
continue;
}
if(level.teambased && var_03.team == self.team)
{
continue;
}
if(isdefined(self.owner) && var_03 == self.owner)
{
continue;
}
if(var_03 maps\mp\_utility::func_27AF("specialty_blindeye"))
{
continue;
}
if(distancesquared(var_01,var_03.origin) > 500000)
{
continue;
}
thread aishootplayer(var_03,var_01);
func_2EC7();
}
}
}
//Function Number: 26
aishootplayer(param_00,param_01)
{
self notify("aiShootPlayer");
self endon("aiShootPlayer");
self endon("helicopter_removed");
self endon("leaving");
param_00 endon("death");
self setturrettargetent(param_00);
self setlookatent(param_00);
thread targetdeathwaiter(param_00);
var_02 = 6;
var_03 = 2;
for(;;)
{
var_02--;
self fireweapon("tag_flash",param_00);
wait 0.15;
if(var_02 <= 0)
{
var_03--;
var_02 = 6;
if(distancesquared(param_00.origin,param_01) > 500000 || var_03 <= 0 || !maps\mp\_utility::isreallyalive(param_00))
{
self notify("abandon_target");
return;
}
wait 1;
}
}
}
//Function Number: 27
targetdeathwaiter(param_00)
{
self endon("abandon_target");
self endon("leaving");
self endon("helicopter_removed");
param_00 waittill("death");
self notify("target_killed");
}
//Function Number: 28
func_2EC7()
{
self endon("helicopter_removed");
self endon("leaving");
self endon("target_killed");
self endon("abandon_target");
wait 0.05;
}
//Function Number: 29
func_2EC8(param_00,param_01,param_02,param_03,param_04)
{
self notify("airshipFlyGunner");
self endon("airshipFlyGunner");
self endon("helicopter_removed");
self endon("death");
self endon("leaving");
thread getbestheight(param_02);
maps\mp\killstreaks\_helicopter::heli_fly_simple_path(param_01);
thread maps\mp\killstreaks\_helicopter::func_2C2E(level.ospreysettings[self.ospreytype].timeout);
var_05 = self.angles;
self setyawspeed(30,30,30,0.3);
var_06 = self.origin;
var_07 = self.angles[1];
var_08 = self.angles[0];
self.timeout = level.ospreysettings[self.ospreytype].timeout;
self setvehgoalpos(param_02,1);
var_09 = gettime();
self waittill("goal");
var_0A = gettime() - var_09 * 0.001;
self.timeout = self.timeout - var_0A;
thread airshippitchpropsup();
var_0B = param_02 * (1,1,0);
var_0B = var_0B + (0,0,self.bestheight);
self vehicle_setspeed(25,10,10);
self setyawspeed(20,10,10,0.3);
self setvehgoalpos(var_0B,1);
var_09 = gettime();
self waittill("goal");
var_0A = gettime() - var_09 * 0.001;
self.timeout = self.timeout - var_0A;
func_2ECA(1,level.ospreysettings[self.ospreytype].tagdropcrates,var_0B);
var_0C = 1;
if(isdefined(param_00))
{
param_00 common_scripts\utility::waittill_any_timeout(var_0C,"disconnect");
}
self.timeout = self.timeout - var_0C;
self setvehgoalpos(param_02,1);
var_09 = gettime();
self waittill("goal");
var_0A = gettime() - var_09 * 0.001;
self.timeout = self.timeout - var_0A;
var_0D = getentarray("heli_attack_area","targetname");
var_0E = level.heli_loop_nodes[randomint(level.heli_loop_nodes.size)];
if(var_0D.size)
{
thread maps\mp\killstreaks\_helicopter::func_2C3F(var_0D);
}
else
{
thread maps\mp\killstreaks\_helicopter::func_2C3A(var_0E);
}
self waittill("leaving");
thread func_2EBE();
}
//Function Number: 30
ospreydropcrateslowimpulse(param_00,param_01,param_02)
{
thread airshippitchhatchdown();
self waittill("hatch_down");
var_03[0] = thread maps\mp\killstreaks\_airdrop::dropthecrate(undefined,self.droptype,undefined,0,undefined,self.origin,(randomint(10),randomint(10),randomint(10)),undefined,param_01);
wait 0.05;
self notify("drop_crate");
wait param_00;
wait 0.05;
self notify("drop_crate",var_41[1],thread maps\mp\killstreaks\_airdrop::dropthecrate(undefined,self.droptype,undefined,0,undefined,self.origin,(randomint(100),randomint(100),randomint(100)),var_03,param_01));
wait param_01;
wait 0.05;
self notify("drop_crate",var_41[2],thread maps\mp\killstreaks\_airdrop::dropthecrate(undefined,self.droptype,undefined,0,undefined,self.origin,(randomint(50),randomint(50),randomint(50)),var_41,param_02));
wait param_01;
wait 0.05;
self notify("drop_crate",var_41[3],thread maps\mp\killstreaks\_airdrop::dropthecrate(undefined,self.droptype,undefined,0,undefined,self.origin,(randomintrange(-100,0),randomintrange(-100,0),randomintrange(-100,0)),var_41,param_02));
wait param_01;
thread maps\mp\killstreaks\_airdrop::dropthecrate(undefined,self.droptype,undefined,0,undefined,self.origin,(randomintrange(-50,0),randomintrange(-50,0),randomintrange(-50,0)),var_41,param_02);
wait 0.05;
self notify("drop_crate");
wait 1;
thread airshippitchhatchup();
}
//Function Number: 31
func_2ECA(param_00,param_01,param_02)
{
thread airshippitchhatchdown();
self waittill("hatch_down");
var_03[0] = thread maps\mp\killstreaks\_airdrop::dropthecrate(undefined,self.droptype,undefined,0,undefined,self.origin,(randomint(10),randomint(10),randomint(10)),undefined,param_01);
wait 0.05;
self.timeout = self.timeout - 0.05;
self notify("drop_crate");
wait param_00;
self.timeout = self.timeout - param_00;
wait 0.05;
self.timeout = self.timeout - 0.05;
self notify("drop_crate",var_41[1],thread maps\mp\killstreaks\_airdrop::dropthecrate(undefined,self.droptype,undefined,0,undefined,self.origin,(randomint(100),randomint(100),randomint(100)),var_03,param_01));
wait param_01;
self.timeout = self.timeout - param_01;
wait 0.05;
self.timeout = self.timeout - 0.05;
self notify("drop_crate",var_41[2],thread maps\mp\killstreaks\_airdrop::dropthecrate(undefined,self.droptype,undefined,0,undefined,self.origin,(randomint(50),randomint(50),randomint(50)),var_41,param_02));
wait 1;
thread airshippitchhatchup();
}
//Function Number: 32
func_2C00(param_00)
{
if(isdefined(self.escort_prompt))
{
self.escort_prompt maps\mp\gametypes\_hud_util::destroyelem();
}
self remotecamerasoundscapeoff();
self thermalvisionoff();
self thermalvisionfofoverlayoff();
self unlink();
maps\mp\_utility::clearusingremote();
if(getdvarint("camera_thirdPerson"))
{
maps\mp\_utility::setthirdpersondof(1);
}
self visionsetthermalforplayer(game["thermal_vision"],0);
if(isdefined(param_00))
{
param_00 vehicleturretcontroloff(self);
}
self notify("heliPlayer_removed");
self switchtoweapon(common_scripts\utility::getlastweapon());
self takeweapon("heli_remote_mp");
}
//Function Number: 33
func_2ECB(param_00)
{
self endon("disconnect");
param_00 waittill("helicopter_done");
func_2C00(param_00);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,511 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\killstreaks\_helicopter_flock.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 23
* Decompile Time: 418 ms
* Timestamp: 10/27/2023 2:26:58 AM
*******************************************************************/
//Function Number: 1
init()
{
precachevehicle("attack_littlebird_mp");
precachemodel("vehicle_apache_mp");
precachemodel("vehicle_apache_mg");
precacheturret("apache_minigun_mp");
precachevehicle("apache_strafe_mp");
level.killstreakfuncs["littlebird_flock"] = ::tryuselbflock;
level.heli_flock = [];
}
//Function Number: 2
tryuselbflock(param_00,param_01)
{
if(!maps\mp\_utility::func_2DF3())
{
return 0;
}
var_02 = 5;
if(heliflockactive() || maps\mp\_utility::func_2BEC() >= maps\mp\_utility::maxvehiclesallowed() || level.fauxvehiclecount + var_02 >= maps\mp\_utility::maxvehiclesallowed())
{
self iprintlnbold(&"MP_TOO_MANY_VEHICLES");
return 0;
}
maps\mp\_utility::func_80C7();
maps\mp\_utility::func_80C7();
maps\mp\_utility::func_80C7();
maps\mp\_utility::func_80C7();
maps\mp\_utility::func_80C7();
var_03 = selectlbstrikelocation(param_00,"littlebird_flock");
if(!isdefined(var_03) || !var_03)
{
maps\mp\_utility::func_80C8();
maps\mp\_utility::func_80C8();
maps\mp\_utility::func_80C8();
maps\mp\_utility::func_80C8();
maps\mp\_utility::func_80C8();
return 0;
}
level thread maps\mp\_utility::teamplayercardsplash("used_littlebird_flock",self,self.team);
return 1;
}
//Function Number: 3
heliflockactive()
{
var_00 = 0;
for(var_01 = 0;var_01 < level.heli_flock.size;var_01++)
{
if(isdefined(level.heli_flock[var_01]))
{
var_00 = 1;
break;
}
}
return var_00;
}
//Function Number: 4
selectlbstrikelocation(param_00,param_01)
{
self playlocalsound(game["voice"][self.team] + "KS_lbd_inposition");
maps\mp\_utility::_beginlocationselection(param_01,"map_artillery_selector",1,500);
self endon("stop_location_selection");
self waittill("confirm_location",var_02,var_03);
if(heliflockactive() || maps\mp\_utility::func_2BEC() >= maps\mp\_utility::maxvehiclesallowed() || level.fauxvehiclecount >= maps\mp\_utility::maxvehiclesallowed())
{
self iprintlnbold(&"MP_TOO_MANY_VEHICLES");
self notify("cancel_location");
return 0;
}
level.heli_flock = [];
level.heli_flock_victims = [];
thread func_30A6();
thread finishlbstrikeusage(param_00,var_02,::callstrike,var_03);
self setblurforplayer(0,0.3);
return 1;
}
//Function Number: 5
func_30A6()
{
self endon("death");
self endon("disconnect");
self playlocalsound(game["voice"][self.team] + "KS_hqr_littlebird");
wait 3;
self playlocalsound(game["voice"][self.team] + "KS_lbd_inbound");
}
//Function Number: 6
finishlbstrikeusage(param_00,param_01,param_02,param_03)
{
self notify("used");
wait 0.05;
thread maps\mp\_utility::func_2EB1(0);
if(isdefined(self))
{
self thread [[ param_02 ]](param_00,param_01,param_03);
}
}
//Function Number: 7
callstrike(param_00,param_01,param_02)
{
level endon("game_ended");
self endon("disconnect");
thread handleownerleft();
var_03 = getflightpath(param_01,param_02,0);
var_04 = getflightpath(param_01,param_02,-520);
var_05 = getflightpath(param_01,param_02,520);
var_06 = getflightpath(param_01,param_02,-1040);
var_07 = getflightpath(param_01,param_02,1040);
level thread func_30AA(param_00,self,var_03,0);
wait 0.3;
level thread func_30AA(param_00,self,var_04,1);
level thread func_30AA(param_00,self,var_05,2);
wait 0.3;
level thread func_30AA(param_00,self,var_06,3);
level thread func_30AA(param_00,self,var_07,4);
maps\mp\_matchdata::logkillstreakevent("littlebird_flock",param_01);
}
//Function Number: 8
getflightpath(param_00,param_01,param_02)
{
param_00 = param_00 * (1,1,0);
var_03 = (0,param_01,0);
var_04 = 12000;
var_05 = [];
if(isdefined(param_02) && param_02 != 0)
{
param_00 = param_00 + anglestoright(var_03) * param_02 + (0,0,randomint(300));
}
var_06 = param_00 + anglestoforward(var_03) * -1 * var_04;
var_07 = param_00 + anglestoforward(var_03) * var_04;
var_08 = maps\mp\killstreaks\_airdrop::getflyheightoffset(param_00) + 256;
var_05["start"] = var_06 + (0,0,var_08);
var_05["end"] = var_07 + (0,0,var_08);
return var_05;
}
//Function Number: 9
func_30AA(param_00,param_01,param_02,param_03)
{
level endon("game_ended");
if(!isdefined(param_01))
{
return;
}
var_04 = vectortoangles(param_02["end"] - param_02["start"]);
var_05 = func_30AB(param_01,param_02["start"],var_04,param_03);
var_05.lifeid = param_00;
var_05.alreadydead = 0;
var_05 thread watchtimeout();
var_05 thread func_28F6();
var_05 thread flock_handledamage();
var_05 thread func_30AF();
var_05 thread monitorkills();
var_05 endon("death");
var_05 setmaxpitchroll(120,60);
var_05 vehicle_setspeed(48,48);
var_05 setvehgoalpos(param_02["end"],0);
var_05 waittill("goal");
var_05 setmaxpitchroll(30,40);
var_05 vehicle_setspeed(32,32);
var_05 setvehgoalpos(param_02["start"],0);
wait 2;
var_05 setmaxpitchroll(100,60);
var_05 vehicle_setspeed(64,64);
var_05 waittill("goal");
var_05 notify("gone");
var_05 func_30B2();
}
//Function Number: 10
func_30AB(param_00,param_01,param_02,param_03)
{
var_04 = spawnhelicopter(param_00,param_01,param_02,"apache_strafe_mp","vehicle_apache_mp");
if(!isdefined(var_04))
{
return;
}
var_04 maps\mp\killstreaks\_helicopter::func_2C4A();
var_04 thread maps\mp\killstreaks\_helicopter::func_2C4B();
var_04.health = 999999;
var_04.maxhealth = 2000;
var_04.damagetaken = 0;
var_04 setcandamage(1);
var_04.owner = param_00;
var_04.team = param_00.team;
var_04.killcount = 0;
var_04.streakname = "littlebird_flock";
var_04.helitype = "littlebird";
var_04.specialdamagecallback = ::callback_vehicledamage;
var_05 = spawnturret("misc_turret",var_04.origin,"apache_minigun_mp");
var_05 linkto(var_04,"tag_turret",(0,0,0),(0,0,0));
var_05 setmodel("vehicle_apache_mg");
var_05.angles = var_04.angles;
var_05.owner = var_04.owner;
var_05.team = var_05.owner.team;
var_05 maketurretinoperable();
var_05.vehicle = var_04;
var_06 = var_04.origin + anglestoforward(var_04.angles) * -200 + anglestoright(var_04.angles) * -200 + (0,0,50);
var_05.killcament = spawn("script_model",var_06);
var_05.killcament setscriptmoverkillcam("explosive");
var_05.killcament linkto(var_04,"tag_origin");
var_04.mgturret1 = var_05;
var_04.mgturret1 setdefaultdroppitch(0);
var_04.mgturret1 setmode("auto_nonai");
var_04.mgturret1 setsentryowner(var_04.owner);
if(level.teambased)
{
var_04.mgturret1 setturretteam(var_04.owner.team);
}
level.heli_flock[param_03] = var_04;
return var_04;
}
//Function Number: 11
watchtimeout()
{
level endon("game_ended");
self endon("gone");
self endon("death");
maps\mp\gametypes\_hostmigration::func_2740(60);
self notify("death");
}
//Function Number: 12
monitorkills()
{
level endon("game_ended");
self endon("gone");
self endon("death");
self endon("stopFiring");
for(;;)
{
self waittill("killedPlayer",var_00);
self.killcount++;
level.heli_flock_victims[level.heli_flock_victims.size] = var_00;
}
}
//Function Number: 13
func_30AF()
{
self endon("gone");
self endon("death");
self endon("stopFiring");
for(;;)
{
self.mgturret1 waittill("turret_on_target");
var_00 = 1;
var_01 = self.mgturret1 getturrettarget(0);
foreach(var_03 in level.heli_flock_victims)
{
if(var_01 == var_03)
{
self.mgturret1 cleartargetentity();
var_00 = 0;
break;
}
}
if(var_00)
{
self.mgturret1 shootturret();
}
}
}
//Function Number: 14
handleownerleft()
{
level endon("game_ended");
self endon("flock_done");
thread notifyonflockdone();
common_scripts\utility::waittill_any("disconnect","joined_team","joined_spectators");
for(var_00 = 0;var_00 < level.heli_flock.size;var_00++)
{
if(isdefined(level.heli_flock[var_00]))
{
level.heli_flock[var_00] notify("stopFiring");
}
}
for(var_00 = 0;var_00 < level.heli_flock.size;var_00++)
{
if(isdefined(level.heli_flock[var_00]))
{
level.heli_flock[var_00] notify("death");
wait 0.1;
}
}
}
//Function Number: 15
notifyonflockdone()
{
level endon("game_ended");
self endon("disconnect");
self endon("joined_team");
self endon("joined_spectators");
while(heliflockactive())
{
wait 0.5;
}
self notify("flock_done");
}
//Function Number: 16
flock_handledamage()
{
self endon("death");
level endon("game_ended");
for(;;)
{
self waittill("damage",var_00,var_01,var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09);
if(isdefined(self.specialdamagecallback))
{
self [[ self.specialdamagecallback ]](undefined,var_01,var_00,var_08,var_04,var_09,var_03,var_02,undefined,undefined,var_05,var_07);
}
}
}
//Function Number: 17
callback_vehicledamage(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A,param_0B)
{
if(isdefined(self.alreadydead) && self.alreadydead)
{
return;
}
if(!isdefined(param_01) || param_01 == self)
{
return;
}
if(!maps\mp\gametypes\_weapons::func_27A1(self.owner,param_01))
{
return;
}
if(isdefined(param_03) && param_03 & level.idflags_penetration)
{
self.wasdamagedfrombulletpenetration = 1;
}
self.wasdamaged = 1;
var_0C = param_02;
if(isplayer(param_01))
{
param_01 maps\mp\gametypes\_damagefeedback::updatedamagefeedback("helicopter");
if(param_04 == "MOD_RIFLE_BULLET" || param_04 == "MOD_PISTOL_BULLET")
{
if(param_01 maps\mp\_utility::func_27AF("specialty_armorpiercing"))
{
var_0C = var_0C + param_02 * level.armorpiercingmod;
}
}
}
if(isdefined(param_01.owner) && isplayer(param_01.owner))
{
param_01.owner maps\mp\gametypes\_damagefeedback::updatedamagefeedback("helicopter");
}
if(isdefined(param_05))
{
switch(param_05)
{
case "remote_mortar_missile_mp":
case "javelin_mp":
case "stinger_mp":
case "remotemissile_projectile_mp":
case "ac130_40mm_mp":
case "ac130_105mm_mp":
self.largeprojectiledamage = 1;
var_0C = self.maxhealth + 1;
break;
case "sam_projectile_mp":
self.largeprojectiledamage = 1;
var_0C = self.maxhealth * 0.25;
break;
case "emp_grenade_mp":
self.largeprojectiledamage = 0;
var_0C = self.maxhealth + 1;
break;
}
maps\mp\killstreaks\_killstreaks::killstreakhit(param_01,param_05,self);
}
self.damagetaken = self.damagetaken + var_0C;
if(self.damagetaken >= self.maxhealth)
{
if(isplayer(param_01) && !isdefined(self.owner) || param_01 != self.owner)
{
self.alreadydead = 1;
param_01 notify("destroyed_helicopter");
param_01 notify("destroyed_killstreak",param_05);
thread maps\mp\_utility::teamplayercardsplash("callout_destroyed_helicopter",param_01);
param_01 thread maps\mp\gametypes\_rank::func_2AB3("kill",300,param_05,param_04);
param_01 thread maps\mp\gametypes\_rank::xpeventpopup(&"SPLASHES_DESTROYED_HELICOPTER");
thread maps\mp\gametypes\_missions::vehiclekilled(self.owner,self,undefined,param_01,param_02,param_04,param_05);
}
self notify("death");
}
}
//Function Number: 18
func_28F6()
{
self endon("gone");
self waittill("death");
thread func_2E83();
}
//Function Number: 19
func_2E83()
{
self endon("gone");
if(!isdefined(self))
{
return;
}
self vehicle_setspeed(25,5);
thread func_2E85(randomintrange(180,220));
wait randomfloatrange(0.5,1.5);
func_2E84();
}
//Function Number: 20
func_2E85(param_00)
{
self endon("explode");
playfxontag(level.chopper_fx["explode"]["medium"],self,"tail_rotor_jnt");
thread trail_fx(level.chopper_fx["smoke"]["trail"],"tail_rotor_jnt","stop tail smoke");
self setyawspeed(param_00,param_00,param_00);
while(isdefined(self))
{
self settargetyaw(self.angles[1] + param_00 * 0.9);
wait 1;
}
}
//Function Number: 21
trail_fx(param_00,param_01,param_02)
{
self notify(param_02);
self endon(param_02);
self endon("death");
for(;;)
{
playfxontag(param_00,self,param_01);
wait 0.05;
}
}
//Function Number: 22
func_2E84()
{
var_00 = self.origin + (0,0,1) - self.origin;
var_01 = self gettagangles("tag_deathfx");
playfx(level.chopper_fx["explode"]["air_death"]["littlebird"],self gettagorigin("tag_deathfx"),anglestoforward(var_01),anglestoup(var_01));
self playsound("cobra_helicopter_crash");
self notify("explode");
func_30B2();
}
//Function Number: 23
func_30B2()
{
if(isdefined(self.mgturret1))
{
if(isdefined(self.mgturret1.killcament))
{
self.mgturret1.killcament delete();
}
self.mgturret1 delete();
}
maps\mp\_utility::func_80C8();
self delete();
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,187 @@
/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\killstreaks\_juggernaut.gsc
* Game: Call of Duty: Modern Warfare 3
* Platform: Console
* Function Count: 7
* Decompile Time: 144 ms
* Timestamp: 10/27/2023 2:27:03 AM
*******************************************************************/
//Function Number: 1
init()
{
level.juggsettings = [];
level.juggsettings["juggernaut"] = spawnstruct();
level.juggsettings["juggernaut"].splashusedname = "used_juggernaut";
level.juggsettings["juggernaut"].overlay = "goggles_overlay";
level.juggsettings["juggernaut_recon"] = spawnstruct();
level.juggsettings["juggernaut_recon"].splashusedname = "used_juggernaut";
level.juggsettings["juggernaut_recon"].overlay = "goggles_overlay";
foreach(var_01 in level.juggsettings)
{
precacheshader(var_01.overlay);
}
}
//Function Number: 2
func_2DD1(param_00)
{
self endon("death");
self endon("disconnect");
wait 0.05;
if(isdefined(self.haslightarmor) && self.haslightarmor == 1)
{
maps\mp\perks\_perkfunctions::removelightarmor(self.previousmaxhealth);
}
if(maps\mp\_utility::func_27AF("specialty_explosivebullets"))
{
maps\mp\_utility::func_282E("specialty_explosivebullets");
}
self.health = self.maxhealth;
switch(param_00)
{
case "juggernaut":
self.isjuggernaut = 1;
self.juggmovespeedscaler = 0.65;
maps\mp\gametypes\_class::func_2A52(self.pers["team"],param_00,0,0);
self.movespeedscaler = 0.65;
break;
case "juggernaut_recon":
self.isjuggernautrecon = 1;
self.juggmovespeedscaler = 0.75;
maps\mp\gametypes\_class::func_2A52(self.pers["team"],param_00,0,0);
self.movespeedscaler = 0.75;
var_01 = spawn("script_model",self.origin);
var_01.team = self.team;
var_01 makeportableradar(self);
self.personalradar = var_01;
thread func_2DD8(var_01);
break;
}
maps\mp\gametypes\_weapons::func_2884();
self disableweaponpickup();
if(!getdvarint("camera_thirdPerson"))
{
self.juggernautoverlay = newclienthudelem(self);
self.juggernautoverlay.x = 0;
self.juggernautoverlay.y = 0;
self.juggernautoverlay.alignx = "left";
self.juggernautoverlay.aligny = "top";
self.juggernautoverlay.horzalign = "fullscreen";
self.juggernautoverlay.vertalign = "fullscreen";
self.juggernautoverlay setshader(level.juggsettings[param_00].overlay,640,480);
self.juggernautoverlay.sort = -10;
self.juggernautoverlay.archived = 1;
self.juggernautoverlay.hidein3rdperson = 1;
}
thread func_2DD7();
self setperk("specialty_radarjuggernaut",1,0);
thread maps\mp\_utility::teamplayercardsplash(level.juggsettings[param_00].splashusedname,self);
if(self.streaktype == "specialist")
{
thread maps\mp\killstreaks\_killstreaks::func_2DD6();
}
else
{
thread maps\mp\killstreaks\_killstreaks::updatekillstreaks(1);
}
thread func_2DD9();
if(isdefined(self.carryflag))
{
wait 0.05;
self attach(self.carryflag,"J_spine4",1);
}
level notify("juggernaut_equipped",self);
maps\mp\_matchdata::logkillstreakevent("juggernaut",self.origin);
}
//Function Number: 3
func_2DD7()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("jugg_removed");
for(;;)
{
wait 3;
self playsound("juggernaut_breathing_sound");
}
}
//Function Number: 4
func_2DD8(param_00)
{
level endon("game_ended");
self endon("disconnect");
self endon("jugg_removed");
self endon("jugdar_removed");
for(;;)
{
param_00 moveto(self.origin,0.05);
wait 0.05;
}
}
//Function Number: 5
func_2DD9()
{
level endon("game_ended");
self endon("disconnect");
self endon("jugg_removed");
thread func_2DDC();
thread func_80F6();
common_scripts\utility::waittill_any("death","joined_team","joined_spectators","lost_juggernaut");
self enableweaponpickup();
self.isjuggernaut = 0;
self.isjuggernautdef = 0;
self.isjuggernautgl = 0;
self.isjuggernautrecon = 0;
if(isdefined(self.juggernautoverlay))
{
self.juggernautoverlay destroy();
}
self unsetperk("specialty_radarjuggernaut",1);
if(isdefined(self.personalradar))
{
self notify("jugdar_removed");
level maps\mp\gametypes\_portable_radar::deleteportableradar(self.personalradar);
self.personalradar = undefined;
}
self notify("jugg_removed");
}
//Function Number: 6
func_2DDC()
{
self endon("disconnect");
self endon("jugg_removed");
level waittill("game_ended");
if(isdefined(self.juggernautoverlay))
{
self.juggernautoverlay destroy();
}
}
//Function Number: 7
func_80F6()
{
self endon("jugg_removed");
level endon("game_ended");
var_00 = self.personalradar;
self waittill("disconnect");
if(isdefined(var_00))
{
level maps\mp\gametypes\_portable_radar::deleteportableradar(var_00);
}
}

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More