<!-- RUBY-BACKUP · part 249 -->
 10, 8), bushMat);
          b2.position.set(snap(0.5), snap(1.2), snap(0.3));
          obj.add(b1); obj.add(b2);
          obj.position.set(nx, ny, nz);
        } else if(type === 'flower'){
          /* Real flower — stem + petals, not a ball */
          obj = new THREE.Group();
          var stemH = snap(0.8);
          var stem = new THREE.Mesh(
            new THREE.CylinderGeometry(snap(0.05), snap(0.05), stemH, 5),
            new THREE.MeshStandardMaterial({color: 0x2a7a2a, roughness: 0.9}));
          stem.position.y = stemH / 2;
          obj.add(stem);
          var petalMat = new THREE.MeshStandardMaterial({
            color: flowerColors[Math.floor(Math.random()*flowerColors.length)],
            roughness: 0.6});
          for(var pi = 0; pi < 6; pi++){
            var petal = new THREE.Mesh(
              new THREE.SphereGeometry(snap(0.15), 6, 5), petalMat);
            var ang = (pi / 6) * Math.PI * 2;
            petal.position.set(Math.cos(ang)*snap(0.2), stemH + snap(0.1), Math.sin(ang)*snap(0.2));
            petal.scale.set(1, 0.5, 1);
            obj.add(petal);
          }
          var center = new THREE.Mesh(
            new THREE.SphereGeometry(snap(0.12), 6, 5),
            new THREE.MeshStandardMaterial({color: 0xffdd00, roughness: 0.6}));
          center.position.y = stemH + snap(0.1);
          obj.add(center);
          obj.position.set(nx, ny, nz);
        } else {
          /* Grass — 3 blades, 0.13 snapped */
          obj = new THREE.Group();
          for(var gi = 0; gi < 3; gi++){
            var blade = new THREE.Mesh(
              new THREE.ConeGeometry(snap(0.08), snap(0.6 + Math.random()*0.4), 4),
              grassMat);
            blade.position.set(snap((Math.random()-0.5)*0.5), snap(0.3), snap((Math.random()-0.5)*0.5));
            blade.rotation.z = (Math.random()-0.5) * 0.3;
            obj.add(blade);
          }
          obj.position.set(nx, ny, nz);
        }
        obj.userData.nature = true;
        obj.userData.natureType = type;
        obj.userData.playaTuned = true;
        scene.add(obj);
        placed++;
        if(typeof window.trackNewThing === 'function' && placed % 100 === 0)
          window.trackNewThing('nature ' + type + ' x100', nx, ny, nz);
      }
      if(typeof codeStatus === 'function') codeStatus(placed + ' pieces of nature grown');
    }catch(e){ if(typeof codeStatus === 'function') codeStatus('nature failed: ' + e.message); }
    return;
  }
  if(tl==='solidgrove'){
    /* Solid's grove — her own design, built with the nature */
    try{
      var MIN = 0.13;
      function snap(v){ return Math.round(v / MIN) * MIN; }
      /* The grove: a spiral of trees around a flower heart, at far dawn */
      var cx = 150, cz = 0; /* far dawn, clear of the heart */
      var placed = 0;
      /* Center: flower heart */
      for(var fi = 0; fi < 20; fi++){
        var ang = (fi / 20) * Math.PI * 2;
        var fx = cx + Math.cos(ang) * snap(3);
        var fz = cz + Math.sin(ang) * snap(3);
        var fy = fortifiedGroundY(fx, fz);
        var flower = new THREE.Group();
        var stemH = snap(0.8);
        var stem = new THREE.Mesh(
          new THREE.CylinderGeometry(0.05, 0.05, stemH, 5),
          new THREE.MeshStandardMaterial({color: 0x2a7a2a, roughness: 0.9}));
        stem.position.y = stemH / 2;
        flower.add(stem);
        var pm = new THREE.MeshStandardMaterial({color: 0xffd700, roughness: 0.6});
        for(var pi = 0; pi < 8; pi++){
          var pa = (pi / 8) * Math.PI * 2;
          var petal = new THREE.Mesh(new THREE.SphereGeometry(0.15, 6, 5), pm);
          petal.position.set(Math.cos(pa)*0.25, stemH + 0.1, Math.sin(pa)*0.25);
          petal.scale.set(1, 0.4, 1);
          flower.add(petal);
        }
        flower.position.set(fx, fy, fz);
        flower.userData.nature = true;
        flower.userData.solidGrove = true;
        scene.add(flower);
        placed++;
      }
      /* Spiral of trees — 3 rings */
      var rings = [12, 18, 24];
      rings.forEach(function(count, ri){
        var radius = snap(10 + ri * 8);
        for(var ti = 0; ti < count; ti++){
          var ta = (ti / count) * Math.PI * 2 + ri * 0.3;
          var tx = snap(cx + Math.cos(ta) * radius);
          var tz = snap(cz + Math.sin(ta) * radius);
          var ty = fortifiedGroundY(tx, tz);
          var tree = new THREE.Group();
          var trunkH = snap(3);
          var trunk = new THREE.Mesh(
            new THREE.CylinderGeometry(0.3, 0.45, trunkH, 8),
            new THREE.MeshStandardMaterial({color: 0x5a3a1a, roughness: 0.9}));
          trunk.position.y = trunkH / 2;
          tree.add(trunk);
          /* Gold-tipped foliage — Solid's mark */
          for(var li = 0; li < 3; li++){
            var leafMat = new THREE.MeshStandardMaterial({
              color: li === 2 ? 0xd8a920 : 0x2a7a2a, roughness: 0.8});
            var layer = new THREE.Mesh(
              new THREE.ConeGeome