mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
765 lines
17 KiB
Plaintext
765 lines
17 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps/mp/_riotshield.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 36
|
|
* Decompile Time: 548 ms
|
|
* Timestamp: 10/27/2023 1:49:16 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
init()
|
|
{
|
|
level.riot_shield_names = [];
|
|
level.riot_shield_names[level.riot_shield_names.size] = "riotshield_mp";
|
|
level.riot_shield_names[level.riot_shield_names.size] = "iw5_riotshieldt6_mp";
|
|
level.riot_shield_names[level.riot_shield_names.size] = "iw5_riotshieldt6loot0_mp";
|
|
level.riot_shield_names[level.riot_shield_names.size] = "iw5_riotshieldt6loot1_mp";
|
|
level.riot_shield_names[level.riot_shield_names.size] = "iw5_riotshieldt6loot2_mp";
|
|
level.riot_shield_names[level.riot_shield_names.size] = "iw5_riotshieldt6loot3_mp";
|
|
level.riot_shield_names[level.riot_shield_names.size] = "iw5_riotshieldjugg_mp";
|
|
precacheanims();
|
|
level.riot_shield_collision = getent("riot_shield_collision","targetname");
|
|
level._effect["riot_shield_shock_fx"] = loadfx("vfx/explosion/riotshield_stun");
|
|
level._effect["riot_shield_deploy_smoke"] = loadfx("vfx/smoke/riotshield_deploy_smoke");
|
|
level._effect["riot_shield_deploy_lights"] = loadfx("vfx/lights/riotshield_deploy_lights");
|
|
}
|
|
|
|
//Function Number: 2
|
|
precacheanims()
|
|
{
|
|
precachempanim("npc_deployable_riotshield_stand_deploy");
|
|
precachempanim("npc_deployable_riotshield_stand_destroyed");
|
|
precachempanim("npc_deployable_riotshield_stand_shot");
|
|
precachempanim("npc_deployable_riotshield_stand_shot_back");
|
|
precachempanim("npc_deployable_riotshield_stand_melee_front");
|
|
precachempanim("npc_deployable_riotshield_stand_melee_back");
|
|
}
|
|
|
|
//Function Number: 3
|
|
hasriotshield()
|
|
{
|
|
return isdefined(self.frontshieldmodel) || isdefined(self.backshieldmodel);
|
|
}
|
|
|
|
//Function Number: 4
|
|
hasriotshieldequipped()
|
|
{
|
|
return isdefined(self.frontshieldmodel);
|
|
}
|
|
|
|
//Function Number: 5
|
|
weaponisriotshield(param_00)
|
|
{
|
|
if(!isdefined(level.riot_shield_names))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_01 = getweaponbasename(param_00);
|
|
if(!isdefined(var_01))
|
|
{
|
|
var_01 = param_00;
|
|
}
|
|
|
|
foreach(var_03 in level.riot_shield_names)
|
|
{
|
|
if(var_03 == var_01)
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 6
|
|
weaponisshockplantriotshield(param_00)
|
|
{
|
|
if(!weaponisriotshield(param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return issubstr(param_00,"shockplant");
|
|
}
|
|
|
|
//Function Number: 7
|
|
getotherriotshieldname(param_00)
|
|
{
|
|
var_01 = 0;
|
|
var_02 = self getweaponslistprimaries();
|
|
foreach(var_04 in var_02)
|
|
{
|
|
if(weaponisriotshield(var_04))
|
|
{
|
|
if(var_04 == param_00 && !var_01)
|
|
{
|
|
var_01 = 1;
|
|
continue;
|
|
}
|
|
|
|
return var_04;
|
|
}
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
|
|
//Function Number: 8
|
|
updatefrontandbackshields(param_00)
|
|
{
|
|
self.frontshieldmodel = undefined;
|
|
self.backshieldmodel = undefined;
|
|
if(!isdefined(param_00))
|
|
{
|
|
param_00 = self getcurrentprimaryweapon();
|
|
}
|
|
|
|
if(weaponisriotshield(param_00))
|
|
{
|
|
self.frontshieldmodel = getweaponmodel(param_00);
|
|
}
|
|
|
|
var_01 = getotherriotshieldname(param_00);
|
|
if(isdefined(var_01))
|
|
{
|
|
self.backshieldmodel = getweaponmodel(var_01);
|
|
}
|
|
|
|
self refreshshieldmodels(param_00);
|
|
}
|
|
|
|
//Function Number: 9
|
|
riotshield_clear()
|
|
{
|
|
self.frontshieldmodel = undefined;
|
|
self.backshieldmodel = undefined;
|
|
}
|
|
|
|
//Function Number: 10
|
|
entisstucktoshield()
|
|
{
|
|
if(!self islinked())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = self getlinkedtagname();
|
|
if(!isdefined(var_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
switch(var_00)
|
|
{
|
|
case "tag_shield_back":
|
|
case "tag_weapon_left":
|
|
case "tag_inhand":
|
|
break;
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
watchriotshielduse()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
thread trackriotshield();
|
|
for(;;)
|
|
{
|
|
self waittill("raise_riotshield");
|
|
thread startriotshielddeploy();
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
riotshield_watch_for_change_weapon()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self endon("riotshield_change_weapon");
|
|
var_00 = undefined;
|
|
self waittill("weapon_change",var_00);
|
|
self notify("riotshield_change_weapon",var_00);
|
|
}
|
|
|
|
//Function Number: 13
|
|
riotshield_watch_for_start_change_weapon()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self endon("riotshield_change_weapon");
|
|
var_00 = undefined;
|
|
for(;;)
|
|
{
|
|
self waittill("weapon_switch_started",var_00);
|
|
if(self isonladder())
|
|
{
|
|
thread riotshield_watch_for_ladder_early_exit();
|
|
break;
|
|
}
|
|
|
|
if(isdefined(self.frontshieldmodel) && isdefined(self.backshieldmodel))
|
|
{
|
|
wait(0.5);
|
|
break;
|
|
}
|
|
}
|
|
|
|
self notify("riotshield_change_weapon",var_00);
|
|
}
|
|
|
|
//Function Number: 14
|
|
riotshield_watch_for_ladder_early_exit()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self endon("weapon_change");
|
|
while(self isonladder())
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
self notify("riotshield_change_weapon",self getcurrentprimaryweapon());
|
|
}
|
|
|
|
//Function Number: 15
|
|
riotshield_watch_for_exo_shield_pullback()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self endon("riotshield_change_weapon");
|
|
var_00 = undefined;
|
|
var_01 = maps\mp\_exo_shield::get_exo_shield_weapon();
|
|
self waittillmatch(var_01,"grenade_pullback");
|
|
while(!isdefined(self.exo_shield_on) || !self.exo_shield_on)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
self notify("riotshield_change_weapon",var_01);
|
|
}
|
|
|
|
//Function Number: 16
|
|
riotshield_watch_for_exo_shield_release()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self endon("riotshield_change_weapon");
|
|
if(!isdefined(self.exo_shield_on) || !self.exo_shield_on)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var_00 = undefined;
|
|
var_01 = maps\mp\_exo_shield::get_exo_shield_weapon();
|
|
self waittillmatch(var_01,"battery_discharge_end");
|
|
while(isdefined(self.exo_shield_on) && self.exo_shield_on)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
self notify("riotshield_change_weapon",self getcurrentweapon());
|
|
}
|
|
|
|
//Function Number: 17
|
|
watchriotshieldloadout()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self endon("track_riot_shield");
|
|
self waittill("applyLoadout");
|
|
updatefrontandbackshields(self getcurrentweapon());
|
|
}
|
|
|
|
//Function Number: 18
|
|
trackriotshield()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("faux_spawn");
|
|
self notify("track_riot_shield");
|
|
self endon("track_riot_shield");
|
|
updatefrontandbackshields(self.currentweaponatspawn);
|
|
thread watchriotshieldloadout();
|
|
self.lastnonshieldweapon = "none";
|
|
for(;;)
|
|
{
|
|
thread watchriotshieldpickup();
|
|
var_00 = self getcurrentweapon();
|
|
if(isdefined(self.exo_shield_on) && self.exo_shield_on)
|
|
{
|
|
var_00 = maps\mp\_exo_shield::get_exo_shield_weapon();
|
|
}
|
|
|
|
thread riotshield_watch_for_change_weapon();
|
|
thread riotshield_watch_for_start_change_weapon();
|
|
thread riotshield_watch_for_exo_shield_pullback();
|
|
thread riotshield_watch_for_exo_shield_release();
|
|
self waittill("riotshield_change_weapon",var_01);
|
|
if(weaponisriotshield(var_01))
|
|
{
|
|
if(hasriotshield())
|
|
{
|
|
if(isdefined(self.riotshieldtakeweapon))
|
|
{
|
|
self takeweapon(self.riotshieldtakeweapon);
|
|
self.riotshieldtakeweapon = undefined;
|
|
}
|
|
}
|
|
|
|
if(isvalidnonshieldweapon(var_00))
|
|
{
|
|
self.lastnonshieldweapon = var_00;
|
|
}
|
|
}
|
|
|
|
updateriotshieldattachfornewweapon(var_01);
|
|
}
|
|
}
|
|
|
|
//Function Number: 19
|
|
updateriotshieldattachfornewweapon(param_00)
|
|
{
|
|
if(self ismantling() && param_00 == "none")
|
|
{
|
|
return;
|
|
}
|
|
|
|
updatefrontandbackshields(param_00);
|
|
}
|
|
|
|
//Function Number: 20
|
|
watchriotshieldpickup()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self endon("track_riot_shield");
|
|
self notify("watch_riotshield_pickup");
|
|
self endon("watch_riotshield_pickup");
|
|
self waittill("pickup_riotshield");
|
|
self endon("weapon_change");
|
|
wait(0.5);
|
|
updateriotshieldattachfornewweapon(self getcurrentweapon());
|
|
}
|
|
|
|
//Function Number: 21
|
|
isvalidnonshieldweapon(param_00)
|
|
{
|
|
if(maps\mp\_utility::iskillstreakweapon(param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(param_00 == "none")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(maps\mp\gametypes\_class::isvalidequipment(param_00,1) || maps\mp\gametypes\_class::isvalidequipment(param_00,0))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(weaponisriotshield(param_00))
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(weaponclass(param_00) == "ball")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 22
|
|
startriotshielddeploy()
|
|
{
|
|
thread watchriotshielddeploy();
|
|
}
|
|
|
|
//Function Number: 23
|
|
handleriotshieldshockplant()
|
|
{
|
|
var_00 = self.riotshieldentity;
|
|
var_01 = 10;
|
|
var_02 = 50;
|
|
var_03 = 150;
|
|
var_04 = var_03 * var_03;
|
|
var_05 = self.riotshieldentity.origin + (0,0,-25);
|
|
self radiusdamage(var_05,var_03,var_02,var_01,self,"MOD_EXPLOSIVE");
|
|
playfx(level._effect["riot_shield_shock_fx"],var_05,anglestoforward(self.riotshieldentity.angles + (-90,0,0)));
|
|
foreach(var_07 in level.players)
|
|
{
|
|
if(maps\mp\_utility::isreallyalive(var_07) && !isalliedsentient(var_07,self))
|
|
{
|
|
if(distancesquared(var_05,var_07.origin) < var_04)
|
|
{
|
|
var_07 shellshock("concussion_grenade_mp",1);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 24
|
|
watchriotshielddeploy()
|
|
{
|
|
self endon("death");
|
|
self endon("disconnect");
|
|
self notify("start_riotshield_deploy");
|
|
self endon("start_riotshield_deploy");
|
|
self waittill("startdeploy_riotshield");
|
|
self playsound("wpn_riot_shield_plant_mech");
|
|
self waittill("deploy_riotshield",var_00);
|
|
if(isdefined(self.riotshieldentity))
|
|
{
|
|
self.riotshieldentity thread damagethendestroyriotshield();
|
|
wait 0.05;
|
|
}
|
|
|
|
var_01 = self getcurrentweapon();
|
|
self setweaponmodelvariant(var_01,0);
|
|
var_02 = weaponisshockplantriotshield(var_01);
|
|
self playsound("wpn_riot_shield_plant_punch");
|
|
if(var_02)
|
|
{
|
|
self playsound("wpn_riot_shield_blast_punch");
|
|
}
|
|
|
|
var_03 = 0;
|
|
if(var_00)
|
|
{
|
|
var_04 = self canplaceriotshield();
|
|
if(var_04["result"] && riotshielddistancetest(var_04["origin"]))
|
|
{
|
|
var_05 = 28;
|
|
var_06 = spawnriotshieldcover(var_04["origin"] + (0,0,var_05),var_04["angles"]);
|
|
var_07 = spawnriotshieldcollision(var_04["origin"] + (0,0,var_05),var_04["angles"],var_06);
|
|
var_08 = deployriotshield(self,var_06);
|
|
var_09 = self getweaponslistprimaries();
|
|
self.riotshieldretrievetrigger = var_08;
|
|
self.riotshieldentity = var_06;
|
|
self.riotshieldcollisionentity = var_07;
|
|
if(var_02)
|
|
{
|
|
thread handleriotshieldshockplant();
|
|
}
|
|
else
|
|
{
|
|
playfxontag(common_scripts\utility::getfx("riot_shield_deploy_smoke"),var_06,"tag_weapon");
|
|
}
|
|
|
|
var_06 scriptmodelplayanimdeltamotion("npc_deployable_riotshield_stand_deploy");
|
|
thread spawnshieldlights(var_06);
|
|
var_0A = 0;
|
|
if(self.lastnonshieldweapon != "none" && self hasweapon(self.lastnonshieldweapon))
|
|
{
|
|
self switchtoweaponimmediate(self.lastnonshieldweapon);
|
|
}
|
|
else if(var_09.size > 0)
|
|
{
|
|
self switchtoweaponimmediate(var_09[0]);
|
|
}
|
|
else
|
|
{
|
|
var_0A = 1;
|
|
}
|
|
|
|
if(!self hasweapon("iw5_combatknife_mp"))
|
|
{
|
|
self giveweapon("iw5_combatknife_mp");
|
|
self.riotshieldtakeweapon = "iw5_combatknife_mp";
|
|
}
|
|
|
|
if(var_0A)
|
|
{
|
|
self switchtoweaponimmediate("iw5_combatknife_mp");
|
|
}
|
|
|
|
var_0B = spawnstruct();
|
|
var_0B.deathoverridecallback = ::damagethendestroyriotshield;
|
|
var_06 thread maps\mp\_movers::handle_moving_platforms(var_0B);
|
|
thread watchdeployedriotshieldents();
|
|
thread deleteshieldontriggerdeath(self.riotshieldretrievetrigger);
|
|
thread deleteshieldontriggerpickup(self.riotshieldretrievetrigger,self.riotshieldentity);
|
|
thread deleteshieldonplayerdeathordisconnect(var_06);
|
|
if(isdefined(var_04["entity"]))
|
|
{
|
|
thread deleteshieldongrounddelete(var_04["entity"]);
|
|
}
|
|
|
|
self.riotshieldentity thread watchdeployedriotshielddamage();
|
|
level notify("riotshield_planted",self);
|
|
}
|
|
else
|
|
{
|
|
var_03 = 1;
|
|
var_0C = weaponclipsize(var_01);
|
|
self setweaponammoclip(var_01,var_0C);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
var_03 = 1;
|
|
}
|
|
|
|
if(var_03)
|
|
{
|
|
self setriotshieldfailhint();
|
|
}
|
|
}
|
|
|
|
//Function Number: 25
|
|
spawnshieldlights(param_00)
|
|
{
|
|
level endon("game_ended");
|
|
param_00 endon("death");
|
|
wait(0.6);
|
|
playfxontag(common_scripts\utility::getfx("riot_shield_deploy_lights"),param_00,"tag_weapon");
|
|
}
|
|
|
|
//Function Number: 26
|
|
riotshielddistancetest(param_00)
|
|
{
|
|
var_01 = getdvarfloat("riotshield_deploy_limit_radius");
|
|
var_01 = var_01 * var_01;
|
|
foreach(var_03 in level.players)
|
|
{
|
|
if(isdefined(var_03.riotshieldentity))
|
|
{
|
|
var_04 = distancesquared(var_03.riotshieldentity.origin,param_00);
|
|
if(var_01 > var_04)
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 27
|
|
spawnriotshieldcover(param_00,param_01)
|
|
{
|
|
var_02 = spawn("script_model",param_00);
|
|
var_02.targetname = "riotshield_mp";
|
|
var_02.angles = param_01;
|
|
var_03 = undefined;
|
|
var_04 = self getcurrentprimaryweapon();
|
|
if(weaponisriotshield(var_04))
|
|
{
|
|
var_03 = getweaponmodel(var_04);
|
|
}
|
|
|
|
if(!isdefined(var_03))
|
|
{
|
|
var_03 = "npc_deployable_riot_shield_base";
|
|
}
|
|
|
|
var_02 setmodel(var_03);
|
|
var_02.owner = self;
|
|
var_02.team = self.team;
|
|
return var_02;
|
|
}
|
|
|
|
//Function Number: 28
|
|
spawnriotshieldcollision(param_00,param_01,param_02)
|
|
{
|
|
var_03 = spawn("script_model",param_00,1);
|
|
var_03.targetname = "riotshield_coll_mp";
|
|
var_03.angles = param_01;
|
|
var_03 setmodel("tag_origin");
|
|
var_03.owner = self;
|
|
var_03.team = self.team;
|
|
var_03 clonebrushmodeltoscriptmodel(level.riot_shield_collision);
|
|
var_03 disconnectpaths();
|
|
var_03 sethighjumpresetallowed(0);
|
|
return var_03;
|
|
}
|
|
|
|
//Function Number: 29
|
|
watchdeployedriotshieldents()
|
|
{
|
|
self waittill("destroy_riotshield");
|
|
if(isdefined(self.riotshieldretrievetrigger))
|
|
{
|
|
self.riotshieldretrievetrigger delete();
|
|
}
|
|
|
|
if(isdefined(self.riotshieldcollisionentity))
|
|
{
|
|
self.riotshieldcollisionentity connectpaths();
|
|
self.riotshieldcollisionentity delete();
|
|
}
|
|
|
|
if(isdefined(self.riotshieldentity))
|
|
{
|
|
self.riotshieldentity delete();
|
|
}
|
|
}
|
|
|
|
//Function Number: 30
|
|
deleteshieldontriggerpickup(param_00,param_01)
|
|
{
|
|
level endon("game_ended");
|
|
param_00 endon("death");
|
|
param_00 waittill("trigger",var_02);
|
|
handlepickupdeployedriotshields(var_02,param_01);
|
|
self notify("destroy_riotshield");
|
|
}
|
|
|
|
//Function Number: 31
|
|
deleteshieldontriggerdeath(param_00)
|
|
{
|
|
level endon("game_ended");
|
|
param_00 waittill("death");
|
|
self notify("destroy_riotshield");
|
|
}
|
|
|
|
//Function Number: 32
|
|
deleteshieldonplayerdeathordisconnect(param_00)
|
|
{
|
|
param_00 endon("death");
|
|
param_00 endon("damageThenDestroyRiotshield");
|
|
common_scripts\utility::waittill_any("death","disconnect","remove_planted_weapons");
|
|
param_00 thread damagethendestroyriotshield();
|
|
}
|
|
|
|
//Function Number: 33
|
|
deleteshieldongrounddelete(param_00)
|
|
{
|
|
level endon("game_ended");
|
|
param_00 common_scripts\utility::waittill_any("death","hidingLightingState");
|
|
self notify("destroy_riotshield");
|
|
}
|
|
|
|
//Function Number: 34
|
|
watchdeployedriotshielddamage()
|
|
{
|
|
self endon("death");
|
|
var_00 = getdvarint("riotshield_deployed_health");
|
|
self.damagetaken = 0;
|
|
var_01 = 0;
|
|
for(;;)
|
|
{
|
|
self.maxhealth = 100000;
|
|
self.health = self.maxhealth;
|
|
self waittill("damage",var_02,var_03,var_04,var_05,var_06,var_07,var_08,var_09,var_0A,var_0B);
|
|
if(!isdefined(var_03))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isplayer(var_03))
|
|
{
|
|
if(level.teambased && var_03.team == self.owner.team && var_03 != self.owner)
|
|
{
|
|
continue;
|
|
}
|
|
}
|
|
|
|
var_0C = 0;
|
|
var_0D = 0;
|
|
if(maps\mp\_utility::ismeleemod(var_06))
|
|
{
|
|
var_0C = 1;
|
|
var_02 = var_02 * getdvarfloat("riotshield_melee_damage_scale");
|
|
}
|
|
else if(var_06 == "MOD_PISTOL_BULLET" || var_06 == "MOD_RIFLE_BULLET")
|
|
{
|
|
var_0D = 1;
|
|
var_02 = var_02 * getdvarfloat("riotshield_bullet_damage_scale");
|
|
}
|
|
else if(var_06 == "MOD_GRENADE" || var_06 == "MOD_GRENADE_SPLASH" || var_06 == "MOD_EXPLOSIVE" || var_06 == "MOD_EXPLOSIVE_SPLASH" || var_06 == "MOD_PROJECTILE" || var_06 == "MOD_PROJECTILE_SPLASH")
|
|
{
|
|
var_02 = var_02 * getdvarfloat("riotshield_explosive_damage_scale");
|
|
}
|
|
else if(var_06 == "MOD_IMPACT")
|
|
{
|
|
var_02 = var_02 * getdvarfloat("riotshield_projectile_damage_scale");
|
|
}
|
|
else if(var_06 == "MOD_CRUSH")
|
|
{
|
|
var_02 = var_00;
|
|
}
|
|
|
|
self.damagetaken = self.damagetaken + var_02;
|
|
if(self.damagetaken >= var_00)
|
|
{
|
|
thread damagethendestroyriotshield(var_03,var_0B);
|
|
break;
|
|
}
|
|
else if((var_0C || var_0D) && gettime() >= var_01)
|
|
{
|
|
var_01 = gettime() + 500;
|
|
var_0E = 0;
|
|
var_0F = anglestoforward(self.angles);
|
|
if(vectordot(var_04,var_0F) > 0)
|
|
{
|
|
var_0E = 1;
|
|
}
|
|
|
|
if(var_0C)
|
|
{
|
|
if(var_0E)
|
|
{
|
|
self scriptmodelplayanimdeltamotion("npc_deployable_riotshield_stand_melee_back");
|
|
}
|
|
else
|
|
{
|
|
self scriptmodelplayanimdeltamotion("npc_deployable_riotshield_stand_melee_front");
|
|
}
|
|
}
|
|
else if(var_0E)
|
|
{
|
|
self scriptmodelplayanimdeltamotion("npc_deployable_riotshield_stand_shot_back");
|
|
}
|
|
else
|
|
{
|
|
self scriptmodelplayanimdeltamotion("npc_deployable_riotshield_stand_shot");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 35
|
|
damagethendestroyriotshield(param_00,param_01)
|
|
{
|
|
self notify("damageThenDestroyRiotshield");
|
|
self endon("death");
|
|
if(isdefined(self.owner.riotshieldretrievetrigger))
|
|
{
|
|
self.owner.riotshieldretrievetrigger delete();
|
|
}
|
|
|
|
if(isdefined(self.owner.riotshieldcollisionentity))
|
|
{
|
|
self.owner.riotshieldcollisionentity connectpaths();
|
|
self.owner.riotshieldcollisionentity delete();
|
|
}
|
|
|
|
self.owner.riotshieldentity = undefined;
|
|
self notsolid();
|
|
self scriptmodelplayanimdeltamotion("npc_deployable_riotshield_stand_destroyed");
|
|
wait(getdvarfloat("riotshield_destroyed_cleanup_time"));
|
|
self delete();
|
|
}
|
|
|
|
//Function Number: 36
|
|
watchriotshieldstuckentitydeath(param_00,param_01)
|
|
{
|
|
param_00 endon("death");
|
|
common_scripts\utility::waittill_any("damageThenDestroyRiotshield","death","disconnect","weapon_change","deploy_riotshield");
|
|
param_00 detonate(param_01);
|
|
} |