#ifdef SVQC
// button and multiple button
-void() button_wait;
-void() button_return;
+void button_wait(entity this);
+void button_return(entity this);
-void button_wait()
-{SELFPARAM();
+void button_wait(entity this)
+{
self.state = STATE_TOP;
self.SUB_NEXTTHINK = self.SUB_LTIME + self.wait;
- self.SUB_THINK = button_return;
+ SUB_THINK(self, button_return);
SUB_UseTargets(self, self.enemy, NULL);
self.frame = 1; // use alternate textures
}
-void button_done()
-{SELFPARAM();
+void button_done(entity this)
+{
self.state = STATE_BOTTOM;
}
-void button_return()
-{SELFPARAM();
+void button_return(entity this)
+{
self.state = STATE_DOWN;
- SUB_CalcMove (self.pos1, TSPEED_LINEAR, self.speed, button_done);
+ SUB_CalcMove (self, self.pos1, TSPEED_LINEAR, self.speed, button_done);
self.frame = 0; // use normal textures
if (self.health)
self.takedamage = DAMAGE_YES; // can be shot again
}
-void button_fire()
-{SELFPARAM();
+void button_fire(entity this)
+{
self.health = self.max_health;
self.takedamage = DAMAGE_NO; // will be reset upon return
_sound (self, CH_TRIGGER, self.noise, VOL_BASE, ATTEN_NORM);
self.state = STATE_UP;
- SUB_CalcMove (self.pos2, TSPEED_LINEAR, self.speed, button_wait);
+ SUB_CalcMove (self, self.pos2, TSPEED_LINEAR, self.speed, button_wait);
}
-void button_reset()
-{SELFPARAM();
- self.health = self.max_health;
- setorigin(self, self.pos1);
- self.frame = 0; // use normal textures
- self.state = STATE_BOTTOM;
- if (self.health)
- self.takedamage = DAMAGE_YES; // can be shot again
+void button_reset(entity this)
+{
+ this.health = this.max_health;
+ setorigin(this, this.pos1);
+ this.frame = 0; // use normal textures
+ this.state = STATE_BOTTOM;
+ if (this.health)
+ this.takedamage = DAMAGE_YES; // can be shot again
}
void button_use(entity this, entity actor, entity trigger)
return;
this.enemy = actor;
- WITHSELF(this, button_fire());
+ WITHSELF(this, button_fire(this));
}
-void button_touch()
-{SELFPARAM();
+void button_touch(entity this)
+{
if (!other)
return;
if (!other.iscreature)
self.enemy = other;
if (other.owner)
self.enemy = other.owner;
- button_fire ();
+ button_fire (self);
}
void button_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force)
if (this.health <= 0)
{
this.enemy = damage_attacker;
- WITHSELF(this, button_fire());
+ WITHSELF(this, button_fire(this));
}
}
*/
spawnfunc(func_button)
{
- SetMovedir(self);
+ SetMovedir(this);
- if (!InitMovingBrushTrigger())
+ if (!InitMovingBrushTrigger(this))
return;
- self.effects |= EF_LOWPRECISION;
+ this.effects |= EF_LOWPRECISION;
- self.blocked = button_blocked;
- self.use = button_use;
+ this.blocked = button_blocked;
+ this.use = button_use;
-// if (self.health == 0) // all buttons are now shootable
-// self.health = 10;
- if (self.health)
+// if (this.health == 0) // all buttons are now shootable
+// this.health = 10;
+ if (this.health)
{
- self.max_health = self.health;
- self.event_damage = button_damage;
- self.takedamage = DAMAGE_YES;
+ this.max_health = this.health;
+ this.event_damage = button_damage;
+ this.takedamage = DAMAGE_YES;
}
else
- self.touch = button_touch;
+ settouch(this, button_touch);
- if (!self.speed)
- self.speed = 40;
- if (!self.wait)
- self.wait = 1;
- if (!self.lip)
- self.lip = 4;
+ if (!this.speed)
+ this.speed = 40;
+ if (!this.wait)
+ this.wait = 1;
+ if (!this.lip)
+ this.lip = 4;
- if(self.noise != "")
- precache_sound(self.noise);
+ if(this.noise != "")
+ precache_sound(this.noise);
- self.active = ACTIVE_ACTIVE;
+ this.active = ACTIVE_ACTIVE;
- self.pos1 = self.origin;
- self.pos2 = self.pos1 + self.movedir*(fabs(self.movedir*self.size) - self.lip);
- self.flags |= FL_NOTARGET;
+ this.pos1 = this.origin;
+ this.pos2 = this.pos1 + this.movedir*(fabs(this.movedir*this.size) - this.lip);
+ this.flags |= FL_NOTARGET;
- button_reset();
+ button_reset(this);
}
#endif