SciCraft/STORY_CANON.md

114 lines
No EOL
5.6 KiB
Markdown

# STORY CANON — SCICRAFT: The Dark Photon Protocol
**This is the single source of truth for the pack's story.**
All lore text lives here or is referenced from here. Editing the story means
editing this file (or the files it points to) — nothing else.
---
## The canon, in one page
1. **Dark photons are real.** A fifth force the Second Renegade Flight
harnessed. They are the *binding force of the Door* — the pressure that
keeps a collapsed star-empire from unravelling back into reality.
2. **You are a proto-Time-Lord.** Born with the resonance, never finished
training. The signal chose you because only a renegade could read the
Protocol the mortals can't.
3. **The wound.** The Flight sealed the empire inside a Dimensional Door.
The seal is failing. The Void Dimension is the raw wound; the Doors are
scar-tissue; the Deeper and Darker is what's *answering from inside*.
4. **The job.** Rebuild the **Quantum Lattice** — the Protocol's emitter —
and keep it online. The Protocol is never finished; it is maintained.
5. **The tide.** Corruption rises while Doors go unsealed (global, shared by
all players). Re-seal Doors at the Lattice to push it back. No fail state —
just a world that gets darker while you procrastinate.
6. **The Doctor connection is atmospheric only.** TARDIS-blue glass
("Renegade Glass"), the phrase *Per Spatium*, portal styling. Present but
never plot-driving; players who don't care can ignore it entirely.
---
## Where the story lives (file map)
| What you want to change | Where | Reload |
|---|---|---|
| Global story strings, tide tuning, dimension IDs | `kubejs/server_scripts/00_lore.js` | `/reload` |
| Item/block names + advancement titles/descriptions | `kubejs/assets/scicraft/lang/en_us.json` | resource reload |
| Player messages (tide warnings, signals) | `00_lore.js``scicraft.phrases.*` + `en_us.json` | `/reload` |
| Item tooltips (hover lore) | `kubejs/client_scripts/01_tooltips.js` | `F3+T` |
| JEI info pages | `kubejs/client_scripts/02_jei_info.js` | `F3+T` |
| Crafting chain / gating recipes | `kubejs/server_scripts/03_recipes_tags.js` | `/reload` |
| Corruption tide logic | `kubejs/server_scripts/01_corruption_tide.js` | `/reload` |
| Player powers / void hazards | `kubejs/server_scripts/02_events.js` | `/reload` |
| Boss → Photon Fragment drops | `kubejs/server_scripts/04_loot.js` (LootJS) | `/reload` |
| Advancement phase tree | `kubejs/data/scicraft/advancements/protocol/*.json` | `/reload` |
| Advancement reward loot | `kubejs/data/scicraft/loot_tables/protocol/*.json` | `/reload` |
| Item & block definitions (ID, texture, stats) | `kubejs/startup_scripts/registry_blocks.js` | **restart** |
| Textures | `kubejs/assets/scicraft/textures/{item,block}/*.png` | `F3+T` |
> **Golden rule:** `00_lore.js` is the bible. If you add a new story beat,
> put its strings there first, then reference `SC.<path>` from the other
> scripts. Never hardcode lore text in a script body.
---
## Adding a new story beat (5-minute workflow)
1. **Edit `00_lore.js`** — add your phrase to `phrases`, or your item to
`items`.
2. **Add the lang key** to `en_us.json` (same key you used in `Text.translate`).
3. **If it's a new item/block**: add to `registry_blocks.js` + run
`tools/gen_textures.py` for a placeholder texture. This step needs a
**full restart**.
4. **Add a tooltip / JEI page** if it's a carried item.
5. **Wire the beat into the tide** (if it's an event) or into a recipe
(if it's a gated item) or into an advancement JSON (if it's a goal).
6. **Sync to both packs:**
```bash
rm -rf client_pack/kubejs && cp -r server_pack/kubejs client_pack/kubejs
```
7. Reload: `/reload` (server scripts/advancements/recipes) or `F3+T`
(client assets/tooltips). Startup item changes require a game restart.
---
## Adding a new advancement node
Copy `data/scicraft/advancements/protocol/the_core.json` and change:
- `"parent"` — the node before it
- `"title"`/`"description"` — lore text (also add the matching
`advancements.scicraft.protocol.<name>.title/.description` keys to `en_us.json`)
- `"criteria"` — the trigger (inventory_changed / changed_dimension / tick)
Rename the file `<your_node>.json`. The tree is non-terminal: the Protocol
is maintained, not completed.
---
## Verified IDs (do not guess these — they were checked against the jars)
| Thing | Correct ID |
|---|---|
| Limbo (Dimensional Doors) | `dimensionaldoors:limbo` |
| The Wound (Void Dimension) | `thevoiddimension:overworld` |
| The Othersides (Deeper & Darker) | `deeperdarker:otherside` |
| Stellaris moon | `stellaris:moon` (mars/venus/mercury likewise) |
| Warden | `minecraft:warden` |
| Mutant Zombie / Skeleton / Enderman | `mutantmonsters:mutant_zombie` / `mutant_skeleton` / `mutant_enderman` |
| Born in Chaos Dark Vortex / Dread Hound / Nightmare Stalker | `born_in_chaos_v1:dark_vortex` / `dread_hound` / `nightmare_stalker` |
When in doubt, verify against the installed jar before writing an ID into a script.
---
## TODO — future story beats (drop in whenever)
- [ ] New Doors: a "Door network" that opens/closes on a schedule, each
carrying its own phrase in `00_lore.js`.
- [ ] Star fragments: Stellaris planets each recover a named fragment
("Mars shard", "Venus shard") → new advancement nodes.
- [ ] Lattice upkeep: it slowly *consumes* Photon Cores while powered;
running dry raises the tide (ties tide to real infrastructure).
- [ ] Final "The Legacy" tier of Renegade Glass builds that hum — block
interactions that whisper one `scicraft.phrases.*` line.
- [ ] FTB Quests questbook mirroring the advancement phases.