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

1481 lines
27 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: battlechatter_ai.gsc
* Game: Call of Duty: Advanced Warfare
* Platform: PC
* Function Count: 58
* Decompile Time: 845 ms
* Timestamp: 4/22/2024 2:00:01 AM
*******************************************************************/
//Function Number: 1
addtosystem(param_00)
{
self endon("death");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
if(self.chatinitialized)
{
return;
}
if(!isdefined(self.squad.chatinitialized) || !self.squad.chatinitialized)
{
self.squad animscripts\battlechatter::init_squadbattlechatter();
}
self.enemyclass = "infantry";
self.calledout = [];
if(isplayer(self))
{
self.battlechatter = 0;
self.flavorbursts = 0;
self.type = "human";
return;
}
if(self.type == "dog")
{
self.enemyclass = undefined;
self.battlechatter = 0;
self.flavorbursts = 0;
return;
}
if(self.team == "neutral")
{
self.enemyclass = undefined;
self.battlechatter = 0;
self.flavorbursts = 0;
return;
}
if(forceenglish())
{
if(self.team == "allies")
{
self.script_battlechatter = 0;
}
else
{
self.voice = "american";
}
}
self.countryid = level.countryids[self.voice];
assign_npcid();
thread ainameandrankwaiter();
init_aibattlechatter();
thread aithreadthreader();
}
//Function Number: 2
assign_npcid()
{
if(isdefined(self.script_friendname))
{
var_00 = tolower(self.script_friendname);
if(issubstr(var_00,"burke"))
{
self.npcid = "brk";
return;
}
if(issubstr(var_00,"carter"))
{
self.npcid = "ctr";
return;
}
if(issubstr(var_00,"joker"))
{
self.npcid = "jkr";
return;
}
if(issubstr(var_00,"alpha_leader"))
{
self.npcid = "aldr";
return;
}
if(issubstr(var_00,"cormack"))
{
self.npcid = "aldr";
return;
}
if(issubstr(var_00,"knox"))
{
self.npcid = "jkr";
return;
}
if(issubstr(var_00,"maddox"))
{
self.dds_characterid = "jkr";
return;
}
if(issubstr(var_00,"security_officer_1"))
{
self.npcid = "ctr";
return;
}
setnpcid();
return;
}
setnpcid();
}
//Function Number: 3
forceenglish()
{
if(!getdvarint("bcs_forceEnglish",0))
{
return 0;
}
switch(level.script)
{
case "pmc_strike":
return 1;
}
return 0;
}
//Function Number: 4
aithreadthreader()
{
self endon("death");
self endon("removed from battleChatter");
var_00 = 0.5;
wait(var_00);
thread aigrenadedangerwaiter();
thread aifolloworderwaiter();
if(self.team == "allies")
{
wait(var_00);
thread aidisplacewaiter();
if(self.countryid == "CZ")
{
thread aihostileburstloop();
}
}
else if((self.team == "axis" || self.team == "team3") && !isalliedcountryid(self.countryid))
{
thread aihostileburstloop();
}
if(self.team == level.player.team)
{
thread player_friendlyfire_waiter();
}
wait(var_00);
thread aibattlechatterloop();
}
//Function Number: 5
isalliedcountryid(param_00)
{
if(param_00 == "UK" || param_00 == "US" || param_00 == "NS" || param_00 == "TF" || param_00 == "SS" || param_00 == "XS")
{
return 1;
}
return 0;
}
//Function Number: 6
setnpcid()
{
var_00 = level.usedids[self.voice];
var_01 = var_00.size;
var_02 = randomintrange(0,var_01);
var_03 = var_02;
for(var_04 = 0;var_04 <= var_01;var_04++)
{
if(var_00[var_02 + var_04 % var_01].count < var_00[var_03].count)
{
var_03 = var_02 + var_04 % var_01;
}
}
thread npcidtracker(var_03);
self.npcid = var_00[var_03].npcid;
}
//Function Number: 7
npcidtracker(param_00)
{
level.usedids[self.voice][param_00].count++;
common_scripts\utility::waittill_either("death","removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
level.usedids[self.voice][param_00].count--;
}
//Function Number: 8
aihostileburstloop()
{
self endon("death");
self endon("removed from battleChatter");
wait(2);
for(;;)
{
if(distancesquared(self.origin,level.player.origin) < 1048576)
{
if(isdefined(self.squad.membercount) && self.squad.membercount > 1)
{
addreactionevent("taunt","hostileburst");
}
}
wait(randomfloatrange(2,5));
}
}
//Function Number: 9
aibattlechatterloop()
{
self endon("death");
self endon("removed from battleChatter");
for(;;)
{
animscripts\battlechatter::playbattlechatter();
wait(0.3 + randomfloat(0.2));
}
}
//Function Number: 10
ainameandrankwaiter()
{
self endon("death");
self endon("removed from battleChatter");
for(;;)
{
self.bcname = animscripts\battlechatter::getname();
self.bcrank = animscripts\battlechatter::getrank();
self waittill("set name and rank");
}
}
//Function Number: 11
removefromsystem(param_00)
{
if(!isalive(self) && animscripts\battlechatter::bcsenabled())
{
if(isdefined(self))
{
aideathfriendly();
aideathenemy();
}
}
if(isdefined(self))
{
self.battlechatter = 0;
self.chatinitialized = 0;
}
self notify("removed from battleChatter");
if(isdefined(self))
{
self.chatqueue = undefined;
self.nextsaytime = undefined;
self.nextsaytimes = undefined;
self.isspeaking = undefined;
self.enemyclass = undefined;
self.calledout = undefined;
self.countryid = undefined;
self.npcid = undefined;
}
}
//Function Number: 12
init_aibattlechatter()
{
self.chatqueue = [];
self.chatqueue["threat"] = spawnstruct();
self.chatqueue["threat"].expiretime = 0;
self.chatqueue["threat"].priority = 0;
self.chatqueue["response"] = spawnstruct();
self.chatqueue["response"].expiretime = 0;
self.chatqueue["response"].priority = 0;
self.chatqueue["reaction"] = spawnstruct();
self.chatqueue["reaction"].expiretime = 0;
self.chatqueue["reaction"].priority = 0;
self.chatqueue["inform"] = spawnstruct();
self.chatqueue["inform"].expiretime = 0;
self.chatqueue["inform"].priority = 0;
self.chatqueue["order"] = spawnstruct();
self.chatqueue["order"].expiretime = 0;
self.chatqueue["order"].priority = 0;
self.chatqueue["custom"] = spawnstruct();
self.chatqueue["custom"].expiretime = 0;
self.chatqueue["custom"].priority = 0;
self.nextsaytime = gettime() + 50;
self.nextsaytimes["threat"] = 0;
self.nextsaytimes["reaction"] = 0;
self.nextsaytimes["response"] = 0;
self.nextsaytimes["inform"] = 0;
self.nextsaytimes["order"] = 0;
self.nextsaytimes["custom"] = 0;
self.isspeaking = 0;
self.bcs_minpriority = 0;
self.allowedcallouts = [];
if(self.voice != "xslice")
{
animscripts\battlechatter::addallowedthreatcallout("rpg");
}
animscripts\battlechatter::addallowedthreatcallout("exposed");
animscripts\battlechatter::addallowedthreatcallout("ai_contact_clock");
if(self.voice != "xslice")
{
animscripts\battlechatter::addallowedthreatcallout("ai_target_clock");
animscripts\battlechatter::addallowedthreatcallout("ai_cardinal");
}
if(self.voice != "shadowcompany")
{
if(self.voice != "british" && self.voice != "pmc" && self.voice != "xslice")
{
animscripts\battlechatter::addallowedthreatcallout("ai_obvious");
}
}
if(self.team == "allies")
{
if(common_scripts\utility::array_contains(level.playernameids,self.voice))
{
animscripts\battlechatter::addallowedthreatcallout("player_contact_clock");
if(self.voice != "xslice")
{
animscripts\battlechatter::addallowedthreatcallout("player_target_clock");
animscripts\battlechatter::addallowedthreatcallout("player_cardinal");
animscripts\battlechatter::addallowedthreatcallout("player_obvious");
animscripts\battlechatter::addallowedthreatcallout("player_object_clock");
}
animscripts\battlechatter::addallowedthreatcallout("player_location");
}
animscripts\battlechatter::addallowedthreatcallout("ai_location");
if(self.voice != "xslice")
{
animscripts\battlechatter::addallowedthreatcallout("generic_location");
}
if(self.voice == "delta" || self.voice == "taskforce" || self.voice == "seal")
{
animscripts\battlechatter::addallowedthreatcallout("ai_obvious");
animscripts\battlechatter::addallowedthreatcallout("ai_casual_clock");
animscripts\battlechatter::addallowedthreatcallout("concat_location");
animscripts\battlechatter::addallowedthreatcallout("player_distance");
animscripts\battlechatter::addallowedthreatcallout("player_target_clock_high");
animscripts\battlechatter::addallowedthreatcallout("ai_distance");
animscripts\battlechatter::addallowedthreatcallout("ai_target_clock_high");
}
}
if(isdefined(self.script_battlechatter) && !self.script_battlechatter)
{
self.battlechatter = 0;
}
else
{
self.battlechatter = level.battlechatter[self.team];
}
if(animscripts\battlechatter::voicecanburst())
{
self.flavorbursts = 1;
}
else
{
self.flavorbursts = 0;
}
if(level.friendlyfire_warnings)
{
maps\_utility::set_friendlyfire_warnings(1);
}
else
{
maps\_utility::set_friendlyfire_warnings(0);
}
self.chatinitialized = 1;
}
//Function Number: 13
addthreatevent(param_00,param_01,param_02)
{
self endon("death");
self endon("removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
if(!animscripts\battlechatter::cansay("threat",param_00,param_02))
{
return;
}
if(animscripts\battlechatter::threatwasalreadycalledout(param_01) && !isplayer(param_01))
{
return;
}
var_03 = animscripts\battlechatter::createchatevent("threat",param_00,param_02);
switch(param_00)
{
case "infantry":
var_03.threat = param_01;
break;
}
if(isdefined(param_01.squad))
{
self.squad animscripts\battlechatter::updatecontact(param_01.squad.squadname,self);
}
self.chatqueue["threat"] = undefined;
self.chatqueue["threat"] = var_03;
}
//Function Number: 14
addresponseevent(param_00,param_01,param_02,param_03,param_04,param_05)
{
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
thread addresponseevent_internal(param_00,param_01,param_02,param_03,param_04,param_05);
}
//Function Number: 15
addresponseevent_internal(param_00,param_01,param_02,param_03,param_04,param_05)
{
self endon("death");
self endon("removed from battleChatter");
self endon("responseEvent_failsafe");
thread responseevent_failsafe(param_02);
var_06 = param_02 common_scripts\utility::waittill_any_return("death","done speaking","cancel speaking");
if(var_06 == "cancel speaking")
{
return;
}
if(!isalive(param_02))
{
return;
}
if(!animscripts\battlechatter::cansay("response",param_00,param_03,param_01))
{
return;
}
if(!isplayer(param_02))
{
if(animscripts\battlechatter::isusingsamevoice(param_02))
{
return;
}
}
var_07 = animscripts\battlechatter::createchatevent("response",param_00,param_03);
if(isdefined(param_04))
{
var_07.reportalias = param_04;
}
if(isdefined(param_05))
{
var_07.location = param_05;
}
var_07.respondto = param_02;
var_07.modifier = param_01;
self.chatqueue["response"] = undefined;
self.chatqueue["response"] = var_07;
}
//Function Number: 16
responseevent_failsafe(param_00)
{
self endon("death");
self endon("removed from battleChatter");
param_00 endon("death");
param_00 endon("done speaking");
param_00 endon("cancel speaking");
wait(25);
self notify("responseEvent_failsafe");
}
//Function Number: 17
addinformevent(param_00,param_01,param_02,param_03)
{
self endon("death");
self endon("removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
if(!animscripts\battlechatter::cansay("inform",param_00,param_03,param_01))
{
return;
}
var_04 = animscripts\battlechatter::createchatevent("inform",param_00,param_03);
switch(param_00)
{
case "reloading":
var_04.modifier = param_01;
var_04.informto = param_02;
break;
default:
var_04.modifier = param_01;
break;
}
self.chatqueue["inform"] = undefined;
self.chatqueue["inform"] = var_04;
}
//Function Number: 18
addreactionevent(param_00,param_01,param_02,param_03)
{
self endon("death");
self endon("removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
if(!isdefined(self.chatqueue))
{
return;
}
var_04 = animscripts\battlechatter::createchatevent("reaction",param_00,param_03);
var_04.reactto = param_02;
var_04.modifier = param_01;
self.chatqueue["reaction"] = undefined;
self.chatqueue["reaction"] = var_04;
}
//Function Number: 19
addorderevent(param_00,param_01,param_02,param_03)
{
self endon("death");
self endon("removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
if(!animscripts\battlechatter::cansay("order",param_00,param_03,param_01))
{
return;
}
if(isdefined(param_02) && param_02.type == "dog")
{
return;
}
var_04 = animscripts\battlechatter::createchatevent("order",param_00,param_03);
var_04.modifier = param_01;
var_04.orderto = param_02;
self.chatqueue["order"] = undefined;
self.chatqueue["order"] = var_04;
}
//Function Number: 20
squadofficerwaiter()
{
anim endon("battlechatter disabled");
anim endon("squad deleted " + self.squadname);
for(;;)
{
var_00 = undefined;
if(self.officers.size)
{
var_01 = self.officers;
}
else
{
var_01 = self.members;
}
var_02 = [];
foreach(var_04 in var_01)
{
if(isalive(var_04))
{
var_02[var_02.size] = var_04;
}
}
if(var_02.size)
{
var_00 = common_scripts\utility::getclosest(level.player.origin,var_02);
var_00 aiofficerorders();
var_00 waittill("death");
}
wait(3);
}
}
//Function Number: 21
getthreatsovertime(param_00,param_01)
{
var_02 = param_00.size;
if(var_02 == 0)
{
wait(param_01);
return param_00;
}
var_03 = param_01 * 20;
var_04 = var_02 / var_03;
var_05 = [];
for(var_06 = 0;var_06 < var_02;var_06++)
{
var_07 = param_00[var_06];
if(!isdefined(var_07.enemyclass))
{
continue;
}
var_05[var_05.size] = param_00[var_06];
}
if(var_05.size == 0)
{
wait(param_01);
return var_05;
}
var_05 = sortbydistance(var_05,level.player.origin);
var_08 = [];
var_09 = [];
var_0A = 0;
foreach(var_0C in var_05)
{
if(isdefined(var_0C) && threatisviable(var_0C))
{
var_0D = var_0C animscripts\battlechatter::getlocation();
if(isdefined(var_0D) && !animscripts\battlechatter::location_called_out_recently(var_0D))
{
var_08[var_08.size] = var_0C;
}
else
{
var_09[var_09.size] = var_0C;
}
}
var_0A++;
if(var_0A >= var_04)
{
wait(0.05);
var_0A = 0;
}
}
var_05 = [];
foreach(var_10 in var_08)
{
var_05[var_05.size] = var_10;
}
foreach(var_10 in var_09)
{
var_05[var_05.size] = var_10;
}
return var_05;
}
//Function Number: 22
threatisviable(param_00)
{
if(distancesquared(level.player.origin,param_00.origin) > level.bcs_maxthreatdistsqrdfromplayer)
{
return 0;
}
if(!level.player animscripts\battlechatter::entinfrontarc(param_00))
{
return 0;
}
return 1;
}
//Function Number: 23
squadthreatwaiter()
{
anim endon("battlechatter disabled");
anim endon("squad deleted " + self.squadname);
for(;;)
{
if(self.team == "allies")
{
var_00 = getthreatsovertime(getaiarray("axis","team3"),0.5);
}
else if(self.team == "team3")
{
var_00 = getthreatsovertime(getaiarray("allies","axis"),0.5);
}
else
{
wait(0.5);
var_00 = getaiarray("allies","team3");
var_00[var_00.size] = level.player;
}
if(!var_00.size)
{
wait(0.05);
continue;
}
var_01 = [];
foreach(var_03 in self.members)
{
if(!isalive(var_03))
{
continue;
}
if(!var_00.size)
{
var_00 = var_01;
var_01 = [];
}
foreach(var_0A, var_05 in var_00)
{
if(!isdefined(var_05))
{
if(var_0A == 0)
{
var_00 = [];
}
continue;
}
if(!isalive(var_05))
{
continue;
}
if(!isdefined(var_05.enemyclass))
{
continue;
}
if(!var_03 cansee(var_05))
{
if(isplayer(var_05))
{
continue;
}
if(var_05.team == level.player.team)
{
continue;
}
if(!maps\_utility::player_can_see_ai(var_05,250))
{
continue;
}
}
var_03 addthreatevent(var_05.enemyclass,var_05);
var_01[var_01.size] = var_05;
var_06 = [];
foreach(var_08 in var_00)
{
if(var_08 != var_05)
{
var_06[var_06.size] = var_08;
}
}
var_00 = var_06;
break;
}
wait(0.05);
}
}
}
//Function Number: 24
aideathfriendly()
{
var_00 = self.attacker;
common_scripts\utility::array_thread(self.squad.members,::aideatheventthread);
if(isalive(var_00) && issentient(var_00) && isdefined(var_00.squad) && var_00.battlechatter)
{
if(isdefined(var_00.calledout[var_00.squad.squadname]))
{
var_00.calledout[var_00.squad.squadname] = undefined;
}
if(!isdefined(var_00.enemyclass))
{
return;
}
if(!var_00 animscripts\battlechatter::is_in_callable_location())
{
return;
}
foreach(var_02 in self.squad.members)
{
if(gettime() > var_02.lastenemysighttime + 2000)
{
continue;
}
var_02 addthreatevent(var_00.enemyclass,var_00);
}
}
}
//Function Number: 25
aideatheventthread()
{
if(!isalive(self))
{
return;
}
self endon("death");
self endon("removed from battleChatter");
self notify("aiDeathEventThread");
self endon("aiDeathEventThread");
wait(1.5);
addreactionevent("casualty","generic",self,0.9);
}
//Function Number: 26
aideathenemy()
{
var_00 = self.attacker;
if(!isalive(var_00) || !issentient(var_00) || !isdefined(var_00.squad))
{
return;
}
if(!isdefined(var_00.countryid) || var_00.countryid != "XS")
{
return;
}
if(!isplayer(var_00))
{
if(var_00.countryid == "GS" || var_00.countryid == "GM" || var_00.countryid == "GL")
{
var_00 thread aikilleventthread();
}
}
}
//Function Number: 27
aikilleventthread()
{
self endon("death");
self endon("removed from battleChatter");
wait(1.5);
addinformevent("killfirm","generic");
}
//Function Number: 28
aiofficerorders()
{
self endon("death");
self endon("removed from battleChatter");
if(!isdefined(self.squad.chatinitialized))
{
self.squad waittill("squad chat initialized");
}
for(;;)
{
if(getdvarint("bcs_enable") == 0)
{
wait(1);
continue;
}
addsituationalorder();
wait(randomfloatrange(3,6));
}
}
//Function Number: 29
aigrenadedangerwaiter()
{
self endon("death");
self endon("removed from battleChatter");
for(;;)
{
self waittill("grenade danger",var_00);
if(getdvarint("bcs_enable") == 0)
{
continue;
}
if(!isdefined(var_00) || var_00.model != "projectile_m67fraggrenade")
{
continue;
}
if(distancesquared(var_00.origin,level.player.origin) < 262144)
{
addinformevent("incoming","grenade");
}
}
}
//Function Number: 30
aidisplacewaiter()
{
self endon("death");
self endon("removed from battleChatter");
for(;;)
{
self waittill("trigger");
if(getdvarint("bcs_enable") == 0)
{
continue;
}
if(gettime() < self.a.paintime + 4000)
{
continue;
}
addresponseevent("ack","yes",level.player,1);
}
}
//Function Number: 31
evaluatemoveevent(param_00)
{
self endon("death");
self endon("removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
if(!isdefined(self.node))
{
return;
}
if(distancesquared(self.origin,self.node.origin) < 262144)
{
return;
}
if(!animscripts\battlechatter::isnodecoverorconceal())
{
return;
}
if(!nationalityokformoveorder())
{
return;
}
var_01 = animscripts\battlechatter::getresponder(24,1024,"response");
if(self.team != "axis" && self.team != "team3")
{
if(!isdefined(var_01))
{
var_01 = level.player;
}
else if(randomint(100) < level.eventchance["moveEvent"]["ordertoplayer"])
{
var_01 = level.player;
}
}
if(self.combattime > 0)
{
if(randomint(100) < level.eventchance["moveEvent"]["coverme"])
{
addorderevent("action","coverme",var_01);
return;
}
addorderevent("move","combat",var_01);
return;
}
if(nationalityokformoveordernoncombat())
{
addorderevent("move","noncombat",var_01);
}
}
//Function Number: 32
nationalityokformoveorder()
{
if(self.countryid == "SS")
{
return 0;
}
return 1;
}
//Function Number: 33
nationalityokformoveordernoncombat()
{
if(self.countryid == "US" || self.countryid == "XS" || self.countryid == level.player.countryid)
{
return 1;
}
return 0;
}
//Function Number: 34
aifolloworderwaiter()
{
self endon("death");
self endon("removed from battleChatter");
for(;;)
{
level waittill("follow order",var_00);
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
if(!isdefined(var_00))
{
continue;
}
if(!isalive(var_00) || var_00.team != self.team)
{
continue;
}
if(distancesquared(self.origin,var_00.origin) < 360000)
{
addresponseevent("ack","yes",var_00,0.9);
}
}
}
//Function Number: 35
player_friendlyfire_waiter()
{
self endon("death");
self endon("removed from battleChatter");
thread player_friendlyfire_waiter_damage();
for(;;)
{
self waittill("bulletwhizby",var_00,var_01);
if(!animscripts\battlechatter::bcsenabled())
{
continue;
}
if(!isplayer(var_00))
{
if(level.countryids[self.voice] == "GM" && animscripts\battlechatter::cansay("reaction","takingfire",1,undefined))
{
addreactionevent("takingfire",undefined,var_00,1);
}
continue;
}
if(friendlyfire_whizby_distances_valid(var_00,var_01))
{
player_friendlyfire_addreactionevent();
wait(3);
}
}
}
//Function Number: 36
player_friendlyfire_addreactionevent()
{
addreactionevent("friendlyfire",undefined,level.player,1);
}
//Function Number: 37
player_friendlyfire_waiter_damage()
{
self endon("death");
self endon("removed from battleChatter");
for(;;)
{
self waittill("damage",var_00,var_01,var_02,var_03,var_04);
if(isdefined(var_01) && isplayer(var_01))
{
if(damage_is_valid_for_friendlyfire_warning(var_04,var_01))
{
player_friendlyfire_addreactionevent();
}
}
}
}
//Function Number: 38
damage_is_valid_for_friendlyfire_warning(param_00,param_01)
{
if(!isdefined(param_00))
{
return 0;
}
switch(param_00)
{
case "MOD_IMPACT":
case "MOD_CRUSH":
case "MOD_MELEE":
case "MOD_MELEE_ALT":
case "MOD_GRENADE_SPLASH":
case "MOD_GRENADE":
return 0;
}
return 1;
}
//Function Number: 39
friendlyfire_whizby_distances_valid(param_00,param_01)
{
var_02 = 65536;
var_03 = 42;
if(distancesquared(param_00.origin,self.origin) < var_02)
{
return 0;
}
if(param_01 > var_03)
{
return 0;
}
return 1;
}
//Function Number: 40
evaluatereloadevent()
{
self endon("death");
self endon("removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
addinformevent("reloading","generic");
}
//Function Number: 41
evaluatemeleeevent()
{
self endon("death");
self endon("removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return 0;
}
if(!isdefined(self.enemy))
{
return 0;
}
return 0;
}
//Function Number: 42
evaluatefiringevent()
{
self endon("death");
self endon("removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
if(!isdefined(self.enemy))
{
}
}
//Function Number: 43
evaluatesuppressionevent()
{
self endon("death");
self endon("removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
if(!self.suppressed)
{
return;
}
addinformevent("suppressed","generic");
}
//Function Number: 44
evaluateattackevent(param_00)
{
self endon("death");
self endon("removed from battleChatter");
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
addinformevent("attack","grenade");
}
//Function Number: 45
addsituationalorder()
{
self endon("death");
self endon("removed from battleChatter");
if(self.squad.squadstates["combat"].isactive)
{
addsituationalcombatorder();
}
}
//Function Number: 46
addsituationalcombatorder()
{
self endon("death");
self endon("removed from battleChatter");
var_00 = self.squad;
var_00 animscripts\squadmanager::updatestates();
if(var_00.squadstates["suppressed"].isactive)
{
if(var_00.squadstates["cover"].isactive)
{
var_01 = animscripts\battlechatter::getresponder(96,512,"response");
addorderevent("action","grenade",var_01);
}
else
{
addorderevent("displace","generic");
}
}
else if(var_00.squadstates["combat"].isactive)
{
if(self.countryid != "SS")
{
var_01 = animscripts\battlechatter::getresponder(24,1024,"response");
addorderevent("action","suppress",var_01);
}
}
}
//Function Number: 47
custom_battlechatter_init_valid_phrases()
{
var_00 = [];
var_00[var_00.size] = "order_move_combat";
var_00[var_00.size] = "order_move_noncombat";
var_00[var_00.size] = "order_action_coverme";
var_00[var_00.size] = "inform_reloading";
level.custombcs_validphrases = var_00;
}
//Function Number: 48
custom_battlechatter_validate_phrase(param_00)
{
var_01 = 0;
foreach(var_03 in level.custombcs_validphrases)
{
if(var_03 == param_00)
{
var_01 = 1;
break;
}
}
return var_01;
}
//Function Number: 49
get_phraseinvalidstr(param_00)
{
return level.bcprintfailprefix + "custom battlechatter phrase \'" + param_00 + "\' isn\'t valid. look at _utility::custom_battlechatter_init_valid_phrases(), or the util script documentation for custom_battlechatter(), for a list of valid phrases.";
}
//Function Number: 50
get_badcountryidstr(param_00)
{
return level.bcprintfailprefix + "AI at origin " + self.origin + "wasn\'t able to play custom battlechatter because his nationality is \'" + self.countryid + "\'.";
}
//Function Number: 51
custom_battlechatter_internal(param_00)
{
if(!isdefined(level.custombcs_validphrases))
{
custom_battlechatter_init_valid_phrases();
}
param_00 = tolower(param_00);
if(!custom_battlechatter_validate_phrase(param_00))
{
var_01 = get_phraseinvalidstr(param_00);
return 0;
}
var_02 = animscripts\battlechatter::getresponder(24,512,"response");
begincustomevent();
switch(var_01)
{
case "order_move_combat":
if(!nationalityokformoveorder())
{
return 0;
}
animscripts\battlechatter::tryorderto(self.customchatphrase,var_02);
addmovecombataliasex();
break;
case "order_move_noncombat":
if(!nationalityokformoveordernoncombat())
{
return 0;
}
addmovenoncombataliasex();
break;
case "order_action_coverme":
animscripts\battlechatter::tryorderto(self.customchatphrase,var_02);
addactioncovermealiasex();
break;
case "inform_reloading":
addinformreloadingaliasex();
break;
default:
var_01 = get_phraseinvalidstr(var_01);
return 0;
}
endcustomevent(2000);
return 1;
}
//Function Number: 52
begincustomevent()
{
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
self.customchatphrase = animscripts\battlechatter::createchatphrase();
}
//Function Number: 53
addactioncovermealiasex()
{
self.customchatphrase animscripts\battlechatter::addorderalias("action","coverme");
}
//Function Number: 54
addmovecombataliasex()
{
self.customchatphrase animscripts\battlechatter::addorderalias("move","combat");
}
//Function Number: 55
addmovenoncombataliasex()
{
self.customchatphrase animscripts\battlechatter::addorderalias("move","noncombat");
}
//Function Number: 56
addinformreloadingaliasex()
{
self.customchatphrase animscripts\battlechatter::addinformalias("reloading","generic");
}
//Function Number: 57
addnamealiasex(param_00)
{
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
self.customchatphrase animscripts\battlechatter::addnamealias(param_00);
}
//Function Number: 58
endcustomevent(param_00,param_01)
{
if(!animscripts\battlechatter::bcsenabled())
{
return;
}
var_02 = animscripts\battlechatter::createchatevent("custom","generic",1);
if(isdefined(param_00))
{
var_02.expiretime = gettime() + param_00;
}
if(isdefined(param_01))
{
var_02.type = param_01;
}
else
{
var_02.type = "custom";
}
self.chatqueue["custom"] = undefined;
self.chatqueue["custom"] = var_02;
}