mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
435 lines
13 KiB
Plaintext
435 lines
13 KiB
Plaintext
/*******************************************************************
|
|
* Decompiled By: Bog
|
|
* Decompiled File: _mark_and_execute.gsc
|
|
* Game: Call of Duty: Advanced Warfare
|
|
* Platform: PC
|
|
* Function Count: 19
|
|
* Decompile Time: 296 ms
|
|
* Timestamp: 4/22/2024 2:21:48 AM
|
|
*******************************************************************/
|
|
|
|
//Function Number: 1
|
|
main()
|
|
{
|
|
precacheshader("dpad_laser_designator");
|
|
precacheitem("rsass_silenced");
|
|
}
|
|
|
|
//Function Number: 2
|
|
mark_and_execute_on(param_00)
|
|
{
|
|
level.hud_mark = set_temp_hud_text("default",1,&"IRONS_ESTATE_MARK",-398,-52);
|
|
level.hud_execute = set_temp_hud_text("default",1,&"IRONS_ESTATE_EXECUTE",-365,-35);
|
|
level.hud_execute.color = (1,0,0);
|
|
self notifyonplayercommand("mark","+actionslot 3");
|
|
self notifyonplayercommand("execute","+actionslot 2");
|
|
level.executer = param_00;
|
|
thread mark_monitor();
|
|
thread execute_monitor();
|
|
setup_generic_target_acquired_vo();
|
|
setup_generic_no_shot_vo();
|
|
setup_generic_target_down_vo();
|
|
setup_generic_taking_the_shot_vo();
|
|
setup_player_blocking_shot_vo();
|
|
}
|
|
|
|
//Function Number: 3
|
|
mark_and_execute_off()
|
|
{
|
|
self notify("mark_and_execute_off");
|
|
wait(0.05);
|
|
if(isdefined(level.hud_mark))
|
|
{
|
|
level.hud_mark destroy();
|
|
}
|
|
|
|
if(isdefined(level.hud_execute))
|
|
{
|
|
level.hud_execute destroy();
|
|
}
|
|
}
|
|
|
|
//Function Number: 4
|
|
set_temp_hud_text(param_00,param_01,param_02,param_03,param_04)
|
|
{
|
|
var_05 = maps\_hud_util::createfontstring(param_00,param_01);
|
|
var_05 settext(param_02);
|
|
var_05 maps\_hud_util::setpoint("CENTER","BOTTOM",param_03,param_04);
|
|
return var_05;
|
|
}
|
|
|
|
//Function Number: 5
|
|
mark_monitor()
|
|
{
|
|
self endon("death");
|
|
self endon("mark_and_execute_off");
|
|
level.marked_enemy = undefined;
|
|
for(;;)
|
|
{
|
|
self waittill("mark");
|
|
var_00 = bullettrace(self geteye(),self geteye() + anglestoforward(self getplayerangles()) * 50000,1,self,0,0,0,0,0);
|
|
if(isdefined(var_00["entity"]))
|
|
{
|
|
var_01 = var_00["entity"];
|
|
if(isai(var_01) && isenemyteam(var_01.team,self.team) && isalive(var_01))
|
|
{
|
|
common_scripts\utility::flag_set("marked_enemy");
|
|
attempt_mark_enemy(var_01);
|
|
}
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 6
|
|
attempt_mark_enemy(param_00)
|
|
{
|
|
level.player endon("death");
|
|
level.player endon("mark_and_execute_off");
|
|
if(isdefined(level.marked_enemy) && level.marked_enemy == param_00)
|
|
{
|
|
level.marked_enemy unmark_enemy();
|
|
return;
|
|
}
|
|
|
|
if(isdefined(level.marked_enemy) && level.marked_enemy != param_00)
|
|
{
|
|
level.marked_enemy unmark_enemy();
|
|
param_00 mark_enemy();
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level.marked_enemy))
|
|
{
|
|
param_00 mark_enemy();
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 7
|
|
mark_enemy()
|
|
{
|
|
self endon("death");
|
|
self endon("mark_and_execute_off");
|
|
self notify("marked");
|
|
level notify("new_enemy_marked");
|
|
thread maps\_tagging::tag_enemy(level.player);
|
|
level.marked_enemy = self;
|
|
thread marked_enemy_death_cleanup();
|
|
thread marked_enemy_marker();
|
|
thread can_shoot_enemy_monitor();
|
|
}
|
|
|
|
//Function Number: 8
|
|
unmark_enemy()
|
|
{
|
|
self endon("death");
|
|
self endon("mark_and_execute_off");
|
|
self notify("unmarked");
|
|
level.executer.can_shoot_enemy = undefined;
|
|
level.marked_enemy = undefined;
|
|
}
|
|
|
|
//Function Number: 9
|
|
execute_monitor()
|
|
{
|
|
self endon("death");
|
|
self endon("mark_and_execute_off");
|
|
for(;;)
|
|
{
|
|
var_00 = common_scripts\utility::waittill_any_return("execute","weapon_fired");
|
|
if(var_00 == "weapon_fired")
|
|
{
|
|
var_01 = bullettrace(self geteye(),self geteye() + anglestoforward(self getplayerangles()) * 50000,1,self,0,0,0,0,0);
|
|
if(isdefined(var_01["entity"]))
|
|
{
|
|
var_02 = var_01["entity"];
|
|
if(isai(var_02) && isenemyteam(var_02.team,self.team))
|
|
{
|
|
attempt_execute();
|
|
}
|
|
}
|
|
}
|
|
else if(var_00 == "execute")
|
|
{
|
|
attempt_execute();
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 10
|
|
attempt_execute()
|
|
{
|
|
level.player endon("death");
|
|
level.player endon("mark_and_execute_off");
|
|
level endon("new_enemy_marked");
|
|
level notify("new_execute_attempted");
|
|
level endon("new_execute_attempted");
|
|
if(isdefined(level.marked_enemy) && isalive(level.marked_enemy) && isdefined(level.executer))
|
|
{
|
|
if(isdefined(level.executer.can_shoot_enemy) && level.executer.can_shoot_enemy == 1 && isdefined(level.executer.shoot_tag))
|
|
{
|
|
var_00 = level.marked_enemy;
|
|
level.marked_enemy.health = 1;
|
|
magicbullet("rsass_silenced",level.executer.origin,var_00 gettagorigin(level.executer.shoot_tag));
|
|
wait(0.1);
|
|
if(isdefined(var_00) && isalive(var_00))
|
|
{
|
|
var_00 kill(level.executer.origin);
|
|
}
|
|
|
|
wait(0.1);
|
|
var_01 = common_scripts\utility::random(level.generic_target_down_vo_lines);
|
|
thread mark_and_execute_vo_controller(var_01);
|
|
return;
|
|
}
|
|
|
|
if(isdefined(level.player_blocking_shot) && level.player_blocking_shot == 1)
|
|
{
|
|
var_01 = common_scripts\utility::random(level.player_blocking_shot_vo_lines);
|
|
thread mark_and_execute_vo_controller(var_01);
|
|
return;
|
|
}
|
|
|
|
var_01 = common_scripts\utility::random(level.generic_no_shot_vo_lines);
|
|
thread mark_and_execute_vo_controller(var_01);
|
|
return;
|
|
}
|
|
}
|
|
|
|
//Function Number: 11
|
|
can_shoot_enemy_monitor()
|
|
{
|
|
self endon("death");
|
|
self endon("unmarked");
|
|
level.player endon("death");
|
|
level.player endon("mark_and_execute_off");
|
|
var_00 = common_scripts\utility::random(level.generic_target_acquired_vo_lines);
|
|
thread mark_and_execute_vo_controller(var_00);
|
|
for(;;)
|
|
{
|
|
if(isdefined(level.marked_enemy) && isalive(level.marked_enemy))
|
|
{
|
|
var_01 = bullettrace(level.executer.origin,level.marked_enemy gettagorigin("j_head"),1,level.executer,0,1,1,0,0);
|
|
if(isdefined(var_01["entity"]) && var_01["entity"] == level.marked_enemy)
|
|
{
|
|
level.hud_execute.color = (0,1,0);
|
|
level.executer.can_shoot_enemy = 1;
|
|
level.executer.shoot_tag = "j_head";
|
|
level.player_blocking_shot = 0;
|
|
}
|
|
else if(isdefined(var_01["entity"]) && var_01["entity"] == level.player)
|
|
{
|
|
level.player_blocking_shot = 1;
|
|
level.hud_execute.color = (1,0,0);
|
|
level.executer.can_shoot_enemy = undefined;
|
|
level.executer.shoot_tag = undefined;
|
|
}
|
|
else
|
|
{
|
|
var_01 = bullettrace(level.executer.origin,level.marked_enemy gettagorigin("j_SpineUpper"),1,level.executer,0,1,1,0,0);
|
|
if(isdefined(var_01["entity"]) && var_01["entity"] == level.marked_enemy)
|
|
{
|
|
level.hud_execute.color = (0,1,0);
|
|
level.executer.can_shoot_enemy = 1;
|
|
level.executer.shoot_tag = "j_SpineUpper";
|
|
level.player_blocking_shot = 0;
|
|
}
|
|
else if(isdefined(var_01["entity"]) && var_01["entity"] == level.player)
|
|
{
|
|
level.player_blocking_shot = 1;
|
|
level.hud_execute.color = (1,0,0);
|
|
level.executer.can_shoot_enemy = undefined;
|
|
level.executer.shoot_tag = undefined;
|
|
}
|
|
else
|
|
{
|
|
var_01 = bullettrace(level.executer.origin,level.marked_enemy gettagorigin("J_SpineLower"),1,level.executer,0,1,1,0,0);
|
|
if(isdefined(var_01["entity"]) && var_01["entity"] == level.marked_enemy)
|
|
{
|
|
level.hud_execute.color = (0,1,0);
|
|
level.executer.can_shoot_enemy = 1;
|
|
level.executer.shoot_tag = "J_SpineLower";
|
|
level.player_blocking_shot = 0;
|
|
}
|
|
else if(isdefined(var_01["entity"]) && var_01["entity"] == level.player)
|
|
{
|
|
level.player_blocking_shot = 1;
|
|
level.hud_execute.color = (1,0,0);
|
|
level.executer.can_shoot_enemy = undefined;
|
|
level.executer.shoot_tag = undefined;
|
|
}
|
|
else
|
|
{
|
|
level.hud_execute.color = (1,0,0);
|
|
level.executer.can_shoot_enemy = undefined;
|
|
level.executer.shoot_tag = undefined;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 12
|
|
marked_enemy_death_cleanup()
|
|
{
|
|
level.player endon("death");
|
|
level.player endon("mark_and_execute_off");
|
|
self endon("unmarked");
|
|
self waittill("death");
|
|
level.hud_execute.color = (1,0,0);
|
|
level.executer.can_shoot_enemy = undefined;
|
|
level.executer.shoot_tag = undefined;
|
|
}
|
|
|
|
//Function Number: 13
|
|
marked_enemy_marker()
|
|
{
|
|
level.player endon("death");
|
|
level.player endon("mark_and_execute_off");
|
|
self endon("unmarked");
|
|
self endon("death");
|
|
while(isdefined(self) && isalive(self))
|
|
{
|
|
var_00 = distance(level.player.origin,self.origin);
|
|
var_01 = 1500;
|
|
var_02 = 0;
|
|
var_03 = 0.25;
|
|
var_04 = 3;
|
|
var_05 = var_01 - var_02;
|
|
var_00 = clamp(var_00 - var_02,0,var_05);
|
|
var_06 = var_03 + var_00 / var_05 * var_04 - var_03;
|
|
wait(0.05);
|
|
}
|
|
}
|
|
|
|
//Function Number: 14
|
|
setup_generic_target_acquired_vo()
|
|
{
|
|
level.generic_target_acquired_vo_lines = [];
|
|
level.generic_target_acquired_vo_lines[0] = spawnstruct();
|
|
level.generic_target_acquired_vo_lines[0].vo = "ie_iln_targetacquired";
|
|
level.generic_target_acquired_vo_lines[0].vo_priority = 1;
|
|
level.generic_target_acquired_vo_lines[1] = spawnstruct();
|
|
level.generic_target_acquired_vo_lines[1].vo = "ie_iln_gothim";
|
|
level.generic_target_acquired_vo_lines[1].vo_priority = 1;
|
|
level.generic_target_acquired_vo_lines[2] = spawnstruct();
|
|
level.generic_target_acquired_vo_lines[2].vo = "ie_iln_trackingtarget";
|
|
level.generic_target_acquired_vo_lines[2].vo_priority = 1;
|
|
level.generic_target_acquired_vo_lines[3] = spawnstruct();
|
|
level.generic_target_acquired_vo_lines[3].vo = "ie_iln_watchyingtarget";
|
|
level.generic_target_acquired_vo_lines[3].vo_priority = 1;
|
|
}
|
|
|
|
//Function Number: 15
|
|
setup_generic_no_shot_vo()
|
|
{
|
|
level.generic_no_shot_vo_lines = [];
|
|
level.generic_no_shot_vo_lines[0] = spawnstruct();
|
|
level.generic_no_shot_vo_lines[0].vo = "ie_iln_noshot";
|
|
level.generic_no_shot_vo_lines[0].vo_priority = 2;
|
|
level.generic_no_shot_vo_lines[1] = spawnstruct();
|
|
level.generic_no_shot_vo_lines[1].vo = "ie_iln_idonthaveashot";
|
|
level.generic_no_shot_vo_lines[1].vo_priority = 2;
|
|
level.generic_no_shot_vo_lines[2] = spawnstruct();
|
|
level.generic_no_shot_vo_lines[2].vo = "ie_iln_donthaveashot";
|
|
level.generic_no_shot_vo_lines[2].vo_priority = 2;
|
|
level.generic_no_shot_vo_lines[3] = spawnstruct();
|
|
level.generic_no_shot_vo_lines[3].vo = "ie_iln_donthavehim";
|
|
level.generic_no_shot_vo_lines[3].vo_priority = 2;
|
|
level.generic_no_shot_vo_lines[4] = spawnstruct();
|
|
level.generic_no_shot_vo_lines[4].vo = "ie_iln_targetobstructed";
|
|
level.generic_no_shot_vo_lines[4].vo_priority = 2;
|
|
level.generic_no_shot_vo_lines[5] = spawnstruct();
|
|
level.generic_no_shot_vo_lines[5].vo = "ie_iln_noclearshot";
|
|
level.generic_no_shot_vo_lines[5].vo_priority = 2;
|
|
level.generic_no_shot_vo_lines[6] = spawnstruct();
|
|
level.generic_no_shot_vo_lines[6].vo = "ie_iln_outofsight";
|
|
level.generic_no_shot_vo_lines[6].vo_priority = 2;
|
|
level.generic_no_shot_vo_lines[7] = spawnstruct();
|
|
level.generic_no_shot_vo_lines[7].vo = "ie_iln_outofview";
|
|
level.generic_no_shot_vo_lines[7].vo_priority = 2;
|
|
}
|
|
|
|
//Function Number: 16
|
|
setup_player_blocking_shot_vo()
|
|
{
|
|
level.player_blocking_shot_vo_lines = [];
|
|
level.player_blocking_shot_vo_lines[0] = spawnstruct();
|
|
level.player_blocking_shot_vo_lines[0].vo = "ie_iln_mitchellblockingmyshot";
|
|
level.player_blocking_shot_vo_lines[0].vo_priority = 0;
|
|
level.player_blocking_shot_vo_lines[1] = spawnstruct();
|
|
level.player_blocking_shot_vo_lines[1].vo = "ie_iln_blockingmyshot";
|
|
level.player_blocking_shot_vo_lines[1].vo_priority = 0;
|
|
level.player_blocking_shot_vo_lines[2] = spawnstruct();
|
|
level.player_blocking_shot_vo_lines[2].vo = "ie_iln_moveoutoftheway";
|
|
level.player_blocking_shot_vo_lines[2].vo_priority = 0;
|
|
level.player_blocking_shot_vo_lines[3] = spawnstruct();
|
|
level.player_blocking_shot_vo_lines[3].vo = "ie_iln_getoutoftheway";
|
|
level.player_blocking_shot_vo_lines[3].vo_priority = 0;
|
|
}
|
|
|
|
//Function Number: 17
|
|
setup_generic_target_down_vo()
|
|
{
|
|
level.generic_target_down_vo_lines = [];
|
|
level.generic_target_down_vo_lines[0] = spawnstruct();
|
|
level.generic_target_down_vo_lines[0].vo = "ie_iln_targetsdown";
|
|
level.generic_target_down_vo_lines[0].vo_priority = 2;
|
|
level.generic_target_down_vo_lines[1] = spawnstruct();
|
|
level.generic_target_down_vo_lines[1].vo = "ie_iln_hesdown";
|
|
level.generic_target_down_vo_lines[1].vo_priority = 2;
|
|
level.generic_target_down_vo_lines[2] = spawnstruct();
|
|
level.generic_target_down_vo_lines[2].vo = "ie_iln_igothim";
|
|
level.generic_target_down_vo_lines[2].vo_priority = 2;
|
|
level.generic_target_down_vo_lines[3] = spawnstruct();
|
|
level.generic_target_down_vo_lines[3].vo = "ie_iln_targetneutralized";
|
|
level.generic_target_down_vo_lines[3].vo_priority = 2;
|
|
}
|
|
|
|
//Function Number: 18
|
|
setup_generic_taking_the_shot_vo()
|
|
{
|
|
level.generic_taking_the_shot_vo_lines = [];
|
|
level.generic_taking_the_shot_vo_lines[0] = spawnstruct();
|
|
level.generic_taking_the_shot_vo_lines[0].vo = "ie_iln_takingshot";
|
|
level.generic_taking_the_shot_vo_lines[0].vo_priority = 0;
|
|
}
|
|
|
|
//Function Number: 19
|
|
mark_and_execute_vo_controller(param_00)
|
|
{
|
|
level.player endon("death");
|
|
level.player endon("mark_and_execute_off");
|
|
level endon("meet_cormack_end");
|
|
if(isdefined(level.play_ilana_vo) && level.play_ilana_vo == 1)
|
|
{
|
|
if(isdefined(level.current_vo) && isdefined(param_00.vo_priority) && param_00.vo_priority > level.current_vo.vo_priority)
|
|
{
|
|
level.ilana_vo_org stopsounds();
|
|
wait(0.05);
|
|
level.current_vo = param_00;
|
|
level.ilana_vo_org playsound(param_00.vo,"sounddone",1);
|
|
level.ilana_vo_org waittill("sounddone");
|
|
wait(0.5);
|
|
level.current_vo = undefined;
|
|
return;
|
|
}
|
|
|
|
if(!isdefined(level.current_vo))
|
|
{
|
|
level.current_vo = param_00;
|
|
level.ilana_vo_org playsound(param_00.vo,"sounddone",1);
|
|
level.ilana_vo_org waittill("sounddone");
|
|
wait(0.5);
|
|
level.current_vo = undefined;
|
|
return;
|
|
}
|
|
}
|
|
} |