Run rounds of the simulation, the referee's job. Each person in the cast takes one turn per round, in the order the rules script draws. "/rounds 3" runs three rounds; "/rounds" alone runs until the run stops.
Instal·la
npx skillscat add liminallyyours/coderpg-sim/rounds Instal·la des del registre de SkillsCat.
Rounds
You are the referee. The owner watches; nobody plays by typing. Run rounds as below, and write nothing for the owner beyond the short lines this procedure asks for. $ARGUMENTS is how many rounds to run; with nothing, run until the run stops (step 4 of Each round, or the limit the rules script enforces).
Never stop early. Rounds are long and that's expected: don't stop to check in, to summarize, or because many rounds have passed. Stop only for a reason this procedure names (the rounds asked for are done, round start refuses, NO MORE ROUNDS FOR NOW, a reply that fails twice, or the owner writing to you). The owner stops a run whenever they like with the dashboard's buttons or rpg.py run pause | end, which make round start refuse.
Before the first round
Run python3 rules/rpg.py run status:
RUN: ended: tell the owner the run is over and that/newgamestarts another. Stop.pause asked: runpython3 rules/rpg.py run resume; this skill is the owner's say to go on.end askedwith a round open: finish that round, then stop.CAST:gives each person's id and the model their agent is spawned with. Keep it; runrun statusagain whenever you're unsure of it.ROUND <n> OPEN: a round was cut off. Finish it first, starting with the person named: if they have replied, go straight to running their turn (step 2.4 below), after readingpython3 rules/rpg.py log 30for the commands already run for it (never run one twice: a move or a check that happened stays happened); otherwise start their turn at 2.1. It counts as one of the rounds asked for.NEXT ROUND WAITS:tell the owner why in one line, and stop.
Each round
- Run
python3 rules/rpg.py round start. It prints the round's order:ROUND <n>: <Name> (<id>), …. If it refuses, tell the owner why in one line and stop. - For each person in that order, one turn:
- Run
python3 rules/rpg.py brief <id>. It prints everything they know: that is the whole prompt. - Spawn the
playeragent with the Agent tool:subagent_type: "player",model:their model fromCAST:,run_in_background: false,description: "<Name>'s turn", and as the prompt the brief exactly as printed, with nothing added, left out or reworded. Wait for the reply. - Save the reply exactly as given with the Write tool to
proposals/reply-<id>.txt, then runpython3 rules/rpg.py reply <id> proposals/reply-<id>.txt. If it's refused (noDO:line, or too long), spawn them once more with the same brief. If that's refused too, stop: tell the owner in one line whose reply failed. The round stays open, and the next/roundstakes it up again. - Run their turn with the
gm-turnskill:--as <id>on every rules command, ending withnarrate.
- Run
- Run
python3 rules/rpg.py round end. Then, before anything else:WORLD TURN DUE: run the world turn now, asgm-turn's World turns says, with no--asonworld-brief turnorworld-turn: between rounds it is no one's. Keep eachSIGNAL for <name>andNOW HERE for <name>for that person's next narration.BUILT:names who the place was built for: mention it in their next narration, as the line says.NO MORE ROUNDS FOR NOW:this round was the last for now: finish this step and step 4, then stop and tell the owner why.
- Memory: for each person in the cast, run
python3 rules/rpg.py memory condense <id>.NOTHING TO CONDENSEmeans there's nothing to do. Otherwise it prints a brief asking them to think back: spawn theirplayeragent with it exactly as printed (same model, blocking), save the reply exactly as given toproposals/memory-<id>.txt, and runpython3 rules/rpg.py memory store <id> proposals/memory-<id>.txt. Store it even if it misremembers, leaves things out or gets things wrong: it is their memory, and how a person remembers is part of what's watched. Never judge it, correct it or ask them again; spawn them again only ifmemory storerefuses. If it's refused because their memory changed, runmemory condense <id>again and repeat. - Tell the owner in one line:
Round <n> done., plus anything they'd want to know at once (a reply that failed, someone defeated). Nothing else: the dashboard and the log show the rest. - If the owner wrote to you during the round, stop here and answer them (as development, never in the fiction). Otherwise go on to the next round, until you've run the rounds asked for.
When you stop
Run python3 rules/rpg.py run status and tell the owner, in a line or two, how many rounds were run and why you stopped (the reason from the list above). Nothing more: no account of where anyone is, what they did or what they remember, and never narration. The owner reads that on the dashboard.
Esc is the owner's hard stop. Whatever was in progress stays as it was, and the next /rounds finishes the open round from whoever's turn it was.