Files
IL-GSC/WW2/PC/ALL/maps/mp/_water.gsc
2023-10-27 03:49:01 -04:00

843 lines
16 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_water.gsc
* Game: Call of Duty: WWII
* Platform: PC
* Function Count: 29
* Decompile Time: 484 ms
* Timestamp: 10/27/2023 3:22:16 AM
*******************************************************************/
//Function Number: 1
func_00D5()
{
if(isdefined(level.water_wake))
{
level.var_611["water_wake"] = loadfx(level.water_wake);
}
else
{
level.var_611["water_wake"] = loadfx("vfx/treadfx/body_wake_water");
}
if(isdefined(level.water_wake_stationary))
{
level.var_611["water_wake_stationary"] = loadfx(level.water_wake_stationary);
}
else
{
level.var_611["water_wake_stationary"] = loadfx("vfx/treadfx/body_wake_water_stationary");
}
if(isdefined(level.water_splash_emerge))
{
level.var_611["water_splash_emerge"] = loadfx(level.water_splash_emerge);
}
else
{
level.var_611["water_splash_emerge"] = loadfx("vfx/water/body_splash_exit");
}
if(isdefined(level.water_splash_enter))
{
level.var_611["water_splash_enter"] = loadfx(level.water_splash_enter);
}
else
{
level.var_611["water_splash_enter"] = loadfx("vfx/water/body_splash");
}
precacheshellshock("underwater");
if(!isdefined(level.var_A968))
{
level.var_A968 = [];
}
if(!isdefined(level.var_A969))
{
level.var_A969 = 0;
}
if(!isdefined(level.var_8ACF))
{
if(isdefined(level.var_585D) && level.var_585D)
{
func_8720("shovel_zm");
}
else
{
func_8720("iw5_underwater_mp");
}
}
if(!isdefined(level.var_2B7C))
{
func_865D("iw5_underwater_mp");
}
if(!isdefined(level.var_C19))
{
level.var_C19 = 1;
}
if(level.var_2B7C == level.var_8ACF)
{
level.var_C19 = 0;
}
if(!isdefined(level.var_9545))
{
level.var_9545 = 48;
}
var_00 = getentarray("trigger_underwater","targetname");
level.var_A964 = var_00;
foreach(var_02 in var_00)
{
var_02 func_278A();
var_02 thread func_A935();
}
level thread func_2415(var_00);
level thread func_6B6E();
setdvar("scr_ball_water_drop_delay",10);
}
//Function Number: 2
func_7320(param_00)
{
if(param_00)
{
self.var_5525 = 1;
return;
}
self.var_5525 = undefined;
}
//Function Number: 3
func_A90E()
{
level endon("game_ended");
self endon("disconnect");
self endon("death");
for(;;)
{
self waittill("player_migrated");
foreach(var_01 in level.var_A968)
{
self initwaterclienttrigger(var_01.var_165,var_01);
}
}
}
//Function Number: 4
func_6B6E()
{
level endon("game_ended");
for(;;)
{
level waittill("connected",var_00);
var_00 thread func_A90E();
foreach(var_02 in level.var_A968)
{
var_00 initwaterclienttrigger(var_02.var_165,var_02);
}
}
}
//Function Number: 5
func_278A()
{
var_00 = common_scripts\utility::func_46B5(self.var_1A2,"targetname");
var_00.var_116 = var_00.var_116 + (0,0,level.var_A969);
var_01 = var_00 common_scripts\utility::func_8FFC();
var_01 method_805B();
if(isdefined(self.var_165))
{
var_01.var_165 = self.var_165;
level.var_A968 = common_scripts\utility::func_F6F(level.var_A968,var_01);
}
}
//Function Number: 6
func_2415(param_00)
{
level endon("game_ended");
for(;;)
{
level waittill("player_spawned",var_01);
var_02 = 0;
foreach(var_04 in param_00)
{
if(var_01 istouching(var_04))
{
var_02 = 1;
break;
}
}
if(!var_02)
{
var_01 func_7320(0);
var_01.var_A019 = undefined;
var_01.var_542A = undefined;
var_01 method_86C7();
var_01.var_57F2 = undefined;
var_01.var_5849 = undefined;
var_01.var_A95F = undefined;
var_01.watermovespeedscale = 1;
var_01.var_57C9 = undefined;
var_01 notify("out_of_water");
}
}
}
//Function Number: 7
func_A935()
{
level endon("game_ended");
for(;;)
{
self waittill("trigger",var_00);
if(!isplayer(var_00) && !isai(var_00))
{
continue;
}
if(!isalive(var_00))
{
continue;
}
if(var_00 common_scripts\_plant_weapon::func_5855())
{
continue;
}
if(!isdefined(var_00.var_5525))
{
var_00 func_7320(1);
var_00 thread func_740D(self);
}
}
}
//Function Number: 8
func_740D(param_00)
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
thread func_5526(param_00);
thread func_748F();
self.var_3999 = 0;
self.var_3997 = 0;
for(;;)
{
if(maps\mp\_utility::func_581D())
{
if(isdefined(self.var_A019) && isdefined(self.var_57C9))
{
self notify("stop_water_shellshock");
self stopshellshock();
self method_812A(1);
self.var_57C9 = undefined;
}
}
else if(isdefined(self.var_A019) && !isdefined(self.var_57C9))
{
thread playerapplyshellshock();
self method_812A(0);
}
if(!self istouching(param_00))
{
func_7320(0);
self.var_A019 = undefined;
self.var_542A = undefined;
self method_86C7();
self.var_57F2 = undefined;
self.watermovespeedscale = 1;
maps\mp\gametypes\_weapons::func_A13B();
self notify("out_of_water");
self.var_5849 = undefined;
if(!maps\mp\_utility::func_581D())
{
self stopshellshock();
self method_812A(1);
self.var_57C9 = undefined;
}
func_73D6();
maps\mp\_utility::func_73AF(1);
var_01 = distance(self getvelocity(),(0,0,0));
var_02 = (self.var_116[0],self.var_116[1],func_471B(param_00));
playfx(level.var_611["water_splash_emerge"],var_02,anglestoforward((0,self.var_1D[1],0) + (270,180,0)));
break;
}
if(isdefined(self.var_542A) && func_53CA(param_00,32))
{
self.var_542A = undefined;
self.watermovespeedscale = 1;
maps\mp\gametypes\_weapons::func_A13B();
}
if(func_53CA(param_00,32))
{
self.var_542A = undefined;
if(isdefined(level.var_A96A))
{
self.watermovespeedscale = level.var_A96A;
}
else
{
self.watermovespeedscale = 1;
}
maps\mp\gametypes\_weapons::func_A13B();
}
if(!isdefined(self.var_542A) && !func_53CA(param_00,32))
{
self.var_542A = 1;
self.watermovespeedscale = 0.7;
maps\mp\gametypes\_weapons::func_A13B();
}
if(!isdefined(self.var_A019) && !func_565D(param_00,0) || isunderwaterprop())
{
if(isdefined(self.var_1561) && self.var_1561 > 0)
{
self.var_1561--;
wait 0.05;
continue;
}
self.var_A019 = 1;
if(isdefined(level.var_A96B))
{
self thread [[ level.var_A96B ]]();
}
else if(!level.var_3FDC == "prop" && self.var_1A7 != game["defenders"])
{
thread func_73F2();
}
maps\mp\_utility::func_73AF(0);
if(!maps\mp\_utility::func_581D())
{
thread playerapplyshellshock();
self method_812A(0);
}
var_03 = self getcurrentweapon();
if(var_03 != "none")
{
var_04 = function_01D4(var_03);
if(var_04 == "primary" || var_04 == "altmode")
{
self.var_A95F = var_03;
}
else if(maps\mp\_utility::func_5740(var_03))
{
self.var_A95F = maps\mp\killstreaks\_killstreaks::func_73EB();
}
else if(isdefined(self.var_5BC5) && self hasweapon(self.var_5BC5))
{
self.var_A95F = self.var_5BC5;
}
}
if(isdefined(level.var_3FC9))
{
self [[ level.var_3FC9 ]](param_00);
}
}
if(isdefined(self.var_A019) && (isdefined(self.var_57F2) || !isdefined(self.var_5849)) && func_53CA(param_00,level.var_9545) || self getstance() == "prone" || !level.var_C19)
{
self.var_5849 = 1;
self method_86C6();
self.var_57F2 = undefined;
func_73D6();
if(isdefined(self.var_5738) && self.var_5738 == 1)
{
func_73DE("none");
self method_812B(0);
self method_84CB();
}
else if(!isdefined(level.var_585D) || !function_02BF(self))
{
func_73DE("shallow");
}
}
if(isdefined(self.var_A019) && (isdefined(self.var_5849) || !isdefined(self.var_57F2)) && !func_53CA(param_00,level.var_9545) && self getstance() != "prone" && level.var_C19)
{
self method_86C6();
self.var_57F2 = 1;
self.var_5849 = undefined;
func_73D6();
if(isdefined(self.var_5738) && self.var_5738 == 1)
{
func_73DE("none");
self method_812B(0);
self method_84CB();
}
else if(!isdefined(level.var_585D) || !function_02BF(self))
{
func_73DE("deep");
}
}
if(isdefined(self.var_1561))
{
self.var_1561 = getdvarint("scr_ball_water_drop_delay",10);
}
if(isdefined(self.var_A019) && func_565D(param_00,0) && !isunderwaterprop())
{
self.var_A019 = undefined;
self method_86C7();
self.var_57F2 = undefined;
self.var_5849 = undefined;
self notify("above_water");
var_01 = distance(self getvelocity(),(0,0,0));
var_02 = (self.var_116[0],self.var_116[1],func_471B(param_00));
playfx(level.var_611["water_splash_emerge"],var_02,anglestoforward((0,self.var_1D[1],0) + (270,180,0)));
if(!maps\mp\_utility::func_581D())
{
self stopshellshock();
self method_812A(1);
self.var_57C9 = undefined;
}
func_73D6();
maps\mp\_utility::func_73AF(1);
}
wait 0.05;
}
}
//Function Number: 9
isunderwaterprop()
{
var_00 = level.var_3FDC == "prop";
var_01 = self.var_1A7 == game["defenders"];
var_02 = maps\mp\_utility::func_4571() != "mp_wolfslair";
return var_00 && var_01 && var_02;
}
//Function Number: 10
playerapplyshellshock()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("stop_water_shellshock");
self endon("out_of_water");
self endon("above_water");
self.var_57C9 = 1;
for(;;)
{
self shellshock("underwater",19,undefined,0);
wait(19);
}
}
//Function Number: 11
func_5660(param_00)
{
if(isdefined(param_00.var_5A69))
{
var_01 = self.var_12C["killstreaks"][self.var_5A69].var_944C;
if(isdefined(var_01))
{
if(issubstr(var_01,"turret") || issubstr(var_01,"sentry"))
{
return 1;
}
}
}
return 0;
}
//Function Number: 12
func_748F()
{
var_00 = common_scripts\utility::func_A715("death","out_of_water");
if(isdefined(self))
{
self.var_A01A = undefined;
self.var_3236 = undefined;
func_7320(0);
self.var_A019 = undefined;
self.var_542A = undefined;
self.var_A95F = undefined;
self.watermovespeedscale = 1;
maps\mp\gametypes\_weapons::func_A13B();
}
}
//Function Number: 13
inwaterwakevfxcleanup()
{
self endon("inWaterWakeVFXCleanup");
if(function_01EF(self))
{
maps/mp/agents/_agent_utility::deleteentonagentdeath(self.fxentwake);
maps/mp/agents/_agent_utility::deleteentonagentdeath(self.fxentstationary);
}
if(!isdefined(self.waterwakevfxdeletefunc))
{
self.waterwakevfxdeletefunc = ::waterwakevfxdelete;
}
common_scripts\utility::func_A70C(self,"death",level,"game_ended",self,"disconnect",self,"out_of_water",self.fxentwake,"entitydeleted",self.fxentstationary,"entitydeleted");
thread waterwakevfxdelete();
}
//Function Number: 14
waterwakevfxdelete()
{
self notify("inWaterWakeVFXCleanup");
self notify("out_of_water");
if(!isdefined(self))
{
return;
}
if(isdefined(self.fxentwake))
{
self.fxentwake delete();
}
if(isdefined(self.fxentstationary))
{
self.fxentstationary delete();
}
if(isdefined(self.waterwakevfxdeletefunc))
{
self.waterwakevfxdeletefunc = undefined;
}
}
//Function Number: 15
func_5526(param_00)
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("out_of_water");
var_01 = distance(self getvelocity(),(0,0,0));
if(var_01 > 90)
{
var_02 = (self.var_116[0],self.var_116[1],func_471B(param_00));
playfx(level.var_611["water_splash_enter"],var_02,anglestoforward((0,self.var_1D[1],0) + (270,180,0)));
}
var_03 = spawnlinkedfx(common_scripts\utility::func_44F5("water_wake"),self,"tag_origin");
var_04 = spawnlinkedfx(common_scripts\utility::func_44F5("water_wake_stationary"),self,"tag_origin");
self.fxentwake = var_03;
self.fxentstationary = var_04;
thread inwaterwakevfxcleanup();
triggerfx(var_03);
triggerfx(var_04);
var_05 = 0;
var_06 = 4000;
for(;;)
{
var_07 = self getvelocity();
var_01 = distance(var_07,(0,0,0));
if(var_01 > 0)
{
wait(max(1 - var_01 / 120,0.1));
}
else
{
wait(0.3);
}
var_08 = func_471B(param_00) - self.var_116[2];
if(self getstance() == "prone" && var_08 > 24 == 0)
{
if(var_01 > 5)
{
triggerfx(var_03);
continue;
}
triggerfx(var_04);
}
}
}
//Function Number: 16
func_73F2()
{
level endon("game_ended");
self endon("death");
self endon("stopped_using_remote");
self endon("disconnect");
self endon("above_water");
self endon("out_of_water");
thread func_6B74();
wait(13);
for(;;)
{
if(!isdefined(self.var_5738) || self.var_5738 == 0)
{
self dodamage(20,self.var_116 + anglestoforward(self.var_1D) * 5,undefined,undefined,"MOD_TRIGGER_HURT");
}
wait(1);
}
}
//Function Number: 17
func_6B74()
{
level endon("game_ended");
self endon("disconnect");
self endon("above_water");
self endon("out_of_water");
self waittill("death");
func_7320(0);
self.var_A019 = undefined;
self.var_542A = undefined;
self method_86C7();
self.var_57F2 = undefined;
self.var_5849 = undefined;
self.var_A95F = undefined;
self.var_A01A = undefined;
self.var_3997 = 0;
self.var_3999 = 0;
}
//Function Number: 18
func_53CA(param_00,param_01)
{
if(!isdefined(param_01))
{
param_01 = 32;
}
if(level func_471B(param_00) - self.var_116[2] <= param_01)
{
return 1;
}
return 0;
}
//Function Number: 19
func_565D(param_00,param_01)
{
if(func_4620() + param_01 >= level func_471B(param_00))
{
return 1;
}
return 0;
}
//Function Number: 20
func_4620()
{
var_00 = self geteye();
self.var_3997 = var_00[2] - self.var_3999;
self.var_3999 = var_00[2];
return var_00[2];
}
//Function Number: 21
func_471B(param_00)
{
var_01 = common_scripts\utility::func_46B5(param_00.var_1A2,"targetname");
var_02 = var_01.var_116[2];
return var_02;
}
//Function Number: 22
func_5728()
{
return isdefined(self.var_5378) && self.var_5378;
}
//Function Number: 23
func_73DE(param_00)
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
self endon("end_swimming");
if(!isdefined(param_00))
{
param_00 = "shallow";
}
if((param_00 == "shallow" && self hasweapon(level.var_8ACF)) || (param_00 == "deep" && self hasweapon(level.var_2B7C)) || isdefined(level.var_2F6B))
{
self.var_3236 = 1;
}
switch(param_00)
{
case "deep":
func_476D(level.var_2B7C);
if(!func_5728())
{
self switchtoweaponimmediate(level.var_2B7C);
}
self.var_A01A = "deep";
break;
case "shallow":
func_476D(level.var_8ACF);
if(!func_5728())
{
self switchtoweaponimmediate(level.var_8ACF);
}
self.var_A01A = "shallow";
break;
case "none":
self.var_A01A = "none";
break;
default:
func_476D(level.var_8ACF);
if(!func_5728())
{
self switchtoweaponimmediate(level.var_8ACF);
}
self.var_A01A = "shallow";
break;
}
self method_82CD();
common_scripts\utility::func_603();
common_scripts\utility::func_600();
}
//Function Number: 24
func_73D6()
{
level endon("game_ended");
self endon("death");
self endon("disconnect");
if(isdefined(self.var_A01A))
{
var_00 = self.var_A01A;
self notify("end_swimming");
self method_82CE();
common_scripts\utility::func_617();
common_scripts\utility::func_614();
if(isdefined(self.var_5738) && self.var_5738 == 1 && isdefined(self.var_4C26))
{
self method_812B(1);
if(!isdefined(self.var_4C26.var_4B77) || self.var_4C26.var_4B77 == 0)
{
self method_8324();
}
if(!isdefined(self.var_4C26.var_4B8E) || self.var_4C26.var_4B8E == 0)
{
self method_84CB();
}
else
{
self method_84CC();
}
}
else if(isdefined(self.var_A95F))
{
if(!func_5728())
{
maps\mp\_utility::func_955C(self.var_A95F);
}
}
switch(var_00)
{
case "deep":
func_95CF(level.var_2B7C);
break;
case "shallow":
func_95CF(level.var_8ACF);
break;
case "none":
break;
default:
func_95CF(level.var_8ACF);
break;
}
self.var_A01A = undefined;
self.var_3236 = undefined;
}
}
//Function Number: 25
func_476D(param_00)
{
if(!isdefined(self.var_3236) || !self.var_3236)
{
self giveweapon(param_00);
}
}
//Function Number: 26
func_95CF(param_00)
{
if(!isdefined(self.var_3236) || !self.var_3236)
{
self takeweapon(param_00);
}
}
//Function Number: 27
func_8720(param_00)
{
level.var_8ACF = param_00;
}
//Function Number: 28
func_865D(param_00)
{
level.var_2B7C = param_00;
}
//Function Number: 29
func_5840(param_00)
{
switch(param_00)
{
case "combatknife_zm":
case "iw5_underwater_mp":
case "shovel_zm":
case "boxing_gloves_mp":
case "baseballbat_mp":
case "trenchknife_mp":
case "combatknife_mp":
case "icepick_mp":
case "shovel_mp":
case "none":
return 1;
default:
return 0;
}
}