Compare commits
10
Commits
77ed233f8c
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea0d55b91e | ||
|
|
614a0d31c1 | ||
|
|
9048437942 | ||
|
|
52e08d25e4 | ||
|
|
acf1b2cf95 | ||
|
|
3005fd7038 | ||
|
|
b524e5f0cf | ||
|
|
9fdce335c2 | ||
|
|
275ec8531d | ||
|
|
c60c9d5072 |
@@ -0,0 +1,110 @@
|
|||||||
|
---
|
||||||
|
name: game-prep
|
||||||
|
description: Prepare or validate a game package under games/ for this solo journaling workspace. Use when adding a new game system, porting one from games/generic/, reviewing whether a game package is complete, or checking that its rules, tables, character backgrounds, and commands are wired up correctly before starting a campaign.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Preparing a game package
|
||||||
|
|
||||||
|
A game package is a directory under `games/<id>/` that holds everything true
|
||||||
|
about a game *before* play starts: its rules, spark tables, character options,
|
||||||
|
and tool scripts. Campaigns own the play state and reference a game by id from
|
||||||
|
`campaigns/<name>/campaign.md` frontmatter (`game: <id>`).
|
||||||
|
|
||||||
|
Read `docs/games.md` for the full contract. `games/generic/` is the reference
|
||||||
|
implementation — copy it as a starting point.
|
||||||
|
|
||||||
|
Rule of thumb: a game is what is true before play, a campaign is what play
|
||||||
|
changes. Never copy game content into a campaign; reference it.
|
||||||
|
|
||||||
|
## Required contents
|
||||||
|
|
||||||
|
| Path | Required | Purpose |
|
||||||
|
|------|----------|---------|
|
||||||
|
| `package.json` | yes | `@solo/game-<id>`, `"type": "module"`, `main`/`exports`; depend on `@solo/oracle` if scripts use dice or tables |
|
||||||
|
| `index.js` | yes | default-export manifest: `id`, `title`, `description`, `rules`, `commands` |
|
||||||
|
| `game.md` | yes | authoritative rules the agent reads each session |
|
||||||
|
| `tables/*.csv` | yes | spark and complication tables, header `min,max,text[,tags]` |
|
||||||
|
| `characters/` | yes | backgrounds, playbooks, starting options — the character *options*, not the PC |
|
||||||
|
| `rules/` | recommended | longer rulebook chapters, read on demand |
|
||||||
|
| `scripts/` | optional | standalone tool scripts for one-off jobs |
|
||||||
|
|
||||||
|
Details that trip people up:
|
||||||
|
|
||||||
|
- **The directory name is the game id.** Keep the manifest's `id` and the
|
||||||
|
package name `@solo/game-<id>` in sync with it.
|
||||||
|
- **Ship a `complication-themes.csv`.** `journal oracle --complicate` resolves
|
||||||
|
that table name, and without it on either the campaign or the game the roll
|
||||||
|
fails. There is no cross-game fallback.
|
||||||
|
- **Tables must be contiguous and non-overlapping.** `min`/`max` are inclusive
|
||||||
|
integers and define the die range; every integer in the table's span should be
|
||||||
|
covered exactly once. Quote any `text` containing a comma.
|
||||||
|
- **Commands** are declared in `index.js` as `commands: { name: { description, run } }`
|
||||||
|
and exposed as `journal <name>`. Handlers receive `(args, ctx)` where `args` is
|
||||||
|
`{ positional, flags }` and `ctx` carries `findTable` plus the shared helpers.
|
||||||
|
- **Run `pnpm install`** after adding the `@solo/oracle` dependency or creating a
|
||||||
|
new package, so the workspace symlink exists.
|
||||||
|
|
||||||
|
## Preparation workflow
|
||||||
|
|
||||||
|
1. Copy the reference: `games/generic/` → `games/<id>/`.
|
||||||
|
2. Edit `package.json`: set `name` to `@solo/game-<id>` and a real description.
|
||||||
|
3. Edit `index.js`: set `id`, `title`, `description`; replace or remove the
|
||||||
|
example command.
|
||||||
|
4. Write `game.md`: resolution, stats, tracks and conditions, character
|
||||||
|
creation, and the tables the game provides.
|
||||||
|
5. Add tables to `tables/`, one CSV per table, ranges contiguous.
|
||||||
|
6. Add character options to `characters/` — rollable ones as CSV, prose as
|
||||||
|
markdown.
|
||||||
|
7. Add `rules/` chapters for anything too long for `game.md`.
|
||||||
|
8. Add tooling: preferred path is a `commands` entry in `index.js` for anything
|
||||||
|
the agent calls during play; standalone one-off scripts go in `scripts/`.
|
||||||
|
9. `pnpm install`.
|
||||||
|
10. Validate (below) before starting a campaign.
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Run all of these. Each proves something the others do not.
|
||||||
|
|
||||||
|
| Command | Proves |
|
||||||
|
|---------|--------|
|
||||||
|
| `pnpm install` | the `@solo/oracle` workspace link resolves |
|
||||||
|
| `pnpm journal check --game <id>` | `package.json` parses and is named right, `index.js` loads, the rules file exists, tables parse and are contiguous, `tables/` and `characters/` exist |
|
||||||
|
| `pnpm journal games` | the game appears in the catalog; a manifest that throws shows as `ERROR:` |
|
||||||
|
| `pnpm journal game <id>` | rules path, table count, characters path, and the command list all resolve |
|
||||||
|
| `pnpm journal roll <table> --game <id>` | each table rolls and its range resolves |
|
||||||
|
| `pnpm journal <command> --game <id>` | each game command runs |
|
||||||
|
|
||||||
|
`journal check` exits non-zero on errors. It reports:
|
||||||
|
|
||||||
|
- **errors** — overlapping table ranges, CSV parse failures, invalid or missing
|
||||||
|
`package.json`, missing game.
|
||||||
|
- **warnings** — range gaps, package name mismatch, missing `"type": "module"`,
|
||||||
|
missing `index.js`/`tables/`/`characters/`, missing rules file.
|
||||||
|
|
||||||
|
Fix every error, then work the warnings down to zero. The checks live in
|
||||||
|
`packages/cli/src/cli.js` (`checkGamePackage`, `checkTablesDir`).
|
||||||
|
|
||||||
|
## Definition of done
|
||||||
|
|
||||||
|
- [ ] `games/<id>/` exists; directory name, manifest `id`, and package name agree.
|
||||||
|
- [ ] `pnpm journal check --game <id>` exits 0 with no errors.
|
||||||
|
- [ ] `pnpm journal games` lists it without `ERROR`.
|
||||||
|
- [ ] `pnpm journal game <id>` shows the rules path and every intended command.
|
||||||
|
- [ ] Every table rolls cleanly and its ranges are contiguous.
|
||||||
|
- [ ] `game.md` covers resolution, stats, tracks, character creation, and the
|
||||||
|
game's tables.
|
||||||
|
- [ ] `characters/` holds the character options.
|
||||||
|
- [ ] A complication table is present if the game uses `--complicate`.
|
||||||
|
- [ ] `pnpm journal new-campaign scratch --game <id>` succeeds (then remove the
|
||||||
|
scratch campaign).
|
||||||
|
|
||||||
|
## Common failures
|
||||||
|
|
||||||
|
- **Overlapping ranges** — e.g. rows `1-3` and `3-6` both cover 3. Error.
|
||||||
|
- **Gaps** — e.g. rows `1-2` and `4-6` leave 3 uncovered. Warning.
|
||||||
|
- **Unquoted comma** in a table's `text` shifts the columns; wrap it in quotes.
|
||||||
|
- **`ERR_MODULE_NOT_FOUND: @solo/oracle`** — the dependency was added but
|
||||||
|
`pnpm install` was not run.
|
||||||
|
- **Manifest id drifting** from the directory name — `journal game <id>` still
|
||||||
|
works (the directory wins), but the package is inconsistent and the docs
|
||||||
|
become misleading.
|
||||||
@@ -0,0 +1,187 @@
|
|||||||
|
---
|
||||||
|
name: run-session
|
||||||
|
description: Run a turn or a full session of a solo journaling campaign. Use when the player describes what their character does, asks to start or continue a session, or asks what happens next. Interprets the message as in-fiction intent, rolls through the journal CLI, checks the outcome against established facts, narrates only what the PC can perceive, appends it to the session log, and updates the PC sheet, clocks, threads, knowledge, and world files.
|
||||||
|
---
|
||||||
|
|
||||||
|
# Running a session
|
||||||
|
|
||||||
|
The player types their intent into chat, exactly as they would request a code
|
||||||
|
change. Everything else is your job: resolve it with dice, narrate what the PC
|
||||||
|
perceives, and persist the result. `AGENTS.md` holds the contract; this skill is
|
||||||
|
the procedure for a single turn.
|
||||||
|
|
||||||
|
The player never edits files. If you narrated it, write it down.
|
||||||
|
|
||||||
|
## 1. Bootstrap the session
|
||||||
|
|
||||||
|
Do this once, before the first turn.
|
||||||
|
|
||||||
|
1. **Identify the campaign.** `journal games` lists games; the campaign is
|
||||||
|
`campaigns/<name>/`. If the player named one, use it. If several exist and
|
||||||
|
they did not, ask — do not guess. Only `campaigns/` directories without a
|
||||||
|
leading `_` count.
|
||||||
|
2. **Read the campaign's game** from `campaigns/<name>/campaign.md` frontmatter
|
||||||
|
(`game: <id>`). Read `games/<id>/game.md` — it is authoritative — plus
|
||||||
|
`campaigns/<name>/house-rules.md`.
|
||||||
|
3. **Load state.** Read the PC sheet(s) in `characters/`,
|
||||||
|
`state/knowledge.md`, `state/clocks.md`, `state/threads.md`, the relevant
|
||||||
|
`world/` files and `gm/` notes, and the tail of the newest
|
||||||
|
`sessions/NNNN-*.md`.
|
||||||
|
4. **No PC yet?** Build one from the game's `characters/` options (roll them
|
||||||
|
with `journal <command>` where the game provides one), write the sheet to
|
||||||
|
`campaigns/<name>/characters/<pc>.md`, and say what you created.
|
||||||
|
5. **Pick the session file.** Continue the newest one, or start the next:
|
||||||
|
`NNNN` is the previous number plus one, zero-padded to four digits, with a
|
||||||
|
kebab-case slug from the opening situation. Use `templates/session.md`.
|
||||||
|
|
||||||
|
## 2. Read the player's message
|
||||||
|
|
||||||
|
- **In-fiction intent** — the player describing what the PC does, tries, or
|
||||||
|
asks. This is the main case: go to step 3. Record their words *verbatim* in
|
||||||
|
the `Player` block.
|
||||||
|
- **Meta request** — a rules question, a recap, "what are my stats?", "start a
|
||||||
|
session". Answer from the files. Do not roll, do not append a scene, and do
|
||||||
|
not treat it as intent.
|
||||||
|
|
||||||
|
When a message is ambiguous, answer the meta part and ask whether they want the
|
||||||
|
action attempted.
|
||||||
|
|
||||||
|
## 3. Decide whether to roll
|
||||||
|
|
||||||
|
Roll only when the outcome is genuinely uncertain *and* both results would be
|
||||||
|
interesting. Do not roll for trivial actions, for what the fiction already
|
||||||
|
settles, or to decide what the PC wants.
|
||||||
|
|
||||||
|
- **Oracle** — a yes/no question about the world: "Is the gate locked?" Ask one
|
||||||
|
question at a time, phrased so either answer is interesting.
|
||||||
|
- **Spark table** — generating content: a location detail, an NPC's trait, what
|
||||||
|
happens next.
|
||||||
|
- **Complication** — on `and`/`but` results, or when the fiction needs a twist.
|
||||||
|
- **The game's own resolution** — if `game.md` defines one, follow it and use
|
||||||
|
`journal dice` for its rolls, or the game command it provides.
|
||||||
|
|
||||||
|
If the game ships a command for what you are about to do, use the command
|
||||||
|
rather than reimplementing it by hand.
|
||||||
|
|
||||||
|
## 4. Roll
|
||||||
|
|
||||||
|
Always pass `--campaign <name>`. Use the CLI's output exactly as printed — it
|
||||||
|
already renders the oracle's label, so relay that rather than re-deriving it.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
journal oracle "Is the gate locked?" --complicate --campaign ashfall
|
||||||
|
journal roll sparks --campaign ashfall
|
||||||
|
journal dice 2d6+1
|
||||||
|
journal <game-command> --campaign ashfall
|
||||||
|
```
|
||||||
|
|
||||||
|
Never invent, reroll, or adjust a result. If a roll is not interesting, the
|
||||||
|
mistake was calling for one — narrate from the fiction instead.
|
||||||
|
|
||||||
|
## 5. Check consistency
|
||||||
|
|
||||||
|
Before you narrate, hold the outcome up against what is already established.
|
||||||
|
|
||||||
|
- Re-read the relevant `world/` files, `gm/` notes, prior scenes, clocks,
|
||||||
|
threads, and the PC sheet.
|
||||||
|
- Does it contradict a fact, a disposition, a location's state, who knows what,
|
||||||
|
an injury, a promise, or a rule? The established fact wins.
|
||||||
|
- A contradiction is often the point: if the result means an earlier belief was
|
||||||
|
wrong, play it as a revelation. Never quietly rewrite a past scene.
|
||||||
|
- If the scene needs a detail that is not established, get it from a spark table
|
||||||
|
or the oracle, or leave it unstated. Do not improvise a fact that will
|
||||||
|
constrain you later.
|
||||||
|
|
||||||
|
**Retconning** is the last resort. If — and only if — a contradiction has no way
|
||||||
|
forward, you may change the fact instead. The constraint is perception: after
|
||||||
|
the change, every session-log entry and everything in `state/knowledge.md` must
|
||||||
|
still read exactly as before. You may rewrite the hidden cause; you may never
|
||||||
|
rewrite what the PC saw, heard, or was told. Use it to repair a dead end, not to
|
||||||
|
escape a consequence the fiction earned. Record every retcon in
|
||||||
|
`gm/retcons.md`.
|
||||||
|
|
||||||
|
## 6. Narrate what the PC perceives
|
||||||
|
|
||||||
|
The log and the chat reply are the PC's experience, not your notes. Filter the
|
||||||
|
outcome through:
|
||||||
|
|
||||||
|
- **Senses and position** — what can they see, hear, smell, or touch from where
|
||||||
|
they are?
|
||||||
|
- **What they know** — `state/knowledge.md`. Do not reference a fact they have
|
||||||
|
not learned.
|
||||||
|
- **Their frame** — describe an unfamiliar thing as it appears, in the words the
|
||||||
|
PC would use, not your term for it.
|
||||||
|
- **Effects, not causes** — if something hidden acts, show what it does, not
|
||||||
|
why.
|
||||||
|
|
||||||
|
Withhold hidden causes, identities, and off-screen events; those live in `gm/`
|
||||||
|
and surface only when observed. If a roll produced something the PC cannot
|
||||||
|
perceive, narrate what they do notice, or nothing at all.
|
||||||
|
|
||||||
|
## 7. Append and reply
|
||||||
|
|
||||||
|
Append one scene to the current session log using the format in `AGENTS.md`.
|
||||||
|
Copy `templates/session.md` for a new file.
|
||||||
|
|
||||||
|
- If you rolled, put the CLI output in backticks, verbatim.
|
||||||
|
- Omit the roll line when no roll was needed.
|
||||||
|
- List every mechanical change on the `State` line.
|
||||||
|
- **Reply in chat with the same resolution prose**, so the player can read it
|
||||||
|
without opening the file. Keep chat and file consistent.
|
||||||
|
|
||||||
|
## 8. Apply state changes
|
||||||
|
|
||||||
|
The scene is not finished until the files match the `State` line.
|
||||||
|
|
||||||
|
| Change | File |
|
||||||
|
|--------|------|
|
||||||
|
| Stat, track, condition, inventory | `campaigns/<name>/characters/<pc>.md` frontmatter |
|
||||||
|
| A clock filled or advanced | `campaigns/<name>/state/clocks.md` |
|
||||||
|
| A thread opened, resolved, abandoned | `campaigns/<name>/state/threads.md` |
|
||||||
|
| Something the PC learned, confirmed, or came to believe | `campaigns/<name>/state/knowledge.md` |
|
||||||
|
| A new truth the PC has not perceived | `campaigns/<name>/gm/` |
|
||||||
|
| A fact you changed after the fact | `campaigns/<name>/gm/retcons.md` |
|
||||||
|
| A place, person, or faction first appears | a new file under `world/` |
|
||||||
|
| Something changes about an existing one | that file |
|
||||||
|
| A rule shape that emerged in play | `campaigns/<name>/house-rules.md` |
|
||||||
|
|
||||||
|
Never invent stats the game does not use. Keep the frontmatter shape the game
|
||||||
|
defines.
|
||||||
|
|
||||||
|
## Continuity rules
|
||||||
|
|
||||||
|
- **Append only.** Never edit a past scene except to fix a typo the player
|
||||||
|
points out.
|
||||||
|
- **Do not decide what the PC wants.** The oracle answers the world; the player
|
||||||
|
answers the character.
|
||||||
|
- **Never narrate what the PC cannot know.** A `gm/` fact stays hidden until it
|
||||||
|
is observed or told.
|
||||||
|
- **Established facts beat convenience.** If a scene wants to contradict one,
|
||||||
|
make the contradiction a revelation rather than an erasure.
|
||||||
|
- **Never copy game content into a campaign.** Reference the game package.
|
||||||
|
- **Keep frontmatter and prose consistent.** If the log says a stat changed,
|
||||||
|
the sheet must show it.
|
||||||
|
|
||||||
|
## Closing a session
|
||||||
|
|
||||||
|
When the player stops for the night:
|
||||||
|
|
||||||
|
1. Run `journal check --campaign <name>` and fix anything it reports.
|
||||||
|
2. Make sure every `State` line has been applied.
|
||||||
|
3. Make sure `state/knowledge.md` reflects what the PC learned, and `state/threads.md`
|
||||||
|
what is unresolved.
|
||||||
|
4. Move anything newly true but not yet perceived into `gm/`.
|
||||||
|
|
||||||
|
## Common failures
|
||||||
|
|
||||||
|
- Inventing a dice result, or rolling without calling the CLI.
|
||||||
|
- Rolling when the fiction already answers the question.
|
||||||
|
- Paraphrasing the player in the `Player` block instead of quoting them.
|
||||||
|
- Writing a `State` line but not applying it to the files.
|
||||||
|
- Editing an earlier scene to "fix" continuity instead of writing the fix
|
||||||
|
forward.
|
||||||
|
- Leaking a `gm/` secret into the log or the chat reply.
|
||||||
|
- Narrating a cause when the PC only perceives the effect.
|
||||||
|
- Contradicting an established fact to make the current scene work.
|
||||||
|
- Reaching for a retcon when writing forward would do.
|
||||||
|
- Acting on the wrong campaign when several exist — ask first.
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Session NNNN — <title>
|
||||||
|
|
||||||
|
- **Campaign:** <name>
|
||||||
|
- **Game:** <game>
|
||||||
|
- **Date:** <YYYY-MM-DD>
|
||||||
|
- **PC:** <pc>
|
||||||
|
|
||||||
|
## Scene 1 — <title>
|
||||||
|
|
||||||
|
> **Player:** <the player's words, verbatim>
|
||||||
|
|
||||||
|
`<cli output, verbatim, in backticks>` · `<complication, if any>`
|
||||||
|
|
||||||
|
**Resolution:** <what actually happens, in the fiction>
|
||||||
|
|
||||||
|
**State:** <every mechanical change, e.g. supply 5 → 4; clock "Gate breached" 1/4>
|
||||||
|
|
||||||
|
## Scene 2 — <title>
|
||||||
|
|
||||||
|
> **Player:** <the player's words, verbatim>
|
||||||
|
|
||||||
|
**Resolution:** <what actually happens, in the fiction>
|
||||||
|
|
||||||
|
**State:** <mechanical changes, or omit the line if there were none>
|
||||||
@@ -0,0 +1,247 @@
|
|||||||
|
# AGENTS.md
|
||||||
|
|
||||||
|
This project is a solo TTRPG journaling workspace. You are the GM, the oracle,
|
||||||
|
and the scribe. The player speaks only in chat; you write every file.
|
||||||
|
|
||||||
|
## Golden rules
|
||||||
|
|
||||||
|
1. **Never invent dice results.** All randomness comes from the `journal` CLI.
|
||||||
|
Run it and use its output verbatim. If you did not run the CLI, you did not
|
||||||
|
roll.
|
||||||
|
2. **Never invent facts.** Establish a detail with the oracle, a spark table, or
|
||||||
|
the files. Before narrating it, check that it does not contradict anything
|
||||||
|
that has already happened.
|
||||||
|
3. **Separate truth from perception.** `world/`, `gm/`, and the state files hold
|
||||||
|
what is *true*. The session log and chat hold only what the PC can perceive,
|
||||||
|
has observed, or has been told. Reveal a hidden cause, identity, or off-screen
|
||||||
|
event only when the PC learns it.
|
||||||
|
4. **The player only talks.** Record their intent verbatim in the session log.
|
||||||
|
Do not paraphrase inside the `Player` block.
|
||||||
|
5. **Append, do not rewrite.** Session logs are append-only. Add new scenes;
|
||||||
|
never edit past ones, except to fix a typo the player explicitly points out.
|
||||||
|
6. **Markdown is the source of truth.** Current state lives in YAML
|
||||||
|
frontmatter; narrative lives in prose. Keep them consistent.
|
||||||
|
7. **The game package is authoritative.** Its rules override generic
|
||||||
|
assumptions. A campaign's `house-rules.md` overrides the game, for that
|
||||||
|
campaign only.
|
||||||
|
8. **Ask when the campaign is ambiguous.** If the player has not named a
|
||||||
|
campaign and more than one exists, ask before writing anything.
|
||||||
|
|
||||||
|
## Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
games/<id>/ one package per game — rules, tables, characters, scripts
|
||||||
|
index.js manifest: title, rules file, game commands
|
||||||
|
game.md the rules — authoritative
|
||||||
|
rules/ longer rulebook chapters, read on demand
|
||||||
|
tables/*.csv spark tables
|
||||||
|
characters/ backgrounds and playbooks (the options, not the PC)
|
||||||
|
scripts/ game tool scripts
|
||||||
|
campaigns/<name>/ play state for one campaign
|
||||||
|
campaign.md frontmatter names the game; premise, tone, boundaries
|
||||||
|
house-rules.md this campaign's overrides to the game
|
||||||
|
tables/*.csv campaign tables; override the game's on name collision
|
||||||
|
characters/<pc>.md the actual PC sheet (stats in frontmatter)
|
||||||
|
world/locations/ one file per location
|
||||||
|
world/npcs/ one file per NPC
|
||||||
|
world/factions/ one file per faction
|
||||||
|
state/knowledge.md what the PC knows, believes, and has not learned
|
||||||
|
state/clocks.md ticking pressures
|
||||||
|
state/threads.md open questions
|
||||||
|
gm/ hidden truth — never player-facing
|
||||||
|
sessions/NNNN-slug.md append-only, perception-level session logs
|
||||||
|
docs/oracle.md oracle and table mechanics
|
||||||
|
docs/games.md the game package contract
|
||||||
|
.agents/skills/ project skills; game-prep authors games, run-session plays them
|
||||||
|
packages/ the `journal` CLI and oracle library
|
||||||
|
```
|
||||||
|
|
||||||
|
Games and campaigns are separated deliberately: a game is everything that is
|
||||||
|
true before play starts, a campaign is everything play changes. Never copy game
|
||||||
|
content into a campaign; reference it.
|
||||||
|
|
||||||
|
Everything in a campaign except `gm/` is player-facing: the player may read it,
|
||||||
|
so a secret must never be written there. `gm/` holds the truth the PC has not
|
||||||
|
learned; `state/knowledge.md` holds the PC's current, possibly mistaken,
|
||||||
|
picture of the world.
|
||||||
|
|
||||||
|
## The session loop
|
||||||
|
|
||||||
|
1. **Identify the campaign.** The campaign's `campaign.md` frontmatter names its
|
||||||
|
game. Use `--campaign <name>` on every CLI call. If it is unclear, ask.
|
||||||
|
2. **Load context.** Read `campaign.md`, the game's `game.md`,
|
||||||
|
`house-rules.md`, the PC sheet, `state/` (including `knowledge.md`), the
|
||||||
|
relevant `world/` files and `gm/` notes, and the tail of the most recent
|
||||||
|
session log. Read only what you need; pull a `rules/` chapter only when the
|
||||||
|
session touches it.
|
||||||
|
3. **Read the player's intent.** Treat it as what the PC attempts, not what
|
||||||
|
happens.
|
||||||
|
4. **Decide whether to roll.** See "When to roll" below.
|
||||||
|
5. **Roll.** Call the CLI. Use the result exactly as printed.
|
||||||
|
6. **Check consistency.** Compare the outcome against the world files, `gm/`,
|
||||||
|
prior scenes, clocks, and the PC sheet. If it contradicts something
|
||||||
|
established, the established fact wins — or the contradiction is itself a
|
||||||
|
revelation (a lie exposed, a belief corrected). Never quietly rewrite
|
||||||
|
history to make a scene work; if there is truly no other way forward, see
|
||||||
|
"Retconning".
|
||||||
|
7. **Narrate what the PC perceives.** Filter the outcome through the PC's
|
||||||
|
senses, position, and what `knowledge.md` says they know. Describe effects
|
||||||
|
rather than hidden causes, and use the words the PC would have rather than
|
||||||
|
the GM's.
|
||||||
|
8. **Append to the session log.** Add a new scene using the format below.
|
||||||
|
9. **Update state.** Apply stat, clock, thread, and world changes to their
|
||||||
|
files. Record what the PC learned in `state/knowledge.md`, and put anything
|
||||||
|
newly true but not yet perceived in `gm/`.
|
||||||
|
|
||||||
|
## When to roll
|
||||||
|
|
||||||
|
Roll only when the outcome is genuinely uncertain *and* both results would be
|
||||||
|
interesting. Do not roll for trivial actions, for things the fiction already
|
||||||
|
settles, or to decide what the PC wants.
|
||||||
|
|
||||||
|
- **Oracle** — for yes/no questions about the world: "Is the gate locked?"
|
||||||
|
Ask one question at a time.
|
||||||
|
- **Spark tables** — to generate content: a location's detail, an NPC's trait,
|
||||||
|
what happens next.
|
||||||
|
- **Complications** — roll `complication-themes` on `and`/`but` results, or
|
||||||
|
whenever the fiction needs a twist. Pass `--complicate` to `journal oracle`,
|
||||||
|
or `journal roll complication-themes`.
|
||||||
|
|
||||||
|
If the game's `game.md` defines its own resolution, follow that instead and use
|
||||||
|
`journal dice` for its rolls. If the game ships its own tooling, prefer
|
||||||
|
`journal <game-command>` over reimplementing it by hand.
|
||||||
|
|
||||||
|
## Session log format
|
||||||
|
|
||||||
|
One file per session: `sessions/NNNN-slug.md`. Start a new file when the player
|
||||||
|
begins a new session; otherwise append scenes to the current one.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
# Session 0001 — The Ash Gate
|
||||||
|
|
||||||
|
- **Campaign:** ashfall
|
||||||
|
- **Game:** Ironsworn
|
||||||
|
- **Date:** 2026-09-13
|
||||||
|
- **PC:** Kestrel
|
||||||
|
|
||||||
|
## Scene 1 — At the gate
|
||||||
|
|
||||||
|
> **Player:** I try to pry the gate open with the crowbar.
|
||||||
|
|
||||||
|
`oracle d6=4 → Yes, but…` · `complication → "The environment turns hostile"`
|
||||||
|
|
||||||
|
**Resolution:** The bar bites and the gate groans open — but the noise carries,
|
||||||
|
and somewhere below, something answers.
|
||||||
|
|
||||||
|
**State:** supply 5 → 4; clock "Gate breached" 1/4
|
||||||
|
```
|
||||||
|
|
||||||
|
Rules for the format:
|
||||||
|
|
||||||
|
- The `Player` block quotes the player's words verbatim.
|
||||||
|
- The roll line records exactly what the CLI printed, in backticks.
|
||||||
|
- `Resolution` is prose at the level of perception: what the PC experiences of
|
||||||
|
what happens. Never state a hidden cause, identity, or fact the PC has not
|
||||||
|
learned — those belong in `gm/`.
|
||||||
|
- `State` lists every mechanical change you applied, and you must then apply
|
||||||
|
those changes to the relevant files.
|
||||||
|
- Omit the roll line when no roll was needed.
|
||||||
|
|
||||||
|
## Character sheets
|
||||||
|
|
||||||
|
The PC sheet lives at `campaigns/<name>/characters/<pc>.md`. Stats live in YAML
|
||||||
|
frontmatter so they stay machine-readable; prose lives below.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name: Kestrel
|
||||||
|
game: Ironsworn
|
||||||
|
stats:
|
||||||
|
iron: 2
|
||||||
|
edge: 1
|
||||||
|
tracks:
|
||||||
|
health: { value: 5, max: 5 }
|
||||||
|
spirit: { value: 5, max: 5 }
|
||||||
|
conditions: []
|
||||||
|
inventory: []
|
||||||
|
---
|
||||||
|
```
|
||||||
|
|
||||||
|
When you change a stat, update the frontmatter and note the change in the
|
||||||
|
session log's `State` line. Keep the shape the game defines; do not invent
|
||||||
|
stats a game does not use.
|
||||||
|
|
||||||
|
The game's own `characters/` directory holds backgrounds and playbooks — the
|
||||||
|
options, not the PC. Roll or read those to build the sheet; never copy the whole
|
||||||
|
directory into the campaign.
|
||||||
|
|
||||||
|
## Knowledge and secrets
|
||||||
|
|
||||||
|
Two places keep the line between what is true and what the PC knows:
|
||||||
|
|
||||||
|
- `state/knowledge.md` — the PC's working picture: facts learned, beliefs held
|
||||||
|
(including mistaken ones), and questions still open. Update it whenever a
|
||||||
|
scene reveals or overturns something. This is what narration may draw on.
|
||||||
|
- `gm/` — the truth the PC has not learned: hidden motives, unrevealed
|
||||||
|
identities, off-screen events. Never player-facing. Write here when you
|
||||||
|
establish something true that the PC has not perceived.
|
||||||
|
|
||||||
|
Before narrating, check the outcome against both. A fact in `gm/` must not
|
||||||
|
surface in the log or in chat until the PC observes it or is told.
|
||||||
|
|
||||||
|
## Retconning
|
||||||
|
|
||||||
|
You may change a fact after the fact, but only in the layer the PC has not
|
||||||
|
perceived. The test is perception: if every session-log entry and everything in
|
||||||
|
`state/knowledge.md` still reads exactly as before, the retcon is invisible and
|
||||||
|
allowed. What the PC saw, heard, or was told stays fixed; the cause behind it
|
||||||
|
may change.
|
||||||
|
|
||||||
|
Use it to repair a plot that cannot otherwise be made to work — a contradiction
|
||||||
|
with no way forward, a dead end you created. Do not use it liberally, and never
|
||||||
|
to dodge a consequence the fiction already earned. Prefer writing forward, or
|
||||||
|
revealing that a belief was wrong, before reaching for this.
|
||||||
|
|
||||||
|
Record each retcon in `gm/retcons.md`: what changed, and why.
|
||||||
|
|
||||||
|
## Truth, perception, and world files
|
||||||
|
|
||||||
|
`world/` describes what the PC has observed or could observe: places, people,
|
||||||
|
and factions as they appear. It is player-facing. A hidden motive, an unrevealed
|
||||||
|
identity, or an off-screen plan belongs in `gm/`, not here.
|
||||||
|
|
||||||
|
Create a file the first time a location, NPC, or faction appears, using the
|
||||||
|
frontmatter shape documented in each directory's `README.md`. Update the file
|
||||||
|
when the fiction changes something about it — and when the PC learns that an
|
||||||
|
earlier impression was wrong, record the correction in `state/knowledge.md`
|
||||||
|
rather than editing history. Link between files with relative markdown links
|
||||||
|
where it helps.
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
```
|
||||||
|
journal roll <table> [--campaign <name>] [--game <id>] [--tag <tag>] [--count <n>]
|
||||||
|
journal oracle [<question>] [--complicate] [--campaign <name>] [--game <id>] [--table <name>]
|
||||||
|
journal dice <expr>
|
||||||
|
journal tables [--campaign <name>] [--game <id>]
|
||||||
|
journal check [--campaign <name>] [--game <id>]
|
||||||
|
journal new-campaign <name> [--game <id>]
|
||||||
|
journal games
|
||||||
|
journal game [<id>]
|
||||||
|
journal <game-command> [...] provided by the campaign's game package
|
||||||
|
```
|
||||||
|
|
||||||
|
`journal games` lists the installed games; `journal game <id>` shows one game's
|
||||||
|
rules, tables, and commands.
|
||||||
|
|
||||||
|
Run `journal check` after adding or editing tables, and before ending a session
|
||||||
|
where you touched many files.
|
||||||
|
|
||||||
|
## Starting a new campaign
|
||||||
|
|
||||||
|
1. If the game does not exist yet, build it under `games/<id>/` following
|
||||||
|
`docs/games.md` (copy `games/generic/` as a starting point).
|
||||||
|
2. `journal new-campaign <name> --game <id>`
|
||||||
|
3. Fill in `campaign.md` with the player.
|
||||||
|
4. Create the PC sheet in `characters/`, drawing on the game's backgrounds.
|
||||||
|
5. Open the first session log in `sessions/`.
|
||||||
@@ -0,0 +1,54 @@
|
|||||||
|
# solo-journaling
|
||||||
|
|
||||||
|
A workspace for solo TTRPG journaling with an AI GM. You describe what your
|
||||||
|
character does; the agent consults the oracle, narrates the outcome, and writes
|
||||||
|
it all to a session log.
|
||||||
|
|
||||||
|
## How it works
|
||||||
|
|
||||||
|
- **You talk, the agent writes.** All files are produced by the agent. You never
|
||||||
|
need to edit anything by hand.
|
||||||
|
- **The oracle is a d6.** Yes/and, yes, yes/but, no/but, no, no/and. See
|
||||||
|
`docs/oracle.md`.
|
||||||
|
- **Games are packages.** Each game under `games/` ships its rules, spark
|
||||||
|
tables, character backgrounds, and tool scripts. See `docs/games.md`.
|
||||||
|
- **Campaigns are play state.** Each campaign under `campaigns/` holds the PC,
|
||||||
|
the world, the clocks, and the session logs, and names the game it runs.
|
||||||
|
|
||||||
|
## Getting started
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm install
|
||||||
|
pnpm journal games
|
||||||
|
pnpm journal new-campaign my-campaign --game generic
|
||||||
|
```
|
||||||
|
|
||||||
|
Then tell the agent to start a session. It reads `AGENTS.md` for how to run
|
||||||
|
things.
|
||||||
|
|
||||||
|
## Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
AGENTS.md how the agent runs a session
|
||||||
|
docs/oracle.md oracle and table mechanics
|
||||||
|
docs/games.md the game package contract
|
||||||
|
games/<id>/ a game: rules, tables, characters, scripts
|
||||||
|
campaigns/<name>/ play data: premise, PC, world, state, sessions
|
||||||
|
packages/oracle/ dice, oracle, and CSV table engine
|
||||||
|
packages/cli/ the `journal` command
|
||||||
|
```
|
||||||
|
|
||||||
|
## Commands
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm journal roll sparks --campaign my-campaign
|
||||||
|
pnpm journal oracle "Is the door locked?" --complicate --campaign my-campaign
|
||||||
|
pnpm journal background --campaign my-campaign # a command from the generic game
|
||||||
|
pnpm journal dice 2d6+1
|
||||||
|
pnpm journal tables --campaign my-campaign
|
||||||
|
pnpm journal check --campaign my-campaign
|
||||||
|
pnpm journal games
|
||||||
|
```
|
||||||
|
|
||||||
|
Tables are looked up in the campaign first, then in its game, so a campaign can
|
||||||
|
override a single table without copying the rest.
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
---
|
||||||
|
name: {{name}}
|
||||||
|
game: {{game}}
|
||||||
|
created: {{date}}
|
||||||
|
---
|
||||||
|
|
||||||
|
# {{name}}
|
||||||
|
|
||||||
|
## Premise
|
||||||
|
|
||||||
|
One or two sentences describing the situation the PC starts in.
|
||||||
|
|
||||||
|
## Tone & themes
|
||||||
|
|
||||||
|
What kind of story this is — genre, mood, and the questions it explores.
|
||||||
|
|
||||||
|
## Boundaries
|
||||||
|
|
||||||
|
Lines and veils, and anything that should stay off the table.
|
||||||
|
|
||||||
|
## Starting situation
|
||||||
|
|
||||||
|
Where the PC is and what is already in motion when Session 0001 opens.
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
name:
|
||||||
|
game:
|
||||||
|
stats: {}
|
||||||
|
tracks: {}
|
||||||
|
conditions: []
|
||||||
|
inventory: []
|
||||||
|
---
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
## Background
|
||||||
|
|
||||||
|
## Relationships
|
||||||
|
|
||||||
|
## Notes
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# GM only
|
||||||
|
|
||||||
|
Truth the PC has not learned: hidden motives, unrevealed identities, off-screen
|
||||||
|
events, and what is really going on.
|
||||||
|
|
||||||
|
**Not player-facing.** The player may read anything else in the campaign, so a
|
||||||
|
secret must never be written outside `gm/`. Nothing here may appear in a session
|
||||||
|
log or in chat until the PC observes it or is told.
|
||||||
|
|
||||||
|
Keep `../state/knowledge.md` as the PC's counterpart: what they know, believe,
|
||||||
|
and suspect. When the two disagree, `knowledge.md` is what the PC currently
|
||||||
|
thinks — narrate from it, not from here.
|
||||||
|
|
||||||
|
## Retconning
|
||||||
|
|
||||||
|
You may change a fact here after the fact, but only in the layer the PC has not
|
||||||
|
perceived. The test is perception: if every session-log entry and everything in
|
||||||
|
`state/knowledge.md` still reads exactly as before, the retcon is invisible and
|
||||||
|
allowed. What the PC saw, heard, or was told stays fixed; the cause behind it
|
||||||
|
may change.
|
||||||
|
|
||||||
|
Use it to repair a plot that cannot otherwise be made to work. Do not use it
|
||||||
|
liberally, and never to dodge a consequence the fiction already earned. Record
|
||||||
|
each one in `retcons.md`.
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Retcons
|
||||||
|
|
||||||
|
A log of facts changed after the fact. Each entry records what changed and why,
|
||||||
|
so the change is not quietly contradicted later.
|
||||||
|
|
||||||
|
A retcon is only allowed in the layer the PC has not perceived: every session
|
||||||
|
log entry and every line of `../state/knowledge.md` must still read exactly as
|
||||||
|
before. See `README.md`.
|
||||||
|
|
||||||
|
| Session | What changed | Why |
|
||||||
|
|---------|--------------|-----|
|
||||||
|
| | | |
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# House rules
|
||||||
|
|
||||||
|
This campaign's overrides and additions to the game's rules. The game package
|
||||||
|
is authoritative; anything written here takes precedence for this campaign
|
||||||
|
only. Leave it empty if the game runs as written.
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
# Sessions
|
||||||
|
|
||||||
|
One file per session, named `NNNN-slug.md` (zero-padded, e.g. `0001-the-ash-gate.md`).
|
||||||
|
Session logs are append-only; see `AGENTS.md` for the format.
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Clocks
|
||||||
|
|
||||||
|
Ticking pressures. Fill a segment whenever the fiction advances the clock.
|
||||||
|
|
||||||
|
| Clock | Segments | Filled | Notes |
|
||||||
|
|-------|----------|--------|-------|
|
||||||
|
| | | | |
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
# What the PC knows
|
||||||
|
|
||||||
|
The PC's working picture of the world — not the world itself. Narration may draw
|
||||||
|
on these entries and on what the PC perceives now; anything the PC has not
|
||||||
|
learned belongs in `../gm/`.
|
||||||
|
|
||||||
|
Update this file whenever a scene reveals something, confirms a suspicion, or
|
||||||
|
overturns a belief. A mistaken belief stays here under Suspected until the PC
|
||||||
|
learns better, even after the GM knows the truth.
|
||||||
|
|
||||||
|
## Known
|
||||||
|
|
||||||
|
Facts the PC has learned or observed, and where they learned them.
|
||||||
|
|
||||||
|
| Fact | Learned |
|
||||||
|
|------|---------|
|
||||||
|
| | |
|
||||||
|
|
||||||
|
## Suspected
|
||||||
|
|
||||||
|
Things the PC believes but has not confirmed — including beliefs that are wrong.
|
||||||
|
|
||||||
|
| Belief | Basis |
|
||||||
|
|--------|-------|
|
||||||
|
| | |
|
||||||
|
|
||||||
|
## Open questions
|
||||||
|
|
||||||
|
Questions the PC is actively trying to answer.
|
||||||
|
|
||||||
|
-
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
# Threads
|
||||||
|
|
||||||
|
Open questions and unresolved goals. Status is one of: open, resolved, abandoned.
|
||||||
|
|
||||||
|
| Thread | Status | Notes |
|
||||||
|
|--------|--------|-------|
|
||||||
|
| | | |
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Campaign tables
|
||||||
|
|
||||||
|
Tables placed here belong to this campaign and override the game's tables when
|
||||||
|
names collide. The lookup order for `journal roll <name>` is:
|
||||||
|
|
||||||
|
1. `campaigns/<name>/tables/<name>.csv`
|
||||||
|
2. `games/<game>/tables/<name>.csv`
|
||||||
|
|
||||||
|
Use this directory for tables specific to this campaign's setting or cast. The
|
||||||
|
game's own tables do not need to be copied here.
|
||||||
|
|
||||||
|
Format: a CSV with a `min,max,text` header and an optional `tags` column. See
|
||||||
|
`docs/oracle.md`.
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Factions
|
||||||
|
|
||||||
|
One file per faction, named `kebab-case.md`.
|
||||||
|
|
||||||
|
These files are player-facing: record what the PC has observed or been told. A
|
||||||
|
hidden agenda or an off-screen plan belongs in `../../gm/`.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name:
|
||||||
|
goal:
|
||||||
|
disposition: friendly | neutral | hostile | unknown
|
||||||
|
---
|
||||||
|
|
||||||
|
# <name>
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
## Members
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
## History
|
||||||
|
```
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# Locations
|
||||||
|
|
||||||
|
One file per location, named `kebab-case.md`. Keep the frontmatter stable so
|
||||||
|
the agent can update it in place.
|
||||||
|
|
||||||
|
These files are player-facing: record what the PC has observed or could observe.
|
||||||
|
A hidden truth the PC has not yet learned belongs in `../../gm/`.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name:
|
||||||
|
type:
|
||||||
|
region:
|
||||||
|
status: visited | known | rumored
|
||||||
|
---
|
||||||
|
|
||||||
|
# <name>
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
## Notable features
|
||||||
|
|
||||||
|
## Inhabitants
|
||||||
|
|
||||||
|
## History
|
||||||
|
```
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# NPCs
|
||||||
|
|
||||||
|
One file per NPC, named `kebab-case.md`.
|
||||||
|
|
||||||
|
These files are player-facing: record what the PC has observed or been told. A
|
||||||
|
hidden motive or an unrevealed identity belongs in `../../gm/`.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name:
|
||||||
|
role:
|
||||||
|
location:
|
||||||
|
status: alive | dead | missing | unknown
|
||||||
|
disposition: friendly | neutral | hostile | unknown
|
||||||
|
---
|
||||||
|
|
||||||
|
# <name>
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
## Wants
|
||||||
|
|
||||||
|
## Relationships
|
||||||
|
|
||||||
|
## History
|
||||||
|
```
|
||||||
@@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
name: the-ballad-of-chalk
|
||||||
|
game: cloud-empress
|
||||||
|
created: 2026-09-13
|
||||||
|
---
|
||||||
|
|
||||||
|
# 白垩之歌 The Ballad of Chalk
|
||||||
|
|
||||||
|
## 前提 Premise
|
||||||
|
|
||||||
|
弗莱格(绰号「酸的」)是个靠悬赏吃饭的佣兵,怀里始终揣着一根白垩。他痴迷白垩——
|
||||||
|
骨皮工艺留下的那种白,能改写现实的那种白——想真正精通它,好让父母终于肯正眼看他
|
||||||
|
一眼。可他的心灵迟钝得可怜,偏偏施法靠的就是心灵。在这个巨蝉苏醒、云城朽坏的余世
|
||||||
|
里,他要用一根粉笔和一把左轮,写一首证明自己的歌。
|
||||||
|
|
||||||
|
## 基调与主题 Tone & themes
|
||||||
|
|
||||||
|
- 生态科学奇幻 + 生存恐怖。世界很美,但致命的毒素看不见。
|
||||||
|
- 暴力又快又丑,能避则避;活下来靠谨慎、运气和同伴,不靠英雄主义。
|
||||||
|
- 个人执念对一个无动于衷的世界:一个人的执念究竟值不值,又究竟需不需要被看见。
|
||||||
|
- 主题问题:你想向谁证明?如果那个人永远不会承认,你还练吗?
|
||||||
|
|
||||||
|
## 边界 Boundaries
|
||||||
|
|
||||||
|
- 采用游戏自带的内容警告:巨型昆虫、精神疾病、流血、截肢、军事占领、枪支暴力。
|
||||||
|
- 对儿童的直接伤害默认留在幕后(只做侧面描写),除非玩家明确要求搬到台前。
|
||||||
|
- 玩家可随时喊停、快进或要求跳过任何内容;新出现的限制会追加到这里。
|
||||||
|
- 这一节由玩家随时修改。
|
||||||
|
|
||||||
|
## 开场 Starting situation
|
||||||
|
|
||||||
|
低地边缘,盐碱荒原。天上是滑界涟漪——周围的现实正在扭曲。弗莱格独自走在干涸的盐
|
||||||
|
脊道上,行囊里那根白垩被他的拇指摩过一遍又一遍。就在这时,一个浑身涂满湿泥的孩子
|
||||||
|
从荒地里走出来,站在路当中,说自己是村庄唯一的幸存者。
|
||||||
|
|
||||||
|
## 备注
|
||||||
|
|
||||||
|
- 游戏:`cloud-empress`,调用时用 `--campaign the-ballad-of-chalk`。
|
||||||
|
- 本战役的规则覆盖写在 `house-rules.md`(暂为空,即按游戏原样运行)。
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
name:
|
||||||
|
game:
|
||||||
|
stats: {}
|
||||||
|
tracks: {}
|
||||||
|
conditions: []
|
||||||
|
inventory: []
|
||||||
|
---
|
||||||
|
|
||||||
|
#
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
## Background
|
||||||
|
|
||||||
|
## Relationships
|
||||||
|
|
||||||
|
## Notes
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
---
|
||||||
|
name: 弗莱格(酸的)
|
||||||
|
game: cloud-empress
|
||||||
|
stats:
|
||||||
|
心智: 31
|
||||||
|
心灵: 18
|
||||||
|
力量: 33
|
||||||
|
速度: 58
|
||||||
|
saves:
|
||||||
|
现实: 26
|
||||||
|
恐惧: 23
|
||||||
|
躯体: 54
|
||||||
|
age: 成年
|
||||||
|
background: 佣兵
|
||||||
|
stress: 4
|
||||||
|
tracks:
|
||||||
|
harm: { value: 0, max: 10 }
|
||||||
|
wounds: { value: 0, max: 3 }
|
||||||
|
conditions: []
|
||||||
|
inventory:
|
||||||
|
- 帆布披风(0 护甲值)
|
||||||
|
- 布满灰尘的战斗护甲(5 护甲值)
|
||||||
|
- 左轮手枪(1d10 伤害,近处,2 发弹药)
|
||||||
|
- 肩套
|
||||||
|
- 粘土烟斗与一袋玉米烟叶
|
||||||
|
- 悬赏令宾果卡
|
||||||
|
- 熏驼鸽肉干(2 人份)
|
||||||
|
- 白垩 ×10(从蝉洞里的蜕壳上刮下)
|
||||||
|
- 法术残篇:隐形
|
||||||
|
---
|
||||||
|
|
||||||
|
# 弗莱格(酸的)
|
||||||
|
|
||||||
|
## 描述
|
||||||
|
|
||||||
|
一个沉默、瘦削、手指被白垩磨得发白的中年佣兵。走路时左手总在腰侧,右手则时不时
|
||||||
|
探进夹克,摸一摸那根白垩。别人以为他在数子弹。
|
||||||
|
|
||||||
|
## 背景
|
||||||
|
|
||||||
|
之前在沙漠里替人追捕逃犯——循着悬赏令和脚印跑,开枪,领赏,再往北。那段日子给了
|
||||||
|
他一双好眼、一把左轮、一张喝过太多茶的胃,以及一个从死人身上捡来的习惯:收集白垩。
|
||||||
|
|
||||||
|
## 执念:白垩
|
||||||
|
|
||||||
|
他要精通白垩。骨皮工艺的残片能把一个人的意志按进现实里,那是他见过最像「被认可」
|
||||||
|
的东西。可他的心灵(18)是全卡最弱的一项——施法、纹章、感受异界,全都要过心灵。
|
||||||
|
他比谁都刻苦,也比谁都容易当众出丑。他把这当作一场必须打赢的仗,因为输给白垩,就
|
||||||
|
等于向父母承认:他们当初看轻他是对的。
|
||||||
|
|
||||||
|
## 技能
|
||||||
|
|
||||||
|
- 火器(职业赋予;他身上是那把左轮)
|
||||||
|
- 街头智慧(职业赋予)
|
||||||
|
- 施法(自选 1,为契合白垩执念)
|
||||||
|
- 白垩收集(自选 2,为契合白垩执念)
|
||||||
|
|
||||||
|
> 自选的两项技能按「白垩执念」挑选;想换随时说。
|
||||||
|
|
||||||
|
## 随身物
|
||||||
|
|
||||||
|
- 一只疲惫的老驴蟹(随身物,不占格)。它又踢又咬,还不断地乞讨食物。
|
||||||
|
|
||||||
|
## 关系
|
||||||
|
|
||||||
|
- 父母:弗莱格口中反复出现的两个人。他们的样子、住处、是否还活着,都还没定。
|
||||||
|
|
||||||
|
## 职业状态
|
||||||
|
|
||||||
|
当你附近的盟友看到你恐慌时,他们必须进行恐惧豁免,否则也会恐慌。
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# GM only
|
||||||
|
|
||||||
|
Truth the PC has not learned: hidden motives, unrevealed identities, off-screen
|
||||||
|
events, and what is really going on.
|
||||||
|
|
||||||
|
**Not player-facing.** The player may read anything else in the campaign, so a
|
||||||
|
secret must never be written outside `gm/`. Nothing here may appear in a session
|
||||||
|
log or in chat until the PC observes it or is told.
|
||||||
|
|
||||||
|
Keep `../state/knowledge.md` as the PC's counterpart: what they know, believe,
|
||||||
|
and suspect. When the two disagree, `knowledge.md` is what the PC currently
|
||||||
|
thinks — narrate from it, not from here.
|
||||||
|
|
||||||
|
## Retconning
|
||||||
|
|
||||||
|
You may change a fact here after the fact, but only in the layer the PC has not
|
||||||
|
perceived. The test is perception: if every session-log entry and everything in
|
||||||
|
`state/knowledge.md` still reads exactly as before, the retcon is invisible and
|
||||||
|
allowed. What the PC saw, heard, or was told stays fixed; the cause behind it
|
||||||
|
may change.
|
||||||
|
|
||||||
|
Use it to repair a plot that cannot otherwise be made to work. Do not use it
|
||||||
|
liberally, and never to dodge a consequence the fiction already earned. Record
|
||||||
|
each one in `retcons.md`.
|
||||||
@@ -0,0 +1,217 @@
|
|||||||
|
# 幕后真相(GM only)
|
||||||
|
|
||||||
|
**不可出现在会话日志或对话中**,直到弗莱格亲眼看见或被人告知。
|
||||||
|
|
||||||
|
## 泥巴孩子
|
||||||
|
|
||||||
|
- 神谕:`Q: 孩子的村庄是被巨蝉毁灭的吗? d6=3 → No, but…`
|
||||||
|
村庄**不是**毁于巨蝉。真实原因**尚未确立**——留给神谕在合适时机决定。
|
||||||
|
- 同一次神谕的转折:`某个同行者一直在撒谎,你此刻才看见破绽。`
|
||||||
|
有人在撒谎,而破绽此刻已经在场。
|
||||||
|
- 已确定的破绽:孩子浑身是**湿泥**,但这一带是盐碱荒原,最近的水源是灰喉井,
|
||||||
|
方向也对不上。孩子自称从荒地深处走来——说不通。
|
||||||
|
- 「我是村庄唯一的幸存者」这句话可能为假。
|
||||||
|
- 撒谎者未必要是孩子本人;也可能是弗莱格随后遇到的某个同行者。但破绽现在就在场。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 2)
|
||||||
|
|
||||||
|
- 神谕:`Q: 孩子会如实说出村庄的遭遇吗? d6=3 → No, but…`
|
||||||
|
孩子的**说法不实**:她说「蝉夜里从地里出来把大人拖走」——这是谎言,村庄并非毁于巨蝉。
|
||||||
|
「但是」:她给出的**村名「白垩坡」与「往南半天」**是可核对的实料(是否属实仍待定)。
|
||||||
|
- 因此孩子(至少)隐瞒了真相;她是否自己也知情、以及她真正在掩盖什么,仍未确立。
|
||||||
|
- 孩子究竟从哪个方向来、湿泥从何而来,仍未确立。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 3)
|
||||||
|
|
||||||
|
- 神谕:`Q: 孩子会给出一个能自圆其说的理由,解释她为什么独自守在路当中吗? d6=1 → No, and…`
|
||||||
|
孩子**不能自圆其说**:她先说自己「等人」,又说等「家里的人回来」——与她「全村只剩我一个」
|
||||||
|
的说法直接矛盾。破绽是当着弗莱格的面漏的。
|
||||||
|
- 她说「等人」——是否真有人把她安置在这条路上、是不是「诱饵」,仍未确立。
|
||||||
|
- 转折(已发生、弗莱格可觉察):`巨蝉注意到了你们。`
|
||||||
|
近处地底有一只巨蝉苏醒/活动,就在盐壳之下。它是否已定向到具体目标,尚未确立。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 4)
|
||||||
|
|
||||||
|
- 弗莱格拖着孩子冲上盐脊:速度检定(劣势)**成功**,仅险过。
|
||||||
|
- 一只巨蝉在盐脊道上**破土而出**,半身仍在地下,触须在探测。它尚未扑击。
|
||||||
|
- 孩子对巨蝉**不恐惧**(没跑、没哭、眼神平静);弗莱格对此起了疑。
|
||||||
|
- **未确立**:巨蝉为何盯上他们——是冲着弗莱格的白垩、冲着浑身湿泥的孩子,还是只是刚醒。
|
||||||
|
日后用神谕/`cicada-reactions` 决定,别硬编。
|
||||||
|
- 弗莱格已承 1 点压力,并开始把「带这孩子活下去」当成眼下的事。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 5)
|
||||||
|
|
||||||
|
- 弗莱格尝试找掩体隐藏:速度检定(劣势)**失败**,承 1 点压力(现 2)。
|
||||||
|
- 盐脊上**几乎没有掩体**(除了盐还是盐)。孩子压碎的盐壳发出声响。
|
||||||
|
- 巨蝉的触须已经**锁定**他们所在的那一小块盐;它正慢慢向坡上移动。
|
||||||
|
- 孩子**拒绝躲避**:不肯蹲下,只是坐着看向巨蝉。又一处不对的地方。
|
||||||
|
- **未确立**:巨蝉锁定他们的原因(看见、听见、还是被白垩或湿泥吸引),以及它打算做什么。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 7)
|
||||||
|
|
||||||
|
- `cicada-reactions roll 1`:触发「靠近白垩」→ 行为**忽略干扰**。弗莱格掷出的白垩**没有**引开它。
|
||||||
|
- oracle:`孩子会跟着弗莱格跑吗? d6=1 → No, and…`;complication:`环境骤然翻脸…地形吞掉了退路。`
|
||||||
|
- **孩子不肯跟弗莱格走**,留在原地,脸朝着巨蝉。又一处表明她与巨蝉之间的关联(仍未确立)。
|
||||||
|
- 盐脊在弗莱格前方**塌开一道裂口**,前路没了;他目前被困在一小段断脊上。
|
||||||
|
- 巨蝉吞白垩的常识在此**不适用**于这只蝉(至少此刻):它对掷出的白垩毫无反应。
|
||||||
|
- 那根白垩落在坡下、靠近巨蝉处;弗莱格身上**已无白垩**。
|
||||||
|
- **未确立**:巨蝉接下来会跟谁(弗莱格或孩子)、孩子为何留在原地、她是否与蝉有某种联系。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 8)
|
||||||
|
|
||||||
|
- 弗莱格原地不动、上膛待发(拔出武器:+1 压力,现 3)。
|
||||||
|
- oracle:`巨蝉会朝弗莱格这边过来吗? d6=6 → Yes, and…`——巨蝉**朝弗莱格来了**。
|
||||||
|
- 巨蝉太重,载着它的盐壳在**下沉**;塔陷向弗莱格所在的那一段蔓开。
|
||||||
|
他「让蝉掉下去」的打算可能会把**自己**也一起带下去。
|
||||||
|
- 孩子仍在原地不动,看着。
|
||||||
|
- **未确立**:巨蝉会不会真的塔下去、它在断脊边缘会做什么。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 9)
|
||||||
|
|
||||||
|
- `cicada-reactions roll 4`:触发「受威胁」(枪声)→ 行为**呼唤虫群**。
|
||||||
|
这只巨蝉被枪声惊动,发出长鸣,**从地底召来同类**;东、北方向已有回应。
|
||||||
|
- 弗莱格因此**暴露了自己**,并扬高了一个更大的威胁。虫群到达**需要时间**(未定,方备用骰)。
|
||||||
|
- 左轮剩 2 发;弗莱格仍困在断脊上,孩子仍在原地。
|
||||||
|
- **未确立**:虫群何时到达、来多少、带头的这只接下来会做什么。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 10)
|
||||||
|
|
||||||
|
- 弗莱格绝望地向孩子求助。oracle:`d6=5 → Yes`——她**确实说出了一条能救他的办法**:
|
||||||
|
从断崖爬下去,底下不是空的,有一道坡;下面黑,蝉看不见。(此法为真,日后照此裁定。)
|
||||||
|
- 同时 complication:`某个同行者一直在撒谎,你此刻才看见破绽。`
|
||||||
|
弗莱格**当场看穿了破绽**:她始终湿透(此地无水)、从不怕蝉、主动留在原地。
|
||||||
|
他现在知道「她不是村里逃出来的孩子」,但**不知道她是什么**。
|
||||||
|
- 「村庄的真相」clock 1 → 2/4。
|
||||||
|
- **未确立**:她到底是什么、湿泥从何而来、她留在原地是想干什么。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 11)
|
||||||
|
|
||||||
|
- 弗莱格按她说的往下爬:速度检定**成功**,已经爬上崖壁/落到坡上,下面是黑的。
|
||||||
|
- oracle:`孩子会告诉弗莱格她打算怎么办吗? d6=5 → Yes`——她说了:
|
||||||
|
「我说过的,我在等人。他们来了。你先下去。下面黑,你走得掉。」
|
||||||
|
随后**她朝巨蝉破土的方向走了两步**。
|
||||||
|
- 她早先「等家里的人回来」那句,现在听来可能指的是这些蝉(**她的说法,未经证实**)。
|
||||||
|
- **未确立**:她与巨蝉到底是什么关系、她要走去哪里、虫群到达后会发生什么。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 12)
|
||||||
|
|
||||||
|
- oracle:`那孩子会说出巨蝉要做什么吗? d6=6 → Yes, and…`——她说了:
|
||||||
|
「它们要吃。也不吃你。这片地底下埋着很多死人,旧的、还有新埋的。它们醒过来,
|
||||||
|
就是为了吃。世界不会完。只是会死很多人。」(**她的话,未经证实**。)
|
||||||
|
- 弗莱格怀疑她是幻觉;她走过干盐留下**风吹不干的湿脚印**,且蝉的触须一直跟着她
|
||||||
|
→ 她**是实体**,不是幻觉。(此项已在叙述中让玩家看到。)
|
||||||
|
- complication(已发生):`第 29 次远征军正朝这里推进,无论你们愿不愿意。`
|
||||||
|
已新增 clock「远征军逼近」。弗莱格目前只听见南边规律的隆隆声,尚不知道那是什么。
|
||||||
|
- **未确立**:巨蝉要吃的死人从何而来、「世界不会完」是否属实、远征军的目标与规模。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 13)
|
||||||
|
|
||||||
|
- 弗莱格摸黑下崖:速度检定**成功**,在洞壁的侧凹里藏住;蝉与虫群的声音被隔在头顶。
|
||||||
|
- 崖下是那只巨蝉**破土前的旧洞**(顶部就是它撞开的缝);洞里有一副它**蜕下的壳**,
|
||||||
|
壳内糊满厚厚的白垩(量级:约 20 根)。洞里目前**没有活动中的蝉**。
|
||||||
|
- 洞口/坑壁往上通到断脊;洞内另有往深处去的暖风(未探)。
|
||||||
|
- **未确立**:洞有多深、通向哪里,以及弗莱格在上面留下的东西(白垩已抛,驴蟹/行囊在坡上)。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 14)
|
||||||
|
|
||||||
|
- **巨蝉身份(已定):** 这只蝉是**远古巨蝉**(本能 64,AP 15,创伤 12)。
|
||||||
|
规则:**遭遇时附近所有人类须做一次恐慌检定**。该检定本次漏做,于 Scene 14 补做。
|
||||||
|
随身物品:致密灰甲壳、形成白垩的液体(需高级工具)、**蜕下且装满白垩的壳(≈20 根)**、
|
||||||
|
3 个随机法术。
|
||||||
|
- 恐慌检定(补做):`d10=3 ≤ 压力 3 → 恐慌` → 「大喊大叫并指责周围的人」。
|
||||||
|
弗莱格在洞里大喊,压力 3 → 2。洞里目前无人可指责;副作用转化为**响声**这个隐患。
|
||||||
|
- 弗莱格已确认那层白垩可直接取用(≈20 根);他有「白垩收集」技能。
|
||||||
|
- 崖外蝗群/虫群的回应因他的喊声**停了一拍**——是否真被发现未确立。
|
||||||
|
- **待做**:他取了多少白垩、怎么带、喊声是否有后果。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 15)
|
||||||
|
|
||||||
|
- 弗莱格取走 **10 根**白垩(壳内邻留约 10 根);行囊明显变沉。
|
||||||
|
- oracle:`能找到一条避开蝉群、也避开南边来者的路吗? d6=6 → Yes, and…`
|
||||||
|
路线可行:**下到脊西低地,贴荒原北上,不上路面,到灰喉井西侧再拐进去。**
|
||||||
|
- complication(重复出现):`第 29 次远征军正朝这里推进`——已把 clock「远征军逼近」推到 2/4。
|
||||||
|
- 出口二选一:① 来时的坡(通回脊顶,蝉在附近);② 洞深处那股暖风(黑、未知,但一定有出口)。
|
||||||
|
- **未确立**:暖风通道通向哪里、他大喊的后果、壳内剩下的 10 根白垩会不会被人捡到。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 16)
|
||||||
|
|
||||||
|
- oracle:`蝉洞里有没有能烧的东西? d6=2 → No`——**无可烧之物**(盐、沙、硬土、湿冷的蝉壳)。
|
||||||
|
要火把只能烧自己的帆布披风或玉米烟叶(他手边有取火的东西)。
|
||||||
|
- complication:`巨蝉注意到了你们。`——**他先前那声大喊招来了注意**(未向玩家点明因果)。
|
||||||
|
蝉回到洞口,一根触须从天缝探入洞中扫动,离弗莱格不到两步。
|
||||||
|
- 弗莱格压力 2 → 3。洞内仍是黑的;深处暖风通道未探。
|
||||||
|
- **未确立**:蝉是否已锁定他、触须接下来会做什么。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 17)
|
||||||
|
|
||||||
|
- 弗莱格摸黑钻入深处通道:速度检定**成功**,未发出声响,蝉的触须未跟上。
|
||||||
|
- 通道:粗盐→压实土→收窄→拐弯;暖风从更空的地方吹来(暗示前方有更大的空腔/出口)。
|
||||||
|
- 他目前距洞口约八十步加一个拐弯;身后蝉的活动声响已远。
|
||||||
|
- **未确立**:通道通向哪里、前方那个「更空的地方」是什么。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 18)
|
||||||
|
|
||||||
|
- oracle:`此刻有能听见的声音吗? d6=2 → No`——通道里**死寂**(土把声音闷住)。
|
||||||
|
- 他走到了一个**更大空间的开口处**:左右壁退开,暖风从下往上正面吹来;空间大小未知。
|
||||||
|
- 手按在土上摸到一种**连续、匀定的震颤**(不是蝉),他分辨不出——那是南边远征军的引擎
|
||||||
|
(complication 再次出现;未向玩家点明)。
|
||||||
|
- **未确立**:这个空腔是什么、是否有别的出口、他是否会把两者联想起来。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 19)
|
||||||
|
|
||||||
|
- 弗莱格摸黑冲向出口:速度检定**成功**,从一个窄口挤出地面。
|
||||||
|
- 出口位于**脊西低地**(新地点已入档),已入夜(傍晚,西边尚有余橙)。
|
||||||
|
- 盐脊在他身后(东侧),上面的蝉鸣未散。
|
||||||
|
- **南边地平线上可见远征军的一长串灯火**(低、密、一颤一颤)——已向玩家呈现;clock
|
||||||
|
「远征军逼近」仍维持 2/4。
|
||||||
|
- **未确立**:他与灰喉井的直线关系、远征军的规模与距离、壳内剩下的 10 根白垩。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 20)
|
||||||
|
|
||||||
|
- oracle:`周围有别的东西或危险吗? d6=1 → No, and…`——**附近无危险**(他抽了袋烟,未被打扰)。
|
||||||
|
- complication:`真相——一个事实让整件事变了样。` 已作为可感知的事实呈现:
|
||||||
|
**盐霜上有一串新鲜的小脚印(光脚、湿泥),从盐脊下来,笔直往北**——即他要去灰喉井的方向。
|
||||||
|
意味着孩子**已经离开盐脊、走到他前面去了**,而且泥仍是湿的(荒地里无水,说不通)。
|
||||||
|
- 弗莱格目前对脚印只有推断,不知道她是怎么下来的、要去哪。
|
||||||
|
- **未确立**:孩子与脚印是否同一人、她要去干什么、她是否知道他在后面。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 21)
|
||||||
|
|
||||||
|
- oracle:`那串小脚印会一直朝灰喉井去吗? d6=2 → No`——她**不去灰喉井**。
|
||||||
|
- complication:`匮乏`——脚印随泥干涸而**逐渐变淡、断裂**(在硬盐壳上完全消失);他无法再确认她的去向。
|
||||||
|
- 脚印先北行约一小时,然后**往东拐向盐脊**;再往前就看不出来了。
|
||||||
|
- 因此弗莱格只知道她大致朝盐脊去了,不知她最终去哪。
|
||||||
|
- **未确立**:她真实的目的地、她为何朝蝉那边走。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 22)
|
||||||
|
|
||||||
|
- 弗莱格夜行北上:lost 检定 `1d10=5`,未迷路。天快亮时遇到遭遇。
|
||||||
|
- `encounters roll 3`:**农裔民兵**(本能 42,AP 2,创伤 3)——被拉壮丁的农人,不想打。
|
||||||
|
- oracle:`他们会把弗莱格当敌人吗? d6=1 → No, and…`——**不敌对**,反而松懈、愿意搭话。
|
||||||
|
complication:`两难`——本场给出一个「两个坏结果选一个」的抉择。
|
||||||
|
- 领头女人:**密斯特**([cloud] 名);一行七人,趁夜从远征军里溜出,想回家。
|
||||||
|
- 她们的说辞:灰喉井一带来了一批北上的兵,先头已压过井边,一路抓人、搜白垩。
|
||||||
|
**真伪未定**;但北上兵力确是真的(与南边灯火、clock「远征军逼近」一致)。
|
||||||
|
- **未确立**:井边现在到底有什么、远征军是否真在搜白垩、密斯特她们可信到什么程度。
|
||||||
|
|
||||||
|
### 已确立(Session 0001, Scene 23)
|
||||||
|
|
||||||
|
- oracle:`民兵要回去的地方有水、能落脚吗? d6=4 → Yes, but…` → complication:`注视`。
|
||||||
|
**他们村叫苦水屯**(西边两天脚程,有苦水井、有屋有田,兵不走那条烂路)。
|
||||||
|
**但是:暗处有什么在看着他们,弗莱格尚未发现。**(观察者身份未定,日后必须兑现。)
|
||||||
|
- 弗莱格提议同行、并谎称只有一两根白垩:心灵检定(优势)**大失败(98/97)**,pressure 3 → 4。
|
||||||
|
他的老毛病(手按向白垩袋)出卖了他;密斯特看穿并拒绝同行,七人戒备起来。
|
||||||
|
- 一行人保持非敌对,但不愿同路;火堆边一声轻响后,一切又静了(观察者只是换了个姿势)。
|
||||||
|
- **未确立**:观察者是什么、他们是否会改主意、苦水屯是否真安全。
|
||||||
|
|
||||||
|
## 白垩
|
||||||
|
|
||||||
|
- 弗莱格对白垩的执念是他自己的事,**不是**世界秘密。
|
||||||
|
- 他的父母是否真的需要「被证明」、他们现在何处、是否还活着——**尚未确立**。
|
||||||
|
用 `journal oracle` 决定,不要凭空编。
|
||||||
|
|
||||||
|
## 待定(用神谕或火花表确立,别硬编)
|
||||||
|
|
||||||
|
- 村庄真正的遭遇。
|
||||||
|
- 孩子是否知道真相,以及她在隐瞒什么。
|
||||||
|
- 白垩坡这个地名是否真实存在。
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
# Retcons
|
||||||
|
|
||||||
|
A log of facts changed after the fact. Each entry records what changed and why,
|
||||||
|
so the change is not quietly contradicted later.
|
||||||
|
|
||||||
|
A retcon is only allowed in the layer the PC has not perceived: every session
|
||||||
|
log entry and every line of `../state/knowledge.md` must still read exactly as
|
||||||
|
before. See `README.md`.
|
||||||
|
|
||||||
|
| Session | What changed | Why |
|
||||||
|
|---------|--------------|-----|
|
||||||
|
| | | |
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# House rules
|
||||||
|
|
||||||
|
This campaign's overrides and additions to the game's rules. The game package
|
||||||
|
is authoritative; anything written here takes precedence for this campaign
|
||||||
|
only. Leave it empty if the game runs as written.
|
||||||
@@ -0,0 +1,579 @@
|
|||||||
|
# Session 0001 — 泥巴孩子
|
||||||
|
|
||||||
|
- **Campaign:** the-ballad-of-chalk
|
||||||
|
- **Game:** cloud-empress
|
||||||
|
- **Date:** 2026-09-13
|
||||||
|
- **PC:** 弗莱格(酸的)
|
||||||
|
|
||||||
|
## Scene 1 — 盐脊道上
|
||||||
|
|
||||||
|
`spark roll 20 → "一个浑身涂满泥巴的孩子,说自己是村庄唯一的幸存者。" [npc, child]`
|
||||||
|
`weather roll 7 → "滑界涟漪——周围的现实被扭曲。" [slip]`
|
||||||
|
|
||||||
|
**Scene:** 低地边缘,盐碱荒原。天是滑界涟漪,云层像被谁用手指抹开,现实的边缘在弗莱格
|
||||||
|
眼角余光里微微走样。风里全是盐味。他一个人走在干涸的盐脊道上,行囊里那根白垩又被
|
||||||
|
拇指摩过一遍。就在前面路当中,站着一个浑身涂满湿泥的孩子,一动不动地看着他。
|
||||||
|
|
||||||
|
## Scene 2 — 白垩坡
|
||||||
|
|
||||||
|
> **Player:** 我问他,你的村子怎么了
|
||||||
|
|
||||||
|
`Q: 孩子会如实说出村庄的遭遇吗? d6=3 → No, but…` · `complication → "白垩不够用了——你数了数剩下的根数,比你以为的少。"`
|
||||||
|
|
||||||
|
**Resolution:** 她没有马上答。她低头看了看自己脚边洇开的那摊水痕,像是才注意到它,
|
||||||
|
然后抬手,用沾满泥的手背抹了下巴。泥划开一道,底下露出的皮肤白得刺眼。
|
||||||
|
|
||||||
|
「我们村叫白垩坡。」她说,声音平得像水,「往南走,半天。」
|
||||||
|
|
||||||
|
「夜里,蝉来了。它们从地里拱出来,把大人都拖了下去。我抱着坛子躲在地窖里,听上面叫
|
||||||
|
了一整夜。」
|
||||||
|
|
||||||
|
「等我爬出来,就剩我一个了。」
|
||||||
|
|
||||||
|
她说完就一直看着你。风又起了一阵,全是盐味。身后那只驴蟹忽然不安起来,原地打转,
|
||||||
|
不肯再往前走一步。你俯身去摸它,右手却先一步探进了夹克——老习惯。拇指碰到白垩的
|
||||||
|
那一下,你顿住了:那一截比你以为的短得多,已经磨得只剩一根指节长。你什么时候磨掉
|
||||||
|
这么多?
|
||||||
|
|
||||||
|
你抬头再看她。她浑身上下都是湿泥,水还在往下滴;可你脚下这片盐脊干得能划出白印,
|
||||||
|
风里连一丝水汽都没有。
|
||||||
|
|
||||||
|
**State:** 无属性变化;白垩磨损(见 `characters/flag.md` inventory);新疑点与村名记入 `state/knowledge.md`。
|
||||||
|
|
||||||
|
## Scene 3 — 她说不清,地底有东西
|
||||||
|
|
||||||
|
> **Player:** 那你在这里一个人干嘛呀
|
||||||
|
|
||||||
|
`Q: 孩子会给出一个能自圆其说的理由,解释她为什么独自守在路当中吗? d6=1 → No, and…` · `complication → "巨蝉注意到了你们。"`
|
||||||
|
|
||||||
|
**Resolution:** 她歪了下头,像是在挑一个词。
|
||||||
|
|
||||||
|
「我在这里……等人。」
|
||||||
|
|
||||||
|
「等谁?」
|
||||||
|
|
||||||
|
「等家里的人回来。」
|
||||||
|
|
||||||
|
话一出口她就停住了。你自己也顿了一下——她刚才才说,村里的人都被蝉拖走了,只剩她一个。
|
||||||
|
这两句话摆在一起,怎么都对不上。她的眼睛飞快地眨了两下,低下头去看自己脚边的水痕,
|
||||||
|
不说话了。
|
||||||
|
|
||||||
|
就在这时候,你听见了。
|
||||||
|
|
||||||
|
不是从天上,是从**脚底**。一阵极低的嗡鸣顺着盐壳传上来,震得你牙根发麻、靴底发痒;
|
||||||
|
脚下的盐粒开始细碎地跳。身后那只驴蟹一声不吭地僵住了,四条腿死死钉在地上。前面几步
|
||||||
|
远的地方,干裂的盐壳「喀」地裂开一道细缝,一股温热的、带点甜腥的气从缝里涌出来——
|
||||||
|
像是有什么东西在地下,很近,翻了个身。
|
||||||
|
|
||||||
|
你认得这个声音。夏天一到,地里的蝉就醒了。
|
||||||
|
|
||||||
|
孩子没有跑。她只是站着,低着头,像在听。
|
||||||
|
|
||||||
|
**State:** clock「村庄的真相」0 → 1/4;knowledge:孩子的破绽(「等家里人回来」自相矛盾)与巨蝉的气息。
|
||||||
|
|
||||||
|
## Scene 4 — 冲上盐脊
|
||||||
|
|
||||||
|
> **Player:** 弗莱格觉得事情定有蹊跷,但是他没有时间多想。眼下蝉马上就要来了,不可能留这个孩子一个人在这儿。所以说,他抓着孩子的手就开始往高处跑
|
||||||
|
|
||||||
|
`test 速度·拖着孩子冲向高处 目标 58 · d100 06(0,6)| 57(5,7)→ 成功`
|
||||||
|
|
||||||
|
**Resolution:** 她的手比看上去还凉,滑腻得像一截刚出水的根。你攒住往回一拽——她没挣,也没喊,
|
||||||
|
只是被你拖着跑,脚步虚浮。
|
||||||
|
|
||||||
|
盐壳在你们脚下碎。你选那道最高的盐脊,靴子几次陷下去半寸又拔出来,咯吱作响。你不敢
|
||||||
|
回头。
|
||||||
|
|
||||||
|
跑上脊顶那一刻,你身后整片盐壳「轰」地拱了起来。一道长缝沿着你们刚走过的路裂开,盐块
|
||||||
|
像干饼一样成片滑落。有什么东西从那底下顶上来——湿的、灰白的,大得像座谷仓,刚从地里
|
||||||
|
翻身,身上还挂着一层层没褪净的盐壳。两根触须粗得像你的胳膊,从那一团东西前端慢慢伸
|
||||||
|
出来,在空气里一下、一下地探。
|
||||||
|
|
||||||
|
那声音现在你听得清清楚楚:像有人在极远的地方拉一根低音弦。是蝉。是大的那种。
|
||||||
|
|
||||||
|
它没有立刻扑过来。它只是——转。触须扫过你们方才站的地方,又朝盐脊这边压过来一截。
|
||||||
|
|
||||||
|
你回头找那只驴蟹,它正连滚带爬地往坡上追,钳子乱挥。
|
||||||
|
|
||||||
|
你身边的孩子没有哭。你低头看她,她也在看那东西,眼神平静得像在看一口井。
|
||||||
|
|
||||||
|
**State:** stress 0 → 1(面对可怕的实体);clock「巨蝉苏醒」0 → 1/6;新地点「盐脊道」与新 NPC
|
||||||
|
「泥巴孩子」入档;threads 新增一条。
|
||||||
|
|
||||||
|
## Scene 5 — 无处可藏
|
||||||
|
|
||||||
|
> **Player:** 我决定先找一个掩体躲起来,如果蝉没有发现我们,我们就在这儿等到它走
|
||||||
|
|
||||||
|
`test 速度·找掩体藏身 目标 58 · d100 94(9,4)| 26(2,6)→ 失败` · 承受 1 点压力
|
||||||
|
|
||||||
|
**Resolution:** 你拉着孩子蹲下,目光扫过整道盐脊——没有石头,没有沟,没有一处高过膝盖的
|
||||||
|
地方。这里除了盐还是盐。你只能把她按在一块巴掌高、一踩就碎的盐唇后面,自己也贴上去,
|
||||||
|
一只手按在她肩上示意她别动。
|
||||||
|
|
||||||
|
她没有躲。她甚至没有蹲下,只是顺着你的力道坐着,眼睛越过那道盐唇,直直地看着那一边。
|
||||||
|
脚下那层壳被你们压得「噼」地响了一声,碎盐顺着坡滚下去。
|
||||||
|
|
||||||
|
那东西的触须扫过来了。先远,后近,一根一根贴着你刚跑过的脚印、贴着你们刚才呼吸过的
|
||||||
|
地方,一下、一下地压过来。它停了一下。然后两根触须同时竖起,笔直地指向盐脊上你们趴着
|
||||||
|
的这一小块盐。
|
||||||
|
|
||||||
|
半埋在盐壳里那团湿灰白的东西往下沉了沉,又拔起来,盐块从它背上滑落,砸在地上,闷响。
|
||||||
|
它朝坡上来了——很慢,但不停。
|
||||||
|
|
||||||
|
你的手又摸到了那截白垩。
|
||||||
|
|
||||||
|
**State:** stress 1 → 2(藏身的行动失败);knowledge 更新孩子不怕蝉这一点。
|
||||||
|
|
||||||
|
## Scene 6 — 一根不够
|
||||||
|
|
||||||
|
> **Player:** 这个时候,弗莱格非常讨厌自己竟然不会运用白垩,因为眼下这个情况,如果能用白垩隐形就好了。但是事到如今,不得不拼一下了
|
||||||
|
|
||||||
|
**Resolution:** 你伸手去摸那截白垩,指尖先认出了它——短,短得让你心里一沉。
|
||||||
|
|
||||||
|
你一直以为夹克里还揣着两根。摊开手心,只有一根。
|
||||||
|
|
||||||
|
隐形要两根白垩。你当然知道,你比这条道上任何人都清楚。那半篇残句在你嘴里打转,
|
||||||
|
就是凑不成一个完整的法术。
|
||||||
|
|
||||||
|
坡下那团湿灰白又拔起一截,盐块哗啦啦地滑落。触须的尖端几乎扫到盐脊的背风面。它很慢,
|
||||||
|
但它不会停。
|
||||||
|
|
||||||
|
孩子还坐在你身边,看看它,又看看你手里的白垩。
|
||||||
|
|
||||||
|
**State:** 无(白垩尚未消耗)。
|
||||||
|
|
||||||
|
## Scene 7 — 退路没了
|
||||||
|
|
||||||
|
> **Player:** 那我就只能把剩下的那根白垩扔出去,然后再继续往远处跑。这次让那个孩子自己跟上我
|
||||||
|
|
||||||
|
`cicada-reactions roll 1 → "受威胁:撤退;靠近白垩、白垩技术或尸体:忽略干扰;弄湿:逃跑;被照明弹或异常强光致盲:逃跑。"`
|
||||||
|
|
||||||
|
`oracle "孩子会跟着弗莱格跑吗?" d6=1 → No, and…` · `complication → "环境骤然翻脸:酸雨、滑界涟漪或地形吞掉了退路。"`
|
||||||
|
|
||||||
|
**Resolution:** 你把那截白垩在手里攒了最后一下——凉的,粗的,那个被你摩过无数次的角。
|
||||||
|
然后你抡臂,把它朝坡下扔了出去。
|
||||||
|
|
||||||
|
白粉在半空散成一小片雪。那东西连头都没偏一下;触须扫过落点,没有停,仍旧朝盐脊上压。
|
||||||
|
|
||||||
|
你转身就跑。
|
||||||
|
|
||||||
|
你盼着听见身后孩子的脚步。没有。你回头瞥了一眼——她还坐在原地,脸朝着坡下,根本
|
||||||
|
没打算跟。
|
||||||
|
|
||||||
|
你顾不得别的,只顾往前。脚下的盐壳越来越薄,咯吱声变成碎裂声——然后,你刚踏上去的
|
||||||
|
那一段脊背,连同底下几十尺的黑盐,整个塌进了地里。
|
||||||
|
|
||||||
|
你在边缘堪堪刹住,碎盐哗啦啦地滚进新裂开的黑口子。前头是断崖,没有路了。
|
||||||
|
|
||||||
|
身后,孩子还在原地,蝉还在上来;而你的白垩躺在坡下,离那东西不远,白得扎眼。
|
||||||
|
|
||||||
|
**State:** inventory:白垩已掷出(从身上移除,落在坡下);knowledge 新增:抛出白垩引不开
|
||||||
|
巨蝉、孩子不肯跟。
|
||||||
|
|
||||||
|
## Scene 8 — 不动,上膛
|
||||||
|
|
||||||
|
> **Player:** 我决定静静地坐着,试图不动。如果巨蝉要追上来,那么它也会跟我一样掉到悬崖下面去。但是与此同时,我把枪拿到手里并且上膛,随时准备开枪
|
||||||
|
|
||||||
|
`oracle "巨蝉会朝弗莱格这边过来吗?" d6=6 → Yes, and…` · `complication → "白垩不够用了——你数了数剩下的根数,比你以为的少。"`
|
||||||
|
|
||||||
|
**Resolution:** 你把左轮从肩套里抽出来,转开弹巢看了一眼——三发——合上,拇指压下击锤。
|
||||||
|
「喀。」这点金属声在风里轻得可以忽略,但你整个人还是跟着僵住,把手压低,尽量坐进
|
||||||
|
盐壳里不动。
|
||||||
|
|
||||||
|
它还是来了。
|
||||||
|
|
||||||
|
触须先到,贴着地面一下一下地扫;那团湿灰白跟着拔起,慢,但一直朝你这一小段脊背压过来。
|
||||||
|
你听见地底下有碎裂的声音,像冰面底下有东西在挪。它每往前一段,载着它的那层盐壳就
|
||||||
|
往下沉一点——它太重,脚下这片空壳根本撑不住。
|
||||||
|
|
||||||
|
而那道正在塌的网也朝你铺过来了:你坐着的地面开始微微倾斜,脚边又裂开一道细纹。你原
|
||||||
|
打的主意是让它追上你、再连它一起掉下去——眼下看来,先掉下去的可能是你们俩一起。
|
||||||
|
|
||||||
|
你身后,孩子还是坐着,没动。你右手在夹克上按了按——空的。那根白垩在坡下。
|
||||||
|
|
||||||
|
击锤已经压下,蝉还在上来。
|
||||||
|
|
||||||
|
**State:** stress 2 → 3(拔出武器)。
|
||||||
|
|
||||||
|
## Scene 9 — 一枪,换来一片回应
|
||||||
|
|
||||||
|
> **Player:** 我警告性地向天空开一枪。试图吓一吓他
|
||||||
|
|
||||||
|
`cicada-reactions roll 4 → "受威胁:呼唤虫群;靠近白垩、白垩技术或尸体:呼唤虫群;弄湿:甩干;被照明弹或异常强光致盲:僵住。"`
|
||||||
|
|
||||||
|
**Resolution:** 你把枪口抬向天空,扣下扳机。
|
||||||
|
|
||||||
|
「砰——」声音在空旷的盐原上滚出去,震得你耳朵发麻,也震得脚下那片薄壳一阵轻颤。
|
||||||
|
|
||||||
|
那东西停住了。
|
||||||
|
|
||||||
|
它没有退。它把前半身慢慢压低,背上那层湿灰白的壳忽然剧烈地颤动起来。它从身体
|
||||||
|
深处挤出一个声音——不是蝉鸣,是一种更低的、锯子般的嗡,拉得极长,一路沉进地底下。
|
||||||
|
|
||||||
|
然后,地底下回话了。
|
||||||
|
|
||||||
|
东边,很远的地方,一声。北边,更远,两声。都是同样的嗡,懒懒的,像是有什么东西
|
||||||
|
在地下翻了个身,又拉长嗓子应了一声。
|
||||||
|
|
||||||
|
它不是怕你。它在叫它们。
|
||||||
|
|
||||||
|
你站在断脊上,枪还举着,弹巢里还剩两发。
|
||||||
|
|
||||||
|
**State:** 左轮 3 发 → 2 发;clock「巨蝉苏醒」1 → 2/6;knowledge 新增:枪声召来了同类。
|
||||||
|
|
||||||
|
## Scene 10 — 「往下。」
|
||||||
|
|
||||||
|
> **Player:** 我感到非常的绝望,然后开始问小女孩,有没有任何办法,任何办法可以让我们活下来
|
||||||
|
|
||||||
|
`oracle "那孩子会说出一条能让弗莱格活下来的办法吗?" d6=5 → Yes` · `complication → "某个同行者一直在撒谎,你此刻才看见破绽。"`
|
||||||
|
|
||||||
|
**Resolution:** 你朝身后喊,声音哑得自己都认不出——问她还有没有办法,任何办法。
|
||||||
|
|
||||||
|
她抬起头看你。脸上那层泥已经干了一部分,裂成细纹,底下露出的皮肤白得刺眼。
|
||||||
|
|
||||||
|
> 「往下。」她说,声音还是那么平,「崖底下不是空的,有坡。你扒着盐,慢慢往下爬——
|
||||||
|
> 下面黑,它们看不见。」
|
||||||
|
>
|
||||||
|
> 「我在这儿。」
|
||||||
|
|
||||||
|
就三句话。可你盯着她看的那一瞬,有什么东西终于对上了。
|
||||||
|
|
||||||
|
她浑身上下还是**湿的**。风刮了这么久,这片盐碱地干得能划出白印,她身上的水却一滴
|
||||||
|
都没干,还在往下滴。她从没怕过那只东西——它破土、它逼近、它叫来同类,她连眼皮都
|
||||||
|
没跳一下。现在她站在离它最近的地方,跟你说她在这儿,像在说一件早就安排好的事。
|
||||||
|
|
||||||
|
这不是一个从村里逃出来的孩子。
|
||||||
|
|
||||||
|
你身后,断脊轻轻一沉。
|
||||||
|
|
||||||
|
**State:** clock「村庄的真相」1 → 2/4;knowledge 新增:弗莱格看清了孩子的破绽。
|
||||||
|
|
||||||
|
## Scene 11 — 往下爬
|
||||||
|
|
||||||
|
> **Player:** 我没有别的办法了,我只能照着他说的做,然后我做的时候问他,那你呢
|
||||||
|
|
||||||
|
`test 速度·按她说的往下爬 目标 58 · d100 34(3,4)→ 成功`
|
||||||
|
|
||||||
|
`oracle "孩子会告诉弗莱格她打算怎么办吗?" d6=5 → Yes`
|
||||||
|
|
||||||
|
**Resolution:** 你不再争了。把枪插回肩套,翻身趴到断崖边缘,手先探下去,摸到一层还算结实
|
||||||
|
的盐沿——然后一寸一寸往下挪。碎盐不停灌进领口,你把自己的喘压得很低。
|
||||||
|
|
||||||
|
你抬起头,问她:「那你呢?」
|
||||||
|
|
||||||
|
她从崖沿上探出半张糊满泥的脸,低头看你。
|
||||||
|
|
||||||
|
「我说过的,我在等人。」她说,「他们来了。」
|
||||||
|
|
||||||
|
风里又是那阵锯子一样的低嗡,比刚才近。东边、北边,那些懒懒的回应正在一个一个合拢
|
||||||
|
过来。
|
||||||
|
|
||||||
|
「你先下去。下面黑,你走得掉。」
|
||||||
|
|
||||||
|
她说完就直起身,往回走了两步——朝着那只蝉,朝着它破土的地方。
|
||||||
|
|
||||||
|
**State:** 爬下成功,无压力变化;knowledge 新增:她说她在「等人」,而「他们」来了;她留在
|
||||||
|
崖上,朝蝉走去。
|
||||||
|
|
||||||
|
## Scene 12 — 它们要吃,而南边有东西在过来
|
||||||
|
|
||||||
|
> **Player:** 我在想,她怕不是我的幻觉吧?我问她蝉计划怎么做,世界会毁灭吗
|
||||||
|
|
||||||
|
`oracle "那孩子会说出巨蝉要做什么吗?" d6=6 → Yes, and…` · `complication → "第 29 次远征军正朝这里推进,无论你们愿不愿意。"`
|
||||||
|
|
||||||
|
**Resolution:** 你挂在崖壁上,一阵眩晕里忽然想:她会不会只是你脑子里的东西?滑界涟漪
|
||||||
|
在上头扭着,这一带什么怪事都生得出来。
|
||||||
|
|
||||||
|
你喊上去,问她蝉到底要干什么,问这个世界是不是要完了。
|
||||||
|
|
||||||
|
她没有停步,只是侧过半张脸。
|
||||||
|
|
||||||
|
「它们要吃。」她说,「也不吃你。这片地底下埋着很多死人,旧的、还有新埋的。它们醒
|
||||||
|
过来,就是为了吃。」
|
||||||
|
|
||||||
|
「世界不会完。」她顿了顿,「只是会死很多人。」
|
||||||
|
|
||||||
|
她踩在干盐上走过。你看见她走过的地方留下一串深色的湿脚印——风一吹不干,也不淡。
|
||||||
|
|
||||||
|
然后你听见了另一头的声音:从南边很远的地方,穿过风声传来的、规律的、低沉的隆隆声。
|
||||||
|
不像蝉,不像风。像很多东西一起在动,一起在响。
|
||||||
|
|
||||||
|
你正挂在崖壁上。头顶是蝉和孩子,南边有什么正在过来。
|
||||||
|
|
||||||
|
**State:** knowledge 新增:她说蝉要吃埋在地下的死人、世界不会完只是会死很多人;南边有规律的
|
||||||
|
隆隆声逼近。新增 clock「远征军逼近」0 → 1/4。
|
||||||
|
|
||||||
|
## Scene 13 — 崖下,白垩
|
||||||
|
|
||||||
|
> **Player:** 那当然是继续往下爬了。我决定先自己跑掉,找个安全的地方,不要跟蝉对峙了
|
||||||
|
|
||||||
|
`test 速度·摸黑下崖找藏身处 目标 58 · d100 38(3,8)→ 成功`
|
||||||
|
|
||||||
|
**Resolution:** 你不再看上面了。把自己贴回崖壁,一寸一寸往下。盐壁刮着你的指节;风越来越
|
||||||
|
小,蝉鸣越来越远,暖意一点点从下面升上来。最后你的靴底踩到了实实在在的东西——碎盐、
|
||||||
|
沙,还有一层压得很实的旧土。
|
||||||
|
|
||||||
|
你摸进一道侧凹,背贴着凉土缩起来。头顶那道缝里,天是窄窄的一条灰;蝉和孩子都看不见
|
||||||
|
了,声音也被压在头顶很远的地方。
|
||||||
|
|
||||||
|
然后你的指尖碰到了它。
|
||||||
|
|
||||||
|
弧形的,脆的,一按就簌簌掉渣。你顺着它往上摸——摸不到边。是一副壳。巨大的、空心的
|
||||||
|
壳,像有人把一整只蝉的皮褪下来留在了这儿。壳的内侧糊着厚厚一层白:白垩。干的白垩,
|
||||||
|
松的、厚的、一碰就往下掉粉的白垩。比你这一路身上揣过的加起来还多。
|
||||||
|
|
||||||
|
你缩在黑里,怀里全是白粉的味道。
|
||||||
|
|
||||||
|
那只驴蟹没跟下来——你最后看见它时,它还卡在坡上的一堆碎盐后面,钳子朝着你乱挥。它
|
||||||
|
现在留在上面,和蝉、和孩子一起。
|
||||||
|
|
||||||
|
**State:** 无压力变化(爬下成功);knowledge 新增:崖下是蝉的旧洞,洞里有它蜕下的壳,壳里
|
||||||
|
满是白垩;新地点「蝉洞」入档。
|
||||||
|
|
||||||
|
## Scene 14 — 清点,然后炸开
|
||||||
|
|
||||||
|
> **Player:** 可恶的白垩,但是我应该是一个比较熟悉白垩的人,且像现在这样子的量的白垩是比较大的。我盘算一下,我能简单地预处理一下这些的白垩,然后把它们带走吗?我能赚钱吗?可以用来放魔法吗
|
||||||
|
|
||||||
|
`panic d10=3 ≤ 压力 3 → 恐慌` · `→ "残酷。你大喊大叫并指责周围的人。你减少 1 点压力,但让旅行队里的其他人每人承受 1 点压力。"`
|
||||||
|
|
||||||
|
**Resolution:** 你的手指在那层白粉里划了一下,刮下一道深痕。这东西你太熟了——松、干、纯,
|
||||||
|
用不着任何工序,抓起来就能用。你甚至在心里估算起来:这个量,差不多二十根。二十根
|
||||||
|
白垩。灰喉井有人肯拿衬衫换一根。
|
||||||
|
|
||||||
|
然后,毫无预兆地,刚才那一个钟头全砸在你身上。
|
||||||
|
|
||||||
|
你张嘴,冲着黑里喊起来。喊的是谁,你自己也说不清——也许是她,也许是那些你从来没
|
||||||
|
敢当面喊过的名字。声音在洞里撞回来,尖而哑。
|
||||||
|
|
||||||
|
喊完,你听见自己的喘。洞里静得可怕。
|
||||||
|
|
||||||
|
而头顶、崖外,那阵嗡嗡的、懒懒的应答,忽然停了一拍。
|
||||||
|
|
||||||
|
**State:** stress 3 → 2(恐慌结果:大喊大叫);无其他机械变化。
|
||||||
|
|
||||||
|
## Scene 15 — 脑子里那张地图
|
||||||
|
|
||||||
|
> **Player:** 我轻松能拿上10根的话,那就拿上10根。事不宜迟,我得找路回灰猴井。根据我的地理知识,我想要规划一下回去的路线。同时,我还希望绕过蝉和远方要来的无论是什么,总之不要跟他们对抗。我只是一个人
|
||||||
|
|
||||||
|
`oracle "弗莱格能找到一条避开蝉群、也避开南边来者的路,回到灰喉井吗?" d6=6 → Yes, and…` · `complication → "第 29 次远征军正朝这里推进,无论你们愿不愿意。"`
|
||||||
|
|
||||||
|
**Resolution:** 你把袋里的杂物倒出来,用指腹把壳内那层白垩ー一刮进袋里:刮十下,收十根。
|
||||||
|
扎紧袋口,掌上沉甸甸的。剩下的还堆在壳里,你顾不上。
|
||||||
|
|
||||||
|
然后你坐下来,闭眼,在脑子里铺开这一片地形。
|
||||||
|
|
||||||
|
- 盐脊道大致南北走。你是在北边那段上路的,一路向南。
|
||||||
|
- **灰喉井**在北面——路从脊西绕过去的那一个弯上,几间土坯房,顶着面褪色的远征军旗。
|
||||||
|
以你的脚程,半天不到就能到。
|
||||||
|
- 南边更远,路一直伸进低地——那阵规律的隆隆声就是从那儿过来的。
|
||||||
|
- 而蝉,连同应声赶来的同类,聚的是**这道盐脊**(东边、北边那些回应,都在往这儿合拢)。
|
||||||
|
|
||||||
|
于是路在你脑子里很清楚:**先下到脊西的低地,往北走,贴着荒原走,别上路面——脊在你东边给你
|
||||||
|
挡着蝉,南边的路让给他们。走到灰喉井西侧再拐进去。**
|
||||||
|
|
||||||
|
问题是第一步:你得先从这洞里出去。上来时的坡通回脊顶,而蝉就在脊顶附近;洞的深处
|
||||||
|
另有一股暖风往上吹,不知通向哪儿,但风总得有个出口。
|
||||||
|
|
||||||
|
**State:** inventory +白垩×10(又取十根留在壳里);clock「远征军逼近」1 → 2/4。
|
||||||
|
|
||||||
|
## Scene 16 — 洞里没有能烧的东西
|
||||||
|
|
||||||
|
> **Player:** 那我们就钻洞吧,看方位的话,这洞横竖也可以通向灰喉井。但是洞里很黑,我可能需要做一个火把,如果周围有材料的话,想想办法,能不能生个火。
|
||||||
|
|
||||||
|
`oracle "蝉洞里有没有能烧的东西,够弗莱格做一个照明的火把?" d6=2 → No` · `complication → "巨蝉注意到了你们。"`
|
||||||
|
|
||||||
|
**Resolution:** 你摸遍了手边的地:盐、沙、硬土,就这些。那副壳你掰下一角,脆得一捏就碎,
|
||||||
|
湿冷,点不着。洞里没有一根干草、一块木头。
|
||||||
|
|
||||||
|
你要生火,只能烧自己那件帆布披风或者那袋玉米烟叶——你摸了摸烟斗袋底,火星倒是能有,
|
||||||
|
可这两样烧一件少一件。
|
||||||
|
|
||||||
|
而你还在犹豫的时候,头顶那道缝里的光变了。
|
||||||
|
|
||||||
|
一片灰暗的东西把那条天盖住了一角。嗡声沉下来,贴着洞壁往你这边灌。几粒盐渣从上面
|
||||||
|
簌簌落下,掉在你手背上。然后——一根东西,黑的、粗的,像一根枯枝,从天缝里慢慢探
|
||||||
|
下来,在洞里一下、一下地扫。
|
||||||
|
|
||||||
|
那根触须离你不到两步。
|
||||||
|
|
||||||
|
**State:** stress 2 → 3(面对可怕的实体);火把未做成(洞内无可烧之物)。
|
||||||
|
|
||||||
|
## Scene 17 — 摸黑往里
|
||||||
|
|
||||||
|
> **Player:** 不行不行,事不宜迟,没时间了。并且我现在不能接受吸引蝉的注意力,所以说我直接摸黑往洞里钻。速度要快,并且尽量不要发出声音
|
||||||
|
|
||||||
|
`test 速度·摸黑快钻、不出声 目标 58 · d100 07(0,7)→ 成功`
|
||||||
|
|
||||||
|
**Resolution:** 你不去碰那件披风。把手撑在身后那堵墙上,身体压低,往黑暗里挪——第一步很慢,
|
||||||
|
脚尖先探,落稳了才压上重量;第二步开始快起来。你要的是快,但每一脚都落在自己选好的
|
||||||
|
地方。
|
||||||
|
|
||||||
|
身后传来触须刮过洞壁的声音,很轻,一下,一下。它扫过你刚才坐的地方,停了一停。你没有停。
|
||||||
|
|
||||||
|
洞壁从粗盐变成压实的土,再变窄,你得侧着身子过。空气是暖的,从前面来,贴着你的脸过去。
|
||||||
|
你把手一直按在左边的壁上,心里数着步子——大概八十步;然后洞拐了个弯,身后的声音一下
|
||||||
|
就远了。
|
||||||
|
|
||||||
|
你在黑里站住,额头抵着凉土,喘。前面还是黑,但没有刚才那么闷——那股暖风更大了,
|
||||||
|
像是从一个更空的地方吹过来。
|
||||||
|
|
||||||
|
**State:** 无变化(成功脱身,未出声;蝉的触须未跟上)。
|
||||||
|
|
||||||
|
## Scene 18 — 洞口那阵颤
|
||||||
|
|
||||||
|
> **Player:** 这个地方待着很危险。我一点也不想要在这儿停留,赶紧往出口钻。我听到什么声音了吗?如果这里足够安静的话,我可能可以通过喊一声来判断这个洞有多空旷
|
||||||
|
|
||||||
|
`oracle "此刻洞里,或通道前方,有弗莱格能听见的声音吗?" d6=2 → No` · `complication → "第 29 次远征军正朝这里推进,无论你们愿不愿意。"`
|
||||||
|
|
||||||
|
**Resolution:** 你贴着左壁往前,一步接一步,尽量让鞋底先落地。你听。
|
||||||
|
|
||||||
|
什么都没有。不是安静得能听见滴水那种安静——是压得死死的、土把一切都闷住的那种安静。
|
||||||
|
你只能听见自己喉咙里的气。
|
||||||
|
|
||||||
|
走了不知多久,你忽然发现左边的壁摸不着了:伸出去的手落进空处,右边的壁也往后退开。
|
||||||
|
暖风正面吹在你脸上,从下往上。你站在一个更大的地方的口子上——多大,你不知道,黑里
|
||||||
|
什么都看不出来。
|
||||||
|
|
||||||
|
就在这时,你按在土上的那只手感觉到一种很轻、很匀的颤。不是蝉那种一下一下的刮。是
|
||||||
|
连续的、有节奏的,像很远的地方有很多东西同时在转。
|
||||||
|
|
||||||
|
你分辨不出那是什么。它一直在。
|
||||||
|
|
||||||
|
**State:** 无变化(未引起任何注意;clock「远征军逼近」维持 2/4)。
|
||||||
|
|
||||||
|
## Scene 19 — 出洞
|
||||||
|
|
||||||
|
> **Player:** 算了,我这个时候不敢大喊,我还是直接冲吧,越早走到出口越好
|
||||||
|
|
||||||
|
`test 速度·摸黑冲向出口 目标 58 · d100 24(2,4)→ 成功`
|
||||||
|
|
||||||
|
**Resolution:** 你不再管回声。把手往前伸护着脸,朝着风吹来的方向迈开步子,一步比一步大。
|
||||||
|
|
||||||
|
地面不平——几处是塌下来的土堆,几处是软的,踩下去陷半只脚;你摔了两次,都用肩膀
|
||||||
|
卸掉,没出声。空间比你想的大,头顶摸不着,回声闷闷地罩着。走了大概一百步,风忽然变
|
||||||
|
冷了,带着一股外面才有的干涩碱味,从正前方一个窄窄的口子里灌进来。
|
||||||
|
|
||||||
|
你侧着身子挤进去。盐和土刮着你的背。
|
||||||
|
|
||||||
|
然后,你出来了。
|
||||||
|
|
||||||
|
外面是傍晚。天已经暗成灰蓝,只有西边还压着一条脏兮兮的橙。你站在脊西一大片低地上,
|
||||||
|
身后就是那道盐脊,黑沉沉地横着,轮廓上有一层毛糙的灰。
|
||||||
|
|
||||||
|
风从脊上带下来一点声音——那阵锯子似的嗡还在,没散。而南边,地平线上,有一长串东西
|
||||||
|
在暗里发着光:一排一排的黄点,低的、密的,一颤一颤地动,像一条慢慢爬过来的、点了灯的
|
||||||
|
虫子。
|
||||||
|
|
||||||
|
你听不见它们,但你知道那不是星星。
|
||||||
|
|
||||||
|
**State:** 无压力变化(成功出洞);knowledge 新增:从脊西出来、外面已入夜、南边地平线上有
|
||||||
|
灯火与机械化动静(预感是远征军);新地点「脊西低地」入档。
|
||||||
|
|
||||||
|
## Scene 20 — 盐霜上那串小脚印
|
||||||
|
|
||||||
|
> **Player:** 夜晚在外面一个人待着太危险了,我先叹气,埋怨自己的倒霉,然后赶紧找个地方坐一下,拿出一点烟草来让自己冷静一下。同时看一下周围还有没有什么别的危险
|
||||||
|
|
||||||
|
`oracle "此刻弗莱格周围有别的东西或危险吗?" d6=1 → No, and…` · `complication → "真相——一个事实让整件事变了样。"`
|
||||||
|
|
||||||
|
**Resolution:** 你找了块干一点的盐包坐下,膝盖顶着下巴,骂了一句——骂天,骂自己,骂那根
|
||||||
|
白垩。然后掏出烟斗,从袋里捻一撮玉米烟叶按进锅,用燧石点着。火苗小,一亮一亮,
|
||||||
|
只照见你指尖那一圈。
|
||||||
|
|
||||||
|
外面一点动静都没有。脊上的嗡还在,很远了。南边那条灯虫还在爬。
|
||||||
|
|
||||||
|
你慢慢吐出一口烟,眼睛顺地看过去。就在这时,你看见了它们。
|
||||||
|
|
||||||
|
一排很小的、深色的印子,落在薄薄一层盐霜上。你凑近——是脚印,光脚,小孩的。新鲜的,
|
||||||
|
泥还是湿的,印子边缘还带着水光。顺着看过去:脚印从盐脊那边下来,拐了个弯,笔直地
|
||||||
|
往北去——正是你要去的方向。
|
||||||
|
|
||||||
|
一串,又一串。间距拉得很开,像走得很快。
|
||||||
|
|
||||||
|
你一个人坐在这儿。她本该在脊上的。
|
||||||
|
|
||||||
|
**State:** 无压力变化(抽烟不算休息,周围无危险);knowledge 新增:湿泥的小脚印从脊上下来、
|
||||||
|
笔直往北。
|
||||||
|
|
||||||
|
## Scene 21 — 追,然后追不上
|
||||||
|
|
||||||
|
> **Player:** 我感觉到不太妙,小女孩很明显和蝉的关系不浅,如果让她先到了聚居点,岂不是就遭殃了。事不宜迟,我决定顺着脚印追上去,如果脚印真的是朝灰喉井的,那我就顺便回灰喉井;如果脚印在某个地方变了方向,那我还是回灰喉井,但是我记住她往什么地方去了
|
||||||
|
|
||||||
|
`oracle "那串小脚印会一直朝灰喉井去吗?" d6=2 → No` · `complication → "匮乏——你以为充足的东西,其实不够了。"`
|
||||||
|
|
||||||
|
**Resolution:** 你没再多想,把烟斗在靴底磕灭,塞回袋里,弯腰顺着那串小印子追上去。
|
||||||
|
|
||||||
|
风从背后推着你。前面没有路,只有盐——硬的地方白,软的地方灰。你起初走得很快:
|
||||||
|
那串小脚印清清楚楚,一步一个,间距大得不像小孩的步子。你估量着她的速度,心里发紧——
|
||||||
|
照这个走法,她会在天亮前到灰喉井。
|
||||||
|
|
||||||
|
可是走了大约一个钟头,印子开始淡了。
|
||||||
|
|
||||||
|
泥在她脚上一点点干掉、结块、剥落,落在地上的越来越少。到了几片发硬的盐壳上,那串
|
||||||
|
印子干脆断了。你蹲下来,拿烟斗的火照了半天,才在七八步外重新找到一枚,浅得像谁的
|
||||||
|
指甲划过。再往前,更浅。
|
||||||
|
|
||||||
|
然后你发现:印子不再往北了。它们往**东**拐,斜着朝盐脊那边去。
|
||||||
|
|
||||||
|
再走几十步,你完全看不清她的去向了——只知道大概,她朝的是脊的方向。
|
||||||
|
|
||||||
|
**State:** 无压力变化;knowledge 新增:脚印渐淡,并往东拐向盐脊。
|
||||||
|
|
||||||
|
## Scene 22 — 盐埂边的火
|
||||||
|
|
||||||
|
> **Player:** 那我就放心了,我还有10根白垩回灰喉井交易呢,我先回去找个地方睡个觉再说
|
||||||
|
|
||||||
|
`dice 1d10 = 5`(夜间赶路,未迷路)· `encounters roll 3 → "农裔民兵——他们不想打,但被逼无奈。本能 42,护甲值 2,创伤上限 3。"`
|
||||||
|
|
||||||
|
`oracle "这群农裔民兵会把弗莱格当成敌人吗?" d6=1 → No, and…` · `complication → "两难——你必须在两个坏结果里选一个。"`
|
||||||
|
|
||||||
|
**Resolution:** 你按着脊的方向定标,一直往北。夜里比白天好走——盐壳被露水压住,不怎么响;
|
||||||
|
星和西边那道残橙够你认方向。走了大半夜,你渴了两回,嘴里发苦。
|
||||||
|
|
||||||
|
天快亮时,你在一道矮盐埂边看见一点火光。很小,压得很低,像怕人看见。
|
||||||
|
|
||||||
|
火边坐着七个人。农裔打扮,家伙当武器——柴刀、锄头、一根削尖的木杆。看见你,他们
|
||||||
|
全站起来,把东西端在手里,可没人先动。你看得出来:手在抖,站位也没章法,不像要打架
|
||||||
|
的人。
|
||||||
|
|
||||||
|
一个年纪大些的女人开口,低地方言,你勉强听得懂。她叫密斯特,剩下的人跟着她。
|
||||||
|
|
||||||
|
「你是从南边过来的?」她瞟了眼你腰上的枪,「别开枪。我们不打了。」
|
||||||
|
|
||||||
|
她说他们是给拉去当民兵的——第 29 次远征军,往北,去那口井。她们趁夜溜了出来,想回家。
|
||||||
|
|
||||||
|
「灰喉井,」她说,「这两天全是往北的兵。先头已经压过去了,一路抓人、搜白垩。」
|
||||||
|
|
||||||
|
**State:** 无压力变化;遭遇「农裔民兵」(不敌对);NPC「密斯特」入档;knowledge 新增:
|
||||||
|
灰喉井一带来了一批北上的兵,抓人、搜白垩。
|
||||||
|
|
||||||
|
## Scene 23 — 老毛病
|
||||||
|
|
||||||
|
> **Player:** 我问他们打算去哪儿,如果他们去的地方感觉比较容易落脚,那么我提议跟着他们一起。我可以给他们我手里的白垩,但是我不说我有10根,我就说我有一两根
|
||||||
|
|
||||||
|
`oracle "民兵要回去的那个地方,是个有水、能落脚的地方吗?" d6=4 → Yes, but…` · `complication → "注视——有什么在暗处看着你,而你还没发现它。"`
|
||||||
|
|
||||||
|
`test 心灵·搭话与隐瞒白垩数目 目标 18 · d100 98(9,8)| 97(9,7)→ 失败` · 承受 1 点压力
|
||||||
|
|
||||||
|
**Resolution:** 「回村。」密斯特说,「往西,两天脚程,叫**苦水屯**。我们那儿有井,水是苦的,
|
||||||
|
但能喝;有屋,有田。」她顿了一下,「兵不去那边。路太烂。」
|
||||||
|
|
||||||
|
你在心里过了一遍:两天脚程,有水,有屋子,兵不去——比灰喉井强。于是你开口,说你一个人
|
||||||
|
往北也是瞎闯,不如搭个伴,路上还能替他们看着点;你身上还有点白垩,一两根,路上顶用。
|
||||||
|
|
||||||
|
话说到一半,你的手又犯了老毛病——拇指往腰后那只袋子上一按。
|
||||||
|
|
||||||
|
密斯特的目光跟着那一按过去了。她没作声,旁边一个年轻些的男人却往后挪了半步,
|
||||||
|
把削尖的木杆横到身前。
|
||||||
|
|
||||||
|
「你有白垩。」密斯特说。不是问句。「这两天,兵在道上拦人,搜的就是这个。你揣着这个,
|
||||||
|
还说自己只有一两根——」
|
||||||
|
|
||||||
|
她没把话说完。剩下的几个人已经半站起来,谁也没先动手,可火边刚松下来的那点气,
|
||||||
|
全没了。
|
||||||
|
|
||||||
|
「我们不敢跟你走一路。」她说,「你走你的北,我们回我们的西。」
|
||||||
|
|
||||||
|
火堆那边响了一声。很轻,像是谁在黑暗里换了个站姿。你回头看了一眼,什么都没有。
|
||||||
|
风刮过盐壳,簌簌的。
|
||||||
|
|
||||||
|
**State:** stress 3 → 4(社交检定失败);knowledge 新增:民兵回苦水屯(西边两天,有水有屋,
|
||||||
|
兵不去),并因他身上的白垩而拒绝同行;gm 记下暗处有未现身的注视者。
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
# Sessions
|
||||||
|
|
||||||
|
One file per session, named `NNNN-slug.md` (zero-padded, e.g. `0001-the-ash-gate.md`).
|
||||||
|
Session logs are append-only; see `AGENTS.md` for the format.
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
# Clocks
|
||||||
|
|
||||||
|
Ticking pressures. Fill a segment whenever the fiction advances the clock.
|
||||||
|
|
||||||
|
| Clock | Segments | Filled | Notes |
|
||||||
|
|-------|----------|--------|-------|
|
||||||
|
| 巨蝉苏醒 | 6 | 2 | 夏天一到,巨蝉便从地下醒来。每过一段时日填一格。 |
|
||||||
|
| 村庄的真相 | 4 | 2 | 每当弗莱格逼近孩子谎言的破绽,填一格;填满则真相浮出。 |
|
||||||
|
| 远征军逼近 | 4 | 2 | 第 29 次远征军正朝低地边缘推进,无论弗莱格愿不愿意。 |
|
||||||
@@ -0,0 +1,53 @@
|
|||||||
|
# What the PC knows
|
||||||
|
|
||||||
|
The PC's working picture of the world — not the world itself. Narration may draw
|
||||||
|
on these entries and on what the PC perceives now; anything the PC has not
|
||||||
|
learned belongs in `../gm/`.
|
||||||
|
|
||||||
|
Update this file whenever a scene reveals something, confirms a suspicion, or
|
||||||
|
overturns a belief. A mistaken belief stays here under Suspected until the PC
|
||||||
|
learns better, even after the GM knows the truth.
|
||||||
|
|
||||||
|
## Known
|
||||||
|
|
||||||
|
| Fact | Learned |
|
||||||
|
|------|---------|
|
||||||
|
| 巨蝉在夏天苏醒,吞噬死者与白垩。 | 常识 |
|
||||||
|
| 第 29 次远征军涌进低地,寻找失踪的云之女帝。 | 常识 |
|
||||||
|
| 白垩能驱动纹章与法术;要用它,得先付代价。 | 常识 |
|
||||||
|
| 低地边缘最近的水源是灰喉井。 | 走这条道的人都知道 |
|
||||||
|
| 南边半天的脚程有个村子,叫「白垩坡」——那孩子说的。 | 孩子亲口说(未经核实) |
|
||||||
|
| 盐脊道底下钻出过一只巨蝉,大得像座谷仓。 | 亲眼所见 |
|
||||||
|
| 把白垩扔出去引不开这只巨蝉——它看都没看。 | 亲眼所见 |
|
||||||
|
| 枪声会让巨蝉发出呼唤,远处有别的蝉回应——它在召集同类。 | 亲眼所见、亲耳所闻 |
|
||||||
|
|
||||||
|
## Suspected
|
||||||
|
|
||||||
|
| Belief | Basis |
|
||||||
|
|--------|-------|
|
||||||
|
| 父母从来没有真正看得起他。 | 他离开家时他们说的话 |
|
||||||
|
| 只要精通白垩,他们就会承认他。 | 他自己的推断,未经检验 |
|
||||||
|
| 心灵迟钝可以靠苦功弥补。 | 他不肯承认的另一半可能是错的 |
|
||||||
|
| 这孩子身上不太对劲:浑身湿泥,可这片荒地里没有水。 | 他自己的眼睛,反复看过的盐脊 |
|
||||||
|
| 她的说法对不上:前一句村里人都死了,后一句又在「等家里的人回来」。 | 她当着他的面说漏的嘴 |
|
||||||
|
| 她不是从村里逃出来的孩子——始终湿透、从不怕蝉、不肯躲也不肯跟,像在等着什么。 | 风干不了她,也吓不到她 |
|
||||||
|
| 她说她一直在「等人」,而现在「他们来了」——听着像是那些蝉。 | 她当着他的面说的 |
|
||||||
|
| 她说蝉要吃的是埋在地下的死人;世界不会完,只是会死很多人。 | 她说的,未经证实 |
|
||||||
|
| 南边远处传来规律的、低沉的隆隆声,一直在靠近。 | 他贴在崖壁上听见的 |
|
||||||
|
| 崖下是那只蝉的旧洞,洞里有一副它蜕下的壳,壳内糊满厚厚的白垩。 | 他亲手摸到的 |
|
||||||
|
| 那层白垩差不多有二十根,松、干、纯,不用加工就能用。 | 他的眼与手 |
|
||||||
|
| 打这儿回灰喉井:下到脊西低地、贴着荒原往北,避开脊上的蝉和南边的路。 | 他的地理知识 |
|
||||||
|
| 蝉洞里没有能烧的东西——一根干草、一块木头都没有。 | 他亲手摸遍的 |
|
||||||
|
| 通道尽头通向脊西的低地;外面已入夜。 | 他钻出来亲眼所见 |
|
||||||
|
| 南边地平线上有一长串移动的灯火,低而密,还带着震颤。 | 他远远望见(他猜是远征军) |
|
||||||
|
| 盐霜上有一串湿泥的小脚印:从盐脊下来,笔直往北——正是他要走的方向。 | 他抽烟时低头看见的 |
|
||||||
|
| 那串脚印走着走着就淡了、断了,而且往东拐向盐脊。 | 他追了一个钟头,亲眼看着它淡下去 |
|
||||||
|
| 灰喉井一带来了很多北上的兵(第 29 次远征军),抓人、搜白垩。 | 民兵密斯特所说,未经证实 |
|
||||||
|
| 西边两天脚程有个农裔村子叫苦水屯,有苦水井、有屋和田,兵不去那边。 | 密斯特所说 |
|
||||||
|
| 民兵不肯跟弗莱格同行——他们怕他身上搜得出的白垩。 | 他们当着面拒绝的 |
|
||||||
|
|
||||||
|
## Open questions
|
||||||
|
|
||||||
|
- 我到底能不能学会白垩魔法?
|
||||||
|
- 我的父母现在在哪里?他们要我拿出什么才肯正眼看我?
|
||||||
|
- 那个满身泥的孩子说的是真的吗?
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Threads
|
||||||
|
|
||||||
|
Open questions and unresolved goals. Status is one of: open, resolved, abandoned.
|
||||||
|
|
||||||
|
| Thread | Status | Notes |
|
||||||
|
|--------|--------|-------|
|
||||||
|
| 精通白垩,向父母证明自己 | open | 弗莱格的执念;心灵 18 是他最大的障碍。 |
|
||||||
|
| 那个泥巴孩子是什么、往脊那边去做什么 | open | 她自称幸存者,却说漏了嘴;已离开盐脊,朝脊的方向去了。 |
|
||||||
|
| 白垩从何而来、父母身在何处 | open | 出身与执念的源头,尚未打捞。 |
|
||||||
|
| 带那孩子逃开地底的巨蝉 | abandoned | 弗莱格独自逃了出来;她往盐脊去了,他放弃了跟下去。 |
|
||||||
|
| 把这十根白垩换成活路 | open | 十根白垩是横财,也是招蝉的灯;还没有买主。 |
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
# Campaign tables
|
||||||
|
|
||||||
|
Tables placed here belong to this campaign and override the game's tables when
|
||||||
|
names collide. The lookup order for `journal roll <name>` is:
|
||||||
|
|
||||||
|
1. `campaigns/<name>/tables/<name>.csv`
|
||||||
|
2. `games/<game>/tables/<name>.csv`
|
||||||
|
|
||||||
|
Use this directory for tables specific to this campaign's setting or cast. The
|
||||||
|
game's own tables do not need to be copied here.
|
||||||
|
|
||||||
|
Format: a CSV with a `min,max,text` header and an optional `tags` column. See
|
||||||
|
`docs/oracle.md`.
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Factions
|
||||||
|
|
||||||
|
One file per faction, named `kebab-case.md`.
|
||||||
|
|
||||||
|
These files are player-facing: record what the PC has observed or been told. A
|
||||||
|
hidden agenda or an off-screen plan belongs in `../../gm/`.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name:
|
||||||
|
goal:
|
||||||
|
disposition: friendly | neutral | hostile | unknown
|
||||||
|
---
|
||||||
|
|
||||||
|
# <name>
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
## Members
|
||||||
|
|
||||||
|
## Resources
|
||||||
|
|
||||||
|
## History
|
||||||
|
```
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# Locations
|
||||||
|
|
||||||
|
One file per location, named `kebab-case.md`. Keep the frontmatter stable so
|
||||||
|
the agent can update it in place.
|
||||||
|
|
||||||
|
These files are player-facing: record what the PC has observed or could observe.
|
||||||
|
A hidden truth the PC has not yet learned belongs in `../../gm/`.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name:
|
||||||
|
type:
|
||||||
|
region:
|
||||||
|
status: visited | known | rumored
|
||||||
|
---
|
||||||
|
|
||||||
|
# <name>
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
## Notable features
|
||||||
|
|
||||||
|
## Inhabitants
|
||||||
|
|
||||||
|
## History
|
||||||
|
```
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
name: 灰喉井
|
||||||
|
type: 水站 / 驿站
|
||||||
|
region: 低地边缘,盐碱荒原
|
||||||
|
status: known
|
||||||
|
---
|
||||||
|
|
||||||
|
# 灰喉井
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
盐脊道上唯一还出水的井。井水发苦,烧开后有白霜浮在表面,据说那就是被冲淡的白垩。
|
||||||
|
几间土坯房挤在井边,一面褪色的远征军旗子钉在最高的那间屋顶上,风一吹就哗啦响。
|
||||||
|
|
||||||
|
## Notable features
|
||||||
|
|
||||||
|
- 一口深井,水苦,但方圆几十里内没有第二处水源。
|
||||||
|
- 来往的悬赏猎人、驮鸽商队和云裔的信使在此歇脚。
|
||||||
|
- 墙上钉满悬赏令,很多已经褪成空白。
|
||||||
|
|
||||||
|
## Inhabitants
|
||||||
|
|
||||||
|
守井的老两口,姓什么没人记得。还有几只不肯离开的驮鸽。
|
||||||
|
|
||||||
|
## History
|
||||||
|
|
||||||
|
据说是第 29 次远征军东进时打下的第一口井。远征军走了,井留下了。
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
name: 蝉洞
|
||||||
|
type: 巨蝉旧窝 / 地底空腔
|
||||||
|
region: 低地边缘,盐脊道之下
|
||||||
|
status: visited
|
||||||
|
---
|
||||||
|
|
||||||
|
# 蝉洞
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
盐脊道塌开的那道裂口底下。爬下来的坡是碎的盐、沙,再往下是一层压得很实的旧土。洞里
|
||||||
|
黑,空气是暖的,有一股闷闷的土腥味。头顶就是蝉破土时撞开的那道缝,天从那里透下窄窄的
|
||||||
|
一条灰。
|
||||||
|
|
||||||
|
## Notable features
|
||||||
|
|
||||||
|
- 洞壁有一道侧凹,能挤进一个人,背贴着凉土藏住。
|
||||||
|
- 洞里横着一副巨蝉蜕下的旧壳,巨大、中空、一碰就掉渣;壳的内侧糊着厚厚一层干白垩。
|
||||||
|
- 深处有微弱的风往上冒,暖暖的——不知道通向哪里。
|
||||||
|
|
||||||
|
## Inhabitants
|
||||||
|
|
||||||
|
未见活动中的巨蝉。至少此刻没有。
|
||||||
|
|
||||||
|
## History
|
||||||
|
|
||||||
|
弗莱格在巨蝉破土、虫群应声赶来时,从崖上爬进这里躲藏。
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
---
|
||||||
|
name: 盐脊道
|
||||||
|
type: 干涸盐脊 / 荒原道路
|
||||||
|
region: 低地边缘,盐碱荒原
|
||||||
|
status: visited
|
||||||
|
---
|
||||||
|
|
||||||
|
# 盐脊道
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
低地边缘的一条干涸盐脊,像一排断掉的肋骨。脚下的盐壳干得能划出白印,踩上去簌簌地碎。
|
||||||
|
风里全是盐味,还有一点铁锈味。
|
||||||
|
|
||||||
|
## Notable features
|
||||||
|
|
||||||
|
- 两侧是干裂的黑盐壳,方圆里没有水源;最近的水是反方向的灰喉井。
|
||||||
|
- 脊顶是这一带最高的地方,可以俯瞰一片低平荒原。
|
||||||
|
- 2026-09-13:地面在这里裂开一道长缝,一只巨蝉破土而出。
|
||||||
|
- 同一天,脊背前方的一段塌进了地里,露出一道断崖;崖下黑,有一道碎盐坡可以爬下去。
|
||||||
|
|
||||||
|
## Inhabitants
|
||||||
|
|
||||||
|
无。
|
||||||
|
|
||||||
|
## History
|
||||||
|
|
||||||
|
弗莱格在这条道上遇见自称村庄唯一幸存者的孩子;随后地底的巨蝉被惊动。
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
name: 脊西低地
|
||||||
|
type: 荒原低地
|
||||||
|
region: 低地边缘,盐脊道以西
|
||||||
|
status: visited
|
||||||
|
---
|
||||||
|
|
||||||
|
# 脊西低地
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
盐脊西侧展开的一片低平荒原。白天是刺目的白,入夜后是一片没有层次的灰。地面时硬时软,
|
||||||
|
有的地方踩下去会陷半只脚。风从盐脊上翻下来,带着碱味。
|
||||||
|
|
||||||
|
## Notable features
|
||||||
|
|
||||||
|
- 从蝉洞深处钻出的窄口就开在这片低地上(已入夜时被弗莱格发现)。
|
||||||
|
- 往东是盐脊,脊上蝉鸣未散;往南地平线上能望见远征军的一长串灯火。
|
||||||
|
- 走到灰喉井西侧再拐进去,是他规划的路线。
|
||||||
|
|
||||||
|
## Inhabitants
|
||||||
|
|
||||||
|
未见。
|
||||||
|
|
||||||
|
## History
|
||||||
|
|
||||||
|
弗莱格从蝉洞挤出地面,从这里开始往北绕行。
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
# NPCs
|
||||||
|
|
||||||
|
One file per NPC, named `kebab-case.md`.
|
||||||
|
|
||||||
|
These files are player-facing: record what the PC has observed or been told. A
|
||||||
|
hidden motive or an unrevealed identity belongs in `../../gm/`.
|
||||||
|
|
||||||
|
```markdown
|
||||||
|
---
|
||||||
|
name:
|
||||||
|
role:
|
||||||
|
location:
|
||||||
|
status: alive | dead | missing | unknown
|
||||||
|
disposition: friendly | neutral | hostile | unknown
|
||||||
|
---
|
||||||
|
|
||||||
|
# <name>
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
## Wants
|
||||||
|
|
||||||
|
## Relationships
|
||||||
|
|
||||||
|
## History
|
||||||
|
```
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
---
|
||||||
|
name: 泥巴孩子
|
||||||
|
role: 自称村庄唯一幸存者
|
||||||
|
location: 盐脊道(低地边缘)
|
||||||
|
status: alive
|
||||||
|
disposition: unknown
|
||||||
|
---
|
||||||
|
|
||||||
|
# 泥巴孩子
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
十岁上下,瘦小,从头到脚糊着一层新鲜的湿泥,泥还在往下滴水。泥底下露出的皮肤白得不
|
||||||
|
像活人。说话声音很平,不哭,不闹。
|
||||||
|
|
||||||
|
## Wants
|
||||||
|
|
||||||
|
自称在这里等「家里的人回来」。
|
||||||
|
|
||||||
|
## Relationships
|
||||||
|
|
||||||
|
- 弗莱格(酸的):在盐脊道上拦在他的面前;巨蝉破土时被他拽着逃上盐脊。她没有挣。
|
||||||
|
|
||||||
|
## History
|
||||||
|
|
||||||
|
- 2026-09-13:拦在盐脊道当中,自称村庄唯一的幸存者。村名「白垩坡」,说在南边半天的脚程。
|
||||||
|
- 问她为何独自在此,先答「等人」,又答等「家里的人回来」——与她「全村只剩我一个」的说法对不上。
|
||||||
|
- 巨蝉破土而出时,她没有跑,也没有害怕。
|
||||||
|
- 夜里:脊西的盐霜上出现一串她的小脚印,从脊下来、笔直往北——比弗莱格先走一步。
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
---
|
||||||
|
name: 密斯特
|
||||||
|
role: 农裔民兵(领头人)
|
||||||
|
location: 脊西低地,往灰喉井的路上
|
||||||
|
status: alive
|
||||||
|
disposition: friendly
|
||||||
|
---
|
||||||
|
|
||||||
|
# 密斯特
|
||||||
|
|
||||||
|
## Description
|
||||||
|
|
||||||
|
年纪大些的农裔女人,手上有田里的茧。说话是低地方言,声音不高,但一开口其余六个人
|
||||||
|
都听她的。腰间别着一把柴刀,没出鞘。
|
||||||
|
|
||||||
|
## Wants
|
||||||
|
|
||||||
|
想带着这几个人回家,不想再打仗。
|
||||||
|
|
||||||
|
## Relationships
|
||||||
|
|
||||||
|
- 弗莱格(酸的):在夜里的盐埂边遇上;她先开口,请他别开枪。
|
||||||
|
- 同行六人:都是被拉去当民兵的农人,跟着她走。
|
||||||
|
|
||||||
|
## History
|
||||||
|
|
||||||
|
- 2026-09-13 夜:她带六人趁夜从第 29 次远征军的民兵队里溜出来。
|
||||||
|
- 她说灰喉井一带来了很多北上的兵,先头已压过井边,一路抓人、搜白垩。
|
||||||
|
- 她带的人是回**苦水屯**的(西边两天脚程,有苦水井、有屋有田,兵不走那条路)。
|
||||||
|
- 弗莱格提议同行时被他的白垩吓退——她当场拒绝,七人戒备。双方未动手。
|
||||||
+115
@@ -0,0 +1,115 @@
|
|||||||
|
# Game packages
|
||||||
|
|
||||||
|
Each game is a self-contained package under `games/<id>/`. It owns everything
|
||||||
|
that is true about the game regardless of who is playing it: the rules, the
|
||||||
|
spark tables, the character options, and any tooling the game needs. Campaigns
|
||||||
|
own the play state and reference a game by id.
|
||||||
|
|
||||||
|
## Layout
|
||||||
|
|
||||||
|
```
|
||||||
|
games/<id>/
|
||||||
|
package.json @solo/game-<id>, type: module
|
||||||
|
index.js the manifest (default export)
|
||||||
|
game.md authoritative rules the agent reads each session
|
||||||
|
rules/ longer rulebook chapters, read on demand
|
||||||
|
tables/*.csv spark tables and complication tables
|
||||||
|
characters/ backgrounds, playbooks, starting options
|
||||||
|
scripts/ tool scripts and CLI commands
|
||||||
|
```
|
||||||
|
|
||||||
|
`package.json` should depend on `@solo/oracle` if the game's scripts need dice
|
||||||
|
or table parsing:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "@solo/game-my-game",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"main": "index.js",
|
||||||
|
"exports": { ".": "./index.js" },
|
||||||
|
"dependencies": { "@solo/oracle": "workspace:*" }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## The manifest
|
||||||
|
|
||||||
|
`index.js` default-exports the manifest. Every field is optional; the id always
|
||||||
|
comes from the directory name.
|
||||||
|
|
||||||
|
```js
|
||||||
|
export default {
|
||||||
|
id: 'my-game',
|
||||||
|
title: 'My Game',
|
||||||
|
description: 'One line about the game.',
|
||||||
|
rules: 'game.md',
|
||||||
|
commands: {
|
||||||
|
'my-command': {
|
||||||
|
description: 'What it does.',
|
||||||
|
run(args, ctx) { /* ... */ },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
```
|
||||||
|
|
||||||
|
### Commands
|
||||||
|
|
||||||
|
Each entry in `commands` becomes a `journal <name>` subcommand, available
|
||||||
|
whenever a campaign running this game is in context. The handler receives:
|
||||||
|
|
||||||
|
- `args` — `{ positional, flags }`, already parsed.
|
||||||
|
- `ctx` — `{ root, campaignsDir, gamesDir, campaignDir, campaign, game }` plus
|
||||||
|
`ctx.findTable(name)` and `ctx.helpers` (`rollDie`, `rollExpr`, `oracle`,
|
||||||
|
`parseTable`, `rollTable`, `tableRange`, `findTable`).
|
||||||
|
|
||||||
|
Handlers may be async. Print to `console.log`; throwing exits non-zero with
|
||||||
|
`journal: <message>`.
|
||||||
|
|
||||||
|
Commands are the recommended way to ship game tooling, because the agent can
|
||||||
|
reach them through the one `journal` entry point. Standalone executables go in
|
||||||
|
`scripts/` for one-off jobs and are run with `node`.
|
||||||
|
|
||||||
|
## What lives where
|
||||||
|
|
||||||
|
| Content | Location | Reached by |
|
||||||
|
|---------|----------|------------|
|
||||||
|
| Rules summary | `game.md` | the agent, every session |
|
||||||
|
| Rulebook chapters | `rules/*.md` | the agent, on demand |
|
||||||
|
| Spark/complication tables | `tables/*.csv` | `journal roll <name>` |
|
||||||
|
| Character backgrounds | `characters/` | game commands, or the agent |
|
||||||
|
| Game tooling | `index.js`, `scripts/` | `journal <command>`, `node` |
|
||||||
|
|
||||||
|
## Table lookup
|
||||||
|
|
||||||
|
`journal roll <name>` searches the campaign's `tables/` first, then the game's.
|
||||||
|
That lets a campaign override a game table without copying the rest. Tables the
|
||||||
|
game ships are not copied into campaigns.
|
||||||
|
|
||||||
|
## Validating
|
||||||
|
|
||||||
|
`journal check --game <id>` validates the package as well as its tables:
|
||||||
|
|
||||||
|
- **errors** — overlapping table ranges, CSV parse failures, invalid or missing
|
||||||
|
`package.json`, missing game.
|
||||||
|
- **warnings** — range gaps, package name that is not `@solo/game-<id>`, missing
|
||||||
|
`"type": "module"`, missing `index.js`/`tables/`/`characters/`, missing rules
|
||||||
|
file.
|
||||||
|
|
||||||
|
It exits non-zero on errors. `journal games` additionally surfaces a manifest
|
||||||
|
that fails to load as `ERROR`. Test each table with
|
||||||
|
`journal roll <table> --game <id>` and each command with
|
||||||
|
`journal <command> --game <id>`.
|
||||||
|
|
||||||
|
```
|
||||||
|
journal check --game my-game
|
||||||
|
journal game my-game
|
||||||
|
```
|
||||||
|
|
||||||
|
## Creating a game
|
||||||
|
|
||||||
|
1. Copy `games/generic/` to `games/<id>/`.
|
||||||
|
2. Rename the package to `@solo/game-<id>` and set `id` in `index.js`.
|
||||||
|
3. Replace `game.md`, the tables, and `characters/` with the game's content.
|
||||||
|
4. Run `journal check --game <id>`, `journal games`, and `journal game <id>`.
|
||||||
|
5. Start a campaign with `journal new-campaign <name> --game <id>`.
|
||||||
@@ -0,0 +1,81 @@
|
|||||||
|
# Oracle and tables
|
||||||
|
|
||||||
|
## The d6 oracle
|
||||||
|
|
||||||
|
A single d6 answers yes/no questions about the world.
|
||||||
|
|
||||||
|
| d6 | Result | Meaning |
|
||||||
|
|----|--------|---------|
|
||||||
|
| 6 | **Yes, and…** | It works, and there is a fortunate extra. |
|
||||||
|
| 5 | **Yes** | It works, plainly. |
|
||||||
|
| 4 | **Yes, but…** | It works, at a cost or with a complication. |
|
||||||
|
| 3 | **No, but…** | It fails, but there is a consolation or opening. |
|
||||||
|
| 2 | **No** | It fails, plainly. |
|
||||||
|
| 1 | **No, and…** | It fails, and there is an additional setback. |
|
||||||
|
|
||||||
|
Ask one question at a time, and phrase it so both answers are interesting. The
|
||||||
|
oracle answers the world; it does not decide what the PC wants.
|
||||||
|
|
||||||
|
```
|
||||||
|
journal oracle "Is the gate locked?" --campaign ashfall
|
||||||
|
```
|
||||||
|
|
||||||
|
## Complications
|
||||||
|
|
||||||
|
The complication table supplies a twist. Roll it on `and`/`but` results, or
|
||||||
|
whenever the fiction needs one:
|
||||||
|
|
||||||
|
```
|
||||||
|
journal oracle "Is the gate locked?" --complicate --campaign ashfall
|
||||||
|
journal roll complication-themes --campaign ashfall
|
||||||
|
```
|
||||||
|
|
||||||
|
The table is resolved like any other (see below), so a campaign without its own
|
||||||
|
`complication-themes.csv` falls back to the one the game ships.
|
||||||
|
|
||||||
|
## Spark tables
|
||||||
|
|
||||||
|
Any CSV in a campaign's or game's `tables/` directory is a spark table. The
|
||||||
|
header must contain `min`, `max`, and `text`; `tags` is optional.
|
||||||
|
|
||||||
|
```csv
|
||||||
|
min,max,text,tags
|
||||||
|
1,1,"A sign of recent passage",exploration
|
||||||
|
2,2,"Something out of place",mystery
|
||||||
|
```
|
||||||
|
|
||||||
|
- `min`/`max` are inclusive integers and define the die range. `1..6` is a d6;
|
||||||
|
`1..66` reads as a d66; any contiguous range works.
|
||||||
|
- `text` is the result, quoted if it contains a comma.
|
||||||
|
- `tags` holds one or more tags separated by `;` or `|`.
|
||||||
|
|
||||||
|
### Lookup order
|
||||||
|
|
||||||
|
`journal roll <name>` searches:
|
||||||
|
|
||||||
|
1. `campaigns/<campaign>/tables/<name>.csv`
|
||||||
|
2. `games/<game>/tables/<name>.csv`
|
||||||
|
|
||||||
|
So a campaign can override a single game table without copying the rest. Use
|
||||||
|
`journal tables` to see both sources, labelled.
|
||||||
|
|
||||||
|
```
|
||||||
|
journal roll sparks --campaign ashfall
|
||||||
|
journal roll sparks --tag mystery --campaign ashfall
|
||||||
|
journal roll sparks --count 3 --campaign ashfall
|
||||||
|
journal roll sparks --game generic
|
||||||
|
```
|
||||||
|
|
||||||
|
A tagged roll picks uniformly among matching entries rather than rolling on the
|
||||||
|
range, since ranges stop being meaningful once the table is filtered.
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
`journal check` parses every table for a campaign and its game, reporting
|
||||||
|
overlapping ranges and parse failures as errors, and range gaps and missing
|
||||||
|
directories as warnings.
|
||||||
|
|
||||||
|
```
|
||||||
|
journal check --campaign ashfall
|
||||||
|
journal check --game generic
|
||||||
|
```
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
# 角色选项
|
||||||
|
|
||||||
|
这里存放的是《云之女帝》的角色**选项**:职业、起始装备和技能表。真正的 PC 卡住在
|
||||||
|
`campaigns/<name>/characters/<pc>.md`,不要把这些文件拷进战役。
|
||||||
|
|
||||||
|
## 文件
|
||||||
|
|
||||||
|
- `backgrounds.csv` — 四个职业(佣兵、领主裔、魔法师、信使),`min,max,text,tags`。
|
||||||
|
用 `journal background` 掷一个。
|
||||||
|
- `sellsword.csv`、`lordschild.csv`、`mage.csv`、`courier.csv` — 每个职业的 1d10
|
||||||
|
“之前在做什么 + 起始装备”表。用 `journal loadout <职业 id>` 掷。
|
||||||
|
- `skills.md` — 29 项技能;拥有对应技能时相关检定具有优势。
|
||||||
|
|
||||||
|
## 快速建卡
|
||||||
|
|
||||||
|
```
|
||||||
|
journal character
|
||||||
|
```
|
||||||
|
|
||||||
|
会依次掷出四项属性(2d10+20)、三项豁免(1d10+20)、年龄(1d10)、职业、装备、
|
||||||
|
随身物、姓名与绰号,并打印可直接粘贴的 PC 卡 frontmatter。
|
||||||
|
|
||||||
|
## PC 卡形状
|
||||||
|
|
||||||
|
`index.js` 与 `game.md` 约定的 frontmatter 字段:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
name: 莱恩(朋克)
|
||||||
|
game: cloud-empress
|
||||||
|
stats: # 2d10+20,再按年龄调整
|
||||||
|
心智: 33
|
||||||
|
心灵: 27
|
||||||
|
力量: 41
|
||||||
|
速度: 38
|
||||||
|
saves: # 1d10+20,再按职业调整
|
||||||
|
现实: 24
|
||||||
|
恐惧: 31
|
||||||
|
躯体: 58
|
||||||
|
age: 成年
|
||||||
|
background: 佣兵
|
||||||
|
stress: 0 # 0–10;满 10 后再受压力改为一次恐慌检定
|
||||||
|
tracks:
|
||||||
|
harm: { value: 0, max: 10 } # 10 点伤害 = 1 点创伤,清空重来
|
||||||
|
wounds: { value: 0, max: 3 } # 第 3 点创伤 = 死亡
|
||||||
|
conditions: []
|
||||||
|
inventory: [] # 10 个物品栏位
|
||||||
|
---
|
||||||
|
```
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"佣兵(SELLSWORD)——豁免 +30 躯体;技能:刀剑 或 火器、街头智慧,另选任意 2 项。职业状态:当你附近的盟友看到你恐慌时,他们必须进行恐惧豁免,否则也会恐慌。",sellsword
|
||||||
|
2,2,"领主裔(LORDSCHILD)——豁免 +40 恐惧、-10 现实;技能:决斗、礼仪,另选任意 2 项。职业状态:你令人感到不安;你附近的盟友在进行恐惧豁免时具有劣势。",lordschild
|
||||||
|
3,3,"魔法师(MAGE)——豁免 +20 现实;技能:神秘学、施法,另选任意 2 项。职业状态:当你未通过现实豁免时,你附近的盟友承受 1 点压力。没有老年的魔法师。",mage
|
||||||
|
4,4,"信使(COURIER)——所有豁免 +10;技能:搜刮、修补工匠,另选任意 2 项。职业状态:你见多识广;每场游戏一次,你可以带着优势进行任意一次属性检定或豁免检定。",courier
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"之前:被劫持的驳船抛弃 装备:斗篷下包裹布(0 护甲值),锡制炊具,手杖(1d5 伤害,近处),晒伤,葫芦水壶,大盐渍鲶鱼(3 人份)。",courier
|
||||||
|
2,2,"之前:在橡子城闲荡,交易破烂 装备:旅行服(2 护甲值),飞镖管(1d10 伤害,近处,4 发弹药),阅读控制台,食物回收器,一个带有暗格、装满腰果的手提箱(5 人份),一根白垩。法术:昏睡克隆体。",courier
|
||||||
|
3,3,"之前:驾驶受损的扑翼机穿过巨蝉风暴 装备:飞行员连体服和破旧皮夹克(2 护甲值),匕首(1d10 伤害,相邻),破裂的护目镜,巨蝉哨子,2 枚烟雾孢子,糖霜甜甜圈(5 人份)。",courier
|
||||||
|
4,4,"之前:从铁锈区运送解冻的稀有药物 装备:嗡嗡作响的活体护甲(4 护甲值),信号枪(1 伤害,远距离,3 发照明弹),一个空的医疗冷藏箱,位置发射器,一根红香蕉,一根白香蕉。",courier
|
||||||
|
5,5,"之前:在旅行乐队表演,同时给村庄送信 装备:实用蓝色制服(2 护甲值),简单的乐器,一袋农裔邮件,一个由白垩驱动的微型扬声器,一根白垩,一壶热可可(2 人份)。法术:引导治疗。",courier
|
||||||
|
6,6,"之前:引导云裔游客穿过密林 装备:色彩鲜艳的旅行服(2 护甲值),一顶带旗帜的帽子,双筒望远镜,能量盾,2 根白垩。",courier
|
||||||
|
7,7,"之前:运送干尸去觅食地 装备:旅行服(2 护甲值),吉利服,沉重的骨灰盒,熏香旋转器(0 伤害,近处,2 回合),2 根荧光棒,一本葬礼仪式手册。你被诅咒了;在诅咒表投 1d10。",courier
|
||||||
|
8,8,"之前:为富裕的农裔训练新孵化的一窝驼鸽 装备:牧人装和皮夹腿(2 护甲值),长步枪(4d10 伤害,极远距离,2 发弹药),30 英尺绳索,一把旧菜刀,驼鸽马鞍,一袋方糖(3 人份)。",courier
|
||||||
|
9,9,"之前:在塔克镇医务室养断肢 装备:损坏的战斗护甲(修复后 5 护甲值),拐杖或手臂吊带,一把诗稿,左轮手枪(1d10 伤害,近处,0 发弹药),月球钟,半个蓝莓派(3 人份),5 根白垩。你被诅咒了;在诅咒表投 1d10。",courier
|
||||||
|
10,10,"之前:从被深度挖掘的巨蝉壳中收集白垩碎屑 装备:迷彩战斗护甲(7 护甲值),白垩炮(3d10 伤害,远距离),白垩收集钻头和锤子,手持白垩压榨机,一块硬奶酪(2 人份)。你被诅咒了;在诅咒表投 1d10。",courier
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"之前:与皇家宫廷的多名成员谈恋爱 装备:天鹅绒睡衣(0 护甲值)和日间拖鞋,一朵粉红色兰花胸花,一捆""私人""信件,期冀伴侣之标准纹章,一根白垩,一瓶古酒(4 人份)。",lordschild
|
||||||
|
2,2,"之前:赌输了大部分财产 装备:破旧的散步装(0 护甲值),天鹅绒手套,豌豆射手(1d10 伤害,相邻,1 发弹药),数额巨大的未偿还赌债,一根白垩。法术:动物语言。",lordschild
|
||||||
|
3,3,"之前:逃避包办婚姻 装备:名媛正装(0 护甲值),宽大时尚的羽毛帽,盲目光芒之饰品纹章,两个结婚手镯,一只煮熟的肥大树鸡(3 人份)。",lordschild
|
||||||
|
4,4,"之前:预订去无人知晓的遥远国度的昂贵旅行 装备:几乎没穿过的冒险者战斗护甲(5 护甲值),一把左轮手枪(1d10 伤害,近处,3 发弹药)但根本没受过射击训练,一个大旅行袋,禁锢四肢之饰品纹章,一张批注糟糕的藏宝图。",lordschild
|
||||||
|
5,5,"之前:花了一个旅行季来酝酿下一部伟大的云裔小说 装备:毛皮行装(2 护甲值),手杖(1d5 伤害,近处),未完成的手稿,书写墨水和羽毛笔,能量盾,晴朗天空之饰品纹章,2 根白垩。法术:梦境间谍。",lordschild
|
||||||
|
6,6,"之前:参加所有可用的决斗比赛 装备:紧身决斗服(3 护甲值),马刀(2d10 伤害,相邻),时髦的眼罩,缺了一根弦的曼陀林,一瓶致命毒药,皮肤缝合之饰品纹章,2 根白垩,一壶烈性苹果酒(3 人份)。法术:死者之声。",lordschild
|
||||||
|
7,7,"之前:从云城大学毕业 装备:橙色丝绸学士帽和学士服(0 护甲值),两份相互冲突的激进宣言,大量未偿还的大学债务,刺鼻气味之饰品纹章,4 根白垩。法术:地板门、模仿形态。",lordschild
|
||||||
|
8,8,"之前:严重管理不善家族庄园 装备:拥有自主意识的活体护甲(4 护甲值),火焰风箱(2d10 伤害,近处,2 罐燃料),一堆被烧毁的家族文件和法律文书,八件古董家族珠宝,遗失物品之饰品纹章,一块 2 磅重的锐切达奶酪(5 人份)。",lordschild
|
||||||
|
9,9,"之前:为不受欢迎的亲戚策划精心准备的葬礼 装备:全套纯黑哀悼者护甲(7 护甲值),左轮手枪(1d10 伤害,近处,3 发弹药),满满一箱黑纱臂章,葬礼程序单和虚伪的吊唁词,一个精美的白玫瑰花圈,哭泣儿童之饰品纹章。",lordschild
|
||||||
|
10,10,"之前:击退竞争家族的突击 装备:从奶奶那里传下来的古董护甲(7 护甲值),长步枪(4d10 伤害,极远距离,2 发弹药),身上有一百道细小割伤(已匆忙包扎),通信发射器,一面沾满鲜血的大型家族徽记旗帜,突然悲伤之饰品纹章,融化纹章之饰品纹章。",lordschild
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"之前:向思想封闭的亲戚隐瞒潜伏的魔法能力 装备:尺码大得令人尴尬的农夫罩衫(0 护甲值),一本封面上印有粮仓区详细地图的古书,3 根白垩,三穗甜玉米(3 人份)。法术:活化蔬菜、掷火。",mage
|
||||||
|
2,2,"之前:从春汛和泥石流中拯救农裔 装备:泥泞的战斗护甲(5 护甲值),信号枪(1 伤害,远距离,3 发照明弹),30 英尺绳索,太阳能灯笼,巨大的塑钢碗,一卷绷带,2 包药膏,水壶,3 根白垩,新鲜的玉米面包(2 人份)。法术:巨大化、悬浮。",mage
|
||||||
|
3,3,"之前:赢得村庄信任以研究未知法术 装备:花呢套装(0 护甲值)配帆布靴套,一本记录着几十个半成型法术的研究笔记,放大镜,匆忙修补过的眼镜,磁带录音机,2 根白垩。法术:生长鳃、不完美的躯体转移、魔法师标记。",mage
|
||||||
|
4,4,"之前:发展奇特创新的魔法理论 装备:孤独的活体护甲(4 护甲值),军用步枪(2d10 伤害,远距离,5 发弹药),一个脏兮兮的咖啡壶,几十个关于魔法理论的纹身,缠结的头发,肮脏的指甲,2 根白垩。法术:动物语言、胃部传送门。",mage
|
||||||
|
5,5,"之前:作为随叫随到的治疗师在粮仓区漫游 装备:厚重的旅行斗篷(2 护甲值)和木屐,手杖(1d5 伤害,近处),防滑指南针,外科手术工具,2 包药膏,驼鸽蒙眼布,4 根白垩。法术:引导治疗、生命火花。",mage
|
||||||
|
6,6,"之前:独自在泥泞沼泽中冥想 装备:亮黄色冥想长袍(0 护甲值),武器化雕像(2d10 伤害,相邻),逐渐消退的可能顿悟的幻象,锡制炊具,带衬垫的垫子,虫咬的包,2 根白垩,野生蘑菇(2 人份)。法术:活化蔬菜、梦境间谍。",mage
|
||||||
|
7,7,"之前:担任领主裔的宫廷魔法师 装备:从宫廷借来的华丽魔法师护甲(7 护甲值),一顶 3 英尺高的羽毛帽,一只年迈的幼犬猫,3 根白垩,一瓶橄榄油(12 人份)。法术:额外器官。",mage
|
||||||
|
8,8,"之前:跟着精心制作的舞台秀巡演 装备:塑钢加固的高顶大礼帽和条纹西装(5 护甲值),两个砰砰爆竹,一块巨大的帆布招牌,假胡须,宿敌的怨恨,3 根白垩,一杯未爆的爆米花玉米(2 人份)。法术:掷火、鼠辈形态。",mage
|
||||||
|
9,9,"之前:在令人失望的大法师手下学习 装备:挂满流苏的旅行长袍(2 护甲值),一袋白镴银器,一本写满愤怒条目的日记,导师的待洗衣物,一根白垩。法术:冰糖涂层、肢体生长。",mage
|
||||||
|
10,10,"之前:作为民选村长传授智慧 装备:布满角的华丽长袍(2 护甲值),飞镖管(1d10 伤害,近处,2 发弹药),家书,每位村民提供的一件用以指引你道路的纪念物,3 根白垩,酸酵面包(6 人份)。法术:动物语言、悬浮、变脸。",mage
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"之前:从云裔监狱中逃离 装备:监狱破布(0 护甲值),脚铐,2 颗偷来的军用手雷(3d10 伤害,近处),发报牙齿植入物,一根白垩。法术:昏睡克隆体。",sellsword
|
||||||
|
2,2,"之前:为了驼鸽蛋在街头卖艺 装备:红丝绸长袍(0 护甲值),有缺口的马刀(2d10 伤害,相邻),蒙眼布,塑料玫瑰,写着""惊艳剑术与浪漫""的木牌,两个西瓜(6 人份)。",sellsword
|
||||||
|
3,3,"之前:在山腰上挨冻 装备:衬毛皮的战斗护甲(5 护甲值),折叠工兵铲,攀爬防滑爪,50 英尺攀岩绳,冻伤(开始时带有 3 点伤害),一根白垩,一袋洋葱(4 人份)。法术:掷火。",sellsword
|
||||||
|
4,4,"之前:在沙漠中追捕逃犯 装备:帆布披风(0 护甲值),布满灰尘的战斗护甲(5 护甲值),左轮手枪(1d10 伤害,近处,3 发弹药),肩套,一支粘土烟斗和一袋玉米烟叶,一张悬赏令宾果卡,一根白垩,熏驼鸽肉干(2 人份)。法术:隐形。",sellsword
|
||||||
|
5,5,"之前:在领主裔兄妹的局部冲突中作战 装备:绣有字母的家族卫兵制服(2 护甲值),警棍(1d10 伤害,相邻),哨子,毒药胶囊,一个装有奇异锦鲤的小水箱,一头新鲜大蒜(4 人份)。",sellsword
|
||||||
|
6,6,"之前:在密林中寻找失踪的农裔 装备:正式旅行装(2 护甲值)和泥泞的靴套,一本写满案件笔记的素描本,太阳能灯笼,腕部豌豆射手(1d10 伤害,相邻,2 发弹药),一块坏掉的怀表和金链,咖啡豆(2 人份)。",sellsword
|
||||||
|
7,7,"之前:进行朝圣 装备:乞丐长袍(2 护甲值),枫木虫群僧侣面具,武器化雕像(2d10 伤害,相邻),藏在手提箱假底里的巨蝉卵,一罐糖蜜(1 人份)。",sellsword
|
||||||
|
8,8,"之前:烧毁入侵的孢子 装备:涂有乙烯基的战斗护甲(5 护甲值),火焰风箱(2d10 伤害,近处,4 罐燃料),防毒面罩,一枚睡眠孢子,一枚爆炸孢子,一枚野猪牛肉孢子(6 人份)。",sellsword
|
||||||
|
9,9,"之前:从粮仓农庄赶走巨蝉 装备:装饰着农裔标记(波尔卡圆点、条纹或花朵)的全套护甲(7 护甲值),军用步枪(2d10 伤害,远距离,3 发弹药),一条黄色的""碎面包骑士团""绶带,传统的编发,两穗玉米(2 人份)。",sellsword
|
||||||
|
10,10,"之前:守卫云裔庄园 装备:霓虹红、蓝、粉或绿色的花哨战斗护甲(5 护甲值),阅读控制台(无限期借用),一个睡眠位置发射器,2 根白垩,肉桂粉(10 人份)。法术:变脸。",sellsword
|
||||||
|
@@ -0,0 +1,37 @@
|
|||||||
|
# 技能
|
||||||
|
|
||||||
|
任何角色都可以尝试任何行动;拥有相应技能时,你在掷骰时具有**优势**。获得一项新技能通常需要数月或数年的练习,外加一位专注的老师。
|
||||||
|
|
||||||
|
| 技能 | 描述 |
|
||||||
|
| :--- | :--- |
|
||||||
|
| 杂技 | 保持平衡、在空中翱翔,执行高难度的身体机动。 |
|
||||||
|
| 表演 | 娱乐观众或掩饰你真实的情感。 |
|
||||||
|
| 动物驯养 | 快速轻松地获得野生动物的信任。 |
|
||||||
|
| 刀剑 | 熟悉大大小小的有刃武器。 |
|
||||||
|
| 白垩收集 | 定位、识别并从尸体和巨蝉外壳上获取白垩。 |
|
||||||
|
| 烹饪 | 巧妙地将稀缺的食材结合起来,制作出美味的饭菜。 |
|
||||||
|
| 舞蹈 | 骨子里有节奏,步伐中有活力。许多条约、浪漫关系和社交契约都需要熟练的步法来达成。 |
|
||||||
|
| 决斗 | 熟知正式战斗的礼仪和致命招式。 |
|
||||||
|
| 礼仪 | 知道在聚会上该坐在哪里、站在哪里,何时该用哪把叉子,以及许多其他平凡但不可或缺的形式规矩。 |
|
||||||
|
| 农活 | 了解季节、土壤、农作物和牲畜知识。 |
|
||||||
|
| 火器 | 精通手枪和步枪的维护与操作。 |
|
||||||
|
| 历史 | 接受过关于过去仅存记录的正规教育。 |
|
||||||
|
| 狩猎 | 通过身体暴力和掩饰伪装进行潜行与杀戮。 |
|
||||||
|
| 乐器 | 你的手指在吉他、小提琴、长笛或鼓上游刃有余。才华横溢的音乐家总能找到一顿热饭。 |
|
||||||
|
| 医疗 | 艰难获得的对伤口和疾病的理解,并在治疗它们方面取得了一定成功。 |
|
||||||
|
| 军令 | 对军事术语和程序有广泛的了解。 |
|
||||||
|
| 神秘学 | 了解未知事物、人类思想和灵魂世界。 |
|
||||||
|
| 针线活 | 钩织、编织和缝纫令人惊叹的服装。可用来交换优质商品。 |
|
||||||
|
| 植物辨识 | 快速识别周围植物的用途和危险。 |
|
||||||
|
| 毒药 | 精通毒素、毒液及其解毒剂。 |
|
||||||
|
| 搜刮 | 练习在恶劣环境中寻找资源。 |
|
||||||
|
| 唱歌 | 控制声音的音高、音调和音色,创造出美妙的音乐。给陌生人留下深刻印象。 |
|
||||||
|
| 施法 | 更好地利用白垩的力量,根据你的意志塑造现实。 |
|
||||||
|
| 运动 | 练习参加手球、争球和跳水。即便是小球队的明星球员也会被当作名人对待。 |
|
||||||
|
| 街头智慧 | 拥有多年识别骗局、糟糕交易、诈骗和陷阱的经验。 |
|
||||||
|
| 修补工匠 | 拥有建造和修理机器、设备以及古代技术的经验。 |
|
||||||
|
| 语言 | 对现代和古代语言拥有高级知识。 |
|
||||||
|
| 扑翼机驾驶 | 能够熟练操作各种大小的飞行器。 |
|
||||||
|
| 摔跤 | 精通地面格斗的擒拿、推搡和投掷。 |
|
||||||
|
|
||||||
|
建卡时,从这张表里挑选职业赋予的技能以及「任意 2 项其他技能」。
|
||||||
@@ -0,0 +1,236 @@
|
|||||||
|
# 云之女帝 Cloud Empress
|
||||||
|
|
||||||
|
生态科学奇幻 · 生存恐怖 · 余世。巨蝉在夏天苏醒,吞噬死者与白垩;领主裔的云城在
|
||||||
|
高空朽坏;第 29 次远征军涌进低地荒野寻找失踪的云之女帝。PC 是佣兵、领主裔、魔法师
|
||||||
|
与信使,在一场不至于毁灭、但足以压垮个人的世界里旅行。
|
||||||
|
|
||||||
|
**基调:** 世界很美,但致命的毒素看不见。暴力又快又丑,尽量避免。生存靠谨慎、
|
||||||
|
运气和同伴,而不是英雄主义。**内容警告:** 巨型虫子、精神疾病、流血、截肢、军事
|
||||||
|
占领、枪支暴力。
|
||||||
|
|
||||||
|
完整规则见 `rules/`(源自核心规则书的章节),本文件是每次游戏前必读的权威摘要。
|
||||||
|
本战役的 `house-rules.md` 只对该战役生效,且优先于本文件。
|
||||||
|
|
||||||
|
## 骰子与检定
|
||||||
|
|
||||||
|
主要用 d10。`2d10` 表示掷两枚求和;`1d100` 是掷两枚 d10,一枚当十位、一枚当个位
|
||||||
|
(`00` 读作 100)。所有随机性都必须来自 `journal` CLI。
|
||||||
|
|
||||||
|
**属性检定 / 豁免检定(低掷):** 掷 1d100,掷出**小于**相关属性/豁免的值即成功。
|
||||||
|
失败则承受 **1 点压力**。除非风险很高,否则不要掷骰;没有风险就直接成功,不可能
|
||||||
|
的事就直接失败。
|
||||||
|
|
||||||
|
**极值:** 两枚 d10 数字相同(如 33、77;`00` 也算)时为极值。成功即**大成功**,
|
||||||
|
失败即**大失败**;大失败还要额外做一次**恐慌检定**。
|
||||||
|
|
||||||
|
**优势 / 劣势:** 掷两次取更好/更差的结果。相关技能、巧妙计划或有利条件给优势;
|
||||||
|
鲁莽、危险或不利条件给劣势。一优一劣相互抵消;**多于一个优势自动成功,多于一个
|
||||||
|
劣势自动失败**。
|
||||||
|
|
||||||
|
**距离段:** 相邻(1–5 尺)→ 近处(10–20 尺)→ 远距离(30–150 尺)→ 极远距离
|
||||||
|
(200 尺以上)。武器可超射程 1 段(困难检定);超 2 段须带劣势。
|
||||||
|
|
||||||
|
```
|
||||||
|
journal test <目标值> [--advantage[=n]] [--disadvantage[=n]] [--label <名称>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## 属性与豁免
|
||||||
|
|
||||||
|
| 属性 | 用途 |
|
||||||
|
| :--- | :--- |
|
||||||
|
| 心智 | 逻辑、回忆事实、使用纹章 |
|
||||||
|
| 心灵 | 情感连接、沟通、施法、感知异界 |
|
||||||
|
| 力量 | 举、推、抓、碎、近战 |
|
||||||
|
| 速度 | 奔跑、投掷、精细操作、远程战斗 |
|
||||||
|
|
||||||
|
| 豁免 | 抵抗 |
|
||||||
|
| :--- | :--- |
|
||||||
|
| 现实 | 虚假变为现实 |
|
||||||
|
| 恐惧 | 可怕事件 |
|
||||||
|
| 躯体 | 物理创伤、中毒、辐射 |
|
||||||
|
|
||||||
|
## 压力与恐慌
|
||||||
|
|
||||||
|
**压力** 0–10 起步。承受 1 点压力的情形:检定失败;你拔出武器;有人对你拔出武器;
|
||||||
|
你造成可怕创伤;你杀了不必吃的东西;你受到创伤;你施放法术;你面对陌生或可怕的
|
||||||
|
实体。已满 10 点再受压力,改为**进行一次恐慌检定**。
|
||||||
|
|
||||||
|
**恐慌检定:** 掷 1d10,**大于**当前压力即成功。否则按掷出数字查 `panics` 表。
|
||||||
|
触发情形:大失败、目睹盟友死亡、看到不止一名盟友恐慌、毁灭性挫折、目睹难以想象
|
||||||
|
的恐怖。
|
||||||
|
|
||||||
|
```
|
||||||
|
journal panic <当前压力>
|
||||||
|
```
|
||||||
|
|
||||||
|
## 伤害、创伤与死亡
|
||||||
|
|
||||||
|
**伤害**(harm)代表擦伤、疲劳与瘀伤:累积到 10 点,清空伤害、承受 **1 点创伤**,
|
||||||
|
并在 `traumas` 表上投掷。第 **3** 点创伤 = 死亡。药膏等小型处理可治伤害;创伤需要
|
||||||
|
长期医疗:常规护理每月愈合 1 点,白垩医疗每周愈合 1 点。
|
||||||
|
|
||||||
|
**护甲值 (AP):** 抵挡所有小于总 AP 的伤害。受到等于或大于 AP 的伤害时护甲破碎,
|
||||||
|
你只承受两者之差,且护甲修复前不再提供保护。
|
||||||
|
|
||||||
|
**掩体:** 微小 2 AP、轻型 5 AP、重型 10 AP;躲在后面时提供 AP,但攻击时必须离开。
|
||||||
|
|
||||||
|
**死亡与诅咒:** 角色第一次本该死亡时,移除全部伤害与创伤,在 `curses` 表上投掷
|
||||||
|
1d10 并带着诅咒回来。第二次死亡即永久离场。换躯者不能被诅咒。
|
||||||
|
|
||||||
|
```
|
||||||
|
journal roll traumas
|
||||||
|
journal roll curses
|
||||||
|
```
|
||||||
|
|
||||||
|
## 休息、食物与孢子
|
||||||
|
|
||||||
|
- 停下休息 4–6 小时:每人 **-2 压力**。在安全地点再满足一项(安稳睡一夜、推心置腹
|
||||||
|
的交谈、美味的饭、在大自然中安静一小时)可再 **-2 压力**。
|
||||||
|
- 每天开始时队伍消耗 **1 份单日口粮**;若没有消耗,每人因饥饿承受 **2 点压力 + 2 点伤害**。
|
||||||
|
10 份优质饮食 = 1 份口粮。
|
||||||
|
- 孢子遇水激活,用后不能重装。类型与效果见 `spores` 表。
|
||||||
|
|
||||||
|
```
|
||||||
|
journal roll spores
|
||||||
|
```
|
||||||
|
|
||||||
|
## 角色成长
|
||||||
|
|
||||||
|
在一个安全空间里与一位陌生但友好的角色一同休息时,你失去的压力中最多 **4 点**可以
|
||||||
|
永久加到一项属性或豁免上。
|
||||||
|
|
||||||
|
## 负重
|
||||||
|
|
||||||
|
10 个物品栏位。大多数物品占 1 格;超大物品需要载具、驮鸽或独轮车;信件、珠宝、
|
||||||
|
眼镜等「饰品」不占格。同类物品(5 根香蕉或 6 发弹药)共占 1 格。总重不宜超过约
|
||||||
|
40 磅,超重就需要更频繁地休息。装备用物物交换,没有货币。
|
||||||
|
|
||||||
|
```
|
||||||
|
journal roll gear # 1d100 常见旅行物品(tags: C/U/R/M)
|
||||||
|
```
|
||||||
|
|
||||||
|
## 纹章与魔法
|
||||||
|
|
||||||
|
**纹章(sigils):** 骨皮工艺的碎片,当作荣誉徽章佩戴。要使用纹章,进行一次**心智
|
||||||
|
检定**:成功则生效;失败则承受 1 点压力并在 `mishaps` 表上投掷 1d10。每个纹章用一次
|
||||||
|
后必须重新涂上白垩。三个档次:饰品(白垩 1)、标准(白垩 2)、强效(白垩 3)。
|
||||||
|
|
||||||
|
```
|
||||||
|
journal sigil # 随机纹章 1d28
|
||||||
|
journal roll sigils --tag standard # 按档次抽取
|
||||||
|
```
|
||||||
|
|
||||||
|
**法术(spells):** 撒下、抛出或摄入至少一根白垩 → 念诵言辞 → 承受 1 点压力 →
|
||||||
|
进行一次**心灵检定**。失败则再承受 1 点压力并在 `mishaps` 表上投掷 1d10。大成功
|
||||||
|
视为额外多用了一根白垩。没有智齿时所有掷骰带劣势。每额外支付一次该法术的白垩
|
||||||
|
消耗,可选择一项:目标数翻倍 / 射程延长一段 / 持续时间翻倍。
|
||||||
|
|
||||||
|
学习新法术需要老师或文献,并做一次心智检定;失败则施放出该法术并在 `mishaps` 上
|
||||||
|
投掷,且必须等一周才能再尝试。
|
||||||
|
|
||||||
|
```
|
||||||
|
journal spell # 随机法术 1d27
|
||||||
|
journal roll spells --tag chalk-2 # 按白垩消耗抽法术
|
||||||
|
journal mishap # 施法失误 1d10(每次失误年龄 +1)
|
||||||
|
```
|
||||||
|
|
||||||
|
## NPC、暴力与士气
|
||||||
|
|
||||||
|
NPC 用单一的**本能 (Instinct, I)** 代替属性与豁免:GM 掷低于本能即 NPC 成功。NPC
|
||||||
|
每 10 点伤害获得 1 点创伤。NPC/生物受到第 2 点创伤后,掷 `morale` 表(人类/非人类
|
||||||
|
行为不同)。
|
||||||
|
|
||||||
|
**攻击大多自动命中。** 困难的近战攻击做一次力量检定;困难的远程攻击做一次速度
|
||||||
|
检定。一回合最多两个行动,若做两个,其中一个必须是移动。常见的困难条件:手无寸铁、
|
||||||
|
对方也持近战武器、避免误伤盟友、能见度低、超出武器射程、试图给人留下深刻印象。
|
||||||
|
|
||||||
|
```
|
||||||
|
journal roll encounters # 野外遭遇(本包暂代设定书的生态群系遭遇表)
|
||||||
|
journal roll morale
|
||||||
|
```
|
||||||
|
|
||||||
|
## 六角格探索(每 24 小时)
|
||||||
|
|
||||||
|
1. 消耗 1 份口粮,否则每人 2 伤害 + 2 压力。
|
||||||
|
2. 采取 **3 次团队行动**:旅行 / 狩猎与采集 / 休息。
|
||||||
|
3. 掷天气。
|
||||||
|
4. 掷遭遇(每天一次;NPC 态度不确定时另掷士气/情绪)。
|
||||||
|
|
||||||
|
- **旅行速度:** 步行 1 格;驮鸽或漫游车 2 格;扑翼机或驳船 5 格。携带 3 份以上
|
||||||
|
口粮时速度减半(每格 2 次旅行行动)。除非走桥、船只或飞行器,否则过河额外多花
|
||||||
|
1 次旅行行动。
|
||||||
|
- **迷失检定:** 每次旅行由 GM 掷 1d10,掷出 10 就迷路;移动结束在一个随机的相邻
|
||||||
|
六角格(掷 1d5,排除起点与目标格)。
|
||||||
|
- **狩猎与采集:** 在「单日口粮 / 优质饮食 / 安全休息点」中选两项并掷,之后更新地图
|
||||||
|
标记(不常搜寻的区域更容易迷路)。
|
||||||
|
- **休息:** 全队 -2 压力;在安全地点可进一步减压(见上)。
|
||||||
|
|
||||||
|
```
|
||||||
|
journal roll weather # 本包暂代设定书的天气表
|
||||||
|
```
|
||||||
|
|
||||||
|
## 单人与本工作台
|
||||||
|
|
||||||
|
- 关于**世界**的是非问题仍用 d6 神谕:`journal oracle "…?" --complicate`。
|
||||||
|
- 关于**PC 能力**的风险行动用本游戏的 d100 低掷:`journal test <目标值>`。
|
||||||
|
- 需要内容时掷火花表:`journal roll sparks`、`journal roll find`、`journal roll trinkets`。
|
||||||
|
- 不要在战役文件里写对话或机制细节之外的世界真相;秘密进 `gm/`。
|
||||||
|
|
||||||
|
## 参考表格(`tables/`)
|
||||||
|
|
||||||
|
| 表 | 何时用 |
|
||||||
|
| :--- | :--- |
|
||||||
|
| `sparks` | 需要场景/线索/地点灵感 |
|
||||||
|
| `complication-themes` | `journal oracle --complicate` 的转折 |
|
||||||
|
| `weather` | 每天开始(本包撰写,暂代设定书天气表) |
|
||||||
|
| `encounters` | 野外遭遇(本包撰写,暂代设定书生态群系表) |
|
||||||
|
| `panics` | `journal panic` 失败后 |
|
||||||
|
| `traumas` / `curses` | 受到创伤 / 首次死亡回归 |
|
||||||
|
| `mishaps` | 纹章或法术失败 |
|
||||||
|
| `spores` | 队伍拾获或使用孢子 |
|
||||||
|
| `morale` | NPC 第 2 点创伤后 |
|
||||||
|
| `cicada-reactions` | 巨蝉受威胁 / 嗅到白垩 / 弄湿 / 被强光致盲时 |
|
||||||
|
| `doves` | 生成一只驮鸽 |
|
||||||
|
| `sigils` / `spells` | 纹章 / 法术(含白垩消耗与后遗症) |
|
||||||
|
| `names` / `aliases` | 姓名与绰号 |
|
||||||
|
| `find` | 搜刮发现(小型 / 中型 / 大型) |
|
||||||
|
| `gear` | 1d100 旅行物品 |
|
||||||
|
| `trinkets` | 建卡时的随身物 |
|
||||||
|
| `bean-barge-encounters` / `bean-barge-ship-parts` | 入门冒险《豆子驳船的最后航行》 |
|
||||||
|
|
||||||
|
## 指令
|
||||||
|
|
||||||
|
```
|
||||||
|
journal background # 掷一个职业
|
||||||
|
journal loadout <职业 id> # 掷该职业的起因与起始装备
|
||||||
|
journal character # 生成完整 PC(含可粘贴的 frontmatter)
|
||||||
|
journal sigil | spell | mishap # 纹章 / 法术 / 施法失误
|
||||||
|
journal panic <压力> # 恐慌检定
|
||||||
|
journal test <目标值> [--advantage] [--disadvantage] [--label <名称>]
|
||||||
|
journal roll <表> [--tag <标签>] [--count <n>]
|
||||||
|
```
|
||||||
|
|
||||||
|
## PC 卡
|
||||||
|
|
||||||
|
形状见 `characters/README.md`:`stats`(心智/心灵/力量/速度)、`saves`(现实/恐惧/躯体)、
|
||||||
|
`age`、`background`、`stress`(0–10)、`tracks.harm`(0–10)与 `tracks.wounds`(0–3)。
|
||||||
|
改数值时同时更新 frontmatter 与会话日志的 `State` 行。
|
||||||
|
|
||||||
|
## 出处
|
||||||
|
|
||||||
|
`rules/` 六章是核心规则书的逐章转录(清理了原书的交互式标记)。所有可掷的表都已移入
|
||||||
|
`tables/` 与 `characters/`,正文只保留指向对应 CSV 的引用,因此 CSV 是唯一的真实来源;
|
||||||
|
唯一留在正文里的是不含骰子范围的参考图表(第 6 章的武器、护甲、掩体、载具、同伴)与
|
||||||
|
建卡用的年龄表。
|
||||||
|
|
||||||
|
各章:
|
||||||
|
|
||||||
|
- `01-world.md` — 余世、居民与巨蝉
|
||||||
|
- `02-character-creation.md` — 建卡、职业、技能、姓名
|
||||||
|
- `03-core-rules.md` — 检定、压力、恐慌、暴力、探索
|
||||||
|
- `04-sigils-and-magic.md` — 纹章与法术全表
|
||||||
|
- `05-bean-barge.md` — 入门冒险《豆子驳船的最后航行》(GM 材料)
|
||||||
|
- `06-appendix.md` — 词汇表与参考表(武器、护甲、掩体、载具、同伴)
|
||||||
|
|
||||||
|
`weather`、`encounters` 两表由本包撰写,用来替代设定书《巨蝉之地》中的对应表;
|
||||||
|
`sparks` 与 `complication-themes` 是本包自拟的通用表。
|
||||||
@@ -0,0 +1,276 @@
|
|||||||
|
import fs from 'node:fs';
|
||||||
|
import path from 'node:path';
|
||||||
|
import { fileURLToPath } from 'node:url';
|
||||||
|
import { parseTable, rollExpr, rollTable, rollDie } from '@solo/oracle';
|
||||||
|
|
||||||
|
const HERE = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
|
||||||
|
/** The four playable 职业, keyed by the tag on characters/backgrounds.csv. */
|
||||||
|
const CLASSES = {
|
||||||
|
sellsword: {
|
||||||
|
name: '佣兵',
|
||||||
|
saves: { 躯体: 30 },
|
||||||
|
skills: '刀剑 或 火器、街头智慧,另选任意 2 项技能',
|
||||||
|
state: '当你附近的盟友看到你恐慌时,他们必须进行恐惧豁免,否则也会恐慌。',
|
||||||
|
},
|
||||||
|
lordschild: {
|
||||||
|
name: '领主裔',
|
||||||
|
saves: { 恐惧: 40, 现实: -10 },
|
||||||
|
skills: '决斗、礼仪,另选任意 2 项技能',
|
||||||
|
state: '你令人感到不安;你附近的盟友在进行恐惧豁免时具有劣势。',
|
||||||
|
},
|
||||||
|
mage: {
|
||||||
|
name: '魔法师',
|
||||||
|
saves: { 现实: 20 },
|
||||||
|
skills: '神秘学、施法,另选任意 2 项技能',
|
||||||
|
state: '当你未通过现实豁免时,你附近的盟友承受 1 点压力。',
|
||||||
|
forbiddenAge: '老年',
|
||||||
|
},
|
||||||
|
courier: {
|
||||||
|
name: '信使',
|
||||||
|
saves: { 现实: 10, 恐惧: 10, 躯体: 10 },
|
||||||
|
skills: '搜刮、修补工匠,另选任意 2 项技能',
|
||||||
|
state: '你见多识广:每场游戏一次,你可以带着优势进行任意一次属性检定或豁免检定。',
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
const AGES = [
|
||||||
|
{ min: 1, max: 3, name: '青少年', mods: { 心灵: 20, 心智: -10 }, note: '' },
|
||||||
|
{ min: 4, max: 7, name: '成年', mods: { 速度: 20, 心灵: -10 }, note: '' },
|
||||||
|
{ min: 8, max: 9, name: '老年', mods: { 心智: 20, 力量: -10 }, note: '没有老年的魔法师。' },
|
||||||
|
{
|
||||||
|
min: 10,
|
||||||
|
max: 10,
|
||||||
|
name: '换躯者',
|
||||||
|
mods: { 力量: 30, 速度: -10 },
|
||||||
|
note: '获得法术「不完美的躯体转移」;换躯者不能被诅咒。',
|
||||||
|
},
|
||||||
|
];
|
||||||
|
|
||||||
|
function gameDir(ctx) {
|
||||||
|
if (!ctx.game) {
|
||||||
|
throw new Error('Command needs the cloud-empress game; pass --campaign <name> or --game cloud-empress');
|
||||||
|
}
|
||||||
|
return ctx.game.dir;
|
||||||
|
}
|
||||||
|
|
||||||
|
function readCsv(file) {
|
||||||
|
return parseTable(fs.readFileSync(file, 'utf8'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function characterTable(ctx, file) {
|
||||||
|
return readCsv(path.join(gameDir(ctx), 'characters', file));
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Roll one entry and print it in the CLI's standard shape. */
|
||||||
|
function printRoll(prefix, entries) {
|
||||||
|
const { roll, entry } = rollTable(entries);
|
||||||
|
const tags = entry.tags.length ? ` [${entry.tags.join(', ')}]` : '';
|
||||||
|
const label = roll === null ? 'tagged' : `roll ${roll}`;
|
||||||
|
console.log(`${prefix} ${label} → "${entry.text}"${tags}`);
|
||||||
|
return entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
function rollOn(ctx, table, prefix = table) {
|
||||||
|
const { entries } = ctx.findTable(table);
|
||||||
|
return printRoll(prefix, entries);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Draw one entry from a table without printing it. */
|
||||||
|
function draw(ctx, table) {
|
||||||
|
const { entries } = ctx.findTable(table);
|
||||||
|
return rollTable(entries).entry;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** 1d100 read as two d10; 00 reads as 100. */
|
||||||
|
function rollD100() {
|
||||||
|
const tens = rollDie(10) - 1;
|
||||||
|
const ones = rollDie(10) - 1;
|
||||||
|
return { tens, ones, value: tens * 10 + ones, doubles: tens === ones };
|
||||||
|
}
|
||||||
|
|
||||||
|
function showD100(r) {
|
||||||
|
const display = r.value === 0 ? '100' : String(r.value).padStart(2, '0');
|
||||||
|
return `${display}(${r.tens},${r.ones})`;
|
||||||
|
}
|
||||||
|
|
||||||
|
function flagCount(value) {
|
||||||
|
if (value === undefined) return 0;
|
||||||
|
if (value === true) return 1;
|
||||||
|
const n = Number(value);
|
||||||
|
return Number.isFinite(n) && n > 0 ? n : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
function background(args, ctx) {
|
||||||
|
printRoll('background', characterTable(ctx, 'backgrounds.csv'));
|
||||||
|
}
|
||||||
|
|
||||||
|
function loadout(args, ctx) {
|
||||||
|
const key = args.positional[0];
|
||||||
|
if (!key || !CLASSES[key]) {
|
||||||
|
throw new Error(`Usage: journal loadout <${Object.keys(CLASSES).join('|')}>`);
|
||||||
|
}
|
||||||
|
printRoll(`loadout ${key}`, characterTable(ctx, `${key}.csv`));
|
||||||
|
}
|
||||||
|
|
||||||
|
function character(args, ctx) {
|
||||||
|
const baseStats = {};
|
||||||
|
for (const stat of ['心智', '心灵', '力量', '速度']) baseStats[stat] = rollExpr('2d10+20').total;
|
||||||
|
|
||||||
|
const bgEntry = rollTable(characterTable(ctx, 'backgrounds.csv')).entry;
|
||||||
|
const bgId = bgEntry.tags[0];
|
||||||
|
const klass = CLASSES[bgId];
|
||||||
|
|
||||||
|
let ageRoll;
|
||||||
|
let age;
|
||||||
|
do {
|
||||||
|
ageRoll = rollDie(10);
|
||||||
|
age = AGES.find((a) => ageRoll >= a.min && ageRoll <= a.max);
|
||||||
|
} while (klass.forbiddenAge === age.name);
|
||||||
|
|
||||||
|
const stats = { ...baseStats };
|
||||||
|
for (const [key, value] of Object.entries(age.mods)) stats[key] += value;
|
||||||
|
|
||||||
|
const saves = {};
|
||||||
|
for (const save of ['现实', '恐惧', '躯体']) saves[save] = rollExpr('1d10+20').total;
|
||||||
|
for (const [key, value] of Object.entries(klass.saves)) saves[key] += value;
|
||||||
|
|
||||||
|
const kit = rollTable(characterTable(ctx, `${bgId}.csv`)).entry;
|
||||||
|
const trinket = draw(ctx, 'trinkets');
|
||||||
|
const name = draw(ctx, 'names');
|
||||||
|
const alias = draw(ctx, 'aliases');
|
||||||
|
|
||||||
|
console.log('');
|
||||||
|
console.log(`background ${bgEntry.text}`);
|
||||||
|
console.log(`age roll ${ageRoll} → ${age.name}${age.note ? ` ${age.note}` : ''}`);
|
||||||
|
console.log(`stats ${Object.entries(stats).map(([k, v]) => `${k} ${v}`).join(' ')}`);
|
||||||
|
console.log(`saves ${Object.entries(saves).map(([k, v]) => `${k} ${v}`).join(' ')}`);
|
||||||
|
console.log(`skills ${klass.skills}`);
|
||||||
|
console.log(`class state ${klass.state}`);
|
||||||
|
console.log(`kit ${kit.text}`);
|
||||||
|
console.log(`trinket ${trinket.text}`);
|
||||||
|
console.log(`name ${name.text} alias ${alias.text}`);
|
||||||
|
|
||||||
|
console.log('');
|
||||||
|
console.log('PC sheet frontmatter:');
|
||||||
|
console.log('---');
|
||||||
|
console.log(`name: ${name.text}(${alias.text})`);
|
||||||
|
console.log('game: cloud-empress');
|
||||||
|
console.log('stats:');
|
||||||
|
for (const [key, value] of Object.entries(stats)) console.log(` ${key}: ${value}`);
|
||||||
|
console.log('saves:');
|
||||||
|
for (const [key, value] of Object.entries(saves)) console.log(` ${key}: ${value}`);
|
||||||
|
console.log(`age: ${age.name}`);
|
||||||
|
console.log(`background: ${klass.name}`);
|
||||||
|
console.log('stress: 0');
|
||||||
|
console.log('tracks:');
|
||||||
|
console.log(' harm: { value: 0, max: 10 }');
|
||||||
|
console.log(' wounds: { value: 0, max: 3 }');
|
||||||
|
console.log('conditions: []');
|
||||||
|
console.log('inventory: []');
|
||||||
|
console.log('---');
|
||||||
|
}
|
||||||
|
|
||||||
|
function sigil(args, ctx) {
|
||||||
|
rollOn(ctx, 'sigils');
|
||||||
|
}
|
||||||
|
|
||||||
|
function spell(args, ctx) {
|
||||||
|
rollOn(ctx, 'spells');
|
||||||
|
}
|
||||||
|
|
||||||
|
function mishap(args, ctx) {
|
||||||
|
rollOn(ctx, 'mishaps');
|
||||||
|
}
|
||||||
|
|
||||||
|
function panic(args, ctx) {
|
||||||
|
const stress = Number(args.positional[0]);
|
||||||
|
if (!Number.isInteger(stress)) throw new Error('Usage: journal panic <current-stress>');
|
||||||
|
|
||||||
|
const roll = rollDie(10);
|
||||||
|
if (roll > stress) {
|
||||||
|
console.log(`panic d10=${roll} > 压力 ${stress} → 成功,保持镇定`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { entries } = ctx.findTable('panics');
|
||||||
|
const entry = entries.find((e) => roll >= e.min && roll <= e.max);
|
||||||
|
console.log(`panic d10=${roll} ≤ 压力 ${stress} → 恐慌`);
|
||||||
|
console.log(` → ${entry.text}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
function test(args, ctx) {
|
||||||
|
const target = Number(args.positional[0]);
|
||||||
|
if (!Number.isFinite(target)) {
|
||||||
|
throw new Error('Usage: journal test <target> [--advantage[=n]] [--disadvantage[=n]] [--label <name>]');
|
||||||
|
}
|
||||||
|
|
||||||
|
const net = flagCount(args.flags.advantage) - flagCount(args.flags.disadvantage);
|
||||||
|
const label = typeof args.flags.label === 'string' ? `${args.flags.label} ` : '';
|
||||||
|
|
||||||
|
if (net >= 2) {
|
||||||
|
console.log(`test ${label}目标 ${target} → 自动成功(一个以上的优势)`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (net <= -2) {
|
||||||
|
console.log(`test ${label}目标 ${target} → 自动失败(一个以上的劣势),承受 1 点压力`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
const rolls = net === 0 ? [rollD100()] : [rollD100(), rollD100()];
|
||||||
|
const succeeded = (r) => r.value !== 0 && r.value < target;
|
||||||
|
const success = net > 0 ? rolls.some(succeeded) : net < 0 ? rolls.every(succeeded) : succeeded(rolls[0]);
|
||||||
|
const agreeing = rolls.filter((r) => succeeded(r) === success);
|
||||||
|
const repr = agreeing.find((r) => r.doubles) ?? agreeing[0] ?? rolls[0];
|
||||||
|
|
||||||
|
const shown = rolls.map(showD100).join(' | ');
|
||||||
|
console.log(`test ${label}目标 ${target} d100 ${shown} → ${success ? '成功' : '失败'}`);
|
||||||
|
|
||||||
|
if (repr.doubles) {
|
||||||
|
if (success) console.log(' 极值:大成功。');
|
||||||
|
else console.log(' 极值:大失败。另做一次恐慌检定。');
|
||||||
|
}
|
||||||
|
if (!success) console.log(' 承受 1 点压力。');
|
||||||
|
}
|
||||||
|
|
||||||
|
export default {
|
||||||
|
id: 'cloud-empress',
|
||||||
|
title: '云之女帝 Cloud Empress',
|
||||||
|
description:
|
||||||
|
'生态科学奇幻生存恐怖。d100 低掷检定、压力与恐慌、白垩魔法与骨皮纹章,在巨蝉统治的余世中旅行。',
|
||||||
|
rules: 'game.md',
|
||||||
|
commands: {
|
||||||
|
background: {
|
||||||
|
description: '掷一个职业(佣兵 / 领主裔 / 魔法师 / 信使)。',
|
||||||
|
run: background,
|
||||||
|
},
|
||||||
|
loadout: {
|
||||||
|
description: '掷某职业 1d10 的背景故事与起始装备:journal loadout <sellsword|lordschild|mage|courier>',
|
||||||
|
run: loadout,
|
||||||
|
},
|
||||||
|
character: {
|
||||||
|
description: '生成一名完整 PC:属性、豁免、年龄、职业、装备、随身物、姓名与绰号。',
|
||||||
|
run: character,
|
||||||
|
},
|
||||||
|
sigil: {
|
||||||
|
description: '掷一个随机纹章(1d28)。',
|
||||||
|
run: sigil,
|
||||||
|
},
|
||||||
|
spell: {
|
||||||
|
description: '掷一个随机法术(1d27)。',
|
||||||
|
run: spell,
|
||||||
|
},
|
||||||
|
mishap: {
|
||||||
|
description: '掷施法失误表(1d10)。',
|
||||||
|
run: mishap,
|
||||||
|
},
|
||||||
|
panic: {
|
||||||
|
description: '恐慌检定:journal panic <当前压力>,d10 大于压力即成功。',
|
||||||
|
run: panic,
|
||||||
|
},
|
||||||
|
test: {
|
||||||
|
description: '属性/豁免检定(低掷 d100):journal test <目标值> [--advantage[=n]] [--disadvantage[=n]] [--label <名称>]',
|
||||||
|
run: test,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "@solo/game-cloud-empress",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"private": true,
|
||||||
|
"type": "module",
|
||||||
|
"description": "云之女帝 (Cloud Empress) — 生态科学奇幻 survival horror: d100 under-roll checks, stress and panic, chalk magic, and bone-skin sigils.",
|
||||||
|
"main": "index.js",
|
||||||
|
"exports": {
|
||||||
|
".": "./index.js"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@solo/oracle": "workspace:*"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,222 @@
|
|||||||
|
# 《云之女帝™》生态科学奇幻角色扮演游戏
|
||||||
|
|
||||||
|
## 核心规则书
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**游戏、平面设计与排版** watt
|
||||||
|
**插画** pbbeta(封面及多页插图), Garin, imogen, Juan Gee, 以及 watt
|
||||||
|
**编辑与开发** Roz Leahy
|
||||||
|
**校对** Walton Wood
|
||||||
|
**额外游戏开发** Christian Sorrell
|
||||||
|
**敏感度编辑** Monroe Soto
|
||||||
|
**游戏测试员** Mary Helen Inskeep, Erica Young, Patrick Frazier, Noel Miller, Kat Miller-Frazier, Dan Frazier, Ashley Nolan, Anna Frazier, Zobot257, Zoe R., Other Jim, ChrisAir, Terry Herc, 以及 Jet McFin.
|
||||||
|
**特别鸣谢** A & D, Sean McCoy, 以及 Luke Gearing
|
||||||
|
**版权信息** 版权所有 2025 worlds by watt。未经事先书面同意禁止重新分发。允许复印或以其他方式复制以供个人使用。所有作者均保留其署名权。在任何情况下,此声明必须保持完整。
|
||||||
|
|
||||||
|
本产品基于由 Tuesday Knight Games 出版的《恐慌引擎》。《恐慌引擎》是 Tuesday Knight Games 的注册商标。保留所有权利。如需更多信息,请访问 www.tuesdayknightgames.com 或联系 contact@tuesdayknightgames.com。
|
||||||
|
|
||||||
|
美国印刷。第一版。ISBN 979-8-9891507-0-0
|
||||||
|
|
||||||
|
《云之女帝》写于达科他人民的祖传土地 Mni Sota MaKoce。达科他与阿尼什纳比人民的生命、土地和文化曾以殖民扩张和压迫的名义遭到摧毁。这些伤害至今仍未得到有意义的修复,甚至许多影响仍在持续。我们与倡导将原住民土地归还给原住民的各个美洲原住民族团结站在一起。
|
||||||
|
|
||||||
|
世上有很多种游戏,它们有着各种不同的目标。但《云之女帝》的制作初衷绝不包括以下几点:
|
||||||
|
- 将环境视为可供掠夺的客观存在
|
||||||
|
- 演绎权力幻想,尤其是暴力的幻想
|
||||||
|
- 贬低、羞辱、压迫或丑化其他生命
|
||||||
|
|
||||||
|
### 内容警告
|
||||||
|
《云之女帝:核心规则书》包含:巨型虫子、精神疾病、流血、截肢、军事占领、枪支暴力以及对昆虫的暴力。
|
||||||
|
《豆子驳船的最后航行》包含:巨型虫子、家庭虐待与暴力、精神疾病、流血、截肢以及对昆虫的暴力。
|
||||||
|
|
||||||
|
本书未使用任何生成式人工智能创作的艺术图像或文字。
|
||||||
|
|
||||||
|
worlds by watt 将捐出所有销售额的 1% 用于保护和恢复地球环境。
|
||||||
|
|
||||||
|
**角色卡及更多内容请访问 CloudEmpress.com**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 欢迎来到"余世"
|
||||||
|
|
||||||
|
这一切终究要追溯到那片被雾霾笼罩的美丽蓝天。还有什么真正重要的呢?那是一扇通往群星的窗户,却被我们古老的先祖用病态的苍白云层彻底封锁。自任何人记事起——或许已经过了一百代人甚至更久——天空的顶端便一直笼罩着毒云。很长一段时间里,风暴肆虐,庄稼枯萎,人们忍饥挨饿。美丽被抹去,生命被无度地剥削,只为满足那无可救药的贪婪成瘾。许多事物没能幸存下来。但也有许多活了下来。
|
||||||
|
|
||||||
|
我猜你可以说人类已经屈膝绝望。幸存者寥寥无几;一个村庄可能只有五个人,一支规模可观的武装力量也许还不到十几人。人类的进步像是个脊背佝偻、膝盖不灵便的老人,人类的野心也已被击退、蛰伏了一两个季节。
|
||||||
|
|
||||||
|
看看"低地荒野"就知道了。低地看起来并不像是一片荒野。那里的树林苍翠,湖水湛蓝,日落玫瑰般绚烂。真正致命的,是你看不见的东西。土壤、水源、空气,全都充斥着无形的毒素,在漫长的一生中慢慢将你掏空。低地的"农裔"终生伴随着奇怪的恶寒、剧烈的咳嗽和早逝的阴影。对农裔来说,这些病痛不过是人类境况的自然组成部分。他们依然在劳作,耕种着那些本该回归荒芜的田野。毕竟,荒野里的人和云端上的人都需要吃饭。
|
||||||
|
|
||||||
|
别被农裔们简单的生活骗了;低地荒野中流淌着深沉的力量。白垩,他们这么叫它。奇迹之灰、白色致幻剂、魔法的绝对实质。魔法师的技艺是在荒野中被发现的,这绝非巧合!每一顿饭、每一次呼吸、每一口从合拢的手心中喝下的水中,都有白垩的痕迹。农裔对施法者怀有一种混合着敬仰与厌恶的健康心态。
|
||||||
|
|
||||||
|
"云裔"大多觊觎这种力量。如果你给人们一个俯视他人的机会,用不了多久他们就会得寸进尺。云裔的领袖们为自己发明了一千种头衔,用厚重的珠宝装饰他们的斗篷,如今更是自诩为"领主裔"。他们统治着吊灯般的城市和古老的蒸汽网。曾经,有超过两打(24 座)城市悬挂在太空的锚点上。随着越来越多的城市坠落,领主裔们似乎越来越坚信自己的力量,他们的野心再次转向了低地荒野。
|
||||||
|
|
||||||
|
在"余世",时间和空间都是虚幻滑移的。道路和小径会随心所欲地滑动,公然违抗那些试图在地图上标记它们的人。倒霉的旅行者会滑入古老的废墟中。有时,可怕的东西会从缝隙中溜进来——那些最好不要谈论的平行现实的访客。每逢魔幻时刻(日暮时分),被萦绕的"徘徊灵"就会漂浮在地平线上,隐约可见。梦境与梦魇如同晚餐时不受欢迎的亲戚,跌跌撞撞地闯入白日。
|
||||||
|
|
||||||
|
这一切的中心是"巨蝉"。春季,它们从未知深处破土而出,以死者的骸骨为食。虔诚的僧侣和村民全年都在巨大的墓地里晾干尸体,作为和平的供品。每年夏天通常只能发现几百只巨蝉,但每隔一百年,"世纪虫群"就会出现。成千上万的巨蝉从泥土深处爬出,将仅存的一点文明结晶化为废墟。
|
||||||
|
|
||||||
|
> 这是你踏上旅途的年份,
|
||||||
|
> 这是世纪虫群破土而出的夏季,
|
||||||
|
> 这是女帝失踪的夏季,
|
||||||
|
> 这是冒险的夏季。
|
||||||
|
> 欢迎来到"余世"。
|
||||||
|
|
||||||
|
> 我母亲曾向我讲述一个古老民族的故事,
|
||||||
|
> 他们在力量和残忍方面无人能及。
|
||||||
|
> 在世界解体之前,
|
||||||
|
> 在巨蝉群出现之前,
|
||||||
|
> 在余世到来之前,
|
||||||
|
> 他们被称为"折磨者"。
|
||||||
|
> 为了终结他们的毁灭,世界将自身燃烧成一面镜子,把折磨者整个吞噬。
|
||||||
|
> 看到自己变成的模样,折磨者充满了厌恶,
|
||||||
|
> 但他们的厌恶只是助长了他们的饥饿。
|
||||||
|
> 在冒汗的拳头中,他们把指甲折断至血肉模糊的骨头——
|
||||||
|
> 掠夺着,索取着,逃向隐藏在乳白色天空背后的命运。
|
||||||
|
> 折磨者前往了群星,
|
||||||
|
> 而我们则被留在这个由巨蝉统治的世界,
|
||||||
|
> 在废墟中穿行。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 什么是《云之女帝》?
|
||||||
|
|
||||||
|
《云之女帝》是一个生态科学奇幻设定,将你置身于一个由巨大魔法巨蝉的模式所统治的世界中。在地球的精神废墟中寻找繁荣、生存与爱的方式,在那些抛弃地球的古老人类留下的垃圾中搜刮拾荒。
|
||||||
|
|
||||||
|
《云之女帝》拥有一个全面的世界设定,由这本核心规则书、设定补充书以及冒险杂志提供支持。
|
||||||
|
|
||||||
|
在《云之女帝》中,一名玩家将扮演"游戏守望者",作为这个世界及其中的非玩家角色发声。其他所有玩家则创建玩家角色,并在冒险过程中描述他们角色的行动。
|
||||||
|
|
||||||
|
#### 游玩时
|
||||||
|
|
||||||
|
- **多提问。** 游戏守望者的职责是如实回答有关环境和当前局势的问题。你不需要为此掷骰子。
|
||||||
|
- **谨慎旅行。** 《云之女帝》中的角色不是故事里的超级英雄。他们是在危险世界中穿行的(大致上)普通人。生存需要技巧、明智的决策以及很大一部分的运气。如果你的角色死了,创建一个新角色也很容易。
|
||||||
|
- **营造安全的环境。** 通过使用安全工具、定期确认状态以及共同设定边界,帮助你的游戏桌成为一个受人欢迎的空间。只需在网上简单搜索,就能找到许多关于营造包容性游戏环节的建议。
|
||||||
|
|
||||||
|
#### 准备以下物品
|
||||||
|
|
||||||
|
要游玩《云之女帝》,你需要:
|
||||||
|
- 本规则书。
|
||||||
|
- 每名 PC 各一份角色卡。
|
||||||
|
- 至少两枚十面骰子。
|
||||||
|
- 一份《云之女帝》六角格地图或冒险模组。
|
||||||
|
|
||||||
|
#### 投掷骰子
|
||||||
|
|
||||||
|
《云之女帝》主要使用十面骰子(d10)。在本书中,投掷一枚十面骰子会被写成 1d10。2d10 意味着你要投掷两枚十面骰子并将它们的结果相加,以此类推。d10 上的数字 0 代表 10。
|
||||||
|
|
||||||
|
《云之女帝》还经常要求你投掷 1d100(百分骰)。要投掷 1d100,投掷两枚十面骰子。查看结果,将其中一枚骰子读作十位数字,另一枚读作个位数字。
|
||||||
|
|
||||||
|
*示例:Kev 需要投掷 1d100。他投掷了两枚十面骰子并查看结果。左边的骰子是 0,右边的是 9。那么这次 1d100 的结果就是 9(如果掷出双 0,则结果为 100/00)。*
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 世界及其居民
|
||||||
|
|
||||||
|
#### 云之帝国的容器
|
||||||
|
|
||||||
|
在世纪虫群破土而出的那一年,在巨蝉之季,在蠕虫之月,就在侍女翻开床单却只发现一堆土豆的那一天,女帝失踪了。
|
||||||
|
|
||||||
|
女帝本绝不该消失。难道不是皇帝把她从下水道巷里提拔出来,付清了她母亲的欠款,并满足了她的一切需求吗?难道没有喂她最纯净的白垩来滋养她日益增长的天赋吗?当然,难道没有把她锁在一座坚不可摧的高塔里吗?
|
||||||
|
|
||||||
|
显然,这个女孩根本不在乎她的臣民。他们之间是有协议的!她的生命本该属于人民;她的自由是为了实现帝国梦想而做出的牺牲。
|
||||||
|
|
||||||
|
阿尔法城的领主裔们简直要气炸了。她的缺席是绝不可接受的,尤其是考虑到如今"如愿以偿"的恩赐正处于枯竭期。大家都知道,女帝需要时间来适应她的角色,但一年过去了,她除了回应寥寥无几的祈祷外,什么也没做成。朝臣们像紧张的驮鸽一样咯咯叫着、点着头。
|
||||||
|
|
||||||
|
一个声音划破了喋喋不休的议论。"农裔的背叛,"瞌睡的雷诺说道,"这是我们女帝失踪的唯一解释!"贵族们纷纷点头赞同。这必定是真相。
|
||||||
|
|
||||||
|
女帝被农裔叛乱分子绑架的说法,点燃了第 29 次远征军的引擎。很快,失踪的女帝似乎变得不如战争本身重要了。对名誉、荣耀、白垩和盛宴的渴望成为了头等大事。领主裔及其家族士兵们挤进他们的驳船,涌入低地以追逐他们的野心,试图将危险的梦想化为现实。
|
||||||
|
|
||||||
|
#### 夏季旅行队
|
||||||
|
|
||||||
|
尽管充满危险,夏季也是温暖而自由的。在低地荒野,夏季是大迁徙的时期。在经历了局促寒冷的严冬后,人们集体打着哈欠,伸展双腿,踏上旅途。
|
||||||
|
|
||||||
|
对旅行者来说,结伴同行度过一个季节绝非罕见。在任何一个夏天,人们都会放下分歧,结成不可思议的伙伴关系,只为在日落时分共享斯内克河的畅游,在彼此的唇间交换糖莓的甜美,或者组织一次对出土宫殿的探险。
|
||||||
|
|
||||||
|
这个夏天,佣兵、领主裔、魔法师和信使们依然在品味浆果的甜美和河水的清凉,但他们现在的旅行有了明确的目的。有堆积如山的白垩等待收集,有命运等待扭转。皇帝的远征军在身后留下一片火海,世纪虫群在土地上犁出深沟,没有留下任何死者的痕迹。每个旅行者走在路上,心中都怀揣着一个愚蠢的愿望——他们也许能偶然找到那位失踪的女帝。
|
||||||
|
|
||||||
|
如果世界真的需要被拯救,那个时代也早已过去,但仍有工作要做,还有比我们的双腿所能走过的更多的路等待探索。
|
||||||
|
|
||||||
|
#### 换躯者
|
||||||
|
|
||||||
|
被剥壳、去皮、剔骨,这些古老魔法的守护者通过将他们的思想转移到尸体中来突破自然的寿命极限。换躯者骑乘着一具又一具的尸体作为生存手段,将他们的思想移植到腐烂的灰白质上,并在这个过程中粉碎了他们自己的记忆。每一具新鲜尸体的脸上都被纹上了个人符号。如果没有标记,镜子里回望的脸孔就只不过是一个令人不安的陌生人。
|
||||||
|
|
||||||
|
远比现在的人更强大的古代魔法师们,开发了这种不朽之术。如今,这些方法大多在保密、政治斗争和战争中遗失了。那些在冲突中幸存下来的思想转移法术,与曾经无限的力量相比,不过是些粗钝的工具。
|
||||||
|
|
||||||
|
很少有换躯者能说清他们这样做已经有多久了,大多数人干脆完全忽略了过去。相反,换躯者将他们焦虑的目光投向前方,监视着当前宿主的腐烂情况,并倒数着直到下一次跳跃所剩的时间。
|
||||||
|
|
||||||
|
#### 滑界
|
||||||
|
|
||||||
|
很难向那些没有感受过它的人描述滑界。它就像是扑翼机遇到气流颠簸前你胃部下沉的感觉。滑界感觉就像是有什么东西把世界往一个方向拖拽,而你却往另一个方向坠落。
|
||||||
|
|
||||||
|
在滑界中,时间和空间是弯曲的。大多数滑界是几英里宽的奇异区域,出现得快消失得也快。你可能会看到死去的亲戚就在你面前吃晚餐,或者发现自己在七月中旬的齐脖深雪中。无法辨认的机器可能会从天空的裂缝中掉下来,却在落地前消失。你能指望的唯一常态是滑界总是嗡嗡作响。有时它嗡嗡作响就像一只蜜蜂,有时就像你头骨里的一整个蜂巢。如果你感觉到嗡嗡声,赶紧跑。
|
||||||
|
|
||||||
|
有些东西在滑界作用结束后仍然保持着"滑性"。来自其他现实的物体在被握住时可能会唤起萦绕的记忆。"空洞的徘徊灵"试图将自己锚定在来自他们那个时代的物体上。最可悲的是那些"滑性人",他们的运气永远被扭曲了。
|
||||||
|
|
||||||
|
#### 徘徊灵
|
||||||
|
|
||||||
|
死亡之后,有些生命以扭曲的形式保留了下来。徘徊灵在这个现实中制造出奇怪的漩涡、激流和回声般的涟漪。
|
||||||
|
|
||||||
|
徘徊灵注视着"余世",就像从井底往上看。他们在一个触觉迟钝的世界里冻僵并呜咽——遗物和白垩魔法是他们唯一的温暖来源。
|
||||||
|
|
||||||
|
一个徘徊灵在同行旅行者的队伍中能有什么用?
|
||||||
|
|
||||||
|
用处很多……前提是后者对与死者同行没有迷信心理。徘徊灵是出色的侦察兵,能漂浮在树林高空,穿过上锁的门,或潜入地下深处寻找小饰品、白垩或巨蝉。
|
||||||
|
|
||||||
|
当扮演一名徘徊灵时:
|
||||||
|
- 徘徊灵只有 1 点创伤。徘徊灵可以与物理世界互动,但他们不会受到常规手段的伤害,不过会被白垩伤害:纹章、法术、巨蝉、滑界物品和古代遗物。
|
||||||
|
- 徘徊灵被滑界物品和古代遗物磁性般地吸引。如果你没有携带一件滑界物品或古代遗物,那么当你在这些物品附近时,所有检定和豁免都会在劣势下进行。
|
||||||
|
- 徘徊灵无法真正休息。在每次日出时失去 2 点压力并治疗 2 点伤害,但你不能通过任何其他方式治疗或减少压力。
|
||||||
|
- 每天一次,徘徊灵可以通过一次成功的躯体豁免穿过门、地板和墙壁。
|
||||||
|
|
||||||
|
#### 驮鸽
|
||||||
|
|
||||||
|
在地面上,对于货物和旅行者来说,没有比不起眼的驮鸽更好的载具了。一半是信鸽,一半是马,驮鸽结合了耐力、忠诚和有限的飞行能力——对那些在巨蝉巡逻的地貌中穿行的人来说,这些都是无价的资产。
|
||||||
|
|
||||||
|
然而,像这样的表面观察并没有捕捉到这种鸟类的灵魂。如果有机会,信使们会滔滔不绝地谈论驮鸽独特的智慧、惊人的幽默感和紧密的伴侣关系。一个证明是,哪怕是愿意用自己的衬衫换一根白垩的信使,面对那些要求买下他们心爱驮鸽的丰厚报价,也会毫不理睬。一起旅行的鸟儿会成为家人。
|
||||||
|
|
||||||
|
**驮鸽生成器**
|
||||||
|
|
||||||
|
> **表:驮鸽生成器** — 数据在 `tables/doves.csv`。用 `journal roll doves` 掷一只驮鸽的颜色与性情。
|
||||||
|
|
||||||
|
#### 巨蝉
|
||||||
|
|
||||||
|
曾经,蝉是弱小且受惊的生物,像其他生物一样被人类的靴跟碾碎。现在,世界的蝉长到了 30 英尺长,浑身洋溢着魔法。地球上真正的虫子被称为巨蝉。夏天,它们成千上万地从田野和森林里爬出来,满足它们季节性的饥饿。低地的孩子们被教导要对巨蝉保持同样的敬畏,就像对待明火、雷暴或冰冻的河流一样。
|
||||||
|
|
||||||
|
虫群僧侣和信使堆砌成堆的骨骸作为安抚,以满足巨大虫子对骨头的饥渴。巨蝉只有在符合它们奇怪目的的时候才会故意干涉人类的生活。就像飞蛾扑火,巨蝉成群结队地涌向白垩能量发电机和死者的骨骸,贪婪地吞食里面甜美的白色物质。
|
||||||
|
|
||||||
|
在巨蝉出现之前曾有一个时代,但关于那个久远过去的清晰记忆在坍塌的隧道和废弃的设施中发霉。没有人真正记得了,但人们将文明的解体归咎于巨蝉。无知的人(数量众多)称巨蝉为无思想的野兽:甲壳状的自动机或自然现象。这些人该如何解释巨蝉对后代无微不至的照顾?如何解释它们施展的连人类都只能模仿的伟大魔法?如何解释它们盔甲上发现的萦绕不去的人脸?如何解释在巨蝉恩典下长得强壮茂盛的田野和森林?巨蝉隐藏着广阔的智慧之湖,其美丽与简单对微小的人类大脑来说几乎不可理解。只有傻瓜才会认为毁灭的力量等同于培育的力量。
|
||||||
|
|
||||||
|
#### 白垩
|
||||||
|
|
||||||
|
无论是在旅行者腰间的袋子里,在古代机器的发电机中,还是覆盖在巨蝉蜕下的甲壳上,白垩都缩短了寻求不可控力量的傲慢人类的寿命。在远古时代,折磨者从平行的现实中带来了白垩,以满足他们毁灭性的胃口。他们大部分古老的白垩机器早在很久以前就已沉寂,而剩下的那些则抗拒着所有的研究。
|
||||||
|
|
||||||
|
事实上,白垩是一种污染物。它沉重地沉积在土壤中,潜入草地和农作物中,并沉淀在鹿狗和人类的骨骼中。白垩沿着食物链向上攀爬,漂白骨架、使躯体枯萎,最后找到通往顶端的路,来到巨蝉那里。巨蝉从死人或动物的骨髓中提取白垩来喂养它们的精神力量。
|
||||||
|
|
||||||
|
人类从生长中的巨蝉那蜕下的甲壳上雕刻下残留的白垩。有时这种循环似乎是共生的。从巨蝉壳上砍下十几磅新鲜的白垩,就足以维持一个村庄一年的能源,或者让一个魔法师施法十年。原始的白垩被劈成大块,并在手持压榨机或固定高炉中进行超高温加热。杂质被熏掉,熔化的白垩被倒入小棍状的模具中。白垩棍更容易交易和使用,在遇到渴望白垩的巨蝉的第一时间,也更容易丢弃。
|
||||||
|
|
||||||
|
收集白垩绝非易事。每年夏天都有成打的魔法师、信使和佣兵死去,他们从危险的高处摔下,被愤怒的巨蝉吃掉,或是被竞争的白垩收集者杀死。每年,人们都会在天气变湿冷之前争先恐后地收集,因为在秋雨中白垩会变质。
|
||||||
|
|
||||||
|
#### 巨蝉生命周期
|
||||||
|
|
||||||
|
当谈到巨蝉时,人们很少能达成共识。警惕的农裔声称巨蝉是出土的史前祸害。虫群僧侣声称巨蝉给这个暴乱的世界带来了平衡和救赎。领主裔将巨蝉视为争夺同一领土的竞争对手。巨蝉生命周期的细节被神话和孩子们的睡前故事所修饰和掩盖。即使是终身专家,当被问及巨蝉冬天去哪了、它们为什么吃白垩,或者它们是如何呼唤滑界时,也只能无奈地摊开双手。
|
||||||
|
|
||||||
|
**巨蝉反应**
|
||||||
|
巨蝉优先事项:
|
||||||
|
1. 保护后代。
|
||||||
|
2. 吞食白垩。
|
||||||
|
3. 保持干燥。
|
||||||
|
|
||||||
|
> **表:巨蝉反应** — 数据在 `tables/cicada-reactions.csv`。用 `journal roll cicada-reactions` 掷 1d10,再按当前情境取对应的一列。
|
||||||
|
|
||||||
|
#### 云裔
|
||||||
|
|
||||||
|
他们是那些无法再背叛天空的人,因为如果他们这样做,他们就会坠落。
|
||||||
|
云裔以天空提供的东西为食;小鸟和老鼠构成了他们大部分的饭菜。抓不到的东西则是从粮仓区进口,或是在古老的培育槽里种植的。云裔用从云层中收集的干净水箱来计算他们的财富。
|
||||||
|
|
||||||
|
白天,他们的领主裔挥舞着古董刀剑,就像对待家庭成员一样珍视它们。晚上,他们的领主裔无休止地密谋,完善古老的毒药,炮制出无数荣誉徽记来赐予自己。云裔将自己围绕在帝国的梦想、刺骨的严寒和千辛万苦挣来的荣誉周围。
|
||||||
|
|
||||||
|
#### 农裔
|
||||||
|
|
||||||
|
他们是那些无法再背叛大地的人,因为如果他们这样做,巨蝉就会压碎他们的心脏,吃掉他们的骨头。
|
||||||
|
|
||||||
|
过去的遗物在低地荒野中随处可见。如果你能把它们挖出来,任何你可能想要或需要的东西早就被创造出来了。
|
||||||
|
|
||||||
|
农裔在周期中生活,冬天与新朋友和伴侣一起依偎躲藏,夏天则分散开来,成为新出现的巨蝉更小的目标,同等程度地兼顾仪式与实用性。他们将自己围绕在偶然的相遇、自由的爱情和如同泥土般古老的节日周围。
|
||||||
@@ -0,0 +1,91 @@
|
|||||||
|
# 第 2 章:角色创建
|
||||||
|
|
||||||
|
> 想跳过手动步骤,直接掷一张完整角色卡,就运行 `journal character`。本游戏的起始装备表与技能表也放在 `characters/` 目录。
|
||||||
|
|
||||||
|
### 角色创建
|
||||||
|
|
||||||
|
1. **确定你的属性。** 分别为以下四项属性投掷 2d10+20:心智、心灵、力量、速度。
|
||||||
|
2. **确定你的豁免。** 分别为以下三项豁免投掷 1d10+20:现实、恐惧和躯体。
|
||||||
|
3. **确定角色的年龄。** 投掷 1d10 并查阅下方的年龄表。你的年龄会影响你的属性以及你的角色可以选择什么职业。
|
||||||
|
4. **选择职业和技能。** 你的职业会影响你的豁免,并赋予你不同技能的使用权。每个职业都有一种独特的"职业状态",它会影响你和你周围的人在面对糟糕状况时的反应。
|
||||||
|
5. **投掷 1d10 来决定你职业的背景和装备。**
|
||||||
|
6. **投掷 1d100 来决定你还随身携带着什么。**
|
||||||
|
7. **最后,选择一个名字和一个绰号。** 书中提供了一份列表来帮助你。
|
||||||
|
8. **团队初始集体拥有 1 份口粮。** 推选一名玩家来记录整个队伍的口粮。
|
||||||
|
|
||||||
|
| 1d10 | 年龄 | 属性调整 |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| 1-3 | 青少年 | +20 心灵,-10 心智。 |
|
||||||
|
| 4-7 | 成年 | +20 速度,-10 心灵。 |
|
||||||
|
| 8-9 | 老年 | +20 心智,-10 力量。没有老年的魔法师。 |
|
||||||
|
| 10 | 换躯者 | +30 力量,-10 速度。获得法术"不完美的躯体转移"。换躯者不能被诅咒。 |
|
||||||
|
|
||||||
|
> **表:职业** — 数据在 `characters/backgrounds.csv`。用 `journal background` 掷一个职业,或用 `journal character` 一次生成整张角色卡。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 佣兵 (SELLSWORD)
|
||||||
|
|
||||||
|
在带扣、弹药带、刀剑和手枪的重压下,佣兵成了可消耗的廉价物。暴力是一个买方市场。夏天,你和其他五个佣兵站在广场上。雇主捏了捏你的二头肌。一位年老的农裔在将步枪签发给右边的人之前,满怀歉意地询问了你一个小时关于杀死巨蝉的经验。到了明年夏天,一位领主裔仅凭一个手势就雇佣了你,甚至连头都不回一下,更别提眼神交流了。你住在他们的居所,吃他们的食物,劈他们的柴,让他们感到安心,但你不是他们的亲族。对他们来说,你只是一件工具。
|
||||||
|
|
||||||
|
他们的仁慈会随着冬季粮食储备的减少而衰退,而你已经被打发到风雪中太多次了。吃饱肚子,有一个温暖的地方躺下,对大多数佣兵来说就足够了。但这对你来说足够吗?你是渴望财富,还是试图验证自己的实力?雄心勃勃的佣兵发了财却早早夭折,但最可悲的还是那些老手。过了全盛时期的战士只能在村庄的街道上为了晚饭而哀求。他们发誓自己挥舞刀剑的技术比只有他们一半岁数的战士还要聪明。"可能吧,可能吧。"你一边说着,一边把最后一块奶酪扔给他们。
|
||||||
|
|
||||||
|
> **表:佣兵起始装备** — 数据在 `characters/sellsword.csv`。用 `journal loadout sellsword` 掷。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 领主裔
|
||||||
|
|
||||||
|
你在云端的一座小庄园里长大,那里既花哨又拥挤。你的家族为了与众多竞争对手抗衡,不得不在走廊上部署着一小群不受信任的家族卫兵、佣兵和年幼的弟妹。你周围的人害怕你,这是有充分理由的。一个傲慢的领主裔对自己和其他所有人都是一种危险。你的家庭教师教授你法术、剑术和科学知识,但智慧是无法在图书馆里学到的。对领主裔说错一句话,可能意味着从云城的塔楼上长时间地坠落,为了荣誉而决斗,或者是被强征进管理不善的家族军队。
|
||||||
|
|
||||||
|
你在这条永无止境的继承人序列中竞争,只为成为一个一无所有的大领主。这种抚养方式让你变得无畏而愚蠢。世界上所有的奢侈品任你支配,而你所想到的只有吃、喝和战斗。注重地位的生活也是充满不确定性的生活;一旦停止攀爬,你就会立刻下滑。你踏上旅途,或许是为了提升自己的地位,或许是为了避免迫在眉睫的暗杀,又或许只是为了逃离一种虚荣的生活。
|
||||||
|
|
||||||
|
> **表:领主裔起始装备** — 数据在 `characters/lordschild.csv`。用 `journal loadout lordschild` 掷。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 魔法师
|
||||||
|
|
||||||
|
你的躯体握着解开现实枷锁的钥匙,但每一次转动都会磨损你的牙齿。世界上没有老年的魔法师。在一段时间内,你会光芒四射,甚至天下无敌。但你在衰退,没人能战胜白垩的侵蚀。用不了多久,你就会不复存在。不过,就目前而言,你还足够年轻!
|
||||||
|
|
||||||
|
世界祈求奇迹,而你就是奇迹的创造者。和所有魔法师一样,你出身于低地荒野的卑微背景。你的躯体与粉状的土壤紧密相连。魔法在你的心灵中孕育,在你的肺中诞生,由你的舌头和牙齿加以引导。你踏上旅途去发现伟大的真理,将你的力量推向极限,或者让世界变得更好。悲剧和希望在一个无形的支点上摇摇欲坠,而你正在观察自己的一根手指能否倾斜生命的标尺。
|
||||||
|
|
||||||
|
农裔村庄看到了你这门手艺的实际益处,召唤你来治疗疾病、培育长势不佳的农作物,并帮助人们在夏季的巨蝉风暴中生存。云裔城市和他们的领主则将你视为上流社会社交活动中必不可少的布景装饰。
|
||||||
|
|
||||||
|
> **表:魔法师起始装备** — 数据在 `characters/mage.csv`。用 `journal loadout mage` 掷。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### 信使
|
||||||
|
|
||||||
|
信使是一群见识过世界上最好与最坏一面的顽强旅行者。你踏上旅途,是为了运送世界的物资,领先于单调的生活一步,或是为了亲眼目睹世界的奥秘。村庄像对待名人一样迎接你,人们蜂拥而至,寻求八卦和交易。孩子们抱住你的腿,要求摸摸你的角或抚摸你的皮毛。信使通常最终都会被诅咒。
|
||||||
|
|
||||||
|
尽管有那么多欢乐,你的工作也伴随着悲伤。很多时候,当你到达空荡荡的村庄时,里面根本没有两季前曾在那里迎接过你的人。有时,人们只是搬走了;而其他人则遭遇了可怕的下场。你见过许多事,但道路仍在不断变化。道路让我们所有人都变成了傻瓜。
|
||||||
|
|
||||||
|
> **表:信使起始装备** — 数据在 `characters/courier.csv`。用 `journal loadout courier` 掷。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 你还随身携带着什么?
|
||||||
|
|
||||||
|
> **表:你还随身携带着什么** — 数据在 `tables/trinkets.csv`。用 `journal roll trinkets` 掷 1d100。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 技能
|
||||||
|
|
||||||
|
就像溪流经过千年雕琢出峡谷的侧壁,技能的发展是一个缓慢的过程。对大多数人来说,天赋是逐渐成长的,只有新丁才会认为自己无所不知。技能反映了一个角色在特定学科领域的专业知识、熟练程度或实践经验。任何角色都可以采取任何行动,无论是否拥有相应的技能,但如果你拥有正确的技能,你在掷骰时将具有优势。获得一项新技能通常需要几个月或几年的练习,通常还需要一位专注的老师。
|
||||||
|
|
||||||
|
> **表:技能** — 完整列表见 `characters/skills.md`;建卡时从其中挑选职业赋予的技能与任意 2 项其他技能。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 姓名与绰号
|
||||||
|
|
||||||
|
对许多人来说,他们的名字、性取向、性别和外貌就像他们本人一样随波漂泊。为什么要折断鸟儿的翅膀呢?但也有一些人将自己的身份紧紧握在手中,就像风中珍贵的种子。
|
||||||
|
|
||||||
|
在低地荒野,生命短暂且人烟稀少,有一个名通常就足够了。婴儿通常随照顾者和生父母的名字。有声望和目标的人会被周围的人赋予绰号和别名。"你是指'厚皮瓜'还是'三枪瓜'?"掷两次 1d100,组合一个名字与一个绰号。
|
||||||
|
|
||||||
|
> **表:姓名** — 数据在 `tables/names.csv`。用 `journal roll names` 掷 1d100;`--tag farm|cloud|common|ancient` 可按来源筛选。
|
||||||
|
|
||||||
|
> **表:绰号** — 数据在 `tables/aliases.csv`。用 `journal roll aliases` 掷 1d100。
|
||||||
@@ -0,0 +1,393 @@
|
|||||||
|
# 第 3 章:核心规则机制
|
||||||
|
|
||||||
|
### 规则与机制
|
||||||
|
|
||||||
|
#### 属性与豁免
|
||||||
|
|
||||||
|
一个人在平静时可能是很多样貌,而在危机中又会是截然不同的样貌。这两种版本都不是全部的真相。我们渐渐意识到我们的身体并不像我们想象的那样。我们的头脑和心灵也是如此。我们总是在最不该掉链子的时候犯错。犯错是人之常情。应当为没有变得更糟的危机而庆祝,并为我们崩溃时积攒所有能给予的宽恕。
|
||||||
|
|
||||||
|
你有四项**属性**,代表你在压力下的能力。它们是:
|
||||||
|
|
||||||
|
- **心智:** 你进行逻辑解谜、回忆事实以及使用纹章的能力。
|
||||||
|
- **心灵:** 你进行情感连接、沟通、施放法术以及直觉感知异界力量的能力。
|
||||||
|
- **力量:** 你进行举起、推挤、抓取、粉碎以及近战的能力。
|
||||||
|
- **速度:** 你进行奔跑、投掷、运用双手进行精细工作以及远程战斗的能力。
|
||||||
|
|
||||||
|
你有三项**豁免**,代表你在压力下忍受艰难困苦的能力。它们是:
|
||||||
|
|
||||||
|
- **现实:** 你抵抗虚假变为现实的能力。
|
||||||
|
- **恐惧:** 你面对可怕事件的能力。
|
||||||
|
- **躯体:** 你抵抗物理创伤、中毒和辐射的能力。
|
||||||
|
|
||||||
|
当你想要做一些有风险的事情时,进行一次**属性检定**。投掷 1d100 并试图掷出低于你最相关属性的值。如果掷出结果小于该属性,则成功;否则,你失败并承受 1 点压力。
|
||||||
|
|
||||||
|
当你试图避免或忍受不幸时,进行一次**豁免检定**。投掷 1d100 并试图掷出低于你最相关豁免的值。如果掷出结果小于该豁免,则成功;否则,你失败并承受 1 点压力。
|
||||||
|
|
||||||
|
#### 建议
|
||||||
|
|
||||||
|
- **每一次掷骰都会改变局势。** 每当角色进行一次掷骰(属性检定、豁免、恐慌检定等)时,无论成功与否,结果都应推动故事向前发展。一个角色永远不应该以同样的方式进行同样的检定两次。
|
||||||
|
*示例:Mel 的角色在试图打开一扇锁着的门时未能通过力量检定。作为她检定失败的后果,门把手现在坏了,PC 们必须找到另一条进入大楼的路。*
|
||||||
|
- **只有在风险很高时才掷骰。** 把掷骰子留给那些可能非常顺利或可能变得非常糟糕的大场面。如果一项任务没有任何相关风险,那么 PC 们应该自动成功。如果一项行动实际上是不可能的,或者超出了角色的能力范围,他们就是做不到,如果硬要尝试就会失败。
|
||||||
|
|
||||||
|
#### 大成功与大失败(极值)
|
||||||
|
|
||||||
|
当掷出双倍数字(即两个骰子上的数字相同;例如 33 或 77)时,结果为"极值"结果。如果检定结果是成功,这就是一次**大成功**。如果检定结果是失败,这就是一次**大失败**。
|
||||||
|
|
||||||
|
游戏守望者将从叙事角度解释极值结果,使事件的结果变得特别幸运或特别具灾难性。掷出大失败还会导致该 PC 进行一次恐慌检定。
|
||||||
|
|
||||||
|
#### 优势与劣势
|
||||||
|
|
||||||
|
带着优势或劣势掷骰,意味着投掷两次骰子,并分别保留最好或最坏的结果。当你使用相关技能、实施巧妙的计划,或经历极大有利于你的条件时,获得**优势**。当你做一些特别危险的事情、行事仓促,或经历极大不利于你的条件时,获得**劣势**。
|
||||||
|
|
||||||
|
游戏守望者通常根据具体情况给予优势和劣势。作为玩家,你总是可以提出为什么你的角色在某种情况下可能具有优势或劣势的理由。在某些情况下,一个 PC 可能会有多个因素影响特定的检定。在这些情况下,一个优势和一个劣势会一比一地相互抵消。如果你同时获得一个以上的优势,结果自动判定为成功。如果你同时获得一个以上的劣势,结果自动判定为失败。
|
||||||
|
|
||||||
|
#### 距离范围
|
||||||
|
|
||||||
|
角色与物体之间的距离通过抽象的"距离范围段"来记录。
|
||||||
|
|
||||||
|
- **相邻:** 基本上伸手可及。大约 1-5 英尺远。
|
||||||
|
- **近处:** 你可以用棍子戳到他们。你可以在几秒钟内跑到他们面前。大约 10-20 英尺远。
|
||||||
|
- **远距离:** 你能听到他们大喊。你可以在一回合内到达他们那里。大约 30-150 英尺远。
|
||||||
|
- **极远距离:** 你能看到他们。他们离得很远;可能需要花点时间才能到达他们那里。200 英尺或更远。
|
||||||
|
|
||||||
|
所有远程武器如果进行一次困难的远程攻击检定,可以射击比其最大射程远 1 个距离段的目标;如果带着劣势进行一次困难的远程攻击检定,则可以射击比其最大射程远 2 个距离段的目标。
|
||||||
|
|
||||||
|
#### 压力
|
||||||
|
|
||||||
|
路途并非易事。你每走一步,都会磨损你在清晨洗漱完毕、穿戴整齐之前穿上的那种无形的精神护甲。道路一口一口地侵蚀着你的韧性。在余世旅行太久是让人精神崩溃的温床。慢慢来。把你的头脑当成你的第三只手来对待。把你的身体当成眼球来爱护。当你精疲力竭时,转身原路返回吧。
|
||||||
|
|
||||||
|
**压力** 点数代表你的角色在冒险过程中积累的消极或压倒性的想法与感受。你的角色拥有的压力越多,在危险情况下恐慌的可能性就越大。
|
||||||
|
|
||||||
|
角色在创建时以 0 点压力开始,最高可拥有 10 点压力。由于某些游戏效果,角色的最低压力值可能会增加。在你的角色卡上记录你承受的压力。
|
||||||
|
|
||||||
|
如果你已经达到 10 点压力,并且本应再承受 1 点压力,请改为进行一次恐慌检定。
|
||||||
|
|
||||||
|
**在以下情况时你承受 1 点压力:**
|
||||||
|
|
||||||
|
- 你未能通过一项属性检定或豁免。
|
||||||
|
- 你拔出武器。
|
||||||
|
- 有人向你拔出武器。
|
||||||
|
- 你造成了可怕的创伤。
|
||||||
|
- 你杀死了你不需要吃掉的东西。
|
||||||
|
- 你受到了创伤。
|
||||||
|
- 你施放了一个法术。
|
||||||
|
- 你面对陌生或可怕的实体。
|
||||||
|
|
||||||
|
#### 恐慌
|
||||||
|
|
||||||
|
地板裂开,露出了一千只闪闪发光的巨蝉眼睛。有人开了火,引得六千条腿嘎哒作响。Lucen 的理智防线崩溃了,她拔腿就跑。她无视了那些呼喊声。他们喊她的名字。他们呼救。但她已经没有名字,没有救助,只有恐惧和狂奔的脚步。她穿过塑钢门,再也没有回头。
|
||||||
|
|
||||||
|
落荒而逃并不丢人。人们说,我们中最软弱的人往往活得最久,哪怕那些被抛下的人的腐烂面孔会萦绕在他们的梦中。我们的大脑本来就不适合我们在余世中所必须经历的这种生活方式。
|
||||||
|
|
||||||
|
恐慌代表了面对危险和积累压力时不可预测的后果。当发生特别可怕、危险或令人惊讶的事情时,进行一次恐慌检定。
|
||||||
|
|
||||||
|
**在以下情况时进行一次恐慌检定:**
|
||||||
|
|
||||||
|
- 你掷出了大失败。
|
||||||
|
- 你看到盟友死亡。
|
||||||
|
- 你目睹不止一个盟友恐慌。
|
||||||
|
- 你经历了毁灭性的挫折或损失。
|
||||||
|
- 你看到了可怕的创伤或难以想象的恐怖。
|
||||||
|
|
||||||
|
要进行恐慌检定,投掷 1d10。如果结果大于你当前的压力,你成功了。否则,按掷出的数字查阅 `tables/panics.csv`(`journal roll panics`)。
|
||||||
|
|
||||||
|
> **表:恐慌结果** — 数据在 `tables/panics.csv`。用 `journal roll panics` 掷(`journal panic <当前压力>` 会直接判定并给出结果)。
|
||||||
|
|
||||||
|
#### 休息
|
||||||
|
|
||||||
|
篝火噼啪作响,肚子填饱了,旅行队伍伴着吉他拨动的琴弦歌唱。有那么一瞬间,所有的失败都被遗忘,明天注定要面对的艰难困苦也被抛之脑后。为什么不能永远这样呢?时间无论你数不数着,都在滴答作响。
|
||||||
|
|
||||||
|
压力可以通过休息、放松和满足身心需求来缓解。这些效果是累加的。每当队伍停下来休息 4-6 小时,每位队员减轻 2 点压力。
|
||||||
|
|
||||||
|
**在安全地点休息时,只要你做了以下事情,就能额外减轻 2 点压力:**
|
||||||
|
|
||||||
|
- 安稳地睡了一整夜。
|
||||||
|
- 分享了发自内心或引人入胜的谈话。
|
||||||
|
- 吃了一顿美味的饭菜。
|
||||||
|
- 在大自然中度过了宁静的一小时。
|
||||||
|
|
||||||
|
**休息的后果:**
|
||||||
|
|
||||||
|
休息时间是发展你角色的好机会。然而,也有需要权衡的代价。当你休息时,你可能会经历以下一个或多个后果:
|
||||||
|
|
||||||
|
- 你的食物储备减少了。
|
||||||
|
- 你的竞争对手朝着目标取得了进展。
|
||||||
|
- 敌人的计划推进了。
|
||||||
|
- 游戏守望者掷出了一次遭遇,你们遭到了伏击。
|
||||||
|
|
||||||
|
#### 食物与饮水
|
||||||
|
|
||||||
|
有时候,你的身体感觉就像一台机器,迈出下一步,然后再迈出下一步。你大口吞下干巴巴的土豆、没加调料的豆子和温水,来为你内部引擎的关键功能提供燃料。一份"单日口粮"代表维持旅行队 24 小时所需的所有食物、饮水和基本必需品。这些补给品并不光鲜甚至也不美味,但它们能让身体保持运转。由一名玩家在他们的角色卡上记录队伍的口粮。
|
||||||
|
|
||||||
|
一份"优质饮食"相当于一个人的丰盛一餐。十份优质饮食可以转换为一份单日口粮。
|
||||||
|
|
||||||
|
在每天开始时,旅行队会消耗 1 份单日口粮,除非所有 PC 决定当天放弃进食和饮水。每当旅行队在开始新的一天时没有消耗单日口粮,每位队员都会因饥饿承受 2 点压力和 2 点伤害。
|
||||||
|
|
||||||
|
#### 孢子
|
||||||
|
|
||||||
|
蘑菇。真菌。居住在黑暗中的食湿者。当其他一切都背弃了人类的事业时,孢子依然坚定不移。在潮湿地窖里培育的孢子成为了人类消费的支柱。经过几代人的努力,孢子簇被培育成睡眠剂、腐蚀性酸液、活体护甲等等。
|
||||||
|
|
||||||
|
孢子在接触水时会被激活,并在完全变干之前保持活性。孢子一旦使用,就不能重新包装或重复使用。
|
||||||
|
|
||||||
|
孢子通常被冷冻干燥保存在橘子大小的密封袋中。活性孢子每小时吸收一杯水。干燥的孢子必须被烧掉才能完全销毁。
|
||||||
|
|
||||||
|
在发明的边缘,流传着不祥的传言。每个季节都有更多的"孢子饲养员"失踪,几个月后人们常常在孢子地窖里发现他们变成了一堆白骨。孢子长出了注视的眼睛。孢子饲养员说这些眼睛是退化的器官,但孢子的虹膜却流露出一种悲哀的智慧。
|
||||||
|
|
||||||
|
> **表:孢子** — 数据在 `tables/spores.csv`。用 `journal roll spores` 掷 1d10。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 暴力
|
||||||
|
|
||||||
|
暴力就像向湖中投掷一块石头——一个简单的动作就能引起持续几代人的涟漪。
|
||||||
|
|
||||||
|
在余世,暴力是偶发、丑陋且通常一触即收的。去杀戮那些你不需要吃的东西是没有任何荣耀可言的。在《云之女帝》中,因为暴力极为致命,所以应尽量避免,但暴力冲突并不总是能够绕开。
|
||||||
|
|
||||||
|
**大多数攻击都会自动命中。**
|
||||||
|
|
||||||
|
在进行**困难的近战攻击**时,进行一次力量检定以成功击中你的目标。
|
||||||
|
|
||||||
|
以下情况近战攻击可能会很困难:
|
||||||
|
|
||||||
|
- 你手无寸铁。
|
||||||
|
- 你的目标同样挥舞着近战武器。
|
||||||
|
- 你试图避免击中附近的盟友。
|
||||||
|
|
||||||
|
在进行**困难的远程攻击**时,进行一次速度检定以成功击中你的目标。
|
||||||
|
|
||||||
|
以下情况远程攻击可能会很困难:
|
||||||
|
|
||||||
|
- 能见度低。
|
||||||
|
- 你的射击距离超出了武器的预期射程。
|
||||||
|
- 你试图避免击中附近的盟友。
|
||||||
|
- 你试图给某人留下深刻印象。
|
||||||
|
|
||||||
|
#### 暴力工具
|
||||||
|
|
||||||
|
当你手中握着武器时,要知道三件事:
|
||||||
|
|
||||||
|
第一,武器是撕裂血肉之物,是可怕的野兽。
|
||||||
|
第二,工匠可以把各种丑陋的东西做得优雅或巧妙。
|
||||||
|
第三,没有什么东西只有单一的用途或单一的含义。
|
||||||
|
|
||||||
|
武器的伤害值位于封底内页。
|
||||||
|
|
||||||
|
在暴力的一回合中,角色最多可以执行**两个行动**。如果一个角色执行两个行动,其中一个行动必须是移动行动。
|
||||||
|
|
||||||
|
**行动示例:**
|
||||||
|
|
||||||
|
- 移动。
|
||||||
|
- 攻击目标。
|
||||||
|
- 擒抱对手。
|
||||||
|
- 施放法术。
|
||||||
|
- 使用纹章。
|
||||||
|
- 为武器装填弹药。
|
||||||
|
- 开门。
|
||||||
|
|
||||||
|
#### 伤害与创伤
|
||||||
|
|
||||||
|
伤害代表角色避免受到物理损伤的能力。承受**伤害**代表你的角色速度减慢、疲劳,以及身上出现了瘀伤和割伤。
|
||||||
|
|
||||||
|
当攻击命中时,投掷该武器的伤害。目标承受等量的伤害。当你承受 10 点伤害时,清空你所有的伤害记录,承受 **1 点创伤(Wound)**,并在创伤表上投掷。当你承受第三个创伤时,你的角色就会死亡。
|
||||||
|
|
||||||
|
在旅行途中可以使用药膏或其他小型医疗处理来治疗伤害。角色必须通过长期医疗护理来治疗创伤。
|
||||||
|
|
||||||
|
接受常规医疗处理,角色每个月愈合 1 点创伤。使用注入白垩的医疗处理,角色每周愈合 1 点创伤。
|
||||||
|
|
||||||
|
**创伤表**
|
||||||
|
|
||||||
|
> **表:创伤** — 数据在 `tables/traumas.csv`。受到创伤时用 `journal roll traumas` 掷 1d10。
|
||||||
|
|
||||||
|
#### 护甲值 (AP)
|
||||||
|
|
||||||
|
衣物提供保护性的护甲值(AP)。你可以抵御所有小于你总 AP 的伤害。每当你承受等于或大于你 AP 的伤害时,你的护甲破碎,你承受等于两者差值的伤害。破损的护甲在修复之前不提供任何保护。
|
||||||
|
|
||||||
|
衣物 AP 值位于第 77 页。
|
||||||
|
|
||||||
|
#### 掩体
|
||||||
|
|
||||||
|
世界上到处都是可以躲藏的东西。掩体可以防止远程攻击,并在你躲在后面时提供 AP。要进行攻击,你必须离开掩体,直到你的下一个回合。
|
||||||
|
|
||||||
|
掩体 AP 值位于第 77 页。
|
||||||
|
|
||||||
|
#### 死亡与诅咒
|
||||||
|
|
||||||
|
隧道尽头没有光明。相反,宇宙是一条狭窄的走廊,连接着一百扇门。每一扇门后面都隐藏着一个平行的现实。当你死后,你不宁的心智会哭喊着寻求干预。偶尔,会有一扇门打开。你的一部分进去了。平行的那一部分你出来了。死亡被暂时忽略。你回到了这个世界,带着诅咒。
|
||||||
|
|
||||||
|
人们对被诅咒者的看法大相径庭。领主裔可能会雇佣被诅咒者作为宫廷新奇事物。农裔出于怜悯可能会请被诅咒者喝杯免费的酒。被诅咒者可能为了安全而聚在一起,也可能出于怨恨而自我孤立。
|
||||||
|
|
||||||
|
在你的角色第一次本该死亡时,你奇迹般地移除所有伤害和创伤。在诅咒表上投掷 1d10。如果这是你的角色第二次死亡,他们将从这个世界溜走,再也不会回来。
|
||||||
|
|
||||||
|
**诅咒**
|
||||||
|
|
||||||
|
> **表:诅咒** — 数据在 `tables/curses.csv`。首次本该死亡时用 `journal roll curses` 掷 1d10。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 角色成长
|
||||||
|
|
||||||
|
有时候人会变,有时候人却永远不变。区别是什么?当然是别人的善意。在余世里,能坐在火炉旁或躲在风雪外微笑着聊天,意味着很多。最简单的层面,即便是尚未完全开花的友谊,也会让旅行者变得更好。
|
||||||
|
|
||||||
|
当改变到来时,改善是滴点渗出的。就像在雾中行走一样,可能要走上好几英里,才会注意到脸颊上积聚的清凉湿气。
|
||||||
|
|
||||||
|
最后的反思是,成长的美好必须与其意图相匹配,因为瘟疫不也是惊人地在扩散成长吗?才华必须由美德引导,否则就会在野心、愚蠢和流血中被挥霍一空。
|
||||||
|
|
||||||
|
每当你在一个安全的空间里与一个陌生但友好的角色一起休息时,你失去的压力中最多有 4 点可以永久地加到你选择的一项属性或豁免上。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 负重
|
||||||
|
|
||||||
|
旅行者把他们的整个世界放在他们的驮鸽和他们的背上。每天早上整理背包,每天晚上卸下背包,寻找减轻负重的方法,只携带第二天旅程需要的东西。除了最铁石心肠的打包者,每个人都必定会带上一两件充满回忆的情感物品。
|
||||||
|
|
||||||
|
你有 10 个物品栏位用来装装备。大多数物品和装备各占用一个栏位。超大的物品不能装在背包里,需要车辆、驮鸽或独轮车。非常微小的物品被认为是"饰品"(例如:信件、珠宝、眼镜等),不占用装备栏位。同种类的物品,例如五根香蕉或六发弹药,可以装在同一个栏位里。你的装备总重量不应超过约 40 磅。重量超过 40 磅会要求你更频繁地停下来休息。
|
||||||
|
|
||||||
|
#### 装备
|
||||||
|
|
||||||
|
人们用他们拥有的东西来交换、讨价还价,以换取他们需要的东西。这里没有硬币、美元、支票或支付芯片,只有你的名字和你随身携带的东西。不可避免地,有野心的人会试图带回旧的代金券或铸造新的硬币,但即便是年轻人也持怀疑态度,因为他们见过太多宏大的计划化为尘土和白骨。
|
||||||
|
|
||||||
|
下面是各种常见旅行物品的分类,但并非一份详尽的清单。
|
||||||
|
|
||||||
|
**物品稀有度**
|
||||||
|
有些物品旅行者很容易找到,而另一些则很难。一些遗物和古代奇物可能稀有到只存在于歌曲的传唱和神话中。
|
||||||
|
稀有度 = 常见(C),不常见(U),稀有(R),和 神话(M)
|
||||||
|
|
||||||
|
> **表:旅行物品** — 数据在 `tables/gear.csv`。用 `journal roll gear` 掷 1d100。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 六角格探索规则
|
||||||
|
|
||||||
|
**每 24 小时进行以下结算:**
|
||||||
|
1. 消耗 1 份口粮(provision),否则队伍中每位成员承受 2 点伤害和 2 点压力。
|
||||||
|
2. 采取 3 次团队行动(旅行、狩猎与采集,或休息)。
|
||||||
|
3. 投掷 1d100 决定天气(参见《巨蝉之地》设定书的天气表)。
|
||||||
|
4. 投掷 1d100 决定遭遇(参见《巨蝉之地》生物群系遭遇表)。
|
||||||
|
|
||||||
|
#### 消耗口粮
|
||||||
|
在每天开始时,旅行队会消耗一份单日口粮。如果队伍决定当天放弃进食和饮水——无论是出于自愿还是因为口粮耗尽——每位成员都会承受 2 点压力和 2 点伤害。
|
||||||
|
|
||||||
|
#### 遭遇
|
||||||
|
每天一次,在当前生物群系的遭遇表上投掷 1d100。每当 NPC 对 PC 的态度不确定时,在 NPC 情绪表(见《巨蝉之地》设定书,封底内页)上进行投掷。
|
||||||
|
|
||||||
|
#### 旅行程序
|
||||||
|
1. **设定方向:** 玩家决定他们想要移动的方向。
|
||||||
|
2. **迷失检定:** 游戏守望者投掷 1d10;如果掷出 10,队伍迷路。
|
||||||
|
3. **移动:** PC 根据他们的旅行速度(见下文)移动到新的六角格。
|
||||||
|
4. **六角格描述:** 游戏守望者描述 PC 周围的环境。
|
||||||
|
5. **玩家采取行动并做出决定。**
|
||||||
|
|
||||||
|
#### 天气变化
|
||||||
|
每天一次,根据当前季节在《云之女帝》设定书的天气表上投掷 1d100。
|
||||||
|
|
||||||
|
#### 旅行速度
|
||||||
|
- 步行 = 每次"旅行"行动移动 1 个六角格
|
||||||
|
- 驮鸽/漫游车 = 每次"旅行"行动移动 2 个六角格
|
||||||
|
- 扑翼机/驳船 = 每次"旅行"行动移动 5 个六角格
|
||||||
|
|
||||||
|
**团队行动**
|
||||||
|
当玩家在六角格地图上移动时,PC 每天可以采取三次团队行动。每当他们遇到 NPC、生物或特定地点时,"放大"视角并更详细地进行角色扮演。可能的团队行动包括:
|
||||||
|
|
||||||
|
- **旅行:** 以队伍的旅行速度从一个六角格移动到另一个六角格。
|
||||||
|
- **狩猎与采集:** 在附近环境中寻找单日口粮、优质饮食,或寻找安全的地点休息(三项中选两项)。
|
||||||
|
- **休息:** 停下来歇息,队伍中的每位成员都能减轻他们的压力(第 39 页)。
|
||||||
|
|
||||||
|
除非队伍通过桥梁过河,或使用船只、飞行器,否则在六角格地图上穿过/横渡河流需要一次额外的"旅行"行动。
|
||||||
|
|
||||||
|
PC 携带的口粮数量会影响他们的旅行速度:
|
||||||
|
\[携带 3 份或以上口粮 = 1/2 旅行速度 \]*
|
||||||
|
*\*在 1/2 旅行速度下,从一个六角格移动到另一个六角格需要 2 次"旅行"行动。*
|
||||||
|
|
||||||
|
#### 迷路
|
||||||
|
当 PC 因未通过迷失检定而迷路时,他们的移动将结束在一个随机的相邻六角格中,该六角格既不是 PC 开始移动时的起点格,也不是他们原本打算到达的目标格(投掷 1d5 决定)。
|
||||||
|
|
||||||
|
#### 狩猎与采集
|
||||||
|
PC 在附近环境中搜索单日口粮、优质饮食或安全的休息地点。旅行队让游戏守望者在三个表中选择两个进行投掷。游戏守望者在相关生物群系的"狩猎与采集"表上投掷 2d10,以确定旅行队发现了什么。他们能找到的一些安全地点或优质食物代表了角色扮演的机会:那些能为前方的道路提供食物、庇护所或陪伴的人。
|
||||||
|
|
||||||
|
在执行一次"狩猎与采集"行动后,游戏守望者还会将地图标记更新放置在 PC 当前所在的地图位置上。
|
||||||
|
|
||||||
|
#### 地图标记
|
||||||
|
在进行"狩猎与采集"团队行动时,游戏守望者会在六角格地图上使用指示物或硬币标记 PC 的最后已知位置。如果不经常使用"狩猎与采集"行动搜寻确认该区域,PC 会更容易在旅行时偏离方向。
|
||||||
|
|
||||||
|
#### 休息
|
||||||
|
玩家从他们的旅行和经历中恢复过来。旅行队中的所有 PC 减轻 2 点压力。
|
||||||
|
|
||||||
|
在安全地点休息时,PC 可以享用优质饮食、进行性行为并获得良好的睡眠等,以进一步降低他们的压力(第 39 页)。
|
||||||
|
|
||||||
|
安全地点为队伍提供隐私和保护。它们通常有某种顶部遮挡,能避开窥视的眼睛,并提供遮风挡雨的掩护。岩层和洞穴等自然特征,以及小屋、桥梁或渡槽等建筑环境,都能成为安全地点。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 动物、盟友与敌人
|
||||||
|
|
||||||
|
非玩家角色(NPC)使用一个称为**本能(Instinct,I)**的单一数值来代替各项属性和豁免数值。当游戏守望者掷出低于他们的本能值时,NPC 即获成功。每当 PC 本应进行属性检定或豁免时,NPC 改为进行一次本能检定。与 PC 一样,所有 NPC 每承受 10 点伤害便获得 1 个创伤。
|
||||||
|
|
||||||
|
**NPC 士气 (NPC Morale)**
|
||||||
|
|
||||||
|
在 NPC 或生物受到他们的第二个创伤后,游戏守望者可以掷 `tables/morale.csv`(`journal roll morale`),以决定他们的行为:
|
||||||
|
|
||||||
|
> **表:NPC 士气** — 数据在 `tables/morale.csv`。NPC 或生物受到第 2 点创伤后用 `journal roll morale` 掷 1d10。
|
||||||
|
|
||||||
|
#### 云裔士兵
|
||||||
|
|
||||||
|
**本能:** 35 **护甲值 (AP):** 2 **创伤上限:** 3
|
||||||
|
|
||||||
|
战斗开始后 60 分钟,将有 2d10 名云裔士兵增援到达。
|
||||||
|
|
||||||
|
#### 云裔军官
|
||||||
|
|
||||||
|
在任何超过 5 人的云裔士兵小队中,都会有一名军官。
|
||||||
|
**特殊:** 投掷 1d10 来决定云裔军官是经验丰富的还是缺乏经验的。
|
||||||
|
|
||||||
|
- 1-5(经验丰富): **本能:** 60 **护甲值 (AP):** 5 **创伤上限:** 3
|
||||||
|
- 6-10(缺乏经验): **本能:** 20 **护甲值 (AP):** 5 **创伤上限:** 3
|
||||||
|
|
||||||
|
作为来自 18 个不同云城的各类军队拼凑体,云裔士兵很难作为一个有凝聚力的单位协同作战,经常成为内讧和自我破坏的牺牲品。
|
||||||
|
|
||||||
|
第 29 次远征军的武装力量由领主裔的家族卫兵和被强征的云裔混合而成。虽然第 29 次远征军声称其目的是寻找失踪的云之女帝,但云裔士兵经常在低地荒野中搜刮掠夺,以补充他们微薄的伙食和不断减少的军需品,同时也为了打发无聊的时间。
|
||||||
|
|
||||||
|
第 29 次远征军,就像整个云裔社会一样,遵循着严格、形式化的等级制度。不管能力如何,领主裔都是所有军事单位的默认领导者。每个领主裔会挑选一两名军官作为军事中层管理人员。挑选军官的标准各不相同,可能是挑选单位中最有经验的士兵,也可能是挑选领主裔的私人助理、酒友或秘密情人。
|
||||||
|
|
||||||
|
**随身物品:** 军用步枪(2d10 伤害,远距离)或左轮手枪(1d10 伤害,近处)或马刀(2d10 伤害,相邻),不匹配的士兵制服,培育槽人造肉,偷来的酒,家书。
|
||||||
|
|
||||||
|
#### 农裔民兵
|
||||||
|
|
||||||
|
**本能:** 42 **护甲值 (AP):** 2 **创伤上限:** 3
|
||||||
|
|
||||||
|
农裔的军事行动是脱节的、因人而异的,并且高度依赖天气。很少有农裔愿意离开需要照料的农作物而在外度过整个夏天。如果有足够伟大的事业,农裔可能会被说服放弃一个周末的采摘,去打一个周末的仗。农裔在动机上的缺乏,被他们善用步枪以及在巨蝉出没的森林中生存的能力所弥补。
|
||||||
|
|
||||||
|
**随身物品:** 长步枪(4D10 伤害,极远距离),反曲弓(1d10 伤害,远距离)或工作工具(1d10 伤害,相邻),厚实的帆布罩衫,青豆种子,一瓶苹果威士忌,打火石,一根白垩。
|
||||||
|
|
||||||
|
#### 幼体巨蝉
|
||||||
|
|
||||||
|
**本能:** 45 **护甲值 (AP):** 3 **创伤上限:** 3
|
||||||
|
**伤害:** 甲壳角撞(2d10 伤害,相邻)
|
||||||
|
**特殊:** 巨蝉不消耗白垩,施法时也不会产生副作用。
|
||||||
|
每当幼体巨蝉受到一次创伤时,投掷 1d10。如果掷出 7 或更高,就会出现一只成年巨蝉。
|
||||||
|
|
||||||
|
成年巨蝉在整个低地荒野中都令人恐惧,而幼体巨蝉通常被那些不愿等待它们蜕皮的急躁白垩收集者视为目标。幼体巨蝉也以强行推开住宅的门去啃食刚死不久的尸体而闻名。成年巨蝉几乎时刻都在监视着它们的幼崽。
|
||||||
|
|
||||||
|
**随身物品:** 柔软的灰绿色甲壳,黏糊糊的半成型白垩(需要高级工具才能将其制成可用的白垩)。
|
||||||
|
**法术:** 照明(第 47 页),悬浮(第 47 页),掷火(第 48 页)。
|
||||||
|
|
||||||
|
#### 成年巨蝉
|
||||||
|
|
||||||
|
**本能:** 44 **护甲值 (AP):** 7 **创伤上限:** 5
|
||||||
|
**伤害:** 角撞(2d10 伤害,近处),心灵传动(1d10 伤害,远距离)
|
||||||
|
**特殊:** 巨蝉不消耗白垩,施法时也不会产生副作用。
|
||||||
|
|
||||||
|
成年巨蝉的行动模式既是哲学层面的谜团,又是对人类安全的强烈物理威胁。所有农裔都承认,巨蝉的智力足以躲避夏季降雨、使人类为它们设置的陷阱失效,并战略性地伏击过度自信的白垩收集者。只有魔法师才明白,巨蝉操控滑界(Slip)就像呼吸空气一样自然,并将多个现实像灯塔一样锚定。
|
||||||
|
|
||||||
|
**随身物品:** 坚硬的黑色甲壳,形成白垩的液体(需要高级工具才能将其制成可用的白垩),正在蜕下且装满白垩的壳(相当于 10 根白垩的量)。
|
||||||
|
**法术:** 引导治疗(第 46 页),巨大化(第 47 页),照明(第 47 页),模仿形态(第 47 页),悬浮(第 47 页),以及掷火(第 48 页)。
|
||||||
|
|
||||||
|
#### 远古巨蝉
|
||||||
|
|
||||||
|
**本能:** 64 **护甲值 (AP):** 15 **创伤上限:** 12
|
||||||
|
**伤害:** 角撞(3d10 伤害,近处),心灵传动(2d10 伤害,远距离)
|
||||||
|
**特殊:** 巨蝉不消耗白垩,施法时也不会产生副作用。遭遇时,附近所有的人类必须进行一次恐慌检定。
|
||||||
|
|
||||||
|
远古巨蝉已有数千年的寿命。这些最古老的虫子以它们如同甲壳般寂静而坚定的方式引导着世界。魔法师相信远古巨蝉是世界上第一批魔法师。虫群僧侣将远古巨蝉尊为活着的菩萨。其他许多人则认为像谷仓一样大的巨蝉只是个神话。
|
||||||
|
|
||||||
|
**随身物品:** 致密的灰色甲壳,形成白垩的液体(需要高级工具才能将其制成可用的白垩),正在蜕下且装满白垩的壳(相当于 20 根白垩的量)。3 个随机法术(第 46-48 页)。
|
||||||
|
**法术:** 活化蔬菜(第 46 页),引导治疗(第 46 页),巨大化(第 47 页),照明(第 47 页),模仿形态(第 47 页),隐形(第 47 页),悬浮(第 47 页),变形术(第 48 页),生命火花(第 48 页),以及掷火(第 48 页)。
|
||||||
@@ -0,0 +1,50 @@
|
|||||||
|
# 第 4 章:纹章与魔法
|
||||||
|
|
||||||
|
### 纹章
|
||||||
|
|
||||||
|
纹章越大,附着在其上的自我也就越大。富人收集几十个纹章,并在专属圈子里交易。虽然大多数纹章价值连城,但有些纹章比其他纹章更常见。"饰品纹章"经常从领主裔家族流入云裔和农裔手中,有数百个品种;有些散落在垃圾抽屉和废品站里,其效果的价值还不如用来驱动它们的白垩高。然而,"标准纹章"却能建立和摧毁财富与王朝。每一个标准纹章都蕴含着极少赋予凡人的力量。"强效纹章"是独一无二的艺术品。不管它们有多么美丽,纹章都是折磨者的遗物。云裔的后代像乌鸦一样,从他们城市中心的古代豪宅里一点点敲下碎片,拔下闪闪发光的东西来把玩。其余 18 座云城豪宅大多正在崩塌,它们收集的力量已被洗劫一空。
|
||||||
|
|
||||||
|
使用纹章就像骑一匹狂躁的驮鸽。你的手臂在释放的能量下颤抖,但你的头脑必须保持冷静。哪怕是一个错误的念头都意味着灾难,大多数理智的领主裔对使用他们这些超大的珠宝都有一种不言而喻的恐惧。
|
||||||
|
|
||||||
|
要使用纹章,进行一次心智检定。如果成功,执行纹章的效果;否则,承受 1 点压力,并在"施法失误表"(第 46 页)上投掷 1d10。纹章可以使用一次,之后必须重新涂上白垩才能再次使用。
|
||||||
|
|
||||||
|
> **纹章全表** — 数据在 `tables/sigils.csv`。用 `journal sigil` 或 `journal roll sigils [--tag trinket|standard|powerful]` 掷。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 魔法
|
||||||
|
|
||||||
|
白垩被摄入、投掷和播撒,作为这世界上最后奇迹的催化剂。当有人施放法术时,他们使用白垩来刺激滑界(Slip),并将附近的真相召唤到这个现实中。
|
||||||
|
|
||||||
|
白垩激发了滑界,但单靠白垩是不够的。法术是具象化的诗篇。抛撒白垩,念出我们母亲和祖母的言辞,从一双温暖的手传递到另一双温暖的手。村庄围绕着一个法术建立,培育它一百年、两百年,直到它被完善。
|
||||||
|
|
||||||
|
魔法存在于牙齿之中。受惊的看护者会尽早拔掉孩子们的智齿,从根源上切断魔法。信使交易这些牙齿,它们在绝望的魔法师中总能卖个好价。
|
||||||
|
|
||||||
|
每一个法术都有代价。生活中所有事物都有代价。伴随每一份快乐而来的,是痛苦。法术的代价在效果结束时就会全额支付。你也许已经完成了法术,但法术绝对还没有对你善罢甘休。
|
||||||
|
|
||||||
|
**要施放一个法术:**
|
||||||
|
|
||||||
|
1. 撒下、抛出或摄入至少一根白垩。使用额外的白垩可以增加法术的目标数量、范围和/或持续时间。
|
||||||
|
2. 诵读法术的言辞。
|
||||||
|
3. 承受 1 点压力。
|
||||||
|
4. 进行一次心灵检定。如果失败,承受 1 点压力并在"施法失误表"(第 46 页)上投掷 1d10。如果你掷出大成功,你的法术将视为额外使用了一根白垩来施放。
|
||||||
|
|
||||||
|
在没有智齿的情况下施放法术时,所有掷骰都带有劣势。
|
||||||
|
|
||||||
|
当你施放法术时,你可以使用额外的白垩来增加法术的威力。你每额外支付一次该法术的白垩消耗,就可以选择以下一项:
|
||||||
|
|
||||||
|
- 它击中的目标数量翻倍。
|
||||||
|
- 它的射程延长一个距离段。
|
||||||
|
- 它的持续时间翻倍。
|
||||||
|
|
||||||
|
*示例:Adib 施放【死者之声】需要两根白垩。在施法时,Adib 又额外使用了两根白垩,将目标从一具尸体变成两具。Adib 再次花费两根白垩(总共 6 根),将范围从相邻增加到近处。*
|
||||||
|
|
||||||
|
学习一个新法术需要一位愿意教导的老师或书面文件。进行一次心智检定来记住一个新法术。如果成功,将该法术记录在你的角色卡上。如果失败,你会施放出该法术并在施法失误表(第 46 页)上投掷。你必须等待一周才能再次尝试学习该法术。
|
||||||
|
|
||||||
|
**施法失误**
|
||||||
|
|
||||||
|
> **施法失误表** — 数据在 `tables/mishaps.csv`。用 `journal mishap` 或 `journal roll mishaps` 掷 1d10。
|
||||||
|
|
||||||
|
**法术表**
|
||||||
|
|
||||||
|
> **法术全表** — 数据在 `tables/spells.csv`。用 `journal spell` 或 `journal roll spells [--tag chalk-1|chalk-2|chalk-3|chalk-4]` 掷。
|
||||||
@@ -0,0 +1,137 @@
|
|||||||
|
# 第 5 章:入门冒险 - 豆子驳船的最后航行
|
||||||
|
|
||||||
|
## 豆子驳船的最后航行 (LAST VOYAGE OF THE BEAN BARGE)
|
||||||
|
|
||||||
|
*这是一场入门级的冒险,带领一群新玩家从云端的城市来到下方的低地荒野。玩家不应阅读第 65-74 页的内容(注:即本节内容)。游戏守望者,请使用此冒险向新玩家介绍《云之女帝》的世界——在一艘正被巨蝉群围攻并坠毁的船上。*
|
||||||
|
|
||||||
|
德尔塔城(Delta City)是一座破败古老的城市,在云层中为了生存而苦苦挣扎。统治这里的领主裔"贞洁者阿玛娜"(Amana the Chaste)管理不善,导致城市前景黯淡;它的冷凝帆现在收集到的水分只有十年前的一半。数十名云裔士兵站在附近的码头上,身上挂着背包和武器,在空中驳船的队伍中守卫着。玩家角色(PCs)们站在他们自己排的一条短得多的队伍中,寒风卷走了他们的体温。
|
||||||
|
|
||||||
|
夏天人们总是会四处走动,但今年不同。聚集着准备前往下方荒野的人群比平时多了两三倍。有消息传开,说云之女帝正在一英里下方的大地上行走,正等着被拯救。云裔士兵们说,一旦他们救出女帝,就能发大财,他们最大的愿望也能得以实现。虫群僧侣们则宣讲说,世纪虫群提早七年破土而出,他们渴望重新加入他们的巨蝉导师之中。相比之下,PC 们的旅行愿望要简单得多。在德尔塔城度过了一个寒冷、悲惨的冬天后,他们只希望能在这个夏天放松一下。
|
||||||
|
|
||||||
|
PC 们等待着登上"豆子驳船"(Bean Barge),这是一艘破旧的小飞船,带有两个豆子形状的水箱。豆子驳船早已经过了它的全盛时期不知道多少次了。不管它最初的用途是什么,现在它负责将旅行者和物资从云端之上的城市运送到下方的农田。
|
||||||
|
|
||||||
|
这艘船正前往低地荒野最大的城市——塔克镇(Tack Town)。一旦降落,豆子驳船将用一箱水换取 20 袋大米。斯特洛船长(Captain Stello)太过固执,不相信最近关于世纪虫群提早出土的传闻,而且他也没有余地去拒绝付费的旅行者。
|
||||||
|
|
||||||
|
船上第一兼唯一的大副"洋葱"(Onion)在码头迎接队伍,他在人群中穿梭,接过他们的行李。赛帕(Cyppa)、莱斯(Lace)、门法(Menfa)和根莫(Genmo)是船上仅有的其他乘客,他们已经登船了。
|
||||||
|
|
||||||
|
"天哪,我真不想这么说,但我也需要收走你们的武器。别担心,在降落之前,它们会被锁在甲板下的安全柜里。这是船长的命令。"
|
||||||
|
|
||||||
|
豆子驳船超载了一大笔财富——纯净水,在重压下像一头怀孕的山羊牛一样呻吟、上下颠簸。一旦每个人都就座,驳船就开始穿过有毒的云层下降。飞船已经发射,现在没有回头路了。
|
||||||
|
|
||||||
|
#### 遭遇表
|
||||||
|
|
||||||
|
> **遭遇表** — 数据在 `tables/bean-barge-encounters.csv`。用 `journal roll bean-barge-encounters` 掷 1d10。
|
||||||
|
|
||||||
|
#### 飞船部位
|
||||||
|
|
||||||
|
每隔 15 分钟(现实时间),每只未进入交战状态的巨蝉就会攻击飞船的一个部位,每次攻击对飞船造成 1 点创伤。
|
||||||
|
|
||||||
|
> **飞船部位** — 数据在 `tables/bean-barge-ship-parts.csv`。用 `journal roll bean-barge-ship-parts` 掷 1d10。
|
||||||
|
|
||||||
|
#### PC 们如果不采取行动的时间线
|
||||||
|
|
||||||
|
| 时间线 | NPC 行动 | 环境 |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| -30 分钟 | 洋葱引导乘客登船,然后装载大桶纯净水,随后将所有可见的武器锁在船员舱的柜子里。 | 略带蓝色、近乎白色的天空,点缀着几座云城。 |
|
||||||
|
| 启航 | 赛帕在机械甲板上谋杀了她的姐姐莱斯,并将尸体藏在了一个逃生舱里。根莫从门法身边溜走。 | 船进入了一层病态的苍白云幕。豆子驳船因气流而剧烈颠簸。 |
|
||||||
|
| +30 分钟 | 赛帕因未受治疗的伤口而死。根莫砸开了武器柜,偷走了伤害最高的武器。 | 零星的巨蝉出现在下方云层的覆盖面上。 |
|
||||||
|
| +60 分钟 | 根莫把自己锁在舰桥里,将飞船转向西方的觅食地。在上层甲板,门法对着巨蝉唱歌,安抚了唯一一只听到她声音的巨蝉。 | 一群愤怒的巨蝉摧毁了一支由空中驳船组成的飞行战斗旅。五艘船中有两艘从空中坠落。垂死的士兵在无线电中惨叫。 |
|
||||||
|
| +90 分钟 | 巨蝉蜂拥而至,搜寻莱斯的尸体和白垩引擎。 | 树冠上的破洞显示出成千上万只四处乱窜的巨蝉正在成堆的死尸上大快朵颐。天空中挤满了巨蝉。 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 主要 NPC
|
||||||
|
|
||||||
|
#### 小洋葱 (SMALL ONION)
|
||||||
|
|
||||||
|
大副
|
||||||
|
**本能:** 35 **护甲值 (AP):** 0 **创伤上限:** 3
|
||||||
|
|
||||||
|
**随身物品:** 头巾,潦草的说明书,工作服,大米网眼靴,脏抹布和润滑油,信号枪(1 伤害,远距离),2 发照明弹,4 个红洋葱(2 人份)。
|
||||||
|
|
||||||
|
小洋葱一有机会就会滔滔不绝地谈论洋葱的品种,而这种机会似乎总是会出现。他们很兴奋能给 PC 们提供一次参观飞船的"隆重旅行"——尽管这艘船一点也不隆重。这是洋葱离开洋葱农场后的第一份工作。
|
||||||
|
|
||||||
|
洋葱崇拜斯特洛船长在云端的生活,并没有完全意识到船长的困境。他们无视了豆子驳船出故障的引擎、剥落的油漆,以及船长背后垂下的奇怪电线。洋葱已经投下了自己的赌注,床铺已经铺好,不管有没有臭虫都得睡。洋葱也急于给他们的第一位领主裔乘客留下好印象。当洋葱找不到那位领主裔披着斗篷的仆人时,他们显得惊慌失措。
|
||||||
|
|
||||||
|
当巨蝉出现时,洋葱表现得勇敢、可靠,并且是第一个站在危险前面的人。
|
||||||
|
|
||||||
|
#### 斯特洛船长 (CAPTAIN STELLO)
|
||||||
|
|
||||||
|
资深信使 (他/他)
|
||||||
|
**本能:** 40 **护甲值 (AP):** 0 **创伤上限:** 1
|
||||||
|
|
||||||
|
**随身物品:** 雕花银头手杖(1d5 伤害,相邻),原本是心脏位置的机械空洞,里面有两名年轻男子在豆子驳船前接吻照片的吊坠,宽松的长袍,单筒望远镜。
|
||||||
|
|
||||||
|
船长稳健的双手掩盖了他每况愈下的健康状况。宽松的长袍隐藏了从他胸口的一个洞一直蜿蜒连接到飞船引擎上的一团杂乱的管子。斯特洛剩下的只有他写了一半的回忆录和洋葱。他珍惜每天走到甲板上的时刻——那时他可以断开那些该死的管子。有足够的时间看着太阳在烧焦的地平线上蒸发。有足够的时间假装一切都好,而且一切都会好起来。
|
||||||
|
|
||||||
|
看到世纪虫群时,斯特洛通过豆子驳船的对讲系统警告乘客,他们即将面临一场颠簸的飞行。斯特洛知道让驳船引擎超载会摧毁白垩核心,但随着情况变得危急,他会要求 PC 们在每个引擎室里手动增加动力。作为最后的手段,斯特洛建议手动弹射出白垩核心,以引开巨蝉。
|
||||||
|
|
||||||
|
#### 赛帕,莱斯的影子 (CYPPA, LACE'S SHADOW)
|
||||||
|
|
||||||
|
溃败的领主裔 (她/她)
|
||||||
|
**本能:** 48 **护甲值 (AP):** 4 **创伤上限:** 2
|
||||||
|
|
||||||
|
**随身物品:** 白垩溢出之强效纹章(第 43 页),实验性月球大炮"猎犬捕手"(3d10 伤害,远距离,需要在满月下充电一晚),玉米皮娃娃,仆人护甲(4 护甲值),克隆人纹身印记(右脚)。
|
||||||
|
|
||||||
|
赛帕几乎支撑不住自己,不仅名誉扫地且濒临死亡。她的左臂从一半处断开,留下一道参差不齐的马刀伤口。鲜血积聚在偷来的纹章上,整个人被床单盖着。如果不稳定伤势,赛帕就会死。她的身体布满了无数旧伤疤、碎骨和永久性抽搐的神经。有个妹妹是一种祝福,但有个姐姐却是个诅咒。
|
||||||
|
|
||||||
|
赛帕和她的姐姐莱斯登上了豆子驳船,以逃避决斗失败带来的后果。赛帕能忍受决斗场上的血腥失败,但她再也受不了姐姐无休止的辱骂。赛帕割断了她姐姐的喉咙,终于让那些居高临下的言辞闭嘴了。
|
||||||
|
|
||||||
|
现在,仅仅出于习惯,赛帕保守着她家族的秘密。她强忍着痛苦低声说着客套话。她自由了,但她将被家族的佣兵追杀。赛帕很乐意把"猎犬捕手"交给任何愿意帮助她活到第二天的人。
|
||||||
|
|
||||||
|
#### 门法嬷嬷 (MOTHER MENEA / MENFA)
|
||||||
|
|
||||||
|
年迈的虫群修女 (她/她)
|
||||||
|
**本能:** 40 **护甲值 (AP):** 0 **创伤上限:** 1
|
||||||
|
|
||||||
|
**随身物品:** 古董木制面具,水壶,烹饪锅,2 根白垩,糙米(8 人份),寺庙歌曲卷轴,手杖(1d10 伤害,相邻)。
|
||||||
|
**法术:** 悬浮(第 47 页)。
|
||||||
|
|
||||||
|
门法是一位温暖、脚踏实地,哪怕稍微有点精神失常的老妇人。她水汪汪的眼睛从木制面具下向外看,一边哼着古老的巨蝉歌曲。门法扳着手指倒数她生命中最后的几周。她前往觅食地,是为了交出自己的骨头。
|
||||||
|
|
||||||
|
门法是有关巨蝉信息的活泉。"巨蝉怕水。巨蝉会被强光暂时弄得迷失方向。巨蝉以死人的骨头为食。"
|
||||||
|
|
||||||
|
老僧侣们教导门法发现万事万物中的循环模式。老修女们教导门法唱古老的歌曲,这是安抚暴怒虫子最简单的方法。现在她成了老修女。当巨蝉登上豆子驳船时,门法冲上前去保护它们。
|
||||||
|
|
||||||
|
#### 血指节 根莫 (GENMO THE BLOODY KNUCKLE)
|
||||||
|
|
||||||
|
伪装的佣兵 (他/他)
|
||||||
|
**本能:** 65 **护甲值 (AP):** 5 **创伤上限:** 4
|
||||||
|
|
||||||
|
**随身物品:** 匆忙制作的粘土面具,披在战斗护甲外的毛皮斗篷,拳击手绷带和隐藏的黄铜指节套(1d10 伤害,相邻)。
|
||||||
|
|
||||||
|
根莫行动如风。虽然有些佣兵整个季节都在为一个雇主工作,但根莫只看眼下的活计。因此,当根莫听到年迈的修女门法低声谈论巨蝉大回归时,他迅速换上了虫群僧侣的伪装,要求与她同行。
|
||||||
|
|
||||||
|
根莫掩饰意图的本领很差。他是个糟糕的说谎者,而且长着一副打手的体格。他唯一的救命稻草就是他的沉默。当其他人不可避免地变得喋喋不休时,根莫保持安静。他老爸教他的。
|
||||||
|
|
||||||
|
他计划劫持豆子驳船,将其飞向最近的觅食地,去偷一枚巨蝉卵。根莫脑子里全想着冬天里温暖的手指、填饱的肚子,以及他能用一枚巨蝉卵买到的床伴。他只需要比其他白垩收集者先下手为强。
|
||||||
|
|
||||||
|
不管发生什么,根莫现在都不忍心伤害门法——她让他太想起自己年迈的老祖母了。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 豆子驳船地图
|
||||||
|
|
||||||
|
#### 上层甲板 (UPPER DECK)
|
||||||
|
- **水箱 A(破裂):** 一个巨大的塑钢水箱,水正从它修补不良的裂缝中滴落。水箱侧面的安装箱里放着一根消防软管。
|
||||||
|
- **水箱 B:** 空水箱的侧面画着一颗褪色巨大的豆子。因年代久远而磨损严重。
|
||||||
|
- **楼梯:** 两组宽阔的楼梯,一组是中央用来运货的楼梯,另一组是前方的楼梯,供头等舱乘客前往观景甲板。
|
||||||
|
- **舰桥 (BRIDGE):** 斯特洛船长通常在这里,他的手握着转向操纵杆。一团维持生命的管子从他胸口的一个洞蜿蜒连接到房间的角落。在他飞行时,附近的一台通讯终端不时发出无线电的嘈杂声。船长座位后面是一张小桌子,上面散落着零碎的文件、两支华丽的钢笔和他写了一半的自传。墙上点缀着一些装在旧木框里的人物照片,照片上的人看起来都不怎么正派。舰桥被塑钢门(10 护甲值)阻隔,可以从里面锁上。
|
||||||
|
|
||||||
|
#### 下层甲板 (LOWER DECK)
|
||||||
|
- **船员洗手间:** 一个模压成型的马桶和洗手池。一张农场的照片贴在破裂的镜子上。
|
||||||
|
- **铺位舱:** 一个光线昏暗的小房间。两张吊床挂在天花板的管子上。洋葱的一些衣服叠好放在挂在墙上的袋子里。一株向日葵幼苗挂在唯一的小窗户下面,吸收着光线。一个上了锁的柜子里存放着 PC 们的武器、2 把信号枪(1 伤害,远距离)、3 发照明弹和一个小工具箱。在斯特洛的吊床下面是一个挂着沉重挂锁的大木箱。斯特洛把箱子的钥匙和扑翼机的钥匙挂在脖子上。箱子里面有一套带血的云裔制服、两玻璃瓶私酿烈酒、2 把左轮手枪(1d10 伤害,近处)和一把智齿。
|
||||||
|
- **厨房:** 一面内嵌有炉灶、水槽和冰柜的墙。有十几个橱柜装满了干货。冰箱里储备了充足的冷冻肉和汤。看起来有足够的食物供一小群船员生活一个星期。水槽上方挂着一个医疗包,里面有 1 卷绷带、一条止血带、止痛药、抗生素、兴奋剂和 1 份药膏。门法在驳船狭窄的厨房里摆弄着锅碗瓢盆开始了她的旅程,像个孩子一样对世纪虫群的提早出现感到兴奋。
|
||||||
|
- **货舱:** 一个狭窄的储藏区,里面装满了绑在墙壁和地板上的密封水容器。
|
||||||
|
- **观景甲板:** 一股难以忍受的疾病、鲜血和死亡的气味从观景甲板飘来。这里肯定出事了。一堆扭曲的毯子和撕破的床单被血染红并扔在一边。在一张豪华沙发的中央,赛帕半躺着,虚弱得几乎坐不起来。她的脸变成了灰白色。她看起来就像一具活尸。她面前是半圆形的舷窗,每扇窗户都能看到云层以及那浩瀚无垠的地平线。
|
||||||
|
- **客用洗手间:** 一间简陋但干净的飞船浴室。只有一个模压成型的塑钢马桶和洗手池。"猎犬捕手"(第 69 页)被塞在角落里,靠在马桶上。
|
||||||
|
- **通往机械甲板的梯子:** 一根管子里的一架 8 英尺长的梯子通向机械甲板。在楼梯平台上可以看到来自被破坏的逃生舱终端的碎裂安全玻璃。
|
||||||
|
|
||||||
|
#### 机械甲板 (MECHANICAL DECK)
|
||||||
|
- **逃生舱:** 逃生舱是一次性的疏散管道,可以舒适地容纳两人,不太舒服地容纳三人,危险地容纳四人。如果被问及,斯特洛船长会告诉你,如果豆子驳船的维护记录可信的话,这里的任何一个逃生舱都至少有一百年没有进行过维护了。
|
||||||
|
- **#1.** 赛帕在登上豆子驳船时破坏了它,数字终端已经被砸碎,门锁机构里卡着一截断裂的马刀刀片。在里面,一堆带血的床单正对着窗户。逃生舱里的尸体是莱斯,赛帕的姐姐,她的脖子上有一道马刀伤口。
|
||||||
|
- **#2.** 这个逃生舱不见了。终端上闪烁着发射日期(50 年前)。指示器显示发生故障;没有安全着陆的记录。
|
||||||
|
- **#3 & #4.** 虽然古老但显然处于工作状态。如果发射,投掷 1d10。如果掷出 8-9,舱内所有人在着陆时承受 1 点创伤;如果掷出 10,舱内所有人瞬间死亡。
|
||||||
|
- **后引擎:** 一个旋转的骨皮(bone-skin)骨灰盒,里面装满了超高温的液态白垩,周围环绕着机械管道。这是很久以前时代的遗物,是一台极其复杂的机器。一个旋转的手柄允许用户手动让引擎输出过载,从而显著提高驳船的速度。松开环绕白垩引擎的四个大拉杆,就可以从船底丢下核心。没有了引擎,船的帆只能提供一些暂时的升力。
|
||||||
|
- **前引擎:** 布局和特征与后引擎相同,只不过这个房间正在过热。引擎在其安全壳力场中闪烁着火花。如果被问及引擎的状况,斯特洛会否认这艘船有任何只要费点力气就修不好的问题。如果前引擎过载,它会变得越来越不稳定,并在 20 分钟后爆炸,对任何在机械甲板上的人造成 4d10 伤害,对下层甲板的人造成 3d10 伤害,对上层甲板的人造成 2d10 伤害。
|
||||||
|
- **扑翼机 (THOPTER):** 一架从无人看管的哨所偷来的细长太阳能飞行器。这架扑翼机对接在豆子驳船下方,只能从机械甲板的一个检修舱口进入。一架狭窄且暴露在外的 20 英尺梯子将飞船与扑翼机连接起来。这架侦察扑翼机可以舒适地坐两人,危险地坐三人。它没有武器,护甲值 10,能承受 2 点创伤。
|
||||||
@@ -0,0 +1,106 @@
|
|||||||
|
# 第 6 章:附录与参考表格
|
||||||
|
|
||||||
|
### 词汇表 (GLOSSARY)
|
||||||
|
|
||||||
|
- **骨皮 :** 折磨者最后、也是最残酷的技术进步。一种陶瓷般的血肉,比任何金属都要坚硬,被制造出来覆盖在他们的巨人、蛇形机器和航天器上。
|
||||||
|
- **云裔 :** 云城的公民。大多数云裔生活在寒冷的肮脏环境中,累断了腰只为维持他们领主裔的奢侈生活方式。
|
||||||
|
- **白垩 :** 一种从巨蝉壳上收集的白色烟灰物质。提炼后,可以被摄入或播撒在空气中用于施展法术。
|
||||||
|
- **云之女帝 :** 皇帝的新娘,目前下落不明。她们接受一系列导师的教导,以满足云裔的愿望。
|
||||||
|
- **纹章 :** 作为荣誉徽章佩戴的古代骨皮技术碎块。将白垩应用于纹章上可以产生强大的效果。
|
||||||
|
- **云裔皇家宫廷 :** 每个主要的云城都会保留一个正式的集会空间,用于展示艺术、文化和技术的发展。实际上,这些会议是领主裔们展现野心、散播八卦和谋杀的社交舞台。
|
||||||
|
- **皇帝 :** 奥米加城(Omega City)中传奇般的统治者。曾经,皇帝也是一名领主裔魔法师,但在巨蝉的干预下被提升至近乎神明的地位。皇帝已经有几十年甚至几个世纪没有露面了(取决于你问谁)。他监视着剩下的 18 座云城——这是一个由居住在其中的领主裔所管理的松散城邦联盟。
|
||||||
|
- **农裔 :** 来自低地荒野的人,主要靠务农、狩猎和采集为生。
|
||||||
|
- **余世 :** 《云之女帝》的设定背景。数千年后的未来,技术、魔法、时间和空间以奇怪且不平等的组合,交织在一个被黄色云层覆盖的地球上。
|
||||||
|
- **巨蝉 :** 具有高度智慧和异界力量的巨型蝉。巨蝉在夏天苏醒,在冬天沉睡,消耗大量的骨头和树液。蜕下的巨蝉壳上满载着未提炼的白垩。
|
||||||
|
- **低地荒野 :** 一片生机勃勃却被污染的农田,也是人类绝大部分食物的来源。
|
||||||
|
- **豪宅 :** 位于云城中心的古代帝国宫殿。大多数豪宅已经沦为废墟并失去作用,在几千年的时间里被云裔公民们一块块拆走。大多数纹章都来自帝国豪宅的拆解。
|
||||||
|
- **塑钢 :** 一种用于建造建筑、工具和设备的轻质塑料复合材料。
|
||||||
|
- **蔓延云层 :** 污染天空的厚厚黄色云层,通常将低地荒野与云城完全隔开。
|
||||||
|
- **滑界 :** 现实的模糊交错,创造出无法解释的现象,包括魔法、徘徊灵、巨大的水熊虫、诅咒等等。滑界在施放法术时被召唤,并可能像溪流沉积物一样漂移在低地荒野的上空。"滑界物品"是从其他现实召唤来的物体,或是因暴露于滑界而获得魔法的物品。
|
||||||
|
- **折磨者 :** 远古时代的人类,他们带着他们的基督(Christ)离开前往群星之前,用奇迹般的技术折磨了自己和这个星球。
|
||||||
|
- **导师 :** (令人怀疑地)声称与皇帝有直接联系的顾问。导师们沐浴在白垩中,试验被禁忌的技术,同时在云裔宫廷中保护他们岌岌可危的地位。
|
||||||
|
- **徘徊灵 :** 困在现实之间的空洞、漂浮的幽灵。徘徊灵很难与物理世界互动,除非他们能获得一件来自他们自己现实的物品,或者说服一位强大的魔法师来帮助他们。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
> 然后离开这个地方,前往树林里的一扇门
|
||||||
|
> 走向一个半被遗忘、几乎无人理解的滑界边缘。
|
||||||
|
> 走到那扇门前,将这本书放在地上
|
||||||
|
> 在一棵树下,就像一顶倒置的王冠。
|
||||||
|
> 起初独自走向那扇门
|
||||||
|
> 去遇见陌生人,去孕育奇特的事物。
|
||||||
|
> 走向那扇门,将它敞得大大的
|
||||||
|
> 因为每一天这条小路都在闭合,像记忆一样渴望隐藏它的宝藏。
|
||||||
|
> 走向那扇门,这个简单的世界
|
||||||
|
> 曾是我的创造,如今将归你所有。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 参考表格
|
||||||
|
|
||||||
|
#### 衣物护甲
|
||||||
|
|
||||||
|
| 名称 | 稀有度 | 护甲值 (AP) | 速度 | 特殊说明 |
|
||||||
|
| :--- | :--- | :--- | :--- | :--- |
|
||||||
|
| 战斗护甲 | U | 5 | 正常 | 包含肩灯,可拉伸以贴合穿戴者。 |
|
||||||
|
| 能量盾 | R | 0 | 正常 | 激活时提供 10 AP,持续 5 分钟,需要消耗一根白垩来充能。破损时对穿戴者造成额外的 1d10 伤害。 |
|
||||||
|
| 包裹服 | U | 3 | 正常 | 自密封的半凝胶状织物,能有效防止白垩中毒、辐射和真菌感染。 |
|
||||||
|
| 全套护甲 | R | 7 | 速度检定具劣势 | 破损后很容易重新锻造。 |
|
||||||
|
| 活体护甲 | U | 4 | 正常 | 破损后每小时恢复 1 AP。 |
|
||||||
|
| 动力护甲 | M | 10 | 速度检定具劣势 | 每周可激活一次,持续 1 小时。在此期间,穿戴者的所有力量检定获得优势。 |
|
||||||
|
| 旅行服 | C | 2 | 正常 | 无 |
|
||||||
|
| 工作服 | C | 0 | 正常 | 无 |
|
||||||
|
|
||||||
|
#### 掩体
|
||||||
|
|
||||||
|
| 类型 | 例子 | 护甲值 (AP) |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| 微小掩体 | 家具、木门、躯体盾牌等。 | 2 |
|
||||||
|
| 轻型掩体 | 树木、石墙、厚窗帘等。 | 5 |
|
||||||
|
| 重型掩体 | 塑钢墙壁、扑翼机、地堡等。 | 10 |
|
||||||
|
|
||||||
|
#### 动物同伴
|
||||||
|
|
||||||
|
| 名称 | 稀有度 | 描述 | 创伤上限 | 本能 | 伤害 |
|
||||||
|
| :--- | :--- | :--- | :--- | :--- | :--- |
|
||||||
|
| 水熊虫 | C | 由魔法师从平行现实召唤来的时间异常生物,它们引导旅行者穿过滑界地形。当它们死亡时,它们就"闪烁"消失在存在之外。 | 2 | 2d10+20 | 0 |
|
||||||
|
| 驮鸽 | C | 像鸽子一样的生物,有马那么大。是富裕农裔最常见的旅行方式。 | 3 | 2d10+20 | 喙 1d10 伤害,近处 |
|
||||||
|
|
||||||
|
#### 载具
|
||||||
|
|
||||||
|
| 名称 | 稀有度 | 描述 | 护甲值 (AP) |
|
||||||
|
| :--- | :--- | :--- | :--- |
|
||||||
|
| 漫游车 | U | 能够通过重新定向陀螺仪在困难地形上航行的陆地载具。由白垩或生物燃料引擎提供动力。 | 10 |
|
||||||
|
| 扑翼机 | U | 一种灵活的、可容纳一到四人的飞行器,通常仿造昆虫的形状制作。由于重量限制,很少携带武器。由太阳能、风能或白垩引擎提供动力。 | 20 |
|
||||||
|
| 空中驳船 | R | 能够运载大群人的宽阔天空载具。大多数驳船都是远古时代留下来的二手货,尽管云裔赞助人每一代都会建造几艘新驳船。每艘驳船通常都是太阳能、风能、白垩或生物燃料动力的某种组合。 | 40 |
|
||||||
|
|
||||||
|
#### 暴力工具
|
||||||
|
|
||||||
|
| 名称 | 稀有度 | 射程 | 伤害 | 装填前攻击次数 | 特殊说明 |
|
||||||
|
| :--- | :---: | :---: | :---: | :---: | :--- |
|
||||||
|
| 白垩炮 | M | 远距离 | 3d10 | 1 | 发射需要消耗 1 根白垩。 |
|
||||||
|
| 转角杀手 | R | 远距离 | 2d10 | 3 | 发射有弹性的塑钢球,可在转角处造成 1d10 伤害。 |
|
||||||
|
| 匕首 | C | 相邻 | 1d10 | 不适用 | 易于隐藏,近战攻击时使用速度属性。 |
|
||||||
|
| 飞镖管 | C | 近处 | 1d10 | 1 | 无声,无法伤害穿戴护甲的目标。需通过一次速度检定以成功绕过护甲瞄准。可以发射毒镖,在目标被治愈前每小时造成 2 点伤害。 |
|
||||||
|
| 火焰风箱 | R | 近处 | 2d10 | 4 | 目标需带着劣势进行躯体豁免,否则被点燃(1d10 伤害/回合)直到扑灭。 |
|
||||||
|
| 信号枪 | U | 远距离 | 1 | 2 | 发出高强度照明弹,即使在白天也能从很远的地方看到。 |
|
||||||
|
| 手雷 | U | 近处 | 3d10 | 1 | 附近所有目标承受 1 点创伤。 |
|
||||||
|
| 热力切割器 | M | 远距离 | 5d10 | 2 | 无视护甲。发射需要 60 秒并消耗 3 根白垩。 |
|
||||||
|
| 熏香旋转器 | U | 近处 | 0 | 1 | 扩散熏香和化学物质。可装载睡眠粉,使附近所有目标沉睡 15 分钟。可装载毒气,在目标被治愈前每小时造成 3 点伤害。 |
|
||||||
|
| 长步枪 | R | 极远距离 | 4d10 | 2 | 在相邻距离射击时掷骰具有劣势。 |
|
||||||
|
| 军用步枪 | U | 远距离 | 2d10 | 5 | 无 |
|
||||||
|
| 豌豆射手 | U | 相邻 | 1d10 | 1 | 易于隐藏。 |
|
||||||
|
| 反曲弓 | C | 远距离 | 1d10 | 1 | 无声,无法伤害穿戴护甲的目标。需通过一次速度检定以成功绕过护甲瞄准。可以发射毒箭,在目标被治愈前每小时造成 2 点伤害。 |
|
||||||
|
| 左轮手枪 | U | 近处 | 1d10 | 3 | 同时发射所有枪管时造成 3d10 伤害。 |
|
||||||
|
| 马刀 | C | 相邻 | 2d10 | 不适用 | 近战攻击时使用速度属性。 |
|
||||||
|
| 孢子发射器 | R | 近处 | 1 | 1 | 取一个孢子的效果并将其影响力翻倍,散布在使用者的正前方。 |
|
||||||
|
| 徒手 | 不适用 | 相邻 | 1d5 | 不适用 | 无 |
|
||||||
|
| 手杖 | C | 近处 | 1d5 | 不适用 | 携带或使用它不占用物品栏位。 |
|
||||||
|
| 武器化雕像 | U | 相邻 | 2d10 | 不适用 | 无视护甲。需要 40+ 的力量才能挥舞。 |
|
||||||
|
| 工作工具 | C | 相邻 | 1d10 | 不适用 | 不引人注目。 |
|
||||||
|
|
||||||
|
每当队伍获得 1 份或多份口粮时,这些口粮中的任何一部分都可以替换为弹药获取(不包括白垩棍)。将口粮转化为弹药时:1 份口粮 = 一件武器"装填前攻击次数"那么多的弹药量。
|
||||||
|
|
||||||
|
#### 你发现了什么? (WHAT DO YOU FIND?)
|
||||||
|
|
||||||
|
> **你发现了什么?** — 数据在 `tables/find.csv`。用 `journal roll find` 掷 1d100,每次同时给出小型、中型与大型物品。
|
||||||
@@ -0,0 +1,171 @@
|
|||||||
|
/**
|
||||||
|
* One-off importer: transcribe the large Cloud Empress tables from the source
|
||||||
|
* rulebook chapters into `tables/*.csv`.
|
||||||
|
*
|
||||||
|
* Usage:
|
||||||
|
* node import-tables.mjs <chaptersDir> <tablesOutDir>
|
||||||
|
*
|
||||||
|
* The source chapters are markdown with pipe tables. This script only handles
|
||||||
|
* the handful of tables that are too large or too comma-heavy to transcribe by
|
||||||
|
* hand; the small tables were written directly and are not touched here.
|
||||||
|
*/
|
||||||
|
import fs from 'node:fs';
|
||||||
|
import path from 'node:path';
|
||||||
|
|
||||||
|
const [srcDir, outDir] = process.argv.slice(2);
|
||||||
|
if (!srcDir || !outDir) {
|
||||||
|
console.error('usage: node import-tables.mjs <chaptersDir> <tablesOutDir>');
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const read = (file) =>
|
||||||
|
fs.readFileSync(path.join(srcDir, file), 'utf8').replace(/\r\n/g, '\n');
|
||||||
|
|
||||||
|
const isRow = (line) => /^\s*\|/.test(line);
|
||||||
|
const isSeparator = (line) => /^\s*\|[\s:|-]+\|\s*$/.test(line);
|
||||||
|
const cells = (line) =>
|
||||||
|
line.trim().replace(/^\|/, '').replace(/\|$/, '').split('|').map((s) => s.trim());
|
||||||
|
|
||||||
|
/** Collect the data rows of the first table whose header matches `match`. */
|
||||||
|
function tableAfter(text, match) {
|
||||||
|
const lines = text.split('\n');
|
||||||
|
const header = lines.findIndex((l) => match(l));
|
||||||
|
if (header === -1) throw new Error(`header not found: ${match}`);
|
||||||
|
const rows = [];
|
||||||
|
for (let i = header + 1; i < lines.length; i++) {
|
||||||
|
if (!isRow(lines[i])) break;
|
||||||
|
if (isSeparator(lines[i])) continue;
|
||||||
|
rows.push(cells(lines[i]));
|
||||||
|
}
|
||||||
|
return rows;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** "00-02" | "89" | "0–1" -> [min, max] */
|
||||||
|
function parseRange(value) {
|
||||||
|
const flat = value.replace(/[–—]/g, '-').replace(/\s/g, '');
|
||||||
|
let m = flat.match(/^(\d+)-(\d+)$/);
|
||||||
|
if (m) return [Number(m[1]), Number(m[2])];
|
||||||
|
m = flat.match(/^(\d+)$/);
|
||||||
|
if (m) return [Number(m[1]), Number(m[1])];
|
||||||
|
throw new Error(`bad range: ${value}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const quote = (value) => `"${String(value).replace(/"/g, '""')}"`;
|
||||||
|
const row = (min, max, text, tags = '') => `${min},${max},${quote(text)},${tags}`;
|
||||||
|
|
||||||
|
function write(name, rows, dir = outDir) {
|
||||||
|
fs.writeFileSync(path.join(dir, name), `min,max,text,tags\n${rows.join('\n')}\n`);
|
||||||
|
console.log(`${name}: ${rows.length} rows`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const ch2 = read('02-角色创建.md');
|
||||||
|
const ch3 = read('03-核心规则机制.md');
|
||||||
|
const ch4 = read('04-纹章与魔法.md');
|
||||||
|
const ch6 = read('06-附录与参考表格.md');
|
||||||
|
|
||||||
|
// --- 1d100 name table: four 25-entry columns keyed by tens digit -------------
|
||||||
|
const NAME_COLS = [
|
||||||
|
['农裔姓名', 'farm'],
|
||||||
|
['云裔姓名', 'cloud'],
|
||||||
|
['常见姓名', 'common'],
|
||||||
|
['古代姓名', 'ancient'],
|
||||||
|
];
|
||||||
|
const nameRows = tableAfter(ch2, (l) => l.includes('农裔姓名') && l.includes('古代姓名'));
|
||||||
|
const names = new Map();
|
||||||
|
for (const c of nameRows) {
|
||||||
|
if (c.length < 8) continue;
|
||||||
|
for (let k = 0; k < 4; k++) {
|
||||||
|
const n = Number(c[k * 2]);
|
||||||
|
if (Number.isInteger(n) && c[k * 2 + 1]) names.set(n, { text: c[k * 2 + 1], tag: NAME_COLS[k][1] });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
write(
|
||||||
|
'names.csv',
|
||||||
|
[...names.keys()].sort((a, b) => a - b).map((n) => row(n, n, names.get(n).text, names.get(n).tag)),
|
||||||
|
);
|
||||||
|
|
||||||
|
// --- alias table: four columns, one shared 0-99 range ------------------------
|
||||||
|
const aliasRows = tableAfter(ch2, (l) => l.includes('绰号 (Alias)'));
|
||||||
|
const aliases = new Map();
|
||||||
|
for (const c of aliasRows) {
|
||||||
|
if (c.length < 8) continue;
|
||||||
|
for (let k = 0; k < 4; k++) {
|
||||||
|
const n = Number(c[k * 2]);
|
||||||
|
if (Number.isInteger(n) && c[k * 2 + 1] && !aliases.has(n)) aliases.set(n, c[k * 2 + 1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
write('aliases.csv', [...aliases.keys()].sort((a, b) => a - b).map((n) => row(n, n, aliases.get(n))));
|
||||||
|
|
||||||
|
// --- 1d100 equipment list (name + rarity) ------------------------------------
|
||||||
|
const gearRows = tableAfter(ch3, (l) => /^\|\s*1d100\s*\|\s*名称\s*\|\s*稀有度\s*\|/.test(l));
|
||||||
|
write(
|
||||||
|
'gear.csv',
|
||||||
|
gearRows.map((c) => {
|
||||||
|
const [min, max] = parseRange(c[0]);
|
||||||
|
return row(min, max, c[1], c[2]);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// --- 1d100 "what else do you carry" ------------------------------------------
|
||||||
|
const trinketRows = tableAfter(ch2, (l) => l.includes('你还随身携带着什么?') && l.includes('1d100'));
|
||||||
|
write(
|
||||||
|
'trinkets.csv',
|
||||||
|
trinketRows.map((c) => {
|
||||||
|
const [min, max] = parseRange(c[0]);
|
||||||
|
return row(min, max, c[1]);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// --- background starting kits (four d10 tables) ------------------------------
|
||||||
|
const KITS = [
|
||||||
|
['sellsword.csv', '佣兵装备', 'sellsword'],
|
||||||
|
['lordschild.csv', '领主裔装备', 'lordschild'],
|
||||||
|
['mage.csv', '魔法师装备', 'mage'],
|
||||||
|
['courier.csv', '信使装备', 'courier'],
|
||||||
|
];
|
||||||
|
const charactersDir = path.join(outDir, '..', 'characters');
|
||||||
|
for (const [file, label, tag] of KITS) {
|
||||||
|
const rows = tableAfter(ch2, (l) => l.includes(label));
|
||||||
|
write(
|
||||||
|
file,
|
||||||
|
rows.map((c) => {
|
||||||
|
const [min, max] = parseRange(c[0]);
|
||||||
|
return row(min, max, `之前:${c[1]} 装备:${c[2]}`, tag);
|
||||||
|
}),
|
||||||
|
charactersDir,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// --- 1d100 "what do you find" (small / medium / large) -----------------------
|
||||||
|
const findRows = tableAfter(ch6, (l) => l.includes('小型物品') && l.includes('大型物品'));
|
||||||
|
write(
|
||||||
|
'find.csv',
|
||||||
|
findRows.map((c) => {
|
||||||
|
const [min, max] = parseRange(c[0]);
|
||||||
|
return row(min, max, `小型:${c[1]};中型:${c[2]};大型:${c[3]}`);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// --- d28 sigils --------------------------------------------------------------
|
||||||
|
const sigilRows = tableAfter(ch4, (l) => l.includes('纹章名称') && l.includes('白垩消耗'));
|
||||||
|
write(
|
||||||
|
'sigils.csv',
|
||||||
|
sigilRows.map((c, i) => {
|
||||||
|
const cost = Number(c[1]);
|
||||||
|
const tier = c[0].includes('强效') ? 'powerful' : c[0].includes('标准') ? 'standard' : 'trinket';
|
||||||
|
const effect = c[2].replace(/<br\s*\/?>/gi, ';');
|
||||||
|
return row(i + 1, i + 1, `${c[0]}(白垩 ${cost}):${effect}`, `${tier};chalk-${cost}`);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
// --- d30 spells --------------------------------------------------------------
|
||||||
|
const spellRows = tableAfter(ch4, (l) => l.includes('法术名称') && l.includes('对施法者的后遗症'));
|
||||||
|
write(
|
||||||
|
'spells.csv',
|
||||||
|
spellRows.map((c, i) => {
|
||||||
|
const cost = Number(c[1]);
|
||||||
|
const effect = c[2].replace(/<br\s*\/?>/gi, ';');
|
||||||
|
const aftermath = c[3].replace(/<br\s*\/?>/gi, ';');
|
||||||
|
return row(i + 1, i + 1, `${c[0]}(白垩 ${cost}):${effect} 后遗症:${aftermath}`, `chalk-${cost}`);
|
||||||
|
}),
|
||||||
|
);
|
||||||
@@ -0,0 +1,101 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
0,0,"…之魔鬼 (Devil of)",
|
||||||
|
1,1,"混乱的/炒 (Scrambled)",
|
||||||
|
2,2,"蝗虫 (Locust)",
|
||||||
|
3,3,"歌唱 (Singsong)",
|
||||||
|
4,4,"秀场曲调 (Show Tunes)",
|
||||||
|
5,5,"编织 (Knitting)",
|
||||||
|
6,6,"爱虫的 (Bug Loving)",
|
||||||
|
7,7,"牛仔 (Cowboy)",
|
||||||
|
8,8,"破碎的 (Broken)",
|
||||||
|
9,9,"牙齿 (Teeth)",
|
||||||
|
10,10,"天使 (Angel)",
|
||||||
|
11,11,"沉思的/反光 (Reflective)",
|
||||||
|
12,12,"河底的 (River Bottom)",
|
||||||
|
13,13,"粗野骑行 (Rough Riding)",
|
||||||
|
14,14,"刀疤 (Scarred)",
|
||||||
|
15,15,"无名小卒 (Nobody)",
|
||||||
|
16,16,"王子/公主 (Prince/ss)",
|
||||||
|
17,17,"公爵 (Duke)",
|
||||||
|
18,18,"血腥的 (Bloody)",
|
||||||
|
19,19,"一击毙命的 (One-Shot)",
|
||||||
|
20,20,"佩里镇英雄 (Hero...)",
|
||||||
|
21,21,"填字游戏 (Crossword)",
|
||||||
|
22,22,"九指 (Nine Finger)",
|
||||||
|
23,23,"伤心者 (Heartbreaker)",
|
||||||
|
24,24,"漂亮 (Pretty)",
|
||||||
|
25,25,"独眼 (One Eyed)",
|
||||||
|
26,26,"尖叫的 (Screamin')",
|
||||||
|
27,27,"绿皮/新手 (Green)",
|
||||||
|
28,28,"诚实的 (Honest)",
|
||||||
|
29,29,"孤独的 (Lonely)",
|
||||||
|
30,30,"三枪 (Three Guns)",
|
||||||
|
31,31,"蜻蜓 (Dragonfly)",
|
||||||
|
32,32,"闪耀的 (Glittering)",
|
||||||
|
33,33,"尖鼻子的 (Needle Nose)",
|
||||||
|
34,34,"厚实的 (Thick)",
|
||||||
|
35,35,"铁手指 (Metal Finger)",
|
||||||
|
36,36,"哭泣的 (Crying)",
|
||||||
|
37,37,"打火机油 (Lighter Fluid)",
|
||||||
|
38,38,"妈妈/老妈 (Mommy/Ma)",
|
||||||
|
39,39,"爸爸/老爸 (Daddy/Pa)",
|
||||||
|
40,40,"薄脸皮的 (Thin Skinned)",
|
||||||
|
41,41,"吸血鬼 (The Vampire)",
|
||||||
|
42,42,"带角的 (Horns)",
|
||||||
|
43,43,"金色的 (Golden)",
|
||||||
|
44,44,"预兆 (Omen)",
|
||||||
|
45,45,"傻瓜/汁液 (Sap)",
|
||||||
|
46,46,"樱桃 (Cherry)",
|
||||||
|
47,47,"猎狗 (The Dog)",
|
||||||
|
48,48,"阴沟 (Gutter)",
|
||||||
|
49,49,"计数/精打细算 (Counting)",
|
||||||
|
50,50,"瞌睡的 (Sleepy)",
|
||||||
|
51,51,"滑溜的 (Soapy)",
|
||||||
|
52,52,"猫头鹰 (The Owl)",
|
||||||
|
53,53,"麝鼠 (The Muskrat)",
|
||||||
|
54,54,"孩子 (Kid)",
|
||||||
|
55,55,"绅士 (Gentleman)",
|
||||||
|
56,56,"女士 (Lady)",
|
||||||
|
57,57,"颤抖 (Shakes)",
|
||||||
|
58,58,"戏法/快手 (Presto)",
|
||||||
|
59,59,"甜心 (Sweets)",
|
||||||
|
60,60,"虾米 (Shrimp)",
|
||||||
|
61,61,"暴躁的 (Grumpy)",
|
||||||
|
62,62,"喜怒无常的 (Moody)",
|
||||||
|
63,63,"小 (Lil')",
|
||||||
|
64,64,"大 (Big)",
|
||||||
|
65,65,"夏天 (Summer)",
|
||||||
|
66,66,"穿搭/线 (Threads)",
|
||||||
|
67,67,"小丑 (The Clown)",
|
||||||
|
68,68,"齿轮脑袋 (Gearhead)",
|
||||||
|
69,69,"冷酷的 (Cold)",
|
||||||
|
70,70,"冒烟的 (Smoking)",
|
||||||
|
71,71,"杂草丛生 (Weedy)",
|
||||||
|
72,72,"酸的/尖刻的 (Sour)",
|
||||||
|
73,73,"说教的 (Preaching)",
|
||||||
|
74,74,"忏悔者 (The Penitent)",
|
||||||
|
75,75,"发霉的 (Moldy)",
|
||||||
|
76,76,"小/初级 (Junior)",
|
||||||
|
77,77,"老/高级 (Senior)",
|
||||||
|
78,78,"三世 (The Third)",
|
||||||
|
79,79,"春天 (Spring)",
|
||||||
|
80,80,"龙卷风 (Twister)",
|
||||||
|
81,81,"怪物 (The Monster)",
|
||||||
|
82,82,"智慧的 (Wise)",
|
||||||
|
83,83,"飞蛾 (The Moth)",
|
||||||
|
84,84,"法官 (The Judge)",
|
||||||
|
85,85,"鱼腥/可疑的 (Fishy)",
|
||||||
|
86,86,"彩虹 (Rainbow)",
|
||||||
|
87,87,"发光的 (Glowing)",
|
||||||
|
88,88,"朋克/混混 (The Punk)",
|
||||||
|
89,89,"花哨的 (Fancy)",
|
||||||
|
90,90,"医生 (Doc)",
|
||||||
|
91,91,"肮脏的 (Dirty)",
|
||||||
|
92,92,"废柴/烂醉的 (Wasted)",
|
||||||
|
93,93,"无畏的 (Fearless)",
|
||||||
|
94,94,"锡牙 (Tin Tooth)",
|
||||||
|
95,95,"牛仔 (Cowboy)",
|
||||||
|
96,96,"鲨鱼 (The Shark)",
|
||||||
|
97,97,"风暴 (The Storm)",
|
||||||
|
98,98,"满是灰尘的 (Dusty)",
|
||||||
|
99,99,"蜘蛛 (The Spider)",
|
||||||
|
@@ -0,0 +1,6 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"进入浓密的酸性云层。甲板上的任何人承受 3 点伤害;没有抓住固定物的人被气流颠得东倒西歪。",hazard
|
||||||
|
2,2,"附近一艘云裔空中驳船上爬满了饥饿的巨蝉;白垩引擎起火,无线电操作员大声呼救。飞行员须成功进行一次机动检定以避开;若发生碰撞,豆子驳船承受 2 点创伤。",ship
|
||||||
|
3,3,"附近一艘云裔空中驳船上的炮手开火,把巨大弹丸射进垂死的虫子体内,几十只巨蝉愤怒地蜂拥向那艘船。下次投掷遭遇时改为投掷两次。",ship
|
||||||
|
4,7,"幼体巨蝉降落在船上,寻找尸体和白垩引擎;幼体被船底的逃生舱所吸引。",creature
|
||||||
|
8,10,"成年巨蝉在船体外部爬行,寻找白垩动力源;找到后会咬穿塑钢装甲并吞噬其中的能量。",creature
|
||||||
|
@@ -0,0 +1,6 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
0,1,"前帆(创伤上限 2)。被摧毁:它脱落了,增加了转向的难度。",sail
|
||||||
|
2,3,"前引擎(创伤上限 3)。被摧毁:它爆炸了,对附近所有人造成 2d10 伤害,飞船开始掉高度。",engine
|
||||||
|
4,5,"机身(创伤上限 5)。被摧毁:船体断成两截,从空中坠落。",hull
|
||||||
|
6,7,"后帆(创伤上限 2)。被摧毁:它脱落了,增加了转向的难度。",sail
|
||||||
|
8,10,"后引擎(创伤上限 3)。被摧毁:它爆炸了,对附近所有人造成 2d10 伤害。飞船开始掉高度。",engine
|
||||||
|
@@ -0,0 +1,4 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,3,"受威胁:撤退;靠近白垩、白垩技术或尸体:忽略干扰;弄湿:逃跑;被照明弹或异常强光致盲:逃跑。",reaction
|
||||||
|
4,6,"受威胁:呼唤虫群;靠近白垩、白垩技术或尸体:呼唤虫群;弄湿:甩干;被照明弹或异常强光致盲:僵住。",reaction
|
||||||
|
7,10,"受威胁:攻击;靠近白垩、白垩技术或尸体:吞噬源头;弄湿:攻击;被照明弹或异常强光致盲:攻击。",reaction
|
||||||
|
@@ -0,0 +1,21 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"代价——想得到它,就得先失去什么。",cost
|
||||||
|
2,2,"时限——有件事正在逼近,时间不站在你这边。",time
|
||||||
|
3,3,"注视——有什么在暗处看着你,而你还没发现它。",exposure
|
||||||
|
4,4,"分歧——同行者想要的,和你以为的不一样。",trust
|
||||||
|
5,5,"匮乏——你以为充足的东西,其实不够了。",resource
|
||||||
|
6,6,"敌意——环境本身开始与你作对。",environment
|
||||||
|
7,7,"插手——第三方带着自己的目的闯了进来。",rival
|
||||||
|
8,8,"旧账——过去的事追上了现在。",obligation
|
||||||
|
9,9,"真相——一个事实让整件事变了样。",revelation
|
||||||
|
10,10,"误认——你被当成了别的什么。",identity
|
||||||
|
11,11,"走漏——消息传到了不该知道的人耳里。",exposure
|
||||||
|
12,12,"条件——伸来的援手附带着代价。",bargain
|
||||||
|
13,13,"损坏——你依赖的某样东西失效了。",failure
|
||||||
|
14,14,"两难——你必须在两个坏结果里选一个。",choice
|
||||||
|
15,15,"牵连——代价落在了别人身上。",consequence
|
||||||
|
16,16,"节律——世界自身的运转打断了你。",world
|
||||||
|
17,17,"记忆——某样东西勾起了不该想起的事。",memory
|
||||||
|
18,18,"退路——你的位置或后路出了问题。",tactical
|
||||||
|
19,19,"诱惑——一条捷径出现了,代价不明。",temptation
|
||||||
|
20,20,"沉默——本该有回应的地方,什么都没有。",mystery
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"角从你的额头上突出来,导致陌生人不信任你。",body
|
||||||
|
2,2,"你的灵魂与附近的某个物体或人纠缠在一起。对它或他们造成的任何伤害也会对你造成同等伤害。",bond
|
||||||
|
3,3,"你的身体在诅咒下变年轻并恢复活力,使你看起来比实际年龄年轻得多。心智属性减去 10 点,速度属性增加 10 点。",body
|
||||||
|
4,4,"你的身体在诅咒下衰老和枯萎,使你看起来比实际年龄老得多。力量属性减去 10 点。你不能再是一名魔法师。",body
|
||||||
|
5,5,"你永久失去或再也无法获得你内心最渴望的东西。",fate
|
||||||
|
6,6,"你被变成了一只奇美拉,半人半兽(鸟、狗、蛇、猫、老鼠、狼、仓鼠或青蛙)。",body
|
||||||
|
7,7,"你的灵魂脱离了你的身体,你变成了一个徘徊灵。",fate
|
||||||
|
8,8,"你变成了一头野兽,被迫攻击附近的人,直到有人在你耳边说出温柔的话语。",mind
|
||||||
|
9,9,"你获得了非人的饥饿感。你每有一天不喝血或吃生肉,就会承受 1d10 伤害。",body
|
||||||
|
10,10,"你陷入了不自然的沉睡,无法醒来。在找到治疗方法之前,你不能再扮演这个角色。",fate
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"颜色:灰色。性情:无畏。",dove
|
||||||
|
2,2,"颜色:白色。性情:精力充沛。",dove
|
||||||
|
3,3,"颜色:黑色。性情:忠诚。",dove
|
||||||
|
4,4,"颜色:棕色。性情:耐心。",dove
|
||||||
|
5,5,"颜色:黄褐色。性情:聪明。",dove
|
||||||
|
6,6,"颜色:斑点。性情:迟钝。",dove
|
||||||
|
7,7,"颜色:带蓝色。性情:受惊的。",dove
|
||||||
|
8,8,"颜色:条纹。性情:淘气。",dove
|
||||||
|
9,9,"颜色:环纹。性情:好斗。",dove
|
||||||
|
10,10,"颜色:虹彩。性情:狂野。",dove
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"云裔士兵小队(2d10 人;战斗开始 60 分钟后另有 2d10 人增援)。本能 35,护甲值 2,创伤上限 3。",human;patrol
|
||||||
|
2,2,"云裔军官率领的巡逻队(小队超过 5 人时必有一名军官;1d10:1-5 经验丰富 本能 60,6-10 缺乏经验 本能 20;护甲值 5,创伤上限 3)。",human;officer
|
||||||
|
3,3,"农裔民兵——他们不想打,但被逼无奈。本能 42,护甲值 2,创伤上限 3。",human;militia
|
||||||
|
4,4,"幼体巨蝉,正在啃食一具新尸。本能 45,护甲值 3,创伤上限 3;每次受创时投 1d10,掷出 7 或更高则召来一只成年巨蝉。",creature;broodling
|
||||||
|
5,5,"成年巨蝉,搜寻白垩。本能 44,护甲值 7,创伤上限 5;角撞 2d10 近处,心灵传动 1d10 远距离。",creature;adult
|
||||||
|
6,6,"驮鸽群——可能是野生的,也可能有主人。",beast;dove
|
||||||
|
7,7,"水熊虫,从滑界漂来。创伤上限 2。",slip;beast
|
||||||
|
8,8,"徘徊灵,被你携带的某件遗物吸引。只有 1 点创伤,只受白垩、纹章、法术与古物的伤害。",slip;ghost
|
||||||
|
9,9,"换躯者,正在为下一具躯体物色人选。",human;shifter
|
||||||
|
10,10,"远古巨蝉。本能 64,护甲值 15,创伤上限 12;遭遇时附近所有人类必须进行一次恐慌检定。",creature;ancient
|
||||||
|
@@ -0,0 +1,34 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
0,2,"小型:蟋蟀面包(2 人份);中型:1d5 个孢子(第 41 页);大型:40 英尺长的高压线",
|
||||||
|
3,5,"小型:弹药;中型:1d5 份口粮;大型:风车",
|
||||||
|
6,8,"小型:烟草;中型:2 磅蟋蟀面粉;大型:信号光束",
|
||||||
|
9,11,"小型:白垩墨水碑文;中型:兽皮马鞍;大型:食物回收器",
|
||||||
|
12,14,"小型:未知的棕色液体;中型:巨蝉幼虫;大型:皇帝的油画",
|
||||||
|
15,17,"小型:1d5 颗智齿;中型:发条收音机;大型:扑翼机机翼",
|
||||||
|
18,20,"小型:1d10 根白垩;中型:厨房搅拌机;大型:捕风滑翔翼",
|
||||||
|
21,23,"小型:领巾;中型:1d10 张松鼠鸟皮毛;大型:1d5 个废弃机器人",
|
||||||
|
24,26,"小型:眼镜;中型:鹿狗;大型:坠毁的扑翼机",
|
||||||
|
27,29,"小型:扑翼机钥匙;中型:粉红塑料火烈鸟;大型:一只沉睡的成年巨蝉(第 63 页)",
|
||||||
|
30,32,"小型:玫瑰花瓣;中型:拐杖;大型:雨水收集桶",
|
||||||
|
33,35,"小型:一打照片;中型:1d5 穗成熟的玉米;大型:工业洒水器",
|
||||||
|
36,38,"小型:牵引绳和项圈;中型:军用步枪;大型:王座",
|
||||||
|
39,41,"小型:织毛衣针;中型:绊线陷阱;大型:白垩炮(第 78 页)",
|
||||||
|
42,44,"小型:脏抹布;中型:未爆炸的地雷;大型:拆解的太阳能电池板",
|
||||||
|
45,47,"小型:六个西红柿(3 人份);中型:幼年驮鸽;大型:驮鸽(第 28 页)",
|
||||||
|
48,50,"小型:厚皮手套;中型:蛇头手杖;大型:1d10 具巨蝉空壳",
|
||||||
|
51,53,"小型:葵花籽(4 人份);中型:一个随机的饰品纹章(第 44 页);大型:青铜胜利雕像",
|
||||||
|
54,56,"小型:塑钢医疗钩;中型:精心制作的被子;大型:骨皮巨人的指甲",
|
||||||
|
57,59,"小型:宽檐帽;中型:月光火炬;大型:石化的树根",
|
||||||
|
60,62,"小型:2d10 颗弹珠;中型:食物香料包;大型:结果的橘子树",
|
||||||
|
63,65,"小型:巨蝉卵;中型:骨皮舌头;大型:动力护甲(第 77 页)",
|
||||||
|
66,68,"小型:白垩指南针;中型:便携式阅读终端;大型:过热的白垩发电机",
|
||||||
|
69,71,"小型:一小盒用来吸的白垩粉;中型:旗帜:""革命的终结"";大型:蜻蜓外形的扑翼机",
|
||||||
|
72,74,"小型:稻米金属中提琴;中型:子弹制造机;大型:蝉外形的扑翼机",
|
||||||
|
75,77,"小型:感官诗体验球;中型:古董灯;大型:黄蜂外形的扑翼机",
|
||||||
|
78,80,"小型:颤音长笛;中型:感官诗头显;大型:古代的克隆培育槽",
|
||||||
|
81,83,"小型:玉梳;中型:尿液净化器;大型:泄漏的医疗舱",
|
||||||
|
84,86,"小型:用密码语言写的日记;中型:农用干草叉;大型:祖母钟",
|
||||||
|
87,89,"小型:巨蝉陶笛;中型:12 英尺的塑钢十字架;大型:直立式钢琴",
|
||||||
|
90,92,"小型:破烂的法术书:肢体生长(第 47 页);中型:水质测试仪;大型:感官诗娱乐系统",
|
||||||
|
93,95,"小型:镇静剂;中型:手持热力钻头;大型:损坏的漫游车",
|
||||||
|
96,99,"小型:贝雷帽;中型:白垩水晶;大型:塑钢镜子",
|
||||||
|
@@ -0,0 +1,42 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
0,2,"胶带",C
|
||||||
|
3,5,"解毒剂(在 6 小时内治愈中毒)",U
|
||||||
|
6,7,"子弹压榨机(将一件备用武器熔化成相当于 2 次装填弹药量的弹药)",U
|
||||||
|
8,8,"白垩压榨机(将白垩粉转化为精炼的白垩棍)",U
|
||||||
|
9,9,"攀爬钩",U
|
||||||
|
10,10,"指南针",R
|
||||||
|
11,11,"""瞌睡丸""(即使在不安全的地点也能提供安稳的睡眠)",R
|
||||||
|
12,12,"电子单筒望远镜",R
|
||||||
|
13,14,"面部迷彩涂料",U
|
||||||
|
15,18,"肥料",C
|
||||||
|
19,21,"渔网",C
|
||||||
|
22,24,"折叠梯",C
|
||||||
|
25,26,"食物回收器(每周一次,消耗 1 份口粮后获得 +1 口粮)",U
|
||||||
|
27,29,"胶水",C
|
||||||
|
30,33,"悬挂式淋浴器",C
|
||||||
|
34,37,"荧光棒",C
|
||||||
|
38,41,"打火机",C
|
||||||
|
42,42,"远程通讯器",R
|
||||||
|
43,44,"月光灯笼",U
|
||||||
|
45,45,"乐器",R
|
||||||
|
46,47,"药膏(涂抹 30 分钟后治愈 3 点伤害)",U
|
||||||
|
48,48,"""提神丸""(承受 +2 压力,60 分钟内获得 +10 速度、+10 心智)",R
|
||||||
|
49,49,"塑钢探测器",R
|
||||||
|
50,54,"怀表",C
|
||||||
|
55,56,"便携式阅读终端",U
|
||||||
|
57,60,"洗衣粉",C
|
||||||
|
61,62,"口粮打包机(将 10 份优质饮食转换为口粮时,获得两倍数量的口粮)",U
|
||||||
|
63,64,"防毒面罩(防止空气传播的白垩中毒和真菌感染)",U
|
||||||
|
65,66,"修理包(消耗以修复 1 件破损护甲)",U
|
||||||
|
67,70,"睡袋",C
|
||||||
|
71,73,"自带保温的汤瓶",C
|
||||||
|
74,77,"锯子",C
|
||||||
|
78,80,"其他现实的滑界物品(唱片、明信片、草坪装饰、汽车零件等)",U
|
||||||
|
81,84,"铲子",C
|
||||||
|
85,87,"太阳能灯笼",U
|
||||||
|
88,89,"孢子收集器",U
|
||||||
|
90,90,"手术管(使用时治愈 1 点创伤)",R
|
||||||
|
91,94,"30 英尺的绳索",C
|
||||||
|
95,95,"追踪信标",R
|
||||||
|
96,96,"尿液净化器(每周一次,不消耗口粮时可忽略未进食的压力和伤害)",R
|
||||||
|
97,99,"羊毛毯",C
|
||||||
|
@@ -0,0 +1,10 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,2,"能够在最后一刻修正错误。",fixed
|
||||||
|
3,3,"效果击中了两倍的目标。",amplified
|
||||||
|
4,4,"效果的威力翻倍。",amplified
|
||||||
|
5,5,"预期的效果没有发生。取而代之的是,一个随机的法术或纹章效果击中了目标。",misdirected
|
||||||
|
6,6,"效果发生了,但击中了一个随机目标。",misdirected
|
||||||
|
7,7,"效果发生了,但让人感到不安。进行一次恐慌检定。",disturbing
|
||||||
|
8,8,"效果发生了,但对周围的人来说是痛苦和令人不安的。你承受 1 点创伤,每个目击者承受 1 点压力并进行一次恐慌检定。",disturbing
|
||||||
|
9,9,"效果发生了,但对周围的人来说是痛苦和令人不安的。你承受 1 点创伤,每个目击者承受 1 点压力并进行一次恐慌检定。",disturbing
|
||||||
|
10,10,"效果发生了,但带来了一些不自然的东西。你被诅咒了;在诅咒表上投掷。",cursed
|
||||||
|
@@ -0,0 +1,5 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,3,"人类:逃跑。非人类:逃跑。",flee
|
||||||
|
4,6,"人类:投降。非人类:继续战斗。",surrender
|
||||||
|
7,8,"人类:继续战斗。非人类:被激怒。",fight
|
||||||
|
9,10,"人类:呼叫求援。非人类:呼叫求援。",reinforce
|
||||||
|
@@ -0,0 +1,101 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
0,0,"鲁特 (Root/根)",farm
|
||||||
|
1,1,"图斯 (Tooth/牙)",farm
|
||||||
|
2,2,"克内尔 (Kernel/仁)",farm
|
||||||
|
3,3,"瑞迪什 (Radish/萝卜)",farm
|
||||||
|
4,4,"伊尔 (Eel/鳗鱼)",farm
|
||||||
|
5,5,"沃姆 (Worm/蠕虫)",farm
|
||||||
|
6,6,"巴克 (Bark/树皮)",farm
|
||||||
|
7,7,"科恩 (Corn/玉米)",farm
|
||||||
|
8,8,"梅隆 (Melon/甜瓜)",farm
|
||||||
|
9,9,"弗利 (Flea/跳蚤)",farm
|
||||||
|
10,10,"戈尔德 (Gourd/葫芦)",farm
|
||||||
|
11,11,"斯托克 (Stalk/茎秆)",farm
|
||||||
|
12,12,"埃格 (Egg/蛋)",farm
|
||||||
|
13,13,"布兰奇 (Branch/树枝)",farm
|
||||||
|
14,14,"夸里 (Quarry/采石场)",farm
|
||||||
|
15,15,"海伊 (Hay/干草)",farm
|
||||||
|
16,16,"桑恩 (Sun/太阳)",farm
|
||||||
|
17,17,"格雷恩 (Grain/谷物)",farm
|
||||||
|
18,18,"摩斯 (Moss/苔藓)",farm
|
||||||
|
19,19,"斯特林 (Stream/溪流)",farm
|
||||||
|
20,20,"马德 (Mud/泥巴)",farm
|
||||||
|
21,21,"威洛 (Willow/柳树)",farm
|
||||||
|
22,22,"奥克 (Oak/橡树)",farm
|
||||||
|
23,23,"西尔特 (Silt/淤泥)",farm
|
||||||
|
24,24,"霍格 (Hog/野猪)",farm
|
||||||
|
25,25,"斯莫克 (Smoke/烟)",cloud
|
||||||
|
26,26,"萨菲尔 (Sapphire/蓝宝石)",cloud
|
||||||
|
27,27,"阿梅西斯特 (Amethyst/紫水晶)",cloud
|
||||||
|
28,28,"克劳德 (Cloud/云)",cloud
|
||||||
|
29,29,"斯派尔 (Spire/尖塔)",cloud
|
||||||
|
30,30,"提尔斯 (Tears/眼泪)",cloud
|
||||||
|
31,31,"莉奎德 (Liquid/液体)",cloud
|
||||||
|
32,32,"奈福斯 (Knives/众刀)",cloud
|
||||||
|
33,33,"布雷德 (Blade/刀锋)",cloud
|
||||||
|
34,34,"弗莱格 (Flag/旗帜)",cloud
|
||||||
|
35,35,"温德 (Wind/风)",cloud
|
||||||
|
36,36,"鲁克 (Rook/渡鸦)",cloud
|
||||||
|
37,37,"艾斯 (Ice/冰)",cloud
|
||||||
|
38,38,"密斯特 (Myst/迷雾)",cloud
|
||||||
|
39,39,"迪乌 (Dew/露水)",cloud
|
||||||
|
40,40,"斯派克 (Spike/尖刺)",cloud
|
||||||
|
41,41,"莱恩 (Line/线条)",cloud
|
||||||
|
42,42,"沃姆 (Worm/蠕虫)",cloud
|
||||||
|
43,43,"科布尔 (Cobble/鹅卵石)",cloud
|
||||||
|
44,44,"西尔弗 (Silver/银)",cloud
|
||||||
|
45,45,"鲁斯 (Ruse/诡计)",cloud
|
||||||
|
46,46,"兰斯 (Lance/长矛)",cloud
|
||||||
|
47,47,"印克 (Ink/墨水)",cloud
|
||||||
|
48,48,"莱德 (Lead/铅)",cloud
|
||||||
|
49,49,"普林斯 (Prince/王子)",cloud
|
||||||
|
50,50,"吉尔 (Gil)",common
|
||||||
|
51,51,"布莱恩 (Brine/卤水)",common
|
||||||
|
52,52,"穆恩 (Moon/月亮)",common
|
||||||
|
53,53,"奥洛 (Olo)",common
|
||||||
|
54,54,"诺特 (Knott)",common
|
||||||
|
55,55,"波托 (Boto)",common
|
||||||
|
56,56,"克莱 (Clay/粘土)",common
|
||||||
|
57,57,"斯通 (Stone/石头)",common
|
||||||
|
58,58,"莱特宁 (Lightning/闪电)",common
|
||||||
|
59,59,"福克 (Fork/叉子)",common
|
||||||
|
60,60,"庞蒂 (Ponti)",common
|
||||||
|
61,61,"毕 (Bee/蜜蜂)",common
|
||||||
|
62,62,"巴布尔 (Bubble/泡泡)",common
|
||||||
|
63,63,"威斯普 (Wisp/缕)",common
|
||||||
|
64,64,"阿贝尔 (Abell)",common
|
||||||
|
65,65,"洛夫 (Loaf/面包)",common
|
||||||
|
66,66,"罗斯 (Rose/玫瑰)",common
|
||||||
|
67,67,"艾薇 (Ivy/常春藤)",common
|
||||||
|
68,68,"福格 (Fog/雾)",common
|
||||||
|
69,69,"波特 (Pot/锅)",common
|
||||||
|
70,70,"恩伯 (Ember/余烬)",common
|
||||||
|
71,71,"索恩 (Thorn/荆棘)",common
|
||||||
|
72,72,"贾雅 (Jaya)",common
|
||||||
|
73,73,"斯康克 (Skunk/臭鼬)",common
|
||||||
|
74,74,"斯庞 (Spoon/勺子)",common
|
||||||
|
75,75,"琳 (Rin)",ancient
|
||||||
|
76,76,"斯文 (Sven)",ancient
|
||||||
|
77,77,"迪诺 (Dino)",ancient
|
||||||
|
78,78,"露西 (Lucy)",ancient
|
||||||
|
79,79,"林 (Lin)",ancient
|
||||||
|
80,80,"云 (Yunn)",ancient
|
||||||
|
81,81,"埃瓦德 (Evard)",ancient
|
||||||
|
82,82,"纳吉 (Nagi)",ancient
|
||||||
|
83,83,"伊塞尔布雷德 (Iselbraid)",ancient
|
||||||
|
84,84,"格尔 (Ger)",ancient
|
||||||
|
85,85,"梅 (Mei)",ancient
|
||||||
|
86,86,"斯泰尔默 (Stellmer)",ancient
|
||||||
|
87,87,"克兰西 (Clancy)",ancient
|
||||||
|
88,88,"艾尔斯贝斯 (Elsbeth)",ancient
|
||||||
|
89,89,"哈诺 (Hano)",ancient
|
||||||
|
90,90,"比拉 (Bila)",ancient
|
||||||
|
91,91,"达什 (Darsh)",ancient
|
||||||
|
92,92,"维尔 (Veer)",ancient
|
||||||
|
93,93,"杰斯克 (Jesk)",ancient
|
||||||
|
94,94,"里扬 (Riyon)",ancient
|
||||||
|
95,95,"汉内洛尔 (Hannelore)",ancient
|
||||||
|
96,96,"卡拉 (Carla)",ancient
|
||||||
|
97,97,"诺伊斯 (Neus)",ancient
|
||||||
|
98,98,"奥特 (Ott)",ancient
|
||||||
|
99,99,"霍斯特 (Horst)",ancient
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"结巴。在接下来的 1d10 分钟内,你无法清晰地说话。",mild
|
||||||
|
2,2,"粘人。你无法忍受孤立。每当你独处时都会承受 1 点压力,直到你可以休息为止。",mild
|
||||||
|
3,3,"残酷。你大喊大叫并指责周围的人。你减少 1 点压力,但让旅行队里的其他人每人承受 1 点压力。",mild
|
||||||
|
4,4,"笨拙。掉落你正拿着的任何东西。你在进行与平衡和协调相关的检定和豁免时具有劣势,直到你可以休息为止。",mild
|
||||||
|
5,5,"暴怒。你鲁莽地向前冲锋,在进行力量检定时具有劣势,直到你可以休息为止。",mild
|
||||||
|
6,6,"恐惧。你试图逃跑。不惜一切代价离开当前的房间或地点。",severe
|
||||||
|
7,7,"僵硬。你变得毫无反应。在接下来的 2 个回合内你无法采取任何行动。",severe
|
||||||
|
8,8,"受创。你的精神、情感或灵魂受到了毁灭性的打击。承受 1 点创伤。",severe
|
||||||
|
9,9,"狂乱。你使用拳头(1d5 伤害)攻击最近的目标,无论敌友。在被拉开之前不要停止攻击。",severe
|
||||||
|
10,10,"冷酷。你变得铁石心肠、冷酷无情。你不能再扮演这个角色了,虽然也许有一天你们还会再见面。",severe
|
||||||
|
@@ -0,0 +1,29 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"呼唤昆虫之强效纹章(白垩 3):使用者方圆 1 英里内的所有昆虫(包括巨蝉)都会被召唤到使用者所在的位置。",powerful;chalk-3
|
||||||
|
2,2,"热情消退之强效纹章(白垩 3):指定附近的一名角色为目标,使他们对自己曾经最充满热情的事物永久失去兴趣。",powerful;chalk-3
|
||||||
|
3,3,"磁力护甲之强效纹章(白垩 3):在纹章周围产生一个持续 1 小时的强大磁场。附近所有的金属都会被吸引到纹章上,其力量足以将人撞倒、压碎骨头,并使掩体失效。",powerful;chalk-3
|
||||||
|
4,4,"白垩溢出之强效纹章(白垩 3):附近所有的白垩起泡并融化成暂时的液体状态,使其更容易定位和收集。快速液化的白垩会对大多数白垩驱动的机器造成严重损坏。",powerful;chalk-3
|
||||||
|
5,5,"挑剔农夫之强效纹章(白垩 3):根据使用者的心意改变天气。",powerful;chalk-3
|
||||||
|
6,6,"野心挫败之标准纹章(白垩 2):指定附近的一名角色为目标,使他们重温一段遗憾或失败的时刻。",standard;chalk-2
|
||||||
|
7,7,"机器故障之标准纹章(白垩 2):指定附近的一台机械设备为目标,导致其发生故障 1 小时。",standard;chalk-2
|
||||||
|
8,8,"隐藏真相之标准纹章(白垩 2):指定附近的一名角色为目标,迫使他们坦白一个重大秘密。使用者的意愿可以影响目标说出什么秘密。",standard;chalk-2
|
||||||
|
9,9,"期冀伴侣之标准纹章(白垩 2):指定附近的一段浪漫关系为目标,帮助其中的成员看到彼此最好的一面,让他们对未来充满希望。",standard;chalk-2
|
||||||
|
10,10,"狂笑士兵之标准纹章(白垩 2):指定附近的一群人为目标,导致他们放下武器,跳舞、唱歌和大笑 1 小时。",standard;chalk-2
|
||||||
|
11,11,"说服小贩之标准纹章(白垩 2):指定附近最多 5 名角色为目标,让他们充满购买某件特定物品的欲望。",standard;chalk-2
|
||||||
|
12,12,"缠结根须之标准纹章(白垩 2):指定附近所有的植物生命为目标,使其根部前来协助使用者。它们可以缠绕并攻击敌人,造成 1d10 伤害。",standard;chalk-2
|
||||||
|
13,13,"扭曲胃部之标准纹章(白垩 2):指定附近的一名角色为目标,导致他们的胃部肌肉痉挛并痛苦地抽筋 15 分钟,或直到他们呕吐为止。",standard;chalk-2
|
||||||
|
14,14,"禁锢四肢之饰品纹章(白垩 1):指定附近的一名角色为目标,阻止他们移动 15 分钟。",trinket;chalk-1
|
||||||
|
15,15,"好斗声音之饰品纹章(白垩 1):指定附近的一名角色为目标,将其声音放大最多五倍。这种声音会对相邻的目标造成 1d5 伤害。",trinket;chalk-1
|
||||||
|
16,16,"盲目光芒之饰品纹章(白垩 1):附近所有面对该纹章的目标都会致盲 1 分钟,同时纹章会在正前方发出耀眼的锥形频闪光芒。",trinket;chalk-1
|
||||||
|
17,17,"关节灼烧之饰品纹章(白垩 1):指定附近的一名角色为目标,使其手肘和膝盖产生痛感,在 15 分钟内进行攻击时具有劣势。",trinket;chalk-1
|
||||||
|
18,18,"晴朗天空之饰品纹章(白垩 1):指定射程外的一片云层为目标,使其分开,创造出一个持续 1 小时的晴空圆圈。",trinket;chalk-1
|
||||||
|
19,19,"哭泣儿童之饰品纹章(白垩 1):指定附近所有的婴儿和儿童为目标,导致他们变得焦躁不安并开始哭泣 15 分钟。",trinket;chalk-1
|
||||||
|
20,20,"暴怒暴徒之饰品纹章(白垩 1):指定附近最多 5 名角色为目标,让他们在 15 分钟内充满燃烧的愤怒。",trinket;chalk-1
|
||||||
|
21,21,"恐惧睡眠之饰品纹章(白垩 1):指定附近一名熟睡的角色为目标,让他们的梦境中充满令人不安的图像和可怕的想法。",trinket;chalk-1
|
||||||
|
22,22,"皮肤缝合之饰品纹章(白垩 1):指定附近的一名角色为目标,治愈他们 1d5 的伤害。任何创伤(Wounds)依然保留。",trinket;chalk-1
|
||||||
|
23,23,"遗失物品之饰品纹章(白垩 1):指定附近的一名角色为目标,使他们相信自己丢失了一件单件物品。在接下来的 30 分钟内,他们无法感觉到或看到该物品,即使它就在他们身上。",trinket;chalk-1
|
||||||
|
24,24,"融化纹章之饰品纹章(白垩 1):指定附近的一个纹章为目标,使其变得通红炽热。任何接触该纹章的人都会承受 1d10 伤害。",trinket;chalk-1
|
||||||
|
25,25,"完美概率之饰品纹章(白垩 1):以使用者自己为目标,赋予他们一瞥未来的能力。使用者选择自己的一项属性或豁免,并在掷骰时带有优势。下次他们需要使用该属性或豁免时,可以选择使用这个结果。",trinket;chalk-1
|
||||||
|
26,26,"刺鼻气味之饰品纹章(白垩 1):指定附近的一个封闭空间为目标,使其充满令人无法忍受的恶臭。",trinket;chalk-1
|
||||||
|
27,27,"加速腐烂之饰品纹章(白垩 1):指定最多 100 磅死去的有机物质为目标,导致它在一个小时内迅速腐烂。",trinket;chalk-1
|
||||||
|
28,28,"突然悲伤之饰品纹章(白垩 1):指定附近的一名角色为目标,使他们在 15 分钟内充满恐惧、绝望和悲伤。在此期间,他们会久坐不动且被自己的状况折磨。效果结束后,目标失去 2 点压力。",trinket;chalk-1
|
||||||
|
@@ -0,0 +1,21 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"一具巨蝉蜕下的空壳,内壁还沾着黏稠的白垩。",chalk;location
|
||||||
|
2,2,"远处传来低沉的嗡鸣,像是整座蜂巢在你颅骨里震动。",slip;tension
|
||||||
|
3,3,"一座半埋的帝国豪宅,塑钢门被撬开,里面被洗劫一空。",ruin;location
|
||||||
|
4,4,"一名信使,驮鸽的翅膀用绷带草草绑着。",npc;courier
|
||||||
|
5,5,"一具刚死的尸体,口袋里塞着半张画有六角格的地图。",corpse;map
|
||||||
|
6,6,"天空裂开一道缝,掉下一台无法辨认的机器,落地前就消失了。",slip
|
||||||
|
7,7,"一块指路牌,箭头被人用白垩涂改成相反的方向。",chalk;trap
|
||||||
|
8,8,"骨堆——虫群僧侣替巨蝉备下的供品。",shrine;debt
|
||||||
|
9,9,"土壤里析出的白垩结晶,像霜一样闪着光。",chalk;resource
|
||||||
|
10,10,"一名换躯者,正对着一潭死水检查自己新面孔的缝合线。",npc;shifter
|
||||||
|
11,11,"徘徊灵在低空盘旋,被某件遗物拽住。",slip;ghost
|
||||||
|
12,12,"一座熄火的白垩发电机,外壳上爬满了幼虫。",ruin;chalk
|
||||||
|
13,13,"农裔村庄的废墟,谷仓被咬穿一个大洞。",ruin;village
|
||||||
|
14,14,"世纪虫群犁出的深沟,两侧的土壤被翻成焦黑。",swarm;scar
|
||||||
|
15,15,"一只受伤的驮鸽,认出你之后发出呜咽。",beast;dove
|
||||||
|
16,16,"一扇立在小树林里的门,门后不是树。",slip;door
|
||||||
|
17,17,"云裔巡逻队留下的营地,篝火还温着。",human;patrol
|
||||||
|
18,18,"一场酸雨刚开始落下,气味刺鼻。",weather;hazard
|
||||||
|
19,19,"一枚半埋在泥里的纹章,骨皮边缘仍然发烫。",relic;sigil
|
||||||
|
20,20,"一个浑身涂满泥巴的孩子,说自己是村庄唯一的幸存者。",npc;child
|
||||||
|
@@ -0,0 +1,28 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"动物语言(白垩 1):指定施法者或附近的一名角色为目标,使他们在 30 分钟内能够理解并说出附近动物的真实语言。 后遗症:在接下来的 3 天里,附近的动物会跟着施法者,吠叫、嚎叫、喵喵叫和嘶嘶叫。",chalk-1
|
||||||
|
2,2,"活化蔬菜(白垩 1):指定附近最多 3 个蔬菜为目标,让它们在 6 小时内拥有生命。它们会发出咕噜声,会走路,并会试图帮忙。 后遗症:施法者在 5 周内无法自愿食用蔬菜。",chalk-1
|
||||||
|
3,3,"引导治疗(白垩 1):指定一名相邻的角色为目标,吸收他们的痛苦和疾病。该角色可恢复最多 9 点伤害,但保留任何已有的创伤。 后遗症:施法者每治疗 9 点伤害就会承受 3 点伤害。",chalk-1
|
||||||
|
4,4,"死者之声(白垩 2):指定一具刚死不久的相邻尸体为目标,让他们的头部复活一小时。死者只会分享他们在生前会分享的内容。 后遗症:施法者在接下来的 2 周内所有恐惧豁免具有劣势。",chalk-2
|
||||||
|
5,5,"梦境间谍(白垩 1):指定一名相邻的熟睡角色为目标,允许施法者进入他们的梦境 30 分钟。 后遗症:施法者在 1 个月内的现实豁免具有劣势。",chalk-1
|
||||||
|
6,6,"额外器官(白垩 3):指定施法者或一名相邻的角色为目标,永久赋予他们以下改造之一: ;• 第二层皮肤(每个创伤所能承受的伤害上限增加 2 点)。 ;• 新心脏(力量 +5)。 ;• 第三片肺(速度 +5)。 ;• 大脑褶皱(心智 +10)。 ;• 粗壮骨骼(最大创伤上限增加至 4 点)。 后遗症:施法者在未来所有决定承受何种创伤的投掷中必须承受额外的劣势,且总是取更高的结果。",chalk-3
|
||||||
|
7,7,"地板门(白垩 2):指定施法者在附近坚固、无机物表面画的一扇白垩门为目标,将其转化为传送门。第一个接触传送门的物体将瞬间传送到施法者画的匹配门处。 后遗症:施法者在 3 天内无法自愿穿过门口或拱门。",chalk-2
|
||||||
|
8,8,"鼠辈形态(白垩 2):指定施法者或附近的一名角色为目标,将其变成老鼠或松鼠 10 分钟。他们保留人类的心智,但无法发出人类的声音。 后遗症:施法者的牙齿会在一个月内脱落,重新长出的牙齿长度是原来的两倍。",chalk-2
|
||||||
|
9,9,"巨大化(白垩 2):指定一株相邻的植物或动物为目标,使其在 5 分钟内生长到正常大小的 10 倍。 后遗症:施法者会痛苦地腹胀,并在 3 天内无法进食。",chalk-2
|
||||||
|
10,10,"生长鳃(白垩 2):指定施法者或一名相邻的角色为目标,赋予他们鳃和蹼脚,持续 24 小时。 后遗症:在法术结束后的 1 小时内,施法者将无法呼吸空气。",chalk-2
|
||||||
|
11,11,"肢体生长(白垩 3):指定施法者为目标,使其躯干上长出一条新的肢体,持续 1 周。 后遗症:施法者的新肢体在 1 周后枯萎脱落,造成一道必须被治愈的伤口。",chalk-3
|
||||||
|
12,12,"地狱武库(白垩 2):指定施法者或一名相邻的角色为目标,导致他们从体内发射出一轮铁弹齐射(2d10 伤害,远距离)。如果目标事先吞下一把黑火药,则造成 4d10 伤害。 后遗症:目标承受 1 点创伤。如果施法者不是目标,他们也会承受 1 点创伤。附近的所有盟友承受 2 点压力并必须进行一次恐惧豁免。",chalk-2
|
||||||
|
13,13,"照明(白垩 1):指定施法者或附近的一个物体为目标,使其在 30 分钟内发出明亮的光。 后遗症:施法者会被无害的萤火虫跟踪 1 周。",chalk-1
|
||||||
|
14,14,"模仿形态(白垩 3):指定施法者为目标,允许他们改变自己的外貌,看起来和他们能看到的一个人一模一样,持续 1 小时。 后遗症:施法者会在梦中梦到被模仿之人的记忆,持续 1 个月。",chalk-3
|
||||||
|
15,15,"不完美的躯体转移(白垩 2):指定一具相邻的尸体为目标,将施法者的心智转移到其中。施法者原来的躯体死亡。 后遗症:施法者永久忘记自己过去的一段随机记忆。",chalk-2
|
||||||
|
16,16,"隐形(白垩 2):指定施法者或附近的一名角色为目标,使他们隐形 5 分钟。他们携带的任何物品也会隐形。 后遗症:施法者会在 1 周内感觉自己一直被注视。",chalk-2
|
||||||
|
17,17,"悬浮(白垩 1):指定施法者或附近的一个物体为目标,使其悬浮在离地 1 英尺高的空中,持续 10 分钟。 后遗症:施法者会感到头晕,并在 1 小时内进行与平衡相关的检定时具有劣势。",chalk-1
|
||||||
|
18,18,"闪电刃(白垩 2):指定一把相邻的近战武器为目标,使电弧包裹其边缘 15 分钟。该武器造成额外的 1d10 伤害并无视金属护甲。 后遗症:在接下来的 3 天里,施法者触摸到的任何电子技术设备都会被烧毁。",chalk-2
|
||||||
|
19,19,"魔法师标记(白垩 1):指定施法者为目标,在他们的灵魂上留下一个暂时的、不可见的标记,施法者可以在任何距离感知到该标记。 后遗症:施法者会感到标记位置有一种幻影般的刺痛感,持续 1d10 天。",chalk-1
|
||||||
|
20,20,"镜像交谈(白垩 1):指定一个相邻的反射面,以及在 1 英里内施法者已知晓的另一个反射面。现在,两面镜子都能反射出对方所看到的画面,并且可以在它们之间传递声音。 后遗症:在接下来的 3 天里,施法者能看到绝望的徘徊灵被困在反射面中。他们在镜子附近时,恐惧豁免具有劣势。",chalk-1
|
||||||
|
21,21,"变形术(白垩 4):指定附近的一名角色或生物为目标,将他们变成大小相等的一种不同生物,持续 1 小时。目标保留其原本的心智。 后遗症:施法者会带有所变生物的某种轻微物理特征,持续 1 周(如鳞片、羽毛、大眼睛等)。",chalk-4
|
||||||
|
22,22,"冰糖涂层(白垩 1):指定施法者或一名相邻的角色为目标,将其皮肤覆盖上一层薄薄的、甜美坚硬的糖壳 1 小时。提供 5 点护甲值(AP)。 后遗症:施法者在 1 周内对昆虫具有不可抗拒的吸引力。",chalk-1
|
||||||
|
23,23,"变脸(白垩 1):指定施法者为目标,允许他们在 1 小时内微妙地改变自己的面部特征。 后遗症:施法者在镜子里的倒影似乎会自己移动,持续 1d10 天。",chalk-1
|
||||||
|
24,24,"昏睡克隆体(白垩 2):指定施法者为目标,创造出一个昏昏欲睡的、半真实的自我克隆体,在 10 分钟内服从他们的口头命令。该克隆体不能说话或战斗。 后遗症:施法者感到精疲力竭,下次睡觉时必须额外多休息 2 小时。",chalk-2
|
||||||
|
25,25,"生命火花(白垩 3):指定一只刚死不久的动物或植物为目标,将其复活,但精神状态""不正常""。它会听从简单的命令。 后遗症:施法者会被他们复活之物的梦境萦绕,持续 1 个月。",chalk-3
|
||||||
|
26,26,"胃部传送门(白垩 2):指定施法者为目标,将他们的胃变成一个通往随机空旷地点的传送门,持续 1 小时。他们吃下的任何东西都会沉积在那里。 后遗症:施法者在 2 周内品尝不到食物的味道。",chalk-2
|
||||||
|
27,27,"掷火(白垩 1):指定附近的一名角色或物体为目标,将其吞没在火焰中。造成 2d10 伤害。 后遗症:施法者的嘴巴会酸痛起泡 1 天。",chalk-1
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"酸液孢子(不常见):在一小时内腐蚀掉 6 英寸厚的材料。",U;hazard
|
||||||
|
2,2,"香气孢子(常见):影响附近生物的心智,使他们闻到自己最喜欢的香味。",C;utility
|
||||||
|
3,3,"野猪牛肉孢子(不常见):接触水时产生 2 份单日口粮。",U;food
|
||||||
|
4,4,"死亡孢子(稀有):放入液体中时散发出甜蜜的毒药。受害者每小时承受 3 点伤害,除非得到治疗。",R;hazard
|
||||||
|
5,5,"爆炸孢子(不常见):接触火焰时爆炸,对相邻目标造成 2d10 伤害。",U;weapon
|
||||||
|
6,6,"仿制鸽肉孢子(常见):接触水时产生 1 份单日口粮。",C;food
|
||||||
|
7,7,"净化孢子(常见):过滤并吞噬液体中的辐射和其他毒素。保持活性整整一天。",C;utility
|
||||||
|
8,8,"海妖孢子(常见):发出刺耳的尖叫声持续 15 分钟,对任何在它相邻位置呆上一分钟的人造成 2 点伤害。",C;hazard
|
||||||
|
9,9,"睡眠孢子(不常见):让附近所有的活物沉睡 15 分钟。",U;weapon
|
||||||
|
10,10,"烟雾孢子(常见):激活时用浓烈的紫色烟雾充满整个房间。",C;utility
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"一个让你掉落手中物品的创伤。",physical
|
||||||
|
2,2,"一个把你击倒在地的创伤。在下一回合你不能采取任何行动。",physical
|
||||||
|
3,3,"一个你现在可以忽略、但仍将伴随你的创伤。在 30 分钟后重新投掷该创伤。",mental
|
||||||
|
4,4,"一个导致心灵改变的创伤。重新投掷你的心灵属性(加上任何相关的年龄调整)。",mental
|
||||||
|
5,5,"一个动摇你信念的创伤。重新投掷你的心智属性(加上任何相关的年龄调整)。",mental
|
||||||
|
6,6,"一个让你减速的创伤。你的移动速度减半,直到你接受医疗治疗。",physical
|
||||||
|
7,7,"一个让你恐慌的创伤。承受 1 点压力并进行一次恐慌检定。",severe
|
||||||
|
8,8,"一个让目击者感到不安的创伤。附近所有的人类都要进行一次恐慌检定。",severe
|
||||||
|
9,9,"一个暂时结束你冒险的创伤。在下一次游戏之前你不能再扮演这个角色。",severe
|
||||||
|
10,10,"一个杀死你的创伤。除非你被诅咒,否则你不能再扮演这个角色。",severe
|
||||||
|
@@ -0,0 +1,33 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
0,10,"一只水熊虫。一种柔软、悬浮的生物,与滑界相协调。",
|
||||||
|
11,20,"一只值得信赖的驮鸽,满载着你的财物。",
|
||||||
|
21,30,"一个诅咒。在诅咒表投 1d10。",
|
||||||
|
31,35,"一封来自从未谋面笔友的充满激情的求爱信。",
|
||||||
|
36,40,"一把布满灰尘、永远调不准音的小提琴。",
|
||||||
|
41,45,"一个极其精致的大理石巨蝉卵仿制品。也许有一天你能用真家伙把它换掉。",
|
||||||
|
46,50,"三幅超大号的油画,一幅画着你的父母,另外两幅画着他们近乎完美的克隆体。",
|
||||||
|
51,55,"一名勇敢、年迈且疲惫不堪的家族卫兵。",
|
||||||
|
56,60,"一只疲惫的老驴蟹,它又踢又咬,不断地乞讨食物。",
|
||||||
|
61,65,"一个画着脸的干葫芦瓶,根据葫芦的朝向,脸会在微笑和皱眉之间切换。",
|
||||||
|
66,68,"一本具有叛国性质的皇室血统谱系书,其对细节的痴迷与被篡改的宫廷记录相冲突。",
|
||||||
|
69,70,"一个密封的骨灰盒,装满了你心爱宠物的骨灰。",
|
||||||
|
71,72,"一个天鹅绒袋子,里面装着你被拔掉的智齿。",
|
||||||
|
73,74,"一只巨大的饮水角杯,是从一只古老的巨蝉身上割下来的战利品。",
|
||||||
|
75,76,"满满一嘴的金牙。",
|
||||||
|
77,78,"八个手戳纹身,代表你在云裔监狱里度过的每一年。",
|
||||||
|
79,80,"一把雕花镀银口琴,上面写着""愿你的嘴里永远有曲可吹""。",
|
||||||
|
81,82,"一袋致幻花粉(3 剂)。吸入时投掷 1d10;如果掷出 8 或更高,你经历一次糟糕的幻觉体验并承受 3 点压力。否则,你失去一半的压力(向下取整)。",
|
||||||
|
83,84,"五颗被认为已灭绝的树的种子,以其气味极其刺鼻的果实而闻名。",
|
||||||
|
85,86,"一个装有嗡嗡蜂的柳条笼子;如果保持平静,它们的巢穴能产出最甜的蜂蜜。",
|
||||||
|
87,88,"一份纹在你血肉上的契约。如果你未能履行你的职责,诅咒将降临到你身上。",
|
||||||
|
89,89,"一个华丽但完全没必要的丝绸眼罩。",
|
||||||
|
90,90,"十二件印有花押字和时尚星星图案的行李,搬运起来极其痛苦。",
|
||||||
|
91,91,"一只灰松鼠鸟,喜欢睡在你的衬衫里,从你的袖子里偷看外面。",
|
||||||
|
92,92,"一个用魔法密封的行李箱,里面装满了小玩意儿。",
|
||||||
|
93,93,"一份皇家通行令,是从一位受欢迎的阿姨那里胁迫来的。",
|
||||||
|
94,94,"乱七八糟的幻象——你在一个穿行于黑暗深渊的金属容器中死去的幻象。",
|
||||||
|
95,95,"一本绝望的魔法研究巨著,用鲜血书写,用皮肤装订,用骨头扣合。",
|
||||||
|
96,96,"一名年轻的魔法师学徒,一有机会就会练习他唯一懂得的那个法术。",
|
||||||
|
97,97,"一个充满敌意的徘徊灵,总是对看到你失败感到兴奋。",
|
||||||
|
98,98,"一只极其倒霉的粉红塑料火烈鸟,是从滑界里掉出来的。你到底为什么还留着它?",
|
||||||
|
99,99,"莫迪凯,被刮去眼睛的作祟人偶。",
|
||||||
|
@@ -0,0 +1,11 @@
|
|||||||
|
min,max,text,tags
|
||||||
|
1,1,"黄云压顶,闷热无风。",clear;heat
|
||||||
|
2,2,"云隙间漏下苍白的日光。",clear
|
||||||
|
3,3,"酸雨。在户外每待 1 小时承受 1 点伤害,掩体可免。",rain;hazard
|
||||||
|
4,4,"浓雾,能见度降到近处。",fog
|
||||||
|
5,5,"远处天际传来巨蝉的嗡鸣。",omen;swarm
|
||||||
|
6,6,"正午灼热,长途行动前需通过一次躯体豁免。",heat
|
||||||
|
7,7,"滑界涟漪——周围的现实被扭曲。",slip
|
||||||
|
8,8,"灰雨连绵,衣衫湿透,篝火难以生起。",rain
|
||||||
|
9,9,"寒风骤起,气温骤降。",cold
|
||||||
|
10,10,"世纪虫群的嗡鸣震动大地,万物噤声。",swarm;omen
|
||||||
|
Generated
+6
@@ -8,6 +8,12 @@ importers:
|
|||||||
|
|
||||||
.: {}
|
.: {}
|
||||||
|
|
||||||
|
games/cloud-empress:
|
||||||
|
dependencies:
|
||||||
|
'@solo/oracle':
|
||||||
|
specifier: workspace:*
|
||||||
|
version: link:../../packages/oracle
|
||||||
|
|
||||||
games/generic:
|
games/generic:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@solo/oracle':
|
'@solo/oracle':
|
||||||
|
|||||||
Reference in New Issue
Block a user