114 lines
No EOL
5.6 KiB
Markdown
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. |