mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-10 10:27:55 -05:00
376 lines
7.3 KiB
Plaintext
376 lines
7.3 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: maps\mp\mp_zombies_attack_object.gsc
|
|
* Game: Call of Duty: WWII
|
|
* Platform: PC
|
|
* Function Count: 18
|
|
* Decompile Time: 302 ms
|
|
* Timestamp: 10/27/2023 3:20:20 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
func_00D5()
|
|
{
|
|
lib_0547::func_7BD0("zombie_attack_tower_lever",::preform_zombie_object_melee,::preform_zombie_object_melee_interrupt,3.75);
|
|
}
|
|
|
|
//Function Number: 2
|
|
create_inanimate_zombie_enemy(param_00,param_01,param_02,param_03,param_04,param_05,param_06,param_07,param_08,param_09,param_0A)
|
|
{
|
|
self endon("death");
|
|
self endon("entitydeleted");
|
|
self.optionalattackpositions = param_07;
|
|
self.maxzombies = param_00;
|
|
self.var_FB = param_01;
|
|
self.var_BC = param_01;
|
|
self.shouldterminate = 0;
|
|
var_0B = 0.125;
|
|
foreach(var_0D in param_06)
|
|
{
|
|
thread terminate_on(var_0D,param_02);
|
|
}
|
|
|
|
if(isdefined(param_0A))
|
|
{
|
|
thread aa_gun_health_check(param_0A);
|
|
}
|
|
|
|
var_0F = get_cur_objective_health();
|
|
while(var_0F > 0 && !self.shouldterminate)
|
|
{
|
|
if(isdefined(param_0A))
|
|
{
|
|
param_0A setclientomnvar("ui_zm_turret_health",self.var_BC * 0.0025);
|
|
}
|
|
|
|
var_10 = lib_0547::func_43F0(self.var_116,param_04,param_03,1);
|
|
var_10 = common_scripts\utility::func_40B0(self.var_116,var_10);
|
|
foreach(var_12 in var_10)
|
|
{
|
|
if(var_12 has_a_distraction())
|
|
{
|
|
if(lib_0547::func_5565(var_12.enemy_object,self))
|
|
{
|
|
var_12 thread preform_zombie_object_melee_interrupt(self);
|
|
continue;
|
|
}
|
|
}
|
|
|
|
if(lib_0547::func_5565(var_12.var_A4B,"zombie_exploder") && !common_scripts\utility::func_562E(var_12.var_392C))
|
|
{
|
|
if(var_12 has_a_distraction())
|
|
{
|
|
var_12 thread preform_zombie_object_melee_interrupt(self);
|
|
}
|
|
|
|
continue;
|
|
}
|
|
|
|
if(!var_12 zombie_is_valid_type(param_08))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!var_12 zombie_should_attack(param_09))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_12 already_attacking_an_objective())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(var_12 has_a_distraction())
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!get_number_zombies_attacking_objective() >= self.maxzombies)
|
|
{
|
|
var_12 set_zombie_attacking_this_object(self);
|
|
}
|
|
}
|
|
|
|
var_0F = get_cur_objective_health();
|
|
wait(var_0B);
|
|
}
|
|
|
|
if(!isdefined(self.capture_health))
|
|
{
|
|
clear_zombie_interest();
|
|
}
|
|
|
|
self thread [[ param_05 ]]();
|
|
common_scripts\utility::func_379A(param_02);
|
|
}
|
|
|
|
//Function Number: 3
|
|
get_cur_objective_health()
|
|
{
|
|
if(isdefined(self.capture_health))
|
|
{
|
|
var_00 = self.capture_health;
|
|
}
|
|
else
|
|
{
|
|
var_00 = self.var_BC;
|
|
}
|
|
|
|
return var_00;
|
|
}
|
|
|
|
//Function Number: 4
|
|
has_a_distraction()
|
|
{
|
|
var_00 = self;
|
|
if(isdefined(var_00.var_3043))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
if(var_00 lib_053C::func_5686())
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 5
|
|
aa_gun_health_check(param_00)
|
|
{
|
|
param_00 endon("left_aa_gun");
|
|
for(;;)
|
|
{
|
|
param_00 waittill("aagun_damage");
|
|
self.var_BC = self.var_BC - 5;
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
clear_zombie_interest()
|
|
{
|
|
var_00 = lib_0547::func_408F();
|
|
foreach(var_02 in var_00)
|
|
{
|
|
if(lib_0547::func_5565(var_02.enemy_object,self))
|
|
{
|
|
var_02 thread preform_zombie_object_melee_interrupt(self);
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 7
|
|
terminate_on(param_00,param_01)
|
|
{
|
|
self [[ param_00 ]](param_01);
|
|
self.shouldterminate = 1;
|
|
}
|
|
|
|
//Function Number: 8
|
|
preform_zombie_object_melee(param_00)
|
|
{
|
|
if(!isdefined(self.var_9B61))
|
|
{
|
|
preform_zombie_object_melee_interrupt(param_00);
|
|
return;
|
|
}
|
|
|
|
var_01 = self [[ maps/mp/agents/_agent_utility::func_A59("get_action_params") ]]();
|
|
var_02 = undefined;
|
|
foreach(var_04 in ["zombie_attack_tower_lever","attack_stand"])
|
|
{
|
|
var_02 = maps/mp/agents/_scripted_agent_anim_util::func_87C(var_04,var_01);
|
|
if(isdefined(var_02))
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
|
|
if(!isdefined(var_02))
|
|
{
|
|
return;
|
|
}
|
|
|
|
self scragentsetscripted(1);
|
|
self scragentsetorientmode("face angle abs",self.var_9B61.var_1D);
|
|
self setorigin(param_00.var_116,0);
|
|
for(;;)
|
|
{
|
|
var_06 = self method_83DB(var_02);
|
|
var_07 = randomint(var_06);
|
|
maps/mp/agents/_scripted_agent_anim_util::func_71FA(var_02,var_07,1,"scripted_anim");
|
|
if(isdefined(self.enemy_object))
|
|
{
|
|
self.enemy_object take_objective_health(45);
|
|
if(isdefined(self.enemy_object.ondamagetakenfunc))
|
|
{
|
|
self.enemy_object thread [[ self.enemy_object.ondamagetakenfunc ]]();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Function Number: 9
|
|
take_objective_health(param_00)
|
|
{
|
|
if(isdefined(self.capture_health))
|
|
{
|
|
self.capture_health = self.capture_health - param_00;
|
|
return;
|
|
}
|
|
|
|
self.var_BC = self.var_BC - param_00;
|
|
}
|
|
|
|
//Function Number: 10
|
|
preform_zombie_object_melee_interrupt(param_00)
|
|
{
|
|
self notify("cancel_attack_travel");
|
|
self.enemy_object = undefined;
|
|
self.var_9B61 = undefined;
|
|
self scragentsetscripted(0);
|
|
}
|
|
|
|
//Function Number: 11
|
|
set_zombie_attacking_this_object(param_00)
|
|
{
|
|
self.enemy_object = param_00;
|
|
var_01 = param_00 get_number_zombies_attacking_objective();
|
|
if(isdefined(param_00.optionalattackpositions))
|
|
{
|
|
self.var_9B61 = get_available_attack_point(param_00.optionalattackpositions);
|
|
}
|
|
else
|
|
{
|
|
self.var_9B61 = param_00;
|
|
}
|
|
|
|
thread travel_and_attack_position(self.var_9B61,param_00);
|
|
}
|
|
|
|
//Function Number: 12
|
|
get_available_attack_point(param_00)
|
|
{
|
|
var_01 = param_00;
|
|
foreach(var_03 in lib_0547::func_408F())
|
|
{
|
|
if(var_03 == self)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
if(!isdefined(var_03.var_9B61))
|
|
{
|
|
continue;
|
|
}
|
|
|
|
var_01 = common_scripts\utility::func_F93(var_01,var_03.var_9B61);
|
|
}
|
|
|
|
if(var_01.size == 0)
|
|
{
|
|
return common_scripts\utility::func_7A33(param_00);
|
|
}
|
|
|
|
return common_scripts\utility::func_7A33(var_01);
|
|
}
|
|
|
|
//Function Number: 13
|
|
travel_and_attack_position(param_00,param_01)
|
|
{
|
|
self endon("death");
|
|
self endon("cancel_attack_travel");
|
|
if(!maps\mp\_utility::func_4571() == "mp_zombie_island")
|
|
{
|
|
self.var_6941 = 1;
|
|
}
|
|
|
|
while(distance(self.var_116,self.var_9B61.var_116) > 64)
|
|
{
|
|
wait 0.05;
|
|
}
|
|
|
|
if(lib_0547::func_5565(self.var_A4B,"zombie_exploder"))
|
|
{
|
|
param_01.var_BC = param_01.var_BC - int(param_01.var_FB / 5);
|
|
lib_0563::func_AB99(undefined,undefined,self.var_BC + 1,undefined,"MOD_BULLET","m1911_zm",self.var_116,(0,0,0),"tag_origin",0,"tag_weapon");
|
|
return;
|
|
}
|
|
|
|
thread lib_0547::func_7D1A("zombie_attack_tower_lever",[param_00]);
|
|
}
|
|
|
|
//Function Number: 14
|
|
already_attacking_an_objective(param_00)
|
|
{
|
|
return isdefined(self.enemy_object);
|
|
}
|
|
|
|
//Function Number: 15
|
|
get_number_zombies_attacking_objective()
|
|
{
|
|
var_00 = lib_0547::func_408F();
|
|
var_01 = 0;
|
|
foreach(var_03 in var_00)
|
|
{
|
|
if(lib_0547::func_5565(var_03.enemy_object,self))
|
|
{
|
|
var_01++;
|
|
}
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 16
|
|
zombie_should_attack(param_00)
|
|
{
|
|
foreach(var_02 in param_00)
|
|
{
|
|
if(allowed_to_attack(var_02))
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
//Function Number: 17
|
|
allowed_to_attack(param_00)
|
|
{
|
|
var_01 = 1;
|
|
switch(param_00)
|
|
{
|
|
case "zombie_is_passive":
|
|
var_01 = !isdefined(self.var_3794["zombie_passive"]) || !common_scripts\utility::func_3794("zombie_passive");
|
|
break;
|
|
|
|
case "zombie_is_crawler":
|
|
var_01 = !common_scripts\utility::func_562E(self.var_2FDA);
|
|
break;
|
|
|
|
case "zombie_is_objective":
|
|
var_01 = !isdefined(self.escort_wps);
|
|
break;
|
|
|
|
case "zombie_is_stunned":
|
|
var_01 = !common_scripts\utility::func_562E(self.var_561D);
|
|
break;
|
|
}
|
|
|
|
return var_01;
|
|
}
|
|
|
|
//Function Number: 18
|
|
zombie_is_valid_type(param_00)
|
|
{
|
|
if(!isdefined(param_00))
|
|
{
|
|
return 1;
|
|
}
|
|
|
|
return common_scripts\utility::func_F79(param_00,self.var_A4B);
|
|
} |