Xonotic
platforms.qh File Reference
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

void plat_center_touch (entity this, entity toucher)
 
void plat_crush (entity this, entity blocker)
 
void plat_go_down (entity this)
 
void plat_go_up (entity this)
 
void plat_outside_touch (entity this, entity toucher)
 
void plat_trigger_use (entity this, entity actor, entity trigger)
 

Variables

float dmg
 
float dmgtime
 
float dmgtime2
 
float phase
 
const int PLAT_LOW_TRIGGER = BIT(0)
 

Function Documentation

◆ plat_center_touch()

void plat_center_touch ( entity  this,
entity  toucher 
)

Definition at line 90 of file platforms.qc.

References enemy, GetResource(), IS_DEAD, IS_PLAYER, plat_go_up(), RES_HEALTH, STATE_BOTTOM, and STATE_TOP.

Referenced by plat_spawn_inside_trigger().

91 {
92 #ifdef SVQC
93  if (!toucher.iscreature)
94  return;
95 
96  if (GetResource(toucher, RES_HEALTH) <= 0)
97  return;
98 #elif defined(CSQC)
99  if (!IS_PLAYER(toucher))
100  return;
101  if(IS_DEAD(toucher))
102  return;
103 #endif
104 
105  if (this.enemy.state == STATE_BOTTOM) {
106  plat_go_up(this.enemy);
107  } else if (this.enemy.state == STATE_TOP)
108  this.enemy.nextthink = this.enemy.ltime + 1;
109 }
void plat_go_up(entity this)
Definition: platforms.qc:83
#define STATE_TOP
Definition: sys-pre.qh:30
RES_HEALTH
Definition: ent_cs.qc:126
entity enemy
Definition: sv_ctf.qh:143
#define IS_DEAD(s)
Definition: utils.qh:26
float GetResource(entity e, Resource res_type)
Returns the current amount of resource the given entity has.
Definition: cl_resources.qc:10
#define IS_PLAYER(v)
Definition: utils.qh:9
#define STATE_BOTTOM
Definition: sys-pre.qh:31
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ plat_crush()

void plat_crush ( entity  this,
entity  blocker 
)

Definition at line 138 of file platforms.qc.

References CRUSH, Damage(), DAMAGE_NO, dmg, DMG_NOWEP, IS_DEAD, plat_go_down(), plat_go_up(), spawnflags, state, STATE_DOWN, and STATE_UP.

139 {
140  if((this.spawnflags & CRUSH) && (blocker.takedamage != DAMAGE_NO))
141  { // KIll Kill Kill!!
142 #ifdef SVQC
143  Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, DMG_NOWEP, blocker.origin, '0 0 0');
144 #endif
145  }
146  else
147  {
148 #ifdef SVQC
149  if((this.dmg) && (blocker.takedamage != DAMAGE_NO))
150  { // Shall we bite?
151  Damage (blocker, this, this, this.dmg, DEATH_HURTTRIGGER.m_id, DMG_NOWEP, blocker.origin, '0 0 0');
152  // Gib dead/dying stuff
153  if(IS_DEAD(blocker))
154  Damage (blocker, this, this, 10000, DEATH_HURTTRIGGER.m_id, DMG_NOWEP, blocker.origin, '0 0 0');
155  }
156 #endif
157 
158  if (this.state == STATE_UP)
159  plat_go_down (this);
160  else if (this.state == STATE_DOWN)
161  plat_go_up (this);
162  // when in other states, then the plat_crush event came delayed after
163  // plat state already had changed
164  // this isn't a bug per se!
165  }
166 }
float state
Definition: subs.qh:32
void plat_go_up(entity this)
Definition: platforms.qc:83
float dmg
Definition: platforms.qh:6
#define STATE_DOWN
Definition: sys-pre.qh:33
float spawnflags
Definition: progsdefs.qc:191
#define DMG_NOWEP
Definition: damage.qh:126
const int CRUSH
Definition: defs.qh:11
void Damage(entity targ, entity inflictor, entity attacker, float damage, int deathtype,.entity weaponentity, vector hitloc, vector force)
Definition: damage.qc:583
#define IS_DEAD(s)
Definition: utils.qh:26
#define STATE_UP
Definition: sys-pre.qh:32
void plat_go_down(entity this)
Definition: platforms.qc:76
float DAMAGE_NO
Definition: progsdefs.qc:282
+ Here is the call graph for this function:

◆ plat_go_down()

void plat_go_down ( entity  this)

Definition at line 76 of file platforms.qc.

