Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
sv_breakablehook.qc
Go to the documentation of this file.
1#include "sv_breakablehook.qh"
2
4#include <server/hook.qh>
5
6REGISTER_MUTATOR(breakablehook, cvar("g_breakablehook"));
7
8bool autocvar_g_breakablehook; // allow toggling mid match?
10
11MUTATOR_HOOKFUNCTION(breakablehook, Damage_Calculate)
12{
13 entity frag_attacker = M_ARGV(1, entity);
15
16 if(frag_target.classname == "grapplinghook")
17 {
19 || (!autocvar_g_breakablehook_owner && frag_attacker == frag_target.realowner)
20 ) { M_ARGV(4, float) = 0; }
21
22 // hurt the owner of the hook
23 if(DIFF_TEAM(frag_attacker, frag_target.realowner))
24 {
25 Damage (frag_target.realowner, frag_attacker, frag_attacker, 5, WEP_HOOK.m_id | HITTYPE_SPLASH, DMG_NOWEP, frag_target.realowner.origin, '0 0 0'); // TODO: should get weapon entity from mutator hook
27 return; // dead
28 }
29 }
30}
#define REGISTER_MUTATOR(...)
Definition base.qh:295
#define MUTATOR_HOOKFUNCTION(...)
Definition base.qh:335
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
#define M_ARGV(x, type)
Definition events.qh:17
void Damage(entity targ, entity inflictor, entity attacker, float damage, int deathtype,.entity weaponentity, vector hitloc, vector force)
Definition damage.qc:503
#define DMG_NOWEP
Definition damage.qh:104
const int HITTYPE_SPLASH
Definition all.qh:30
float cvar(string name)
void RemoveHook(entity this)
Definition hook.qc:48
bool autocvar_g_breakablehook_owner
bool autocvar_g_breakablehook
entity frag_target
Definition sv_ctf.qc:2321
#define DIFF_TEAM(a, b)
Definition teams.qh:242