mirror of
https://github.com/InfinityLoader/IL-GSC.git
synced 2025-06-07 17:17:50 -05:00
648 lines
13 KiB
Plaintext
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");
|
|
#/
|
|
} |