mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-23 00:07:52 -05:00
Added MW3 Scripts
This commit is contained in:
52
MW3/PC/MP/maps/mp/_animatedmodels.gsc
Normal file
52
MW3/PC/MP/maps/mp/_animatedmodels.gsc
Normal file
@ -0,0 +1,52 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_animatedmodels.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 71 ms
|
||||
* Timestamp: 10/27/2023 2:14:50 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
if(!isdefined(level.anim_prop_models))
|
||||
{
|
||||
level.anim_prop_models = [];
|
||||
}
|
||||
|
||||
var_00 = getarraykeys(level.anim_prop_models);
|
||||
foreach(var_02 in var_00)
|
||||
{
|
||||
var_03 = getarraykeys(level.anim_prop_models[var_02]);
|
||||
foreach(var_05 in var_03)
|
||||
{
|
||||
precachempanim(level.anim_prop_models[var_02][var_05]);
|
||||
}
|
||||
}
|
||||
|
||||
waittillframeend;
|
||||
level.init_animatedmodels = [];
|
||||
var_08 = getentarray("animated_model","targetname");
|
||||
common_scripts\utility::array_thread(var_08,::animatemodel);
|
||||
level.init_animatedmodels = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
animatemodel()
|
||||
{
|
||||
if(isdefined(self.animation))
|
||||
{
|
||||
var_00 = self.animation;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = getarraykeys(level.anim_prop_models[self.model]);
|
||||
var_02 = var_01[randomint(var_01.size)];
|
||||
var_00 = level.anim_prop_models[self.model][var_02];
|
||||
}
|
||||
|
||||
self scriptmodelplayanim(var_00);
|
||||
self willneverchange();
|
||||
}
|
72
MW3/PC/MP/maps/mp/_areas.gsc
Normal file
72
MW3/PC/MP/maps/mp/_areas.gsc
Normal file
@ -0,0 +1,72 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_areas.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 5
|
||||
* Decompile Time: 95 ms
|
||||
* Timestamp: 10/27/2023 2:14:51 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
|
||||
playerentersoftlanding(param_00)
|
||||
{
|
||||
self.softlanding = param_00;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
playerleavesoftlanding(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;
|
||||
}
|
||||
}
|
||||
}
|
92
MW3/PC/MP/maps/mp/_audio.gsc
Normal file
92
MW3/PC/MP/maps/mp/_audio.gsc
Normal file
@ -0,0 +1,92 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_audio.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 10
|
||||
* Decompile Time: 176 ms
|
||||
* Timestamp: 10/27/2023 2:14:51 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init_audio()
|
||||
{
|
||||
if(!isdefined(level.audio))
|
||||
{
|
||||
level.audio = spawnstruct();
|
||||
}
|
||||
|
||||
init_reverb();
|
||||
init_whizby();
|
||||
level.onplayerconnectaudioinit = ::onplayerconnectaudioinit;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
onplayerconnectaudioinit()
|
||||
{
|
||||
apply_reverb("default");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
init_reverb()
|
||||
{
|
||||
add_reverb("default","generic",0.15,0.9,2);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
add_reverb(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
var_05 = [];
|
||||
is_roomtype_valid(param_01);
|
||||
level.audio.reverb_settings[param_01] = var_7B;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
is_roomtype_valid(param_00)
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
apply_reverb(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
|
||||
init_whizby()
|
||||
{
|
||||
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
|
||||
apply_whizby()
|
||||
{
|
||||
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]);
|
||||
}
|
1138
MW3/PC/MP/maps/mp/_awards.gsc
Normal file
1138
MW3/PC/MP/maps/mp/_awards.gsc
Normal file
File diff suppressed because it is too large
Load Diff
80
MW3/PC/MP/maps/mp/_compass.gsc
Normal file
80
MW3/PC/MP/maps/mp/_compass.gsc
Normal file
@ -0,0 +1,80 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_compass.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 46 ms
|
||||
* Timestamp: 10/27/2023 2:14:55 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
setupminimap(param_00)
|
||||
{
|
||||
var_01 = level.requiredmapaspectratio;
|
||||
var_02 = getentarray("minimap_corner","targetname");
|
||||
if(var_02.size != 2)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_03 = (var_02[0].origin[0],var_02[0].origin[1],0);
|
||||
var_04 = (var_02[1].origin[0],var_02[1].origin[1],0);
|
||||
var_05 = var_04 - var_03;
|
||||
var_06 = (cos(getnorthyaw()),sin(getnorthyaw()),0);
|
||||
var_07 = (0 - var_06[1],var_06[0],0);
|
||||
if(vectordot(var_05,var_07) > 0)
|
||||
{
|
||||
if(vectordot(var_05,var_06) > 0)
|
||||
{
|
||||
var_08 = var_04;
|
||||
var_09 = var_03;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0A = vecscale(var_08,vectordot(var_07,var_08));
|
||||
var_08 = var_04 - var_0A;
|
||||
var_09 = var_03 + var_0A;
|
||||
}
|
||||
}
|
||||
else if(vectordot(var_07,var_08) > 0)
|
||||
{
|
||||
var_0A = vecscale(var_08,vectordot(var_07,var_08));
|
||||
var_08 = var_03 + var_0A;
|
||||
var_09 = var_04 - var_0A;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_08 = var_05;
|
||||
var_09 = var_05;
|
||||
}
|
||||
|
||||
if(var_01 > 0)
|
||||
{
|
||||
var_0B = vectordot(var_08 - var_09,var_06);
|
||||
var_0C = vectordot(var_08 - var_09,var_07);
|
||||
var_0D = var_0C / var_0B;
|
||||
if(var_0D < var_01)
|
||||
{
|
||||
var_0E = var_01 / var_0D;
|
||||
var_0F = vecscale(var_07,var_0C * var_0E - 1 * 0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_0E = var_0F / var_03;
|
||||
var_0F = vecscale(var_07,var_0C * var_0F - 1 * 0.5);
|
||||
}
|
||||
|
||||
var_08 = var_08 + var_0F;
|
||||
var_09 = var_09 - var_0F;
|
||||
}
|
||||
|
||||
level.mapsize = vectordot(var_08 - var_09,var_06);
|
||||
setminimap(param_00,var_08[0],var_08[1],var_09[0],var_09[1]);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
vecscale(param_00,param_01)
|
||||
{
|
||||
return (param_00[0] * param_01,param_00[1] * param_01,param_00[2] * param_01);
|
||||
}
|
67
MW3/PC/MP/maps/mp/_createfx.gsc
Normal file
67
MW3/PC/MP/maps/mp/_createfx.gsc
Normal file
@ -0,0 +1,67 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_createfx.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 77 ms
|
||||
* Timestamp: 10/27/2023 2:14:56 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::updatesessionstate("playing","");
|
||||
self.maxhealth = 10000000;
|
||||
self.health = 10000000;
|
||||
level.player = self;
|
||||
thread common_scripts\_createfx::createfxlogic();
|
||||
thread ufo_mode();
|
||||
return;
|
||||
}
|
||||
|
||||
kick(self getentitynumber());
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
ufo_mode()
|
||||
{
|
||||
level.player openpopupmenu("painter_mp");
|
||||
level.player closepopupmenu("painter_mp");
|
||||
}
|
140
MW3/PC/MP/maps/mp/_defcon.gsc
Normal file
140
MW3/PC/MP/maps/mp/_defcon.gsc
Normal file
@ -0,0 +1,140 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_defcon.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 4
|
||||
* Decompile Time: 79 ms
|
||||
* Timestamp: 10/27/2023 2:14:56 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::splashnotify("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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
142
MW3/PC/MP/maps/mp/_destructables.gsc
Normal file
142
MW3/PC/MP/maps/mp/_destructables.gsc
Normal file
@ -0,0 +1,142 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_destructables.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 7
|
||||
* Decompile Time: 128 ms
|
||||
* Timestamp: 10/27/2023 2:14:57 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 destructable_destruct();
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
destructable_destruct()
|
||||
{
|
||||
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++)
|
||||
{
|
||||
unblockarea(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
|
||||
unblockarea(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;
|
||||
}
|
||||
}
|
358
MW3/PC/MP/maps/mp/_entityheadicons.gsc
Normal file
358
MW3/PC/MP/maps/mp/_entityheadicons.gsc
Normal file
@ -0,0 +1,358 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_entityheadicons.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 10
|
||||
* Decompile Time: 176 ms
|
||||
* Timestamp: 10/27/2023 2:14:58 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
if(isdefined(level.initedentityheadicons))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.initedentityheadicons = 1;
|
||||
game["entity_headicon_allies"] = maps\mp\gametypes\_teams::init("allies");
|
||||
game["entity_headicon_axis"] = maps\mp\gametypes\_teams::init("axis");
|
||||
precacheshader(game["entity_headicon_allies"]);
|
||||
precacheshader(game["entity_headicon_axis"]);
|
||||
if(!level.teambased)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
setheadicon(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 keeppositioned(self,param_03,param_07);
|
||||
thread destroyiconsondeath();
|
||||
if(isplayer(param_01))
|
||||
{
|
||||
var_0C thread destroyonownerdisconnect(param_01);
|
||||
}
|
||||
|
||||
if(isplayer(self))
|
||||
{
|
||||
var_0C thread destroyonownerdisconnect(self);
|
||||
}
|
||||
|
||||
return var_0C;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
destroyonownerdisconnect(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
param_00 waittill("disconnect");
|
||||
self destroy();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
destroyiconsondeath()
|
||||
{
|
||||
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
|
||||
keeppositioned(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)
|
||||
{
|
||||
updateheadiconorigin();
|
||||
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
|
||||
updateheadiconorigin()
|
||||
{
|
||||
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];
|
||||
}
|
832
MW3/PC/MP/maps/mp/_events.gsc
Normal file
832
MW3/PC/MP/maps/mp/_events.gsc
Normal file
@ -0,0 +1,832 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_events.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 31
|
||||
* Decompile Time: 538 ms
|
||||
* Timestamp: 10/27/2023 2:15:00 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 monitorobjectives();
|
||||
var_00 thread monitorhealed();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
damagedplayer(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
|
||||
killedplayer(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
var_04 = param_01.guid;
|
||||
var_05 = self.guid;
|
||||
var_06 = gettime();
|
||||
thread updaterecentkills(param_00);
|
||||
self.lastkilltime = gettime();
|
||||
self.lastkilledplayer = param_01;
|
||||
self.modifiers = [];
|
||||
level.numkills++;
|
||||
self.damagedplayers[var_04] = undefined;
|
||||
if(!maps\mp\_utility::iskillstreakweapon(param_02) && !maps\mp\_utility::isjuggernaut() && !maps\mp\_utility::_hasperk("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::func_2F45(&"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)
|
||||
{
|
||||
firstblood(param_00,param_02,param_03);
|
||||
}
|
||||
|
||||
if(self.pers["cur_death_streak"] > 3)
|
||||
{
|
||||
comeback(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
|
||||
{
|
||||
headshot(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)
|
||||
{
|
||||
avengedplayer(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::setplayerstat("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::iskillstreakweapon(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::_hasperk("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;
|
||||
revenge(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::setplayerstatifgreater("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":
|
||||
checkmatchdataweaponkills(param_01,param_02,param_03,var_04);
|
||||
break;
|
||||
|
||||
case "weapon_explosive":
|
||||
case "weapon_grenade":
|
||||
checkmatchdataequipmentkills(param_01,param_02,param_03);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
checkmatchdataweaponkills(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
|
||||
checkmatchdataequipmentkills(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::func_2F45(&"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::func_2F45(&"SPLASHES_PROXIMITYASSIST");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("proximityassist");
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
proximitykill(param_00)
|
||||
{
|
||||
self.modifiers["proximityKill"] = 1;
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_PROXIMITYKILL");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("proximitykill");
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
longshot(param_00,param_01,param_02)
|
||||
{
|
||||
self.modifiers["longshot"] = 1;
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_LONGSHOT");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("longshot",undefined,param_01,param_02);
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("longshot");
|
||||
maps\mp\_utility::incplayerstat("longshots",1);
|
||||
thread maps\mp\_matchdata::logkillevent(param_00,"longshot");
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
execution(param_00,param_01,param_02)
|
||||
{
|
||||
self.modifiers["execution"] = 1;
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_EXECUTION");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("execution",undefined,param_01,param_02);
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("execution");
|
||||
thread maps\mp\_matchdata::logkillevent(param_00,"execution");
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
headshot(param_00,param_01,param_02)
|
||||
{
|
||||
self.modifiers["headshot"] = 1;
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_HEADSHOT");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("headshot",undefined,param_01,param_02);
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("headshot");
|
||||
thread maps\mp\_matchdata::logkillevent(param_00,"headshot");
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
avengedplayer(param_00,param_01,param_02)
|
||||
{
|
||||
self.modifiers["avenger"] = 1;
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_AVENGER");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("avenger",undefined,param_01,param_02);
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("avenger");
|
||||
thread maps\mp\_matchdata::logkillevent(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::func_2F45(&"SPLASHES_ASSISTEDSUICIDE");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("assistedsuicide",undefined,param_01,param_02);
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("assistedsuicide");
|
||||
thread maps\mp\_matchdata::logkillevent(param_00,"assistedsuicide");
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
defendedplayer(param_00,param_01,param_02)
|
||||
{
|
||||
self.modifiers["defender"] = 1;
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_DEFENDER");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("defender",undefined,param_01,param_02);
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("defender");
|
||||
thread maps\mp\_matchdata::logkillevent(param_00,"defender");
|
||||
maps\mp\_utility::incplayerstat("rescues",1);
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
postdeathkill(param_00)
|
||||
{
|
||||
self.modifiers["posthumous"] = 1;
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_POSTHUMOUS");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("posthumous");
|
||||
thread maps\mp\_matchdata::logkillevent(param_00,"posthumous");
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
backstab(param_00)
|
||||
{
|
||||
self iprintlnbold("backstab");
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
revenge(param_00)
|
||||
{
|
||||
self.modifiers["revenge"] = 1;
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_REVENGE");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("revenge");
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("revenge");
|
||||
thread maps\mp\_matchdata::logkillevent(param_00,"revenge");
|
||||
maps\mp\_utility::incplayerstat("revengekills",1);
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
multikill(param_00,param_01)
|
||||
{
|
||||
if(param_01 == 2)
|
||||
{
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_DOUBLEKILL");
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("double");
|
||||
}
|
||||
else if(param_01 == 3)
|
||||
{
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_TRIPLEKILL");
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("triple");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_3xkill",self);
|
||||
}
|
||||
else
|
||||
{
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"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::setplayerstatifgreater("multikill",param_01);
|
||||
maps\mp\_utility::incplayerstat("mostmultikills",1);
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
firstblood(param_00,param_01,param_02)
|
||||
{
|
||||
self.modifiers["firstblood"] = 1;
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_FIRSTBLOOD");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("firstblood",undefined,param_01,param_02);
|
||||
thread maps\mp\_matchdata::logkillevent(param_00,"firstblood");
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("firstBlood");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_firstblood",self);
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
winningshot(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::func_2F45(&"SPLASHES_BUZZKILL");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("buzzkill",undefined,param_02,param_03);
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("buzzkill");
|
||||
thread maps\mp\_matchdata::logkillevent(param_00,"buzzkill");
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
comeback(param_00,param_01,param_02)
|
||||
{
|
||||
self.modifiers["comeback"] = 1;
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_COMEBACK");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("comeback",undefined,param_01,param_02);
|
||||
maps\mp\killstreaks\_killstreaks::giveadrenaline("comeback");
|
||||
thread maps\mp\_matchdata::logkillevent(param_00,"comeback");
|
||||
maps\mp\_utility::incplayerstat("comebacks",1);
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
disconnected()
|
||||
{
|
||||
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
|
||||
updaterecentkills(param_00)
|
||||
{
|
||||
self endon("disconnect");
|
||||
level endon("game_ended");
|
||||
self notify("updateRecentKills");
|
||||
self endon("updateRecentKills");
|
||||
self.recentkillcount++;
|
||||
wait 1;
|
||||
if(self.recentkillcount > 1)
|
||||
{
|
||||
multikill(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::func_2F45(&"SPLASHES_HIJACKER");
|
||||
thread maps\mp\gametypes\_rank::giverankxp("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 "emergency_airdrop":
|
||||
case "mega":
|
||||
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
|
||||
monitorobjectives()
|
||||
{
|
||||
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::splashnotifydelayed("heroic",100);
|
||||
thread maps\mp\gametypes\_rank::giverankxp("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");
|
||||
}
|
||||
}
|
||||
}
|
174
MW3/PC/MP/maps/mp/_flashgrenades.gsc
Normal file
174
MW3/PC/MP/maps/mp/_flashgrenades.gsc
Normal file
@ -0,0 +1,174 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_flashgrenades.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 7
|
||||
* Decompile Time: 132 ms
|
||||
* Timestamp: 10/27/2023 2:15:01 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
|
||||
flashrumbleloop(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 applyflash(var_06,var_07);
|
||||
if(isdefined(var_03) && var_03 != self)
|
||||
{
|
||||
var_03 thread maps\mp\gametypes\_damagefeedback::updatedamagefeedback("flash");
|
||||
}
|
||||
}
|
||||
|
||||
if(var_04 && isdefined(var_03))
|
||||
{
|
||||
var_03 thread applyflash(var_06,var_07);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
applyflash(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 flashrumbleloop(self.flashrumbleduration);
|
||||
}
|
||||
|
||||
self.flashduration = undefined;
|
||||
self.flashrumbleduration = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
isflashbanged()
|
||||
{
|
||||
return isdefined(self.flashendtime) && gettime() < self.flashendtime;
|
||||
}
|
101
MW3/PC/MP/maps/mp/_fx.gsc
Normal file
101
MW3/PC/MP/maps/mp/_fx.gsc
Normal file
@ -0,0 +1,101 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_fx.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 7
|
||||
* Decompile Time: 144 ms
|
||||
* Timestamp: 10/27/2023 2:15:01 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();
|
||||
}
|
93
MW3/PC/MP/maps/mp/_global_fx.gsc
Normal file
93
MW3/PC/MP/maps/mp/_global_fx.gsc
Normal file
@ -0,0 +1,93 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_global_fx.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 45 ms
|
||||
* Timestamp: 10/27/2023 2:16:52 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] global_fx_create(param_01,param_02,param_03,param_04);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
global_fx_create(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;
|
||||
}
|
||||
}
|
23
MW3/PC/MP/maps/mp/_highlights.gsc
Normal file
23
MW3/PC/MP/maps/mp/_highlights.gsc
Normal file
@ -0,0 +1,23 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_highlights.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 1
|
||||
* Decompile Time: 20 ms
|
||||
* Timestamp: 10/27/2023 2:16:53 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
givehighlight(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);
|
||||
}
|
||||
}
|
509
MW3/PC/MP/maps/mp/_javelin.gsc
Normal file
509
MW3/PC/MP/maps/mp/_javelin.gsc
Normal file
@ -0,0 +1,509 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_javelin.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 15
|
||||
* Decompile Time: 260 ms
|
||||
* Timestamp: 10/27/2023 2:15:03 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
initjavelinusage()
|
||||
{
|
||||
self.javelinstage = undefined;
|
||||
self.javelinpoints = undefined;
|
||||
self.javelinnormals = undefined;
|
||||
self.javelinlockmisses = undefined;
|
||||
self.javelintargetpoint = undefined;
|
||||
self.javelintargetnormal = undefined;
|
||||
self.javelinlockstarttime = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
resetjavelinlocking()
|
||||
{
|
||||
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");
|
||||
initjavelinusage();
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
eyetraceforward()
|
||||
{
|
||||
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_7B;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
lockmissesreset()
|
||||
{
|
||||
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
|
||||
looplocalseeksound(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
|
||||
topattackpasses(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
|
||||
javelinusageloop()
|
||||
{
|
||||
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;
|
||||
initjavelinusage();
|
||||
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::isemped())
|
||||
{
|
||||
resetjavelinlocking();
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self playerads() < 0.95)
|
||||
{
|
||||
var_06 = gettime();
|
||||
resetjavelinlocking();
|
||||
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())
|
||||
{
|
||||
resetjavelinlocking();
|
||||
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 = eyetraceforward();
|
||||
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];
|
||||
lockmissesreset();
|
||||
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 looplocalseeksound("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)
|
||||
{
|
||||
resetjavelinlocking();
|
||||
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)
|
||||
{
|
||||
resetjavelinlocking();
|
||||
continue;
|
||||
}
|
||||
|
||||
if(targetpointtooclose(self.javelintargetpoint))
|
||||
{
|
||||
self weaponlocktargettooclose(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
self weaponlocktargettooclose(0);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
debugsightline(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);
|
||||
debugsightline(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);
|
||||
debugsightline(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);
|
||||
debugsightline(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))
|
||||
{
|
||||
resetjavelinlocking();
|
||||
self.javelinlockstarttime = undefined;
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = softsighttest();
|
||||
if(!var_01)
|
||||
{
|
||||
self.javelinlockstarttime = undefined;
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(self.currentlylocking) || !self.currentlylocking)
|
||||
{
|
||||
thread looplocalseeksound("javelin_clu_aquiring_lock",0.6);
|
||||
self.currentlylocking = 1;
|
||||
}
|
||||
|
||||
var_02 = gettime() - self.javelinlockstarttime;
|
||||
if(maps\mp\_utility::_hasperk("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 = softsighttest();
|
||||
if(!var_01)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!stillvalidjavelinlock(self.javelintarget))
|
||||
{
|
||||
resetjavelinlocking();
|
||||
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
|
||||
softsighttest()
|
||||
{
|
||||
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)
|
||||
{
|
||||
resetjavelinlocking();
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
430
MW3/PC/MP/maps/mp/_load.gsc
Normal file
430
MW3/PC/MP/maps/mp/_load.gsc
Normal file
@ -0,0 +1,430 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_load.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 7
|
||||
* Decompile Time: 142 ms
|
||||
* Timestamp: 10/27/2023 2:15:03 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::initgameflags();
|
||||
maps\mp\_utility::initlevelflags();
|
||||
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::leaderdialogonplayer;
|
||||
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::minefields();
|
||||
thread maps\mp\_radiation::radiation();
|
||||
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 lanterns();
|
||||
}
|
||||
|
||||
maps\mp\_audio::init_audio();
|
||||
lib_0375::main();
|
||||
setupexploders();
|
||||
thread common_scripts\_fx::initfx();
|
||||
if(level.createfx_enabled)
|
||||
{
|
||||
maps\mp\_createfx::createfx();
|
||||
}
|
||||
|
||||
if(getdvar("r_reflectionProbeGenerate") == "1")
|
||||
{
|
||||
maps\mp\gametypes\_spawnlogic::setmapcenterforreflections();
|
||||
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_7B["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.var_7E6;
|
||||
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_7B[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
|
||||
lanterns()
|
||||
{
|
||||
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 deletedestructiblekillcament();
|
||||
}
|
||||
|
||||
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 deletedestructiblekillcament();
|
||||
}
|
||||
|
||||
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 deletedestructiblekillcament();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
deletedestructiblekillcament()
|
||||
{
|
||||
level endon("game_ended");
|
||||
var_00 = self.killcament;
|
||||
var_00 endon("death");
|
||||
self waittill("death");
|
||||
wait 10;
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
var_00 delete();
|
||||
}
|
||||
}
|
704
MW3/PC/MP/maps/mp/_matchdata.gsc
Normal file
704
MW3/PC/MP/maps/mp/_matchdata.gsc
Normal file
@ -0,0 +1,704 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_matchdata.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 25
|
||||
* Decompile Time: 453 ms
|
||||
* Timestamp: 10/27/2023 2:15:05 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 endofgamesummarylogger();
|
||||
}
|
||||
|
||||
//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
|
||||
logkillevent(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
|
||||
logplayerlife(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);
|
||||
logloadout(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
|
||||
logloadout(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::getclassindex(var_16);
|
||||
var_03 = maps\mp\gametypes\_class::cac_getweapon(var_17,0);
|
||||
var_04 = maps\mp\gametypes\_class::cac_getweaponattachment(var_17,0);
|
||||
var_05 = maps\mp\gametypes\_class::cac_getweaponattachmenttwo(var_17,0);
|
||||
var_08 = maps\mp\gametypes\_class::cac_getweapon(var_17,1);
|
||||
var_09 = maps\mp\gametypes\_class::cac_getweaponattachment(var_17,1);
|
||||
var_0A = maps\mp\gametypes\_class::cac_getweaponattachmenttwo(var_17,1);
|
||||
var_11 = maps\mp\gametypes\_class::cac_getoffhand(var_17);
|
||||
var_0D = maps\mp\gametypes\_class::cac_getperk(var_17,0);
|
||||
var_0E = maps\mp\gametypes\_class::cac_getperk(var_17,1);
|
||||
var_0F = maps\mp\gametypes\_class::cac_getperk(var_17,2);
|
||||
var_10 = maps\mp\gametypes\_class::cac_getperk(var_17,3);
|
||||
var_13 = maps\mp\gametypes\_class::cac_getperk(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::cac_getkillstreak(var_17,var_13,0);
|
||||
var_15 = maps\mp\gametypes\_class::cac_getkillstreak(var_17,var_13,1);
|
||||
var_16 = maps\mp\gametypes\_class::cac_getkillstreak(var_17,var_13,2);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_17 = maps\mp\gametypes\_class::getclassindex(var_17);
|
||||
var_03 = maps\mp\gametypes\_class::table_getweapon(level.classtablename,var_17,0);
|
||||
var_04 = maps\mp\gametypes\_class::table_getweaponattachment(level.classtablename,var_17,0,0);
|
||||
var_05 = maps\mp\gametypes\_class::table_getweaponattachment(level.classtablename,var_17,0,1);
|
||||
var_08 = maps\mp\gametypes\_class::table_getweapon(level.classtablename,var_17,1);
|
||||
var_09 = maps\mp\gametypes\_class::table_getweaponattachment(level.classtablename,var_17,1,0);
|
||||
var_0A = maps\mp\gametypes\_class::table_getweaponattachment(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::table_getperk(level.classtablename,var_17,1);
|
||||
var_0F = maps\mp\gametypes\_class::table_getperk(level.classtablename,var_17,2);
|
||||
var_10 = maps\mp\gametypes\_class::table_getperk(level.classtablename,var_17,3);
|
||||
var_13 = maps\mp\gametypes\_class::table_getperk(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
|
||||
logplayerdeath(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::iskillstreakweapon(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
|
||||
endofgamesummarylogger()
|
||||
{
|
||||
level waittill("game_ended");
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
wait 0.05;
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
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::getnextlifeid();
|
||||
var_01 logplayerlife(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::iskillstreakweapon(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
|
||||
logattachmentstat(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
|
||||
buildbaseweaponlist()
|
||||
{
|
||||
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
|
||||
logchallenge(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
|
||||
logkillsconfirmed()
|
||||
{
|
||||
if(!canlogclient(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
setmatchdata("players",self.clientid,"killsConfirmed",self.pers["confirmed"]);
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
logkillsdenied()
|
||||
{
|
||||
if(!canlogclient(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
setmatchdata("players",self.clientid,"killsDenied",self.pers["denied"]);
|
||||
}
|
356
MW3/PC/MP/maps/mp/_matchevents.gsc
Normal file
356
MW3/PC/MP/maps/mp/_matchevents.gsc
Normal file
@ -0,0 +1,356 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_matchevents.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 13
|
||||
* Decompile Time: 236 ms
|
||||
* Timestamp: 10/27/2023 2:15:06 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"] = ::dosmoke;
|
||||
level.matchevents["airstrike"] = ::doairstrike;
|
||||
level.matchevents["pavelow"] = ::dopavelow;
|
||||
level.matchevents["heli_insertion"] = ::doheliinsertion;
|
||||
level.matchevents["osprey_insertion"] = ::doospreyinsertion;
|
||||
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_7B;
|
||||
}
|
||||
|
||||
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::playsoundinspace("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::playsoundinspace("exp_suitcase_bomb_main",var_03);
|
||||
physicsexplosionsphere(var_03 + (0,0,30),250,125,2);
|
||||
var_01 = var_01 * -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
dosmoke()
|
||||
{
|
||||
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
|
||||
doairstrike()
|
||||
{
|
||||
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 playplanefx();
|
||||
var_0D.angles = vectortoangles(var_09 - var_0A);
|
||||
var_0D playloopsound("veh_mig29_dist_loop");
|
||||
var_0D thread playplanefx();
|
||||
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
|
||||
playplanefx()
|
||||
{
|
||||
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
|
||||
dopavelow()
|
||||
{
|
||||
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::heli_crash();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
doheliinsertion()
|
||||
{
|
||||
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
|
||||
doospreyinsertion()
|
||||
{
|
||||
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::airshippitchpropsdown();
|
||||
var_0B thread maps\mp\killstreaks\_escortairdrop::airshippitchpropsdown();
|
||||
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();
|
||||
}
|
||||
}
|
63
MW3/PC/MP/maps/mp/_minefields.gsc
Normal file
63
MW3/PC/MP/maps/mp/_minefields.gsc
Normal file
@ -0,0 +1,63 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_minefields.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 64 ms
|
||||
* Timestamp: 10/27/2023 2:15:06 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
minefields()
|
||||
{
|
||||
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 minefield_think();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
minefield_think()
|
||||
{
|
||||
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;
|
||||
}
|
232
MW3/PC/MP/maps/mp/_radiation.gsc
Normal file
232
MW3/PC/MP/maps/mp/_radiation.gsc
Normal file
@ -0,0 +1,232 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_radiation.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 10
|
||||
* Decompile Time: 156 ms
|
||||
* Timestamp: 10/27/2023 2:16:51 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
radiation()
|
||||
{
|
||||
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(::playerenterarea,::playerleavearea);
|
||||
}
|
||||
|
||||
thread onplayerconnect();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
onplayerconnect()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
level waittill("connected",var_00);
|
||||
var_00.var_2BC2 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
playerenterarea(param_00)
|
||||
{
|
||||
self.var_2BC2++;
|
||||
if(self.var_2BC2 == 1)
|
||||
{
|
||||
radiationeffect();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
playerleavearea(param_00)
|
||||
{
|
||||
self.var_2BC2--;
|
||||
if(self.var_2BC2 != 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.var_2BC5 = 0;
|
||||
self notify("leftTrigger");
|
||||
if(isdefined(self.var_2BC6))
|
||||
{
|
||||
self.var_2BC6 fadeoutblackout(0.1,0);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
soundwatcher(param_00)
|
||||
{
|
||||
common_scripts\utility::waittill_any("death","leftTrigger");
|
||||
self stoploopsound();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
radiationeffect()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("game_ended");
|
||||
self endon("death");
|
||||
self endon("leftTrigger");
|
||||
self.var_2BC5 = 0;
|
||||
thread soundwatcher(self);
|
||||
for(;;)
|
||||
{
|
||||
self.var_2BC5++;
|
||||
switch(self.var_2BC5)
|
||||
{
|
||||
case 1:
|
||||
self.var_2BC9 = "item_geigercouner_level2";
|
||||
self playloopsound(self.var_2BC9);
|
||||
self viewkick(1,self.origin);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
self shellshock("mp_radiation_low",4);
|
||||
self.var_2BC9 = "item_geigercouner_level3";
|
||||
self stoploopsound();
|
||||
self playloopsound(self.var_2BC9);
|
||||
self viewkick(3,self.origin);
|
||||
doradiationdamage(15);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
self shellshock("mp_radiation_med",5);
|
||||
self.var_2BC9 = "item_geigercouner_level3";
|
||||
self stoploopsound();
|
||||
self playloopsound(self.var_2BC9);
|
||||
self viewkick(15,self.origin);
|
||||
thread blackout();
|
||||
doradiationdamage(25);
|
||||
break;
|
||||
|
||||
case 6:
|
||||
self shellshock("mp_radiation_high",5);
|
||||
self.var_2BC9 = "item_geigercouner_level4";
|
||||
self stoploopsound();
|
||||
self playloopsound(self.var_2BC9);
|
||||
self viewkick(75,self.origin);
|
||||
doradiationdamage(45);
|
||||
break;
|
||||
|
||||
case 8:
|
||||
self shellshock("mp_radiation_high",5);
|
||||
self.var_2BC9 = "item_geigercouner_level4";
|
||||
self stoploopsound();
|
||||
self playloopsound(self.var_2BC9);
|
||||
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_2BC6))
|
||||
{
|
||||
self.var_2BC6 = newclienthudelem(self);
|
||||
self.var_2BC6.x = 0;
|
||||
self.var_2BC6.y = 0;
|
||||
self.var_2BC6 setshader("black",640,480);
|
||||
self.var_2BC6.alignx = "left";
|
||||
self.var_2BC6.aligny = "top";
|
||||
self.var_2BC6.horzalign = "fullscreen";
|
||||
self.var_2BC6.vertalign = "fullscreen";
|
||||
self.var_2BC6.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_2BC5 > 1)
|
||||
{
|
||||
var_07 = var_05 - var_04;
|
||||
var_06 = self.var_2BC5 - 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_2BC6 fadeinblackout(var_0D,var_0B);
|
||||
self.var_2BC6 fadeoutblackout(var_0D,var_0C);
|
||||
wait var_06 * 0.5;
|
||||
}
|
||||
|
||||
if(var_06 == 1)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
if(self.var_2BC6.alpha != 0)
|
||||
{
|
||||
self.var_2BC6 fadeoutblackout(1,0);
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self.var_2BC6 fadeinblackout(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
|
||||
fadeinblackout(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;
|
||||
}
|
123
MW3/PC/MP/maps/mp/_scoreboard.gsc
Normal file
123
MW3/PC/MP/maps/mp/_scoreboard.gsc
Normal file
@ -0,0 +1,123 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_scoreboard.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 72 ms
|
||||
* Timestamp: 10/27/2023 2:15:07 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
processlobbyscoreboards()
|
||||
{
|
||||
foreach(var_01 in level.placement["all"])
|
||||
{
|
||||
var_01 setplayerscoreboardinfo();
|
||||
}
|
||||
|
||||
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
|
||||
setplayerscoreboardinfo()
|
||||
{
|
||||
var_00 = getclientmatchdata("scoreboardPlayerCount");
|
||||
if(var_00 <= 24)
|
||||
{
|
||||
setclientmatchdata("players",self.clientmatchdataid,"score",self.pers["score"]);
|
||||
var_01 = maps\mp\_utility::getplayerstat("kills");
|
||||
setclientmatchdata("players",self.clientmatchdataid,"kills",var_01);
|
||||
var_02 = maps\mp\_utility::getplayerstat("assists");
|
||||
setclientmatchdata("players",self.clientmatchdataid,"assists",var_02);
|
||||
var_03 = maps\mp\_utility::getplayerstat("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++;
|
||||
}
|
||||
}
|
193
MW3/PC/MP/maps/mp/_shutter.gsc
Normal file
193
MW3/PC/MP/maps/mp/_shutter.gsc
Normal file
@ -0,0 +1,193 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_shutter.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 5
|
||||
* Decompile Time: 92 ms
|
||||
* Timestamp: 10/27/2023 2:15:08 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_7B[var_04.size];
|
||||
}
|
||||
|
||||
var_02 = getentarray("shutter_right_closed","targetname");
|
||||
var_03 = 0;
|
||||
while(var_03 < var_02.size)
|
||||
{
|
||||
var_03++ = var_7B[var_7B.size];
|
||||
}
|
||||
|
||||
for(var_03 = 0;var_03 < var_7B.size;var_03++ = var_02[var_03])
|
||||
{
|
||||
var_7B[var_03].startyaw = var_7B[var_03].angles[1];
|
||||
}
|
||||
|
||||
var_02 = undefined;
|
||||
var_05 = "left";
|
||||
for(;;)
|
||||
{
|
||||
common_scripts\utility::array_levelthread(var_01,::shutterwanderleft,var_05);
|
||||
common_scripts\utility::array_levelthread(var_7B,::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
|
||||
shutterwanderleft(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;
|
||||
}
|
||||
}
|
461
MW3/PC/MP/maps/mp/_stinger.gsc
Normal file
461
MW3/PC/MP/maps/mp/_stinger.gsc
Normal file
@ -0,0 +1,461 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\_stinger.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 11
|
||||
* Decompile Time: 222 ms
|
||||
* Timestamp: 10/27/2023 2:15:09 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
initstingerusage()
|
||||
{
|
||||
self.stingerstage = undefined;
|
||||
self.stingertarget = undefined;
|
||||
self.stingerlockstarttime = undefined;
|
||||
self.stingerlostsightlinetime = undefined;
|
||||
thread resetstingerlockingondeath();
|
||||
level.stingertargets = [];
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
resetstingerlocking()
|
||||
{
|
||||
if(!isdefined(self.stingeruseentered))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.stingeruseentered = undefined;
|
||||
self notify("stop_javelin_locking_feedback");
|
||||
self notify("stop_javelin_locked_feedback");
|
||||
self weaponlockfree();
|
||||
initstingerusage();
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
resetstingerlockingondeath()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self notify("ResetStingerLockingOnDeath");
|
||||
self endon("ResetStingerLockingOnDeath");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("death");
|
||||
resetstingerlocking();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
stillvalidstingerlock(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
|
||||
loopstingerlockedfeedback()
|
||||
{
|
||||
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
|
||||
softsighttest()
|
||||
{
|
||||
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)
|
||||
{
|
||||
resetstingerlocking();
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
gettargetlist()
|
||||
{
|
||||
var_00 = [];
|
||||
if(level.teambased)
|
||||
{
|
||||
if(isdefined(level.chopper) && level.chopper.team != self.team || 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_7B[var_7B.size] = var_02;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(level.uavmodels[level.otherteam[self.team]].size)
|
||||
{
|
||||
foreach(var_05 in level.uavmodels[level.otherteam[self.team]])
|
||||
{
|
||||
var_7B[var_7B.size] = var_05;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(level.littlebirds))
|
||||
{
|
||||
foreach(var_08 in level.littlebirds)
|
||||
{
|
||||
if(!isdefined(var_08))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self.team != var_08.owner.team || self == var_08.owner)
|
||||
{
|
||||
var_7B[var_7B.size] = var_08;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(level.ugvs))
|
||||
{
|
||||
foreach(var_0B in level.ugvs)
|
||||
{
|
||||
if(!isdefined(var_0B))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self.team != var_0B.owner.team || self == var_0B.owner)
|
||||
{
|
||||
var_7B[var_7B.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_7B[var_7B.size] = var_02;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(level.uavmodels.size)
|
||||
{
|
||||
foreach(var_05 in level.uavmodels)
|
||||
{
|
||||
if(isdefined(var_05.owner) && var_05.owner == self)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_7B[var_7B.size] = var_05;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(level.littlebirds))
|
||||
{
|
||||
foreach(var_08 in level.littlebirds)
|
||||
{
|
||||
if(!isdefined(var_08))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_7B[var_7B.size] = var_08;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(level.ugvs))
|
||||
{
|
||||
foreach(var_0B in level.ugvs)
|
||||
{
|
||||
if(!isdefined(var_0B))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_7B[var_7B.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_7B[var_7B.size] = var_16;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return var_7B;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
stingerusageloop()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
self endon("faux_spawn");
|
||||
var_00 = 1000;
|
||||
initstingerusage();
|
||||
for(;;)
|
||||
{
|
||||
wait 0.05;
|
||||
var_01 = self getcurrentweapon();
|
||||
if(var_01 != "stinger_mp" && var_01 != "at4_mp" && var_01 != "iw5_smaw_mp")
|
||||
{
|
||||
resetstingerlocking();
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self playerads() < 0.95)
|
||||
{
|
||||
resetstingerlocking();
|
||||
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(!stillvalidstingerlock(self.stingertarget))
|
||||
{
|
||||
resetstingerlocking();
|
||||
continue;
|
||||
}
|
||||
|
||||
var_09 = softsighttest();
|
||||
if(!var_09)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0A = gettime() - self.stingerlockstarttime;
|
||||
if(maps\mp\_utility::_hasperk("specialty_fasterlockon"))
|
||||
{
|
||||
if(var_0A < var_00 * 0.5)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if(var_0A < var_00)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
self notify("stop_javelin_locking_feedback");
|
||||
thread loopstingerlockedfeedback();
|
||||
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 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 = softsighttest();
|
||||
if(!var_09)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!stillvalidstingerlock(self.stingertarget))
|
||||
{
|
||||
resetstingerlocking();
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
3876
MW3/PC/MP/maps/mp/_utility.gsc
Normal file
3876
MW3/PC/MP/maps/mp/_utility.gsc
Normal file
File diff suppressed because it is too large
Load Diff
400
MW3/PC/MP/maps/mp/gametypes/_battlechatter_mp.gsc
Normal file
400
MW3/PC/MP/maps/mp/gametypes/_battlechatter_mp.gsc
Normal file
@ -0,0 +1,400 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_battlechatter_mp.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 16
|
||||
* Decompile Time: 235 ms
|
||||
* Timestamp: 10/27/2023 2:12:10 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 claymoretracking();
|
||||
thread reloadtracking();
|
||||
thread grenadetracking();
|
||||
thread grenadeproximitytracking();
|
||||
thread suppressingfiretracking();
|
||||
}
|
||||
}
|
||||
|
||||
//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::combinearrays(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_jammer":
|
||||
case "weapon_parabolic_knife":
|
||||
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 saylocalsound(self,"stun_incoming");
|
||||
wait 5;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03.model == "projectile_m84_flashbang_grenade")
|
||||
{
|
||||
level thread saylocalsound(self,"flash_incoming");
|
||||
wait 5;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03.model == "projectile_rocket")
|
||||
{
|
||||
level thread saylocalsound(self,"rpg_incoming");
|
||||
wait 5;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03.model == "weapon_c4")
|
||||
{
|
||||
level thread saylocalsound(self,"c4_incoming");
|
||||
wait 5;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03.model == "projectile_m203grenade")
|
||||
{
|
||||
level thread saylocalsound(self,"rpg_incoming");
|
||||
wait 5;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03.model == "projectile_semtex_grenade")
|
||||
{
|
||||
level thread saylocalsound(self,"semtex_incoming");
|
||||
wait 5;
|
||||
continue;
|
||||
}
|
||||
|
||||
level thread saylocalsound(self,"grenade_incoming");
|
||||
wait 5;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
suppressingfiretracking()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
self endon("faux_spawn");
|
||||
var_00 = undefined;
|
||||
for(;;)
|
||||
{
|
||||
self waittill("begin_firing");
|
||||
thread suppresswaiter();
|
||||
self waittill("end_firing");
|
||||
self notify("stoppedFiring");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
suppresswaiter()
|
||||
{
|
||||
self notify("suppressWaiter");
|
||||
self endon("suppressWaiter");
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
self endon("stoppedFiring");
|
||||
wait 2;
|
||||
level thread saylocalsound(self,"suppressing_fire");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
claymoretracking()
|
||||
{
|
||||
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 saylocalsound(self,"claymore_plant");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
reloadtracking()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
self endon("faux_spawn");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("reload_start");
|
||||
level thread saylocalsound(self,"reload");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
grenadetracking()
|
||||
{
|
||||
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 saylocalsound(self,"frag_out");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_01 == "semtex_mp")
|
||||
{
|
||||
level thread saylocalsound(self,"semtex_out");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_01 == "flash_grenade_mp")
|
||||
{
|
||||
level thread saylocalsound(self,"flash_out");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_01 == "concussion_grenade_mp")
|
||||
{
|
||||
level thread saylocalsound(self,"conc_out");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_01 == "smoke_grenade_mp")
|
||||
{
|
||||
level thread saylocalsound(self,"smoke_out");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_01 == "c4_mp")
|
||||
{
|
||||
level thread saylocalsound(self,"c4_plant");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
saylocalsounddelayed(param_00,param_01,param_02)
|
||||
{
|
||||
param_00 endon("death");
|
||||
param_00 endon("disconnect");
|
||||
wait param_02;
|
||||
saylocalsound(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
saylocalsound(param_00,param_01)
|
||||
{
|
||||
param_00 endon("death");
|
||||
param_00 endon("disconnect");
|
||||
if(isspeakerinrange(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 removespeaker(self,var_01);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
timehack(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
wait 2;
|
||||
self notify(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
isspeakerinrange(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
|
||||
removespeaker(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;
|
||||
}
|
154
MW3/PC/MP/maps/mp/gametypes/_callbacksetup.gsc
Normal file
154
MW3/PC/MP/maps/mp/gametypes/_callbacksetup.gsc
Normal file
@ -0,0 +1,154 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_callbacksetup.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 15
|
||||
* Decompile Time: 219 ms
|
||||
* Timestamp: 10/27/2023 2:12:11 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::callback_startgametype;
|
||||
level.callbackplayerconnect = ::maps\mp\gametypes\_playerlogic::callback_playerconnect;
|
||||
level.callbackplayerdisconnect = ::maps\mp\gametypes\_playerlogic::callback_playerdisconnect;
|
||||
level.callbackplayerdamage = ::maps\mp\gametypes\_damage::callback_playerdamage;
|
||||
level.callbackplayerkilled = ::maps\mp\gametypes\_damage::callback_playerkilled;
|
||||
level.callbackcodeendgame = ::maps\mp\gametypes\_gamelogic::callback_codeendgame;
|
||||
level.callbackplayerlaststand = ::maps\mp\gametypes\_damage::callback_playerlaststand;
|
||||
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()
|
||||
{
|
||||
}
|
2410
MW3/PC/MP/maps/mp/gametypes/_class.gsc
Normal file
2410
MW3/PC/MP/maps/mp/gametypes/_class.gsc
Normal file
File diff suppressed because it is too large
Load Diff
3133
MW3/PC/MP/maps/mp/gametypes/_damage.gsc
Normal file
3133
MW3/PC/MP/maps/mp/gametypes/_damage.gsc
Normal file
File diff suppressed because it is too large
Load Diff
118
MW3/PC/MP/maps/mp/gametypes/_damagefeedback.gsc
Normal file
118
MW3/PC/MP/maps/mp/gametypes/_damagefeedback.gsc
Normal file
@ -0,0 +1,118 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_damagefeedback.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 58 ms
|
||||
* Timestamp: 10/27/2023 2:12:19 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;
|
||||
}
|
||||
}
|
95
MW3/PC/MP/maps/mp/gametypes/_deathicons.gsc
Normal file
95
MW3/PC/MP/maps/mp/gametypes/_deathicons.gsc
Normal file
@ -0,0 +1,95 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_deathicons.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 5
|
||||
* Decompile Time: 89 ms
|
||||
* Timestamp: 10/27/2023 2:12:20 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
|
||||
updatedeathiconsenabled()
|
||||
{
|
||||
}
|
||||
|
||||
//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 destroyslowly(param_03);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
destroyslowly(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
wait param_00;
|
||||
self fadeovertime(1);
|
||||
self.alpha = 0;
|
||||
wait 1;
|
||||
self destroy();
|
||||
}
|
322
MW3/PC/MP/maps/mp/gametypes/_equipment.gsc
Normal file
322
MW3/PC/MP/maps/mp/gametypes/_equipment.gsc
Normal file
@ -0,0 +1,322 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_equipment.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 8
|
||||
* Decompile Time: 125 ms
|
||||
* Timestamp: 10/27/2023 2:12:20 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
watchtrophyusage()
|
||||
{
|
||||
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 trophyactive(self);
|
||||
var_04 thread trophydisconnectwaiter(self);
|
||||
var_04 thread trophyplayerspawnwaiter(self);
|
||||
var_04 thread trophyuselistener(self);
|
||||
var_04 thread maps\mp\gametypes\_weapons::c4empkillstreakwait();
|
||||
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");
|
||||
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
|
||||
trophyactive(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::combinearrays(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_jammer":
|
||||
case "weapon_parabolic_knife":
|
||||
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");
|
||||
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::friendlyfirecheck(self.owner,var_02))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(var_0A))
|
||||
{
|
||||
switch(var_0A)
|
||||
{
|
||||
case "flash_grenade_mp":
|
||||
case "smoke_grenade_mp":
|
||||
case "concussion_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)
|
||||
{
|
||||
var_02 notify("destroyed_explosive");
|
||||
thread trophybreak();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
trophybreak()
|
||||
{
|
||||
playfxontag(common_scripts\utility::getfx("sentry_explode_mp"),self,"tag_origin");
|
||||
playfxontag(common_scripts\utility::getfx("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();
|
||||
}
|
||||
}
|
125
MW3/PC/MP/maps/mp/gametypes/_friendicons.gsc
Normal file
125
MW3/PC/MP/maps/mp/gametypes/_friendicons.gsc
Normal file
@ -0,0 +1,125 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_friendicons.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 7
|
||||
* Decompile Time: 104 ms
|
||||
* Timestamp: 10/27/2023 2:12:21 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
level.drawfriend = 0;
|
||||
game["headicon_allies"] = maps\mp\gametypes\_teams::init("allies");
|
||||
game["headicon_axis"] = maps\mp\gametypes\_teams::init("axis");
|
||||
precacheheadicon(game["headicon_allies"]);
|
||||
precacheheadicon(game["headicon_axis"]);
|
||||
precacheshader("waypoint_revive");
|
||||
level thread onplayerconnect();
|
||||
for(;;)
|
||||
{
|
||||
updatefriendiconsettings();
|
||||
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 showfriendicon();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
onplayerkilled()
|
||||
{
|
||||
self endon("disconnect");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("killed_player");
|
||||
self.headicon = "";
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
showfriendicon()
|
||||
{
|
||||
if(level.drawfriend)
|
||||
{
|
||||
if(self.pers["team"] == "allies")
|
||||
{
|
||||
self.headicon = game["headicon_allies"];
|
||||
self.var_6C1 = "allies";
|
||||
return;
|
||||
}
|
||||
|
||||
self.headicon = game["headicon_axis"];
|
||||
self.var_6C1 = "axis";
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
updatefriendiconsettings()
|
||||
{
|
||||
var_00 = maps\mp\_utility::getintproperty("scr_drawfriend",level.drawfriend);
|
||||
if(level.drawfriend != var_00)
|
||||
{
|
||||
level.drawfriend = var_00;
|
||||
updatefriendicons();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
updatefriendicons()
|
||||
{
|
||||
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.var_6C1 = "allies";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02.headicon = game["headicon_axis"];
|
||||
var_02.var_6C1 = "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 = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
2929
MW3/PC/MP/maps/mp/gametypes/_gamelogic.gsc
Normal file
2929
MW3/PC/MP/maps/mp/gametypes/_gamelogic.gsc
Normal file
File diff suppressed because it is too large
Load Diff
2280
MW3/PC/MP/maps/mp/gametypes/_gameobjects.gsc
Normal file
2280
MW3/PC/MP/maps/mp/gametypes/_gameobjects.gsc
Normal file
File diff suppressed because it is too large
Load Diff
190
MW3/PC/MP/maps/mp/gametypes/_globallogic.gsc
Normal file
190
MW3/PC/MP/maps/mp/gametypes/_globallogic.gsc
Normal file
@ -0,0 +1,190 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_globallogic.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 9
|
||||
* Decompile Time: 126 ms
|
||||
* Timestamp: 10/27/2023 2:12:29 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 = [];
|
||||
registerdvars();
|
||||
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
|
||||
registerdvars()
|
||||
{
|
||||
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::default_ontimelimit;
|
||||
level.onhalftime = ::maps\mp\gametypes\_gamelogic::default_onhalftime;
|
||||
level.ondeadevent = ::maps\mp\gametypes\_gamelogic::default_ondeadevent;
|
||||
level.ononeleftevent = ::maps\mp\gametypes\_gamelogic::default_ononeleftevent;
|
||||
level.onprecachegametype = ::blank;
|
||||
level.onstartgametype = ::blank;
|
||||
level.onplayerkilled = ::blank;
|
||||
level.autoassign = ::maps\mp\gametypes\_menus::menuautoassign;
|
||||
level.spectator = ::maps\mp\gametypes\_menus::menuspectator;
|
||||
level.class = ::maps\mp\gametypes\_menus::menuclass;
|
||||
level.allies = ::maps\mp\gametypes\_menus::menuallies;
|
||||
level.axis = ::maps\mp\gametypes\_menus::menuaxis;
|
||||
}
|
||||
|
||||
//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
|
||||
testmenu()
|
||||
{
|
||||
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::notifymessage(var_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
testshock()
|
||||
{
|
||||
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::giverankxp(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;
|
||||
}
|
||||
}
|
267
MW3/PC/MP/maps/mp/gametypes/_healthoverlay.gsc
Normal file
267
MW3/PC/MP/maps/mp/gametypes/_healthoverlay.gsc
Normal file
@ -0,0 +1,267 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_healthoverlay.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 8
|
||||
* Decompile Time: 134 ms
|
||||
* Timestamp: 10/27/2023 2:12:30 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
level.healthoverlaycutoff = 0.55;
|
||||
var_00 = 5;
|
||||
var_00 = maps\mp\gametypes\_tweakables::gettweakablevalue("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();
|
||||
}
|
||||
}
|
||||
|
||||
//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 healthregeneration(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
|
||||
healthregeneration(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::resetattackerlist();
|
||||
if(var_02)
|
||||
{
|
||||
maps\mp\gametypes\_missions::healthregenerated();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
wait_for_not_using_remote()
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
166
MW3/PC/MP/maps/mp/gametypes/_hostmigration.gsc
Normal file
166
MW3/PC/MP/maps/mp/gametypes/_hostmigration.gsc
Normal file
@ -0,0 +1,166 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_hostmigration.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 9
|
||||
* Decompile Time: 124 ms
|
||||
* Timestamp: 10/27/2023 2:12: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 hostmigrationtimerthink();
|
||||
}
|
||||
|
||||
level endon("host_migration_begin");
|
||||
hostmigrationwait();
|
||||
level.hostmigrationtimer = undefined;
|
||||
setdvar("ui_inhostmigration",0);
|
||||
level notify("host_migration_end");
|
||||
maps\mp\gametypes\_gamelogic::updatetimerpausedness();
|
||||
level thread maps\mp\gametypes\_gamelogic::updategameevents();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
hostmigrationwait()
|
||||
{
|
||||
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
|
||||
hostmigrationtimerthink_internal()
|
||||
{
|
||||
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
|
||||
hostmigrationtimerthink()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self setclientdvar("cg_scoreboardPingGraph","0");
|
||||
hostmigrationtimerthink_internal();
|
||||
if(self.hostmigrationcontrolsfrozen)
|
||||
{
|
||||
maps\mp\_utility::freezecontrolswrapper(0);
|
||||
}
|
||||
|
||||
self setclientdvar("cg_scoreboardPingGraph","1");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
waittillhostmigrationdone()
|
||||
{
|
||||
if(!isdefined(level.hostmigrationtimer))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_00 = gettime();
|
||||
level waittill("host_migration_end");
|
||||
return gettime() - var_00;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
waittillhostmigrationstarts(param_00)
|
||||
{
|
||||
if(isdefined(level.hostmigrationtimer))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level endon("host_migration_begin");
|
||||
wait param_00;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
waitlongdurationwithhostmigrationpause(param_00)
|
||||
{
|
||||
if(param_00 == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = gettime();
|
||||
var_02 = gettime() + param_00 * 1000;
|
||||
while(gettime() < var_02)
|
||||
{
|
||||
waittillhostmigrationstarts(var_02 - gettime() / 1000);
|
||||
if(isdefined(level.hostmigrationtimer))
|
||||
{
|
||||
var_03 = waittillhostmigrationdone();
|
||||
var_02 = var_02 + var_03;
|
||||
}
|
||||
}
|
||||
|
||||
waittillhostmigrationdone();
|
||||
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)
|
||||
{
|
||||
waittillhostmigrationstarts(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;
|
||||
}
|
78
MW3/PC/MP/maps/mp/gametypes/_hud.gsc
Normal file
78
MW3/PC/MP/maps/mp/gametypes/_hud.gsc
Normal file
@ -0,0 +1,78 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_hud.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 49 ms
|
||||
* Timestamp: 10/27/2023 2:12:31 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;
|
||||
}
|
1375
MW3/PC/MP/maps/mp/gametypes/_hud_message.gsc
Normal file
1375
MW3/PC/MP/maps/mp/gametypes/_hud_message.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1070
MW3/PC/MP/maps/mp/gametypes/_hud_util.gsc
Normal file
1070
MW3/PC/MP/maps/mp/gametypes/_hud_util.gsc
Normal file
File diff suppressed because it is too large
Load Diff
621
MW3/PC/MP/maps/mp/gametypes/_killcam.gsc
Normal file
621
MW3/PC/MP/maps/mp/gametypes/_killcam.gsc
Normal file
@ -0,0 +1,621 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_killcam.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 22
|
||||
* Decompile Time: 605 ms
|
||||
* Timestamp: 10/27/2023 2:12:37 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::gettweakablevalue("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 setkillcamentity(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 endedkillcamcleanup();
|
||||
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 dofinalkillcamfx(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 spawnedkillcamcleanup();
|
||||
if(self == param_09 && param_09 maps\mp\_utility::_hasperk("specialty_copycat") && isdefined(param_09.pers["copyCatLoadout"]) && !param_08 maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
thread waitkccopycatbutton(param_08);
|
||||
}
|
||||
|
||||
if(!level.showingfinalkillcam)
|
||||
{
|
||||
thread waitskipkillcambutton(param_06);
|
||||
}
|
||||
else
|
||||
{
|
||||
self notify("showing_final_killcam");
|
||||
}
|
||||
|
||||
thread endkillcamifnothingtoshow();
|
||||
waittillkillcamover();
|
||||
if(level.showingfinalkillcam)
|
||||
{
|
||||
thread maps\mp\gametypes\_playerlogic::spawnendofgame();
|
||||
return;
|
||||
}
|
||||
|
||||
thread calculatekillcamtime(var_0E);
|
||||
thread killcamcleanup(1);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
dofinalkillcamfx(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
|
||||
waittillkillcamover()
|
||||
{
|
||||
self endon("abort_killcam");
|
||||
wait self.killcamlength - 0.05;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
setkillcamentity(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
|
||||
waitskipkillcambutton(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
|
||||
waitkccopycatbutton(param_00)
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("killcam_ended");
|
||||
waitcopycatbutton(param_00);
|
||||
self notify("abort_killcam");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
waitdeathcopycatbutton(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
|
||||
waitskipkillcamsafespawnbutton()
|
||||
{
|
||||
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
|
||||
spawnedkillcamcleanup()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("killcam_ended");
|
||||
self waittill("spawned");
|
||||
thread killcamcleanup(0);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
endedkillcamcleanup()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("killcam_ended");
|
||||
level waittill("game_ended");
|
||||
thread killcamcleanup(1);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
killcamcleanup(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::clearkillcamstate();
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
cancelkillcamonuse()
|
||||
{
|
||||
self.cancelkillcam = 0;
|
||||
thread cancelkillcamonuse_specificbutton(::cancelkillcamusebutton,::cancelkillcamcallback);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
cancelkillcamusebutton()
|
||||
{
|
||||
return self usebuttonpressed();
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
cancelkillcamsafespawnbutton()
|
||||
{
|
||||
return self fragbuttonpressed();
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
cancelkillcamcallback()
|
||||
{
|
||||
self.cancelkillcam = 1;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
cancelkillcamsafespawncallback()
|
||||
{
|
||||
self.cancelkillcam = 1;
|
||||
self.wantsafespawn = 1;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
cancelkillcamonuse_specificbutton(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;
|
||||
}
|
||||
}
|
||||
}
|
591
MW3/PC/MP/maps/mp/gametypes/_menus.gsc
Normal file
591
MW3/PC/MP/maps/mp/gametypes/_menus.gsc
Normal file
@ -0,0 +1,591 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_menus.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 15
|
||||
* Decompile Time: 229 ms
|
||||
* Timestamp: 10/27/2023 2:12:38 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 onmenuresponse();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
isoptionsmenu(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
|
||||
onmenuresponse()
|
||||
{
|
||||
self endon("disconnect");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("menuresponse",var_00,var_01);
|
||||
if(var_01 == "back")
|
||||
{
|
||||
self closepopupmenu();
|
||||
self closeingamemenu();
|
||||
if(isoptionsmenu(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::quickresponses(var_01);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
getteamassignment()
|
||||
{
|
||||
var_00[0] = "allies";
|
||||
if(!level.teambased)
|
||||
{
|
||||
return var_7B[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::countplayers();
|
||||
if(var_02["allies"] == var_02["axis"])
|
||||
{
|
||||
if(getteamscore("allies") == getteamscore("axis"))
|
||||
{
|
||||
var_01 = var_7B[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();
|
||||
}
|
||||
}
|
||||
|
||||
addtoteam(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 bypassclasschoice();
|
||||
}
|
||||
|
||||
if(!isalive(self))
|
||||
{
|
||||
thread maps\mp\gametypes\_playerlogic::predictabouttospawnplayerovertime(0.1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
bypassclasschoice()
|
||||
{
|
||||
self.selectedclass = 1;
|
||||
self [[ level.class ]]("class0");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
beginteamchoice()
|
||||
{
|
||||
self openpopupmenu(game["menu_team"]);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
showmainmenuforteam()
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
addtoteam("allies");
|
||||
self.pers["class"] = undefined;
|
||||
self.class = undefined;
|
||||
self notify("end_respawn");
|
||||
}
|
||||
|
||||
beginclasschoice();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
menuaxis()
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
addtoteam("axis");
|
||||
self.pers["class"] = undefined;
|
||||
self.class = undefined;
|
||||
self notify("end_respawn");
|
||||
}
|
||||
|
||||
beginclasschoice();
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
menuspectator()
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
addtoteam("spectator");
|
||||
self.pers["class"] = undefined;
|
||||
self.class = undefined;
|
||||
thread maps\mp\gametypes\_playerlogic::spawnspectator();
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
menuclass(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::getweaponchoice(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::setclass(self.pers["class"]);
|
||||
self.tag_stowed_back = undefined;
|
||||
self.tag_stowed_hip = undefined;
|
||||
maps\mp\gametypes\_class::giveloadout(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::isinkillcam())
|
||||
{
|
||||
thread maps\mp\gametypes\_playerlogic::spawnclient();
|
||||
}
|
||||
}
|
||||
|
||||
thread maps\mp\gametypes\_spectating::setspectatepermissions();
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
addtoteam(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::updatemainmenu();
|
||||
if(param_00 == "spectator")
|
||||
{
|
||||
self notify("joined_spectators");
|
||||
level notify("joined_team");
|
||||
return;
|
||||
}
|
||||
|
||||
self notify("joined_team");
|
||||
level notify("joined_team");
|
||||
}
|
3570
MW3/PC/MP/maps/mp/gametypes/_missions.gsc
Normal file
3570
MW3/PC/MP/maps/mp/gametypes/_missions.gsc
Normal file
File diff suppressed because it is too large
Load Diff
536
MW3/PC/MP/maps/mp/gametypes/_music_and_dialog.gsc
Normal file
536
MW3/PC/MP/maps/mp/gametypes/_music_and_dialog.gsc
Normal 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: PC
|
||||
* Function Count: 11
|
||||
* Decompile Time: 276 ms
|
||||
* Timestamp: 10/27/2023 2:12:43 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 musiccontroller();
|
||||
level thread ongameended();
|
||||
level thread onroundswitch();
|
||||
}
|
||||
|
||||
//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::leaderdialogonplayer("allies_gametype");
|
||||
}
|
||||
else if(isdefined(game["dialog"]["axis_gametype"]) && self.team == "axis")
|
||||
{
|
||||
maps\mp\_utility::leaderdialogonplayer("axis_gametype");
|
||||
}
|
||||
else if(!self issplitscreenplayer() || self issplitscreenplayerprimary())
|
||||
{
|
||||
maps\mp\_utility::leaderdialogonplayer("gametype");
|
||||
}
|
||||
}
|
||||
|
||||
maps\mp\_utility::gameflagwait("prematch_done");
|
||||
if(self.team == game["attackers"])
|
||||
{
|
||||
if(!self issplitscreenplayer() || self issplitscreenplayerprimary())
|
||||
{
|
||||
maps\mp\_utility::leaderdialogonplayer("offense_obj","introboost");
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(!self issplitscreenplayer() || self issplitscreenplayerprimary())
|
||||
{
|
||||
maps\mp\_utility::leaderdialogonplayer("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::leaderdialogonplayer("last_alive");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
onroundswitch()
|
||||
{
|
||||
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::leaderdialogonplayer("halftime");
|
||||
}
|
||||
break;
|
||||
|
||||
case "overtime":
|
||||
foreach(var_02 in level.players)
|
||||
{
|
||||
if(var_02 issplitscreenplayer() && !var_02 issplitscreenplayerprimary())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_02 maps\mp\_utility::leaderdialogonplayer("overtime");
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
foreach(var_02 in level.players)
|
||||
{
|
||||
if(var_02 issplitscreenplayer() && !var_02 issplitscreenplayerprimary())
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_02 maps\mp\_utility::leaderdialogonplayer("side_switch");
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
ongameended()
|
||||
{
|
||||
level thread roundwinnerdialog();
|
||||
level thread gamewinnerdialog();
|
||||
level waittill("game_win",var_00);
|
||||
if(level.teambased)
|
||||
{
|
||||
if(level.splitscreen)
|
||||
{
|
||||
if(var_00 == "allies")
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["victory_allies"],"allies");
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_00 == "axis")
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["victory_axis"],"axis");
|
||||
return;
|
||||
}
|
||||
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["nuke_music"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_00 == "allies")
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["victory_allies"],"allies");
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["defeat_axis"],"axis");
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_00 == "axis")
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["victory_axis"],"axis");
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["defeat_allies"],"allies");
|
||||
return;
|
||||
}
|
||||
|
||||
maps\mp\_utility::playsoundonplayers(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
|
||||
roundwinnerdialog()
|
||||
{
|
||||
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::leaderdialog("round_success","allies");
|
||||
maps\mp\_utility::leaderdialog("round_failure","axis");
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_00 == "axis")
|
||||
{
|
||||
maps\mp\_utility::leaderdialog("round_success","axis");
|
||||
maps\mp\_utility::leaderdialog("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::leaderdialog("mission_success","allies");
|
||||
maps\mp\_utility::leaderdialog("mission_failure","axis");
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_00 == "axis")
|
||||
{
|
||||
maps\mp\_utility::leaderdialog("mission_success","axis");
|
||||
maps\mp\_utility::leaderdialog("mission_failure","allies");
|
||||
return;
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("mission_draw");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
musiccontroller()
|
||||
{
|
||||
level endon("game_ended");
|
||||
if(!level.hardcoremode)
|
||||
{
|
||||
thread suspensemusic();
|
||||
}
|
||||
|
||||
level waittill("match_ending_soon",var_00);
|
||||
if(maps\mp\_utility::getwatcheddvar("roundlimit") == 1 || game["roundsPlayed"] == maps\mp\_utility::getwatcheddvar("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::playsoundonplayers(game["music"]["winning_allies"],"allies");
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["losing_axis"],"axis");
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("winning_time","allies");
|
||||
maps\mp\_utility::leaderdialog("losing_time","axis");
|
||||
}
|
||||
else if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
|
||||
{
|
||||
if(!level.hardcoremode)
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["winning_axis"],"axis");
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["losing_allies"],"allies");
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("winning_time","axis");
|
||||
maps\mp\_utility::leaderdialog("losing_time","allies");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!level.hardcoremode)
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["losing_time"]);
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("timesup");
|
||||
}
|
||||
}
|
||||
else if(var_00 == "score")
|
||||
{
|
||||
if(level.teambased)
|
||||
{
|
||||
if(game["teamScores"]["allies"] > game["teamScores"]["axis"])
|
||||
{
|
||||
if(!level.hardcoremode)
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["winning_allies"],"allies");
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["losing_axis"],"axis");
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("winning_score","allies");
|
||||
maps\mp\_utility::leaderdialog("losing_score","axis");
|
||||
}
|
||||
else if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
|
||||
{
|
||||
if(!level.hardcoremode)
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["winning_axis"],"axis");
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["losing_allies"],"allies");
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("winning_score","axis");
|
||||
maps\mp\_utility::leaderdialog("losing_score","allies");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = lib_036E::func_2B78();
|
||||
var_02 = lib_036E::func_2B7A();
|
||||
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::leaderdialogonplayer("winning_score");
|
||||
maps\mp\_utility::leaderdialogonplayers("losing_score",var_02);
|
||||
}
|
||||
}
|
||||
|
||||
level waittill("match_ending_very_soon");
|
||||
maps\mp\_utility::leaderdialog("timesup");
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(!level.hardcoremode)
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["music"]["losing_allies"]);
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("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::playsoundonplayers(game["music"]["suspense"][randomint(var_00)]);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
finalkillcammusic()
|
||||
{
|
||||
self waittill("showing_final_killcam");
|
||||
}
|
184
MW3/PC/MP/maps/mp/gametypes/_objpoints.gsc
Normal file
184
MW3/PC/MP/maps/mp/gametypes/_objpoints.gsc
Normal file
@ -0,0 +1,184 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_objpoints.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 9
|
||||
* Decompile Time: 140 ms
|
||||
* Timestamp: 10/27/2023 2:12:44 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
|
||||
createteamobjpoint(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
var_06 = getobjpointbyname(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 = getobjpointbyname(param_00);
|
||||
var_02 updateorigin(param_01);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
getobjpointbyname(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;
|
||||
}
|
554
MW3/PC/MP/maps/mp/gametypes/_persistance.gsc
Normal file
554
MW3/PC/MP/maps/mp/gametypes/_persistance.gsc
Normal file
@ -0,0 +1,554 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_persistance.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 22
|
||||
* Decompile Time: 318 ms
|
||||
* Timestamp: 10/27/2023 2:12:45 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 updatebufferedstats();
|
||||
level thread uploadglobalstatcounters();
|
||||
}
|
||||
|
||||
//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
|
||||
statget(param_00)
|
||||
{
|
||||
return self getplayerdata(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
statset(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
|
||||
statsetchild(param_00,param_01,param_02)
|
||||
{
|
||||
if(!maps\mp\_utility::rankingenabled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self setplayerdata(param_00,param_01,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
stataddchild(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
|
||||
statgetchildbuffered(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
|
||||
stataddchildbuffered(param_00,param_01,param_02)
|
||||
{
|
||||
if(!maps\mp\_utility::rankingenabled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_03 = statgetchildbuffered(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 = statgetbuffered(param_00) + param_01;
|
||||
if(var_03 > param_02)
|
||||
{
|
||||
var_03 = param_02;
|
||||
}
|
||||
|
||||
if(var_03 < statgetbuffered(param_00))
|
||||
{
|
||||
var_03 = param_02;
|
||||
}
|
||||
|
||||
statsetbuffered(param_00,var_03);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
stataddchildbufferedwithmax(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
if(!maps\mp\_utility::rankingenabled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_04 = statgetchildbuffered(param_00,param_01) + param_02;
|
||||
if(var_04 > param_03)
|
||||
{
|
||||
var_04 = param_03;
|
||||
}
|
||||
|
||||
if(var_04 < statgetchildbuffered(param_00,param_01))
|
||||
{
|
||||
var_04 = param_03;
|
||||
}
|
||||
|
||||
statsetchildbuffered(param_00,param_01,var_04);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
statgetbuffered(param_00)
|
||||
{
|
||||
return self.bufferedstats[param_00];
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
statsetbuffered(param_00,param_01)
|
||||
{
|
||||
if(!maps\mp\_utility::rankingenabled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self.bufferedstats[param_00] = param_01;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
stataddbuffered(param_00,param_01)
|
||||
{
|
||||
if(!maps\mp\_utility::rankingenabled())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_02 = statgetbuffered(param_00);
|
||||
statsetbuffered(param_00,var_02 + param_01);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
updatebufferedstats()
|
||||
{
|
||||
wait 0.15;
|
||||
var_00 = 0;
|
||||
while(!level.gameended)
|
||||
{
|
||||
maps\mp\gametypes\_hostmigration::waittillhostmigrationdone();
|
||||
var_00++;
|
||||
if(var_00 >= level.players.size)
|
||||
{
|
||||
var_00 = 0;
|
||||
}
|
||||
|
||||
if(isdefined(level.players[var_00]))
|
||||
{
|
||||
level.players[var_00] writebufferedstats();
|
||||
level.players[var_00] updateweaponbufferedstats();
|
||||
}
|
||||
|
||||
wait 2;
|
||||
}
|
||||
|
||||
foreach(var_02 in level.players)
|
||||
{
|
||||
var_02 writebufferedstats();
|
||||
var_02 updateweaponbufferedstats();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
writebufferedstats()
|
||||
{
|
||||
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::iskillstreakweapon(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::iskillstreakweapon(var_00) || maps\mp\_utility::isenvironmentweapon(var_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = strtok(var_00,"_");
|
||||
if(var_01[0] == "iw5")
|
||||
{
|
||||
}
|
||||
|
||||
if(var_7B[0] == "alt")
|
||||
{
|
||||
foreach(var_03 in var_7B)
|
||||
{
|
||||
if(var_03 == "gl" || var_03 == "gp25" || var_03 == "m320")
|
||||
{
|
||||
var_7B[0] = "gl";
|
||||
break;
|
||||
}
|
||||
|
||||
if(var_03 == "shotgun")
|
||||
{
|
||||
var_7B[0] = "shotgun";
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_7B[0] == "alt")
|
||||
{
|
||||
var_7B[0] = var_7B[1] + "_" + var_7B[2];
|
||||
}
|
||||
}
|
||||
|
||||
if(var_7B[0] == "gl" || var_7B[0] == "shotgun")
|
||||
{
|
||||
if(self.trackingweaponshots > 0)
|
||||
{
|
||||
incrementattachmentstat(var_7B[0],"shots",self.trackingweaponshots);
|
||||
maps\mp\_matchdata::logattachmentstat(var_7B[0],"shots",self.trackingweaponshots);
|
||||
}
|
||||
|
||||
if(self.trackingweaponkills > 0)
|
||||
{
|
||||
incrementattachmentstat(var_7B[0],"kills",self.trackingweaponkills);
|
||||
maps\mp\_matchdata::logattachmentstat(var_7B[0],"kills",self.trackingweaponkills);
|
||||
}
|
||||
|
||||
if(self.trackingweaponhits > 0)
|
||||
{
|
||||
incrementattachmentstat(var_7B[0],"hits",self.trackingweaponhits);
|
||||
maps\mp\_matchdata::logattachmentstat(var_7B[0],"hits",self.trackingweaponhits);
|
||||
}
|
||||
|
||||
if(self.trackingweaponheadshots > 0)
|
||||
{
|
||||
incrementattachmentstat(var_7B[0],"headShots",self.trackingweaponheadshots);
|
||||
maps\mp\_matchdata::logattachmentstat(var_7B[0],"headShots",self.trackingweaponheadshots);
|
||||
}
|
||||
|
||||
if(self.trackingweapondeaths > 0)
|
||||
{
|
||||
incrementattachmentstat(var_7B[0],"deaths",self.trackingweapondeaths);
|
||||
maps\mp\_matchdata::logattachmentstat(var_7B[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::iscacprimaryweapon(var_7B[0]) && !maps\mp\_utility::iscacsecondaryweapon(var_7B[0]))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.trackingweaponshots > 0)
|
||||
{
|
||||
incrementweaponstat(var_7B[0],"shots",self.trackingweaponshots);
|
||||
maps\mp\_matchdata::logweaponstat(var_7B[0],"shots",self.trackingweaponshots);
|
||||
}
|
||||
|
||||
if(self.trackingweaponkills > 0)
|
||||
{
|
||||
incrementweaponstat(var_7B[0],"kills",self.trackingweaponkills);
|
||||
maps\mp\_matchdata::logweaponstat(var_7B[0],"kills",self.trackingweaponkills);
|
||||
}
|
||||
|
||||
if(self.trackingweaponhits > 0)
|
||||
{
|
||||
incrementweaponstat(var_7B[0],"hits",self.trackingweaponhits);
|
||||
maps\mp\_matchdata::logweaponstat(var_7B[0],"hits",self.trackingweaponhits);
|
||||
}
|
||||
|
||||
if(self.trackingweaponheadshots > 0)
|
||||
{
|
||||
incrementweaponstat(var_7B[0],"headShots",self.trackingweaponheadshots);
|
||||
maps\mp\_matchdata::logweaponstat(var_7B[0],"headShots",self.trackingweaponheadshots);
|
||||
}
|
||||
|
||||
if(self.trackingweapondeaths > 0)
|
||||
{
|
||||
incrementweaponstat(var_7B[0],"deaths",self.trackingweapondeaths);
|
||||
maps\mp\_matchdata::logweaponstat(var_7B[0],"deaths",self.trackingweapondeaths);
|
||||
}
|
||||
|
||||
var_7B = strtok(var_01,"_");
|
||||
if(var_7B[0] != "none")
|
||||
{
|
||||
for(var_05 = 0;var_05 < var_7B.size;var_05++ = var_7B[0])
|
||||
{
|
||||
if(var_7B[var_05] == "mp" || var_7B[var_05] == "scope1" || var_7B[var_05] == "scope2" || var_7B[var_05] == "scope3" || var_7B[var_05] == "scope4" || var_7B[var_05] == "scope5" || var_7B[var_05] == "scope6" || var_7B[var_05] == "scope7" || var_7B[var_05] == "scope8" || var_7B[var_05] == "scope9" || var_7B[var_05] == "scope10")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(issubstr(var_7B[var_05],"camo"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(issubstr(var_7B[var_05],"scope") && !issubstr(var_7B[var_05],"vz"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_7B[var_05] == "alt")
|
||||
{
|
||||
var_05 = var_05 + 2;
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_7B[var_05] == "iw5")
|
||||
{
|
||||
var_05 = var_05 + 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
var_7B[var_05] = maps\mp\_utility::validateattachment(var_7B[var_05]);
|
||||
if(var_7B[var_05] == "gl" || var_7B[var_05] == "shotgun")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(issubstr(var_7B[var_05],"scope") && issubstr(var_7B[var_05],"vz"))
|
||||
{
|
||||
var_7B[var_05] = "vzscope";
|
||||
}
|
||||
|
||||
if(var_05 == 0 && var_7B[var_05] != "iw5" && var_7B[var_05] != "alt")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(self.trackingweaponshots > 0)
|
||||
{
|
||||
incrementattachmentstat(var_7B[var_05],"shots",self.trackingweaponshots);
|
||||
maps\mp\_matchdata::logattachmentstat(var_7B[var_05],"shots",self.trackingweaponshots);
|
||||
}
|
||||
|
||||
if(self.trackingweaponkills > 0)
|
||||
{
|
||||
incrementattachmentstat(var_7B[var_05],"kills",self.trackingweaponkills);
|
||||
maps\mp\_matchdata::logattachmentstat(var_7B[var_05],"kills",self.trackingweaponkills);
|
||||
}
|
||||
|
||||
if(self.trackingweaponhits > 0)
|
||||
{
|
||||
incrementattachmentstat(var_7B[var_05],"hits",self.trackingweaponhits);
|
||||
maps\mp\_matchdata::logattachmentstat(var_7B[var_05],"hits",self.trackingweaponhits);
|
||||
}
|
||||
|
||||
if(self.trackingweaponheadshots > 0)
|
||||
{
|
||||
incrementattachmentstat(var_7B[var_05],"headShots",self.trackingweaponheadshots);
|
||||
maps\mp\_matchdata::logattachmentstat(var_7B[var_05],"headShots",self.trackingweaponheadshots);
|
||||
}
|
||||
|
||||
if(self.trackingweapondeaths > 0)
|
||||
{
|
||||
incrementattachmentstat(var_7B[var_05],"deaths",self.trackingweapondeaths);
|
||||
maps\mp\_matchdata::logattachmentstat(var_7B[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
|
||||
uploadglobalstatcounters()
|
||||
{
|
||||
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);
|
||||
}
|
32
MW3/PC/MP/maps/mp/gametypes/_playercards.gsc
Normal file
32
MW3/PC/MP/maps/mp/gametypes/_playercards.gsc
Normal file
@ -0,0 +1,32 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_playercards.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 2
|
||||
* Decompile Time: 50 ms
|
||||
* Timestamp: 10/27/2023 2:12:46 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\_persistance::statget("cardIcon");
|
||||
var_02 = tablelookupbyrow("mp/cardIconTable.csv",var_01,0);
|
||||
var_00 setcardicon(var_02);
|
||||
var_03 = var_00 maps\mp\gametypes\_persistance::statget("cardTitle");
|
||||
var_04 = tablelookupbyrow("mp/cardTitleTable.csv",var_03,0);
|
||||
var_00 setcardtitle(var_04);
|
||||
var_05 = var_00 maps\mp\gametypes\_persistance::statget("cardNameplate");
|
||||
var_00 setcardnameplate(var_05);
|
||||
}
|
||||
}
|
1639
MW3/PC/MP/maps/mp/gametypes/_playerlogic.gsc
Normal file
1639
MW3/PC/MP/maps/mp/gametypes/_playerlogic.gsc
Normal file
File diff suppressed because it is too large
Load Diff
253
MW3/PC/MP/maps/mp/gametypes/_portable_radar.gsc
Normal file
253
MW3/PC/MP/maps/mp/gametypes/_portable_radar.gsc
Normal file
@ -0,0 +1,253 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_portable_radar.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 10
|
||||
* Decompile Time: 150 ms
|
||||
* Timestamp: 10/27/2023 2:12:49 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 portableradarproximitytracker();
|
||||
thread portableradarwatchowner(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
|
||||
portableradarwatchowner(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::friendlyfirecheck(self.owner,var_02))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(var_0A))
|
||||
{
|
||||
switch(var_0A)
|
||||
{
|
||||
case "flash_grenade_mp":
|
||||
case "smoke_grenade_mp":
|
||||
case "concussion_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::getfx("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
|
||||
portableradarproximitytracker()
|
||||
{
|
||||
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;
|
||||
}
|
||||
}
|
270
MW3/PC/MP/maps/mp/gametypes/_quickmessages.gsc
Normal file
270
MW3/PC/MP/maps/mp/gametypes/_quickmessages.gsc
Normal file
@ -0,0 +1,270 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_quickmessages.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 7
|
||||
* Decompile Time: 105 ms
|
||||
* Timestamp: 10/27/2023 2:12:49 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;
|
||||
restoreheadicon();
|
||||
}
|
||||
|
||||
//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;
|
||||
restoreheadicon();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
quickresponses(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;
|
||||
restoreheadicon();
|
||||
}
|
||||
|
||||
//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.var_6C1 = "none";
|
||||
self.headicon = "talkingicon";
|
||||
self playsound(var_02 + param_00);
|
||||
self sayall(param_01);
|
||||
return;
|
||||
}
|
||||
|
||||
if(self.sessionteam == "allies")
|
||||
{
|
||||
self.var_6C1 = "allies";
|
||||
}
|
||||
else if(self.sessionteam == "axis")
|
||||
{
|
||||
self.var_6C1 = "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.var_6C1))
|
||||
{
|
||||
self.oldheadiconteam = self.var_6C1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
restoreheadicon()
|
||||
{
|
||||
if(isdefined(self.oldheadicon))
|
||||
{
|
||||
self.headicon = self.oldheadicon;
|
||||
}
|
||||
|
||||
if(isdefined(self.oldheadiconteam))
|
||||
{
|
||||
self.var_6C1 = self.oldheadiconteam;
|
||||
}
|
||||
}
|
1277
MW3/PC/MP/maps/mp/gametypes/_rank.gsc
Normal file
1277
MW3/PC/MP/maps/mp/gametypes/_rank.gsc
Normal file
File diff suppressed because it is too large
Load Diff
304
MW3/PC/MP/maps/mp/gametypes/_scrambler.gsc
Normal file
304
MW3/PC/MP/maps/mp/gametypes/_scrambler.gsc
Normal file
@ -0,0 +1,304 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_scrambler.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 10
|
||||
* Decompile Time: 137 ms
|
||||
* Timestamp: 10/27/2023 2:12:53 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
setscrambler()
|
||||
{
|
||||
self setoffhandsecondaryclass("flash");
|
||||
maps\mp\_utility::_giveweapon("scrambler_mp",0);
|
||||
self givestartammo("scrambler_mp");
|
||||
thread monitorscrambleruse();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
unsetscrambler()
|
||||
{
|
||||
self notify("end_monitorScramblerUse");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
deletescrambler(param_00)
|
||||
{
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
foreach(var_02 in level.players)
|
||||
{
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
var_02.inplayerscrambler = undefined;
|
||||
}
|
||||
}
|
||||
|
||||
param_00 notify("death");
|
||||
param_00 delete();
|
||||
self.deployedscrambler = undefined;
|
||||
var_04 = [];
|
||||
var_04 = maps\mp\_utility::cleanarray(level.scramblers);
|
||||
level.scramblers = var_04;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
monitorscrambleruse()
|
||||
{
|
||||
self notify("end_monitorScramblerUse");
|
||||
self endon("end_monitorScramblerUse");
|
||||
self endon("disconnect");
|
||||
level endon("game_ended");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("grenade_fire",var_00,var_01);
|
||||
if(var_01 == "scrambler" || var_01 == "scrambler_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("scrambler_mp",self getweaponammostock("trophy_mp") + 1);
|
||||
continue;
|
||||
}
|
||||
|
||||
var_00.origin = var_03["position"];
|
||||
}
|
||||
|
||||
var_00 show();
|
||||
if(isdefined(self.deployedscrambler))
|
||||
{
|
||||
deletescrambler(self.deployedscrambler);
|
||||
}
|
||||
|
||||
var_04 = var_00.origin;
|
||||
var_05 = spawn("script_model",var_04);
|
||||
var_05.health = 100;
|
||||
var_05.team = self.team;
|
||||
var_05.owner = self;
|
||||
var_05 setcandamage(1);
|
||||
var_05 makescrambler(self);
|
||||
var_05 scramblersetup(self);
|
||||
var_05 thread maps\mp\gametypes\_weapons::createbombsquadmodel("weapon_jammer_bombsquad","tag_origin",level.otherteam[self.team],self);
|
||||
level.scramblers[level.scramblers.size] = var_05;
|
||||
self.deployedscrambler = var_05;
|
||||
self.changingweapon = undefined;
|
||||
wait 0.05;
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
var_00 delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
scramblersetup(param_00)
|
||||
{
|
||||
self setmodel("weapon_jammer");
|
||||
if(level.teambased)
|
||||
{
|
||||
maps\mp\_entityheadicons::setteamheadicon(self.team,(0,0,20));
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_entityheadicons::setplayerheadicon(param_00,(0,0,20));
|
||||
}
|
||||
|
||||
thread scramblerdamagelistener(param_00);
|
||||
thread scrambleruselistener(param_00);
|
||||
param_00 thread scramblerwatchowner(self);
|
||||
thread scramblerbeepsounds();
|
||||
thread maps\mp\_utility::notusableforjoiningplayers(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
scramblerwatchowner(param_00)
|
||||
{
|
||||
param_00 endon("death");
|
||||
level endon("game_ended");
|
||||
common_scripts\utility::waittill_any("disconnect","joined_team","joined_spectators","death");
|
||||
level thread deletescrambler(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
scramblerbeepsounds()
|
||||
{
|
||||
self endon("death");
|
||||
level endon("game_ended");
|
||||
for(;;)
|
||||
{
|
||||
wait 3;
|
||||
self playsound("scrambler_beep");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
scramblerdamagelistener(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::friendlyfirecheck(self.owner,var_02))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(var_0A))
|
||||
{
|
||||
switch(var_0A)
|
||||
{
|
||||
case "flash_grenade_mp":
|
||||
case "smoke_grenade_mp":
|
||||
case "concussion_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(isplayer(var_02))
|
||||
{
|
||||
var_02 maps\mp\gametypes\_damagefeedback::updatedamagefeedback("scrambler");
|
||||
}
|
||||
|
||||
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::getfx("equipment_explode"),self.origin);
|
||||
var_02 thread deletescrambler(self);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
scrambleruselistener(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
level endon("game_ended");
|
||||
param_00 endon("disconnect");
|
||||
self setcursorhint("HINT_NOICON");
|
||||
self sethintstring(&"MP_PATCH_PICKUP_SCRAMBLER");
|
||||
maps\mp\_utility::setselfusable(param_00);
|
||||
for(;;)
|
||||
{
|
||||
self waittill("trigger",var_01);
|
||||
var_01 playlocalsound("scavenger_pack_pickup");
|
||||
if(var_01 getammocount("scrambler_mp") == 0)
|
||||
{
|
||||
var_01 setscrambler();
|
||||
}
|
||||
|
||||
var_01 thread deletescrambler(self);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
scramblerproximitytracker()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
self endon("faux_spawn");
|
||||
level endon("game_ended");
|
||||
self.scramproxyactive = 0;
|
||||
var_00 = 512;
|
||||
for(;;)
|
||||
{
|
||||
wait 0.05;
|
||||
self.scramproxyactive = 0;
|
||||
foreach(var_02 in level.scramblers)
|
||||
{
|
||||
if(!isdefined(var_02))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!maps\mp\_utility::isreallyalive(self))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = distancesquared(var_02.origin,self.origin);
|
||||
if((level.teambased && var_02.team != self.team) || !level.teambased && isdefined(var_02.owner) && var_02.owner != self)
|
||||
{
|
||||
if(var_03 < var_00 * var_00)
|
||||
{
|
||||
self.inplayerscrambler = var_02.owner;
|
||||
}
|
||||
else
|
||||
{
|
||||
self.inplayerscrambler = undefined;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_03 < var_00 * var_00)
|
||||
{
|
||||
self.scramproxyactive = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(self.scramproxyactive)
|
||||
{
|
||||
if(!maps\mp\_utility::_hasperk("specialty_blindeye"))
|
||||
{
|
||||
maps\mp\_utility::giveperk("specialty_blindeye",0);
|
||||
self.scramproxyperk = 1;
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(self.scramproxyperk) && self.scramproxyperk)
|
||||
{
|
||||
if(!maps\mp\killstreaks\_perkstreaks::isperkstreakon("specialty_blindeye_ks"))
|
||||
{
|
||||
maps\mp\_utility::_unsetperk("specialty_blindeye");
|
||||
}
|
||||
|
||||
self.scramproxyperk = 0;
|
||||
}
|
||||
}
|
||||
}
|
123
MW3/PC/MP/maps/mp/gametypes/_serversettings.gsc
Normal file
123
MW3/PC/MP/maps/mp/gametypes/_serversettings.gsc
Normal file
@ -0,0 +1,123 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_serversettings.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 3
|
||||
* Decompile Time: 60 ms
|
||||
* Timestamp: 10/27/2023 2:12:53 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::gettweakablevalue("team","fftype");
|
||||
makedvarserverinfo("ui_friendlyfire",level.friendlyfire);
|
||||
constraingametype(getdvar("g_gametype"));
|
||||
for(;;)
|
||||
{
|
||||
updateserversettings();
|
||||
wait 5;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
updateserversettings()
|
||||
{
|
||||
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::gettweakablevalue("team","fftype");
|
||||
if(level.friendlyfire != var_02)
|
||||
{
|
||||
level.friendlyfire = var_02;
|
||||
setdvar("ui_friendlyfire",level.friendlyfire);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
constraingametype(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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
187
MW3/PC/MP/maps/mp/gametypes/_shellshock.gsc
Normal file
187
MW3/PC/MP/maps/mp/gametypes/_shellshock.gsc
Normal file
@ -0,0 +1,187 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_shellshock.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 9
|
||||
* Decompile Time: 134 ms
|
||||
* Timestamp: 10/27/2023 2:12:54 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
|
||||
endondeath()
|
||||
{
|
||||
self waittill("death");
|
||||
waittillframeend;
|
||||
self notify("end_explode");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
grenade_earthquake()
|
||||
{
|
||||
thread endondeath();
|
||||
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_7B)
|
||||
{
|
||||
self openmenu(var_08);
|
||||
}
|
||||
|
||||
if(isalive(self))
|
||||
{
|
||||
common_scripts\utility::waittill_notify_or_timeout("death",2);
|
||||
}
|
||||
|
||||
foreach(var_08 in var_7B)
|
||||
{
|
||||
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_7B)
|
||||
{
|
||||
self openmenu(var_08);
|
||||
}
|
||||
|
||||
if(isalive(self))
|
||||
{
|
||||
common_scripts\utility::waittill_notify_or_timeout("death",7);
|
||||
}
|
||||
|
||||
foreach(var_08 in var_7B)
|
||||
{
|
||||
self closemenu(var_08);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
c4_earthquake()
|
||||
{
|
||||
thread endondeath();
|
||||
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);
|
||||
}
|
1611
MW3/PC/MP/maps/mp/gametypes/_spawnlogic.gsc
Normal file
1611
MW3/PC/MP/maps/mp/gametypes/_spawnlogic.gsc
Normal file
File diff suppressed because it is too large
Load Diff
161
MW3/PC/MP/maps/mp/gametypes/_spectating.gsc
Normal file
161
MW3/PC/MP/maps/mp/gametypes/_spectating.gsc
Normal file
@ -0,0 +1,161 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_spectating.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 8
|
||||
* Decompile Time: 130 ms
|
||||
* Timestamp: 10/27/2023 2:12:57 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 onjoinedteam();
|
||||
var_00 thread onjoinedspectators();
|
||||
var_00 thread onspectatingclient();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
onjoinedteam()
|
||||
{
|
||||
self endon("disconnect");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("joined_team");
|
||||
setspectatepermissions();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
onjoinedspectators()
|
||||
{
|
||||
self endon("disconnect");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("joined_spectators");
|
||||
setspectatepermissions();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
onspectatingclient()
|
||||
{
|
||||
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::gettweakablevalue("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);
|
||||
}
|
||||
}
|
||||
}
|
1020
MW3/PC/MP/maps/mp/gametypes/_teams.gsc
Normal file
1020
MW3/PC/MP/maps/mp/gametypes/_teams.gsc
Normal file
File diff suppressed because it is too large
Load Diff
430
MW3/PC/MP/maps/mp/gametypes/_tweakables.gsc
Normal file
430
MW3/PC/MP/maps/mp/gametypes/_tweakables.gsc
Normal file
@ -0,0 +1,430 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\_tweakables.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 8
|
||||
* Decompile Time: 130 ms
|
||||
* Timestamp: 10/27/2023 2:12:59 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
gettweakabledvarvalue(param_00,param_01)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "rule":
|
||||
var_02 = level.rules[param_01].dvar;
|
||||
break;
|
||||
|
||||
case "game":
|
||||
var_02 = level.gametweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "team":
|
||||
var_02 = level.teamtweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "player":
|
||||
var_02 = level.playertweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "class":
|
||||
var_02 = level.classtweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "weapon":
|
||||
var_02 = level.weapontweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "hardpoint":
|
||||
var_02 = level.hardpointtweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "hud":
|
||||
var_02 = level.hudtweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
default:
|
||||
var_02 = undefined;
|
||||
break;
|
||||
}
|
||||
|
||||
var_03 = getdvarint(var_02);
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
gettweakabledvar(param_00,param_01)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "rule":
|
||||
var_02 = level.rules[param_01].dvar;
|
||||
break;
|
||||
|
||||
case "game":
|
||||
var_02 = level.gametweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "team":
|
||||
var_02 = level.teamtweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "player":
|
||||
var_02 = level.playertweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "class":
|
||||
var_02 = level.classtweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "weapon":
|
||||
var_02 = level.weapontweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "hardpoint":
|
||||
var_02 = level.hardpointtweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
case "hud":
|
||||
var_02 = level.hudtweaks[var_02].dvar;
|
||||
break;
|
||||
|
||||
default:
|
||||
var_02 = undefined;
|
||||
break;
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
gettweakablevalue(param_00,param_01)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "rule":
|
||||
var_02 = level.rules[param_01].value;
|
||||
break;
|
||||
|
||||
case "game":
|
||||
var_02 = level.gametweaks[var_02].value;
|
||||
break;
|
||||
|
||||
case "team":
|
||||
var_02 = level.teamtweaks[var_02].value;
|
||||
break;
|
||||
|
||||
case "player":
|
||||
var_02 = level.playertweaks[var_02].value;
|
||||
break;
|
||||
|
||||
case "class":
|
||||
var_02 = level.classtweaks[var_02].value;
|
||||
break;
|
||||
|
||||
case "weapon":
|
||||
var_02 = level.weapontweaks[var_02].value;
|
||||
break;
|
||||
|
||||
case "hardpoint":
|
||||
var_02 = level.hardpointtweaks[var_02].value;
|
||||
break;
|
||||
|
||||
case "hud":
|
||||
var_02 = level.hudtweaks[var_02].value;
|
||||
break;
|
||||
|
||||
default:
|
||||
var_02 = undefined;
|
||||
break;
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
gettweakablelastvalue(param_00,param_01)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "rule":
|
||||
var_02 = level.rules[param_01].lastvalue;
|
||||
break;
|
||||
|
||||
case "game":
|
||||
var_02 = level.gametweaks[var_02].lastvalue;
|
||||
break;
|
||||
|
||||
case "team":
|
||||
var_02 = level.teamtweaks[var_02].lastvalue;
|
||||
break;
|
||||
|
||||
case "player":
|
||||
var_02 = level.playertweaks[var_02].lastvalue;
|
||||
break;
|
||||
|
||||
case "class":
|
||||
var_02 = level.classtweaks[var_02].lastvalue;
|
||||
break;
|
||||
|
||||
case "weapon":
|
||||
var_02 = level.weapontweaks[var_02].lastvalue;
|
||||
break;
|
||||
|
||||
case "hardpoint":
|
||||
var_02 = level.hardpointtweaks[var_02].lastvalue;
|
||||
break;
|
||||
|
||||
case "hud":
|
||||
var_02 = level.hudtweaks[var_02].lastvalue;
|
||||
break;
|
||||
|
||||
default:
|
||||
var_02 = undefined;
|
||||
break;
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
settweakablevalue(param_00,param_01,param_02)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "rule":
|
||||
var_03 = level.rules[param_01].dvar;
|
||||
break;
|
||||
|
||||
case "game":
|
||||
var_03 = level.gametweaks[param_02].dvar;
|
||||
break;
|
||||
|
||||
case "team":
|
||||
var_03 = level.teamtweaks[param_02].dvar;
|
||||
break;
|
||||
|
||||
case "player":
|
||||
var_03 = level.playertweaks[param_02].dvar;
|
||||
break;
|
||||
|
||||
case "class":
|
||||
var_03 = level.classtweaks[param_02].dvar;
|
||||
break;
|
||||
|
||||
case "weapon":
|
||||
var_03 = level.weapontweaks[param_02].dvar;
|
||||
break;
|
||||
|
||||
case "hardpoint":
|
||||
var_03 = level.hardpointtweaks[param_02].dvar;
|
||||
break;
|
||||
|
||||
case "hud":
|
||||
var_03 = level.hudtweaks[param_02].dvar;
|
||||
break;
|
||||
|
||||
default:
|
||||
var_03 = undefined;
|
||||
break;
|
||||
}
|
||||
|
||||
setdvar(var_03,param_02);
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
settweakablelastvalue(param_00,param_01,param_02)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "rule":
|
||||
level.rules[param_01].lastvalue = param_02;
|
||||
break;
|
||||
|
||||
case "game":
|
||||
level.gametweaks[param_01].lastvalue = param_02;
|
||||
break;
|
||||
|
||||
case "team":
|
||||
level.teamtweaks[param_01].lastvalue = param_02;
|
||||
break;
|
||||
|
||||
case "player":
|
||||
level.playertweaks[param_01].lastvalue = param_02;
|
||||
break;
|
||||
|
||||
case "class":
|
||||
level.classtweaks[param_01].lastvalue = param_02;
|
||||
break;
|
||||
|
||||
case "weapon":
|
||||
level.weapontweaks[param_01].lastvalue = param_02;
|
||||
break;
|
||||
|
||||
case "hardpoint":
|
||||
level.hardpointtweaks[param_01].lastvalue = param_02;
|
||||
break;
|
||||
|
||||
case "hud":
|
||||
level.hudtweaks[param_01].lastvalue = param_02;
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
registertweakable(param_00,param_01,param_02,param_03)
|
||||
{
|
||||
if(isstring(param_03))
|
||||
{
|
||||
param_03 = getdvar(param_02,param_03);
|
||||
}
|
||||
else
|
||||
{
|
||||
param_03 = getdvarint(param_02,param_03);
|
||||
}
|
||||
|
||||
switch(param_00)
|
||||
{
|
||||
case "rule":
|
||||
if(!isdefined(level.rules[param_01]))
|
||||
{
|
||||
level.rules[param_01] = spawnstruct();
|
||||
}
|
||||
|
||||
level.rules[param_01].value = param_03;
|
||||
level.rules[param_01].lastvalue = param_03;
|
||||
level.rules[param_01].dvar = param_02;
|
||||
break;
|
||||
|
||||
case "game":
|
||||
if(!isdefined(level.gametweaks[param_01]))
|
||||
{
|
||||
level.gametweaks[param_01] = spawnstruct();
|
||||
}
|
||||
|
||||
level.gametweaks[param_01].value = param_03;
|
||||
level.gametweaks[param_01].lastvalue = param_03;
|
||||
level.gametweaks[param_01].dvar = param_02;
|
||||
break;
|
||||
|
||||
case "team":
|
||||
if(!isdefined(level.teamtweaks[param_01]))
|
||||
{
|
||||
level.teamtweaks[param_01] = spawnstruct();
|
||||
}
|
||||
|
||||
level.teamtweaks[param_01].value = param_03;
|
||||
level.teamtweaks[param_01].lastvalue = param_03;
|
||||
level.teamtweaks[param_01].dvar = param_02;
|
||||
break;
|
||||
|
||||
case "player":
|
||||
if(!isdefined(level.playertweaks[param_01]))
|
||||
{
|
||||
level.playertweaks[param_01] = spawnstruct();
|
||||
}
|
||||
|
||||
level.playertweaks[param_01].value = param_03;
|
||||
level.playertweaks[param_01].lastvalue = param_03;
|
||||
level.playertweaks[param_01].dvar = param_02;
|
||||
break;
|
||||
|
||||
case "class":
|
||||
if(!isdefined(level.classtweaks[param_01]))
|
||||
{
|
||||
level.classtweaks[param_01] = spawnstruct();
|
||||
}
|
||||
|
||||
level.classtweaks[param_01].value = param_03;
|
||||
level.classtweaks[param_01].lastvalue = param_03;
|
||||
level.classtweaks[param_01].dvar = param_02;
|
||||
break;
|
||||
|
||||
case "weapon":
|
||||
if(!isdefined(level.weapontweaks[param_01]))
|
||||
{
|
||||
level.weapontweaks[param_01] = spawnstruct();
|
||||
}
|
||||
|
||||
level.weapontweaks[param_01].value = param_03;
|
||||
level.weapontweaks[param_01].lastvalue = param_03;
|
||||
level.weapontweaks[param_01].dvar = param_02;
|
||||
break;
|
||||
|
||||
case "hardpoint":
|
||||
if(!isdefined(level.hardpointtweaks[param_01]))
|
||||
{
|
||||
level.hardpointtweaks[param_01] = spawnstruct();
|
||||
}
|
||||
|
||||
level.hardpointtweaks[param_01].value = param_03;
|
||||
level.hardpointtweaks[param_01].lastvalue = param_03;
|
||||
level.hardpointtweaks[param_01].dvar = param_02;
|
||||
break;
|
||||
|
||||
case "hud":
|
||||
if(!isdefined(level.hudtweaks[param_01]))
|
||||
{
|
||||
level.hudtweaks[param_01] = spawnstruct();
|
||||
}
|
||||
|
||||
level.hudtweaks[param_01].value = param_03;
|
||||
level.hudtweaks[param_01].lastvalue = param_03;
|
||||
level.hudtweaks[param_01].dvar = param_02;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
init()
|
||||
{
|
||||
level.clienttweakables = [];
|
||||
level.tweakablesinitialized = 1;
|
||||
level.rules = [];
|
||||
level.gametweaks = [];
|
||||
level.teamtweaks = [];
|
||||
level.playertweaks = [];
|
||||
level.classtweaks = [];
|
||||
level.weapontweaks = [];
|
||||
level.hardpointtweaks = [];
|
||||
level.hudtweaks = [];
|
||||
if(level.console)
|
||||
{
|
||||
registertweakable("game","graceperiod","scr_game_graceperiod",15);
|
||||
}
|
||||
else
|
||||
{
|
||||
registertweakable("game","playerwaittime","scr_game_playerwaittime",15);
|
||||
registertweakable("game","matchstarttime","scr_game_matchstarttime",5);
|
||||
}
|
||||
|
||||
registertweakable("game","onlyheadshots","scr_game_onlyheadshots",0);
|
||||
registertweakable("game","allowkillcam","scr_game_allowkillcam",1);
|
||||
registertweakable("game","spectatetype","scr_game_spectatetype",2);
|
||||
registertweakable("game","deathpointloss","scr_game_deathpointloss",0);
|
||||
registertweakable("game","suicidepointloss","scr_game_suicidepointloss",0);
|
||||
registertweakable("team","teamkillpointloss","scr_team_teamkillpointloss",0);
|
||||
registertweakable("team","fftype","scr_team_fftype",0);
|
||||
registertweakable("team","teamkillspawndelay","scr_team_teamkillspawndelay",0);
|
||||
registertweakable("player","maxhealth","scr_player_maxhealth",100);
|
||||
registertweakable("player","healthregentime","scr_player_healthregentime",5);
|
||||
registertweakable("player","forcerespawn","scr_player_forcerespawn",1);
|
||||
registertweakable("weapon","allowfrag","scr_weapon_allowfrags",1);
|
||||
registertweakable("weapon","allowsmoke","scr_weapon_allowsmoke",1);
|
||||
registertweakable("weapon","allowflash","scr_weapon_allowflash",1);
|
||||
registertweakable("weapon","allowc4","scr_weapon_allowc4",1);
|
||||
registertweakable("weapon","allowclaymores","scr_weapon_allowclaymores",1);
|
||||
registertweakable("weapon","allowrpgs","scr_weapon_allowrpgs",1);
|
||||
registertweakable("weapon","allowmines","scr_weapon_allowmines",1);
|
||||
registertweakable("hardpoint","allowartillery","scr_hardpoint_allowartillery",1);
|
||||
registertweakable("hardpoint","allowuav","scr_hardpoint_allowuav",1);
|
||||
registertweakable("hardpoint","allowsupply","scr_hardpoint_allowsupply",1);
|
||||
registertweakable("hardpoint","allowhelicopter","scr_hardpoint_allowhelicopter",1);
|
||||
registertweakable("hud","showobjicons","ui_hud_showobjicons",1);
|
||||
makedvarserverinfo("ui_hud_showobjicons",1);
|
||||
}
|
3430
MW3/PC/MP/maps/mp/gametypes/_weapons.gsc
Normal file
3430
MW3/PC/MP/maps/mp/gametypes/_weapons.gsc
Normal file
File diff suppressed because it is too large
Load Diff
511
MW3/PC/MP/maps/mp/gametypes/arena.gsc
Normal file
511
MW3/PC/MP/maps/mp/gametypes/arena.gsc
Normal file
@ -0,0 +1,511 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\arena.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 25
|
||||
* Decompile Time: 328 ms
|
||||
* Timestamp: 10/27/2023 2:13:06 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::registerroundswitchdvar(level.gametype,0,0,9);
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10,0,1440);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,500,0,5000);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1,0,10);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1,0,10);
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,3,0,30);
|
||||
maps\mp\_utility::registernumlivesdvar(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::setobjectivetext("allies",&"OBJECTIVES_ARENA");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_ARENA");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_ARENA");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_ARENA");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_ARENA_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_tdm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_tdm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(level.spawnmins,level.spawnmaxs);
|
||||
setmapcenter(level.mapcenter);
|
||||
var_02[0] = "dom";
|
||||
maps\mp\gametypes\_rank::registerscoreinfo("capture",200);
|
||||
maps\mp\gametypes\_gameobjects::main(var_7B);
|
||||
func_3A57();
|
||||
thread func_3A59();
|
||||
thread func_3A58();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
func_3A57()
|
||||
{
|
||||
game["flagmodels"] = [];
|
||||
game["flagmodels"]["neutral"] = "prop_flag_neutral";
|
||||
game["flagmodels"]["allies"] = maps\mp\gametypes\_teams::getteamflagmodel("allies");
|
||||
game["flagmodels"]["axis"] = maps\mp\gametypes\_teams::getteamflagmodel("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
|
||||
func_3A58()
|
||||
{
|
||||
level endon("down_to_one");
|
||||
level endon("game_end");
|
||||
for(;;)
|
||||
{
|
||||
var_00 = maps\mp\gametypes\_gamelogic::gettimeremaining();
|
||||
if(var_00 < -4536)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
wait 1;
|
||||
}
|
||||
|
||||
level notify("arena_flag_time");
|
||||
thread arenaflag();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
func_3A59()
|
||||
{
|
||||
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::getspawnpoint_nearteam(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 lib_036E::func_2B88(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 func_3959();
|
||||
}
|
||||
|
||||
//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
|
||||
func_3959()
|
||||
{
|
||||
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_3A5B(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::createuseobject("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::set3dicon("friendly","waypoint_defend");
|
||||
var_00 maps\mp\gametypes\_gameobjects::set2dicon("enemy","compass_waypoint_captureneutral");
|
||||
var_00 maps\mp\gametypes\_gameobjects::set3dicon("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_3A5B(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_3A5C(game["defenders"],game["strings"][game["attackers"] + "_eliminated"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 == game["defenders"])
|
||||
{
|
||||
level thread func_3A5C(game["attackers"],game["strings"][game["defenders"] + "_eliminated"]);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
func_3A5C(param_00,param_01)
|
||||
{
|
||||
thread maps\mp\gametypes\_gamelogic::endgame(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
func_3944(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");
|
||||
lib_036E::func_2B7B("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::getownerteam();
|
||||
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::set3dicon("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::printandsoundoneveryone(var_01,var_04,&"MP_NEUTRAL_FLAG_CAPTURED_BY",&"MP_NEUTRAL_FLAG_CAPTURED_BY","mp_war_objective_taken",undefined,param_00);
|
||||
func_3940("captured_a",var_01);
|
||||
func_3940("enemy_has_a",var_04);
|
||||
}
|
||||
else
|
||||
{
|
||||
thread maps\mp\_utility::printandsoundoneveryone(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_3944(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::getownerteam();
|
||||
self.didstatusnotify = 0;
|
||||
if(var_01 == "neutral")
|
||||
{
|
||||
var_02 = maps\mp\_utility::getotherteam(param_00.pers["team"]);
|
||||
func_3940("securing",param_00.pers["team"]);
|
||||
self.objpoints[param_00.pers["team"]] thread maps\mp\gametypes\_objpoints::startflashing();
|
||||
func_3940("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);
|
||||
func_3940("losing_a",var_03);
|
||||
func_3940("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
|
||||
func_3940(param_00,param_01)
|
||||
{
|
||||
var_02 = gettime();
|
||||
if(gettime() < level.laststatus[param_01] + 6000)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
thread func_3945(param_00,param_01);
|
||||
level.laststatus[param_01] = gettime();
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
func_3945(param_00,param_01)
|
||||
{
|
||||
level endon("game_ended");
|
||||
wait 0.1;
|
||||
maps\mp\_utility::waittillslowprocessallowed();
|
||||
maps\mp\_utility::leaderdialog(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
func_3946(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);
|
||||
}
|
396
MW3/PC/MP/maps/mp/gametypes/conf.gsc
Normal file
396
MW3/PC/MP/maps/mp/gametypes/conf.gsc
Normal file
@ -0,0 +1,396 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\conf.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 16
|
||||
* Decompile Time: 228 ms
|
||||
* Timestamp: 10/27/2023 2:13:07 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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,0,0,9);
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,65);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
|
||||
game["dialog"]["gametype"] = "kill_confirmed";
|
||||
level.conf_fx["vanish"] = loadfx("impacts/small_snowhit");
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initializematchrules()
|
||||
{
|
||||
maps\mp\_utility::setcommonrulesfrommatchrulesdata();
|
||||
setdynamicdvar("scr_conf_roundswitch",0);
|
||||
maps\mp\_utility::registerroundswitchdvar("conf",0,0,9);
|
||||
setdynamicdvar("scr_conf_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("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::setobjectivetext("allies",&"OBJECTIVES_CONF");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_CONF");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_CONF");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_CONF");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_CONF_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_tdm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_tdm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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::getspawnpoint_nearteam(var_02);
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
onnormaldeath(param_00,param_01,param_02)
|
||||
{
|
||||
level thread func_3A1C(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_3A1C(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_7B[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::createuseobject("any",var_03,var_7B,(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::getnextobjid();
|
||||
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_3A20(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_3A1E(level.dogtags[param_01.guid],maps\mp\_utility::getotherteam(param_01.pers["team"]));
|
||||
level.dogtags[param_01.guid].visuals[1] thread func_3A1E(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_3A1F();
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
func_3A1E(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::incpersstat("denied",1);
|
||||
param_00 maps\mp\gametypes\_persistance::statsetchild("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::func_2F45(&"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::incpersstat("confirmed",1);
|
||||
param_00 maps\mp\gametypes\_persistance::statsetchild("round","confirmed",param_00.pers["confirmed"]);
|
||||
if(self.attacker != param_00)
|
||||
{
|
||||
self.attacker onpickup(var_01,var_02);
|
||||
}
|
||||
|
||||
self.trigger playsoundtoplayer(game["voice"][param_00.team] + "kill_confirmed",param_00);
|
||||
param_00 lib_036E::func_2B88(param_00.pers["team"],1);
|
||||
}
|
||||
|
||||
param_00 onpickup(var_01,var_02);
|
||||
resettags();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
onpickup(param_00,param_01,param_02)
|
||||
{
|
||||
thread maps\mp\gametypes\_rank::func_2F45(param_01);
|
||||
lib_036E::func_2B7B(param_00,self,undefined,1);
|
||||
thread maps\mp\gametypes\_rank::giverankxp(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_3A1F()
|
||||
{
|
||||
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::waitlongdurationwithhostmigrationpause(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_3A20(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::func_2F45(&"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()
|
||||
{
|
||||
}
|
930
MW3/PC/MP/maps/mp/gametypes/ctf.gsc
Normal file
930
MW3/PC/MP/maps/mp/gametypes/ctf.gsc
Normal file
@ -0,0 +1,930 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\ctf.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 31
|
||||
* Decompile Time: 576 ms
|
||||
* Timestamp: 10/27/2023 2:13:09 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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,5);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,3);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(level.gametype,0);
|
||||
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
|
||||
level.matchrules_damagemultiplier = 0;
|
||||
level.matchrules_vampirism = 0;
|
||||
}
|
||||
|
||||
maps\mp\_utility::setovertimelimitdvar(4);
|
||||
func_3989();
|
||||
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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
|
||||
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::setcommonrulesfrommatchrulesdata();
|
||||
setdynamicdvar("scr_ctf_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("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_3979()
|
||||
{
|
||||
self endon("disconnect");
|
||||
wait 0.25;
|
||||
self.otspawned = 1;
|
||||
var_00 = maps\mp\_utility::getobjectivehinttext(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::setobjectivescoretext(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER");
|
||||
maps\mp\_utility::setobjectivescoretext(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER_SCORE");
|
||||
}
|
||||
|
||||
maps\mp\_utility::setobjectivetext(game["attackers"],&"OBJECTIVES_CTF");
|
||||
maps\mp\_utility::setobjectivetext(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::addspawnpoints("allies","mp_ctf_spawn_allies");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_ctf_spawn_axis");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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_39C8();
|
||||
}
|
||||
|
||||
//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::getspawnpoint_nearteam(var_02);
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
func_39C8()
|
||||
{
|
||||
level.flagmodel["allies"] = maps\mp\gametypes\_teams::getteamflagmodel("allies");
|
||||
level.icon2d["allies"] = maps\mp\gametypes\_teams::getteamflagicon("allies");
|
||||
level.carryflag["allies"] = maps\mp\gametypes\_teams::getteamflagcarrymodel("allies");
|
||||
precachemodel(level.flagmodel["allies"]);
|
||||
precachemodel(level.carryflag["allies"]);
|
||||
level.flagmodel["axis"] = maps\mp\gametypes\_teams::getteamflagmodel("axis");
|
||||
level.icon2d["axis"] = maps\mp\gametypes\_teams::getteamflagicon("axis");
|
||||
level.carryflag["axis"] = maps\mp\gametypes\_teams::getteamflagcarrymodel("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_39C2(game["defenders"],"allies");
|
||||
level.teamflags[game["attackers"]] = func_39C2(game["attackers"],level.otherteam["allies"]);
|
||||
level.capzones[game["defenders"]] = func_39C3(game["defenders"],"allies");
|
||||
level.capzones[game["attackers"]] = func_39C3(game["attackers"],level.otherteam["allies"]);
|
||||
if(level.splitscreen)
|
||||
{
|
||||
var_00 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = 0.85;
|
||||
}
|
||||
|
||||
level.friendlyflagstatusicon["allies"] = maps\mp\gametypes\_hud_util::createservericon("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_3A0B(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_3A0B(level.friendlyflagstatustext["allies"]);
|
||||
level.enemyflagstatusicon["allies"] = maps\mp\gametypes\_hud_util::createservericon("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_3A0B(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_3A0B(level.enemyflagstatustext["allies"]);
|
||||
level.friendlyflagstatusicon["axis"] = maps\mp\gametypes\_hud_util::createservericon("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_3A0B(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_3A0B(level.friendlyflagstatustext["axis"]);
|
||||
level.enemyflagstatusicon["axis"] = maps\mp\gametypes\_hud_util::createservericon("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_3A0B(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_3A0B(level.enemyflagstatustext["axis"]);
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
func_3A0B(param_00)
|
||||
{
|
||||
level waittill("game_ended");
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
param_00.alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
spawnfxdelay(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_39C2(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::createcarryobject(param_00,var_02,var_03,(0,0,85));
|
||||
var_05 maps\mp\gametypes\_gameobjects::setteamusetime("friendly",0.5);
|
||||
var_05 maps\mp\gametypes\_gameobjects::setteamusetime("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::set3dicon("friendly",level.iconkill3d);
|
||||
var_05 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d);
|
||||
var_05 maps\mp\gametypes\_gameobjects::set3dicon("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::getteamflagfx(param_00);
|
||||
var_0A = loadfx(var_09);
|
||||
var_0B = vectortoangles(var_08["normal"]);
|
||||
var_0C = anglestoforward(var_0B);
|
||||
var_0D = anglestoright(var_0B);
|
||||
thread spawnfxdelay(var_0A,var_08["position"],var_0C,var_0D,0.5);
|
||||
return var_05;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
func_39C3(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::createuseobject(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::set3dicon("friendly",level.icondefendflag3d);
|
||||
var_04 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d);
|
||||
var_04 maps\mp\gametypes\_gameobjects::set3dicon("enemy",level.iconcaptureflag3d);
|
||||
var_04 maps\mp\gametypes\_gameobjects::setusetime(0);
|
||||
var_04 maps\mp\gametypes\_gameobjects::setkeyobject(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::getteamflagfx(param_00);
|
||||
var_09 = loadfx(var_08);
|
||||
var_0A = vectortoangles(var_07["normal"]);
|
||||
var_0B = anglestoforward(var_0A);
|
||||
var_0C = anglestoright(var_0A);
|
||||
thread spawnfxdelay(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::getownerteam())
|
||||
{
|
||||
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::getownerteam())
|
||||
{
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("flagreturn",maps\mp\gametypes\_rank::getscoreinfovalue("return"));
|
||||
param_00 thread [[ level.onxpevent ]]("return");
|
||||
thread func_39C4();
|
||||
param_00 maps\mp\_utility::incplayerstat("flagsreturned",1);
|
||||
param_00 thread maps\mp\_matchdata::loggameevent("return",param_00.origin);
|
||||
maps\mp\_utility::printandsoundoneveryone(var_01,maps\mp\_utility::getotherteam(var_01),&"MP_FLAG_RETURNED",&"MP_ENEMY_FLAG_RETURNED","mp_obj_returned","mp_obj_returned","");
|
||||
maps\mp\_utility::leaderdialog("enemy_flag_returned",var_02,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_returned",var_01,"status");
|
||||
param_00 maps\mp\_utility::incpersstat("returns",1);
|
||||
param_00 maps\mp\gametypes\_persistance::statsetchild("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 func_39DA();
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 func_39C5();
|
||||
}
|
||||
|
||||
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::set3dicon("friendly",level.iconkill3d);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("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::ishome())
|
||||
{
|
||||
level.capzones[var_01].trigger maps\mp\_entityheadicons::setheadicon(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::setheadicon(level.teamflags[var_01].carrier,level.iconwaitforflag2d,(0,0,85),undefined,undefined,undefined,undefined,undefined,undefined,undefined,0);
|
||||
}
|
||||
}
|
||||
|
||||
maps\mp\_utility::printandsoundoneveryone(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::leaderdialog("enemy_flag_taken",var_01,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_taken",var_02,"status");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_flagpickup",param_00);
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("flagpickup",maps\mp\gametypes\_rank::getscoreinfovalue("pickup"));
|
||||
lib_036E::func_2B7B("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_39C4()
|
||||
{
|
||||
maps\mp\gametypes\_gameobjects::returnhome();
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
ondrop(param_00)
|
||||
{
|
||||
var_01 = maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
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::set3dicon("friendly",level.iconreturnflag3d);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("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::setheadicon("none","",(0,0,0));
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
if(isdefined(param_00.carryflag))
|
||||
{
|
||||
param_00 func_39C6();
|
||||
}
|
||||
|
||||
maps\mp\_utility::printandsoundoneveryone(var_02,"none",&"MP_ENEMY_FLAG_DROPPED_BY","","mp_war_objective_lost","",param_00);
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("mp_war_objective_lost",var_02);
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("enemy_flag_dropped",var_02,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_dropped",var_01,"status");
|
||||
thread func_39D9();
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
func_39D9()
|
||||
{
|
||||
self endon("picked_up");
|
||||
wait level.flagreturntime;
|
||||
var_00 = maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
var_01 = level.otherteam[var_00];
|
||||
maps\mp\_utility::playsoundonplayers("mp_war_objective_taken",var_00);
|
||||
maps\mp\_utility::playsoundonplayers("mp_war_objective_lost",var_01);
|
||||
maps\mp\gametypes\_gameobjects::returnhome();
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
onreset()
|
||||
{
|
||||
var_00 = maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
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::set3dicon("friendly",level.iconkill3d);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("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::set3dicon("friendly",level.icondefendflag3d);
|
||||
level.capzones[var_00] maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d);
|
||||
level.capzones[var_00] maps\mp\gametypes\_gameobjects::set3dicon("enemy",level.iconcaptureflag3d);
|
||||
level.capzones[var_00].trigger maps\mp\_entityheadicons::setheadicon("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::leaderdialog("enemy_flag_captured",var_01,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_captured",var_02,"status");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_flagcapture",param_00);
|
||||
lib_036E::func_2B88(var_01,1);
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("flag_capture",maps\mp\gametypes\_rank::getscoreinfovalue("capture"));
|
||||
lib_036E::func_2B7B("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::incpersstat("captures",1);
|
||||
param_00 maps\mp\gametypes\_persistance::statsetchild("round","captures",param_00.pers["captures"]);
|
||||
maps\mp\_utility::printandsoundoneveryone(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_39C6();
|
||||
}
|
||||
|
||||
if(isdefined(level.ctf_loadouts) && isdefined(level.ctf_loadouts[var_01]))
|
||||
{
|
||||
param_00 thread func_39DB();
|
||||
}
|
||||
|
||||
level.teamflags[var_02] func_39C4();
|
||||
level thread func_441A(var_01);
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
func_441A(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::getwatcheddvar("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::getwatcheddvar("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
|
||||
func_39DA()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
self notify("lost_juggernaut");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self.pers["gamemodeLoadout"] = level.ctf_loadouts[self.team];
|
||||
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::spawnplayer(1);
|
||||
thread waitattachflag();
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
waitattachflag()
|
||||
{
|
||||
level endon("game_ende");
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
self waittill("spawned_player");
|
||||
func_39C5();
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
func_39DB()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
self notify("lost_juggernaut");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self.pers["gamemodeLoadout"] = undefined;
|
||||
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::spawnplayer(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");
|
||||
lib_036E::func_2B7B("kill_carrier",param_01);
|
||||
param_01 maps\mp\_utility::incplayerstat("flagcarrierkills",1);
|
||||
param_01 maps\mp\_utility::incpersstat("defends",1);
|
||||
param_01 maps\mp\gametypes\_persistance::statsetchild("round","defends",param_01.pers["defends"]);
|
||||
thread maps\mp\_matchdata::logkillevent(param_09,"carrying");
|
||||
func_39C6();
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(self.carryflag))
|
||||
{
|
||||
func_39C6();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
func_39C5()
|
||||
{
|
||||
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_39C6()
|
||||
{
|
||||
self detach(self.carryflag,"J_spine4");
|
||||
self.carryflag = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
initgametypeawards()
|
||||
{
|
||||
maps\mp\_awards::initstataward("flagscaptured",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("flagsreturned",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("flagcarrierkills",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("flagscarried",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("killsasflagcarrier",0,::maps\mp\_awards::highestwins);
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
func_3989()
|
||||
{
|
||||
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",5,"class","inUse"))
|
||||
{
|
||||
level.ctf_loadouts["axis"] = maps\mp\_utility::getmatchrulesspecialclass("axis",5);
|
||||
}
|
||||
|
||||
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","allies",5,"class","inUse"))
|
||||
{
|
||||
level.ctf_loadouts["allies"] = maps\mp\_utility::getmatchrulesspecialclass("allies",5);
|
||||
}
|
||||
}
|
715
MW3/PC/MP/maps/mp/gametypes/ctfpro.gsc
Normal file
715
MW3/PC/MP/maps/mp/gametypes/ctfpro.gsc
Normal file
@ -0,0 +1,715 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\ctfpro.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 26
|
||||
* Decompile Time: 333 ms
|
||||
* Timestamp: 10/27/2023 2:13:10 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::registertimelimitdvar(level.gametype,6,0,0);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,2,0,0);
|
||||
maps\mp\_utility::setoverridewatchdvar("winlimit",2);
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,1,0,0);
|
||||
maps\mp\_utility::registernumlivesdvar(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_3979();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
func_3979()
|
||||
{
|
||||
self endon("disconnect");
|
||||
wait 0.25;
|
||||
self.otspawned = 1;
|
||||
var_00 = maps\mp\_utility::getobjectivehinttext(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::setobjectivescoretext(game["attackers"],&"OBJECTIVES_GRAB_FLAG");
|
||||
maps\mp\_utility::setobjectivescoretext(game["defenders"],&"OBJECTIVES_GRAB_FLAG");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER");
|
||||
maps\mp\_utility::setobjectivescoretext(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER");
|
||||
}
|
||||
}
|
||||
else if(maps\mp\_utility::inovertime())
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext(game["attackers"],&"OBJECTIVES_GRAB_FLAG_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext(game["defenders"],&"OBJECTIVES_GRAB_FLAG_SCORE");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER_SCORE");
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::inovertime())
|
||||
{
|
||||
maps\mp\_utility::setobjectivetext(game["attackers"],&"OBJECTIVES_OVERTIME_CTF");
|
||||
maps\mp\_utility::setobjectivetext(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::setobjectivetext(game["attackers"],&"OBJECTIVES_CTF");
|
||||
maps\mp\_utility::setobjectivetext(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::addspawnpoints(game["attackers"],"mp_ctf_pro_spawn_attackers");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints(game["defenders"],"mp_ctf_pro_spawn_defenders");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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_39DC();
|
||||
}
|
||||
|
||||
//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::getspawnpoint_nearteam(var_02);
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
func_39DC()
|
||||
{
|
||||
level.flagmodel[game["defenders"]] = maps\mp\gametypes\_teams::getteamflagmodel(game["defenders"]);
|
||||
level.icon2d[game["defenders"]] = maps\mp\gametypes\_teams::getteamflagicon(game["defenders"]);
|
||||
level.carryflag[game["defenders"]] = maps\mp\gametypes\_teams::getteamflagcarrymodel(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_39DF(game["defenders"]);
|
||||
level.capzones[game["attackers"]] = func_39E1(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
|
||||
spawnfxdelay(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_39DF(param_00)
|
||||
{
|
||||
var_01 = [];
|
||||
var_7B[0].points = 200;
|
||||
var_7B[1].points = 200;
|
||||
return var_7B;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
func_39C2(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::createcarryobject(param_00,var_02,var_05,(0,0,85));
|
||||
var_06 maps\mp\gametypes\_gameobjects::setteamusetime("friendly",0.5);
|
||||
var_06 maps\mp\gametypes\_gameobjects::setteamusetime("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::set3dicon("friendly",level.iconkill3d[param_01]);
|
||||
var_06 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d[param_01]);
|
||||
var_06 maps\mp\gametypes\_gameobjects::set3dicon("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::createuseobject(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::set3dicon("friendly",level.icondefendflag3d[param_01]);
|
||||
var_07 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d[param_01]);
|
||||
var_07 maps\mp\gametypes\_gameobjects::set3dicon("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::getteamflagfx(param_00);
|
||||
var_0C = loadfx(var_0B);
|
||||
var_0D = vectortoangles(var_0A["normal"]);
|
||||
var_0E = anglestoforward(var_0D);
|
||||
var_0F = anglestoright(var_0D);
|
||||
thread spawnfxdelay(var_0C,var_0A["position"],var_0E,var_0F,0.5);
|
||||
return var_06;
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
func_39E1(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::createuseobject(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::setkeyobject(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::getteamflagfx(param_00);
|
||||
var_09 = loadfx(var_08);
|
||||
var_0A = vectortoangles(var_07["normal"]);
|
||||
var_0B = anglestoforward(var_0A);
|
||||
var_0C = anglestoright(var_0A);
|
||||
thread spawnfxdelay(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::getownerteam())
|
||||
{
|
||||
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::getownerteam())
|
||||
{
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_flagreturn",param_00);
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("flagreturn",maps\mp\gametypes\_rank::getscoreinfovalue("return"));
|
||||
lib_036E::func_2B7B("return",param_00);
|
||||
param_00 thread [[ level.onxpevent ]]("return");
|
||||
thread func_39C4();
|
||||
param_00 maps\mp\_utility::incplayerstat("flagsreturned",1);
|
||||
param_00 maps\mp\_utility::incpersstat("returns",1);
|
||||
param_00 thread maps\mp\_matchdata::loggameevent("return",param_00.origin);
|
||||
maps\mp\_utility::printandsoundoneveryone(var_01,maps\mp\_utility::getotherteam(var_01),&"MP_FLAG_RETURNED",&"MP_ENEMY_FLAG_RETURNED","mp_obj_returned","mp_obj_returned","");
|
||||
maps\mp\_utility::leaderdialog("enemy_flag_returned",var_02,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_returned",var_01,"status");
|
||||
return;
|
||||
}
|
||||
|
||||
param_00 func_39C5(self);
|
||||
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconkill2d[self.label]);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("friendly",level.iconkill3d[self.label]);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d[self.label]);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy",level.iconescort3d[self.label]);
|
||||
self.marker maps\mp\gametypes\_gameobjects::setvisibleteam("none");
|
||||
param_00.zoneheadicon = level.capzones[game["attackers"]][0] maps\mp\_entityheadicons::setheadicon(param_00,level.iconflagbase2d,(0,0,0),24,24,undefined,undefined,undefined,undefined,undefined,0);
|
||||
param_00.zonemapicon = maps\mp\gametypes\_gameobjects::getnextobjid();
|
||||
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::printandsoundoneveryone(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::leaderdialog("enemy_flag_taken",var_01,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_taken",var_02,"status");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_flagpickup",param_00);
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("flagpickup",maps\mp\gametypes\_rank::getscoreinfovalue("pickup"));
|
||||
lib_036E::func_2B7B("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_39C4()
|
||||
{
|
||||
maps\mp\gametypes\_gameobjects::returnhome();
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
ondrop(param_00)
|
||||
{
|
||||
var_01 = maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
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::set3dicon("friendly",level.iconreturnflag3d[self.label]);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d[self.label]);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy",level.iconcaptureflag3d[self.label]);
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
if(isdefined(param_00.carryflag))
|
||||
{
|
||||
param_00 func_39C6();
|
||||
}
|
||||
|
||||
maps\mp\_utility::printandsoundoneveryone(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::playsoundonplayers("mp_war_objective_lost",var_02);
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("enemy_flag_dropped",var_02,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_dropped",var_01,"status");
|
||||
thread func_39D9();
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
func_39D9()
|
||||
{
|
||||
self endon("picked_up");
|
||||
wait level.flagreturntime;
|
||||
maps\mp\gametypes\_gameobjects::returnhome();
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
onreset()
|
||||
{
|
||||
var_00 = maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
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::set3dicon("friendly",level.iconkill3d[self.label]);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconescort2d[self.label]);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("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::leaderdialog("enemy_flag_captured",var_01,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_captured",var_02,"status");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_flagcapture",param_00);
|
||||
func_39E5(var_01,param_00.cappedflag.points);
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("flag_capture",maps\mp\gametypes\_rank::getscoreinfovalue("capture"));
|
||||
lib_036E::func_2B7B("capture",param_00);
|
||||
param_00 thread [[ level.onxpevent ]]("capture");
|
||||
param_00 maps\mp\_utility::incplayerstat("flagscaptured",1);
|
||||
param_00 maps\mp\_utility::incpersstat("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::printandsoundoneveryone(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_39C6();
|
||||
}
|
||||
|
||||
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_39C4();
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
func_39E5(param_00,param_01)
|
||||
{
|
||||
lib_036E::func_2B88(param_00,param_01);
|
||||
if(game["state"] != "playing")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(game["switchedsides"])
|
||||
{
|
||||
if(game["teamScores"][game["attackers"]] >= maps\mp\_utility::getwatcheddvar("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::getwatcheddvar("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"]]++;
|
||||
lib_036E::func_2B93(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::splashnotify("killflagcarrier",maps\mp\gametypes\_rank::getscoreinfovalue("kill_carrier"));
|
||||
lib_036E::func_2B7B("kill_carrier",param_01);
|
||||
param_01 thread [[ level.onxpevent ]]("kill_carrier");
|
||||
param_01 maps\mp\_utility::incpersstat("defends",1);
|
||||
thread maps\mp\_matchdata::logkillevent(param_09,"carrying");
|
||||
func_39C6();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
func_39C5(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_39C6()
|
||||
{
|
||||
self detach(self.carryflag,"J_spine4");
|
||||
self.carryflag = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
initgametypeawards()
|
||||
{
|
||||
maps\mp\_awards::initstataward("flagscaptured",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("flagsreturned",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("flagcarrierkills",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("flagscarried",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("killsasflagcarrier",0,::maps\mp\_awards::highestwins);
|
||||
}
|
1069
MW3/PC/MP/maps/mp/gametypes/dd.gsc
Normal file
1069
MW3/PC/MP/maps/mp/gametypes/dd.gsc
Normal file
File diff suppressed because it is too large
Load Diff
141
MW3/PC/MP/maps/mp/gametypes/dm.gsc
Normal file
141
MW3/PC/MP/maps/mp/gametypes/dm.gsc
Normal file
@ -0,0 +1,141 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\dm.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 5
|
||||
* Decompile Time: 71 ms
|
||||
* Timestamp: 10/27/2023 2:13:12 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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,1000);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
|
||||
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::setcommonrulesfrommatchrulesdata(1);
|
||||
setdynamicdvar("scr_dm_winlimit",1);
|
||||
maps\mp\_utility::registerwinlimitdvar("dm",1);
|
||||
setdynamicdvar("scr_dm_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("dm",1);
|
||||
setdynamicdvar("scr_dm_halftime",0);
|
||||
maps\mp\_utility::registerhalftimedvar("dm",0);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
onstartgametype()
|
||||
{
|
||||
setclientnamemode("auto_change");
|
||||
maps\mp\_utility::setobjectivetext("allies",&"OBJECTIVES_DM");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_DM");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_DM");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_DM");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_DM_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_dm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_dm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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::getspawnpoint_dm(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;
|
||||
}
|
||||
}
|
953
MW3/PC/MP/maps/mp/gametypes/dom.gsc
Normal file
953
MW3/PC/MP/maps/mp/gametypes/dom.gsc
Normal file
@ -0,0 +1,953 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\dom.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 31
|
||||
* Decompile Time: 484 ms
|
||||
* Timestamp: 10/27/2023 2:13:14 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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,30);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,300);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
|
||||
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::setcommonrulesfrommatchrulesdata();
|
||||
setdynamicdvar("scr_dom_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("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::setobjectivetext("allies",&"OBJECTIVES_DOM");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_DOM");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_DOM");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_DOM");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_DOM_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_dom_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_dom_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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::getteamflagfx("allies"));
|
||||
level.flagbasefxid["axis"] = loadfx(maps\mp\gametypes\_teams::getteamflagfx("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_3947();
|
||||
}
|
||||
|
||||
//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_394A();
|
||||
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::getspawnpoint_nearteam(level.spawn_all,func_394D(var_07));
|
||||
}
|
||||
else if(var_01 > 0)
|
||||
{
|
||||
var_00 = maps\mp\gametypes\_spawnlogic::getspawnpoint_nearteam(level.spawn_all,func_394C(var_03));
|
||||
}
|
||||
else
|
||||
{
|
||||
var_08 = undefined;
|
||||
if(var_02 > 0 && var_02 < level.flags.size)
|
||||
{
|
||||
var_08 = func_393E(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::getspawnpoint_nearteam(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::getteamflagmodel("allies");
|
||||
game["flagmodels"]["axis"] = maps\mp\gametypes\_teams::getteamflagmodel("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::createuseobject("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::set3dicon("friendly","waypoint_defend" + var_06);
|
||||
var_05 maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_captureneutral" + var_06);
|
||||
var_05 maps\mp\gametypes\_gameobjects::set3dicon("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"] = func_393E("allies",undefined);
|
||||
level.bestspawnflag["axis"] = func_393E("axis",level.bestspawnflag["allies"]);
|
||||
func_3950();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
func_393E(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_394A() != "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::getownerteam();
|
||||
self.didstatusnotify = 0;
|
||||
if(var_01 == "neutral")
|
||||
{
|
||||
func_3940("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::getownerteam();
|
||||
if(var_03 == "neutral")
|
||||
{
|
||||
func_3940("securing" + self.label,param_00);
|
||||
}
|
||||
else
|
||||
{
|
||||
func_3940("losing" + self.label,var_03);
|
||||
func_3940("securing" + self.label,param_00);
|
||||
}
|
||||
|
||||
self.didstatusnotify = 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
func_3940(param_00,param_01,param_02)
|
||||
{
|
||||
var_03 = gettime();
|
||||
if(gettime() < level.laststatus[param_01] + 5000 && !isdefined(param_02) || !param_02)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
thread func_3945(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
|
||||
func_3941()
|
||||
{
|
||||
if(isdefined(self.baseeffect))
|
||||
{
|
||||
self.baseeffect delete();
|
||||
}
|
||||
|
||||
var_00 = maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
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::getownerteam();
|
||||
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::set3dicon("enemy","waypoint_capture" + var_03);
|
||||
self.visuals[0] setmodel(game["flagmodels"][var_01]);
|
||||
func_3941();
|
||||
level.usestartspawns = 0;
|
||||
if(var_02 == "neutral")
|
||||
{
|
||||
var_04 = maps\mp\_utility::getotherteam(var_01);
|
||||
thread maps\mp\_utility::printandsoundoneveryone(var_01,var_04,undefined,undefined,"mp_war_objective_taken",undefined,param_00);
|
||||
func_3940("secured" + self.label,var_01,1);
|
||||
func_3940("enemy_has" + self.label,var_04,1);
|
||||
}
|
||||
else
|
||||
{
|
||||
thread maps\mp\_utility::printandsoundoneveryone(var_01,var_02,undefined,undefined,"mp_war_objective_taken","mp_war_objective_lost",param_00);
|
||||
if(func_3949(var_01) == level.flags.size)
|
||||
{
|
||||
func_3940("secure_all",var_01);
|
||||
func_3940("lost_all",var_02);
|
||||
}
|
||||
else
|
||||
{
|
||||
func_3940("secured" + self.label,var_01,1);
|
||||
func_3940("lost" + self.label,var_02,1);
|
||||
}
|
||||
|
||||
level.bestspawnflag[var_02] = self.levelflag;
|
||||
}
|
||||
|
||||
param_00 notify("objective","captured");
|
||||
thread func_3944(self.touchlist[var_01]);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
func_3944(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::splashnotify("capture",maps\mp\gametypes\_rank::getscoreinfovalue("capture"));
|
||||
var_03 thread func_3952();
|
||||
var_03 thread maps\mp\gametypes\_rank::giverankxp("capture",maps\mp\gametypes\_rank::getscoreinfovalue("capture") * var_03 func_3955());
|
||||
lib_036E::func_2B7B("capture",var_03);
|
||||
var_03 maps\mp\_utility::incplayerstat("pointscaptured",1);
|
||||
var_03 maps\mp\_utility::incpersstat("captures",1);
|
||||
var_03 maps\mp\gametypes\_persistance::statsetchild("round","captures",var_03.pers["captures"]);
|
||||
if(var_03 != self)
|
||||
{
|
||||
var_03 notify("objective","assistedCapture");
|
||||
}
|
||||
}
|
||||
|
||||
var_03 = maps\mp\gametypes\_gameobjects::getearliestclaimplayer();
|
||||
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_3945(param_00,param_01)
|
||||
{
|
||||
level endon("game_ended");
|
||||
wait 0.1;
|
||||
maps\mp\_utility::waittillslowprocessallowed();
|
||||
maps\mp\_utility::leaderdialog(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
func_3946(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_3947()
|
||||
{
|
||||
level endon("game_ended");
|
||||
while(!level.gameended)
|
||||
{
|
||||
var_00 = func_3948();
|
||||
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::getownerteam();
|
||||
lib_036E::func_2B88(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::waittillhostmigrationdone();
|
||||
}
|
||||
}
|
||||
|
||||
//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::splashnotify("assault",maps\mp\gametypes\_rank::getscoreinfovalue("assault"));
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("assault");
|
||||
lib_036E::func_2B7B("assault",param_01);
|
||||
thread maps\mp\_matchdata::logkillevent(param_09,"defending");
|
||||
continue;
|
||||
}
|
||||
|
||||
var_0B = 1;
|
||||
param_01 thread maps\mp\gametypes\_hud_message::splashnotify("defend",maps\mp\gametypes\_rank::getscoreinfovalue("defend"));
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("defend");
|
||||
lib_036E::func_2B7B("defend",param_01);
|
||||
param_01 maps\mp\_utility::incpersstat("defends",1);
|
||||
param_01 maps\mp\gametypes\_persistance::statsetchild("round","defends",param_01.pers["defends"]);
|
||||
thread maps\mp\_matchdata::logkillevent(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::splashnotify("assault",maps\mp\gametypes\_rank::getscoreinfovalue("assault"));
|
||||
}
|
||||
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("assault");
|
||||
lib_036E::func_2B7B("assault",param_01);
|
||||
thread maps\mp\_matchdata::logkillevent(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::splashnotify("defend",maps\mp\gametypes\_rank::getscoreinfovalue("defend"));
|
||||
}
|
||||
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("defend");
|
||||
lib_036E::func_2B7B("defend",param_01);
|
||||
thread maps\mp\_matchdata::logkillevent(param_09,"assaulting");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
func_3948()
|
||||
{
|
||||
var_00 = [];
|
||||
foreach(var_02 in level.domflags)
|
||||
{
|
||||
if(var_02 maps\mp\gametypes\_gameobjects::getownerteam() != "neutral" && isdefined(var_02.capturetime))
|
||||
{
|
||||
var_00[var_00.size] = var_02;
|
||||
}
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
func_3949(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::getownerteam() == param_00)
|
||||
{
|
||||
var_01++;
|
||||
}
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
func_394A()
|
||||
{
|
||||
return self.useobj maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
func_394B()
|
||||
{
|
||||
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::getownerteam() != level.flags[var_01].adjflags[var_02].useobj maps\mp\gametypes\_gameobjects::getownerteam())
|
||||
{
|
||||
var_00[var_00.size] = level.flags[var_01];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
func_394C(param_00)
|
||||
{
|
||||
var_01 = [];
|
||||
var_02 = func_394B();
|
||||
for(var_03 = 0;var_03 < var_02.size;var_03++)
|
||||
{
|
||||
if(isdefined(param_00) && var_02[var_03] func_394A() != 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_394D(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_394E(param_00)
|
||||
{
|
||||
var_01 = [];
|
||||
for(var_02 = 0;var_02 < level.flags.size;var_02++)
|
||||
{
|
||||
if(level.flags[var_02] func_394A() == 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_394A() == 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
|
||||
func_394F(param_00)
|
||||
{
|
||||
var_01 = [];
|
||||
for(var_02 = 0;var_02 < level.flags.size;var_02++)
|
||||
{
|
||||
if(level.flags[var_02] func_394A() == 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
|
||||
func_3950()
|
||||
{
|
||||
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::initstataward("pointscaptured",0,::maps\mp\_awards::highestwins);
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
onspawnplayer()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
func_3952()
|
||||
{
|
||||
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
|
||||
func_3955()
|
||||
{
|
||||
if(self.cpm < 4)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0.25;
|
||||
}
|
921
MW3/PC/MP/maps/mp/gametypes/grnd.gsc
Normal file
921
MW3/PC/MP/maps/mp/gametypes/grnd.gsc
Normal file
@ -0,0 +1,921 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\grnd.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 18
|
||||
* Decompile Time: 289 ms
|
||||
* Timestamp: 10/27/2023 2:13:15 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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,0,0,9);
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,20000);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
|
||||
level.grnd_fx["smoke"] = loadfx("smoke/airdrop_flare_mp_effect_now");
|
||||
level.grnd_fx["flare"] = loadfx("smoke/signal_smoke_airdrop");
|
||||
func_3A0C();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initializematchrules()
|
||||
{
|
||||
maps\mp\_utility::setcommonrulesfrommatchrulesdata();
|
||||
level.matchrules_droptime = getmatchrulesdata("grndData","dropTime");
|
||||
level.matchrules_zoneswitchtime = 60 * getmatchrulesdata("grndData","zoneSwitchTime");
|
||||
setdynamicdvar("scr_grnd_roundswitch",0);
|
||||
maps\mp\_utility::registerroundswitchdvar("grnd",0,0,9);
|
||||
setdynamicdvar("scr_grnd_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("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::setobjectivetext("allies",&"OBJECTIVES_GRND");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_GRND");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_GRND");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_GRND");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_GRND_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_tdm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_tdm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(level.spawnmins,level.spawnmaxs);
|
||||
setmapcenter(level.mapcenter);
|
||||
var_00 = getent("sab_bomb","targetname");
|
||||
level.grnd_centerloc = var_00.origin;
|
||||
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_7B);
|
||||
level.grnd_timerdisplay = maps\mp\gametypes\_hud_util::createservertimer("objective",1.4);
|
||||
if(level.splitscreen)
|
||||
{
|
||||
level.grnd_timerdisplay maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","TOPLEFT",80,0);
|
||||
}
|
||||
else
|
||||
{
|
||||
level.grnd_timerdisplay maps\mp\gametypes\_hud_util::setpoint("TOPLEFT","TOPLEFT",115,5);
|
||||
}
|
||||
|
||||
level.grnd_timerdisplay.label = &"MP_NEXT_DROP_ZONE_IN";
|
||||
level.grnd_timerdisplay.alpha = 0;
|
||||
level.grnd_timerdisplay.archived = 0;
|
||||
level.grnd_timerdisplay.hidewheninmenu = 1;
|
||||
thread func_3A0B(level.grnd_timerdisplay);
|
||||
func_39F6();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
func_39F6()
|
||||
{
|
||||
level.zonescycling = 0;
|
||||
level.var_14 = 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_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.favorclosespawnent = level.grnd_zone;
|
||||
level.favorclosespawnscalar = 5;
|
||||
level thread func_39FB();
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
func_39FB()
|
||||
{
|
||||
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::getspawnpoint_nearteam(var_01);
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
onspawnplayer()
|
||||
{
|
||||
if(!isdefined(self.ingrindzone))
|
||||
{
|
||||
level thread func_39FE(self);
|
||||
if(!level.zonescycling)
|
||||
{
|
||||
level.zonescycling = 1;
|
||||
level thread func_3A05();
|
||||
level thread func_3A07();
|
||||
}
|
||||
}
|
||||
|
||||
level notify("spawned_player");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
func_39FE(param_00)
|
||||
{
|
||||
level endon("game_ended");
|
||||
maps\mp\_utility::gameflagwait("prematch_done");
|
||||
param_00.ingrindzonepoints = 0;
|
||||
param_00.grndhudtext = param_00 maps\mp\gametypes\_hud_util::createfontstring("small",1.6);
|
||||
if(level.splitscreen)
|
||||
{
|
||||
param_00.grndhudtext maps\mp\gametypes\_hud_util::setpoint("TOP LEFT","TOP LEFT",80,18);
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00.grndhudtext maps\mp\gametypes\_hud_util::setpoint("TOP LEFT","TOP LEFT",115,22);
|
||||
}
|
||||
|
||||
param_00.grndhudtext.alpha = 1;
|
||||
param_00.grndhudtext.archived = 0;
|
||||
param_00.grndhudtext.hidewheninmenu = 1;
|
||||
level thread func_3A0B(param_00.grndhudtext);
|
||||
param_00.grndheadicon = level.grnd_zone maps\mp\_entityheadicons::setheadicon(param_00,"waypoint_captureneutral",(0,0,0),14,14,undefined,undefined,undefined,undefined,undefined,0);
|
||||
param_00.grndobjid = maps\mp\gametypes\_gameobjects::getnextobjid();
|
||||
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(distance2d(level.grnd_zone.origin,param_00.origin) < 300)
|
||||
{
|
||||
param_00.ingrindzone = 1;
|
||||
param_00.grndhudtext settext(&"OBJECTIVES_GRND_CONFIRM");
|
||||
param_00.grndhudtext.color = (0.6,1,0.6);
|
||||
param_00.grndheadicon.alpha = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00.ingrindzone = 0;
|
||||
param_00.grndhudtext settext(&"OBJECTIVES_GRND_HINT");
|
||||
param_00.grndhudtext.color = (1,0.6,0.6);
|
||||
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.grndhudtext.alpha = 0;
|
||||
param_00.grnd_wasspectator = 1;
|
||||
}
|
||||
|
||||
param_00 thread func_3A06();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
func_3A03()
|
||||
{
|
||||
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_39FB();
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
func_3A05()
|
||||
{
|
||||
level endon("game_ended");
|
||||
maps\mp\_utility::gameflagwait("prematch_done");
|
||||
for(;;)
|
||||
{
|
||||
var_00["axis"] = game["teamScores"]["axis"];
|
||||
var_00["allies"] = game["teamScores"]["allies"];
|
||||
var_01 = undefined;
|
||||
if(!level.var_14)
|
||||
{
|
||||
level.var_14 = 1;
|
||||
var_01 = level.grnd_zone.origin;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = func_3A03();
|
||||
stopfxontag(level.grnd_fx["smoke"],level.grnd_zone,"tag_fx");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_02 = var_01 + (0,0,30);
|
||||
var_03 = var_01 + (0,0,-1000);
|
||||
var_04 = bullettrace(var_02,var_03,0,undefined);
|
||||
level.grnd_zone.origin = var_04["position"] + (0,0,1);
|
||||
wait 0.05;
|
||||
playfxontag(level.grnd_fx["smoke"],level.grnd_zone,"tag_fx");
|
||||
if(level.matchrules_droptime)
|
||||
{
|
||||
level thread func_3A08();
|
||||
}
|
||||
|
||||
level.grnd_timerdisplay.label = &"MP_NEXT_DROP_ZONE_IN";
|
||||
level.grnd_timerdisplay settimer(level.matchrules_zoneswitchtime);
|
||||
level.grnd_timerdisplay.alpha = 1;
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(level.matchrules_zoneswitchtime);
|
||||
level.grnd_timerdisplay.alpha = 0;
|
||||
if(game["teamScores"]["axis"] - var_00["axis"] > game["teamScores"]["allies"] - var_00["allies"])
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("mp_obj_captured","axis");
|
||||
maps\mp\_utility::playsoundonplayers("mp_enemy_obj_captured","allies");
|
||||
continue;
|
||||
}
|
||||
|
||||
if(game["teamScores"]["allies"] - var_00["allies"] > game["teamScores"]["axis"] - var_00["axis"])
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("mp_obj_captured","allies");
|
||||
maps\mp\_utility::playsoundonplayers("mp_enemy_obj_captured","axis");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
func_3A06()
|
||||
{
|
||||
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.grndhudtext.alpha = 0;
|
||||
self.grnd_wasspectator = 1;
|
||||
}
|
||||
else if(self.team != "spectator")
|
||||
{
|
||||
if((self.grnd_wasspectator || !self.ingrindzone) && distance2d(level.grnd_zone.origin,self.origin) < 300)
|
||||
{
|
||||
self.ingrindzone = 1;
|
||||
self.ingrindzonepoints = 0;
|
||||
self.grndhudtext settext(&"OBJECTIVES_GRND_CONFIRM");
|
||||
self.grndhudtext.color = (0.6,1,0.6);
|
||||
self.grndhudtext.alpha = 1;
|
||||
self.grndheadicon.alpha = 0;
|
||||
}
|
||||
else if((self.grnd_wasspectator || self.ingrindzone) && distance2d(level.grnd_zone.origin,self.origin) >= 300)
|
||||
{
|
||||
self.ingrindzone = 0;
|
||||
self.ingrindzonepoints = 0;
|
||||
self.grndhudtext settext(&"OBJECTIVES_GRND_HINT");
|
||||
self.grndhudtext.color = (1,0.6,0.6);
|
||||
self.grndhudtext.alpha = 1;
|
||||
self.grndheadicon.alpha = 0.85;
|
||||
}
|
||||
|
||||
self.grnd_wasspectator = 0;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
func_3A07()
|
||||
{
|
||||
level endon("game_ended");
|
||||
maps\mp\_utility::gameflagwait("prematch_done");
|
||||
var_00 = maps\mp\gametypes\_rank::getscoreinfovalue("zone_tick");
|
||||
for(;;)
|
||||
{
|
||||
var_01["axis"] = 0;
|
||||
var_01["allies"] = 0;
|
||||
foreach(var_03 in level.players)
|
||||
{
|
||||
if(isdefined(var_03.ingrindzone) && maps\mp\_utility::isreallyalive(var_03) && distance2d(level.grnd_zone.origin,var_03.origin) < 300)
|
||||
{
|
||||
var_01[var_03.pers["team"]]++;
|
||||
var_03.ingrindzonepoints = var_03.ingrindzonepoints + var_00;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_01["axis"])
|
||||
{
|
||||
lib_036E::func_2B88("axis",var_00 * var_01["axis"]);
|
||||
}
|
||||
|
||||
if(var_01["allies"])
|
||||
{
|
||||
lib_036E::func_2B88("allies",var_00 * var_01["allies"]);
|
||||
}
|
||||
|
||||
if(var_01["axis"] == var_01["allies"])
|
||||
{
|
||||
foreach(var_03 in level.players)
|
||||
{
|
||||
if(isdefined(var_03.ingrindzone))
|
||||
{
|
||||
var_03.grndheadicon setshader("waypoint_captureneutral",14,14);
|
||||
var_03.grndheadicon setwaypoint(0,0,0,0);
|
||||
objective_icon(var_03.grndobjid,"waypoint_captureneutral");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
foreach(var_03 in level.players)
|
||||
{
|
||||
if(isdefined(var_03.ingrindzone))
|
||||
{
|
||||
if(var_01[var_03.pers["team"]] > var_01[level.otherteam[var_03.pers["team"]]])
|
||||
{
|
||||
var_03.grndheadicon setshader("waypoint_defend",14,14);
|
||||
var_03.grndheadicon setwaypoint(0,0,0,0);
|
||||
objective_icon(var_03.grndobjid,"waypoint_defend");
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03.grndheadicon setshader("waypoint_capture",14,14);
|
||||
var_03.grndheadicon setwaypoint(0,0,0,0);
|
||||
objective_icon(var_03.grndobjid,"waypoint_capture");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
func_3A08()
|
||||
{
|
||||
level endon("game_ended");
|
||||
level notify("reset_grnd_drops");
|
||||
level endon("reset_grnd_drops");
|
||||
level.grnd_previouscratetypes = [];
|
||||
for(;;)
|
||||
{
|
||||
var_00 = func_3A09();
|
||||
var_01 = 1;
|
||||
if(isdefined(var_00) && maps\mp\_utility::currentactivevehiclecount() < maps\mp\_utility::maxvehiclesallowed() && level.fauxvehiclecount + var_01 < maps\mp\_utility::maxvehiclesallowed() && level.numdropcrates < 8)
|
||||
{
|
||||
var_00 thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_EARNED_CAREPACKAGE");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_earned_carepackage",var_00);
|
||||
var_00 thread maps\mp\_utility::leaderdialog(level.otherteam[var_00.team] + "_enemy_airdrop_assault_inbound",level.otherteam[var_00.team]);
|
||||
var_00 thread maps\mp\_utility::leaderdialog(var_00.team + "_friendly_airdrop_assault_inbound",var_00.team);
|
||||
maps\mp\_utility::playsoundonplayers("mp_war_objective_taken",var_00.team);
|
||||
maps\mp\_utility::playsoundonplayers("mp_war_objective_lost",level.otherteam[var_00.team]);
|
||||
var_02 = level.grnd_zone.origin + (randomintrange(-72,72),randomintrange(-72,72),0);
|
||||
var_03 = func_3A0A();
|
||||
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::domegac130flyby(var_00,var_02,randomfloat(360),"airdrop_grnd",-360);
|
||||
}
|
||||
else
|
||||
{
|
||||
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::waitlongdurationwithhostmigrationpause(var_04);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
func_3A09()
|
||||
{
|
||||
var_00 = undefined;
|
||||
var_01 = 0;
|
||||
foreach(var_03 in level.players)
|
||||
{
|
||||
if(maps\mp\_utility::isreallyalive(var_03))
|
||||
{
|
||||
if(distance2d(level.grnd_zone.origin,var_03.origin) < 300 && var_03.ingrindzonepoints > var_01)
|
||||
{
|
||||
var_00 = var_03;
|
||||
var_01 = var_03.ingrindzonepoints;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
func_3A0A()
|
||||
{
|
||||
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: 17
|
||||
func_3A0B(param_00)
|
||||
{
|
||||
level waittill("game_ended");
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
param_00.alpha = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
func_3A0C()
|
||||
{
|
||||
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] = (-1226,-1399,204);
|
||||
level.grnd_dropzones["mp_seatown"][1] = (1048,886,228);
|
||||
level.grnd_dropzones["mp_seatown"][2] = (-2086,1263,260);
|
||||
level.grnd_dropzones["mp_seatown"][3] = (-2297,-855,210);
|
||||
level.grnd_dropzones["mp_seatown"][4] = (-2261,-334,248);
|
||||
level.grnd_dropzones["mp_seatown"][5] = (-2048,512,248);
|
||||
level.grnd_dropzones["mp_seatown"][6] = (-1439,1065,72);
|
||||
level.grnd_dropzones["mp_seatown"][7] = (-410,982,127);
|
||||
level.grnd_dropzones["mp_seatown"][8] = (-666,-217,226);
|
||||
level.grnd_dropzones["mp_seatown"][9] = (-523,-875,280);
|
||||
level.grnd_dropzones["mp_seatown"][10] = (-345,-1449,254);
|
||||
level.grnd_dropzones["mp_seatown"][11] = (1167,-533,294);
|
||||
level.grnd_dropzones["mp_seatown"][12] = (367,991,179);
|
||||
level.grnd_dropzones["mp_seatown"][13] = (1106,219,292);
|
||||
level.grnd_dropzones["mp_dome"][0] = (97,898,-240);
|
||||
level.grnd_dropzones["mp_dome"][1] = (-226,1464,-231);
|
||||
level.grnd_dropzones["mp_dome"][2] = (-603,194,-358);
|
||||
level.grnd_dropzones["mp_dome"][3] = (814,-406,-335);
|
||||
level.grnd_dropzones["mp_dome"][4] = (5,1975,-231);
|
||||
level.grnd_dropzones["mp_dome"][5] = (-673,1100,-284);
|
||||
level.grnd_dropzones["mp_dome"][6] = (669,1028,-255);
|
||||
level.grnd_dropzones["mp_dome"][7] = (1231,807,-267);
|
||||
level.grnd_dropzones["mp_dome"][8] = (709,210,-342);
|
||||
level.grnd_dropzones["mp_dome"][9] = (1223,10,-336);
|
||||
level.grnd_dropzones["mp_dome"][10] = (-222,418,-333);
|
||||
level.grnd_dropzones["mp_dome"][11] = (501,-183,-330);
|
||||
level.grnd_dropzones["mp_plaza2"][0] = (221,440,754);
|
||||
level.grnd_dropzones["mp_plaza2"][1] = (155,1763,668);
|
||||
level.grnd_dropzones["mp_plaza2"][2] = (-430,1871,691);
|
||||
level.grnd_dropzones["mp_plaza2"][3] = (-1190,1759,668);
|
||||
level.grnd_dropzones["mp_plaza2"][4] = (-1273,1279,829);
|
||||
level.grnd_dropzones["mp_plaza2"][5] = (-593,1274,676);
|
||||
level.grnd_dropzones["mp_plaza2"][6] = (-251,1006,722);
|
||||
level.grnd_dropzones["mp_plaza2"][7] = (80,1343,676);
|
||||
level.grnd_dropzones["mp_plaza2"][8] = (397,-99,708);
|
||||
level.grnd_dropzones["mp_plaza2"][9] = (-1109,92,741);
|
||||
level.grnd_dropzones["mp_plaza2"][10] = (-280,-195,700);
|
||||
level.grnd_dropzones["mp_plaza2"][11] = (28,-1600,668);
|
||||
level.grnd_dropzones["mp_plaza2"][12] = (764,-1752,669);
|
||||
level.grnd_dropzones["mp_mogadishu"][0] = (1448,1945,39);
|
||||
level.grnd_dropzones["mp_mogadishu"][1] = (1499,-1193,15);
|
||||
level.grnd_dropzones["mp_mogadishu"][2] = (791,-880,16);
|
||||
level.grnd_dropzones["mp_mogadishu"][3] = (38,-1007,16);
|
||||
level.grnd_dropzones["mp_mogadishu"][4] = (-691,-260,22);
|
||||
level.grnd_dropzones["mp_mogadishu"][5] = (2,52,2);
|
||||
level.grnd_dropzones["mp_mogadishu"][6] = (664,69,12);
|
||||
level.grnd_dropzones["mp_mogadishu"][7] = (1676,251,-1);
|
||||
level.grnd_dropzones["mp_mogadishu"][8] = (2314,1860,63);
|
||||
level.grnd_dropzones["mp_mogadishu"][9] = (73,858,3);
|
||||
level.grnd_dropzones["mp_mogadishu"][10] = (710,837,16);
|
||||
level.grnd_dropzones["mp_mogadishu"][11] = (-549,829,2);
|
||||
level.grnd_dropzones["mp_mogadishu"][12] = (34,1850,84);
|
||||
level.grnd_dropzones["mp_mogadishu"][13] = (-778,2614,157);
|
||||
level.grnd_dropzones["mp_mogadishu"][14] = (-204,3206,152);
|
||||
level.grnd_dropzones["mp_mogadishu"][15] = (752,3189,148);
|
||||
level.grnd_dropzones["mp_mogadishu"][16] = (692,2354,95);
|
||||
level.grnd_dropzones["mp_paris"][0] = (-931,-921,110);
|
||||
level.grnd_dropzones["mp_paris"][1] = (1597,1768,47);
|
||||
level.grnd_dropzones["mp_paris"][2] = (716,1809,33);
|
||||
level.grnd_dropzones["mp_paris"][3] = (258,2074,36);
|
||||
level.grnd_dropzones["mp_paris"][4] = (459,1067,37);
|
||||
level.grnd_dropzones["mp_paris"][5] = (852,1350,118);
|
||||
level.grnd_dropzones["mp_paris"][6] = (1601,897,45);
|
||||
level.grnd_dropzones["mp_paris"][7] = (1286,420,41);
|
||||
level.grnd_dropzones["mp_paris"][8] = (1613,181,172);
|
||||
level.grnd_dropzones["mp_paris"][9] = (466,-752,67);
|
||||
level.grnd_dropzones["mp_paris"][10] = (994,-625,50);
|
||||
level.grnd_dropzones["mp_paris"][11] = (-211,-60,63);
|
||||
level.grnd_dropzones["mp_paris"][12] = (-742,177,133);
|
||||
level.grnd_dropzones["mp_paris"][13] = (-1532,100,250);
|
||||
level.grnd_dropzones["mp_paris"][14] = (-343,1922,121);
|
||||
level.grnd_dropzones["mp_paris"][15] = (-1127,1555,284);
|
||||
level.grnd_dropzones["mp_paris"][16] = (-2025,1327,316);
|
||||
level.grnd_dropzones["mp_paris"][17] = (-1039,841,187);
|
||||
level.grnd_dropzones["mp_exchange"][0] = (-614,1286,113);
|
||||
level.grnd_dropzones["mp_exchange"][1] = (182,1155,148);
|
||||
level.grnd_dropzones["mp_exchange"][2] = (1018,1254,120);
|
||||
level.grnd_dropzones["mp_exchange"][3] = (2182,1322,145);
|
||||
level.grnd_dropzones["mp_exchange"][4] = (655,815,13);
|
||||
level.grnd_dropzones["mp_exchange"][5] = (761,-312,-18);
|
||||
level.grnd_dropzones["mp_exchange"][6] = (761,-771,112);
|
||||
level.grnd_dropzones["mp_exchange"][7] = (635,-1450,110);
|
||||
level.grnd_dropzones["mp_exchange"][8] = (152,-1538,96);
|
||||
level.grnd_dropzones["mp_exchange"][9] = (303,-824,88);
|
||||
level.grnd_dropzones["mp_exchange"][10] = (-953,-768,45);
|
||||
level.grnd_dropzones["mp_exchange"][11] = (2392,1305,144);
|
||||
level.grnd_dropzones["mp_exchange"][12] = (1634,1329,151);
|
||||
level.grnd_dropzones["mp_exchange"][13] = (1315,743,159);
|
||||
level.grnd_dropzones["mp_bootleg"][0] = (-1432,1404,8);
|
||||
level.grnd_dropzones["mp_bootleg"][1] = (-1017,1787,-39);
|
||||
level.grnd_dropzones["mp_bootleg"][2] = (-590,1514,-43);
|
||||
level.grnd_dropzones["mp_bootleg"][3] = (-588,614,-12);
|
||||
level.grnd_dropzones["mp_bootleg"][4] = (-1732,84,11);
|
||||
level.grnd_dropzones["mp_bootleg"][5] = (-1809,-302,140);
|
||||
level.grnd_dropzones["mp_bootleg"][6] = (-1649,-1147,92);
|
||||
level.grnd_dropzones["mp_bootleg"][7] = (-884,-1035,-4);
|
||||
level.grnd_dropzones["mp_bootleg"][8] = (-719,-1673,60);
|
||||
level.grnd_dropzones["mp_bootleg"][9] = (-335,-2111,60);
|
||||
level.grnd_dropzones["mp_bootleg"][10] = (208,-1955,68);
|
||||
level.grnd_dropzones["mp_bootleg"][11] = (-198,-1726,60);
|
||||
level.grnd_dropzones["mp_bootleg"][12] = (100,-1101,-9);
|
||||
level.grnd_dropzones["mp_bootleg"][13] = (-427,-100,-8);
|
||||
level.grnd_dropzones["mp_bootleg"][14] = (949,-1132,-10);
|
||||
level.grnd_dropzones["mp_bootleg"][15] = (884,1182,-28);
|
||||
level.grnd_dropzones["mp_bootleg"][16] = (242,1194,-45);
|
||||
level.grnd_dropzones["mp_carbon"][0] = (-3330,-3392,3630);
|
||||
level.grnd_dropzones["mp_carbon"][1] = (-3635,-3735,3630);
|
||||
level.grnd_dropzones["mp_carbon"][2] = (-3625,-4189,3633);
|
||||
level.grnd_dropzones["mp_carbon"][3] = (-2992,-4339,3627);
|
||||
level.grnd_dropzones["mp_carbon"][4] = (-2925,-4999,3673);
|
||||
level.grnd_dropzones["mp_carbon"][5] = (-2573,-4771,3784);
|
||||
level.grnd_dropzones["mp_carbon"][6] = (-1705,-4643,3813);
|
||||
level.grnd_dropzones["mp_carbon"][7] = (-1799,-3957,3813);
|
||||
level.grnd_dropzones["mp_carbon"][8] = (-2141,-3647,3815);
|
||||
level.grnd_dropzones["mp_carbon"][9] = (-3212,-2879,3807);
|
||||
level.grnd_dropzones["mp_carbon"][10] = (-1623,-3339,3808);
|
||||
level.grnd_dropzones["mp_carbon"][11] = (-1223,-4234,3834);
|
||||
level.grnd_dropzones["mp_carbon"][12] = (-896,-4888,3944);
|
||||
level.grnd_dropzones["mp_carbon"][13] = (-228,-4535,3975);
|
||||
level.grnd_dropzones["mp_carbon"][14] = (-257,-3865,3956);
|
||||
level.grnd_dropzones["mp_carbon"][15] = (-215,-3260,3967);
|
||||
level.grnd_dropzones["mp_carbon"][16] = (-535,-3798,3966);
|
||||
level.grnd_dropzones["mp_hardhat"][0] = (2125,-364,266);
|
||||
level.grnd_dropzones["mp_hardhat"][1] = (1959,-772,352);
|
||||
level.grnd_dropzones["mp_hardhat"][2] = (1883,-1384,351);
|
||||
level.grnd_dropzones["mp_hardhat"][3] = (848,-1520,334);
|
||||
level.grnd_dropzones["mp_hardhat"][4] = (1326,-1380,342);
|
||||
level.grnd_dropzones["mp_hardhat"][5] = (-338,-1273,348);
|
||||
level.grnd_dropzones["mp_hardhat"][6] = (-821,-884,348);
|
||||
level.grnd_dropzones["mp_hardhat"][7] = (-920,-290,230);
|
||||
level.grnd_dropzones["mp_hardhat"][8] = (-463,-250,333);
|
||||
level.grnd_dropzones["mp_hardhat"][9] = (-741,208,245);
|
||||
level.grnd_dropzones["mp_hardhat"][10] = (-201,806,437);
|
||||
level.grnd_dropzones["mp_hardhat"][11] = (224,980,436);
|
||||
level.grnd_dropzones["mp_hardhat"][12] = (1125,656,255);
|
||||
level.grnd_dropzones["mp_hardhat"][13] = (1531,1241,364);
|
||||
level.grnd_dropzones["mp_hardhat"][14] = (1522,542,244);
|
||||
level.grnd_dropzones["mp_alpha"][0] = (-1979,1653,148);
|
||||
level.grnd_dropzones["mp_alpha"][1] = (-1392,1623,60);
|
||||
level.grnd_dropzones["mp_alpha"][2] = (-1697,1205,52);
|
||||
level.grnd_dropzones["mp_alpha"][3] = (-1671,692,54);
|
||||
level.grnd_dropzones["mp_alpha"][4] = (-572,-272,55);
|
||||
level.grnd_dropzones["mp_alpha"][5] = (634,-345,52);
|
||||
level.grnd_dropzones["mp_alpha"][6] = (391,121,60);
|
||||
level.grnd_dropzones["mp_alpha"][7] = (291,1271,60);
|
||||
level.grnd_dropzones["mp_alpha"][8] = (-459,868,52);
|
||||
level.grnd_dropzones["mp_alpha"][9] = (-353,1334,52);
|
||||
level.grnd_dropzones["mp_alpha"][10] = (-37,1637,52);
|
||||
level.grnd_dropzones["mp_alpha"][11] = (-5,2226,52);
|
||||
level.grnd_dropzones["mp_alpha"][12] = (-407,2198,196);
|
||||
level.grnd_dropzones["mp_village"][0] = (647,1891,332);
|
||||
level.grnd_dropzones["mp_village"][1] = (-26,1749,334);
|
||||
level.grnd_dropzones["mp_village"][2] = (104,1292,323);
|
||||
level.grnd_dropzones["mp_village"][3] = (-1064,1552,322);
|
||||
level.grnd_dropzones["mp_village"][4] = (-599,886,378);
|
||||
level.grnd_dropzones["mp_village"][5] = (-1038,569,317);
|
||||
level.grnd_dropzones["mp_village"][6] = (-1899,1217,336);
|
||||
level.grnd_dropzones["mp_village"][7] = (-1540,289,304);
|
||||
level.grnd_dropzones["mp_village"][8] = (-454,-277,270);
|
||||
level.grnd_dropzones["mp_village"][9] = (-1734,-790,365);
|
||||
level.grnd_dropzones["mp_village"][10] = (-1418,-1371,431);
|
||||
level.grnd_dropzones["mp_village"][11] = (-928,-749,417);
|
||||
level.grnd_dropzones["mp_village"][12] = (-861,-2105,408);
|
||||
level.grnd_dropzones["mp_village"][13] = (-191,-1550,400);
|
||||
level.grnd_dropzones["mp_village"][14] = (357,-678,245);
|
||||
level.grnd_dropzones["mp_village"][15] = (-216,295,223);
|
||||
level.grnd_dropzones["mp_village"][16] = (162,-199,229);
|
||||
level.grnd_dropzones["mp_village"][17] = (179,-3052,447);
|
||||
level.grnd_dropzones["mp_village"][18] = (510,-1790,375);
|
||||
level.grnd_dropzones["mp_village"][19] = (1089,-615,398);
|
||||
level.grnd_dropzones["mp_village"][20] = (1631,394,297);
|
||||
level.grnd_dropzones["mp_village"][21] = (1007,1385,337);
|
||||
level.grnd_dropzones["mp_village"][22] = (992,248,330);
|
||||
level.grnd_dropzones["mp_village"][23] = (551,732,386);
|
||||
level.grnd_dropzones["mp_lambeth"][0] = (-293,-1286,-180);
|
||||
level.grnd_dropzones["mp_lambeth"][1] = (-938,-785,-130);
|
||||
level.grnd_dropzones["mp_lambeth"][2] = (-375,-250,-187);
|
||||
level.grnd_dropzones["mp_lambeth"][3] = (-355,409,-196);
|
||||
level.grnd_dropzones["mp_lambeth"][4] = (161,-5,-181);
|
||||
level.grnd_dropzones["mp_lambeth"][5] = (682,-407,-197);
|
||||
level.grnd_dropzones["mp_lambeth"][6] = (694,263,-196);
|
||||
level.grnd_dropzones["mp_lambeth"][7] = (690,1158,-243);
|
||||
level.grnd_dropzones["mp_lambeth"][8] = (1181,801,-67);
|
||||
level.grnd_dropzones["mp_lambeth"][9] = (1281,1248,-257);
|
||||
level.grnd_dropzones["mp_lambeth"][10] = (2057,757,-249);
|
||||
level.grnd_dropzones["mp_lambeth"][11] = (1470,-1040,-109);
|
||||
level.grnd_dropzones["mp_lambeth"][12] = (1761,-258,-210);
|
||||
level.grnd_dropzones["mp_lambeth"][13] = (2800,-652,-186);
|
||||
level.grnd_dropzones["mp_lambeth"][14] = (2785,445,-244);
|
||||
level.grnd_dropzones["mp_lambeth"][15] = (2751,1090,-263);
|
||||
level.grnd_dropzones["mp_lambeth"][16] = (1535,1980,-214);
|
||||
level.grnd_dropzones["mp_lambeth"][17] = (1262,2602,-213);
|
||||
level.grnd_dropzones["mp_lambeth"][18] = (419,2218,-183);
|
||||
level.grnd_dropzones["mp_lambeth"][19] = (170,1631,-182);
|
||||
level.grnd_dropzones["mp_lambeth"][20] = (-606,1549,-201);
|
||||
level.grnd_dropzones["mp_lambeth"][21] = (-1199,1030,-196);
|
||||
level.grnd_dropzones["mp_radar"][0] = (-3482,-498,1222);
|
||||
level.grnd_dropzones["mp_radar"][1] = (-4263,-124,1229);
|
||||
level.grnd_dropzones["mp_radar"][2] = (-4006,827,1238);
|
||||
level.grnd_dropzones["mp_radar"][3] = (-3375,342,1222);
|
||||
level.grnd_dropzones["mp_radar"][4] = (-4623,531,1298);
|
||||
level.grnd_dropzones["mp_radar"][5] = (-5157,877,1200);
|
||||
level.grnd_dropzones["mp_radar"][6] = (-5950,1071,1305);
|
||||
level.grnd_dropzones["mp_radar"][7] = (-6509,1660,1299);
|
||||
level.grnd_dropzones["mp_radar"][8] = (-7013,2955,1359);
|
||||
level.grnd_dropzones["mp_radar"][9] = (-6333,3473,1421);
|
||||
level.grnd_dropzones["mp_radar"][10] = (-5675,2923,1388);
|
||||
level.grnd_dropzones["mp_radar"][11] = (-7119,4357,1380);
|
||||
level.grnd_dropzones["mp_radar"][12] = (-5487,4077,1356);
|
||||
level.grnd_dropzones["mp_radar"][13] = (-5736,2960,1407);
|
||||
level.grnd_dropzones["mp_radar"][14] = (-4908,3281,1225);
|
||||
level.grnd_dropzones["mp_radar"][15] = (-4421,4071,1268);
|
||||
level.grnd_dropzones["mp_radar"][16] = (-4979,1816,1205);
|
||||
level.grnd_dropzones["mp_radar"][17] = (-4874,2306,1223);
|
||||
level.grnd_dropzones["mp_interchange"][0] = (2465,-402,149);
|
||||
level.grnd_dropzones["mp_interchange"][1] = (2128,199,68);
|
||||
level.grnd_dropzones["mp_interchange"][2] = (1280,1263,126);
|
||||
level.grnd_dropzones["mp_interchange"][3] = (762,1747,114);
|
||||
level.grnd_dropzones["mp_interchange"][4] = (-9,1836,38);
|
||||
level.grnd_dropzones["mp_interchange"][5] = (-284,1171,159);
|
||||
level.grnd_dropzones["mp_interchange"][6] = (-1028,944,31);
|
||||
level.grnd_dropzones["mp_interchange"][7] = (-256,264,126);
|
||||
level.grnd_dropzones["mp_interchange"][8] = (462,-463,158);
|
||||
level.grnd_dropzones["mp_interchange"][9] = (1029,-1045,179);
|
||||
level.grnd_dropzones["mp_interchange"][10] = (1760,-1434,142);
|
||||
level.grnd_dropzones["mp_interchange"][11] = (1538,-361,142);
|
||||
level.grnd_dropzones["mp_interchange"][12] = (1150,-2977,171);
|
||||
level.grnd_dropzones["mp_interchange"][13] = (371,-2883,209);
|
||||
level.grnd_dropzones["mp_interchange"][14] = (399,-2149,220);
|
||||
level.grnd_dropzones["mp_underground"][0] = (-602,3072,-68);
|
||||
level.grnd_dropzones["mp_underground"][1] = (-285,2551,-215);
|
||||
level.grnd_dropzones["mp_underground"][2] = (574,2656,-40);
|
||||
level.grnd_dropzones["mp_underground"][3] = (-627,1579,-196);
|
||||
level.grnd_dropzones["mp_underground"][4] = (28,1556,-196);
|
||||
level.grnd_dropzones["mp_underground"][5] = (727,1615,-196);
|
||||
level.grnd_dropzones["mp_underground"][6] = (-1491,1268,-196);
|
||||
level.grnd_dropzones["mp_underground"][7] = (-1370,1757,-196);
|
||||
level.grnd_dropzones["mp_underground"][8] = (-1259,599,-156);
|
||||
level.grnd_dropzones["mp_underground"][9] = (-959,-26,60);
|
||||
level.grnd_dropzones["mp_underground"][10] = (-303,-562,60);
|
||||
level.grnd_dropzones["mp_underground"][11] = (193,-922,60);
|
||||
level.grnd_dropzones["mp_underground"][12] = (305,817,-68);
|
||||
level.grnd_dropzones["mp_underground"][13] = (-276,370,-68);
|
||||
level.grnd_dropzones["mp_bravo"][0] = (-1359,608,975);
|
||||
level.grnd_dropzones["mp_bravo"][1] = (-1686,313,991);
|
||||
level.grnd_dropzones["mp_bravo"][2] = (-1228,41,976);
|
||||
level.grnd_dropzones["mp_bravo"][3] = (-732,-715,1032);
|
||||
level.grnd_dropzones["mp_bravo"][4] = (31,-771,1038);
|
||||
level.grnd_dropzones["mp_bravo"][5] = (986,-833,1116);
|
||||
level.grnd_dropzones["mp_bravo"][6] = (1800,-577,1229);
|
||||
level.grnd_dropzones["mp_bravo"][7] = (1588,-55,1181);
|
||||
level.grnd_dropzones["mp_bravo"][8] = (619,916,1175);
|
||||
level.grnd_dropzones["mp_bravo"][9] = (-129,1310,1228);
|
||||
level.grnd_dropzones["mp_bravo"][10] = (-726,1272,1268);
|
||||
level.grnd_dropzones["mp_bravo"][11] = (-741,752,1053);
|
||||
level.grnd_dropzones["mp_bravo"][12] = (6,-136,1282);
|
||||
}
|
488
MW3/PC/MP/maps/mp/gametypes/gtnw.gsc
Normal file
488
MW3/PC/MP/maps/mp/gametypes/gtnw.gsc
Normal file
@ -0,0 +1,488 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\gtnw.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 21
|
||||
* Decompile Time: 286 ms
|
||||
* Timestamp: 10/27/2023 2:13:16 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
maps\mp\gametypes\_globallogic::init();
|
||||
maps\mp\gametypes\_callbacksetup::setupcallbacks();
|
||||
maps\mp\gametypes\_globallogic::setupcallbacks();
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,3,0,1440);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,101,0,10000);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1,0,30);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1,0,10);
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,0,0,30);
|
||||
maps\mp\_utility::registernumlivesdvar(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_3A82(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::setobjectivescoretext(game["attackers"],&"OBJECTIVES_GTNW");
|
||||
maps\mp\_utility::setobjectivescoretext(game["defenders"],&"OBJECTIVES_GTNW");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext(game["attackers"],&"OBJECTIVES_GTNW_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext(game["defenders"],&"OBJECTIVES_GTNW_SCORE");
|
||||
}
|
||||
|
||||
maps\mp\_utility::setobjectivetext(game["attackers"],&"OBJECTIVES_GTNW");
|
||||
maps\mp\_utility::setobjectivetext(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::addspawnpoints("allies","mp_ctf_spawn_allies");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_ctf_spawn_axis");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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_7B);
|
||||
thread func_3A85();
|
||||
}
|
||||
|
||||
//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
|
||||
func_3A85()
|
||||
{
|
||||
level.laststatus["allies"] = 0;
|
||||
level.laststatus["axis"] = 0;
|
||||
var_00 = getent("gtnw_zone","targetname");
|
||||
var_01 = [];
|
||||
var_02 = maps\mp\gametypes\_gameobjects::createuseobject("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::set3dicon("friendly","waypoint_defend");
|
||||
var_02 maps\mp\gametypes\_gameobjects::set2dicon("enemy","compass_waypoint_captureneutral");
|
||||
var_02 maps\mp\gametypes\_gameobjects::set3dicon("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 func_3A88();
|
||||
}
|
||||
|
||||
//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::getspawnpoint_nearteam(var_02);
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
spawnfxdelay(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"])
|
||||
{
|
||||
lib_036E::func_2B88(param_00,1);
|
||||
level thread func_3A82(game["defenders"],game["strings"][game["attackers"] + "_eliminated"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 == game["defenders"])
|
||||
{
|
||||
lib_036E::func_2B88(param_00,1);
|
||||
level thread func_3A82(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_3984();
|
||||
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_3984(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::splashnotify("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::showelem();
|
||||
param_00.usebartext maps\mp\gametypes\_hud_util::showelem();
|
||||
}
|
||||
|
||||
//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
|
||||
func_3A88()
|
||||
{
|
||||
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::set3dicon("enemy","waypoint_captureneutral");
|
||||
maps\mp\gametypes\_gameobjects::setownerteam("none");
|
||||
func_3A8B();
|
||||
wait 1;
|
||||
continue;
|
||||
}
|
||||
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("friendly","compass_waypoint_defend");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("friendly","waypoint_defend");
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy","compass_waypoint_capture");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_capture");
|
||||
if(self.touchlist["axis"].size > self.touchlist["allies"].size)
|
||||
{
|
||||
if(lib_036E::func_2B96("axis") < 100)
|
||||
{
|
||||
lib_036E::func_2B88("axis",1);
|
||||
}
|
||||
|
||||
thread func_3A8A("axis");
|
||||
setdvar("ui_danger_team","allies");
|
||||
maps\mp\gametypes\_gameobjects::setownerteam("axis");
|
||||
if(lib_036E::func_2B96("axis") >= 100)
|
||||
{
|
||||
maps\mp\gametypes\_gameobjects::allowuse("none");
|
||||
func_3A89("axis");
|
||||
self notify("stop_counting");
|
||||
}
|
||||
}
|
||||
else if(self.touchlist["axis"].size < self.touchlist["allies"].size)
|
||||
{
|
||||
if(lib_036E::func_2B96("allies") < 100)
|
||||
{
|
||||
lib_036E::func_2B88("allies",1);
|
||||
}
|
||||
|
||||
thread func_3A8A("allies");
|
||||
setdvar("ui_danger_team","axis");
|
||||
maps\mp\gametypes\_gameobjects::setownerteam("allies");
|
||||
if(lib_036E::func_2B96("allies") >= 100)
|
||||
{
|
||||
maps\mp\gametypes\_gameobjects::allowuse("none");
|
||||
func_3A89("allies");
|
||||
self notify("stop_counting");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy","compass_waypoint_captureneutral");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_captureneutral");
|
||||
maps\mp\gametypes\_gameobjects::setownerteam("none");
|
||||
setdvar("ui_danger_team","contested");
|
||||
}
|
||||
|
||||
func_3A8B();
|
||||
wait 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
func_3A89(param_00)
|
||||
{
|
||||
func_3944(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_3944(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::splashnotify("captured_nuke",maps\mp\gametypes\_rank::getscoreinfovalue("capture"));
|
||||
var_03 thread [[ level.onxpevent ]]("capture");
|
||||
lib_036E::func_2B7B("capture",var_03);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
func_3A8A(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_3A8B()
|
||||
{
|
||||
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::showelem();
|
||||
var_01.usebartext maps\mp\gametypes\_hud_util::showelem();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//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;
|
||||
}
|
||||
}
|
641
MW3/PC/MP/maps/mp/gametypes/gun.gsc
Normal file
641
MW3/PC/MP/maps/mp/gametypes/gun.gsc
Normal file
@ -0,0 +1,641 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\gun.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 23
|
||||
* Decompile Time: 311 ms
|
||||
* Timestamp: 10/27/2023 2:13:17 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
maps\mp\gametypes\_globallogic::init();
|
||||
maps\mp\gametypes\_callbacksetup::setupcallbacks();
|
||||
maps\mp\gametypes\_globallogic::setupcallbacks();
|
||||
func_3A48();
|
||||
if(isusingmatchrulesdata())
|
||||
{
|
||||
level.initializematchrules = ::initializematchrules;
|
||||
[[ level.initializematchrules ]]();
|
||||
level thread maps\mp\_utility::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10);
|
||||
setdynamicdvar("scr_gun_scorelimit",level.gun_guns.size);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,level.gun_guns.size);
|
||||
level thread func_01C0();
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,0);
|
||||
maps\mp\_utility::registernumlivesdvar(level.gametype,0);
|
||||
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
|
||||
level.matchrules_randomize = 0;
|
||||
level.matchrules_damagemultiplier = 0;
|
||||
level.matchrules_vampirism = 0;
|
||||
}
|
||||
|
||||
func_3972();
|
||||
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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initializematchrules()
|
||||
{
|
||||
maps\mp\_utility::setcommonrulesfrommatchrulesdata(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::registerroundlimitdvar("gun",1);
|
||||
setdynamicdvar("scr_gun_halftime",0);
|
||||
maps\mp\_utility::registerhalftimedvar("gun",0);
|
||||
setdynamicdvar("scr_gun_promode",0);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
func_01C0()
|
||||
{
|
||||
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::setobjectivetext("allies",&"OBJECTIVES_DM");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_DM");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_DM");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_DM");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_DM_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_dm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_dm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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);
|
||||
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_3A43();
|
||||
if(level.matchrules_randomize)
|
||||
{
|
||||
var_00.gun_nextguns = level.gun_guns;
|
||||
var_00.gun_prevguns = [];
|
||||
}
|
||||
|
||||
var_00 thread refillammo();
|
||||
var_00 thread func_3A42();
|
||||
}
|
||||
}
|
||||
|
||||
//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::addtoteam("axis",1);
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\gametypes\_menus::addtoteam("allies",1);
|
||||
}
|
||||
}
|
||||
|
||||
var_00 = maps\mp\gametypes\_spawnlogic::getteamspawnpoints(self.pers["team"]);
|
||||
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_dm(var_00);
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
onspawnplayer()
|
||||
{
|
||||
self.pers["gamemodeLoadout"] = level.gun_loadouts[self.pers["team"]];
|
||||
thread func_39EB();
|
||||
level notify("spawned_player");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
func_39EB()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("disconnect");
|
||||
level waittill("player_spawned");
|
||||
maps\mp\_utility::giveperk("specialty_bling",0);
|
||||
func_3A3F(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)
|
||||
{
|
||||
lib_036E::func_2B7B("dropped_gun_score",self,undefined,1,1);
|
||||
}
|
||||
|
||||
if(param_03 == "MOD_MELEE")
|
||||
{
|
||||
if(self.gungameprevgunindex)
|
||||
{
|
||||
param_01 thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_DROPPED_ENEMY_GUN_RANK");
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("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::giverankxp("gained_gun_rank");
|
||||
lib_036E::func_2B7B("gained_gun_score",param_01,self,1,1);
|
||||
if(param_01.gungamegunindex == level.gun_guns.size - 1)
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("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_3A3F();
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
func_3A3F(param_00)
|
||||
{
|
||||
var_01 = func_0173();
|
||||
self.gun_curgun = var_01;
|
||||
var_01 = func_0174(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::func_2F45(&"SPLASHES_DROPPED_GUN_RANK");
|
||||
}
|
||||
else if(self.gungameprevgunindex < self.gungamegunindex)
|
||||
{
|
||||
thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_GAINED_GUN_RANK");
|
||||
}
|
||||
|
||||
self.gungameprevgunindex = self.gungamegunindex;
|
||||
func_3A45();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
func_0173()
|
||||
{
|
||||
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_0174(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::buildweaponname(param_00,var_01,var_02,0,0);
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
ontimelimit()
|
||||
{
|
||||
level.finalkillcam_winner = "none";
|
||||
var_00 = func_03B6();
|
||||
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_03B6()
|
||||
{
|
||||
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
|
||||
refillammo()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("disconnect");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("reload");
|
||||
self givestartammo(self.primaryweapon);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
func_3A42()
|
||||
{
|
||||
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_3A43()
|
||||
{
|
||||
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_3A47();
|
||||
thread hideinkillcam();
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
func_3A45()
|
||||
{
|
||||
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::isinkillcam())
|
||||
{
|
||||
self.gun_progressdisplay[0].alpha = 0;
|
||||
self.gun_progressdisplay[1].alpha = 0;
|
||||
var_00 = 0;
|
||||
}
|
||||
else if(!var_00 && isalive(self) && !maps\mp\_utility::isinkillcam())
|
||||
{
|
||||
self.gun_progressdisplay[0].alpha = 1;
|
||||
self.gun_progressdisplay[1].alpha = 1;
|
||||
var_00 = 1;
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
func_3A47()
|
||||
{
|
||||
self endon("disconnect");
|
||||
level waittill("game_ended");
|
||||
self.gun_progressdisplay[0].alpha = 0;
|
||||
self.gun_progressdisplay[1].alpha = 0;
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
func_3A48()
|
||||
{
|
||||
level.gun_guns = [];
|
||||
var_00 = 0;
|
||||
if(isusingmatchrulesdata())
|
||||
{
|
||||
var_00 = getmatchrulesdata("gunData","numGuns");
|
||||
}
|
||||
|
||||
if(var_00)
|
||||
{
|
||||
for(var_01 = 0;var_01 < var_00;var_01++)
|
||||
{
|
||||
level.gun_guns[var_01] = getmatchrulesdata("gunData","guns",var_01);
|
||||
}
|
||||
}
|
||||
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: 23
|
||||
func_3972()
|
||||
{
|
||||
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"];
|
||||
}
|
530
MW3/PC/MP/maps/mp/gametypes/infect.gsc
Normal file
530
MW3/PC/MP/maps/mp/gametypes/infect.gsc
Normal file
@ -0,0 +1,530 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\infect.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 16
|
||||
* Decompile Time: 222 ms
|
||||
* Timestamp: 10/27/2023 2:13: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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10);
|
||||
maps\mp\_utility::setoverridewatchdvar("scorelimit",0);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(level.gametype,0);
|
||||
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
|
||||
level.matchrules_numinitialinfected = 1;
|
||||
level.matchrules_damagemultiplier = 0;
|
||||
level.matchrules_vampirism = 0;
|
||||
}
|
||||
|
||||
func_3989();
|
||||
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;
|
||||
if(level.matchrules_damagemultiplier || level.matchrules_vampirism)
|
||||
{
|
||||
level.modifyplayerdamage = ::maps\mp\gametypes\_damage::gamemodemodifyplayerdamage;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initializematchrules()
|
||||
{
|
||||
maps\mp\_utility::setcommonrulesfrommatchrulesdata();
|
||||
level.matchrules_numinitialinfected = getmatchrulesdata("infectData","numInitialInfected");
|
||||
var_00 = maps\mp\_utility::getwatcheddvar("numlives");
|
||||
if(var_00)
|
||||
{
|
||||
setdynamicdvar("scr_" + level.gametype + "_numLives",var_00 + 1);
|
||||
maps\mp\_utility::registernumlivesdvar(level.gametype,var_00 + 1);
|
||||
}
|
||||
|
||||
maps\mp\_utility::setoverridewatchdvar("scorelimit",0);
|
||||
setdynamicdvar("scr_infect_roundswitch",0);
|
||||
maps\mp\_utility::registerroundswitchdvar("infect",0,0,9);
|
||||
setdynamicdvar("scr_infect_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("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_promode",0);
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
onprecachegametype()
|
||||
{
|
||||
precachestring(&"MP_CONSCRIPTION_STARTS_IN");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
onstartgametype()
|
||||
{
|
||||
setclientnamemode("auto_change");
|
||||
maps\mp\_utility::setobjectivetext("allies",&"OBJECTIVES_INFECT");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_INFECT");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_INFECT");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_INFECT");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_INFECT_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_tdm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_tdm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(level.spawnmins,level.spawnmaxs);
|
||||
setmapcenter(level.mapcenter);
|
||||
var_00 = [];
|
||||
maps\mp\gametypes\_gameobjects::main(var_00);
|
||||
maps\mp\gametypes\_rank::registerscoreinfo("final_rogue",200);
|
||||
maps\mp\gametypes\_rank::registerscoreinfo("draft_rogue",100);
|
||||
maps\mp\gametypes\_rank::registerscoreinfo("survivor",100);
|
||||
level.quickmessagetoall = 1;
|
||||
level.blockweapondrops = 1;
|
||||
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_teamscores["axis"] = 0;
|
||||
level.infect_teamscores["allies"] = 0;
|
||||
level thread onplayerconnect();
|
||||
level thread onplayereliminated();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
onplayerconnect()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
level waittill("connected",var_00);
|
||||
var_00.infect_firstspawn = 1;
|
||||
var_00 thread ondisconnect();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
onspawnplayer()
|
||||
{
|
||||
func_3A2B();
|
||||
if(!level.infect_choosingfirstinfected)
|
||||
{
|
||||
level.infect_choosingfirstinfected = 1;
|
||||
level thread func_3A28();
|
||||
}
|
||||
|
||||
if(isdefined(self.isinitialinfected))
|
||||
{
|
||||
self.pers["gamemodeLoadout"] = level.infect_loadouts["axis_initial"];
|
||||
}
|
||||
else
|
||||
{
|
||||
self.pers["gamemodeLoadout"] = level.infect_loadouts[self.pers["team"]];
|
||||
}
|
||||
|
||||
if(self.infect_firstactualspawn)
|
||||
{
|
||||
self.infect_firstactualspawn = 0;
|
||||
level.infect_teamscores["allies"]++;
|
||||
func_3A2B();
|
||||
}
|
||||
|
||||
level notify("spawned_player");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
getspawnpoint()
|
||||
{
|
||||
if(self.infect_firstspawn)
|
||||
{
|
||||
self.infect_firstspawn = 0;
|
||||
self.infect_firstactualspawn = 1;
|
||||
self.pers["class"] = "gamemode";
|
||||
self.pers["lastClass"] = "";
|
||||
self.class = self.pers["class"];
|
||||
self.lastclass = self.pers["lastClass"];
|
||||
maps\mp\gametypes\_menus::addtoteam("allies",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::getspawnpoint_nearteam(var_01);
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
func_3A28()
|
||||
{
|
||||
level endon("game_ended");
|
||||
maps\mp\_utility::gameflagwait("prematch_done");
|
||||
level.infect_timerdisplay.label = &"MP_DRAFT_STARTS_IN";
|
||||
level.infect_timerdisplay settimer(8);
|
||||
level.infect_timerdisplay.alpha = 1;
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(8);
|
||||
level.infect_timerdisplay.alpha = 0;
|
||||
var_00 = level.players[randomint(level.players.size)];
|
||||
var_00.infect_isbeingchosen = 1;
|
||||
var_00 endon("disconnect");
|
||||
while(!maps\mp\_utility::isreallyalive(var_00) || var_00 maps\mp\_utility::isusingremote())
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(isdefined(var_00.iscarrying) && var_00.iscarrying == 1)
|
||||
{
|
||||
var_00 notify("force_cancel_placement");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
if(var_00 maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
var_00 notify("lost_juggernaut");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_00 maps\mp\gametypes\_playerlogic::removefromalivecount();
|
||||
var_00 maps\mp\gametypes\_menus::addtoteam("axis");
|
||||
level.infect_chosefirstinfected = 1;
|
||||
var_00.infect_isbeingchosen = undefined;
|
||||
var_00.isinitialinfected = 1;
|
||||
level.infect_teamscores["allies"]--;
|
||||
level.infect_teamscores["axis"]++;
|
||||
func_3A2B();
|
||||
var_01 = maps\mp\_utility::getwatcheddvar("numlives");
|
||||
if(var_01 && var_00.pers["lives"])
|
||||
{
|
||||
var_00.pers["lives"]--;
|
||||
}
|
||||
|
||||
var_00 maps\mp\gametypes\_playerlogic::addtoalivecount();
|
||||
var_00.pers["gamemodeLoadout"] = level.infect_loadouts["axis_initial"];
|
||||
var_02 = spawn("script_model",var_00.origin);
|
||||
var_02.angles = var_00.angles;
|
||||
var_02.playerspawnpos = var_00.origin;
|
||||
var_02.notti = 1;
|
||||
var_00.setspawnpoint = var_02;
|
||||
var_00 notify("faux_spawn");
|
||||
var_00.faux_spawn_stance = var_00 getstance();
|
||||
var_00 thread maps\mp\gametypes\_playerlogic::spawnplayer(1);
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_first_mercenary",var_00);
|
||||
maps\mp\_utility::playsoundonplayers("mp_enemy_obj_captured");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
func_3A2A()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self.isinitialinfected = undefined;
|
||||
if(isdefined(self.iscarrying) && self.iscarrying == 1)
|
||||
{
|
||||
self notify("force_cancel_placement");
|
||||
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"];
|
||||
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::spawnplayer(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(isdefined(param_01) && isplayer(param_01) && param_01 != self && self.team == "allies" && self.team != param_01.team)
|
||||
{
|
||||
self.addtoteam = "axis";
|
||||
level.infect_teamscores["allies"]--;
|
||||
level.infect_teamscores["axis"]++;
|
||||
func_3A2B();
|
||||
if(isdefined(param_01.isinitialinfected))
|
||||
{
|
||||
param_01 thread func_3A2A();
|
||||
}
|
||||
|
||||
param_01 thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_DRAFTED");
|
||||
lib_036E::func_2B7B("draft_rogue",param_01,self,1);
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("draft_rogue");
|
||||
if(level.infect_teamscores["allies"] > 1)
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("mp_enemy_obj_captured","allies");
|
||||
maps\mp\_utility::playsoundonplayers("mp_war_objective_taken","axis");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_got_drafted",self,"allies");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_drafted_rogue",param_01,"axis");
|
||||
foreach(var_0B in level.players)
|
||||
{
|
||||
if(var_0B.team == "allies" && var_0B != self)
|
||||
{
|
||||
var_0B thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_SURVIVOR");
|
||||
lib_036E::func_2B7B("survivor",var_0B,undefined,1);
|
||||
var_0B thread maps\mp\gametypes\_rank::giverankxp("survivor");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(level.infect_teamscores["allies"] == 1)
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("mp_obj_captured");
|
||||
foreach(var_0B in level.players)
|
||||
{
|
||||
if(var_0B.team == "allies" && var_0B != self)
|
||||
{
|
||||
var_0B thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_FINAL_ROGUE");
|
||||
lib_036E::func_2B7B("final_rogue",var_0B,undefined,1);
|
||||
var_0B thread maps\mp\gametypes\_rank::giverankxp("final_rogue");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_final_rogue",var_0B);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(level.infect_teamscores["allies"] == 0)
|
||||
{
|
||||
level.finalkillcam_winner = "axis";
|
||||
level thread maps\mp\gametypes\_gamelogic::endgame("axis",game["strings"]["allies_eliminated"]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
ondisconnect()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("eliminated");
|
||||
self waittill("disconnect");
|
||||
if(self.team == "spectator")
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.infect_teamscores[self.team]--;
|
||||
func_3A2B();
|
||||
if(isdefined(self.infect_isbeingchosen) || level.infect_chosefirstinfected)
|
||||
{
|
||||
if(level.infect_teamscores["allies"] == 0)
|
||||
{
|
||||
level.finalkillcam_winner = "axis";
|
||||
level thread maps\mp\gametypes\_gamelogic::endgame("axis",game["strings"]["allies_eliminated"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(level.infect_teamscores["axis"] == 0)
|
||||
{
|
||||
if(level.infect_teamscores["allies"] > 1)
|
||||
{
|
||||
level.infect_chosefirstinfected = 0;
|
||||
level thread func_3A28();
|
||||
return;
|
||||
}
|
||||
|
||||
level.finalkillcam_winner = "allies";
|
||||
level thread maps\mp\gametypes\_gamelogic::endgame("allies",game["strings"]["allies_eliminated"]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
onplayereliminated()
|
||||
{
|
||||
level endon("game_ended");
|
||||
for(;;)
|
||||
{
|
||||
level waittill("player_eliminated",var_00);
|
||||
var_00 notify("eliminated");
|
||||
level.infect_teamscores[var_00.team]--;
|
||||
func_3A2B();
|
||||
if(level.infect_teamscores["allies"] == 0)
|
||||
{
|
||||
level.finalkillcam_winner = "axis";
|
||||
level thread maps\mp\gametypes\_gamelogic::endgame("axis",game["strings"]["allies_eliminated"]);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(level.infect_teamscores["axis"] == 0)
|
||||
{
|
||||
level.finalkillcam_winner = "allies";
|
||||
level thread maps\mp\gametypes\_gamelogic::endgame("allies",game["strings"]["axis_eliminated"]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
ondeadevent(param_00)
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
ontimelimit()
|
||||
{
|
||||
level.finalkillcam_winner = "allies";
|
||||
level thread maps\mp\gametypes\_gamelogic::endgame("allies",game["strings"]["time_limit_reached"]);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
func_3A2B()
|
||||
{
|
||||
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: 16
|
||||
func_3989()
|
||||
{
|
||||
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",0,"class","inUse"))
|
||||
{
|
||||
level.infect_loadouts["axis"] = maps\mp\_utility::getmatchrulesspecialclass("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::getmatchrulesspecialclass("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::getmatchrulesspecialclass("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;
|
||||
}
|
424
MW3/PC/MP/maps/mp/gametypes/jugg.gsc
Normal file
424
MW3/PC/MP/maps/mp/gametypes/jugg.gsc
Normal file
@ -0,0 +1,424 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\jugg.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 17
|
||||
* Decompile Time: 232 ms
|
||||
* Timestamp: 10/27/2023 2:13:19 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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,10);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(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_3989();
|
||||
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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initializematchrules()
|
||||
{
|
||||
maps\mp\_utility::setcommonrulesfrommatchrulesdata();
|
||||
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::registerroundswitchdvar("jugg",0,0,9);
|
||||
setdynamicdvar("scr_jugg_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("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_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::setobjectivetext("allies",&"OBJECTIVES_JUGG");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_JUGG");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_JUGG");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_JUGG");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_JUGG_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_tdm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_tdm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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_39A2(level.jugg_timerdisplay);
|
||||
level.killstreakrewards = 0;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
func_3A33()
|
||||
{
|
||||
level endon("game_ended");
|
||||
level notify("chooseInitialJugg");
|
||||
level endon("chooseInitialJugg");
|
||||
maps\mp\_utility::gameflagwait("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::waitlongdurationwithhostmigrationpause(8);
|
||||
level.jugg_timerdisplay.alpha = 0;
|
||||
func_3A38(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 ondisconnect();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
ondisconnect()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self waittill("disconnect");
|
||||
func_3A3A();
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
onspawnplayer()
|
||||
{
|
||||
if(!level.jugg_choosingjugg)
|
||||
{
|
||||
level.jugg_choosingjugg = 1;
|
||||
level thread func_3A33();
|
||||
}
|
||||
|
||||
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::addtoteam("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::getspawnpoint_nearteam(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_3A38(param_01,self);
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(level.jugg_juggernaut) && level.jugg_juggernaut == param_01)
|
||||
{
|
||||
param_01.jugg_juggscore++;
|
||||
param_01 lib_036E::func_2B88(param_01.pers["team"],1);
|
||||
param_01 thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_JUGGERNAUT_KILL");
|
||||
lib_036E::func_2B7B("kill_as_juggernaut",param_01,self,1);
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("kill_as_juggernaut");
|
||||
return;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(level.jugg_juggernaut) && level.jugg_juggernaut == self)
|
||||
{
|
||||
self.addtoteam = "axis";
|
||||
maps\mp\_utility::playsoundonplayers("mp_enemy_obj_captured");
|
||||
level.jugg_juggernaut = undefined;
|
||||
level thread func_3A33();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
func_3A38(param_00,param_01,param_02)
|
||||
{
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
param_01.addtoteam = "axis";
|
||||
}
|
||||
|
||||
if(isdefined(level.jugg_juggernaut))
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("mp_enemy_obj_captured");
|
||||
level.jugg_juggernaut = undefined;
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("mp_obj_captured");
|
||||
}
|
||||
|
||||
param_00 endon("disconnect");
|
||||
param_00 thread func_0038();
|
||||
if(param_00 maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
param_00 notify("lost_juggernaut");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
while(!isalive(param_00))
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
param_00 maps\mp\gametypes\_menus::addtoteam("allies");
|
||||
level.jugg_juggernaut = param_00;
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
func_3A3A();
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00.jugg_juggscore++;
|
||||
func_3A3A();
|
||||
param_00 lib_036E::func_2B88("allies",1);
|
||||
}
|
||||
|
||||
if(isdefined(param_02))
|
||||
{
|
||||
param_00 thread func_3A39(1);
|
||||
return;
|
||||
}
|
||||
|
||||
param_00 thread func_3A39();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
func_3A39(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::spawnplayer(1);
|
||||
}
|
||||
else
|
||||
{
|
||||
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::spawnplayer(1);
|
||||
}
|
||||
|
||||
if(level.matchrules_showjuggworldicon)
|
||||
{
|
||||
self.jugg_headicon = maps\mp\_entityheadicons::setheadicon(level.otherteam[self.team],"waypoint_kill",(0,0,85),24,24,undefined,undefined,undefined,undefined,undefined,0);
|
||||
}
|
||||
|
||||
if(!isdefined(param_00))
|
||||
{
|
||||
var_02 = maps\mp\gametypes\_rank::getscoreinfovalue("got_juggernaut");
|
||||
thread maps\mp\gametypes\_hud_message::splashnotify("got_juggernaut",var_02);
|
||||
lib_036E::func_2B7B("got_juggernaut",self,undefined,1);
|
||||
thread maps\mp\gametypes\_rank::giverankxp("got_juggernaut");
|
||||
}
|
||||
|
||||
level thread maps\mp\_utility::teamplayercardsplash("callout_new_juggernaut",self,level.otherteam[self.team]);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
func_3A3A()
|
||||
{
|
||||
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_0038()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("death");
|
||||
self waittill("disconnect");
|
||||
level thread func_3A33();
|
||||
}
|
||||
|
||||
//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_39A2(param_00)
|
||||
{
|
||||
level waittill("game_ended");
|
||||
param_00.alpha = 0;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
func_3989()
|
||||
{
|
||||
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",0,"class","inUse"))
|
||||
{
|
||||
level.jugg_loadouts["axis"] = maps\mp\_utility::getmatchrulesspecialclass("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::getmatchrulesspecialclass("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;
|
||||
}
|
1036
MW3/PC/MP/maps/mp/gametypes/koth.gsc
Normal file
1036
MW3/PC/MP/maps/mp/gametypes/koth.gsc
Normal file
File diff suppressed because it is too large
Load Diff
510
MW3/PC/MP/maps/mp/gametypes/oneflag.gsc
Normal file
510
MW3/PC/MP/maps/mp/gametypes/oneflag.gsc
Normal file
@ -0,0 +1,510 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\oneflag.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 23
|
||||
* Decompile Time: 321 ms
|
||||
* Timestamp: 10/27/2023 2:13:21 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
main()
|
||||
{
|
||||
maps\mp\gametypes\_globallogic::init();
|
||||
maps\mp\gametypes\_callbacksetup::setupcallbacks();
|
||||
maps\mp\gametypes\_globallogic::setupcallbacks();
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,3,0,1440);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,1,0,10000);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,0,0,30);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,4,0,10);
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,3,0,30);
|
||||
maps\mp\_utility::registernumlivesdvar(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::setobjectivetext(game["attackers"],&"OBJECTIVES_CTF");
|
||||
maps\mp\_utility::setobjectivetext(game["defenders"],&"OBJECTIVES_CTF");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER");
|
||||
maps\mp\_utility::setobjectivescoretext(game["defenders"],&"OBJECTIVES_ONE_FLAG_DEFENDER");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext(game["attackers"],&"OBJECTIVES_ONE_FLAG_ATTACKER_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext(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::addspawnpoints("allies","mp_ctf_spawn_allies");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_ctf_spawn_axis");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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_39B6();
|
||||
}
|
||||
|
||||
//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::getspawnpoint_nearteam(var_02);
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
onspawnplayer()
|
||||
{
|
||||
self.usingobj = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
func_39B6()
|
||||
{
|
||||
level.flagmodel["allies"] = maps\mp\gametypes\_teams::getteamflagmodel("allies");
|
||||
level.icon2d["allies"] = maps\mp\gametypes\_teams::getteamflagicon("allies");
|
||||
level.carryflag["allies"] = maps\mp\gametypes\_teams::getteamflagcarrymodel("allies");
|
||||
precachemodel(level.flagmodel["allies"]);
|
||||
precachemodel(level.carryflag["allies"]);
|
||||
level.flagmodel["axis"] = maps\mp\gametypes\_teams::getteamflagmodel("axis");
|
||||
level.icon2d["axis"] = maps\mp\gametypes\_teams::getteamflagicon("axis");
|
||||
level.carryflag["axis"] = maps\mp\gametypes\_teams::getteamflagcarrymodel("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_39C2(game["defenders"]);
|
||||
level.capzones[game["attackers"]] = func_39C3(game["attackers"]);
|
||||
level.flagcaptured = 0;
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
spawnfxdelay(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_39C2(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::createcarryobject(param_00,var_02,var_03,(0,0,85));
|
||||
var_05 maps\mp\gametypes\_gameobjects::setteamusetime("friendly",15);
|
||||
var_05 maps\mp\gametypes\_gameobjects::setteamusetime("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::set3dicon("friendly",level.icondefend3d);
|
||||
var_05 maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcapture2d);
|
||||
var_05 maps\mp\gametypes\_gameobjects::set3dicon("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::getteamflagfx(param_00);
|
||||
var_0A = loadfx(var_09);
|
||||
var_0B = vectortoangles(var_08["normal"]);
|
||||
var_0C = anglestoforward(var_0B);
|
||||
var_0D = anglestoright(var_0B);
|
||||
thread spawnfxdelay(var_0A,var_08["position"],var_0C,var_0D,0.5);
|
||||
return var_05;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
func_39C3(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::createuseobject(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::set3dicon("friendly",level.icontarget3d);
|
||||
var_04 maps\mp\gametypes\_gameobjects::setusetime(0);
|
||||
var_04 maps\mp\gametypes\_gameobjects::setkeyobject(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::getteamflagfx(param_00);
|
||||
var_09 = loadfx(var_08);
|
||||
var_0A = vectortoangles(var_07["normal"]);
|
||||
var_0B = anglestoforward(var_0A);
|
||||
var_0C = anglestoright(var_0A);
|
||||
thread spawnfxdelay(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::getownerteam())
|
||||
{
|
||||
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::getownerteam())
|
||||
{
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("flagreturn",maps\mp\gametypes\_rank::getscoreinfovalue("pickup"));
|
||||
param_00 thread [[ level.onxpevent ]]("pickup");
|
||||
thread func_39C4();
|
||||
param_00 maps\mp\_utility::incplayerstat("flagsreturned",1);
|
||||
param_00 thread maps\mp\_matchdata::loggameevent("return",param_00.origin);
|
||||
return;
|
||||
}
|
||||
|
||||
param_00 func_39C5();
|
||||
level.capzones[var_01] maps\mp\gametypes\_gameobjects::setvisibleteam("any");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_defend");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("friendly","waypoint_kill");
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icontarget2d);
|
||||
maps\mp\_utility::printandsoundoneveryone(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::leaderdialog("enemy_flag_taken",var_01,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_taken",var_02,"status");
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("flagpickup",maps\mp\gametypes\_rank::getscoreinfovalue("pickup"));
|
||||
lib_036E::func_2B7B("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_39C4()
|
||||
{
|
||||
var_00 = maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
var_01 = level.otherteam[var_00];
|
||||
maps\mp\gametypes\_gameobjects::returnhome();
|
||||
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::printandsoundoneveryone(var_00,maps\mp\_utility::getotherteam(var_00),&"MP_FLAG_RETURNED",&"MP_ENEMY_FLAG_RETURNED","mp_obj_returned","mp_obj_returned","");
|
||||
maps\mp\_utility::leaderdialog("enemy_flag_returned",var_01,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_returned",var_00,"status");
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
ondrop(param_00)
|
||||
{
|
||||
var_01 = maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
var_02 = level.otherteam[var_01];
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("friendly",level.icondefend3d);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icondefend2d);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("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_39C6();
|
||||
}
|
||||
|
||||
maps\mp\_utility::printandsoundoneveryone(var_02,"none",&"MP_ENEMY_FLAG_DROPPED_BY","","mp_war_objective_lost","",param_00);
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("mp_war_objective_lost",var_02);
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("enemy_flag_dropped",var_02,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_dropped",var_01,"status");
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
onreset()
|
||||
{
|
||||
self notify("flag_reset");
|
||||
var_00 = maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
var_01 = level.otherteam[var_00];
|
||||
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("friendly",level.icondefend3d);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.icondefend2d);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("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::leaderdialog("enemy_flag_captured",var_01,"status");
|
||||
maps\mp\_utility::leaderdialog("flag_captured",var_02,"status");
|
||||
lib_036E::func_2B7B("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::printandsoundoneveryone(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_39C6();
|
||||
}
|
||||
}
|
||||
|
||||
//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");
|
||||
lib_036E::func_2B7B("kill_carrier",param_01);
|
||||
param_01 maps\mp\_utility::incplayerstat("flagcarrierkills",1);
|
||||
thread maps\mp\_matchdata::logkillevent(param_09,"carrying");
|
||||
func_39C6();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
func_39C5()
|
||||
{
|
||||
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_39C6()
|
||||
{
|
||||
self detach(self.carryflag,"J_spine4");
|
||||
self.carryflag = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
initgametypeawards()
|
||||
{
|
||||
maps\mp\_awards::initstataward("flagscaptured",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("flagsreturned",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("flagcarrierkills",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("flagscarried",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("killsasflagcarrier",0,::maps\mp\_awards::highestwins);
|
||||
}
|
992
MW3/PC/MP/maps/mp/gametypes/sab.gsc
Normal file
992
MW3/PC/MP/maps/mp/gametypes/sab.gsc
Normal file
@ -0,0 +1,992 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\sab.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 37
|
||||
* Decompile Time: 3341 ms
|
||||
* Timestamp: 10/27/2023 2:13:32 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();
|
||||
level.teambased = 1;
|
||||
if(isusingmatchrulesdata())
|
||||
{
|
||||
level.initializematchrules = ::initializematchrules;
|
||||
[[ level.initializematchrules ]]();
|
||||
level thread maps\mp\_utility::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,0,0,9);
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,0);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(level.gametype,0);
|
||||
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
|
||||
level.matchrules_damagemultiplier = 0;
|
||||
level.matchrules_vampirism = 0;
|
||||
}
|
||||
|
||||
maps\mp\_utility::setovertimelimitdvar(2);
|
||||
func_3989();
|
||||
level.onprecachegametype = ::onprecachegametype;
|
||||
level.onstartgametype = ::onstartgametype;
|
||||
level.getspawnpoint = ::getspawnpoint;
|
||||
level.onspawnplayer = ::onspawnplayer;
|
||||
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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
|
||||
game["dialog"]["gametype"] = "sabotage";
|
||||
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";
|
||||
var_00 = getent("sab_bomb_defuse_allies","targetname");
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
var_00 delete();
|
||||
}
|
||||
|
||||
var_00 = getent("sab_bomb_defuse_axis","targetname");
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
var_00 delete();
|
||||
}
|
||||
|
||||
makedvarserverinfo("ui_bomb_timer_endtime",-1);
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initializematchrules()
|
||||
{
|
||||
maps\mp\_utility::setcommonrulesfrommatchrulesdata();
|
||||
setdynamicdvar("scr_sab_bombtimer",getmatchrulesdata("sabData","bombTimer"));
|
||||
setdynamicdvar("scr_sab_planttime",getmatchrulesdata("sabData","plantTime"));
|
||||
setdynamicdvar("scr_sab_defusetime",getmatchrulesdata("sabData","defuseTime"));
|
||||
setdynamicdvar("scr_sab_hotpotato",getmatchrulesdata("sabData","sharedBombTimer"));
|
||||
setdynamicdvar("scr_sab_roundswitch",1);
|
||||
maps\mp\_utility::registerroundswitchdvar("sab",1,0,9);
|
||||
setdynamicdvar("scr_sab_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("sab",1);
|
||||
setdynamicdvar("scr_sab_winlimit",1);
|
||||
maps\mp\_utility::registerwinlimitdvar("sab",1);
|
||||
setdynamicdvar("scr_sab_halftime",0);
|
||||
maps\mp\_utility::registerhalftimedvar("sab",0);
|
||||
setdynamicdvar("scr_sab_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("waypoint_kill");
|
||||
precacheshader("waypoint_bomb_enemy");
|
||||
precacheshader("waypoint_defend");
|
||||
precacheshader("waypoint_defuse");
|
||||
precacheshader("waypoint_target");
|
||||
precacheshader("waypoint_escort");
|
||||
precacheshader("waypoint_bomb");
|
||||
precacheshader("waypoint_defend");
|
||||
precacheshader("waypoint_defuse");
|
||||
precacheshader("waypoint_target");
|
||||
precacheshader("hud_suitcase_bomb");
|
||||
precachestring(&"MP_EXPLOSIVES_RECOVERED_BY");
|
||||
precachestring(&"MP_EXPLOSIVES_DROPPED_BY");
|
||||
precachestring(&"MP_EXPLOSIVES_PLANTED_BY");
|
||||
precachestring(&"MP_EXPLOSIVES_DEFUSED_BY");
|
||||
precachestring(&"MP_YOU_HAVE_RECOVERED_THE_BOMB");
|
||||
precachestring(&"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES");
|
||||
precachestring(&"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES");
|
||||
precachestring(&"MP_PLANTING_EXPLOSIVE");
|
||||
precachestring(&"MP_DEFUSING_EXPLOSIVE");
|
||||
precachestring(&"MP_TARGET_DESTROYED");
|
||||
precachestring(&"MP_NO_RESPAWN");
|
||||
precachestring(&"MP_TIE_BREAKER");
|
||||
precachestring(&"MP_NO_RESPAWN");
|
||||
precachestring(&"MP_SUDDEN_DEATH");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
onstartgametype()
|
||||
{
|
||||
if(!isdefined(game["switchedsides"]))
|
||||
{
|
||||
game["switchedsides"] = 0;
|
||||
}
|
||||
|
||||
setclientnamemode("auto_change");
|
||||
game["strings"]["target_destroyed"] = &"MP_TARGET_DESTROYED";
|
||||
game["strings"]["target_defended"] = &"MP_TARGET_DEDEFEND";
|
||||
maps\mp\_utility::setobjectivetext("allies",&"OBJECTIVES_SAB");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_SAB");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_SAB");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_SAB");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_SAB_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_SAB_SCORE");
|
||||
}
|
||||
|
||||
maps\mp\_utility::setobjectivehinttext("allies",&"OBJECTIVES_SAB_HINT");
|
||||
maps\mp\_utility::setobjectivehinttext("axis",&"OBJECTIVES_SAB_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::addspawnpoints("allies","mp_sab_spawn_allies");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_sab_spawn_axis");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("allies","mp_sab_spawn_allies_planted",1);
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_sab_spawn_axis_planted",1);
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(level.spawnmins,level.spawnmaxs);
|
||||
setmapcenter(level.mapcenter);
|
||||
level.spawn_axis = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_sab_spawn_axis");
|
||||
level.spawn_axis_planted = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_sab_spawn_axis_planted");
|
||||
level.spawn_axis_planted = common_scripts\utility::array_combine(level.spawn_axis_planted,level.spawn_axis);
|
||||
level.spawn_allies = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_sab_spawn_allies");
|
||||
level.spawn_allies_planted = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_sab_spawn_allies_planted");
|
||||
level.spawn_allies_planted = common_scripts\utility::array_combine(level.spawn_allies_planted,level.spawn_allies);
|
||||
level.spawn_axis_start = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_sab_spawn_axis_start");
|
||||
level.spawn_allies_start = maps\mp\gametypes\_spawnlogic::getspawnpointarray("mp_sab_spawn_allies_start");
|
||||
maps\mp\gametypes\_rank::registerscoreinfo("plant",200);
|
||||
maps\mp\gametypes\_rank::registerscoreinfo("destroy",1000);
|
||||
maps\mp\gametypes\_rank::registerscoreinfo("defuse",150);
|
||||
var_00[0] = "sab";
|
||||
maps\mp\gametypes\_gameobjects::main(var_00);
|
||||
thread updategametypedvars();
|
||||
thread func_397C();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
getspawnpoint()
|
||||
{
|
||||
var_00 = self.pers["team"];
|
||||
if(game["switchedsides"])
|
||||
{
|
||||
var_00 = maps\mp\_utility::getotherteam(var_00);
|
||||
}
|
||||
|
||||
if(level.usestartspawns)
|
||||
{
|
||||
if(var_00 == "axis")
|
||||
{
|
||||
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(level.spawn_axis_start);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_random(level.spawn_allies_start);
|
||||
}
|
||||
}
|
||||
else if(isdefined(level.bombplanted) && level.bombplanted && isdefined(level.bombowner) && var_01 == level.bombowner.team)
|
||||
{
|
||||
if(var_01 == "axis")
|
||||
{
|
||||
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_nearteam(level.spawn_axis_planted);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_nearteam(level.spawn_allies_planted);
|
||||
}
|
||||
}
|
||||
else if(var_01 == "axis")
|
||||
{
|
||||
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_nearteam(level.spawn_axis);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = maps\mp\gametypes\_spawnlogic::getspawnpoint_nearteam(level.spawn_allies);
|
||||
}
|
||||
|
||||
return var_01;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
onspawnplayer()
|
||||
{
|
||||
self.isplanting = 0;
|
||||
self.isdefusing = 0;
|
||||
self.isbombcarrier = 0;
|
||||
if(maps\mp\_utility::inovertime() && !isdefined(self.otspawned))
|
||||
{
|
||||
thread func_3979();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
func_3979()
|
||||
{
|
||||
self endon("disconnect");
|
||||
wait 0.25;
|
||||
thread maps\mp\gametypes\_hud_message::splashnotify("sudden_death");
|
||||
self.otspawned = 1;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
updategametypedvars()
|
||||
{
|
||||
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.hotpotato = maps\mp\_utility::dvarintvalue("hotpotato",1,0,1);
|
||||
level.scoremode = maps\mp\_utility::getwatcheddvar("scorelimit");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
func_397C()
|
||||
{
|
||||
level.bombplanted = 0;
|
||||
level.bombexploded = 0;
|
||||
level._effect["bombexplosion"] = loadfx("explosions/tanker_explosion");
|
||||
var_00 = getent("sab_bomb_pickup_trig","targetname");
|
||||
if(!isdefined(var_00))
|
||||
{
|
||||
common_scripts\utility::error("No sab_bomb_pickup_trig trigger found in map.");
|
||||
return;
|
||||
}
|
||||
|
||||
var_01[0] = getent("sab_bomb","targetname");
|
||||
if(!isdefined(var_01[0]))
|
||||
{
|
||||
common_scripts\utility::error("No sab_bomb script_model found in map.");
|
||||
return;
|
||||
}
|
||||
|
||||
precachemodel("prop_suitcase_bomb");
|
||||
var_01[0] setmodel("prop_suitcase_bomb");
|
||||
level.sabbomb = maps\mp\gametypes\_gameobjects::createcarryobject("neutral",var_00,var_01,(0,0,32));
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::allowcarry("any");
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_bomb");
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_bomb");
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_bomb");
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::set3dicon("friendly","waypoint_bomb");
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::setcarryicon("hud_suitcase_bomb");
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::setvisibleteam("any");
|
||||
level.sabbomb.objidpingenemy = 1;
|
||||
level.sabbomb.onpickup = ::onpickup;
|
||||
level.sabbomb.ondrop = ::ondrop;
|
||||
level.sabbomb.allowweapons = 1;
|
||||
level.sabbomb.objpoints["allies"].archived = 1;
|
||||
level.sabbomb.objpoints["axis"].archived = 1;
|
||||
level.sabbomb.autoresettime = 60;
|
||||
if(!isdefined(getent("sab_bomb_axis","targetname")))
|
||||
{
|
||||
common_scripts\utility::error("No sab_bomb_axis trigger found in map.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(!isdefined(getent("sab_bomb_allies","targetname")))
|
||||
{
|
||||
common_scripts\utility::error("No sab_bomb_allies trigger found in map.");
|
||||
return;
|
||||
}
|
||||
|
||||
if(game["switchedsides"])
|
||||
{
|
||||
level.bombzones["allies"] = func_3982("allies",getent("sab_bomb_axis","targetname"));
|
||||
level.bombzones["axis"] = func_3982("axis",getent("sab_bomb_allies","targetname"));
|
||||
}
|
||||
else
|
||||
{
|
||||
level.bombzones["allies"] = func_3982("allies",getent("sab_bomb_allies","targetname"));
|
||||
level.bombzones["axis"] = func_3982("axis",getent("sab_bomb_axis","targetname"));
|
||||
}
|
||||
|
||||
if(level.scoremode)
|
||||
{
|
||||
level thread func_3980();
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::inovertime())
|
||||
{
|
||||
level thread func_3984();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
func_397E()
|
||||
{
|
||||
if(distance2d(self.origin,level.bombzones["allies"].trigger.origin) < distance2d(self.origin,level.bombzones["axis"].trigger.origin))
|
||||
{
|
||||
return "allies";
|
||||
}
|
||||
|
||||
return "axis";
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
func_397F(param_00)
|
||||
{
|
||||
return distance2d(self.origin,level.bombzones[param_00].trigger.origin);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
func_3980()
|
||||
{
|
||||
level.bombdistance = distance2d(getent("sab_bomb_axis","targetname") getorigin(),getent("sab_bomb_allies","targetname") getorigin());
|
||||
var_00 = level.bombdistance / 2 - 384;
|
||||
var_01 = level.sabbomb.trigger;
|
||||
if(var_00 > var_01 func_397F("allies") || var_00 > var_01 func_397F("axis"))
|
||||
{
|
||||
var_00 = var_01 func_397F(var_01 func_397E()) - 128;
|
||||
}
|
||||
|
||||
var_02 = "";
|
||||
for(;;)
|
||||
{
|
||||
if(isdefined(level.sabbomb.carrier))
|
||||
{
|
||||
var_01 = level.sabbomb.carrier;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = level.sabbomb.trigger;
|
||||
}
|
||||
|
||||
var_03 = var_02;
|
||||
var_02 = "none";
|
||||
if(var_01 func_397F("allies") < var_00)
|
||||
{
|
||||
var_02 = level.bombzones["allies"] maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
}
|
||||
else if(var_01 func_397F("axis") < var_00)
|
||||
{
|
||||
var_02 = level.bombzones["axis"] maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
}
|
||||
else if(var_01 func_397F("allies") > level.bombdistance && var_01 func_397E() != "allies")
|
||||
{
|
||||
var_02 = level.bombzones["axis"] maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
}
|
||||
else if(var_01 func_397F("axis") > level.bombdistance && var_01 func_397E() != "axis")
|
||||
{
|
||||
var_02 = level.bombzones["allies"] maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
}
|
||||
|
||||
if(var_02 != "none")
|
||||
{
|
||||
if(!level.bombplanted || !maps\mp\_utility::getwatcheddvar("scorelimit") || level.bombplanted && lib_036E::func_2B96(level.otherteam[var_02]) < maps\mp\_utility::getwatcheddvar("scorelimit") - 1)
|
||||
{
|
||||
lib_036E::func_2B8F(level.otherteam[var_02],lib_036E::func_2B96(level.otherteam[var_02]) + 1);
|
||||
lib_036E::func_2B93(level.otherteam[var_02]);
|
||||
}
|
||||
}
|
||||
|
||||
if(var_02 != var_03 && !level.bombexploded)
|
||||
{
|
||||
setdvar("ui_danger_team",var_02);
|
||||
}
|
||||
|
||||
wait 2.5;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
func_3982(param_00,param_01)
|
||||
{
|
||||
var_02 = getentarray(param_01.target,"targetname");
|
||||
var_03 = maps\mp\gametypes\_gameobjects::createuseobject(param_00,param_01,var_02,(0,0,64));
|
||||
var_03 func_3987();
|
||||
var_03.onuse = ::onuse;
|
||||
var_03.onbeginuse = ::onbeginuse;
|
||||
var_03.onenduse = ::onenduse;
|
||||
var_03.oncantuse = ::oncantuse;
|
||||
var_03.useweapon = "briefcase_bomb_mp";
|
||||
for(var_04 = 0;var_04 < var_02.size;var_04++)
|
||||
{
|
||||
if(isdefined(var_02[var_04].script_exploder))
|
||||
{
|
||||
var_03.exploderindex = var_02[var_04].script_exploder;
|
||||
var_02[var_04] thread func_3967();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
func_3967()
|
||||
{
|
||||
var_00 = spawn("script_origin",self.origin);
|
||||
var_00.angles = self.angles;
|
||||
var_00 rotateyaw(-45,0.05);
|
||||
wait 0.05;
|
||||
var_01 = self.origin + (0,0,5);
|
||||
var_02 = self.origin + anglestoforward(var_00.angles) * 100 + (0,0,128);
|
||||
var_03 = bullettrace(var_01,var_02,0,self);
|
||||
self.killcament = spawn("script_model",var_03["position"]);
|
||||
self.killcament setscriptmoverkillcam("explosive");
|
||||
var_00 delete();
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
onbeginuse(param_00)
|
||||
{
|
||||
if(!maps\mp\gametypes\_gameobjects::isfriendlyteam(param_00.pers["team"]))
|
||||
{
|
||||
param_00.isplanting = 1;
|
||||
return;
|
||||
}
|
||||
|
||||
param_00.isdefusing = 1;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
onenduse(param_00,param_01,param_02)
|
||||
{
|
||||
if(!isalive(param_01))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
param_01.isplanting = 0;
|
||||
param_01.isdefusing = 0;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
onpickup(param_00)
|
||||
{
|
||||
level notify("bomb_picked_up");
|
||||
self.autoresettime = 60;
|
||||
level.usestartspawns = 0;
|
||||
var_01 = param_00.pers["team"];
|
||||
if(var_01 == "allies")
|
||||
{
|
||||
var_02 = "axis";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_02 = "allies";
|
||||
}
|
||||
|
||||
param_00 playlocalsound("mp_suitcase_pickup");
|
||||
param_00 maps\mp\_utility::leaderdialogonplayer("obj_destroy","bomb");
|
||||
var_03[0] = param_00;
|
||||
maps\mp\_utility::leaderdialog("bomb_taken",var_01,"bomb",var_03);
|
||||
if(!level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::leaderdialog("bomb_lost",var_02,"bomb");
|
||||
maps\mp\_utility::leaderdialog("obj_defend",var_02,"bomb");
|
||||
}
|
||||
|
||||
param_00.isbombcarrier = 1;
|
||||
if(isdefined(level.sab_loadouts) && isdefined(level.sab_loadouts[var_01]))
|
||||
{
|
||||
param_00 thread func_396C();
|
||||
}
|
||||
|
||||
if(var_01 == maps\mp\gametypes\_gameobjects::getownerteam())
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["bomb_recovered_sound"],var_01);
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers(game["bomb_recovered_sound"]);
|
||||
}
|
||||
|
||||
maps\mp\gametypes\_gameobjects::setownerteam(var_01);
|
||||
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_target");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_kill");
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_escort");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("friendly","waypoint_escort");
|
||||
level.bombzones[var_01] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
|
||||
level.bombzones[var_02] maps\mp\gametypes\_gameobjects::setvisibleteam("any");
|
||||
param_00 maps\mp\_utility::incplayerstat("bombscarried",1);
|
||||
param_00 thread maps\mp\_matchdata::loggameevent("pickup",param_00.origin);
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
ondrop(param_00)
|
||||
{
|
||||
if(level.bombplanted)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
maps\mp\_utility::printonteamarg(&"MP_EXPLOSIVES_DROPPED_BY",maps\mp\gametypes\_gameobjects::getownerteam(),param_00);
|
||||
}
|
||||
|
||||
maps\mp\_utility::playsoundonplayers(game["bomb_dropped_sound"],maps\mp\gametypes\_gameobjects::getownerteam());
|
||||
thread func_3983(0);
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
func_3983(param_00)
|
||||
{
|
||||
level endon("bomb_picked_up");
|
||||
wait param_00;
|
||||
if(isdefined(self.carrier))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(maps\mp\gametypes\_gameobjects::getownerteam() == "allies")
|
||||
{
|
||||
var_01 = "axis";
|
||||
}
|
||||
else
|
||||
{
|
||||
var_01 = "allies";
|
||||
}
|
||||
|
||||
maps\mp\_utility::playsoundonplayers(game["bomb_dropped_sound"],var_01);
|
||||
maps\mp\gametypes\_gameobjects::setownerteam("neutral");
|
||||
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_bomb");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_bomb");
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_bomb");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("friendly","waypoint_bomb");
|
||||
level.bombzones["allies"] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
|
||||
level.bombzones["axis"] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
onuse(param_00)
|
||||
{
|
||||
var_01 = param_00.pers["team"];
|
||||
var_02 = level.otherteam[var_01];
|
||||
if(!maps\mp\gametypes\_gameobjects::isfriendlyteam(param_00.pers["team"]))
|
||||
{
|
||||
param_00 notify("bomb_planted");
|
||||
param_00 notify("objective","plant");
|
||||
param_00 playsound("mp_bomb_plant");
|
||||
level thread maps\mp\_utility::teamplayercardsplash("callout_bombplanted",param_00);
|
||||
maps\mp\_utility::leaderdialog("bomb_planted");
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("plant",maps\mp\gametypes\_rank::getscoreinfovalue("plant"));
|
||||
param_00 thread maps\mp\gametypes\_rank::giverankxp("plant");
|
||||
lib_036E::func_2B7B("plant",param_00);
|
||||
param_00 maps\mp\_utility::incplayerstat("bombsplanted",1);
|
||||
param_00 thread maps\mp\_matchdata::loggameevent("plant",param_00.origin);
|
||||
param_00.bombplantedtime = gettime();
|
||||
param_00 maps\mp\_utility::incpersstat("plants",1);
|
||||
param_00 maps\mp\gametypes\_persistance::statsetchild("round","plants",param_00.pers["plants"]);
|
||||
level thread bombplanted(self,param_00.pers["team"]);
|
||||
level.bombowner = param_00;
|
||||
if(isdefined(level.sab_loadouts) && isdefined(level.sab_loadouts[var_01]))
|
||||
{
|
||||
param_00 thread func_396D();
|
||||
}
|
||||
|
||||
level.sabbomb.autoresettime = undefined;
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::allowcarry("none");
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::setvisibleteam("none");
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::setdropped();
|
||||
self.useweapon = "briefcase_bomb_defuse_mp";
|
||||
func_3988();
|
||||
return;
|
||||
}
|
||||
|
||||
param_00 notify("bomb_defused");
|
||||
param_00 notify("objective","defuse");
|
||||
maps\mp\_utility::leaderdialog("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::splashnotify("ninja_defuse",maps\mp\gametypes\_rank::getscoreinfovalue("defuse"));
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("defuse",maps\mp\gametypes\_rank::getscoreinfovalue("defuse"));
|
||||
}
|
||||
|
||||
param_00 thread maps\mp\gametypes\_rank::giverankxp("defuse");
|
||||
lib_036E::func_2B7B("defuse",param_00);
|
||||
param_00 maps\mp\_utility::incpersstat("defuses",1);
|
||||
param_00 maps\mp\gametypes\_persistance::statsetchild("round","defuses",param_00.pers["defuses"]);
|
||||
param_00 thread maps\mp\_matchdata::loggameevent("defuse",param_00.origin);
|
||||
if(maps\mp\_utility::inovertime())
|
||||
{
|
||||
level.finalkillcam_winner = var_01;
|
||||
thread maps\mp\gametypes\_gamelogic::endgame(var_01,game["strings"]["target_destroyed"]);
|
||||
return;
|
||||
}
|
||||
|
||||
level thread bombdefused(self);
|
||||
func_3987();
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::allowcarry("any");
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::setpickedup(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
func_396C()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
self notify("lost_juggernaut");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self.pers["gamemodeLoadout"] = level.sab_loadouts[self.team];
|
||||
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::spawnplayer(1);
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
func_396D()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
self notify("lost_juggernaut");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self.pers["gamemodeLoadout"] = undefined;
|
||||
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::spawnplayer(1);
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
oncantuse(param_00)
|
||||
{
|
||||
param_00 iprintlnbold(&"MP_CANT_PLANT_WITHOUT_BOMB");
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
bombplanted(param_00,param_01)
|
||||
{
|
||||
level endon("overtime");
|
||||
maps\mp\gametypes\_gamelogic::pausetimer();
|
||||
level.bombplanted = 1;
|
||||
level.timelimitoverride = 1;
|
||||
level.scorelimitoverride = 1;
|
||||
setdvar("ui_bomb_timer",1);
|
||||
setgameendtime(int(gettime() + level.bombtimer * 1000));
|
||||
param_00.visuals[0] thread maps\mp\gametypes\_gamelogic::playtickingsound();
|
||||
var_02 = gettime();
|
||||
func_3970();
|
||||
setdvar("ui_bomb_timer",0);
|
||||
param_00.visuals[0] maps\mp\gametypes\_gamelogic::stoptickingsound();
|
||||
if(!level.bombplanted)
|
||||
{
|
||||
if(level.hotpotato)
|
||||
{
|
||||
var_03 = gettime() - var_02 / 1000;
|
||||
level.bombtimer = level.bombtimer - var_03;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var_04 = level.sabbomb.visuals[0].origin;
|
||||
level.bombexploded = 1;
|
||||
setdvar("ui_danger_team","BombExploded");
|
||||
if(isdefined(level.bombowner))
|
||||
{
|
||||
param_00.visuals[0] radiusdamage(var_04,512,200,20,level.bombowner,"MOD_EXPLOSIVE","bomb_site_mp");
|
||||
level.bombowner maps\mp\_utility::incpersstat("destructions",1);
|
||||
level.bombowner maps\mp\gametypes\_persistance::statsetchild("round","destructions",level.bombowner.pers["destructions"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00.visuals[0] radiusdamage(var_04,512,200,20,undefined,"MOD_EXPLOSIVE","bomb_site_mp");
|
||||
}
|
||||
|
||||
var_05 = randomfloat(360);
|
||||
var_06 = spawnfx(level._effect["bombexplosion"],var_04 + (0,0,50),(0,0,1),(cos(var_05),sin(var_05),0));
|
||||
triggerfx(var_06);
|
||||
playrumbleonposition("grenade_rumble",var_04);
|
||||
earthquake(0.75,2,var_04,2000);
|
||||
thread maps\mp\_utility::playsoundinspace("exp_suitcase_bomb_main",var_04);
|
||||
if(isdefined(param_00.exploderindex))
|
||||
{
|
||||
common_scripts\utility::exploder(param_00.exploderindex);
|
||||
}
|
||||
|
||||
level.sabbomb maps\mp\gametypes\_gameobjects::setvisibleteam("none");
|
||||
level.bombzones["allies"] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
|
||||
level.bombzones["axis"] maps\mp\gametypes\_gameobjects::setvisibleteam("none");
|
||||
setgameendtime(0);
|
||||
level.scorelimitoverride = 1;
|
||||
if(level.scoremode)
|
||||
{
|
||||
lib_036E::func_2B8F(param_01,int(max(maps\mp\_utility::getwatcheddvar("scorelimit"),lib_036E::func_2B96(level.otherteam[param_01]) + 1)));
|
||||
}
|
||||
else
|
||||
{
|
||||
lib_036E::func_2B8F(param_01,1);
|
||||
}
|
||||
|
||||
lib_036E::func_2B93(param_01);
|
||||
if(isdefined(level.bombowner))
|
||||
{
|
||||
level.bombowner thread maps\mp\gametypes\_rank::giverankxp("destroy");
|
||||
lib_036E::func_2B7B("destroy",level.bombowner);
|
||||
level thread maps\mp\_utility::teamplayercardsplash("callout_destroyed_objective",level.bombowner);
|
||||
}
|
||||
|
||||
wait 3;
|
||||
level.finalkillcam_winner = param_01;
|
||||
thread maps\mp\gametypes\_gamelogic::endgame(param_01,game["strings"]["target_destroyed"]);
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
func_3970()
|
||||
{
|
||||
level endon("bomb_defused");
|
||||
level endon("overtime_ended");
|
||||
var_00 = level.bombtimer * 1000 + gettime();
|
||||
setdvar("ui_bomb_timer_endtime",var_00);
|
||||
level thread func_3971(var_00);
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithgameendtimeupdate(level.bombtimer);
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
func_3971(param_00)
|
||||
{
|
||||
level endon("bomb_defused");
|
||||
level endon("overtime_ended");
|
||||
level endon("game_ended");
|
||||
level endon("disconnect");
|
||||
level waittill("host_migration_begin");
|
||||
var_01 = maps\mp\gametypes\_hostmigration::waittillhostmigrationdone();
|
||||
if(var_01 > 0)
|
||||
{
|
||||
setdvar("ui_bomb_timer_endtime",param_00 + var_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
givelastonteamwarning()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
level endon("game_ended");
|
||||
maps\mp\_utility::waittillrecoveredhealth(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);
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
ontimelimit()
|
||||
{
|
||||
if(level.bombexploded)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(game["teamScores"]["axis"] > game["teamScores"]["allies"])
|
||||
{
|
||||
level.finalkillcam_winner = "axis";
|
||||
thread maps\mp\gametypes\_gamelogic::endgame("axis",game["strings"]["time_limit_reached"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(game["teamScores"]["axis"] < game["teamScores"]["allies"])
|
||||
{
|
||||
level.finalkillcam_winner = "allies";
|
||||
thread maps\mp\gametypes\_gamelogic::endgame("allies",game["strings"]["time_limit_reached"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(game["teamScores"]["axis"] == game["teamScores"]["allies"])
|
||||
{
|
||||
level.finalkillcam_winner = "none";
|
||||
if(maps\mp\_utility::inovertime())
|
||||
{
|
||||
thread maps\mp\gametypes\_gamelogic::endgame("tie",game["strings"]["time_limit_reached"]);
|
||||
return;
|
||||
}
|
||||
|
||||
thread maps\mp\gametypes\_gamelogic::endgame("overtime",game["strings"]["time_limit_reached"]);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
func_3984(param_00)
|
||||
{
|
||||
level endon("game_ended");
|
||||
level.inovertime = 1;
|
||||
wait 5;
|
||||
level.disablespawning = 1;
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
func_3985()
|
||||
{
|
||||
level endon("game_ended");
|
||||
if(common_scripts\utility::cointoss())
|
||||
{
|
||||
level.dangerteam = "allies";
|
||||
}
|
||||
else
|
||||
{
|
||||
level.dangerteam = "axis";
|
||||
}
|
||||
|
||||
for(;;)
|
||||
{
|
||||
if(isdefined(level.sabbomb.carrier))
|
||||
{
|
||||
var_00 = level.sabbomb.carrier;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_00 = level.sabbomb.visuals[0];
|
||||
}
|
||||
|
||||
if(distance(var_00.origin,level.bombzones[maps\mp\_utility::getotherteam(level.dangerteam)].visuals[0].origin) < distance(var_00.origin,level.bombzones[level.dangerteam].visuals[0].origin))
|
||||
{
|
||||
level.dangerteam = maps\mp\_utility::getotherteam(level.dangerteam);
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
func_3987()
|
||||
{
|
||||
maps\mp\gametypes\_gameobjects::allowuse("enemy");
|
||||
maps\mp\gametypes\_gameobjects::setusetime(level.planttime);
|
||||
maps\mp\gametypes\_gameobjects::setusetext(&"MP_PLANTING_EXPLOSIVE");
|
||||
maps\mp\gametypes\_gameobjects::setusehinttext(&"PLATFORM_HOLD_TO_PLANT_EXPLOSIVES");
|
||||
maps\mp\gametypes\_gameobjects::setkeyobject(level.sabbomb);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_defend");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("friendly","waypoint_defend");
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_target");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_target");
|
||||
maps\mp\gametypes\_gameobjects::setvisibleteam("none");
|
||||
self.useweapon = "briefcase_bomb_mp";
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
func_3988()
|
||||
{
|
||||
maps\mp\gametypes\_gameobjects::allowuse("friendly");
|
||||
maps\mp\gametypes\_gameobjects::setusetime(level.defusetime);
|
||||
maps\mp\gametypes\_gameobjects::setusetext(&"MP_DEFUSING_EXPLOSIVE");
|
||||
maps\mp\gametypes\_gameobjects::setusehinttext(&"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES");
|
||||
maps\mp\gametypes\_gameobjects::setkeyobject(undefined);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_defuse");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("friendly","waypoint_defuse");
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_defend");
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_defend");
|
||||
maps\mp\gametypes\_gameobjects::setvisibleteam("any");
|
||||
}
|
||||
|
||||
//Function Number: 33
|
||||
bombdefused(param_00)
|
||||
{
|
||||
setdvar("ui_bomb_timer",0);
|
||||
maps\mp\gametypes\_gamelogic::resumetimer();
|
||||
level.bombplanted = 0;
|
||||
level.timelimitoverride = 0;
|
||||
level.scorelimitoverride = 0;
|
||||
level notify("bomb_defused");
|
||||
}
|
||||
|
||||
//Function Number: 34
|
||||
ononeleftevent(param_00)
|
||||
{
|
||||
if(level.bombexploded)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var_01 = maps\mp\_utility::getlastlivingplayer(param_00);
|
||||
var_01 thread givelastonteamwarning();
|
||||
}
|
||||
|
||||
//Function Number: 35
|
||||
//Function Number: 36
|
||||
initgametypeawards()
|
||||
{
|
||||
maps\mp\_awards::initstataward("targetsdestroyed",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("bombsplanted",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("bombsdefused",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("bombcarrierkills",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("bombscarried",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("killsasbombcarrier",0,::maps\mp\_awards::highestwins);
|
||||
}
|
||||
|
||||
//Function Number: 37
|
||||
func_3989()
|
||||
{
|
||||
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",5,"class","inUse"))
|
||||
{
|
||||
level.sab_loadouts["axis"] = maps\mp\_utility::getmatchrulesspecialclass("axis",5);
|
||||
}
|
||||
|
||||
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","allies",5,"class","inUse"))
|
||||
{
|
||||
level.sab_loadouts["allies"] = maps\mp\_utility::getmatchrulesspecialclass("allies",5);
|
||||
}
|
||||
}
|
955
MW3/PC/MP/maps/mp/gametypes/sd.gsc
Normal file
955
MW3/PC/MP/maps/mp/gametypes/sd.gsc
Normal file
@ -0,0 +1,955 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\sd.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 35
|
||||
* Decompile Time: 540 ms
|
||||
* Timestamp: 10/27/2023 2:13:34 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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,3,0,9);
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,2.5);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,0);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,4);
|
||||
maps\mp\_utility::registernumlivesdvar(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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
|
||||
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::setcommonrulesfrommatchrulesdata();
|
||||
var_00 = getmatchrulesdata("sdData","roundLength");
|
||||
setdynamicdvar("scr_sd_timelimit",var_00);
|
||||
maps\mp\_utility::registertimelimitdvar("sd",var_00);
|
||||
var_01 = getmatchrulesdata("sdData","roundSwitch");
|
||||
setdynamicdvar("scr_sd_roundswitch",var_01);
|
||||
maps\mp\_utility::registerroundswitchdvar("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::registerroundlimitdvar("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::setobjectivetext(game["attackers"],&"OBJECTIVES_SD_ATTACKER");
|
||||
maps\mp\_utility::setobjectivetext(game["defenders"],&"OBJECTIVES_SD_DEFENDER");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext(game["attackers"],&"OBJECTIVES_SD_ATTACKER");
|
||||
maps\mp\_utility::setobjectivescoretext(game["defenders"],&"OBJECTIVES_SD_DEFENDER");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext(game["attackers"],&"OBJECTIVES_SD_ATTACKER_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext(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::findboxcenter(level.spawnmins,level.spawnmaxs);
|
||||
setmapcenter(level.mapcenter);
|
||||
var_02[0] = "sd";
|
||||
maps\mp\gametypes\_gameobjects::main(var_7B);
|
||||
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 updategametypedvars();
|
||||
func_3972();
|
||||
thread func_3962();
|
||||
}
|
||||
|
||||
//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 hidecarryiconongameend();
|
||||
}
|
||||
|
||||
level notify("spawned_player");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
hidecarryiconongameend()
|
||||
{
|
||||
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 func_3959();
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
func_3959()
|
||||
{
|
||||
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
|
||||
func_395A(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::erasefinalkillcam();
|
||||
}
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
func_395A(game["attackers"],game["strings"][game["defenders"] + "_eliminated"]);
|
||||
return;
|
||||
}
|
||||
|
||||
func_395A(game["defenders"],game["strings"][game["attackers"] + "_eliminated"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 == game["attackers"])
|
||||
{
|
||||
if(level.bombplanted)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level thread func_395A(game["defenders"],game["strings"][game["attackers"] + "_eliminated"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 == game["defenders"])
|
||||
{
|
||||
level thread func_395A(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 givelastonteamwarning();
|
||||
}
|
||||
|
||||
//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::logkillevent(param_02,"planting");
|
||||
param_01 maps\mp\_utility::incpersstat("defends",1);
|
||||
param_01 maps\mp\gametypes\_persistance::statsetchild("round","defends",param_01.pers["defends"]);
|
||||
}
|
||||
else if(param_00.isbombcarrier)
|
||||
{
|
||||
param_01 maps\mp\_utility::incplayerstat("bombcarrierkills",1);
|
||||
thread maps\mp\_matchdata::logkillevent(param_02,"carrying");
|
||||
}
|
||||
else if(param_00.isdefusing)
|
||||
{
|
||||
thread maps\mp\_matchdata::logkillevent(param_02,"defusing");
|
||||
param_01 maps\mp\_utility::incpersstat("defends",1);
|
||||
param_01 maps\mp\gametypes\_persistance::statsetchild("round","defends",param_01.pers["defends"]);
|
||||
}
|
||||
|
||||
if(param_01.isbombcarrier)
|
||||
{
|
||||
param_01 maps\mp\_utility::incplayerstat("killsasbombcarrier",1);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
givelastonteamwarning()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
level endon("game_ended");
|
||||
maps\mp\_utility::waittillrecoveredhealth(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::lastmansd();
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
ontimelimit()
|
||||
{
|
||||
func_395A(game["defenders"],game["strings"]["time_limit_reached"]);
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
updategametypedvars()
|
||||
{
|
||||
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::dvarintvalue("multibomb",0,0,1);
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
func_3960(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_3962()
|
||||
{
|
||||
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::createcarryobject(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::set3dicon("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_3960(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::createuseobject(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::setkeyobject(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::set3dicon("friendly","waypoint_defend" + var_05);
|
||||
var_04 maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_target" + var_05);
|
||||
var_04 maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_target" + var_05);
|
||||
var_04 maps\mp\gametypes\_gameobjects::setvisibleteam("any");
|
||||
var_04.onbeginuse = ::onbeginuse;
|
||||
var_04.onenduse = ::onenduse;
|
||||
var_04.onuse = ::func_3969;
|
||||
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_3967(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_3967(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
|
||||
func_3969(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::incpersstat("plants",1);
|
||||
param_00 maps\mp\gametypes\_persistance::statsetchild("round","plants",param_00.pers["plants"]);
|
||||
if(isdefined(level.sd_loadout) && isdefined(level.sd_loadout[param_00.team]))
|
||||
{
|
||||
param_00 thread func_396D();
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("bomb_planted");
|
||||
level thread maps\mp\_utility::teamplayercardsplash("callout_bombplanted",param_00);
|
||||
level.bombowner = param_00;
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("plant",maps\mp\gametypes\_rank::getscoreinfovalue("plant"));
|
||||
param_00 thread maps\mp\gametypes\_rank::giverankxp("plant");
|
||||
param_00.bombplantedtime = gettime();
|
||||
lib_036E::func_2B7B("plant",param_00);
|
||||
param_00 thread maps\mp\_matchdata::loggameevent("plant",param_00.origin);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
func_396C()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
self notify("lost_juggernaut");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self.pers["gamemodeLoadout"] = level.sd_loadout[self.team];
|
||||
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::spawnplayer(1);
|
||||
}
|
||||
|
||||
//Function Number: 25
|
||||
func_396D()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
self notify("lost_juggernaut");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self.pers["gamemodeLoadout"] = undefined;
|
||||
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::spawnplayer(1);
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
func_396E(param_00)
|
||||
{
|
||||
param_00 notify("bomb_defused");
|
||||
param_00 notify("objective","defuse");
|
||||
level thread bombdefused();
|
||||
maps\mp\gametypes\_gameobjects::disableobject();
|
||||
maps\mp\_utility::leaderdialog("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::splashnotify("ninja_defuse",maps\mp\gametypes\_rank::getscoreinfovalue("defuse"));
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("defuse",maps\mp\gametypes\_rank::getscoreinfovalue("defuse"));
|
||||
}
|
||||
|
||||
param_00 thread maps\mp\gametypes\_rank::giverankxp("defuse");
|
||||
lib_036E::func_2B7B("defuse",param_00);
|
||||
param_00 maps\mp\_utility::incpersstat("defuses",1);
|
||||
param_00 maps\mp\gametypes\_persistance::statsetchild("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::set3dicon("friendly","waypoint_bomb");
|
||||
maps\mp\_utility::playsoundonplayers(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::set3dicon("friendly","waypoint_escort");
|
||||
if(isdefined(level.sd_loadout) && isdefined(level.sd_loadout[param_00.team]))
|
||||
{
|
||||
param_00 thread func_396C();
|
||||
}
|
||||
|
||||
if(!level.bombdefused)
|
||||
{
|
||||
maps\mp\_utility::teamplayercardsplash("callout_bombtaken",param_00,param_00.team);
|
||||
maps\mp\_utility::leaderdialog("bomb_taken",param_00.pers["team"]);
|
||||
}
|
||||
|
||||
maps\mp\_utility::playsoundonplayers(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::playtickingsound();
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
var_03 = bullettrace(param_01.origin + (0,0,20),param_01.origin - (0,0,2000),0,param_01);
|
||||
var_04 = randomfloat(360);
|
||||
var_05 = (cos(var_04),sin(var_04),0);
|
||||
var_05 = vectornormalize(var_05 - var_03["normal"] * vectordot(var_05,var_03["normal"]));
|
||||
var_06 = vectortoangles(var_05);
|
||||
level.sdbombmodel = spawn("script_model",var_03["position"]);
|
||||
level.sdbombmodel.angles = var_06;
|
||||
level.sdbombmodel setmodel("prop_suitcase_bomb");
|
||||
}
|
||||
|
||||
param_00 maps\mp\gametypes\_gameobjects::allowuse("none");
|
||||
param_00 maps\mp\gametypes\_gameobjects::setvisibleteam("none");
|
||||
var_07 = param_00 maps\mp\gametypes\_gameobjects::getlabel();
|
||||
var_08 = param_00.bombdefusetrig;
|
||||
var_08.origin = level.sdbombmodel.origin;
|
||||
var_09 = [];
|
||||
var_0A = maps\mp\gametypes\_gameobjects::createuseobject(game["defenders"],var_08,var_09,(0,0,32));
|
||||
var_0A maps\mp\gametypes\_gameobjects::allowuse("friendly");
|
||||
var_0A maps\mp\gametypes\_gameobjects::setusetime(level.defusetime);
|
||||
var_0A maps\mp\gametypes\_gameobjects::setusetext(&"MP_DEFUSING_EXPLOSIVE");
|
||||
var_0A maps\mp\gametypes\_gameobjects::setusehinttext(&"PLATFORM_HOLD_TO_DEFUSE_EXPLOSIVES");
|
||||
var_0A maps\mp\gametypes\_gameobjects::setvisibleteam("any");
|
||||
var_0A maps\mp\gametypes\_gameobjects::set2dicon("friendly","waypoint_defuse" + var_07);
|
||||
var_0A maps\mp\gametypes\_gameobjects::set2dicon("enemy","waypoint_defend" + var_07);
|
||||
var_0A maps\mp\gametypes\_gameobjects::set3dicon("friendly","waypoint_defuse" + var_07);
|
||||
var_0A maps\mp\gametypes\_gameobjects::set3dicon("enemy","waypoint_defend" + var_07);
|
||||
var_0A.label = var_07;
|
||||
var_0A.onbeginuse = ::onbeginuse;
|
||||
var_0A.onenduse = ::onenduse;
|
||||
var_0A.onuse = ::func_396E;
|
||||
var_0A.useweapon = "briefcase_bomb_defuse_mp";
|
||||
func_3970();
|
||||
setdvar("ui_bomb_timer",0);
|
||||
param_00.visuals[0] maps\mp\gametypes\_gamelogic::stoptickingsound();
|
||||
if(level.gameended || level.bombdefused)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
level.bombexploded = 1;
|
||||
var_0B = level.sdbombmodel.origin;
|
||||
level.sdbombmodel hide();
|
||||
if(isdefined(param_01))
|
||||
{
|
||||
param_00.visuals[0] radiusdamage(var_0B,512,200,20,param_01,"MOD_EXPLOSIVE","bomb_site_mp");
|
||||
param_01 maps\mp\_utility::incpersstat("destructions",1);
|
||||
param_01 maps\mp\gametypes\_persistance::statsetchild("round","destructions",param_01.pers["destructions"]);
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00.visuals[0] radiusdamage(var_0B,512,200,20,undefined,"MOD_EXPLOSIVE","bomb_site_mp");
|
||||
}
|
||||
|
||||
var_0C = randomfloat(360);
|
||||
var_0D = spawnfx(level._effect["bombexplosion"],var_0B + (0,0,50),(0,0,1),(cos(var_0C),sin(var_0C),0));
|
||||
triggerfx(var_0D);
|
||||
playrumbleonposition("grenade_rumble",var_0B);
|
||||
earthquake(0.75,2,var_0B,2000);
|
||||
thread maps\mp\_utility::playsoundinspace("exp_suitcase_bomb_main",var_0B);
|
||||
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_0A maps\mp\gametypes\_gameobjects::disableobject();
|
||||
setgameendtime(0);
|
||||
wait 3;
|
||||
func_395A(game["attackers"],game["strings"]["target_destroyed"]);
|
||||
}
|
||||
|
||||
//Function Number: 31
|
||||
func_3970()
|
||||
{
|
||||
level endon("game_ended");
|
||||
level endon("bomb_defused");
|
||||
var_00 = level.bombtimer * 1000 + gettime();
|
||||
setdvar("ui_bomb_timer_endtime",var_00);
|
||||
level thread func_3971(var_00);
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithgameendtimeupdate(level.bombtimer);
|
||||
}
|
||||
|
||||
//Function Number: 32
|
||||
func_3971(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::waittillhostmigrationdone();
|
||||
if(var_01 > 0)
|
||||
{
|
||||
setdvar("ui_bomb_timer_endtime",param_00 + var_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 33
|
||||
bombdefused()
|
||||
{
|
||||
level.tickingobject maps\mp\gametypes\_gamelogic::stoptickingsound();
|
||||
level.bombdefused = 1;
|
||||
setdvar("ui_bomb_timer",0);
|
||||
level notify("bomb_defused");
|
||||
wait 1.5;
|
||||
setgameendtime(0);
|
||||
func_395A(game["defenders"],game["strings"]["bomb_defused"]);
|
||||
}
|
||||
|
||||
//Function Number: 34
|
||||
initgametypeawards()
|
||||
{
|
||||
maps\mp\_awards::initstataward("targetsdestroyed",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("bombsplanted",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("bombsdefused",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("bombcarrierkills",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("bombscarried",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("killsasbombcarrier",0,::maps\mp\_awards::highestwins);
|
||||
}
|
||||
|
||||
//Function Number: 35
|
||||
func_3972()
|
||||
{
|
||||
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",5,"class","inUse"))
|
||||
{
|
||||
level.sd_loadout[game["attackers"]] = maps\mp\_utility::getmatchrulesspecialclass("axis",5);
|
||||
}
|
||||
}
|
599
MW3/PC/MP/maps/mp/gametypes/tdef.gsc
Normal file
599
MW3/PC/MP/maps/mp/gametypes/tdef.gsc
Normal file
@ -0,0 +1,599 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\tdef.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 23
|
||||
* Decompile Time: 388 ms
|
||||
* Timestamp: 10/27/2023 2:13:35 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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,0,0,9);
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,7500);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(level.gametype,0);
|
||||
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
|
||||
level.matchrules_enemyflagradar = 1;
|
||||
level.matchrules_damagemultiplier = 0;
|
||||
level.matchrules_vampirism = 0;
|
||||
}
|
||||
|
||||
func_3989();
|
||||
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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
|
||||
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::setcommonrulesfrommatchrulesdata();
|
||||
level.matchrules_enemyflagradar = getmatchrulesdata("tdefData","enemyFlagRadar");
|
||||
setdynamicdvar("scr_tdef_roundswitch",0);
|
||||
maps\mp\_utility::registerroundswitchdvar("tdef",0,0,9);
|
||||
setdynamicdvar("scr_tdef_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("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::setobjectivetext("allies",&"OBJECTIVES_TDEF");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_TDEF");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_TDEF");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_TDEF");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_TDEF_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_tdm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_tdm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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_7B);
|
||||
func_3A0E();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
func_3A0E()
|
||||
{
|
||||
level.icon2d["allies"] = maps\mp\gametypes\_teams::getteamflagicon("allies");
|
||||
level.icon2d["axis"] = maps\mp\gametypes\_teams::getteamflagicon("axis");
|
||||
precacheshader(level.icon2d["axis"]);
|
||||
precacheshader(level.icon2d["allies"]);
|
||||
level.carryflag["allies"] = maps\mp\gametypes\_teams::getteamflagcarrymodel("allies");
|
||||
level.carryflag["axis"] = maps\mp\gametypes\_teams::getteamflagcarrymodel("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::getownerteam() == 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::func_2F45(&"SPLASHES_TEAM_ASSIST");
|
||||
lib_036E::func_2B7B("team_assist",level.gameflag.carrier,param_00,1);
|
||||
level.gameflag.carrier thread maps\mp\gametypes\_rank::giverankxp("team_assist");
|
||||
}
|
||||
|
||||
param_01 thread maps\mp\gametypes\_rank::func_2F45(&"SPLASHES_X2_BONUS");
|
||||
lib_036E::func_2B7B("kill_bonus",param_01,param_00,1);
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("kill_bonus");
|
||||
var_03 = var_03 * 2;
|
||||
}
|
||||
else if(!isdefined(level.gameflag) && cancreateflagatvictimorigin(param_00))
|
||||
{
|
||||
level.gameflag = func_3A15(param_00);
|
||||
var_03 = var_03 + maps\mp\gametypes\_rank::getscoreinfovalue("firstblood");
|
||||
lib_036E::func_2B7B("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::splashnotify("flag_carrier_killed",var_04);
|
||||
lib_036E::func_2B7B("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 lib_036E::func_2B88(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.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::incpersstat("destructions",var_02);
|
||||
param_00 maps\mp\gametypes\_persistance::statsetchild("round","destructions",param_00.pers["destructions"]);
|
||||
param_00.tdef_flagtime = undefined;
|
||||
param_00 notify("dropped_flag");
|
||||
}
|
||||
|
||||
var_03 = maps\mp\gametypes\_gameobjects::getownerteam();
|
||||
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::set3dicon("friendly",level.iconcaptureflag3d);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconcaptureflag2d);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy",level.iconcaptureflag3d);
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
if(isdefined(param_00.carryflag))
|
||||
{
|
||||
param_00 func_39C6();
|
||||
}
|
||||
|
||||
maps\mp\_utility::printandsoundoneveryone(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::playsoundonplayers("mp_war_objective_lost",var_03);
|
||||
maps\mp\_utility::playsoundonplayers("mp_war_objective_lost",var_04);
|
||||
}
|
||||
|
||||
maps\mp\_utility::leaderdialog("dropped_flag",var_03,"status");
|
||||
maps\mp\_utility::leaderdialog("enemy_dropped_flag",var_04,"status");
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
onpickup(param_00)
|
||||
{
|
||||
self notify("picked_up");
|
||||
param_00.tdef_flagtime = gettime();
|
||||
param_00 thread func_3A14();
|
||||
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 func_39DA();
|
||||
}
|
||||
else
|
||||
{
|
||||
param_00 func_39C5();
|
||||
}
|
||||
|
||||
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::set3dicon("friendly",level.iconescort2d);
|
||||
maps\mp\gametypes\_gameobjects::set2dicon("enemy",level.iconkill3d);
|
||||
maps\mp\gametypes\_gameobjects::set3dicon("enemy",level.iconkill3d);
|
||||
maps\mp\_utility::leaderdialog("got_flag",var_02,"status");
|
||||
maps\mp\_utility::leaderdialog("enemy_got_flag",var_03,"status");
|
||||
thread maps\mp\_utility::teamplayercardsplash("callout_flagcapture",param_00);
|
||||
param_00 thread maps\mp\gametypes\_hud_message::splashnotify("flag_capture",var_01);
|
||||
lib_036E::func_2B7B("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::printandsoundoneveryone(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 lib_036E::func_2B88(var_02,var_01);
|
||||
}
|
||||
|
||||
self.currentteam = var_02;
|
||||
if(level.matchrules_enemyflagradar)
|
||||
{
|
||||
thread func_3A16(var_03);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
func_39DA()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
self notify("lost_juggernaut");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
self.pers["gamemodeLoadout"] = level.tdef_loadouts[self.team];
|
||||
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::spawnplayer(1);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
waitattachflag()
|
||||
{
|
||||
level endon("game_ende");
|
||||
self endon("disconnect");
|
||||
self endon("death");
|
||||
self waittill("spawned_player");
|
||||
func_39C5();
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
func_3A14()
|
||||
{
|
||||
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::incpersstat("destructions",var_01);
|
||||
maps\mp\gametypes\_persistance::statsetchild("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
|
||||
func_3A15(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::createcarryobject("neutral",var_02,var_01,(0,0,85));
|
||||
var_03 maps\mp\gametypes\_gameobjects::setteamusetime("friendly",0.5);
|
||||
var_03 maps\mp\gametypes\_gameobjects::setteamusetime("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::set3dicon("enemy",level.iconcaptureflag3d);
|
||||
var_03 maps\mp\gametypes\_gameobjects::set2dicon("friendly",level.iconcaptureflag2d);
|
||||
var_03 maps\mp\gametypes\_gameobjects::set3dicon("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_39C5()
|
||||
{
|
||||
self attach(level.carryflag[self.pers["team"]],"J_spine4",1);
|
||||
self.carryflag = level.carryflag[self.pers["team"]];
|
||||
level.favorclosespawnent = self;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
func_39C6()
|
||||
{
|
||||
self detach(self.carryflag,"J_spine4");
|
||||
self.carryflag = undefined;
|
||||
level.favorclosespawnent = level.gameflag.trigger;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
func_3A16(param_00)
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("dropped");
|
||||
var_01 = func_3A17(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 func_3A18();
|
||||
thread func_3A19();
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
func_3A17(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
|
||||
func_3A18()
|
||||
{
|
||||
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_3A19()
|
||||
{
|
||||
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;
|
||||
func_3A16(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::getspawnpoint_nearteam(var_02);
|
||||
}
|
||||
|
||||
return var_02;
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
initgametypeawards()
|
||||
{
|
||||
maps\mp\_awards::initstataward("flagscaptured",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("flagcarrierkills",0,::maps\mp\_awards::highestwins);
|
||||
maps\mp\_awards::initstataward("killsasflagcarrier",0,::maps\mp\_awards::highestwins);
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
func_3989()
|
||||
{
|
||||
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",5,"class","inUse"))
|
||||
{
|
||||
level.tdef_loadouts["axis"] = maps\mp\_utility::getmatchrulesspecialclass("axis",5);
|
||||
}
|
||||
|
||||
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","allies",5,"class","inUse"))
|
||||
{
|
||||
level.tdef_loadouts["allies"] = maps\mp\_utility::getmatchrulesspecialclass("allies",5);
|
||||
}
|
||||
}
|
643
MW3/PC/MP/maps/mp/gametypes/tjugg.gsc
Normal file
643
MW3/PC/MP/maps/mp/gametypes/tjugg.gsc
Normal file
@ -0,0 +1,643 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\tjugg.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 18
|
||||
* Decompile Time: 255 ms
|
||||
* Timestamp: 10/27/2023 2:13:36 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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,7500);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(level.gametype,0);
|
||||
maps\mp\_utility::registerhalftimedvar(level.gametype,0);
|
||||
level.matchrules_juggswitchtime = 90;
|
||||
level.matchrules_damagemultiplier = 0;
|
||||
level.matchrules_vampirism = 0;
|
||||
}
|
||||
|
||||
func_3989();
|
||||
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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
initializematchrules()
|
||||
{
|
||||
maps\mp\_utility::setcommonrulesfrommatchrulesdata();
|
||||
level.matchrules_juggswitchtime = getmatchrulesdata("tjuggData","juggSwitchTime");
|
||||
setdynamicdvar("scr_tjugg_roundswitch",0);
|
||||
maps\mp\_utility::registerroundswitchdvar("tjugg",0,0,9);
|
||||
setdynamicdvar("scr_tjugg_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("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_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::setobjectivetext("allies",&"OBJECTIVES_TJUGG");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_TJUGG");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_TJUGG");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_TJUGG");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_TJUGG_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_tdm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_tdm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(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_39A2(level.tjugg_timerdisplay["allies"]);
|
||||
thread func_39A2(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::getspawnpoint_nearteam(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")
|
||||
{
|
||||
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_3A39();
|
||||
return;
|
||||
}
|
||||
|
||||
if(var_0B)
|
||||
{
|
||||
func_3A38(param_01);
|
||||
}
|
||||
|
||||
if(var_0C)
|
||||
{
|
||||
var_12 = func_3A56(var_0A.team,0);
|
||||
if(!isdefined(var_12))
|
||||
{
|
||||
var_12 = func_3A56(var_0A.team,1);
|
||||
}
|
||||
|
||||
if(!isdefined(var_12))
|
||||
{
|
||||
var_12 = var_0A;
|
||||
}
|
||||
|
||||
func_3A38(var_12,var_0A);
|
||||
}
|
||||
|
||||
if(var_0B || var_0C)
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("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::func_2F45(&"SPLASHES_KILLED_JUGGERNAUT");
|
||||
lib_036E::func_2B7B("kill_juggernaut",param_01,var_0A,1);
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("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::func_2F45(&"SPLASHES_JUGGERNAUT_KILL_JUGGERNAUT");
|
||||
lib_036E::func_2B7B("jugg_on_jugg",param_01,var_0A,1);
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("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::func_2F45(&"SPLASHES_JUGGERNAUT_KILL");
|
||||
lib_036E::func_2B7B("kill_as_juggernaut",param_01,var_0A,1);
|
||||
param_01 thread maps\mp\gametypes\_rank::giverankxp("kill_as_juggernaut");
|
||||
}
|
||||
|
||||
if(var_11)
|
||||
{
|
||||
param_01 lib_036E::func_2B88(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 = func_3A56(var_0A.team,0);
|
||||
if(!isdefined(var_12))
|
||||
{
|
||||
var_12 = func_3A56(var_0A.team,1);
|
||||
}
|
||||
|
||||
if(!isdefined(var_12))
|
||||
{
|
||||
var_12 = var_0A;
|
||||
}
|
||||
|
||||
func_3A38(var_12,var_0A);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
func_3A38(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_3A39();
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
func_3A39()
|
||||
{
|
||||
if(!maps\mp\_utility::isreallyalive(self) || maps\mp\_utility::isusingremote())
|
||||
{
|
||||
self endon("disconnect");
|
||||
thread func_3A55(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;
|
||||
}
|
||||
|
||||
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"]];
|
||||
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::spawnplayer(1);
|
||||
var_01 = maps\mp\gametypes\_rank::getscoreinfovalue("got_juggernaut");
|
||||
thread maps\mp\gametypes\_hud_message::splashnotify("got_juggernaut",var_01);
|
||||
lib_036E::func_2B7B("got_juggernaut",self,undefined,1);
|
||||
thread func_3A55(1);
|
||||
thread resetjuggloadoutonchangeteam();
|
||||
thread func_3A53();
|
||||
thread func_3A54();
|
||||
thread func_3A51();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
func_3A51()
|
||||
{
|
||||
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::waitlongdurationwithhostmigrationpause(level.matchrules_juggswitchtime);
|
||||
level.tjugg_timerdisplay[self.team].alpha = 0;
|
||||
var_00 = func_3A56(self.team,0);
|
||||
if(!isdefined(var_00))
|
||||
{
|
||||
var_00 = func_3A56(self.team,1);
|
||||
}
|
||||
|
||||
if(!isdefined(var_00))
|
||||
{
|
||||
var_00 = self;
|
||||
}
|
||||
|
||||
maps\mp\_utility::playsoundonplayers("mp_enemy_obj_captured");
|
||||
func_3A38(var_00,self);
|
||||
if(var_00 != self)
|
||||
{
|
||||
thread func_3A52();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
func_3A52()
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
playfx(level.respawnoldjugg_fx,self.origin);
|
||||
self notify("lost_juggernaut");
|
||||
wait 0.05;
|
||||
self notify("faux_spawn");
|
||||
self.faux_spawn_stance = self getstance();
|
||||
thread maps\mp\gametypes\_playerlogic::spawnplayer(1);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
func_3A53()
|
||||
{
|
||||
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
|
||||
func_3A54()
|
||||
{
|
||||
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
|
||||
func_3A55(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 = func_3A56(var_01,0);
|
||||
if(!isdefined(var_02))
|
||||
{
|
||||
var_02 = func_3A56(var_01,1);
|
||||
}
|
||||
|
||||
if(isdefined(var_02))
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("mp_enemy_obj_captured");
|
||||
func_3A38(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 = func_3A56(var_00,0);
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
var_01 = func_3A56(var_00,1);
|
||||
}
|
||||
|
||||
if(isdefined(var_01))
|
||||
{
|
||||
maps\mp\_utility::playsoundonplayers("mp_enemy_obj_captured");
|
||||
func_3A38(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
|
||||
func_3A56(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_39A2(param_00)
|
||||
{
|
||||
level waittill("game_ended");
|
||||
param_00.alpha = 0;
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
func_3989()
|
||||
{
|
||||
if(isusingmatchrulesdata() && getmatchrulesdata("defaultClasses","axis",5,"class","inUse"))
|
||||
{
|
||||
level.tjugg_loadouts["axis"] = maps\mp\_utility::getmatchrulesspecialclass("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::getmatchrulesspecialclass("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;
|
||||
}
|
433
MW3/PC/MP/maps/mp/gametypes/vip.gsc
Normal file
433
MW3/PC/MP/maps/mp/gametypes/vip.gsc
Normal file
@ -0,0 +1,433 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\vip.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 23
|
||||
* Decompile Time: 322 ms
|
||||
* Timestamp: 10/27/2023 2:13:37 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::registerroundswitchdvar(level.gametype,0,0,9);
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10,0,1440);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,500,0,5000);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1,0,10);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1,0,10);
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,3,0,30);
|
||||
maps\mp\_utility::registernumlivesdvar(level.gametype,1,0,10);
|
||||
maps\mp\_utility::registerwatchdvarint("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::getteamflagmodel("allies");
|
||||
game["flagmodels"]["axis"] = maps\mp\gametypes\_teams::getteamflagmodel("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::setobjectivetext("allies",&"OBJECTIVES_VIP");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_VIP");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_VIP");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_VIP");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_VIP_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_tdm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_tdm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(level.spawnmins,level.spawnmaxs);
|
||||
setmapcenter(level.mapcenter);
|
||||
var_02[0] = "vip";
|
||||
maps\mp\gametypes\_gameobjects::main(var_7B);
|
||||
thread func_3A69();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
func_3A69()
|
||||
{
|
||||
level endon("game_end");
|
||||
level endon("waitSkipped");
|
||||
thread extractionzone();
|
||||
thread func_3A78();
|
||||
maps\mp\_utility::gameflagwait("prematch_done");
|
||||
maps\mp\_utility::gameflagwait("graceperiod_done");
|
||||
self notify("graceComplete");
|
||||
thread func_3A7B();
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
func_3A78()
|
||||
{
|
||||
self endon("graceComplete");
|
||||
for(;;)
|
||||
{
|
||||
if(level.players.size > 2)
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
wait 0.5;
|
||||
}
|
||||
|
||||
self notify("waitSkipped");
|
||||
thread func_3A7B();
|
||||
}
|
||||
|
||||
//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::getspawnpoint_nearteam(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 lib_036E::func_2B88(param_01.pers["team"],var_03);
|
||||
var_04 = param_00.team;
|
||||
if(isdefined(param_00.isvip) && param_00.isvip)
|
||||
{
|
||||
level thread func_3A7A(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 func_3959();
|
||||
}
|
||||
|
||||
//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
|
||||
func_3959()
|
||||
{
|
||||
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_3A7A(game["defenders"],game["strings"][game["attackers"] + "_eliminated"]);
|
||||
return;
|
||||
}
|
||||
|
||||
if(param_00 == game["defenders"])
|
||||
{
|
||||
level thread func_3A7A(game["attackers"],game["strings"][game["defenders"] + "_eliminated"]);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
func_3A7A(param_00,param_01)
|
||||
{
|
||||
thread maps\mp\gametypes\_gamelogic::endgame(param_00,param_01);
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
func_3A7B()
|
||||
{
|
||||
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 func_3A81();
|
||||
}
|
||||
|
||||
func_3A7C(var_06);
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
func_3A7C(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::createuseobject(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::getteamflagfx(game["defenders"]);
|
||||
var_07 = loadfx(var_06);
|
||||
var_08 = vectortoangles(var_05["normal"]);
|
||||
var_09 = anglestoforward(var_08);
|
||||
var_0A = anglestoright(var_08);
|
||||
thread spawnfxdelay(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::set3dicon("friendly","waypoint_defend");
|
||||
var_00 maps\mp\gametypes\_gameobjects::setvisibleteam("friendly");
|
||||
level.extractionzone = var_00;
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
func_3A7E()
|
||||
{
|
||||
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_3A7F(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
func_3A7F(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_3A7A(game["defenders"],&"MP_DEFENDED_VIP");
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
onenduse(param_00,param_01,param_02)
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
oncantuse(param_00)
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
spawnfxdelay(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
|
||||
func_3A81()
|
||||
{
|
||||
self endon("death");
|
||||
self endon("disconnect");
|
||||
self endon("spawned");
|
||||
if(self.hasspawned)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(!maps\mp\_utility::isvalidclass(self.pers["class"]))
|
||||
{
|
||||
self.pers["class"] = "CLASS_CUSTOM1";
|
||||
self.class = self.pers["class"];
|
||||
}
|
||||
|
||||
maps\mp\_utility::closemenus();
|
||||
thread maps\mp\gametypes\_playerlogic::spawnclient();
|
||||
}
|
188
MW3/PC/MP/maps/mp/gametypes/war.gsc
Normal file
188
MW3/PC/MP/maps/mp/gametypes/war.gsc
Normal file
@ -0,0 +1,188 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\gametypes\war.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 6
|
||||
* Decompile Time: 96 ms
|
||||
* Timestamp: 10/27/2023 2:13:38 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::reinitializematchrulesonmigration();
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::registerroundswitchdvar(level.gametype,0,0,9);
|
||||
maps\mp\_utility::registertimelimitdvar(level.gametype,10);
|
||||
maps\mp\_utility::registerscorelimitdvar(level.gametype,500);
|
||||
maps\mp\_utility::registerroundlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registerwinlimitdvar(level.gametype,1);
|
||||
maps\mp\_utility::registernumlivesdvar(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::gamemodemodifyplayerdamage;
|
||||
}
|
||||
|
||||
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::setcommonrulesfrommatchrulesdata();
|
||||
setdynamicdvar("scr_war_roundswitch",0);
|
||||
maps\mp\_utility::registerroundswitchdvar("war",0,0,9);
|
||||
setdynamicdvar("scr_war_roundlimit",1);
|
||||
maps\mp\_utility::registerroundlimitdvar("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::setobjectivetext("allies",&"OBJECTIVES_WAR");
|
||||
maps\mp\_utility::setobjectivetext("axis",&"OBJECTIVES_WAR");
|
||||
if(level.splitscreen)
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_WAR");
|
||||
maps\mp\_utility::setobjectivescoretext("axis",&"OBJECTIVES_WAR");
|
||||
}
|
||||
else
|
||||
{
|
||||
maps\mp\_utility::setobjectivescoretext("allies",&"OBJECTIVES_WAR_SCORE");
|
||||
maps\mp\_utility::setobjectivescoretext("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::addspawnpoints("allies","mp_tdm_spawn");
|
||||
maps\mp\gametypes\_spawnlogic::addspawnpoints("axis","mp_tdm_spawn");
|
||||
level.mapcenter = maps\mp\gametypes\_spawnlogic::findboxcenter(level.spawnmins,level.spawnmaxs);
|
||||
setmapcenter(level.mapcenter);
|
||||
var_02[0] = level.gametype;
|
||||
maps\mp\gametypes\_gameobjects::main(var_7B);
|
||||
}
|
||||
|
||||
//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::getspawnpoint_nearteam(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 lib_036E::func_2B88(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"]);
|
||||
}
|
567
MW3/PC/MP/maps/mp/killstreaks/_a10.gsc
Normal file
567
MW3/PC/MP/maps/mp/killstreaks/_a10.gsc
Normal file
@ -0,0 +1,567 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_a10.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 22
|
||||
* Decompile Time: 291 ms
|
||||
* Timestamp: 10/27/2023 2:13:39 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"] = ::a10supportsetup;
|
||||
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
|
||||
a10supportsetup()
|
||||
{
|
||||
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::isairdenied())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isemped())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_02 = "a10_support";
|
||||
if(!self.useduava10)
|
||||
{
|
||||
self.useduava10 = 1;
|
||||
maps\mp\killstreaks\_uav::func_356B(var_02);
|
||||
}
|
||||
|
||||
var_01 = selecta10strikelocation(param_00,var_02);
|
||||
if(!isdefined(var_01) || !var_01)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
selecta10strikelocation(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::stoplocationselection(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 = spawna10(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 watchdeath();
|
||||
var_08 endon("death");
|
||||
var_08 thread a10startmove();
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
watchtimeout()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("gone");
|
||||
self endon("death");
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(35);
|
||||
self notify("death");
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
a10startmove()
|
||||
{
|
||||
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 starta10shooting(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;
|
||||
removea10();
|
||||
}
|
||||
|
||||
//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
|
||||
spawna10(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
|
||||
starta10shooting(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 playbulletrain();
|
||||
thread manageshootingloopsound();
|
||||
thread manageshootinggroundsound();
|
||||
thread a10earthquake();
|
||||
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
|
||||
playbulletrain()
|
||||
{
|
||||
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
|
||||
manageshootingloopsound()
|
||||
{
|
||||
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
|
||||
a10earthquake()
|
||||
{
|
||||
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
|
||||
watchdeath()
|
||||
{
|
||||
self endon("gone");
|
||||
self waittill("death");
|
||||
thread a10destroyed();
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
a10destroyed()
|
||||
{
|
||||
self endon("gone");
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
wait randomfloatrange(0.5,1.5);
|
||||
a10explode();
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
a10explode()
|
||||
{
|
||||
self notify("explode");
|
||||
removea10();
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
removea10()
|
||||
{
|
||||
if(isdefined(self.killcament))
|
||||
{
|
||||
self.killcament delete();
|
||||
}
|
||||
|
||||
if(isdefined(self.fakea10))
|
||||
{
|
||||
self.fakea10 delete();
|
||||
}
|
||||
|
||||
self delete();
|
||||
}
|
253
MW3/PC/MP/maps/mp/killstreaks/_aamissile.gsc
Normal file
253
MW3/PC/MP/maps/mp/killstreaks/_aamissile.gsc
Normal file
@ -0,0 +1,253 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_aamissile.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 11
|
||||
* Decompile Time: 154 ms
|
||||
* Timestamp: 10/27/2023 2:13:40 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"] = ::tryuseaamissile;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
tryuseaamissile(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 player_cleanuponteamchange(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 delayedfofoverlay();
|
||||
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
|
||||
delayedfofoverlay()
|
||||
{
|
||||
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
|
||||
player_cleanuponteamchange(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);
|
||||
}
|
||||
}
|
318
MW3/PC/MP/maps/mp/killstreaks/_aastrike.gsc
Normal file
318
MW3/PC/MP/maps/mp/killstreaks/_aastrike.gsc
Normal file
@ -0,0 +1,318 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_aastrike.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 11
|
||||
* Decompile Time: 168 ms
|
||||
* Timestamp: 10/27/2023 2:13:40 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::isairdenied())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isemped())
|
||||
{
|
||||
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;
|
||||
findtargets();
|
||||
wait randomintrange(4,5);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
findtargets()
|
||||
{
|
||||
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
|
||||
earlyabortwatcher()
|
||||
{
|
||||
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 earlyabortwatcher();
|
||||
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 playplanefx();
|
||||
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 playplanefx();
|
||||
var_0D.angles = vectortoangles(var_09 - var_0A);
|
||||
var_0D thread playplanefx();
|
||||
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
|
||||
playplanefx()
|
||||
{
|
||||
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");
|
||||
}
|
1908
MW3/PC/MP/maps/mp/killstreaks/_ac130.gsc
Normal file
1908
MW3/PC/MP/maps/mp/killstreaks/_ac130.gsc
Normal file
File diff suppressed because it is too large
Load Diff
2388
MW3/PC/MP/maps/mp/killstreaks/_airdrop.gsc
Normal file
2388
MW3/PC/MP/maps/mp/killstreaks/_airdrop.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1017
MW3/PC/MP/maps/mp/killstreaks/_airstrike.gsc
Normal file
1017
MW3/PC/MP/maps/mp/killstreaks/_airstrike.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1606
MW3/PC/MP/maps/mp/killstreaks/_autosentry.gsc
Normal file
1606
MW3/PC/MP/maps/mp/killstreaks/_autosentry.gsc
Normal file
File diff suppressed because it is too large
Load Diff
132
MW3/PC/MP/maps/mp/killstreaks/_autoshotgun.gsc
Normal file
132
MW3/PC/MP/maps/mp/killstreaks/_autoshotgun.gsc
Normal file
@ -0,0 +1,132 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_autoshotgun.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 9
|
||||
* Decompile Time: 173 ms
|
||||
* Timestamp: 10/27/2023 2:13:54 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
level.killstreakfuncs["auto_shotgun"] = ::tryuseautoshotgun;
|
||||
level.killstreaksetupfuncs["auto_shotgun"] = ::shotgunsetup;
|
||||
level.killstreakfuncs["thumper"] = ::tryusethumper;
|
||||
level.killstreaksetupfuncs["thumper"] = ::thumpersetup;
|
||||
thread onplayerconnect();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
shotgunsetup()
|
||||
{
|
||||
self givemaxammo("aa12_mp");
|
||||
thread saveweaponammoondeath("aa12_mp");
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
tryuseautoshotgun(param_00)
|
||||
{
|
||||
thread removeweapononoutofammo("aa12_mp");
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
thumpersetup()
|
||||
{
|
||||
self givemaxammo("m79_mp");
|
||||
thread saveweaponammoondeath("m79_mp");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
tryusethumper()
|
||||
{
|
||||
thread removeweapononoutofammo("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::getkillstreakweapon(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::givekillstreakweapon(var_00);
|
||||
self setweaponammostock(var_00,self.pers["ksWeapon_stock_ammo"]);
|
||||
self setweaponammoclip(var_00,self.pers["ksWeapon_clip_ammo"]);
|
||||
thread removeweapononoutofammo(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
|
||||
removeweapononoutofammo(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);
|
||||
}
|
||||
}
|
755
MW3/PC/MP/maps/mp/killstreaks/_deployablebox.gsc
Normal file
755
MW3/PC/MP/maps/mp/killstreaks/_deployablebox.gsc
Normal file
@ -0,0 +1,755 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_deployablebox.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 28
|
||||
* Decompile Time: 508 ms
|
||||
* Timestamp: 10/27/2023 2:13:57 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 = begindeployableviamarker(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
|
||||
begindeployableviamarker(param_00,param_01)
|
||||
{
|
||||
self endon("death");
|
||||
self.marker = undefined;
|
||||
thread watchmarkerusage(param_00,param_01);
|
||||
var_02 = self getcurrentweapon();
|
||||
if(ismarker(var_02))
|
||||
{
|
||||
var_03 = var_02;
|
||||
}
|
||||
else
|
||||
{
|
||||
var_03 = undefined;
|
||||
}
|
||||
|
||||
while(ismarker(var_02))
|
||||
{
|
||||
self waittill("weapon_change",var_02);
|
||||
if(ismarker(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(!ismarker(var_02))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
common_scripts\utility::_disableusability();
|
||||
beginmarkertracking();
|
||||
}
|
||||
}
|
||||
|
||||
//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(!ismarker(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,::box_setactive);
|
||||
}
|
||||
}
|
||||
|
||||
//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
|
||||
beginmarkertracking()
|
||||
{
|
||||
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 = createboxforplayer(param_01,var_04,var_03);
|
||||
wait 0.05;
|
||||
var_05 thread [[ param_02 ]]();
|
||||
self delete();
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
ismarker(param_00)
|
||||
{
|
||||
switch(param_00)
|
||||
{
|
||||
case "deployable_vest_marker_mp":
|
||||
return 1;
|
||||
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
createboxforplayer(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 box_setinactive();
|
||||
var_03 thread box_handleownerdisconnect();
|
||||
return var_03;
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
box_setactive()
|
||||
{
|
||||
self setcursorhint("HINT_NOICON");
|
||||
self sethintstring(level.boxsettings[self.boxtype].hintstring);
|
||||
self.inuse = 0;
|
||||
if(level.teambased)
|
||||
{
|
||||
var_00 = maps\mp\gametypes\_gameobjects::getnextobjid();
|
||||
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::setheadicon(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::getnextobjid();
|
||||
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::setheadicon(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 box_handledamage();
|
||||
thread box_handledeath();
|
||||
thread box_timeout();
|
||||
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 doubledip(var_02);
|
||||
}
|
||||
else
|
||||
{
|
||||
self enableplayeruse(var_02);
|
||||
}
|
||||
|
||||
thread boxthink(var_02);
|
||||
}
|
||||
else
|
||||
{
|
||||
self disableplayeruse(var_02);
|
||||
}
|
||||
|
||||
thread box_playerjoinedteam(var_02);
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(self.owner) && self.owner == var_02)
|
||||
{
|
||||
if(var_02 maps\mp\_utility::isjuggernaut())
|
||||
{
|
||||
self disableplayeruse(var_02);
|
||||
thread doubledip(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 box_playerconnected();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
box_playerconnected()
|
||||
{
|
||||
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::setheadicon(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::setheadicon(var_00,"",(0,0,0));
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
box_playerjoinedteam(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::setheadicon(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::setheadicon(param_00,"",(0,0,0));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
box_setinactive()
|
||||
{
|
||||
self makeunusable();
|
||||
self.isusable = 0;
|
||||
maps\mp\_entityheadicons::setheadicon("none","",(0,0,0));
|
||||
if(isdefined(self.objidfriendly))
|
||||
{
|
||||
maps\mp\_utility::_objective_delete(self.objidfriendly);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
box_handledamage()
|
||||
{
|
||||
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::friendlyfirecheck(self.owner,var_01))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(isdefined(var_09))
|
||||
{
|
||||
switch(var_09)
|
||||
{
|
||||
case "flash_grenade_mp":
|
||||
case "smoke_grenade_mp":
|
||||
case "concussion_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::_hasperk("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 "javelin_mp":
|
||||
case "stinger_mp":
|
||||
case "remote_mortar_missile_mp":
|
||||
case "remotemissile_projectile_mp":
|
||||
case "ac130_40mm_mp":
|
||||
case "ac130_105mm_mp":
|
||||
self.var_30C8 = 1;
|
||||
var_0A = self.maxhealth + 1;
|
||||
break;
|
||||
|
||||
case "stealth_bomb_mp":
|
||||
case "artillery_mp":
|
||||
self.var_30C8 = 0;
|
||||
var_0A = var_0A + var_00 * 4;
|
||||
break;
|
||||
|
||||
case "bomb_site_mp":
|
||||
self.var_30C8 = 0;
|
||||
var_0A = self.maxhealth + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
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::giverankxp("kill",100,var_09,var_04);
|
||||
var_01 notify("destroyed_killstreak");
|
||||
}
|
||||
|
||||
if(isdefined(self.owner))
|
||||
{
|
||||
self.owner thread maps\mp\_utility::leaderdialogonplayer(level.boxsettings[self.boxtype].vodestroyed);
|
||||
}
|
||||
|
||||
self notify("death");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
box_handledeath()
|
||||
{
|
||||
self waittill("death");
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
box_setinactive();
|
||||
playfx(common_scripts\utility::getfx("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::func_2F45(level.boxsettings[self.boxtype].eventstring);
|
||||
self.owner thread maps\mp\gametypes\_rank::giverankxp("support",level.boxsettings[self.boxtype].xp);
|
||||
}
|
||||
|
||||
maps\mp\_entityheadicons::setheadicon(param_00,"",(0,0,0));
|
||||
self disableplayeruse(param_00);
|
||||
thread doubledip(param_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
doubledip(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::setheadicon(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::setheadicon(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(!useholdthink(param_00,2000))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
self notify("captured",param_00);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
isfriendlytobox(param_00)
|
||||
{
|
||||
if(level.teambased && self.team == param_00.team)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
box_timeout()
|
||||
{
|
||||
self endon("death");
|
||||
level endon("game_ended");
|
||||
var_00 = level.boxsettings[self.boxtype].lifespan;
|
||||
while(var_00)
|
||||
{
|
||||
wait 1;
|
||||
maps\mp\gametypes\_hostmigration::waittillhostmigrationdone();
|
||||
if(!isdefined(self.carriedby))
|
||||
{
|
||||
var_00 = max(0,var_00 - 1);
|
||||
}
|
||||
}
|
||||
|
||||
self notify("death");
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
deleteonownerdeath(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
|
||||
useholdthink(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 = useholdthinkloop(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::showelem();
|
||||
var_02 maps\mp\gametypes\_hud_util::showelem();
|
||||
}
|
||||
}
|
||||
|
||||
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
|
||||
useholdthinkloop(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::setheadicon(var_00,"",(0,0,0));
|
||||
self disableplayeruse(var_00);
|
||||
thread doubledip(var_00);
|
||||
}
|
||||
}
|
558
MW3/PC/MP/maps/mp/killstreaks/_emp.gsc
Normal file
558
MW3/PC/MP/maps/mp/killstreaks/_emp.gsc
Normal file
@ -0,0 +1,558 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_emp.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 21
|
||||
* Decompile Time: 395 ms
|
||||
* Timestamp: 10/27/2023 2:13:58 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 emp_teamtracker();
|
||||
}
|
||||
else
|
||||
{
|
||||
level thread emp_playertracker();
|
||||
}
|
||||
|
||||
level.killstreakfuncs["emp"] = ::emp_use;
|
||||
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
|
||||
emp_use(param_00)
|
||||
{
|
||||
if(!maps\mp\_utility::validateusestreak())
|
||||
{
|
||||
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::_hasperk("specialty_localjammer"))
|
||||
{
|
||||
var_02 radarjamoff();
|
||||
}
|
||||
}
|
||||
|
||||
visionsetnaked("coup_sunblind",0.1);
|
||||
thread empeffects();
|
||||
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_35BE(self,param_00);
|
||||
level thread keepemptimeremaining();
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(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::_hasperk("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::_hasperk("specialty_localjammer"))
|
||||
{
|
||||
var_02 radarjamoff();
|
||||
}
|
||||
}
|
||||
|
||||
visionsetnaked("coup_sunblind",0.1);
|
||||
thread empeffects();
|
||||
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 empplayerffadisconnect();
|
||||
level func_35BE(param_00);
|
||||
level notify("emp_update");
|
||||
level thread keepemptimeremaining();
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(level.emptimeout);
|
||||
foreach(var_02 in level.players)
|
||||
{
|
||||
if(var_02 == param_00)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_02 maps\mp\_utility::_hasperk("specialty_localjammer"))
|
||||
{
|
||||
var_02 radarjamon();
|
||||
}
|
||||
}
|
||||
|
||||
level.empplayer = undefined;
|
||||
level notify("emp_update");
|
||||
level notify("emp_ended");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
keepemptimeremaining()
|
||||
{
|
||||
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
|
||||
empplayerffadisconnect()
|
||||
{
|
||||
level endon("EMP_JamPlayers");
|
||||
level endon("emp_ended");
|
||||
self waittill("disconnect");
|
||||
level notify("emp_update");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
empeffects()
|
||||
{
|
||||
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
|
||||
emp_teamtracker()
|
||||
{
|
||||
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::isemped())
|
||||
{
|
||||
var_01 setempjammed(0);
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 setempjammed(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
emp_playertracker()
|
||||
{
|
||||
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::isemped())
|
||||
{
|
||||
var_01 setempjammed(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
func_35BE(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;
|
||||
}
|
||||
}
|
||||
}
|
887
MW3/PC/MP/maps/mp/killstreaks/_escortairdrop.gsc
Normal file
887
MW3/PC/MP/maps/mp/killstreaks/_escortairdrop.gsc
Normal file
@ -0,0 +1,887 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_escortairdrop.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 31
|
||||
* Decompile Time: 519 ms
|
||||
* Timestamp: 10/27/2023 2:14:00 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::_hasperk("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::currentactivevehiclecount() >= 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::isairdenied())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isemped())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
maps\mp\_utility::incrementfauxvehiclecount();
|
||||
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::decrementfauxvehiclecount();
|
||||
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::_hasperk("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::currentactivevehiclecount() >= 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::isairdenied())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isemped())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
maps\mp\_utility::incrementfauxvehiclecount();
|
||||
var_04 = selectdroplocation(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::decrementfauxvehiclecount();
|
||||
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 = createairship(self,param_00,var_09,var_0C,param_01,param_03);
|
||||
var_09 = var_08;
|
||||
usesupportescortairdrop(param_00,var_0E,var_09,var_0A,var_0B,var_07,var_0D);
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
finishospreygunnerusage(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 = createairship(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
|
||||
stopselectionwatcher()
|
||||
{
|
||||
self waittill("stop_location_selection",var_00);
|
||||
switch(var_00)
|
||||
{
|
||||
case "emp":
|
||||
case "cancel_location":
|
||||
case "disconnect":
|
||||
case "death":
|
||||
self notify("customCancelLocation");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
selectdroplocation(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 stopselectionwatcher();
|
||||
self waittill("confirm_location",var_07,var_08);
|
||||
maps\mp\_utility::stoplocationselection(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::currentactivevehiclecount() >= maps\mp\_utility::maxvehiclesallowed() || level.fauxvehiclecount >= maps\mp\_utility::maxvehiclesallowed())
|
||||
{
|
||||
maps\mp\_utility::clearusingremote();
|
||||
self iprintlnbold(&"MP_TOO_MANY_VEHICLES");
|
||||
return 0;
|
||||
}
|
||||
|
||||
thread finishospreygunnerusage(param_00,var_07,var_08,param_01);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
showicons(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::getnextobjid();
|
||||
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
|
||||
createairship(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::addtohelilist();
|
||||
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::heli_leave_on_changeteams(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::heli_leave_on_timeout(var_07);
|
||||
var_06 thread maps\mp\killstreaks\_helicopter::heli_damage_monitor();
|
||||
var_06 thread maps\mp\killstreaks\_helicopter::heli_health();
|
||||
var_06 thread maps\mp\killstreaks\_helicopter::heli_existance();
|
||||
var_06 thread airshipfx();
|
||||
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
|
||||
airshipfx()
|
||||
{
|
||||
self endon("death");
|
||||
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);
|
||||
wait 0.05;
|
||||
playfxontag(level.chopper_fx["light"]["belly"],self,"tag_light_belly");
|
||||
wait 0.05;
|
||||
playfxontag(level.chopper_fx["light"]["tail"],self,"tag_light_tail");
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
usesupportescortairdrop(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: 12
|
||||
useospreygunner(param_00,param_01,param_02,param_03,param_04,param_05)
|
||||
{
|
||||
thread ridegunner(param_00,param_01);
|
||||
param_01 thread airshipflygunner(self,param_02,param_03,param_04,param_05);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
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::heli_targeting();
|
||||
thread maps\mp\killstreaks\_helicopter::weaponlockthink(param_01);
|
||||
param_01.gunner = self;
|
||||
self.heliridelifeid = param_00;
|
||||
thread endrideonairshipdone(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: 14
|
||||
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: 15
|
||||
showdefendprompt(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: 16
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
airshippitchpropsdown()
|
||||
{
|
||||
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");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
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 notify("hatch_down");
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
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;
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
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");
|
||||
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 killguysnearcrates(param_05);
|
||||
self waittill("leaving");
|
||||
self notify("osprey_leaving");
|
||||
thread airshippitchpropsdown();
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
wait_and_delete(param_00)
|
||||
{
|
||||
self endon("death");
|
||||
level endon("game_ended");
|
||||
wait param_00;
|
||||
self delete();
|
||||
}
|
||||
|
||||
//Function Number: 23
|
||||
killguysnearcrates(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::_hasperk("specialty_blindeye"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(distancesquared(var_01,var_03.origin) > 500000)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
thread aishootplayer(var_03,var_01);
|
||||
waitforconfirmation();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 24
|
||||
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: 25
|
||||
targetdeathwaiter(param_00)
|
||||
{
|
||||
self endon("abandon_target");
|
||||
self endon("leaving");
|
||||
self endon("helicopter_removed");
|
||||
param_00 waittill("death");
|
||||
self notify("target_killed");
|
||||
}
|
||||
|
||||
//Function Number: 26
|
||||
waitforconfirmation()
|
||||
{
|
||||
self endon("helicopter_removed");
|
||||
self endon("leaving");
|
||||
self endon("target_killed");
|
||||
self endon("abandon_target");
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
//Function Number: 27
|
||||
airshipflygunner(param_00,param_01,param_02,param_03,param_04)
|
||||
{
|
||||
self notify("airshipFlyGunner");
|
||||
self endon("airshipFlyGunner");
|
||||
self endon("helicopter_removed");
|
||||
self endon("death");
|
||||
thread getbestheight(param_02);
|
||||
maps\mp\killstreaks\_helicopter::heli_fly_simple_path(param_01);
|
||||
thread maps\mp\killstreaks\_helicopter::heli_leave_on_timeout(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;
|
||||
ospreydropcrates(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::heli_fly_well(var_0D);
|
||||
}
|
||||
else
|
||||
{
|
||||
thread maps\mp\killstreaks\_helicopter::heli_fly_loop_path(var_0E);
|
||||
}
|
||||
|
||||
self waittill("leaving");
|
||||
thread airshippitchpropsdown();
|
||||
}
|
||||
|
||||
//Function Number: 28
|
||||
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_7B[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_7B[2],thread maps\mp\killstreaks\_airdrop::dropthecrate(undefined,self.droptype,undefined,0,undefined,self.origin,(randomint(50),randomint(50),randomint(50)),var_7B,param_02));
|
||||
wait param_01;
|
||||
wait 0.05;
|
||||
self notify("drop_crate",var_7B[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_7B,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_7B,param_02);
|
||||
wait 0.05;
|
||||
self notify("drop_crate");
|
||||
wait 1;
|
||||
thread airshippitchhatchup();
|
||||
}
|
||||
|
||||
//Function Number: 29
|
||||
ospreydropcrates(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_7B[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_7B[2],thread maps\mp\killstreaks\_airdrop::dropthecrate(undefined,self.droptype,undefined,0,undefined,self.origin,(randomint(50),randomint(50),randomint(50)),var_7B,param_02));
|
||||
wait 1;
|
||||
thread airshippitchhatchup();
|
||||
}
|
||||
|
||||
//Function Number: 30
|
||||
endride(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: 31
|
||||
endrideonairshipdone(param_00)
|
||||
{
|
||||
self endon("disconnect");
|
||||
param_00 waittill("helicopter_done");
|
||||
endride(param_00);
|
||||
}
|
1184
MW3/PC/MP/maps/mp/killstreaks/_harrier.gsc
Normal file
1184
MW3/PC/MP/maps/mp/killstreaks/_harrier.gsc
Normal file
File diff suppressed because it is too large
Load Diff
2405
MW3/PC/MP/maps/mp/killstreaks/_helicopter.gsc
Normal file
2405
MW3/PC/MP/maps/mp/killstreaks/_helicopter.gsc
Normal file
File diff suppressed because it is too large
Load Diff
468
MW3/PC/MP/maps/mp/killstreaks/_helicopter_flock.gsc
Normal file
468
MW3/PC/MP/maps/mp/killstreaks/_helicopter_flock.gsc
Normal file
@ -0,0 +1,468 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_helicopter_flock.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 21
|
||||
* Decompile Time: 379 ms
|
||||
* Timestamp: 10/27/2023 2:14:10 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::validateusestreak())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_02 = 5;
|
||||
if(heliflockactive() || maps\mp\_utility::currentactivevehiclecount() >= maps\mp\_utility::maxvehiclesallowed() || level.fauxvehiclecount + var_02 >= maps\mp\_utility::maxvehiclesallowed())
|
||||
{
|
||||
self iprintlnbold(&"MP_TOO_MANY_VEHICLES");
|
||||
return 0;
|
||||
}
|
||||
|
||||
maps\mp\_utility::incrementfauxvehiclecount();
|
||||
maps\mp\_utility::incrementfauxvehiclecount();
|
||||
maps\mp\_utility::incrementfauxvehiclecount();
|
||||
maps\mp\_utility::incrementfauxvehiclecount();
|
||||
maps\mp\_utility::incrementfauxvehiclecount();
|
||||
var_03 = selectlbstrikelocation(param_00,"littlebird_flock");
|
||||
if(!isdefined(var_03) || !var_03)
|
||||
{
|
||||
maps\mp\_utility::decrementfauxvehiclecount();
|
||||
maps\mp\_utility::decrementfauxvehiclecount();
|
||||
maps\mp\_utility::decrementfauxvehiclecount();
|
||||
maps\mp\_utility::decrementfauxvehiclecount();
|
||||
maps\mp\_utility::decrementfauxvehiclecount();
|
||||
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::currentactivevehiclecount() >= 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 littlebirdmadeselectionvo();
|
||||
thread finishlbstrikeusage(param_00,var_02,::callstrike,var_03);
|
||||
self setblurforplayer(0,0.3);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
littlebirdmadeselectionvo()
|
||||
{
|
||||
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::stoplocationselection(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");
|
||||
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 dolbstrike(param_00,self,var_03,0);
|
||||
wait 0.3;
|
||||
level thread dolbstrike(param_00,self,var_04,1);
|
||||
level thread dolbstrike(param_00,self,var_05,2);
|
||||
wait 0.3;
|
||||
level thread dolbstrike(param_00,self,var_06,3);
|
||||
level thread dolbstrike(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
|
||||
dolbstrike(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 = spawnattacklittlebird(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 watchdeath();
|
||||
var_05 thread flock_handledamage();
|
||||
var_05 thread startlbfiring1();
|
||||
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 removelittlebird();
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
spawnattacklittlebird(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::addtolittlebirdlist();
|
||||
var_04 thread maps\mp\killstreaks\_helicopter::removefromlittlebirdlistondeath();
|
||||
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::waitlongdurationwithhostmigrationpause(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
|
||||
startlbfiring1()
|
||||
{
|
||||
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
|
||||
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: 15
|
||||
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::friendlyfirecheck(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::_hasperk("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 "javelin_mp":
|
||||
case "stinger_mp":
|
||||
case "remote_mortar_missile_mp":
|
||||
case "remotemissile_projectile_mp":
|
||||
case "ac130_40mm_mp":
|
||||
case "ac130_105mm_mp":
|
||||
self.var_30C8 = 1;
|
||||
var_0C = self.maxhealth + 1;
|
||||
break;
|
||||
|
||||
case "sam_projectile_mp":
|
||||
self.var_30C8 = 1;
|
||||
var_0C = self.maxhealth * 0.25;
|
||||
break;
|
||||
|
||||
case "emp_grenade_mp":
|
||||
self.var_30C8 = 0;
|
||||
var_0C = self.maxhealth + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
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::giverankxp("kill",300,param_05,param_04);
|
||||
param_01 thread maps\mp\gametypes\_rank::func_2F45(&"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: 16
|
||||
watchdeath()
|
||||
{
|
||||
self endon("gone");
|
||||
self waittill("death");
|
||||
thread helidestroyed();
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
helidestroyed()
|
||||
{
|
||||
self endon("gone");
|
||||
if(!isdefined(self))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
self vehicle_setspeed(25,5);
|
||||
thread lbspin(randomintrange(180,220));
|
||||
wait randomfloatrange(0.5,1.5);
|
||||
lbexplode();
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
lbspin(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: 19
|
||||
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: 20
|
||||
lbexplode()
|
||||
{
|
||||
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");
|
||||
removelittlebird();
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
removelittlebird()
|
||||
{
|
||||
if(isdefined(self.mgturret1))
|
||||
{
|
||||
if(isdefined(self.mgturret1.killcament))
|
||||
{
|
||||
self.mgturret1.killcament delete();
|
||||
}
|
||||
|
||||
self.mgturret1 delete();
|
||||
}
|
||||
|
||||
maps\mp\_utility::decrementfauxvehiclecount();
|
||||
self delete();
|
||||
}
|
1011
MW3/PC/MP/maps/mp/killstreaks/_helicopter_guard.gsc
Normal file
1011
MW3/PC/MP/maps/mp/killstreaks/_helicopter_guard.gsc
Normal file
File diff suppressed because it is too large
Load Diff
1239
MW3/PC/MP/maps/mp/killstreaks/_ims.gsc
Normal file
1239
MW3/PC/MP/maps/mp/killstreaks/_ims.gsc
Normal file
File diff suppressed because it is too large
Load Diff
186
MW3/PC/MP/maps/mp/killstreaks/_juggernaut.gsc
Normal file
186
MW3/PC/MP/maps/mp/killstreaks/_juggernaut.gsc
Normal file
@ -0,0 +1,186 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_juggernaut.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 7
|
||||
* Decompile Time: 125 ms
|
||||
* Timestamp: 10/27/2023 2:14:17 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
|
||||
givejuggernaut(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::_hasperk("specialty_explosivebullets"))
|
||||
{
|
||||
maps\mp\_utility::_unsetperk("specialty_explosivebullets");
|
||||
}
|
||||
|
||||
switch(param_00)
|
||||
{
|
||||
case "juggernaut":
|
||||
self.isjuggernaut = 1;
|
||||
self.juggmovespeedscaler = 0.65;
|
||||
maps\mp\gametypes\_class::giveloadout(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::giveloadout(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 radarmover(var_01);
|
||||
break;
|
||||
}
|
||||
|
||||
maps\mp\gametypes\_weapons::updatemovespeedscale();
|
||||
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 juggernautsounds();
|
||||
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::clearkillstreaks();
|
||||
}
|
||||
else
|
||||
{
|
||||
thread maps\mp\killstreaks\_killstreaks::updatekillstreaks(1);
|
||||
}
|
||||
|
||||
thread juggremover();
|
||||
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
|
||||
juggernautsounds()
|
||||
{
|
||||
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
|
||||
radarmover(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
|
||||
juggremover()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("disconnect");
|
||||
self endon("jugg_removed");
|
||||
thread juggremoveongameended();
|
||||
thread func_01A7();
|
||||
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
|
||||
juggremoveongameended()
|
||||
{
|
||||
self endon("disconnect");
|
||||
self endon("jugg_removed");
|
||||
level waittill("game_ended");
|
||||
if(isdefined(self.juggernautoverlay))
|
||||
{
|
||||
self.juggernautoverlay destroy();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
func_01A7()
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
1979
MW3/PC/MP/maps/mp/killstreaks/_killstreaks.gsc
Normal file
1979
MW3/PC/MP/maps/mp/killstreaks/_killstreaks.gsc
Normal file
File diff suppressed because it is too large
Load Diff
660
MW3/PC/MP/maps/mp/killstreaks/_mobilemortar.gsc
Normal file
660
MW3/PC/MP/maps/mp/killstreaks/_mobilemortar.gsc
Normal file
@ -0,0 +1,660 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_mobilemortar.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 16
|
||||
* Decompile Time: 314 ms
|
||||
* Timestamp: 10/27/2023 2:14:22 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
precachemodel("vehicle_bradley");
|
||||
precachemodel("vehicle_bradley_destroyed");
|
||||
precacheshader("compass_objpoint_tank_friendly");
|
||||
precacheshader("compass_objpoint_tank_enemy");
|
||||
precacheshader("compass_objpoint_mortar_target");
|
||||
precachestring(&"KILLSTREAKS_MOBILE_MORTAR");
|
||||
precachestring(&"MP_GROUND_APPROACHES_TOO_CROWDED");
|
||||
precachestring(&"MP_SELECT_MOBILE_MORTAR_LOCATION");
|
||||
level.tankfire = loadfx("props/barrelexp");
|
||||
level.tankexplode = loadfx("explosions/large_vehicle_explosion");
|
||||
level.tankflash = loadfx("muzzleflashes/ac130_105mm");
|
||||
level.tankdust1 = loadfx("smoke/ground_smoke_launch_a");
|
||||
level.tankdust2 = loadfx("smoke/ground_smoke_launch_a");
|
||||
level.ground_support_locs = [];
|
||||
level.ground_support_locs["mp_alpha"][0]["origin"] = (-2748.91,2921.33,125.394);
|
||||
level.ground_support_locs["mp_alpha"][0]["angles"] = (0,16,0);
|
||||
level.ground_support_locs["mp_alpha"][1]["origin"] = (707.795,-499.191,-7.875);
|
||||
level.ground_support_locs["mp_alpha"][1]["angles"] = (0,90,0);
|
||||
level.ground_support_locs["mp_alpha"][2]["origin"] = (81.8557,2343.87,-7.875);
|
||||
level.ground_support_locs["mp_alpha"][2]["angles"] = (0,-90.1,0);
|
||||
level.ground_support_locs["mp_bravo"][0]["origin"] = (-761.529,1221.7,1212.13);
|
||||
level.ground_support_locs["mp_bravo"][0]["angles"] = (0,-92.373,0);
|
||||
level.ground_support_locs["mp_bravo"][1]["origin"] = (1474.99,971.865,1140.13);
|
||||
level.ground_support_locs["mp_bravo"][1]["angles"] = (0,-178.401,0);
|
||||
level.ground_support_locs["mp_bravo"][2]["origin"] = (-1366.57,-370.995,975.807);
|
||||
level.ground_support_locs["mp_bravo"][2]["angles"] = (0,0.807495,0);
|
||||
level.ground_support_locs["mp_dome"][0]["origin"] = (960.279,-482.564,-388.872);
|
||||
level.ground_support_locs["mp_dome"][0]["angles"] = (0,100.536,0);
|
||||
level.ground_support_locs["mp_dome"][1]["origin"] = (-921.941,166.449,-418.131);
|
||||
level.ground_support_locs["mp_dome"][1]["angles"] = (0,25.4524,0);
|
||||
level.ground_support_locs["mp_dome"][2]["origin"] = (43.3564,2102.85,-290.875);
|
||||
level.ground_support_locs["mp_dome"][2]["angles"] = (0,-95.0347,0);
|
||||
level.ground_support_locs["mp_plaza2"][0]["origin"] = (-1579.34,-2349.41,556.125);
|
||||
level.ground_support_locs["mp_plaza2"][0]["angles"] = (0,5.32288,0);
|
||||
level.ground_support_locs["mp_plaza2"][1]["origin"] = (-135.286,1622.04,607.13);
|
||||
level.ground_support_locs["mp_plaza2"][1]["angles"] = (0,173.639,0);
|
||||
level.ground_support_locs["mp_plaza2"][2]["origin"] = (-1544.55,1966.84,632.024);
|
||||
level.ground_support_locs["mp_plaza2"][2]["angles"] = (0,0.796509,0);
|
||||
level.ground_support_locs["mp_radar"][0]["origin"] = (896.685,2692.74,1208.13);
|
||||
level.ground_support_locs["mp_radar"][0]["angles"] = (0,-178.313,0);
|
||||
level.ground_support_locs["mp_radar"][1]["origin"] = (-2455.87,1564.41,1308.9);
|
||||
level.ground_support_locs["mp_radar"][1]["angles"] = (0,1.93471,0);
|
||||
level.ground_support_locs["mp_radar"][2]["origin"] = (1609,-1098.99,1162.13);
|
||||
level.ground_support_locs["mp_radar"][2]["angles"] = (0,170.421,0);
|
||||
level.ground_support_locs["mp_interchange"][0]["origin"] = (-2067.08,1218.17,-82.0487);
|
||||
level.ground_support_locs["mp_interchange"][0]["angles"] = (0,-26.2946,0);
|
||||
level.ground_support_locs["mp_interchange"][1]["origin"] = (-1198.2,-1782.62,103.665);
|
||||
level.ground_support_locs["mp_interchange"][1]["angles"] = (0,23.3544,0);
|
||||
level.ground_support_locs["mp_interchange"][2]["origin"] = (2391.95,899.034,87.7839);
|
||||
level.ground_support_locs["mp_interchange"][2]["angles"] = (0,-136.134,0);
|
||||
level.ground_support_locs["mp_lambeth"][0]["origin"] = (1641.37,-1318.01,-260.173);
|
||||
level.ground_support_locs["mp_lambeth"][0]["angles"] = (0,133.329,0);
|
||||
level.ground_support_locs["mp_lambeth"][1]["origin"] = (-1346.56,-880.226,-191.875);
|
||||
level.ground_support_locs["mp_lambeth"][1]["angles"] = (0,0.432892,0);
|
||||
level.ground_support_locs["mp_lambeth"][2]["origin"] = (1403.95,3083.4,-287.354);
|
||||
level.ground_support_locs["mp_lambeth"][2]["angles"] = (0,-106.321,0);
|
||||
level.ground_support_locs["mp_paris"][0]["origin"] = (-2427.42,619.217,188.826);
|
||||
level.ground_support_locs["mp_paris"][0]["angles"] = (0,-2.90588,0);
|
||||
level.ground_support_locs["mp_paris"][1]["origin"] = (2066.95,796.542,-88.322);
|
||||
level.ground_support_locs["mp_paris"][1]["angles"] = (0,177.292,0);
|
||||
level.ground_support_locs["mp_paris"][2]["origin"] = (506.406,-2165.36,-64.1201);
|
||||
level.ground_support_locs["mp_paris"][2]["angles"] = (0,89.5715,0);
|
||||
level.ground_support_locs["mp_hardhat"][0]["origin"] = (2033.65,-1428.62,299.86);
|
||||
level.ground_support_locs["mp_hardhat"][0]["angles"] = (0,177.979,0);
|
||||
level.ground_support_locs["mp_hardhat"][1]["origin"] = (-1044.73,82.9179,181.022);
|
||||
level.ground_support_locs["mp_hardhat"][1]["angles"] = (0,-2.68066,0);
|
||||
level.ground_support_locs["mp_hardhat"][2]["origin"] = (1248.95,1322.56,304.125);
|
||||
level.ground_support_locs["mp_hardhat"][2]["angles"] = (0,-93.4772,0);
|
||||
level.ground_support_locs["mp_carbon"][0]["origin"] = (-47.1408,-2841.26,3940.01);
|
||||
level.ground_support_locs["mp_carbon"][0]["angles"] = (0,-101.667,0);
|
||||
level.ground_support_locs["mp_carbon"][1]["origin"] = (-1686.2,-4727.09,3756.16);
|
||||
level.ground_support_locs["mp_carbon"][1]["angles"] = (0,87.6436,0);
|
||||
level.ground_support_locs["mp_carbon"][2]["origin"] = (-3761.18,-3716.69,3568.91);
|
||||
level.ground_support_locs["mp_carbon"][2]["angles"] = (0,-4.20761,0);
|
||||
level.ground_support_locs["mp_seatown"][0]["origin"] = (1339.87,763.592,175.114);
|
||||
level.ground_support_locs["mp_seatown"][0]["angles"] = (0,178.551,0);
|
||||
level.ground_support_locs["mp_seatown"][1]["origin"] = (1317.92,-725.589,232.125);
|
||||
level.ground_support_locs["mp_seatown"][1]["angles"] = (0,177.738,0);
|
||||
level.ground_support_locs["mp_seatown"][2]["origin"] = (-961.699,-1581.56,144.125);
|
||||
level.ground_support_locs["mp_seatown"][2]["angles"] = (0,90.0176,0);
|
||||
level.ground_support_locs["mp_bootleg"][0]["origin"] = (-988.964,1833.74,-99.9509);
|
||||
level.ground_support_locs["mp_bootleg"][0]["angles"] = (0,-78.8909,0);
|
||||
level.ground_support_locs["mp_bootleg"][1]["origin"] = (1105.84,-1116.13,-72.3048);
|
||||
level.ground_support_locs["mp_bootleg"][1]["angles"] = (0,176.558,0);
|
||||
level.ground_support_locs["mp_bootleg"][2]["origin"] = (-2027.31,84.2235,-51.875);
|
||||
level.ground_support_locs["mp_bootleg"][2]["angles"] = (0,-5.12868,0);
|
||||
level.ground_support_locs["mp_meteora"][0]["origin"] = (-590.972,1667.65,-99.6187);
|
||||
level.ground_support_locs["mp_meteora"][0]["angles"] = (0,-89.7745,0);
|
||||
level.ground_support_locs["mp_meteora"][1]["origin"] = (-1371.02,-1095.66,4.125);
|
||||
level.ground_support_locs["mp_meteora"][1]["angles"] = (0,179.879,0);
|
||||
level.ground_support_locs["mp_meteora"][2]["origin"] = (938.851,-1376.99,-60.0877);
|
||||
level.ground_support_locs["mp_meteora"][2]["angles"] = (0,110.545,0);
|
||||
level.killstreakfuncs["mobile_mortar"] = ::tryusemobilemortar;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
tryusemobilemortar(param_00,param_01)
|
||||
{
|
||||
if(!isdefined(level.ground_support_locs[level.script]))
|
||||
{
|
||||
self iprintlnbold(&"MP_UNAVAILABLE_IN_LEVEL");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(isdefined(self.laststand) && !maps\mp\_utility::_hasperk("specialty_finalstand"))
|
||||
{
|
||||
self iprintlnbold(&"MP_UNAVILABLE_IN_LASTSTAND");
|
||||
return 0;
|
||||
}
|
||||
else if(isdefined(level.mobilemortar))
|
||||
{
|
||||
self iprintlnbold(&"MP_GROUND_APPROACHES_TOO_CROWDED");
|
||||
return 0;
|
||||
}
|
||||
else if(maps\mp\_utility::isusingremote())
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_02 = selectentrancelocation();
|
||||
if(!isdefined(var_02))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
thread maps\mp\_utility::stoplocationselection(0);
|
||||
}
|
||||
|
||||
var_03 = createmobilemortar(self,var_02);
|
||||
if(!isdefined(var_03))
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
var_03 thread movetoposition("entrance");
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
selectentrancelocation()
|
||||
{
|
||||
var_00 = undefined;
|
||||
for(;;)
|
||||
{
|
||||
thread showicons();
|
||||
maps\mp\_utility::_beginlocationselection("mobile_mortar","map_artillery_selector",0,500);
|
||||
self endon("stop_location_selection");
|
||||
self waittill("confirm_location",var_01);
|
||||
for(var_02 = 0;var_02 < 3;var_02++)
|
||||
{
|
||||
var_03 = level.ground_support_locs[level.script][var_02]["origin"] * (1,1,0);
|
||||
var_04 = distancesquared(var_01,var_03);
|
||||
if(var_04 < -5536)
|
||||
{
|
||||
var_00 = var_02;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
for(var_02 = 0;var_02 < 3;var_02++)
|
||||
{
|
||||
if(var_02 == var_00)
|
||||
{
|
||||
objective_icon(self.locationobjectives[var_02],"compass_objpoint_mortar_target");
|
||||
continue;
|
||||
}
|
||||
|
||||
objective_state(self.locationobjectives[var_02],"invisible");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(var_02 = 0;var_02 < 3;var_02++)
|
||||
{
|
||||
objective_icon(self.locationobjectives[var_02],"compass_objpoint_tank_enemy");
|
||||
}
|
||||
}
|
||||
|
||||
wait 0.5;
|
||||
self notify("picked_location");
|
||||
wait 0.05;
|
||||
if(isdefined(var_00))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
showicons()
|
||||
{
|
||||
var_00 = maps\mp\gametypes\_hud_util::createfontstring("bigfixed",0.5);
|
||||
var_00 maps\mp\gametypes\_hud_util::setpoint("CENTER","CENTER",0,-150);
|
||||
var_00 settext(&"MP_SELECT_MOBILE_MORTAR_LOCATION");
|
||||
self.locationobjectives = [];
|
||||
for(var_01 = 0;var_01 < 3;var_01++)
|
||||
{
|
||||
self.locationobjectives[var_01] = maps\mp\gametypes\_gameobjects::getnextobjid();
|
||||
objective_add(self.locationobjectives[var_01],"invisible",(0,0,0));
|
||||
objective_position(self.locationobjectives[var_01],level.ground_support_locs[level.script][var_01]["origin"]);
|
||||
objective_state(self.locationobjectives[var_01],"active");
|
||||
objective_team(self.locationobjectives[var_01],self.team);
|
||||
objective_icon(self.locationobjectives[var_01],"compass_objpoint_tank_friendly");
|
||||
}
|
||||
|
||||
common_scripts\utility::waittill_any("cancel_location","picked_location","stop_location_selection");
|
||||
var_00 maps\mp\gametypes\_hud_util::destroyelem();
|
||||
for(var_01 = 0;var_01 < 3;var_01++)
|
||||
{
|
||||
maps\mp\_utility::_objective_delete(self.locationobjectives[var_01]);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
createmobilemortar(param_00,param_01)
|
||||
{
|
||||
var_02 = maps\mp\killstreaks\_airdrop::getflyheightoffset(level.ground_support_locs[level.script][param_01]["origin"]);
|
||||
var_03 = bullettrace(level.ground_support_locs[level.script][param_01]["origin"] + (0,0,var_02),level.ground_support_locs[level.script][param_01]["origin"] - (0,0,var_02),0);
|
||||
var_04 = var_03["position"] + anglestoforward(level.ground_support_locs[level.script][param_01]["angles"]) * -1000;
|
||||
var_05 = spawn("script_model",var_04);
|
||||
if(!isdefined(var_05))
|
||||
{
|
||||
return undefined;
|
||||
}
|
||||
|
||||
var_05.angles = level.ground_support_locs[level.script][param_01]["angles"];
|
||||
var_05 setmodel("vehicle_bradley");
|
||||
var_05 setcandamage(1);
|
||||
var_05.maxhealth = level.heli_maxhealth * 2;
|
||||
var_05.health = var_05.maxhealth;
|
||||
var_05.owner = param_00;
|
||||
var_05.playersattacked = [];
|
||||
var_05.lasttarget = var_05.origin;
|
||||
if(level.teambased)
|
||||
{
|
||||
var_05.team = param_00.team;
|
||||
}
|
||||
|
||||
var_05.lowx = level.spawnpoints[0].origin[0];
|
||||
var_05.highx = level.spawnpoints[0].origin[0];
|
||||
var_05.lowy = level.spawnpoints[0].origin[1];
|
||||
var_05.highy = level.spawnpoints[0].origin[1];
|
||||
var_06 = 200;
|
||||
if(level.spawnpoints.size > 1)
|
||||
{
|
||||
for(var_07 = 1;var_07 < level.spawnpoints.size;var_07++)
|
||||
{
|
||||
if(level.spawnpoints[var_07].origin[0] < var_05.lowx)
|
||||
{
|
||||
var_05.lowx = level.spawnpoints[var_07].origin[0];
|
||||
}
|
||||
else if(level.spawnpoints[var_07].origin[0] > var_05.highx)
|
||||
{
|
||||
var_05.highx = level.spawnpoints[var_07].origin[0];
|
||||
}
|
||||
|
||||
if(level.spawnpoints[var_07].origin[1] < var_05.lowy)
|
||||
{
|
||||
var_05.lowy = level.spawnpoints[var_07].origin[1];
|
||||
continue;
|
||||
}
|
||||
|
||||
if(level.spawnpoints[var_07].origin[1] > var_05.highy)
|
||||
{
|
||||
var_05.highy = level.spawnpoints[var_07].origin[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var_06 = -2000;
|
||||
}
|
||||
|
||||
var_05.lowx = var_05.lowx + var_06;
|
||||
var_05.highx = var_05.highx - var_06;
|
||||
var_05.lowy = var_05.lowy + var_06;
|
||||
var_05.highy = var_05.highy - var_06;
|
||||
if(level.teambased)
|
||||
{
|
||||
var_08 = maps\mp\gametypes\_gameobjects::getnextobjid();
|
||||
objective_add(var_08,"invisible",(0,0,0));
|
||||
objective_position(var_08,var_03["position"]);
|
||||
objective_state(var_08,"active");
|
||||
objective_team(var_08,var_05.team);
|
||||
objective_icon(var_08,"compass_objpoint_tank_friendly");
|
||||
var_05.objidfriendly = var_08;
|
||||
var_08 = maps\mp\gametypes\_gameobjects::getnextobjid();
|
||||
objective_add(var_08,"invisible",(0,0,0));
|
||||
objective_position(var_08,var_03["position"]);
|
||||
objective_state(var_08,"active");
|
||||
objective_team(var_08,level.otherteam[var_05.team]);
|
||||
objective_icon(var_08,"compass_objpoint_tank_enemy");
|
||||
var_05.objidenemy = var_08;
|
||||
}
|
||||
|
||||
var_05 thread watchtimeout();
|
||||
var_05 thread maps\mp\killstreaks\_helicopter::heli_damage_monitor();
|
||||
var_05 thread watchdeath();
|
||||
var_05 thread watchproximity();
|
||||
level.mobilemortar = var_05;
|
||||
return var_05;
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
movetoposition(param_00)
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("death");
|
||||
if(param_00 == "entrance")
|
||||
{
|
||||
var_01 = self.origin + anglestoforward(self.angles) * 1000;
|
||||
}
|
||||
else
|
||||
{
|
||||
self notify("leaving");
|
||||
var_01 = self.origin + anglestoforward(self.angles) * -1000;
|
||||
}
|
||||
|
||||
var_02 = 3;
|
||||
self moveto(var_01,var_02,var_02 * 0.6,var_02 * 0.4);
|
||||
wait var_02;
|
||||
if(param_00 == "entrance")
|
||||
{
|
||||
thread mortarattack();
|
||||
return;
|
||||
}
|
||||
|
||||
stopfxontag(level.tankdust1,self.fxent,"tag_origin");
|
||||
stopfxontag(level.tankdust2,self.fxent,"tag_origin");
|
||||
self.fxent delete();
|
||||
maps\mp\_utility::_objective_delete(self.objidfriendly);
|
||||
maps\mp\_utility::_objective_delete(self.objidenemy);
|
||||
level.mobilemortar = undefined;
|
||||
self delete();
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
findtarget()
|
||||
{
|
||||
var_00 = undefined;
|
||||
foreach(var_02 in level.players)
|
||||
{
|
||||
if(var_02 == self.owner)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(var_02 maps\mp\_utility::_hasperk("specialty_blindeye"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(level.teambased && var_02.team == self.owner.team)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(distancesquared(self.origin,var_02.origin) < 1000000)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
for(var_03 = 0;var_03 < self.playersattacked.size;var_03++)
|
||||
{
|
||||
if(var_02 == self.playersattacked[var_03])
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if(distancesquared(var_02.origin,self.lasttarget) < 500000)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(level.teambased)
|
||||
{
|
||||
var_04 = 0;
|
||||
for(var_03 = 0;var_03 < level.players.size;var_03++)
|
||||
{
|
||||
if(level.players[var_03].team != var_02.team && distancesquared(var_02.origin,level.players[var_03].origin) < 250000)
|
||||
{
|
||||
var_04 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(var_04 == 1)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
wait 0.05;
|
||||
var_05 = bullettrace(var_02.origin + (0,0,var_02 maps\mp\killstreaks\_airdrop::getflyheightoffset(var_02.origin)),var_02.origin + (0,0,100),0);
|
||||
if(var_05["surfacetype"] != "none")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_00 = var_02.origin;
|
||||
self.lasttarget = var_02.origin;
|
||||
self.playersattacked[self.playersattacked.size] = var_02;
|
||||
break;
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
findrandomtarget()
|
||||
{
|
||||
var_00 = undefined;
|
||||
for(var_01 = 0;var_01 < 20;var_01++)
|
||||
{
|
||||
var_02 = (randomfloatrange(self.lowx,self.highx),randomfloatrange(self.lowy,self.highy),0);
|
||||
if(distancesquared(self.origin * (1,1,0),var_02) < 1000000)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(distancesquared(self.owner.origin * (1,1,0),var_02) < 250000)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(distancesquared(self.origin * (1,1,0),self.lasttarget) < 500000)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_03 = 0;
|
||||
if(level.teambased)
|
||||
{
|
||||
foreach(var_05 in level.players)
|
||||
{
|
||||
if(var_05.team == self.owner.team && distancesquared(var_05.origin * (1,1,0),var_02) < 250000)
|
||||
{
|
||||
var_03 = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var_03 == 0)
|
||||
{
|
||||
var_00 = var_02;
|
||||
self.lasttarget = var_02;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!isdefined(var_00))
|
||||
{
|
||||
var_00 = (randomfloatrange(self.lowx,self.highx),randomfloatrange(self.lowy,self.highy),0);
|
||||
}
|
||||
|
||||
return var_00;
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
mortarattack()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("death");
|
||||
self endon("leaving");
|
||||
var_00 = 0;
|
||||
self.fxent = spawn("script_model",self.origin);
|
||||
self.fxent setmodel("tag_origin");
|
||||
self.fxent.angles = self.angles;
|
||||
self.fxent addpitch(-90);
|
||||
for(;;)
|
||||
{
|
||||
var_01 = findtarget();
|
||||
if(!isdefined(var_01))
|
||||
{
|
||||
var_01 = findrandomtarget();
|
||||
}
|
||||
|
||||
var_02 = self.origin[2] + 3500;
|
||||
var_03 = bullettrace(var_01 + (0,0,var_02),var_01 - (0,0,var_02),0);
|
||||
var_04 = var_01 + (0,0,var_02);
|
||||
var_05 = var_01 + (0,0,var_03["position"][2]);
|
||||
self playsound("bmp_fire");
|
||||
playfx(level.tankflash,self.origin + anglestoforward(self.angles) * 50);
|
||||
if(var_00 < 3)
|
||||
{
|
||||
playfxontag(level.tankdust1,self.fxent,"tag_origin");
|
||||
playfxontag(level.tankdust2,self.fxent,"tag_origin");
|
||||
var_00++;
|
||||
}
|
||||
|
||||
thread mortarrecoil();
|
||||
level thread firemortar(self,var_04,var_05);
|
||||
self waittill("mortar_fire_done");
|
||||
wait 2.5;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
firemortar(param_00,param_01,param_02)
|
||||
{
|
||||
level endon("game_ended");
|
||||
var_03 = param_00.owner;
|
||||
var_04 = magicbullet("javelin_mp",param_00.origin + (0,0,150),param_01,var_03);
|
||||
var_05 = maps\mp\gametypes\_gameobjects::getnextobjid();
|
||||
objective_add(var_05,"invisible",(0,0,0));
|
||||
objective_position(var_05,param_02);
|
||||
objective_state(var_05,"active");
|
||||
objective_team(var_05,param_00.team);
|
||||
objective_icon(var_05,"compass_objpoint_mortar_target");
|
||||
var_04.objidfriendly = var_05;
|
||||
var_06 = maps\mp\gametypes\_gameobjects::getnextobjid();
|
||||
objective_add(var_06,"invisible",(0,0,0));
|
||||
objective_position(var_06,param_02);
|
||||
objective_state(var_06,"active");
|
||||
objective_team(var_06,level.otherteam[param_00.team]);
|
||||
objective_icon(var_06,"compass_objpoint_mortar_target");
|
||||
var_04.objidenemy = var_06;
|
||||
var_07 = 0;
|
||||
for(;;)
|
||||
{
|
||||
if(!isdefined(var_04) || var_07 > 115 || distancesquared(var_04.origin,param_01) < 500)
|
||||
{
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
wait 0.05;
|
||||
}
|
||||
|
||||
var_07++;
|
||||
}
|
||||
|
||||
if(isdefined(var_04))
|
||||
{
|
||||
var_04 delete();
|
||||
}
|
||||
|
||||
if(isdefined(var_03))
|
||||
{
|
||||
var_08 = magicbullet("javelin_mp",param_01 + (0,0,200),param_02,var_03);
|
||||
}
|
||||
else
|
||||
{
|
||||
var_08 = magicbullet("javelin_mp",param_02 + (0,0,200),var_03);
|
||||
}
|
||||
|
||||
var_08.objidfriendly = var_05;
|
||||
var_08.objidenemy = var_06;
|
||||
var_08 thread watchprojectileonminimap(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
watchprojectileonminimap(param_00)
|
||||
{
|
||||
level endon("game_ended");
|
||||
self waittill("death");
|
||||
maps\mp\_utility::_objective_delete(self.objidfriendly);
|
||||
maps\mp\_utility::_objective_delete(self.objidenemy);
|
||||
if(isdefined(param_00))
|
||||
{
|
||||
param_00 notify("mortar_fire_done");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
mortarrecoil()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("death");
|
||||
self endon("leaving");
|
||||
var_00 = self.origin + anglestoforward(self.angles) * -20;
|
||||
var_01 = self.origin;
|
||||
var_02 = self.angles;
|
||||
self moveto(var_00,0.1);
|
||||
self rotatepitch(-3,0.1);
|
||||
wait 0.1;
|
||||
self moveto(var_01,0.15);
|
||||
self rotateto(var_02,0.15);
|
||||
wait 0.15;
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
watchtimeout()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("death");
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(90);
|
||||
self setcandamage(0);
|
||||
thread movetoposition("exit");
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
watchproximity()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("death");
|
||||
self endon("leaving");
|
||||
for(;;)
|
||||
{
|
||||
radiusdamage(self.origin,200,20,20);
|
||||
wait 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
watchdeath()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("leaving");
|
||||
self waittill("death");
|
||||
playfx(level.tankfire,self.origin);
|
||||
playfx(level.tankexplode,self.origin);
|
||||
var_00 = spawn("script_model",self.origin);
|
||||
var_00 setmodel("vehicle_bradley_destroyed");
|
||||
var_00.angles = self.angles;
|
||||
stopfxontag(level.tankdust1,self.fxent,"tag_origin");
|
||||
stopfxontag(level.tankdust2,self.fxent,"tag_origin");
|
||||
maps\mp\_utility::_objective_delete(self.objidfriendly);
|
||||
maps\mp\_utility::_objective_delete(self.objidenemy);
|
||||
self.fxent delete();
|
||||
self delete();
|
||||
wait 3.5;
|
||||
var_00 delete();
|
||||
level.mobilemortar = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
watchdamage()
|
||||
{
|
||||
level endon("game_ended");
|
||||
self endon("death");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("damage",var_00,var_01,var_02,var_03,var_04);
|
||||
if(self.health < 0)
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
403
MW3/PC/MP/maps/mp/killstreaks/_nuke.gsc
Normal file
403
MW3/PC/MP/maps/mp/killstreaks/_nuke.gsc
Normal file
@ -0,0 +1,403 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_nuke.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 20
|
||||
* Decompile Time: 362 ms
|
||||
* Timestamp: 10/27/2023 2:14:23 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
precacheitem("nuke_mp");
|
||||
precachelocationselector("map_nuke_selector");
|
||||
precachestring(&"MP_TACTICAL_NUKE_CALLED");
|
||||
precachestring(&"MP_FRIENDLY_TACTICAL_NUKE");
|
||||
precachestring(&"MP_TACTICAL_NUKE");
|
||||
level.nukevisionset = "aftermath";
|
||||
level._effect["nuke_player"] = loadfx("explosions/player_death_nuke");
|
||||
level._effect["nuke_flash"] = loadfx("explosions/player_death_nuke_flash");
|
||||
level._effect["nuke_aftermath"] = loadfx("dust/nuke_aftermath_mp");
|
||||
game["strings"]["nuclear_strike"] = &"MP_TACTICAL_NUKE";
|
||||
level.killstreakfuncs["nuke"] = ::tryusenuke;
|
||||
setdvarifuninitialized("scr_nukeTimer",10);
|
||||
setdvarifuninitialized("scr_nukeCancelMode",0);
|
||||
level.nuketimer = getdvarint("scr_nukeTimer");
|
||||
level.cancelmode = getdvarint("scr_nukeCancelMode");
|
||||
level.teamnukeemped["allies"] = 0;
|
||||
level.teamnukeemped["axis"] = 0;
|
||||
level.nukeemptimeout = 60;
|
||||
level.nukeemptimeremaining = int(level.nukeemptimeout);
|
||||
level.nukeinfo = spawnstruct();
|
||||
level.nukeinfo.var_36 = 2;
|
||||
level.nukedetonated = undefined;
|
||||
level thread nuke_empteamtracker();
|
||||
level thread onplayerconnect();
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
tryusenuke(param_00,param_01)
|
||||
{
|
||||
if(isdefined(level.nukeincoming))
|
||||
{
|
||||
self iprintlnbold(&"MP_NUKE_ALREADY_INBOUND");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(maps\mp\_utility::isusingremote() && !isdefined(level.gtnw) || !level.gtnw)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(!isdefined(param_01))
|
||||
{
|
||||
param_01 = 1;
|
||||
}
|
||||
|
||||
thread donuke(param_01);
|
||||
self notify("used_nuke");
|
||||
maps\mp\_matchdata::logkillstreakevent("nuke",self.origin);
|
||||
return 1;
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
delaythread_nuke(param_00,param_01)
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(param_00);
|
||||
thread [[ param_01 ]]();
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
donuke(param_00)
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
level.nukeinfo.player = self;
|
||||
level.nukeinfo.team = self.pers["team"];
|
||||
level.nukeincoming = 1;
|
||||
setdvar("ui_bomb_timer",4);
|
||||
if(level.teambased)
|
||||
{
|
||||
thread maps\mp\_utility::teamplayercardsplash("used_nuke",self,self.team);
|
||||
}
|
||||
else if(!level.hardcoremode)
|
||||
{
|
||||
self iprintlnbold(&"MP_FRIENDLY_TACTICAL_NUKE");
|
||||
}
|
||||
|
||||
level thread delaythread_nuke(level.nuketimer - 3.3,::nukesoundincoming);
|
||||
level thread delaythread_nuke(level.nuketimer,::nukesoundexplosion);
|
||||
level thread delaythread_nuke(level.nuketimer,::nukeslowmo);
|
||||
level thread delaythread_nuke(level.nuketimer,::nukeeffects);
|
||||
level thread delaythread_nuke(level.nuketimer + 0.25,::nukevision);
|
||||
level thread delaythread_nuke(level.nuketimer + 1.5,::nukedeath);
|
||||
level thread delaythread_nuke(level.nuketimer + 1.5,::nukeearthquake);
|
||||
level thread nukeaftermatheffect();
|
||||
level thread update_ui_timers();
|
||||
if(level.cancelmode && param_00)
|
||||
{
|
||||
level thread cancelnukeondeath(self);
|
||||
}
|
||||
|
||||
if(!isdefined(level.nuke_clockobject))
|
||||
{
|
||||
level.nuke_clockobject = spawn("script_origin",(0,0,0));
|
||||
level.nuke_clockobject hide();
|
||||
}
|
||||
|
||||
if(!isdefined(level.nuke_soundobject))
|
||||
{
|
||||
level.nuke_soundobject = spawn("script_origin",(0,0,1));
|
||||
level.nuke_soundobject hide();
|
||||
}
|
||||
|
||||
for(var_01 = level.nuketimer;var_01 > 0;var_01--)
|
||||
{
|
||||
level.nuke_clockobject playsound("ui_mp_nukebomb_timer");
|
||||
wait 1;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
cancelnukeondeath(param_00)
|
||||
{
|
||||
param_00 common_scripts\utility::waittill_any("death","disconnect");
|
||||
if(isdefined(param_00) && level.cancelmode == 2)
|
||||
{
|
||||
param_00 thread maps\mp\killstreaks\_emp::emp_use(0,0);
|
||||
}
|
||||
|
||||
setdvar("ui_bomb_timer",0);
|
||||
level.nukeincoming = undefined;
|
||||
level notify("nuke_cancelled");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
nukesoundincoming()
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
if(isdefined(level.nuke_soundobject))
|
||||
{
|
||||
level.nuke_soundobject playsound("nuke_incoming");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
nukesoundexplosion()
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
if(isdefined(level.nuke_soundobject))
|
||||
{
|
||||
level.nuke_soundobject playsound("nuke_explosion");
|
||||
level.nuke_soundobject playsound("nuke_wave");
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
nukeeffects()
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
setdvar("ui_bomb_timer",0);
|
||||
level.nukedetonated = 1;
|
||||
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 = 5000;
|
||||
var_04 = spawn("script_model",var_01.origin + var_02 * var_03);
|
||||
var_04 setmodel("tag_origin");
|
||||
var_04.angles = (0,var_01.angles[1] + 180,90);
|
||||
var_04 thread nukeeffect(var_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
nukeeffect(param_00)
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
param_00 endon("disconnect");
|
||||
common_scripts\utility::waitframe();
|
||||
playfxontagforclients(level._effect["nuke_flash"],self,"tag_origin",param_00);
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
nukeaftermatheffect()
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
level waittill("spawning_intermission");
|
||||
var_00 = getentarray("mp_global_intermission","classname");
|
||||
var_00 = var_00[0];
|
||||
var_01 = anglestoup(var_00.angles);
|
||||
var_02 = anglestoright(var_00.angles);
|
||||
playfx(level._effect["nuke_aftermath"],var_00.origin,var_01,var_02);
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
nukeslowmo()
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
setslowmotion(1,0.25,0.5);
|
||||
level waittill("nuke_death");
|
||||
setslowmotion(0.25,1,2);
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
nukevision()
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
level.nukevisioninprogress = 1;
|
||||
visionsetnaked("mpnuke",3);
|
||||
level waittill("nuke_death");
|
||||
visionsetnaked(level.nukevisionset,5);
|
||||
visionsetpain(level.nukevisionset);
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
nukedeath()
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
level notify("nuke_death");
|
||||
maps\mp\gametypes\_hostmigration::waittillhostmigrationdone();
|
||||
ambientstop(1);
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
if(level.teambased)
|
||||
{
|
||||
if(isdefined(level.nukeinfo.team) && var_01.team == level.nukeinfo.team)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if(isdefined(level.nukeinfo.player) && var_01 == level.nukeinfo.player)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01.nuked = 1;
|
||||
if(isalive(var_01))
|
||||
{
|
||||
var_01 thread maps\mp\gametypes\_damage::finishplayerdamagewrapper(level.nukeinfo.player,level.nukeinfo.player,999999,0,"MOD_EXPLOSIVE","nuke_mp",var_01.origin,var_01.origin,"none",0,0);
|
||||
}
|
||||
}
|
||||
|
||||
level thread nuke_empjam();
|
||||
level.nukeincoming = undefined;
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
nukeearthquake()
|
||||
{
|
||||
level endon("nuke_cancelled");
|
||||
level waittill("nuke_death");
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
nuke_empjam()
|
||||
{
|
||||
level endon("game_ended");
|
||||
level maps\mp\killstreaks\_emp::func_35BE(level.nukeinfo.player,maps\mp\_utility::getotherteam(level.nukeinfo.team));
|
||||
level notify("nuke_EMPJam");
|
||||
level endon("nuke_EMPJam");
|
||||
if(level.teambased)
|
||||
{
|
||||
level.teamnukeemped[maps\mp\_utility::getotherteam(level.nukeinfo.team)] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.teamnukeemped[level.nukeinfo.team] = 1;
|
||||
level.teamnukeemped[maps\mp\_utility::getotherteam(level.nukeinfo.team)] = 1;
|
||||
}
|
||||
|
||||
level notify("nuke_emp_update");
|
||||
level thread keepnukeemptimeremaining();
|
||||
maps\mp\gametypes\_hostmigration::waitlongdurationwithhostmigrationpause(level.nukeemptimeout);
|
||||
if(level.teambased)
|
||||
{
|
||||
level.teamnukeemped[maps\mp\_utility::getotherteam(level.nukeinfo.team)] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
level.teamnukeemped[level.nukeinfo.team] = 0;
|
||||
level.teamnukeemped[maps\mp\_utility::getotherteam(level.nukeinfo.team)] = 0;
|
||||
}
|
||||
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
if(level.teambased && var_01.team == level.nukeinfo.team)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01.nuked = undefined;
|
||||
}
|
||||
|
||||
level notify("nuke_emp_update");
|
||||
level notify("nuke_emp_ended");
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
keepnukeemptimeremaining()
|
||||
{
|
||||
level notify("keepNukeEMPTimeRemaining");
|
||||
level endon("keepNukeEMPTimeRemaining");
|
||||
level endon("nuke_emp_ended");
|
||||
level.nukeemptimeremaining = int(level.nukeemptimeout);
|
||||
while(level.nukeemptimeremaining)
|
||||
{
|
||||
wait 1;
|
||||
level.nukeemptimeremaining--;
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
nuke_empteamtracker()
|
||||
{
|
||||
level endon("game_ended");
|
||||
for(;;)
|
||||
{
|
||||
level common_scripts\utility::waittill_either("joined_team","nuke_emp_update");
|
||||
foreach(var_01 in level.players)
|
||||
{
|
||||
if(var_01.team == "spectator")
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(level.teambased)
|
||||
{
|
||||
if(isdefined(level.nukeinfo.team) && var_01.team == level.nukeinfo.team)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if(isdefined(level.nukeinfo.player) && var_01 == level.nukeinfo.player)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(!level.teamnukeemped[var_01.team] && !var_01 maps\mp\_utility::isemped())
|
||||
{
|
||||
var_01 setempjammed(0);
|
||||
continue;
|
||||
}
|
||||
|
||||
var_01 setempjammed(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
onplayerconnect()
|
||||
{
|
||||
for(;;)
|
||||
{
|
||||
level waittill("connected",var_00);
|
||||
var_00 thread onplayerspawned();
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
onplayerspawned()
|
||||
{
|
||||
self endon("disconnect");
|
||||
for(;;)
|
||||
{
|
||||
self waittill("spawned_player");
|
||||
if(level.teamnukeemped[self.team])
|
||||
{
|
||||
if(level.teambased)
|
||||
{
|
||||
self setempjammed(1);
|
||||
}
|
||||
else if(!isdefined(level.nukeinfo.player) || isdefined(level.nukeinfo.player) && self != level.nukeinfo.player)
|
||||
{
|
||||
self setempjammed(1);
|
||||
}
|
||||
}
|
||||
|
||||
if(isdefined(level.nukedetonated))
|
||||
{
|
||||
self visionsetnakedforplayer(level.nukevisionset,0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
update_ui_timers()
|
||||
{
|
||||
level endon("game_ended");
|
||||
level endon("disconnect");
|
||||
level endon("nuke_cancelled");
|
||||
level endon("nuke_death");
|
||||
var_00 = level.nuketimer * 1000 + gettime();
|
||||
setdvar("ui_nuke_end_milliseconds",var_00);
|
||||
level waittill("host_migration_begin");
|
||||
var_01 = maps\mp\gametypes\_hostmigration::waittillhostmigrationdone();
|
||||
if(var_01 > 0)
|
||||
{
|
||||
setdvar("ui_nuke_end_milliseconds",var_00 + var_01);
|
||||
}
|
||||
}
|
178
MW3/PC/MP/maps/mp/killstreaks/_perkstreaks.gsc
Normal file
178
MW3/PC/MP/maps/mp/killstreaks/_perkstreaks.gsc
Normal file
@ -0,0 +1,178 @@
|
||||
/*******************************************************************
|
||||
* Decompiled By: Bog
|
||||
* Decompiled File: maps\mp\killstreaks\_perkstreaks.gsc
|
||||
* Game: Call of Duty: Modern Warfare 3
|
||||
* Platform: PC
|
||||
* Function Count: 22
|
||||
* Decompile Time: 402 ms
|
||||
* Timestamp: 10/27/2023 2:14:24 AM
|
||||
*******************************************************************/
|
||||
|
||||
//Function Number: 1
|
||||
init()
|
||||
{
|
||||
level.killstreakfuncs["specialty_longersprint_ks"] = ::tryuseextremeconditioning;
|
||||
level.killstreakfuncs["specialty_fastreload_ks"] = ::tryusesleightofhand;
|
||||
level.killstreakfuncs["specialty_scavenger_ks"] = ::tryusescavenger;
|
||||
level.killstreakfuncs["specialty_blindeye_ks"] = ::tryuseblindeye;
|
||||
level.killstreakfuncs["specialty_paint_ks"] = ::tryusepaint;
|
||||
level.killstreakfuncs["specialty_hardline_ks"] = ::tryusehardline;
|
||||
level.killstreakfuncs["specialty_coldblooded_ks"] = ::tryusecoldblooded;
|
||||
level.killstreakfuncs["specialty_quickdraw_ks"] = ::tryusequickdraw;
|
||||
level.killstreakfuncs["specialty_assists_ks"] = ::tryuseassists;
|
||||
level.killstreakfuncs["_specialty_blastshield_ks"] = ::tryuseblastshield;
|
||||
level.killstreakfuncs["specialty_detectexplosive_ks"] = ::tryusesitrep;
|
||||
level.killstreakfuncs["specialty_autospot_ks"] = ::tryuseironlungs;
|
||||
level.killstreakfuncs["specialty_bulletaccuracy_ks"] = ::tryusesteadyaim;
|
||||
level.killstreakfuncs["specialty_quieter_ks"] = ::tryusedeadsilence;
|
||||
level.killstreakfuncs["specialty_stalker_ks"] = ::tryusestalker;
|
||||
level.killstreakfuncs["all_perks_bonus"] = ::tryuseallperks;
|
||||
}
|
||||
|
||||
//Function Number: 2
|
||||
tryuseallperks()
|
||||
{
|
||||
}
|
||||
|
||||
//Function Number: 3
|
||||
tryuseblindeye(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_blindeye");
|
||||
}
|
||||
|
||||
//Function Number: 4
|
||||
tryusepaint(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_paint");
|
||||
}
|
||||
|
||||
//Function Number: 5
|
||||
tryuseassists(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_assists");
|
||||
}
|
||||
|
||||
//Function Number: 6
|
||||
tryusesteadyaim(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_bulletaccuracy");
|
||||
}
|
||||
|
||||
//Function Number: 7
|
||||
tryusestalker(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_stalker");
|
||||
}
|
||||
|
||||
//Function Number: 8
|
||||
tryuseextremeconditioning(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_longersprint");
|
||||
}
|
||||
|
||||
//Function Number: 9
|
||||
tryusesleightofhand(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_fastreload");
|
||||
}
|
||||
|
||||
//Function Number: 10
|
||||
tryusescavenger(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_scavenger");
|
||||
}
|
||||
|
||||
//Function Number: 11
|
||||
tryusehardline(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_hardline");
|
||||
maps\mp\killstreaks\_killstreaks::setstreakcounttonext();
|
||||
}
|
||||
|
||||
//Function Number: 12
|
||||
tryusecoldblooded(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_coldblooded");
|
||||
}
|
||||
|
||||
//Function Number: 13
|
||||
tryusequickdraw(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_quickdraw");
|
||||
}
|
||||
|
||||
//Function Number: 14
|
||||
tryuseblastshield(param_00)
|
||||
{
|
||||
doperkfunctions("_specialty_blastshield");
|
||||
}
|
||||
|
||||
//Function Number: 15
|
||||
tryusesitrep(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_detectexplosive");
|
||||
}
|
||||
|
||||
//Function Number: 16
|
||||
tryuseironlungs(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_autospot");
|
||||
}
|
||||
|
||||
//Function Number: 17
|
||||
tryuseassassin(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_heartbreaker");
|
||||
}
|
||||
|
||||
//Function Number: 18
|
||||
tryusedeadsilence(param_00)
|
||||
{
|
||||
doperkfunctions("specialty_quieter");
|
||||
}
|
||||
|
||||
//Function Number: 19
|
||||
doperkfunctions(param_00)
|
||||
{
|
||||
maps\mp\_utility::giveperk(param_00,0);
|
||||
thread watchdeath(param_00);
|
||||
thread checkforperkupgrade(param_00);
|
||||
maps\mp\_matchdata::logkillstreakevent(param_00 + "_ks",self.origin);
|
||||
}
|
||||
|
||||
//Function Number: 20
|
||||
watchdeath(param_00)
|
||||
{
|
||||
self endon("disconnect");
|
||||
self waittill("death");
|
||||
maps\mp\_utility::_unsetperk(param_00);
|
||||
maps\mp\_utility::_unsetextraperks(param_00);
|
||||
}
|
||||
|
||||
//Function Number: 21
|
||||
checkforperkupgrade(param_00)
|
||||
{
|
||||
var_01 = maps\mp\gametypes\_class::getperkupgrade(param_00);
|
||||
if(var_01 != "specialty_null")
|
||||
{
|
||||
maps\mp\_utility::giveperk(var_01,0);
|
||||
thread watchdeath(var_01);
|
||||
}
|
||||
}
|
||||
|
||||
//Function Number: 22
|
||||
isperkstreakon(param_00)
|
||||
{
|
||||
for(var_01 = 1;var_01 < 4;var_01++)
|
||||
{
|
||||
if(isdefined(self.pers["killstreaks"][var_01].streakname) && self.pers["killstreaks"][var_01].streakname == param_00)
|
||||
{
|
||||
if(self.pers["killstreaks"][var_01].available)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user