mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
347 lines
7.2 KiB
Plaintext
347 lines
7.2 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\_mgturret.gsc
|
|
* Game: Call of Duty: Black Ops 2
|
|
* Platform: PC
|
|
* Function Count: 11
|
|
* Decompile Time: 5 ms
|
|
* Timestamp: 10/28/2023 12:10:59 AM
|
|
*******************************************************************/
|
|
|
|
#include common_scripts/utility;
|
|
#include maps/mp/_utility;
|
|
|
|
//Function Number: 1
|
|
main()
|
|
{
|
|
if(GetDvar(#"7C9A91DF") == "")
|
|
{
|
|
setdvar("mgTurret","off");
|
|
}
|
|
|
|
level.magic_distance = 24;
|
|
turretinfos = getentarray("turretInfo","targetname");
|
|
for(index = 0;index < turretinfos.size;index++)
|
|
{
|
|
turretinfos[index] delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 2
|
|
set_difficulty(difficulty)
|
|
{
|
|
init_turret_difficulty_settings();
|
|
turrets = getentarray("misc_turret","classname");
|
|
for(index = 0;index < turrets.size;index++)
|
|
{
|
|
if(IsDefined(turrets[index].script_skilloverride))
|
|
{
|
|
switch(turrets[index].script_skilloverride)
|
|
{
|
|
case "easy":
|
|
difficulty = "easy";
|
|
break;
|
|
|
|
case "medium":
|
|
difficulty = "medium";
|
|
break;
|
|
|
|
case "hard":
|
|
difficulty = "hard";
|
|
break;
|
|
|
|
case "fu":
|
|
difficulty = "fu";
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
turret_set_difficulty(turrets[index],difficulty);
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
init_turret_difficulty_settings()
|
|
{
|
|
level.mgturretsettings["easy"]["convergenceTime"] = 2.5;
|
|
level.mgturretsettings["easy"]["suppressionTime"] = 3;
|
|
level.mgturretsettings["easy"]["accuracy"] = 0.38;
|
|
level.mgturretsettings["easy"]["aiSpread"] = 2;
|
|
level.mgturretsettings["easy"]["playerSpread"] = 0.5;
|
|
level.mgturretsettings["medium"]["convergenceTime"] = 1.5;
|
|
level.mgturretsettings["medium"]["suppressionTime"] = 3;
|
|
level.mgturretsettings["medium"]["accuracy"] = 0.38;
|
|
level.mgturretsettings["medium"]["aiSpread"] = 2;
|
|
level.mgturretsettings["medium"]["playerSpread"] = 0.5;
|
|
level.mgturretsettings["hard"]["convergenceTime"] = 0.8;
|
|
level.mgturretsettings["hard"]["suppressionTime"] = 3;
|
|
level.mgturretsettings["hard"]["accuracy"] = 0.38;
|
|
level.mgturretsettings["hard"]["aiSpread"] = 2;
|
|
level.mgturretsettings["hard"]["playerSpread"] = 0.5;
|
|
level.mgturretsettings["fu"]["convergenceTime"] = 0.4;
|
|
level.mgturretsettings["fu"]["suppressionTime"] = 3;
|
|
level.mgturretsettings["fu"]["accuracy"] = 0.38;
|
|
level.mgturretsettings["fu"]["aiSpread"] = 2;
|
|
level.mgturretsettings["fu"]["playerSpread"] = 0.5;
|
|
}
|
|
|
|
//Function Number: 4
|
|
turret_set_difficulty(turret,difficulty)
|
|
{
|
|
turret.convergencetime = level.mgturretsettings[difficulty]["convergenceTime"];
|
|
turret.suppressiontime = level.mgturretsettings[difficulty]["suppressionTime"];
|
|
turret.accuracy = level.mgturretsettings[difficulty]["accuracy"];
|
|
turret.aispread = level.mgturretsettings[difficulty]["aiSpread"];
|
|
turret.playerspread = level.mgturretsettings[difficulty]["playerSpread"];
|
|
}
|
|
|
|
//Function Number: 5
|
|
turret_suppression_fire(targets)
|
|
{
|
|
self endon("death");
|
|
self endon("stop_suppression_fire");
|
|
if(!(IsDefined(self.suppresionfire)))
|
|
{
|
|
self.suppresionfire = 1;
|
|
}
|
|
|
|
for(;;)
|
|
{
|
|
while(self.suppresionfire)
|
|
{
|
|
self settargetentity(targets[randomint(targets.size)]);
|
|
wait(2 + randomfloat(2));
|
|
}
|
|
|
|
self cleartargetentity();
|
|
while(!(self.suppresionfire))
|
|
{
|
|
wait(1);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
burst_fire_settings(setting)
|
|
{
|
|
if(setting == "delay")
|
|
{
|
|
return 0.2;
|
|
}
|
|
else if(setting == "delay_range")
|
|
{
|
|
return 0.5;
|
|
}
|
|
else if(setting == "burst")
|
|
{
|
|
return 0.5;
|
|
}
|
|
else if(setting == "burst_range")
|
|
{
|
|
return 4;
|
|
}
|
|
}
|
|
|
|
//Function Number: 7
|
|
burst_fire(turret,manual_target)
|
|
{
|
|
turret endon("death");
|
|
turret endon("stopfiring");
|
|
self endon("stop_using_built_in_burst_fire");
|
|
if(IsDefined(turret.script_delay_min))
|
|
{
|
|
turret_delay = turret.script_delay_min;
|
|
}
|
|
else
|
|
{
|
|
turret_delay = burst_fire_settings("delay");
|
|
}
|
|
|
|
if(IsDefined(turret.script_delay_max))
|
|
{
|
|
turret_delay_range = turret.script_delay_max - turret_delay;
|
|
}
|
|
else
|
|
{
|
|
turret_delay_range = burst_fire_settings("delay_range");
|
|
}
|
|
|
|
if(IsDefined(turret.script_burst_min))
|
|
{
|
|
turret_burst = turret.script_burst_min;
|
|
}
|
|
else
|
|
{
|
|
turret_burst = burst_fire_settings("burst");
|
|
}
|
|
|
|
if(IsDefined(turret.script_burst_max))
|
|
{
|
|
turret_burst_range = turret.script_burst_max - turret_burst;
|
|
}
|
|
else
|
|
{
|
|
turret_burst_range = burst_fire_settings("burst_range");
|
|
}
|
|
|
|
while(1)
|
|
{
|
|
turret startfiring();
|
|
if(IsDefined(manual_target))
|
|
{
|
|
turret thread random_spread(manual_target);
|
|
}
|
|
|
|
turret do_shoot();
|
|
wait(turret_burst + randomfloat(turret_burst_range));
|
|
turret stopshootturret();
|
|
turret stopfiring();
|
|
wait(turret_delay + randomfloat(turret_delay_range));
|
|
}
|
|
}
|
|
|
|
//Function Number: 8
|
|
burst_fire_unmanned()
|
|
{
|
|
self notify("stop_burst_fire_unmanned");
|
|
self endon("stop_burst_fire_unmanned");
|
|
self endon("death");
|
|
self endon("remote_start");
|
|
level endon("game_ended");
|
|
if(IsDefined(self.controlled) && self.controlled)
|
|
{
|
|
return;
|
|
}
|
|
|
|
if(IsDefined(self.script_delay_min))
|
|
{
|
|
turret_delay = self.script_delay_min;
|
|
}
|
|
else
|
|
{
|
|
turret_delay = burst_fire_settings("delay");
|
|
}
|
|
|
|
if(IsDefined(self.script_delay_max))
|
|
{
|
|
turret_delay_range = self.script_delay_max - turret_delay;
|
|
}
|
|
else
|
|
{
|
|
turret_delay_range = burst_fire_settings("delay_range");
|
|
}
|
|
|
|
if(IsDefined(self.script_burst_min))
|
|
{
|
|
turret_burst = self.script_burst_min;
|
|
}
|
|
else
|
|
{
|
|
turret_burst = burst_fire_settings("burst");
|
|
}
|
|
|
|
if(IsDefined(self.script_burst_max))
|
|
{
|
|
turret_burst_range = self.script_burst_max - turret_burst;
|
|
}
|
|
else
|
|
{
|
|
turret_burst_range = burst_fire_settings("burst_range");
|
|
}
|
|
|
|
pauseuntiltime = GetTime();
|
|
turretstate = "start";
|
|
self.script_shooting = 0;
|
|
for(;;)
|
|
{
|
|
if(IsDefined(self.manual_targets))
|
|
{
|
|
self cleartargetentity();
|
|
self settargetentity(self.manual_targets[randomint(self.manual_targets.size)]);
|
|
}
|
|
|
|
duration = pauseuntiltime - GetTime() * 0.001;
|
|
if(self isfiringturret() && duration <= 0)
|
|
{
|
|
if(turretstate != "fire")
|
|
{
|
|
turretstate = "fire";
|
|
self playsound("mpl_turret_alert");
|
|
self thread do_shoot();
|
|
self.script_shooting = 1;
|
|
}
|
|
|
|
duration = turret_burst + randomfloat(turret_burst_range);
|
|
self thread turret_timer(duration);
|
|
self waittill("turretstatechange");
|
|
self.script_shooting = 0;
|
|
duration = turret_delay + randomfloat(turret_delay_range);
|
|
pauseuntiltime = GetTime() + int(duration * 1000);
|
|
continue;
|
|
}
|
|
|
|
if(turretstate != "aim")
|
|
{
|
|
turretstate = "aim";
|
|
}
|
|
|
|
self thread turret_timer(duration);
|
|
self waittill("turretstatechange");
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
do_shoot()
|
|
{
|
|
self endon("death");
|
|
self endon("turretstatechange");
|
|
for(;;)
|
|
{
|
|
self shootturret();
|
|
wait(0.112);
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
turret_timer(duration)
|
|
{
|
|
if(duration <= 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
self endon("turretstatechange");
|
|
wait(duration);
|
|
if(IsDefined(self))
|
|
{
|
|
self notify("turretstatechange");
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
random_spread(ent)
|
|
{
|
|
self endon("death");
|
|
self notify("stop random_spread");
|
|
self endon("stop random_spread");
|
|
self endon("stopfiring");
|
|
self settargetentity(ent);
|
|
self.manual_target = ent;
|
|
while(1)
|
|
{
|
|
if(isplayer(ent))
|
|
{
|
|
ent.origin = self.manual_target getorigin();
|
|
}
|
|
else
|
|
{
|
|
ent.origin = self.manual_target.origin;
|
|
}
|
|
|
|
ent.origin = ent.origin + (20 - randomfloat(40),20 - randomfloat(40),20 - randomfloat(60));
|
|
wait(0.2);
|
|
}
|
|
} |