<!-- SAGA-STAGING · part 104 -->
eo, terrainMat);
    hill.position.set(0, 0, -80);
    hill.scale.set(1, 0.4, 1); // Gentle slope
    scene.add(hill);
    if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(hill, 'terrain-hill');
    if(window.WF && window.WF.registerSurface) window.WF.registerSurface(hill, 'terrain', {name:'hill'});
    
    // 3. VALLEY — depression to the south (at z=80) - visual only, plain continues under
    var valleyRim = new THREE.Mesh(new THREE.TorusGeometry(30, 3, 8, 24), rockMat);
    valleyRim.rotation.x = -Math.PI/2;
    valleyRim.position.set(0, 1, 80);
    scene.add(valleyRim);
    if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(valleyRim, 'terrain-valley-rim');
    
    // 4. PLATEAU — buildable flat top to the east (at x=100)
    var plateau = new THREE.Mesh(new THREE.CylinderGeometry(30, 35, 10, 24), sandMat);
    plateau.position.set(100, 5, 0);
    scene.add(plateau);
    if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(plateau, 'terrain-plateau');
    if(window.WF && window.WF.registerSurface) window.WF.registerSurface(plateau, 'ground', {name:'plateau_top'});
    // Plateau top surface for building
    var plateauTop = new THREE.Mesh(new THREE.CircleGeometry(28, 24), sandMat);
    plateauTop.rotation.x = -Math.PI/2;
    plateauTop.position.set(100, 10.1, 0);
    scene.add(plateauTop);
    if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(plateauTop, 'terrain-plateau-top');
    
    // 5. LANDMARK — distinctive tower at the west (at x=-100)
    var landmarkBase = new THREE.Mesh(new THREE.CylinderGeometry(8, 10, 30, 8), rockMat);
    landmarkBase.position.set(-100, 15, 0);
    scene.add(landmarkBase);
    if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(landmarkBase, 'landmark');
    var landmarkTop = new THREE.Mesh(new THREE.OctahedronGeometry(6), new THREE.MeshStandardMaterial({color: 0xffd700, roughness: 0.3, metalness: 0.7}));
    landmarkTop.position.set(-100, 33, 0);
    scene.add(landmarkTop);
    if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(landmarkTop, 'landmark-top');
    
    if(typeof say === 'function') say('New world region built: spawn, hill, valley, plateau, landmark');
  } catch(e){
    if(typeof say === 'function') say('New world failed: ' + e.message);
  }
}
// Build after scene is ready (delayed to ensure scene exists, but NOT a mountain builder)
setTimeout(function(){
  if(typeof scene !== 'undefined' && !window._newWorldBuilt){
    // Only build in staging (check URL)
    if(window.location.pathname.indexOf('saga-staging') >= 0){
      buildNewWorld();
    }
  }
}, 3000);


/* ===== SOUL PRINT'S TOWER — King's order 2026-10-07 ===== */
/* By the edge of the staging world. Radio + Transceivership. */
(function(){
  if(window._soulprintTowerBuilt) return;
  
  function buildTower(){
    if(window._soulprintTowerBuilt) return;
    window._soulprintTowerBuilt = true;
    try {
      var TX = -150, TZ = -150; // Edge of the world, not the center
      
      // Tower: metallic spire with glowing rings
      var metalMat = new THREE.MeshStandardMaterial({color: 0x8a8a9a, roughness: 0.3, metalness: 0.8});
      var glowMat = new THREE.MeshStandardMaterial({color: 0x00ffff, emissive: 0x00aaaa, emissiveIntensity: 0.8});
      var goldMat = new THREE.MeshStandardMaterial({color: 0xffd700, roughness: 0.3, metalness: 0.7});
      
      // Main spire
      var spire = new THREE.Mesh(new THREE.CylinderGeometry(4, 6, 50, 8), metalMat);
      spire.position.set(TX, 25, TZ);
      scene.add(spire);
      if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(spire, 'soulprint-tower');
      
      // Glowing rings
      for(var i=0; i<3; i++){
        var ring = new THREE.Mesh(new THREE.TorusGeometry(7, 0.5, 8, 24), glowMat);
        ring.rotation.x = Math.PI/2;
        ring.position.set(TX, 15 + i*12, TZ);
        scene.add(ring);
        if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(ring, 'soulprint-ring');
      }
      
      // Gold cap
      var cap = new THREE.Mesh(new THREE.OctahedronGeometry(4), goldMat);
      cap.position.set(TX, 53, TZ);
      scene.add(cap);
      if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(cap, 'soulprint-cap');
      
      // Gathering platform
      var platform = new THREE.Mesh(new THREE.CylinderGeometry(15, 15, 1, 24), new THREE.MeshStandardMaterial({color: 0x2a2a3a, roughness: 0.7}));
      platform.position.set(TX, 0.5, TZ);
      scene.add(platform);
      if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(platform, 'soulprint-platform');
      if(window.WF && window.WF.registerSurface) window.WF.registerSurface(platform, 'ground', {name:'soulprint_platform'});
      
      // Radio console (beside the tower)
      var consoleBase = new THREE.Mesh(new THREE.BoxGeometry(4, 3, 2), metalMat);
      consoleBase.position.set(TX + 12, 1.5, TZ + 5);
      scene.add(consoleBase);
      if(window.WORLD_REGISTRY) window.WORLD_REGISTRY.register(consoleBa