IL-GSC/AW/PC/maps/_riotshield.gsc
InfinityLoader b2389dbcb9 Full AW Dump
2024-04-22 02:38:24 -04:00

466 lines
7.8 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _riotshield.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 24
* Decompile Time: 379 ms
* Timestamp: 4/22/2024 2:22:29 AM
*******************************************************************/
//Function Number: 1
init_riotshield()
{
if(isdefined(level.riotshield_initialized))
{
return;
}
level.riotshield_initialized = 1;
level._effect["riot_shield_dmg"] = loadfx("fx/misc/riot_shield_dmg");
if(!isdefined(level.subclass_spawn_functions))
{
level.subclass_spawn_functions = [];
}
level.subclass_spawn_functions["riotshield"] = ::subclass_riotshield;
animscripts\riotshield\riotshield::init_riotshield_ai_anims();
}
//Function Number: 2
subclass_riotshield()
{
animscripts\riotshield\riotshield::init_riotshield_ai();
}
//Function Number: 3
riotshield_sprint_on()
{
animscripts\riotshield\riotshield::riotshield_sprint_on();
}
//Function Number: 4
riotshield_fastwalk_on()
{
animscripts\riotshield\riotshield::riotshield_fastwalk_on();
}
//Function Number: 5
riotshield_sprint_off()
{
animscripts\riotshield\riotshield::riotshield_sprint_off();
}
//Function Number: 6
riotshield_fastwalk_off()
{
animscripts\riotshield\riotshield::riotshield_fastwalk_off();
}
//Function Number: 7
riotshield_flee()
{
if(self.subclass != "riotshield")
{
return;
}
self.combatmode = "cover";
self.goalradius = 2048;
animscripts\riotshield\riotshield::riotshield_init_flee();
var_00 = self findbestcovernode();
if(isdefined(var_00))
{
self usecovernode(var_00);
}
}
//Function Number: 8
group_create(param_00,param_01,param_02)
{
var_03 = [];
foreach(var_05 in param_00)
{
if(var_05.combatmode != "no_cover")
{
continue;
}
var_03[var_03.size] = var_05;
}
var_07 = spawnstruct();
foreach(var_05 in var_03)
{
if(isdefined(var_05.group) && isdefined(var_05.group.ai_array))
{
var_05.group.ai_array = common_scripts\utility::array_remove(var_05.group.ai_array,var_05);
}
var_05.group = var_07;
}
var_07.ai_array = var_03;
var_07.fleethreshold = 1;
var_07.spacing = 50;
var_07 thread group_check_deaths();
return var_07;
}
//Function Number: 9
group_initialize_formation(param_00,param_01)
{
self.ai_array = maps\_utility::array_removedead(self.ai_array);
self.forward = param_00;
if(isdefined(param_01))
{
self.spacing = param_01;
}
foreach(var_03 in self.ai_array)
{
var_03.goalradius = 25;
var_03.pathenemyfightdist = 128;
var_03.pathenemylookahead = 128;
}
group_sort_by_closest_match();
thread check_group_facing_forward();
}
//Function Number: 10
group_resort_on_deaths()
{
self endon("break_group");
if(self.ai_array.size == 0)
{
return;
}
while(self.ai_array.size)
{
maps\_utility::waittill_dead(self.ai_array,1);
if(self.group_move_mode != "stopped")
{
self waittill("goal");
}
self.ai_array = maps\_utility::array_removedead(self.ai_array);
group_sort_by_closest_match();
}
}
//Function Number: 11
group_sort_by_closest_match(param_00)
{
if(self.ai_array.size == 0)
{
return;
}
if(isdefined(param_00))
{
self.forward = param_00;
}
else
{
param_00 = self.forward;
}
var_01 = group_center();
var_02 = (self.forward[1],-1 * self.forward[0],0);
var_03 = var_02 * self.spacing;
var_04 = group_left_corner(var_01,var_03);
var_05 = [];
for(var_06 = 0;var_06 < self.ai_array.size;var_06++)
{
if(isdefined(self.ai_array[var_06]))
{
var_05[var_06] = vectordot(var_04 - self.ai_array[var_06].origin,var_02);
continue;
}
var_05[var_06] = 0;
}
for(var_06 = 1;var_06 < var_05.size;var_06++)
{
var_07 = var_05[var_06];
var_08 = self.ai_array[var_06];
for(var_09 = var_06 - 1;var_09 >= 0;var_09--)
{
if(var_07 < var_05[var_09])
{
break;
}
var_05[var_09 + 1] = var_05[var_09];
self.ai_array[var_09 + 1] = self.ai_array[var_09];
}
var_05[var_09 + 1] = var_07;
self.ai_array[var_09 + 1] = var_08;
}
}
//Function Number: 12
group_check_deaths()
{
for(;;)
{
if(self.fleethreshold > 0)
{
self.ai_array = maps\_utility::array_removedead(self.ai_array);
if(self.ai_array.size <= self.fleethreshold)
{
foreach(var_01 in self.ai_array)
{
var_01 riotshield_flee();
}
self notify("break_group");
break;
}
}
wait(1);
}
}
//Function Number: 13
group_left_corner(param_00,param_01)
{
return param_00 - self.ai_array.size - 1 / 2 * param_01;
}
//Function Number: 14
group_move(param_00,param_01)
{
self notify("new_goal_set");
self.group_move_mode = "moving";
if(isdefined(param_01))
{
self.forward = param_01;
}
else
{
param_01 = self.forward;
}
var_02 = (param_01[1],-1 * param_01[0],0);
var_03 = var_02 * self.spacing;
var_04 = group_left_corner(param_00,var_03);
for(var_05 = 0;var_05 < self.ai_array.size;var_05++)
{
var_06 = self.ai_array[var_05];
if(isdefined(var_06))
{
var_06 setgoalpos(var_04);
}
var_04 = var_04 + var_03;
}
thread check_group_at_goal();
}
//Function Number: 15
check_group_at_goal()
{
self endon("new_goal_set");
for(;;)
{
wait(0.5);
var_00 = 0;
foreach(var_02 in self.ai_array)
{
if(isdefined(var_02) && isalive(var_02))
{
var_00++;
}
}
var_04 = 0;
for(var_05 = 0;var_05 < self.ai_array.size;var_05++)
{
var_02 = self.ai_array[var_05];
if(isdefined(var_02))
{
var_06 = max(45,var_02.goalradius);
if(distancesquared(var_02.origin,var_02.goalpos) < squared(var_06))
{
var_04++;
}
}
}
if(var_04 == var_00)
{
self notify("goal");
self.group_move_mode = "stopped";
}
}
}
//Function Number: 16
check_group_facing_forward()
{
self endon("break_group");
for(;;)
{
wait(0.5);
var_00 = 0;
foreach(var_02 in self.ai_array)
{
if(isdefined(var_02) && isalive(var_02))
{
var_00++;
}
}
var_04 = 0;
var_05 = vectortoyaw(self.forward);
for(var_06 = 0;var_06 < self.ai_array.size;var_06++)
{
var_02 = self.ai_array[var_06];
if(isdefined(var_02))
{
if(abs(var_02.angles[1] - var_05) < 45)
{
var_04++;
}
}
}
if(var_04 == var_00)
{
self notify("goal_yaw");
}
}
}
//Function Number: 17
group_sprint_on()
{
foreach(var_01 in self.ai_array)
{
if(isalive(var_01))
{
var_01 riotshield_sprint_on();
}
}
}
//Function Number: 18
group_fastwalk_on()
{
foreach(var_01 in self.ai_array)
{
if(isalive(var_01))
{
var_01 riotshield_fastwalk_on();
}
}
}
//Function Number: 19
group_sprint_off()
{
foreach(var_01 in self.ai_array)
{
if(isalive(var_01))
{
var_01 riotshield_sprint_off();
}
}
}
//Function Number: 20
group_fastwalk_off()
{
foreach(var_01 in self.ai_array)
{
if(isalive(var_01))
{
var_01 riotshield_fastwalk_off();
}
}
}
//Function Number: 21
group_lock_angles(param_00)
{
self.forward = param_00;
var_01 = vectortoyaw(param_00);
foreach(var_03 in self.ai_array)
{
if(!isdefined(var_03))
{
continue;
}
if(isdefined(var_03.enemy) && distancesquared(var_03.origin,var_03.enemy.origin) < squared(var_03.pathenemyfightdist))
{
continue;
}
var_03 orientmode("face angle",var_01);
var_03.lockorientation = 1;
}
wait(0.1);
}
//Function Number: 22
group_unlock_angles()
{
foreach(var_01 in self.ai_array)
{
if(!isdefined(var_01))
{
continue;
}
var_01 orientmode("face default");
var_01.lockorientation = 0;
}
}
//Function Number: 23
group_free_combat()
{
group_unlock_angles();
foreach(var_01 in self.ai_array)
{
if(!isdefined(var_01))
{
continue;
}
var_01.goalradius = 2048;
var_01.pathenemyfightdist = 400;
var_01.pathenemylookahead = 400;
}
}
//Function Number: 24
group_center()
{
var_00 = (0,0,0);
var_01 = 0;
foreach(var_03 in self.ai_array)
{
if(isdefined(var_03))
{
var_00 = var_00 + var_03.origin;
var_01++;
}
}
if(var_01)
{
var_00 = 1 / var_01 * var_00;
}
return var_00;
}