Files
IL-GSC/IW/PC/ALL/scripts/sp/_autosave.gsc
2023-10-27 03:49:01 -04:00

1103 lines
16 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: scripts\sp\_autosave.gsc
* Game: Call of Duty: Infinite Warfare
* Platform: PC
* Function Count: 33
* Decompile Time: 1525 ms
* Timestamp: 10/27/2023 12:23:53 AM
*******************************************************************/
//Function Number: 1
main()
{
if(!scripts\common\utility::func_16F3("autosave",::main))
{
return;
}
level.var_2668 = spawnstruct();
level.var_2668.var_A943 = 0;
scripts\common\utility::flag_init("game_saving");
scripts\common\utility::flag_init("can_save");
scripts\common\utility::flag_set("can_save");
scripts\common\utility::flag_init("disable_autosaves");
scripts\common\utility::flag_init("ImmediateLevelStartSave");
if(!isdefined(level.var_2668.var_6A42))
{
level.var_2668.var_6A42 = [];
}
level.var_2668.var_DAC8 = ::func_2674;
func_2A6D();
}
//Function Number: 2
func_3D54()
{
wait(2);
level.player endon("death");
setdvarifuninitialized("scr_savetest","0");
for(;;)
{
if(getdvarint("scr_savetest") > 0)
{
setdvar("scr_savetest","0");
scripts\sp\_utility::func_2669("cheat_save");
wait(1);
}
wait(0.05);
}
}
//Function Number: 3
func_7E6B()
{
return &"AUTOSAVE_AUTOSAVE";
}
//Function Number: 4
func_7FD9(param_00)
{
if(param_00 == 0)
{
var_01 = &"AUTOSAVE_GAME";
}
else
{
var_01 = &"AUTOSAVE_NOGAME";
}
return var_01;
}
//Function Number: 5
func_2A6D()
{
thread immediatelevelstartsave();
thread func_2A6E();
}
//Function Number: 6
immediatelevelstartsave()
{
var_00 = scripts\sp\_utility::func_7F6E(level.script);
if(!isdefined(var_00))
{
var_00 = 0;
}
var_00 = var_00 * 0.05;
var_01 = scripts\sp\_utility::func_7E2C(level.script);
if(!isdefined(var_01))
{
var_01 = 0;
}
var_01 = var_01 * 0.001;
wait(var_01 + var_00 + 0.15);
var_02 = 0;
if(isdefined(level.var_4A3A))
{
var_02 = 1;
}
else if(level.var_B8D0)
{
var_02 = 1;
}
else if(scripts\common\utility::flag("game_saving"))
{
var_02 = 1;
}
if(var_02)
{
scripts\common\utility::flag_set("ImmediateLevelStartSave");
return;
}
scripts\common\utility::flag_set("game_saving");
if(!isalive(level.player))
{
return;
}
var_03 = "levelshots / autosave / autosave_" + level.script + "immediate_start";
function_01A0("immediatelevelstart",&"AUTOSAVE_LEVELSTART",var_03,1);
setdvar("ui_grenade_death","0");
level.player method_8591(0);
scripts\common\utility::func_6E2A("game_saving");
scripts\common\utility::flag_set("ImmediateLevelStartSave");
}
//Function Number: 7
func_2A6E()
{
if(isdefined(level.var_2A6F))
{
wait(level.var_2A6F);
}
else
{
wait(2);
}
if(isdefined(level.var_4A3A))
{
return;
}
if(level.var_B8D0)
{
return;
}
if(scripts\common\utility::flag("game_saving"))
{
return;
}
if(!scripts\common\utility::flag("ImmediateLevelStartSave"))
{
scripts\common\utility::flag_wait("ImmediateLevelStartSave");
wait(1);
}
scripts\common\utility::flag_set("game_saving");
var_00 = "levelshots / autosave / autosave_" + level.script + "start";
var_01 = waitfortransientloading("beginningOfLevelSave_thread()");
if(!isdefined(var_01))
{
scripts\common\utility::func_6E2A("game_saving");
return;
}
if(!isalive(level.player))
{
return;
}
function_01A0("levelstart",&"AUTOSAVE_LEVELSTART",var_00,1);
setdvar("ui_grenade_death","0");
level.player method_8591(0);
scripts\common\utility::func_6E2A("game_saving");
}
//Function Number: 8
func_12726(param_00)
{
param_00 waittill("trigger");
scripts\sp\_utility::func_2677();
}
//Function Number: 9
func_12727(param_00)
{
param_00 waittill("trigger");
scripts\sp\_utility::func_2679();
}
//Function Number: 10
func_12724(param_00)
{
if(!isdefined(param_00.var_ED0D))
{
param_00.var_ED0D = 0;
}
func_268E(param_00);
}
//Function Number: 11
func_268E(param_00)
{
var_01 = func_7FD9(param_00.var_ED0D);
if(!isdefined(var_01))
{
return;
}
wait(1);
param_00 waittill("trigger");
var_02 = param_00.var_ED0D;
var_03 = "levelshots / autosave / autosave_" + level.script + var_02;
func_12891(var_02,var_01,var_03);
if(isdefined(param_00))
{
param_00 delete();
}
}
//Function Number: 12
func_268B(param_00)
{
if(lib_0B79::func_9C4B())
{
return;
}
wait(1);
param_00 waittill("trigger");
if(!isdefined(param_00))
{
return;
}
var_01 = param_00.var_ED0E;
param_00 delete();
if(isdefined(level.var_4C7F))
{
if(![[ level.var_4C7F ]]())
{
return;
}
}
scripts\sp\_utility::func_2669(var_01);
}
//Function Number: 13
func_268D(param_00,param_01,param_02)
{
}
//Function Number: 14
func_1190(param_00,param_01)
{
if(!specialistsavecheck())
{
return 0;
}
if(isdefined(level.var_B8D0) && level.var_B8D0)
{
return 0;
}
if(!isdefined(param_01) || !param_01)
{
level notify("trying_new_autosave");
}
if(scripts\common\utility::flag("game_saving"))
{
return 0;
}
scripts\common\utility::flag_set("game_saving");
var_02 = waitfortransientloading("_autosave_game_now()");
if(!isdefined(var_02))
{
scripts\common\utility::func_6E2A("game_saving");
return 0;
}
for(var_03 = 0;var_03 < level.players.size;var_03++)
{
var_04 = level.players[var_03];
if(!isalive(var_04))
{
return 0;
}
}
var_05 = "save_now";
var_06 = func_7E6B();
if(getdvarint("reloading") != 0)
{
return 0;
}
if(isdefined(level.var_BF95))
{
return 0;
}
if(isdefined(param_00))
{
var_07 = function_01A1(var_05,var_06,"$default",1);
}
else
{
var_07 = function_01A1(var_06,var_07);
}
wait(0.05);
if(function_0110())
{
level.var_2668.var_A943 = gettime();
scripts\common\utility::func_6E2A("game_saving");
return 0;
}
if(function_0319())
{
scripts\common\utility::func_6E2A("game_saving");
return 0;
}
if(var_07 < 0)
{
scripts\common\utility::func_6E2A("game_saving");
return 0;
}
if(!func_12878(var_07))
{
scripts\common\utility::func_6E2A("game_saving");
return 0;
}
wait(2);
scripts\common\utility::func_6E2A("game_saving");
if(function_0319())
{
scripts\common\utility::func_6E2A("game_saving");
return 0;
}
if(!function_004A(var_07))
{
return 0;
}
if(func_12878(var_07))
{
function_0049(var_07);
level.player method_8591(0);
setdvar("ui_grenade_death","0");
}
return 1;
}
//Function Number: 15
func_2671(param_00)
{
param_00 waittill("trigger");
scripts\sp\_utility::func_266F();
}
//Function Number: 16
func_12878(param_00)
{
if(!function_0111())
{
return 0;
}
if(!level.player func_2688(param_00))
{
return 0;
}
if(scripts\common\utility::func_D11B())
{
if(!level.var_D127 func_2689(param_00))
{
return 0;
}
}
if(!scripts\common\utility::flag("can_save"))
{
return 0;
}
return 1;
}
//Function Number: 17
func_12891(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(scripts\common\utility::flag("disable_autosaves"))
{
return 0;
}
if(!specialistsavecheck())
{
return 0;
}
level endon("nextmission");
level.player endon("death");
if(scripts\common\utility::flag("game_saving"))
{
return 0;
}
level notify("trying_new_autosave");
if(isdefined(level.var_BF95))
{
return 0;
}
var_06 = 1.25;
var_07 = 1.25;
if(isdefined(param_03) && param_03 < var_06 + var_07)
{
}
if(!isdefined(param_05))
{
param_05 = 0;
}
if(!isdefined(param_02))
{
param_02 = "$default";
}
if(!isdefined(param_04))
{
param_04 = 0;
}
scripts\common\utility::flag_set("game_saving");
var_08 = func_7E6B();
var_09 = gettime();
var_0A = 0;
for(;;)
{
if(func_2685(undefined,param_04))
{
waitfortransientloading("tryAutoSave()");
if(getdvarint("reloading") != 0)
{
break;
}
if(isdefined(level.var_BF95))
{
break;
}
var_0A++;
if(scripts\sp\_utility::func_93A6())
{
if(var_0A == 3)
{
break;
}
if(!specialistinjackal())
{
if(!specialistitemcheck())
{
break;
}
}
}
var_0B = function_01A1(param_00,var_08,param_02,param_05);
if(var_0B < 0)
{
break;
}
wait(0.05);
if(function_0110())
{
level.var_2668.var_A943 = gettime();
break;
}
if(function_0319())
{
continue;
}
wait(var_06);
if(function_0319())
{
continue;
}
if(func_6A43(var_0B))
{
continue;
}
if(!func_2685(undefined,param_04,var_0B))
{
continue;
}
wait(var_07);
if(function_0319())
{
continue;
}
if(!func_2686(var_0B))
{
continue;
}
if(isdefined(param_03))
{
if(gettime() > var_09 + param_03 * 1000)
{
break;
}
}
if(!scripts\common\utility::flag("can_save"))
{
break;
}
if(!function_004A(var_0B))
{
scripts\common\utility::func_6E2A("game_saving");
return 0;
}
function_0049(var_0B);
level.player method_8591(0);
level.var_A9E7 = gettime();
setdvar("ui_grenade_death","0");
break;
}
wait(0.25);
}
scripts\common\utility::func_6E2A("game_saving");
return 1;
}
//Function Number: 18
waitfortransientloading(param_00)
{
level endon("trying_new_autosave");
var_01 = 0;
if(function_02B5())
{
while(!ispreloadzonescomplete())
{
if(gettime() > var_01)
{
var_01 = gettime() + 2000;
}
wait(0.05);
}
}
while(function_0319())
{
if(gettime() > var_01)
{
var_01 = gettime() + 2000;
}
wait(0.05);
}
return 1;
}
//Function Number: 19
func_6A43(param_00)
{
foreach(var_02 in level.var_2668.var_6A42)
{
if(![[ var_02["func"] ]]())
{
return 1;
}
}
return 0;
}
//Function Number: 20
func_2686(param_00)
{
return func_2685(0,0,param_00);
}
//Function Number: 21
func_2685(param_00,param_01,param_02)
{
if(isdefined(level.var_266C))
{
return [[ level.var_266C ]]();
}
if(isdefined(level.var_1093A) && ![[ level.var_1093A ]]())
{
return 0;
}
if(level.var_B8D0)
{
return 0;
}
if(!isdefined(param_00))
{
param_00 = level.var_5A5E;
}
if(!isdefined(param_01))
{
param_01 = 0;
}
if(param_01)
{
if(![[ level.var_83D2["_autosave_stealthcheck"] ]]())
{
return 0;
}
}
if(scripts\common\utility::func_D11B())
{
if(!level.var_D127 func_2689(param_02))
{
return 0;
}
}
else
{
if(!level.player func_2688(param_02))
{
return 0;
}
if(param_00 && !level.player func_2684(param_02))
{
return 0;
}
}
if(level.var_2681)
{
if(!func_268F(param_00,param_02))
{
return 0;
}
}
if(!level.player func_268C(param_00,param_02))
{
return 0;
}
if(isdefined(level.var_EB75) && !level.var_EB75)
{
return 0;
}
if(isdefined(level.var_3901) && !level.var_3901)
{
return 0;
}
if(!function_0111())
{
return 0;
}
return 1;
}
//Function Number: 22
func_268C(param_00,param_01)
{
if(self ismeleeing() && param_00)
{
return 0;
}
if(self method_81C6() && param_00)
{
return 0;
}
if(self method_819F() && param_00)
{
return 0;
}
if(isdefined(self.var_FC69) && self.var_FC69)
{
return 0;
}
if(!self islinked() && !scripts\common\utility::func_D11B() && !scripts\sp\_utility::func_93AC() && !self isonground())
{
if(bullettracepassed(level.player.origin + (0,0,5),level.player.origin + (0,0,-200),0,self))
{
return 0;
}
}
if(self method_8446())
{
return 0;
}
if(scripts\common\utility::func_9DFB())
{
return 0;
}
if(isdefined(self.var_883A) && self.var_883A == 1)
{
return 0;
}
return 1;
}
//Function Number: 23
func_2684(param_00)
{
var_01 = self getweaponslistprimaries();
if(var_01.size == 0)
{
return 1;
}
var_02 = 1;
for(var_03 = 0;var_03 < var_01.size;var_03++)
{
if(function_0249(var_01[var_03]) > 0)
{
var_02 = 0;
}
var_04 = self getfractionmaxammo(var_01[var_03]);
if(var_04 > 0.1)
{
return 1;
}
}
if(var_02)
{
return 1;
}
return 0;
}
//Function Number: 24
func_2688(param_00)
{
var_01 = self.health / self.maxhealth;
if(var_01 < 0.5)
{
return 0;
}
if(scripts\sp\_utility::func_65DB("player_has_red_flashing_overlay"))
{
return 0;
}
return 1;
}
//Function Number: 25
func_2689(param_00)
{
if(isdefined(self.var_5F6F))
{
return 0;
}
var_01 = scripts\sp\_utility::func_7B9D();
if(var_01 < 0.5)
{
return 0;
}
if(isdefined(self.var_93D2) && self.var_93D2.size > 0)
{
return 0;
}
if(scripts\sp\_utility::func_A1A8("enemy_lockon"))
{
return 0;
}
if(func_268A())
{
return 0;
}
return 1;
}
//Function Number: 26
func_268A(param_00)
{
var_01 = self.var_2AC;
var_02 = rotatevectorinverted(var_01,self.angles);
param_00 = var_02[0];
if(param_00 < 100)
{
return 0;
}
var_03 = param_00 * 10;
var_03 = clamp(var_03,0,10000);
var_04 = self.origin + anglestoforward(self.angles) * var_03;
var_05 = scripts\common\trace::func_3A09(self.origin,var_04,200,400,self.angles,self);
if(var_05["fraction"] < 1)
{
return 1;
}
return 0;
}
//Function Number: 27
func_268F(param_00,param_01)
{
var_02 = function_0075("bad_guys","all");
foreach(var_04 in var_02)
{
if(!isdefined(var_04.var_10C))
{
continue;
}
if(!isplayer(var_04.var_10C))
{
continue;
}
if(isdefined(var_04.var_B55B) && isdefined(var_04.var_B55B.target) && isplayer(var_04.var_B55B.target))
{
return 0;
}
var_05 = [[ level.var_2668.var_DAC8 ]](var_04);
if(var_05 == "return_even_if_low_accuracy")
{
return 0;
}
if(var_04.var_12F < 0.021 && var_04.var_12F > -1)
{
continue;
}
if(var_05 == "return")
{
return 0;
}
if(var_05 == "none")
{
continue;
}
var_06 = undefined;
if(var_04.var_1491.var_A9ED > gettime() - 500)
{
var_06 = var_04 func_7E19();
if(param_00 || var_06)
{
return 0;
}
}
if(!isdefined(var_06))
{
var_06 = var_04 func_7E19();
}
if(isdefined(var_04.var_2303.var_11AC7) && var_04 lib_0A1A::func_231B(var_04.var_2303.var_11AC7,"aim") && var_06)
{
return 0;
}
}
if(scripts\sp\_utility::func_D121())
{
return 0;
}
if(isdefined(level.var_CAF7))
{
foreach(var_09 in level.var_CAF7)
{
if(!isdefined(var_09.var_C528))
{
continue;
}
if(var_09.var_111AD == "antigrav")
{
continue;
}
if(distancesquared(var_09.origin,level.player.origin) < 122500)
{
return 0;
}
}
}
var_0B = getentarray("scriptable","code_classname");
foreach(var_0D in var_0B)
{
if(!isdefined(var_0D.var_ED) || var_0D.var_ED != "vehicle")
{
continue;
}
if(!isdefined(var_0D.var_C528))
{
continue;
}
if(distancesquared(var_0D.origin,level.player.origin) < 160000)
{
return 0;
}
}
return 1;
}
//Function Number: 28
func_7E19()
{
return scripts\anim\utility_common::func_3907(0) && self method_8061(0);
}
//Function Number: 29
func_6489()
{
if(self.var_12F >= 0.021)
{
return 1;
}
foreach(var_01 in level.players)
{
if(distance(self.origin,var_01.origin) < 500)
{
return 1;
}
}
return 0;
}
//Function Number: 30
func_2674(param_00)
{
foreach(var_02 in level.players)
{
var_03 = distancesquared(param_00.origin,var_02.origin);
if(var_03 < -25536)
{
return "return_even_if_low_accuracy";
}
else if(var_03 < 129600)
{
return "return";
}
else if(var_03 < 1000000)
{
return "threat_exists";
}
}
return "none";
}
//Function Number: 31
specialistsavecheck()
{
if(!scripts\sp\_utility::func_93A6())
{
return 1;
}
if(specialistinjackal())
{
return 1;
}
if(lib_0A2F::func_9CBB(level.var_116CC))
{
return 1;
}
if(isdefined(level.player.var_D430) && level.player.var_D430)
{
return 0;
}
if(!specialistitemcheck())
{
return 0;
}
return 1;
}
//Function Number: 32
specialistinjackal()
{
if(lib_0B78::func_2C97())
{
return 1;
}
if(scripts\common\utility::func_D11B())
{
return 1;
}
return 0;
}
//Function Number: 33
specialistitemcheck()
{
var_00 = 0;
var_01 = 0;
var_00 = level.player getweaponammostock("nanoshot");
var_01 = level.player getweaponammostock("helmet");
if(var_00 == 0)
{
if(level.player.var_110BD == "nanoshot")
{
var_00 = level.player.var_110BE;
}
}
if(var_00 < 1)
{
return 0;
}
if(var_01 == 0)
{
if(level.player.var_110BA == "helmet")
{
var_01 = level.player.var_110BB;
}
}
if(var_01 < 1)
{
return 0;
}
return 1;
}