#include common_scripts\utility;
#include maps\mp_utility;
init()
{
// Radio de la explosion extra (en unidades) por granada
level.grenadeRadius = [];
level.grenadeRadius["frag_grenade_mp"] = 900;
level.grenadeRadius["sticky_grenade_mp"] = 900;
level.grenadeRadius["crossbow_mp"] = 350;
level.grenadeRadius["satchel_charge_mp"] = 1900;
level.grenadeRadius["flash_grenade_mp"] = 900;
level.grenadeRadius["concussion_grenade_mp"] = 900;
// Danno de la explosion extra: maximo en el centro, minimo en el borde
level.grenadeMaxDamage = 550;
level.grenadeMinDamage = 550;
level thread onPlayerConnect();
}
onPlayerConnect()
{
for (;;)
{
level waittill("connected", player);
player thread MonitorGrenades();
}
}
MonitorGrenades()
{
self endon("disconnect");
for (;;)
{
self waittill("grenade_fire", grenade, weapname);
if (!isDefined(grenade) || !isDefined(weapname))
continue;
radius = getGrenadeRadius(weapname);
if (radius > 0)
self thread BiggerExplosion(grenade, weapname, radius);
}
}
// Devuelve el radio configurado para el arma, o 0 si no esta en la lista
getGrenadeRadius(weapname)
{
keys = getArrayKeys(level.grenadeRadius);
for (i = 0; i < keys.size; i++)
{
if (isSubStr(weapname, keys[i]))
return level.grenadeRadius[keys[i]];
}
return 0;
}
BiggerExplosion(grenade, weapname, radius)
{
self endon("disconnect");
grenade waittill("explode", pos);
radiusDamage(pos, radius, level.grenadeMaxDamage, level.grenadeMinDamage, self, "MOD_GRENADE_SPLASH", weapname);
}
THIS WORK YOU CAN ALSO EDIT IT