Blood → Ink
This commit is contained in:
parent
0a499d947e
commit
16b3fd0950
17 changed files with 70 additions and 59 deletions
11
.github/workflows/deploy-itch.yml
vendored
11
.github/workflows/deploy-itch.yml
vendored
|
|
@ -15,6 +15,17 @@ jobs:
|
||||||
with:
|
with:
|
||||||
dotnet-version: '10.0.x'
|
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
|
- name: Publish Blazor WASM
|
||||||
run: dotnet publish src/OpenTheBox.Web -c Release -o publish
|
run: dotnet publish src/OpenTheBox.Web -c Release -o publish
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,11 +65,11 @@ Hints for disabled choices use `|||` separator: `Option text|||Hint text #label
|
||||||
full documentation: https://loreline.app/fr/docs/
|
full documentation: https://loreline.app/fr/docs/
|
||||||
|
|
||||||
## Resources (Characteristics)
|
## 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
|
- 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.
|
Other resources (Health, Mana, Food, etc.) were removed as they had no gameplay impact.
|
||||||
|
|
||||||
## Ephemeral Items
|
## Ephemeral Items
|
||||||
|
|
|
||||||
10
GDD.md
10
GDD.md
|
|
@ -329,7 +329,7 @@ Chaque sous-boite d'aventure contient :
|
||||||
| Stamina (endurance) | 15 | Restaure de l'endurance |
|
| Stamina (endurance) | 15 | Restaure de l'endurance |
|
||||||
| Gold (or) | 15 | Ajoute de l'or |
|
| Gold (or) | 15 | Ajoute de l'or |
|
||||||
| Energy (energie) | 10 | Restaure de l'energie |
|
| 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) |
|
| 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.
|
> **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 |
|
| Mana | MP | Points de magie | Sorts, enchantements |
|
||||||
| Food | FD | Nourriture | Exploration, stamina |
|
| Food | FD | Nourriture | Exploration, stamina |
|
||||||
| Stamina | ST | Endurance | Actions physiques, craft |
|
| Stamina | ST | Endurance | Actions physiques, craft |
|
||||||
| Blood | BL | Sang | Rituels, magie noire |
|
| Ink | IN | Encre | Rituels, magie noire |
|
||||||
| Gold | GD | Or | Commerce, ameliorations |
|
| Gold | GD | Or | Commerce, ameliorations |
|
||||||
| Oxygen | O2 | Oxygene | Exploration spatiale/sous-marine|
|
| Oxygen | O2 | Oxygene | Exploration spatiale/sous-marine|
|
||||||
| Energy | EN | Energie | Machines, stations de craft |
|
| 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.
|
- 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 consomment lors des aventures, du craft et des interactions.
|
||||||
- Les ressources se restaurent via la Boite de fourniture, les consommables et certaines 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
|
### Deblocage des ressources
|
||||||
|
|
||||||
|
|
@ -714,7 +714,7 @@ Les ressources ne sont pas toutes disponibles des le debut :
|
||||||
| Mana | Premiere rencontre avec un personnage magique |
|
| Mana | Premiere rencontre avec un personnage magique |
|
||||||
| Food | Premiere aventure exploree |
|
| Food | Premiere aventure exploree |
|
||||||
| Stamina | Premiere action physique (combat, craft) |
|
| Stamina | Premiere action physique (combat, craft) |
|
||||||
| Blood | Deblocage du theme DarkFantasy |
|
| Ink | Deblocage du theme DarkFantasy |
|
||||||
| Gold | Premier lieu de commerce decouvert |
|
| Gold | Premier lieu de commerce decouvert |
|
||||||
| Oxygen | Deblocage du theme Space OU aventure sous-marine |
|
| Oxygen | Deblocage du theme Space OU aventure sous-marine |
|
||||||
| Energy | Premiere station de craft construite |
|
| 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
|
- **Ambiance** : fantasy sombre, horreur gothique
|
||||||
- **Lieux typiques** : cryptes, forets maudites, tours sombres
|
- **Lieux typiques** : cryptes, forets maudites, tours sombres
|
||||||
- **Ressource cle** : Blood, Mana
|
- **Ressource cle** : Ink, Mana
|
||||||
- **Personnages associes** : Malkith (version sombre)
|
- **Personnages associes** : Malkith (version sombre)
|
||||||
- **Mood possible** : Dark, Spooky, Tragedy
|
- **Mood possible** : Dark, Spooky, Tragedy
|
||||||
- **Environnement** : Nature, Town
|
- **Environnement** : Nature, Town
|
||||||
|
|
|
||||||
|
|
@ -271,11 +271,11 @@ Ouvrir une boîte et voir ce qui se passe
|
||||||
#opt-convince // "Convince Mordecai to open them together"
|
#opt-convince // "Convince Mordecai to open them together"
|
||||||
Convaincre Mordecai de les ouvrir ensemble
|
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..."
|
#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 sang comme pont|||Vous ressentez une étrange chaleur dans vos veines, comme si quelque chose d'ancien vous reconnaissait...
|
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."
|
#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. Votre sang chante. La boîte répond.
|
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."
|
#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.
|
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."
|
#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.
|
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."
|
#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 au sang étrange.
|
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."
|
#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.
|
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.
|
||||||
|
|
|
||||||
|
|
@ -189,16 +189,16 @@ beat TheVault
|
||||||
-> OpenOneBox
|
-> OpenOneBox
|
||||||
Convince Mordecai to open them together #opt-convince if corruption < 30
|
Convince Mordecai to open them together #opt-convince if corruption < 30
|
||||||
-> ConvinceMordecai
|
-> 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)
|
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)
|
||||||
-> BloodCommunion
|
-> InkCommunion
|
||||||
|
|
||||||
beat BloodCommunion
|
beat InkCommunion
|
||||||
markSecretBranch("darkfantasy_blood_communion")
|
markSecretBranch("darkfantasy_ink_communion")
|
||||||
You press your palm against the nearest box. Your blood sings. The box answers. #blood-press
|
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
|
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
|
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
|
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
|
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
|
mordecai: They VOTED? Without a suggestion box? Wait -- they ARE the suggestion boxes. #mordecai-voted
|
||||||
boxesFreed += 50
|
boxesFreed += 50
|
||||||
|
|
|
||||||
|
|
@ -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."
|
#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.
|
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."
|
#secret-darkfantasy-words // "The Ink 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.
|
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."
|
#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.
|
Une pièce tourne sans fin sur une surface invisible, sans jamais retomber.
|
||||||
|
|
|
||||||
|
|
@ -82,9 +82,9 @@ beat Alcove
|
||||||
A scale glimmers on the ground, iridescent and warm to the touch. #secret-medieval
|
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
|
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
|
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")
|
if hasSecretBranch("pirate_one_of_us")
|
||||||
A coin spins endlessly on an invisible surface, never landing. #secret-pirate
|
A coin spins endlessly on an invisible surface, never landing. #secret-pirate
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@
|
||||||
"entries": [
|
"entries": [
|
||||||
{"itemDefinitionId": "material_titanium_raw", "weight": 2},
|
{"itemDefinitionId": "material_titanium_raw", "weight": 2},
|
||||||
{"itemDefinitionId": "material_steel_ingot", "weight": 3},
|
{"itemDefinitionId": "material_steel_ingot", "weight": 3},
|
||||||
{"itemDefinitionId": "blood_vial", "weight": 2},
|
{"itemDefinitionId": "ink_vial", "weight": 2},
|
||||||
{"itemDefinitionId": "cosmetic_hair_cyberpunk", "weight": 2},
|
{"itemDefinitionId": "cosmetic_hair_cyberpunk", "weight": 2},
|
||||||
{"itemDefinitionId": "cosmetic_eyes_pilotglasses", "weight": 2},
|
{"itemDefinitionId": "cosmetic_eyes_pilotglasses", "weight": 2},
|
||||||
{"itemDefinitionId": "cosmetic_body_suit", "weight": 2},
|
{"itemDefinitionId": "cosmetic_body_suit", "weight": 2},
|
||||||
|
|
@ -256,7 +256,7 @@
|
||||||
"rollCount": 1,
|
"rollCount": 1,
|
||||||
"entries": [
|
"entries": [
|
||||||
{"itemDefinitionId": "meta_resource_gold", "weight": 2},
|
{"itemDefinitionId": "meta_resource_gold", "weight": 2},
|
||||||
{"itemDefinitionId": "meta_resource_blood", "weight": 1},
|
{"itemDefinitionId": "meta_resource_ink", "weight": 1},
|
||||||
{"itemDefinitionId": "box_meta_mastery", "weight": 1}
|
{"itemDefinitionId": "box_meta_mastery", "weight": 1}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -497,7 +497,7 @@
|
||||||
{"itemDefinitionId": "darkfantasy_gem", "weight": 1},
|
{"itemDefinitionId": "darkfantasy_gem", "weight": 1},
|
||||||
{"itemDefinitionId": "darkfantasy_key", "weight": 3},
|
{"itemDefinitionId": "darkfantasy_key", "weight": 3},
|
||||||
{"itemDefinitionId": "mysterious_key", "weight": 2},
|
{"itemDefinitionId": "mysterious_key", "weight": 2},
|
||||||
{"itemDefinitionId": "blood_vial", "weight": 3}
|
{"itemDefinitionId": "ink_vial", "weight": 3}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
@ -512,7 +512,7 @@
|
||||||
"rollCount": 1,
|
"rollCount": 1,
|
||||||
"entries": [
|
"entries": [
|
||||||
{"itemDefinitionId": "resource_max_gold", "weight": 2},
|
{"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_foundry", "weight": 4, "condition": {"type": "HasUIFeature", "targetId": "CraftingPanel"}},
|
||||||
{"itemDefinitionId": "blueprint_workbench", "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"}},
|
{"itemDefinitionId": "blueprint_furnace", "weight": 4, "condition": {"type": "HasUIFeature", "targetId": "CraftingPanel"}},
|
||||||
|
|
@ -532,7 +532,7 @@
|
||||||
"rollCount": 2,
|
"rollCount": 2,
|
||||||
"entries": [
|
"entries": [
|
||||||
{"itemDefinitionId": "gold_pouch", "weight": 4},
|
{"itemDefinitionId": "gold_pouch", "weight": 4},
|
||||||
{"itemDefinitionId": "blood_vial", "weight": 1}
|
{"itemDefinitionId": "ink_vial", "weight": 1}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
{"id": "meta_animation", "nameKey": "meta.animation", "descriptionKey": "meta.animation.desc", "category": "Meta", "rarity": "Uncommon", "tags": ["Meta"], "metaUnlock": "BoxAnimation"},
|
{"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_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_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_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_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"},
|
{"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_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": "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": "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"},
|
{"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": "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_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": "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."},
|
{"id": "cookie_fortune", "nameKey": "item.cookie_fortune", "category": "Consumable", "rarity": "Common", "tags": ["Cookie", "Fun"], "description": "A fortune cookie with wisdom of questionable origin."},
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,7 @@
|
||||||
"item.rarity.legendary": "Legendary",
|
"item.rarity.legendary": "Legendary",
|
||||||
"item.rarity.mythic": "Mythic",
|
"item.rarity.mythic": "Mythic",
|
||||||
|
|
||||||
"resource.blood": "Blood",
|
"resource.ink": "Ink",
|
||||||
"resource.gold": "Gold",
|
"resource.gold": "Gold",
|
||||||
|
|
||||||
"stat.strength": "Strength",
|
"stat.strength": "Strength",
|
||||||
|
|
@ -215,7 +215,7 @@
|
||||||
"material.form.dust": "Dust",
|
"material.form.dust": "Dust",
|
||||||
"material.form.gem": "Gem",
|
"material.form.gem": "Gem",
|
||||||
|
|
||||||
"item.blood_vial": "Blood Vial",
|
"item.ink_vial": "Ink Vial",
|
||||||
"item.gold_pouch": "Gold Pouch",
|
"item.gold_pouch": "Gold Pouch",
|
||||||
|
|
||||||
"item.space.badge": "Astronaut Badge",
|
"item.space.badge": "Astronaut Badge",
|
||||||
|
|
@ -263,7 +263,7 @@
|
||||||
"item.microscopic.mitochondria": "Hyperactive Mitochondria",
|
"item.microscopic.mitochondria": "Hyperactive Mitochondria",
|
||||||
"item.microscopic.prion": "Friendly Prion (probably)",
|
"item.microscopic.prion": "Friendly Prion (probably)",
|
||||||
"item.darkfantasy.ring": "Cursed Ring",
|
"item.darkfantasy.ring": "Cursed Ring",
|
||||||
"item.darkfantasy.rune": "Blood Rune",
|
"item.darkfantasy.rune": "Ink Rune",
|
||||||
"item.darkfantasy.cloak": "Shadow Cloak",
|
"item.darkfantasy.cloak": "Shadow Cloak",
|
||||||
"item.darkfantasy.grimoire": "Necromancer's Grimoire",
|
"item.darkfantasy.grimoire": "Necromancer's Grimoire",
|
||||||
"item.darkfantasy.gem": "Soul Gem",
|
"item.darkfantasy.gem": "Soul Gem",
|
||||||
|
|
@ -274,7 +274,7 @@
|
||||||
"item.stat_boost": "{0} +1",
|
"item.stat_boost": "{0} +1",
|
||||||
|
|
||||||
"item.resource_max_gold": "Gold Capacity Upgrade",
|
"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.music_melody": "Box Melody",
|
||||||
"item.cookie_fortune": "Fortune Cookie",
|
"item.cookie_fortune": "Fortune Cookie",
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,7 @@
|
||||||
"item.rarity.legendary": "Légendaire",
|
"item.rarity.legendary": "Légendaire",
|
||||||
"item.rarity.mythic": "Mythique",
|
"item.rarity.mythic": "Mythique",
|
||||||
|
|
||||||
"resource.blood": "Sang",
|
"resource.ink": "Encre",
|
||||||
"resource.gold": "Or",
|
"resource.gold": "Or",
|
||||||
|
|
||||||
"stat.strength": "Force",
|
"stat.strength": "Force",
|
||||||
|
|
@ -215,7 +215,7 @@
|
||||||
"material.form.dust": "Poudre",
|
"material.form.dust": "Poudre",
|
||||||
"material.form.gem": "Gemme",
|
"material.form.gem": "Gemme",
|
||||||
|
|
||||||
"item.blood_vial": "Fiole de sang",
|
"item.ink_vial": "Fiole d'encre",
|
||||||
"item.gold_pouch": "Bourse d'or",
|
"item.gold_pouch": "Bourse d'or",
|
||||||
|
|
||||||
"item.space.badge": "Badge d'astronaute",
|
"item.space.badge": "Badge d'astronaute",
|
||||||
|
|
@ -263,7 +263,7 @@
|
||||||
"item.microscopic.mitochondria": "Mitochondrie hyperactive",
|
"item.microscopic.mitochondria": "Mitochondrie hyperactive",
|
||||||
"item.microscopic.prion": "Prion amical (probablement)",
|
"item.microscopic.prion": "Prion amical (probablement)",
|
||||||
"item.darkfantasy.ring": "Anneau maudit",
|
"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.cloak": "Cape d'ombre",
|
||||||
"item.darkfantasy.grimoire": "Grimoire du nécromancien",
|
"item.darkfantasy.grimoire": "Grimoire du nécromancien",
|
||||||
"item.darkfantasy.gem": "Gemme d'âme",
|
"item.darkfantasy.gem": "Gemme d'âme",
|
||||||
|
|
@ -274,7 +274,7 @@
|
||||||
"item.stat_boost": "{0} +1",
|
"item.stat_boost": "{0} +1",
|
||||||
|
|
||||||
"item.resource_max_gold": "Amélioration Capacité Or",
|
"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.music_melody": "Mélodie de boîte",
|
||||||
"item.cookie_fortune": "Fortune Cookie",
|
"item.cookie_fortune": "Fortune Cookie",
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ Special properties:
|
||||||
- `adventureTheme` — Links token to an adventure theme
|
- `adventureTheme` — Links token to an adventure theme
|
||||||
- `cosmeticSlot` / `cosmeticValue` — Cosmetic equipment data
|
- `cosmeticSlot` / `cosmeticValue` — Cosmetic equipment data
|
||||||
- `statType` / `statValue` — Stat modification
|
- `statType` / `statValue` — Stat modification
|
||||||
- `resourceType` / `resourceAmount` — Resource modification (Gold, Blood only)
|
- `resourceType` / `resourceAmount` — Resource modification (Gold, Ink only)
|
||||||
- `metaUnlock` — UI feature to unlock
|
- `metaUnlock` — UI feature to unlock
|
||||||
- `workstationType` — Workstation blueprint
|
- `workstationType` — Workstation blueprint
|
||||||
|
|
||||||
|
|
@ -40,7 +40,7 @@ content/adventures/
|
||||||
├── prehistoric/ — Stone age theme
|
├── prehistoric/ — Stone age theme
|
||||||
├── cosmic/ — Cosmic/divine theme
|
├── cosmic/ — Cosmic/divine theme
|
||||||
├── microscopic/ — Micro-world 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)
|
└── 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` |
|
| Prehistoric | `hasStat("Strength", 10)` | `prehistoric_champion` |
|
||||||
| Cosmic | `hasStat("Intelligence", 10)` | `cosmic_enlightened` |
|
| Cosmic | `hasStat("Intelligence", 10)` | `cosmic_enlightened` |
|
||||||
| Microscopic | `hasStat("Dexterity", 10)` | `microscopic_surgeon` |
|
| Microscopic | `hasStat("Dexterity", 10)` | `microscopic_surgeon` |
|
||||||
| DarkFantasy | `hasResource("Blood", 20)` | `darkfantasy_blood_communion`|
|
| DarkFantasy | `hasResource("Ink", 20)` | `darkfantasy_ink_communion`|
|
||||||
|
|
||||||
### Destiny Adventure (Final)
|
### Destiny Adventure (Final)
|
||||||
- Triggered by `destiny_token` from `box_endgame`
|
- Triggered by `destiny_token` from `box_endgame`
|
||||||
|
|
@ -80,7 +80,7 @@ Boxes ──► Items ──► Inventory
|
||||||
│ ├──► Cosmetics ──► Appearance ──┐
|
│ ├──► Cosmetics ──► Appearance ──┐
|
||||||
│ ├──► Stat Items ──► Stats ──────┤
|
│ ├──► Stat Items ──► Stats ──────┤
|
||||||
│ └──► Consumables ──► Resources ─┤
|
│ └──► 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
|
Strength, Intelligence, Luck, Charisma, Dexterity, Wisdom
|
||||||
|
|
||||||
### ResourceType (Characteristics)
|
### ResourceType (Characteristics)
|
||||||
Blood, Gold
|
Ink, Gold
|
||||||
Only resources with actual adventure gates are kept. Blood gates the DarkFantasy secret branch (≥20), Gold gates the Contemporary secret branch (≥30).
|
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).
|
Resources are displayed as "Characteristics" to the player with current/max values (e.g., Gold 50/100).
|
||||||
|
|
||||||
### CosmeticSlot
|
### CosmeticSlot
|
||||||
|
|
@ -125,7 +125,7 @@ UI features are unlocked in a fixed order regardless of which meta box drops. Th
|
||||||
3. **AutoSave** — Automatic saving
|
3. **AutoSave** — Automatic saving
|
||||||
4. **InventoryPanel** — Interactive inventory table
|
4. **InventoryPanel** — Interactive inventory table
|
||||||
5. **StatsPanel** — Progression stats and character attributes
|
5. **StatsPanel** — Progression stats and character attributes
|
||||||
6. **ResourcePanel** — Characteristics bars (Gold, Blood)
|
6. **ResourcePanel** — Characteristics bars (Gold, Ink)
|
||||||
7. **PortraitPanel** — ASCII art portrait
|
7. **PortraitPanel** — ASCII art portrait
|
||||||
8. **ChatPanel** — Event log panel
|
8. **ChatPanel** — Event log panel
|
||||||
9. **ExtendedColors** — 256-color palette
|
9. **ExtendedColors** — 256-color palette
|
||||||
|
|
|
||||||
|
|
@ -31,7 +31,7 @@ public enum AdventureTheme
|
||||||
/// <summary>Microscopic world of cells, atoms, and circuits. Key resources: Energy, Oxygen.</summary>
|
/// <summary>Microscopic world of cells, atoms, and circuits. Key resources: Energy, Oxygen.</summary>
|
||||||
Microscopic,
|
Microscopic,
|
||||||
|
|
||||||
/// <summary>Dark fantasy with gothic horror elements. Key resources: Blood, Mana. Unlocks Blood resource.</summary>
|
/// <summary>Dark fantasy with gothic horror elements. Key resources: Ink, Mana. Unlocks Ink resource.</summary>
|
||||||
DarkFantasy,
|
DarkFantasy,
|
||||||
|
|
||||||
/// <summary>The final adventure. Acknowledges all previous adventures and secret branches. Unlocked by the endgame box.</summary>
|
/// <summary>The final adventure. Acknowledges all previous adventures and secret branches. Unlocked by the endgame box.</summary>
|
||||||
|
|
|
||||||
|
|
@ -6,8 +6,8 @@ namespace OpenTheBox.Core.Enums;
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public enum ResourceType
|
public enum ResourceType
|
||||||
{
|
{
|
||||||
/// <summary>Blood resource. Unlocked with the DarkFantasy theme. Gates the Blood Communion secret branch (≥20).</summary>
|
/// <summary>Ink resource. Unlocked with the DarkFantasy theme. Gates the Ink Communion secret branch (≥20).</summary>
|
||||||
Blood,
|
Ink,
|
||||||
|
|
||||||
/// <summary>Currency. Unlocked when a trading location is discovered. Gates the Corporate VIP secret branch (≥30).</summary>
|
/// <summary>Currency. Unlocked when a trading location is discovered. Gates the Corporate VIP secret branch (≥30).</summary>
|
||||||
Gold
|
Gold
|
||||||
|
|
|
||||||
|
|
@ -219,8 +219,8 @@ public class ResourcePanelTests
|
||||||
public void Render_ZeroMax_DoesNotThrow()
|
public void Render_ZeroMax_DoesNotThrow()
|
||||||
{
|
{
|
||||||
var state = GameState.Create("Test", Locale.EN);
|
var state = GameState.Create("Test", Locale.EN);
|
||||||
state.VisibleResources.Add(ResourceType.Blood);
|
state.VisibleResources.Add(ResourceType.Ink);
|
||||||
state.Resources[ResourceType.Blood] = new ResourceState(0, 0);
|
state.Resources[ResourceType.Ink] = new ResourceState(0, 0);
|
||||||
var result = RenderHelper.RenderToString(ResourcePanel.Render(state));
|
var result = RenderHelper.RenderToString(ResourcePanel.Render(state));
|
||||||
Assert.NotEmpty(result);
|
Assert.NotEmpty(result);
|
||||||
}
|
}
|
||||||
|
|
@ -239,7 +239,7 @@ public class ResourcePanelTests
|
||||||
public void Render_VisibleButNotInDict_Skipped()
|
public void Render_VisibleButNotInDict_Skipped()
|
||||||
{
|
{
|
||||||
var state = GameState.Create("Test", Locale.EN);
|
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
|
// Not adding to Resources dict → should skip without crash
|
||||||
var result = RenderHelper.RenderToString(ResourcePanel.Render(state));
|
var result = RenderHelper.RenderToString(ResourcePanel.Render(state));
|
||||||
Assert.NotEmpty(result);
|
Assert.NotEmpty(result);
|
||||||
|
|
|
||||||
|
|
@ -1158,7 +1158,7 @@ public class ContentValidationTests
|
||||||
"prehistoric_champion",
|
"prehistoric_champion",
|
||||||
"cosmic_enlightened",
|
"cosmic_enlightened",
|
||||||
"microscopic_surgeon",
|
"microscopic_surgeon",
|
||||||
"darkfantasy_blood_communion"
|
"darkfantasy_ink_communion"
|
||||||
};
|
};
|
||||||
|
|
||||||
// All 9 regular adventure themes (excluding Destiny)
|
// All 9 regular adventure themes (excluding Destiny)
|
||||||
|
|
|
||||||
|
|
@ -174,9 +174,9 @@
|
||||||
|
|
||||||
## Consumable (6 items)
|
## Consumable (6 items)
|
||||||
────────────────────────────────────────────────────────────────────────────────
|
────────────────────────────────────────────────────────────────────────────────
|
||||||
[**] blood_vial (Rare) — Fiole de sang
|
[**] ink_vial (Rare) — Fiole d'encre
|
||||||
Loot: box_epic, box_adventure_darkfantasy, box_supply
|
Loot: box_epic, box_adventure_darkfantasy, box_supply
|
||||||
Consume: +5 Blood
|
Consume: +5 Ink
|
||||||
|
|
||||||
[**] gold_pouch (Common) — Bourse d'or
|
[**] gold_pouch (Common) — Bourse d'or
|
||||||
Loot: box_ok_tier, box_adventure_pirate, box_supply
|
Loot: box_ok_tier, box_adventure_pirate, box_supply
|
||||||
|
|
@ -186,9 +186,9 @@
|
||||||
Loot: box_improvement
|
Loot: box_improvement
|
||||||
Upgrade: max Gold
|
Upgrade: max Gold
|
||||||
|
|
||||||
[**] resource_max_blood (Rare) — Amélioration Capacité Sang
|
[**] resource_max_ink (Rare) — Amélioration Capacité Encre
|
||||||
Loot: box_improvement
|
Loot: box_improvement
|
||||||
Upgrade: max Blood
|
Upgrade: max Ink
|
||||||
|
|
||||||
[**] music_melody (Rare) — Mélodie de boîte
|
[**] music_melody (Rare) — Mélodie de boîte
|
||||||
Loot: box_music(G)
|
Loot: box_music(G)
|
||||||
|
|
@ -603,7 +603,7 @@
|
||||||
[*] meta_shortcuts (Rare) — Raccourcis clavier
|
[*] meta_shortcuts (Rare) — Raccourcis clavier
|
||||||
Unlock: KeyboardShortcuts
|
Unlock: KeyboardShortcuts
|
||||||
|
|
||||||
[*] meta_resource_blood (Rare) — Sang
|
[*] meta_resource_ink (Rare) — Encre
|
||||||
Loot: box_meta_resources
|
Loot: box_meta_resources
|
||||||
|
|
||||||
[*] meta_resource_gold (Uncommon) — Or
|
[*] meta_resource_gold (Uncommon) — Or
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue