# 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.` 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..title/.description` keys to `en_us.json`) - `"criteria"` — the trigger (inventory_changed / changed_dimension / tick) Rename the file `.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.