Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
multi.qh File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void multi_reset (entity this)
void multi_trigger (entity this)
 spawnfunc (trigger_once)

Function Documentation

◆ multi_reset()

void multi_reset ( entity this)

Definition at line 124 of file multi.qc.

125{
126 if ( !(this.spawnflags & SPAWNFLAG_NOTOUCH) )
127 settouch(this, multi_touch);
128 if (this.max_health)
129 {
130 SetResourceExplicit(this, RES_HEALTH, this.max_health);
131 this.takedamage = DAMAGE_YES;
132 this.solid = SOLID_BBOX;
133 }
134 setthink(this, func_null);
135 this.nextthink = 0;
136 this.team = this.team_saved;
137 this.use = multi_use;
138}
float max_health
bool SetResourceExplicit(entity e, Resource res_type, float amount)
Sets the resource amount of an entity without calling any hooks.
int team
Definition main.qh:188
int spawnflags
Definition ammo.qh:15
const float SOLID_BBOX
float nextthink
#define use
const int SPAWNFLAG_NOTOUCH
Definition defs.qh:17
solid
Definition ent_cs.qc:165
void multi_use(entity this, entity actor, entity trigger)
Definition multi.qc:59
void multi_touch(entity this, entity toucher)
Definition multi.qc:66
var void func_null()
#define setthink(e, f)
#define settouch(e, f)
Definition self.qh:73
int team_saved
Definition vote.qh:70
const int DAMAGE_YES
Definition subs.qh:80
float takedamage
Definition subs.qh:78

References DAMAGE_YES, entity(), func_null(), max_health, multi_touch(), multi_use(), nextthink, SetResourceExplicit(), setthink, settouch, solid, SOLID_BBOX, SPAWNFLAG_NOTOUCH, spawnflags, takedamage, team, team_saved, and use.

Referenced by spawnfunc().

◆ multi_trigger()

void multi_trigger ( entity this)

Definition at line 20 of file multi.qc.

21{
22 if (this.nextthink > time)
23 {
24 return; // allready been triggered
25 }
26
27 if((this.spawnflags & ONLY_PLAYERS) && !IS_PLAYER(this.enemy))
28 {
29 return; // only players
30 }
31
32 if (this.noise && this.noise != "")
33 {
35 }
36
37 // don't trigger again until reset
38 this.takedamage = DAMAGE_NO;
39
40 SUB_UseTargets(this, this.enemy, this.goalentity);
41
42 if (this.wait > 0)
43 {
44 setthink(this, multi_wait);
45 this.nextthink = time + this.wait;
46 }
47 else if (this.wait == 0)
48 {
49 multi_wait(this); // waiting finished
50 }
51 else
52 { // we can't just delete(this) here, because this is a touch function
53 // called while C code is looping through area links...
54 settouch(this, func_null);
55 this.use = func_null;
56 }
57}
float wait
Definition items.qc:17
#define IS_PLAYER(s)
Definition player.qh:243
float time
const int ONLY_PLAYERS
Definition defs.qh:13
void SUB_UseTargets(entity this, entity actor, entity trigger)
Definition triggers.qc:344
entity goalentity
Definition viewloc.qh:16
void multi_wait(entity this)
Definition multi.qc:6
const int CH_TRIGGER
Definition sound.qh:12
const float VOL_BASE
Definition sound.qh:36
#define _sound(e, c, s, v, a)
Definition sound.qh:43
const float ATTEN_NORM
Definition sound.qh:30
string noise
Definition subs.qh:83
const int DAMAGE_NO
Definition subs.qh:79
entity enemy
Definition sv_ctf.qh:153

References _sound, ATTEN_NORM, CH_TRIGGER, DAMAGE_NO, enemy, entity(), func_null(), goalentity, IS_PLAYER, multi_wait(), nextthink, noise, ONLY_PLAYERS, setthink, settouch, spawnflags, SUB_UseTargets(), takedamage, time, use, VOL_BASE, and wait.

Referenced by multi_eventdamage(), multi_touch(), and multi_use().

◆ spawnfunc()

spawnfunc ( trigger_once )

Definition at line 215 of file multi.qc.

216{
217 this.wait = -1;
218 spawnfunc_trigger_multiple(this);
219}

References wait.