diff --git a/.github/workflows/deploy-itch.yml b/.github/workflows/deploy-itch.yml
index b5115ce..61c7299 100644
--- a/.github/workflows/deploy-itch.yml
+++ b/.github/workflows/deploy-itch.yml
@@ -15,6 +15,17 @@ jobs:
with:
dotnet-version: '10.0.x'
+ - name: Download Loreline dependency
+ run: |
+ mkdir -p lib
+ curl -sL https://github.com/Loreline/loreline/releases/download/v0.7.1/loreline-csharp.zip -o lib/loreline-csharp.zip
+ unzip -o lib/loreline-csharp.zip -d lib/_extract
+ cp lib/_extract/*/Loreline.dll lib/ || cp lib/_extract/Loreline.dll lib/
+ cp lib/_extract/*/Loreline.xml lib/ 2>/dev/null || cp lib/_extract/Loreline.xml lib/ 2>/dev/null || true
+ cp lib/_extract/*/Loreline.deps.json lib/ 2>/dev/null || cp lib/_extract/Loreline.deps.json lib/ 2>/dev/null || true
+ rm -rf lib/_extract lib/loreline-csharp.zip
+ ls -la lib/
+
- name: Publish Blazor WASM
run: dotnet publish src/OpenTheBox.Web -c Release -o publish
diff --git a/CLAUDE.md b/CLAUDE.md
index e188195..dd8b06e 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -65,11 +65,11 @@ Hints for disabled choices use `|||` separator: `Option text|||Hint text #label
full documentation: https://loreline.app/fr/docs/
## Resources (Characteristics)
-Only 2 resource types exist: **Gold** and **Blood**. Both have adventure secret branch gates:
+Only 2 resource types exist: **Gold** and **Ink**. Both have adventure secret branch gates:
- Gold ≥ 30 → Contemporary VIP branch
-- Blood ≥ 20 → DarkFantasy Blood Communion branch
+- Ink ≥ 20 → DarkFantasy Ink Communion branch
-Consumables: `gold_pouch` (+50 Gold), `blood_vial` (+5 Blood), `resource_max_gold`, `resource_max_blood`.
+Consumables: `gold_pouch` (+50 Gold), `ink_vial` (+5 Ink), `resource_max_gold`, `resource_max_ink`.
Other resources (Health, Mana, Food, etc.) were removed as they had no gameplay impact.
## Ephemeral Items
diff --git a/GDD.md b/GDD.md
index 5b75d8d..bac4935 100644
--- a/GDD.md
+++ b/GDD.md
@@ -329,7 +329,7 @@ Chaque sous-boite d'aventure contient :
| Stamina (endurance) | 15 | Restaure de l'endurance |
| Gold (or) | 15 | Ajoute de l'or |
| Energy (energie) | 10 | Restaure de l'energie |
-| Blood (sang) | 3 | Restaure du sang (ressource rare) |
+| Ink (encre) | 3 | Restaure de l'encre (ressource rare) |
| Oxygen (oxygene) | 2 | Restaure de l'oxygene (ressource rare) |
> **Note** : Seules les ressources deja debloquees par le joueur peuvent apparaitre dans le tirage. Les poids sont recalcules dynamiquement.
@@ -692,7 +692,7 @@ Le joueur gere 8 ressources qui influencent sa capacite a explorer, combattre, c
| Mana | MP | Points de magie | Sorts, enchantements |
| Food | FD | Nourriture | Exploration, stamina |
| Stamina | ST | Endurance | Actions physiques, craft |
-| Blood | BL | Sang | Rituels, magie noire |
+| Ink | IN | Encre | Rituels, magie noire |
| Gold | GD | Or | Commerce, ameliorations |
| Oxygen | O2 | Oxygene | Exploration spatiale/sous-marine|
| Energy | EN | Energie | Machines, stations de craft |
@@ -702,7 +702,7 @@ Le joueur gere 8 ressources qui influencent sa capacite a explorer, combattre, c
- Chaque ressource a un **maximum** (cap) qui peut etre ameliore via la Boite d'amelioration.
- Les ressources se consomment lors des aventures, du craft et des interactions.
- Les ressources se restaurent via la Boite de fourniture, les consommables et certaines interactions.
-- Certaines ressources sont conditionnelles : **Blood** n'apparait qu'avec le theme DarkFantasy, **Oxygen** qu'avec le theme Space ou des aventures sous-marines.
+- Certaines ressources sont conditionnelles : **Ink** n'apparait qu'avec le theme DarkFantasy, **Oxygen** qu'avec le theme Space ou des aventures sous-marines.
### Deblocage des ressources
@@ -714,7 +714,7 @@ Les ressources ne sont pas toutes disponibles des le debut :
| Mana | Premiere rencontre avec un personnage magique |
| Food | Premiere aventure exploree |
| Stamina | Premiere action physique (combat, craft) |
-| Blood | Deblocage du theme DarkFantasy |
+| Ink | Deblocage du theme DarkFantasy |
| Gold | Premier lieu de commerce decouvert |
| Oxygen | Deblocage du theme Space OU aventure sous-marine |
| Energy | Premiere station de craft construite |
@@ -800,7 +800,7 @@ Les aventures interactives sont des sequences narratives jouables en CLI, chacun
- **Ambiance** : fantasy sombre, horreur gothique
- **Lieux typiques** : cryptes, forets maudites, tours sombres
-- **Ressource cle** : Blood, Mana
+- **Ressource cle** : Ink, Mana
- **Personnages associes** : Malkith (version sombre)
- **Mood possible** : Dark, Spooky, Tragedy
- **Environnement** : Nature, Town
diff --git a/content/adventures/darkfantasy/intro.fr.lor b/content/adventures/darkfantasy/intro.fr.lor
index d3d2a1d..cb2d449 100644
--- a/content/adventures/darkfantasy/intro.fr.lor
+++ b/content/adventures/darkfantasy/intro.fr.lor
@@ -271,11 +271,11 @@ Ouvrir une boîte et voir ce qui se passe
#opt-convince // "Convince Mordecai to open them together"
Convaincre Mordecai de les ouvrir ensemble
-#opt-blood // "Press your hand to the boxes and offer your blood as a bridge|||You feel a strange warmth in your veins, as though something ancient recognizes you..."
-Poser votre main sur les boîtes et offrir votre sang comme pont|||Vous ressentez une étrange chaleur dans vos veines, comme si quelque chose d'ancien vous reconnaissait...
+#opt-blood // "Press your hand to the boxes and offer your ink as a bridge|||You feel a strange warmth in your veins, as though something ancient recognizes you..."
+Poser votre main sur les boîtes et offrir votre encre comme pont|||Vous ressentez une étrange chaleur dans vos veines, comme si quelque chose d'ancien vous reconnaissait...
-#blood-press // "You press your palm against the nearest box. Your blood sings. The box answers."
-Vous pressez votre paume contre la boîte la plus proche. Votre sang chante. La boîte répond.
+#blood-press // "You press your palm against the nearest box. The ink sings. The box answers."
+Vous pressez votre paume contre la boîte la plus proche. L'encre chante. La boîte répond.
#blood-voices // "Every box in the vault flickers -- not with light, but with voices. Twelve thousand souls, speaking at once."
Chaque boîte du caveau scintille -- pas de lumière, mais de voix. Douze mille âmes, parlant en même temps.
@@ -286,8 +286,8 @@ Elles ne crient pas. Elles... se présentent.
#mordecai-impossible // "Impossible. I've tried to speak with them for decades. They never answered ME."
Impossible. J'ai essayé de leur parler pendant des décennies. Elles ne m'ont jamais répondu.
-#pierrick-jailer // "Maybe they didn't trust you. You're their jailer. I'm just a baker with strange blood."
-Peut-être qu'elles ne vous faisaient pas confiance. Vous êtes leur geôlier. Moi je suis juste un boulanger au sang étrange.
+#pierrick-jailer // "Maybe they didn't trust you. You're their jailer. I'm just a baker with strange ink."
+Peut-être qu'elles ne vous faisaient pas confiance. Vous êtes leur geôlier. Moi je suis juste un boulanger à l'encre étrange.
#blood-consensus // "The souls whisper a consensus: half wish to stay, half wish to leave. They've voted. Through cardboard. Democracy at its most absurd."
Les âmes chuchotent un consensus : la moitié souhaite rester, l'autre moitié souhaite partir. Elles ont voté. À travers du carton. La démocratie dans ce qu'elle a de plus absurde.
diff --git a/content/adventures/darkfantasy/intro.lor b/content/adventures/darkfantasy/intro.lor
index 513d53e..ee522cb 100644
--- a/content/adventures/darkfantasy/intro.lor
+++ b/content/adventures/darkfantasy/intro.lor
@@ -189,16 +189,16 @@ beat TheVault
-> OpenOneBox
Convince Mordecai to open them together #opt-convince if corruption < 30
-> ConvinceMordecai
- Press your hand to the boxes and offer your blood as a bridge|||You feel a strange warmth in your veins, as though something ancient recognizes you... #opt-blood if hasResource("Blood", 20)
- -> BloodCommunion
+ Press your hand to the boxes and offer your ink as a bridge|||You feel a strange warmth in your veins, as though something ancient recognizes you... #opt-blood if hasResource("Ink", 20)
+ -> InkCommunion
-beat BloodCommunion
- markSecretBranch("darkfantasy_blood_communion")
- You press your palm against the nearest box. Your blood sings. The box answers. #blood-press
+beat InkCommunion
+ markSecretBranch("darkfantasy_ink_communion")
+ You press your palm against the nearest box. The ink sings. The box answers. #blood-press
Every box in the vault flickers -- not with light, but with voices. Twelve thousand souls, speaking at once. #blood-voices
pierrick: They're not screaming. They're... introducing themselves. #pierrick-introduce
mordecai: Impossible. I've tried to speak with them for decades. They never answered ME. #mordecai-impossible
- pierrick: Maybe they didn't trust you. You're their jailer. I'm just a baker with strange blood. #pierrick-jailer
+ pierrick: Maybe they didn't trust you. You're their jailer. I'm just a baker with strange ink. #pierrick-jailer
The souls whisper a consensus: half wish to stay, half wish to leave. They've voted. Through cardboard. Democracy at its most absurd. #blood-consensus
mordecai: They VOTED? Without a suggestion box? Wait -- they ARE the suggestion boxes. #mordecai-voted
boxesFreed += 50
diff --git a/content/adventures/destiny/intro.fr.lor b/content/adventures/destiny/intro.fr.lor
index 17ce4bf..63dbb5c 100644
--- a/content/adventures/destiny/intro.fr.lor
+++ b/content/adventures/destiny/intro.fr.lor
@@ -106,8 +106,8 @@ Le Charmeur de Dragons. Tu as choisi le feu plutôt que la peur, et le dragon t'
#secret-darkfantasy // "A drop of crimson hangs suspended in the air, neither falling nor fading."
Une goutte de pourpre reste suspendue dans l'air, ne tombant ni ne s'effaçant.
-#secret-darkfantasy-words // "The Blood Communion. You drank from the dark box and survived. Changed, but whole."
-La Communion de Sang. Tu as bu à la boîte sombre et survécu. Changé, mais entier.
+#secret-darkfantasy-words // "The Ink Communion. You drank from the dark box and survived. Changed, but whole."
+La Communion d'Encre. Tu as bu à la boîte sombre et survécu. Changé, mais entier.
#secret-pirate // "A coin spins endlessly on an invisible surface, never landing."
Une pièce tourne sans fin sur une surface invisible, sans jamais retomber.
diff --git a/content/adventures/destiny/intro.lor b/content/adventures/destiny/intro.lor
index 3cf4868..123fb55 100644
--- a/content/adventures/destiny/intro.lor
+++ b/content/adventures/destiny/intro.lor
@@ -82,9 +82,9 @@ beat Alcove
A scale glimmers on the ground, iridescent and warm to the touch. #secret-medieval
destiny: The Dragon Charmer. You chose fire over fear, and the dragon chose you back. #secret-medieval-words
- if hasSecretBranch("darkfantasy_blood_communion")
+ if hasSecretBranch("darkfantasy_ink_communion")
A drop of crimson hangs suspended in the air, neither falling nor fading. #secret-darkfantasy
- destiny: The Blood Communion. You drank from the dark box and survived. Changed, but whole. #secret-darkfantasy-words
+ destiny: The Ink Communion. You drank from the dark box and survived. Changed, but whole. #secret-darkfantasy-words
if hasSecretBranch("pirate_one_of_us")
A coin spins endlessly on an invisible surface, never landing. #secret-pirate
diff --git a/content/data/boxes.json b/content/data/boxes.json
index 0bf69b5..87da4a1 100644
--- a/content/data/boxes.json
+++ b/content/data/boxes.json
@@ -122,7 +122,7 @@
"entries": [
{"itemDefinitionId": "material_titanium_raw", "weight": 2},
{"itemDefinitionId": "material_steel_ingot", "weight": 3},
- {"itemDefinitionId": "blood_vial", "weight": 2},
+ {"itemDefinitionId": "ink_vial", "weight": 2},
{"itemDefinitionId": "cosmetic_hair_cyberpunk", "weight": 2},
{"itemDefinitionId": "cosmetic_eyes_pilotglasses", "weight": 2},
{"itemDefinitionId": "cosmetic_body_suit", "weight": 2},
@@ -256,7 +256,7 @@
"rollCount": 1,
"entries": [
{"itemDefinitionId": "meta_resource_gold", "weight": 2},
- {"itemDefinitionId": "meta_resource_blood", "weight": 1},
+ {"itemDefinitionId": "meta_resource_ink", "weight": 1},
{"itemDefinitionId": "box_meta_mastery", "weight": 1}
]
}
@@ -497,7 +497,7 @@
{"itemDefinitionId": "darkfantasy_gem", "weight": 1},
{"itemDefinitionId": "darkfantasy_key", "weight": 3},
{"itemDefinitionId": "mysterious_key", "weight": 2},
- {"itemDefinitionId": "blood_vial", "weight": 3}
+ {"itemDefinitionId": "ink_vial", "weight": 3}
]
}
},
@@ -512,7 +512,7 @@
"rollCount": 1,
"entries": [
{"itemDefinitionId": "resource_max_gold", "weight": 2},
- {"itemDefinitionId": "resource_max_blood", "weight": 1},
+ {"itemDefinitionId": "resource_max_ink", "weight": 1},
{"itemDefinitionId": "blueprint_foundry", "weight": 4, "condition": {"type": "HasUIFeature", "targetId": "CraftingPanel"}},
{"itemDefinitionId": "blueprint_workbench", "weight": 4, "condition": {"type": "HasUIFeature", "targetId": "CraftingPanel"}},
{"itemDefinitionId": "blueprint_furnace", "weight": 4, "condition": {"type": "HasUIFeature", "targetId": "CraftingPanel"}},
@@ -532,7 +532,7 @@
"rollCount": 2,
"entries": [
{"itemDefinitionId": "gold_pouch", "weight": 4},
- {"itemDefinitionId": "blood_vial", "weight": 1}
+ {"itemDefinitionId": "ink_vial", "weight": 1}
]
}
},
diff --git a/content/data/items.json b/content/data/items.json
index b74107b..f71de92 100644
--- a/content/data/items.json
+++ b/content/data/items.json
@@ -11,7 +11,7 @@
{"id": "meta_animation", "nameKey": "meta.animation", "descriptionKey": "meta.animation.desc", "category": "Meta", "rarity": "Uncommon", "tags": ["Meta"], "metaUnlock": "BoxAnimation"},
{"id": "meta_crafting", "nameKey": "meta.crafting", "descriptionKey": "meta.crafting.desc", "category": "Meta", "rarity": "Epic", "tags": ["Meta"], "metaUnlock": "CraftingPanel"},
{"id": "meta_autosave", "nameKey": "meta.autosave", "descriptionKey": "meta.autosave.desc", "category": "Meta", "rarity": "Uncommon", "tags": ["Meta"], "metaUnlock": "AutoSave"},
- {"id": "meta_resource_blood", "nameKey": "resource.blood", "category": "Meta", "rarity": "Rare", "tags": ["Meta", "ResourceVisibility"], "resourceType": "Blood"},
+ {"id": "meta_resource_ink", "nameKey": "resource.ink", "category": "Meta", "rarity": "Rare", "tags": ["Meta", "ResourceVisibility"], "resourceType": "Ink"},
{"id": "meta_resource_gold", "nameKey": "resource.gold", "category": "Meta", "rarity": "Uncommon", "tags": ["Meta", "ResourceVisibility"], "resourceType": "Gold"},
{"id": "meta_stat_strength", "nameKey": "stat.strength", "category": "Meta", "rarity": "Rare", "tags": ["Meta", "StatVisibility"], "statType": "Strength"},
{"id": "meta_stat_intelligence", "nameKey": "stat.intelligence", "category": "Meta", "rarity": "Rare", "tags": ["Meta", "StatVisibility"], "statType": "Intelligence"},
@@ -62,7 +62,7 @@
{"id": "tint_gold", "nameKey": "tint.gold", "category": "Cosmetic", "rarity": "Epic", "tags": ["Tint"], "tintColor": "Gold"},
{"id": "tint_void", "nameKey": "tint.void", "category": "Cosmetic", "rarity": "Legendary", "tags": ["Tint"], "tintColor": "Void"},
- {"id": "blood_vial", "nameKey": "item.blood_vial", "category": "Consumable", "rarity": "Rare", "tags": ["Consumable"], "resourceType": "Blood", "resourceAmount": 5},
+ {"id": "ink_vial", "nameKey": "item.ink_vial", "category": "Consumable", "rarity": "Rare", "tags": ["Consumable"], "resourceType": "Ink", "resourceAmount": 5},
{"id": "gold_pouch", "nameKey": "item.gold_pouch", "category": "Consumable", "rarity": "Common", "tags": ["Consumable"], "resourceType": "Gold", "resourceAmount": 50},
{"id": "space_badge", "nameKey": "item.space.badge", "category": "AdventureToken", "rarity": "Rare", "tags": ["Adventure", "Space"], "adventureTheme": "Space"},
@@ -140,7 +140,7 @@
{"id": "material_carbonfiber_sheet", "nameKey": "material.carbonfiber", "category": "Material", "rarity": "Epic", "tags": ["Material"], "materialType": "CarbonFiber", "materialForm": "Sheet"},
{"id": "resource_max_gold", "nameKey": "item.resource_max_gold", "category": "Consumable", "rarity": "Rare", "tags": ["Improvement", "ResourceMax"], "resourceType": "Gold", "resourceMaxIncrease": 50},
- {"id": "resource_max_blood", "nameKey": "item.resource_max_blood", "category": "Consumable", "rarity": "Rare", "tags": ["Improvement", "ResourceMax"], "resourceType": "Blood", "resourceMaxIncrease": 5},
+ {"id": "resource_max_ink", "nameKey": "item.resource_max_ink", "category": "Consumable", "rarity": "Rare", "tags": ["Improvement", "ResourceMax"], "resourceType": "Ink", "resourceMaxIncrease": 5},
{"id": "music_melody", "nameKey": "item.music_melody", "category": "Consumable", "rarity": "Rare", "tags": ["Music", "Fun"], "description": "A melody plays from the box. Console.Beep never sounded so good."},
{"id": "cookie_fortune", "nameKey": "item.cookie_fortune", "category": "Consumable", "rarity": "Common", "tags": ["Cookie", "Fun"], "description": "A fortune cookie with wisdom of questionable origin."},
diff --git a/content/strings/en.json b/content/strings/en.json
index f37d1bd..8ae349e 100644
--- a/content/strings/en.json
+++ b/content/strings/en.json
@@ -132,7 +132,7 @@
"item.rarity.legendary": "Legendary",
"item.rarity.mythic": "Mythic",
- "resource.blood": "Blood",
+ "resource.ink": "Ink",
"resource.gold": "Gold",
"stat.strength": "Strength",
@@ -215,7 +215,7 @@
"material.form.dust": "Dust",
"material.form.gem": "Gem",
- "item.blood_vial": "Blood Vial",
+ "item.ink_vial": "Ink Vial",
"item.gold_pouch": "Gold Pouch",
"item.space.badge": "Astronaut Badge",
@@ -263,7 +263,7 @@
"item.microscopic.mitochondria": "Hyperactive Mitochondria",
"item.microscopic.prion": "Friendly Prion (probably)",
"item.darkfantasy.ring": "Cursed Ring",
- "item.darkfantasy.rune": "Blood Rune",
+ "item.darkfantasy.rune": "Ink Rune",
"item.darkfantasy.cloak": "Shadow Cloak",
"item.darkfantasy.grimoire": "Necromancer's Grimoire",
"item.darkfantasy.gem": "Soul Gem",
@@ -274,7 +274,7 @@
"item.stat_boost": "{0} +1",
"item.resource_max_gold": "Gold Capacity Upgrade",
- "item.resource_max_blood": "Blood Capacity Upgrade",
+ "item.resource_max_ink": "Ink Capacity Upgrade",
"item.music_melody": "Box Melody",
"item.cookie_fortune": "Fortune Cookie",
diff --git a/content/strings/fr.json b/content/strings/fr.json
index 033c55b..9836ac4 100644
--- a/content/strings/fr.json
+++ b/content/strings/fr.json
@@ -132,7 +132,7 @@
"item.rarity.legendary": "Légendaire",
"item.rarity.mythic": "Mythique",
- "resource.blood": "Sang",
+ "resource.ink": "Encre",
"resource.gold": "Or",
"stat.strength": "Force",
@@ -215,7 +215,7 @@
"material.form.dust": "Poudre",
"material.form.gem": "Gemme",
- "item.blood_vial": "Fiole de sang",
+ "item.ink_vial": "Fiole d'encre",
"item.gold_pouch": "Bourse d'or",
"item.space.badge": "Badge d'astronaute",
@@ -263,7 +263,7 @@
"item.microscopic.mitochondria": "Mitochondrie hyperactive",
"item.microscopic.prion": "Prion amical (probablement)",
"item.darkfantasy.ring": "Anneau maudit",
- "item.darkfantasy.rune": "Rune de sang",
+ "item.darkfantasy.rune": "Rune d'encre",
"item.darkfantasy.cloak": "Cape d'ombre",
"item.darkfantasy.grimoire": "Grimoire du nécromancien",
"item.darkfantasy.gem": "Gemme d'âme",
@@ -274,7 +274,7 @@
"item.stat_boost": "{0} +1",
"item.resource_max_gold": "Amélioration Capacité Or",
- "item.resource_max_blood": "Amélioration Capacité Sang",
+ "item.resource_max_ink": "Amélioration Capacité Encre",
"item.music_melody": "Mélodie de boîte",
"item.cookie_fortune": "Fortune Cookie",
diff --git a/specifications.md b/specifications.md
index a44d02f..bed0d6b 100644
--- a/specifications.md
+++ b/specifications.md
@@ -20,7 +20,7 @@ Special properties:
- `adventureTheme` — Links token to an adventure theme
- `cosmeticSlot` / `cosmeticValue` — Cosmetic equipment data
- `statType` / `statValue` — Stat modification
-- `resourceType` / `resourceAmount` — Resource modification (Gold, Blood only)
+- `resourceType` / `resourceAmount` — Resource modification (Gold, Ink only)
- `metaUnlock` — UI feature to unlock
- `workstationType` — Workstation blueprint
@@ -40,7 +40,7 @@ content/adventures/
├── prehistoric/ — Stone age theme
├── cosmic/ — Cosmic/divine theme
├── microscopic/ — Micro-world theme
-├── darkfantasy/ — Gothic horror theme (Key resource: Blood)
+├── darkfantasy/ — Gothic horror theme (Key resource: Ink)
└── destiny/ — Final adventure (acknowledges all other adventures)
```
@@ -62,7 +62,7 @@ Each regular adventure (not Destiny) has ONE secret branch gated by stats, resou
| 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`|
+| DarkFantasy | `hasResource("Ink", 20)` | `darkfantasy_ink_communion`|
### Destiny Adventure (Final)
- Triggered by `destiny_token` from `box_endgame`
@@ -80,7 +80,7 @@ Boxes ──► Items ──► Inventory
│ ├──► Cosmetics ──► Appearance ──┐
│ ├──► Stat Items ──► Stats ──────┤
│ └──► Consumables ──► Resources ─┤
- │ (Gold, Blood only) │
+ │ (Gold, Ink only) │
│ │
│ ┌───────────────────────────────┘
│ ▼
@@ -106,8 +106,8 @@ Space, Medieval, Pirate, Contemporary, Sentimental, Prehistoric, Cosmic, Microsc
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).
+Ink, Gold
+Only resources with actual adventure gates are kept. Ink 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
@@ -125,7 +125,7 @@ UI features are unlocked in a fixed order regardless of which meta box drops. Th
3. **AutoSave** — Automatic saving
4. **InventoryPanel** — Interactive inventory table
5. **StatsPanel** — Progression stats and character attributes
-6. **ResourcePanel** — Characteristics bars (Gold, Blood)
+6. **ResourcePanel** — Characteristics bars (Gold, Ink)
7. **PortraitPanel** — ASCII art portrait
8. **ChatPanel** — Event log panel
9. **ExtendedColors** — 256-color palette
diff --git a/src/OpenTheBox/Core/Enums/AdventureTheme.cs b/src/OpenTheBox/Core/Enums/AdventureTheme.cs
index 7a8f1bc..eb87a20 100644
--- a/src/OpenTheBox/Core/Enums/AdventureTheme.cs
+++ b/src/OpenTheBox/Core/Enums/AdventureTheme.cs
@@ -31,7 +31,7 @@ public enum AdventureTheme
/// Microscopic world of cells, atoms, and circuits. Key resources: Energy, Oxygen.
Microscopic,
- /// Dark fantasy with gothic horror elements. Key resources: Blood, Mana. Unlocks Blood resource.
+ /// Dark fantasy with gothic horror elements. Key resources: Ink, Mana. Unlocks Ink resource.
DarkFantasy,
/// The final adventure. Acknowledges all previous adventures and secret branches. Unlocked by the endgame box.
diff --git a/src/OpenTheBox/Core/Enums/ResourceType.cs b/src/OpenTheBox/Core/Enums/ResourceType.cs
index cabd90b..c8ca146 100644
--- a/src/OpenTheBox/Core/Enums/ResourceType.cs
+++ b/src/OpenTheBox/Core/Enums/ResourceType.cs
@@ -6,8 +6,8 @@ namespace OpenTheBox.Core.Enums;
///
public enum ResourceType
{
- /// Blood resource. Unlocked with the DarkFantasy theme. Gates the Blood Communion secret branch (≥20).
- Blood,
+ /// Ink resource. Unlocked with the DarkFantasy theme. Gates the Ink Communion secret branch (≥20).
+ Ink,
/// Currency. Unlocked when a trading location is discovered. Gates the Corporate VIP secret branch (≥30).
Gold
diff --git a/tests/OpenTheBox.Tests/RendererTests.cs b/tests/OpenTheBox.Tests/RendererTests.cs
index c807c95..a55ae2f 100644
--- a/tests/OpenTheBox.Tests/RendererTests.cs
+++ b/tests/OpenTheBox.Tests/RendererTests.cs
@@ -219,8 +219,8 @@ public class ResourcePanelTests
public void Render_ZeroMax_DoesNotThrow()
{
var state = GameState.Create("Test", Locale.EN);
- state.VisibleResources.Add(ResourceType.Blood);
- state.Resources[ResourceType.Blood] = new ResourceState(0, 0);
+ state.VisibleResources.Add(ResourceType.Ink);
+ state.Resources[ResourceType.Ink] = new ResourceState(0, 0);
var result = RenderHelper.RenderToString(ResourcePanel.Render(state));
Assert.NotEmpty(result);
}
@@ -239,7 +239,7 @@ public class ResourcePanelTests
public void Render_VisibleButNotInDict_Skipped()
{
var state = GameState.Create("Test", Locale.EN);
- state.VisibleResources.Add(ResourceType.Blood);
+ state.VisibleResources.Add(ResourceType.Ink);
// Not adding to Resources dict → should skip without crash
var result = RenderHelper.RenderToString(ResourcePanel.Render(state));
Assert.NotEmpty(result);
diff --git a/tests/OpenTheBox.Tests/UnitTest1.cs b/tests/OpenTheBox.Tests/UnitTest1.cs
index 3ebf6db..156befa 100644
--- a/tests/OpenTheBox.Tests/UnitTest1.cs
+++ b/tests/OpenTheBox.Tests/UnitTest1.cs
@@ -1158,7 +1158,7 @@ public class ContentValidationTests
"prehistoric_champion",
"cosmic_enlightened",
"microscopic_surgeon",
- "darkfantasy_blood_communion"
+ "darkfantasy_ink_communion"
};
// All 9 regular adventure themes (excluding Destiny)
diff --git a/tests/snapshots/item_utility_report.txt b/tests/snapshots/item_utility_report.txt
index f3c24a7..a931150 100644
--- a/tests/snapshots/item_utility_report.txt
+++ b/tests/snapshots/item_utility_report.txt
@@ -174,9 +174,9 @@
## Consumable (6 items)
────────────────────────────────────────────────────────────────────────────────
- [**] blood_vial (Rare) — Fiole de sang
+ [**] ink_vial (Rare) — Fiole d'encre
Loot: box_epic, box_adventure_darkfantasy, box_supply
- Consume: +5 Blood
+ Consume: +5 Ink
[**] gold_pouch (Common) — Bourse d'or
Loot: box_ok_tier, box_adventure_pirate, box_supply
@@ -186,9 +186,9 @@
Loot: box_improvement
Upgrade: max Gold
- [**] resource_max_blood (Rare) — Amélioration Capacité Sang
+ [**] resource_max_ink (Rare) — Amélioration Capacité Encre
Loot: box_improvement
- Upgrade: max Blood
+ Upgrade: max Ink
[**] music_melody (Rare) — Mélodie de boîte
Loot: box_music(G)
@@ -603,7 +603,7 @@
[*] meta_shortcuts (Rare) — Raccourcis clavier
Unlock: KeyboardShortcuts
- [*] meta_resource_blood (Rare) — Sang
+ [*] meta_resource_ink (Rare) — Encre
Loot: box_meta_resources
[*] meta_resource_gold (Uncommon) — Or