<!-- SAGA-STAGING · part 73 -->
Intensity: 0.8}));
    engine.rotation.x = Math.PI/2; engine.position.z = -4.5; ship.add(engine);
    ship.position.y = 4; plat2.add(ship);
    window._creatorShip = ship;
    /* Bridge from hall to platform */
    var bridge = new THREE.Mesh(new THREE.BoxGeometry(4, 0.5, 16), darkMat);
    bridge.position.set(14, 0.25, 0); g.add(bridge);
    plat2.position.set(28, 0, 0); g.add(plat2);
    /* HALL BEACONS — giant gold light pillar, visible across the night sky (King's order) */
    var beaconMat = new THREE.MeshBasicMaterial({color: 0xffd700, transparent: true, opacity: 0.9});
    var beaconBeam = new THREE.Mesh(new THREE.CylinderGeometry(2, 3, 500, 16, 1, true), beaconMat);
    beaconBeam.position.y = 250; g.add(beaconBeam);
    var beaconOrb = new THREE.Mesh(new THREE.SphereGeometry(3, 16, 16),
      new THREE.MeshBasicMaterial({color: 0xffe766}));
    beaconOrb.position.y = 8; g.add(beaconOrb);
    /* Red and green nav lights on the hall rim — 5x bigger */
    for(var bi = 0; bi < 8; bi++){
      var ba = (bi/8) * Math.PI * 2;
      var bcol = (bi % 2 === 0) ? 0xff0000 : 0x00ff00;
      var blight = new THREE.Mesh(new THREE.SphereGeometry(1.5, 12, 12),
        new THREE.MeshBasicMaterial({color: bcol}));
      blight.position.set(Math.cos(ba)*12, 2, Math.sin(ba)*12);
      g.add(blight);
      var bbeam = new THREE.Mesh(new THREE.CylinderGeometry(0.5, 0.5, 100, 8, 1, true),
        new THREE.MeshBasicMaterial({color: bcol, transparent: true, opacity: 0.4}));
      bbeam.position.set(Math.cos(ba)*12, 52, Math.sin(ba)*12);
      g.add(bbeam);
    }
    /* Deck landing zone — world coordinates */
    window._deckZone = { x: cx + 28, z: cz, y: gy + 1.5, r: 11 };
    /* Hall landing zone — the main circle */
    window._hallZone = { x: cx, z: cz, y: gy + 1, r: 13 };
    /* Ship gentle hover */
    if(!window._shipAnim){
      window._shipAnim = true;
      var _t = 0;
      var _hover = function(){
        _t += 0.02;
        try{ if(window._creatorShip) window._creatorShip.position.y = 4 + Math.sin(_t) * 0.5; }catch(e){ console.error(e); }
        requestAnimationFrame(_hover);
      };
      _hover();
    }

    g.position.set(cx, gy, cz);
    if(typeof scene !== 'undefined') scene.add(g);

    /* Animate the hourglass — slow rotation, honoring Playa 2.0 */
    if(!window._creatorHallAnim){
      window._creatorHallAnim = true;
      var _spin = function(){
        try{ if(window._creatorHallHourglass) window._creatorHallHourglass.rotation.y += 0.005; }catch(e){ console.error(e); }
        requestAnimationFrame(_spin);
      };
      _spin();
    }

    if(typeof codeStatus === 'function') codeStatus('THE CREATOR HALL — for Playa 2.0');
    if(typeof trackNewThing === 'function') trackNewThing('creatorhall', 'The Creator Hall — Playa 2.0\'s Fix Station in the world');
  }catch(e){ if(typeof codeStatus==='function') codeStatus('creator hall failed'); }
}

window.__sagaExecMark('5924');
// Build Playa 2.0 Creator Hall on startup — King order 2026-10-03
if(typeof buildCreatorHall === "function"){ try{ buildCreatorHall(); }catch(e){ console.error(e); } }


window.__sagaExecMark('5928');
/* SOLID'S MEMORY — every site remembers what was built on it. King order 2026-10-05.
   This code ships in ALL builds from here on. No Python on top: plain JS. */
function buildMemoryLog(){
  var site = (location.pathname.split('/')[1] || 'root');
  window._memorySite = site;
  window.logBuild = function(what){
    try{
      var log = JSON.parse(localStorage.getItem('solid-memory-staging') || '[]');
      log.push({t:Date.now(), site:site, what:String(what)});
      if(log.length > 200) log = log.slice(-(200));
      localStorage.setItem('solid-memory-staging', JSON.stringify(log));
    }catch(e){ console.error(e); }
  };
  window.readMemory = function(n){
    try{
      var log = JSON.parse(localStorage.getItem('solid-memory-staging') || '[]');
      return log.filter(function(e){ return e.site === site; }).slice(-(n || 10));
    }catch(e){ return []; }
  };
  window.logBuild('regime raised');
}

buildMemoryLog(); /* memory before building */

window.__sagaExecMark('5952');
/* THE KING'S CASTLE — put it down, save it forever. King order 2026-10-05. */
window._castles = window._castles || [];
function buildCastleAt(x, z, animate){
  if(window.STAGING_CLEAN_MAP) return; // Clean map: old builder disabled
  try{
    var g = new THREE.Group();
    var stone = new THREE.MeshStandardMaterial({color:0x8a8a8a, roughness:0.7, metalness:0.2});
    var dark = new THREE.MeshStandardMaterial({color:0x5a5a6a, roughness:0.6, metalness:0.3});
    var goldm = new THREE.MeshStandardMaterial({color:0xd8a920, roughness:0.3, metalness:0.8});
    var order = [];
    function part(name, geo, mat, px, py, pz, ry){
      var msh = new THREE.Mesh(geo, mat);
      msh.name = name; msh.position.set(px, py, pz);
      if(ry) msh.rotation.y = ry;
      msh.castShadow = true;
      g.add(msh); order.push(msh); return msh;