2 #include <common/deathtypes/all.qh>
3 #include <server/round_handler.qh>
5 REGISTER_MUTATOR(rm, cvar("g_instagib"));
7 MUTATOR_HOOKFUNCTION(rm, PlayerDamage_Calculate)
9 // we do it this way, so rm can be toggled during the match
10 if(!autocvar_g_rm) { return false; }
12 entity frag_attacker = M_ARGV(1, entity);
13 entity frag_target = M_ARGV(2, entity);
14 float frag_deathtype = M_ARGV(3, float);
15 float frag_damage = M_ARGV(4, float);
17 if(DEATH_ISWEAPON(frag_deathtype, WEP_DEVASTATOR))
18 if(frag_attacker == frag_target || frag_target.classname == "nade")
21 if(autocvar_g_rm_laser)
22 if(DEATH_ISWEAPON(frag_deathtype, WEP_ELECTRO))
23 if(frag_attacker == frag_target || (round_handler_IsActive() && !round_handler_IsRoundStarted()))
26 M_ARGV(4, float) = frag_damage;
31 MUTATOR_HOOKFUNCTION(rm, PlayerDies)
33 // we do it this way, so rm can be toggled during the match
34 if(!autocvar_g_rm) { return false; }
36 float frag_deathtype = M_ARGV(3, float);
37 float frag_damage = M_ARGV(4, float);
39 if(DEATH_ISWEAPON(frag_deathtype, WEP_DEVASTATOR) || DEATH_ISWEAPON(frag_deathtype, WEP_ELECTRO))
40 frag_damage = 1000; // always gib if it was a vaporizer death