data/dynamic-prompts/v3/scene/space.js

/**
 * @file
 * @brief JS sidecar for space.dpl — maybeAddSize() inline size prefix + switch blocks.
 *        Invoked via `script: space.js`. See notes/reference/dpl-design.md (the JS bridge).
 */

import _ from "lodash";

// 50% chance of a "{size} " prefix (space-joined), else "".
function maybeAddSize() {
  return _.random(0.0, 1.0, true) < 0.5 ? "{size} " : "";
}

/**
 * Generate the space scene (ported from v2 scene/space.js).
 * @returns {string} The generated prompt fragment.
 */
export default function () {
  let prompt = "space, outer space";

  if (_.random(0.0, 1.0, true) < 0.5) {
    switch (_.random(0, 1, false)) {
      case 0:
        prompt += ", astronaut";
        break;
      case 1:
        prompt += ", {#portrait-person}";
        break;
    }
  }

  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", {#ship}";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", satellite";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", nebula";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", galaxy";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", quasars";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", abell cluster";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", solar system";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", universe";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", cosmos";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += `, {#color} ${maybeAddSize()}sun`;
  if (_.random(0.0, 1.0, true) < 0.5) prompt += `, {#color} ${maybeAddSize()}moon`;

  if (_.random(0.0, 1.0, true) < 0.5) {
    switch (_.random(0, 1, false)) {
      case 0:
        prompt += `, {#color} ${maybeAddSize()}planet`;
        break;
      case 1:
        prompt += `, {#color} ${maybeAddSize()}{planet}`;
        break;
    }
  }

  if (_.random(0.0, 1.0, true) < 0.5) prompt += `, {#color} ${maybeAddSize()}star`;
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", shooting star";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", comet";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", meteor";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", meteor shower";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += `, ${maybeAddSize()}astronomical object`;
  if (_.random(0.0, 1.0, true) < 0.5) prompt += `, ${maybeAddSize()}celestial object`;
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", neutron stars";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", exoplanet";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", supernova";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", gamma ray burst";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", pulsar";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", black hole";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", constellations";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", void";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", colorful";
  if (_.random(0.0, 1.0, true) < 0.5) prompt += ", beautiful";

  prompt += ", {#mystical}";

  return prompt;
}