References _sound, ATTEN_NORM, CH_TRIGGER_SINGLE, noise, plat_hit_bottom(), pos2, speed, state, STATE_DOWN, SUB_CalcMove(), TSPEED_LINEAR, and VOL_BASE.

Referenced by plat_crush(), plat_hit_top(), plat_outside_touch(), plat_trigger_use(), and plat_use().

77 {
79  this.state = STATE_DOWN;
81 }
float state
Definition: subs.qh:32
float speed
Definition: subs.qh:41
string noise
Definition: progsdefs.qc:209
const int TSPEED_LINEAR
Definition: subs.qh:71
#define STATE_DOWN
Definition: sys-pre.qh:33
void SUB_CalcMove(entity this, vector tdest, float tspeedtype, float tspeed, void(entity this) func)
Definition: subs.qc:256
const float VOL_BASE
Definition: sound.qh:36
const float ATTEN_NORM
Definition: sound.qh:30
const int CH_TRIGGER_SINGLE
Definition: sound.qh:13
#define _sound(e, c, s, v, a)
Definition: sound.qh:50
void plat_hit_bottom(entity this)
Definition: platforms.qc:70
vector pos2
Definition: subs.qh:50
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ plat_go_up()

void plat_go_up ( entity  this)

Definition at line 83 of file platforms.qc.

References _sound, ATTEN_NORM, CH_TRIGGER_SINGLE, noise, plat_hit_top(), pos1, speed, state, STATE_UP, SUB_CalcMove(), TSPEED_LINEAR, and VOL_BASE.

Referenced by plat_center_touch(), and plat_crush().

84 {
86  this.state = STATE_UP;
87  SUB_CalcMove (this, this.pos1, TSPEED_LINEAR, this.speed, plat_hit_top);
88 }
float state
Definition: subs.qh:32
float speed
Definition: subs.qh:41
string noise
Definition: progsdefs.qc:209
const int TSPEED_LINEAR
Definition: subs.qh:71
void SUB_CalcMove(entity this, vector tdest, float tspeedtype, float tspeed, void(entity this) func)
Definition: subs.qc:256
void plat_hit_top(entity this)
Definition: platforms.qc:61
const float VOL_BASE
Definition: sound.qh:36
const float ATTEN_NORM
Definition: sound.qh:30
const int CH_TRIGGER_SINGLE
Definition: sound.qh:13
#define STATE_UP
Definition: sys-pre.qh:32
#define _sound(e, c, s, v, a)
Definition: sound.qh:50
vector pos1
Definition: subs.qh:50
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ plat_outside_touch()

void plat_outside_touch ( entity  this,
entity  toucher 
)

Definition at line 111 of file platforms.qc.

References enemy, entity(), GetResource(), IS_PLAYER, plat_go_down(), RES_HEALTH, and STATE_TOP.

112 {
113 #ifdef SVQC
114  if (!toucher.iscreature)
115  return;
116 
117  if (GetResource(toucher, RES_HEALTH) <= 0)
118  return;
119 #elif defined(CSQC)
120  if (!IS_PLAYER(toucher))
121  return;
122 #endif
123 
124  if (this.enemy.state == STATE_TOP) {
125  entity e = this.enemy;
126  plat_go_down(e);
127  }
128 }
entity() spawn
#define STATE_TOP
Definition: sys-pre.qh:30
RES_HEALTH
Definition: ent_cs.qc:126
entity enemy
Definition: sv_ctf.qh:143
float GetResource(entity e, Resource res_type)
Returns the current amount of resource the given entity has.
Definition: cl_resources.qc:10
void plat_go_down(entity this)
Definition: platforms.qc:76
#define IS_PLAYER(v)
Definition: utils.qh:9
+ Here is the call graph for this function:

◆ plat_trigger_use()

void plat_trigger_use ( entity  this,
entity  actor,
entity  trigger 
)

Definition at line 130 of file platforms.qc.

References getthink, and plat_go_down().

Referenced by plat_reset().

131 {
132  if (getthink(this))
133  return; // already activated
134  plat_go_down(this);
135 }
#define getthink(e)
void plat_go_down(entity this)
Definition: platforms.qc:76
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ dmg

◆ dmgtime

float dmgtime

Definition at line 7 of file platforms.qh.

Referenced by generic_plat_blocked(), and train_next().

◆ dmgtime2

float dmgtime2

Definition at line 8 of file platforms.qh.

Referenced by generic_plat_blocked(), and train_next().

◆ phase

float phase

Definition at line 10 of file platforms.qh.

◆ PLAT_LOW_TRIGGER

const int PLAT_LOW_TRIGGER = BIT(0)

Definition at line 4 of file platforms.qh.

Referenced by plat_spawn_inside_trigger().