mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-21 23:47:52 -05:00
1998 lines
45 KiB
Plaintext
1998 lines
45 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\_arcademode.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: PC
|
|
* Function Count: 63
|
|
* Decompile Time: 1079 ms
|
|
* Timestamp: 10/27/2023 2:22:08 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
main()
|
|
{
|
|
precachestring(&"SCRIPT_COLON");
|
|
precachestring(&"SCRIPT_TIME_REMAINING");
|
|
precachestring(&"SCRIPT_TOTAL_SCORE");
|
|
precachestring(&"SCRIPT_EXTRA_LIFE");
|
|
precachestring(&"SCRIPT_CHECKPOINT");
|
|
precachestring(&"SCRIPT_MISSION_SCORE");
|
|
precachestring(&"SCRIPT_ZERO_DEATHS");
|
|
precachestring(&"SCRIPT_PLUS");
|
|
precachestring(&"SCRIPT_TIME_UP");
|
|
precachestring(&"SCRIPT_1UP");
|
|
precachestring(&"SCRIPT_GAME_OVER");
|
|
precachestring(&"SCRIPT_DIFFICULTY_BONUS_ONEANDAHALF");
|
|
precachestring(&"SCRIPT_DIFFICULTY_BONUS_THREE");
|
|
precachestring(&"SCRIPT_DIFFICULTY_BONUS_FOUR");
|
|
precachestring(&"SCRIPT_MISSION_COMPLETE");
|
|
precachestring(&"SCRIPT_NEW_HIGH_SCORE");
|
|
precachestring(&"SCRIPT_STREAK_BONUS_LOST");
|
|
precachestring(&"SCRIPT_STREAK_COMPLETE");
|
|
precachestring(&"SCRIPT_X");
|
|
precacheshader("arcademode_life");
|
|
level.color_cool_green = (0.8,2,0.8);
|
|
level.color_cool_green_glow = (0.3,0.6,0.3);
|
|
arcademode_init_kill_streak_colors();
|
|
level.arcademode_checkpoint_dvars = [];
|
|
level.arcademode_checkpoint_max = 10;
|
|
level.arcademode_kills_hud = [];
|
|
level.arcademode_kill_streak_ends = 0;
|
|
level.arcademode_last_streak_time = 0;
|
|
level.arcademode_ramping_score = 0;
|
|
level.arcademode_new_kill_streak_allowed = 1;
|
|
common_scripts\utility::flag_init("arcadeMode_multiplier_maxed");
|
|
setdvar("arcademode_lives_changed",0);
|
|
level.arcademode_kill_streak_current_multiplier = 1;
|
|
level.arcademode_kill_streak_multiplier_count = 3;
|
|
arcademode_reset_kill_streak();
|
|
for(var_00 = 0;var_00 < level.arcademode_checkpoint_max;var_00++)
|
|
{
|
|
setdvar("arcademode_checkpoint_" + var_00,"");
|
|
}
|
|
|
|
level.arcademode_last_multi_kill_sound = 0;
|
|
level.arcademode_success = 0;
|
|
arcademode_define_damage_multipliers();
|
|
common_scripts\utility::flag_init("arcademode_complete");
|
|
common_scripts\utility::flag_init("arcademode_ending_complete");
|
|
waittillframeend;
|
|
level.global_kill_func = ::player_kill;
|
|
level.global_damage_func_ads = ::player_damage_ads;
|
|
level.global_damage_func = ::player_damage;
|
|
level.arcademode_hud_sort = 50;
|
|
level.arcademode_maxlives = 10;
|
|
level.arcademode_rewarded_lives = 0;
|
|
if(getdvar("arcademode_lives") == "" || getdvar("arcademode_full") != "1" || level.script == "cargoship")
|
|
{
|
|
setdvar("arcademode_lives",2);
|
|
level.arcademode_rewarded_lives = 2;
|
|
}
|
|
|
|
if(getdvar("arcademode_full") == "1" && level.script == "cargoship")
|
|
{
|
|
setdvar("arcademode_lives",5);
|
|
level.arcademode_rewarded_lives = 5;
|
|
}
|
|
|
|
var_01 = getdvarint("arcadeMode_lives");
|
|
setdvar("arcademode_earned_lives",var_01);
|
|
level.arcademode_playthrough = getdvarint("arcademode_playthrough_count");
|
|
level.arcademode_playthrough++;
|
|
setdvar("arcademode_playthrough_count",level.arcademode_playthrough);
|
|
setdvar("arcademode_died",0);
|
|
setdvar("arcademode_score",0);
|
|
if(getdvar("arcademode_combined_score") == "" || getdvar("arcademode_full") == "1" && level.script == "cargoship")
|
|
{
|
|
setdvar("arcademode_combined_score",0);
|
|
}
|
|
|
|
var_02 = arcademode_get_level_time();
|
|
var_02 = var_02 * 60;
|
|
level.arcdemode_starttime = gettime();
|
|
level.arcademode_time = var_02;
|
|
level.arcademode_killbase = 50;
|
|
level.arcademode_damagebase = 5;
|
|
level.arcademode_multikills = [];
|
|
var_03 = getarraykeys(level.arcademode_weaponmultiplier);
|
|
for(var_00 = 0;var_00 < var_03.size;var_00++)
|
|
{
|
|
level.arcademode_multikills[var_03[var_00]] = [];
|
|
}
|
|
|
|
var_04 = level.arcademode_multikills;
|
|
thread arcademode_update_lives();
|
|
thread arcademode_update_score();
|
|
thread arcademode_update_timer();
|
|
thread arcademode_death_detection();
|
|
arcademode_redraw_lives(var_01);
|
|
for(;;)
|
|
{
|
|
wait 0.05;
|
|
waittillframeend;
|
|
waittillframeend;
|
|
var_03 = getarraykeys(level.arcademode_multikills);
|
|
common_scripts\utility::array_levelthread(var_03,::arcademode_add_points_for_mod);
|
|
level.arcademode_multikills = var_04;
|
|
}
|
|
}
|
|
|
|
//Function Number: 2
|
|
arcademode_complete()
|
|
{
|
|
if(getdvar("arcademode") != "1")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return common_scripts\utility::flag("arcademode_complete");
|
|
}
|
|
|
|
//Function Number: 3
|
|
arcademode_get_level_time()
|
|
{
|
|
var_00 = 20;
|
|
var_01 = [];
|
|
var_02 = 1;
|
|
if(isdefined(var_01[level.script]))
|
|
{
|
|
var_00 = var_01[level.script];
|
|
}
|
|
|
|
level.arcademode_difficultytimerscale = var_02;
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 4
|
|
arcademode_death_detection()
|
|
{
|
|
level endon("arcademode_complete");
|
|
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();
|
|
setdvar("arcademode_died",1);
|
|
var_00 = getdvarint("arcademode_lives");
|
|
var_01 = getdvarint("arcademode_earned_lives");
|
|
if(var_00 > var_01)
|
|
{
|
|
var_00 = var_01;
|
|
}
|
|
|
|
var_00 = var_00 - 1;
|
|
setdvar("arcademode_lives",var_00);
|
|
setdvar("arcademode_lives_changed",-1);
|
|
arcademode_redraw_lives(var_00 + 1);
|
|
level.arcademode_redraw_score = 1;
|
|
updatescoreelemsonce();
|
|
if(var_00 < 0)
|
|
{
|
|
wait 1.5;
|
|
level.arcademode_failurestring = &"SCRIPT_GAME_OVER";
|
|
thread arcademode_ends();
|
|
return;
|
|
}
|
|
|
|
if(isalive(level.player))
|
|
{
|
|
missionfailed();
|
|
}
|
|
}
|
|
|
|
//Function Number: 5
|
|
arcademode_update_timer()
|
|
{
|
|
level.player endon("death");
|
|
var_00 = newhudelem();
|
|
var_00.foreground = 1;
|
|
var_00.alignx = "right";
|
|
var_00.aligny = "top";
|
|
var_00.horzalign = "right";
|
|
var_00.vertalign = "top";
|
|
var_00.x = 0;
|
|
var_00.y = 60;
|
|
var_00.sort = level.arcademode_hud_sort;
|
|
var_00.fontscale = 3;
|
|
var_00.color = (0.8,1,0.8);
|
|
var_00.font = "objective";
|
|
var_00.glowcolor = (0.3,0.6,0.3);
|
|
var_00.glowalpha = 1;
|
|
var_00.hidewheninmenu = 1;
|
|
level.arcademode_hud_timer = var_00;
|
|
level endon("arcadeMode_remove_timer");
|
|
var_01 = level.arcademode_time;
|
|
var_00 settimer(var_01 - 0.1);
|
|
wait var_01;
|
|
level.arcademode_failurestring = &"SCRIPT_TIME_UP";
|
|
thread arcademode_ends();
|
|
}
|
|
|
|
//Function Number: 6
|
|
arcademode_update_lives()
|
|
{
|
|
level.player endon("death");
|
|
level endon("missionfailed");
|
|
level.arcademode_lives_hud = [];
|
|
for(var_00 = 0;var_00 < level.arcademode_maxlives;var_00++)
|
|
{
|
|
arcademode_add_life(var_00,16,78,-18,64,level.arcademode_hud_sort);
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
var_01 = getdvarint("arcademode_lives_changed");
|
|
if(var_01 != 0)
|
|
{
|
|
var_02 = getdvarint("arcademode_lives");
|
|
if(var_02 < 0)
|
|
{
|
|
level.arcademode_failurestring = &"SCRIPT_GAME_OVER";
|
|
thread arcademode_ends();
|
|
return;
|
|
}
|
|
|
|
if(var_01 == -1)
|
|
{
|
|
level notify("lost_streak");
|
|
level.arcademode_kill_streak_ends = gettime();
|
|
thread arcademode_add_kill_streak_time(0);
|
|
level.arcademode_new_kill_streak_allowed = 0;
|
|
var_03 = getdvarint("arcademode_earned_lives");
|
|
var_03--;
|
|
var_02 = var_03;
|
|
setdvar("arcademode_earned_lives",var_03);
|
|
setdvar("arcademode_lives",var_03);
|
|
}
|
|
|
|
arcademode_redraw_lives(var_02);
|
|
level.arcademode_redraw_score = 1;
|
|
setdvar("arcademode_lives_changed",0);
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 7
|
|
arcademode_convert_extra_lives()
|
|
{
|
|
var_00 = getdvarint("arcademode_lives");
|
|
var_01 = getdvarint("arcademode_earned_lives");
|
|
if(var_00 > var_01)
|
|
{
|
|
thread extra_lives_display(var_00 - var_01);
|
|
}
|
|
|
|
setdvar("arcademode_earned_lives",var_00);
|
|
thread arcademode_redraw_lives(var_00);
|
|
return var_00 > var_01;
|
|
}
|
|
|
|
//Function Number: 8
|
|
arcademode_checkpoint_print()
|
|
{
|
|
if(!maps\_utility::arcademode())
|
|
{
|
|
return;
|
|
}
|
|
|
|
arcademode_convert_extra_lives();
|
|
var_00 = 800;
|
|
var_01 = 0.8;
|
|
level.player thread common_scripts\utility::play_sound_in_space("arcademode_checkpoint",level.player geteye());
|
|
thread draw_checkpoint(var_00,var_01,1);
|
|
thread draw_checkpoint(var_00,var_01,-1);
|
|
}
|
|
|
|
//Function Number: 9
|
|
arcademode_redraw_life(param_00,param_01)
|
|
{
|
|
if(param_00 >= param_01)
|
|
{
|
|
self setshader("arcademode_life",64,64);
|
|
}
|
|
else
|
|
{
|
|
self setshader("stance_stand",64,64);
|
|
}
|
|
|
|
self fadeovertime(1);
|
|
self.alpha = 1;
|
|
self.glowalpha = 1;
|
|
self.color = level.color_cool_green;
|
|
}
|
|
|
|
//Function Number: 10
|
|
arcademode_remove_life(param_00)
|
|
{
|
|
if(self.alpha <= 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
self fadeovertime(1);
|
|
self.alpha = 0;
|
|
self.color = (1,0,0);
|
|
self.glowalpha = 0;
|
|
}
|
|
|
|
//Function Number: 11
|
|
arcademode_redraw_lives(param_00)
|
|
{
|
|
if(param_00 > 10)
|
|
{
|
|
param_00 = 10;
|
|
}
|
|
|
|
var_01 = getdvarint("arcademode_earned_lives");
|
|
for(var_02 = 0;var_02 < param_00;var_02++)
|
|
{
|
|
level.arcademode_lives_hud[var_02] arcademode_redraw_life(var_02,var_01);
|
|
}
|
|
|
|
for(var_02 = param_00;var_02 < level.arcademode_maxlives;var_02++)
|
|
{
|
|
if(var_02 < 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_02 >= 10)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
level.arcademode_lives_hud[var_02] arcademode_remove_life(var_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
arcademode_update_streak_progress()
|
|
{
|
|
for(;;)
|
|
{
|
|
level common_scripts\utility::waittill_either("arcademode_decrement_kill_streak","arcademode_new_kill");
|
|
waittillframeend;
|
|
arcademode_redraw_streak_progress();
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
arcademode_redraw_streak_progress()
|
|
{
|
|
for(var_00 = 0;var_00 < level.arcademode_kill_streak_current_count;var_00++)
|
|
{
|
|
if(var_00 >= level.arcademode_kills_hud.size)
|
|
{
|
|
return;
|
|
}
|
|
|
|
level.arcademode_kills_hud[var_00].color = level.arcademode_streak_color[level.arcademode_kill_streak_current_multiplier - 1];
|
|
level.arcademode_kills_hud[var_00].glowcolor = level.arcademode_streak_glow[level.arcademode_kill_streak_current_multiplier - 1];
|
|
}
|
|
|
|
var_01 = 0;
|
|
for(;;)
|
|
{
|
|
var_02 = level.arcademode_kill_streak_current_multiplier + var_01;
|
|
if(var_02 >= level.arcademode_streak_color.size)
|
|
{
|
|
var_02 = level.arcademode_streak_color.size - 1;
|
|
}
|
|
|
|
for(var_00 = level.arcademode_kill_streak_current_count + var_01 * level.arcademode_kill_streak_multiplier_count;var_00 < level.arcademode_kill_streak_current_count + var_01 + 1 * level.arcademode_kill_streak_multiplier_count;var_00++)
|
|
{
|
|
if(var_00 >= level.arcademode_kills_hud.size)
|
|
{
|
|
return;
|
|
}
|
|
|
|
level.arcademode_kills_hud[var_00].color = level.arcademode_streak_color[var_02];
|
|
level.arcademode_kills_hud[var_00].glowcolor = level.arcademode_streak_glow[var_02];
|
|
}
|
|
|
|
var_01++;
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
arcademode_add_kill(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
level endon("arcademode_stop_kill_streak_art");
|
|
var_06 = newhudelem();
|
|
var_06.foreground = 1;
|
|
var_06.x = param_01 + param_00 * param_03;
|
|
if(level.arcademode_kills_hud.size == 0)
|
|
{
|
|
level.arcademode_kill_zero_x_location = var_06.x;
|
|
}
|
|
|
|
var_06.y = param_02;
|
|
var_06 setshader("arcademode_kill",param_04,param_04);
|
|
var_06.alignx = "right";
|
|
var_06.aligny = "top";
|
|
var_06.horzalign = "right";
|
|
var_06.vertalign = "top";
|
|
var_06.sort = param_05;
|
|
var_06.color = level.color_cool_green;
|
|
var_06.glowcolor = level.color_cool_green_glow;
|
|
var_06.glowalpha = 1;
|
|
var_06.hidewheninmenu = 1;
|
|
var_07 = 0;
|
|
level.arcademode_kills_hud[level.arcademode_kills_hud.size] = var_06;
|
|
if(level.arcademode_kills_hud.size == 10)
|
|
{
|
|
var_07 = 1;
|
|
var_06.alpha = 0;
|
|
}
|
|
else
|
|
{
|
|
var_06.alpha = 1;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
if(var_06.x == level.arcademode_kill_zero_x_location)
|
|
{
|
|
var_08 = 4;
|
|
if(level.arcademode_kills_hud.size == 1)
|
|
{
|
|
wait 3;
|
|
}
|
|
|
|
var_06 fadeovertime(var_08);
|
|
var_06.color = (1,0,0);
|
|
var_06.alpha = 0;
|
|
wait var_08;
|
|
level notify("arcademode_decrement_kill_streak");
|
|
var_06 destroy();
|
|
for(var_09 = 0;var_09 < level.arcademode_kills_hud.size - 1;var_09++)
|
|
{
|
|
level.arcademode_kills_hud[var_09] = level.arcademode_kills_hud[var_09 + 1];
|
|
}
|
|
|
|
level.arcademode_kills_hud[level.arcademode_kills_hud.size - 1] = undefined;
|
|
if(!level.arcademode_kills_hud.size)
|
|
{
|
|
thread arcademode_reset_kill_streak();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
level waittill("arcademode_decrement_kill_streak");
|
|
wait 0.05;
|
|
var_08 moveovertime(0.5);
|
|
var_08.x = var_08.x - param_05;
|
|
if(var_09)
|
|
{
|
|
var_08 fadeovertime(0.5);
|
|
var_08.alpha = 1;
|
|
var_09 = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
get_streak_hud(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = newhudelem();
|
|
var_04.foreground = 1;
|
|
var_04.x = param_00 + -4;
|
|
var_04.y = param_01 + 14;
|
|
var_04.alignx = "right";
|
|
var_04.aligny = "top";
|
|
var_04.horzalign = "right";
|
|
var_04.vertalign = "top";
|
|
var_04.color = level.color_cool_green;
|
|
var_04.sort = level.arcademode_hud_sort - 1;
|
|
var_04.alpha = 0;
|
|
var_04.glowcolor = level.color_cool_green_glow;
|
|
var_04.glowalpha = 0;
|
|
var_04.hidewheninmenu = 1;
|
|
var_04 setshader("white",param_02,param_03);
|
|
return var_04;
|
|
}
|
|
|
|
//Function Number: 16
|
|
arcademode_add_kill_streak_time(param_00)
|
|
{
|
|
if(!level.arcademode_new_kill_streak_allowed)
|
|
{
|
|
return;
|
|
}
|
|
|
|
level notify("arcademode_new_kill_streak_time");
|
|
level endon("arcademode_new_kill_streak_time");
|
|
if(level.arcademode_kill_streak_ends < gettime())
|
|
{
|
|
level.arcademode_kill_streak_ends = gettime() + param_00 * 1000;
|
|
}
|
|
else
|
|
{
|
|
level.arcademode_kill_streak_ends = level.arcademode_kill_streak_ends + param_00 * 1000;
|
|
}
|
|
|
|
waittillframeend;
|
|
if(isdefined(level.arcademode_hud_streak))
|
|
{
|
|
level.arcademode_hud_streak fadeovertime(0.05);
|
|
level.arcademode_hud_streak.alpha = 1;
|
|
}
|
|
|
|
var_01 = 26;
|
|
var_02 = 12;
|
|
var_03 = 90;
|
|
var_04 = level.arcademode_streak_hud;
|
|
var_05 = level.arcademode_streak_hud_shadow;
|
|
var_06 = level.arcademode_kill_streak_ends - gettime();
|
|
var_06 = var_06 * 0.001;
|
|
if(var_06 > var_03)
|
|
{
|
|
var_06 = var_03;
|
|
}
|
|
|
|
var_06 = var_06 * var_02;
|
|
var_06 = int(var_06);
|
|
if(var_06 > 980)
|
|
{
|
|
var_06 = 980;
|
|
}
|
|
|
|
if(!isdefined(var_04))
|
|
{
|
|
var_04 = get_streak_hud(0,0,var_06,var_01);
|
|
var_05 = get_streak_hud(3,3,var_06,var_01);
|
|
var_05.sort = var_05.sort - 1;
|
|
var_05.alpha = 0;
|
|
var_05.color = (0,0,0);
|
|
}
|
|
else
|
|
{
|
|
var_04 scaleovertime(1,var_06,var_01);
|
|
var_05 scaleovertime(1,var_06,var_01);
|
|
wait 1;
|
|
}
|
|
|
|
level.arcademode_streak_hud = var_04;
|
|
level.arcademode_streak_hud_shadow = var_05;
|
|
var_04 endon("death");
|
|
param_00 = level.arcademode_kill_streak_ends - gettime();
|
|
param_00 = param_00 * 0.001;
|
|
var_07 = int(param_00);
|
|
if(var_07 > var_03)
|
|
{
|
|
var_07 = var_03;
|
|
wait param_00 - var_07;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
var_06 = level.arcademode_kill_streak_ends - gettime();
|
|
var_06 = var_06 * 0.001;
|
|
var_08 = var_06;
|
|
if(isdefined(level.arcademode_hud_streak))
|
|
{
|
|
level.arcademode_hud_streak fadeovertime(1);
|
|
level.arcademode_hud_streak.alpha = var_08 - 1 / 5;
|
|
}
|
|
|
|
var_06 = var_06 * var_02;
|
|
var_06 = int(var_06);
|
|
if(var_06 <= 0)
|
|
{
|
|
var_06 = 1;
|
|
}
|
|
|
|
if(var_06 > 980)
|
|
{
|
|
var_06 = 980;
|
|
}
|
|
|
|
var_04 scaleovertime(1,var_06,var_01);
|
|
var_05 scaleovertime(1,var_06,var_01);
|
|
wait 1;
|
|
if(var_06 == 1)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
thread arcademode_reset_kill_streak();
|
|
}
|
|
|
|
//Function Number: 17
|
|
arcademode_add_kill_streak()
|
|
{
|
|
if(common_scripts\utility::flag("arcadeMode_multiplier_maxed"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
level endon("arcadeMode_multiplier_maxed");
|
|
level endon("arcademode_stop_kill_streak");
|
|
level.arcademode_kill_streak_current_count--;
|
|
var_00 = gettime();
|
|
if(level.arcademode_kill_streak_current_count <= 0 && var_00 > level.arcademode_last_streak_time)
|
|
{
|
|
level.arcademode_last_streak_time = var_00;
|
|
var_01 = level.arcademode_kill_streak_current_multiplier;
|
|
level.arcademode_kill_streak_current_multiplier++;
|
|
if(level.arcademode_kill_streak_current_multiplier >= level.arcademode_streak_color.size)
|
|
{
|
|
level.arcademode_kill_streak_current_multiplier = level.arcademode_streak_color.size;
|
|
thread arcademode_multiplier_maxed();
|
|
}
|
|
|
|
if(var_01 != level.arcademode_kill_streak_current_multiplier)
|
|
{
|
|
level notify("arcademode_new_kill_streak");
|
|
level.player playsound("arcademode_" + level.arcademode_kill_streak_current_multiplier + "x");
|
|
thread arcademode_draw_multiplier();
|
|
}
|
|
|
|
level.arcademode_kill_streak_current_count = level.arcademode_kill_streak_multiplier_count;
|
|
}
|
|
|
|
level notify("arcademode_new_kill");
|
|
for(;;)
|
|
{
|
|
if(level.arcademode_kills_hud.size < 10)
|
|
{
|
|
arcademode_add_kill_streak_time(5);
|
|
return;
|
|
}
|
|
|
|
level waittill("arcademode_decrement_kill_streak");
|
|
}
|
|
}
|
|
|
|
//Function Number: 18
|
|
streak_timer_color_pulse()
|
|
{
|
|
waittillframeend;
|
|
waittillframeend;
|
|
level.arcademode_streak_hud endon("death");
|
|
for(;;)
|
|
{
|
|
var_00 = randomfloatrange(0.1,1);
|
|
level.arcademode_streak_hud fadeovertime(var_00);
|
|
level.arcademode_streak_hud.color = (randomfloat(1),randomfloat(1),randomfloat(1));
|
|
wait var_00;
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
arcademode_multiplier_maxed()
|
|
{
|
|
waittillframeend;
|
|
if(common_scripts\utility::flag("arcadeMode_multiplier_maxed"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::flag_set("arcadeMode_multiplier_maxed");
|
|
var_00 = 20;
|
|
level.arcademode_kill_streak_ends = gettime() + var_00 * 1000;
|
|
thread arcademode_add_kill_streak_time(0);
|
|
thread streak_timer_color_pulse();
|
|
musicstop();
|
|
wait 0.05;
|
|
musicplay("airplane_alt_maximum_music");
|
|
maps\_utility::add_wait(::maps\_utility::_wait,var_00 + 1);
|
|
level maps\_utility::add_wait(::maps\_utility::waittill_msg,"lost_streak");
|
|
maps\_utility::do_wait_any();
|
|
thread arcademode_reset_kill_streak();
|
|
musicstop();
|
|
if(isdefined(level.last_song))
|
|
{
|
|
wait 0.05;
|
|
musicplay(level.last_song);
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
get_hud_score()
|
|
{
|
|
var_00 = newhudelem();
|
|
var_00.foreground = 1;
|
|
var_00.x = 0;
|
|
var_00.y = 10;
|
|
var_00.alignx = "right";
|
|
var_00.aligny = "top";
|
|
var_00.horzalign = "right";
|
|
var_00.vertalign = "top";
|
|
var_00.score = 0;
|
|
var_00.font = "objective";
|
|
var_00.fontscale = 5;
|
|
var_00.sort = level.arcademode_hud_sort;
|
|
var_00.glowcolor = level.color_cool_green_glow;
|
|
var_00.glowalpha = 1;
|
|
var_00.hidewheninmenu = 1;
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 21
|
|
arcademode_update_score()
|
|
{
|
|
level.player endon("death");
|
|
level.arcademode_hud_digits = 10;
|
|
level.arcademode_hud_scores = [];
|
|
for(var_00 = 0;var_00 < level.arcademode_hud_digits;var_00++)
|
|
{
|
|
level.arcademode_hud_scores[level.arcademode_hud_scores.size] = get_hud_score();
|
|
level.arcademode_hud_scores[level.arcademode_hud_scores.size - 1].x = var_00 * -30;
|
|
}
|
|
|
|
if(getdvarint("arcademode_full"))
|
|
{
|
|
var_01 = getdvarint("arcademode_combined_score");
|
|
}
|
|
else
|
|
{
|
|
var_01 = getdvarint("arcademode_score");
|
|
}
|
|
|
|
hud_draw_score(var_01);
|
|
level.arcademode_redraw_score = 0;
|
|
for(;;)
|
|
{
|
|
wait 0.05;
|
|
updatescoreelemsonce();
|
|
if(level.arcademode_redraw_score)
|
|
{
|
|
level.arcademode_redraw_score = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 22
|
|
updatescoreelemsonce()
|
|
{
|
|
if(getdvarint("arcademode_full"))
|
|
{
|
|
hud_update_score("arcadeMode_combined_score");
|
|
return;
|
|
}
|
|
|
|
hud_update_score("arcademode_score");
|
|
}
|
|
|
|
//Function Number: 23
|
|
hud_update_score(param_00)
|
|
{
|
|
var_01 = getdvarint(param_00);
|
|
if(level.arcademode_redraw_score)
|
|
{
|
|
level.arcademode_ramping_score = var_01;
|
|
hud_draw_score(var_01);
|
|
return;
|
|
}
|
|
|
|
if(level.arcademode_ramping_score >= var_01)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_02 = var_01 - level.arcademode_ramping_score;
|
|
var_03 = var_02 * 0.2 + 1;
|
|
if(var_02 <= 15)
|
|
{
|
|
var_03 = 1;
|
|
}
|
|
|
|
level.arcademode_ramping_score = level.arcademode_ramping_score + var_03;
|
|
if(level.arcademode_ramping_score > var_01)
|
|
{
|
|
level.arcademode_ramping_score = var_01;
|
|
}
|
|
|
|
hud_draw_score(int(level.arcademode_ramping_score));
|
|
}
|
|
|
|
//Function Number: 24
|
|
get_digits_from_score(param_00)
|
|
{
|
|
var_01 = [];
|
|
param_00 = int(param_00);
|
|
for(;;)
|
|
{
|
|
var_01 = int(var_01 * 0.1);
|
|
if(var_01 <= 0)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
return var_7B;
|
|
}
|
|
|
|
//Function Number: 25
|
|
hud_draw_score(param_00)
|
|
{
|
|
hud_draw_score_for_elements(param_00,level.arcademode_hud_scores);
|
|
}
|
|
|
|
//Function Number: 26
|
|
hud_draw_score_for_elements(param_00,param_01)
|
|
{
|
|
var_02 = get_digits_from_score(param_00);
|
|
for(var_03 = 0;var_03 < var_02.size;var_03++)
|
|
{
|
|
if(var_03 >= param_01.size - 1)
|
|
{
|
|
break;
|
|
}
|
|
|
|
param_01[var_03] setvalue(var_02[var_03]);
|
|
param_01[var_03].alpha = 1;
|
|
}
|
|
|
|
for(var_03 = var_02.size;var_03 < param_01.size;var_03++)
|
|
{
|
|
param_01[var_03].alpha = 0;
|
|
}
|
|
|
|
if(param_00 == 0)
|
|
{
|
|
param_01[0].alpha = 1;
|
|
param_01[0] setvalue(0);
|
|
}
|
|
}
|
|
|
|
//Function Number: 27
|
|
arcademode_add_life(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
var_06 = newhudelem();
|
|
var_06.foreground = 1;
|
|
var_06.x = param_01 + param_00 * param_03;
|
|
var_06.y = param_02;
|
|
var_06 setshader("stance_stand",param_04,param_04);
|
|
var_06.alignx = "right";
|
|
var_06.aligny = "top";
|
|
var_06.horzalign = "right";
|
|
var_06.vertalign = "top";
|
|
var_06.sort = param_05;
|
|
var_06.color = level.color_cool_green;
|
|
var_06.glowcolor = level.color_cool_green_glow;
|
|
var_06.glowalpha = 0;
|
|
var_06.alpha = 0;
|
|
var_06.hidewheninmenu = 1;
|
|
level.arcademode_lives_hud[level.arcademode_lives_hud.size] = var_06;
|
|
}
|
|
|
|
//Function Number: 28
|
|
arcademode_define_damage_multipliers()
|
|
{
|
|
var_00[0] = 40;
|
|
level.arcademode_kills_until_next_extra_life = 10;
|
|
level.arcademode_extra_lives_range = var_7B;
|
|
var_01 = [];
|
|
for(var_02 = 0;var_02 < 4;var_02++ = var_7B[3])
|
|
{
|
|
var_01[var_02] = var_7B[var_02] * 0.15;
|
|
}
|
|
|
|
level.arcademode_extra_lives_base = var_01;
|
|
}
|
|
|
|
//Function Number: 29
|
|
set_next_extra_life(param_00)
|
|
{
|
|
}
|
|
|
|
//Function Number: 30
|
|
new_ending_hud(param_00,param_01,param_02,param_03)
|
|
{
|
|
var_04 = newhudelem();
|
|
var_04.foreground = 1;
|
|
var_04.x = param_02;
|
|
var_04.y = param_03;
|
|
var_04.alignx = param_00;
|
|
var_04.aligny = "middle";
|
|
var_04.horzalign = param_00;
|
|
var_04.vertalign = "middle";
|
|
var_04.fontscale = 3;
|
|
if(getdvar("widescreen") == "1")
|
|
{
|
|
var_04.fontscale = 5;
|
|
}
|
|
|
|
var_04.color = (0.8,1,0.8);
|
|
var_04.font = "objective";
|
|
var_04.glowcolor = (0.3,0.6,0.3);
|
|
var_04.glowalpha = 1;
|
|
var_04.alpha = 0;
|
|
var_04 fadeovertime(param_01);
|
|
var_04.alpha = 1;
|
|
var_04.hidewheninmenu = 1;
|
|
var_04.sort = level.arcademode_hud_sort + 10;
|
|
return var_04;
|
|
}
|
|
|
|
//Function Number: 31
|
|
extra_lives_display(param_00)
|
|
{
|
|
for(var_01 = 0;var_01 < 5;var_01++)
|
|
{
|
|
thread extra_lives_sizzle();
|
|
}
|
|
|
|
var_02 = new_ending_hud("center",0.2,0,-100);
|
|
var_02.label = &"SCRIPT_EXTRA_LIFE";
|
|
var_02 setvalue(param_00);
|
|
var_02 setpulsefx(5,3000,1000);
|
|
wait 5;
|
|
var_02 destroy();
|
|
}
|
|
|
|
//Function Number: 32
|
|
fade_out(param_00)
|
|
{
|
|
self fadeovertime(param_00);
|
|
self.alpha = 0;
|
|
wait param_00;
|
|
self destroy();
|
|
}
|
|
|
|
//Function Number: 33
|
|
extra_lives_sizzle()
|
|
{
|
|
var_00 = new_ending_hud("center",0.2,0,-100);
|
|
var_00.alpha = randomfloatrange(0.1,0.45);
|
|
var_00.sort = var_00.sort - 1;
|
|
var_00 settext(&"SCRIPT_EXTRA_LIFE");
|
|
var_00 maps\_utility::delaythread(3,::fade_out,1);
|
|
var_00 endon("death");
|
|
var_01 = var_00.x;
|
|
var_02 = var_00.y;
|
|
var_03 = 20;
|
|
for(;;)
|
|
{
|
|
var_04 = randomfloatrange(0.1,0.2);
|
|
var_00 moveovertime(var_04);
|
|
var_00.x = var_01 + randomfloatrange(var_03 * -1,var_03);
|
|
var_00.y = var_02 + randomfloatrange(var_03 * -1,var_03);
|
|
wait var_04;
|
|
}
|
|
}
|
|
|
|
//Function Number: 34
|
|
round_up_to_five(param_00)
|
|
{
|
|
var_01 = param_00 - param_00 % 5;
|
|
if(var_01 < param_00)
|
|
{
|
|
var_01 = var_01 + 5;
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 35
|
|
arcademode_add_points(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(param_03 <= 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(level.arcademode_deathtypes[param_02]))
|
|
{
|
|
param_02 = level.arcademode_deathtypes[param_02];
|
|
}
|
|
|
|
param_03 = int(param_03);
|
|
param_03 = round_up_to_five(param_03);
|
|
param_03 = param_03 * level.arcademode_kill_streak_current_multiplier;
|
|
var_04 = getdvarint("arcademode_score");
|
|
var_04 = var_04 + param_03;
|
|
var_05 = getdvarint("arcademode_combined_score");
|
|
var_05 = var_05 + param_03;
|
|
setdvar("arcademode_combined_score",var_05);
|
|
setdvar("arcademode_score",var_04);
|
|
var_06 = 60;
|
|
var_07 = 1.5;
|
|
var_08 = 0.9 + param_03 - 10 * 0.01;
|
|
if(var_08 > 1.4)
|
|
{
|
|
var_08 = 1.4;
|
|
}
|
|
|
|
var_09 = (0.75,0,0);
|
|
if(param_01)
|
|
{
|
|
thread arcademode_add_kill_streak();
|
|
thread arcademode_add_point_towards_extra_life();
|
|
var_09 = level.arcademode_killcolors[param_02];
|
|
}
|
|
|
|
level.player pointpulse(param_03);
|
|
}
|
|
|
|
//Function Number: 36
|
|
arcademode_add_point_towards_extra_life()
|
|
{
|
|
level.arcademode_kills_until_next_extra_life = level.arcademode_kills_until_next_extra_life - 1;
|
|
if(level.arcademode_kills_until_next_extra_life > 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
level.arcademode_rewarded_lives++;
|
|
var_00 = getdvarint("arcademode_lives");
|
|
var_00++;
|
|
if(var_00 >= level.arcademode_maxlives)
|
|
{
|
|
var_00 = level.arcademode_maxlives;
|
|
}
|
|
else
|
|
{
|
|
setdvar("arcademode_lives",var_00);
|
|
setdvar("arcademode_lives_changed",1);
|
|
}
|
|
|
|
level.arcademode_kills_until_next_extra_life = level.arcademode_extra_lives_range[level.gameskill];
|
|
}
|
|
|
|
//Function Number: 37
|
|
arcademode_set_origin_in_radius()
|
|
{
|
|
var_00 = 60;
|
|
var_01 = 90;
|
|
if(level.player.pointpulseindex > 0)
|
|
{
|
|
if(level.player.pointpulseindex == 1)
|
|
{
|
|
var_02 = randomint(1);
|
|
level.player.thirdpointpulseside = 1 - var_02;
|
|
if(var_02)
|
|
{
|
|
var_01 = 45;
|
|
}
|
|
else
|
|
{
|
|
var_01 = 135;
|
|
}
|
|
}
|
|
else if(level.player.pointpulseindex == 2)
|
|
{
|
|
var_02 = level.player.thirdpointpulseside;
|
|
if(var_02)
|
|
{
|
|
var_01 = 45;
|
|
}
|
|
else
|
|
{
|
|
var_01 = 135;
|
|
}
|
|
}
|
|
else if(level.player.pointpulseindex <= 4)
|
|
{
|
|
var_01 = randomfloatrange(0,180);
|
|
var_00 = randomfloatrange(60,120);
|
|
}
|
|
else if(level.player.pointpulseindex <= 8)
|
|
{
|
|
var_01 = randomfloatrange(0,180);
|
|
var_00 = randomfloatrange(60,160);
|
|
}
|
|
else
|
|
{
|
|
var_01 = randomfloatrange(-30,210);
|
|
var_00 = randomfloatrange(60,200);
|
|
}
|
|
}
|
|
|
|
self.x = var_00 * cos(var_01);
|
|
self.y = 0 - var_00 * sin(var_01);
|
|
}
|
|
|
|
//Function Number: 38
|
|
pointpulse(param_00)
|
|
{
|
|
if(param_00 == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level.player.pointpulsecount))
|
|
{
|
|
level.player.pointpulsecount = 0;
|
|
level.player.pointpulseindex = 0;
|
|
}
|
|
|
|
var_01 = newhudelem();
|
|
var_01.horzalign = "center";
|
|
var_01.vertalign = "middle";
|
|
var_01.alignx = "center";
|
|
var_01.aligny = "middle";
|
|
var_01 arcademode_set_origin_in_radius();
|
|
var_01.font = "objective";
|
|
var_01.fontscale = 2.5;
|
|
var_01.archived = 0;
|
|
var_01.color = (0.5,0.5,0.5);
|
|
var_01.sort = 4;
|
|
var_02 = level.arcademode_kill_streak_current_multiplier;
|
|
level.player.pointpulsecount++;
|
|
level.player.pointpulseindex++;
|
|
wait 0.05;
|
|
if(param_00 <= 0)
|
|
{
|
|
var_01.label = &"";
|
|
var_01.color = (1,0,0);
|
|
var_01.glowcolor = (0,0,0);
|
|
var_01.glowalpha = 0;
|
|
}
|
|
else
|
|
{
|
|
var_01.label = &"SCRIPT_PLUS";
|
|
var_01.color = (1,1,1);
|
|
var_01.glowcolor = level.color_cool_green_glow;
|
|
var_01.glowalpha = 1;
|
|
}
|
|
|
|
var_01 setvalue(param_00);
|
|
var_01.alpha = 1;
|
|
var_01 changefontscaleovertime(0.15);
|
|
var_01.fontscale = 3.5;
|
|
wait 0.15;
|
|
var_01 moveovertime(1.75);
|
|
var_01.y = var_01.y - 40;
|
|
var_01 changefontscaleovertime(0.25);
|
|
var_01.fontscale = 2.5;
|
|
wait 0.25;
|
|
wait 0.5;
|
|
var_01 fadeovertime(1);
|
|
var_01.alpha = 0;
|
|
wait 0.5;
|
|
level.player.pointpulsecount--;
|
|
if(level.player.pointpulsecount == 0)
|
|
{
|
|
level.player.pointpulseindex = 0;
|
|
}
|
|
|
|
var_01 destroy();
|
|
}
|
|
|
|
//Function Number: 39
|
|
set_circular_origin()
|
|
{
|
|
var_00 = 50;
|
|
for(;;)
|
|
{
|
|
var_01 = randomint(var_00);
|
|
var_02 = randomint(var_00);
|
|
if(distance((0,0,0),(var_01,var_02,0)) < var_00)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
var_01 = var_01 * -1;
|
|
}
|
|
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
var_02 = var_02 * -1;
|
|
}
|
|
|
|
self.x = var_01;
|
|
self.y = var_02;
|
|
}
|
|
|
|
//Function Number: 40
|
|
arcademode_add_points_for_mod(param_00)
|
|
{
|
|
for(var_01 = 0;var_01 < level.arcademode_multikills[param_00].size;var_01++)
|
|
{
|
|
arcademode_add_points_for_individual_kill(level.arcademode_multikills[param_00][var_01],param_00,level.arcademode_multikills[param_00].size);
|
|
}
|
|
}
|
|
|
|
//Function Number: 41
|
|
arcademode_add_points_for_individual_kill(param_00,param_01,param_02)
|
|
{
|
|
if(param_00["type"] != "melee")
|
|
{
|
|
var_03 = level.arcademode_killbase + level.arcademode_locationkillbonus[param_00["damage_location"]] + level.arcademode_weaponbonus[param_00["type"]];
|
|
}
|
|
else
|
|
{
|
|
var_03 = level.arcademode_killbase + level.arcademode_weaponbonus[param_01["type"]];
|
|
}
|
|
|
|
thread arcademode_add_points(param_00["origin"],1,param_01,var_03);
|
|
}
|
|
|
|
//Function Number: 42
|
|
player_kill(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = "none";
|
|
}
|
|
|
|
var_03 = level.arcademode_deathtypes[param_00];
|
|
if(!isdefined(var_03))
|
|
{
|
|
var_04 = level.arcademode_killbase;
|
|
thread arcademode_add_points(param_02,1,"melee",var_04);
|
|
return;
|
|
}
|
|
|
|
var_05["damage_location"] = param_02;
|
|
if(var_05 == "explosive")
|
|
{
|
|
}
|
|
|
|
level.arcademode_multikills[var_05][level.arcademode_multikills[var_05].size] = var_7B;
|
|
}
|
|
|
|
//Function Number: 43
|
|
player_damage(param_00,param_01,param_02)
|
|
{
|
|
thread arcademode_add_points(param_02,0,param_00,level.arcademode_damagebase);
|
|
}
|
|
|
|
//Function Number: 44
|
|
player_damage_ads(param_00,param_01,param_02)
|
|
{
|
|
thread arcademode_add_points(param_02,0,param_00,level.arcademode_damagebase * 1.25);
|
|
}
|
|
|
|
//Function Number: 45
|
|
end_mission()
|
|
{
|
|
setsaveddvar("ui_nextMission","0");
|
|
for(var_00 = 0;var_00 < level.players.size;var_00++)
|
|
{
|
|
var_01 = level.players[var_00];
|
|
var_01.maxhealth = 0;
|
|
var_01.health = 1;
|
|
}
|
|
|
|
missionsuccess("killhouse");
|
|
}
|
|
|
|
//Function Number: 46
|
|
create_total_score_hud(param_00,param_01)
|
|
{
|
|
level.arcademode_hud_total_scores = [];
|
|
for(var_02 = 0;var_02 < level.arcademode_hud_digits;var_02++)
|
|
{
|
|
var_03 = get_hud_score();
|
|
level.arcademode_hud_total_scores[level.arcademode_hud_total_scores.size] = var_03;
|
|
var_03.x = var_02 * -30 + -150 + param_00;
|
|
var_03.y = param_01;
|
|
var_03.alignx = "right";
|
|
var_03.aligny = "middle";
|
|
var_03.horzalign = "right";
|
|
var_03.vertalign = "middle";
|
|
var_03.alpha = 0;
|
|
var_03.sort = level.arcademode_hud_sort + 10;
|
|
}
|
|
}
|
|
|
|
//Function Number: 47
|
|
set_total_score_hud(param_00)
|
|
{
|
|
hud_draw_score_for_elements(param_00,level.arcademode_hud_total_scores);
|
|
}
|
|
|
|
//Function Number: 48
|
|
arcademode_ends()
|
|
{
|
|
if(common_scripts\utility::flag("arcademode_complete"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
common_scripts\utility::flag_set("arcademode_complete");
|
|
maps\_utility::slowmo_setlerptime_out(0.05);
|
|
maps\_utility::slowmo_lerp_out();
|
|
maps\_utility::slowmo_end();
|
|
if(level.arcademode_success)
|
|
{
|
|
if(arcademode_convert_extra_lives())
|
|
{
|
|
wait 2;
|
|
}
|
|
}
|
|
|
|
var_00 = 0;
|
|
if(isdefined(level.arcademode_stoptime))
|
|
{
|
|
var_00 = gettime() - level.arcademode_stoptime;
|
|
var_00 = var_00 * 0.001;
|
|
}
|
|
|
|
var_01 = gettime() - level.arcdemode_starttime;
|
|
var_01 = var_01 * 0.001;
|
|
var_01 = var_01 - var_00;
|
|
var_02 = level.arcademode_time - var_01;
|
|
var_02 = int(var_02);
|
|
if(var_02 == 0)
|
|
{
|
|
var_02++;
|
|
}
|
|
|
|
var_03 = 0.5;
|
|
level.mission_failed_disabled = 1;
|
|
thread player_invul_forever();
|
|
thread black_background(var_03);
|
|
wait var_03 + 0.25;
|
|
level.player freezecontrols(1);
|
|
var_04 = 1;
|
|
var_05 = -140;
|
|
var_06 = -80;
|
|
var_07 = -20;
|
|
var_08 = 40;
|
|
var_09 = 100;
|
|
var_0A = 300;
|
|
var_0B = new_ending_hud("center",var_04,0,var_05);
|
|
if(level.arcademode_success)
|
|
{
|
|
var_0B.color = (1,1,1);
|
|
var_0B settext(&"SCRIPT_MISSION_COMPLETE");
|
|
}
|
|
else
|
|
{
|
|
var_0B.color = (1,0.4,0.2);
|
|
var_0B.glowcolor = (0.75,0.3,0.3);
|
|
var_0B settext(level.arcademode_failurestring);
|
|
}
|
|
|
|
wait 1;
|
|
for(var_0C = 0;var_0C < level.arcademode_maxlives;var_0C++)
|
|
{
|
|
level.arcademode_lives_hud[var_0C] destroy();
|
|
}
|
|
|
|
var_0D = 130;
|
|
level.arcademode_lives_hud = [];
|
|
for(var_0C = 0;var_0C < level.arcademode_maxlives;var_0C++)
|
|
{
|
|
arcademode_add_life(var_0C,-135 + var_0D,var_0A,-30,96,level.arcademode_hud_sort + 10);
|
|
}
|
|
|
|
var_0E = getdvarint("arcademode_lives");
|
|
var_0F = level.arcademode_rewarded_lives;
|
|
if(var_0E > var_0F)
|
|
{
|
|
var_0E = var_0F;
|
|
}
|
|
|
|
arcademode_redraw_lives(var_0E);
|
|
var_10 = 0;
|
|
var_11 = undefined;
|
|
if(getdvar("arcademode_full") == "1")
|
|
{
|
|
var_11 = new_ending_hud("left",var_04,20,var_06);
|
|
var_11 settext(&"SCRIPT_TOTAL_SCORE");
|
|
create_total_score_hud(var_0D,var_06);
|
|
var_10 = getdvarint("arcademode_combined_score");
|
|
set_total_score_hud(var_10);
|
|
}
|
|
|
|
var_12 = new_ending_hud("left",var_04,20,var_07);
|
|
var_12 settext(&"SCRIPT_MISSION_SCORE");
|
|
for(var_0C = 0;var_0C < level.arcademode_hud_digits;var_0C++)
|
|
{
|
|
var_13 = level.arcademode_hud_scores[var_0C];
|
|
var_13.x = var_0C * -30 + -150 + var_0D;
|
|
var_13.y = var_07;
|
|
var_13.sort = level.arcademode_hud_sort + 10;
|
|
var_13.alignx = "right";
|
|
var_13.aligny = "middle";
|
|
var_13.horzalign = "right";
|
|
var_13.vertalign = "middle";
|
|
}
|
|
|
|
hud_draw_score(0);
|
|
var_14 = 0;
|
|
var_15 = 0;
|
|
while(var_02 >= 60)
|
|
{
|
|
var_14++;
|
|
var_02 = var_02 - 60;
|
|
}
|
|
|
|
var_15 = var_02;
|
|
var_16 = new_ending_hud("left",var_04,20,var_08);
|
|
var_16 settext(&"SCRIPT_TIME_REMAINING");
|
|
level.arcademode_hud_timer_minutes_tens = new_ending_hud("right",var_04,-265 + var_0D,var_08);
|
|
level.arcademode_hud_timer_minutes_ones = new_ending_hud("right",var_04,-235 + var_0D,var_08);
|
|
var_17 = new_ending_hud("right",var_04,-215 + var_0D,var_08 - 5);
|
|
var_17 settext(&"SCRIPT_COLON");
|
|
level.arcademode_hud_timer_seconds_tens = new_ending_hud("right",var_04,-180 + var_0D,var_08);
|
|
level.arcademode_hud_timer_seconds_ones = new_ending_hud("right",var_04,-150 + var_0D,var_08);
|
|
ending_set_time(var_14,var_15);
|
|
wait var_04;
|
|
wait 1;
|
|
var_18 = getdvarint("arcadeMode_score");
|
|
var_19 = 0;
|
|
var_1A = var_10;
|
|
var_1B = 0;
|
|
for(;;)
|
|
{
|
|
var_1C = var_18 - var_19;
|
|
var_1D = var_1C * 0.2 + 1;
|
|
if(var_1C <= 15)
|
|
{
|
|
var_1D = 1;
|
|
}
|
|
|
|
var_1D = int(var_1D);
|
|
var_19 = var_19 + var_1D;
|
|
if(var_19 > var_18)
|
|
{
|
|
var_19 = var_18;
|
|
}
|
|
|
|
hud_draw_score(var_19);
|
|
if(var_19 == var_18)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_1B--;
|
|
if(var_1B <= 0)
|
|
{
|
|
level.player thread common_scripts\utility::play_sound_in_space("bullet_ap_dirt",level.player geteye());
|
|
var_1B = 3;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
wait 1;
|
|
var_1E = 0;
|
|
var_1F = undefined;
|
|
if(level.arcademode_success)
|
|
{
|
|
var_20 = 5;
|
|
var_21 = var_14 * 60 + var_15;
|
|
var_22 = ceil(var_21 / 15);
|
|
var_23 = ceil(var_21 * var_20);
|
|
var_24 = ceil(var_23 / level.arcademode_difficultytimerscale);
|
|
var_25 = var_19;
|
|
var_26 = var_19 + var_24;
|
|
var_27 = var_10;
|
|
var_28 = var_10 + var_24;
|
|
for(var_0C = 1;var_0C <= var_22;var_0C++)
|
|
{
|
|
var_29 = var_0C * 1 / var_22;
|
|
if(var_0C == var_22)
|
|
{
|
|
var_29 = 1;
|
|
}
|
|
|
|
var_19 = int(var_25 * 1 - var_29 + var_26 * var_29);
|
|
if(getdvar("arcademode_full") == "1")
|
|
{
|
|
var_10 = int(var_27 * 1 - var_29 + var_28 * var_29);
|
|
set_total_score_hud(var_10);
|
|
}
|
|
|
|
hud_draw_score(var_19);
|
|
var_2A = int(var_21 * 1 - var_29);
|
|
ending_set_time(floor(var_2A / 60),var_2A % 60);
|
|
var_1B--;
|
|
if(var_1B <= 0)
|
|
{
|
|
level.player thread common_scripts\utility::play_sound_in_space("bullet_ap_metal",level.player geteye());
|
|
var_1B = 3;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
ending_set_time(0,0);
|
|
wait 1;
|
|
for(;;)
|
|
{
|
|
var_2B = 1;
|
|
if(var_0E > 10)
|
|
{
|
|
var_2C = var_0E % 10;
|
|
if(var_0E - var_2C >= 10)
|
|
{
|
|
var_2B = 10;
|
|
}
|
|
else
|
|
{
|
|
var_2B = var_2C;
|
|
}
|
|
|
|
if(var_0E < 20)
|
|
{
|
|
var_2B = var_2C;
|
|
}
|
|
}
|
|
|
|
var_0E = var_0E - var_2B;
|
|
if(var_0E < 0)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_2D = 1000;
|
|
var_2D = var_2D * var_2B;
|
|
var_1D = int(var_2D);
|
|
if(getdvar("arcademode_full") == "1")
|
|
{
|
|
var_10 = var_10 + var_1D;
|
|
set_total_score_hud(var_10);
|
|
}
|
|
|
|
var_19 = var_19 + var_1D;
|
|
level.player thread common_scripts\utility::play_sound_in_space("mortar_explosion",level.player geteye());
|
|
hud_draw_score(int(var_19));
|
|
arcademode_redraw_lives(var_0E);
|
|
wait 0.6;
|
|
}
|
|
|
|
wait 1;
|
|
if(getdvarint("arcademode_died") != 1 && level.gameskill >= 2)
|
|
{
|
|
var_1D = int(var_19);
|
|
arcademode_end_boost(var_19,var_10,var_1D,&"SCRIPT_ZERO_DEATHS","bullet_ap_bark",var_09,var_04);
|
|
var_19 = var_19 + var_1D;
|
|
var_10 = var_10 + var_1D;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
level.arcademode_hud_timer_seconds_ones setpulsefx(0,0,1000);
|
|
level.arcademode_hud_timer_seconds_tens setpulsefx(0,0,1000);
|
|
level.arcademode_hud_timer_minutes_ones setpulsefx(0,0,1000);
|
|
level.arcademode_hud_timer_minutes_tens setpulsefx(0,0,1000);
|
|
var_17 setpulsefx(0,0,1000);
|
|
var_16 setpulsefx(0,0,1000);
|
|
arcademode_redraw_lives(0);
|
|
wait 2;
|
|
}
|
|
|
|
var_2E = level.arcademode_skillmultiplier[level.gameskill];
|
|
if(var_2E > 1)
|
|
{
|
|
if(var_2E == 1.5)
|
|
{
|
|
var_2F = &"SCRIPT_DIFFICULTY_BONUS_ONEANDAHALF";
|
|
}
|
|
else if(var_2F == 3)
|
|
{
|
|
var_2F = &"SCRIPT_DIFFICULTY_BONUS_THREE";
|
|
}
|
|
else
|
|
{
|
|
var_2F = &"SCRIPT_DIFFICULTY_BONUS_FOUR";
|
|
}
|
|
|
|
var_1D = int(ceil(var_19 * var_2E) - var_19);
|
|
arcademode_end_boost(var_19,var_10,var_1D,var_2F,"bullet_ap_glass",var_09,var_04);
|
|
var_19 = var_19 + var_1D;
|
|
var_10 = var_10 + var_1D;
|
|
}
|
|
|
|
var_30 = 0;
|
|
if(getdvar("arcademode_full") == "1")
|
|
{
|
|
var_31 = "s18";
|
|
var_32 = getdvarint(var_31);
|
|
if(var_10 > var_32)
|
|
{
|
|
var_33 = get_digits_from_score(var_10);
|
|
var_34 = get_score_string_from_digits(var_33);
|
|
setdvar(var_31,var_34);
|
|
var_35 = 0;
|
|
if(!level.arcademode_success)
|
|
{
|
|
var_35 = 1;
|
|
}
|
|
|
|
if(level.script == "airplane")
|
|
{
|
|
var_35 = 1;
|
|
}
|
|
|
|
if(var_35)
|
|
{
|
|
var_30 = 1;
|
|
}
|
|
}
|
|
|
|
level.player uploadscore("LB_FULL",getdvarint(var_31));
|
|
}
|
|
else
|
|
{
|
|
var_36 = [];
|
|
}
|
|
|
|
if(var_30)
|
|
{
|
|
if(!level.arcademode_success)
|
|
{
|
|
updategamerprofile();
|
|
}
|
|
|
|
wait 1;
|
|
var_37 = new_ending_hud("center",var_04,0,var_09);
|
|
var_37 settext(&"SCRIPT_NEW_HIGH_SCORE");
|
|
var_37.alpha = 1;
|
|
var_37 fadeovertime(0.05);
|
|
var_37 setpulsefx(30,3000,1000);
|
|
wait 3.5;
|
|
}
|
|
|
|
wait 2;
|
|
var_0B setpulsefx(0,0,1000);
|
|
wait 0.5;
|
|
var_12 setpulsefx(0,0,1000);
|
|
for(var_0C = 0;var_0C < level.arcademode_hud_digits;var_0C++)
|
|
{
|
|
var_13 = level.arcademode_hud_scores[var_0C];
|
|
var_13 setpulsefx(0,0,1000);
|
|
}
|
|
|
|
if(getdvar("arcademode_full") == "1")
|
|
{
|
|
var_11 setpulsefx(0,0,1000);
|
|
for(var_0C = 0;var_0C < level.arcademode_hud_digits;var_0C++)
|
|
{
|
|
var_13 = level.arcademode_hud_total_scores[var_0C];
|
|
var_13 setpulsefx(0,0,1000);
|
|
}
|
|
}
|
|
|
|
if(level.arcademode_success)
|
|
{
|
|
wait 0.5;
|
|
level.arcademode_hud_timer_seconds_ones setpulsefx(0,0,1000);
|
|
level.arcademode_hud_timer_seconds_tens setpulsefx(0,0,1000);
|
|
level.arcademode_hud_timer_minutes_ones setpulsefx(0,0,1000);
|
|
level.arcademode_hud_timer_minutes_tens setpulsefx(0,0,1000);
|
|
var_17 setpulsefx(0,0,1000);
|
|
var_16 setpulsefx(0,0,1000);
|
|
}
|
|
|
|
wait 1;
|
|
if(getdvar("arcademode_full") == "1")
|
|
{
|
|
logstring("ArcadeMode Score: " + var_19 + ", mission: " + level.script + ", gameskill: " + level.gameskill + ", total: " + var_10);
|
|
}
|
|
else
|
|
{
|
|
logstring("ArcadeMode Score: " + var_19 + ", mission: " + level.script + ", gameskill: " + level.gameskill);
|
|
}
|
|
|
|
setdvar("arcademode_combined_score",var_10);
|
|
if(!level.arcademode_success)
|
|
{
|
|
setdvar("ui_arcade_lost",1);
|
|
end_mission();
|
|
}
|
|
else
|
|
{
|
|
setdvar("ui_arcade_lost",0);
|
|
}
|
|
|
|
common_scripts\utility::flag_set("arcademode_ending_complete");
|
|
}
|
|
|
|
//Function Number: 49
|
|
arcademode_end_boost(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
|
{
|
|
var_07 = new_ending_hud("center",param_06,0,param_05);
|
|
var_07 settext(param_03);
|
|
var_07.alpha = 1;
|
|
var_07 fadeovertime(0.05);
|
|
wait 0.05;
|
|
wait 1;
|
|
var_08 = 0;
|
|
var_09 = param_00 + param_02;
|
|
var_0A = param_01 + param_02;
|
|
for(;;)
|
|
{
|
|
var_0B = var_09 - param_00;
|
|
param_02 = var_0B * 0.2 + 1;
|
|
if(var_0B <= 15)
|
|
{
|
|
param_02 = 1;
|
|
}
|
|
|
|
param_02 = int(param_02);
|
|
param_00 = param_00 + param_02;
|
|
if(param_00 > var_09)
|
|
{
|
|
param_00 = var_09;
|
|
}
|
|
|
|
hud_draw_score(param_00);
|
|
if(getdvar("arcademode_full") == "1")
|
|
{
|
|
param_01 = param_01 + param_02;
|
|
if(param_01 > var_0A)
|
|
{
|
|
param_01 = var_0A;
|
|
}
|
|
|
|
set_total_score_hud(param_01);
|
|
}
|
|
|
|
if(param_00 == var_09)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_08--;
|
|
if(var_08 <= 0)
|
|
{
|
|
level.player thread common_scripts\utility::play_sound_in_space(param_04,level.player geteye());
|
|
var_08 = 3;
|
|
}
|
|
|
|
wait 0.05;
|
|
}
|
|
|
|
wait 0.5;
|
|
var_07 setpulsefx(0,0,1000);
|
|
wait 1;
|
|
}
|
|
|
|
//Function Number: 50
|
|
black_background(param_00)
|
|
{
|
|
var_01 = newhudelem();
|
|
var_01.foreground = 1;
|
|
var_01.x = 0;
|
|
var_01.y = 0;
|
|
var_01 setshader("black",640,480);
|
|
var_01.alignx = "left";
|
|
var_01.aligny = "top";
|
|
var_01.horzalign = "fullscreen";
|
|
var_01.vertalign = "fullscreen";
|
|
var_01.sort = level.arcademode_hud_sort + 5;
|
|
var_01.alpha = 0;
|
|
if(param_00 > 0)
|
|
{
|
|
var_01 fadeovertime(param_00);
|
|
}
|
|
|
|
var_01.alpha = 1;
|
|
}
|
|
|
|
//Function Number: 51
|
|
player_invul_forever()
|
|
{
|
|
for(;;)
|
|
{
|
|
level.player enableinvulnerability();
|
|
level.player.deathinvulnerabletime = 70000;
|
|
level.player.ignoreme = 1;
|
|
var_00 = getaispeciesarray("all","all");
|
|
common_scripts\utility::array_thread(var_00,::maps\_utility::set_ignoreme,1);
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 52
|
|
ending_set_time(param_00,param_01)
|
|
{
|
|
var_02 = 0;
|
|
var_03 = 0;
|
|
while(param_00 >= 10)
|
|
{
|
|
var_02++;
|
|
param_00 = param_00 - 10;
|
|
}
|
|
|
|
while(param_01 >= 10)
|
|
{
|
|
var_03++;
|
|
param_01 = param_01 - 10;
|
|
}
|
|
|
|
level.arcademode_hud_timer_seconds_ones setvalue(param_01);
|
|
level.arcademode_hud_timer_seconds_tens setvalue(var_03);
|
|
level.arcademode_hud_timer_minutes_ones setvalue(param_00);
|
|
level.arcademode_hud_timer_minutes_tens setvalue(var_02);
|
|
}
|
|
|
|
//Function Number: 53
|
|
draw_checkpoint(param_00,param_01,param_02)
|
|
{
|
|
param_00 = param_00 * param_02;
|
|
var_03 = new_ending_hud("center",0.1,param_00,90);
|
|
var_03 settext(&"SCRIPT_CHECKPOINT");
|
|
var_03 moveovertime(param_01);
|
|
var_03.x = 0;
|
|
wait param_01;
|
|
wait 0.5;
|
|
var_03 moveovertime(param_01);
|
|
var_03.x = param_00 * -1;
|
|
wait param_01;
|
|
var_03 destroy();
|
|
}
|
|
|
|
//Function Number: 54
|
|
arcademode_checkpoint_getid(param_00)
|
|
{
|
|
for(var_01 = 0;var_01 < level.arcademode_checkpoint_dvars.size;var_01++)
|
|
{
|
|
if(level.arcademode_checkpoint_dvars[var_01] == param_00)
|
|
{
|
|
return var_01;
|
|
}
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
//Function Number: 55
|
|
arcademode_init_kill_streak_colors()
|
|
{
|
|
level.arcademode_streak_color = [];
|
|
level.arcademode_streak_glow = [];
|
|
level.arcademode_streak_color[level.arcademode_streak_color.size] = level.color_cool_green;
|
|
level.arcademode_streak_color[level.arcademode_streak_color.size] = (0.8,0.8,2);
|
|
level.arcademode_streak_color[level.arcademode_streak_color.size] = (2,0.8,0);
|
|
level.arcademode_streak_color[level.arcademode_streak_color.size] = (0.5,2,2);
|
|
level.arcademode_streak_color[level.arcademode_streak_color.size] = (2,0.5,2);
|
|
level.arcademode_streak_color[level.arcademode_streak_color.size] = (0.3,0.3,2);
|
|
level.arcademode_streak_color[level.arcademode_streak_color.size] = (2,2,0.5);
|
|
level.arcademode_streak_color[level.arcademode_streak_color.size] = (2,2,2);
|
|
for(var_00 = 0;var_00 < level.arcademode_streak_color.size;var_00++)
|
|
{
|
|
level.arcademode_streak_glow[var_00] = (level.arcademode_streak_color[var_00][0] * 0.35,level.arcademode_streak_color[var_00][1] * 0.35,level.arcademode_streak_color[var_00][2] * 0.35);
|
|
}
|
|
|
|
level.arcademode_streak_color[0] = level.color_cool_green_glow;
|
|
}
|
|
|
|
//Function Number: 56
|
|
arcademode_killstreak_complete_display()
|
|
{
|
|
if(level.arcademode_kill_streak_current_multiplier == 1)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(common_scripts\utility::flag("arcademode_complete"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = new_ending_hud("right",0.2,-10,-57);
|
|
var_00 setpulsefx(5,3000,1000);
|
|
var_00.fontscale = 2;
|
|
if(level.arcademode_kill_streak_current_multiplier >= 8)
|
|
{
|
|
level.player thread common_scripts\utility::play_sound_in_space("arcademode_kill_streak_won",level.player geteye());
|
|
var_00 settext(&"SCRIPT_STREAK_COMPLETE");
|
|
}
|
|
else
|
|
{
|
|
level.player thread common_scripts\utility::play_sound_in_space("arcademode_kill_streak_lost",level.player geteye());
|
|
var_00 settext(&"SCRIPT_STREAK_BONUS_LOST");
|
|
}
|
|
|
|
wait 5;
|
|
var_00 destroy();
|
|
}
|
|
|
|
//Function Number: 57
|
|
arcademode_reset_kill_streak_art()
|
|
{
|
|
if(isdefined(level.arcademode_streak_hud))
|
|
{
|
|
level.arcademode_streak_hud destroy();
|
|
level.arcademode_streak_hud = undefined;
|
|
level.arcademode_streak_hud_shadow destroy();
|
|
}
|
|
|
|
level notify("arcademode_stop_kill_streak_art");
|
|
for(var_00 = 0;var_00 < level.arcademode_kills_hud.size;var_00++)
|
|
{
|
|
level.arcademode_kills_hud[var_00] destroy();
|
|
}
|
|
|
|
level.arcademode_kills_hud = [];
|
|
}
|
|
|
|
//Function Number: 58
|
|
arcademode_reset_kill_streak()
|
|
{
|
|
level.arcademode_new_kill_streak_allowed = 1;
|
|
thread arcademode_killstreak_complete_display();
|
|
level notify("arcademode_stop_kill_streak");
|
|
arcademode_reset_kill_streak_art();
|
|
common_scripts\utility::flag_clear("arcadeMode_multiplier_maxed");
|
|
level.arcademode_kill_streak_current_count = level.arcademode_kill_streak_multiplier_count;
|
|
level.arcademode_kill_streak_current_multiplier = 1;
|
|
}
|
|
|
|
//Function Number: 59
|
|
get_hud_multi()
|
|
{
|
|
var_00 = newhudelem();
|
|
var_00.alignx = "right";
|
|
var_00.aligny = "top";
|
|
var_00.horzalign = "right";
|
|
var_00.vertalign = "top";
|
|
var_00 thread arcademode_draw_multiplier_kill();
|
|
var_00.x = 0;
|
|
var_00.y = 126;
|
|
var_00.font = "objective";
|
|
var_00.fontscale = 0.1;
|
|
var_00.archived = 0;
|
|
var_00.foreground = 1;
|
|
var_00.color = level.arcademode_streak_color[level.arcademode_kill_streak_current_multiplier - 1];
|
|
var_00.glowcolor = level.arcademode_streak_glow[level.arcademode_kill_streak_current_multiplier - 1];
|
|
var_00.sort = level.arcademode_hud_sort;
|
|
var_00.label = &"SCRIPT_X";
|
|
var_00 setvalue(level.arcademode_kill_streak_current_multiplier);
|
|
var_00 changefontscaleovertime(0.5);
|
|
var_00.fontscale = 3;
|
|
var_00.alpha = 0;
|
|
var_00 fadeovertime(0.5);
|
|
var_00.alpha = 1;
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 60
|
|
arcademode_draw_multiplier()
|
|
{
|
|
for(var_00 = 0;var_00 < 40;var_00++)
|
|
{
|
|
var_01 = get_hud_multi();
|
|
var_01 thread arcademode_draw_mult_sizzle();
|
|
}
|
|
|
|
level endon("arcademode_new_kill_streak");
|
|
var_02 = get_hud_multi();
|
|
level.arcademode_hud_streak = var_02;
|
|
level waittill("arcademode_stop_kill_streak");
|
|
var_02 setpulsefx(0,0,1000);
|
|
wait 1;
|
|
var_02 destroy();
|
|
level.arcademode_hud_streak = undefined;
|
|
}
|
|
|
|
//Function Number: 61
|
|
arcademode_draw_mult_sizzle()
|
|
{
|
|
level endon("arcademode_new_kill_streak");
|
|
wait 0.05;
|
|
var_00 = 500;
|
|
self moveovertime(2);
|
|
self.x = self.x + randomintrange(var_00 * -1,var_00);
|
|
self.y = self.y + randomintrange(var_00 * -1,var_00);
|
|
wait 0.5;
|
|
self fadeovertime(1);
|
|
self.alpha = 0;
|
|
wait 1;
|
|
self destroy();
|
|
}
|
|
|
|
//Function Number: 62
|
|
arcademode_draw_multiplier_kill()
|
|
{
|
|
self endon("death");
|
|
level waittill("arcademode_new_kill_streak");
|
|
self destroy();
|
|
}
|
|
|
|
//Function Number: 63
|
|
get_score_string_from_digits(param_00)
|
|
{
|
|
var_01 = "";
|
|
for(var_02 = 0;var_02 < param_00.size;var_02++)
|
|
{
|
|
var_01 = param_00[var_02] + var_01;
|
|
}
|
|
|
|
return var_01;
|
|
} |