public void touch(Entity self, Entity other, Plane plane, Surface surf) { if (other.client != null) { if ((self.spawnflags & 2) != 0) return; } else if ((other.svflags & Constants.SVF_MONSTER) != 0) { if (0 == (self.spawnflags & 1)) return; } else return; if (!Math3D.VectorEquals(self.movedir, Globals.vec3_origin)) { float[] forward = {0, 0, 0}; Math3D.AngleVectors(other.s.angles, forward, null, null); if (Math3D.DotProduct(forward, self.movedir) < 0) return; } self.activator = other; multi_trigger(self); }