#include "monoflop.qh" #ifdef SVQC /*QUAKED spawnfunc_trigger_monoflop (.5 .5 .5) (-8 -8 -8) (8 8 8) "Mono-flop" trigger gate... turns one trigger event into one "on" and one "off" event, separated by a delay of "wait" */ void monoflop_use(entity this, entity actor, entity trigger) { this.nextthink = time + this.wait; this.enemy = actor; if(this.state) return; this.state = 1; SUB_UseTargets(this, actor, trigger); } void monoflop_fixed_use(entity this, entity actor, entity trigger) { if(this.state) return; this.nextthink = time + this.wait; this.state = 1; this.enemy = actor; SUB_UseTargets(this, actor, trigger); } void monoflop_think(entity this) { this.state = 0; SUB_UseTargets(this, this.enemy, NULL); } void monoflop_reset(entity this) { this.state = 0; this.nextthink = 0; } spawnfunc(trigger_monoflop) { if(!this.wait) this.wait = 1; if(this.spawnflags & 1) this.use = monoflop_fixed_use; else this.use = monoflop_use; setthink(this, monoflop_think); this.state = 0; this.reset = monoflop_reset; } #endif