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

340 lines
8.1 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: _stealth_visibility_friendly.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 17
* Decompile Time: 263 ms
* Timestamp: 4/22/2024 2:23:19 AM
*******************************************************************/
//Function Number: 1
stealth_visibility_friendly_main()
{
friendly_init();
thread friendly_visibility_logic();
}
//Function Number: 2
friendly_visibility_logic()
{
self endon("death");
self endon("pain_death");
var_00 = self._stealth.logic.current_stance_func;
if(isplayer(self))
{
thread player_movespeed_calc_loop();
}
for(;;)
{
maps\_utility::ent_flag_wait("_stealth_enabled");
self [[ var_00 ]]();
self.maxvisibledist = friendly_compute_score();
wait(0.05);
}
}
//Function Number: 3
friendly_getvelocity()
{
return length(self getvelocity());
}
//Function Number: 4
friendly_getinshadow()
{
return maps\_utility::ent_flag_exist("_stealth_in_shadow") && maps\_utility::ent_flag("_stealth_in_shadow");
}
//Function Number: 5
player_getvelocity_pc()
{
var_00 = length(self getvelocity());
var_01 = self._stealth.logic.stance;
var_02 = [];
var_02["stand"] = 30;
var_02["crouch"] = 15;
var_02["prone"] = 4;
var_03 = [];
var_03["stand"] = 40;
var_03["crouch"] = 25;
var_03["prone"] = 10;
if(!var_00)
{
self._stealth.logic.player_pc_velocity = 0;
}
else if(var_00 > self._stealth.logic.player_pc_velocity)
{
self._stealth.logic.player_pc_velocity = self._stealth.logic.player_pc_velocity + var_02[var_01];
if(self._stealth.logic.player_pc_velocity > var_00)
{
self._stealth.logic.player_pc_velocity = var_00;
}
}
else if(var_00 < self._stealth.logic.player_pc_velocity)
{
self._stealth.logic.player_pc_velocity = self._stealth.logic.player_pc_velocity - var_03[var_01];
if(self._stealth.logic.player_pc_velocity < 0)
{
self._stealth.logic.player_pc_velocity = 0;
}
}
return self._stealth.logic.player_pc_velocity;
}
//Function Number: 6
friendly_get_stance(param_00)
{
if(!isdefined(param_00))
{
if(isdefined(self._stealth))
{
param_00 = self._stealth.logic.stance;
}
else
{
param_00 = self.a.stance;
}
}
if(isdefined(param_00) && param_00 == "back")
{
param_00 = "prone";
}
if(isdefined(self.type) && self.type == "dog")
{
if(isdefined(self.sprint) && self.sprint)
{
param_00 = "crouch";
}
else
{
param_00 = "prone";
}
}
return param_00;
}
//Function Number: 7
friendly_compute_score(param_00)
{
if(!isdefined(self._stealth))
{
return;
}
param_00 = friendly_get_stance(param_00);
var_01 = level._stealth.logic.detection_level;
var_02 = level._stealth.logic.detect_range[var_01][param_00];
if(self [[ self._stealth.logic.getinshadow_func ]]())
{
var_02 = var_02 * 0.5;
if(var_02 < level._stealth.logic.detect_range["hidden"]["prone"])
{
var_02 = level._stealth.logic.detect_range["hidden"]["prone"];
}
}
var_03 = self._stealth.logic.movespeed_multiplier[var_01][param_00];
if(isdefined(self._stealth_move_detection_cap) && var_03 > self._stealth_move_detection_cap)
{
var_03 = self._stealth_move_detection_cap;
}
return var_02 + var_03;
}
//Function Number: 8
friendly_getstance_ai()
{
return self.a.pose;
}
//Function Number: 9
friendly_getangles_ai()
{
return self.angles;
}
//Function Number: 10
friendly_compute_stances_ai()
{
self._stealth.logic.stance = self [[ self._stealth.logic.getstance_func ]]();
self._stealth.logic.oldstance = self._stealth.logic.stance;
}
//Function Number: 11
player_movespeed_calc_loop()
{
self endon("death");
self endon("pain_death");
var_00 = self._stealth.logic.getangles_func;
var_01 = self._stealth.logic.getvelocity_func;
var_02 = self [[ var_00 ]]();
for(;;)
{
maps\_utility::ent_flag_wait("_stealth_enabled");
var_03 = undefined;
if(self [[ self._stealth.logic.getinshadow_func ]]())
{
var_03 = 0;
}
else
{
var_03 = self [[ var_01 ]]();
}
foreach(var_09, var_05 in self._stealth.logic.movespeed_multiplier)
{
foreach(var_08, var_07 in var_05)
{
var_07 = var_03 * self._stealth.logic.movespeed_scale[var_09][var_08];
}
}
var_02 = self [[ var_00 ]]();
wait(0.1);
}
}
//Function Number: 12
friendly_getstance_player()
{
return self getstance();
}
//Function Number: 13
friendly_getangles_player()
{
return self getplayerangles();
}
//Function Number: 14
friendly_compute_stances_player()
{
var_00 = self [[ self._stealth.logic.getstance_func ]]();
if(!self._stealth.logic.stance_change)
{
switch(var_00)
{
case "prone":
if(self._stealth.logic.oldstance != "prone")
{
self._stealth.logic.stance_change = self._stealth.logic.stance_change_time;
}
break;
case "crouch":
if(self._stealth.logic.oldstance == "stand")
{
self._stealth.logic.stance_change = self._stealth.logic.stance_change_time;
}
break;
}
}
if(self._stealth.logic.stance_change)
{
self._stealth.logic.stance = self._stealth.logic.oldstance;
if(self._stealth.logic.stance_change > 0.05)
{
self._stealth.logic.stance_change = self._stealth.logic.stance_change - 0.05;
return;
}
self._stealth.logic.stance_change = 0;
self._stealth.logic.stance = var_00;
self._stealth.logic.oldstance = var_00;
return;
}
self._stealth.logic.stance = var_00;
self._stealth.logic.oldstance = var_00;
}
//Function Number: 15
friendly_init()
{
maps\_utility::ent_flag_init("_stealth_in_shadow");
maps\_utility::ent_flag_init("_stealth_enabled");
maps\_utility::ent_flag_set("_stealth_enabled");
self._stealth = spawnstruct();
self._stealth.logic = spawnstruct();
if(isplayer(self))
{
self._stealth.logic.getstance_func = ::friendly_getstance_player;
self._stealth.logic.getangles_func = ::friendly_getangles_player;
if(level.console)
{
self._stealth.logic.getvelocity_func = ::friendly_getvelocity;
}
else
{
self._stealth.logic.getvelocity_func = ::player_getvelocity_pc;
self._stealth.logic.player_pc_velocity = 0;
}
self._stealth.logic.current_stance_func = ::friendly_compute_stances_player;
}
else
{
self._stealth.logic.getstance_func = ::friendly_getstance_ai;
self._stealth.logic.getangles_func = ::friendly_getangles_ai;
self._stealth.logic.getvelocity_func = ::friendly_getvelocity;
self._stealth.logic.current_stance_func = ::friendly_compute_stances_ai;
}
self._stealth.logic.getinshadow_func = ::friendly_getinshadow;
self._stealth.logic.stance_change_time = 0.2;
self._stealth.logic.stance_change = 0;
self._stealth.logic.oldstance = self [[ self._stealth.logic.getstance_func ]]();
self._stealth.logic.stance = self [[ self._stealth.logic.getstance_func ]]();
self._stealth.logic.spotted_list = [];
self._stealth.logic.movespeed_multiplier = [];
self._stealth.logic.movespeed_scale = [];
self._stealth.logic.movespeed_multiplier["hidden"] = [];
self._stealth.logic.movespeed_multiplier["hidden"]["prone"] = 0;
self._stealth.logic.movespeed_multiplier["hidden"]["crouch"] = 0;
self._stealth.logic.movespeed_multiplier["hidden"]["stand"] = 0;
self._stealth.logic.movespeed_multiplier["spotted"] = [];
self._stealth.logic.movespeed_multiplier["spotted"]["prone"] = 0;
self._stealth.logic.movespeed_multiplier["spotted"]["crouch"] = 0;
self._stealth.logic.movespeed_multiplier["spotted"]["stand"] = 0;
friendly_default_movespeed_scale();
}
//Function Number: 16
friendly_default_movespeed_scale()
{
var_00 = [];
var_00["prone"] = 3;
var_00["crouch"] = 2;
var_00["stand"] = 2;
var_01 = [];
var_01["prone"] = 2;
var_01["crouch"] = 2;
var_01["stand"] = 2;
friendly_set_movespeed_scale(var_00,var_01);
}
//Function Number: 17
friendly_set_movespeed_scale(param_00,param_01)
{
if(isdefined(param_00))
{
self._stealth.logic.movespeed_scale["hidden"]["prone"] = param_00["prone"];
self._stealth.logic.movespeed_scale["hidden"]["crouch"] = param_00["crouch"];
self._stealth.logic.movespeed_scale["hidden"]["stand"] = param_00["stand"];
}
if(isdefined(param_01))
{
self._stealth.logic.movespeed_scale["spotted"]["prone"] = param_01["prone"];
self._stealth.logic.movespeed_scale["spotted"]["crouch"] = param_01["crouch"];
self._stealth.logic.movespeed_scale["spotted"]["stand"] = param_01["stand"];
}
}