OvergodGet an invite

Make your own god

Every god is a YAML pack: who speaks, who fights, what drops and the lines they say. The AI writes new lines in the pack’s voice; the pack’s own lines are the fallback, so a pack works with no AI at all.

There are two kinds:

  • Gamemaster: a whole season. A god, a nemesis, lieutenants and four to eight acts. Your world runs one.
  • Expansion: one extra act that stacks on any gamemaster, like Nether Invasion.

Custom packs run on your own Director today. Put them in the packs folder.

Start a pack

npx tsx src/cli.ts pack new frost-giants --type expansion
npx tsx src/cli.ts pack validate ../packs/frost-giants/pack.yaml

pack validate explains every error in plain words: a mob that isn’t allowed, a loot table nobody uses, a line with a placeholder that can’t be filled.

A complete expansion

This one is valid as written:

id: frost-giants
type: expansion
name: Frost Giants
author: You
description: A winter act. Strays march down from the mountains.

extra_act:
  name: The Long Winter
  goal: The cold comes for the base.
  archetypes: [omen, rumour, raid, gift]

characters:
  - { name: Old Rime, mob: stray, gear_tier: 2, bio: "Has been cold for a thousand years and blames you personally." }

mobs:
  frostbitten: { mob: stray, count: [3, 5] }

loot:
  thaw:
    - { item: campfire, count: 2, weight: 2 }
    - { item: cooked_beef, count: [6, 12], weight: 3 }

beats:
  omen:
    - title: "The rivers stop"
      subtitle: "Something is coming down the mountain."
      weather: rain
      lines: ["Feel that, {player}? The cold remembers you."]
  raid:
    - group: frostbitten
      title: "The Long Winter"
      subtitle: "{leader} came down from the peaks."
      bossbar: "{leader}'s frostbitten"
      lines: ["They walked a thousand miles to stand outside your door."]
      speaker_lines: ["Your fires are small, {player}."]
  gift:
    - loot: thaw
      lines: ["Here, {player}. Stay warm. I want you alive for the next part."]

Then add it to a world: world set our-smp --addons frost-giants.

Beats

A beat is one thing the god does. Each archetype is a list of recipes; the Director picks one that fits what just happened.

Archetype When
greeting A player joins. Use when: first_join or when: returning.
omen, rumour Build-up. Titles, weather, hints about what’s coming.
raid A named villain and their group spawn near a player. Needs group.
bounty A villain gets a price on their head. Needs group and loot.
bounty_claimed Someone killed a bountied villain. Pays the loot.
kill_reaction A player killed one of the god’s villains.
death_taunt A player died.
pray_answer Someone used /pray. Set answer: gift, curse, mock or omen.
gift, curse Needs loot or effect.

Recipe fields: lines, speaker_lines (said by the villain), title, subtitle, sound, weather, group, count, bossbar, loot, effect, effect_seconds, finale, weight.

Placeholders

{player} the player the beat is about
{god}, {nemesis}, {nemesis_title} from the gamemaster’s persona
{leader} the villain leading this raid
{killer}, {cause} what killed the player, for death taunts
{deaths} how many times this player has died
{fact} something the god remembers about this player
{prayer_topic} what the prayer was about

Limits every pack lives with

Packs can’t widen the safety rules, only narrow them. Mobs come from a fixed list (zombies, skeletons, illagers, spiders, Nether mobs and the like; no withers, wardens or dragons). Effects come from fixed lists with hard time caps. Items like TNT, lava, spawners, command blocks and spawn eggs can never be given, whatever the pack says.