Xonotic
sv_touchexplode.qc File Reference
#include "sv_touchexplode.qh"
+ Include dependency graph for sv_touchexplode.qc:

Go to the source code of this file.

Functions

 MUTATOR_HOOKFUNCTION (touchexplode, PlayerPreThink)
 
void PlayerTouchExplode (entity p1, entity p2)
 
 REGISTER_MUTATOR (touchexplode, expr_evaluate(autocvar_g_touchexplode))
 

Variables

string autocvar_g_touchexplode
 
float autocvar_g_touchexplode_damage
 
float autocvar_g_touchexplode_edgedamage
 
float autocvar_g_touchexplode_force
 
float autocvar_g_touchexplode_radius
 
float touchexplode_time
 

Function Documentation

◆ MUTATOR_HOOKFUNCTION()

MUTATOR_HOOKFUNCTION ( touchexplode  ,
PlayerPreThink   
)

Definition at line 27 of file sv_touchexplode.qc.

References boxesoverlap(), entity(), FOREACH_CLIENT, IS_DEAD, IS_INDEPENDENT_PLAYER, IS_PLAYER, M_ARGV, and time.

28 {
29  entity player = M_ARGV(0, entity);
30 
31  if(time > player.touchexplode_time && !game_stopped && !IS_DEAD(player) && IS_PLAYER(player) && !STAT(FROZEN, player) && !IS_INDEPENDENT_PLAYER(player))
32  {
33  FOREACH_CLIENT(IS_PLAYER(it) && it != player, {
34  if(time > it.touchexplode_time && !STAT(FROZEN, it) && !IS_DEAD(it) && !IS_INDEPENDENT_PLAYER(it))
35  if(boxesoverlap(player.absmin, player.absmax, it.absmin, it.absmax))
36  {
37  PlayerTouchExplode(player, it);
38  player.touchexplode_time = it.touchexplode_time = time + 0.2;
39  }
40  });
41  }
42 }
#define IS_INDEPENDENT_PLAYER(e)
Definition: client.qh:314
entity() spawn
#define FOREACH_CLIENT(cond, body)
Definition: utils.qh:49
ERASEABLE float boxesoverlap(vector m1, vector m2, vector m3, vector m4)
requires that m2>m1 in all coordinates, and that m4>m3
Definition: vector.qh:73
#define M_ARGV(x, type)
Definition: events.qh:17
#define IS_DEAD(s)
Definition: utils.qh:26
float time
Definition: csprogsdefs.qc:16
#define IS_PLAYER(v)
Definition: utils.qh:9
+ Here is the call graph for this function:

◆ PlayerTouchExplode()

void PlayerTouchExplode ( entity  p1,
entity  p2 
)

Definition at line 13 of file sv_touchexplode.qc.

References ATTEN_NORM, autocvar_g_touchexplode_damage, autocvar_g_touchexplode_edgedamage, autocvar_g_touchexplode_force, autocvar_g_touchexplode_radius, CH_TRIGGER, DMG_NOWEP, entity(), NULL, RadiusDamage(), setorigin(), sound, spawn(), vector(), and VOL_BASE.

14 {
15  vector org = (p1.origin + p2.origin) * 0.5;
16  org.z += (p1.mins.z + p2.mins.z) * 0.5;
17 
18  sound(p1, CH_TRIGGER, SND_GRENADE_IMPACT, VOL_BASE, ATTEN_NORM);
19  Send_Effect(EFFECT_EXPLOSION_SMALL, org, '0 0 0', 1);
20 
21  entity e = spawn();
22  setorigin(e, org);
24  delete(e);
25 }
float autocvar_g_touchexplode_radius
entity() spawn
float autocvar_g_touchexplode_damage
float autocvar_g_touchexplode_force
#define DMG_NOWEP
Definition: damage.qh:126
float autocvar_g_touchexplode_edgedamage
const int CH_TRIGGER
Definition: sound.qh:12
#define NULL
Definition: post.qh:17
const float VOL_BASE
Definition: sound.qh:36
const float ATTEN_NORM
Definition: sound.qh:30
vector(float skel, float bonenum) _skel_get_boneabs_hidden
float RadiusDamage(entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float forceintensity, int deathtype,.entity weaponentity, entity directhitentity)
Definition: damage.qc:1057
setorigin(ent, v)
#define sound(e, c, s, v, a)
Definition: sound.qh:52
+ Here is the call graph for this function:

◆ REGISTER_MUTATOR()

REGISTER_MUTATOR ( touchexplode  ,
expr_evaluate(autocvar_g_touchexplode  
)

Variable Documentation

◆ autocvar_g_touchexplode

string autocvar_g_touchexplode

Definition at line 3 of file sv_touchexplode.qc.

◆ autocvar_g_touchexplode_damage

float autocvar_g_touchexplode_damage

Definition at line 5 of file sv_touchexplode.qc.

Referenced by PlayerTouchExplode().

◆ autocvar_g_touchexplode_edgedamage

float autocvar_g_touchexplode_edgedamage

Definition at line 6 of file sv_touchexplode.qc.

Referenced by PlayerTouchExplode().

◆ autocvar_g_touchexplode_force

float autocvar_g_touchexplode_force

Definition at line 7 of file sv_touchexplode.qc.

Referenced by PlayerTouchExplode().

◆ autocvar_g_touchexplode_radius

float autocvar_g_touchexplode_radius

Definition at line 4 of file sv_touchexplode.qc.

Referenced by PlayerTouchExplode().

◆ touchexplode_time

float touchexplode_time

Definition at line 11 of file sv_touchexplode.qc.