mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-27 18:07:53 -05:00
1973 lines
38 KiB
Plaintext
1973 lines
38 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: 1558.gsc
|
|
* Game: Call of Duty: Modern Warfare 3
|
|
* Platform: PC
|
|
* Function Count: 82
|
|
* Decompile Time: 90 ms
|
|
* Timestamp: 10/27/2023 2:21:00 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
main()
|
|
{
|
|
func_3C66();
|
|
func_3C6A();
|
|
func_3C6C();
|
|
if(common_scripts\utility::issp_towerdefense())
|
|
{
|
|
func_3C6B();
|
|
func_3C6D();
|
|
}
|
|
}
|
|
|
|
//Function Number: 2
|
|
func_3C66()
|
|
{
|
|
precachestring(&"SENTRY_MOVE");
|
|
precachestring(&"SENTRY_PICKUP");
|
|
precachestring(&"SENTRY_PLACE");
|
|
precachestring(&"SENTRY_CANNOT_PLACE");
|
|
precachemodel("tag_laser");
|
|
level.placed_sentry = [];
|
|
level.var_3C68 = [];
|
|
level.var_3C69 = [];
|
|
level.var_3C69["easy"] = [];
|
|
level.var_3C69["easy"]["convergencePitchTime"] = 2.5;
|
|
level.var_3C69["easy"]["convergenceYawTime"] = 2.5;
|
|
level.var_3C69["easy"]["suppressionTime"] = 3;
|
|
level.var_3C69["easy"]["aiSpread"] = 2;
|
|
level.var_3C69["easy"]["playerSpread"] = 0.5;
|
|
level._effect["sentry_turret_overheat_smoke_sp"] = loadfx("smoke/sentry_turret_overheat_smoke_sp");
|
|
level._effect["sentry_turret_explode"] = loadfx("explosions/sentry_gun_explosion");
|
|
level._effect["sentry_turret_explode_smoke"] = loadfx("smoke/car_damage_blacksmoke");
|
|
}
|
|
|
|
//Function Number: 3
|
|
func_3C6A()
|
|
{
|
|
precachemodel("sentry_minigun");
|
|
precachemodel("sentry_minigun_obj");
|
|
precachemodel("sentry_minigun_obj_red");
|
|
precachemodel("sentry_minigun_folded_obj");
|
|
precachemodel("sentry_minigun_destroyed");
|
|
if(common_scripts\utility::issp() && !is_specialop())
|
|
{
|
|
precacheturret("sentry_minigun");
|
|
precacheturret("sentry_minigun_enemy");
|
|
}
|
|
else if(is_specialop())
|
|
{
|
|
precacheturret("sentry_minigun_so");
|
|
}
|
|
else
|
|
{
|
|
precacheturret("sentry_minigun_mp");
|
|
}
|
|
|
|
level.var_3C68["sentry_minigun"] = spawnstruct();
|
|
func_3C7D("sentry_minigun");
|
|
func_3C6E("sentry_minigun");
|
|
common_scripts\utility::array_thread(getentarray("script_model_pickup_sentry_minigun","classname"),::func_3C7F,"sentry_minigun");
|
|
}
|
|
|
|
//Function Number: 4
|
|
func_3C6B()
|
|
{
|
|
precachemodel("sentry_minigun_weak");
|
|
precachemodel("sentry_minigun_weak_destroyed");
|
|
precachemodel("sentry_minigun_weak_obj");
|
|
precachemodel("sentry_minigun_weak_obj_red");
|
|
precachemodel("sentry_minigun_weak_folded_obj");
|
|
precacheturret("sentry_minigun_weak");
|
|
level.var_3C68["sentry_minigun_weak"] = spawnstruct();
|
|
func_3C7E("sentry_minigun_weak");
|
|
func_3C6E("sentry_minigun_weak");
|
|
common_scripts\utility::array_thread(getentarray("script_model_pickup_sentry_minigun_weak","classname"),::func_3C7F,"sentry_minigun_weak");
|
|
}
|
|
|
|
//Function Number: 5
|
|
func_3C6C()
|
|
{
|
|
precachemodel("sentry_grenade_launcher_upgrade");
|
|
precachemodel("sentry_grenade_launcher_upgrade_destroyed");
|
|
precachemodel("sentry_grenade_launcher_upgrade_obj");
|
|
precachemodel("sentry_grenade_launcher_upgrade_obj_red");
|
|
precachemodel("sentry_grenade_launcher_upgrade_folded_obj");
|
|
if(common_scripts\utility::issp() && !is_specialop())
|
|
{
|
|
precacheturret("sentry_gun");
|
|
}
|
|
else if(is_specialop())
|
|
{
|
|
precacheturret("sentry_gun_so");
|
|
}
|
|
else
|
|
{
|
|
precacheturret("sentry_gun_mp");
|
|
}
|
|
|
|
level.var_3C68["sentry_gun"] = spawnstruct();
|
|
func_3C6F("sentry_gun");
|
|
func_3C6E("sentry_gun");
|
|
common_scripts\utility::array_thread(getentarray("script_model_pickup_sentry_gun","classname"),::func_3C7F,"sentry_gun");
|
|
}
|
|
|
|
//Function Number: 6
|
|
func_3C6D()
|
|
{
|
|
precachemodel("sentry_grenade_launcher");
|
|
precachemodel("sentry_grenade_launcher_destroyed");
|
|
precachemodel("sentry_grenade_launcher_obj");
|
|
precachemodel("sentry_grenade_launcher_obj_red");
|
|
precachemodel("sentry_grenade_launcher_folded_obj");
|
|
precacheturret("sentry_gun_weak");
|
|
level.var_3C68["sentry_gun_weak"] = spawnstruct();
|
|
func_3C7C("sentry_gun_weak");
|
|
func_3C6E("sentry_gun_weak");
|
|
common_scripts\utility::array_thread(getentarray("script_model_pickup_sentry_gun_weak","classname"),::func_3C7F,"sentry_gun_weak");
|
|
}
|
|
|
|
//Function Number: 7
|
|
func_3C6E(param_00)
|
|
{
|
|
var_01 = getentarray(param_00,"targetname");
|
|
foreach(var_03 in var_01)
|
|
{
|
|
var_03 func_3C80(undefined,param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
func_3C6F(param_00)
|
|
{
|
|
level.var_3C68[param_00].ammo = 100;
|
|
level.var_3C68[param_00].var_3C70 = 1;
|
|
level.var_3C68[param_00].var_3C71 = 1;
|
|
level.var_3C68[param_00].var_3C72 = 2;
|
|
level.var_3C68[param_00].var_3C73 = 1;
|
|
level.var_3C68[param_00].var_3C74 = 1.5;
|
|
level.var_3C68[param_00].var_3C75 = 1;
|
|
level.var_3C68[param_00].model = "sentry_grenade_launcher_upgrade";
|
|
level.var_3C68[param_00].var_3C76 = "sentry_grenade_launcher_upgrade_destroyed";
|
|
level.var_3C68[param_00].var_3C77 = "sentry_grenade_launcher_upgrade_folded";
|
|
level.var_3C68[param_00].var_3C78 = "sentry_grenade_launcher_upgrade_folded_obj";
|
|
level.var_3C68[param_00].var_3C79 = "sentry_grenade_launcher_upgrade_obj";
|
|
level.var_3C68[param_00].var_3C7A = "sentry_grenade_launcher_upgrade_obj_red";
|
|
level.var_3C68[param_00].health = 350;
|
|
if(common_scripts\utility::issp() && !is_specialop())
|
|
{
|
|
level.var_3C68[param_00].var_3C7B = 15;
|
|
level.var_3C68[param_00].weaponinfo = "sentry_gun";
|
|
level.var_3C68[param_00].targetname = "sentry_gun";
|
|
return;
|
|
}
|
|
|
|
if(is_specialop())
|
|
{
|
|
level.var_3C68[param_00].ammo = 50;
|
|
level.var_3C68[param_00].var_3C7B = 8;
|
|
level.var_3C68[param_00].weaponinfo = "sentry_gun_so";
|
|
level.var_3C68[param_00].targetname = "sentry_gun_so";
|
|
level.var_3C68[param_00].health = 1200;
|
|
return;
|
|
}
|
|
|
|
level.var_3C68[param_00].var_3C7B = 5;
|
|
level.var_3C68[param_00].weaponinfo = "sentry_gun_mp";
|
|
level.var_3C68[param_00].targetname = "sentry_gun_mp";
|
|
}
|
|
|
|
//Function Number: 9
|
|
func_3C7C(param_00)
|
|
{
|
|
level.var_3C68[param_00].var_3C70 = 0;
|
|
level.var_3C68[param_00].var_3C71 = 1;
|
|
level.var_3C68[param_00].var_3C72 = 2;
|
|
level.var_3C68[param_00].var_3C73 = 1;
|
|
level.var_3C68[param_00].var_3C74 = 1.5;
|
|
level.var_3C68[param_00].var_3C75 = 1;
|
|
level.var_3C68[param_00].model = "sentry_grenade_launcher";
|
|
level.var_3C68[param_00].var_3C76 = "sentry_grenade_launcher_destroyed";
|
|
level.var_3C68[param_00].var_3C77 = "sentry_grenade_launcher_folded";
|
|
level.var_3C68[param_00].var_3C78 = "sentry_grenade_launcher_folded_obj";
|
|
level.var_3C68[param_00].var_3C79 = "sentry_grenade_launcher_obj";
|
|
level.var_3C68[param_00].var_3C7A = "sentry_grenade_launcher_obj_red";
|
|
level.var_3C68[param_00].health = int(175);
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
level.var_3C68[param_00].var_3C7B = 15;
|
|
level.var_3C68[param_00].weaponinfo = "sentry_gun_weak";
|
|
level.var_3C68[param_00].targetname = "sentry_gun_weak";
|
|
return;
|
|
}
|
|
|
|
level.var_3C68[param_00].var_3C7B = 5;
|
|
level.var_3C68[param_00].weaponinfo = "sentry_gun_mp";
|
|
level.var_3C68[param_00].targetname = "sentry_gun_mp";
|
|
}
|
|
|
|
//Function Number: 10
|
|
func_3C7D(param_00)
|
|
{
|
|
level.var_3C68[param_00].ammo = 1000;
|
|
level.var_3C68[param_00].var_3C70 = 1;
|
|
level.var_3C68[param_00].var_3C71 = 20;
|
|
level.var_3C68[param_00].var_3C72 = 60;
|
|
level.var_3C68[param_00].var_3C73 = 0.5;
|
|
level.var_3C68[param_00].var_3C74 = 1.3;
|
|
level.var_3C68[param_00].var_3C75 = 0;
|
|
level.var_3C68[param_00].model = "sentry_minigun";
|
|
level.var_3C68[param_00].var_3C76 = "sentry_minigun_destroyed";
|
|
level.var_3C68[param_00].var_3C77 = "sentry_minigun_folded";
|
|
level.var_3C68[param_00].var_3C78 = "sentry_minigun_folded_obj";
|
|
level.var_3C68[param_00].var_3C79 = "sentry_minigun_obj";
|
|
level.var_3C68[param_00].var_3C7A = "sentry_minigun_obj_red";
|
|
level.var_3C68[param_00].health = 190;
|
|
if(common_scripts\utility::issp() && !is_specialop())
|
|
{
|
|
level.var_3C68[param_00].var_3C7B = 15;
|
|
level.var_3C68[param_00].anim_loop = %minigun_spin_loop;
|
|
level.var_3C68[param_00].weaponinfo = "sentry_minigun";
|
|
level.var_3C68[param_00].targetname = "sentry_minigun";
|
|
return;
|
|
}
|
|
|
|
if(is_specialop())
|
|
{
|
|
level.var_3C68[param_00].ammo = 800;
|
|
level.var_3C68[param_00].var_3C7B = 8;
|
|
level.var_3C68[param_00].anim_loop = %minigun_spin_loop;
|
|
level.var_3C68[param_00].weaponinfo = "sentry_minigun_so";
|
|
level.var_3C68[param_00].targetname = "sentry_minigun_so";
|
|
level.var_3C68[param_00].health = 800;
|
|
return;
|
|
}
|
|
|
|
level.var_3C68[param_00].var_3C7B = 5;
|
|
level.var_3C68[param_00].weaponinfo = "sentry_minigun_mp";
|
|
level.var_3C68[param_00].targetname = "sentry_minigun_mp";
|
|
}
|
|
|
|
//Function Number: 11
|
|
func_3C7E(param_00)
|
|
{
|
|
level.var_3C68[param_00].ammo = 800;
|
|
level.var_3C68[param_00].var_3C70 = 0;
|
|
level.var_3C68[param_00].var_3C71 = 10;
|
|
level.var_3C68[param_00].var_3C72 = 30;
|
|
level.var_3C68[param_00].var_3C73 = 1;
|
|
level.var_3C68[param_00].var_3C74 = 2.6;
|
|
level.var_3C68[param_00].var_3C75 = 0;
|
|
level.var_3C68[param_00].model = "sentry_minigun_weak";
|
|
level.var_3C68[param_00].var_3C76 = "sentry_minigun_weak_destroyed";
|
|
level.var_3C68[param_00].var_3C77 = "sentry_minigun_weak_folded";
|
|
level.var_3C68[param_00].var_3C78 = "sentry_minigun_weak_folded_obj";
|
|
level.var_3C68[param_00].var_3C79 = "sentry_minigun_weak_obj";
|
|
level.var_3C68[param_00].var_3C7A = "sentry_minigun_weak_obj_red";
|
|
level.var_3C68[param_00].health = int(95);
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
level.var_3C68[param_00].var_3C7B = 15;
|
|
level.var_3C68[param_00].anim_loop = %minigun_spin_loop;
|
|
level.var_3C68[param_00].weaponinfo = "sentry_minigun_weak";
|
|
level.var_3C68[param_00].targetname = "sentry_minigun_weak";
|
|
return;
|
|
}
|
|
|
|
level.var_3C68[param_00].var_3C7B = 5;
|
|
level.var_3C68[param_00].weaponinfo = "sentry_minigun_mp";
|
|
level.var_3C68[param_00].targetname = "sentry_minigun_mp";
|
|
}
|
|
|
|
//Function Number: 12
|
|
func_3C7F(param_00)
|
|
{
|
|
self setmodel(self.model);
|
|
self.sentrytype = param_00;
|
|
self setcursorhint("HINT_NOICON");
|
|
self sethintstring(&"SENTRY_PICKUP");
|
|
self makeusable();
|
|
thread func_3CBA(param_00);
|
|
}
|
|
|
|
//Function Number: 13
|
|
givesentry(param_00)
|
|
{
|
|
self.last_sentry = param_00;
|
|
thread func_3CAE(param_00);
|
|
}
|
|
|
|
//Function Number: 14
|
|
func_3C80(param_00,param_01,param_02)
|
|
{
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
level.var_3C81 = 1;
|
|
level.var_3C82 = 1;
|
|
if(!isdefined(level.var_3C83))
|
|
{
|
|
level.var_3C83 = 5;
|
|
}
|
|
|
|
if(!isdefined(level.var_3C84))
|
|
{
|
|
level.var_3C84 = 2;
|
|
}
|
|
}
|
|
|
|
if(!isdefined(param_00))
|
|
{
|
|
if(!isdefined(self.script_team))
|
|
{
|
|
self.script_team = "axis";
|
|
}
|
|
|
|
param_00 = self.script_team;
|
|
}
|
|
|
|
self setturretmodechangewait(1);
|
|
func_3CBF();
|
|
self maketurretinoperable();
|
|
func_3CC1();
|
|
self setcandamage(1);
|
|
self setdefaultdroppitch(-89);
|
|
if(common_scripts\utility::issp() || level.teambased || is_survival())
|
|
{
|
|
self setturretteam(param_00);
|
|
}
|
|
|
|
self.sentrytype = param_01;
|
|
self.issentrygun = 1;
|
|
self.var_3C85 = 350;
|
|
self.var_3C86 = 400;
|
|
self.var_3C87 = 60;
|
|
self.var_3C88 = level.var_3C68[self.sentrytype].ammo;
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
if(self.weaponinfo == "sentry_gun")
|
|
{
|
|
self.bullet_armor = 2000;
|
|
}
|
|
else
|
|
{
|
|
self.bullet_armor = 1200;
|
|
}
|
|
}
|
|
else if(self.weaponinfo == "sentry_gun")
|
|
{
|
|
self.bullet_armor = 300;
|
|
}
|
|
else
|
|
{
|
|
self.bullet_armor = 300;
|
|
}
|
|
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
self [[ level.makeentitysentient_func ]](param_00);
|
|
common_scripts\utility::self_func("seanimtree",#animtree);
|
|
if(isdefined(self.script_team) && self.script_team == "axis")
|
|
{
|
|
thread func_3CBD();
|
|
}
|
|
}
|
|
|
|
self.health = level.var_3C68[param_01].health;
|
|
func_3C90();
|
|
thread func_3CAD();
|
|
thread func_3C96();
|
|
thread func_3C89();
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
thread func_3CD4();
|
|
thread func_3CD3();
|
|
}
|
|
|
|
thread func_3CBB();
|
|
if(getdvarint("survival_chaos") != 1)
|
|
{
|
|
thread func_3C8F();
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
param_02 = level.player;
|
|
}
|
|
}
|
|
|
|
func_3CC8(param_02);
|
|
thread func_3CCA(param_02);
|
|
if(!isdefined(self.damage_functions))
|
|
{
|
|
self.damage_functions = [];
|
|
}
|
|
}
|
|
|
|
//Function Number: 15
|
|
func_3C89()
|
|
{
|
|
self endon("deleted");
|
|
self waittill("death",var_00,var_01,var_02);
|
|
level notify("a_sentry_died");
|
|
if(isdefined(var_00) && isdefined(var_00.team) && self.team != var_00.team && isdefined(level.stat_track_kill_func))
|
|
{
|
|
var_00 [[ level.stat_track_kill_func ]](self,var_01,var_02);
|
|
}
|
|
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
removefromturretlist();
|
|
thread func_3CC7();
|
|
}
|
|
|
|
thread func_3CA1();
|
|
thread func_3CD7();
|
|
self setmodel(level.var_3C68[self.sentrytype].var_3C76);
|
|
func_3CC3();
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
self [[ level.freeentitysentient_func ]]();
|
|
}
|
|
|
|
if(!common_scripts\utility::issp() && isdefined(var_00) && isplayer(var_00))
|
|
{
|
|
if(isdefined(self.owner))
|
|
{
|
|
self.owner thread [[ level.leaderdialogonplayer_func ]]("destroy_sentry","sentry_status");
|
|
}
|
|
|
|
var_00 thread [[ level.onxpevent ]]("kill");
|
|
}
|
|
|
|
self setsentrycarrier(undefined);
|
|
self.carrier = undefined;
|
|
self setcandamage(1);
|
|
self.ignoreme = 1;
|
|
self makeunusable();
|
|
self setsentryowner(undefined);
|
|
self setturretminimapvisible(0);
|
|
self playsound("sentry_explode");
|
|
playfxontag(common_scripts\utility::getfx("sentry_turret_explode"),self,"tag_aim");
|
|
if(common_scripts\utility::issp() && !isdefined(self.var_3C8A) || !self.var_3C8A)
|
|
{
|
|
self setcontents(0);
|
|
}
|
|
|
|
wait 1.5;
|
|
self playsound("sentry_explode_smoke");
|
|
var_03 = level.var_3C68[self.sentrytype].var_3C7B * 1000;
|
|
var_04 = gettime();
|
|
for(;;)
|
|
{
|
|
playfxontag(common_scripts\utility::getfx("sentry_turret_explode_smoke"),self,"tag_aim");
|
|
wait 0.4;
|
|
if(gettime() - var_04 > var_03)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
level.placed_sentry = common_scripts\utility::array_remove(level.placed_sentry,self);
|
|
if(!common_scripts\utility::issp() || getdvar("specialops") == "1")
|
|
{
|
|
thread func_3CCE();
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
func_3C8B(param_00)
|
|
{
|
|
level endon("game_ended");
|
|
self endon("sentry_placement_finished");
|
|
self waittill("death");
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
param_00 notify("death");
|
|
return;
|
|
}
|
|
|
|
if(!self.var_3C8C)
|
|
{
|
|
param_00 func_3CC7();
|
|
param_00 notify("deleted");
|
|
waittillframeend;
|
|
param_00 delete();
|
|
return;
|
|
}
|
|
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
thread func_3C94(param_00);
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
func_3C8D(param_00)
|
|
{
|
|
level endon("game_ended");
|
|
self endon("sentry_placement_finished");
|
|
self waittill("disconnect");
|
|
param_00 notify("death");
|
|
}
|
|
|
|
//Function Number: 18
|
|
func_3C8E(param_00)
|
|
{
|
|
level endon("game_ended");
|
|
self endon("sentry_placement_finished");
|
|
self waittill("sentry_placement_canceled");
|
|
param_00 func_3CC7();
|
|
func_3CB9();
|
|
param_00 notify("death");
|
|
}
|
|
|
|
//Function Number: 19
|
|
func_3C8F()
|
|
{
|
|
level endon("game_ended");
|
|
self endon("death");
|
|
if(self.health <= 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
self makeusable();
|
|
for(;;)
|
|
{
|
|
self waittill("trigger",var_00);
|
|
if(isdefined(var_00.placingsentry))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
var_00 thread func_3C8E(self);
|
|
var_00 thread func_3C8B(self);
|
|
var_00 thread func_3C8D(self);
|
|
var_00 thread func_3CB1(self);
|
|
if(!common_scripts\utility::issp() && !isalive(var_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
func_3CC6();
|
|
}
|
|
|
|
func_3CC3();
|
|
var_00.placingsentry = self;
|
|
self setsentrycarrier(var_00);
|
|
self.carrier = var_00;
|
|
self.ignoreme = 1;
|
|
self setcandamage(0);
|
|
self makeunusable();
|
|
var_00 common_scripts\utility::_disableweapon();
|
|
func_3CC0();
|
|
func_3C92();
|
|
var_00 thread func_3C93(self);
|
|
var_00 thread func_3CB5(self);
|
|
}
|
|
|
|
//Function Number: 20
|
|
func_3C90()
|
|
{
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.var_3C91 = "" + gettime();
|
|
[[ level.badplace_cylinder_func ]](self.var_3C91,0,self.origin,32,128,self.team,"neutral");
|
|
}
|
|
|
|
//Function Number: 21
|
|
func_3C92()
|
|
{
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
return;
|
|
}
|
|
|
|
[[ level.badplace_delete_func ]](self.var_3C91);
|
|
self.var_3C91 = undefined;
|
|
}
|
|
|
|
//Function Number: 22
|
|
func_3C93(param_00)
|
|
{
|
|
level endon("game_ended");
|
|
param_00 endon("death");
|
|
param_00 endon("deleted");
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
param_00 notify("sentry_move_started",self);
|
|
self.carrying_pickedup_sentry = 1;
|
|
for(;;)
|
|
{
|
|
func_3CBE(0);
|
|
func_3CBE(1);
|
|
func_3CB6(param_00);
|
|
if(self.var_3C8C)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
param_00 notify("sentry_move_finished",self);
|
|
self.carrying_pickedup_sentry = 0;
|
|
func_3C94(param_00);
|
|
}
|
|
|
|
//Function Number: 23
|
|
func_3C94(param_00)
|
|
{
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
self endon("death");
|
|
level endon("end_game");
|
|
}
|
|
|
|
self.placingsentry = undefined;
|
|
param_00 setsentrycarrier(undefined);
|
|
param_00.carrier = undefined;
|
|
param_00 setcandamage(1);
|
|
param_00.ignoreme = 0;
|
|
common_scripts\utility::_enableweapon();
|
|
param_00 func_3CBF();
|
|
param_00 setmodel(level.var_3C68[param_00.sentrytype].model);
|
|
param_00 func_3C90();
|
|
param_00 setcontents(param_00.var_3C95);
|
|
param_00 func_3CC8(self);
|
|
self notify("sentry_placement_finished",param_00);
|
|
param_00 notify("sentry_carried");
|
|
param_00.overheated = 0;
|
|
func_3CB9();
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
param_00 func_3CC5();
|
|
}
|
|
|
|
param_00 func_3CC1();
|
|
thread common_scripts\utility::play_sound_in_space("sentry_gun_plant",param_00.origin);
|
|
func_3CBE(0);
|
|
if(getdvarint("survival_chaos") != 1)
|
|
{
|
|
param_00 thread func_3C8F();
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
func_3C96()
|
|
{
|
|
level endon("game_ended");
|
|
self endon("death");
|
|
thread func_3C97();
|
|
for(;;)
|
|
{
|
|
common_scripts\utility::waittill_either("turretstatechange","cooled");
|
|
if(self isfiringturret())
|
|
{
|
|
thread func_3C9D();
|
|
thread func_3CD6();
|
|
continue;
|
|
}
|
|
|
|
thread func_3CA1();
|
|
thread func_3CD7();
|
|
}
|
|
}
|
|
|
|
//Function Number: 25
|
|
func_3C97()
|
|
{
|
|
self endon("death");
|
|
if(self.sentrytype != "sentry_minigun")
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level.var_3C81))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.overheat = 0;
|
|
self.overheated = 0;
|
|
if(getdvarint("sentry_overheat_debug") == 1)
|
|
{
|
|
thread func_3C9A();
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
if(self.overheat >= level.var_3C83 * 10)
|
|
{
|
|
thread func_3C9B();
|
|
common_scripts\utility::waittill_either("cooled","sentry_carried");
|
|
}
|
|
|
|
if(self isfiringturret())
|
|
{
|
|
self.overheat = self.overheat + 1;
|
|
}
|
|
else if(self.overheat > 0)
|
|
{
|
|
self.overheat = self.overheat - 1;
|
|
}
|
|
|
|
wait 0.1 / level.var_3C81;
|
|
}
|
|
}
|
|
|
|
//Function Number: 26
|
|
func_3C99()
|
|
{
|
|
self endon("death");
|
|
while(self.overheated)
|
|
{
|
|
if(self.overheat > 0)
|
|
{
|
|
self.overheat = self.overheat - 1;
|
|
}
|
|
|
|
wait 0.1 / level.var_3C81;
|
|
}
|
|
}
|
|
|
|
//Function Number: 27
|
|
func_3C9A()
|
|
{
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
var_00 = self.overheat / level.var_3C83 * 10;
|
|
var_01 = "[ ";
|
|
var_02 = " ]";
|
|
if(self.overheated)
|
|
{
|
|
var_01 = "{{{ ";
|
|
var_02 = " }}}";
|
|
}
|
|
|
|
wait 0.2;
|
|
}
|
|
}
|
|
|
|
//Function Number: 28
|
|
func_3C9B()
|
|
{
|
|
self endon("death");
|
|
self notify("overheated");
|
|
self.overheated = 1;
|
|
func_3CA1();
|
|
thread func_3C9C();
|
|
}
|
|
|
|
//Function Number: 29
|
|
func_3C9C()
|
|
{
|
|
self endon("death");
|
|
self endon("sentry_carried");
|
|
thread func_3C99();
|
|
wait level.var_3C84;
|
|
self notify("cooled");
|
|
self.overheat = 0;
|
|
self.overheated = 0;
|
|
}
|
|
|
|
//Function Number: 30
|
|
func_3C9D()
|
|
{
|
|
self endon("death");
|
|
level endon("game_ended");
|
|
if(level.var_3C68[self.sentrytype].var_3C75)
|
|
{
|
|
self waittill("turret_on_target");
|
|
}
|
|
|
|
if(isdefined(self.overheated) && self.overheated)
|
|
{
|
|
return;
|
|
}
|
|
|
|
thread func_3CA5();
|
|
self endon("stop_shooting");
|
|
self notify("shooting");
|
|
var_00 = weaponfiretime(self.weaponinfo);
|
|
for(;;)
|
|
{
|
|
func_3CA3();
|
|
var_01 = randomintrange(level.var_3C68[self.sentrytype].var_3C71,level.var_3C68[self.sentrytype].var_3C72);
|
|
for(var_02 = 0;var_02 < var_01;var_02++)
|
|
{
|
|
if(func_3CA0())
|
|
{
|
|
self shootturret();
|
|
}
|
|
|
|
self notify("bullet_fired");
|
|
wait var_00;
|
|
}
|
|
|
|
wait randomfloatrange(level.var_3C68[self.sentrytype].var_3C73,level.var_3C68[self.sentrytype].var_3C74);
|
|
}
|
|
}
|
|
|
|
//Function Number: 31
|
|
func_3C9E(param_00,param_01)
|
|
{
|
|
self notify("allowFireThread");
|
|
self endon("allowFireThread");
|
|
self endon("death");
|
|
self.var_3C9F = param_00;
|
|
if(isdefined(param_01) && !param_00)
|
|
{
|
|
wait param_01;
|
|
if(isdefined(self))
|
|
{
|
|
thread func_3C9E(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 32
|
|
func_3CA0()
|
|
{
|
|
if(!isdefined(self.var_3C9F))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return self.var_3C9F;
|
|
}
|
|
|
|
//Function Number: 33
|
|
func_3CA1()
|
|
{
|
|
thread func_3CA9();
|
|
self notify("stop_shooting");
|
|
thread func_3CA2();
|
|
}
|
|
|
|
//Function Number: 34
|
|
func_3CA2()
|
|
{
|
|
self endon("shooting");
|
|
self endon("deleted");
|
|
wait randomfloatrange(0,1);
|
|
var_00 = 6000;
|
|
var_01 = gettime();
|
|
if(isdefined(self))
|
|
{
|
|
self playsound("sentry_steam");
|
|
}
|
|
|
|
while(isdefined(self))
|
|
{
|
|
playfxontag(common_scripts\utility::getfx("sentry_turret_overheat_smoke_sp"),self,"tag_flash");
|
|
wait 0.3;
|
|
if(gettime() - var_01 > var_00)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 35
|
|
func_3CA3()
|
|
{
|
|
if(isdefined(self.var_3CA4) && self.var_3CA4 == 0)
|
|
{
|
|
self waittill("allow_fire");
|
|
}
|
|
}
|
|
|
|
//Function Number: 36
|
|
func_3CA5()
|
|
{
|
|
self notify("anim_state_change");
|
|
self endon("anim_state_change");
|
|
self endon("stop_shooting");
|
|
self endon("deleted");
|
|
level endon("game_ended");
|
|
self endon("death");
|
|
if(!isdefined(level.var_3C68[self.sentrytype].anim_loop))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.var_3CA4 = 0;
|
|
if(!isdefined(self.momentum))
|
|
{
|
|
self.momentum = 0;
|
|
}
|
|
|
|
thread func_3CAA();
|
|
for(;;)
|
|
{
|
|
if(self.momentum >= 1)
|
|
{
|
|
break;
|
|
}
|
|
|
|
self.momentum = self.momentum + 0.1;
|
|
self.momentum = clamp(self.momentum,0,1);
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
common_scripts\utility::self_func("setanim",level.var_3C68[self.sentrytype].anim_loop,1,0.2,self.momentum);
|
|
}
|
|
|
|
wait 0.2;
|
|
}
|
|
|
|
self.var_3CA4 = 1;
|
|
self notify("allow_fire");
|
|
}
|
|
|
|
//Function Number: 37
|
|
func_3CA6()
|
|
{
|
|
self notify("deleted");
|
|
wait 0.05;
|
|
self notify("death");
|
|
if(isdefined(self.var_3CA7))
|
|
{
|
|
self.var_3CA7 delete();
|
|
}
|
|
|
|
if(isdefined(self.var_3CA8))
|
|
{
|
|
self.var_3CA8 delete();
|
|
}
|
|
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 38
|
|
func_3CA9()
|
|
{
|
|
self notify("anim_state_change");
|
|
self endon("anim_state_change");
|
|
if(!isdefined(level.var_3C68[self.sentrytype].anim_loop))
|
|
{
|
|
return;
|
|
}
|
|
|
|
thread func_3CAC();
|
|
self.var_3CA4 = 0;
|
|
for(;;)
|
|
{
|
|
if(!isdefined(self.momentum))
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(self.momentum <= 0)
|
|
{
|
|
break;
|
|
}
|
|
|
|
self.momentum = self.momentum - 0.1;
|
|
self.momentum = clamp(self.momentum,0,1);
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
common_scripts\utility::self_func("setanim",level.var_3C68[self.sentrytype].anim_loop,1,0.2,self.momentum);
|
|
}
|
|
|
|
wait 0.2;
|
|
}
|
|
}
|
|
|
|
//Function Number: 39
|
|
func_3CAA()
|
|
{
|
|
self notify("sound_state_change");
|
|
self endon("sound_state_change");
|
|
self endon("deleted");
|
|
if(self.momentum < 0.25)
|
|
{
|
|
self playsound("sentry_minigun_spinup1");
|
|
wait 0.6;
|
|
self playsound("sentry_minigun_spinup2");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spinup3");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spinup4");
|
|
wait 0.5;
|
|
}
|
|
else if(self.momentum < 0.5)
|
|
{
|
|
self playsound("sentry_minigun_spinup2");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spinup3");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spinup4");
|
|
wait 0.5;
|
|
}
|
|
else if(self.momentum < 0.75)
|
|
{
|
|
self playsound("sentry_minigun_spinup3");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spinup4");
|
|
wait 0.5;
|
|
}
|
|
else if(self.momentum < 1)
|
|
{
|
|
self playsound("sentry_minigun_spinup4");
|
|
wait 0.5;
|
|
}
|
|
|
|
thread func_3CAB();
|
|
}
|
|
|
|
//Function Number: 40
|
|
func_3CAB()
|
|
{
|
|
self endon("death");
|
|
self notify("sound_state_change");
|
|
self endon("sound_state_change");
|
|
for(;;)
|
|
{
|
|
self playsound("sentry_minigun_spin");
|
|
wait 2.5;
|
|
}
|
|
}
|
|
|
|
//Function Number: 41
|
|
func_3CAC()
|
|
{
|
|
self notify("sound_state_change");
|
|
self endon("sound_state_change");
|
|
self endon("deleted");
|
|
if(!isdefined(self.momentum))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(self.momentum > 0.75)
|
|
{
|
|
self stopsounds();
|
|
self playsound("sentry_minigun_spindown4");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spindown3");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spindown2");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spindown1");
|
|
wait 0.65;
|
|
return;
|
|
}
|
|
|
|
if(self.momentum > 0.5)
|
|
{
|
|
self playsound("sentry_minigun_spindown3");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spindown2");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spindown1");
|
|
wait 0.65;
|
|
return;
|
|
}
|
|
|
|
if(self.momentum > 0.25)
|
|
{
|
|
self playsound("sentry_minigun_spindown2");
|
|
wait 0.5;
|
|
self playsound("sentry_minigun_spindown1");
|
|
wait 0.65;
|
|
return;
|
|
}
|
|
|
|
self playsound("sentry_minigun_spindown1");
|
|
wait 0.65;
|
|
}
|
|
|
|
//Function Number: 42
|
|
func_3CAD()
|
|
{
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
wait randomfloatrange(3.5,4.5);
|
|
thread common_scripts\utility::play_sound_in_space("sentry_gun_beep",self.origin + (0,0,40));
|
|
}
|
|
}
|
|
|
|
//Function Number: 43
|
|
func_3CAE(param_00,param_01,param_02,param_03)
|
|
{
|
|
level endon("game_ended");
|
|
if(isdefined(self.placingsentry))
|
|
{
|
|
return undefined;
|
|
}
|
|
|
|
common_scripts\utility::_disableweapon();
|
|
self notify("placingSentry");
|
|
self.sentry_placement_failed = undefined;
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = self.origin;
|
|
}
|
|
|
|
if(!isdefined(param_02))
|
|
{
|
|
param_02 = self.angles;
|
|
}
|
|
|
|
if(!isdefined(param_03))
|
|
{
|
|
param_03 = 0;
|
|
}
|
|
|
|
var_04 = spawnturret("misc_turret",param_01,level.var_3C68[param_00].weaponinfo);
|
|
var_04 setmodel(level.var_3C68[param_00].var_3C79);
|
|
var_04.weaponinfo = level.var_3C68[param_00].weaponinfo;
|
|
var_04.targetname = level.var_3C68[param_00].targetname;
|
|
var_04.weaponname = level.var_3C68[param_00].weaponinfo;
|
|
var_04.angles = param_02;
|
|
var_04.team = self.team;
|
|
var_04.attacker = self;
|
|
var_04.sentrytype = param_00;
|
|
var_04 maketurretinoperable();
|
|
var_04 func_3CC3();
|
|
var_04 setcandamage(0);
|
|
var_04 func_3CC8(self);
|
|
var_04 setdefaultdroppitch(-89);
|
|
self.placingsentry = var_04;
|
|
var_04 setsentrycarrier(self);
|
|
var_04.carrier = self;
|
|
var_04 setcandamage(0);
|
|
var_04.ignoreme = 1;
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
var_04 addtoturretlist();
|
|
}
|
|
|
|
if(!param_03)
|
|
{
|
|
thread func_3CB0(var_04);
|
|
thread func_3CB1(var_04);
|
|
}
|
|
|
|
thread func_3CB3(var_04,param_03);
|
|
if(!param_03)
|
|
{
|
|
thread func_3CB5(var_04);
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
common_scripts\utility::waittill_any("sentry_placement_finished","sentry_placement_canceled","death");
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::waittill_any("sentry_placement_finished","sentry_placement_canceled");
|
|
}
|
|
}
|
|
|
|
func_3CB9();
|
|
common_scripts\utility::_enableweapon();
|
|
self.placingsentry = undefined;
|
|
self setcandamage(1);
|
|
var_04 setsentrycarrier(undefined);
|
|
var_04.carrier = undefined;
|
|
var_04.ignoreme = 0;
|
|
if(is_survival())
|
|
{
|
|
waittillframeend;
|
|
if(isdefined(self.sentry_placement_failed) && self.sentry_placement_failed)
|
|
{
|
|
return undefined;
|
|
}
|
|
}
|
|
|
|
level.placed_sentry[level.placed_sentry.size] = var_04;
|
|
self notify("new_sentry",var_04);
|
|
return var_04;
|
|
}
|
|
|
|
//Function Number: 44
|
|
func_3CB0(param_00)
|
|
{
|
|
self endon("sentry_placement_finished");
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
common_scripts\utility::waittill_any("sentry_placement_canceled","death","disconnect");
|
|
}
|
|
else
|
|
{
|
|
common_scripts\utility::waittill_any("sentry_placement_canceled");
|
|
}
|
|
|
|
if(is_survival())
|
|
{
|
|
self.sentry_placement_failed = 1;
|
|
}
|
|
|
|
waittillframeend;
|
|
param_00 delete();
|
|
}
|
|
|
|
//Function Number: 45
|
|
func_3CB1(param_00)
|
|
{
|
|
self endon("sentry_placement_finished");
|
|
if(common_scripts\utility::issp())
|
|
{
|
|
return;
|
|
}
|
|
|
|
level waittill("game_ended");
|
|
if(!isdefined(param_00))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!self.var_3C8C)
|
|
{
|
|
param_00 notify("deleted");
|
|
waittillframeend;
|
|
param_00 delete();
|
|
return;
|
|
}
|
|
|
|
thread func_3C94(param_00);
|
|
}
|
|
|
|
//Function Number: 46
|
|
func_3CB2()
|
|
{
|
|
level endon("game_ended");
|
|
self endon("disconnect");
|
|
self endon("restock_reset");
|
|
self notifyonplayercommand("cancel sentry","+actionslot 4");
|
|
common_scripts\utility::waittill_any("death","cancel sentry");
|
|
self notify("sentry_placement_canceled");
|
|
}
|
|
|
|
//Function Number: 47
|
|
func_3CB3(param_00,param_01)
|
|
{
|
|
level endon("game_ended");
|
|
self endon("sentry_placement_canceled");
|
|
if(!isdefined(param_01))
|
|
{
|
|
param_01 = 0;
|
|
}
|
|
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
self endon("disconnect");
|
|
param_00 thread func_3CD0();
|
|
thread func_3CB2();
|
|
}
|
|
|
|
if(!param_01)
|
|
{
|
|
param_00 makeunusable();
|
|
while(self usebuttonpressed())
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
func_3CBE(0);
|
|
func_3CBE(1);
|
|
func_3CB6(param_00);
|
|
if(self.var_3C8C)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
self notify("restock_reset");
|
|
}
|
|
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
param_00.lifeid = self.lifeid;
|
|
func_3CC4(param_00);
|
|
}
|
|
|
|
thread common_scripts\utility::play_sound_in_space("sentry_gun_plant",param_00.origin);
|
|
param_00 setmodel(level.var_3C68[param_00.sentrytype].model);
|
|
param_00 func_3C80(self.team,param_00.sentrytype,self);
|
|
self notify("sentry_placement_finished",param_00);
|
|
if(!param_01)
|
|
{
|
|
waittillframeend;
|
|
}
|
|
|
|
if(isdefined(level.var_3CB4) && level.var_3CB4)
|
|
{
|
|
param_00 thread func_3CCC();
|
|
}
|
|
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
param_00 thread func_3CCB();
|
|
}
|
|
}
|
|
|
|
//Function Number: 48
|
|
func_3CB5(param_00)
|
|
{
|
|
level endon("game_ended");
|
|
param_00 notify("sentry_placement_started");
|
|
self endon("sentry_placement_canceled");
|
|
self endon("sentry_placement_finished");
|
|
param_00 endon("death");
|
|
param_00 endon("deleted");
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
self endon("disconnect");
|
|
self endon("death");
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
func_3CB6(param_00);
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 49
|
|
func_3CB6(param_00)
|
|
{
|
|
var_01 = self canplayerplacesentry();
|
|
param_00.origin = var_01["origin"];
|
|
param_00.angles = var_01["angles"];
|
|
self.var_3C8C = self isonground() && var_01["result"];
|
|
func_3CB7(self.var_3C8C);
|
|
if(self.var_3C8C)
|
|
{
|
|
param_00 setmodel(level.var_3C68[param_00.sentrytype].var_3C79);
|
|
return;
|
|
}
|
|
|
|
param_00 setmodel(level.var_3C68[param_00.sentrytype].var_3C7A);
|
|
}
|
|
|
|
//Function Number: 50
|
|
func_3CB7(param_00)
|
|
{
|
|
if(isdefined(self.var_3CB8) && self.var_3CB8 == param_00)
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.var_3CB8 = param_00;
|
|
if(getdvarint("survival_chaos") == 1)
|
|
{
|
|
if(self.var_3CB8)
|
|
{
|
|
self notify("sentry_notification",&"SENTRY_PLACE");
|
|
return;
|
|
}
|
|
|
|
self notify("sentry_notification",&"SENTRY_CANNOT_PLACE");
|
|
return;
|
|
}
|
|
|
|
if(self.var_3CB8)
|
|
{
|
|
self forceusehinton(&"SENTRY_PLACE");
|
|
return;
|
|
}
|
|
|
|
self forceusehinton(&"SENTRY_CANNOT_PLACE");
|
|
}
|
|
|
|
//Function Number: 51
|
|
func_3CB9()
|
|
{
|
|
if(!isdefined(self.var_3CB8))
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(getdvarint("survival_chaos") == 1)
|
|
{
|
|
self notify("sentry_notification");
|
|
}
|
|
else
|
|
{
|
|
self forceusehintoff();
|
|
}
|
|
|
|
self.var_3CB8 = undefined;
|
|
}
|
|
|
|
//Function Number: 52
|
|
func_3CBA(param_00)
|
|
{
|
|
self.var_3CA7 = spawn("script_model",self.origin);
|
|
self.var_3CA7.angles = self.angles;
|
|
self.var_3CA7 setmodel(level.var_3C68[param_00].var_3C78);
|
|
for(;;)
|
|
{
|
|
self waittill("trigger",var_01);
|
|
if(!isdefined(var_01))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_01.placingsentry))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
if(var_01 != self.owner)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
break;
|
|
}
|
|
|
|
thread common_scripts\utility::play_sound_in_space("sentry_pickup");
|
|
self.var_3CA7 delete();
|
|
self delete();
|
|
var_01 thread func_3CAE(param_00);
|
|
}
|
|
|
|
//Function Number: 53
|
|
func_3CBB()
|
|
{
|
|
self.healthbuffer = 20000;
|
|
self.health = self.health + self.healthbuffer;
|
|
self.currenthealth = self.health;
|
|
var_00 = undefined;
|
|
var_01 = undefined;
|
|
var_02 = 0;
|
|
var_03 = 0;
|
|
var_04 = gettime();
|
|
while(self.health > 0)
|
|
{
|
|
self waittill("damage",var_05,var_00,var_06,var_07,var_01,var_08,var_09);
|
|
if(isdefined(var_00) && !isplayer(var_00))
|
|
{
|
|
var_02 = var_02 + var_05;
|
|
var_03 = var_03 + gettime() - var_04;
|
|
var_04 = gettime();
|
|
if(var_03 < 3000 && var_02 > 300)
|
|
{
|
|
var_0A = 0;
|
|
foreach(var_0C in level.players)
|
|
{
|
|
if(distancesquared(var_0C.origin,self.origin) <= squared(500))
|
|
{
|
|
var_0A = 1;
|
|
}
|
|
}
|
|
|
|
if(!var_0A)
|
|
{
|
|
level notify("a_sentry_is_underattack");
|
|
}
|
|
|
|
var_02 = 0;
|
|
var_03 = 0;
|
|
}
|
|
|
|
if(var_03 >= 3000)
|
|
{
|
|
var_02 = 0;
|
|
var_03 = 0;
|
|
}
|
|
}
|
|
|
|
if(!common_scripts\utility::issp() && isdefined(var_00) && isplayer(var_00) && var_00 func_3CD2(self))
|
|
{
|
|
self.health = self.currenthealth;
|
|
return;
|
|
}
|
|
|
|
if(isdefined(level.stat_track_damage_func) && isdefined(var_00))
|
|
{
|
|
var_00 [[ level.stat_track_damage_func ]]();
|
|
}
|
|
|
|
if(isdefined(var_00) && isplayer(var_00))
|
|
{
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
var_00 [[ level.func["damagefeedback"] ]]("false");
|
|
}
|
|
|
|
thread func_3C9E(0,2);
|
|
}
|
|
|
|
if(func_3CBC(var_01,var_00))
|
|
{
|
|
self.health = self.currenthealth;
|
|
self.bullet_armor = self.bullet_armor - var_05;
|
|
continue;
|
|
}
|
|
|
|
self.currenthealth = self.health;
|
|
if(self.health < self.healthbuffer)
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!common_scripts\utility::issp() && var_00 func_3CD1(self))
|
|
{
|
|
var_00 thread [[ level.onxpevent ]]("kill");
|
|
}
|
|
|
|
self notify("death",var_00,var_01);
|
|
}
|
|
|
|
//Function Number: 54
|
|
func_3CBC(param_00,param_01)
|
|
{
|
|
if(isdefined(param_01) && isai(param_01) && isdefined(param_01.juggernaut) && param_01.juggernaut)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.bullet_armor <= 0)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isdefined(param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!issubstr(param_00,"BULLET"))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 55
|
|
func_3CBD()
|
|
{
|
|
var_00 = "easy";
|
|
self setconvergencetime(level.var_3C69[var_00]["convergencePitchTime"],"pitch");
|
|
self setconvergencetime(level.var_3C69[var_00]["convergenceYawTime"],"yaw");
|
|
self setsuppressiontime(level.var_3C69[var_00]["suppressionTime"]);
|
|
self setaispread(level.var_3C69[var_00]["aiSpread"]);
|
|
self setplayerspread(level.var_3C69[var_00]["playerSpread"]);
|
|
self.maxrange = 1100;
|
|
self.bullet_armor = 0;
|
|
}
|
|
|
|
//Function Number: 56
|
|
func_3CBE(param_00)
|
|
{
|
|
if(!common_scripts\utility::issp())
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
}
|
|
|
|
if(param_00 == 1)
|
|
{
|
|
while(!self attackbuttonpressed() && !self usebuttonpressed())
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if(param_00 == 0)
|
|
{
|
|
while(self attackbuttonpressed() || self usebuttonpressed())
|
|
{
|
|
wait 0.05;
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 57
|
|
func_3CBF()
|
|
{
|
|
self maketurretsolid();
|
|
}
|
|
|
|
//Function Number: 58
|
|
func_3CC0()
|
|
{
|
|
self.var_3C95 = self setcontents(0);
|
|
}
|
|
|
|
//Function Number: 59
|
|
func_3CC1()
|
|
{
|
|
if(!issentient(self) && isdefined(self.owner) && isdefined(self.owner.team))
|
|
{
|
|
self [[ level.makeentitysentient_func ]](self.owner.team);
|
|
}
|
|
|
|
self setmode("sentry");
|
|
self.var_3CC2 = 1;
|
|
}
|
|
|
|
//Function Number: 60
|
|
func_3CC3()
|
|
{
|
|
if(issentient(self))
|
|
{
|
|
self [[ level.freeentitysentient_func ]]();
|
|
}
|
|
|
|
self setmode("sentry_offline");
|
|
self.var_3CC2 = 0;
|
|
}
|
|
|
|
//Function Number: 61
|
|
func_3CC4(param_00)
|
|
{
|
|
if(isdefined(self.pers["team"]))
|
|
{
|
|
param_00.pers["team"] = self.pers["team"];
|
|
}
|
|
|
|
param_00 func_3CC5();
|
|
}
|
|
|
|
//Function Number: 62
|
|
func_3CC5()
|
|
{
|
|
var_00 = (0,0,65);
|
|
if(self.sentrytype == "sentry_gun")
|
|
{
|
|
var_00 = (0,0,75);
|
|
}
|
|
|
|
self [[ level.func["setTeamHeadIcon"] ]](self.pers["team"],var_00);
|
|
}
|
|
|
|
//Function Number: 63
|
|
func_3CC6()
|
|
{
|
|
self [[ level.func["setTeamHeadIcon"] ]]("none",(0,0,0));
|
|
}
|
|
|
|
//Function Number: 64
|
|
func_3CC7()
|
|
{
|
|
if(!isdefined(self.carrier))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self.carrier notify("sentry_placement_canceled");
|
|
self.carrier common_scripts\utility::_enableweapon();
|
|
self.carrier.placingsentry = undefined;
|
|
self setsentrycarrier(undefined);
|
|
self.carrier = undefined;
|
|
self setcandamage(1);
|
|
self.ignoreme = 0;
|
|
}
|
|
|
|
//Function Number: 65
|
|
func_3CC8(param_00)
|
|
{
|
|
if(isdefined(self.owner) && self.owner == param_00)
|
|
{
|
|
return;
|
|
}
|
|
|
|
param_00.var_3CC9 = self;
|
|
self.owner = param_00;
|
|
self setsentryowner(param_00);
|
|
self setturretminimapvisible(1);
|
|
}
|
|
|
|
//Function Number: 66
|
|
func_3CCA(param_00)
|
|
{
|
|
level endon("game_ended");
|
|
self endon("death");
|
|
param_00 common_scripts\utility::waittill_any("disconnect","joined_team","joined_spectators");
|
|
self notify("death");
|
|
}
|
|
|
|
//Function Number: 67
|
|
func_3CCB()
|
|
{
|
|
level endon("game_ended");
|
|
self endon("death");
|
|
self endon("deleted");
|
|
self notify("battery_count_started");
|
|
self endon("battery_count_started");
|
|
while(self.var_3C87 >= 0)
|
|
{
|
|
if(self.var_3CC2)
|
|
{
|
|
self.var_3C87 = self.var_3C87 - 1;
|
|
}
|
|
|
|
wait 1;
|
|
}
|
|
|
|
self notify("death");
|
|
}
|
|
|
|
//Function Number: 68
|
|
func_3CCC()
|
|
{
|
|
level endon("game_ended");
|
|
self endon("death");
|
|
self endon("deleted");
|
|
self notify("ammo_count_started");
|
|
self endon("ammo_count_started");
|
|
thread func_3CCD();
|
|
while(self.var_3C88 >= 0)
|
|
{
|
|
self waittill("bullet_fired");
|
|
self.var_3C88 = self.var_3C88 - 1;
|
|
}
|
|
|
|
thread func_3CA1();
|
|
thread func_3CD7();
|
|
wait 1;
|
|
func_3CC3();
|
|
wait 5;
|
|
self notify("death");
|
|
}
|
|
|
|
//Function Number: 69
|
|
func_3CCD()
|
|
{
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
var_00 = level.var_3C68[self.sentrytype].ammo;
|
|
var_01 = self.var_3C88;
|
|
var_02 = var_01 / var_00;
|
|
var_03 = "Ammo: " + var_01 + "/" + var_00;
|
|
var_04 = level.var_3C68[self.sentrytype].health;
|
|
var_05 = self.health - self.healthbuffer;
|
|
var_06 = var_05 / var_04;
|
|
var_07 = "Health: " + var_05 + "/" + var_04;
|
|
wait 0.05;
|
|
}
|
|
}
|
|
|
|
//Function Number: 70
|
|
func_3CCE()
|
|
{
|
|
if(isdefined(self.var_3CCF) && self.var_3CCF)
|
|
{
|
|
return;
|
|
}
|
|
|
|
func_3CA6();
|
|
}
|
|
|
|
//Function Number: 71
|
|
func_3CD0()
|
|
{
|
|
self endon("death");
|
|
self endon("deleted");
|
|
self.owner common_scripts\utility::waittill_any("death","disconnect");
|
|
if(isdefined(self.owner.placingsentry) && self.owner.placingsentry == self)
|
|
{
|
|
self.owner.placingsentry = undefined;
|
|
self setsentrycarrier(undefined);
|
|
self.carrier = undefined;
|
|
self setcandamage(1);
|
|
self.ignoreme = 0;
|
|
self notify("death");
|
|
}
|
|
}
|
|
|
|
//Function Number: 72
|
|
func_3CD1(param_00)
|
|
{
|
|
if(!isdefined(self))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isplayer(self))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isdefined(level.onxpevent))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isdefined(self.pers["team"]))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isdefined(param_00.team))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!level.teambased && self == param_00.owner)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(level.teambased && self.pers["team"] == param_00.team)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 73
|
|
func_3CD2(param_00)
|
|
{
|
|
if(!isdefined(self))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!isplayer(self))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(!level.teambased)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self == param_00.owner)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(self.team != param_00.team)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 74
|
|
func_3CD3()
|
|
{
|
|
self endon("deleted");
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
self waittill("emp_damage",var_00,var_01);
|
|
thread func_3CA1();
|
|
thread func_3CD7();
|
|
func_3CC3();
|
|
playfxontag(common_scripts\utility::getfx("sentry_turret_explode"),self,"tag_aim");
|
|
wait var_01;
|
|
func_3CC1();
|
|
}
|
|
}
|
|
|
|
//Function Number: 75
|
|
func_3CD4()
|
|
{
|
|
self endon("deleted");
|
|
self endon("death");
|
|
for(;;)
|
|
{
|
|
level waittill("emp_update");
|
|
if(level.teamemped[self.team])
|
|
{
|
|
thread func_3CA1();
|
|
thread func_3CD7();
|
|
func_3CC3();
|
|
playfxontag(common_scripts\utility::getfx("sentry_turret_explode"),self,"tag_aim");
|
|
continue;
|
|
}
|
|
|
|
func_3CC1();
|
|
}
|
|
}
|
|
|
|
//Function Number: 76
|
|
addtoturretlist()
|
|
{
|
|
level.turrets[self getentitynumber()] = self;
|
|
}
|
|
|
|
//Function Number: 77
|
|
removefromturretlist()
|
|
{
|
|
level.turrets[self getentitynumber()] = undefined;
|
|
}
|
|
|
|
//Function Number: 78
|
|
func_3CD5(param_00,param_01,param_02,param_03)
|
|
{
|
|
param_00 endon(param_01);
|
|
param_02 endon(param_03);
|
|
level waittill("hell_freezes_over_AND_THEN_thaws_out");
|
|
}
|
|
|
|
//Function Number: 79
|
|
func_3CD6()
|
|
{
|
|
if(!level.var_3C68[self.sentrytype].var_3C70)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level.laseron_func))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self [[ level.laseron_func ]]();
|
|
}
|
|
|
|
//Function Number: 80
|
|
func_3CD7()
|
|
{
|
|
if(!level.var_3C68[self.sentrytype].var_3C70)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level.laseroff_func))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self [[ level.laseroff_func ]]();
|
|
}
|
|
|
|
//Function Number: 81
|
|
is_specialop()
|
|
{
|
|
return getdvarint("specialops") >= 1;
|
|
}
|
|
|
|
//Function Number: 82
|
|
is_survival()
|
|
{
|
|
return is_specialop() && getdvarint("so_survival") > 0;
|
|
} |