Strip Health, Mana, Food, Stamina, Oxygen, Energy — only Gold and Blood remain as they serve as adventure gates (Contemporary ≥30, DarkFantasy ≥20). Remove 22 orphaned items, 5 recipes, and the AlchemyTable workstation. Replace energy_cell in rocket_boots recipe with cosmic_shard. Change box_endgame condition from AllResourcesVisible to BoxesOpenedAbove:500. Add ItemUtilitySnapshot test that maps every item to its usage contexts (loot sources, crafting, interactions, adventures) and generates a report. DEBUG overwrites the snapshot; RELEASE asserts no changes. Update specifications.md and CLAUDE.md to reflect resource cleanup. Remove obsolete bugs.md and refactoring_plan.md.
6.5 KiB
Open The Box — Content Specifications
Data Files (content/data/)
boxes.json
Array of box definitions. Each box has:
id— Unique identifier (e.g.,box_common,box_adventure,box_endgame)nameKey,descriptionKey— Localization keysrarity— Common, Uncommon, Rare, Epic, Legendary, MythicisAutoOpen— If true, box opens immediately when obtainedlootTable:guaranteedRolls— Array of item IDs always givenrollCount— Number of random rollsentries— Weighted loot entries with optionalcondition:condition.type:HasItem,HasNotItem,ResourceAbove,ResourceBelow,BoxesOpenedAbove,HasUIFeature,HasWorkstation,HasAdventure,HasCosmetic
items.json
Array of item definitions. Categories: Token, Consumable, Material, Cosmetic, Meta, Box. Special properties:
adventureTheme— Links token to an adventure themecosmeticSlot/cosmeticValue— Cosmetic equipment datastatType/statValue— Stat modificationresourceType/resourceAmount— Resource modification (Gold, Blood only)metaUnlock— UI feature to unlockworkstationType— Workstation blueprint
recipes.json
Crafting recipes with inputs, outputs, and workstation requirements.
Adventures (content/adventures/)
Folder Structure
content/adventures/
├── space/ — Sci-fi theme
├── medieval/ — Fantasy theme
├── pirate/ — Pirate theme
├── contemporary/ — Modern urban theme (Key resource: Gold)
├── sentimental/ — Romance theme
├── prehistoric/ — Stone age theme
├── cosmic/ — Cosmic/divine theme
├── microscopic/ — Micro-world theme
├── darkfantasy/ — Gothic horror theme (Key resource: Blood)
└── destiny/ — Final adventure (acknowledges all other adventures)
Each folder contains:
intro.lor— Main adventure script (English)intro.fr.lor— French translation- (Other locales as needed)
Secret Branches
Each regular adventure (not Destiny) has ONE secret branch gated by stats, resources, or cosmetics:
| Adventure | Condition | Branch ID |
|---|---|---|
| Space | hasStat("Wisdom", 10) |
space_box_whisperer |
| Medieval | hasStat("Charisma", 10) |
medieval_dragon_charmer |
| Pirate | hasEquipped("legs", "PegLeg") |
pirate_one_of_us |
| Contemporary | hasResource("Gold", 30) |
contemporary_vip |
| Sentimental | hasStat("Wisdom", 10) |
sentimental_true_sight |
| Prehistoric | hasStat("Strength", 10) |
prehistoric_champion |
| Cosmic | hasStat("Intelligence", 10) |
cosmic_enlightened |
| Microscopic | hasStat("Dexterity", 10) |
microscopic_surgeon |
| DarkFantasy | hasResource("Blood", 20) |
darkfantasy_blood_communion |
Destiny Adventure (Final)
- Triggered by
destiny_tokenfrombox_endgame - Acknowledges completed adventures and found secret branches
- Has 4 ending tiers based on secret branches found (0, 1-4, 5-8, all 9)
- Ultimate ending grants
destiny_staritem
Game Systems Interaction Map
Boxes ──► Items ──► Inventory
│ │ │
│ ├──► Meta Unlocks (UI features, panels)
│ ├──► Adventure Tokens ──► Adventures
│ ├──► Cosmetics ──► Appearance ──┐
│ ├──► Stat Items ──► Stats ──────┤
│ └──► Consumables ──► Resources ─┤
│ (Gold, Blood only) │
│ │
│ ┌───────────────────────────────┘
│ ▼
│ Adventure Conditions (gate secret branches)
│ │
│ ▼
│ Secret Branches ──► Destiny Adventure (final acknowledgment)
│
└──► Crafting (materials consumed, items produced)
Localization (content/localization/)
- Key-value JSON files per locale
- Locales: EN (default), FR
- Adventure translations use Loreline's
#labelsystem with separate.{locale}.lorfiles. See https://loreline.app/fr/docs/localization/ if needed
Enums Reference
AdventureTheme
Space, Medieval, Pirate, Contemporary, Sentimental, Prehistoric, Cosmic, Microscopic, DarkFantasy, Destiny
StatType
Strength, Intelligence, Luck, Charisma, Dexterity, Wisdom
ResourceType (Characteristics)
Blood, Gold Only resources with actual adventure gates are kept. Blood gates the DarkFantasy secret branch (≥20), Gold gates the Contemporary secret branch (≥30). Resources are displayed as "Characteristics" to the player with current/max values (e.g., Gold 50/100).
CosmeticSlot
Hair, Eyes, Body, Legs, Arms
Rarity
Common, Uncommon, Rare, Epic, Legendary, Mythic
Meta Unlock Order (Deterministic)
UI features are unlocked in a fixed order regardless of which meta box drops. The loot tables control when a meta item drops (via conditions/weights), but which feature is unlocked is always the next in this sequence:
- ArrowKeySelection — Arrow key + keyboard navigation (first for accessibility)
- TextColors — Basic 8-color ANSI text
- AutoSave — Automatic saving
- InventoryPanel — Interactive inventory table
- StatsPanel — Progression stats and character attributes
- ResourcePanel — Characteristics bars (Gold, Blood)
- PortraitPanel — ASCII art portrait
- ChatPanel — Event log panel
- ExtendedColors — 256-color palette
- BoxAnimation — Animated box openings
- CraftingPanel — Crafting system
- CompletionTracker — Completion percentage
- FullLayout — Multi-panel grid layout
Note: KeyboardShortcuts is merged into ArrowKeySelection.
Pity System
If the player opens 10 boxes without receiving a meta box, one is guaranteed on the next opening.
Item Utility Audit
Run the snapshot test to generate a full item utility report:
dotnet test --filter "ItemUtilitySnapshot" --logger "console;verbosity=detailed"
The report is written to tests/snapshots/item_utility_report.txt and shows every item with its usage contexts (loot source, crafting, interactions, adventure gates, etc.). Items with no usage context are flagged as orphans.