]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/mapobjects/trigger/swamp.qc
Merge branch 'terencehill/menu_registries' into 'master'
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / mapobjects / trigger / swamp.qc
1 #include "swamp.qh"
2 #if defined(CSQC)
3 #elif defined(MENUQC)
4 #elif defined(SVQC)
5     #include <lib/warpzone/util_server.qh>
6     #include <common/weapons/_all.qh>
7     #include <common/weapons/_all.qh>
8     #include <common/stats.qh>
9     #include <common/deathtypes/all.qh>
10 #endif
11
12 /*
13 *               t_swamp.c
14 *               Adds spawnfunc_trigger_swamp and support routines for nexuiz 1.2.1+ and xonotic
15 *               Author tZork (Jakob MG)
16 *               jakob@games43.se
17 *               2005 11 29
18 */
19
20 #ifdef SVQC
21 void swamp_think(entity this)
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 }
54
55 /*QUAKED spawnfunc_trigger_swamp (.5 .5 .5) ?
56 Players in the swamp will be
57 slowed down and damaged over time
58 */
59 spawnfunc(trigger_swamp)
60 {
61         // Init stuff
62         EXACTTRIGGER_INIT;
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 }
75 #endif