1 #include "sv_breakablehook.qh"
3 #include <common/deathtypes/all.qh>
4 #include <server/g_hook.qh>
6 REGISTER_MUTATOR(breakablehook, cvar("g_breakablehook"));
8 bool autocvar_g_breakablehook; // allow toggling mid match?
9 bool autocvar_g_breakablehook_owner;
11 MUTATOR_HOOKFUNCTION(breakablehook, Damage_Calculate)
13 entity frag_attacker = M_ARGV(1, entity);
14 entity frag_target = M_ARGV(2, entity);
16 if (frag_target.classname == "grapplinghook") {
17 if ((!autocvar_g_breakablehook)
18 || (!autocvar_g_breakablehook_owner && frag_attacker == frag_target.realowner)
19 ) { M_ARGV(4, float) = 0; }
21 // hurt the owner of the hook
22 if (DIFF_TEAM(frag_attacker, frag_target.realowner)) {
23 Damage(frag_target.realowner, frag_attacker, frag_attacker, 5, WEP_HOOK.m_id | HITTYPE_SPLASH, frag_target.realowner.origin, '0 0 0');
24 RemoveHook(frag_target);