public static void SP_trigger_hurt(edict_t self) { GameTrigger.InitTrigger(self); self.noise_index = GameBase.gi.soundindex("world/electro.wav"); self.touch = GameTrigger.hurt_touch; if (0 == self.dmg) { self.dmg = 5; } if ((self.spawnflags & 1) != 0) { self.solid = Defines.SOLID_NOT; } else { self.solid = Defines.SOLID_TRIGGER; } if ((self.spawnflags & 2) != 0) { self.use = GameTrigger.hurt_use; } GameBase.gi.linkentity(self); }
/* * QUAKED trigger_push (.5 .5 .5) ? PUSH_ONCE Pushes the player "speed" * defaults to 1000 */ public static void SP_trigger_push(edict_t self) { GameTrigger.InitTrigger(self); GameTrigger.windsound = GameBase.gi.soundindex("misc/windfly.wav"); self.touch = GameTrigger.trigger_push_touch; if (0 == self.speed) { self.speed = 1000; } GameBase.gi.linkentity(self); }
public static void SP_trigger_gravity(edict_t self) { if (GameBase.st.gravity == null) { GameBase.gi.dprintf("trigger_gravity without gravity set at " + Lib.vtos(self.s.origin) + "\n"); GameUtil.G_FreeEdict(self); return; } GameTrigger.InitTrigger(self); self.gravity = Lib.atoi(GameBase.st.gravity); self.touch = GameTrigger.trigger_gravity_touch; }
/** * QUAKED trigger_once (.5 .5 .5) ? x x TRIGGERED Triggers once, then * removes itself. You must set the key "target" to the name of another * object in the level that has a matching "targetname". * * If TRIGGERED, this trigger must be triggered before it is live. * * sounds 1) secret 2) beep beep 3) large switch 4) * * "message" string to be displayed when triggered */ public static void SP_trigger_once(edict_t ent) { // make old maps work because I messed up on flag assignments here // triggered was on bit 1 when it should have been on bit 4 if ((ent.spawnflags & 1) != 0) { float[] v = { 0, 0, 0 }; Math3D.VectorMA(ent.mins, 0.5f, ent.size, v); ent.spawnflags &= ~1; ent.spawnflags |= 4; GameBase.gi.dprintf("fixed TRIGGERED flag on " + ent.classname + " at " + Lib.vtos(v) + "\n"); } ent.wait = -1; GameTrigger.SP_trigger_multiple(ent); }
public static void SP_trigger_monsterjump(edict_t self) { if (0 == self.speed) { self.speed = 200; } if (0 == GameBase.st.height) { GameBase.st.height = 200; } if (self.s.angles[Defines.YAW] == 0) { self.s.angles[Defines.YAW] = 360; } GameTrigger.InitTrigger(self); self.touch = GameTrigger.trigger_monsterjump_touch; self.movedir[2] = GameBase.st.height; }