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

Go to the source code of this file.

Functions

 spawnfunc (trigger_swamp)
void swamp_think (entity this)

Function Documentation

◆ spawnfunc()

spawnfunc ( trigger_swamp )

Definition at line 59 of file swamp.qc.

60{
61 // Init stuff
63 this.active = ACTIVE_ACTIVE;
64 setthink(this, swamp_think);
65 this.nextthink = time;
66
67 // Setup default keys, if missing
68 if(!this.dmg)
69 this.dmg = 5;
70 if(!this.swamp_interval)
71 this.swamp_interval = 1;
72 if(!this.swamp_slowdown)
73 this.swamp_slowdown = 0.5;
74}
float dmg
Definition breakable.qc:12
float time
float nextthink
int active
Definition defs.qh:34
const int ACTIVE_ACTIVE
Definition defs.qh:37
#define EXACTTRIGGER_INIT
Definition common.qh:116
#define setthink(e, f)
void swamp_think(entity this)
Definition swamp.qc:21
float swamp_slowdown
Definition swamp.qh:10
float swamp_interval
Definition swamp.qh:9

References active, ACTIVE_ACTIVE, dmg, EXACTTRIGGER_INIT, nextthink, setthink, swamp_interval, swamp_slowdown, swamp_think(), and time.

◆ swamp_think()

void swamp_think ( entity this)

Definition at line 21 of file swamp.qc.

22{
23 // set myself as current swampslug where possible
24 IL_EACH(g_swamped, it.swampslug == this,
25 {
26 it.swampslug = NULL;
27 IL_REMOVE(g_swamped, it);
28 });
29
30 if(this.active == ACTIVE_ACTIVE)
31 {
32 FOREACH_ENTITY_RADIUS((this.absmin + this.absmax) * 0.5, vlen(this.absmax - this.absmin) * 0.5 + 1, it.swampslug.active == ACTIVE_NOT && IS_PLAYER(it) && !IS_DEAD(it),
33 {
34 if (WarpZoneLib_ExactTrigger_Touch(this, it, false))
35 {
36 if(!it.swampslug)
37 IL_PUSH(g_swamped, it);
38 it.swampslug = this;
39 }
40 });
41
42 IL_EACH(g_swamped, it.swampslug == this,
43 {
44 if(time > it.swamp_interval)
45 {
46 Damage (it, this, this, this.dmg, DEATH_SWAMP.m_id, DMG_NOWEP, it.origin, '0 0 0');
47 it.swamp_interval = time + this.swamp_interval;
48 }
49 });
50 }
51
52 this.nextthink = time;
53}
#define IS_DEAD(s)
Definition player.qh:245
#define IS_PLAYER(s)
Definition player.qh:243
vector absmax
vector absmin
const int ACTIVE_NOT
Definition defs.qh:36
ERASEABLE entity IL_PUSH(IntrusiveList this, entity it)
Push to tail.
#define IL_EACH(this, cond, body)
#define FOREACH_ENTITY_RADIUS(org, dist, cond, body)
Definition iter.qh:160
bool WarpZoneLib_ExactTrigger_Touch(entity this, entity toucher, bool touchfunc)
Definition common.qc:815
float vlen(vector v)
IntrusiveList g_swamped
Definition swamp.qh:4

References absmax, absmin, active, ACTIVE_ACTIVE, ACTIVE_NOT, entity(), FOREACH_ENTITY_RADIUS, g_swamped, IL_EACH, IL_PUSH(), IS_DEAD, IS_PLAYER, vlen(), and WarpZoneLib_ExactTrigger_Touch().

Referenced by spawnfunc().