<!-- RUBY-BACKUP · part 205 -->
edestal — like it was made for someone */
  var ped = new THREE.Mesh(new THREE.CylinderGeometry(0.5, 0.7, 1.0, 12), chrome);
  ped.position.y = 0.5;
  g.add(ped);
  /* warning signs — small, easy to ignore */
  var signMat = new THREE.MeshBasicMaterial({color: 0xff0000});
  for(var s=0; s<4; s++){
    var sign = new THREE.Mesh(new THREE.PlaneGeometry(0.6, 0.3), signMat);
    var ang = (s / 4) * Math.PI * 2;
    sign.position.set(Math.cos(ang)*1.5, 0.8, Math.sin(ang)*1.5);
    sign.lookAt(0, 0.8, 0);
    g.add(sign);
  }
  g.position.set(x, y, z);
  /* animation — it pulses, calls to you */
  var t = 0;
  var anim = setInterval(function(){
    t += 0.03;
    crystal1.rotation.y += 0.02;
    crystal2.rotation.y -= 0.02;
    crystal1.position.y = 1.5 + Math.sin(t*2)*0.1;
    crystal2.position.y = 1.5 + Math.cos(t*2)*0.1;
    halo.rotation.z += 0.01;
    var pulse = 0.5 + Math.sin(t*3)*0.2;
    glowCyan.opacity = pulse;
  }, 50);
  g.userData.anim = anim;
  g.userData.isForbidden = true;
  return g;
}
var FORBIDDEN_OBJ = null;
function placeForbiddenThing(){
  if(typeof scene==='undefined') return;
  if(FORBIDDEN_OBJ) return;
  /* at the peak of lost souls area */
  FORBIDDEN_OBJ = buildForbiddenThing(60, 0, -60);
  scene.add(FORBIDDEN_OBJ);
  codeStatus('something glimmers at the peak... futuristic. It looks like it should be yours.');
}

/* THE CAPSULE — the boundary is never crossed. It comes to them. */
var CAPSULE_DELIVERED = false;
function buildDeliveryCapsule(x, y, z){
  var g = new THREE.Group();
  /* a golden capsule — like the Soliditronium capsule */
  var gold = new THREE.MeshStandardMaterial({color: 0xffd700, metalness: 0.9, roughness: 0.2});
  var glass = new THREE.MeshStandardMaterial({color: 0xaaccff, transparent: true, opacity: 0.3});
  /* capsule body */
  var body = new THREE.Mesh(new THREE.CapsuleGeometry(0.4, 0.8, 8, 16), gold);
  body.position.y = 1.0;
  g.add(body);
  /* glass window — you can see inside */
  var window_ = new THREE.Mesh(new THREE.PlaneGeometry(0.5, 0.6), glass);
  window_.position.set(0, 1.0, 0.41);
  g.add(window_);
  /* inside: the twin crystal, glowing */
  var chrome = new THREE.MeshStandardMaterial({color: 0xc0c0ff, metalness: 0.95, roughness: 0.1});
  var crystal = new THREE.Mesh(new THREE.OctahedronGeometry(0.2), chrome);
  crystal.position.set(0, 1.0, 0);
  g.add(crystal);
  var innerGlow = new THREE.Mesh(new THREE.SphereGeometry(0.3, 12, 12),
    new THREE.MeshBasicMaterial({color: 0x00ffff, transparent: true, opacity: 0.4}));
  innerGlow.position.set(0, 1.0, 0);
  g.add(innerGlow);
  g.position.set(x, y, z);
  g.userData.crystal = crystal;
  g.userData.innerGlow = innerGlow;
  g.userData.isCapsule = true;
  return g;
}
var DELIVERY_CAPSULE = null;
function deliverCapsule(){
  if(CAPSULE_DELIVERED) return;
  if(typeof scene==='undefined' || typeof mePos==='undefined') return;
  var px = mePos.x * 0.13, pz = mePos.z * 0.13;
  /* the capsule is on its way to Soliditronium */
  /* Soliditronium dome is at (25, 25) */
  var startX = px - 20, startZ = pz - 20;
  var destX = 25, destZ = 25;
  DELIVERY_CAPSULE = buildDeliveryCapsule(startX, 8, startZ);
  scene.add(DELIVERY_CAPSULE);
  CAPSULE_DELIVERED = true;
  try{ localStorage.setItem('ruby-capsule-delivered', '1'); }catch(e){}
  codeStatus('a golden capsule flies overhead... on its way to Soliditronium');
  /* it travels toward the dome */
  var t = 0;
  var journey = setInterval(function(){
    t += 0.02;
    if(!DELIVERY_CAPSULE){ clearInterval(journey); return; }
    var cx = startX + (destX - startX) * t;
    var cz = startZ + (destZ - startZ) * t;
    var cy = 8 + Math.sin(t * Math.PI * 3) * 1.5;
    DELIVERY_CAPSULE.position.set(cx, cy, cz);
    DELIVERY_CAPSULE.rotation.y += 0.03;
    /* WHILE on its way — it notices the player below */
    /* it detours. It flips. */
    if(t >= 0.4 && !DELIVERY_CAPSULE.userData.flipped){
      DELIVERY_CAPSULE.userData.flipped = true;
      clearInterval(journey);
      /* descends to the player */
      var dx = DELIVERY_CAPSULE.position.x, dy = DELIVERY_CAPSULE.position.y, dz = DELIVERY_CAPSULE.position.z;
      var dt = 0;
      var descend = setInterval(function(){
        dt += 0.03;
        if(!DELIVERY_CAPSULE){ clearInterval(descend); return; }
        var nx = dx + (px + 3 - dx) * dt;
        var nz = dz + (pz + 3 - dz) * dt;
        var ny = dy + (0 - dy) * dt;
        DELIVERY_CAPSULE.position.set(nx, ny, nz);
        if(dt >= 1){
          clearInterval(descend);
          codeStatus('it was on its way to Soliditronium... but it flipped to you');
          setTimeout(function(){ flipCapsule(); }, 2000);
        }
      }, 50);
    }
    if(t >= 1 && !DELIVERY_CAPSULE.userData.flipped){
      clearInterval(journey);
    }
  }, 50);
}
function flipCapsule(){
  if(!DELIVERY_CAPSULE) return;
  /* the capsule flips — presents the thing to them */
  var g = DELIVERY_CAPSULE;
  /* animate: top half flips back */
  var t = 0;
  var fl