Hopefully fixed stacking napalm (gotta test)

This commit is contained in:
Andrew 2011-06-20 02:39:44 -07:00
parent 8348ce9b29
commit afb4b48e91
1 changed files with 24 additions and 21 deletions

View File

@ -84,25 +84,8 @@ NapalmOnTakeDamage(client, damagetype)
{ {
// Put the fire out. // Put the fire out.
//ExtinguishEntity(client); <-- Don't use this. Takes off the FL_ONFIRE flag, but flame doesn't get extinguished. //ExtinguishEntity(client);
ExtinguishEntity2(client);
// This works.
new fire = GetEntPropEnt(client, Prop_Data, "m_hEffectEntity");
if (IsValidEntity(fire))
{
// Make sure the entity is a flame, so we can extinguish it.
decl String:classname[64];
GetEdictClassname(fire, classname, sizeof(classname));
if (StrEqual(classname, "entityflame", false))
{
SetEntPropFloat(fire, Prop_Data, "m_flLifetime", 0.0);
}
// Log what entity was in that property, for future reference.
else
{
LogEvent(false, LogType_Normal, LOG_GAME_EVENTS, LogModule_Napalm, "Napalm Douse", "Found unexpected entity in prop \"m_flLifetime\": \"%s\"", classname);
}
}
return _:ACTION_CONTINUE; return _:ACTION_CONTINUE;
} }
@ -113,6 +96,27 @@ NapalmOnTakeDamage(client, damagetype)
return -1; return -1;
} }
ExtinguishEntity2(client)
{
// This works.
new fire = GetEntPropEnt(client, Prop_Data, "m_hEffectEntity");
if (IsValidEntity(fire))
{
// Make sure the entity is a flame, so we can extinguish it.
decl String:classname[64];
GetEdictClassname(fire, classname, sizeof(classname));
if (StrEqual(classname, "entityflame", false))
{
SetEntPropFloat(fire, Prop_Data, "m_flLifetime", 0.0);
}
// Log what entity was in that property, for future reference.
else
{
LogEvent(false, LogType_Normal, LOG_GAME_EVENTS, LogModule_Napalm, "Napalm Douse", "Found unexpected entity in prop \"m_flLifetime\": \"%s\"", classname);
}
}
}
/** /**
* Client has been hurt. * Client has been hurt.
* *
@ -155,8 +159,7 @@ NapalmOnClientHurt(client, attacker, const String:weapon[])
if (reset || !(flags & FL_ONFIRE)) if (reset || !(flags & FL_ONFIRE))
{ {
// This stops the fire before re-ignition. ExtinguishEntity2(client);
ExtinguishEntity(client);
// Ignite client. // Ignite client.
IgniteEntity(client, napalm_time); IgniteEntity(client, napalm_time);