mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-20 15:07:51 -05:00
803 lines
21 KiB
Plaintext
803 lines
21 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: riotshield\riotshield.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 28
|
|
* Decompile Time: 333 ms
|
|
* Timestamp: 4/22/2024 1:58:54 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
init_riotshield_ai_anims()
|
|
{
|
|
level.notetracks["detach shield"] = ::notetrackdetachshield;
|
|
animscripts\init_move_transitions::init_move_transition_arrays();
|
|
var_00 = [];
|
|
var_00["cover_trans"]["riotshield"][1] = %riotshield_run_approach_1;
|
|
var_00["cover_trans"]["riotshield"][2] = %riotshield_run_approach_2;
|
|
var_00["cover_trans"]["riotshield"][3] = %riotshield_run_approach_3;
|
|
var_00["cover_trans"]["riotshield"][4] = %riotshield_run_approach_4;
|
|
var_00["cover_trans"]["riotshield"][6] = %riotshield_run_approach_6;
|
|
var_00["cover_trans"]["riotshield"][7] = undefined;
|
|
var_00["cover_trans"]["riotshield"][8] = %riotshield_walk2crouch_8;
|
|
var_00["cover_trans"]["riotshield"][9] = undefined;
|
|
var_00["cover_trans"]["riotshield_crouch"][1] = %riotshield_walk_approach_1;
|
|
var_00["cover_trans"]["riotshield_crouch"][2] = %riotshield_walk_approach_2;
|
|
var_00["cover_trans"]["riotshield_crouch"][3] = %riotshield_walk_approach_3;
|
|
var_00["cover_trans"]["riotshield_crouch"][4] = %riotshield_walk_approach_4;
|
|
var_00["cover_trans"]["riotshield_crouch"][6] = %riotshield_walk_approach_6;
|
|
var_00["cover_trans"]["riotshield_crouch"][7] = undefined;
|
|
var_00["cover_trans"]["riotshield_crouch"][8] = %riotshield_walk2crouch_8;
|
|
var_00["cover_trans"]["riotshield_crouch"][9] = undefined;
|
|
var_01 = [];
|
|
var_01[0] = "riotshield";
|
|
var_01[1] = "riotshield_crouch";
|
|
for(var_02 = 0;var_02 < var_01.size;var_02++)
|
|
{
|
|
var_03 = var_01[var_02];
|
|
for(var_04 = 1;var_04 <= 9;var_04++)
|
|
{
|
|
if(var_04 == 5)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(isdefined(var_00["cover_trans"][var_03][var_04]))
|
|
{
|
|
var_00["cover_trans_dist"][var_03][var_04] = getmovedelta(var_00["cover_trans"][var_03][var_04],0,1);
|
|
}
|
|
}
|
|
}
|
|
|
|
var_00["cover_trans_angles"]["riotshield_crouch"][1] = 45;
|
|
var_00["cover_trans_angles"]["riotshield_crouch"][2] = 0;
|
|
var_00["cover_trans_angles"]["riotshield_crouch"][3] = -45;
|
|
var_00["cover_trans_angles"]["riotshield_crouch"][4] = 90;
|
|
var_00["cover_trans_angles"]["riotshield_crouch"][6] = -90;
|
|
var_00["cover_trans_angles"]["riotshield_crouch"][8] = 180;
|
|
var_00["cover_trans_angles"]["riotshield"][1] = 45;
|
|
var_00["cover_trans_angles"]["riotshield"][2] = 0;
|
|
var_00["cover_trans_angles"]["riotshield"][3] = -45;
|
|
var_00["cover_trans_angles"]["riotshield"][4] = 90;
|
|
var_00["cover_trans_angles"]["riotshield"][6] = -90;
|
|
var_00["cover_trans_angles"]["riotshield"][8] = 180;
|
|
animscripts\animset::registerarchetype("riotshield",var_00,0);
|
|
level.arrivalendstance["riotshield"] = "crouch";
|
|
level.arrivalendstance["riotshield_crouch"] = "crouch";
|
|
animscripts\combat_utility::addgrenadethrowanimoffset(%riotshield_crouch_grenade_toss,(-3.20014,1.7098,55.6886));
|
|
}
|
|
|
|
//Function Number: 2
|
|
notetrackdetachshield(param_00,param_01)
|
|
{
|
|
animscripts\shared::dropaiweapon(self.secondaryweapon);
|
|
self.secondaryweapon = "none";
|
|
if(isalive(self))
|
|
{
|
|
riotshield_turn_into_regular_ai();
|
|
}
|
|
}
|
|
|
|
//Function Number: 3
|
|
riotshield_approach_type()
|
|
{
|
|
if(self.a.pose == "crouch")
|
|
{
|
|
return "riotshield_crouch";
|
|
}
|
|
|
|
return "riotshield";
|
|
}
|
|
|
|
//Function Number: 4
|
|
riotshield_approach_conditions(param_00)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 5
|
|
init_riotshield_ai()
|
|
{
|
|
animscripts\shared::placeweaponon(self.secondaryweapon,"left",0);
|
|
self.animarchetype = "riotshield";
|
|
self initriotshieldhealth(self.secondaryweapon);
|
|
self.shieldmodelvariant = 0;
|
|
thread riotshield_damaged();
|
|
self.subclass = "riotshield";
|
|
self.approachtypefunc = ::riotshield_approach_type;
|
|
self.approachconditioncheckfunc = ::riotshield_approach_conditions;
|
|
self.faceenemyarrival = 1;
|
|
self.disablecoverarrivalsonly = 1;
|
|
self.pathrandompercent = 0;
|
|
self.interval = 0;
|
|
self.disabledoorbehavior = 1;
|
|
self.no_pistol_switch = 1;
|
|
self.dontshootwhilemoving = 1;
|
|
self.disablebulletwhizbyreaction = 1;
|
|
self.disablefriendlyfirereaction = 1;
|
|
self.neversprintforvariation = 1;
|
|
self.combatmode = "no_cover";
|
|
self.fixednode = 0;
|
|
self.maxfaceenemydist = 1500;
|
|
self.nomeleechargedelay = 1;
|
|
self.meleechargedistsq = squared(256);
|
|
self.meleeplayerwhilemoving = 1;
|
|
self.usemuzzlesideoffset = 1;
|
|
if(level.gameskill < 1)
|
|
{
|
|
self.shieldbulletblocklimit = randomintrange(4,8);
|
|
}
|
|
else
|
|
{
|
|
self.shieldbulletblocklimit = randomintrange(8,12);
|
|
}
|
|
|
|
self.shieldbulletblockcount = 0;
|
|
self.shieldbulletblocktime = 0;
|
|
self.walkdist = 500;
|
|
self.walkdistfacingmotion = 500;
|
|
self.grenadeawareness = 1;
|
|
self.frontshieldanglecos = 0.5;
|
|
self.nogrenadereturnthrow = 1;
|
|
self.a.grenadethrowpose = "crouch";
|
|
self.minexposedgrenadedist = 400;
|
|
self.ignoresuppression = 1;
|
|
self.specialmelee_standard = ::riotshield_melee_standard;
|
|
self.specialmeleechooseaction = ::riotshield_melee_aivsai;
|
|
maps\_utility::disable_turnanims();
|
|
maps\_utility::disable_surprise();
|
|
maps\_utility::disable_cqbwalk();
|
|
init_riotshield_animsets();
|
|
if(level.gameskill < 1)
|
|
{
|
|
self.bullet_resistance = 30;
|
|
}
|
|
else
|
|
{
|
|
self.bullet_resistance = 40;
|
|
}
|
|
|
|
maps\_utility::add_damage_function(::maps\_spawner::bullet_resistance);
|
|
maps\_utility::add_damage_function(::animscripts\pain::additive_pain);
|
|
}
|
|
|
|
//Function Number: 6
|
|
riotshield_charge()
|
|
{
|
|
if(!animscripts\melee::melee_standard_updateandvalidatetarget())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
var_00 = getmovedelta(%riotshield_basha_attack,0,1);
|
|
var_01 = lengthsquared(var_00);
|
|
if(distancesquared(self.origin,self.melee.target.origin) < var_01)
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
animscripts\melee::melee_playchargesound();
|
|
var_02 = 0.1;
|
|
var_03 = 1;
|
|
for(;;)
|
|
{
|
|
if(!animscripts\melee::melee_standard_updateandvalidatetarget())
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
if(var_03)
|
|
{
|
|
self.a.pose = "stand";
|
|
self setflaggedanimknoball("chargeanim",%riotshield_sprint,%body,1,0.2,1);
|
|
var_03 = 0;
|
|
}
|
|
|
|
self orientmode("face point",self.melee.target.origin);
|
|
animscripts\notetracks::donotetracksfortime(var_02,"chargeanim");
|
|
var_04 = distancesquared(self.origin,self.melee.target.origin);
|
|
if(var_04 < var_01)
|
|
{
|
|
break;
|
|
}
|
|
|
|
if(gettime() >= self.melee.giveuptime)
|
|
{
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
return 1;
|
|
}
|
|
|
|
//Function Number: 7
|
|
riotshield_melee_standard()
|
|
{
|
|
self animmode("zonly_physics");
|
|
animscripts\melee::melee_standard_resetgiveuptime();
|
|
for(;;)
|
|
{
|
|
if(!riotshield_charge())
|
|
{
|
|
self.nextmeleechargetime = gettime() + 1500;
|
|
self.nextmeleechargetarget = self.melee.target;
|
|
break;
|
|
}
|
|
|
|
animscripts\battlechatter_ai::evaluatemeleeevent();
|
|
self orientmode("face point",self.melee.target.origin);
|
|
self setflaggedanimknoballrestart("meleeanim",%riotshield_bash_vs_player,%body,1,0.2,1);
|
|
self.melee.inprogress = 1;
|
|
if(!animscripts\melee::melee_standard_playattackloop())
|
|
{
|
|
animscripts\melee::melee_standard_delaystandardcharge(self.melee.target);
|
|
break;
|
|
}
|
|
|
|
self animmode("none");
|
|
}
|
|
|
|
self animmode("none");
|
|
}
|
|
|
|
//Function Number: 8
|
|
riotshield_melee_aivsai()
|
|
{
|
|
var_00 = self.melee.target;
|
|
if(self.subclass == "riotshield" && var_00.subclass == "riotshield")
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
animscripts\melee::melee_decide_winner();
|
|
var_01 = vectortoangles(var_00.origin - self.origin);
|
|
var_02 = angleclamp180(var_00.angles[1] - var_01[1]);
|
|
if(abs(var_02) > 100)
|
|
{
|
|
if(self.melee.winner)
|
|
{
|
|
if(self.subclass == "riotshield")
|
|
{
|
|
self.melee.animname = %riotshield_basha_attack;
|
|
var_00.melee.animname = %riotshield_basha_defend;
|
|
var_00.melee.surviveanimname = %riotshield_basha_defend_survive;
|
|
}
|
|
else
|
|
{
|
|
self.melee.animname = %riotshield_bashb_defend;
|
|
var_00.melee.animname = %riotshield_bashb_attack;
|
|
}
|
|
}
|
|
else if(self.subclass == "riotshield")
|
|
{
|
|
self.melee.animname = %riotshield_bashb_attack;
|
|
var_00.melee.animname = %riotshield_bashb_defend;
|
|
}
|
|
else
|
|
{
|
|
self.melee.animname = %riotshield_basha_defend;
|
|
var_00.melee.animname = %riotshield_basha_attack;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
self.melee.startpos = getstartorigin(var_00.origin,var_00.angles,self.melee.animname);
|
|
self.melee.startangles = (var_00.angles[0],angleclamp180(var_00.angles[1] + 180),var_00.angles[2]);
|
|
self.lockorientation = 0;
|
|
var_00.lockorientation = 0;
|
|
return animscripts\melee::melee_updateandvalidatestartpos();
|
|
}
|
|
|
|
//Function Number: 9
|
|
riotshield_startmovetransition()
|
|
{
|
|
if(isdefined(self.disableexits))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self orientmode("face angle",self.angles[1]);
|
|
self animmode("zonly_physics",0);
|
|
if(self.a.pose == "crouch")
|
|
{
|
|
if(isdefined(self.sprint) || isdefined(self.fastwalk))
|
|
{
|
|
var_00 = %riotshield_crouch2stand;
|
|
}
|
|
else
|
|
{
|
|
var_00 = %riotshield_crouch2walk;
|
|
}
|
|
|
|
var_01 = randomfloatrange(0.9,1.1);
|
|
if(isdefined(self.copgroup))
|
|
{
|
|
var_01 = 2.5;
|
|
}
|
|
|
|
self setflaggedanimknoballrestart("startmove",var_00,%body,1,0.1,var_01);
|
|
animscripts\shared::donotetracks("startmove");
|
|
self clearanim(%riotshield_crouch2walk,0.5);
|
|
}
|
|
|
|
if(isdefined(self.sprint) || isdefined(self.fastwalk))
|
|
{
|
|
self allowedstances("stand","crouch");
|
|
self.a.pose = "stand";
|
|
}
|
|
|
|
self orientmode("face default");
|
|
self animmode("normal",0);
|
|
thread riotshield_bullet_hit_shield();
|
|
}
|
|
|
|
//Function Number: 10
|
|
riotshield_endmovetransition()
|
|
{
|
|
if(self.prevscript == "move" && self.a.pose == "crouch")
|
|
{
|
|
self clearanim(%animscript_root,0.2);
|
|
var_00 = randomfloatrange(0.9,1.1);
|
|
if(isdefined(self.copgroup))
|
|
{
|
|
var_00 = 2.5;
|
|
}
|
|
|
|
self animmode("zonly_physics");
|
|
self setflaggedanimknoballrestart("endmove",%riotshield_walk2crouch_8,%body,1,0.2,var_00);
|
|
animscripts\shared::donotetracks("endmove");
|
|
self animmode("normal");
|
|
}
|
|
|
|
self allowedstances("crouch");
|
|
}
|
|
|
|
//Function Number: 11
|
|
riotshield_startcombat()
|
|
{
|
|
riotshield_endmovetransition();
|
|
self.pushable = 0;
|
|
thread riotshield_bullet_hit_shield();
|
|
}
|
|
|
|
//Function Number: 12
|
|
riotshield_bullet_hit_shield()
|
|
{
|
|
self endon("killanimscript");
|
|
for(;;)
|
|
{
|
|
self waittill("bullet_hitshield");
|
|
var_00 = gettime();
|
|
if(var_00 - self.shieldbulletblocktime > 500)
|
|
{
|
|
self.shieldbulletblockcount = 0;
|
|
}
|
|
else
|
|
{
|
|
self.shieldbulletblockcount++;
|
|
}
|
|
|
|
self.shieldbulletblocktime = var_00;
|
|
if(self.shieldbulletblockcount > self.shieldbulletblocklimit)
|
|
{
|
|
self dodamage(1,(0,0,0));
|
|
}
|
|
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
var_01 = %riotshield_reacta;
|
|
}
|
|
else
|
|
{
|
|
var_01 = %riotshield_reactb;
|
|
}
|
|
|
|
self notify("new_hit_react");
|
|
self setflaggedanimrestart("hitreact",var_01,1,0.1,1);
|
|
thread riotshield_bullet_hit_shield_clear();
|
|
}
|
|
}
|
|
|
|
//Function Number: 13
|
|
riotshield_bullet_hit_shield_clear()
|
|
{
|
|
self endon("killanimscript");
|
|
self endon("new_hit_react");
|
|
self waittillmatch("end","hitreact");
|
|
self clearanim(%riotshield_react,0.1);
|
|
}
|
|
|
|
//Function Number: 14
|
|
riotshield_grenadecower()
|
|
{
|
|
if(self.a.pose == "stand")
|
|
{
|
|
self clearanim(%animscript_root,0.2);
|
|
self setflaggedanimknoballrestart("trans",%riotshield_walk2crouch_8,%body,1,0.2,1.2);
|
|
animscripts\shared::donotetracks("trans");
|
|
}
|
|
|
|
if(isdefined(self.grenade))
|
|
{
|
|
var_00 = 1;
|
|
var_01 = self.grenade.origin - self.origin;
|
|
if(isdefined(self.enemy))
|
|
{
|
|
var_02 = self.enemy.origin - self.origin;
|
|
if(vectordot(var_01,var_02) < 0)
|
|
{
|
|
var_00 = 0;
|
|
}
|
|
}
|
|
|
|
if(var_00)
|
|
{
|
|
var_03 = angleclamp180(self.angles[1] - vectortoyaw(var_01));
|
|
if(!isdefined(self.turnthreshold))
|
|
{
|
|
self.turnthreshold = 55;
|
|
}
|
|
|
|
while(abs(var_03) > self.turnthreshold)
|
|
{
|
|
if(!isdefined(self.a.array))
|
|
{
|
|
animscripts\combat::setup_anim_array();
|
|
}
|
|
|
|
if(!animscripts\combat::turntofacerelativeyaw(var_03))
|
|
{
|
|
break;
|
|
}
|
|
|
|
var_03 = angleclamp180(self.angles[1] - vectortoyaw(var_01));
|
|
}
|
|
}
|
|
}
|
|
|
|
self setanimknoball(%riotshield_crouch_aim_5,%body,1,0.2,1);
|
|
self setflaggedanimknoballrestart("grenadecower",%riotshield_crouch_idle_add,%add_idle,1,0.2,self.animplaybackrate);
|
|
animscripts\shared::donotetracks("grenadecower");
|
|
}
|
|
|
|
//Function Number: 15
|
|
riotshield_flashbang()
|
|
{
|
|
self notify("flashed");
|
|
if(!isdefined(self.a.onback))
|
|
{
|
|
var_00 = randomfloatrange(0.9,1.1);
|
|
self.frontshieldanglecos = 1;
|
|
var_01 = [];
|
|
var_01[0] = %riotshield_crouch_grenade_flash1;
|
|
var_01[1] = %riotshield_crouch_grenade_flash2;
|
|
var_01[2] = %riotshield_crouch_grenade_flash3;
|
|
var_01[3] = %riotshield_crouch_grenade_flash4;
|
|
var_02 = var_01[randomint(var_01.size)];
|
|
self setflaggedanimknoballrestart("flashanim",var_02,%body,1,0.1,var_00);
|
|
self.minpaindamage = 1000;
|
|
animscripts\shared::donotetracks("flashanim");
|
|
}
|
|
else
|
|
{
|
|
wait(0.1);
|
|
}
|
|
|
|
self.minpaindamage = 0;
|
|
if(isdefined(self.subclass) && self.subclass == "riotshield")
|
|
{
|
|
self.frontshieldanglecos = 0.5;
|
|
}
|
|
}
|
|
|
|
//Function Number: 16
|
|
riotshield_pain()
|
|
{
|
|
self.a.pose = "crouch";
|
|
if(animscripts\utility::usingsidearm())
|
|
{
|
|
maps\_utility::forceuseweapon(self.primaryweapon,"primary");
|
|
}
|
|
|
|
if(!isdefined(self.a.onback))
|
|
{
|
|
var_00 = randomfloatrange(0.8,1.15);
|
|
self.frontshieldanglecos = 1;
|
|
if((self.damageyaw < -120 || self.damageyaw > 120) && isexplosivedamagemod(self.damagemod))
|
|
{
|
|
var_01 = [];
|
|
var_01[0] = %riotshield_crouch_grenade_blowback;
|
|
var_01[1] = %riotshield_crouch_grenade_blowbackl;
|
|
var_01[2] = %riotshield_crouch_grenade_blowbackr;
|
|
var_02 = var_01[randomint(var_01.size)];
|
|
self setflaggedanimknoballrestart("painanim",var_02,%body,1,0.2,var_00);
|
|
self.minpaindamage = 1000;
|
|
}
|
|
else
|
|
{
|
|
self setflaggedanimknoballrestart("painanim",%riotshield_crouch_pain,%body,1,0.2,var_00);
|
|
}
|
|
|
|
animscripts\shared::donotetracks("painanim");
|
|
}
|
|
else
|
|
{
|
|
wait(0.1);
|
|
}
|
|
|
|
self.minpaindamage = 0;
|
|
if(isdefined(self.subclass) && self.subclass == "riotshield")
|
|
{
|
|
self.frontshieldanglecos = 0.5;
|
|
}
|
|
}
|
|
|
|
//Function Number: 17
|
|
riotshield_death()
|
|
{
|
|
if(isdefined(self.a.onback) && self.a.pose == "crouch")
|
|
{
|
|
var_00 = [];
|
|
var_00[0] = %dying_back_death_v2;
|
|
var_00[1] = %dying_back_death_v3;
|
|
var_00[2] = %dying_back_death_v4;
|
|
var_01 = var_00[randomint(var_00.size)];
|
|
animscripts\death::playdeathanim(var_01);
|
|
return 1;
|
|
}
|
|
|
|
if(self.prevscript == "pain" || self.prevscript == "flashed")
|
|
{
|
|
var_02 = randomint(2) == 0;
|
|
}
|
|
else
|
|
{
|
|
var_02 = 1;
|
|
}
|
|
|
|
if(var_02)
|
|
{
|
|
if(common_scripts\utility::cointoss())
|
|
{
|
|
var_01 = %riotshield_crouch_death;
|
|
}
|
|
else
|
|
{
|
|
var_01 = %riotshield_crouch_death_fallback;
|
|
}
|
|
|
|
animscripts\death::playdeathanim(var_02);
|
|
return 1;
|
|
}
|
|
|
|
self.a.pose = "crouch";
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 18
|
|
init_riotshield_animsets()
|
|
{
|
|
var_00 = [];
|
|
var_00["sprint"] = %riotshield_sprint;
|
|
var_00["prone"] = %prone_crawl;
|
|
var_00["straight"] = %riotshield_run_f;
|
|
var_00["move_f"] = %riotshield_run_f;
|
|
var_00["move_l"] = %riotshield_run_l;
|
|
var_00["move_r"] = %riotshield_run_r;
|
|
var_00["move_b"] = %riotshield_run_b;
|
|
var_00["crouch"] = %riotshield_crouchwalk_f;
|
|
var_00["crouch_l"] = %riotshield_crouchwalk_l;
|
|
var_00["crouch_r"] = %riotshield_crouchwalk_r;
|
|
var_00["crouch_b"] = %riotshield_crouchwalk_b;
|
|
var_00["stairs_up"] = %traverse_stair_run_01;
|
|
var_00["stairs_down"] = %traverse_stair_run_down;
|
|
self.custommoveanimset["run"] = var_00;
|
|
self.custommoveanimset["walk"] = var_00;
|
|
self.custommoveanimset["cqb"] = var_00;
|
|
self.customidleanimset = [];
|
|
self.customidleanimset["crouch"] = %riotshield_crouch_aim_5;
|
|
self.customidleanimset["crouch_add"] = %riotshield_crouch_idle_add;
|
|
self.customidleanimset["stand"] = %riotshield_crouch_aim_5;
|
|
self.customidleanimset["stand_add"] = %riotshield_crouch_idle_add;
|
|
self.a.pose = "crouch";
|
|
self allowedstances("crouch");
|
|
var_00 = level.animsets.defaultstand;
|
|
var_00["add_aim_up"] = %riotshield_crouch_aim_8;
|
|
var_00["add_aim_down"] = %riotshield_crouch_aim_2;
|
|
var_00["add_aim_left"] = %riotshield_crouch_aim_4;
|
|
var_00["add_aim_right"] = %riotshield_crouch_aim_6;
|
|
var_00["straight_level"] = %riotshield_crouch_aim_5;
|
|
var_00["fire"] = %riotshield_crouch_fire_auto;
|
|
var_00["single"] = animscripts\utility::array(%riotshield_crouch_fire_single);
|
|
var_00["burst2"] = %riotshield_crouch_fire_burst;
|
|
var_00["burst3"] = %riotshield_crouch_fire_burst;
|
|
var_00["burst4"] = %riotshield_crouch_fire_burst;
|
|
var_00["burst5"] = %riotshield_crouch_fire_burst;
|
|
var_00["burst6"] = %riotshield_crouch_fire_burst;
|
|
var_00["semi2"] = %riotshield_crouch_fire_burst;
|
|
var_00["semi3"] = %riotshield_crouch_fire_burst;
|
|
var_00["semi4"] = %riotshield_crouch_fire_burst;
|
|
var_00["semi5"] = %riotshield_crouch_fire_burst;
|
|
var_00["exposed_idle"] = animscripts\utility::array(%riotshield_crouch_idle_add,%riotshield_crouch_twitch);
|
|
var_00["exposed_grenade"] = animscripts\utility::array(%riotshield_crouch_grenade_toss);
|
|
var_00["reload"] = animscripts\utility::array(%riotshield_crouch_reload);
|
|
var_00["reload_crouchhide"] = animscripts\utility::array(%riotshield_crouch_reload);
|
|
var_00["turn_left_45"] = %riotshield_crouch_lturn;
|
|
var_00["turn_left_90"] = %riotshield_crouch_lturn;
|
|
var_00["turn_left_135"] = %riotshield_crouch_lturn;
|
|
var_00["turn_left_180"] = %riotshield_crouch_lturn;
|
|
var_00["turn_right_45"] = %riotshield_crouch_rturn;
|
|
var_00["turn_right_90"] = %riotshield_crouch_rturn;
|
|
var_00["turn_right_135"] = %riotshield_crouch_rturn;
|
|
var_00["turn_right_180"] = %riotshield_crouch_rturn;
|
|
var_00["stand_2_crouch"] = %riotshield_walk2crouch_8;
|
|
animscripts\animset::init_animset_complete_custom_stand(var_00);
|
|
animscripts\animset::init_animset_complete_custom_crouch(var_00);
|
|
self.chooseposefunc = ::riotshield_choose_pose;
|
|
self.painfunction = ::riotshield_pain;
|
|
self.specialdeathfunc = ::riotshield_death;
|
|
self.specialflashedfunc = ::riotshield_flashbang;
|
|
self.grenadecowerfunction = ::riotshield_grenadecower;
|
|
self.custommovetransition = ::riotshield_startmovetransition;
|
|
self.permanentcustommovetransition = 1;
|
|
common_scripts\utility::set_exception("exposed",::riotshield_startcombat);
|
|
}
|
|
|
|
//Function Number: 19
|
|
riotshield_choose_pose(param_00)
|
|
{
|
|
if(isdefined(self.grenade))
|
|
{
|
|
return "stand";
|
|
}
|
|
|
|
return animscripts\utility::choosepose(param_00);
|
|
}
|
|
|
|
//Function Number: 20
|
|
riotshield_sprint_on()
|
|
{
|
|
self.maxfaceenemydist = 128;
|
|
self.sprint = 1;
|
|
self orientmode("face default");
|
|
self.lockorientation = 0;
|
|
self.walkdist = 32;
|
|
self.walkdistfacingmotion = 32;
|
|
}
|
|
|
|
//Function Number: 21
|
|
riotshield_fastwalk_on()
|
|
{
|
|
self.maxfaceenemydist = 128;
|
|
self.fastwalk = 1;
|
|
self.walkdist = 32;
|
|
self.walkdistfacingmotion = 32;
|
|
}
|
|
|
|
//Function Number: 22
|
|
riotshield_sprint_off()
|
|
{
|
|
self.maxfaceenemydist = 1500;
|
|
self.walkdist = 500;
|
|
self.walkdistfacingmotion = 500;
|
|
self.sprint = undefined;
|
|
self allowedstances("crouch");
|
|
}
|
|
|
|
//Function Number: 23
|
|
riotshield_fastwalk_off()
|
|
{
|
|
self.maxfaceenemydist = 1500;
|
|
self.walkdist = 500;
|
|
self.walkdistfacingmotion = 500;
|
|
self.fastwalk = undefined;
|
|
self allowedstances("crouch");
|
|
}
|
|
|
|
//Function Number: 24
|
|
null_func()
|
|
{
|
|
}
|
|
|
|
//Function Number: 25
|
|
riotshield_init_flee()
|
|
{
|
|
if(self.script == "move")
|
|
{
|
|
self animcustom(::null_func);
|
|
}
|
|
|
|
self.custommovetransition = ::riotshield_flee_and_drop_shield;
|
|
}
|
|
|
|
//Function Number: 26
|
|
riotshield_flee_and_drop_shield()
|
|
{
|
|
self.custommovetransition = ::riotshield_startmovetransition;
|
|
self animmode("zonly_physics",0);
|
|
self orientmode("face current");
|
|
if(!isdefined(self.dropshieldinplace) && isdefined(self.enemy) && vectordot(self.lookaheaddir,anglestoforward(self.angles)) < 0)
|
|
{
|
|
var_00 = %riotshield_crouch2walk_2flee;
|
|
}
|
|
else
|
|
{
|
|
var_00 = %riotshield_crouch2stand_shield_drop;
|
|
}
|
|
|
|
var_01 = randomfloatrange(0.85,1.1);
|
|
self setflaggedanimknoball("fleeanim",var_00,%animscript_root,1,0.1,var_01);
|
|
animscripts\shared::donotetracks("fleeanim");
|
|
self.maxfaceenemydist = 32;
|
|
self.lockorientation = 0;
|
|
self orientmode("face default");
|
|
self animmode("normal",0);
|
|
animscripts\shared::donotetracks("fleeanim");
|
|
self clearanim(var_00,0.2);
|
|
self.maxfaceenemydist = 128;
|
|
}
|
|
|
|
//Function Number: 27
|
|
riotshield_turn_into_regular_ai()
|
|
{
|
|
self.subclass = "regular";
|
|
self.combatmode = "cover";
|
|
self.approachtypefunc = undefined;
|
|
self.approachconditioncheckfunc = undefined;
|
|
self.faceenemyarrival = undefined;
|
|
self.disablecoverarrivalsonly = undefined;
|
|
self.pathrandompercent = 0;
|
|
self.interval = 80;
|
|
self.disabledoorbehavior = undefined;
|
|
self.no_pistol_switch = undefined;
|
|
self.dontshootwhilemoving = undefined;
|
|
self.disablebulletwhizbyreaction = undefined;
|
|
self.disablefriendlyfirereaction = undefined;
|
|
self.neversprintforvariation = undefined;
|
|
self.maxfaceenemydist = 128;
|
|
self.nomeleechargedelay = undefined;
|
|
self.meleechargedistsq = undefined;
|
|
self.meleeplayerwhilemoving = undefined;
|
|
self.usemuzzlesideoffset = undefined;
|
|
self.pathenemyfightdist = 128;
|
|
self.pathenemylookahead = 128;
|
|
self.walkdist = 256;
|
|
self.walkdistfacingmotion = 64;
|
|
self.lockorientation = 0;
|
|
self.frontshieldanglecos = 1;
|
|
self.nogrenadereturnthrow = 0;
|
|
self.ignoresuppression = 0;
|
|
self.sprint = undefined;
|
|
self allowedstances("stand","crouch","prone");
|
|
self.specialmelee_standard = undefined;
|
|
self.specialmeleechooseaction = undefined;
|
|
maps\_utility::enable_turnanims();
|
|
self.bullet_resistance = undefined;
|
|
maps\_utility::remove_damage_function(::maps\_spawner::bullet_resistance);
|
|
maps\_utility::remove_damage_function(::animscripts\pain::additive_pain);
|
|
animscripts\animset::clear_custom_animset();
|
|
self.chooseposefunc = ::animscripts\utility::choosepose;
|
|
self.painfunction = undefined;
|
|
self.specialdeathfunc = undefined;
|
|
self.specialflashedfunc = undefined;
|
|
self.grenadecowerfunction = undefined;
|
|
self.custommovetransition = undefined;
|
|
self.permanentcustommovetransition = undefined;
|
|
common_scripts\utility::clear_exception("exposed");
|
|
common_scripts\utility::clear_exception("stop_immediate");
|
|
}
|
|
|
|
//Function Number: 28
|
|
riotshield_damaged()
|
|
{
|
|
self endon("death");
|
|
self waittill("riotshield_damaged");
|
|
self.shieldbroken = 1;
|
|
animscripts\shared::detachallweaponmodels();
|
|
self.shieldmodelvariant = 1;
|
|
animscripts\shared::updateattachedweaponmodels();
|
|
} |