Added napalm.inc
This commit is contained in:
parent
4d35037e41
commit
5b172aa93f
100
src/zr/napalm.inc
Normal file
100
src/zr/napalm.inc
Normal file
@ -0,0 +1,100 @@
|
||||
/*
|
||||
* ============================================================================
|
||||
*
|
||||
* Zombie:Reloaded
|
||||
*
|
||||
* File: napalm.inc
|
||||
* Description: Grenades burn zombies when damaged by them.
|
||||
*
|
||||
* ============================================================================
|
||||
*/
|
||||
|
||||
/**
|
||||
* The fuse length of an hegrenade.
|
||||
*/
|
||||
#define GRENADE_FUSE_TIME 3.0
|
||||
|
||||
/**
|
||||
* Client has been hurt.
|
||||
*
|
||||
* @param client The client index.
|
||||
* @param weapon The weapon name.
|
||||
*/
|
||||
NapalmOnClientHurt(client, const String:weapon[])
|
||||
{
|
||||
// If player isn't a zombie, then stop.
|
||||
if (!IsPlayerZombie(client))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// If napalm time is invalid or 0, then stop.
|
||||
new Float:napalm_time = ClassGetNapalmTime(client);
|
||||
if (napalm_time <= 0.0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// If weapon is a grenade, then ignite player.
|
||||
if (StrEqual(weapon, "hegrenade", false))
|
||||
{
|
||||
// Put any existing fire out.
|
||||
ExtinguishEntity(client);
|
||||
|
||||
// Re-ignite to start burn-time over.
|
||||
IgniteEntity(client, napalm_time);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Weapon has been fired.
|
||||
*
|
||||
* @param weapon The weapon name.
|
||||
*/
|
||||
NapalmOnWeaponFire(const String:weapon[])
|
||||
{
|
||||
// If ignite grenade is disabled, then stop.
|
||||
new bool:ignitegrenade = GetConVarBool(gCvars[CVAR_NAPALM_IGNITEGRENADE]);
|
||||
if (!ignitegrenade)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// If weapon isn't a grenade, then stop.
|
||||
if (!StrEqual(weapon, "hegrenade", false))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Wait .1 seconds.
|
||||
CreateTimer(0.1, NapalmIgniteGrenade);
|
||||
}
|
||||
|
||||
/**
|
||||
* Timer callback, ignite's all hegrenade projectiles.
|
||||
*
|
||||
* @param timer The timer handle.
|
||||
*/
|
||||
public Action:NapalmIgniteGrenade(Handle:timer)
|
||||
{
|
||||
decl String:classname[64];
|
||||
|
||||
// Get max entities.
|
||||
new maxentities = GetMaxEntities();
|
||||
|
||||
// x = entity index.
|
||||
for (new x = 0; x <= maxentities; x++)
|
||||
{
|
||||
// If entity is invalid, then stop.
|
||||
if(!IsValidEdict(x))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
GetEdictClassname(x, classname, sizeof(classname));
|
||||
if(StrEqual(classname, "hegrenade_projectile"))
|
||||
{
|
||||
IgniteEntity(x, GRENADE_FUSE_TIME);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user