- Foundry v13/v14 compatibility (verified on 14.364) - Complete "Ringworld '84" retheme: CSS custom properties, warm space-black + bronze + ring-arc amber palette, uniform across sheets, dialogs, chat cards, hit-location picker, and impulse HUD - Fix HP damage evaporating on re-prepare: maximums always derived, current values source-authoritative, with a one-time world migration - Ammunition tracking: per-attack consumption, reload button, ammo badge; empty weapons block attacks - Energy weapons auto-link a carried power pack instead of failing - Special Success rolls damage dice twice; fumbles flag GM adjudication (both toggleable world settings) - Defender Dodge prompt before damage (special hits need special dodge) - Damage Mod and derived rolls always recompute; shown read-only - Creature sheet rebuilt to full parity: characteristics, derived rolls, body-schema hit grid with AP totals, weapons/armor/skills - Seeded "Ringworld GM Reference" journal (outcomes, impulses, attack workflow, wounds, 1984 quirks, quick start) - Shared characteristic-check dialog between explorer and creature Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
116 lines
6.1 KiB
Markdown
116 lines
6.1 KiB
Markdown
# Ringworld Foundry System (v13-v14)
|
|
|
|
Ringworld is a custom Foundry VTT game system for the classic 1984 Chaosium percentile RPG: BRP-style roll-under checks, seven hit locations with location armor, energy- and ammunition-tracked weapons, and the Ringworld impulse combat clock.
|
|
|
|
Version 0.5.0 is a full rework: Foundry v13/v14 compatibility, a uniform "Ringworld '84" visual theme (warm space-black, bronze structure, single ring-arc amber accent — inspired by Larry Niven's Ringworld and the original boxed set), combat automation for the system's quirks, and a seeded GM Reference journal.
|
|
|
|
## Online Install (GitHub)
|
|
|
|
Repository:
|
|
- https://github.com/slaguru666/Ringworld
|
|
|
|
System manifest URL:
|
|
- `https://raw.githubusercontent.com/slaguru666/Ringworld/main/system.json`
|
|
|
|
Companion content module manifest URL:
|
|
- `https://raw.githubusercontent.com/slaguru666/Ringworld/main/ringworld-content/module.json`
|
|
|
|
Starter world data archive:
|
|
- `https://raw.githubusercontent.com/slaguru666/Ringworld/main/dist/ringworld-starter-world.zip`
|
|
|
|
## What's in 0.5.0
|
|
|
|
Visual:
|
|
- Complete "Ringworld '84" retheme driven by CSS custom properties: one palette across actor sheets, item sheets, dialogs, chat cards, the hit-location picker, and the impulse HUD. No neon.
|
|
- Legible dark dialogs, amber active tabs, monospace numerals, uppercase display headers.
|
|
|
|
Combat automation:
|
|
- Special Success rolls damage dice twice (world setting `Automate Special Success Damage`).
|
|
- Fumbles flag a GM adjudication note on the chat card.
|
|
- Defender Dodge prompt before damage: a successful dodge evades a normal hit; only a special dodge evades a special hit (world setting `Prompt Defender Dodge`).
|
|
- Ammunition is consumed per attack (`Ammo Loaded / Ammo Max` on weapons), with a Reload button and ammo badge on sheet weapon rows. Empty weapons block the attack.
|
|
- Energy weapons auto-link to the best carried power pack when none is linked, instead of failing the attack.
|
|
|
|
Correctness fixes:
|
|
- Hit point damage now persists reliably: maximums are always derived (CON + MAS), current values are source-authoritative, and a one-time migration preserves what tables saw under the old logic. (Previously damage could silently heal back to full on unlinked tokens and fresh actors.)
|
|
- Damage Mod and derived rolls (Health/Reasoning/Luck/Dodge) always recompute from characteristics and can no longer go stale; they display read-only.
|
|
|
|
GM experience:
|
|
- A **Ringworld GM Reference** journal is seeded into every world: percentile outcomes, the impulse clock, the attack workflow, wound effects, the 1984 quirks (MAS, skill pools, gravity encumbrance, power packs), and a quick-start checklist.
|
|
- The creature sheet is now a full monster sheet: characteristics with multiplier checks, derived rolls, body-schema hit-location grid with stacked AP totals, weapons with ammo/reload, armor, skills, conditions reset, and portrait picker.
|
|
|
|
## Status
|
|
|
|
Implemented:
|
|
- Actor types: `explorer`, `creature`, `vehicle` (stub)
|
|
- Item types: `skill`, `weapon`, `armor`, `gear`, `species`, `pursuit`
|
|
- Percentile checks with `Special Success` and `Fumble`
|
|
- 1d20 hit location roll with per-species body schemas (humanoid, dolphin, puppeteer, trinoc, bandersnatchi, kzinti)
|
|
- Weapon workflow: aim states, modifiers, ammo/energy consumption, defender dodge, hit location, armor stacking, damage to location + general HP
|
|
- Auto conditions at location 0 or less (`prone`, `unconscious`, limb unusable flags), synced to token status icons
|
|
- Impulse combat tracker (Action Ranking clock) with floating HUD
|
|
- World catalog seeding: species, 55 base skills, 18 pursuits, weapons, armor, gear
|
|
- Character tools: gravity-based characteristic rolls, random explorer generation, point-buy character builder
|
|
|
|
Backlog:
|
|
- Vehicle combat and computer subsystems
|
|
- Compendium packs (content currently ships via the idempotent world seeder)
|
|
- Localization (UI strings are hardcoded English)
|
|
|
|
## Install / Build
|
|
|
|
From this project folder:
|
|
|
|
```bash
|
|
npm install
|
|
npm run build
|
|
```
|
|
|
|
Build output:
|
|
- `module/ringworld.mjs`
|
|
- `styles/ringworld.css`
|
|
|
|
Install into a local Foundry data directory (macOS example):
|
|
|
|
```bash
|
|
rsync -a --delete \
|
|
--exclude node_modules --exclude .git --exclude src --exclude dist \
|
|
--exclude world-data --exclude seeds --exclude ringworld-content \
|
|
./ "$HOME/Library/Application Support/FoundryVTT/Data/systems/ringworld/"
|
|
```
|
|
|
|
## Using the system
|
|
|
|
1. In Foundry, create a world using the **Ringworld** system. The catalog and GM Reference journal seed automatically on first GM load.
|
|
2. Read the **Ringworld GM Reference** journal for the rules the system automates.
|
|
3. Create an **Explorer** actor (or use **Create Random Explorer** in the Actors directory).
|
|
4. Target a token, then click **Use** on a weapon and follow the prompts.
|
|
5. For projectile weapons, set `Ammo Max` on the weapon and use the Reload button on the sheet.
|
|
6. Check **System Settings** for the automation toggles.
|
|
|
|
## Rules implemented
|
|
|
|
- Roll-under percentile checks (`1d100 <= target`)
|
|
- Special Success: roll `<= floor(target / 5)` — damage dice doubled when automated
|
|
- Fumble: target `< 50`: roll `96-100`; target `>= 50`: roll `100`
|
|
- Ranged aim states: unaimed quarter skill, partial aim half, full aim full skill
|
|
- Dodge: DEX x5; success evades a normal hit, special dodge required against a special hit
|
|
- Hit locations (humanoid 1d20): `01-03 R Leg | 04-06 L Leg | 07-10 Abdomen | 11-15 Chest | 16-17 R Arm | 18-19 L Arm | 20 Head`
|
|
- Locational damage also reduces general HP (same final damage)
|
|
- Armor subtracts 1:1 and stacks across overlapping covered pieces
|
|
- General HP = CON + MAS; damage modifier from STR + MAS
|
|
- Encumbrance vs STR with gravity multipliers (light x0.5, heavy x2)
|
|
|
|
## Seeds
|
|
|
|
`seeds/` contains starter data:
|
|
- `base-skills.json` full base skill list
|
|
- `example-items.json` sample skill/weapon/armor/power pack
|
|
- `example-explorer.json` sample explorer with items
|
|
|
|
## Notes
|
|
|
|
- Content is numeric/stat-driven only. No long rulebook text is embedded.
|
|
- `world-data/` contains a starter world shell and packaging files for server transfer.
|
|
- `npm run typecheck` reports pre-existing errors from the v12 types package against v13/v14 APIs; the vite build is the authoritative check.
|