mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
2781 lines
56 KiB
Plaintext
2781 lines
56 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: captured_util.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 85
|
|
* Decompile Time: 1222 ms
|
|
* Timestamp: 4/22/2024 2:26:38 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
warp_to_start(param_00)
|
|
{
|
|
var_01 = param_00;
|
|
if(isstring(param_00))
|
|
{
|
|
var_01 = common_scripts\utility::getstruct(param_00,"targetname");
|
|
if(!isdefined(var_01))
|
|
{
|
|
var_01 = getent(param_00,"targetname");
|
|
}
|
|
}
|
|
|
|
if(!isdefined(var_01))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(self islinked())
|
|
{
|
|
self unlink();
|
|
}
|
|
|
|
if(self == level.player)
|
|
{
|
|
self setorigin(var_01.origin);
|
|
level.player setplayerangles(var_01.angles);
|
|
return;
|
|
}
|
|
|
|
self forceteleport(var_01.origin,var_01.angles);
|
|
}
|
|
|
|
//Function Number: 2
|
|
warp_allies(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(level.allies) || !isdefined(level.allies.size))
|
|
{
|
|
return;
|
|
}
|
|
|
|
level.allies = maps\_utility::remove_dead_from_array(level.allies);
|
|
var_03 = ["r","b","y"];
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = level.allies.size;
|
|
}
|
|
|
|
for(var_04 = 0;var_04 < param_02;var_04++)
|
|
{
|
|
level.allies[var_04] thread warp_to_start(param_00 + "_" + var_04);
|
|
if(isdefined(param_01) && param_01)
|
|
{
|
|
level.allies[var_04] maps\_utility::set_force_color(var_03[var_04]);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
spawn_allies(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
if(start_point_is_before("test_chamber"))
|
|
{
|
|
param_00 = 3;
|
|
}
|
|
else if(start_point_is_between(["test_chamber","mb2"],1))
|
|
{
|
|
param_00 = 1;
|
|
}
|
|
else if(start_point_is_after("mb2"))
|
|
{
|
|
param_00 = 2;
|
|
}
|
|
else
|
|
{
|
|
param_00 = 3;
|
|
}
|
|
}
|
|
|
|
if(!isdefined(level.allies))
|
|
{
|
|
level.allies = [];
|
|
}
|
|
else if(level.allies.size >= param_00)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = getentarray("spawner_ally","script_noteworthy");
|
|
common_scripts\utility::array_thread(var_01,::maps\_utility::add_spawn_function,::spawnfunc_ally);
|
|
for(var_02 = 0;var_02 < param_00;var_02++)
|
|
{
|
|
var_03 = getent("ally_" + var_02,"targetname") maps\_utility::spawn_ai();
|
|
var_03.animname = "ally_" + var_02;
|
|
level.allies[var_02] = var_03;
|
|
}
|
|
|
|
if(isdefined(level.allies[0]) && isalive(level.allies[0]))
|
|
{
|
|
level.ally = level.allies[0];
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
spawnfunc_ally()
|
|
{
|
|
maps\_utility::make_hero();
|
|
maps\_utility::magic_bullet_shield();
|
|
}
|
|
|
|
//Function Number: 5
|
|
dialogue_nag_loop(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
self endon("death");
|
|
if(isdefined(param_01))
|
|
{
|
|
level endon(param_01);
|
|
}
|
|
|
|
self notify("start_nag_loop");
|
|
self endon("start_nag_loop");
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 0;
|
|
}
|
|
|
|
if(!isdefined(param_03))
|
|
{
|
|
param_03 = 4;
|
|
}
|
|
|
|
if(!isdefined(param_04))
|
|
{
|
|
param_04 = 0;
|
|
}
|
|
|
|
if(!isdefined(param_05))
|
|
{
|
|
param_05 = 300;
|
|
}
|
|
|
|
var_06 = param_03 - param_02;
|
|
for(;;)
|
|
{
|
|
foreach(var_08 in param_00)
|
|
{
|
|
thread dialogue_nag_player(var_08);
|
|
common_scripts\utility::flag_waitopen("flag_currently_nagging");
|
|
wait(randomfloatrange(param_02,param_03));
|
|
param_03 = min(param_05,param_03 + param_04);
|
|
param_02 = param_03 - var_06;
|
|
}
|
|
|
|
wait(0.05);
|
|
param_00 = common_scripts\utility::array_randomize(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
dialogue_nag_player(param_00)
|
|
{
|
|
common_scripts\utility::flag_set("flag_currently_nagging");
|
|
maps\_utility::dialogue_queue(param_00);
|
|
common_scripts\utility::flag_clear("flag_currently_nagging");
|
|
}
|
|
|
|
//Function Number: 7
|
|
radio_dialogue_nag_loop(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
|
{
|
|
self endon("death");
|
|
if(isdefined(param_01))
|
|
{
|
|
level endon(param_01);
|
|
}
|
|
|
|
self notify("start_nag_loop");
|
|
self endon("start_nag_loop");
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 8;
|
|
}
|
|
|
|
if(!isdefined(param_03))
|
|
{
|
|
param_03 = 12;
|
|
}
|
|
|
|
if(!isdefined(param_04))
|
|
{
|
|
param_04 = 0;
|
|
}
|
|
|
|
if(!isdefined(param_05))
|
|
{
|
|
param_05 = 300;
|
|
}
|
|
|
|
var_07 = param_03 - param_02;
|
|
for(;;)
|
|
{
|
|
foreach(var_09 in param_00)
|
|
{
|
|
if(isdefined(param_06))
|
|
{
|
|
common_scripts\utility::flag_clear(param_06);
|
|
}
|
|
|
|
maps\_utility::smart_radio_dialogue(var_09);
|
|
if(isdefined(param_06))
|
|
{
|
|
common_scripts\utility::flag_set(param_06);
|
|
}
|
|
|
|
wait(randomfloatrange(param_02,param_03));
|
|
param_03 = min(param_05,param_03 + param_04);
|
|
param_02 = param_03 - var_07;
|
|
}
|
|
|
|
wait(0.05);
|
|
param_00 = common_scripts\utility::array_randomize(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
delay_retreat(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
|
{
|
|
if(isdefined(param_02))
|
|
{
|
|
thread opfor_retreat(param_00,param_02,param_03);
|
|
}
|
|
|
|
common_scripts\utility::flag_wait_or_timeout(param_03,param_01);
|
|
if(common_scripts\utility::flag(param_03) && !isdefined(level.opfor_retreat))
|
|
{
|
|
tprintln("Retreat trigger: " + param_03,1);
|
|
thread retreat_proc(param_03,param_04,param_05);
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level.opfor_retreat))
|
|
{
|
|
tprintln("Retreat timeout: " + param_01 + " | " + param_03,1);
|
|
}
|
|
|
|
thread retreat_proc(param_03,param_04,param_05,param_06);
|
|
level.opfor_retreat = undefined;
|
|
}
|
|
|
|
//Function Number: 9
|
|
opfor_retreat(param_00,param_01,param_02)
|
|
{
|
|
level endon(param_02);
|
|
if(!isarray(param_01))
|
|
{
|
|
param_01 = [int(min(0,param_01)),int(max(-1,param_01))];
|
|
}
|
|
|
|
if(param_01[0] < 0)
|
|
{
|
|
for(var_03 = param_01[0];var_03 < 0;var_03++)
|
|
{
|
|
level waittill("ai_killed",var_04);
|
|
tprintln("kills: " + var_03 + 1 + " || " + maps\_utility::get_ai_group_sentient_count(param_00));
|
|
if(!isdefined(var_04.script_aigroup) || var_04.script_aigroup != param_00)
|
|
{
|
|
var_03--;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(param_01[1] >= 0)
|
|
{
|
|
while(maps\_utility::get_ai_group_sentient_count(param_00) > param_01[1])
|
|
{
|
|
wait(0.1);
|
|
}
|
|
}
|
|
|
|
tprintln("Retreat kills: " + maps\_utility::get_ai_group_sentient_count(param_00) + " | " + param_02,1);
|
|
level.opfor_retreat = 1;
|
|
common_scripts\utility::flag_set(param_02);
|
|
}
|
|
|
|
//Function Number: 10
|
|
retreat_proc(param_00,param_01,param_02,param_03)
|
|
{
|
|
if(!common_scripts\utility::flag(param_00))
|
|
{
|
|
common_scripts\utility::flag_set(param_00);
|
|
}
|
|
|
|
if(isdefined(param_01) && !isarray(param_01))
|
|
{
|
|
param_01 = [param_01];
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
var_04 = [];
|
|
foreach(var_06 in param_01)
|
|
{
|
|
var_06 = getent(var_06,"targetname");
|
|
if(isdefined(var_06))
|
|
{
|
|
var_04[var_04.size] = var_06;
|
|
}
|
|
}
|
|
|
|
if(var_04.size > 0)
|
|
{
|
|
param_01 = var_04;
|
|
}
|
|
else
|
|
{
|
|
param_01 = undefined;
|
|
}
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
param_01[0] notify("trigger");
|
|
wait(0.05);
|
|
if(isdefined(param_02) && param_02)
|
|
{
|
|
foreach(var_06 in param_01)
|
|
{
|
|
if(isdefined(var_06))
|
|
{
|
|
var_06 delete();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(isdefined(param_03) && !isarray(param_03))
|
|
{
|
|
param_03 = [param_03];
|
|
}
|
|
|
|
if(isdefined(param_03))
|
|
{
|
|
foreach(var_0B in param_03)
|
|
{
|
|
level notify(var_0B);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
kt_time(param_00)
|
|
{
|
|
if(!isdefined(level.killer_tracker))
|
|
{
|
|
return param_00;
|
|
}
|
|
|
|
if(level.killer_tracker > 2)
|
|
{
|
|
return param_00 * clamp(level.killer_tracker - 1,1,5);
|
|
}
|
|
|
|
return param_00;
|
|
}
|
|
|
|
//Function Number: 12
|
|
setup_player_for_animated_sequence(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = 1;
|
|
}
|
|
|
|
if(param_00)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 60;
|
|
}
|
|
}
|
|
|
|
if(!isdefined(param_08))
|
|
{
|
|
param_08 = 1;
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = level.player.origin;
|
|
}
|
|
|
|
if(!isdefined(param_03))
|
|
{
|
|
param_03 = level.player.angles;
|
|
}
|
|
|
|
if(!isdefined(param_04))
|
|
{
|
|
param_04 = 1;
|
|
}
|
|
|
|
if(!isdefined(param_06))
|
|
{
|
|
param_06 = "player_rig";
|
|
}
|
|
|
|
var_09 = maps\_utility::spawn_anim_model(param_06,param_02);
|
|
level.player.rig = var_09;
|
|
var_09.angles = param_03;
|
|
var_09.animname = param_06;
|
|
if(isdefined(param_07))
|
|
{
|
|
var_0A = maps\_utility::spawn_anim_model(param_07);
|
|
}
|
|
else
|
|
{
|
|
var_0A = common_scripts\utility::spawn_tag_origin();
|
|
}
|
|
|
|
level.player.mover = var_0A;
|
|
var_0A.origin = param_02;
|
|
var_0A.angles = param_03;
|
|
var_09 linkto(var_0A);
|
|
if(param_00)
|
|
{
|
|
if(isarray(param_01))
|
|
{
|
|
level.player playerlinktodelta(var_09,"tag_origin",param_08,param_01[0],param_01[1],param_01[2],param_01[3],1);
|
|
}
|
|
else
|
|
{
|
|
level.player playerlinktodelta(var_09,"tag_origin",param_08,param_01,param_01,param_01,param_01,1);
|
|
}
|
|
}
|
|
|
|
if(param_04)
|
|
{
|
|
thread player_animated_sequence_restrictions(param_05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
player_animated_sequence_restrictions(param_00)
|
|
{
|
|
if(isdefined(param_00) && param_00)
|
|
{
|
|
level.player waittill("notify_player_animated_sequence_restrictions");
|
|
}
|
|
|
|
level.player.disablereload = 1;
|
|
level.player disableweapons();
|
|
level.player disableoffhandweapons();
|
|
level.player disableweaponswitch();
|
|
level.player allowcrouch(0);
|
|
level.player allowjump(0);
|
|
level.player allowmelee(0);
|
|
level.player allowprone(0);
|
|
level.player allowsprint(0);
|
|
}
|
|
|
|
//Function Number: 14
|
|
player_animated_sequence_cleanup()
|
|
{
|
|
if(!isdefined(level.player.early_weapon_enabled) || !level.player.early_weapon_enabled)
|
|
{
|
|
level.player.early_weapon_enabled = undefined;
|
|
level.player.disablereload = 0;
|
|
level.player enableweapons();
|
|
level.player enableoffhandweapons();
|
|
level.player enableweaponswitch();
|
|
}
|
|
|
|
level.player allowcrouch(1);
|
|
level.player allowjump(1);
|
|
level.player allowmelee(1);
|
|
level.player allowprone(1);
|
|
level.player allowsprint(1);
|
|
level.player unlink();
|
|
if(isdefined(level.player.mover))
|
|
{
|
|
level.player.mover delete();
|
|
}
|
|
|
|
if(isdefined(level.player.rig))
|
|
{
|
|
level.player.rig delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
smooth_player_link(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = [0,0,0,0];
|
|
}
|
|
else if(!isarray(param_02))
|
|
{
|
|
param_02 = [param_02,param_02,param_02,param_02];
|
|
}
|
|
|
|
level.player playerlinktoblend(param_00,"tag_player",param_01);
|
|
wait(param_01);
|
|
level.player playerlinktodelta(param_00,"tag_player",1,param_02[0],param_02[1],param_02[2],param_02[3],1);
|
|
param_00 show();
|
|
}
|
|
|
|
//Function Number: 16
|
|
anim_set_real_time(param_00,param_01,param_02)
|
|
{
|
|
common_scripts\utility::array_thread(param_00,::anim_self_set_real_time,param_01,param_02);
|
|
}
|
|
|
|
//Function Number: 17
|
|
anim_self_set_real_time(param_00,param_01)
|
|
{
|
|
var_02 = maps\_utility::getanim(param_00);
|
|
var_03 = param_01 / getanimlength(var_02);
|
|
self setanimtime(var_02,var_03);
|
|
}
|
|
|
|
//Function Number: 18
|
|
start_one_handed_gunplay(param_00)
|
|
{
|
|
self endon("death");
|
|
self notify("stop_one_handed_gunplay");
|
|
self endon("stop_one_handed_gunplay");
|
|
self.melee_threat = -1024;
|
|
self.gun_threat = -512;
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = self getcurrentweapon();
|
|
}
|
|
|
|
self disableweaponswitch();
|
|
self setautopickup(0);
|
|
self.one_weap = "init";
|
|
self.one_ammo = 15;
|
|
self.one_frac = 1;
|
|
self.one_time = 0;
|
|
self.ot = [];
|
|
self.ot["gun"] = 5000;
|
|
self.ot["aggro"] = 6000;
|
|
self.ot["flash"] = 10000;
|
|
self.ot["gen"] = 15000;
|
|
self.ot["p_kill"] = 15000;
|
|
self.ot["a_kill"] = 15000;
|
|
level one_handed_help_vo_setup();
|
|
level.player thread one_handed_help_flash_ally_tracker(1000);
|
|
self giveweapon("iw5_mahem_sp");
|
|
thread one_handed_swap_tracking();
|
|
if(issubstr(param_00,"knife"))
|
|
{
|
|
one_handed_switch_to_melee(1);
|
|
}
|
|
else
|
|
{
|
|
one_handed_weapon_check_swap(param_00);
|
|
}
|
|
|
|
thread one_handed_pickup_handling();
|
|
thread one_handed_drop_handling();
|
|
thread one_handed_grenade_handling();
|
|
thread one_handed_ammo_tracking();
|
|
thread one_handed_mantle_handling();
|
|
thread one_handed_exododge_handling();
|
|
}
|
|
|
|
//Function Number: 19
|
|
one_handed_pickup_handling()
|
|
{
|
|
self endon("death");
|
|
self endon("stop_one_handed_gunplay");
|
|
self notify("start_one_handed_pickup_handling");
|
|
self endon("start_one_handed_pickup_handling");
|
|
for(;;)
|
|
{
|
|
self waittill("weapon_change",var_00);
|
|
if(isdefined(var_00) && var_00 != "none" && var_00 != "iw5_kvahazmatknifeonearm_sp")
|
|
{
|
|
one_handed_weapon_check_swap(var_00);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 20
|
|
one_handed_drop_handling()
|
|
{
|
|
self endon("death");
|
|
self endon("stop_one_handed_gunplay");
|
|
self notify("start_one_handed_drop_handling");
|
|
self endon("start_one_handed_drop_handling");
|
|
for(;;)
|
|
{
|
|
self waittill("pickup",var_00,var_01);
|
|
if(!isdefined(var_00.dropped))
|
|
{
|
|
self notify("one_handed_weapon_swap",1);
|
|
}
|
|
|
|
if(!isdefined(var_01))
|
|
{
|
|
tprintln("Bug this if you didn\'t just throw a grenade");
|
|
continue;
|
|
}
|
|
else
|
|
{
|
|
if(!issubstr(var_01.classname,"knife"))
|
|
{
|
|
var_02 = spawn(maps\_utility::string("weapon_" + one_handed_get_base_weapon(var_01.classname)),var_01.origin);
|
|
var_02.angles = var_01.angles;
|
|
var_02.dropped = 1;
|
|
var_02 itemweaponsetammo(self.one_ammo,0);
|
|
var_01 delete();
|
|
if(self.one_frac <= 0.33)
|
|
{
|
|
var_02.low_ammo = 1;
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
self notify("melee_weapon_dropped");
|
|
var_01 delete();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 21
|
|
one_handed_grenade_handling()
|
|
{
|
|
self endon("death");
|
|
self endon("stop_one_handed_gunplay");
|
|
self notify("start_one_handed_grenade_handling");
|
|
self endon("start_one_handed_grenade_handling");
|
|
for(;;)
|
|
{
|
|
self waittill("grenade_fire");
|
|
var_00 = self getweaponammoclip(self getcurrentweapon());
|
|
var_01 = one_handed_get_base_weapon(self getcurrentweapon());
|
|
if(isdefined(var_01) && issubstr(var_01,"knife"))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_01))
|
|
{
|
|
var_02 = vectornormalize(anglestoforward(self.angles));
|
|
var_03 = vectornormalize(anglestoright(self.angles));
|
|
var_04 = self.origin + randomfloatrange(16,24) * var_03 + randomfloatrange(-6,6) * var_02 + (0,0,4);
|
|
var_05 = spawn(maps\_utility::string("weapon_" + var_01),var_04);
|
|
var_05.angles = (0,randomint(360),0);
|
|
var_05 itemweaponsetammo(var_00,0);
|
|
}
|
|
|
|
one_handed_switch_to_melee(1);
|
|
}
|
|
}
|
|
|
|
//Function Number: 22
|
|
one_handed_ammo_tracking()
|
|
{
|
|
self endon("death");
|
|
self endon("stop_one_handed_gunplay");
|
|
self notify("start_one_handed_ammo_tracking");
|
|
self endon("start_one_handed_ammo_tracking");
|
|
for(;;)
|
|
{
|
|
var_00 = common_scripts\utility::waittill_notify_or_timeout_return("one_hand_pickup",0.05);
|
|
var_01 = gettime();
|
|
self.one_weap = self getcurrentweapon();
|
|
if(self.one_weap != "none" && self.one_weap != "iw5_kvahazmatknifeonearm_sp")
|
|
{
|
|
var_02 = self.one_frac;
|
|
self.one_ammo = self getammocount(self.one_weap);
|
|
self.one_frac = self.one_ammo / weaponclipsize(self.one_weap);
|
|
if(self.one_ammo <= 0 && !isdefined(self.switch_to_melee))
|
|
{
|
|
if(issubstr(self.one_weap,"titan45"))
|
|
{
|
|
soundscripts\_snd::snd_message("aud_cap_45_onearm_toss");
|
|
}
|
|
else
|
|
{
|
|
soundscripts\_snd::snd_message("aud_cap_sml_onearm_toss");
|
|
}
|
|
|
|
thread one_handed_switch_to_melee();
|
|
continue;
|
|
}
|
|
|
|
if(var_02 > 0.33 && self.one_frac <= 0.33)
|
|
{
|
|
self.one_time = var_01 + randomintrange(500,2000);
|
|
}
|
|
|
|
if(!isdefined(level.one_handed_help))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(self.one_frac <= 0.33 && var_01 > self.one_time)
|
|
{
|
|
thread one_handed_help_try(var_01);
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(level.one_handed_help) && self.one_weap != "none" && var_01 > self.one_time)
|
|
{
|
|
thread one_handed_help_try(gettime(),4000);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 23
|
|
one_handed_swap_tracking()
|
|
{
|
|
self endon("death");
|
|
self notify("stop_one_handed_swap_tracking");
|
|
self endon("stop_one_handed_swap_tracking");
|
|
if(!isdefined(level.swap_num))
|
|
{
|
|
level.swap_num = 0;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
self waittill("one_handed_weapon_swap",var_00);
|
|
if(isdefined(var_00))
|
|
{
|
|
level.swap_num = level.swap_num + var_00;
|
|
}
|
|
else
|
|
{
|
|
level.swap_num = level.swap_num + 1;
|
|
}
|
|
|
|
if(level.swap_num >= 20)
|
|
{
|
|
maps\_utility::giveachievement_wrapper("LEVEL_14A");
|
|
self notify("stop_one_handed_swap_tracking");
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
one_handed_mantle_handling()
|
|
{
|
|
self endon("death");
|
|
self endon("stop_one_handed_gunplay");
|
|
self notify("stop_one_handed_mantle_handling");
|
|
self endon("stop_one_handed_mantle_handling");
|
|
for(;;)
|
|
{
|
|
self waittill("foley",var_00);
|
|
var_01 = self getcurrentweapon();
|
|
if(issubstr(var_00,"mantle") && isdefined(self.switch_to_melee) && !issubstr(var_01,"knife"))
|
|
{
|
|
self takeweapon(self getcurrentweapon());
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 25
|
|
one_handed_exododge_handling()
|
|
{
|
|
self endon("death");
|
|
self endon("stop_one_handed_gunplay");
|
|
self notify("stop_one_handed_exododge_handling");
|
|
self endon("stop_one_handed_exododge_handling");
|
|
for(;;)
|
|
{
|
|
self waittill("exo_dodge");
|
|
var_00 = self getcurrentweapon();
|
|
if(isdefined(self.switch_to_melee) && !issubstr(var_00,"knife"))
|
|
{
|
|
self takeweapon(self getcurrentweapon());
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 26
|
|
one_handed_modify_threatbias(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("stop_one_handed_gunplay");
|
|
if(isstring(param_00))
|
|
{
|
|
param_00 = tolower(param_00);
|
|
switch(param_00)
|
|
{
|
|
case "stand":
|
|
self.threat_stance = "stand";
|
|
param_00 = -128;
|
|
break;
|
|
|
|
case "crouch":
|
|
self.threat_stance = "crouch";
|
|
param_00 = -512;
|
|
break;
|
|
|
|
case "prone":
|
|
self.threat_stance = "prone";
|
|
param_00 = -1024;
|
|
break;
|
|
|
|
case "none":
|
|
self.threat_stance = "none";
|
|
param_00 = 0;
|
|
break;
|
|
|
|
case "standard":
|
|
param_00 = int(1024);
|
|
break;
|
|
|
|
case "aggro":
|
|
param_00 = 2048;
|
|
break;
|
|
|
|
default:
|
|
param_00 = 0;
|
|
break;
|
|
}
|
|
}
|
|
|
|
self.melee_threat = -1024 + param_00;
|
|
self.gun_threat = -512 + param_00;
|
|
if(self.one_weap != "none" && self.one_weap != "iw5_kvahazmatknifeonearm_sp")
|
|
{
|
|
setthreatbias("axis","player",self.gun_threat);
|
|
return;
|
|
}
|
|
|
|
setthreatbias("axis","player",self.melee_threat);
|
|
}
|
|
|
|
//Function Number: 27
|
|
one_handed_weapon_check_swap(param_00,param_01)
|
|
{
|
|
self endon("death");
|
|
if(isdefined(param_00) && !issubstr(param_00,"onearm_sp") || param_00 != self.one_weap)
|
|
{
|
|
var_02 = self getweaponammoclip(param_00);
|
|
if(!isdefined(param_01) || param_01)
|
|
{
|
|
self takeweapon(self getcurrentweapon());
|
|
}
|
|
|
|
var_03 = "iw5_titan45onearm_sp_xmags";
|
|
if(issubstr(tolower(param_00),"pbw"))
|
|
{
|
|
var_03 = "iw5_pbwonearm_sp_xmags";
|
|
}
|
|
else if(issubstr(tolower(param_00),"hmr9"))
|
|
{
|
|
var_03 = "iw5_hmr9onearm_sp_xmags";
|
|
}
|
|
else if(issubstr(tolower(param_00),"sn6"))
|
|
{
|
|
var_03 = "iw5_sn6onearm_sp_xmags";
|
|
}
|
|
|
|
if(var_02 <= 0)
|
|
{
|
|
var_02 = weaponclipsize(var_03);
|
|
}
|
|
|
|
if(!isdefined(param_01) || param_01)
|
|
{
|
|
setthreatbias("axis","player",self.gun_threat);
|
|
self notify("stop_switch_to_melee");
|
|
self.switch_to_melee = undefined;
|
|
self giveweapon(var_03);
|
|
soundscripts\_snd::snd_message("aud_onearm_weapon_swap",var_03);
|
|
self switchtoweapon(var_03);
|
|
self setweaponammostock(var_03,0);
|
|
self setweaponammoclip(var_03,var_02);
|
|
self enablealternatemelee();
|
|
}
|
|
|
|
return var_03;
|
|
}
|
|
|
|
if(!isdefined(var_03) || var_03)
|
|
{
|
|
setthreatbias("axis","player",self.gun_threat);
|
|
self notify("stop_switch_to_melee");
|
|
self.switch_to_melee = undefined;
|
|
self setweaponammostock(var_02,0);
|
|
}
|
|
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 28
|
|
one_handed_get_base_weapon(param_00,param_01,param_02)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = self getcurrentweapon();
|
|
}
|
|
|
|
param_00 = tolower(param_00);
|
|
var_03 = param_02;
|
|
if(issubstr(param_00,"titan45"))
|
|
{
|
|
var_03 = "iw5_titan45pickup_sp_xmags";
|
|
}
|
|
else if(issubstr(param_00,"hmr9"))
|
|
{
|
|
var_03 = "iw5_hmr9pickup_sp_xmags";
|
|
}
|
|
else if(issubstr(param_00,"sn6"))
|
|
{
|
|
var_03 = "iw5_sn6pickup_sp_xmags";
|
|
}
|
|
else if(issubstr(param_00,"knife") && !isdefined(param_01) || !param_01)
|
|
{
|
|
var_03 = "iw5_kvahazmatknife_sp";
|
|
}
|
|
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 29
|
|
one_handed_switch_to_melee(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("stop_switch_to_melee");
|
|
self notify("start_one_handed_switch_to_melee");
|
|
self endon("start_one_handed_switch_to_melee");
|
|
if(isdefined(param_00) && !param_00)
|
|
{
|
|
param_00 = undefined;
|
|
}
|
|
|
|
self notify("bullet_weapon_dropped");
|
|
setthreatbias("axis","player",self.melee_threat);
|
|
self giveweapon("iw5_kvahazmatknifeonearm_sp");
|
|
self switchtoweapon("iw5_kvahazmatknifeonearm_sp");
|
|
self.switch_to_melee = 1;
|
|
while(!isdefined(param_00) && !issubstr(self getcurrentweapon(),"knife"))
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
self.switch_to_melee = undefined;
|
|
var_01 = self getweaponslistall();
|
|
foreach(var_03 in var_01)
|
|
{
|
|
if(var_03 != "iw5_kvahazmatknifeonearm_sp" && var_03 != "iw5_mahem_sp" && var_03 != "flash_grenade")
|
|
{
|
|
self takeweapon(var_03);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 30
|
|
one_handed_melee_take_weapon(param_00)
|
|
{
|
|
self endon("death");
|
|
self notify("stop_switch_to_melee");
|
|
wait(0.5);
|
|
var_01 = one_handed_weapon_check_swap(param_00,0);
|
|
setthreatbias("axis","player",self.gun_threat);
|
|
self.switch_to_melee = undefined;
|
|
self takeweapon("iw5_kvahazmatknifeonearm_sp");
|
|
self giveweapon(var_01);
|
|
self switchtoweapon(var_01);
|
|
self setweaponammostock(var_01,0);
|
|
self setweaponammoclip(var_01,int(randomfloatrange(0.5,1) * weaponclipsize(var_01)));
|
|
self notify("one_handed_weapon_swap",1);
|
|
}
|
|
|
|
//Function Number: 31
|
|
one_handed_help_try(param_00,param_01)
|
|
{
|
|
self endon("death");
|
|
self endon("stop_one_handed_gunplay");
|
|
if(!common_scripts\utility::flag("flag_one_handed_help_try"))
|
|
{
|
|
common_scripts\utility::flag_set("flag_one_handed_help_try");
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = gettime();
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 6000;
|
|
}
|
|
|
|
if(param_00 > self.ot["gun"] && common_scripts\utility::cointoss() && level.ally one_handed_help_gun())
|
|
{
|
|
self.one_time = param_00 + param_01;
|
|
self.ot["gun"] = param_00 + 10000;
|
|
common_scripts\utility::flag_clear("flag_one_handed_help_try");
|
|
return 1;
|
|
}
|
|
|
|
if(param_00 > self.ot["aggro"] && common_scripts\utility::cointoss() && level.ally one_handed_help_aggro())
|
|
{
|
|
self.one_time = param_00 + param_01;
|
|
self.ot["aggro"] = param_00 + 12000;
|
|
common_scripts\utility::flag_clear("flag_one_handed_help_try");
|
|
return 1;
|
|
}
|
|
|
|
if(param_00 > self.ot["flash"] && common_scripts\utility::cointoss() && level.ally one_handed_help_flash())
|
|
{
|
|
self.one_time = param_00 + param_01;
|
|
self.ot["flash"] = param_00 + 20000;
|
|
common_scripts\utility::flag_clear("flag_one_handed_help_try");
|
|
return 1;
|
|
}
|
|
|
|
if(param_00 > self.ot["gen"] && common_scripts\utility::cointoss() && level.ally one_handed_help_gen())
|
|
{
|
|
self.one_time = param_00 + param_01 / 2;
|
|
self.ot["gen"] = param_00 + 15000;
|
|
common_scripts\utility::flag_clear("flag_one_handed_help_try");
|
|
return 1;
|
|
}
|
|
|
|
common_scripts\utility::flag_clear("flag_one_handed_help_try");
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 32
|
|
one_handed_help_flash_ally_tracker(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("stop_one_handed_gunplay");
|
|
self notify("start_one_handed_help_flash_ally_tracker");
|
|
self endon("start_one_handed_help_flash_ally_tracker");
|
|
self.ot["ally_seen"] = gettime();
|
|
self.ot["vis_delay"] = param_00;
|
|
for(;;)
|
|
{
|
|
wait(0.1);
|
|
var_01 = gettime();
|
|
var_02 = self.ot["flash"] - self.ot["vis_delay"];
|
|
if(var_02 > var_01)
|
|
{
|
|
wait(var_02 - var_01 / 1000);
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(level.ally))
|
|
{
|
|
if(maps\_utility::player_can_see_ai(level.ally))
|
|
{
|
|
self.ot["ally_seen"] = var_01;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 33
|
|
one_handed_help_gun()
|
|
{
|
|
self endon("death");
|
|
var_00 = [];
|
|
foreach(var_02 in getweaponarray())
|
|
{
|
|
if(!isdefined(var_02.low_ammo))
|
|
{
|
|
var_00[var_00.size] = var_02;
|
|
}
|
|
}
|
|
|
|
var_04 = common_scripts\utility::getclosest(level.player.origin,var_00,128);
|
|
if(isdefined(var_04) && level.player get_player_speed() < 24)
|
|
{
|
|
var_05 = weaponclass(getsubstr(var_04.classname,7));
|
|
var_06 = level.player get_relative_direction(var_04);
|
|
var_07 = randomint(level.one_vo[var_05][var_06].size);
|
|
maps\_utility::smart_dialogue(level.one_vo[var_05][var_06][var_07]);
|
|
return 1;
|
|
}
|
|
|
|
var_07 = common_scripts\utility::getclosest(self.origin,var_03,128);
|
|
if(isdefined(var_07) && self.a.state != "move" && maps\_utility::player_can_see_ai(self))
|
|
{
|
|
var_05 = weaponclass(getsubstr(var_07.classname,7));
|
|
var_07 = randomint(level.one_vo[var_07]["ally"].size);
|
|
maps\_utility::smart_dialogue(level.one_vo[var_06]["ally"][var_07]);
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 34
|
|
one_handed_help_gen()
|
|
{
|
|
self endon("death");
|
|
if(!maps\_utility::player_can_see_ai(self) && randomint(10) < 7)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = [];
|
|
if(level.player.one_weap != "none" && level.player.one_weap != "iw5_kvahazmatknifeonearm_sp")
|
|
{
|
|
var_00 = ["cap_gdn_goodonammo","cap_gdn_goodonammo","cap_gdn_checkyourammo","cap_gdn_checkyourammo","cap_gdn_checkyourammo"];
|
|
}
|
|
|
|
if(distancesquared(level.ally.origin,level.player.origin) < 65536)
|
|
{
|
|
var_00 = ["cap_gdn_hangintheremitchell","cap_gdn_weregonnamakeit"];
|
|
}
|
|
|
|
if(self cansee(level.player) && level.player.one_weap == "iw5_kvahazmatknifeonearm_sp")
|
|
{
|
|
var_00 = common_scripts\utility::array_combine(var_00,["cap_gdn_youreouttimeto"]);
|
|
}
|
|
|
|
if(var_00.size > 0)
|
|
{
|
|
level.ally maps\_utility::smart_dialogue(common_scripts\utility::random(var_00));
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 35
|
|
one_handed_help_flash()
|
|
{
|
|
if(animscripts\combat::waitforstancechange())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = common_scripts\utility::get_array_of_closest(level.player.origin,getaiarray("axis"),undefined,undefined,1024,192);
|
|
if(self.grenadeammo < 1)
|
|
{
|
|
maps\_utility::set_grenadeammo(100);
|
|
}
|
|
|
|
var_01 = undefined;
|
|
if(!isdefined(self.a) || !isdefined(self.a.array))
|
|
{
|
|
return 0;
|
|
}
|
|
else if(isdefined(self.a.array["grenade_exposed"]))
|
|
{
|
|
var_01 = self.a.array["grenade_exposed"];
|
|
}
|
|
else if(isdefined(self.a.array["exposed_grenade"]))
|
|
{
|
|
var_01 = self.a.array["exposed_grenade"];
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isarray(var_01))
|
|
{
|
|
var_01 = var_01[randomint(var_01.size)];
|
|
}
|
|
|
|
var_02 = animscripts\combat_utility::getgrenadethrowoffset(var_01);
|
|
if(level.player.ot["ally_seen"] + level.player.ot["vis_delay"] > gettime())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_03 = undefined;
|
|
self.script_forcegrenade = 1;
|
|
foreach(var_05 in var_00)
|
|
{
|
|
if(self cansee(var_05))
|
|
{
|
|
var_03 = self magicgrenade(self.origin + var_02,var_05 getshootatpos(),2);
|
|
}
|
|
|
|
if(isdefined(var_03))
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
self.script_forcegrenade = 0;
|
|
if(self.grenadeammo > 10)
|
|
{
|
|
maps\_utility::set_grenadeammo(0);
|
|
}
|
|
|
|
if(!isdefined(var_03))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
thread animscripts\door::teamflashbangimmune();
|
|
thread maps\_utility::smart_dialogue(common_scripts\utility::random(["cap_gdn_flashouttakecover","cap_gdn_throwingflash"]));
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 36
|
|
getappropanim(param_00)
|
|
{
|
|
}
|
|
|
|
//Function Number: 37
|
|
ally_one_handed_grenade_proc()
|
|
{
|
|
level.player endon("stop_one_handed_gunplay");
|
|
self endon("death");
|
|
self notify("stop_ally_grenade_help");
|
|
self endon("stop_ally_grenade_help");
|
|
for(;;)
|
|
{
|
|
level.player common_scripts\utility::waittill_notify_or_timeout("bullet_weapon_dropped",randomfloat(1));
|
|
if(getthreatbias("axis","player") > -1024)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_00 = common_scripts\utility::get_array_of_closest(level.player.origin,getaiarray("axis"),undefined,undefined,1024,192);
|
|
if(self.grenadeammo < 1)
|
|
{
|
|
maps\_utility::set_grenadeammo(1);
|
|
}
|
|
|
|
var_01 = undefined;
|
|
if(isdefined(self.a.array["grenade_exposed"]))
|
|
{
|
|
var_01 = self.a.array["grenade_exposed"];
|
|
}
|
|
else if(isdefined(self.a.array["exposed_grenade"]))
|
|
{
|
|
var_01 = self.a.array["exposed_grenade"];
|
|
}
|
|
|
|
if(isdefined(var_01) && isarray(var_01))
|
|
{
|
|
var_01 = var_01[randomint(var_01.size)];
|
|
}
|
|
|
|
var_02 = animscripts\combat_utility::getgrenadethrowoffset(var_01);
|
|
var_03 = 0;
|
|
self.script_forcegrenade = 1;
|
|
foreach(var_05 in var_00)
|
|
{
|
|
animscripts\combat_utility::setactivegrenadetimer(var_05);
|
|
var_03 = animscripts\combat_utility::trygrenadethrow(var_05,var_05 getshootatpos(),var_01,var_02,1,0,1);
|
|
if(var_03)
|
|
{
|
|
if(self.grenadeweapon == "flash_grenade")
|
|
{
|
|
self notify("flashbang_thrown");
|
|
}
|
|
|
|
self.teamflashbangimmunity = 1;
|
|
maps\_utility::anim_stopanimscripted();
|
|
self notify("move_interrupt");
|
|
self.update_move_anim_type = undefined;
|
|
self.a.movement = "stop";
|
|
common_scripts\utility::waittill_any("done_grenade_throw","killanimscript");
|
|
thread animscripts\move::restartmoveloop(1);
|
|
maps\_utility::set_force_color("r");
|
|
break;
|
|
}
|
|
}
|
|
|
|
self.script_forcegrenade = 0;
|
|
if(var_03)
|
|
{
|
|
wait(randomfloatrange(8,10));
|
|
self.teamflashbangimmunity = undefined;
|
|
continue;
|
|
}
|
|
|
|
wait(0.25);
|
|
}
|
|
}
|
|
|
|
//Function Number: 38
|
|
one_handed_help_aggro()
|
|
{
|
|
self endon("death");
|
|
var_00 = [];
|
|
foreach(var_02 in common_scripts\utility::get_array_of_closest(level.player.origin,getaiarray("axis"),undefined,undefined,384))
|
|
{
|
|
if(isplayer(var_02.enemy))
|
|
{
|
|
var_00[var_00.size] = var_02;
|
|
}
|
|
}
|
|
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(self cansee(var_02))
|
|
{
|
|
self.aggressivemode = 1;
|
|
maps\_utility::set_favoriteenemy(var_02);
|
|
var_02 thread opfor_help_aggro();
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 39
|
|
opfor_help_aggro()
|
|
{
|
|
self endon("aggro_cleanup");
|
|
thread opfor_help_aggro_cleanup(5);
|
|
self.aggro_target = 1;
|
|
self.health = 1;
|
|
self waittill("death",var_00);
|
|
level.ally.aggressivemode = undefined;
|
|
if(!isdefined(var_00) || isplayer(var_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
wait(randomfloatrange(0.25,0.75));
|
|
level.ally maps\_utility::smart_dialogue(common_scripts\utility::random(["cap_gdn_gotyourback","cap_gdn_igotchamitchell","cap_gdn_thankmelater"]));
|
|
}
|
|
|
|
//Function Number: 40
|
|
opfor_help_aggro_cleanup(param_00)
|
|
{
|
|
self endon("death");
|
|
wait(param_00);
|
|
self.aggro_target = undefined;
|
|
self.health = 100;
|
|
level.player.ot["aggro"] = 0;
|
|
level.ally.aggressivemode = undefined;
|
|
level.ally maps\_utility::set_favoriteenemy(undefined);
|
|
self notify("aggro_cleanup");
|
|
}
|
|
|
|
//Function Number: 41
|
|
get_player_speed()
|
|
{
|
|
self endon("death");
|
|
var_00 = self getentityvelocity();
|
|
return sqrt(squared(var_00[0]) + squared(var_00[1]));
|
|
}
|
|
|
|
//Function Number: 42
|
|
get_relative_direction(param_00)
|
|
{
|
|
var_01 = vectortoangles(vectornormalize(anglestoforward(animscripts\battlechatter::getrelativeangles(self))));
|
|
var_02 = vectortoangles(param_00.origin - self.origin);
|
|
var_03 = int(var_01[1] - var_02[1] + 360) % 360;
|
|
if(var_03 > 315 || var_03 < 45)
|
|
{
|
|
return "twelve";
|
|
}
|
|
|
|
if(var_03 > 225)
|
|
{
|
|
return "nine";
|
|
}
|
|
|
|
if(var_03 > 135)
|
|
{
|
|
return "six";
|
|
}
|
|
|
|
return "three";
|
|
}
|
|
|
|
//Function Number: 43
|
|
one_handed_help_vo_setup()
|
|
{
|
|
if(isdefined(level.one_vo))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = [];
|
|
var_00["smg"] = [];
|
|
var_00["pistol"] = [];
|
|
var_00["pistol"]["twelve"] = ["cap_gdn_pistolatyour12","cap_gdn_weaponatyour12"];
|
|
var_00["pistol"]["nine"] = ["cap_gdn_pistolatyour9","cap_gdn_weaponatyour9"];
|
|
var_00["pistol"]["six"] = ["cap_gdn_pistolatyour6","cap_gdn_weaponatyour6"];
|
|
var_00["pistol"]["three"] = ["cap_gdn_pistolatyour3","cap_gdn_weaponatyour3"];
|
|
var_00["smg"]["twelve"] = ["cap_gdn_smgatyour12","cap_gdn_weaponatyour12"];
|
|
var_00["smg"]["nine"] = ["cap_gdn_smgatyour9","cap_gdn_weaponatyour9"];
|
|
var_00["smg"]["six"] = ["cap_gdn_smgatyour6","cap_gdn_weaponatyour6"];
|
|
var_00["smg"]["three"] = ["cap_gdn_smgatyour3","cap_gdn_weaponatyour3"];
|
|
var_00["pistol"]["ally"] = ["cap_gdn_foundapistol","cap_gdn_pistolhere","cap_gdn_weaponsoverhere","cap_gdn_extragunsheremitchell"];
|
|
var_00["smg"]["ally"] = ["cap_gdn_foundansmg","cap_gdn_smghere","cap_gdn_weaponsoverhere","cap_gdn_extragunsheremitchell"];
|
|
level.one_vo = var_00;
|
|
}
|
|
|
|
//Function Number: 44
|
|
opfor_death_mod()
|
|
{
|
|
self endon("stop_opfor_one_handed");
|
|
level.player endon("stop_one_handed_gunplay");
|
|
self waittill("death",var_00,var_01,var_02);
|
|
var_03 = self.enemy;
|
|
if(!isdefined(var_03))
|
|
{
|
|
var_03 = self;
|
|
}
|
|
|
|
if(isremovedentity(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
maps\_utility::place_weapon_on(one_handed_get_base_weapon(self.weapon,1,"iw5_titan45onearmgundown_sp_xmags"),"right");
|
|
if(isplayer(var_00) && var_02 == "iw5_kvahazmatknifeonearm_sp")
|
|
{
|
|
self notify("opfor_melee_kill");
|
|
self.dropweapon = 0;
|
|
level.player one_handed_melee_take_weapon(self.weapon);
|
|
}
|
|
|
|
if(!isdefined(level.one_handed_help))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
wait(randomfloatrange(0.25,0.75));
|
|
var_04 = gettime();
|
|
if(var_04 > level.player.ot["p_kill"] && isplayer(var_00) && var_03 == level.ally && common_scripts\utility::cointoss())
|
|
{
|
|
level.player.ot["p_kill"] = var_04 + 15000;
|
|
level.ally maps\_utility::smart_dialogue(common_scripts\utility::random(["cap_gdn_goodshot","cap_gdn_thanksforthesave"]));
|
|
return;
|
|
}
|
|
|
|
if(var_04 > level.player.ot["a_kill"] && var_04 > level.player.one_time && isplayer(var_03) && var_00 == level.ally && common_scripts\utility::cointoss())
|
|
{
|
|
level.player.ot["a_kill"] = var_04 + 15000;
|
|
level.ally maps\_utility::smart_dialogue(common_scripts\utility::random(["cap_gdn_thankmelater","cap_gdn_gotyourback","cap_gdn_igotchamitchell"]));
|
|
}
|
|
}
|
|
|
|
//Function Number: 45
|
|
opfor_ammo_drop_mod()
|
|
{
|
|
self endon("stop_opfor_one_handed");
|
|
level.player endon("stop_one_handed_gunplay");
|
|
self endon("opfor_melee_kill");
|
|
self waittill("weapon_dropped",var_00);
|
|
wait(0.05);
|
|
if(!isdefined(var_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_01 = getsubstr(var_00.classname,7);
|
|
if(isdefined(self.dropweapon) && !self.dropweapon)
|
|
{
|
|
var_00 delete();
|
|
return;
|
|
}
|
|
|
|
if(weaponclass(var_01) == "pistol" || weaponclass(var_01) == "smg")
|
|
{
|
|
var_00 itemweaponsetammo(int(randomfloatrange(0.7,1) * weaponclipsize(var_01)),0);
|
|
return;
|
|
}
|
|
|
|
var_00 delete();
|
|
}
|
|
|
|
//Function Number: 46
|
|
door_setup(param_00,param_01,param_02)
|
|
{
|
|
var_03 = undefined;
|
|
if(isstring(param_00))
|
|
{
|
|
var_03 = getent(param_00,"targetname");
|
|
}
|
|
else
|
|
{
|
|
var_03 = param_00;
|
|
}
|
|
|
|
if(var_03.classname != "script_model" && var_03.classname != "script_brushmodel")
|
|
{
|
|
}
|
|
|
|
var_04 = undefined;
|
|
if(isdefined(var_03.target))
|
|
{
|
|
var_05 = getentarray(var_03.target,"targetname");
|
|
foreach(var_07 in var_05)
|
|
{
|
|
if(var_07.classname == "script_brushmodel")
|
|
{
|
|
var_04 = var_07;
|
|
continue;
|
|
}
|
|
|
|
if(var_07.classname == "script_origin")
|
|
{
|
|
if(!isdefined(param_02))
|
|
{
|
|
var_03.hinge = var_07;
|
|
var_03.hinge.tag_name = param_02;
|
|
var_03 linkto(var_03.hinge);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
if(isdefined(param_02))
|
|
{
|
|
var_03.hinge = common_scripts\utility::spawn_tag_origin();
|
|
var_03.hinge.origin = var_03 gettagorigin(param_02);
|
|
var_03.hinge.angles = var_03 gettagangles(param_02);
|
|
if(!isdefined(param_01))
|
|
{
|
|
var_03 linkto(var_03.hinge);
|
|
}
|
|
}
|
|
|
|
if(isdefined(var_04))
|
|
{
|
|
var_03.col_brush = var_04;
|
|
if(isdefined(param_02))
|
|
{
|
|
var_03.col_brush linkto(var_03,param_02);
|
|
}
|
|
else
|
|
{
|
|
var_03.col_brush linkto(var_03);
|
|
}
|
|
}
|
|
else if(var_03.classname == "script_brushmodel")
|
|
{
|
|
var_03.col_brush = var_03;
|
|
}
|
|
|
|
var_03.original_angles = var_03.angles;
|
|
if(isdefined(param_01))
|
|
{
|
|
var_03 maps\_utility::assign_animtree(param_01);
|
|
}
|
|
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 47
|
|
door_close(param_00,param_01,param_02)
|
|
{
|
|
var_03 = self;
|
|
if(isdefined(self._lastanimtime))
|
|
{
|
|
self._lastanimtime = undefined;
|
|
self stopuseanimtree();
|
|
}
|
|
|
|
var_04 = undefined;
|
|
if(isdefined(var_03.hinge))
|
|
{
|
|
if(!var_03 islinked())
|
|
{
|
|
var_03 linkto(var_03.hinge);
|
|
}
|
|
|
|
var_04 = var_03.hinge;
|
|
}
|
|
else
|
|
{
|
|
var_04 = var_03;
|
|
}
|
|
|
|
var_05 = 0.05;
|
|
if(isdefined(param_01))
|
|
{
|
|
var_05 = param_01;
|
|
}
|
|
|
|
if(isdefined(param_00))
|
|
{
|
|
var_04 rotateyaw(param_00,var_05);
|
|
}
|
|
else
|
|
{
|
|
var_04 rotateto(var_03.original_angles,var_05);
|
|
}
|
|
|
|
if(isdefined(param_02))
|
|
{
|
|
wait(param_02);
|
|
}
|
|
else
|
|
{
|
|
wait(var_05);
|
|
}
|
|
|
|
if(isdefined(var_03.col_brush))
|
|
{
|
|
var_03.col_brush disconnectpaths();
|
|
}
|
|
}
|
|
|
|
//Function Number: 48
|
|
door_open(param_00,param_01,param_02)
|
|
{
|
|
var_03 = self;
|
|
if(isdefined(self._lastanimtime))
|
|
{
|
|
self._lastanimtime = undefined;
|
|
self stopuseanimtree();
|
|
}
|
|
|
|
var_04 = undefined;
|
|
if(isdefined(var_03.hinge))
|
|
{
|
|
if(!var_03 islinked())
|
|
{
|
|
var_03 linkto(var_03.hinge);
|
|
}
|
|
|
|
var_04 = var_03.hinge;
|
|
}
|
|
else
|
|
{
|
|
var_04 = var_03;
|
|
}
|
|
|
|
var_05 = undefined;
|
|
var_06 = undefined;
|
|
if(isarray(param_00))
|
|
{
|
|
var_05 = param_00[0];
|
|
var_06 = param_00[1];
|
|
}
|
|
else
|
|
{
|
|
var_05 = param_00;
|
|
}
|
|
|
|
var_07 = 0.05;
|
|
if(isdefined(param_01))
|
|
{
|
|
var_07 = param_01;
|
|
}
|
|
|
|
var_04 rotateyaw(var_05,var_07);
|
|
if(isdefined(param_02))
|
|
{
|
|
wait(param_02);
|
|
}
|
|
else
|
|
{
|
|
wait(var_07);
|
|
}
|
|
|
|
if(isdefined(var_03.col_brush))
|
|
{
|
|
var_03.col_brush connectpaths();
|
|
}
|
|
|
|
if(isdefined(param_02) && param_02 < var_07)
|
|
{
|
|
wait(var_07 - param_02);
|
|
}
|
|
|
|
wait(0.05);
|
|
if(isdefined(var_06))
|
|
{
|
|
var_04 rotateyaw(var_06,2.5,0.05,2.45);
|
|
}
|
|
}
|
|
|
|
//Function Number: 49
|
|
door_lower(param_00,param_01,param_02)
|
|
{
|
|
self moveto(param_00,param_01);
|
|
if(isdefined(param_02))
|
|
{
|
|
wait(param_02);
|
|
}
|
|
else
|
|
{
|
|
wait(param_01);
|
|
}
|
|
|
|
self.col_brush disconnectpaths();
|
|
}
|
|
|
|
//Function Number: 50
|
|
door_raise(param_00,param_01,param_02)
|
|
{
|
|
self moveto(param_00,param_01);
|
|
if(isdefined(param_02))
|
|
{
|
|
wait(param_02);
|
|
}
|
|
else
|
|
{
|
|
wait(param_01);
|
|
}
|
|
|
|
self.col_brush connectpaths();
|
|
}
|
|
|
|
//Function Number: 51
|
|
captured_caravan_spawner(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
level endon("stop_caravan_spawner");
|
|
if(level.currentgen)
|
|
{
|
|
if(isdefined(param_04))
|
|
{
|
|
var_05 = tff_get_zone_cleanup_notify(param_04);
|
|
if(var_05 != "")
|
|
{
|
|
level endon(var_05);
|
|
}
|
|
}
|
|
}
|
|
|
|
var_06 = 1;
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 2;
|
|
}
|
|
|
|
if(!isdefined(param_03))
|
|
{
|
|
param_03 = 3;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
var_07 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(param_00);
|
|
if(level.currentgen)
|
|
{
|
|
if(isdefined(param_04))
|
|
{
|
|
var_07 thread tff_cleanup_vehicle(param_04);
|
|
}
|
|
}
|
|
|
|
var_07 thread captured_caravan_truck_remover();
|
|
wait(randomfloatrange(param_02,param_03));
|
|
if(param_00 == "intro_drive_trucks")
|
|
{
|
|
thread soundscripts\_snd::snd_message("aud_intro_caravan_passby");
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
if(var_06 >= param_01)
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_06 = var_06 + 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 52
|
|
captured_caravan_truck_remover(param_00)
|
|
{
|
|
self waittill("reached_end_node");
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 53
|
|
debug_show_pos(param_00,param_01,param_02,param_03)
|
|
{
|
|
self notify("stop_debug_show_pos");
|
|
self endon("stop_debug_show_pos");
|
|
self endon("death");
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = 8;
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 0;
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 0;
|
|
}
|
|
|
|
if(!isdefined(param_03))
|
|
{
|
|
param_03 = 1;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
self notify("stop_circle");
|
|
maps\_utility::draw_circle_until_notify(self.origin,param_00,param_01,param_02,param_03,self,"stop_circle");
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 54
|
|
debug_text(param_00,param_01)
|
|
{
|
|
self notify("stop_debug_show_pos");
|
|
self endon("stop_debug_show_pos");
|
|
self endon("death");
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = (1,1,1);
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
thread maps\_utility::notify_delay("stop_debug_show_pos",param_01);
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 55
|
|
debug_show_pos_once(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 8;
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 0;
|
|
}
|
|
|
|
if(!isdefined(param_03))
|
|
{
|
|
param_03 = 0;
|
|
}
|
|
|
|
if(!isdefined(param_04))
|
|
{
|
|
param_04 = 1;
|
|
}
|
|
|
|
maps\_utility::draw_circle_until_notify(param_00,param_01,param_02,param_03,param_04,level,param_05);
|
|
wait(0.05);
|
|
}
|
|
|
|
//Function Number: 56
|
|
debug_show_vec(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
|
{
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = (1,0,0);
|
|
}
|
|
|
|
if(!isdefined(param_03))
|
|
{
|
|
var_07 = 100;
|
|
}
|
|
|
|
if(isdefined(param_04))
|
|
{
|
|
thread maps\_debug::print3ddraw(param_00,param_04,param_02,param_05,param_06);
|
|
}
|
|
|
|
thread maps\_debug::drawarrow(param_00,param_01,param_02,param_03);
|
|
wait(0.05 * param_03);
|
|
self notify("stop_print3ddraw");
|
|
}
|
|
|
|
//Function Number: 57
|
|
mission_timer()
|
|
{
|
|
if(!getdvarint("timer_enabled"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = 1;
|
|
level.time_array = [];
|
|
level.location_array = [];
|
|
level.display_array = [];
|
|
level.time_display_array = [];
|
|
var_01 = mission_timer_hud_creator(10,420);
|
|
var_01 settimerstatic(var_00);
|
|
for(;;)
|
|
{
|
|
var_02 = level.location_array.size;
|
|
for(;;)
|
|
{
|
|
wait(1);
|
|
var_01 settimerstatic(var_00);
|
|
if(var_02 != level.location_array.size)
|
|
{
|
|
level.time_array[level.time_array.size] = var_00;
|
|
var_00 = var_00 + 1;
|
|
break;
|
|
}
|
|
|
|
var_00 = var_00 + 1;
|
|
}
|
|
|
|
if(level.location_array[level.location_array.size - 1] == "end")
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
level notify("new_event_message");
|
|
var_03 = mission_timer_hud_creator(380,30);
|
|
var_03 settext("Event Timings");
|
|
var_04 = 0;
|
|
foreach(var_06 in level.display_array)
|
|
{
|
|
var_06 settext(level.location_array[var_04] + " " + "=");
|
|
var_04 = var_04 + 1;
|
|
}
|
|
|
|
var_04 = 0;
|
|
foreach(var_09 in level.time_display_array)
|
|
{
|
|
var_09 settimerstatic(level.time_array[var_04]);
|
|
var_04 = var_04 + 1;
|
|
}
|
|
}
|
|
|
|
//Function Number: 58
|
|
mission_timer_event(param_00)
|
|
{
|
|
if(!getdvarint("timer_enabled"))
|
|
{
|
|
return;
|
|
}
|
|
|
|
level.location_array[level.location_array.size] = param_00;
|
|
var_01 = level.location_array.size;
|
|
var_02 = var_01 * 20;
|
|
var_02 = var_02 + 50;
|
|
while(level.time_array.size != level.location_array.size)
|
|
{
|
|
wait(0.05);
|
|
}
|
|
|
|
var_03 = mission_timer_hud_creator(300,var_02);
|
|
level.display_array[level.display_array.size] = var_03;
|
|
var_03 = mission_timer_hud_creator(400,var_02);
|
|
level.time_display_array[level.time_display_array.size] = var_03;
|
|
}
|
|
|
|
//Function Number: 59
|
|
mission_timer_hud_creator(param_00,param_01)
|
|
{
|
|
var_02 = newhudelem();
|
|
var_02.x = param_00;
|
|
var_02.y = param_01;
|
|
var_02.sort = 0;
|
|
var_02.alignx = "right";
|
|
var_02.aligny = "middle";
|
|
var_02.fontscale = 2;
|
|
var_02.font = "objective";
|
|
var_02.color = (1,1,1);
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 60
|
|
waittill_entity_activate_looking_at(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09)
|
|
{
|
|
var_0A = 0.5;
|
|
if(isdefined(param_04))
|
|
{
|
|
var_0A = param_04;
|
|
}
|
|
|
|
var_0B = 64;
|
|
if(isdefined(param_03))
|
|
{
|
|
var_0B = param_03;
|
|
}
|
|
|
|
if(!isdefined(param_05))
|
|
{
|
|
param_05 = 1;
|
|
}
|
|
else
|
|
{
|
|
param_05 = 0;
|
|
}
|
|
|
|
var_0C = param_00;
|
|
if(isdefined(param_06))
|
|
{
|
|
var_0C = param_00 common_scripts\utility::spawn_tag_origin();
|
|
var_0C linkto(param_00,param_06,(0,0,0),(0,0,0));
|
|
}
|
|
|
|
if(!isdefined(param_07))
|
|
{
|
|
param_07 = 5;
|
|
}
|
|
|
|
if(isdefined(param_02))
|
|
{
|
|
var_0D = param_02;
|
|
}
|
|
else
|
|
{
|
|
var_0D = "flag_waittill_entity_activate_looking_at";
|
|
}
|
|
|
|
if(!common_scripts\utility::flag_exist(var_0D))
|
|
{
|
|
common_scripts\utility::flag_init(var_0D);
|
|
}
|
|
|
|
var_0E = 0;
|
|
var_0F = 0;
|
|
for(;;)
|
|
{
|
|
if(isdefined(param_09))
|
|
{
|
|
common_scripts\utility::flag_wait(param_09);
|
|
}
|
|
|
|
if((isdefined(param_01) && param_01 != "melee" && level.player meleebuttonpressed()) || level.player isthrowinggrenade() || !level.player isonground() || level.player getstance() == "prone")
|
|
{
|
|
common_scripts\utility::flag_clear(var_0D);
|
|
var_0F = 0;
|
|
level.player enableweaponpickup();
|
|
}
|
|
else if(level.player maps\_utility::player_looking_at(var_0C.origin,var_0A,1))
|
|
{
|
|
var_10 = undefined;
|
|
if(param_05)
|
|
{
|
|
var_10 = level.player geteye();
|
|
}
|
|
else
|
|
{
|
|
var_10 = level.player.origin;
|
|
}
|
|
|
|
if(isdefined(param_08))
|
|
{
|
|
if(common_scripts\utility::flag(param_08))
|
|
{
|
|
if(!common_scripts\utility::flag(var_0D))
|
|
{
|
|
var_0E = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_clear(var_0D);
|
|
var_0F = 0;
|
|
level.player enableweaponpickup();
|
|
}
|
|
}
|
|
else if(distance(var_10,var_0C.origin) <= var_0B)
|
|
{
|
|
if(!common_scripts\utility::flag(var_0D))
|
|
{
|
|
var_0E = 1;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_clear(var_0D);
|
|
var_0F = 0;
|
|
level.player enableweaponpickup();
|
|
}
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::flag_clear(var_0D);
|
|
var_0F = 0;
|
|
level.player enableweaponpickup();
|
|
}
|
|
|
|
if(isdefined(param_01))
|
|
{
|
|
if(param_01 == "melee" && level.player meleebuttonpressed())
|
|
{
|
|
var_0F++;
|
|
}
|
|
}
|
|
else if(level.player usebuttonpressed())
|
|
{
|
|
var_0F++;
|
|
}
|
|
|
|
if(common_scripts\utility::flag(var_0D) && var_0F >= param_07)
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(var_0E)
|
|
{
|
|
common_scripts\utility::flag_set(var_0D);
|
|
if(isdefined(param_02))
|
|
{
|
|
maps\_utility::display_hint_timeout(param_02);
|
|
}
|
|
|
|
var_0E = 0;
|
|
level.player disableweaponpickup();
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
|
|
level.player enableweaponpickup();
|
|
common_scripts\utility::flag_clear(var_0D);
|
|
if(isdefined(param_06))
|
|
{
|
|
var_0C delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 61
|
|
ignore_everything()
|
|
{
|
|
if(isdefined(self.script_drone))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self._ignore_settings_old))
|
|
{
|
|
unignore_everything();
|
|
}
|
|
|
|
self._ignore_settings_old = [];
|
|
self.disableplayeradsloscheck = save_ignore_setting(self.disableplayeradsloscheck,"disableplayeradsloscheck",1);
|
|
self.ignoreall = save_ignore_setting(self.ignoreall,"ignoreall",1);
|
|
self.ignoreme = save_ignore_setting(self.ignoreme,"ignoreme",1);
|
|
self.grenadeawareness = save_ignore_setting(self.grenadeawareness,"grenadeawareness",0);
|
|
self.ignoreexplosionevents = save_ignore_setting(self.ignoreexplosionevents,"ignoreexplosionevents",1);
|
|
self.ignorerandombulletdamage = save_ignore_setting(self.ignorerandombulletdamage,"ignorerandombulletdamage",1);
|
|
self.ignoresuppression = save_ignore_setting(self.ignoresuppression,"ignoresuppression",1);
|
|
self.dontavoidplayer = save_ignore_setting(self.dontavoidplayer,"dontavoidplayer",1);
|
|
self.newenemyreactiondistsq = save_ignore_setting(self.newenemyreactiondistsq,"newEnemyReactionDistSq",0);
|
|
self.disablebulletwhizbyreaction = save_ignore_setting(self.disablebulletwhizbyreaction,"disableBulletWhizbyReaction",1);
|
|
self.disablefriendlyfirereaction = save_ignore_setting(self.disablefriendlyfirereaction,"disableFriendlyFireReaction",1);
|
|
self.dontmelee = save_ignore_setting(self.dontmelee,"dontMelee",1);
|
|
self.flashbangimmunity = save_ignore_setting(self.flashbangimmunity,"flashBangImmunity",1);
|
|
self.dodangerreact = save_ignore_setting(self.dodangerreact,"doDangerReact",0);
|
|
self.neversprintforvariation = save_ignore_setting(self.neversprintforvariation,"neverSprintForVariation",1);
|
|
self.a.disablepain = save_ignore_setting(self.a.disablepain,"a.disablePain",1);
|
|
self.allowpain = save_ignore_setting(self.allowpain,"allowPain",0);
|
|
self.ignoresonicaoe = save_ignore_setting(self.ignoresonicaoe,"IgnoreSonicAoE",1);
|
|
self pushplayer(1);
|
|
}
|
|
|
|
//Function Number: 62
|
|
save_ignore_setting(param_00,param_01,param_02)
|
|
{
|
|
if(isdefined(param_00))
|
|
{
|
|
self._ignore_settings_old[param_01] = param_00;
|
|
}
|
|
else
|
|
{
|
|
self._ignore_settings_old[param_01] = "none";
|
|
}
|
|
|
|
return param_02;
|
|
}
|
|
|
|
//Function Number: 63
|
|
unignore_everything(param_00)
|
|
{
|
|
if(isremovedentity(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.script_drone))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_00) && param_00)
|
|
{
|
|
if(isdefined(self._ignore_settings_old))
|
|
{
|
|
self._ignore_settings_old = undefined;
|
|
}
|
|
}
|
|
|
|
self.disableplayeradsloscheck = restore_ignore_setting("disableplayeradsloscheck",0);
|
|
self.ignoreall = restore_ignore_setting("ignoreall",0);
|
|
self.ignoreme = restore_ignore_setting("ignoreme",0);
|
|
self.grenadeawareness = restore_ignore_setting("grenadeawareness",1);
|
|
self.ignoreexplosionevents = restore_ignore_setting("ignoreexplosionevents",0);
|
|
self.ignorerandombulletdamage = restore_ignore_setting("ignorerandombulletdamage",0);
|
|
self.ignoresuppression = restore_ignore_setting("ignoresuppression",0);
|
|
self.dontavoidplayer = restore_ignore_setting("dontavoidplayer",0);
|
|
self.newenemyreactiondistsq = restore_ignore_setting("newEnemyReactionDistSq",262144);
|
|
self.disablebulletwhizbyreaction = restore_ignore_setting("disableBulletWhizbyReaction",undefined);
|
|
self.disablefriendlyfirereaction = restore_ignore_setting("disableFriendlyFireReaction",undefined);
|
|
self.dontmelee = restore_ignore_setting("dontMelee",undefined);
|
|
self.flashbangimmunity = restore_ignore_setting("flashBangImmunity",undefined);
|
|
self.dodangerreact = restore_ignore_setting("doDangerReact",1);
|
|
self.neversprintforvariation = restore_ignore_setting("neverSprintForVariation",undefined);
|
|
self.a.disablepain = restore_ignore_setting("a.disablePain",0);
|
|
self.allowpain = restore_ignore_setting("allowPain",1);
|
|
self._ignore_settings_old = undefined;
|
|
}
|
|
|
|
//Function Number: 64
|
|
restore_ignore_setting(param_00,param_01)
|
|
{
|
|
if(isdefined(self._ignore_settings_old))
|
|
{
|
|
if(isstring(self._ignore_settings_old[param_00]) && self._ignore_settings_old[param_00] == "none")
|
|
{
|
|
return param_01;
|
|
}
|
|
else
|
|
{
|
|
return self._ignore_settings_old[param_00];
|
|
}
|
|
}
|
|
|
|
return param_01;
|
|
}
|
|
|
|
//Function Number: 65
|
|
cap_civilian_damage_proc(param_00)
|
|
{
|
|
level endon("start_autopsy_enter");
|
|
level.captured_mission_failed = "";
|
|
self.no_friendly_fire_penalty = 1;
|
|
if(isdefined(param_00))
|
|
{
|
|
self.health = param_00;
|
|
}
|
|
else
|
|
{
|
|
self.health = 300;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
self waittill("damage",var_01,var_02);
|
|
if(isplayer(var_02))
|
|
{
|
|
if(self.health - var_01 <= 0)
|
|
{
|
|
if(level.captured_mission_failed != "true")
|
|
{
|
|
level.captured_mission_failed = "true";
|
|
if(!level.missionfailed)
|
|
{
|
|
setdvar("ui_deadquote",&"CAPTURED_FAIL_UNARMED");
|
|
maps\_utility::missionfailedwrapper();
|
|
}
|
|
}
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
self kill(var_02 geteye(),var_02);
|
|
}
|
|
}
|
|
|
|
//Function Number: 66
|
|
kill_no_react()
|
|
{
|
|
if(!isalive(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isdefined(self.magic_bullet_shield))
|
|
{
|
|
maps\_utility::stop_magic_bullet_shield();
|
|
}
|
|
|
|
self.allowdeath = 1;
|
|
self.a.nodeath = 1;
|
|
maps\_utility::set_battlechatter(0);
|
|
self kill();
|
|
}
|
|
|
|
//Function Number: 67
|
|
start_point_is_after(param_00,param_01)
|
|
{
|
|
return start_point_check("after",param_00,param_01);
|
|
}
|
|
|
|
//Function Number: 68
|
|
start_point_is_before(param_00,param_01)
|
|
{
|
|
return start_point_check("before",param_00,param_01);
|
|
}
|
|
|
|
//Function Number: 69
|
|
start_point_is_between(param_00,param_01)
|
|
{
|
|
return start_point_check("between",param_00,param_01);
|
|
}
|
|
|
|
//Function Number: 70
|
|
start_point_check(param_00,param_01,param_02)
|
|
{
|
|
var_03 = undefined;
|
|
var_04 = [];
|
|
if(!isarray(param_01))
|
|
{
|
|
var_04[0] = param_01;
|
|
}
|
|
else
|
|
{
|
|
var_04 = param_01;
|
|
}
|
|
|
|
var_05 = var_04.size;
|
|
for(var_06 = 0;var_06 < var_04.size;var_06++)
|
|
{
|
|
var_04[var_06] = tolower(var_04[var_06]);
|
|
}
|
|
|
|
var_07 = getarraykeys(level.start_arrays);
|
|
var_08 = [];
|
|
for(var_06 = 0;var_06 < var_07.size;var_06++)
|
|
{
|
|
for(var_09 = 0;var_09 < var_04.size;var_09++)
|
|
{
|
|
if(var_07[var_06] == var_04[var_09])
|
|
{
|
|
var_08 = common_scripts\utility::array_add(var_08,var_06);
|
|
var_04 = maps\_utility::array_remove_index(var_04,var_09);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(var_07[var_06] == level.start_point)
|
|
{
|
|
var_03 = var_06;
|
|
}
|
|
}
|
|
|
|
switch(param_00)
|
|
{
|
|
case "before":
|
|
if(isdefined(param_02) && param_02 && var_03 <= var_08[0])
|
|
{
|
|
return 1;
|
|
}
|
|
else if(var_03 < var_08[0])
|
|
{
|
|
return 1;
|
|
}
|
|
break;
|
|
|
|
case "between":
|
|
if(isdefined(param_02) && param_02 && var_03 >= var_08[0] && var_03 <= var_08[1])
|
|
{
|
|
return 1;
|
|
}
|
|
else if(var_03 > var_08[0] && var_03 < var_08[1])
|
|
{
|
|
return 1;
|
|
}
|
|
break;
|
|
|
|
case "after":
|
|
if(isdefined(param_02) && param_02 && var_03 >= var_08[0])
|
|
{
|
|
return 1;
|
|
}
|
|
else if(var_03 > var_08[0])
|
|
{
|
|
return 1;
|
|
}
|
|
break;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 71
|
|
waittill_notify_func(param_00,param_01,param_02,param_03,param_04,param_05)
|
|
{
|
|
self waittill(param_00);
|
|
if(isdefined(param_05))
|
|
{
|
|
self [[ param_01 ]](param_02,param_03,param_04,param_05);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_04))
|
|
{
|
|
self [[ param_01 ]](param_02,param_03,param_04);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_03))
|
|
{
|
|
self [[ param_01 ]](param_02,param_03);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_02))
|
|
{
|
|
self [[ param_01 ]](param_02);
|
|
return;
|
|
}
|
|
|
|
self [[ param_01 ]]();
|
|
}
|
|
|
|
//Function Number: 72
|
|
waittill_notify_func_ent(param_00,param_01,param_02,param_03,param_04,param_05,param_06)
|
|
{
|
|
param_00 waittill(param_01);
|
|
if(isdefined(param_06))
|
|
{
|
|
self [[ param_02 ]](param_03,param_04,param_05,param_06);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_05))
|
|
{
|
|
self [[ param_02 ]](param_03,param_04,param_05);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_04))
|
|
{
|
|
self [[ param_02 ]](param_03,param_04);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(param_03))
|
|
{
|
|
self [[ param_02 ]](param_03);
|
|
return;
|
|
}
|
|
|
|
self [[ param_02 ]]();
|
|
}
|
|
|
|
//Function Number: 73
|
|
ambient_fan_rotate()
|
|
{
|
|
self rotatepitch(randomint(360),0.1);
|
|
for(;;)
|
|
{
|
|
self rotatepitch(360,3);
|
|
wait(3);
|
|
}
|
|
}
|
|
|
|
//Function Number: 74
|
|
physics_bodies_on(param_00,param_01,param_02)
|
|
{
|
|
var_03 = common_scripts\utility::getstructarray(param_00,"script_noteworthy");
|
|
if(isdefined(param_01))
|
|
{
|
|
if(param_01 > 0)
|
|
{
|
|
wait(param_01);
|
|
}
|
|
}
|
|
|
|
if(!isdefined(level.hanging_bodies))
|
|
{
|
|
level.hanging_bodies = [];
|
|
}
|
|
|
|
if(isdefined(param_02))
|
|
{
|
|
var_04 = ["cap_hanging_bodybag_clean","cap_hanging_bodybag_clean_b","cap_hanging_bodybag_clean_c","cap_hanging_bodybag_02_clean","cap_hanging_bodybag_02_clean_b","cap_hanging_bodybag_02_clean_c"];
|
|
}
|
|
else
|
|
{
|
|
var_04 = ["cap_hanging_bodybag","cap_hanging_bodybag_02","cap_hanging_bodybag_b","cap_hanging_bodybag_c","cap_hanging_bodybag_02_b","cap_hanging_bodybag_02_c"];
|
|
}
|
|
|
|
foreach(var_06 in var_03)
|
|
{
|
|
var_07 = common_scripts\utility::random(var_04);
|
|
var_08 = spawn("script_model",var_06.origin);
|
|
var_08 setmodel(var_07);
|
|
var_08.angles = var_06.angles;
|
|
level.hanging_bodies = common_scripts\utility::array_add(level.hanging_bodies,var_08);
|
|
}
|
|
}
|
|
|
|
//Function Number: 75
|
|
physics_bodies_off()
|
|
{
|
|
if(isdefined(level.hanging_bodies))
|
|
{
|
|
var_00 = [];
|
|
foreach(var_02 in level.hanging_bodies)
|
|
{
|
|
var_02 physicsstop();
|
|
var_02 delete();
|
|
level.hanging_bodies = common_scripts\utility::array_remove(level.hanging_bodies,var_02);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 76
|
|
captured_hint_radius(param_00,param_01,param_02,param_03)
|
|
{
|
|
}
|
|
|
|
//Function Number: 77
|
|
tprintln(param_00,param_01)
|
|
{
|
|
if(!isdefined(level.debugging_on))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 78
|
|
jkuprint(param_00,param_01,param_02)
|
|
{
|
|
setdvarifuninitialized("jkudebug",0);
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = "onscreen";
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 100;
|
|
}
|
|
|
|
if(getdvarint("jkudebug") == 1)
|
|
{
|
|
switch(param_01)
|
|
{
|
|
case "onscreen":
|
|
iprintln(param_00);
|
|
break;
|
|
|
|
case "3d":
|
|
if(!isdefined(self.origin))
|
|
{
|
|
break;
|
|
}
|
|
break;
|
|
|
|
case "3dattached":
|
|
thread jkuprint3dattached(param_00,param_02);
|
|
break;
|
|
|
|
case "console":
|
|
break;
|
|
|
|
case "bold":
|
|
iprintlnbold(param_00);
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 79
|
|
jkuprint3dattached(param_00,param_01)
|
|
{
|
|
if(!isdefined(self))
|
|
{
|
|
}
|
|
|
|
self endon("death");
|
|
self endon("jkuprint_stop");
|
|
for(var_02 = 0;var_02 < param_01;var_02++)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 80
|
|
jkupoint(param_00,param_01,param_02)
|
|
{
|
|
setdvarifuninitialized("jkudebug",0);
|
|
if(getdvarint("jkudebug") == 1)
|
|
{
|
|
if(!isdefined(self.origin))
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
var_03 = self.origin;
|
|
}
|
|
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = 6;
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = (1,1,1);
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 400;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 81
|
|
jkuline(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07)
|
|
{
|
|
setdvarifuninitialized("jkudebug",0);
|
|
if(getdvarint("jkudebug") == 1)
|
|
{
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = (1,1,1);
|
|
}
|
|
|
|
if(!isdefined(param_03))
|
|
{
|
|
param_03 = 1;
|
|
}
|
|
|
|
if(!isdefined(param_04))
|
|
{
|
|
param_04 = 0;
|
|
}
|
|
|
|
if(!isdefined(param_05))
|
|
{
|
|
param_05 = 200;
|
|
}
|
|
|
|
if(isdefined(param_06))
|
|
{
|
|
if(isdefined(param_07))
|
|
{
|
|
var_08 = 40;
|
|
param_01 = self.origin + anglestoforward(self.angles) * var_08;
|
|
}
|
|
else
|
|
{
|
|
var_08 = distance2d(param_01,param_02);
|
|
}
|
|
|
|
var_09 = var_08 * 0.2;
|
|
var_0A = var_08 * 0.5;
|
|
var_0B = var_08 * 0.175;
|
|
var_0C = param_00 - param_01;
|
|
var_0D = param_01 + anglestoforward(vectortoangles(var_0C)) * var_09;
|
|
var_0E = param_01 + anglestoforward(vectortoangles(var_0C)) * var_0A;
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 82
|
|
tff_get_zone_cleanup_notify(param_00)
|
|
{
|
|
var_01 = "";
|
|
switch(param_00)
|
|
{
|
|
case "intro_drive":
|
|
var_01 = "tff_pre_intro_drive_to_s2walk";
|
|
break;
|
|
|
|
case "s2walk":
|
|
var_01 = "tff_pre_s2walk_to_interrogate";
|
|
break;
|
|
|
|
case "helipad":
|
|
var_01 = "tff_pre_helipad_to_mechbattle";
|
|
break;
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 83
|
|
tff_cleanup_vehicle(param_00)
|
|
{
|
|
var_01 = tff_get_zone_cleanup_notify(param_00);
|
|
if(var_01 == "")
|
|
{
|
|
return;
|
|
}
|
|
|
|
level waittill(var_01);
|
|
if(isarray(self))
|
|
{
|
|
foreach(var_03 in self)
|
|
{
|
|
if(!isdefined(var_03))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isremovedentity(var_03))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(var_03 maps\_vehicle::isvehicle())
|
|
{
|
|
var_03 maps\_vehicle_code::_freevehicle();
|
|
}
|
|
|
|
var_03 delete();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(isremovedentity(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(maps\_vehicle::isvehicle())
|
|
{
|
|
maps\_vehicle_code::_freevehicle();
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 84
|
|
captured_player_cuffs()
|
|
{
|
|
var_00 = self;
|
|
var_01 = spawn("script_model",(0,0,0));
|
|
var_01 setmodel("s1_vm_handcuffs");
|
|
var_01 linkto(var_00,"tag_weapon_left",(0,0,0),(0,0,0));
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 85
|
|
captured_worker_weapons()
|
|
{
|
|
var_00 = self;
|
|
var_01 = spawn("script_model",var_00.origin);
|
|
var_01 setmodel("npc_titan45_nocamo");
|
|
var_01 linkto(var_00,"tag_stowed_hip_rear",(-12,10,-2),(30,150,0));
|
|
var_00.no_friendly_fire_penalty = 1;
|
|
var_00 waittill("death");
|
|
var_01 delete();
|
|
} |