diff --git a/disable_self_explosive_damage/README.md b/disable_self_explosive_damage/README.md new file mode 100644 index 0000000..3d3f119 --- /dev/null +++ b/disable_self_explosive_damage/README.md @@ -0,0 +1,7 @@ +# Disable Self Explosive Damage + +Prevents players from dying to their own grenades and rockets. +Note that if you shoot enough rockets (around 15/20) you can still kill yourself. +This also doesn't prevent players from killing themselves when they hold a frag grenade in their hands. + +You can add `iprintlnbold(iDamage);` at the beginning of `cancelDamage()` or any other variable found in `cancelDamage()` to debug it (see attacked player, attacker, damage, weapon used, damage type etc.) \ No newline at end of file diff --git a/disable_self_explosive_damage/disable_self_explosive_damage.gsc b/disable_self_explosive_damage/disable_self_explosive_damage.gsc new file mode 100644 index 0000000..41bcf46 --- /dev/null +++ b/disable_self_explosive_damage/disable_self_explosive_damage.gsc @@ -0,0 +1,15 @@ +init() +{ + level.callbackplayerdamagestub = level.callbackplayerdamage; + level.callbackplayerdamage = ::cancelDamage; +} + +cancelDamage( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset ) +{ + if (eAttacker.name == self.name && sMeansOfDeath == "MOD_PROJECTILE_SPLASH" || eAttacker.name == self.name && sMeansOfDeath == "MOD_GRENADE_SPLASH" || eAttacker.name == self.name && sMeansOfDeath == "MOD_EXPLOSIVE") + { + iDamage = 0; + } + + self [[level.callbackplayerdamagestub]]( eInflictor, eAttacker, iDamage, iDFlags, sMeansOfDeath, sWeapon, vPoint, vDir, sHitLoc, timeOffset ); +} \ No newline at end of file