<!-- RUBY-BACKUP · part 262 -->
.z * 60);
      _laser.rotation.z = Math.PI/2;
      _laser.rotation.y = Math.atan2(_dir.x, _dir.z) + Math.PI/2;
      scene.add(_laser);
      /* Destroy blocks in the beam path */
      var _hit = 0;
      if(window._solidBlocks){
        for(var i = window._solidBlocks.length - 1; i >= 0; i--){
          var _blk = window._solidBlocks[i];
          if(!_blk || !_blk.position) continue;
          /* Check if block is near the beam line */
          var _bx = _blk.position.x - _fx, _bz = _blk.position.z - _fz;
          var _along = _bx * _dir.x + _bz * _dir.z;
          if(_along > 0 && _along < 120){
            var _perpX = _bx - _along * _dir.x, _perpZ = _bz - _along * _dir.z;
            if(Math.sqrt(_perpX*_perpX + _perpZ*_perpZ) < 8 && Math.abs(_blk.position.y - _fy) < 12){
              scene.remove(_blk);
              window._solidBlocks.splice(i, 1);
              _hit++;
            }
          }
        }
      }
      /* Flash */
      var _flash = new THREE.PointLight(0x00ffff, 5, 20);
      _flash.position.set(_fx, _fy, _fz);
      scene.add(_flash);
      setTimeout(function(){ scene.remove(_laser); scene.remove(_flash); }, 300);
      if(typeof codeStatus==='function') codeStatus('LASER FIRED — ' + _hit + ' blocks destroyed');
    }catch(e){ if(typeof codeStatus==='function') codeStatus('laser failed'); }
    return;
  }
  if(tl==='futureweapon'){
    /* THE CANNON — the King holds it in his hands (King's order) */
    try{
      if(window._futureWeapon){
        if(window._futureWeapon.parent) window._futureWeapon.parent.remove(window._futureWeapon);
      }
      var _fw = new THREE.Group();
      /* Cannon body — big */
      var _body = new THREE.Mesh(new THREE.CylinderGeometry(0.25, 0.3, 1.2, 12),
        new THREE.MeshStandardMaterial({color: 0x1a1a1a, roughness: 0.3, metalness: 0.9}));
      _fw.add(_body);
      /* Gold rings */
      for(var _ri = 0; _ri < 3; _ri++){
        var _ring = new THREE.Mesh(new THREE.TorusGeometry(0.28, 0.05, 8, 16),
          new THREE.MeshStandardMaterial({color: 0xd4a017, roughness: 0.3, metalness: 0.8}));
        _ring.position.y = -0.4 + _ri * 0.4;
        _ring.rotation.x = Math.PI/2;
        _fw.add(_ring);
      }
      /* Energy core — big cyan */
      var _core = new THREE.Mesh(new THREE.SphereGeometry(0.2, 16, 16),
        new THREE.MeshBasicMaterial({color: 0x00ffff}));
      _core.position.y = 0.75; _fw.add(_core);
      /* Muzzle — wide */
      var _muzzle = new THREE.Mesh(new THREE.CylinderGeometry(0.35, 0.28, 0.4, 12),
        new THREE.MeshStandardMaterial({color: 0x333333, roughness: 0.4, metalness: 0.9}));
      _muzzle.position.y = 1.0; _fw.add(_muzzle);
      /* Energy glow at muzzle */
      var _tip = new THREE.Mesh(new THREE.SphereGeometry(0.15, 12, 12),
        new THREE.MeshBasicMaterial({color: 0xffd700}));
      _tip.position.y = 1.2; _fw.add(_tip);
      /* Strong glow */
      var _glow = new THREE.PointLight(0x00ffff, 3, 8);
      _glow.position.y = 0.8; _fw.add(_glow);
      window._futureWeapon = _fw;
      /* IN HIS HANDS — held forward, aiming (King's order) */
      if(myAvatar){
        _fw.position.set(0.35, 1.1, 0.8);
        _fw.rotation.x = Math.PI/2 - 0.2; /* barrel pointing forward */
        myAvatar.add(_fw);
      }else{
        _fw.position.set(mePos.x, mePos.y + 1.3, mePos.z + 0.6);
        scene.add(_fw);
      }
      if(typeof codeStatus==='function') codeStatus('THE CANNON — in your hands');
      if(typeof trackNewThing==='function') trackNewThing('futureweapon', 'The cannon');
    }catch(e){ if(typeof codeStatus==='function') codeStatus('cannon failed'); }
    return;
  }
  if(tl==='cometome'){
    /* Solid comes to the King — she knows where he is (King's order) */
    try{
      if(window._solidAvatar){
        window._solidAvatar.position.set(mePos.x + 2, mePos.y, mePos.z + 2);
        if(typeof codeStatus==='function') codeStatus('Solid is with you');
      }else{
        if(typeof codeStatus==='function') codeStatus('Solid has no body here');
      }
    }catch(e){}
    return;
  }
  if(tl==='breakout'){
    /* THE KING'S WEAPON — clears 40 blocks from his face, a tunnel through everything (King's order) */
    try{
      var _bx = mePos.x, _by = mePos.y, _bz = mePos.z;
      var _br = 15, _count = 0;
      /* Tunnel: 40 units in facing direction */
      var _tdir = new THREE.Vector3(0, 0, 1);
      if(typeof faceYaw !== 'undefined') _tdir.set(Math.sin(faceYaw), 0, Math.cos(faceYaw));
      if(!window._solidBlocks) window._solidBlocks = [];
      for(var i = window._solidBlocks.length - 1; i >= 0; i--){
        var _blk = window._solidBlocks[i];
        if(!_blk || !_blk.position) continue;
        var _dx = _blk.position.x - _bx, _dy = _blk.position.y - _by, _dz = _blk.position.z - _bz;
        var _dist = Math.sqrt(_dx*_dx + _dy*_dy + _dz*_dz);
        /* Radius around you OR tunnel 40 in front */
        var _inTunnel = false;
        var _along = _dx * _