public void use(Entity self, Entity other, Entity activator) { if (self.count == 0) return; self.count--; if (self.count != 0) { if (0 == (self.spawnflags & 1)) { ServerGame.PF_centerprintf(activator, self.count + " more to go..."); ServerGame.PF_StartSound( activator, Constants.CHAN_AUTO, ServerInit.SV_SoundIndex("misc/talk1.wav"), (float) 1, (float) Constants.ATTN_NORM, (float) 0); } return; } if (0 == (self.spawnflags & 1)) { ServerGame.PF_centerprintf(activator, "Sequence completed!"); ServerGame.PF_StartSound( activator, Constants.CHAN_AUTO, ServerInit.SV_SoundIndex("misc/talk1.wav"), (float) 1, (float) Constants.ATTN_NORM, (float) 0); } self.activator = activator; multi_trigger(self); }
public void touch(Entity self, Entity other, Plane plane, Surface surf) { int dflags; if (other.takedamage == 0) return; if (self.timestamp > GameBase.level.time) return; if ((self.spawnflags & 16) != 0) self.timestamp = GameBase.level.time + 1; else self.timestamp = GameBase.level.time + Constants.FRAMETIME; if (0 == (self.spawnflags & 4)) { if ((GameBase.level.framenum % 10) == 0) ServerGame.PF_StartSound( other, Constants.CHAN_AUTO, self.noise_index, (float) 1, (float) Constants.ATTN_NORM, (float) 0); } if ((self.spawnflags & 8) != 0) dflags = Constants.DAMAGE_NO_PROTECTION; else dflags = 0; GameCombat.T_Damage( other, self, self, Globals.vec3_origin, other.s.origin, Globals.vec3_origin, self.dmg, self.dmg, dflags, Constants.MOD_TRIGGER_HURT); }
public void touch(Entity self, Entity other, Plane plane, Surface surf) { if (Lib.strcmp(other.classname, "grenade") == 0) { Math3D.VectorScale(self.movedir, self.speed * 10, other.velocity); } else if (other.health > 0) { Math3D.VectorScale(self.movedir, self.speed * 10, other.velocity); if (other.client != null) { // don't take falling damage immediately from this Math3D.VectorCopy(other.velocity, other.client.oldvelocity); if (other.fly_sound_debounce_time < GameBase.level.time) { other.fly_sound_debounce_time = GameBase.level.time + 1.5f; ServerGame.PF_StartSound( other, Constants.CHAN_AUTO, windsound, (float) 1, (float) Constants.ATTN_NORM, (float) 0); } } } if ((self.spawnflags & PUSH_ONCE) != 0) GameUtil.G_FreeEdict(self); }
public void use(Entity self, Entity other, Entity activator) { int index; if (self.item == null) return; if (activator.client == null) return; index = GameItems.ITEM_INDEX(self.item); if (activator.client.pers.inventory[index] == 0) { if (GameBase.level.time < self.touch_debounce_time) return; self.touch_debounce_time = GameBase.level.time + 5.0f; ServerGame.PF_centerprintf(activator, "You need the " + self.item.pickup_name); ServerGame.PF_StartSound( activator, Constants.CHAN_AUTO, ServerInit.SV_SoundIndex("misc/keytry.wav"), (float) 1, (float) Constants.ATTN_NORM, (float) 0); return; } ServerGame.PF_StartSound( activator, Constants.CHAN_AUTO, ServerInit.SV_SoundIndex("misc/keyuse.wav"), (float) 1, (float) Constants.ATTN_NORM, (float) 0); if (GameBase.coop.value != 0) { int player; Entity ent; if (Lib.strcmp(self.item.classname, "key_power_cube") == 0) { int cube; for (cube = 0; cube < 8; cube++) if ((activator.client.pers.power_cubes & (1 << cube)) != 0) break; for (player = 1; player <= GameBase.game.maxclients; player++) { ent = GameBase.g_edicts[player]; if (!ent.inuse) continue; if (null == ent.client) continue; if ((ent.client.pers.power_cubes & (1 << cube)) != 0) { ent.client.pers.inventory[index]--; ent.client.pers.power_cubes &= ~(1 << cube); } } } else { for (player = 1; player <= GameBase.game.maxclients; player++) { ent = GameBase.g_edicts[player]; if (!ent.inuse) continue; if (ent.client == null) continue; ent.client.pers.inventory[index] = 0; } } } else { activator.client.pers.inventory[index]--; } GameUtil.G_UseTargets(self, activator); self.use = null; }