1/**2 * Hand-picked tile coordinates into the Urizen 1-bit tileset v2.03 * (web/public/urizen/urizen_onebit_tileset__v2d0.png, sha-256 pinned by4 * scripts/import-urizen.mjs).5 *6 * Coordinates are [col, row] into the 206x50 grid of 12x12 tiles on a 13px7 * stride: tile pixel origin = (1 + 13*col, 1 + 13*row). Columns 25/51/77/1038 * are solid-magenta section rulers and must never appear here.9 *10 * Every entry was verified visually against a magnified render of the sheet;11 * comments describe what the source tile actually depicts. Tiles are12 * opaque-black-backed colored silhouettes; the loader alpha-keys them and can13 * tint them (see urizen.ts). Several names intentionally share a tile.14 */15export const URIZEN: Record<string, readonly [number, number]> = {16 // ---- terrain (per TerrainChar; drawn over per-terrain background fills) ----17 'terrain.plains': [12, 34], // sparse green grass tufts18 'terrain.forest': [0, 34], // pair of round deciduous trees19 'terrain.hills': [13, 34], // low green mounds20 'terrain.mountain': [15, 34], // gray twin peaks21 'terrain.water': [9, 34], // blue wave dashes (sea)22 'terrain.river': [9, 34], // same waves, tinted lighter at draw time23 'terrain.swamp': [11, 34], // dark-green marsh mottling24 'terrain.steppe': [7, 34], // dry orange grass tufts25 'terrain.arctic': [8, 34], // white snow drifts26 'terrain.volcano': [16, 34], // erupting red volcano27 'terrain.ore': [4, 13], // rock face with a large nugget (tinted steel at draw)28 'terrain.gold': [4, 13], // same nugget rock, tinted gold at draw29 'tree.pine': [2, 34], // clump of pines (forest variant)3031 // ---- per-cell terrain variants (weighted sets in terrain-style.ts) ----32 'terrain.plains.tufts': [4, 9], // two small grass tufts (sparser than base)33 'terrain.plains.blades': [3, 9], // three thin grass blades34 'terrain.plains.bare': [5, 13], // sparse dirt speckles (near-bare patch)35 'terrain.forest.checker': [1, 34], // pair of checker-foliage trees36 'terrain.forest.oak': [0, 8], // single broad round-canopy tree37 'terrain.hills.triple': [14, 34], // three jagged mounds38 'terrain.hills.dune': [19, 34], // single low dune mound39 'terrain.mountain.snowcap': [17, 34], // snow-capped white peak40 'terrain.swamp.mud': [10, 34], // brown mud mottling41 'terrain.swamp.lilypad': [2, 9], // lily pad42 'terrain.steppe.tall': [6, 34], // tall dry grass stalks43 'terrain.steppe.dense': [5, 34], // dense tall grass stand44 'terrain.arctic.sparkle': [18, 34], // wind-blown speckle field4546 // ---- sparse terrain decor (low-density accents, terrain-style.ts) ----47 'decor.flower': [15, 9], // single tulip-like flower48 'decor.shrub': [17, 9], // dense leafy shrub49 'decor.boulder': [4, 13], // round rock (shares the ore tile, tinted gray)50 'decor.mushroom': [2, 10], // red-cap mushroom51 'decor.stump': [4, 10], // tree stump52 'decor.deadtree': [5, 10], // gnarled dead tree53 'decor.bones': [3, 10], // scattered white bones54 'decor.reeds': [6, 9], // tall marsh reeds55 'decor.cactus': [0, 9], // cactus56 'decor.swirl': [4, 34], // teal water swirl/eddy5758 // ---- settlement tiers 0-3 (camp / village / town / city) ----59 'settlement.camp': [23, 33], // small brown tent60 'settlement.village': [0, 33], // red-roofed house with door61 'settlement.town': [18, 33], // cluster of brown huts62 'settlement.city': [28, 2], // gray multi-towered castle6364 // ---- walls L1-3 + tower ----65 'wall.l1': [33, 0], // vertical log palisade66 'wall.l2': [29, 2], // gray stone battlements67 'wall.l3': [27, 2], // castle curtain wall with gate68 'wall.tower': [50, 1], // stone watchtower with battlements6970 // ---- one glyph per protocol Building (tooltips / detail panels) ----71 'building.hall': [26, 2], // keep with gatehouse (town hall)72 'building.house': [1, 33], // red barn-roofed house73 'building.granary': [32, 1], // round thatched hut74 'building.warehouse': [37, 1], // large tan storehouse with windows75 'building.farm': [3, 24], // bound golden wheat sheaf76 'building.dock': [15, 40], // small sailboat at pier77 'building.pasture': [2, 16], // pink pig78 'building.lumber_camp': [4, 10], // fresh tree stump79 'building.mine': [30, 3], // gray cave / mine entrance80 'building.mill': [31, 1], // red windmill81 'building.bakery': [2, 20], // bread loaf82 'building.brewery': [0, 21], // brown ale tankard83 'building.smelter': [2, 42], // red furnace/brazier in flames84 'building.smithy': [28, 25], // gray anvil85 'building.tannery': [2, 23], // stretched hide on a rack86 'building.weavers_hall': [7, 23], // orange woven-cloth swatch87 'building.tailor_shop': [0, 26], // brown tunic/shirt88 'building.market': [2, 47], // market stall with awning89 'building.shrine': [29, 3], // golden bell shrine90 'building.church': [32, 2], // gold church with spire91 'building.library': [2, 36], // bookshelf92 'building.academy': [36, 2], // white columned parthenon93 'building.barracks': [38, 23], // armor on a stand94 'building.walls': [33, 0], // alias of wall.l1 (protocol building name)95 'building.tower': [50, 1], // alias of wall.tower (protocol building name)9697 // ---- warband kinds (tinted by tribe color at draw time) ----98 'warband.infantry': [121, 0], // figure with a vertical greatsword99 'warband.archers': [156, 0], // figure drawing a bow100 'warband.cavalry': [104, 29], // mounted rider (horse in profile)101102 // ---- civilian units ----103 'unit.caravan': [107, 39], // pack camel with rider (trade caravan)104 'unit.settler': [28, 29], // loaded hand cart / wagon105106 // ---- threat kinds (drawn in their natural sheet colors) ----107 'threat.goblin_camp': [128, 40], // green goblin with blade108 'threat.skeleton_barrow': [104, 38], // gray skeleton clutching a bone109 'threat.ogre_den': [104, 31], // hulking green ogre/troll110 'threat.demon_gate': [104, 37], // horned red imp/demon111112 // ---- effects & markers ----113 'effect.battle': [82, 34], // crossed gray swords (tinted red at draw)114 'effect.fire': [10, 42], // burst of red flames115 'effect.portal': [0, 49], // blue swirl portal (spare, e.g. demon gate alt)116 'banner.flag': [29, 23], // banner on a pole (tinted by tribe color)117118 // ---- 8 tribe "banner" humanoid portraits (visually distinct poses) ----119 'tribe.0': [104, 0], // plain figure with hand dagger120 'tribe.1': [113, 0], // shield-bearer with kite shield121 'tribe.2': [109, 0], // mage with orb-topped staff122 'tribe.3': [111, 0], // trident wielder123 'tribe.4': [104, 28], // pointed-hat wizard silhouette124 'tribe.5': [104, 29], // mounted rider125 'tribe.6': [174, 0], // robed priest raising a cross126 'tribe.7': [145, 0], // warrior in a horned helm127} as const;128129export type UrizenName = keyof typeof URIZEN;