IL-GSC/BO2/PC/MP/maps/mp/_burnplayer.gsc
2023-10-28 00:17:17 -04:00

648 lines
13 KiB
Plaintext

/*******************************************************************
* Decompiled By: Bog
* Decompiled File: maps\mp\_burnplayer.gsc
* Game: Call of Duty: Black Ops 2
* Platform: PC
* Function Count: 21
* Decompile Time: 15 ms
* Timestamp: 10/28/2023 12:10:51 AM
*******************************************************************/
#include common_scripts/utility;
#include maps/mp/_utility;
#include maps/mp/gametypes/_damagefeedback;
#include maps/mp/gametypes/_globallogic_player;
//Function Number: 1
initburnplayer()
{
level.flamedamage = 15;
level.flameburntime = 1.5;
}
//Function Number: 2
hitwithincendiary(attacker,inflictor,mod)
{
if(IsDefined(self.burning))
{
return;
}
self starttanning();
self thread waitthenstoptanning(level.flameburntime);
self endon("disconnect");
attacker endon("disconnect");
waittillframeend;
self.burning = 1;
self thread burn_blocker();
tagarray = [];
if(isai(self))
{
tagarray[tagarray.size] = "J_Wrist_RI";
tagarray[tagarray.size] = "J_Wrist_LE";
tagarray[tagarray.size] = "J_Elbow_LE";
tagarray[tagarray.size] = "J_Elbow_RI";
tagarray[tagarray.size] = "J_Knee_RI";
tagarray[tagarray.size] = "J_Knee_LE";
tagarray[tagarray.size] = "J_Ankle_RI";
tagarray[tagarray.size] = "J_Ankle_LE";
}
else
{
tagarray[tagarray.size] = "J_Wrist_RI";
tagarray[tagarray.size] = "J_Wrist_LE";
tagarray[tagarray.size] = "J_Elbow_LE";
tagarray[tagarray.size] = "J_Elbow_RI";
tagarray[tagarray.size] = "J_Knee_RI";
tagarray[tagarray.size] = "J_Knee_LE";
tagarray[tagarray.size] = "J_Ankle_RI";
tagarray[tagarray.size] = "J_Ankle_LE";
if(isplayer(self) && self.health > 0)
{
self setburn(3);
}
}
if(IsDefined(level._effect["character_fire_death_torso"]))
{
for(arrayindex = 0;arrayindex < tagarray.size;arrayindex++)
{
playfxontag(level._effect["character_fire_death_sm"],self,tagarray[arrayindex]);
}
}
if(isai(self))
{
playfxontag(level._effect["character_fire_death_torso"],self,"J_Spine1");
}
else
{
playfxontag(level._effect["character_fire_death_torso"],self,"J_SpineLower");
}
if(!(isalive(self)))
{
return;
}
if(isplayer(self))
{
self thread watchforwater(7);
self thread watchfordeath();
}
}
//Function Number: 3
hitwithnapalmstrike(attacker,inflictor,mod)
{
if(IsDefined(self.burning) || self hasperk("specialty_fireproof"))
{
return;
}
self starttanning();
self thread waitthenstoptanning(level.flameburntime);
self endon("disconnect");
attacker endon("disconnect");
self endon("death");
if(IsDefined(self.burning))
{
return;
}
self thread burn_blocker();
waittillframeend;
self.burning = 1;
self thread burn_blocker();
tagarray = [];
if(isai(self))
{
tagarray[tagarray.size] = "J_Wrist_RI";
tagarray[tagarray.size] = "J_Wrist_LE";
tagarray[tagarray.size] = "J_Elbow_LE";
tagarray[tagarray.size] = "J_Elbow_RI";
tagarray[tagarray.size] = "J_Knee_RI";
tagarray[tagarray.size] = "J_Knee_LE";
tagarray[tagarray.size] = "J_Ankle_RI";
tagarray[tagarray.size] = "J_Ankle_LE";
}
else
{
tagarray[tagarray.size] = "J_Wrist_RI";
tagarray[tagarray.size] = "J_Wrist_LE";
tagarray[tagarray.size] = "J_Elbow_LE";
tagarray[tagarray.size] = "J_Elbow_RI";
tagarray[tagarray.size] = "J_Knee_RI";
tagarray[tagarray.size] = "J_Knee_LE";
tagarray[tagarray.size] = "J_Ankle_RI";
tagarray[tagarray.size] = "J_Ankle_LE";
if(isplayer(self))
{
self setburn(3);
}
}
if(IsDefined(level._effect["character_fire_death_sm"]))
{
for(arrayindex = 0;arrayindex < tagarray.size;arrayindex++)
{
playfxontag(level._effect["character_fire_death_sm"],self,tagarray[arrayindex]);
}
}
if(IsDefined(level._effect["character_fire_death_torso"]))
{
playfxontag(level._effect["character_fire_death_torso"],self,"J_SpineLower");
}
if(!(isalive(self)))
{
return;
}
self thread donapalmstrikedamage(attacker,inflictor,mod);
if(isplayer(self))
{
self thread watchforwater(7);
self thread watchfordeath();
}
}
//Function Number: 4
walkedthroughflames(attacker,inflictor,weapon)
{
if(IsDefined(self.burning) || self hasperk("specialty_fireproof"))
{
return;
}
self starttanning();
self thread waitthenstoptanning(level.flameburntime);
self endon("disconnect");
waittillframeend;
self.burning = 1;
self thread burn_blocker();
tagarray = [];
if(isai(self))
{
tagarray[tagarray.size] = "J_Wrist_RI";
tagarray[tagarray.size] = "J_Wrist_LE";
tagarray[tagarray.size] = "J_Elbow_LE";
tagarray[tagarray.size] = "J_Elbow_RI";
tagarray[tagarray.size] = "J_Knee_RI";
tagarray[tagarray.size] = "J_Knee_LE";
tagarray[tagarray.size] = "J_Ankle_RI";
tagarray[tagarray.size] = "J_Ankle_LE";
}
else
{
tagarray[tagarray.size] = "J_Knee_RI";
tagarray[tagarray.size] = "J_Knee_LE";
tagarray[tagarray.size] = "J_Ankle_RI";
tagarray[tagarray.size] = "J_Ankle_LE";
}
if(IsDefined(level._effect["character_fire_player_sm"]))
{
for(arrayindex = 0;arrayindex < tagarray.size;arrayindex++)
{
playfxontag(level._effect["character_fire_player_sm"],self,tagarray[arrayindex]);
}
}
if(!(isalive(self)))
{
return;
}
self thread doflamedamage(attacker,inflictor,weapon,1);
if(isplayer(self))
{
self thread watchforwater(7);
self thread watchfordeath();
}
}
//Function Number: 5
burnedwithflamethrower(attacker,inflictor,weapon)
{
if(IsDefined(self.burning))
{
return;
}
self starttanning();
self thread waitthenstoptanning(level.flameburntime);
self endon("disconnect");
waittillframeend;
self.burning = 1;
self thread burn_blocker();
tagarray = [];
if(isai(self))
{
tagarray[0] = "J_Spine1";
tagarray[1] = "J_Elbow_LE";
tagarray[2] = "J_Elbow_RI";
tagarray[3] = "J_Head";
tagarray[4] = "j_knee_ri";
tagarray[5] = "j_knee_le";
}
else
{
tagarray[0] = "J_Elbow_RI";
tagarray[1] = "j_knee_ri";
tagarray[2] = "j_knee_le";
if(isplayer(self) && self.health > 0)
{
self setburn(3);
}
}
if(isplayer(self) && isalive(self))
{
self thread watchforwater(7);
self thread watchfordeath();
}
if(IsDefined(level._effect["character_fire_player_sm"]))
{
for(arrayindex = 0;arrayindex < tagarray.size;arrayindex++)
{
playfxontag(level._effect["character_fire_player_sm"],self,tagarray[arrayindex]);
}
}
}
//Function Number: 6
burnedwithdragonsbreath(attacker,inflictor,weapon)
{
if(IsDefined(self.burning))
{
return;
}
self starttanning();
self thread waitthenstoptanning(level.flameburntime);
self endon("disconnect");
waittillframeend;
self.burning = 1;
self thread burn_blocker();
tagarray = [];
if(isai(self))
{
tagarray[0] = "J_Spine1";
tagarray[1] = "J_Elbow_LE";
tagarray[2] = "J_Elbow_RI";
tagarray[3] = "J_Head";
tagarray[4] = "j_knee_ri";
tagarray[5] = "j_knee_le";
}
else
{
tagarray[0] = "j_spinelower";
tagarray[1] = "J_Elbow_RI";
tagarray[2] = "j_knee_ri";
tagarray[3] = "j_knee_le";
if(isplayer(self) && self.health > 0)
{
self setburn(3);
}
}
if(isplayer(self) && isalive(self))
{
self thread watchforwater(7);
self thread watchfordeath();
return;
}
if(IsDefined(level._effect["character_fire_player_sm"]))
{
for(arrayindex = 0;arrayindex < tagarray.size;arrayindex++)
{
playfxontag(level._effect["character_fire_player_sm"],self,tagarray[arrayindex]);
}
}
}
//Function Number: 7
burnedtodeath()
{
self.burning = 1;
self thread burn_blocker();
self starttanning();
self thread doburningsound();
self thread waitthenstoptanning(level.flameburntime);
}
//Function Number: 8
watchfordeath()
{
self endon("disconnect");
self notify("watching for death while on fire");
self endon("watching for death while on fire");
self waittill("death");
if(isplayer(self))
{
self _stopburning();
}
self.burning = undefined;
}
//Function Number: 9
watchforwater(time)
{
self endon("disconnect");
self notify("watching for water");
self endon("watching for water");
wait(0.1);
looptime = 0.1;
while(time > 0)
{
wait(looptime);
if(self depthofplayerinwater() > 0)
{
finish_burn();
time = 0;
}
time = time - looptime;
}
}
//Function Number: 10
finish_burn()
{
self notify("stop burn damage");
tagarray = [];
tagarray[0] = "j_spinelower";
tagarray[1] = "J_Elbow_RI";
tagarray[2] = "J_Head";
tagarray[3] = "j_knee_ri";
tagarray[4] = "j_knee_le";
if(IsDefined(level._effect["fx_fire_player_sm_smk_2sec"]))
{
for(arrayindex = 0;arrayindex < tagarray.size;arrayindex++)
{
playfxontag(level._effect["fx_fire_player_sm_smk_2sec"],self,tagarray[arrayindex]);
}
}
self.burning = undefined;
self _stopburning();
self.ingroundnapalm = 0;
}
//Function Number: 11
donapalmstrikedamage(attacker,inflictor,mod)
{
if(isai(self))
{
dodognapalmstrikedamage(attacker,inflictor,mod);
return;
}
self endon("death");
self endon("disconnect");
attacker endon("disconnect");
self endon("stop burn damage");
while(IsDefined(level.napalmstrikedamage) && IsDefined(self) && self depthofplayerinwater() < 1)
{
self dodamage(level.napalmstrikedamage,self.origin,attacker,attacker,"none",mod,0,"napalm_mp");
wait(1);
}
}
//Function Number: 12
donapalmgrounddamage(attacker,inflictor,mod)
{
if(self hasperk("specialty_fireproof"))
{
return;
}
if(level.teambased)
{
if(attacker != self && attacker.team == self.team)
{
return;
}
}
if(isai(self))
{
dodognapalmgrounddamage(attacker,inflictor,mod);
return;
}
if(IsDefined(self.burning))
{
return;
}
self thread burn_blocker();
self endon("death");
self endon("disconnect");
attacker endon("disconnect");
self endon("stop burn damage");
if(IsDefined(level.groundburntime))
{
if(GetDvar(#"6EC13261") == "")
{
waittime = level.groundburntime;
}
else
{
waittime = GetDvarFloat(#"6EC13261");
}
}
else
{
waittime = 100;
}
self walkedthroughflames(attacker,inflictor,"napalm_mp");
self.ingroundnapalm = 1;
if(IsDefined(level.napalmgrounddamage))
{
if(GetDvar(#"3FFA6673") == "")
{
napalmgrounddamage = level.napalmgrounddamage;
}
else
{
napalmgrounddamage = GetDvarFloat(#"3FFA6673");
}
while(IsDefined(self) && IsDefined(inflictor) && self depthofplayerinwater() < 1 && waittime > 0)
{
self dodamage(level.napalmgrounddamage,self.origin,attacker,inflictor,"none",mod,0,"napalm_mp");
if(isplayer(self))
{
self setburn(1.1);
}
wait(1);
waittime = waittime - 1;
}
}
self.ingroundnapalm = 0;
}
//Function Number: 13
dodognapalmstrikedamage(attacker,inflictor,mod)
{
attacker endon("disconnect");
self endon("death");
self endon("stop burn damage");
while(IsDefined(level.napalmstrikedamage) && IsDefined(self))
{
self dodamage(level.napalmstrikedamage,self.origin,attacker,attacker,"none",mod);
wait(1);
}
}
//Function Number: 14
dodognapalmgrounddamage(attacker,inflictor,mod)
{
attacker endon("disconnect");
self endon("death");
self endon("stop burn damage");
while(IsDefined(level.napalmgrounddamage) && IsDefined(self))
{
self dodamage(level.napalmgrounddamage,self.origin,attacker,attacker,"none",mod,0,"napalm_mp");
wait(1);
}
}
//Function Number: 15
burn_blocker()
{
self endon("disconnect");
self endon("death");
wait(3);
self.burning = undefined;
}
//Function Number: 16
doflamedamage(attacker,inflictor,weapon,time)
{
if(isai(self))
{
dodogflamedamage(attacker,inflictor,weapon,time);
return;
}
if(IsDefined(attacker))
{
attacker endon("disconnect");
}
self endon("death");
self endon("disconnect");
self endon("stop burn damage");
self thread doburningsound();
self notify("snd_burn_scream");
wait_time = 1;
while(IsDefined(level.flamedamage) && IsDefined(self) && self depthofplayerinwater() < 1 && time > 0)
{
if(IsDefined(attacker) && IsDefined(inflictor) && IsDefined(weapon))
{
if(maps/mp/gametypes/_globallogic_player::dodamagefeedback(weapon,attacker))
{
attacker maps/mp/gametypes/_damagefeedback::updatedamagefeedback();
}
self dodamage(level.flamedamage,self.origin,attacker,inflictor,"none","MOD_BURNED",0,weapon);
}
else
{
self dodamage(level.flamedamage,self.origin);
}
wait(wait_time);
time = time - wait_time;
}
self thread finish_burn();
}
//Function Number: 17
dodogflamedamage(attacker,inflictor,weapon,time)
{
if(!IsDefined(attacker) || !IsDefined(inflictor) || !IsDefined(weapon))
{
return;
}
attacker endon("disconnect");
self endon("death");
self endon("stop burn damage");
self thread doburningsound();
wait_time = 1;
while(IsDefined(level.flamedamage) && IsDefined(self) && time > 0)
{
self dodamage(level.flamedamage,self.origin,attacker,inflictor,"none","MOD_BURNED",0,weapon);
wait(wait_time);
time = time - wait_time;
}
}
//Function Number: 18
waitthenstoptanning(time)
{
self endon("disconnect");
self endon("death");
wait(time);
self _stopburning();
}
//Function Number: 19
doburningsound()
{
self endon("disconnect");
self endon("death");
fire_sound_ent = spawn("script_origin",self.origin);
fire_sound_ent linkto(self,"tag_origin",(0,0,0),(0,0,0));
fire_sound_ent playloopsound("mpl_player_burn_loop");
self thread firesounddeath(fire_sound_ent);
self waittill("StopBurnSound");
if(IsDefined(fire_sound_ent))
{
fire_sound_ent stoploopsound(0.5);
}
wait(0.5);
if(IsDefined(fire_sound_ent))
{
fire_sound_ent delete();
}
/#
println("sound stop burning");
#/
}
//Function Number: 20
_stopburning()
{
self endon("disconnect");
self notify("StopBurnSound");
if(IsDefined(self))
{
self stopburning();
}
}
//Function Number: 21
firesounddeath(ent)
{
ent endon("death");
self waittill_any("death","disconnect");
ent delete();
/#
println("sound delete burning");
#/
}