openthebox/content/data/interactions.json
Samuel Bouchet 41bfb54a2c Implement chain reaction system replacing simple auto-activation
Redesign the interaction mechanic into a recursive chain reaction system
where items can trigger cascading reactions. Keys now open themed chests
which produce items that may trigger further reactions, with chain bonus
rewards for multi-step chains (x2/x3/x4+).

- Add 6 themed chests + mysterious chest + alchemist stone catalyst
- Rewrite InteractionEngine with recursive chain loop (max depth 10)
- Add ConsumeTrigger field to InteractionRule for catalyst support
- Add ChainBonusEvent and enrich InteractionTriggeredEvent with context
- Update rendering to show both reacting items and chain indicators
- Add item descriptions with anticipation hints for chain partners
- Update GDD Section 5 with full chain reaction specification
2026-03-15 18:43:42 +01:00

102 lines
2.9 KiB
JSON

[
{
"id": "key_chest_space",
"requiredItemTags": ["Key", "Space"],
"requiredItemIds": ["space_chest"],
"resultType": "OpenBox",
"resultData": "space_map,space_coordinates",
"isAutomatic": true,
"priority": 10,
"descriptionKey": "interaction.key_chest"
},
{
"id": "key_chest_medieval",
"requiredItemTags": ["Key", "Medieval"],
"requiredItemIds": ["medieval_chest"],
"resultType": "OpenBox",
"resultData": "medieval_crest,medieval_scroll",
"isAutomatic": true,
"priority": 10,
"descriptionKey": "interaction.key_chest"
},
{
"id": "key_chest_pirate",
"requiredItemTags": ["Key", "Pirate"],
"requiredItemIds": ["pirate_chest"],
"resultType": "OpenBox",
"resultData": "pirate_map,pirate_compass",
"isAutomatic": true,
"priority": 10,
"descriptionKey": "interaction.key_chest"
},
{
"id": "key_chest_contemporary",
"requiredItemTags": ["Key", "Contemporary"],
"requiredItemIds": ["contemporary_chest"],
"resultType": "OpenBox",
"resultData": "contemporary_badge,contemporary_usb",
"isAutomatic": true,
"priority": 10,
"descriptionKey": "interaction.key_chest"
},
{
"id": "key_chest_darkfantasy",
"requiredItemTags": ["Key", "DarkFantasy"],
"requiredItemIds": ["darkfantasy_chest"],
"resultType": "OpenBox",
"resultData": "darkfantasy_grimoire,darkfantasy_ring",
"isAutomatic": true,
"priority": 10,
"descriptionKey": "interaction.key_chest"
},
{
"id": "key_chest_mysterious",
"requiredItemTags": ["Key"],
"requiredItemIds": ["mysterious_chest"],
"resultType": "OpenBox",
"resultData": "lore_6,tint_void",
"isAutomatic": true,
"priority": 5,
"descriptionKey": "interaction.key_chest"
},
{
"id": "coordinates_map_combine",
"requiredItemTags": ["Coordinates"],
"requiredItemIds": ["space_map"],
"resultType": "Combine",
"resultData": "adventure_unlock:Space",
"isAutomatic": true,
"priority": 8,
"descriptionKey": "interaction.map_coordinates"
},
{
"id": "pirate_map_compass",
"requiredItemTags": [],
"requiredItemIds": ["pirate_map", "pirate_compass"],
"resultType": "Combine",
"resultData": "adventure:Pirate",
"isAutomatic": true,
"priority": 8,
"descriptionKey": "interaction.treasure_located"
},
{
"id": "badge_adventure_space",
"requiredItemTags": ["Badge", "Space"],
"requiredItemIds": null,
"resultType": "Unlock",
"resultData": "adventure:Space",
"isAutomatic": true,
"priority": 5,
"descriptionKey": "adventure.start"
},
{
"id": "badge_adventure_contemporary",
"requiredItemTags": ["Badge", "Contemporary"],
"requiredItemIds": null,
"resultType": "Unlock",
"resultData": "adventure:Contemporary",
"isAutomatic": true,
"priority": 5,
"descriptionKey": "adventure.start"
}
]