A new-school reimagining of Sierra's 1980s AGI interpreter in Rust + macroquad: - Dual-buffer (visual + priority) room model with hand-painted walkability - In-engine room editor: brush/line/rect/fill/pick/erase/oval/image/spawn/object tools - Sprite pipeline (PNG -> EGA quantize), multi-room worlds with edge exits - Objects with look/use/needs/keys/win conditions (no code) - Forgiving text parser + optional local-LLM lane (Ollama / OpenRouter) - Branching NPC dialogue trees, chiptune SFX, per-room ambient music - Content kit: 61 archetypes across fantasy/scifi/monsters/saucy/horror - Full docs: README, EDITOR_GUIDE, MANUAL, art manifesto + Gemini prompts Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
158 lines
3.6 KiB
JSON
158 lines
3.6 KiB
JSON
[
|
|
{
|
|
"name": "sword",
|
|
"sprite": "sword",
|
|
"x": 80,
|
|
"y": 130,
|
|
"look": "A notched iron sword. It has Opinions about orcs.",
|
|
"takeable": true,
|
|
"synonyms": "blade weapon",
|
|
"use_text": "",
|
|
"needs": "",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "spellbook",
|
|
"sprite": "spellbook",
|
|
"x": 80,
|
|
"y": 130,
|
|
"look": "A spellbook bound in something best not identified. The runes won't hold still.",
|
|
"takeable": true,
|
|
"synonyms": "book tome grimoire",
|
|
"use_text": "",
|
|
"needs": "",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "key",
|
|
"sprite": "key",
|
|
"x": 80,
|
|
"y": 130,
|
|
"look": "A heavy iron key, cold and important-looking.",
|
|
"takeable": true,
|
|
"synonyms": "ironkey",
|
|
"use_text": "",
|
|
"needs": "",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "potion",
|
|
"sprite": "potion",
|
|
"x": 80,
|
|
"y": 130,
|
|
"look": "A vial of bubbling red liquid. Almost certainly fine.",
|
|
"takeable": true,
|
|
"synonyms": "vial elixir flask",
|
|
"use_text": "",
|
|
"needs": "",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "torch",
|
|
"sprite": "torch",
|
|
"x": 80,
|
|
"y": 130,
|
|
"look": "A guttering torch. It pushes the dark back a little.",
|
|
"takeable": true,
|
|
"synonyms": "light flame",
|
|
"use_text": "",
|
|
"needs": "",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "orc",
|
|
"sprite": "orc",
|
|
"x": 80,
|
|
"y": 120,
|
|
"look": "A green orc, picking its teeth with a dagger. It hasn't noticed you. Yet.",
|
|
"takeable": false,
|
|
"synonyms": "monster brute goblin",
|
|
"use_text": "You poke the orc. It looks up. In hindsight, a mistake.",
|
|
"needs": "",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "villager",
|
|
"sprite": "villager",
|
|
"x": 80,
|
|
"y": 120,
|
|
"look": "A nervous villager. 'You're... not from the cave, are you?'",
|
|
"takeable": false,
|
|
"synonyms": "person man woman npc",
|
|
"use_text": "'Sorry, nothing for you,' the villager mumbles.",
|
|
"needs": "",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "chest",
|
|
"sprite": "chest",
|
|
"x": 80,
|
|
"y": 135,
|
|
"look": "A banded wooden chest. Locked.",
|
|
"takeable": false,
|
|
"synonyms": "box trunk",
|
|
"use_text": "The key turns; the lid yawns open and old gold spills out.",
|
|
"needs": "key",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "door",
|
|
"sprite": "door",
|
|
"x": 80,
|
|
"y": 120,
|
|
"look": "A stout wooden door, banded with iron.",
|
|
"takeable": false,
|
|
"synonyms": "gate",
|
|
"use_text": "The lock clunks and the door swings wide.",
|
|
"needs": "key",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "altar",
|
|
"sprite": "altar",
|
|
"x": 80,
|
|
"y": 100,
|
|
"look": "A stone altar humming with cold light. Something is meant to rest here.",
|
|
"takeable": false,
|
|
"synonyms": "shrine pedestal",
|
|
"use_text": "You lay the spellbook on the altar. A doorway tears open in the air. THE END.",
|
|
"needs": "spellbook",
|
|
"wins": true
|
|
},
|
|
{
|
|
"name": "tree",
|
|
"sprite": "tree",
|
|
"x": 60,
|
|
"y": 80,
|
|
"look": "An ancient tree, bark like old leather.",
|
|
"takeable": false,
|
|
"synonyms": "oak trunk wood",
|
|
"use_text": "",
|
|
"needs": "",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "rock",
|
|
"sprite": "rock",
|
|
"x": 120,
|
|
"y": 130,
|
|
"look": "A mossy boulder. Immovable, and a little smug about it.",
|
|
"takeable": false,
|
|
"synonyms": "boulder stone",
|
|
"use_text": "",
|
|
"needs": "",
|
|
"wins": false
|
|
},
|
|
{
|
|
"name": "sign",
|
|
"sprite": "sign",
|
|
"x": 80,
|
|
"y": 50,
|
|
"look": "A weathered signpost, paint long faded.",
|
|
"takeable": false,
|
|
"synonyms": "notice post",
|
|
"use_text": "",
|
|
"needs": "",
|
|
"wins": false
|
|
}
|
|
] |