{ "_readme": [ "Drop-in art for Dungeon Boss. All cards render fully procedurally (frame,", "border, name, text, treasure icons) until a sheet path is filled in below;", "supplied art fills only the card's art window inside the procedural frame,", "so illustrations need no borders or text of their own.", "To add art for a category:", " 1. Drop the sheet PNG into /assets/images/ (row-major frame order).", " 2. Set that sheet's path below (frameWidth/frameHeight already match the", " art-window aspect the renderer uses).", " 3. Map each card id to its 0-based frame index in the matching map below.", "Sheets: rooms are landscape windows; heroes/spells portrait; bosses larger", "portrait. Ids not present in a map (or maps left empty) stay procedural.", "deckBackSheet is different: it's the FULL card back (not an art window", "inset into a procedural frame), used by the small deck-pile display on the", "left side of the board. 4 frames in a 2x2 grid, 300x420 each, row-major:", "0=Room Deck, 1=Spell Deck, 2=Hero Deck, 3=Epic Hero Deck. Until a path is", "set, each pile falls back to a procedural back design with a unique glyph.", "iconSheet is small badge icons (transparent bg, no border/plate — that's", "still drawn procedurally), reused all over the UI: the 4 treasure-class", "badges, the soul-count icon (hero cards, both boards, the soul-collect fx),", "and the hero HP heart (filled) / boss wound-tracker pip (filled=remaining,", "heartEmpty=lost). 128x128 each, 4x2 grid. Map key is the icon id." ], "roomSheet": { "key": "dungeonboss-rooms", "path": "assets/images/dungeonboss-rooms.png", "frameWidth": 300, "frameHeight": 200 }, "heroSheet": { "key": "dungeonboss-heroes", "path": "assets/images/dungeonboss-heroes.png", "frameWidth": 300, "frameHeight": 225 }, "spellSheet": { "key": "dungeonboss-spells", "path": "assets/images/dungeonboss-spells.png", "frameWidth": 300, "frameHeight": 160 }, "bossSheet": { "key": "dungeonboss-bosses", "path": "assets/images/dungeonboss-bosses.png", "frameWidth": 300, "frameHeight": 275 }, "deckBackSheet": { "key": "dungeonboss-deckbacks", "path": "assets/images/dungeonboss-deckbacks.png", "frameWidth": 300, "frameHeight": 420 }, "iconSheet": { "key": "dungeonboss-icons", "path": "assets/images/dungeonboss-icons.png", "frameWidth": 128, "frameHeight": 128 }, "rooms": { "darkaltar": 0, "opengrave": 1, "specterssanctum": 2, "succubusspa": 3, "dracolichlair": 4, "vampirebordello": 5, "goblinarmory": 6, "golemfactory": 7, "minotaursmaze": 8, "neanderthalcave": 9, "beastmenagerie": 10, "monstersballroom": 11, "brainsuckerhive": 12, "darklaboratory": 13, "hauntedlibrary": 14, "witchskitchen": 15, "allseeingeye": 16, "ligersden": 17, "bottomlesspit": 18, "boulderramp": 19, "dizzygashallway": 20, "jackpotstash": 21, "recyclingcenter": 22, "thecrushinator": 23, "centipedetunnel": 24, "constructionzone": 25, "dragonhatchery": 26, "mimicvault": 27, "monstrousmonument": 28, "torturechamber": 29, "zombieprison": 30 }, "spells": { "annihilator": 0, "assassin": 1, "cavein": 2, "counterspell": 3, "exhaustion": 4, "fear": 5, "freeze": 6, "giantsize": 7, "jeopardy": 8, "koboldstrike": 9, "motivation": 10, "princessinperil": 11, "soulharvest": 12, "teleportation": 13, "trepidation": 14, "zombieattack": 15 }, "heroes": { "nick": 0, "pugi": 1, "acacia": 2, "charles": 3, "delatorious": 4, "romero": 5, "boden": 6, "jarek": 7, "firesbreath": 8, "samuraitom": 9, "johnny": 10, "crystolalan": 11, "tieg": 12, "brandork": 13, "mitchell": 14, "kalish": 15, "dartteon": 16, "koey": 17, "joman": 18, "lance": 19, "jesta": 20, "kins": 21, "digby": 22, "jerome": 23, "fool": 24, "katelyn": 25, "kerberos": 26, "vanette": 27, "jejune": 28, "frankov": 29, "nate": 30, "antonius": 31, "asmor": 32, "tempros": 33, "chiakang": 34, "terric": 35, "wayward": 36, "hya": 37, "blackbeard": 38, "cecil": 39, "wallbanger": 40 }, "bosses": { "draculord": 0, "cleopatra": 1, "kingcroak": 2, "xyzax": 3, "cerebellus": 4, "seducia": 5, "gorgona": 6, "robobo": 7 }, "deckBacks": { "room": 0, "spell": 1, "hero": 2, "epic": 3 }, "icons": { "fighter": 0, "mage": 1, "thief": 2, "cleric": 3, "soul": 4, "heartEmpty": 5, "heart": 6 } }