X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Ftriggers%2Ffunc%2Fbutton.qc;h=a8ec50a86540a7be10fed5418c2bcd1b2b1786a3;hb=fb7b625a2f9482eb9ae538f15d172b2fcb9742dc;hp=a55f02ef2fcc003852ef8aadde68dc799326f147;hpb=c0582a52156c4e74e4c5313e5f360275493a8733;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/triggers/func/button.qc b/qcsrc/common/triggers/func/button.qc index a55f02ef2..a8ec50a86 100644 --- a/qcsrc/common/triggers/func/button.qc +++ b/qcsrc/common/triggers/func/button.qc @@ -1,98 +1,97 @@ #ifdef SVQC // button and multiple button -void() button_wait; -void() button_return; - -void button_wait() -{SELFPARAM(); - self.state = STATE_TOP; - self.SUB_NEXTTHINK = self.SUB_LTIME + self.wait; - self.SUB_THINK = button_return; - activator = self.enemy; - SUB_UseTargets(); - self.frame = 1; // use alternate textures +void button_wait(entity this); +void button_return(entity this); + +void button_wait(entity this) +{ + this.state = STATE_TOP; + this.SUB_NEXTTHINK = this.SUB_LTIME + this.wait; + SUB_THINK(this, button_return); + SUB_UseTargets(this, this.enemy, NULL); + this.frame = 1; // use alternate textures } -void button_done() -{SELFPARAM(); - self.state = STATE_BOTTOM; +void button_done(entity this) +{ + this.state = STATE_BOTTOM; } -void button_return() -{SELFPARAM(); - self.state = STATE_DOWN; - SUB_CalcMove (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_return(entity this) +{ + this.state = STATE_DOWN; + SUB_CalcMove (this, this.pos1, TSPEED_LINEAR, this.speed, button_done); + this.frame = 0; // use normal textures + if (this.health) + this.takedamage = DAMAGE_YES; // can be shot again } -void button_blocked() +void button_blocked(entity this) { // do nothing, just don't come all the way back out } -void button_fire() -{SELFPARAM(); - self.health = self.max_health; - self.takedamage = DAMAGE_NO; // will be reset upon return +void button_fire(entity this) +{ + this.health = this.max_health; + this.takedamage = DAMAGE_NO; // will be reset upon return - if (self.state == STATE_UP || self.state == STATE_TOP) + if (this.state == STATE_UP || this.state == STATE_TOP) return; - if (self.noise != "") - _sound (self, CH_TRIGGER, self.noise, VOL_BASE, ATTEN_NORM); + if (this.noise != "") + _sound (this, CH_TRIGGER, this.noise, VOL_BASE, ATTEN_NORM); - self.state = STATE_UP; - SUB_CalcMove (self.pos2, TSPEED_LINEAR, self.speed, button_wait); + this.state = STATE_UP; + SUB_CalcMove (this, this.pos2, TSPEED_LINEAR, this.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() -{SELFPARAM(); - if(self.active != ACTIVE_ACTIVE) +void button_use(entity this, entity actor, entity trigger) +{ + if(this.active != ACTIVE_ACTIVE) return; - self.enemy = activator; - button_fire (); + this.enemy = actor; + button_fire(this); } -void button_touch() -{SELFPARAM(); +void button_touch(entity this) +{ if (!other) return; if (!other.iscreature) return; - if(other.velocity * self.movedir < 0) + if(other.velocity * this.movedir < 0) return; - self.enemy = other; + this.enemy = other; if (other.owner) - self.enemy = other.owner; - button_fire (); + this.enemy = other.owner; + button_fire (this); } -void button_damage(entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force) -{SELFPARAM(); - if(self.spawnflags & DOOR_NOSPLASH) +void button_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force) +{ + if(this.spawnflags & DOOR_NOSPLASH) if(!(DEATH_ISSPECIAL(deathtype)) && (deathtype & HITTYPE_SPLASH)) return; - self.health = self.health - damage; - if (self.health <= 0) + this.health = this.health - damage; + if (this.health <= 0) { - self.enemy = damage_attacker; - button_fire (); + this.enemy = damage_attacker; + button_fire(this); } } @@ -112,44 +111,44 @@ When a button is touched, it moves some distance in the direction of it's angle, 2) metallic click 3) in-out */ -void spawnfunc_func_button() -{SELFPARAM(); - SetMovedir (); +spawnfunc(func_button) +{ + SetMovedir(this); - if (!InitMovingBrushTrigger()) + if (!InitMovingBrushTrigger(this)) return; - self.effects |= EF_LOWPRECISION; + this.effects |= EF_LOWPRECISION; - self.blocked = button_blocked; - self.use = button_use; + setblocked(this, 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