diff --git a/raws/items.json b/raws/items.json index 2c0c678..a303d68 100644 --- a/raws/items.json +++ b/raws/items.json @@ -2,7 +2,7 @@ { "id": "potion_health", "name": { "name": "potion of health", "plural": "potions of health" }, - "renderable": { "glyph": "!", "fg": "#FF00FF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "!", "fg": "#FF00FF", "bg": "#000000", "order": 4 }, "weight": 1, "value": 50, "flags": ["CONSUMABLE", "DESTRUCTIBLE"], @@ -12,7 +12,7 @@ { "id": "potion_health_weak", "name": { "name": "potion of lesser health", "plural": "potions of lesser health" }, - "renderable": { "glyph": "!", "fg": "#FF00FF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "!", "fg": "#FF00FF", "bg": "#000000", "order": 4 }, "weight": 1, "value": 25, "flags": ["CONSUMABLE", "DESTRUCTIBLE"], @@ -22,7 +22,7 @@ { "id": "scroll_identify", "name": { "name": "scroll of identify", "plural": "scrolls of identify" }, - "renderable": { "glyph": "?", "fg": "#0FFFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "?", "fg": "#0FFFFF", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 100, "flags": ["CONSUMABLE", "DESTRUCTIBLE", "IDENTIFY"], @@ -31,7 +31,7 @@ { "id": "scroll_removecurse", "name": { "name": "scroll of remove curse", "plural": "scrolls of remove curse" }, - "renderable": { "glyph": "?", "fg": "#0FFFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "?", "fg": "#0FFFFF", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 200, "flags": ["CONSUMABLE", "DESTRUCTIBLE", "REMOVE_CURSE"], @@ -40,7 +40,7 @@ { "id": "scroll_health", "name": { "name": "scroll of healing word", "plural": "scrolls of healing word" }, - "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 50, "flags": ["CONSUMABLE", "DESTRUCTIBLE"], @@ -50,7 +50,7 @@ { "id": "scroll_mass_health", "name": { "name": "scroll of mass healing word", "plural": "scrolls of mass healing word" }, - "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 200, "flags": ["CONSUMABLE", "DESTRUCTIBLE"], @@ -60,7 +60,7 @@ { "id": "scroll_magicmissile", "name": { "name": "scroll of magic missile", "plural": "scrolls of magic missile" }, - "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 50, "flags": ["CONSUMABLE", "DESTRUCTIBLE"], @@ -70,7 +70,7 @@ { "id": "scroll_embers", "name": { "name": "scroll of embers", "plural": "scrolls of embers" }, - "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 100, "flags": ["CONSUMABLE", "DESTRUCTIBLE"], @@ -80,7 +80,7 @@ { "id": "scroll_fireball", "name": { "name": "scroll of fireball", "plural": "scrolls of fireball" }, - "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 200, "flags": ["CONSUMABLE", "DESTRUCTIBLE"], @@ -95,7 +95,7 @@ { "id": "scroll_confusion", "name": { "name": "scroll of confusion", "plural": "scrolls of confusion" }, - "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 100, "flags": ["CONSUMABLE", "DESTRUCTIBLE"], @@ -105,7 +105,7 @@ { "id": "scroll_mass_confusion", "name": { "name": "scroll of mass confusion", "plural": "scrolls of mass confusion" }, - "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 200, "flags": ["CONSUMABLE", "DESTRUCTIBLE"], @@ -115,7 +115,7 @@ { "id": "scroll_magicmap", "name": { "name": "scroll of magic mapping", "plural": "scrolls of magic mapping" }, - "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "?", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 50, "flags": ["CONSUMABLE", "DESTRUCTIBLE", "MAGICMAP"], @@ -125,7 +125,7 @@ { "id": "equip_dagger", "name": { "name": "dagger", "plural": "daggers" }, - "renderable": { "glyph": ")", "fg": "#808080", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": ")", "fg": "#808080", "bg": "#000000", "order": 4 }, "weight": 1, "value": 2, "flags": ["EQUIP_MELEE"], @@ -134,7 +134,7 @@ { "id": "equip_shortsword", "name": { "name": "shortsword", "plural": "shortswords" }, - "renderable": { "glyph": ")", "fg": "#C0C0C0", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": ")", "fg": "#C0C0C0", "bg": "#000000", "order": 4 }, "weight": 2, "value": 10, "flags": ["EQUIP_MELEE"], @@ -143,7 +143,7 @@ { "id": "equip_rapier", "name": { "name": "rapier", "plural": "rapiers" }, - "renderable": { "glyph": ")", "fg": "#C0C0C0", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": ")", "fg": "#C0C0C0", "bg": "#000000", "order": 4 }, "weight": 2, "value": 10, "flags": ["EQUIP_MELEE"], @@ -152,7 +152,7 @@ { "id": "equip_pitchfork", "name": { "name": "pitchfork", "plural": "pitchforks" }, - "renderable": { "glyph": ")", "fg": "#C0C0C0", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": ")", "fg": "#C0C0C0", "bg": "#000000", "order": 4 }, "weight": 2, "value": 5, "flags": ["EQUIP_MELEE"], @@ -161,7 +161,7 @@ { "id": "equip_sickle", "name": { "name": "sickle", "plural": "sickles" }, - "renderable": { "glyph": ")", "fg": "#C0C0C0", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": ")", "fg": "#C0C0C0", "bg": "#000000", "order": 4 }, "weight": 2, "value": 5, "flags": ["EQUIP_MELEE"], @@ -170,7 +170,7 @@ { "id": "equip_handaxe", "name": { "name": "handaxe", "plural": "handaxes" }, - "renderable": { "glyph": ")", "fg": "#C0C0C0", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": ")", "fg": "#C0C0C0", "bg": "#000000", "order": 4 }, "weight": 2, "value": 5, "flags": ["EQUIP_MELEE"], @@ -179,7 +179,7 @@ { "id": "equip_longsword", "name": { "name": "longsword", "plural": "longswords" }, - "renderable": { "glyph": ")", "fg": "#FFF8DC", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": ")", "fg": "#FFF8DC", "bg": "#000000", "order": 4 }, "weight": 3, "value": 15, "flags": ["EQUIP_MELEE"], @@ -188,7 +188,7 @@ { "id": "equip_smallshield", "name": { "name": "buckler", "plural": "bucklers" }, - "renderable": { "glyph": "[", "fg": "#808080", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#808080", "bg": "#000000", "order": 4 }, "weight": 2, "value": 5, "flags": ["EQUIP_SHIELD"], @@ -197,7 +197,7 @@ { "id": "equip_mediumshield", "name": { "name": "medium shield", "plural": "medium shields" }, - "renderable": { "glyph": "[", "fg": "#C0C0C0", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#C0C0C0", "bg": "#000000", "order": 4 }, "weight": 6, "value": 10, "flags": ["EQUIP_SHIELD"], @@ -206,7 +206,7 @@ { "id": "equip_largeshield", "name": { "name": "large shield", "plural": "large shields" }, - "renderable": { "glyph": "[", "fg": "#FFF8DC", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#FFF8DC", "bg": "#000000", "order": 4 }, "weight": 12, "value": 35, "flags": ["EQUIP_SHIELD"], @@ -215,7 +215,7 @@ { "id": "equip_body_weakleather", "name": { "name": "leather jacket", "plural": "leather jackets" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 8, "value": 5, "flags": ["EQUIP_BODY"], @@ -224,7 +224,7 @@ { "id": "equip_body_leather", "name": { "name": "leather chestpiece", "plural": "leather chestpiece" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 10, "value": 10, "flags": ["EQUIP_BODY"], @@ -233,7 +233,7 @@ { "id": "equip_body_studdedleather", "name": { "name": "studded leather chestpiece", "plural": "studded leather chestpieces" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 13, "value": 45, "flags": ["EQUIP_BODY"], @@ -242,7 +242,7 @@ { "id": "equip_body_ringmail_o", "name": { "name": "orcish ring mail", "plural": "orcish ring mail" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 45, "value": 50, "flags": ["EQUIP_BODY"], @@ -251,7 +251,7 @@ { "id": "equip_body_ringmail", "name": { "name": "ring mail", "plural": "ring mail" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 45, "value": 70, "flags": ["EQUIP_BODY"], @@ -260,7 +260,7 @@ { "id": "equip_head_leather", "name": { "name": "leather cap", "plural": "leather caps" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 2, "value": 10, "flags": ["EQUIP_HEAD"], @@ -269,7 +269,7 @@ { "id": "equip_head_elvish", "name": { "name": "elvish leather helm", "plural": "elvish leather helms" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 2, "value": 25, "flags": ["EQUIP_HEAD"], @@ -278,7 +278,7 @@ { "id": "equip_head_o", "name": { "name": "orcish helm", "plural": "orcish helm" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 6, "value": 25, "flags": ["EQUIP_HEAD"], @@ -287,7 +287,7 @@ { "id": "equip_head_iron", "name": { "name": "iron helm", "plural": "iron helm" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 10, "value": 45, "flags": ["EQUIP_HEAD"], @@ -296,7 +296,7 @@ { "id": "equip_feet_leather", "name": { "name": "leather shoes", "plural": "leather shoes" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 2, "value": 10, "flags": ["EQUIP_FEET"] @@ -304,7 +304,7 @@ { "id": "equip_feet_elvish", "name": { "name": "elvish leather shoes", "plural": "elvish leather shoes" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 2, "value": 25, "flags": ["EQUIP_FEET"], @@ -313,7 +313,7 @@ { "id": "equip_feet_o", "name": { "name": "orcish boots", "plural": "orcish boots" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 6, "value": 25, "flags": ["EQUIP_FEET"], @@ -322,7 +322,7 @@ { "id": "equip_feet_iron", "name": { "name": "iron boots", "plural": "iron boots" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 10, "value": 45, "flags": ["EQUIP_FEET"], @@ -331,7 +331,7 @@ { "id": "equip_neck_protection", "name": { "name": "amulet of protection", "plural": "amulets of protection" }, - "renderable": { "glyph": "\"", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "\"", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 1, "value": 200, "flags": ["EQUIP_NECK"], @@ -340,7 +340,7 @@ { "id": "equip_back_protection", "name": { "name": "cloak of protection", "plural": "cloaks of protection" }, - "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "[", "fg": "#aa6000", "bg": "#000000", "order": 4 }, "weight": 1, "value": 200, "flags": ["EQUIP_BACK"], @@ -349,7 +349,7 @@ { "id": "wand_magicmissile", "name": { "name": "wand of magic missile", "plural": "wands of magic missile" }, - "renderable": { "glyph": "/", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "/", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 2, "value": 100, "flags": ["CHARGES"], @@ -359,7 +359,7 @@ { "id": "wand_fireball", "name": { "name": "wand of fireball", "plural": "wands of fireball" }, - "renderable": { "glyph": "/", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "/", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 2, "value": 300, "flags": ["CHARGES"], @@ -369,7 +369,7 @@ { "id": "wand_confusion", "name": { "name": "wand of confusion", "plural": "wands of confusion" }, - "renderable": { "glyph": "/", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "/", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 2, "value": 200, "flags": ["CHARGES"], @@ -379,7 +379,7 @@ { "id": "wand_digging", "name": { "name": "wand of digging", "plural": "wands of digging" }, - "renderable": { "glyph": "/", "fg": "#00FFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "/", "fg": "#00FFFF", "bg": "#000000", "order": 4 }, "weight": 2, "value": 300, "flags": ["CHARGES", "DIGGER"], @@ -389,7 +389,7 @@ { "id": "food_rations", "name": { "name": "rations", "plural": "rations" }, - "renderable": { "glyph": "%", "fg": "#FFA07A", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "%", "fg": "#FFA07A", "bg": "#000000", "order": 4 }, "weight": 1, "value": 1, "flags": ["FOOD", "CONSUMABLE"] @@ -397,7 +397,7 @@ { "id": "food_apple", "name": { "name": "apple", "plural": "apples" }, - "renderable": { "glyph": "%", "fg": "#00FF00", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "%", "fg": "#00FF00", "bg": "#000000", "order": 4 }, "weight": 0.5, "value": 1, "flags": ["FOOD", "CONSUMABLE"] diff --git a/raws/mobs.json b/raws/mobs.json index 16768c5..a02cfcb 100644 --- a/raws/mobs.json +++ b/raws/mobs.json @@ -2,7 +2,7 @@ { "id": "npc_barkeep", "name": "barkeep", - "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#EE82EE", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#EE82EE", "bg": "#000000", "order": 3 }, "flags": ["NEUTRAL", "IS_HUMAN"], "vision_range": 4, "quips": ["Drink?", "Something to eat?", "Don't go out on an empty stomach."] @@ -10,7 +10,7 @@ { "id": "npc_townsperson", "name": "townsperson", - "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#9fa86c", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#9fa86c", "bg": "#000000", "order": 3 }, "flags": ["NEUTRAL", "RANDOM_PATH", "IS_HUMAN"], "vision_range": 4, "quips": ["Hello!", "Good morning.", ""] @@ -18,7 +18,7 @@ { "id": "npc_drunk", "name": "drunk", - "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#a0a83c", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#a0a83c", "bg": "#000000", "order": 3 }, "flags": ["NEUTRAL", "IS_HUMAN"], "vision_range": 4, "quips": ["Hic!", "H-Hic'.", "Get me 'nother, would you?"] @@ -26,7 +26,7 @@ { "id": "npc_fisher", "name": "fisher", - "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#3ca3a8", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#3ca3a8", "bg": "#000000", "order": 3 }, "flags": ["NEUTRAL", "IS_HUMAN"], "vision_range": 4, "quips": ["Hey."] @@ -34,7 +34,7 @@ { "id": "npc_dockworker", "name": "dock worker", - "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#68d8de", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#68d8de", "bg": "#000000", "order": 3 }, "flags": ["NEUTRAL", "IS_HUMAN"], "vision_range": 4, "quips": ["No boat for a few days.", "Not much for us to do."] @@ -42,7 +42,7 @@ { "id": "npc_priest", "name": "priest", - "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#FFFFFF", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#FFFFFF", "bg": "#000000", "order": 3 }, "flags": ["NEUTRAL", "IS_HUMAN"], "vision_range": 4, "quips": ["Light's givings.", "", "Bless you."] @@ -50,7 +50,7 @@ { "id": "npc_miner", "name": "miner", - "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#946123", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#946123", "bg": "#000000", "order": 3 }, "flags": ["NEUTRAL", "IS_HUMAN"], "vision_range": 4, "attacks": [{ "name": "hits", "hit_bonus": 0, "damage": "1d8" }], @@ -59,7 +59,7 @@ { "id": "npc_guard", "name": "smalltown guard", - "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#034efc", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "@", "sprite": { "id": "@" }, "fg": "#034efc", "bg": "#000000", "order": 3 }, "flags": ["NEUTRAL", "RANDOM_PATH", "IS_HUMAN"], "level": 2, "attacks": [{ "name": "hits", "hit_bonus": 0, "damage": "1d8" }], @@ -69,7 +69,7 @@ { "id": "rat", "name": "rat", - "renderable": { "glyph": "r", "sprite": { "id": "r" }, "fg": "#aa6000", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "r", "sprite": { "id": "r" }, "fg": "#aa6000", "bg": "#000000", "order": 3 }, "flags": [], "bac": 6, "attacks": [{ "name": "bites", "hit_bonus": 0, "damage": "1d2" }], @@ -78,7 +78,7 @@ { "id": "chicken", "name": "chicken", - "renderable": { "glyph": "c", "sprite": { "id": "c" }, "fg": "#BB6000", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "c", "sprite": { "id": "c" }, "fg": "#BB6000", "bg": "#000000", "order": 3 }, "flags": ["HERBIVORE"], "bac": 8, "attacks": [{ "name": "bites", "hit_bonus": 0, "damage": "1d3" }] @@ -86,7 +86,7 @@ { "id": "deer_little", "name": "fawn", - "renderable": { "glyph": "q", "sprite": { "id": "q" }, "fg": "#a57037", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "q", "sprite": { "id": "q" }, "fg": "#a57037", "bg": "#000000", "order": 3 }, "flags": ["HERBIVORE"], "bac": 8, "attacks": [{ "name": "kicks", "hit_bonus": 0, "damage": "1d2" }] @@ -94,7 +94,7 @@ { "id": "sheep_little", "name": "lamb", - "renderable": { "glyph": "q", "sprite": { "id": "q" }, "fg": "#e7e7e7", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "q", "sprite": { "id": "q" }, "fg": "#e7e7e7", "bg": "#000000", "order": 3 }, "flags": ["HERBIVORE", "SMALL_GROUP"], "bac": 10, "attacks": [{ "name": "kicks", "hit_bonus": 0, "damage": "1d2" }] @@ -102,7 +102,7 @@ { "id": "chicken_little", "name": "chick", - "renderable": { "glyph": "c", "sprite": { "id": "c" }, "fg": "#fae478", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "c", "sprite": { "id": "c" }, "fg": "#fae478", "bg": "#000000", "order": 3 }, "flags": ["HERBIVORE"], "bac": 10, "attacks": [{ "name": "bites", "hit_bonus": 0, "damage": "1d2" }] @@ -110,7 +110,7 @@ { "id": "horse_little", "name": "pony", - "renderable": { "glyph": "u", "sprite": { "id": "u" }, "fg": "#b36c29", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "u", "sprite": { "id": "u" }, "fg": "#b36c29", "bg": "#000000", "order": 3 }, "flags": ["HERBIVORE", "MULTIATTACK"], "level": 3, "bac": 6, @@ -124,7 +124,7 @@ { "id": "horse", "name": "horse", - "renderable": { "glyph": "u", "sprite": { "id": "u" }, "fg": "#744d29", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "u", "sprite": { "id": "u" }, "fg": "#744d29", "bg": "#000000", "order": 3 }, "flags": ["MULTIATTACK"], "level": 5, "bac": 5, @@ -137,7 +137,7 @@ { "id": "horse_large", "name": "warhorse", - "renderable": { "glyph": "u", "sprite": { "id": "u" }, "fg": "#8a3520", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "u", "sprite": { "id": "u" }, "fg": "#8a3520", "bg": "#000000", "order": 3 }, "flags": ["MULTIATTACK"], "level": 7, "bac": 4, @@ -150,7 +150,7 @@ { "id": "rat_giant", "name": "giant rat", - "renderable": { "glyph": "r", "sprite": { "id": "r" }, "fg": "#bb8000", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "r", "sprite": { "id": "r" }, "fg": "#bb8000", "bg": "#000000", "order": 3 }, "flags": ["SMALL_GROUP"], "level": 1, "bac": 7, @@ -160,7 +160,7 @@ { "id": "dog_little", "name": "little dog", - "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#FFFFFF", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#FFFFFF", "bg": "#000000", "order": 3 }, "flags": ["NEUTRAL"], "level": 2, "bac": 6, @@ -171,7 +171,7 @@ { "id": "dog", "name": "dog", - "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#EEEEEE", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#EEEEEE", "bg": "#000000", "order": 3 }, "flags": [], "level": 4, "bac": 5, @@ -181,7 +181,7 @@ { "id": "dog_large", "name": "large dog", - "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#DDDDDD", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#DDDDDD", "bg": "#000000", "order": 3 }, "flags": [], "level": 6, "bac": 4, @@ -191,7 +191,7 @@ { "id": "gnome", "name": "gnome", - "renderable": { "glyph": "G", "sprite": { "id": "g2" }, "fg": "#AA5500", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "G", "sprite": { "id": "g2" }, "fg": "#AA5500", "bg": "#000000", "order": 3 }, "flags": ["SMALL_GROUP", "IS_GNOME"], "level": 1, "speed": 6, @@ -201,7 +201,7 @@ { "id": "zombie_gnome", "name": "gnome zombie", - "renderable": { "glyph": "z", "sprite": { "id": "z" }, "fg": "#AA5500", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "z", "sprite": { "id": "z" }, "fg": "#AA5500", "bg": "#000000", "order": 3 }, "flags": ["MINDLESS"], "level": 1, "speed": 6, @@ -212,7 +212,7 @@ { "id": "goblin", "name": "goblin", - "renderable": { "glyph": "g", "sprite": { "id": "g" }, "fg": "#00FF00", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "g", "sprite": { "id": "g" }, "fg": "#00FF00", "bg": "#000000", "order": 3 }, "flags": [], "level": 1, "speed": 9, @@ -221,7 +221,7 @@ { "id": "kobold", "name": "kobold", - "renderable": { "glyph": "k", "sprite": { "id": "k" }, "fg": "#AA5500", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "k", "sprite": { "id": "k" }, "fg": "#AA5500", "bg": "#000000", "order": 3 }, "flags": [], "level": 1, "speed": 6, @@ -231,7 +231,7 @@ { "id": "zombie_kobold", "name": "kobold zombie", - "renderable": { "glyph": "z", "sprite": { "id": "z" }, "fg": "#AA5500", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "z", "sprite": { "id": "z" }, "fg": "#AA5500", "bg": "#000000", "order": 3 }, "flags": ["MINDLESS"], "level": 1, "speed": 6, @@ -242,7 +242,7 @@ { "id": "kobold_large", "name": "large kobold", - "renderable": { "glyph": "k", "sprite": { "id": "k" }, "fg": "#70461b", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "k", "sprite": { "id": "k" }, "fg": "#70461b", "bg": "#000000", "order": 3 }, "flags": [], "level": 1, "speed": 6, @@ -253,7 +253,7 @@ { "id": "zombie_orc", "name": "orc zombie", - "renderable": { "glyph": "z", "sprite": { "id": "z" }, "fg": "#dbd830", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "z", "sprite": { "id": "z" }, "fg": "#dbd830", "bg": "#000000", "order": 3 }, "flags": ["MINDLESS"], "level": 2, "bac": 9, @@ -265,7 +265,7 @@ { "id": "dwarf", "name": "dwarf", - "renderable": { "glyph": "h", "sprite": { "id": "h" }, "fg": "#d61b1b", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "h", "sprite": { "id": "h" }, "fg": "#d61b1b", "bg": "#000000", "order": 3 }, "flags": ["IS_DWARF"], "level": 2, "bac": 10, @@ -277,7 +277,7 @@ { "id": "zombie_dwarf", "name": "dwarf zombie", - "renderable": { "glyph": "z", "sprite": { "id": "z" }, "fg": "#d61b1b", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "z", "sprite": { "id": "z" }, "fg": "#d61b1b", "bg": "#000000", "order": 3 }, "flags": ["MINDLESS"], "level": 2, "bac": 9, @@ -289,7 +289,7 @@ { "id": "kobold_captain", "name": "kobold captain", - "renderable": { "glyph": "k", "sprite": { "id": "k" }, "fg": "#9331ac", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "k", "sprite": { "id": "k" }, "fg": "#9331ac", "bg": "#000000", "order": 3 }, "flags": [], "level": 2, "speed": 6, @@ -300,7 +300,7 @@ { "id": "spider_cave", "name": "cave spider", - "renderable": { "glyph": "s", "sprite": { "id": "s" }, "fg": "#6b6b6b", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "s", "sprite": { "id": "s" }, "fg": "#6b6b6b", "bg": "#000000", "order": 3 }, "flags": ["SMALL_GROUP"], "level": 1, "bac": 3, @@ -311,7 +311,7 @@ { "id": "ant_worker", "name": "worker ant", - "renderable": { "glyph": "a", "sprite": { "id": "a" }, "fg": "#ca7631", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "a", "sprite": { "id": "a" }, "fg": "#ca7631", "bg": "#000000", "order": 3 }, "flags": ["SMALL_GROUP"], "level": 2, "bac": 3, @@ -322,7 +322,7 @@ { "id": "ant_soldier", "name": "soldier ant", - "renderable": { "glyph": "a", "sprite": { "id": "a" }, "fg": "#ca3f26", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "a", "sprite": { "id": "a" }, "fg": "#ca3f26", "bg": "#000000", "order": 3 }, "flags": ["SMALL_GROUP", "POISON_RES"], "level": 3, "bac": 3, @@ -336,7 +336,7 @@ { "id": "caterpillar_cave", "name": "caterpillar", - "renderable": { "glyph": "a", "sprite": { "id": "a" }, "fg": "#6b6b6b", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "a", "sprite": { "id": "a" }, "fg": "#6b6b6b", "bg": "#000000", "order": 3 }, "flags": ["SMALL_GROUP"], "level": 1, "bac": 3, @@ -347,7 +347,7 @@ { "id": "caterpillar_giant", "name": "giant caterpillar", - "renderable": { "glyph": "a", "sprite": { "id": "a" }, "fg": "#b9aeae", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "a", "sprite": { "id": "a" }, "fg": "#b9aeae", "bg": "#000000", "order": 3 }, "flags": ["SMALL_GROUP"], "level": 2, "bac": 7, @@ -358,7 +358,7 @@ { "id": "jackal", "name": "jackal", - "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#AA5500", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#AA5500", "bg": "#000000", "order": 3 }, "flags": ["CARNIVORE", "SMALL_GROUP"], "bac": 7, "attacks": [{ "name": "bites", "hit_bonus": 0, "damage": "1d2" }] @@ -366,7 +366,7 @@ { "id": "fox", "name": "fox", - "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#FF0000", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#FF0000", "bg": "#000000", "order": 3 }, "flags": ["CARNIVORE"], "bac": 7, "attacks": [{ "name": "bites", "hit_bonus": 0, "damage": "1d3" }] @@ -374,7 +374,7 @@ { "id": "coyote", "name": "coyote", - "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#6E3215", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#6E3215", "bg": "#000000", "order": 3 }, "flags": ["CARNIVORE", "SMALL_GROUP"], "level": 1, "bac": 7, @@ -383,7 +383,7 @@ { "id": "wolf", "name": "wolf", - "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#5E4225", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#5E4225", "bg": "#000000", "order": 3 }, "flags": ["CARNIVORE"], "level": 5, "bac": 4, @@ -392,7 +392,7 @@ { "id": "goblin_chieftain", "name": "goblin chieftain", - "renderable": { "glyph": "g", "sprite": { "id": "g" }, "fg": "#9331ac", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "g", "sprite": { "id": "g" }, "fg": "#9331ac", "bg": "#000000", "order": 3 }, "flags": [], "level": 2, "speed": 9, @@ -402,7 +402,7 @@ { "id": "orc", "name": "orc", - "renderable": { "glyph": "o", "sprite": { "id": "o" }, "fg": "#00FF00", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "o", "sprite": { "id": "o" }, "fg": "#00FF00", "bg": "#000000", "order": 3 }, "flags": ["SMALL_GROUP"], "level": 1, "speed": 9, @@ -412,7 +412,7 @@ { "id": "orc_hill", "name": "hill orc", - "renderable": { "glyph": "o", "sprite": { "id": "o" }, "fg": "#dbd830", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "o", "sprite": { "id": "o" }, "fg": "#dbd830", "bg": "#000000", "order": 3 }, "flags": ["LARGE_GROUP"], "level": 2, "speed": 9, @@ -422,7 +422,7 @@ { "id": "orc_captain", "name": "orc captain", - "renderable": { "glyph": "o", "sprite": { "id": "o" }, "fg": "#9331ac", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "o", "sprite": { "id": "o" }, "fg": "#9331ac", "bg": "#000000", "order": 3 }, "flags": ["MULTIATTACK"], "level": 5, "speed": 5, @@ -435,7 +435,7 @@ { "id": "warg", "name": "warg", - "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#8b7164", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "d", "sprite": { "id": "d" }, "fg": "#8b7164", "bg": "#000000", "order": 3 }, "flags": ["SMALL_GROUP"], "level": 7, "bac": 4, @@ -446,7 +446,7 @@ { "id": "jaguar", "name": "jaguar", - "renderable": { "glyph": "f", "sprite": { "id": "f" }, "fg": "#d3b947", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "f", "sprite": { "id": "f" }, "fg": "#d3b947", "bg": "#000000", "order": 3 }, "flags": ["MULTIATTACK"], "level": 4, "bac": 6, @@ -461,7 +461,7 @@ { "id": "lynx", "name": "lynx", - "renderable": { "glyph": "f", "sprite": { "id": "f" }, "fg": "#b5d347", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "f", "sprite": { "id": "f" }, "fg": "#b5d347", "bg": "#000000", "order": 3 }, "flags": ["MULTIATTACK"], "level": 5, "bac": 6, @@ -476,7 +476,7 @@ { "id": "panther", "name": "panther", - "renderable": { "glyph": "f", "sprite": { "id": "f" }, "fg": "#58554e", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "f", "sprite": { "id": "f" }, "fg": "#58554e", "bg": "#000000", "order": 3 }, "flags": ["MULTIATTACK"], "level": 5, "bac": 6, @@ -491,7 +491,7 @@ { "id": "ogre", "name": "ogre", - "renderable": { "glyph": "O", "sprite": { "id": "o2" }, "fg": "#10A70d", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "O", "sprite": { "id": "o2" }, "fg": "#10A70d", "bg": "#000000", "order": 3 }, "flags": ["SMALL_GROUP"], "level": 5, "bac": 5, @@ -502,7 +502,7 @@ { "id": "treant_small", "name": "treant sapling", - "renderable": { "glyph": "♠️", "sprite": { "id": "spade" }, "fg": "#10570d", "bg": "#000000", "order": 1 }, + "renderable": { "glyph": "♠️", "sprite": { "id": "spade" }, "fg": "#10570d", "bg": "#000000", "order": 3 }, "flags": ["LARGE_GROUP", "GREEN_BLOOD", "FIRE_WEAK"], "level": 2, "bac": 12, diff --git a/raws/props.json b/raws/props.json index f708b9f..18a913d 100644 --- a/raws/props.json +++ b/raws/props.json @@ -2,89 +2,89 @@ { "id": "door", "name": "door", - "renderable": { "glyph": "+", "sprite": { "id": "door_wood_h_closed", "alt": "door_wood_h_open", "colour": false }, "fg": "#00FFFF", "bg": "#000000", "order": 2 }, - "flags": ["DOOR"] + "renderable": { "glyph": "+", "sprite": { "id": "door_wood_h_closed", "alt": "door_wood_h_open", "colour": false }, "fg": "#00FFFF", "bg": "#000000", "order": 5 }, + "door": { "open": false, "locked": false, "blocks_vis": true, "blocks_move": true } }, { "id": "trapdoor", "name": "trapdoor", - "renderable": { "glyph": "+", "sprite": { "id": "trapdoor_closed", "alt": "trapdoor_open2", "colour": false, "alt_y": 1.0 }, "fg": "#00FFFF", "bg": "#000000", "order": 2 }, - "flags": ["DOOR"] + "renderable": { "glyph": "+", "sprite": { "id": "trapdoor_closed", "alt": "trapdoor_open2", "colour": false, "alt_y": 1.0 }, "fg": "#00FFFF", "bg": "#000000", "order": 1 }, + "door": { "open": false, "locked": false, "blocks_vis": false, "blocks_move": true } }, { "id": "prop_altar", "name": "altar", - "renderable": { "glyph": "_", "sprite": { "id": "tombstone", "colour": false }, "fg": "#FFFFFF", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "_", "sprite": { "id": "tombstone", "colour": false }, "fg": "#FFFFFF", "bg": "#000000", "order": 5 }, "flags": ["ENTRY_TRIGGER"], "effects": { "heal": "8d8" } }, { "id": "prop_keg", "name": "keg", - "renderable": { "glyph": "φ", "fg": "#AAAAAA", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "φ", "fg": "#AAAAAA", "bg": "#000000", "order": 5 }, "flags": [] }, { "id": "prop_table", "name": "table", - "renderable": { "glyph": "-", "sprite": { "id": "table", "colour": false }, "fg": "#AAAAAA", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "-", "sprite": { "id": "table", "colour": false }, "fg": "#AAAAAA", "bg": "#000000", "order": 5 }, "flags": [] }, { "id": "prop_hay", "name": "hay", - "renderable": { "glyph": "%", "sprite": { "id": "%" }, "fg": "#c7ad39", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "%", "sprite": { "id": "%" }, "fg": "#c7ad39", "bg": "#000000", "order": 5 }, "flags": [] }, { "id": "prop_statue", "name": "statue", - "renderable": { "glyph": "@", "sprite": { "id": "statue_warrior", "colour": false }, "fg": "#ffffff", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "@", "sprite": { "id": "statue_warrior", "colour": false }, "fg": "#ffffff", "bg": "#000000", "order": 5 }, "flags": [] }, { "id": "prop_bed", "name": "bed", - "renderable": { "glyph": "=", "sprite": { "id": "bed", "colour": false }, "fg": "#AAAAAA", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "=", "sprite": { "id": "bed", "colour": false }, "fg": "#AAAAAA", "bg": "#000000", "order": 5 }, "flags": [] }, { "id": "prop_chair", "name": "chair", - "renderable": { "glyph": "└", "sprite": { "id": "chair", "colour": false }, "fg": "#AAAAAA", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "└", "sprite": { "id": "chair", "colour": false }, "fg": "#AAAAAA", "bg": "#000000", "order": 5 }, "flags": [] }, { "id": "prop_candle", "name": "candle", - "renderable": { "glyph": "Ä", "sprite": { "id": "candles_a1", "colour": false }, "fg": "#FFA500", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "Ä", "sprite": { "id": "candles_a1", "colour": false }, "fg": "#FFA500", "bg": "#000000", "order": 4 }, "flags": [] }, { "id": "trap_bear", "name": "bear trap", - "renderable": { "glyph": "^", "sprite": { "id": "trap", "colour": false }, "fg": "#e6e6e6", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "^", "sprite": { "id": "trap", "colour": false }, "fg": "#e6e6e6", "bg": "#000000", "order": 5 }, "flags": ["HIDDEN", "ENTRY_TRIGGER", "SINGLE_ACTIVATION"], "effects": { "damage": "2d4" } }, { "id": "trap_mini_mine", "name": "mini-mine", - "renderable": { "glyph": "^", "sprite": { "id": "^" }, "fg": "#ff1e00", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "^", "sprite": { "id": "^" }, "fg": "#ff1e00", "bg": "#000000", "order": 5 }, "flags": ["ENTRY_TRIGGER", "SINGLE_ACTIVATION"], "effects": { "damage": "2d4", "aoe": "3" } }, { "id": "trap_stonefall", "name": "stonefall trap", - "renderable": { "glyph": "^", "sprite": { "id": "^" }, "fg": "#beb5a7", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "^", "sprite": { "id": "^" }, "fg": "#beb5a7", "bg": "#000000", "order": 5 }, "flags": ["HIDDEN", "ENTRY_TRIGGER", "SINGLE_ACTIVATION"], "effects": { "damage": "2d10" } }, { "id": "trap_confusion", "name": "magic trap", - "renderable": { "glyph": "^", "sprite": { "id": "magic_e1", "colour": false }, "fg": "#df07df", "bg": "#000000", "order": 2 }, + "renderable": { "glyph": "^", "sprite": { "id": "magic_e1", "colour": false }, "fg": "#df07df", "bg": "#000000", "order": 5 }, "flags": ["HIDDEN", "ENTRY_TRIGGER", "SINGLE_ACTIVATION"], "effects": { "confusion": "3" } } diff --git a/src/components.rs b/src/components.rs index ada13c5..6917fb7 100644 --- a/src/components.rs +++ b/src/components.rs @@ -88,6 +88,12 @@ pub struct Renderable { pub fg: RGB, pub bg: RGB, pub render_order: i32, + // 0 = always on top: particle effects + // 1 = things that should appear infront of the player: railings, etc. + // 2 = the player + // 3 = other mobs + // 4 = interactable items + // 5 = other props: table, etc. } #[derive(Component, Debug, Serialize, Deserialize, Clone)] @@ -175,6 +181,9 @@ pub struct BlocksVisibility {} #[derive(Component, Debug, Serialize, Deserialize, Clone)] pub struct Door { pub open: bool, + pub locked: bool, + pub blocks_vis: bool, + pub blocks_move: bool, } #[derive(Serialize, Deserialize, Copy, Clone, PartialEq)] diff --git a/src/map_builders/town.rs b/src/map_builders/town.rs index ba18395..f80e90a 100644 --- a/src/map_builders/town.rs +++ b/src/map_builders/town.rs @@ -271,6 +271,7 @@ impl TownBuilder { building.1 + building.3 / 2 ); build_data.map.tiles[exit_idx] = TileType::DownStair; + build_data.spawn_list.push((exit_idx, "trapdoor".to_string())); let mut to_place: Vec<&str> = vec!["npc_miner", "npc_miner", "npc_guard", "prop_chair"]; self.random_building_spawn(building, build_data, rng, &mut to_place, exit_idx) } diff --git a/src/morgue.rs b/src/morgue.rs index f34674a..fcaa4a8 100644 --- a/src/morgue.rs +++ b/src/morgue.rs @@ -164,10 +164,10 @@ fn draw_map(ecs: &World) -> String { if idx == map.xy_idx(point.x, point.y) { glyph_u16 = to_cp437('@'); } else if crate::spatial::has_tile_content(idx) { - let mut render_order = 0; + let mut render_order = 4; crate::spatial::for_each_tile_content(idx, |e| { if let Some(renderable) = ecs.read_storage::().get(e) { - if renderable.render_order >= render_order { + if renderable.render_order <= render_order { render_order = renderable.render_order; glyph_u16 = renderable.glyph; } diff --git a/src/player.rs b/src/player.rs index 9bb80d8..1c56f89 100644 --- a/src/player.rs +++ b/src/player.rs @@ -115,12 +115,16 @@ pub fn try_door(i: i32, j: i32, ecs: &mut World) -> RunState { } } else { door.open = false; - blocks_visibility - .insert(potential_target, BlocksVisibility {}) - .expect("Unable to insert BlocksVisibility."); - blocks_movement - .insert(potential_target, BlocksTile {}) - .expect("Unable to insert BlocksTile."); + if door.blocks_vis { + blocks_visibility + .insert(potential_target, BlocksVisibility {}) + .expect("Unable to insert BlocksVisibility."); + } + if door.blocks_move { + blocks_movement + .insert(potential_target, BlocksTile {}) + .expect("Unable to insert BlocksTile."); + } if let Some(name) = names.get(potential_target) { gamelog::Logger ::new() diff --git a/src/raws/prop_structs.rs b/src/raws/prop_structs.rs index 845c67c..86e9341 100644 --- a/src/raws/prop_structs.rs +++ b/src/raws/prop_structs.rs @@ -9,4 +9,13 @@ pub struct Prop { pub renderable: Option, pub flags: Option>, pub effects: Option>, + pub door: Option, +} + +#[derive(Deserialize, Debug)] +pub struct Door { + pub open: bool, + pub locked: bool, + pub blocks_vis: bool, + pub blocks_move: bool, } diff --git a/src/raws/rawmaster.rs b/src/raws/rawmaster.rs index 7fbdeb9..c39c761 100644 --- a/src/raws/rawmaster.rs +++ b/src/raws/rawmaster.rs @@ -53,11 +53,6 @@ macro_rules! apply_flags { "BLOCKS_VISIBILITY" => $eb = $eb.with(BlocksVisibility {}), "ENTRY_TRIGGER" => $eb = $eb.with(EntryTrigger {}), "SINGLE_ACTIVATION" => $eb = $eb.with(SingleActivation {}), - "DOOR" => { - $eb = $eb.with(Door { open: false }); - $eb = $eb.with(BlocksVisibility {}); - $eb = $eb.with(BlocksTile {}); - } // --- EFFECT FLAGS --- "FOOD" => $eb = $eb.with(ProvidesNutrition {}), "CONSUMABLE" => $eb = $eb.with(Consumable {}), @@ -656,6 +651,23 @@ pub fn spawn_named_prop( if let Some(effects_list) = &prop_template.effects { apply_effects!(effects_list, eb); } + + if let Some(door) = &prop_template.door { + eb = eb.with(Door { + open: door.open, + locked: door.locked, + blocks_vis: door.blocks_vis, + blocks_move: door.blocks_move, + }); + if !door.open { + if door.blocks_vis { + eb = eb.with(BlocksVisibility {}); + } + if door.blocks_move { + eb = eb.with(BlocksTile {}); + } + } + } // BUILD THE ENTITY return Some(eb.build()); } @@ -701,11 +713,11 @@ fn get_renderable_component( recolour: if let Some(colour) = spriteinfo.colour { colour } else { - false + true }, alt: spriteinfo.alt.clone(), - offset: (x, y), - alt_offset: (x, y), + offset: (x, -y), // Invert y so that positive y = move upwards. + alt_offset: (alt_x, -alt_y), }) } else { None diff --git a/src/spawner.rs b/src/spawner.rs index 07add86..cb14562 100644 --- a/src/spawner.rs +++ b/src/spawner.rs @@ -61,7 +61,7 @@ pub fn player(ecs: &mut World, player_x: i32, player_y: i32) -> Entity { sprite: Some(SpriteInfo::colourable("@")), fg: RGB::named(YELLOW), bg: RGB::named(BLACK), - render_order: 0, + render_order: 2, }) .with(Bleeds { colour: RGB::named(BLOODSTAIN_COLOUR) }) .with(Player {})