mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-21 23:47:52 -05:00
2585 lines
52 KiB
Plaintext
2585 lines
52 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\_specialops.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: PC
|
|
* Function Count: 132
|
|
* Decompile Time: 1666 ms
|
|
* Timestamp: 10/27/2023 2:20:22 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
specialops_init()
|
|
{
|
|
foreach(var_01 in level.players)
|
|
{
|
|
var_01 thread func_17E7();
|
|
}
|
|
|
|
if(maps\_utility::is_coop())
|
|
{
|
|
maps\_gameskill::setglobaldifficulty();
|
|
foreach(var_01 in level.players)
|
|
{
|
|
var_01 maps\_gameskill::setdifficulty();
|
|
}
|
|
}
|
|
|
|
if(!isdefined(level.so_override))
|
|
{
|
|
level.so_override = [];
|
|
}
|
|
|
|
if(!isdefined(level.friendlyfire_warnings))
|
|
{
|
|
level.friendlyfire_warnings = 1;
|
|
}
|
|
|
|
level.no_friendly_fire_penalty = 1;
|
|
precacheminimapsentrycodeassets();
|
|
precachemenu("sp_eog_summary");
|
|
precachemenu("coop_eog_summary");
|
|
precachemenu("coop_eog_summary2");
|
|
precachemenu("surHUD_display");
|
|
precacheshellshock("so_finished");
|
|
precacheshader("hud_show_timer");
|
|
precacheshader("specops_ui_equipmentstore");
|
|
precacheshader("specops_ui_weaponstore");
|
|
precacheshader("specops_ui_airsupport");
|
|
so_precache_strings();
|
|
foreach(var_01 in level.players)
|
|
{
|
|
var_01.so_hud_show_time = gettime() + so_standard_wait() * 1000;
|
|
var_01 maps\_utility::ent_flag_init("so_hud_can_toggle");
|
|
}
|
|
|
|
level.challenge_time_nudge = 30;
|
|
level.challenge_time_hurry = 10;
|
|
level.func_destructible_crush_player = ::so_crush_player;
|
|
setsaveddvar("g_friendlyfireDamageScale",2);
|
|
setsaveddvar("turretSentryRestrictUsageToOwner",0);
|
|
if(isdefined(level.so_compass_zoom))
|
|
{
|
|
var_07 = 0;
|
|
switch(level.so_compass_zoom)
|
|
{
|
|
case "close":
|
|
var_07 = 1500;
|
|
break;
|
|
|
|
case "far":
|
|
var_07 = 6000;
|
|
break;
|
|
|
|
default:
|
|
var_07 = 3000;
|
|
break;
|
|
}
|
|
|
|
if(!issplitscreen())
|
|
{
|
|
var_07 = var_07 + var_07 * 0.1;
|
|
}
|
|
|
|
setsaveddvar("compassmaxrange",var_07);
|
|
}
|
|
|
|
common_scripts\utility::flag_init("challenge_timer_passed");
|
|
common_scripts\utility::flag_init("challenge_timer_expired");
|
|
common_scripts\utility::flag_init("special_op_succeeded");
|
|
common_scripts\utility::flag_init("special_op_failed");
|
|
common_scripts\utility::flag_init("special_op_terminated");
|
|
common_scripts\utility::flag_init("special_op_p1ready");
|
|
common_scripts\utility::flag_init("special_op_p2ready");
|
|
common_scripts\utility::flag_init("special_op_no_unlink");
|
|
common_scripts\utility::flag_init("special_op_final_xp_given");
|
|
thread maps\_specialops_code::disable_saving();
|
|
thread maps\_specialops_code::specialops_detect_death();
|
|
maps\_specialops_code::specialops_dialog_init();
|
|
if(maps\_utility::is_coop())
|
|
{
|
|
maps\_specialops_battlechatter::init();
|
|
}
|
|
|
|
if(!isdefined(level.civilian_warning_time))
|
|
{
|
|
level.civilian_warning_time = [];
|
|
}
|
|
|
|
if(!maps\_utility::is_coop())
|
|
{
|
|
maps\_utility::set_custom_gameskill_func(::maps\_gameskill::solo_player_in_special_ops);
|
|
}
|
|
else if(maps\_utility::is_survival())
|
|
{
|
|
maps\_utility::set_custom_gameskill_func(::maps\_gameskill::coop_player_in_special_ops_survival);
|
|
}
|
|
|
|
common_scripts\utility::array_thread(getentarray("trigger_multiple_SO_escapewarning","classname"),::maps\_specialops_code::enable_escape_warning_auto);
|
|
common_scripts\utility::array_thread(getentarray("trigger_multiple_SO_escapefailure","classname"),::maps\_specialops_code::enable_escape_failure_auto);
|
|
level.so_deadquotes_chance = 0.5;
|
|
setdvar("ui_deadquote","");
|
|
thread maps\_specialops_code::so_special_failure_hint();
|
|
setdvar("ui_skip_level_select","1");
|
|
setdvar("ui_opensummary",0);
|
|
var_08 = "LB_" + level.script;
|
|
var_09 = "";
|
|
if(maps\_utility::is_coop())
|
|
{
|
|
var_08 = var_08 + "_TEAM";
|
|
}
|
|
|
|
if(maps\_utility::is_survival())
|
|
{
|
|
var_09 = " LB_EXT_" + level.script;
|
|
if(maps\_utility::is_coop())
|
|
{
|
|
var_09 = var_09 + "_TEAM";
|
|
}
|
|
}
|
|
|
|
precacheleaderboards(var_08 + var_09);
|
|
maps\_specialops_code::pick_starting_location_so();
|
|
level thread setsouniquesaveddvars();
|
|
maps\_audio::aud_set_spec_ops();
|
|
maps\_specialops_code::register_level_unlock("so_mw3_mission_2","mission");
|
|
maps\_specialops_code::register_level_unlock("so_mw3_mission_3","mission");
|
|
maps\_specialops_code::register_level_unlock("so_mw3_mission_4","mission");
|
|
maps\_specialops_code::register_survival_unlock();
|
|
maps\_rank::init();
|
|
maps\_missions::init();
|
|
maps\_utility::enable_damagefeedback();
|
|
maps\_utility::add_global_spawn_function("axis",::maps\_specialops_code::so_ai_flashed_damage_feedback);
|
|
thread maps\_specialops_code::setup_xp();
|
|
thread unlock_hint();
|
|
thread so_achievement_init();
|
|
}
|
|
|
|
//Function Number: 2
|
|
func_17E7()
|
|
{
|
|
wait 0.05;
|
|
self setplayerdata("round","kills",0);
|
|
self setplayerdata("round","killStreak",0);
|
|
self setplayerdata("round","deaths",0);
|
|
self setplayerdata("round","difficulty",0);
|
|
self setplayerdata("round","score",0);
|
|
self setplayerdata("round","timePlayed",0);
|
|
self setplayerdata("round","wave",0);
|
|
self setplayerdata("round","xuidTeammate","0");
|
|
self setplayerdata("round","totalXp",0);
|
|
self setplayerdata("round","scoreXp",0);
|
|
self setplayerdata("round","challengeXp",0);
|
|
}
|
|
|
|
//Function Number: 3
|
|
setsouniquesaveddvars()
|
|
{
|
|
setsaveddvar("hud_fade_ammodisplay",30);
|
|
setsaveddvar("hud_fade_stance",30);
|
|
setsaveddvar("hud_fade_offhand",30);
|
|
setsaveddvar("hud_fade_compass",0);
|
|
}
|
|
|
|
//Function Number: 4
|
|
so_precache_strings()
|
|
{
|
|
precachestring(&"SPECIAL_OPS_TIME_NULL");
|
|
precachestring(&"SPECIAL_OPS_TIME");
|
|
precachestring(&"SPECIAL_OPS_WAITING_P1");
|
|
precachestring(&"SPECIAL_OPS_WAITING_P2");
|
|
precachestring(&"SPECIAL_OPS_REVIVE_NAG_HINT");
|
|
precachestring(&"SPECIAL_OPS_CHALLENGE_SUCCESS");
|
|
precachestring(&"SPECIAL_OPS_CHALLENGE_FAILURE");
|
|
precachestring(&"SPECIAL_OPS_FAILURE_HINT_TIME");
|
|
precachestring(&"SPECIAL_OPS_ESCAPE_WARNING");
|
|
precachestring(&"SPECIAL_OPS_ESCAPE_SPLASH");
|
|
precachestring(&"SPECIAL_OPS_WAITING_OTHER_PLAYER");
|
|
precachestring(&"SPECIAL_OPS_STARTING_IN");
|
|
precachestring(&"SPECIAL_OPS_UI_TIME");
|
|
precachestring(&"SPECIAL_OPS_UI_KILLS");
|
|
precachestring(&"SPECIAL_OPS_UI_DIFFICULTY");
|
|
precachestring(&"SPECIAL_OPS_UI_PLAY_AGAIN");
|
|
precachestring(&"SPECIAL_OPS_DASHDASH");
|
|
precachestring(&"SPECIAL_OPS_HOSTILES");
|
|
precachestring(&"SPECIAL_OPS_INTERMISSION_WAVENUM");
|
|
precachestring(&"SPECIAL_OPS_INTERMISSION_WAVEFINAL");
|
|
precachestring(&"SPECIAL_OPS_WAVENUM");
|
|
precachestring(&"SPECIAL_OPS_WAVEFINAL");
|
|
precachestring(&"SPECIAL_OPS_PRESS_TO_CANCEL");
|
|
precachestring(&"SPECIAL_OPS_PLAYER_IS_READY");
|
|
precachestring(&"SPECIAL_OPS_PRESS_TO_START");
|
|
precachestring(&"SPECIAL_OPS_PLAYER_IS_NOT_READY");
|
|
precachestring(&"SPECIAL_OPS_EMPTY");
|
|
}
|
|
|
|
//Function Number: 5
|
|
so_standard_wait()
|
|
{
|
|
return 4;
|
|
}
|
|
|
|
//Function Number: 6
|
|
specialops_remove_unused()
|
|
{
|
|
var_00 = getentarray();
|
|
if(!isdefined(var_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = maps\_utility::is_specialop();
|
|
foreach(var_03 in var_00)
|
|
{
|
|
if(var_03 maps\_specialops_code::specialops_remove_entity_check(var_01))
|
|
{
|
|
var_03 delete();
|
|
}
|
|
}
|
|
|
|
maps\_specialops_code::so_special_failure_hint_reset_dvars();
|
|
}
|
|
|
|
//Function Number: 7
|
|
enable_triggered_start(param_00)
|
|
{
|
|
level endon("challenge_timer_expired");
|
|
var_01 = getent(param_00,"script_noteworthy");
|
|
var_01 waittill("trigger");
|
|
common_scripts\utility::flag_set(param_00);
|
|
}
|
|
|
|
//Function Number: 8
|
|
enable_triggered_complete(param_00,param_01,param_02)
|
|
{
|
|
level endon("challenge_timer_expired");
|
|
common_scripts\utility::flag_set(param_00);
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = "freeze";
|
|
}
|
|
|
|
var_03 = getent(param_00,"script_noteworthy");
|
|
thread maps\_specialops_code::disable_mission_end_trigger(var_03);
|
|
switch(param_02)
|
|
{
|
|
case "all":
|
|
maps\_specialops_code::wait_all_players_are_touching(var_03);
|
|
break;
|
|
|
|
case "any":
|
|
maps\_specialops_code::wait_all_players_have_touched(var_03,param_02);
|
|
break;
|
|
|
|
case "freeze":
|
|
maps\_specialops_code::wait_all_players_have_touched(var_03,param_02);
|
|
break;
|
|
}
|
|
|
|
level.challenge_end_time = gettime();
|
|
common_scripts\utility::flag_set(param_01);
|
|
}
|
|
|
|
//Function Number: 9
|
|
fade_challenge_in(param_00,param_01)
|
|
{
|
|
if(!maps\_utility::is_survival())
|
|
{
|
|
foreach(var_03 in level.players)
|
|
{
|
|
var_03 thread enable_kill_counter();
|
|
}
|
|
}
|
|
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = 0.5;
|
|
}
|
|
|
|
var_05 = 1;
|
|
if(isdefined(level.congrat_min_wave))
|
|
{
|
|
var_05 = level.congrat_min_wave;
|
|
}
|
|
|
|
var_06 = maps\_hud_util::create_client_overlay("black",var_05);
|
|
wait param_00;
|
|
level notify("challenge_fading_in");
|
|
var_07 = 1;
|
|
var_06 thread maps\_hud_util::fade_over_time(0,var_07);
|
|
level thread maps\_utility::notify_delay("challenge_fadein_complete",var_07);
|
|
if(common_scripts\utility::flag_exist("slamzoom_finished"))
|
|
{
|
|
common_scripts\utility::flag_wait("slamzoom_finished");
|
|
}
|
|
|
|
wait 0.75;
|
|
if(!isdefined(param_01) || param_01)
|
|
{
|
|
thread so_dialog_ready_up();
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
fade_challenge_out(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 0;
|
|
}
|
|
|
|
if(isdefined(param_00))
|
|
{
|
|
common_scripts\utility::flag_wait(param_00);
|
|
}
|
|
|
|
var_02 = undefined;
|
|
if(maps\_utility::is_survival())
|
|
{
|
|
var_02 = 1;
|
|
if(!param_01)
|
|
{
|
|
param_01 = level.current_wave < level.var_17F7;
|
|
}
|
|
}
|
|
|
|
if(!param_01)
|
|
{
|
|
thread so_dialog_mission_success(var_02);
|
|
}
|
|
|
|
maps\_endmission::so_eog_summary_calculate(1);
|
|
maps\_specialops_code::specialops_mission_over_setup(1);
|
|
maps\_specialops_code::so_mission_complete_achivements();
|
|
if(maps\_utility::is_survival())
|
|
{
|
|
level notify("so_generate_deathquote");
|
|
}
|
|
|
|
maps\_endmission::so_eog_summary_display();
|
|
}
|
|
|
|
//Function Number: 11
|
|
override_summary_time(param_00)
|
|
{
|
|
self.so_eog_summary_data["time"] = maps\_utility::round_millisec_on_sec(param_00,1,0);
|
|
}
|
|
|
|
//Function Number: 12
|
|
override_summary_kills(param_00)
|
|
{
|
|
self.so_eog_summary_data["kills"] = param_00;
|
|
}
|
|
|
|
//Function Number: 13
|
|
override_summary_score(param_00)
|
|
{
|
|
self.so_eog_summary_data["score"] = param_00;
|
|
}
|
|
|
|
//Function Number: 14
|
|
enable_countdown_timer(param_00,param_01,param_02,param_03)
|
|
{
|
|
level endon("special_op_terminated");
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = &"SPECIAL_OPS_STARTING_IN";
|
|
}
|
|
|
|
var_04 = so_create_hud_item(0,so_hud_ypos(),param_02);
|
|
var_04 setpulsefx(50,param_00 * 1000,500);
|
|
var_05 = so_create_hud_item(0,so_hud_ypos());
|
|
var_05 thread show_countdown_timer_time(param_00,param_03);
|
|
wait param_00;
|
|
level.player playsound("arcademode_zerodeaths");
|
|
if(isdefined(param_01) && param_01)
|
|
{
|
|
level.challenge_start_time = gettime();
|
|
}
|
|
|
|
thread destroy_countdown_timer(var_04,var_05);
|
|
}
|
|
|
|
//Function Number: 15
|
|
destroy_countdown_timer(param_00,param_01)
|
|
{
|
|
wait 1;
|
|
param_00 destroy();
|
|
param_01 destroy();
|
|
}
|
|
|
|
//Function Number: 16
|
|
show_countdown_timer_time(param_00,param_01)
|
|
{
|
|
self.alignx = "left";
|
|
self settenthstimer(param_00);
|
|
self.alpha = 0;
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 0.625;
|
|
}
|
|
|
|
wait param_01;
|
|
param_00 = int(param_00 - param_01 * 1000);
|
|
self setpulsefx(50,param_00,500);
|
|
self.alpha = 1;
|
|
}
|
|
|
|
//Function Number: 17
|
|
enable_challenge_timer(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
if(!common_scripts\utility::flag_exist(param_00))
|
|
{
|
|
common_scripts\utility::flag_init(param_00);
|
|
}
|
|
|
|
level.var_1803 = param_00;
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
if(!common_scripts\utility::flag_exist(param_01))
|
|
{
|
|
common_scripts\utility::flag_init(param_01);
|
|
}
|
|
|
|
level.hud_so_counter_messages = param_01;
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = &"SPECIAL_OPS_TIME";
|
|
}
|
|
|
|
if(!isdefined(level.hud_so_counter_values))
|
|
{
|
|
level.hud_so_counter_values = level.challenge_time_hurry;
|
|
}
|
|
|
|
level.so_challenge_time_beep = level.hud_so_counter_values + 1;
|
|
foreach(var_05 in level.players)
|
|
{
|
|
var_05 thread maps\_specialops_code::challenge_timer_player_setup(param_00,param_01,param_02,param_03);
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
enable_challenge_counter(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(self.var_1809))
|
|
{
|
|
self.var_1809 = [];
|
|
}
|
|
|
|
if(!isdefined(self.var_180A))
|
|
{
|
|
self.var_180A = [];
|
|
}
|
|
|
|
thread enable_challenge_counter_think(param_00,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 19
|
|
enable_challenge_counter_think(param_00,param_01,param_02)
|
|
{
|
|
level endon("special_op_terminated");
|
|
disable_challenge_counter(param_00);
|
|
self endon(challenge_counter_get_disable_notify(param_00));
|
|
var_03 = so_hud_ypos();
|
|
self.var_1809[param_00] = so_create_hud_item(param_00,var_03,param_01,self);
|
|
self.var_180A[param_00] = so_create_hud_item(param_00,var_03,undefined,self);
|
|
self.var_180A[param_00] settext(0);
|
|
self.var_180A[param_00].alignx = "left";
|
|
childthread info_hud_handle_fade(self.var_1809[param_00]);
|
|
childthread info_hud_handle_fade(self.var_180A[param_00]);
|
|
if(!isdefined(level.var_23B) || !level.var_23B)
|
|
{
|
|
common_scripts\utility::flag_wait(level.var_1803);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
self waittill(param_02,var_04);
|
|
self.var_180A[param_00] settext(var_04);
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
disable_challenge_counter(param_00)
|
|
{
|
|
param_00 = int(param_00);
|
|
self notify(challenge_counter_get_disable_notify(param_00));
|
|
if(isdefined(self.var_1809[param_00]))
|
|
{
|
|
self.var_1809[param_00] destroy();
|
|
}
|
|
|
|
if(isdefined(self.var_180A[param_00]))
|
|
{
|
|
self.var_180A[param_00] destroy();
|
|
}
|
|
}
|
|
|
|
//Function Number: 21
|
|
disable_challenge_counter_all()
|
|
{
|
|
if(isdefined(self.var_1809))
|
|
{
|
|
foreach(var_02, var_01 in self.var_1809)
|
|
{
|
|
disable_challenge_counter(var_02);
|
|
}
|
|
|
|
self.var_1809 = [];
|
|
self.var_180A = [];
|
|
}
|
|
}
|
|
|
|
//Function Number: 22
|
|
challenge_counter_get_disable_notify(param_00)
|
|
{
|
|
param_00 = int(param_00);
|
|
return "challenge_counter_disable" + param_00;
|
|
}
|
|
|
|
//Function Number: 23
|
|
enable_kill_counter()
|
|
{
|
|
level.var_1810 = 2;
|
|
level endon("special_op_terminated");
|
|
self notify("enabling_kill_counter");
|
|
self endon("enabling_kill_counter");
|
|
thread enable_challenge_counter(level.var_1810,&"SPECIAL_OPS_KILL_COUNT","ui_kill_count");
|
|
thread enable_kill_counter_think(level.var_1810);
|
|
}
|
|
|
|
//Function Number: 24
|
|
enable_kill_counter_think(param_00)
|
|
{
|
|
level endon("special_op_terminated");
|
|
self endon(challenge_counter_get_disable_notify(param_00));
|
|
for(;;)
|
|
{
|
|
level waittill("specops_player_kill",var_01,var_02);
|
|
if(self == var_01)
|
|
{
|
|
self notify("ui_kill_count",var_01.stats["kills"]);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 25
|
|
disable_kill_counter()
|
|
{
|
|
if(!isdefined(level.var_1810))
|
|
{
|
|
return;
|
|
}
|
|
|
|
disable_challenge_counter(level.var_1810);
|
|
}
|
|
|
|
//Function Number: 26
|
|
disable_challenge_timer()
|
|
{
|
|
level notify("stop_challenge_timer_thread");
|
|
}
|
|
|
|
//Function Number: 27
|
|
so_get_difficulty_menu_string(param_00)
|
|
{
|
|
param_00 = common_scripts\utility::ter_op(isdefined(param_00),param_00,level.so_enable_wait_for_players);
|
|
var_01 = "";
|
|
switch(int(param_00))
|
|
{
|
|
case 0:
|
|
var_01 = "@MENU_RECRUIT";
|
|
break;
|
|
|
|
case 1:
|
|
var_01 = "@MENU_REGULAR";
|
|
break;
|
|
|
|
case 2:
|
|
var_01 = "@MENU_HARDENED";
|
|
break;
|
|
|
|
case 3:
|
|
var_01 = "@MENU_VETERAN";
|
|
break;
|
|
|
|
default:
|
|
var_01 = "@MENU_REGULAR";
|
|
break;
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 28
|
|
so_wait_for_players_ready()
|
|
{
|
|
if(!isdefined(level.var_1815))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!maps\_utility::is_coop() || issplitscreen())
|
|
{
|
|
return;
|
|
}
|
|
|
|
level.so_waiting_for_players = 1;
|
|
level.congrat_min_wave = 0.85;
|
|
level.player thread so_wait_for_player_ready("special_op_p1ready",2);
|
|
level.player2 thread so_wait_for_player_ready("special_op_p2ready",3.25);
|
|
var_00 = maps\_hud_util::create_client_overlay("black",1);
|
|
var_00 maps\_hud_util::fade_over_time(level.congrat_min_wave,1);
|
|
while(!common_scripts\utility::flag("special_op_p1ready") || !common_scripts\utility::flag("special_op_p2ready"))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
var_01 = 1;
|
|
level.player thread so_wait_for_player_ready_cleanup(var_01);
|
|
level.player2 thread so_wait_for_player_ready_cleanup(var_01);
|
|
wait var_01;
|
|
var_00 destroy();
|
|
level.so_waiting_for_players = undefined;
|
|
}
|
|
|
|
//Function Number: 29
|
|
so_wait_for_player_ready(param_00,param_01)
|
|
{
|
|
self endon("stop_waiting_start");
|
|
self freezecontrols(1);
|
|
self disableweapons();
|
|
self.var_1818 = so_create_hud_item(0,0,&"SPECIAL_OPS_PRESS_TO_START",self,1);
|
|
self.var_1818.alignx = "center";
|
|
self.var_1818.horzalign = "center";
|
|
self.var_1819 = so_create_hud_item(param_01,0,&"SPECIAL_OPS_PLAYER_IS_NOT_READY",undefined,1);
|
|
self.var_1819.alignx = "center";
|
|
self.var_1819.horzalign = "center";
|
|
self.var_1819 settext(self.var_794);
|
|
self.var_1819 set_hud_yellow();
|
|
wait 0.05;
|
|
self setblurforplayer(6,0);
|
|
notifyoncommand(self.unique_id + "_is_ready","+gostand");
|
|
notifyoncommand(self.unique_id + "_is_not_ready","+stance");
|
|
for(;;)
|
|
{
|
|
self waittill(self.unique_id + "_is_ready");
|
|
common_scripts\utility::flag_set(param_00);
|
|
self playsound("so_player_is_ready");
|
|
self.var_1818.label = &"SPECIAL_OPS_PRESS_TO_CANCEL";
|
|
self.var_1819 so_hud_pulse_success(&"SPECIAL_OPS_PLAYER_IS_READY");
|
|
self waittill(self.unique_id + "_is_not_ready");
|
|
common_scripts\utility::flag_clear(param_00);
|
|
self playsound("so_player_not_ready");
|
|
self.var_1818.label = &"SPECIAL_OPS_PRESS_TO_START";
|
|
self.var_1819 so_hud_pulse_warning(&"SPECIAL_OPS_PLAYER_IS_NOT_READY");
|
|
}
|
|
}
|
|
|
|
//Function Number: 30
|
|
so_wait_for_player_ready_cleanup(param_00)
|
|
{
|
|
self notify("stop_waiting_start");
|
|
self.var_1818 thread so_remove_hud_item(1);
|
|
wait param_00;
|
|
self.var_1819 thread so_remove_hud_item(0,1);
|
|
self freezecontrols(0);
|
|
self enableweapons();
|
|
self setblurforplayer(0,0.5);
|
|
}
|
|
|
|
//Function Number: 31
|
|
attacker_is_p1(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return param_00 == level.player;
|
|
}
|
|
|
|
//Function Number: 32
|
|
attacker_is_p2(param_00)
|
|
{
|
|
if(!maps\_utility::is_coop())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isdefined(param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return param_00 == level.player2;
|
|
}
|
|
|
|
//Function Number: 33
|
|
enable_escape_warning()
|
|
{
|
|
level endon("special_op_terminated");
|
|
level.escape_warning_triggers = getentarray("player_trying_to_escape","script_noteworthy");
|
|
maps\_utility::add_hint_string("player_escape_warning",&"SPECIAL_OPS_EMPTY",::maps\_specialops_code::disable_escape_warning);
|
|
for(;;)
|
|
{
|
|
wait 0.05;
|
|
foreach(var_01 in level.escape_warning_triggers)
|
|
{
|
|
foreach(var_03 in level.players)
|
|
{
|
|
if(!isdefined(var_03.escape_hint_active))
|
|
{
|
|
if(var_03 istouching(var_01))
|
|
{
|
|
var_03.escape_hint_active = 1;
|
|
var_03 thread maps\_specialops_code::ping_escape_warning();
|
|
var_03 maps\_utility::display_hint_timeout("player_escape_warning");
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_03.ping_escape_splash))
|
|
{
|
|
var_03 thread maps\_specialops_code::ping_escape_warning();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 34
|
|
enable_escape_failure()
|
|
{
|
|
level endon("special_op_terminated");
|
|
common_scripts\utility::flag_wait("player_has_escaped");
|
|
level.challenge_end_time = gettime();
|
|
so_force_deadquote("@DEADQUOTE_SO_LEFT_PLAY_AREA");
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
|
|
//Function Number: 35
|
|
so_delete_all_by_type(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
if(!isdefined(param_05))
|
|
{
|
|
param_05 = 0;
|
|
}
|
|
|
|
var_06 = [param_00,param_01,param_02,param_03,param_04];
|
|
var_06 = common_scripts\utility::array_removeundefined(var_06);
|
|
var_07 = getentarray();
|
|
foreach(var_09 in var_07)
|
|
{
|
|
if(!isdefined(var_09.code_classname))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_0A = isdefined(var_09.script_specialops) && var_09.script_specialops == 1;
|
|
if(var_0A)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_0B = isdefined(var_09.targetname) && var_09.targetname == "intelligence_item";
|
|
if(var_0B)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
foreach(var_0D in var_06)
|
|
{
|
|
if(var_09 [[ var_0D ]]())
|
|
{
|
|
if(param_05)
|
|
{
|
|
var_09 notify("delete");
|
|
}
|
|
|
|
var_09 delete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 36
|
|
type_spawners()
|
|
{
|
|
if(!isdefined(self.code_classname))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return issubstr(self.code_classname,"actor_");
|
|
}
|
|
|
|
//Function Number: 37
|
|
type_vehicle()
|
|
{
|
|
if(!isdefined(self.code_classname))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.code_classname == "script_vehicle_collmap")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return issubstr(self.code_classname,"script_vehicle");
|
|
}
|
|
|
|
//Function Number: 38
|
|
type_spawn_trigger()
|
|
{
|
|
if(!isdefined(self.classname))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.classname == "trigger_multiple_spawn")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(self.classname == "trigger_multiple_spawn_reinforcement")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(self.classname == "trigger_multiple_friendly_respawn")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(isdefined(self.targetname) && self.targetname == "flood_spawner")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(isdefined(self.targetname) && self.targetname == "friendly_respawn_trigger")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(isdefined(self.spawnflags) && self.spawnflags & 32)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 39
|
|
type_trigger()
|
|
{
|
|
if(!isdefined(self.code_classname))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = [];
|
|
return isdefined(var_7B[self.code_classname]);
|
|
}
|
|
|
|
//Function Number: 40
|
|
type_flag_trigger()
|
|
{
|
|
if(!isdefined(self.classname))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = [];
|
|
return isdefined(var_7B[self.classname]);
|
|
}
|
|
|
|
//Function Number: 41
|
|
type_killspawner_trigger()
|
|
{
|
|
if(!type_trigger())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isdefined(self.script_killspawner))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 42
|
|
type_goalvolume()
|
|
{
|
|
if(!isdefined(self.classname))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.classname == "info_volume" && isdefined(self.script_goalvolume))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 43
|
|
type_infovolume()
|
|
{
|
|
if(!isdefined(self.classname))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return self.classname == "info_volume";
|
|
}
|
|
|
|
//Function Number: 44
|
|
type_turret()
|
|
{
|
|
if(!isdefined(self.classname))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return self.classname == "misc_turret";
|
|
}
|
|
|
|
//Function Number: 45
|
|
type_weapon_placed()
|
|
{
|
|
if(!isdefined(self.classname) || !isdefined(self.model))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(strtok(self.classname,"_")[0] == "weapon")
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 46
|
|
so_delete_all_spawntriggers()
|
|
{
|
|
so_delete_all_by_type(::type_spawn_trigger);
|
|
}
|
|
|
|
//Function Number: 47
|
|
so_delete_all_triggers()
|
|
{
|
|
so_delete_all_by_type(::type_trigger,::type_spawn_trigger,::type_flag_trigger,::type_killspawner_trigger);
|
|
animscripts/battlechatter::func_BF5();
|
|
}
|
|
|
|
//Function Number: 48
|
|
so_delete_all_vehicles()
|
|
{
|
|
so_delete_all_by_type(::type_vehicle,undefined,undefined,undefined,undefined,1);
|
|
}
|
|
|
|
//Function Number: 49
|
|
so_delete_all_spawners()
|
|
{
|
|
so_delete_all_by_type(::type_spawners);
|
|
}
|
|
|
|
//Function Number: 50
|
|
so_make_specialops_ent(param_00,param_01,param_02)
|
|
{
|
|
var_03 = getentarray(param_00,param_01);
|
|
so_array_make_specialops(var_03,param_02);
|
|
}
|
|
|
|
//Function Number: 51
|
|
so_make_bcslocations_specialops_ent()
|
|
{
|
|
so_array_make_specialops(level.bcs_locations);
|
|
}
|
|
|
|
//Function Number: 52
|
|
so_array_make_specialops(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 0;
|
|
}
|
|
|
|
level.var_183B = [];
|
|
so_make_specialops_ent_internal(param_00,param_01);
|
|
level.var_183B = undefined;
|
|
}
|
|
|
|
//Function Number: 53
|
|
so_make_specialops_ent_internal(param_00,param_01)
|
|
{
|
|
foreach(var_03 in param_00)
|
|
{
|
|
if(maps\_utility::array_contains(level.var_183B,var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
level.var_183B[level.var_183B.size] = var_03;
|
|
var_03.script_specialops = 1;
|
|
if(param_01)
|
|
{
|
|
if(isdefined(var_03.target))
|
|
{
|
|
var_04 = getentarray(var_03.target,"targetname");
|
|
so_make_specialops_ent_internal(var_04,param_01);
|
|
}
|
|
|
|
if(isdefined(var_03.var_183D))
|
|
{
|
|
var_04 = var_03 common_scripts\utility::get_linked_ents();
|
|
so_make_specialops_ent_internal(var_04,param_01);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 54
|
|
so_delete_breach_ents()
|
|
{
|
|
var_00 = getentarray("breach_solid","targetname");
|
|
foreach(var_02 in var_00)
|
|
{
|
|
var_02 connectpaths();
|
|
var_02 delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 55
|
|
so_force_deadquote(param_00,param_01)
|
|
{
|
|
level.so_deadquotes = [];
|
|
level.so_deadquotes[0] = param_00;
|
|
level.so_deadquotes_chance = 1;
|
|
maps\_specialops_code::so_special_failure_hint_reset_dvars(param_01);
|
|
}
|
|
|
|
//Function Number: 56
|
|
so_force_deadquote_array(param_00,param_01)
|
|
{
|
|
level.so_deadquotes = param_00;
|
|
level.so_deadquotes_chance = 1;
|
|
maps\_specialops_code::so_special_failure_hint_reset_dvars(param_01);
|
|
}
|
|
|
|
//Function Number: 57
|
|
so_include_deadquote_array(param_00)
|
|
{
|
|
if(!isdefined(level.so_deadquotes))
|
|
{
|
|
level.so_deadquotes = [];
|
|
}
|
|
|
|
level.so_deadquotes = maps\_utility::array_merge(level.so_deadquotes,param_00);
|
|
}
|
|
|
|
//Function Number: 58
|
|
so_create_hud_item(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
if(isdefined(param_03))
|
|
{
|
|
}
|
|
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = 0;
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 0;
|
|
}
|
|
|
|
param_00 = param_00 + 2;
|
|
var_05 = undefined;
|
|
if(isdefined(param_03))
|
|
{
|
|
var_05 = newclienthudelem(param_03);
|
|
}
|
|
else
|
|
{
|
|
var_05 = newhudelem();
|
|
}
|
|
|
|
var_05.alignx = "right";
|
|
var_05.aligny = "middle";
|
|
var_05.horzalign = "right";
|
|
var_05.vertalign = "middle";
|
|
var_05.x = param_01;
|
|
var_05.y = -100 + 15 * param_00;
|
|
var_05.font = "hudsmall";
|
|
var_05.foreground = 1;
|
|
var_05.hidewheninmenu = 1;
|
|
var_05.hidewhendead = 1;
|
|
var_05.sort = 2;
|
|
var_05 set_hud_white();
|
|
if(isdefined(param_02))
|
|
{
|
|
var_05.label = param_02;
|
|
}
|
|
|
|
if(!isdefined(param_04) || !param_04)
|
|
{
|
|
if(isdefined(param_03))
|
|
{
|
|
if(!param_03 maps\_specialops_code::so_hud_can_show())
|
|
{
|
|
param_03 thread maps\_specialops_code::so_create_hud_item_delay_draw(var_05);
|
|
}
|
|
else if(!maps\_utility::ent_flag("so_hud_can_toggle"))
|
|
{
|
|
maps\_utility::ent_flag_set("so_hud_can_toggle");
|
|
}
|
|
}
|
|
}
|
|
|
|
return var_05;
|
|
}
|
|
|
|
//Function Number: 59
|
|
so_create_hud_item_data(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
var_05 = so_create_hud_item(param_00,param_01,param_02,param_03,param_04);
|
|
var_05.alignx = "left";
|
|
return var_05;
|
|
}
|
|
|
|
//Function Number: 60
|
|
so_create_hud_item_debug(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
var_05 = so_create_hud_item(param_00,param_01,param_02,param_03,param_04);
|
|
var_05.alignx = "left";
|
|
var_05.horzalign = "left";
|
|
return var_05;
|
|
}
|
|
|
|
//Function Number: 61
|
|
so_hud_pulse_create(param_00)
|
|
{
|
|
if(!maps\_specialops_code::so_hud_pulse_init())
|
|
{
|
|
return;
|
|
}
|
|
|
|
self notify("update_hud_pulse");
|
|
self endon("update_hud_pulse");
|
|
self endon("destroying");
|
|
if(isdefined(param_00))
|
|
{
|
|
self.label = param_00;
|
|
}
|
|
|
|
if(isdefined(self.pulse_time))
|
|
{
|
|
level.player playsound(self.pulse_time);
|
|
}
|
|
|
|
if(isdefined(self.pulse_bounds) && self.pulse_bounds)
|
|
{
|
|
maps\_specialops_code::so_hud_pulse_loop();
|
|
return;
|
|
}
|
|
|
|
maps\_specialops_code::so_hud_pulse_single(self.pulse_scale_big,self.pulse_scale_normal,self.var_184D);
|
|
}
|
|
|
|
//Function Number: 62
|
|
so_hud_pulse_stop(param_00)
|
|
{
|
|
if(!maps\_specialops_code::so_hud_pulse_init())
|
|
{
|
|
return;
|
|
}
|
|
|
|
self notify("update_hud_pulse");
|
|
self endon("update_hud_pulse");
|
|
self endon("destroying");
|
|
if(isdefined(param_00))
|
|
{
|
|
self.label = param_00;
|
|
}
|
|
|
|
self.pulse_bounds = 0;
|
|
maps\_specialops_code::so_hud_pulse_single(self.fontscale,self.pulse_scale_normal,self.var_184D);
|
|
}
|
|
|
|
//Function Number: 63
|
|
so_hud_pulse_default(param_00)
|
|
{
|
|
set_hud_white();
|
|
self.pulse_bounds = 0;
|
|
so_hud_pulse_create(param_00);
|
|
}
|
|
|
|
//Function Number: 64
|
|
so_hud_pulse_close(param_00)
|
|
{
|
|
set_hud_green();
|
|
self.pulse_bounds = 1;
|
|
so_hud_pulse_create(param_00);
|
|
}
|
|
|
|
//Function Number: 65
|
|
so_hud_pulse_success(param_00)
|
|
{
|
|
set_hud_green();
|
|
self.pulse_bounds = 0;
|
|
so_hud_pulse_create(param_00);
|
|
}
|
|
|
|
//Function Number: 66
|
|
so_hud_pulse_warning(param_00)
|
|
{
|
|
set_hud_yellow();
|
|
self.pulse_bounds = 0;
|
|
so_hud_pulse_create(param_00);
|
|
}
|
|
|
|
//Function Number: 67
|
|
so_hud_pulse_alarm(param_00)
|
|
{
|
|
set_hud_red();
|
|
self.pulse_bounds = 1;
|
|
so_hud_pulse_create(param_00);
|
|
}
|
|
|
|
//Function Number: 68
|
|
so_hud_pulse_failure(param_00)
|
|
{
|
|
set_hud_red();
|
|
self.pulse_bounds = 0;
|
|
so_hud_pulse_create(param_00);
|
|
}
|
|
|
|
//Function Number: 69
|
|
so_hud_pulse_disabled(param_00)
|
|
{
|
|
set_hud_grey();
|
|
self.pulse_bounds = 0;
|
|
so_hud_pulse_create(param_00);
|
|
}
|
|
|
|
//Function Number: 70
|
|
so_hud_pulse_smart(param_00,param_01)
|
|
{
|
|
if(!isdefined(self.var_185A))
|
|
{
|
|
so_hud_pulse_default(param_01);
|
|
return;
|
|
}
|
|
|
|
foreach(var_04, var_03 in self.var_185A)
|
|
{
|
|
if(param_00 <= var_03)
|
|
{
|
|
switch(var_04)
|
|
{
|
|
case "pulse_disabled":
|
|
so_hud_pulse_disabled(param_01);
|
|
break;
|
|
|
|
case "pulse_failure":
|
|
so_hud_pulse_failure(param_01);
|
|
break;
|
|
|
|
case "pulse_alarm":
|
|
so_hud_pulse_alarm(param_01);
|
|
break;
|
|
|
|
case "pulse_warning":
|
|
so_hud_pulse_warning(param_01);
|
|
break;
|
|
|
|
case "pulse_default":
|
|
so_hud_pulse_default(param_01);
|
|
break;
|
|
|
|
case "pulse_close":
|
|
so_hud_pulse_close(param_01);
|
|
break;
|
|
|
|
case "pulse_success":
|
|
so_hud_pulse_success(param_01);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
so_hud_pulse_default(param_01);
|
|
}
|
|
|
|
//Function Number: 71
|
|
so_hud_ypos()
|
|
{
|
|
return -72;
|
|
}
|
|
|
|
//Function Number: 72
|
|
so_remove_hud_item(param_00,param_01)
|
|
{
|
|
if(isdefined(param_00) && param_00)
|
|
{
|
|
self notify("destroying");
|
|
self destroy();
|
|
return;
|
|
}
|
|
|
|
thread so_hud_pulse_stop();
|
|
if(isdefined(param_01) && param_01)
|
|
{
|
|
self setpulsefx(0,0,500);
|
|
wait 0.5;
|
|
}
|
|
else
|
|
{
|
|
self setpulsefx(0,1500,500);
|
|
wait 2;
|
|
}
|
|
|
|
self notify("destroying");
|
|
self destroy();
|
|
}
|
|
|
|
//Function Number: 73
|
|
set_hud_white(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
self.alpha = param_00;
|
|
self.glowalpha = param_00;
|
|
}
|
|
|
|
self.color = (1,1,1);
|
|
self.glowcolor = (0.6,0.6,0.6);
|
|
}
|
|
|
|
//Function Number: 74
|
|
set_hud_blue(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
self.alpha = param_00;
|
|
self.glowalpha = param_00;
|
|
}
|
|
|
|
self.color = (0.8,0.8,1);
|
|
self.glowcolor = (0.301961,0.301961,0.6);
|
|
}
|
|
|
|
//Function Number: 75
|
|
set_hud_green(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
self.alpha = param_00;
|
|
self.glowalpha = param_00;
|
|
}
|
|
|
|
self.color = (0.8,1,0.8);
|
|
self.glowcolor = (0.301961,0.6,0.301961);
|
|
}
|
|
|
|
//Function Number: 76
|
|
set_hud_yellow(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
self.alpha = param_00;
|
|
self.glowalpha = param_00;
|
|
}
|
|
|
|
self.color = (1,1,0.5);
|
|
self.glowcolor = (0.7,0.7,0.2);
|
|
}
|
|
|
|
//Function Number: 77
|
|
set_hud_red(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
self.alpha = param_00;
|
|
self.glowalpha = param_00;
|
|
}
|
|
|
|
self.color = (1,0.4,0.4);
|
|
self.glowcolor = (0.7,0.2,0.2);
|
|
}
|
|
|
|
//Function Number: 78
|
|
set_hud_grey(param_00)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
self.alpha = param_00;
|
|
self.glowalpha = param_00;
|
|
}
|
|
|
|
self.color = (0.4,0.4,0.4);
|
|
self.glowcolor = (0.2,0.2,0.2);
|
|
}
|
|
|
|
//Function Number: 79
|
|
info_hud_wait_for_player(param_00)
|
|
{
|
|
if(isdefined(self.so_infohud_toggle_state))
|
|
{
|
|
return;
|
|
}
|
|
|
|
level endon("challenge_timer_expired");
|
|
level endon("challenge_timer_passed");
|
|
level endon("special_op_terminated");
|
|
self endon("death");
|
|
if(isdefined(param_00))
|
|
{
|
|
level endon(param_00);
|
|
}
|
|
|
|
self setweaponhudiconoverride("actionslot1","hud_show_timer");
|
|
notifyoncommand("toggle_challenge_timer","+actionslot 1");
|
|
self.so_infohud_toggle_state = info_hud_start_state();
|
|
if(!maps\_specialops_code::so_hud_can_show())
|
|
{
|
|
thread info_hud_wait_force_on();
|
|
maps\_utility::ent_flag_wait("so_hud_can_toggle");
|
|
}
|
|
|
|
self notify("so_hud_toggle_available");
|
|
for(;;)
|
|
{
|
|
self waittill("toggle_challenge_timer");
|
|
switch(self.so_infohud_toggle_state)
|
|
{
|
|
case "on":
|
|
self.so_infohud_toggle_state = "off";
|
|
setdvar("so_ophud_" + self.unique_id,"0");
|
|
break;
|
|
|
|
case "off":
|
|
self.so_infohud_toggle_state = "on";
|
|
setdvar("so_ophud_" + self.unique_id,"1");
|
|
break;
|
|
}
|
|
|
|
self notify("update_challenge_timer");
|
|
}
|
|
}
|
|
|
|
//Function Number: 80
|
|
info_hud_wait_force_on()
|
|
{
|
|
self endon("so_hud_toggle_available");
|
|
notifyoncommand("force_challenge_timer","+actionslot 1");
|
|
self waittill("force_challenge_timer");
|
|
self.so_hud_show_time = gettime();
|
|
self.so_infohud_toggle_state = "on";
|
|
setdvar("so_ophud_" + self.unique_id,"1");
|
|
}
|
|
|
|
//Function Number: 81
|
|
info_hud_start_state()
|
|
{
|
|
if(getdvarint("so_ophud_" + self.unique_id) == 1)
|
|
{
|
|
self.so_hud_show_time = gettime() + 1000;
|
|
return "on";
|
|
}
|
|
|
|
if(isdefined(level.challenge_time_limit))
|
|
{
|
|
return "on";
|
|
}
|
|
|
|
if(isdefined(level.challenge_time_force_on) && level.challenge_time_force_on)
|
|
{
|
|
return "on";
|
|
}
|
|
|
|
return "off";
|
|
}
|
|
|
|
//Function Number: 82
|
|
info_hud_handle_fade(param_00,param_01)
|
|
{
|
|
level endon("new_challenge_timer");
|
|
level endon("challenge_timer_expired");
|
|
level endon("challenge_timer_passed");
|
|
level endon("special_op_terminated");
|
|
self endon("death");
|
|
if(isdefined(param_01))
|
|
{
|
|
level endon(param_01);
|
|
}
|
|
|
|
param_00.so_can_toggle = 1;
|
|
maps\_utility::ent_flag_wait("so_hud_can_toggle");
|
|
info_hud_update_alpha(param_00);
|
|
for(;;)
|
|
{
|
|
self waittill("update_challenge_timer");
|
|
param_00 fadeovertime(0.25);
|
|
info_hud_update_alpha(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 83
|
|
info_hud_update_alpha(param_00)
|
|
{
|
|
switch(self.so_infohud_toggle_state)
|
|
{
|
|
case "on":
|
|
param_00.alpha = 1;
|
|
break;
|
|
|
|
case "off":
|
|
param_00.alpha = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Function Number: 84
|
|
info_hud_decrement_timer(param_00)
|
|
{
|
|
if(!isdefined(level.challenge_time_limit))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(common_scripts\utility::flag("challenge_timer_expired") || common_scripts\utility::flag("challenge_timer_passed"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
level.so_challenge_time_left = level.so_challenge_time_left - param_00;
|
|
if(level.so_challenge_time_left < 0)
|
|
{
|
|
level.so_challenge_time_left = 0.01;
|
|
}
|
|
|
|
var_01 = (0.6,0.2,0.2);
|
|
var_02 = (0.4,0.1,0.1);
|
|
foreach(var_04 in level.players)
|
|
{
|
|
var_04.hud_so_timer_time settenthstimer(level.so_challenge_time_left);
|
|
}
|
|
|
|
thread maps\_specialops_code::challenge_timer_thread();
|
|
}
|
|
|
|
//Function Number: 85
|
|
is_dvar_character_switcher(param_00)
|
|
{
|
|
var_01 = getdvar(param_00);
|
|
return var_01 == "so_char_client" || var_01 == "so_char_host";
|
|
}
|
|
|
|
//Function Number: 86
|
|
has_been_played()
|
|
{
|
|
var_00 = tablelookup("sp/specOpsTable.csv",1,level.script,9);
|
|
if(var_00 == "")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
foreach(var_02 in level.players)
|
|
{
|
|
var_03 = var_02 getlocalplayerprofiledata(var_00);
|
|
if(!isdefined(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_03 != 0)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 87
|
|
is_best_wave(param_00)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 88
|
|
is_best_time(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
if(isdefined(level.challenge_start_time))
|
|
{
|
|
param_00 = level.challenge_start_time;
|
|
}
|
|
else
|
|
{
|
|
param_00 = 300;
|
|
}
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = gettime();
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 0;
|
|
}
|
|
|
|
var_03 = param_01 - param_00;
|
|
var_03 = int(min(var_03,86400000));
|
|
var_04 = tablelookup("sp/specOpsTable.csv",1,level.script,9);
|
|
if(var_04 == "")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
foreach(var_06 in level.players)
|
|
{
|
|
var_07 = var_06 getlocalplayerprofiledata(var_04);
|
|
if(!isdefined(var_07))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_08 = var_07 == 0;
|
|
if(var_08)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_07 = var_07 - var_07 * param_02;
|
|
if(var_03 < var_07)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 89
|
|
is_poor_time(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
if(isdefined(level.challenge_start_time))
|
|
{
|
|
param_00 = level.challenge_start_time;
|
|
}
|
|
else
|
|
{
|
|
param_00 = 300;
|
|
}
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = gettime();
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 0;
|
|
}
|
|
|
|
var_03 = param_01 - param_00;
|
|
var_04 = level.challenge_time_limit * 1000;
|
|
var_04 = var_04 - var_04 * param_02;
|
|
return var_03 > var_04;
|
|
}
|
|
|
|
//Function Number: 90
|
|
so_dialog_ready_up()
|
|
{
|
|
if(isdefined(level.civilian_warning_time["ready_up"]))
|
|
{
|
|
[[ level.civilian_warning_time["ready_up"] ]]();
|
|
return;
|
|
}
|
|
|
|
maps\_specialops_code::so_dialog_play("so_tf_1_plyr_prep",0,1);
|
|
}
|
|
|
|
//Function Number: 91
|
|
so_dialog_mission_success(param_00)
|
|
{
|
|
if(!maps\_utility::is_survival() && is_best_time(level.challenge_start_time,level.challenge_end_time))
|
|
{
|
|
if(isdefined(level.civilian_warning_time["success_best"]))
|
|
{
|
|
thread [[ level.civilian_warning_time["success_best"] ]]();
|
|
return;
|
|
}
|
|
|
|
thread maps\_specialops_code::so_dialog_play("so_tf_1_success_best",0.5,1);
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = 0;
|
|
if(level.gameskill >= 3)
|
|
{
|
|
if(has_been_played())
|
|
{
|
|
param_00 = common_scripts\utility::cointoss();
|
|
}
|
|
}
|
|
}
|
|
|
|
if(isdefined(level.civilian_warning_time["success_generic"]))
|
|
{
|
|
[[ level.civilian_warning_time["success_generic"] ]](param_00);
|
|
return;
|
|
}
|
|
|
|
if(param_00)
|
|
{
|
|
maps\_specialops_code::so_dialog_play("so_tf_1_success_jerk",0.5,1);
|
|
return;
|
|
}
|
|
|
|
maps\_specialops_code::so_dialog_play("so_tf_1_success_generic",0.5,1);
|
|
}
|
|
|
|
//Function Number: 92
|
|
so_dialog_mission_failed(param_00)
|
|
{
|
|
if(isdefined(level.so_dialog_func_override) && level.so_dialog_func_override)
|
|
{
|
|
return;
|
|
}
|
|
|
|
level.so_dialog_func_override = 1;
|
|
maps\_specialops_code::so_dialog_play(param_00,0.5,1);
|
|
}
|
|
|
|
//Function Number: 93
|
|
so_dialog_mission_failed_generic()
|
|
{
|
|
if(isdefined(level.civilian_warning_time["failed_generic"]))
|
|
{
|
|
[[ level.civilian_warning_time["failed_generic"] ]]();
|
|
return;
|
|
}
|
|
|
|
if(level.gameskill <= 2 || common_scripts\utility::cointoss())
|
|
{
|
|
so_dialog_mission_failed("so_tf_1_fail_generic");
|
|
return;
|
|
}
|
|
|
|
so_dialog_mission_failed("so_tf_1_fail_generic_jerk");
|
|
}
|
|
|
|
//Function Number: 94
|
|
so_dialog_mission_failed_time()
|
|
{
|
|
if(isdefined(level.civilian_warning_time["failed_time"]))
|
|
{
|
|
[[ level.civilian_warning_time["failed_time"] ]]();
|
|
return;
|
|
}
|
|
|
|
so_dialog_mission_failed("so_tf_1_fail_time");
|
|
}
|
|
|
|
//Function Number: 95
|
|
so_dialog_mission_failed_bleedout()
|
|
{
|
|
if(isdefined(level.civilian_warning_time["failed_bleedout"]))
|
|
{
|
|
[[ level.civilian_warning_time["failed_bleedout"] ]]();
|
|
return;
|
|
}
|
|
|
|
so_dialog_mission_failed("so_tf_1_fail_bleedout");
|
|
}
|
|
|
|
//Function Number: 96
|
|
so_dialog_time_low_normal()
|
|
{
|
|
if(isdefined(level.civilian_warning_time["time_low_normal"]))
|
|
{
|
|
[[ level.civilian_warning_time["time_low_normal"] ]]();
|
|
return;
|
|
}
|
|
|
|
maps\_specialops_code::so_dialog_play("so_tf_1_time_generic");
|
|
}
|
|
|
|
//Function Number: 97
|
|
so_dialog_time_low_hurry()
|
|
{
|
|
if(isdefined(level.civilian_warning_time["time_low_hurry"]))
|
|
{
|
|
[[ level.civilian_warning_time["time_low_hurry"] ]]();
|
|
return;
|
|
}
|
|
|
|
maps\_specialops_code::so_dialog_play("so_tf_1_time_hurry");
|
|
}
|
|
|
|
//Function Number: 98
|
|
so_dialog_killing_civilians()
|
|
{
|
|
if(!isdefined(level.so_progress_goal_status))
|
|
{
|
|
level.so_progress_goal_status = gettime();
|
|
if(!isdefined(level.var_187E))
|
|
{
|
|
level.var_187E = 5000;
|
|
}
|
|
}
|
|
else if(gettime() - level.so_progress_goal_status < level.var_187E)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = 0.5;
|
|
level.so_progress_goal_status = gettime() + var_00 * 1000;
|
|
if(isdefined(level.civilian_warning_time["killing_civilians"]))
|
|
{
|
|
[[ level.civilian_warning_time["killing_civilians"] ]]();
|
|
return;
|
|
}
|
|
|
|
maps\_specialops_code::so_dialog_play("so_tf_1_civ_kill_warning",0.5);
|
|
}
|
|
|
|
//Function Number: 99
|
|
so_dialog_progress_update(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level.var_1880))
|
|
{
|
|
level.var_1880 = "none";
|
|
}
|
|
|
|
var_02 = undefined;
|
|
switch(level.var_1880)
|
|
{
|
|
case "none":
|
|
var_02 = 0.75;
|
|
break;
|
|
|
|
case "3quarter":
|
|
var_02 = 0.5;
|
|
break;
|
|
|
|
case "half":
|
|
var_02 = 0.25;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
var_03 = param_01 * var_02;
|
|
if(param_00 > var_03)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_04 = undefined;
|
|
switch(level.var_1880)
|
|
{
|
|
case "none":
|
|
level.var_1880 = "3quarter";
|
|
var_04 = "so_tf_1_progress_3quarter";
|
|
break;
|
|
|
|
case "3quarter":
|
|
level.var_1880 = "half";
|
|
var_04 = "so_tf_1_progress_half";
|
|
break;
|
|
|
|
case "half":
|
|
level.var_1880 = "quarter";
|
|
var_04 = "so_tf_1_progress_quarter";
|
|
break;
|
|
}
|
|
|
|
if(isdefined(level.civilian_warning_time["progress_goal_status"]))
|
|
{
|
|
[[ level.civilian_warning_time["progress_goal_status"] ]]();
|
|
return;
|
|
}
|
|
|
|
maps\_specialops_code::so_dialog_play(var_04,0.5);
|
|
}
|
|
|
|
//Function Number: 100
|
|
so_dialog_progress_update_time_quality(param_00)
|
|
{
|
|
if(isdefined(level.challenge_time_limit))
|
|
{
|
|
if(is_poor_time(level.challenge_start_time,gettime(),param_00))
|
|
{
|
|
if(isdefined(level.civilian_warning_time["time_status_late"]))
|
|
{
|
|
[[ level.civilian_warning_time["time_status_late"] ]]();
|
|
return;
|
|
}
|
|
|
|
maps\_specialops_code::so_dialog_play("so_tf_1_time_status_late",0.2);
|
|
return;
|
|
}
|
|
}
|
|
|
|
if(is_best_time(level.challenge_start_time,gettime(),param_00))
|
|
{
|
|
if(isdefined(level.civilian_warning_time["time_status_good"]))
|
|
{
|
|
[[ level.civilian_warning_time["time_status_good"] ]]();
|
|
return;
|
|
}
|
|
|
|
maps\_specialops_code::so_dialog_play("so_tf_1_time_status_good",0.2);
|
|
}
|
|
}
|
|
|
|
//Function Number: 101
|
|
so_dialog_counter_update(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(level.var_1883))
|
|
{
|
|
level.var_1883 = 0;
|
|
}
|
|
|
|
if(gettime() < level.var_1883)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 1;
|
|
}
|
|
|
|
var_03 = int(param_00 / param_02);
|
|
if(var_03 > 5)
|
|
{
|
|
if(!isdefined(level.var_1884) || !level.var_1884)
|
|
{
|
|
thread so_dialog_progress_update(param_00,param_01);
|
|
level.var_1883 = gettime() + 800;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(isdefined(level.civilian_warning_time["progress"]))
|
|
{
|
|
thread [[ level.civilian_warning_time["progress"] ]](var_03);
|
|
}
|
|
else
|
|
{
|
|
switch(var_03)
|
|
{
|
|
case 5:
|
|
thread maps\_specialops_code::so_dialog_play("so_tf_1_progress_5more",0.5);
|
|
break;
|
|
|
|
case 4:
|
|
thread maps\_specialops_code::so_dialog_play("so_tf_1_progress_4more",0.5);
|
|
break;
|
|
|
|
case 3:
|
|
thread maps\_specialops_code::so_dialog_play("so_tf_1_progress_3more",0.5);
|
|
break;
|
|
|
|
case 2:
|
|
thread maps\_specialops_code::so_dialog_play("so_tf_1_progress_2more",0.5);
|
|
break;
|
|
|
|
case 1:
|
|
thread maps\_specialops_code::so_dialog_play("so_tf_1_progress_1more",0.5);
|
|
break;
|
|
}
|
|
}
|
|
|
|
level.var_1883 = gettime() + 800;
|
|
}
|
|
|
|
//Function Number: 102
|
|
so_crush_player(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_00.coop_death_reason))
|
|
{
|
|
param_00.coop_death_reason = [];
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = "MOD_EXPLOSIVE";
|
|
}
|
|
|
|
param_00.coop_death_reason["attacker"] = self;
|
|
param_00.coop_death_reason["cause"] = param_01;
|
|
param_00.coop_death_reason["weapon_name"] = "none";
|
|
param_00 maps\_utility::kill_wrapper();
|
|
}
|
|
|
|
//Function Number: 103
|
|
get_previously_completed_difficulty()
|
|
{
|
|
var_00 = level.specopssettings maps\_endmission::getlevelindex(level.script);
|
|
var_01 = int(self getlocalplayerprofiledata("missionSOHighestDifficulty")[var_00]);
|
|
var_01 = int(max(0,var_01));
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 104
|
|
so_hud_stars_precache()
|
|
{
|
|
precacheshader("difficulty_star");
|
|
}
|
|
|
|
//Function Number: 105
|
|
so_hud_stars_init(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
level.so_hud_star_count = [];
|
|
level.so_hud_star_count["regular"] = param_02;
|
|
level.so_hud_star_count["hardened"] = param_03;
|
|
level.so_hud_star_count["veteran"] = param_04;
|
|
param_05 = common_scripts\utility::ter_op(isdefined(param_05),param_05,4);
|
|
self.var_188E = [];
|
|
thread so_hud_stars_single_think(param_00,param_01,0,level.so_hud_star_count["regular"],"regular",param_05);
|
|
thread so_hud_stars_single_think(param_00,param_01,1,level.so_hud_star_count["hardened"],"hardened",param_05);
|
|
thread so_hud_stars_single_think(param_00,param_01,2,level.so_hud_star_count["veteran"],"veteran",param_05);
|
|
}
|
|
|
|
//Function Number: 106
|
|
so_hud_stars_single_think(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
level endon("special_op_terminated");
|
|
level endon(param_01);
|
|
if(!isdefined(self.var_1890))
|
|
{
|
|
self.var_1890 = 0;
|
|
}
|
|
|
|
self.var_1890++;
|
|
var_06 = 25;
|
|
var_07 = so_hud_ypos();
|
|
var_08 = so_create_hud_item(param_05,var_07,undefined,self);
|
|
var_08.x = var_08.x - param_02 * var_06 - 30;
|
|
var_08.y = var_08.y + 5;
|
|
var_08 setshader("difficulty_star",25,25);
|
|
common_scripts\utility::flag_wait(param_00);
|
|
thread so_hud_stars_single_force_alpha_end(var_08,param_01);
|
|
if(param_03 < 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
thread so_hud_stars_sound_and_flash(var_08,param_03,param_01);
|
|
level common_scripts\utility::waittill_any_timeout(param_03,"star_hud_remove_" + param_04);
|
|
waittillframeend;
|
|
if(common_scripts\utility::flag(param_01))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.var_1890--;
|
|
var_08 destroy();
|
|
}
|
|
|
|
//Function Number: 107
|
|
so_hud_stars_remove(param_00)
|
|
{
|
|
foreach(var_02 in level.players)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
if(!isdefined(var_02.var_188E["veteran"]))
|
|
{
|
|
param_00 = "veteran";
|
|
}
|
|
else if(!isdefined(var_02.var_188E["hardened"]))
|
|
{
|
|
param_00 = "hardened";
|
|
}
|
|
else if(!isdefined(var_02.var_188E["regular"]))
|
|
{
|
|
param_00 = "regular";
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_02.var_188E[param_00]))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(param_00 == "hardened" && !isdefined(var_02.var_188E["veteran"]))
|
|
{
|
|
return;
|
|
}
|
|
else if(param_00 == "regular" && !isdefined(var_02.var_188E["veteran"]) || !isdefined(var_02.var_188E["hardened"]))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02.var_188E[param_00] = 1;
|
|
level notify("star_hud_remove_" + param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 108
|
|
so_hud_stars_validate_difficulty(param_00)
|
|
{
|
|
switch(param_00)
|
|
{
|
|
case "regular":
|
|
case "veteran":
|
|
case "hardened":
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Function Number: 109
|
|
so_hud_stars_sound_and_flash(param_00,param_01,param_02)
|
|
{
|
|
param_00 endon("death");
|
|
level endon(param_02);
|
|
level endon("special_op_terminated");
|
|
var_03 = 5;
|
|
var_04 = param_01 - var_03;
|
|
wait var_04;
|
|
for(var_05 = 0;var_05 < var_03;var_05++)
|
|
{
|
|
self playlocalsound("star_tick");
|
|
param_00.alpha = 1;
|
|
wait 0.5;
|
|
param_00.alpha = 0.3;
|
|
wait 0.5;
|
|
}
|
|
|
|
self playlocalsound("star_lost");
|
|
}
|
|
|
|
//Function Number: 110
|
|
so_hud_stars_single_force_alpha_end(param_00,param_01)
|
|
{
|
|
param_00 endon("death");
|
|
common_scripts\utility::flag_wait(param_01);
|
|
waittillframeend;
|
|
param_00.alpha = 1;
|
|
}
|
|
|
|
//Function Number: 111
|
|
unlock_hint()
|
|
{
|
|
wait 0.05;
|
|
foreach(var_01 in level.players)
|
|
{
|
|
var_01 thread unlock_hint_think();
|
|
}
|
|
}
|
|
|
|
//Function Number: 112
|
|
unlock_hint_think()
|
|
{
|
|
surhud_disable("unlock");
|
|
for(var_00 = 0;var_00 < 3;var_00++)
|
|
{
|
|
unlock_hint_reset(var_00);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
self waittill("update_rank");
|
|
waittillframeend;
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = maps\_rank::getrank();
|
|
var_02 = level.unlock_array[var_01];
|
|
if(isdefined(var_02))
|
|
{
|
|
for(var_00 = 0;var_00 < 3;var_00++)
|
|
{
|
|
var_03 = var_02[var_00];
|
|
if(isdefined(var_03))
|
|
{
|
|
register_recent_unlock(var_03);
|
|
_setplayerdata_array("surHUD_unlock_hint_" + var_00,"name",var_03.name);
|
|
_setplayerdata_array("surHUD_unlock_hint_" + var_00,"icon",var_03.icon);
|
|
_setplayerdata_array("surHUD_unlock_hint_" + var_00,"mode",var_03.mode);
|
|
continue;
|
|
}
|
|
|
|
unlock_hint_reset(var_00);
|
|
}
|
|
|
|
surhud_animate("unlock");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 113
|
|
register_recent_unlock(param_00)
|
|
{
|
|
if(!param_00.var_1DD)
|
|
{
|
|
var_01 = tablelookup("sp/survival_armories.csv",1,param_00.ref,2);
|
|
var_02 = int(1 + var_01 == "weapon");
|
|
var_03 = tablelookup("sp/survival_armories.csv",1,param_00.ref,6);
|
|
var_04 = param_00.var_189B;
|
|
pass_recent_item_unlock("recent_item_2","recent_item_3");
|
|
pass_recent_item_unlock("recent_item_1","recent_item_2");
|
|
_setplayerdata_array("recent_item_1","name",param_00.name);
|
|
_setplayerdata_array("recent_item_1","icon",var_03);
|
|
_setplayerdata_array("recent_item_1","desc",var_04);
|
|
_setplayerdata_array("recent_item_1","icon_width_ratio",var_02);
|
|
return;
|
|
}
|
|
|
|
var_05 = self getplayerdata("recent_feature_1","name");
|
|
_setplayerdata_array("recent_feature_2","name",var_05);
|
|
_setplayerdata_array("recent_feature_1","name",param_00.name);
|
|
}
|
|
|
|
//Function Number: 114
|
|
pass_recent_item_unlock(param_00,param_01)
|
|
{
|
|
var_02 = self getplayerdata(param_00,"name");
|
|
var_03 = self getplayerdata(param_00,"desc");
|
|
var_04 = self getplayerdata(param_00,"icon");
|
|
var_05 = self getplayerdata(param_00,"icon_width_ratio");
|
|
_setplayerdata_array(param_01,"name",var_02);
|
|
_setplayerdata_array(param_01,"desc",var_03);
|
|
_setplayerdata_array(param_01,"icon",var_04);
|
|
_setplayerdata_array(param_01,"icon_width_ratio",var_05);
|
|
}
|
|
|
|
//Function Number: 115
|
|
unlock_hint_reset(param_00)
|
|
{
|
|
_setplayerdata_array("surHUD_unlock_hint_" + param_00,"name","");
|
|
_setplayerdata_array("surHUD_unlock_hint_" + param_00,"icon","");
|
|
_setplayerdata_array("surHUD_unlock_hint_" + param_00,"mode","");
|
|
}
|
|
|
|
//Function Number: 116
|
|
surhud_animate(param_00)
|
|
{
|
|
level endon("special_op_terminated");
|
|
self endon("stop_animate_" + param_00);
|
|
thread surhud_animate_endon_clear("stop_animate_" + param_00);
|
|
if(!isdefined(self.surhud_busy))
|
|
{
|
|
self.surhud_busy = 0;
|
|
}
|
|
|
|
while(self.surhud_busy)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
self.surhud_busy = 1;
|
|
if(!surhud_is_enabled(param_00))
|
|
{
|
|
surhud_enable(param_00);
|
|
}
|
|
|
|
_setplayerdata_single("surHUD_set_animate",param_00);
|
|
wait 0.05;
|
|
self openmenu("surHUD_display");
|
|
wait 0.05;
|
|
self.surhud_busy = 0;
|
|
self notify("surHUD_free");
|
|
}
|
|
|
|
//Function Number: 117
|
|
surhud_animate_endon_clear(param_00)
|
|
{
|
|
self endon("surHUD_free");
|
|
self waittill(param_00);
|
|
self.surhud_busy = 0;
|
|
}
|
|
|
|
//Function Number: 118
|
|
surhud_challenge_label(param_00,param_01)
|
|
{
|
|
if(isdefined(self))
|
|
{
|
|
_setplayerdata_array("surHUD_challenge_label","slot_" + param_00,param_01);
|
|
}
|
|
}
|
|
|
|
//Function Number: 119
|
|
surhud_challenge_progress(param_00,param_01)
|
|
{
|
|
if(isdefined(self))
|
|
{
|
|
_setplayerdata_array("surHUD_challenge_progress","slot_" + param_00,param_01);
|
|
}
|
|
}
|
|
|
|
//Function Number: 120
|
|
surhud_challenge_reward(param_00,param_01)
|
|
{
|
|
if(isdefined(self))
|
|
{
|
|
_setplayerdata_array("surHUD_challenge_reward","slot_" + param_00,param_01);
|
|
}
|
|
}
|
|
|
|
//Function Number: 121
|
|
surhud_is_enabled(param_00)
|
|
{
|
|
if(isdefined(self) && self getplayerdata("surHUD",param_00))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 122
|
|
surhud_enable(param_00)
|
|
{
|
|
if(isdefined(self))
|
|
{
|
|
_setplayerdata_array("surHUD",param_00,1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 123
|
|
surhud_disable(param_00)
|
|
{
|
|
if(isdefined(self))
|
|
{
|
|
_setplayerdata_array("surHUD",param_00,0);
|
|
}
|
|
}
|
|
|
|
//Function Number: 124
|
|
_setplayerdata_single(param_00,param_01)
|
|
{
|
|
self setplayerdata(param_00,param_01);
|
|
}
|
|
|
|
//Function Number: 125
|
|
_setplayerdata_array(param_00,param_01,param_02)
|
|
{
|
|
self setplayerdata(param_00,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 126
|
|
so_achievement_init()
|
|
{
|
|
wait 0.05;
|
|
foreach(var_01 in level.players)
|
|
{
|
|
var_01 thread so_achievement_reset();
|
|
}
|
|
}
|
|
|
|
//Function Number: 127
|
|
so_achievement_reset()
|
|
{
|
|
if(!isdefined(self.var_1E4))
|
|
{
|
|
self.var_1E4 = [];
|
|
}
|
|
|
|
self.var_1E4["ARMS_DEALER"] = 0;
|
|
self.var_1E4["DANGER_ZONE"] = 0;
|
|
self.var_1E4["DEFENSE_SPENDING"] = 0;
|
|
self.var_1E4["SURVIVOR"] = 0;
|
|
self.var_1E4["UNSTOPPABLE"] = 0;
|
|
}
|
|
|
|
//Function Number: 128
|
|
so_achievement_update(param_00,param_01)
|
|
{
|
|
if(maps\_utility::is_survival())
|
|
{
|
|
switch(param_00)
|
|
{
|
|
case "DEFENSE_SPENDING":
|
|
case "DANGER_ZONE":
|
|
case "ARMS_DEALER":
|
|
thread so_achievement_item_collection(param_00,param_01);
|
|
break;
|
|
|
|
case "SURVIVOR":
|
|
thread so_achievement_wave_count(param_00,9);
|
|
break;
|
|
|
|
case "UNSTOPPABLE":
|
|
thread so_achievement_wave_count(param_00,14);
|
|
break;
|
|
|
|
case "GET_RICH_OR_DIE_TRYING":
|
|
case "I_LIVE":
|
|
thread maps\_utility::player_giveachievement_wrapper(param_00);
|
|
break;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
switch(param_00)
|
|
{
|
|
case "BRAG_RAGS":
|
|
thread maps\_utility::player_giveachievement_wrapper(param_00);
|
|
break;
|
|
|
|
case "TACTICIAN":
|
|
thread so_achievement_star_count(param_00,1);
|
|
break;
|
|
|
|
case "OVERACHIEVER":
|
|
thread so_achievement_star_count(param_00,3);
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Function Number: 129
|
|
so_achievement_item_collection(param_00,param_01)
|
|
{
|
|
if(self.var_1E4[param_00])
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = level.armory_all_items[param_01].type;
|
|
if(self getplayerdata(var_02 + "_purchased",param_01) == 0)
|
|
{
|
|
self setplayerdata(var_02 + "_purchased",param_01,1);
|
|
}
|
|
else
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_03 = 0;
|
|
if(var_02 == "weapon" || var_02 == "weaponupgrade")
|
|
{
|
|
var_03 = is_purchase_collection_complete("weapon","weapon_purchased") && is_purchase_collection_complete("weaponupgrade","weaponupgrade_purchased");
|
|
}
|
|
else
|
|
{
|
|
var_03 = is_purchase_collection_complete(var_02,var_02 + "_purchased");
|
|
}
|
|
|
|
if(var_03)
|
|
{
|
|
maps\_utility::player_giveachievement_wrapper(param_00);
|
|
self.var_1E4[param_00] = 1;
|
|
}
|
|
}
|
|
|
|
//Function Number: 130
|
|
is_purchase_collection_complete(param_00,param_01)
|
|
{
|
|
foreach(var_03 in level.armory[param_00])
|
|
{
|
|
if(self getplayerdata(param_01,var_03.ref) == 0)
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 131
|
|
so_achievement_wave_count(param_00,param_01)
|
|
{
|
|
if(self.var_1E4[param_00])
|
|
{
|
|
return;
|
|
}
|
|
|
|
for(var_02 = 0;var_02 < 16;var_02++)
|
|
{
|
|
var_03 = level.specopssettings.levels[var_02].name;
|
|
var_04 = tablelookup("sp/specOpsTable.csv",1,var_03,9);
|
|
var_05 = int(self getlocalplayerprofiledata(var_04) / 1000);
|
|
if(var_03 == level.script)
|
|
{
|
|
var_05 = level.current_wave;
|
|
}
|
|
|
|
if(var_05 < param_01)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
maps\_utility::player_giveachievement_wrapper(param_00);
|
|
self.var_1E4[param_00] = 1;
|
|
if(param_00 == "UNSTOPPABLE")
|
|
{
|
|
self setplayerdata("challengeState","ch_unstoppable",2);
|
|
}
|
|
}
|
|
|
|
//Function Number: 132
|
|
so_achievement_star_count(param_00,param_01)
|
|
{
|
|
for(var_02 = 16;var_02 < 32;var_02++)
|
|
{
|
|
var_03 = level.specopssettings.levels[var_02].name;
|
|
var_04 = int(self getlocalplayerprofiledata("missionSOHighestDifficulty")[var_02]);
|
|
var_04 = int(max(0,var_04)) - 1;
|
|
if(var_04 < param_01)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
maps\_utility::player_giveachievement_wrapper(param_00);
|
|
if(param_00 == "OVERACHIEVER")
|
|
{
|
|
self setplayerdata("challengeState","ch_overachiever",2);
|
|
}
|
|
} |