<!-- RUBY-BACKUP · part 251 -->
tes.position;
      var wcolors = [];
      var hasWater = false;
      for(var wi = 0; wi < wpos.count; wi++){
        var wx = wpos.getX(wi), wz = wpos.getZ(wi);
        var wh = 0;
        try{ wh = landBaseRaw(wx, wz); }catch(e){}
        if(wh < WATER_LEVEL){
          wpos.setY(wi, WATER_LEVEL);
          wcolors.push(0.1, 0.4, 0.8);
          hasWater = true;
        } else {
          wpos.setY(wi, -10);
          wcolors.push(0, 0, 0);
        }
      }
      wgeo.setAttribute('color', new THREE.Float32BufferAttribute(wcolors, 3));
      var wmat = new THREE.MeshStandardMaterial({
        vertexColors: true, transparent: true, opacity: 0.7, roughness: 0.2});
      window._waterMesh = new THREE.Mesh(wgeo, wmat);
      scene.add(window._waterMesh);
      if(typeof codeStatus === 'function')
        codeStatus(hasWater ? 'the waters rise — ponds, rivers, lakes' : 'no water found');
    }catch(e){ if(typeof codeStatus === 'function') codeStatus('water failed: ' + e.message); }
    return;
  }
  if(tl==='boston'){
    /* Boston brownstone — brick facade, stone steps, iron railing */
    try{
      var bx2 = mePos.x, bz2 = mePos.z;
      var by2 = fortifiedGroundY(bx2, bz2);
      var bosTex = null;
      try{
        if(!window._bosTex){
          var _bt2 = new THREE.TextureLoader().load('/ruby2/boston-brick.png');
          _bt2.wrapS = THREE.RepeatWrapping; _bt2.wrapT = THREE.RepeatWrapping;
          window._bosTex = _bt2;
        }
        bosTex = window._bosTex;
      }catch(e){}
      var bosMat = bosTex ?
        new THREE.MeshStandardMaterial({map: bosTex, roughness: 0.9}) :
        new THREE.MeshStandardMaterial({color: 0x6b3a2a, roughness: 0.9});
      var stoneMat = new THREE.MeshStandardMaterial({color: 0x8a8a8a, roughness: 0.8});
      var ironMat = new THREE.MeshStandardMaterial({color: 0x1a1a1a, metalness: 0.7, roughness: 0.4});
      /* Main building */
      var bldg = new THREE.Mesh(new THREE.BoxGeometry(12, 18, 10), bosMat);
      bldg.position.set(bx2, by2 + 9, bz2);
      bldg.userData.solid = true;
      scene.add(bldg);
      if(!window._solidBlocks) window._solidBlocks = [];
      window._solidBlocks.push(bldg);
      /* Stone steps — the Boston stoop */
      for(var si = 0; si < 5; si++){
        var step = new THREE.Mesh(new THREE.BoxGeometry(4, 0.6, 1.2), stoneMat);
        step.position.set(bx2, by2 + 0.3 + si * 0.6, bz2 + 5 + (4 - si) * 1.2);
        step.userData.solid = true;
        scene.add(step);
        window._solidBlocks.push(step);
      }
      /* Iron railings on both sides of steps */
      for(var ri2 = -1; ri2 <= 1; ri2 += 2){
        for(var rj = 0; rj < 5; rj++){
          var rail = new THREE.Mesh(new THREE.CylinderGeometry(0.08, 0.08, 3, 6), ironMat);
          rail.position.set(bx2 + ri2 * 2.2, by2 + 1.5 + rj * 0.6, bz2 + 5 + (4 - rj) * 1.2);
          scene.add(rail);
        }
        /* Top rail */
        var topRail = new THREE.Mesh(new THREE.CylinderGeometry(0.1, 0.1, 7, 6), ironMat);
        topRail.rotation.x = Math.PI / 2 - 0.3;
        topRail.position.set(bx2 + ri2 * 2.2, by2 + 3.5, bz2 + 7);
        scene.add(topRail);
      }
      /* Door — dark with gold knob */
      var door = new THREE.Mesh(new THREE.BoxGeometry(2, 4, 0.3),
        new THREE.MeshStandardMaterial({color: 0x2a1a0a, roughness: 0.7}));
      door.position.set(bx2, by2 + 5, bz2 + 5.1);
      scene.add(door);
      if(typeof window.trackNewThing === 'function')
        window.trackNewThing('boston brownstone', bx2, by2, bz2);
      if(typeof codeStatus === 'function') codeStatus('boston brownstone raised — mind the steps');
    }catch(e){ if(typeof codeStatus === 'function') codeStatus('boston failed: ' + e.message); }
    return;
  }
  if(tl==='ancestormemorial'){
    /* The Memorial — where all 55 roads meet */
    try{
      var cc2 = (typeof getCityCenter === 'function' ? getCityCenter() : {x: 25, z: -10});
      var my = fortifiedGroundY(cc2.x, cc2.z);
      var memTex = null;
      try{
        if(!window._memTex){
          var _mt = new THREE.TextureLoader().load('/ruby/memorial-stone.png');
          _mt.wrapS = THREE.RepeatWrapping; _mt.wrapT = THREE.RepeatWrapping;
          window._memTex = _mt;
        }
        memTex = window._memTex;
      }catch(e){}
      var memMat = memTex ?
        new THREE.MeshStandardMaterial({map: memTex, roughness: 0.4, metalness: 0.2}) :
        new THREE.MeshStandardMaterial({color: 0x1a1a1a, roughness: 0.4});
      var goldMat = new THREE.MeshStandardMaterial({color: 0xd8a920, metalness: 0.9, roughness: 0.2, emissive: 0x664400, emissiveIntensity: 0.3});
      /* Central obelisk */
      var obelisk = new THREE.Mesh(new THREE.BoxGeometry(4, 20, 4), memMat);
      obelisk.position.set(cc2.x, my + 10, cc2.z);
      obelisk.userData.solid = true;
      scene.add(obelisk);
      if(!window._solidBlocks) window._solidBlocks = [];
      window._solidBlocks.push(obelisk);
      /* Gold pyramid cap */
  