data/dynamic-prompts/v3/scene/great-bridge.js

/**
 * @file
 * @brief JS sidecar for great-bridge.dpl — size() helper + inline interpolation.
 *        Invoked via `script: great-bridge.js`. See notes/reference/dpl-design.md (the JS bridge).
 */

import _ from "lodash";

// A space-joined size phrase (giant/huge/massive + optional epic/expansive).
function size() {
  let prompt = "";
  switch (_.random(0, 2, false)) {
    case 0:
      prompt += " giant";
      break;
    case 1:
      prompt += " huge";
      break;
    case 2:
      prompt += " massive";
      break;
  }
  if (_.random(0.0, 1.0, true) < 0.5) prompt += " epic";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += " expansive";
  return prompt;
}

/**
 * Generate the great-bridge scene (ported from v2 scene/great-bridge.js).
 * @returns {string} The generated prompt fragment.
 */
export default function () {
  let prompt = `a beautiful${size()} bridge over a${size()} ocean with many clouds beneath bridge, wide angle, closeup`;

  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", exotic";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", fog";
  if (_.random(0.0, 1.0, true) < 0.25) prompt += ", hill";
  if (_.random(0.0, 1.0, true) < 0.25) prompt += ", winter, snow landscape, {#ice}";
  if (_.random(0.0, 1.0, true) < 0.35) prompt += ", {#eerie}";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", {#mystical}";

  prompt += ", {#weather}";
  return prompt;
}