mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-21 15:37:51 -05:00
1854 lines
33 KiB
Plaintext
1854 lines
33 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: 363.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: PC
|
|
* Function Count: 71
|
|
* Decompile Time: 86 ms
|
|
* Timestamp: 10/27/2023 2:23:16 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
func_2874()
|
|
{
|
|
precacheitem("turret_attackheli");
|
|
precacheitem("missile_attackheli");
|
|
func_2875();
|
|
thread init();
|
|
}
|
|
|
|
//Function Number: 2
|
|
func_2875()
|
|
{
|
|
if(getdvarint("sm_enable") && getdvar("r_zfeather") != "0")
|
|
{
|
|
level._effect["_attack_heli_spotlight"] = loadfx("misc/hunted_spotlight_model");
|
|
return;
|
|
}
|
|
|
|
level._effect["_attack_heli_spotlight"] = loadfx("misc/spotlight_large");
|
|
}
|
|
|
|
//Function Number: 3
|
|
init()
|
|
{
|
|
if(isdefined(level.var_2876))
|
|
{
|
|
return;
|
|
}
|
|
|
|
while(!isdefined(level.gameskill))
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
if(!isdefined(level.cosine))
|
|
{
|
|
level.cosine = [];
|
|
}
|
|
|
|
if(!isdefined(level.cosine["25"]))
|
|
{
|
|
level.cosine["25"] = cos(25);
|
|
}
|
|
|
|
if(!isdefined(level.cosine["35"]))
|
|
{
|
|
level.cosine["35"] = cos(35);
|
|
}
|
|
|
|
if(!isdefined(level.var_2878))
|
|
{
|
|
level.var_2878 = 3500;
|
|
}
|
|
|
|
if(!isdefined(level.var_2879))
|
|
{
|
|
level.var_2879 = 0;
|
|
}
|
|
|
|
if(!isdefined(level.var_287A))
|
|
{
|
|
level.var_287A = cos(30);
|
|
}
|
|
|
|
level.var_2876 = 1;
|
|
level.var_287B = 3;
|
|
level.var_287C = 6;
|
|
level.var_287D = 3;
|
|
switch(level.gameskill)
|
|
{
|
|
case 0:
|
|
level.var_287E = 9;
|
|
level.var_287F = 1;
|
|
break;
|
|
|
|
case 1:
|
|
level.var_287E = 7;
|
|
level.var_287F = 2;
|
|
break;
|
|
|
|
case 2:
|
|
level.var_287E = 5;
|
|
level.var_287F = 3;
|
|
break;
|
|
|
|
case 3:
|
|
level.var_287E = 3;
|
|
level.var_287F = 5;
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
func_2880(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = "kill_heli";
|
|
}
|
|
|
|
var_01 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(param_00);
|
|
var_01 = func_2882(var_01);
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 5
|
|
func_2882(param_00,param_01)
|
|
{
|
|
param_00 endon("death");
|
|
param_00 endon("heli_players_dead");
|
|
if(level.gameskill == 0 || level.gameskill == 1)
|
|
{
|
|
var_02 = spawn("script_origin",param_00.origin + (0,0,-20));
|
|
var_02 linkto(param_00);
|
|
param_00 thread common_scripts\utility::delete_on_death(var_02);
|
|
var_03 = undefined;
|
|
if(level.gameskill == 0)
|
|
{
|
|
var_03 = 2800;
|
|
}
|
|
else
|
|
{
|
|
var_03 = 2200;
|
|
}
|
|
|
|
if(!isdefined(param_00.var_2883))
|
|
{
|
|
param_00.attractor = missile_createattractorent(var_02,var_03,10000,level.player);
|
|
if(maps\_utility::is_coop())
|
|
{
|
|
param_00.var_2885 = missile_createattractorent(var_02,var_03,10000,level.player2);
|
|
}
|
|
}
|
|
}
|
|
|
|
param_00 enableaimassist();
|
|
param_00.var_2886 = spawn("script_origin",param_00.origin);
|
|
param_00 thread common_scripts\utility::delete_on_death(param_00.var_2886);
|
|
if(!isdefined(param_00.var_2887))
|
|
{
|
|
param_00.var_2887 = 0;
|
|
}
|
|
|
|
param_00.var_2888 = 1;
|
|
param_00.var_2889 = 0;
|
|
param_00.var_288A = 1;
|
|
param_00.var_288B = 0;
|
|
param_00.var_288C = undefined;
|
|
param_00 thread func_28B5();
|
|
param_00 thread func_28B6();
|
|
thread func_289B(param_00,param_01);
|
|
param_00.turrettype = undefined;
|
|
param_00 func_2893();
|
|
param_00 thread func_2892();
|
|
switch(param_00.vehicletype)
|
|
{
|
|
case "ny_harbor_hind":
|
|
case "hind":
|
|
param_00.turrettype = "default";
|
|
break;
|
|
|
|
case "mi28":
|
|
param_00.turrettype = "default";
|
|
break;
|
|
|
|
case "littlebird":
|
|
param_00 setyawspeed(90,30,20);
|
|
param_00 setmaxpitchroll(40,40);
|
|
param_00 sethoverparams(100,20,5);
|
|
param_00 func_2896();
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
param_00.var_288F = param_00.var_288E;
|
|
if(isdefined(param_00.var_2890) && param_00.var_2890 == 1 && !isdefined(param_00.var_2891))
|
|
{
|
|
param_00 thread func_28DE(undefined,1);
|
|
}
|
|
|
|
param_00 thread func_28D9();
|
|
return param_00;
|
|
}
|
|
|
|
//Function Number: 6
|
|
func_2892()
|
|
{
|
|
foreach(var_01 in level.players)
|
|
{
|
|
var_01 maps\_utility::add_wait(::maps\_utility::waittill_msg,"death");
|
|
}
|
|
|
|
maps\_utility::do_wait_any();
|
|
self notify("heli_players_dead");
|
|
}
|
|
|
|
//Function Number: 7
|
|
func_2893()
|
|
{
|
|
var_00 = undefined;
|
|
var_01 = undefined;
|
|
switch(self.vehicletype)
|
|
{
|
|
case "ny_harbor_hind":
|
|
case "hind":
|
|
var_01 = 600;
|
|
var_00 = -100;
|
|
break;
|
|
|
|
case "mi28":
|
|
var_01 = 600;
|
|
var_00 = -100;
|
|
break;
|
|
|
|
case "littlebird":
|
|
var_01 = 600;
|
|
var_00 = -204;
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
self.var_288E = spawn("script_origin",self.origin);
|
|
self.var_288E.angles = self.angles;
|
|
self.var_288E.origin = self.origin;
|
|
var_02 = spawnstruct();
|
|
var_02.entity = self.var_288E;
|
|
var_02.forward = var_01;
|
|
var_02.up = var_00;
|
|
var_02 maps\_utility::translate_local();
|
|
self.var_288E linkto(self);
|
|
self.var_288E thread func_2899(self);
|
|
}
|
|
|
|
//Function Number: 8
|
|
func_2894()
|
|
{
|
|
if(isdefined(self.turrets))
|
|
{
|
|
return self.turrets;
|
|
}
|
|
|
|
func_2896();
|
|
return self.turrets;
|
|
}
|
|
|
|
//Function Number: 9
|
|
func_2896()
|
|
{
|
|
self.turrettype = "miniguns";
|
|
self.var_2897 = 0;
|
|
self.var_2898 = 0;
|
|
if(!isdefined(self.mgturret))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.turrets = self.mgturret;
|
|
common_scripts\utility::array_thread(self.turrets,::func_28D7,self);
|
|
}
|
|
|
|
//Function Number: 10
|
|
func_2899(param_00)
|
|
{
|
|
param_00 common_scripts\utility::waittill_either("death","crash_done");
|
|
if(isdefined(self))
|
|
{
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
func_289A(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = "kill_heli";
|
|
}
|
|
|
|
var_02 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive(param_00);
|
|
var_02.var_2886 = spawn("script_origin",var_02.origin);
|
|
var_02 thread common_scripts\utility::delete_on_death(var_02.var_2886);
|
|
var_02.var_2887 = 1;
|
|
var_02.var_2888 = 1;
|
|
var_02.var_2889 = 0;
|
|
var_02 thread func_28B5();
|
|
var_02 thread func_28B6();
|
|
thread func_289B(var_02,param_01);
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 12
|
|
func_289B(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = maps\_vehicle::spawn_vehicle_from_targetname_and_drive("kill_heli");
|
|
param_00.var_2888 = 1;
|
|
param_00.var_2889 = 0;
|
|
param_00 thread func_28B5();
|
|
param_00 thread func_28B6();
|
|
}
|
|
|
|
var_02 = undefined;
|
|
if(!isdefined(param_00.script_airspeed))
|
|
{
|
|
var_02 = 40;
|
|
}
|
|
else
|
|
{
|
|
var_02 = param_00.script_airspeed;
|
|
}
|
|
|
|
if(!isdefined(level.var_289D))
|
|
{
|
|
level.var_289D = 0;
|
|
}
|
|
|
|
if(!isdefined(level.var_289E))
|
|
{
|
|
level.var_289E = 0;
|
|
}
|
|
|
|
if(!isdefined(level.var_289F))
|
|
{
|
|
level.var_289F = 0;
|
|
}
|
|
|
|
level.var_28A0 = undefined;
|
|
var_03 = getentarray("attack_heli_safe_volume","script_noteworthy");
|
|
if(var_03.size > 0)
|
|
{
|
|
level.var_28A0 = var_03;
|
|
}
|
|
|
|
if(!level.var_289D)
|
|
{
|
|
thread func_28CC(param_00);
|
|
}
|
|
|
|
if(!isdefined(param_00.var_28A1))
|
|
{
|
|
switch(param_00.vehicletype)
|
|
{
|
|
case "mi28":
|
|
target_set(param_00,(0,0,-80));
|
|
break;
|
|
|
|
case "ny_harbor_hind":
|
|
case "hind":
|
|
target_set(param_00,(0,0,-96));
|
|
break;
|
|
|
|
case "littlebird":
|
|
target_set(param_00,(0,0,-80));
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
target_setjavelinonly(param_00,1);
|
|
}
|
|
|
|
param_00 thread heli_damage_monitor();
|
|
param_00 thread func_28CB();
|
|
param_00 endon("death");
|
|
param_00 endon("heli_players_dead");
|
|
param_00 endon("returning_home");
|
|
param_00 setvehweapon("turret_attackheli");
|
|
if(!isdefined(param_00.var_2887))
|
|
{
|
|
param_00.var_2887 = 0;
|
|
}
|
|
|
|
if(!param_00.var_2887)
|
|
{
|
|
param_00 setneargoalnotifydist(100);
|
|
if(!isdefined(param_00.var_28A2))
|
|
{
|
|
param_00 waittill("reached_dynamic_path_end");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
param_00 setneargoalnotifydist(500);
|
|
param_00 waittill("near_goal");
|
|
}
|
|
|
|
param_00 thread func_28A6();
|
|
if(param_00.var_2887)
|
|
{
|
|
param_00 thread func_28A3(param_01,var_02);
|
|
return;
|
|
}
|
|
|
|
param_00 thread func_28A4(var_02);
|
|
}
|
|
|
|
//Function Number: 13
|
|
func_28A3(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = "attack_heli_circle_node";
|
|
}
|
|
|
|
var_02 = getentarray(param_00,"targetname");
|
|
if(!isdefined(var_02) || var_02.size < 1)
|
|
{
|
|
var_02 = common_scripts\utility::getstructarray(param_00,"targetname");
|
|
}
|
|
|
|
var_03 = self;
|
|
var_03 endon("stop_circling");
|
|
var_03 endon("death");
|
|
var_03 endon("returning_home");
|
|
var_03 endon("heli_players_dead");
|
|
for(;;)
|
|
{
|
|
var_03 vehicle_setspeed(param_01,param_01 / 4,param_01 / 4);
|
|
var_03 setneargoalnotifydist(100);
|
|
var_04 = maps\_utility::get_closest_player_healthy(var_03.origin);
|
|
var_05 = var_04.origin;
|
|
var_03 setlookatent(var_04);
|
|
var_06 = maps\_utility::getclosest(var_05,var_02);
|
|
var_07 = getentarray(var_06.target,"targetname");
|
|
if(!isdefined(var_07) || var_07.size < 1)
|
|
{
|
|
var_07 = common_scripts\utility::getstructarray(var_06.target,"targetname");
|
|
}
|
|
|
|
var_08 = var_07[randomint(var_07.size)];
|
|
var_03 setvehgoalpos(var_08.origin,1);
|
|
var_03 waittill("near_goal");
|
|
if(!isdefined(var_04.is_controlling_uav))
|
|
{
|
|
wait 1;
|
|
wait randomfloatrange(0.8,1.3);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
func_28A4(param_00)
|
|
{
|
|
self endon("death");
|
|
var_01 = getentarray("kill_heli_spot","targetname");
|
|
var_02 = self;
|
|
var_03 = maps\_utility::getclosest(var_02.origin,var_01);
|
|
var_04 = var_03;
|
|
var_02 endon("death");
|
|
var_02 endon("returning_home");
|
|
var_02 endon("heli_players_dead");
|
|
var_05 = undefined;
|
|
for(;;)
|
|
{
|
|
wait 0.05;
|
|
var_02 vehicle_setspeed(param_00,param_00 / 2,param_00 / 10);
|
|
var_02 setneargoalnotifydist(100);
|
|
var_06 = maps\_utility::get_closest_player_healthy(var_02.origin);
|
|
var_07 = var_06.origin;
|
|
if(var_03 == var_04 && var_02.var_288B)
|
|
{
|
|
var_08 = func_28C4(var_02,var_03,var_01,var_06,var_07);
|
|
var_03 = maps\_utility::getclosest(var_07,var_08);
|
|
}
|
|
|
|
var_02 setvehgoalpos(var_03.origin,1);
|
|
var_02.var_288A = 1;
|
|
var_06 = maps\_utility::get_closest_player_healthy(var_02.origin);
|
|
if(isdefined(self.var_288F) && isdefined(self.var_288F.classname) && self.var_288F.classname == "script_origin")
|
|
{
|
|
var_05 = var_06;
|
|
}
|
|
else if(isdefined(self.var_288F))
|
|
{
|
|
var_05 = self.var_288F;
|
|
}
|
|
else
|
|
{
|
|
var_05 = self.var_288E;
|
|
}
|
|
|
|
var_02 setlookatent(var_05);
|
|
var_02 waittill("near_goal");
|
|
var_02.var_288A = 0;
|
|
if(!maps\_utility::is_coop())
|
|
{
|
|
if(level.gameskill == 0 || level.gameskill == 1)
|
|
{
|
|
while(func_28A5(var_02))
|
|
{
|
|
wait 0.5;
|
|
}
|
|
|
|
wait 3;
|
|
}
|
|
}
|
|
|
|
var_06 = maps\_utility::get_closest_player_healthy(var_02.origin);
|
|
var_07 = var_06.origin;
|
|
var_08 = func_28C4(var_02,var_03,var_01,var_06,var_07);
|
|
var_08[var_08.size] = var_03;
|
|
var_04 = var_03;
|
|
var_09 = maps\_utility::getclosest(var_07,var_01);
|
|
var_0A = maps\_utility::getclosest(var_07,var_08);
|
|
foreach(var_0C in var_08)
|
|
{
|
|
if(var_06 sightconetrace(var_0C.origin,var_02) != 1)
|
|
{
|
|
var_08 = common_scripts\utility::array_remove(var_08,var_0C);
|
|
continue;
|
|
}
|
|
}
|
|
|
|
var_0E = maps\_utility::getclosest(var_07,var_08);
|
|
if(var_08.size < 2)
|
|
{
|
|
var_03 = var_0A;
|
|
}
|
|
else if(var_0E != var_09)
|
|
{
|
|
var_03 = var_0E;
|
|
}
|
|
else
|
|
{
|
|
var_0F = [];
|
|
var_09 = maps\_utility::get_array_of_closest(var_08,var_09,var_7B,2);
|
|
var_10 = randomint(var_09.size);
|
|
if(randomint(100) > 50)
|
|
{
|
|
var_04 = var_09[var_10];
|
|
}
|
|
else
|
|
{
|
|
var_04 = var_0A;
|
|
}
|
|
}
|
|
|
|
var_0F = randomfloatrange(level.var_287D - 0.5,level.var_287D + 0.5);
|
|
common_scripts\utility::waittill_notify_or_timeout("damage_by_player",var_0F);
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
func_28A5(param_00)
|
|
{
|
|
if(!level.player func_28CE())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!level.player adsbuttonpressed())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_01 = level.player geteye();
|
|
if(sighttracepassed(var_01,param_00.origin,0,level.player))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 16
|
|
func_28A6()
|
|
{
|
|
self endon("stop_shooting");
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
thread func_28B0();
|
|
var_00 = level.var_2878 * level.var_2878;
|
|
level.var_28A7 = 0;
|
|
while(isdefined(self))
|
|
{
|
|
wait randomfloatrange(0.8,1.3);
|
|
if(!func_28AB() || !func_28AA())
|
|
{
|
|
var_01 = func_28AE();
|
|
if(isplayer(var_01))
|
|
{
|
|
self.var_288F = var_01;
|
|
}
|
|
}
|
|
|
|
if(func_28AA() && level.players.size > 1)
|
|
{
|
|
var_02 = maps\_utility::get_closest_player_healthy(self.origin);
|
|
if(self.var_288F != var_02)
|
|
{
|
|
var_01 = func_28AE();
|
|
if(isplayer(var_01))
|
|
{
|
|
self.var_288F = var_01;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(func_28AA())
|
|
{
|
|
if(!func_28A9() || level.var_28A7 == 1)
|
|
{
|
|
var_01 = func_28AF();
|
|
self.var_288F = var_01;
|
|
}
|
|
}
|
|
|
|
if(isdefined(self.var_288C) && isplayer(self.var_288C))
|
|
{
|
|
self.var_288F = self.var_288C;
|
|
}
|
|
else if(!func_28AB())
|
|
{
|
|
var_01 = func_28AF();
|
|
self.var_288F = var_01;
|
|
}
|
|
|
|
if(!func_28AB())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(self.var_288F func_28C9(self))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(func_28AB() && distancesquared(self.var_288F.origin,self.origin) > var_00)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(self.turrettype == "default" && func_28AA())
|
|
{
|
|
func_28C2(self.var_288F);
|
|
wait randomfloatrange(0.8,1.3);
|
|
func_28C2(self.var_288F);
|
|
wait randomfloatrange(0.8,1.3);
|
|
while(func_28C3(self.var_288F) && !self.var_288F func_28C9(self))
|
|
{
|
|
func_28B7();
|
|
wait randomfloatrange(2,4);
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
if(isplayer(self.var_288F) || isai(self.var_288F))
|
|
{
|
|
func_28B7();
|
|
}
|
|
|
|
if(isplayer(self.var_288F))
|
|
{
|
|
thread func_28A8(self);
|
|
}
|
|
|
|
common_scripts\utility::waittill_notify_or_timeout("damage_by_player",level.var_287C);
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
func_28A8(param_00)
|
|
{
|
|
level notify("player_is_heli_target");
|
|
level endon("player_is_heli_target");
|
|
level.var_28A7 = 1;
|
|
param_00 common_scripts\utility::waittill_notify_or_timeout("damage_by_player",level.var_287E);
|
|
level.var_28A7 = 0;
|
|
}
|
|
|
|
//Function Number: 18
|
|
func_28A9()
|
|
{
|
|
if(!isdefined(self.var_288F))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = self.var_288F.origin + (0,0,32);
|
|
if(isplayer(self.var_288F))
|
|
{
|
|
var_00 = self.var_288F geteye();
|
|
}
|
|
|
|
var_01 = self gettagorigin("tag_flash");
|
|
var_02 = sighttracepassed(var_01,var_00,0,self);
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 19
|
|
func_28AA()
|
|
{
|
|
if(!isdefined(self.var_288F))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(isplayer(self.var_288F))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 20
|
|
func_28AB()
|
|
{
|
|
if(!isdefined(self.var_288F))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isalive(self.var_288F))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.var_288F == self.var_288E)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 21
|
|
func_28AC()
|
|
{
|
|
var_00 = maps\_helicopter_globals::getenemytarget(level.var_2878,level.var_287A,1,1,0,1,level.var_28AD);
|
|
if(isdefined(var_00) && isplayer(var_00))
|
|
{
|
|
var_00 = self.var_288E;
|
|
}
|
|
|
|
if(!isdefined(var_00))
|
|
{
|
|
var_00 = self.var_288E;
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 22
|
|
func_28AE()
|
|
{
|
|
var_00 = getaiarray("allies");
|
|
var_01 = maps\_helicopter_globals::getenemytarget(level.var_2878,level.var_287A,1,0,0,0,var_00);
|
|
if(!isdefined(var_01))
|
|
{
|
|
var_01 = self.var_288E;
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 23
|
|
func_28AF()
|
|
{
|
|
var_00 = maps\_helicopter_globals::getenemytarget(level.var_2878,level.var_287A,1,1,0,1,level.players);
|
|
if(!isdefined(var_00))
|
|
{
|
|
var_00 = self.var_288E;
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 24
|
|
func_28B0()
|
|
{
|
|
if(!isdefined(self.var_28B1))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
self endon("stop_shooting");
|
|
var_00 = undefined;
|
|
var_01 = "turret_attackheli";
|
|
var_02 = "missile_attackheli";
|
|
var_03 = undefined;
|
|
var_04 = undefined;
|
|
var_05 = [];
|
|
switch(self.vehicletype)
|
|
{
|
|
case "mi28":
|
|
var_00 = 1;
|
|
var_03 = 1;
|
|
var_04 = 0.5;
|
|
break;
|
|
var_7B[7]
|
|
"tag_store_R_2_d"
|
|
var_7B[6]
|
|
"tag_store_L_2_d"
|
|
var_7B[5]
|
|
"tag_store_R_2_c"
|
|
var_7B[4]
|
|
"tag_store_L_2_c"
|
|
var_7B[3]
|
|
"tag_store_R_2_b"
|
|
var_7B[2]
|
|
"tag_store_L_2_b"
|
|
var_7B[1]
|
|
"tag_store_R_2_a"
|
|
var_7B[0]
|
|
"tag_store_L_2_a"
|
|
break;
|
|
|
|
case "littlebird":
|
|
var_01 = 1;
|
|
var_04 = 1;
|
|
var_05 = 0.5;
|
|
break;
|
|
var_7B[1]
|
|
"tag_missile_right"
|
|
var_7B[0]
|
|
"tag_missile_left"
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
var_06 = -1;
|
|
for(;;)
|
|
{
|
|
wait 0.05;
|
|
self waittill("fire_missiles",var_07);
|
|
if(!isplayer(var_07))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_08 = var_07;
|
|
if(!func_28B2(var_08))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
for(var_09 = 0;var_09 < var_01;var_09++)
|
|
{
|
|
var_06++;
|
|
if(var_06 >= var_7B.size)
|
|
{
|
|
var_06 = 0;
|
|
}
|
|
|
|
self setvehweapon(var_03);
|
|
self.var_2889 = 1;
|
|
var_0A = self fireweapon(var_7B[var_06],var_08);
|
|
var_0A thread missilelosetarget(var_05);
|
|
var_0A thread func_28B3();
|
|
if(var_09 < var_01 - 1)
|
|
{
|
|
wait var_04;
|
|
}
|
|
}
|
|
|
|
self.var_2889 = 0;
|
|
self setvehweapon(var_02);
|
|
wait 10;
|
|
}
|
|
}
|
|
|
|
//Function Number: 25
|
|
func_28B2(param_00)
|
|
{
|
|
if(self.var_288A)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 26
|
|
func_28B3()
|
|
{
|
|
if(distancesquared(self.origin,level.player.origin) > 9000000)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = self.origin;
|
|
while(isdefined(self))
|
|
{
|
|
var_00 = self.origin;
|
|
wait 0.1;
|
|
}
|
|
|
|
earthquake(0.7,1.5,var_00,1600);
|
|
}
|
|
|
|
//Function Number: 27
|
|
missilelosetarget(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
wait param_00;
|
|
if(isdefined(self))
|
|
{
|
|
self missile_cleartarget();
|
|
}
|
|
}
|
|
|
|
//Function Number: 28
|
|
func_28B4(param_00)
|
|
{
|
|
for(var_01 = 0;var_01 < level.players.size;var_01++)
|
|
{
|
|
if(param_00 != level.players[var_01])
|
|
{
|
|
return level.players[var_01];
|
|
}
|
|
}
|
|
|
|
return level.players[0];
|
|
}
|
|
|
|
//Function Number: 29
|
|
func_28B5()
|
|
{
|
|
self notify("notify_disable_thread");
|
|
self endon("notify_disable_thread");
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
for(;;)
|
|
{
|
|
self waittill("disable_turret");
|
|
self.var_2888 = 0;
|
|
}
|
|
}
|
|
|
|
//Function Number: 30
|
|
func_28B6()
|
|
{
|
|
self notify("notify_enable_thread");
|
|
self endon("notify_enable_thread");
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
for(;;)
|
|
{
|
|
self waittill("enable_turret");
|
|
self.var_2888 = 1;
|
|
}
|
|
}
|
|
|
|
//Function Number: 31
|
|
func_28B7()
|
|
{
|
|
switch(self.turrettype)
|
|
{
|
|
case "default":
|
|
var_00 = randomintrange(5,10);
|
|
var_01 = weaponfiretime("turret_attackheli");
|
|
func_28BA(self.var_288F,var_00,var_01);
|
|
break;
|
|
|
|
case "miniguns":
|
|
var_00 = func_28B8(self.var_288F);
|
|
if(self.var_2888 && !self.var_2889)
|
|
{
|
|
func_28BB(self.var_288F,var_00);
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Function Number: 32
|
|
func_28B8(param_00)
|
|
{
|
|
var_01 = undefined;
|
|
if(!isplayer(param_00))
|
|
{
|
|
var_01 = level.var_2876;
|
|
return var_01;
|
|
}
|
|
|
|
switch(level.gameskill)
|
|
{
|
|
case 3:
|
|
case 2:
|
|
case 1:
|
|
case 0:
|
|
var_01 = randomintrange(2,3);
|
|
break;
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 33
|
|
func_28B9(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
wait param_00;
|
|
if(!isplayer(self.var_288F))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self notify("fire_missiles",self.var_288F);
|
|
}
|
|
|
|
//Function Number: 34
|
|
func_28BA(param_00,param_01,param_02)
|
|
{
|
|
thread func_28B9(randomfloatrange(0.2,2));
|
|
for(var_03 = 0;var_03 < param_01;var_03++)
|
|
{
|
|
self setturrettargetent(param_00,common_scripts\utility::randomvector(50) + (0,0,32));
|
|
if(self.var_2888 && !self.var_2889)
|
|
{
|
|
self fireweapon();
|
|
}
|
|
|
|
wait param_02;
|
|
}
|
|
}
|
|
|
|
//Function Number: 35
|
|
func_28BB(param_00,param_01,param_02)
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
self notify("firing_miniguns");
|
|
self endon("firing_miniguns");
|
|
var_03 = func_2894();
|
|
common_scripts\utility::array_thread(var_03,::func_28BE,param_00,self);
|
|
if(!self.var_2897)
|
|
{
|
|
self.var_2898 = 1;
|
|
thread maps\_utility::play_sound_on_tag("littlebird_gatling_spinup","tag_flash");
|
|
wait 2.1;
|
|
thread maps\_utility::play_loop_sound_on_tag("littlebird_minigun_spinloop","tag_flash");
|
|
}
|
|
|
|
self.var_2897 = 1;
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 3;
|
|
}
|
|
|
|
var_04 = 0.5;
|
|
if(var_04 > param_02)
|
|
{
|
|
var_04 = param_02;
|
|
}
|
|
|
|
if(var_04 > 0)
|
|
{
|
|
wait randomfloatrange(var_04,param_02);
|
|
}
|
|
|
|
func_28BC(param_00,param_01);
|
|
var_03 = func_2894();
|
|
common_scripts\utility::array_call(var_03,::stopfiring);
|
|
thread func_28C0(param_00);
|
|
self notify("stopping_firing");
|
|
}
|
|
|
|
//Function Number: 36
|
|
func_28BC(param_00,param_01)
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
if(isplayer(param_00))
|
|
{
|
|
self endon("cant_see_player");
|
|
}
|
|
|
|
var_02 = func_2894();
|
|
common_scripts\utility::array_call(var_02,::startfiring);
|
|
wait randomfloatrange(1,2);
|
|
if(isplayer(param_00))
|
|
{
|
|
thread func_28BD(param_00);
|
|
}
|
|
|
|
if(isplayer(param_00))
|
|
{
|
|
var_03 = randomfloatrange(0.5,3);
|
|
thread func_28B9(var_03);
|
|
}
|
|
|
|
wait param_01;
|
|
}
|
|
|
|
//Function Number: 37
|
|
func_28BD(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
self endon("stopping_firing");
|
|
self notify("tracking_player");
|
|
self endon("tracking_player");
|
|
for(;;)
|
|
{
|
|
if(!func_28C3(param_00))
|
|
{
|
|
break;
|
|
}
|
|
|
|
wait 0.5;
|
|
}
|
|
|
|
wait level.var_287F;
|
|
self notify("cant_see_player");
|
|
}
|
|
|
|
//Function Number: 38
|
|
func_28BE(param_00,param_01)
|
|
{
|
|
param_01 endon("death");
|
|
param_01 endon("heli_players_dead");
|
|
self notify("miniguns_have_new_target");
|
|
self endon("miniguns_have_new_target");
|
|
if(!isplayer(param_00) && isai(param_00) && level.var_2879 == 0)
|
|
{
|
|
var_02 = spawn("script_origin",param_00.origin + (0,0,100));
|
|
var_02 linkto(param_00);
|
|
thread func_28BF(var_02);
|
|
param_00 = var_02;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
wait 0.5;
|
|
self settargetentity(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 39
|
|
func_28BF(param_00)
|
|
{
|
|
common_scripts\utility::waittill_either("death","miniguns_have_new_target");
|
|
param_00 delete();
|
|
}
|
|
|
|
//Function Number: 40
|
|
func_28C0(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
self endon("firing_miniguns");
|
|
if(isplayer(param_00))
|
|
{
|
|
wait randomfloatrange(3,4);
|
|
}
|
|
else
|
|
{
|
|
wait randomfloatrange(1,2);
|
|
}
|
|
|
|
thread func_28C1();
|
|
self.var_2898 = 0;
|
|
}
|
|
|
|
//Function Number: 41
|
|
func_28C1()
|
|
{
|
|
self notify("stop soundlittlebird_minigun_spinloop");
|
|
self.var_2897 = 0;
|
|
maps\_utility::play_sound_on_tag("littlebird_gatling_cooldown","tag_flash");
|
|
}
|
|
|
|
//Function Number: 42
|
|
func_28C2(param_00)
|
|
{
|
|
var_01 = anglestoforward(level.player.angles);
|
|
var_02 = var_01 * 400;
|
|
var_03 = var_02 + common_scripts\utility::randomvector(50);
|
|
var_04 = randomintrange(10,20);
|
|
var_05 = weaponfiretime("turret_attackheli");
|
|
for(var_06 = 0;var_06 < var_04;var_06++)
|
|
{
|
|
var_03 = var_02 + common_scripts\utility::randomvector(50);
|
|
self setturrettargetent(param_00,var_03);
|
|
if(self.var_2888)
|
|
{
|
|
self fireweapon();
|
|
}
|
|
|
|
wait var_05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 43
|
|
func_28C3(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
var_01 = self gettagorigin("tag_flash");
|
|
if(sighttracepassed(var_01,param_00 geteye(),0,undefined))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 44
|
|
func_28C4(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
var_05 = [];
|
|
var_06 = strtok(param_01.script_linkto," ");
|
|
for(var_07 = 0;var_07 < param_02.size;var_07++)
|
|
{
|
|
for(var_08 = 0;var_08 < var_06.size;var_08++)
|
|
{
|
|
if(param_02[var_07].script_linkname == var_06[var_08])
|
|
{
|
|
var_05[var_05.size] = param_02[var_07];
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach(var_0A in var_05)
|
|
{
|
|
if(var_0A.origin[2] < param_04[2])
|
|
{
|
|
var_05 = common_scripts\utility::array_remove(var_05,var_0A);
|
|
continue;
|
|
}
|
|
}
|
|
|
|
return var_05;
|
|
}
|
|
|
|
//Function Number: 45
|
|
heli_damage_monitor()
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
self endon("crashing");
|
|
self endon("leaving");
|
|
self.damagetaken = 0;
|
|
self.var_28C6 = undefined;
|
|
for(;;)
|
|
{
|
|
self waittill("damage",var_00,var_01,var_02,var_03,var_04);
|
|
if(!isdefined(var_01) || !isplayer(var_01))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
self notify("damage_by_player");
|
|
thread func_28C7();
|
|
thread func_28C8(var_01);
|
|
if(maps\_utility::is_damagefeedback_enabled())
|
|
{
|
|
var_01 thread updatedamagefeedback();
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 46
|
|
func_28C7()
|
|
{
|
|
self notify("taking damage");
|
|
self endon("taking damage");
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
self.var_288B = 1;
|
|
wait 1;
|
|
self.var_288B = 0;
|
|
}
|
|
|
|
//Function Number: 47
|
|
func_28C8(param_00)
|
|
{
|
|
self notify("attacker_seen");
|
|
self endon("attacker_seen");
|
|
self.var_28C6 = param_00;
|
|
self.var_288C = param_00;
|
|
wait level.var_287B;
|
|
self.var_288C = undefined;
|
|
self.var_28C6 = undefined;
|
|
}
|
|
|
|
//Function Number: 48
|
|
func_28C9(param_00)
|
|
{
|
|
if(isdefined(param_00.var_28C6))
|
|
{
|
|
if(param_00.var_28C6 == self)
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
if(isdefined(level.var_28A0))
|
|
{
|
|
foreach(var_02 in level.var_28A0)
|
|
{
|
|
if(self istouching(var_02))
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 49
|
|
updatedamagefeedback()
|
|
{
|
|
if(!isplayer(self))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.hud_damagefeedback setshader("damage_feedback",24,48);
|
|
self playlocalsound("player_feedback_hit_alert");
|
|
self.hud_damagefeedback.alpha = 1;
|
|
self.hud_damagefeedback fadeovertime(1);
|
|
self.hud_damagefeedback.alpha = 0;
|
|
}
|
|
|
|
//Function Number: 50
|
|
func_28CA()
|
|
{
|
|
for(var_00 = 0;var_00 < level.players.size;var_00++)
|
|
{
|
|
var_01 = level.players[var_00];
|
|
var_01.hud_damagefeedback = newclienthudelem(var_01);
|
|
var_01.hud_damagefeedback.horzalign = "center";
|
|
var_01.hud_damagefeedback.vertalign = "middle";
|
|
var_01.hud_damagefeedback.x = -12;
|
|
var_01.hud_damagefeedback.y = -12;
|
|
var_01.hud_damagefeedback.alpha = 0;
|
|
var_01.hud_damagefeedback.archived = 1;
|
|
var_01.hud_damagefeedback setshader("damage_feedback",24,48);
|
|
}
|
|
}
|
|
|
|
//Function Number: 51
|
|
func_28CB()
|
|
{
|
|
self waittill("death");
|
|
level notify("attack_heli_destroyed");
|
|
level.var_289D = 1;
|
|
wait 15;
|
|
level.var_289F = 0;
|
|
}
|
|
|
|
//Function Number: 52
|
|
func_28CC(param_00)
|
|
{
|
|
param_00 endon("death");
|
|
param_00 endon("heli_players_dead");
|
|
wait 30;
|
|
if(!level.var_289F)
|
|
{
|
|
return;
|
|
}
|
|
|
|
func_28CD("co_cf_cmd_heli_small_fire");
|
|
if(!level.var_289F)
|
|
{
|
|
return;
|
|
}
|
|
|
|
func_28CD("co_cf_cmd_rpg_stinger");
|
|
wait 30;
|
|
if(!level.var_289F)
|
|
{
|
|
return;
|
|
}
|
|
|
|
func_28CD("co_cf_cmd_heli_wonders");
|
|
}
|
|
|
|
//Function Number: 53
|
|
func_28CD(param_00)
|
|
{
|
|
while(level.var_289E)
|
|
{
|
|
wait 1;
|
|
}
|
|
|
|
level.var_289E = 1;
|
|
level.player playsound(param_00,"sounddone");
|
|
level.player waittill("sounddone");
|
|
wait 0.5;
|
|
level.var_289E = 0;
|
|
}
|
|
|
|
//Function Number: 54
|
|
func_28CE()
|
|
{
|
|
var_00 = self getcurrentweapon();
|
|
if(!isdefined(var_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(issubstr(tolower(var_00),"rpg"))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(issubstr(tolower(var_00),"stinger"))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(issubstr(tolower(var_00),"at4"))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 55
|
|
func_28CF(param_00)
|
|
{
|
|
common_scripts\utility::waittill_any("death","crash_done","turn_off_spotlight");
|
|
self.var_2891 = undefined;
|
|
if(isdefined(self))
|
|
{
|
|
stopfxontag(common_scripts\utility::getfx("_attack_heli_spotlight"),self,param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 56
|
|
func_28D0()
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
if(self.vehicletype != "littlebird")
|
|
{
|
|
return;
|
|
}
|
|
|
|
thread func_28D2();
|
|
var_00 = undefined;
|
|
for(;;)
|
|
{
|
|
wait 0.05;
|
|
switch(self.vehicletype)
|
|
{
|
|
case "littlebird":
|
|
var_00 = self.var_28D1;
|
|
break;
|
|
|
|
default:
|
|
var_00 = self.var_288F;
|
|
break;
|
|
}
|
|
|
|
if(isdefined(var_00))
|
|
{
|
|
self setturrettargetent(var_00,(0,0,0));
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 57
|
|
func_28D2()
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
var_00 = self.var_288E;
|
|
var_00.targetname = "original_ent";
|
|
self.var_28D3 = spawn("script_origin",var_00.origin);
|
|
self.var_28D3.origin = var_00.origin;
|
|
self.var_28D3.angles = var_00.angles;
|
|
self.var_28D3.targetname = "left_ent";
|
|
self.var_28D4 = spawn("script_origin",var_00.origin);
|
|
self.var_28D4.origin = var_00.origin;
|
|
self.var_28D4.angles = var_00.angles;
|
|
self.var_28D4.targetname = "right_ent";
|
|
var_01 = spawnstruct();
|
|
var_01.entity = self.var_28D3;
|
|
var_01.right = 250;
|
|
var_01 maps\_utility::translate_local();
|
|
self.var_28D3 linkto(self);
|
|
var_02 = spawnstruct();
|
|
var_02.entity = self.var_28D4;
|
|
var_02.right = -250;
|
|
var_02 maps\_utility::translate_local();
|
|
self.var_28D4 linkto(self);
|
|
var_03 = [];
|
|
self.var_28D1 = var_01;
|
|
common_scripts\utility::array_thread(var_7B,::func_28D6,self);
|
|
for(;;)
|
|
{
|
|
wait randomfloatrange(1,3);
|
|
if(func_28AA() && !func_28D5())
|
|
{
|
|
self.var_28D1 = self.var_288F;
|
|
continue;
|
|
}
|
|
|
|
var_04 = randomint(var_7B.size);
|
|
self.var_288E = var_7B[var_04];
|
|
self.var_28D1 = self.var_288E;
|
|
}
|
|
}
|
|
|
|
//Function Number: 58
|
|
func_28D5()
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
if(!isdefined(self.var_288F))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isplayer(self.var_288F))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = self.var_288F;
|
|
var_01 = maps\_utility::within_fov(var_00 geteye(),var_00 getplayerangles(),self.origin,level.cosine["35"]);
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 59
|
|
func_28D6(param_00)
|
|
{
|
|
param_00 common_scripts\utility::waittill_either("death","crash_done");
|
|
if(isdefined(self))
|
|
{
|
|
self delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 60
|
|
func_28D7(param_00)
|
|
{
|
|
var_01 = self;
|
|
var_01 maps\_vehicle::turret_set_default_on_mode("manual");
|
|
if(isdefined(param_00.var_288E))
|
|
{
|
|
var_01 settargetentity(param_00.var_288E);
|
|
}
|
|
|
|
var_01 setmode("manual");
|
|
param_00 waittill("death");
|
|
if(isdefined(param_00.var_2898) && param_00.var_2898 == 1)
|
|
{
|
|
thread func_28C1();
|
|
}
|
|
}
|
|
|
|
//Function Number: 61
|
|
func_28D9()
|
|
{
|
|
common_scripts\utility::waittill_either("death","crash_done");
|
|
if(isdefined(self.attractor))
|
|
{
|
|
missile_deleteattractor(self.attractor);
|
|
}
|
|
|
|
if(isdefined(self.var_2885))
|
|
{
|
|
missile_deleteattractor(self.var_2885);
|
|
}
|
|
}
|
|
|
|
//Function Number: 62
|
|
func_28DA(param_00)
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
self endon("stop_default_heli_missiles");
|
|
self.var_28DB = undefined;
|
|
while(isdefined(self))
|
|
{
|
|
wait 0.05;
|
|
var_01 = undefined;
|
|
var_02 = undefined;
|
|
var_03 = undefined;
|
|
self.var_28DB = undefined;
|
|
var_04 = undefined;
|
|
if(isdefined(self.currentnode) && isdefined(self.currentnode.target))
|
|
{
|
|
var_04 = maps\_utility::getent_or_struct(self.currentnode.target,"targetname");
|
|
}
|
|
|
|
if(isdefined(var_04) && isdefined(var_04.script_linkto))
|
|
{
|
|
self.var_28DB = maps\_utility::getent_or_struct(var_04.script_linkto,"script_linkname");
|
|
}
|
|
|
|
if(isdefined(self.var_28DB))
|
|
{
|
|
var_01 = self.var_28DB;
|
|
var_02 = var_01.var_28DC;
|
|
var_03 = var_01.script_delay;
|
|
var_04 waittill("trigger");
|
|
continue;
|
|
}
|
|
|
|
common_scripts\utility::waittill_any("near_goal","goal");
|
|
if(isdefined(var_01))
|
|
{
|
|
thread func_28E2(var_01,var_02,var_03,param_00);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 63
|
|
func_28DD()
|
|
{
|
|
self notify("stop_default_heli_missiles");
|
|
}
|
|
|
|
//Function Number: 64
|
|
func_28DE(param_00,param_01)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = "tag_barrel";
|
|
}
|
|
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 0;
|
|
}
|
|
|
|
playfxontag(common_scripts\utility::getfx("_attack_heli_spotlight"),self,param_00);
|
|
self.var_2891 = 1;
|
|
thread func_28CF(param_00);
|
|
if(param_01)
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
var_02 = self gettagorigin("tag_origin");
|
|
if(!isdefined(self.var_288E))
|
|
{
|
|
func_2893();
|
|
}
|
|
|
|
self setturrettargetent(self.var_288E);
|
|
thread func_28D0();
|
|
}
|
|
}
|
|
|
|
//Function Number: 65
|
|
func_28DF()
|
|
{
|
|
self notify("turn_off_spotlight");
|
|
}
|
|
|
|
//Function Number: 66
|
|
func_28E0()
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
self endon("stop_spotlight_random_targets");
|
|
if(!isdefined(self.var_288E))
|
|
{
|
|
thread func_2893();
|
|
}
|
|
|
|
if(!isdefined(self.var_28D3))
|
|
{
|
|
thread func_28D2();
|
|
}
|
|
|
|
while(isdefined(self))
|
|
{
|
|
wait 0.05;
|
|
self setturrettargetent(self.var_288E,(0,0,0));
|
|
}
|
|
}
|
|
|
|
//Function Number: 67
|
|
func_28E1()
|
|
{
|
|
self notify("stop_spotlight_random_targets");
|
|
}
|
|
|
|
//Function Number: 68
|
|
func_28E2(param_00,param_01,param_02,param_03)
|
|
{
|
|
self endon("death");
|
|
self endon("heli_players_dead");
|
|
if(isdefined(self.var_28E3))
|
|
{
|
|
var_04 = self.var_28E3;
|
|
}
|
|
else
|
|
{
|
|
var_04 = "turret_attackheli";
|
|
}
|
|
|
|
var_05 = "missile_attackheli";
|
|
if(isdefined(param_03))
|
|
{
|
|
var_05 = param_03;
|
|
}
|
|
|
|
var_06 = undefined;
|
|
var_07 = [];
|
|
self setvehweapon(var_04);
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 1;
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = 1;
|
|
}
|
|
|
|
if(!isdefined(param_00.classname))
|
|
{
|
|
if(!isdefined(self.var_28E4))
|
|
{
|
|
self.var_28E4 = spawn("script_origin",param_00.origin);
|
|
thread common_scripts\utility::delete_on_death(self.var_28E4);
|
|
}
|
|
|
|
self.var_28E4.origin = param_00.origin;
|
|
param_00 = self.var_28E4;
|
|
}
|
|
|
|
switch(self.vehicletype)
|
|
{
|
|
case "mi28":
|
|
var_06 = 0.5;
|
|
break;
|
|
var_7B[7]
|
|
"tag_store_R_2_d"
|
|
var_7B[6]
|
|
"tag_store_L_2_d"
|
|
var_7B[5]
|
|
"tag_store_R_2_c"
|
|
var_7B[4]
|
|
"tag_store_L_2_c"
|
|
var_7B[3]
|
|
"tag_store_R_2_b"
|
|
var_7B[2]
|
|
"tag_store_L_2_b"
|
|
var_7B[1]
|
|
"tag_store_R_2_a"
|
|
var_7B[0]
|
|
"tag_store_L_2_a"
|
|
break;
|
|
|
|
case "littlebird":
|
|
var_07 = 0.5;
|
|
break;
|
|
var_7B[1]
|
|
"tag_missile_right"
|
|
var_7B[0]
|
|
"tag_missile_left"
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
|
|
var_08 = -1;
|
|
for(var_09 = 0;var_09 < param_02;var_09++)
|
|
{
|
|
var_08++;
|
|
if(var_08 >= var_7B.size)
|
|
{
|
|
var_08 = 0;
|
|
}
|
|
|
|
self setvehweapon(var_06);
|
|
self.var_2889 = 1;
|
|
var_0A = self fireweapon(var_7B[var_08],param_01);
|
|
var_0A thread func_28B3();
|
|
if(var_09 < param_02 - 1)
|
|
{
|
|
wait param_03;
|
|
}
|
|
}
|
|
|
|
self.var_2889 = 0;
|
|
self setvehweapon(var_05);
|
|
}
|
|
|
|
//Function Number: 69
|
|
func_28E5()
|
|
{
|
|
self waittill("trigger",var_00);
|
|
var_01 = common_scripts\utility::getstructarray(self.target,"targetname");
|
|
var_01 = maps\_utility::array_index_by_script_index(var_01);
|
|
func_28E7(var_00,var_01);
|
|
}
|
|
|
|
//Function Number: 70
|
|
func_28E6()
|
|
{
|
|
self waittill("trigger",var_00);
|
|
var_01 = maps\_utility::get_linked_structs();
|
|
var_01 = maps\_utility::array_index_by_script_index(var_01);
|
|
func_28E7(var_00,var_01);
|
|
}
|
|
|
|
//Function Number: 71
|
|
func_28E7(param_00,param_01)
|
|
{
|
|
var_02 = [];
|
|
if(level.script == "roadkill")
|
|
{
|
|
}
|
|
|
|
if(param_01.vehicletype == "cobra")
|
|
{
|
|
}
|
|
|
|
var_03 = [];
|
|
for(var_04 = 0;var_04 < var_02.size;var_04++ = var_7B[1])
|
|
{
|
|
var_03[var_04] = spawn("script_origin",var_02[var_04].origin);
|
|
param_01 setvehweapon("littlebird_FFAR");
|
|
param_01 setturrettargetent(var_03[var_04]);
|
|
var_05 = param_01 fireweapon(var_7B[var_04 % var_7B.size],var_03[var_04],(0,0,0));
|
|
var_05 common_scripts\utility::delaycall(1,::missile_cleartarget);
|
|
wait randomfloatrange(0.2,0.3);
|
|
}
|
|
|
|
wait 2;
|
|
foreach(var_07 in var_03)
|
|
{
|
|
var_07 delete();
|
|
}
|
|
} |