IL-GSC/AW/PC/maps/_load.gsc
InfinityLoader b2389dbcb9 Full AW Dump
2024-04-22 02:38:24 -04:00

2606 lines
58 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _load.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 77
* Decompile Time: 1181 ms
* Timestamp: 4/22/2024 2:21:46 AM
*******************************************************************/
//Function Number: 1
main()
{
if(!isdefined(level.func))
{
level.func = [];
}
level.func["setsaveddvar"] = ::setsaveddvar;
level.func["useanimtree"] = ::useanimtree;
level.func["setanim"] = ::setanim;
level.func["setanimknob"] = ::setanimknob;
level.func["setflaggedanimknob"] = ::setflaggedanimknob;
level.func["setflaggedanimknobrestart"] = ::setflaggedanimknobrestart;
level.func["setanimlimited"] = ::setanimlimited;
level.func["setanimtime"] = ::setanimtime;
level.func["getanimtime"] = ::getanimtime;
level.func["getanimlength"] = ::getanimlength;
level.func["clearanim"] = ::clearanim;
level.func["kill"] = ::kill;
level.func["magicgrenade"] = ::magicgrenade;
set_early_level();
maps\_utility::set_console_status();
level.global_callbacks = [];
level.global_callbacks["_autosave_stealthcheck"] = ::global_empty_callback;
level.global_callbacks["_patrol_endon_spotted_flag"] = ::global_empty_callback;
level.global_callbacks["_spawner_stealth_default"] = ::global_empty_callback;
level.global_callbacks["_idle_call_idle_func"] = ::global_empty_callback;
common_scripts\utility::flag_init("_cloaked_stealth_enabled");
if(!isdefined(level.visionthermaldefault))
{
level.visionthermaldefault = "default";
}
visionsetthermal(level.visionthermaldefault);
visionsetpain("near_death");
level.func["damagefeedback"] = ::maps\_damagefeedback::updatedamagefeedback;
common_scripts\utility::array_thread(getentarray("script_model_pickup_claymore","classname"),::claymore_pickup_think_global);
common_scripts\utility::array_thread(getentarray("ammo_cache","targetname"),::ammo_cache_think_global);
maps\_utility::array_delete(getentarray("trigger_multiple_softlanding","classname"));
if(getdvar("debug") == "")
{
setdvar("debug","0");
}
if(getdvar("fallback") == "")
{
setdvar("fallback","0");
}
if(getdvar("angles") == "")
{
setdvar("angles","0");
}
if(getdvar("noai") == "")
{
setdvar("noai","off");
}
if(getdvar("scr_RequiredMapAspectratio") == "")
{
setdvar("scr_RequiredMapAspectratio","1");
}
setdvar("ac130_player_num",-1);
setdvar("ui_remotemissile_playernum",0);
setdvar("ui_pmc_won",0);
setdvar("ui_actionSlot_1_forceActive","off");
setdvar("ui_actionSlot_2_forceActive","off");
setdvar("ui_actionSlot_3_forceActive","off");
setdvar("ui_actionSlot_4_forceActive","off");
setdvar("ui_dog_grenade",0);
setdvar("ui_securing","");
setdvar("ui_securing_progress",0);
setdvar("hud_showObjectives",1);
setdvar("hud_showIntel",1);
setdvar("minimap_sp",0);
setdvar("minimap_full_sp",0);
if(!isdefined(level.notetracks))
{
anim.notetracks = [];
animscripts\notetracks::registernotetracks();
}
common_scripts\utility::flag_init("introscreen_complete");
maps\_utility::add_start("no_game",::start_nogame);
add_no_game_starts();
level._loadstarted = 1;
level.first_frame = 1;
level.level_specific_dof = 0;
thread remove_level_first_frame();
level.wait_any_func_array = [];
level.run_func_after_wait_array = [];
level.run_call_after_wait_array = [];
level.run_noself_call_after_wait_array = [];
level.do_wait_endons_array = [];
level.abort_wait_any_func_array = [];
if(!isdefined(level.script))
{
level.script = tolower(getdvar("mapname"));
}
precacheshader("black");
precacheshader("white");
precacheshader("fullscreen_lit_bloodsplat_01");
if(level.currentgen)
{
precacheshader("vfx_blood_screen_overlay");
}
level.ai_number = 0;
if(!isdefined(level.flag))
{
common_scripts\utility::init_flags();
}
else
{
var_00 = getarraykeys(level.flag);
common_scripts\utility::array_levelthread(var_00,::check_flag_for_stat_tracking);
}
init_level_players();
if(issplitscreen())
{
setsaveddvar("cg_fovScale","0.75");
}
else
{
setsaveddvar("cg_fovScale","1");
}
level.radiation_totalpercent = 0;
common_scripts\utility::flag_init("missionfailed");
common_scripts\utility::flag_init("auto_adjust_initialized");
common_scripts\utility::flag_init("_radiation_poisoning");
common_scripts\utility::flag_init("gameskill_selected");
common_scripts\utility::flag_init("battlechatter_on_thread_waiting");
common_scripts\utility::flag_init("start_is_set");
thread maps\_gameskill::aa_init_stats();
thread player_death_detection();
level.default_run_speed = 190;
setsaveddvar("g_speed",level.default_run_speed);
if(maps\_utility::is_specialop())
{
setsaveddvar("sv_saveOnStartMap",0);
}
else if(isdefined(level.credits_active))
{
setsaveddvar("sv_saveOnStartMap",0);
}
else
{
setsaveddvar("sv_saveOnStartMap",1);
}
common_scripts\utility::create_lock("mg42_drones");
common_scripts\utility::create_lock("mg42_drones_target_trace");
level.dronestruct = [];
foreach(var_03, var_02 in level.struct)
{
if(!isdefined(var_02.targetname))
{
continue;
}
if(var_02.targetname == "delete_on_load")
{
level.struct[var_03] = undefined;
}
}
common_scripts\utility::struct_class_init();
common_scripts\utility::flag_init("player_flashed");
level.connectpathsfunction = ::connectpaths;
level.disconnectpathsfunction = ::disconnectpaths;
level.badplace_cylinder_func = ::badplace_cylinder;
level.badplace_delete_func = ::badplace_delete;
level.isaifunc = ::isai;
level.createclientfontstring_func = ::maps\_hud_util::createclientfontstring;
level.hudsetpoint_func = ::maps\_hud_util::setpoint;
level.makeentitysentient_func = ::makeentitysentient;
level.freeentitysentient_func = ::freeentitysentient;
level.laseron_func = ::laseron;
level.laseroff_func = ::laseroff;
level.stat_track_kill_func = ::maps\_player_stats::register_kill;
level.stat_track_damage_func = ::maps\_player_stats::register_shot_hit;
level.dopickyautosavechecks = 1;
level.autosave_threat_check_enabled = 1;
level.getnodefunction = ::getnode;
level.getnodearrayfunction = ::getnodearray;
level.addaieventlistener_func = ::addaieventlistener;
if(!isdefined(level._notetrackfx))
{
level._notetrackfx = [];
}
if(!animscripts\battlechatter::use_old_battlechatter())
{
maps\_dds::dds_init();
maps\_dds::dds_enable();
}
foreach(var_05 in level.players)
{
var_05.maxhealth = level.player.health;
var_05.shellshocked = 0;
var_05.inwater = 0;
var_05 thread watchweaponchange();
var_05 thread maps\_dds::player_init();
}
level.last_mission_sound_time = -5000;
level.hero_list = [];
thread precache_script_models();
for(var_07 = 0;var_07 < level.players.size;var_07++)
{
var_05 = level.players[var_07];
var_05 thread maps\_utility::flashmonitor();
var_05 thread maps\_utility::shock_ondeath();
var_05 thread maps\_utility::never_saw_it_coming();
}
precachemodel("fx");
precachemodel("tag_origin");
precachemodel("tag_ik_target");
precacheshellshock("default");
precacheshellshock("flashbang");
precacheshellshock("dog_bite");
precacheshellshock("dog_bite_hit_shield");
precacherumble("damage_heavy");
precacherumble("damage_light");
precacherumble("grenade_rumble");
precacherumble("artillery_rumble");
precacherumble("slide_start");
precacherumble("slide_loop");
precachestring(&"GAME_GET_TO_COVER");
precachestring(&"GAME_LAST_STAND_GET_BACK_UP");
precachestring(&"SCRIPT_GRENADE_DEATH");
precachestring(&"SCRIPT_GRENADE_SUICIDE_LINE1");
precachestring(&"SCRIPT_GRENADE_SUICIDE_LINE2");
precachestring(&"SCRIPT_EXPLODING_VEHICLE_DEATH");
precachestring(&"SCRIPT_EXPLODING_DESTRUCTIBLE_DEATH");
precachestring(&"SCRIPT_EXPLODING_BARREL_DEATH");
precacheshader("hud_grenadeicon");
precacheshader("hud_grenadepointer");
precacheshader("hud_burningcaricon");
precacheshader("death_juggernaut");
precacheshader("hud_destructibledeathicon");
precacheshader("hud_burningbarrelicon");
precacheshader("waypoint_ammo");
precachestring(&"init_hud");
precachestring(&"close_hud");
precachelaser("nvg_laser");
level._effect["deathfx_bloodpool_generic"] = loadfx("vfx/weaponimpact/deathfx_bloodpool_generic");
animscripts\pain::initpainfx();
animscripts\melee::melee_init();
level.createfx_enabled = getdvar("createfx") != "";
slowmo_system_init();
maps\_mgturret::main();
common_scripts\_exploder::setupexploders();
maps\_art::main();
maps\_gameskill::setskill();
maps\_anim::init();
thread common_scripts\_fx::initfx();
if(level.createfx_enabled)
{
}
maps\_global_fx_code::init();
maps\_global_fx::main();
default_footsteps();
maps\_detonategrenades::init();
maps\_lighting::light_init();
maps\_lights::init2();
maps\_names::setup_names();
if(isdefined(level.handle_starts_endons))
{
thread [[ level.handle_starts_endons ]]();
}
else
{
thread handle_starts();
}
if(getdvar("functional_test_starts") == "1")
{
thread functional_tester_load_next_start();
}
if(!isdefined(level.trigger_flags))
{
common_scripts\utility::init_trigger_flags();
}
level.killspawn_groups = [];
soundscripts\_audio::aud_init();
soundscripts\_snd::snd_init();
maps\_trigger::init_script_triggers();
setsaveddvar("ufoHitsTriggers","0");
maps\_hud::init();
do_no_game_start();
if(getdvar("g_connectpaths") == "2")
{
level waittill("eternity");
}
maps\_autosave::main();
thread maps\_sp_matchdata::init();
if(!isdefined(level.animsounds))
{
thread init_animsounds();
}
maps\_anim::init();
if(isdefined(level.audio_stringtable_mapname))
{
soundscripts\_audio::set_stringtable_mapname(level.audio_stringtable_mapname);
}
anim.usefacialanims = 0;
if(!isdefined(level.missionfailed))
{
level.missionfailed = 0;
}
if(!maps\_utility::is_specialop())
{
maps\_loadout::init_loadout();
setsaveddvar("ui_campaign",level.campaign);
}
common_scripts\_destructible::init();
thread maps\_vehicle::init_vehicles();
setobjectivetextcolors();
common_scripts\_dynamic_world::init();
thread maps\_autosave::beginningoflevelsave();
thread maps\_introscreen::main();
thread maps\_endmission::main();
thread maps\_damagefeedback::init();
maps\_friendlyfire::main();
common_scripts\utility::array_levelthread(getentarray("badplace","targetname"),::badplace_think);
common_scripts\utility::array_levelthread(getentarray("delete_on_load","targetname"),::maps\_utility::deleteent);
common_scripts\utility::array_thread(getnodearray("traverse","targetname"),::traversethink);
common_scripts\utility::array_thread(getentarray("piano_key","targetname"),::pianothink);
common_scripts\utility::array_thread(getentarray("piano_damage","targetname"),::pianodamagethink);
common_scripts\utility::array_thread(getentarray("water","targetname"),::waterthink);
common_scripts\utility::array_thread(getentarray("kill_all_players","targetname"),::kill_all_players_trigger);
common_scripts\utility::flag_init("allow_ammo_pickups");
common_scripts\utility::flag_set("allow_ammo_pickups");
common_scripts\utility::array_thread(getentarray("ammo_pickup_grenade_launcher","targetname"),::ammo_pickup,"grenade_launcher");
common_scripts\utility::array_thread(getentarray("ammo_pickup_rpg","targetname"),::ammo_pickup,"rpg");
common_scripts\utility::array_thread(getentarray("ammo_pickup_c4","targetname"),::ammo_pickup,"c4");
common_scripts\utility::array_thread(getentarray("ammo_pickup_claymore","targetname"),::ammo_pickup,"claymore");
common_scripts\utility::array_thread(getentarray("ammo_pickup_556","targetname"),::ammo_pickup,"556");
common_scripts\utility::array_thread(getentarray("ammo_pickup_762","targetname"),::ammo_pickup,"762");
common_scripts\utility::array_thread(getentarray("ammo_pickup_45","targetname"),::ammo_pickup,"45");
common_scripts\utility::array_thread(getentarray("ammo_pickup_pistol","targetname"),::ammo_pickup,"pistol");
thread maps\_intelligence::main();
thread maps\_gameskill::playerhealthregeninit();
for(var_07 = 0;var_07 < level.players.size;var_07++)
{
var_05 = level.players[var_07];
if(!getdvarint("disable_player_regen") == 1)
{
var_05 thread maps\_gameskill::playerhealthregen();
}
var_05 thread playerdamagerumble();
}
thread maps\_player_death::main();
thread massnodeinitfunctions();
common_scripts\utility::flag_init("spawning_friendlies");
common_scripts\utility::flag_init("friendly_wave_spawn_enabled");
common_scripts\utility::flag_clear("spawning_friendlies");
level.friendly_spawner["rifleguy"] = getentarray("rifle_spawner","script_noteworthy");
level.friendly_spawner["smgguy"] = getentarray("smg_spawner","script_noteworthy");
level.spawn_funcs = [];
level.spawn_funcs["allies"] = [];
level.spawn_funcs["axis"] = [];
level.spawn_funcs["team3"] = [];
level.spawn_funcs["neutral"] = [];
thread maps\_spawner::goalvolumes();
thread maps\_spawner::friendlychains();
thread maps\_spawner::friendlychain_ondeath();
common_scripts\utility::array_thread(getentarray("friendly_spawn","targetname"),::maps\_spawner::friendlyspawnwave);
common_scripts\utility::array_thread(getentarray("flood_and_secure","targetname"),::maps\_spawner::flood_and_secure);
common_scripts\utility::array_thread(getentarray("window_poster","targetname"),::window_destroy);
if(!isdefined(level.trigger_hint_string))
{
level.trigger_hint_string = [];
level.trigger_hint_func = [];
}
level.shared_portable_turrets = [];
level.spawn_groups = [];
maps\_spawner::main();
common_scripts\utility::array_thread(getentarray("background_block","targetname"),::background_block);
thread load_friendlies();
thread maps\_animatedmodels::main();
thread weapon_ammo();
foreach(var_0A, var_09 in level.missionsettings.levels)
{
if(var_09.name == level.script)
{
setsaveddvar("ui_currentLevelIndex",var_0A);
break;
}
}
if(level.script == level.missionsettings.levels[0].name && !level.player getlocalplayerprofiledata("hasEverPlayed_SP"))
{
maps\_utility::delaythread(0.1,::update_gamer_profile);
}
var_0B = level.player getplayersetting("gameskill");
var_0C = level.difficultytype[int(var_0B)];
setspmatchdata("start_difficulty",var_0C);
setspmatchdata("final_difficulty",var_0C);
level thread maps\_utility::start_monitor_escape_artist();
level notify("load_finished");
run_post_function();
level.player thread maps\_utility::logbreadcrumbdatasp();
}
//Function Number: 2
update_gamer_profile()
{
level.player setlocalplayerprofiledata("hasEverPlayed_SP",1);
updategamerprofile();
}
//Function Number: 3
run_post_function()
{
if(isdefined(level.post_load_funcs))
{
foreach(var_01 in level.post_load_funcs)
{
[[ var_01 ]]();
}
}
}
//Function Number: 4
set_early_level()
{
level.early_level = [];
level.early_level["seoul"] = 1;
level.early_level["recovery"] = 1;
level.early_level["lagos"] = 1;
level.early_level["fusion"] = 1;
}
//Function Number: 5
weapon_ammo()
{
var_00 = getentarray();
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
if(isdefined(var_00[var_01].classname) && getsubstr(var_00[var_01].classname,0,7) == "weapon_")
{
var_02 = var_00[var_01];
var_03 = getsubstr(var_02.classname,7);
if(isdefined(var_02.script_ammo_max))
{
var_04 = weaponclipsize(var_03);
var_05 = weaponmaxammo(var_03);
var_02 itemweaponsetammo(var_04,var_05,var_04,0);
var_06 = weaponaltweaponname(var_03);
if(var_06 != "none")
{
var_07 = weaponclipsize(var_06);
var_08 = weaponmaxammo(var_06);
var_02 itemweaponsetammo(var_07,var_08,var_07,1);
}
continue;
}
var_09 = 0;
var_04 = undefined;
var_0A = undefined;
var_0B = 0;
var_0C = undefined;
var_0D = undefined;
if(isdefined(var_02.script_ammo_clip))
{
var_04 = var_02.script_ammo_clip;
var_09 = 1;
}
if(isdefined(var_02.script_ammo_extra))
{
var_0A = var_02.script_ammo_extra;
var_09 = 1;
}
if(isdefined(var_02.script_ammo_alt_clip))
{
var_0C = var_02.script_ammo_alt_clip;
var_0B = 1;
}
if(isdefined(var_02.script_ammo_alt_extra))
{
var_0D = var_02.script_ammo_alt_extra;
var_0B = 1;
}
if(var_09)
{
if(!isdefined(var_04))
{
}
if(!isdefined(var_0A))
{
}
var_02 itemweaponsetammo(var_04,var_0A);
}
if(var_0B)
{
if(!isdefined(var_0C))
{
}
if(!isdefined(var_0D))
{
}
var_02 itemweaponsetammo(var_0C,var_0D,0,1);
}
}
}
}
//Function Number: 6
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(!param_00 maps\_utility::script_delay())
{
wait(4);
}
level thread exploder_load(param_00);
return;
}
if(!param_00 maps\_utility::script_delay() && isdefined(param_00.script_exploder_delay))
{
wait(param_00.script_exploder_delay);
}
common_scripts\_exploder::exploder(param_00.script_exploder);
level notify("killexplodertridgers" + param_00.script_exploder);
}
//Function Number: 7
badplace_think(param_00)
{
if(!isdefined(level.badplaces))
{
level.badplaces = 0;
}
level.badplaces++;
badplace_cylinder("badplace" + level.badplaces,-1,param_00.origin,param_00.radius,1024);
}
//Function Number: 8
playerdamagerumble()
{
for(;;)
{
self waittill("damage",var_00);
if(isdefined(self.specialdamage))
{
continue;
}
self playrumbleonentity("damage_heavy");
}
}
//Function Number: 9
map_is_early_in_the_game()
{
if(isdefined(level.early_level[level.script]))
{
return level.early_level[level.script];
}
return 0;
}
//Function Number: 10
traversethink()
{
var_00 = getent(self.target,"targetname");
self.traverse_height = var_00.origin[2];
self.traverse_height_delta = var_00.origin[2] - self.origin[2];
var_00 delete();
}
//Function Number: 11
pianodamagethink()
{
var_00 = self getorigin();
var_01[0] = "large";
var_01[1] = "small";
for(;;)
{
self waittill("trigger");
thread common_scripts\utility::play_sound_in_space("bullet_" + common_scripts\utility::random(var_01) + "_piano",var_00);
}
}
//Function Number: 12
pianothink()
{
var_00 = self getorigin();
var_01 = "piano_" + self.script_noteworthy;
self sethintstring(&"SCRIPT_PLATFORM_PIANO");
for(;;)
{
self waittill("trigger");
thread common_scripts\utility::play_sound_in_space(var_01,var_00);
}
}
//Function Number: 13
waterthink()
{
var_00 = getent(self.target,"targetname");
var_01 = var_00.origin[2];
var_00 = undefined;
level.depth_allow_prone = 8;
level.depth_allow_crouch = 33;
level.depth_allow_stand = 50;
var_02 = 0;
for(;;)
{
wait(0.05);
if(!level.player.inwater && var_02)
{
var_02 = 0;
level.player allowprone(1);
level.player allowcrouch(1);
level.player allowstand(1);
thread waterthink_rampspeed(level.default_run_speed);
}
self waittill("trigger");
level.player.inwater = 1;
var_02 = 1;
while(level.player istouching(self))
{
level.player.inwater = 1;
var_03 = level.player getorigin();
var_04 = var_03[2] - var_01;
if(var_04 > 0)
{
break;
}
var_05 = int(level.default_run_speed - abs(var_04 * 5));
if(var_05 < 50)
{
var_05 = 50;
}
thread waterthink_rampspeed(var_05);
if(abs(var_04) > level.depth_allow_crouch)
{
level.player allowcrouch(0);
}
else
{
level.player allowcrouch(1);
}
if(abs(var_04) > level.depth_allow_prone)
{
level.player allowprone(0);
continue;
}
level.player allowprone(1);
wait(0.5);
}
level.player.inwater = 0;
wait(0.05);
}
}
//Function Number: 14
waterthink_rampspeed(param_00)
{
level notify("ramping_water_movement_speed");
level endon("ramping_water_movement_speed");
var_01 = 0.5;
var_02 = int(var_01 * 20);
var_03 = getdvarint("g_speed");
var_04 = 0;
if(param_00 < var_03)
{
var_04 = 1;
}
var_05 = int(abs(var_03 - param_00));
var_06 = int(var_05 / var_02);
for(var_07 = 0;var_07 < var_02;var_07++)
{
var_03 = getdvarint("g_speed");
if(var_04)
{
setsaveddvar("g_speed",var_03 - var_06);
}
else
{
setsaveddvar("g_speed",var_03 + var_06);
}
wait(0.05);
}
setsaveddvar("g_speed",param_00);
}
//Function Number: 15
massnodeinitfunctions()
{
var_00 = getallnodes();
thread maps\_mgturret::auto_mgturretlink(var_00);
thread maps\_mgturret::saw_mgturretlink(var_00);
thread maps\_colors::init_color_grouping(var_00);
}
//Function Number: 16
indicate_start(param_00)
{
var_01 = newhudelem();
var_01.alignx = "left";
var_01.aligny = "middle";
var_01.x = 10;
var_01.y = 400;
var_01 settext(param_00);
var_01.alpha = 0;
var_01.fontscale = 3;
wait(1);
var_01 fadeovertime(1);
var_01.alpha = 1;
wait(5);
var_01 fadeovertime(1);
var_01.alpha = 0;
wait(1);
var_01 destroy();
}
//Function Number: 17
handle_starts()
{
level.start_struct = spawnstruct();
common_scripts\utility::create_dvar("start","");
if(getdvar("scr_generateClipModels") != "" && getdvar("scr_generateClipModels") != "0")
{
return;
}
if(!isdefined(level.start_functions))
{
level.start_functions = [];
}
var_00 = tolower(getdvar("start"));
var_01 = get_start_dvars();
if(isdefined(level.start_point))
{
var_00 = level.start_point;
}
var_02 = 0;
for(var_03 = 0;var_03 < var_01.size;var_03++)
{
if(var_00 == var_01[var_03])
{
var_02 = var_03;
level.start_point = var_01[var_03];
break;
}
}
if(isdefined(level.default_start_override) && !isdefined(level.start_point))
{
foreach(var_06, var_05 in var_01)
{
if(level.default_start_override == var_05)
{
var_02 = var_06;
level.start_point = var_05;
break;
}
}
}
if(!isdefined(level.start_point))
{
if(isdefined(level.default_start))
{
level.start_point = "default";
}
else if(maps\_utility::level_has_start_points())
{
level.start_point = level.start_functions[0]["name"];
}
else
{
level.start_point = "default";
}
}
var_07 = getdvarint("sv_loadingsavegame",0);
if(var_07 != 0)
{
var_08 = getdvar("sv_savegametransients","");
if(var_08 == "")
{
loadstartpointtransient("");
}
else
{
var_09 = strtok(var_08,",");
loadstartpointtransient(var_09);
}
}
else if(level.start_point != "default")
{
var_0A = level.start_arrays[level.start_point];
if(isdefined(var_0A["transients_to_load"]))
{
var_0B = var_0A["transients_to_load"];
if(var_0B.size > 0)
{
loadstartpointtransient(var_0B);
}
else
{
loadstartpointtransient("");
}
}
}
waittillframeend;
common_scripts\utility::flag_set("start_is_set");
thread start_menu();
if(level.start_point == "default")
{
if(isdefined(level.default_start))
{
level thread [[ level.default_start ]]();
}
}
else
{
var_0A = level.start_arrays[level.start_point];
thread [[ var_0A["start_func"] ]]();
}
if(maps\_utility::is_default_start())
{
var_0C = get_string_for_starts(var_01);
setdvar("start",var_0C);
}
waittillframeend;
if(var_07 != 0)
{
wait(0.1);
}
var_0D = [];
if(!maps\_utility::is_default_start() && level.start_point != "no_game")
{
var_0E = gettime();
for(var_03 = 0;var_03 < level.start_functions.size;var_03++)
{
var_0A = level.start_functions[var_03];
if(var_0A["name"] == level.start_point)
{
break;
}
if(!isdefined(var_0A["catchup_function"]))
{
continue;
}
[[ var_0A["catchup_function"] ]]();
}
}
for(var_03 = var_02;var_03 < level.start_functions.size;var_03++)
{
var_0A = level.start_functions[var_03];
if(!isdefined(var_0A["logic_func"]))
{
continue;
}
if(already_ran_function(var_0A["logic_func"],var_0D))
{
continue;
}
level.start_struct [[ var_0A["logic_func"] ]]();
var_0D[var_0D.size] = var_0A["logic_func"];
}
}
//Function Number: 18
already_ran_function(param_00,param_01)
{
foreach(var_03 in param_01)
{
if(var_03 == param_00)
{
return 1;
}
}
return 0;
}
//Function Number: 19
get_string_for_starts(param_00)
{
var_01 = " ** No starts have been set up for this map with maps_utility::add_start().";
if(param_00.size)
{
var_01 = " ** ";
for(var_02 = param_00.size - 1;var_02 >= 0;var_02--)
{
var_01 = var_01 + param_00[var_02] + " ";
}
}
setdvar("start",var_01);
return var_01;
}
//Function Number: 20
create_start(param_00,param_01)
{
var_02 = 1;
var_03 = (0.9,0.9,0.9);
if(param_01 != -1)
{
var_04 = 5;
if(param_01 != var_04)
{
var_02 = 1 - abs(var_04 - param_01) / var_04;
}
else
{
var_03 = (1,1,0);
}
}
if(var_02 == 0)
{
var_02 = 0.05;
}
var_05 = newhudelem();
var_05.alignx = "left";
var_05.aligny = "middle";
var_05.x = 80;
var_05.y = 80 + param_01 * 18;
var_05 settext(param_00);
var_05.alpha = 0;
var_05.foreground = 1;
var_05.color = var_03;
var_05.fontscale = 1.75;
var_05 fadeovertime(0.5);
var_05.alpha = var_02;
return var_05;
}
//Function Number: 21
start_menu()
{
}
//Function Number: 22
start_nogame()
{
common_scripts\utility::array_call(getaiarray(),::delete);
common_scripts\utility::array_call(getspawnerarray(),::delete);
}
//Function Number: 23
get_start_dvars()
{
var_00 = [];
for(var_01 = 0;var_01 < level.start_functions.size;var_01++)
{
var_00[var_00.size] = level.start_functions[var_01]["name"];
}
return var_00;
}
//Function Number: 24
display_starts()
{
level.display_starts_pressed = 1;
if(level.start_functions.size <= 0)
{
return;
}
var_00 = get_start_dvars();
var_00[var_00.size] = "default";
var_00[var_00.size] = "cancel";
var_01 = start_list_menu();
var_02 = create_start("Selected Start:",-1);
var_02.color = (1,1,1);
var_03 = [];
for(var_04 = 0;var_04 < var_00.size;var_04++)
{
var_05 = var_00[var_04];
var_06 = "[" + var_00[var_04] + "]";
if(var_05 != "cancel" && var_05 != "default")
{
if(isdefined(level.start_arrays[var_05]["start_loc_string"]))
{
var_06 = var_06 + " -> ";
var_06 = var_06 + level.start_arrays[var_05]["start_loc_string"];
}
}
var_03[var_03.size] = var_06;
}
var_07 = var_00.size - 1;
var_08 = 0;
var_09 = 0;
var_0A = 0;
while(var_07 > 0)
{
if(var_00[var_07] == level.start_point)
{
var_0A = 1;
break;
}
var_07--;
}
if(!var_0A)
{
var_07 = var_00.size - 1;
}
start_list_settext(var_01,var_03,var_07);
var_0B = var_07;
for(;;)
{
if(!level.player buttonpressed("F10"))
{
level.display_starts_pressed = 0;
}
if(var_0B != var_07)
{
start_list_settext(var_01,var_03,var_07);
var_0B = var_07;
}
if(!var_08)
{
if(level.player buttonpressed("UPARROW") || level.player buttonpressed("DPAD_UP") || level.player buttonpressed("APAD_UP"))
{
var_08 = 1;
var_07--;
}
}
else if(!level.player buttonpressed("UPARROW") && !level.player buttonpressed("DPAD_UP") && !level.player buttonpressed("APAD_UP"))
{
var_08 = 0;
}
if(!var_09)
{
if(level.player buttonpressed("DOWNARROW") || level.player buttonpressed("DPAD_DOWN") || level.player buttonpressed("APAD_DOWN"))
{
var_09 = 1;
var_07++;
}
}
else if(!level.player buttonpressed("DOWNARROW") && !level.player buttonpressed("DPAD_DOWN") && !level.player buttonpressed("APAD_DOWN"))
{
var_09 = 0;
}
if(var_07 < 0)
{
var_07 = var_00.size - 1;
}
if(var_07 >= var_00.size)
{
var_07 = 0;
}
if(level.player buttonpressed("BUTTON_B"))
{
start_display_cleanup(var_01,var_02);
break;
}
if(level.player buttonpressed("kp_enter") || level.player buttonpressed("BUTTON_A") || level.player buttonpressed("enter"))
{
if(var_00[var_07] == "cancel")
{
start_display_cleanup(var_01,var_02);
break;
}
setdvar("start",var_00[var_07]);
}
wait(0.05);
}
}
//Function Number: 25
start_list_menu()
{
var_00 = [];
for(var_01 = 0;var_01 < 11;var_01++)
{
var_02 = create_start("",var_01);
var_00[var_00.size] = var_02;
}
return var_00;
}
//Function Number: 26
start_list_settext(param_00,param_01,param_02)
{
for(var_03 = 0;var_03 < param_00.size;var_03++)
{
var_04 = var_03 + param_02 - 5;
if(isdefined(param_01[var_04]))
{
var_05 = param_01[var_04];
}
else
{
var_05 = "";
}
param_00[var_03] settext(var_05);
}
}
//Function Number: 27
start_display_cleanup(param_00,param_01)
{
param_01 destroy();
for(var_02 = 0;var_02 < param_00.size;var_02++)
{
param_00[var_02] destroy();
}
}
//Function Number: 28
background_block()
{
self.origin = self.origin - self.script_bg_offset;
}
//Function Number: 29
set_player_viewhand_model(param_00)
{
level.player_viewhand_model = param_00;
precachemodel(level.player_viewhand_model);
}
//Function Number: 30
setobjectivetextcolors()
{
var_00 = "1.0 1.0 1.0";
var_01 = "0.9 0.9 0.9";
var_02 = "0.85 0.85 0.85";
setsaveddvar("con_typewriterColorBase",var_00);
}
//Function Number: 31
ammo_pickup(param_00)
{
var_01 = [];
if(param_00 == "grenade_launcher")
{
var_01[var_01.size] = "alt_m4_grenadier";
var_01[var_01.size] = "alt_m4m203_acog";
var_01[var_01.size] = "alt_m4m203_acog_payback";
var_01[var_01.size] = "alt_m4m203_eotech";
var_01[var_01.size] = "alt_m4m203_motion_tracker";
var_01[var_01.size] = "alt_m4m203_reflex";
var_01[var_01.size] = "alt_m4m203_reflex_arctic";
var_01[var_01.size] = "alt_m4m203_silencer";
var_01[var_01.size] = "alt_m4m203_silencer_reflex";
var_01[var_01.size] = "alt_m16_grenadier";
var_01[var_01.size] = "alt_ak47_grenadier";
var_01[var_01.size] = "alt_ak47_desert_grenadier";
var_01[var_01.size] = "alt_ak47_digital_grenadier";
var_01[var_01.size] = "alt_ak47_fall_grenadier";
var_01[var_01.size] = "alt_ak47_woodland_grenadier";
}
else if(param_00 == "rpg")
{
var_01[var_01.size] = "rpg";
var_01[var_01.size] = "rpg_player";
var_01[var_01.size] = "rpg_straight";
}
else if(param_00 == "c4")
{
var_01[var_01.size] = "c4";
}
else if(param_00 == "claymore")
{
var_01[var_01.size] = "claymore";
}
else if(param_00 == "556")
{
var_01[var_01.size] = "m4_grenadier";
var_01[var_01.size] = "m4_grunt";
var_01[var_01.size] = "m4_sd_cloth";
var_01[var_01.size] = "m4_shotgun";
var_01[var_01.size] = "m4_silencer";
var_01[var_01.size] = "m4_silencer_acog";
var_01[var_01.size] = "m4m203_acog";
var_01[var_01.size] = "m4m203_acog_payback";
var_01[var_01.size] = "m4m203_eotech";
var_01[var_01.size] = "m4m203_motion_tracker";
var_01[var_01.size] = "m4m203_reflex";
var_01[var_01.size] = "m4m203_reflex_arctic";
var_01[var_01.size] = "m4m203_silencer";
var_01[var_01.size] = "m4m203_silencer_reflex";
var_01[var_01.size] = "m4m203_silencer";
}
else if(param_00 == "762")
{
var_01[var_01.size] = "ak47";
var_01[var_01.size] = "ak47_acog";
var_01[var_01.size] = "ak47_eotech";
var_01[var_01.size] = "ak47_grenadier";
var_01[var_01.size] = "ak47_reflex";
var_01[var_01.size] = "ak47_shotgun";
var_01[var_01.size] = "ak47_silencer";
var_01[var_01.size] = "ak47_thermal";
var_01[var_01.size] = "ak47_desert";
var_01[var_01.size] = "ak47_desert_acog";
var_01[var_01.size] = "ak47_desert_eotech";
var_01[var_01.size] = "ak47_desert_grenadier";
var_01[var_01.size] = "ak47_desert_reflex";
var_01[var_01.size] = "ak47_digital";
var_01[var_01.size] = "ak47_digital_acog";
var_01[var_01.size] = "ak47_digital_eotech";
var_01[var_01.size] = "ak47_digital_grenadier";
var_01[var_01.size] = "ak47_digital_reflex";
var_01[var_01.size] = "ak47_fall";
var_01[var_01.size] = "ak47_fall_acog";
var_01[var_01.size] = "ak47_fall_eotech";
var_01[var_01.size] = "ak47_fall_grenadier";
var_01[var_01.size] = "ak47_fall_reflex";
var_01[var_01.size] = "ak47_woodland";
var_01[var_01.size] = "ak47_woodland_acog";
var_01[var_01.size] = "ak47_woodland_eotech";
var_01[var_01.size] = "ak47_woodland_grenadier";
var_01[var_01.size] = "ak47_woodland_reflex";
}
else if(param_00 == "45")
{
var_01[var_01.size] = "ump45";
var_01[var_01.size] = "ump45_acog";
var_01[var_01.size] = "ump45_eotech";
var_01[var_01.size] = "ump45_reflex";
var_01[var_01.size] = "ump45_silencer";
var_01[var_01.size] = "ump45_arctic";
var_01[var_01.size] = "ump45_arctic_acog";
var_01[var_01.size] = "ump45_arctic_eotech";
var_01[var_01.size] = "ump45_arctic_reflex";
var_01[var_01.size] = "ump45_digital";
var_01[var_01.size] = "ump45_digital_acog";
var_01[var_01.size] = "ump45_digital_eotech";
var_01[var_01.size] = "ump45_digital_reflex";
}
else if(param_00 == "pistol")
{
var_01[var_01.size] = "beretta";
var_01[var_01.size] = "beretta393";
var_01[var_01.size] = "usp";
var_01[var_01.size] = "usp_scripted";
var_01[var_01.size] = "usp_silencer";
var_01[var_01.size] = "glock";
}
var_02 = spawn("trigger_radius",self.origin,0,25,32);
for(;;)
{
common_scripts\utility::flag_wait("allow_ammo_pickups");
var_02 waittill("trigger",var_03);
if(!common_scripts\utility::flag("allow_ammo_pickups"))
{
continue;
}
if(!isdefined(var_03))
{
continue;
}
if(!isplayer(var_03))
{
continue;
}
var_04 = undefined;
var_05 = undefined;
var_06 = var_03 getweaponslistall();
for(var_07 = 0;var_07 < var_06.size;var_07++)
{
for(var_08 = 0;var_08 < var_01.size;var_08++)
{
if(var_06[var_07] == var_01[var_08])
{
var_04 = var_06[var_07];
}
}
}
if(!isdefined(var_04) && param_00 == "claymore")
{
var_05 = 1;
var_04 = "claymore";
break;
}
if(!isdefined(var_04) && param_00 == "c4")
{
var_05 = 1;
var_04 = "c4";
break;
}
if(!isdefined(var_04))
{
continue;
}
if(var_03 getfractionmaxammo(var_04) >= 1)
{
continue;
}
break;
}
if(isdefined(var_05))
{
var_03 giveweapon(var_04);
}
else
{
var_09 = 1;
if(param_00 == "556" || param_00 == "762")
{
var_09 = 30;
}
else if(param_00 == "45")
{
var_09 = 25;
}
else if(param_00 == "pistol")
{
var_09 = 15;
}
var_03 setweaponammostock(var_04,var_03 setweaponammostock(var_04) + var_09);
}
var_03 playlocalsound("grenade_pickup");
var_02 delete();
if(isdefined(self))
{
self delete();
}
}
//Function Number: 32
remove_level_first_frame()
{
wait(0.05);
level.first_frame = -1;
}
//Function Number: 33
load_friendlies()
{
if(isdefined(game["total characters"]))
{
var_00 = game["total characters"];
}
else
{
return;
}
var_01 = getaiarray("allies");
var_02 = var_01.size;
var_03 = 0;
var_04 = getspawnerteamarray("allies");
var_05 = var_04.size;
var_06 = 0;
for(;;)
{
if((var_02 <= 0 && var_05 <= 0) || var_00 <= 0)
{
return;
}
if(var_02 > 0)
{
if(isdefined(var_01[var_03].script_friendname))
{
var_02--;
var_03++;
continue;
}
var_01[var_03] codescripts\character::new();
var_01[var_03] thread codescripts\character::load(game["character" + var_00 - 1]);
var_02--;
var_03++;
var_00--;
continue;
}
if(var_05 > 0)
{
if(isdefined(var_04[var_06].script_friendname))
{
var_05--;
var_06++;
continue;
}
var_07 = game["character" + var_00 - 1];
maps\_utility::precache(var_07["model"]);
maps\_utility::precache(var_07["model"]);
var_04[var_06] thread maps\_utility::spawn_setcharacter(game["character" + var_00 - 1]);
var_05--;
var_06++;
var_00--;
continue;
}
}
}
//Function Number: 34
check_flag_for_stat_tracking(param_00)
{
if(!common_scripts\utility::issuffix(param_00,"aa_"))
{
return;
}
[[ level.sp_stat_tracking_func ]](param_00);
}
//Function Number: 35
precache_script_models()
{
waittillframeend;
if(!isdefined(level.scr_model))
{
return;
}
var_00 = getarraykeys(level.scr_model);
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
if(isarray(level.scr_model[var_00[var_01]]))
{
for(var_02 = 0;var_02 < level.scr_model[var_00[var_01]].size;var_02++)
{
precachemodel(level.scr_model[var_00[var_01]][var_02]);
}
continue;
}
precachemodel(level.scr_model[var_00[var_01]]);
}
}
//Function Number: 36
player_death_detection()
{
setdvar("player_died_recently","0");
thread player_died_recently_degrades();
level maps\_utility::add_wait(::common_scripts\utility::flag_wait,"missionfailed");
level.player maps\_utility::add_wait(::maps\_utility::waittill_msg,"death");
maps\_utility::do_wait_any();
var_00 = [];
var_00[0] = 70;
var_00[1] = 30;
var_00[2] = 0;
var_00[3] = 0;
setdvar("player_died_recently",var_00[level.gameskill]);
}
//Function Number: 37
player_died_recently_degrades()
{
for(;;)
{
var_00 = getdvarint("player_died_recently",0);
if(var_00 > 0)
{
var_00 = var_00 - 5;
setdvar("player_died_recently",var_00);
}
wait(5);
}
}
//Function Number: 38
recon_player()
{
self notify("new_recon_player");
self endon("new_recon_player");
self waittill("death",var_00,var_01,var_02);
if(!isdefined(var_02))
{
var_02 = "script_kill";
}
var_03 = 0;
var_04 = "none";
var_05 = (0,0,0);
if(isdefined(var_00))
{
var_04 = var_00.classname;
var_05 = var_00.origin;
var_06 = vectornormalize(var_05 - self.origin);
var_07 = anglestoforward(self getplayerangles());
var_03 = vectordot(var_06,var_07);
}
reconspatialevent(self.origin,"script_player_death: playerid %s, enemy %s, enemyposition %v, enemydotproduct %f, cause %s, weapon %s",self.unique_id,var_04,var_05,var_03,var_01,var_02);
if(isdefined(var_00))
{
reconspatialevent(var_00.origin,"script_player_killer: playerid %s, enemy %s, playerposition %v, enemydotproduct %f, cause %s, weapon %s",self.unique_id,var_04,self.origin,var_03,var_01,var_02);
}
}
//Function Number: 39
recon_player_downed()
{
self notify("new_player_downed_recon");
self endon("new_player_downed_recon");
self endon("death");
for(;;)
{
self waittill("player_downed");
var_00 = getlevelticks() * 0.05;
var_01 = var_00;
if(isdefined(self.last_downed_time))
{
var_00 = var_01 - self.last_downed_time;
}
self.last_downed_time = var_01;
reconspatialevent(self.origin,"script_player_downed: playerid %s, leveltime %d, deltatime %d",self.unique_id,var_01,var_00);
}
}
//Function Number: 40
init_level_players()
{
level.players = getentarray("player","classname");
for(var_00 = 0;var_00 < level.players.size;var_00++)
{
level.players[var_00].unique_id = "player" + var_00;
}
level.player = level.players[0];
if(level.players.size > 1)
{
level.player2 = level.players[1];
}
level notify("level.players initialized");
foreach(var_02 in level.players)
{
var_02 thread recon_player();
if(maps\_utility::is_specialop())
{
var_02 thread recon_player_downed();
}
}
}
//Function Number: 41
kill_all_players_trigger()
{
self waittill("trigger",var_00);
var_00 maps\_utility::kill_wrapper();
}
//Function Number: 42
watchweaponchange()
{
if(!isdefined(level.friendly_thermal_reflector_effect))
{
level.friendly_thermal_reflector_effect = loadfx("vfx/unique/thermal_beacon_inverted");
}
self endon("death");
var_00 = self getcurrentweapon();
if(weap_has_thermal(var_00))
{
thread thermal_tracker();
}
else if(weap_is_em1(var_00))
{
thread em1_heat_meter();
}
else if(weap_is_hbra3(var_00))
{
thread hbra3_signature();
}
else if(player_has_printing_himar())
{
thread himar_print_ammo();
}
for(;;)
{
self waittill("weapon_change",var_01);
if(weap_has_thermal(var_01))
{
thread thermal_tracker();
}
else
{
self notify("acogThermalTracker");
}
if(weap_is_em1(var_01))
{
thread em1_heat_meter();
}
if(weap_is_hbra3(var_01))
{
thread hbra3_signature();
}
if(player_has_printing_himar())
{
thread himar_print_ammo();
}
}
}
//Function Number: 43
em1_heat_meter_off()
{
common_scripts\utility::waittill_any("death","weapon_change","em1_heat_meter");
setomnvar("ui_em1",0);
setomnvar("ui_em1_heat",0);
}
//Function Number: 44
em1_heat_meter()
{
self endon("death");
self endon("weapon_change");
self notify("em1_heat_meter");
self endon("em1_heat_meter");
thread em1_heat_meter_off();
setomnvar("ui_em1",1);
setomnvar("ui_em1_heat",0);
for(;;)
{
var_00 = self getcurrentweapon();
var_01 = self getweaponheatlevel(var_00);
setomnvar("ui_em1_heat",var_01);
wait(0.05);
}
}
//Function Number: 45
weap_is_em1(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(weaponclass(param_00) == "beam" && issubstr(param_00,"_em1"))
{
return 1;
}
return 0;
}
//Function Number: 46
hbra3_signature_off()
{
common_scripts\utility::waittill_any("death","weapon_change","hbra3_signature");
setomnvar("ui_hbra3",0);
}
//Function Number: 47
hbra3_signature()
{
self endon("death");
self endon("weapon_change");
self notify("hbra3_signature");
self endon("hbra3_signature");
thread hbra3_signature_off();
setomnvar("ui_hbra3",1);
}
//Function Number: 48
weap_is_hbra3(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(weaponclass(param_00) == "rifle" && issubstr(param_00,"_hbra3"))
{
return 1;
}
return 0;
}
//Function Number: 49
himar_print_ammo()
{
self endon("death");
self endon("himar_print_ammo_stop");
if(isdefined(self.himar_printer_equipped) && self.himar_printer_equipped)
{
return;
}
self.himar_printer_equipped = 1;
self notify("himar_print_ammo");
self endon("himar_print_ammo");
setomnvar("ui_himar",1);
setomnvar("ui_himar_printing",0);
var_00 = undefined;
foreach(var_02 in self getweaponslistprimaries())
{
if(issubstr(var_02,"himar"))
{
var_00 = var_02;
break;
}
}
if(!isdefined(var_00))
{
return;
}
for(;;)
{
var_04 = self getfractionmaxammo(var_00);
setomnvar("ui_himar_printing",var_04);
if(var_04 < 1)
{
thread himar_printing_ammo_full_check(var_00);
common_scripts\utility::waittill_notify_or_timeout("himar_ammo_full",30);
self notify("stop_himar_printing_ammo_full_check");
var_05 = self setweaponammostock(var_00);
var_06 = weaponmaxammo(var_00);
var_07 = var_05 + weaponclipsize(var_00);
if(var_07 > var_06)
{
var_07 = var_06;
}
self setweaponammostock(var_00,var_07);
continue;
}
wait(1);
}
}
//Function Number: 50
himar_printing_ammo_full_check(param_00)
{
self endon("stop_himar_printing_ammo_full_check");
while(self getfractionmaxammo(param_00) != 1)
{
wait(0.5);
}
self notify("himar_ammo_full");
}
//Function Number: 51
weap_is_himar(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(weaponclass(param_00) == "rifle" && issubstr(param_00,"_himar"))
{
return 1;
}
return 0;
}
//Function Number: 52
player_has_printing_himar()
{
foreach(var_01 in self getweaponslistprimaries())
{
if(issubstr(var_01,"iw5_himar_sp") && issubstr(var_01,"himarscope"))
{
return 1;
}
}
self.himar_printer_equipped = undefined;
self notify("himar_print_ammo_stop");
setomnvar("ui_himar",0);
setomnvar("ui_himar_printing",0);
return 0;
}
//Function Number: 53
weap_has_thermal(param_00)
{
if(!isdefined(param_00))
{
return 0;
}
if(param_00 == "none")
{
return 0;
}
if(weaponhasthermalscope(param_00))
{
return 1;
}
return 0;
}
//Function Number: 54
thermal_tracker()
{
self endon("death");
self notify("acogThermalTracker");
self endon("acogThermalTracker");
var_00 = 0;
for(;;)
{
var_01 = var_00;
var_00 = self playerads();
if(turn_thermal_on(var_00,var_01))
{
thermal_effectson();
}
else if(turn_thermal_off(var_00,var_01))
{
thermal_effectsoff();
}
wait(0.05);
}
}
//Function Number: 55
turn_thermal_on(param_00,param_01)
{
if(param_00 <= param_01)
{
return 0;
}
if(param_00 <= 0.65)
{
return 0;
}
return !isdefined(self.is_in_thermal_vision);
}
//Function Number: 56
turn_thermal_off(param_00,param_01)
{
if(param_00 >= param_01)
{
return 0;
}
if(param_00 >= 0.8)
{
return 0;
}
return isdefined(self.is_in_thermal_vision);
}
//Function Number: 57
thermal_effectson()
{
self.is_in_thermal_vision = 1;
var_00 = getaiarray("allies");
foreach(var_02 in var_00)
{
if(isdefined(var_02.has_thermal_fx))
{
continue;
}
var_02.has_thermal_fx = 1;
var_02 thread loop_friendly_thermal_reflector_effect(self.unique_id);
}
if(maps\_utility::is_coop())
{
var_04 = maps\_utility::get_other_player(self);
if(!isdefined(var_04.has_thermal_fx))
{
var_04.has_thermal_fx = 1;
var_04 thread loop_friendly_thermal_reflector_effect(self.unique_id,self);
}
}
}
//Function Number: 58
thermal_effectsoff()
{
self.is_in_thermal_vision = undefined;
level notify("thermal_fx_off" + self.unique_id);
var_00 = getaiarray("allies");
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
var_00[var_01].has_thermal_fx = undefined;
}
if(maps\_utility::is_coop())
{
var_02 = maps\_utility::get_other_player(self);
var_02.has_thermal_fx = undefined;
}
}
//Function Number: 59
loop_friendly_thermal_reflector_effect(param_00,param_01)
{
if(isdefined(self.has_no_ir))
{
return;
}
level endon("thermal_fx_off" + param_00);
self endon("death");
for(;;)
{
if(isdefined(param_01))
{
playfxontagforclients(level.friendly_thermal_reflector_effect,self,"J_Spine4",param_01);
}
else
{
playfxontag(level.friendly_thermal_reflector_effect,self,"J_Spine4");
}
wait(0.2);
}
}
//Function Number: 60
claymore_pickup_think_global()
{
precacheitem("claymore");
self endon("deleted");
self setcursorhint("HINT_NOICON");
self sethintstring(&"WEAPON_CLAYMORE_PICKUP");
self makeusable();
var_00 = weaponmaxammo("claymore") + weaponclipsize("claymore");
if(isdefined(self.script_ammo_clip))
{
var_00 = self.script_ammo_clip;
}
while(var_00 > 0)
{
self waittill("trigger",var_01);
var_01 playsound("null");
var_02 = 0;
if(!var_01 hasweapon("claymore"))
{
var_01 giveweapon("claymore");
}
else
{
var_02 = var_01 getammocount("claymore");
}
if(isdefined(var_00) && var_00 > 0)
{
var_00 = var_02 + var_00;
var_03 = weaponmaxammo("claymore");
var_04 = weaponclipsize("claymore");
if(var_00 >= var_04)
{
var_00 = var_00 - var_04;
var_01 setweaponammoclip("claymore",var_04);
}
if(var_00 >= var_03)
{
var_00 = var_00 - var_03;
var_01 setweaponammostock("claymore",var_03);
}
else if(var_00 > 0)
{
var_01 setweaponammostock("claymore",var_00);
var_00 = 0;
}
}
else
{
var_01 givemaxammo("claymore");
}
var_05 = 4;
if(isdefined(var_01.remotemissile_actionslot) && var_01.remotemissile_actionslot == 4)
{
var_05 = 2;
}
var_01 setactionslot(var_05,"weapon","claymore");
var_01 switchtoweapon("claymore");
}
if(isdefined(self.target))
{
var_06 = getentarray(self.target,"targetname");
foreach(var_08 in var_06)
{
var_08 delete();
}
}
self makeunusable();
self delete();
}
//Function Number: 61
ammo_cache_think_global(param_00)
{
self endon("remove_ammo_cache");
self.use_trigger = spawn("script_model",self.origin + (0,0,28));
self.use_trigger setmodel("tag_origin");
self.use_trigger makeusable();
self.use_trigger setcursorhint("HINT_NOICON");
var_01 = &"WEAPON_CACHE_USE_HINT";
if(getdvar("consoleGame") == "true")
{
var_01 = &"WEAPON_CACHE_USE_CONTROLLER_HINT";
}
self.use_trigger sethintstring(var_01);
if(!isdefined(param_00) || isdefined(param_00) && param_00)
{
thread ammo_icon_think();
}
for(;;)
{
self.use_trigger waittill("trigger",var_02);
if(isdefined(var_02.dont_allow_ammo_cache))
{
continue;
}
var_02.using_ammo_cache = 1;
self notify("used_ammo_cache");
self.use_trigger makeunusable();
var_02 playsound("player_refill_all_ammo");
var_02 disableweapons();
wait(0.1);
var_03 = var_02 getweaponslistall();
foreach(var_05 in var_03)
{
if(var_05 == "claymore")
{
continue;
}
if(var_05 == "c4")
{
continue;
}
var_02 givemaxammo(var_05);
var_06 = weaponclipsize(var_05);
if(isdefined(var_06))
{
if(var_02 getweaponammoclip(var_05) < var_06)
{
var_02 setweaponammoclip(var_05,var_06);
}
}
}
wait(1.4);
var_02 enableweapons();
self.use_trigger makeusable();
var_02.using_ammo_cache = undefined;
}
}
//Function Number: 62
ammo_icon_think()
{
self endon("remove_ammo_cache");
var_00 = spawn("trigger_radius",self.origin,0,320,72);
var_01 = newhudelem();
var_01 setshader("waypoint_ammo",1,1);
var_01.alpha = 0;
var_01.color = (1,1,1);
var_01.x = self.origin[0];
var_01.y = self.origin[1];
var_01.z = self.origin[2] + 16;
var_01 setwaypoint(1,1);
self.ammo_icon = var_01;
self.ammo_icon_trig = var_00;
if(isdefined(self.icon_always_show) && self.icon_always_show)
{
ammo_icon_fade_in(var_01);
return;
}
wait(0.05);
for(;;)
{
var_00 waittill("trigger",var_02);
if(!isplayer(var_02))
{
continue;
}
while(var_02 istouching(var_00))
{
var_03 = 1;
var_04 = var_02 getcurrentweapon();
if(var_04 == "none")
{
var_03 = 0;
}
else if(var_02 getfractionmaxammo(var_04) > 0.9)
{
var_03 = 0;
}
if(maps\_utility::player_looking_at(self.origin,0.8,1) && var_03)
{
ammo_icon_fade_in(var_01);
continue;
}
ammo_icon_fade_out(var_01);
wait(0.25);
}
ammo_icon_fade_out(var_01);
}
}
//Function Number: 63
ammo_icon_fade_in(param_00)
{
if(param_00.alpha != 0)
{
return;
}
param_00 fadeovertime(0.2);
param_00.alpha = 0.3;
wait(0.2);
}
//Function Number: 64
ammo_icon_fade_out(param_00)
{
if(param_00.alpha == 0)
{
return;
}
param_00 fadeovertime(0.2);
param_00.alpha = 0;
wait(0.2);
}
//Function Number: 65
window_destroy()
{
var_00 = getglass(self.target);
if(!isdefined(var_00))
{
return;
}
if(isdefined(self.script_noteworthy))
{
if(self.script_noteworthy == "ondamage" || self.script_noteworthy == "ondamage_appear")
{
if(self.script_noteworthy == "ondamage_appear")
{
self hide();
}
level waittillmatch(var_00,"glass_damaged");
if(self.script_noteworthy == "ondamage_appear")
{
self show();
level waittillmatch(var_00,"glass_destroyed");
}
self delete();
return;
}
level waittillmatch(var_00,"glass_destroyed");
self delete();
return;
}
level waittillmatch(var_00,"glass_destroyed");
self delete();
}
//Function Number: 66
global_empty_callback(param_00,param_01,param_02,param_03,param_04)
{
}
//Function Number: 67
weapon_list_debug()
{
common_scripts\utility::create_dvar("weaponlist","0");
if(!getdvarint("weaponlist"))
{
return;
}
var_00 = getentarray();
var_01 = [];
foreach(var_03 in var_00)
{
if(!isdefined(var_03.code_classname))
{
continue;
}
if(issubstr(var_03.code_classname,"weapon"))
{
var_01[var_03.classname] = 1;
}
}
foreach(var_06 in var_01)
{
}
var_08 = getspawnerarray();
var_09 = [];
foreach(var_0B in var_08)
{
var_09[var_0B.code_classname] = 1;
}
foreach(var_06 in var_09)
{
}
}
//Function Number: 68
slowmo_system_init()
{
level.slowmo = spawnstruct();
slowmo_system_defaults();
notifyoncommand("_cheat_player_press_slowmo","+melee");
notifyoncommand("_cheat_player_press_slowmo","+melee_breath");
notifyoncommand("_cheat_player_press_slowmo","+melee_zoom");
}
//Function Number: 69
slowmo_system_defaults()
{
level.slowmo.lerp_time_in = 0;
level.slowmo.lerp_time_out = 0.25;
level.slowmo.speed_slow = 0.4;
level.slowmo.speed_norm = 1;
}
//Function Number: 70
add_no_game_starts()
{
var_00 = getentarray("script_origin_start_nogame","classname");
if(!var_00.size)
{
return;
}
foreach(var_02 in var_00)
{
if(!isdefined(var_02.script_startname))
{
continue;
}
maps\_utility::add_start("no_game_" + var_02.script_startname,::start_nogame);
}
}
//Function Number: 71
do_no_game_start()
{
if(!maps\_utility::is_no_game_start())
{
return;
}
setsaveddvar("ufoHitsTriggers","1");
level.stop_load = 1;
if(isdefined(level.custom_no_game_setupfunc))
{
level [[ level.custom_no_game_setupfunc ]]();
}
maps\_loadout::init_loadout();
soundscripts\_audio::aud_init();
soundscripts\_snd::snd_init();
maps\_global_fx::main();
do_no_game_start_teleport();
common_scripts\utility::array_call(getentarray("truckjunk","targetname"),::delete);
common_scripts\utility::array_call(getentarray("truckjunk","script_noteworthy"),::delete);
level waittill("eternity");
}
//Function Number: 72
do_no_game_start_teleport()
{
var_00 = getentarray("script_origin_start_nogame","classname");
if(!var_00.size)
{
return;
}
var_00 = sortbydistance(var_00,level.player.origin);
if(level.start_point == "no_game")
{
level.player maps\_utility::teleport_player(var_00[0]);
return;
}
var_01 = getsubstr(level.start_point,8);
var_02 = 0;
foreach(var_04 in var_00)
{
if(!isdefined(var_04.script_startname))
{
continue;
}
if(var_01 != var_04.script_startname)
{
continue;
}
if(isdefined(var_04.script_visionset))
{
maps\_utility::vision_set_fog_changes(var_04.script_visionset,0);
}
level.player maps\_utility::teleport_player(var_04);
var_02 = 1;
break;
}
if(!var_02)
{
level.player maps\_utility::teleport_player(var_00[0]);
}
}
//Function Number: 73
init_animsounds()
{
level.animsounds = [];
level.animsound_aliases = [];
waittillframeend;
waittillframeend;
var_00 = getarraykeys(level.scr_notetrack);
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
init_notetracks_for_animname(var_00[var_01]);
}
var_00 = getarraykeys(level.scr_animsound);
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
init_animsounds_for_animname(var_00[var_01]);
}
}
//Function Number: 74
init_animsounds_for_animname(param_00)
{
var_01 = getarraykeys(level.scr_animsound[param_00]);
for(var_02 = 0;var_02 < var_01.size;var_02++)
{
var_03 = var_01[var_02];
var_04 = level.scr_animsound[param_00][var_03];
level.animsound_aliases[param_00][var_03]["#" + var_03]["soundalias"] = var_04;
level.animsound_aliases[param_00][var_03]["#" + var_03]["created_by_animSound"] = 1;
}
}
//Function Number: 75
init_notetracks_for_animname(param_00)
{
foreach(var_0A, var_02 in level.scr_notetrack[param_00])
{
foreach(var_09, var_04 in var_02)
{
foreach(var_06 in var_04)
{
var_07 = var_06["sound"];
if(!isdefined(var_07))
{
continue;
}
level.animsound_aliases[param_00][var_0A][var_09]["soundalias"] = var_07;
if(isdefined(var_06["created_by_animSound"]))
{
level.animsound_aliases[param_00][var_0A][var_09]["created_by_animSound"] = 1;
}
}
}
}
}
//Function Number: 76
default_footsteps()
{
animscripts\utility::setfootstepeffect("default",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("asphalt",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("brick",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("carpet",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("cloth",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("concrete",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("cushion",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("dirt",loadfx("vfx/treadfx/footstep_dust"));
animscripts\utility::setfootstepeffect("foliage",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("grass",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("gravel",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("mud",loadfx("vfx/treadfx/footstep_mud"));
animscripts\utility::setfootstepeffect("rock",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("sand",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("wood",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("water_waist",loadfx("vfx/treadfx/footstep_water"));
animscripts\utility::setfootstepeffect("water_ankle",loadfx("vfx/treadfx/footstep_water"));
animscripts\utility::setfootstepeffect("water_knee",loadfx("vfx/treadfx/footstep_water"));
animscripts\utility::setfootstepeffect("snow",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffect("ice",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("default",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("asphalt",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("brick",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("carpet",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("cloth",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("concrete",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("cushion",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("dirt",loadfx("vfx/treadfx/footstep_dust"));
animscripts\utility::setfootstepeffectsmall("foliage",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("grass",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("gravel",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("mud",loadfx("vfx/treadfx/footstep_mud"));
animscripts\utility::setfootstepeffectsmall("rock",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("sand",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("wood",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("water_waist",loadfx("vfx/treadfx/footstep_water"));
animscripts\utility::setfootstepeffectsmall("water_ankle",loadfx("vfx/treadfx/footstep_water"));
animscripts\utility::setfootstepeffectsmall("water_knee",loadfx("vfx/treadfx/footstep_water"));
animscripts\utility::setfootstepeffectsmall("snow",loadfx("vfx/unique/no_fx"));
animscripts\utility::setfootstepeffectsmall("ice",loadfx("vfx/unique/no_fx"));
var_00 = "bodyfall small";
var_01 = "J_SpineLower";
var_02 = "bodyfall_";
var_03 = "_small";
animscripts\utility::setnotetrackeffect(var_00,var_01,"dirt",loadfx("vfx/treadfx/bodyfall_default_runner"),var_02,var_03);
animscripts\utility::setnotetrackeffect(var_00,var_01,"concrete",loadfx("vfx/treadfx/bodyfall_default_runner"),var_02,var_03);
animscripts\utility::setnotetrackeffect(var_00,var_01,"asphalt",loadfx("vfx/treadfx/bodyfall_default_runner"),var_02,var_03);
animscripts\utility::setnotetrackeffect(var_00,var_01,"rock",loadfx("vfx/treadfx/bodyfall_default_runner"),var_02,var_03);
var_04 = ["brick","carpet","foliage","grass","gravel","ice","metal","painted metal","mud","plaster","sand","snow","slush","water","wood","ceramic"];
foreach(var_06 in var_04)
{
animscripts\utility::setnotetracksound(var_00,var_06,var_02,var_03);
}
var_00 = "bodyfall small";
var_01 = "J_SpineLower";
var_02 = "bodyfall_";
var_03 = "_large";
animscripts\utility::setnotetrackeffect(var_00,var_01,"dirt",loadfx("vfx/treadfx/bodyfall_default_runner"),var_02,var_03);
animscripts\utility::setnotetrackeffect(var_00,var_01,"concrete",loadfx("vfx/treadfx/bodyfall_default_runner"),var_02,var_03);
animscripts\utility::setnotetrackeffect(var_00,var_01,"asphalt",loadfx("vfx/treadfx/bodyfall_default_runner"),var_02,var_03);
animscripts\utility::setnotetrackeffect(var_00,var_01,"rock",loadfx("vfx/treadfx/bodyfall_default_runner"),var_02,var_03);
foreach(var_06 in var_04)
{
animscripts\utility::setnotetracksound(var_00,var_06,var_02,var_03);
}
}
//Function Number: 77
functional_tester_load_next_start()
{
wait(3);
if(level.start_functions.size <= 0)
{
return;
}
var_00 = get_start_dvars();
if(!isdefined(var_00) || !isdefined(level.start_point))
{
return;
}
var_01 = 0;
for(var_01 = 0;var_01 < var_00.size;var_01++)
{
if(var_00[var_01] == level.start_point)
{
var_01++;
break;
}
}
if(var_01 >= var_00.size)
{
return;
}
setdvar("start",var_00[var_01]);
}