{"npcs":[{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"warp-claw","name":"Warp Claw","description":"A close-quarters strike carrying its element.","element":7,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"mana-burst","name":"Mana Burst","description":"A ranged burst that covers the ground in front of it.","element":7,"mp_cost":8,"hit_chance":1,"category":"special","power":34,"pp":15,"max_pp":15,"target":"enemy"},{"id":"unmaking","name":"Unmaking","description":"Everything it has, released at once.","element":7,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Aetherfang lunges at {target} for {dmg} damage!","Aetherfang presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Aetherfang breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N16","ref":"aetherfang","name":"Aetherfang","title":"Aetherfang","description":"Teal over black, edged in a glow that brightens when it is about to do something, which is the only warning you get.\n","lore":"The glow is measurable and follows no law anyone has written down. Two of them in a room will synchronise within the hour.\n","type_flags":16,"rarity":2,"personality":4,"element":7,"rank":2,"family":1,"img":"/assets/npc/aetherfang.png","level":16,"stats":{"hp":66,"max_hp":66,"attack":12,"defense":14,"speed":22,"mp":40,"max_mp":40,"special_attack":26,"special_defense":18,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"warp-claw"},{"level":18,"ability_id":"mana-burst"},{"level":26,"ability_id":"unmaking"}],"secondary_element":"lightning"},"template":"splash","sidebar":{"label":"Aetherfang","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Longbow Shot","damage":6}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The archer looses an arrow at {target}! {dmg} damage!","Bowstring snaps — {target} takes {dmg} damage!"]},{"action":"death","messages":["The archer crumples, quiver spilling broken shafts."]}],"id":"01KSAVZ000000000000000ARCH","ref":"archer","name":"Archer","title":"Archer","description":"Player ranged humanoid. Hooded leather, back quiver. Lower HP than Soldier; trades durability for reach. Used by Barracks recruitment + initial spawn cluster.\n","type_flags":1,"rarity":0,"personality":2,"rank":0,"family":5,"level":2,"stats":{"hp":50,"max_hp":50,"attack":6,"defense":1,"speed":4,"max_ep":110,"armor":1,"intelligence":8,"strength":9,"agility":14,"ep_regen":5.5,"move_speed":0.7,"max_hunger":150,"max_fatigue":100,"will":8,"hunger_per_sec":0.3,"fatigue_per_sec":0.2},"unit_type":6,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.archer","behavior":{"first_strike":true,"movement_type":2},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Archer","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"radiant-fang","name":"Radiant Fang","description":"A close-quarters strike carrying its element.","element":6,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"consecrate","name":"Consecrate","description":"A ranged burst that covers the ground in front of it.","element":6,"mp_cost":8,"hit_chance":1,"category":"special","power":34,"pp":15,"max_pp":15,"target":"enemy"},{"id":"judgement-bell","name":"Judgement Bell","description":"Everything it has, released at once.","element":6,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Aurelight lunges at {target} for {dmg} damage!","Aurelight presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Aurelight breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N15","ref":"aurelight","name":"Aurelight","title":"Aurelight","description":"White and gold, haloed in soft light, with wings that hold still in wind.\n","lore":"Rings faintly when it moves, from no source anyone has located. Temples that keep one insist it is not a miracle and are not believed.\n","type_flags":16,"rarity":2,"personality":4,"element":6,"rank":2,"family":1,"img":"/assets/npc/aurelight.png","level":16,"stats":{"hp":66,"max_hp":66,"attack":12,"defense":14,"speed":22,"mp":40,"max_mp":40,"special_attack":26,"special_defense":18,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"radiant-fang"},{"level":18,"ability_id":"consecrate"},{"level":26,"ability_id":"judgement-bell"}],"secondary_element":"light"},"template":"splash","sidebar":{"label":"Aurelight","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Heavy Club","damage":5}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The bandit smashes {target} with a heavy club! {dmg} damage!","A jeering laugh — and {target} takes {dmg} damage from the blow!"]},{"action":"death","messages":["The bandit drops their club and crumples, coin spilling from their belt."]}],"id":"01KSAV7YC1CT201N51YJ15V1PK","ref":"bandit","name":"Bandit","title":"Bandit","description":"Hostile humanoid raider. Tougher and slower than the Goblin, prefers smashing buildings over chasing units. Spawns from Bandit Camps; drops Coin so the Looter job has reason to follow raids around.\n","type_flags":1,"rarity":0,"personality":1,"rank":0,"family":5,"level":2,"stats":{"hp":55,"max_hp":55,"attack":5,"defense":2,"speed":4,"max_ep":100,"armor":1,"intelligence":7,"strength":11,"agility":11,"ep_regen":5,"move_speed":0.6,"will":8},"unit_type":14,"default_weapon":1,"dialogue_tree_id":11,"name_key":"creature.bandit","behavior":{"first_strike":false,"movement_type":2},"faction":{"faction_id":"hostile"},"equipment":{"equipped":[{"slot":1,"item_ref":"hood"}]},"template":"splash","sidebar":{"label":"Bandit","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Desperate Jab","damage":2}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"flee","messages":["The bandit scout sprints back toward camp the moment things turn south!"]},{"action":"death","messages":["The bandit scout drops mid-stride, intel never delivered."]}],"id":"01KSAVTYT9RBX566KHNYHGEREA","ref":"bandit-scout","name":"Bandit Scout","title":"Bandit Scout","description":"Hostile recon unit dispatched by Bandit Camps every 90s. Wanders far from the camp, marks discovered Player buildings into KnownPlayerHexesSingleton so HuntJob can divert raid waves to outposts beyond the camp's local TargetingRadius. No weapon — flees combat.\n","type_flags":1,"rarity":1,"personality":3,"rank":0,"family":5,"level":2,"stats":{"hp":45,"max_hp":45,"attack":2,"defense":1,"speed":6,"max_ep":120,"armor":0,"intelligence":8,"strength":7,"agility":15,"ep_regen":6,"move_speed":0.95,"will":7},"unit_type":22,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.bandit_scout","behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"hostile"},"equipment":{"equipped":[{"slot":1,"item_ref":"hood"},{"slot":2,"item_ref":"leather"}]},"template":"splash","sidebar":{"label":"Bandit Scout","hidden":true}},{"tags":["cryptothrone","merchant","cloud-city"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[{"trigger":"greeting","lines":["Welcome to the tavern, traveler! What can I get you today?","Pull up a stool — the cloud winds are cold tonight."]},{"trigger":"trade","lines":["I've got potions, fresh fish, and the occasional rare item.","Check back often — my stock changes with the tides."]}],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ000000000000000BARK","ref":"barkeep","name":"Evee The BarKeep","title":"Evee The BarKeep","description":"Cloud City tavern keeper. Pours drinks, trades goods, and knows every rumor that drifts through the floating district. The first friendly face most travelers meet.\n","type_flags":1,"rarity":1,"personality":7,"rank":0,"family":5,"img":"/assets/npc/barkeep.webp","sprite_atlas":{"atlas_ref":"monks","columns":8,"rows":1,"cell_width":52,"cell_height":72,"row_front":0,"row_side":0,"row_back":0,"world_width":24,"world_height":33,"clips":[{"anim":"idle","row":0,"start_frame":1,"frame_count":1,"fps":1}]},"level":1,"stats":{"hp":30,"max_hp":30,"attack":1,"defense":1,"speed":2,"armor":0},"behavior":{"first_strike":false,"movement_type":0},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Evee The BarKeep","hidden":true},"role":"Tavern Keeper"},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"searing-bite","name":"Searing Bite","description":"A close-quarters strike carrying its element.","element":1,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"flame-gout","name":"Flame Gout","description":"A ranged burst that covers the ground in front of it.","element":1,"mp_cost":8,"hit_chance":1,"status_effect":"burn","category":"special","power":34,"pp":15,"max_pp":15,"status_chance":0.25,"target":"enemy"},{"id":"solar-flare","name":"Solar Flare","description":"Everything it has, released at once.","element":1,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Blazeruff lunges at {target} for {dmg} damage!","Blazeruff presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Blazeruff breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N08","ref":"blazeruff","name":"Blazeruff","title":"Blazeruff","description":"Stands upright more often than not, with a white ruff and forelimbs wrapped in banded heat.\n","lore":"The posture is the tell — it fights standing, which no other form does, and it is the only one that has ever been taught to hold a weapon.\n","type_flags":16,"rarity":2,"personality":4,"element":1,"rank":2,"family":1,"img":"/assets/npc/blazeruff.png","level":16,"stats":{"hp":72,"max_hp":72,"attack":24,"defense":16,"speed":20,"mp":40,"max_mp":40,"special_attack":12,"special_defense":14,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"searing-bite"},{"level":18,"ability_id":"flame-gout"},{"level":26,"ability_id":"solar-flare"}]},"template":"splash","sidebar":{"label":"Blazeruff","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Bone Arrow","damage":7}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Bone Archer fires with shaking hands — the arrow finds {target} anyway! {dmg} damage!","A bony finger releases the bowstring with a snap. {target} takes an arrow! {dmg} damage!","The archer flinches as it shoots, but the arrow still strikes {target}! {dmg} damage!"]},{"action":"flee","messages":["The Bone Archer drops its bow and scrambles away, jawbone chattering in panic!","It fumbles an arrow, looks at you, and bolts — bones rattling with every step!"]},{"action":"death","messages":["The Bone Archer's bow clatters to the ground. Its skeleton follows, finally free from the fear.","With a last trembling shot that goes wide, the archer crumbles into a pile of relieved bones."]},{"action":"wounded","messages":["*The Bone Archer's hands shake even worse now. Its next shot might go anywhere.*"]},{"action":"near_death","messages":["*The archer is barely holding together. It nocks an arrow with one remaining arm.*"]}],"id":"01KKR5QWTA6KARZ9EQB9Y476S4","ref":"bone-archer","name":"Bone Archer","title":"Bone Archer","description":"A skeletal figure that draws a creaking bow with trembling, bony fingers.\n","lore":"In life they were conscript archers, and in death their muscle memory persists — though their aim wavers with fear.\n","type_flags":1,"rarity":1,"personality":3,"rank":2,"family":2,"level":2,"stats":{"hp":22,"max_hp":22,"attack":7,"defense":1,"speed":4,"armor":1},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"deep-wardens"},"loot":{"entries":[{"item_ref":"bandage","min_quantity":1,"max_quantity":1,"drop_rate":0.27},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"fire-flask","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"iron-skin-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"trap-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.13}],"max_drops":1,"gold_min":5,"gold_max":12,"xp_reward":30},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Bone Archer","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Charge","damage":7}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The cavalry charges {target} at full gallop! {dmg} damage!","Hooves thunder — {target} is bowled over for {dmg} damage!"]},{"action":"death","messages":["Horse and rider fall together in a final, defiant rear."]}],"id":"01KSAVJQSG83RSRAN9W8B27VTT","ref":"cavalry","name":"Cavalry","title":"Cavalry","description":"Player mounted melee — fast charger, mid HP, club loadout. Recruited from Stables (Barracks T1 variant 1) for 10 Coin + 4 Timber + 2 Carrot. Damage scales with MovementModifier.SpeedMul via the cavalry charge bonus, capped at 2.0× under stacked Stables auras.\n","type_flags":1,"rarity":1,"personality":10,"rank":2,"family":5,"level":3,"stats":{"hp":85,"max_hp":85,"attack":7,"defense":2,"speed":5,"max_ep":110,"armor":2,"intelligence":7,"strength":13,"agility":12,"ep_regen":4,"move_speed":0.85,"will":9},"unit_type":23,"default_weapon":1,"dialogue_tree_id":0,"name_key":"creature.cavalry","behavior":{"first_strike":true,"movement_type":2},"faction":{"faction_id":"player"},"equipment":{"equipped":[{"slot":6,"item_ref":"iron-sword"},{"slot":2,"item_ref":"chain-mail"}]},"template":"splash","sidebar":{"label":"Cavalry","hidden":true}},{"tags":[],"abilities":[{"id":"poison","name":"Venomous Bite","damage":3,"cooldown_turns":2}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Cave Spider drops from above and sinks its fangs into {target}! {dmg} damage!","Pale legs wrap around {target}'s arm as mandibles find flesh! {dmg} damage!","The spider strikes from the shadows — two puncture wounds on {target}! {dmg} damage!"]},{"action":"debuff","messages":["Venom drips from the Cave Spider's fangs as it bites deep! {target} feels {effect} spreading!","The spider's bite burns cold. {effect} courses through {target}'s veins!"]},{"action":"defend","messages":["The Cave Spider retreats into its web, watching with eight unblinking eyes. (+{armor} armor)"]},{"action":"death","messages":["The Cave Spider curls inward, legs folding like a closing fist. Still at last.","It lets out a thin hiss and collapses, venom pooling beneath its body."]},{"action":"wounded","messages":["*Ichor leaks from a crack in the spider's carapace. It backs away, hissing.*"]},{"action":"near_death","messages":["*The Cave Spider drags itself on its remaining legs, trailing a line of silk behind it.*"]}],"id":"01KKR5QWTARVPDS4ENXBK4MBD2","ref":"cave-spider","name":"Cave Spider","title":"Cave Spider","description":"A pale spider that lurks in dungeon shadows, striking first with venomous fangs.\n","lore":"Cave Spiders weave nearly invisible webs across dungeon passages, paralyzing prey with a single bite.\n","type_flags":1,"rarity":1,"personality":5,"element":4,"rank":2,"family":1,"level":1,"stats":{"hp":14,"max_hp":14,"attack":3,"defense":0,"speed":7,"armor":0},"behavior":{"first_strike":true,"movement_type":1},"loot":{"entries":[{"item_ref":"potion","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"rations","min_quantity":1,"max_quantity":1,"drop_rate":0.18},{"item_ref":"vitality-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.06},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.06}],"max_drops":1,"gold_min":3,"gold_max":8,"xp_reward":15},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Cave Spider","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Peck","damage":1}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The chicken pecks at {target}'s ankle! {dmg} damage!"]},{"action":"death","messages":["The chicken keels over with a final, indignant cluck."]}],"id":"01KSAVKEYE51RE3HX4T4G1BNRV","ref":"chicken","name":"Chicken","title":"Chicken","description":"Passive farm fowl. Tiny HP pool, no needs, ambient grass-biome wildlife. Drops nothing meaningful — atmospheric.\n","type_flags":1,"rarity":0,"personality":3,"rank":0,"family":1,"level":1,"stats":{"hp":5,"max_hp":5,"attack":1,"defense":0,"speed":3,"armor":0,"intelligence":1,"strength":1,"agility":10,"move_speed":0.45,"will":1},"unit_type":10,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.chicken","behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"wildlife"},"template":"splash","sidebar":{"label":"Chicken","hidden":true}},{"tags":["friendslop","bridge","talker"],"abilities":[{"id":"attack","name":"Sanctified Blow","damage":3},{"id":"heal","name":"Mend","damage":0}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The cleric strikes with a glowing mace — {target} takes {dmg} damage!"]},{"action":"death","messages":["The cleric falls, holy symbol fading to grey."]}],"id":"01KSAVZ000000000000000CLRC","ref":"cleric","name":"Cleric","title":"Cleric","description":"Player support humanoid. Pale robe, gold trim, holy symbol. Heals nearby allies; reserved for higher-tier Barracks / temple recruitment once healing AI lands.\n","type_flags":1,"rarity":1,"personality":10,"rank":0,"family":5,"level":3,"stats":{"hp":60,"max_hp":60,"attack":3,"defense":2,"speed":4,"max_mp":120,"max_ep":100,"armor":1,"intelligence":14,"strength":9,"agility":9,"hp_regen":0.3,"mp_regen":1.5,"ep_regen":5,"move_speed":0.7,"max_hunger":150,"max_fatigue":100,"will":14,"hunger_per_sec":0.3,"fatigue_per_sec":0.2},"unit_type":8,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.cleric","behavior":{"first_strike":false,"movement_type":2},"faction":{"faction_id":"player"},"dialogue_tree":{"entry_node_id":"greet","nodes":[{"id":"greet","text":"Sit, if you are hurt. Stand if you are not, and let me look at you anyway.","next_node_id":"menu","condition":"!seen:greet"},{"id":"greet_again","text":"Nothing new on you. Good.","next_node_id":"menu"},{"id":"menu","text":"Well?","options":[{"id":"ask_here","label":"What keeps you at a river crossing?","next_node_id":"here"},{"id":"tell_bitterroot","label":"The forager showed me bitterroot.","next_node_id":"bitterroot","required_flags":["wren_taught_bitterroot","!cleric_taught_the_dressing"]},{"id":"ask_bitterroot_again","label":"About the bitterroot.","next_node_id":"bitterroot_again","required_flags":["cleric_taught_the_dressing"]},{"id":"ask_water","label":"Is the water safe?","next_node_id":"water"},{"id":"leave","label":"(Walk away.)","next_node_id":"farewell"}]},{"id":"here","text":"People go into that river faster than they come back out of it. Somebody ought to be standing on the bank when they do.","next_node_id":"menu"},{"id":"bitterroot","text":"She would. It is good for what she uses it for and useless for what people think it is for. Boil it, do not chew it — chewed, it closes a throat as well as it closes a cut.","next_node_id":"menu","trigger_on_enter":"set_flag:cleric_taught_the_dressing"},{"id":"bitterroot_again","text":"Boiled. Not chewed. I will keep saying it until nobody needs telling.","next_node_id":"menu"},{"id":"water","text":"Safer than the bridge, whatever the keeper is charging for it today.","next_node_id":"menu","condition":"!marlow_toll_paid"},{"id":"water_paid","text":"You have paid for the dry way over, so it hardly matters. Drink upstream of the shallows regardless.","next_node_id":"menu"},{"id":"farewell","text":"Go carefully. I would rather be bored."}]},"template":"splash","sidebar":{"label":"Cleric","hidden":true}},{"tags":[],"abilities":[{"id":"charge","name":"Warden's Fury"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["\"NONE SHALL PASS!\" The Corrupted Warden brings its halberd down on {target}! {dmg} damage!","Shadow tendrils erupt from the warden's armor and lash {target}! {dmg} damage!","The warden grabs {target} by the throat and slams them into the wall! {dmg} damage!"]},{"action":"charge","messages":["The Corrupted Warden slams its halberd into the ground. Dark energy spirals up its body. \"I WILL PROTECT THIS PLACE!\"","The warden's eyes blaze with corrupted light. The dungeon itself seems to empower it."]},{"action":"defend","messages":["The warden raises a barrier of pure shadow. \"THIS IS MY DOMAIN!\" (+{armor} armor)","Dark armor plates materialize over the warden's already formidable defenses. (+{armor} armor)"]},{"action":"aoe","messages":["The Corrupted Warden releases a shockwave of dark energy! \"ALL OF YOU WILL FALL!\" {dmg} damage to all!"]},{"action":"death","messages":["The corruption drains away. For one lucid moment, the warden looks at its hands. \"What... what have I become?\" It falls.","\"I was supposed to... protect...\" The warden's voice fades as the shadow leaves its body. It collapses, finally at peace."]},{"action":"wounded","messages":["*The corruption flares where the warden is struck. Its attacks grow wilder, less controlled.*","*\"YOU DARE?!\" The warden's voice echoes with both rage and pain.*"]},{"action":"near_death","messages":["*The corruption is consuming the warden faster than it can fight. Beneath the shadow, something human pleads for release.*"]}],"id":"01KKR5QWTB3TXCY87HZXFHYFYG","ref":"corrupted-warden","name":"Corrupted Warden","title":"Corrupted Warden","description":"Once a noble guardian, now twisted by dark energy into a relentless engine of destruction.\n","lore":"The Corrupted Warden was the dungeon's most loyal protector until dark magic seeped into its very soul, turning devotion into obsession.\n","type_flags":33,"rarity":3,"personality":1,"element":5,"rank":3,"family":5,"level":5,"stats":{"hp":50,"max_hp":50,"attack":8,"defense":10,"speed":4,"armor":10},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"deep-wardens"},"loot":{"entries":[{"item_ref":"ward","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"potion","min_quantity":1,"max_quantity":2,"drop_rate":0.45},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"teleport-rune","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"campfire-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"phoenix-feather","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"elixir","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"smoke-bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.15}],"max_drops":2,"gold_min":15,"gold_max":30,"xp_reward":100},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Corrupted Warden","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Headbutt","damage":2}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"death","messages":["The cow lows softly and lies down for the last time."]}],"id":"01KSAV880T75RMTKD004K83GDQ","ref":"cow","name":"Cow","title":"Cow","description":"Largest passive livestock. Slowest move speed, biggest HP pool of the farm trio. Drops Meat in bulk when killed; herd into Farms for steady food production.\n","type_flags":1,"rarity":0,"personality":3,"rank":0,"family":1,"level":1,"stats":{"hp":40,"max_hp":40,"attack":2,"defense":1,"speed":2,"armor":0,"intelligence":2,"strength":6,"agility":3,"move_speed":0.3,"will":3},"unit_type":12,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.cow","behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"wildlife"},"template":"splash","sidebar":{"label":"Cow","hidden":true}},{"tags":[],"abilities":[{"id":"defend","name":"Stone Shell","damage":3}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The statue swings a weathered stone fist at {target}. {dmg} damage.","Grinding forward on cracked legs, the statue brings its arm down on {target}. {dmg} damage."]},{"action":"defend","messages":["The Crumbling Statue crosses its stone arms and braces. Dust falls, but it holds. (+{armor} armor)","Ancient runes flicker briefly across its surface as it fortifies. (+{armor} armor)"]},{"action":"death","messages":["The statue freezes mid-swing. A long crack splits it from crown to base, and it crumbles.","Its eyes go dark. The Crumbling Statue returns to what it always was — rubble.","It collapses with a heavy thud, and for a moment you hear something like a sigh in the settling dust."]},{"action":"wounded","messages":["*Chunks of stone fall from the statue's shoulder. It doesn't seem to notice.*"]},{"action":"near_death","messages":["*The statue is more rubble than guardian now. Only its duty holds it together.*"]}],"id":"01KKR5QWTADGEX9BC9H29E0YB9","ref":"crumbling-statue","name":"Crumbling Statue","title":"Crumbling Statue","description":"An ancient stone figure that stirs to life when intruders approach, defending its post with weathered resolve.\n","lore":"Once proud guardians of a forgotten temple, these statues continue their vigil long after their creators turned to dust.\n","type_flags":1,"rarity":1,"personality":4,"element":8,"rank":2,"family":11,"level":1,"stats":{"hp":22,"max_hp":22,"attack":4,"defense":3,"speed":1,"armor":2},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"crystal-order"},"loot":{"entries":[{"item_ref":"potion","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"rations","min_quantity":1,"max_quantity":1,"drop_rate":0.18},{"item_ref":"vitality-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.06},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.06}],"max_drops":1,"gold_min":3,"gold_max":8,"xp_reward":15},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Crumbling Statue","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Screech","damage":4}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Crystal Bat dive-bombs {target}, raking with gemstone talons! {dmg} damage!","A high-pitched screech precedes a blur of crystalline wings slashing {target}! {dmg} damage!","The bat swoops low, dragging razor-sharp wing edges across {target}! {dmg} damage!"]},{"action":"flee","messages":["The Crystal Bat shrieks and spirals upward into the darkness!","With a panicked flutter of gem-studded wings, the bat vanishes into a crack in the ceiling."]},{"action":"death","messages":["The Crystal Bat spirals down and shatters on impact like a thrown ornament.","Its wings fold and it drops, crystalline feathers scattering like confetti."]},{"action":"wounded","messages":["*A crack runs along one of the bat's wings. Its flight becomes erratic.*"]},{"action":"near_death","messages":["*The Crystal Bat can barely stay aloft, dragging one shattered wing.*"]}],"id":"01KKR5QWTAMADFK3GY8Q47GQ6N","ref":"crystal-bat","name":"Crystal Bat","title":"Crystal Bat","description":"A small bat with crystalline wings that catch the light, darting through dark caverns.\n","lore":"Crystal Bats roost in mineral-rich caves, their wings slowly encrusted with gemstone formations.\n","type_flags":1,"rarity":1,"personality":5,"rank":2,"family":1,"animation_set":"bird","sprite_atlas":{"atlas_ref":"monster_bird","columns":4,"rows":1,"cell_width":61,"cell_height":57,"row_front":0,"row_side":0,"row_back":0,"world_width":28,"world_height":26,"clips":[{"anim":"idle","row":0,"start_frame":0,"frame_count":4,"fps":8,"loop":true}]},"level":1,"stats":{"hp":15,"max_hp":15,"attack":4,"defense":0,"speed":6,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"hostile"},"loot":{"entries":[{"item_ref":"potion","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"rations","min_quantity":1,"max_quantity":1,"drop_rate":0.18},{"item_ref":"vitality-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.06},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.06}],"max_drops":1,"gold_min":3,"gold_max":8,"xp_reward":15},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Crystal Bat","hidden":true}},{"tags":[],"abilities":[{"id":"charge","name":"Crystal Charge"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Crystal Golem swings a prismatic arm at {target}. The impact sends rainbows scattering. {dmg} damage.","Light concentrates into a beam from the golem's core, scorching {target}. {dmg} damage."]},{"action":"charge","messages":["The Crystal Golem plants its feet. Every facet of its body begins to glow brighter and brighter...","A low hum builds as the golem draws energy from the earth itself. The air crackles with static."]},{"action":"defend","messages":["The Crystal Golem's surface shifts, angling its facets to deflect incoming blows. (+{armor} armor)","It stands immovable. Striking it feels like punching a diamond. (+{armor} armor)"]},{"action":"death","messages":["The Crystal Golem's core dims. Fracture lines race across its body, and it topples — a falling cathedral of light.","It reaches out as if to steady itself, then shatters. Crystal shards ring like bells as they scatter."]},{"action":"wounded","messages":["*A facet cracks. Prismatic light leaks from the wound like blood.*"]},{"action":"near_death","messages":["*The golem's core pulses erratically. Its body is more crack than crystal now.*"]}],"id":"01KKR5QWTBC89E1XJHM3CZ5SRK","ref":"crystal-golem","name":"Crystal Golem","title":"Crystal Golem","description":"A towering construct of living crystal that charges through obstacles, its body refracting light into blinding rainbows.\n","lore":"Crystal Golems were forged in the heart of a dying star, their bodies nearly indestructible and infused with raw magical energy.\n","type_flags":1,"rarity":3,"personality":4,"element":7,"rank":2,"family":11,"level":3,"stats":{"hp":45,"max_hp":45,"attack":8,"defense":8,"speed":2,"armor":8},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"crystal-order"},"loot":{"entries":[{"item_ref":"ward","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"campfire-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"rage-draught","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"phoenix-feather","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"antidote","min_quantity":1,"max_quantity":1,"drop_rate":0.17},{"item_ref":"smoke-bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.08}],"max_drops":2,"gold_min":8,"gold_max":18,"xp_reward":50},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Crystal Golem","hidden":true}},{"tags":[],"abilities":[{"id":"defend","name":"Cursed Shield","damage":5}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Cursed Knight swings its blackened greatsword with unbridled fury! {dmg} damage to {target}!","\"KNEEL!\" the knight bellows, bringing its blade down on {target}! {dmg} damage!","Dark energy crackles along the knight's sword as it slashes {target}! {dmg} damage!"]},{"action":"defend","messages":["The Cursed Knight slams its tower shield into the ground. \"You cannot break me!\" (+{armor} armor)","Shadow coils around the knight's armor, reinforcing it. (+{armor} armor)"]},{"action":"charge","messages":["The Cursed Knight raises its sword overhead, dark flames licking along the blade! Something terrible is coming!","\"YOUR END APPROACHES!\" The knight's eyes blaze with cursed fire as power builds!"]},{"action":"death","messages":["The Cursed Knight drops to one knee. \"Free... at last...\" The curse unravels and the armor falls empty.","Dark energy erupts from the knight's visor as it collapses, the curse finally spent."]},{"action":"wounded","messages":["*The knight's rage intensifies. Cracks in its armor leak shadow like blood.*","*\"Is that... all?\" The Cursed Knight's voice drips with contempt and pain.*"]},{"action":"near_death","messages":["*The curse flickers. For a moment you see the face of the knight it used to be — terrified.*"]}],"id":"01KKR5QWTBV72R8B4V4JBNG308","ref":"cursed-knight","name":"Cursed Knight","title":"Cursed Knight","description":"A heavily armored undead warrior consumed by rage, cursed to fight for eternity.\n","lore":"Once noble champions, these knights fell to a dark curse that twisted their valor into unending fury.\n","type_flags":1,"rarity":2,"personality":1,"element":5,"rank":2,"family":2,"level":2,"stats":{"hp":35,"max_hp":35,"attack":6,"defense":5,"speed":3,"armor":5},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"deep-wardens"},"loot":{"entries":[{"item_ref":"bandage","min_quantity":1,"max_quantity":1,"drop_rate":0.27},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"fire-flask","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"iron-skin-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"trap-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.13}],"max_drops":1,"gold_min":5,"gold_max":12,"xp_reward":30},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Cursed Knight","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"umbral-claw","name":"Umbral Claw","description":"A close-quarters strike carrying its element.","element":5,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"nightfall","name":"Nightfall","description":"A ranged burst that covers the ground in front of it.","element":5,"mp_cost":8,"hit_chance":1,"category":"special","power":34,"pp":15,"max_pp":15,"target":"enemy"},{"id":"devouring-dark","name":"Devouring Dark","description":"Everything it has, released at once.","element":5,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Direhowl lunges at {target} for {dmg} damage!","Direhowl presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Direhowl breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N11","ref":"direhowl","name":"Direhowl","title":"Direhowl","description":"Dark and rangy under a grey mane, scarred about the muzzle, with red at the joints.\n","lore":"Hunts in the pattern of a pack while alone, which is unsettling to watch and effective enough that nobody argues with the results.\n","type_flags":16,"rarity":2,"personality":4,"element":5,"rank":2,"family":1,"img":"/assets/npc/direhowl.png","level":16,"stats":{"hp":72,"max_hp":72,"attack":24,"defense":16,"speed":20,"mp":40,"max_mp":40,"special_attack":12,"special_defense":14,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"umbral-claw"},{"level":18,"ability_id":"nightfall"},{"level":26,"ability_id":"devouring-dark"}]},"template":"splash","sidebar":{"label":"Direhowl","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"umbral-claw","name":"Umbral Claw","description":"A close-quarters strike carrying its element.","element":5,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"nightfall","name":"Nightfall","description":"A ranged burst that covers the ground in front of it.","element":5,"mp_cost":8,"hit_chance":1,"category":"special","power":34,"pp":15,"max_pp":15,"target":"enemy"},{"id":"devouring-dark","name":"Devouring Dark","description":"Everything it has, released at once.","element":5,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Duskwing lunges at {target} for {dmg} damage!","Duskwing presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Duskwing breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N12","ref":"duskwing","name":"Duskwing","title":"Duskwing","description":"Violet and black with a wingspan out of proportion to its body, and a habit of being slightly further away than expected.\n","lore":"Active at the edges of the day only. The wings are functional but it prefers not to use them where it can be seen doing so.\n","type_flags":16,"rarity":2,"personality":4,"element":5,"rank":2,"family":1,"img":"/assets/npc/duskwing.png","level":16,"stats":{"hp":66,"max_hp":66,"attack":12,"defense":14,"speed":22,"mp":40,"max_mp":40,"special_attack":26,"special_defense":18,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"umbral-claw"},{"level":18,"ability_id":"nightfall"},{"level":26,"ability_id":"devouring-dark"}],"secondary_element":"wind"},"template":"splash","sidebar":{"label":"Duskwing","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Gnaw","damage":6}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["You barely see it — the Dust Mite darts in and bites {target}! {dmg} damage!","A tiny blur zips across {target}'s face, leaving a stinging cut! {dmg} damage!","The Dust Mite burrows into {target}'s sleeve and bites viciously! {dmg} damage!","Something impossibly small and impossibly angry stabs {target}! {dmg} damage!"]},{"action":"flee","messages":["The Dust Mite vanishes into a crack so small you didn't know it existed.","One moment it's there, the next — just dust."]},{"action":"death","messages":["You squish it. There's a tiny, unsatisfying crunch.","The Dust Mite curls up and stops moving. You almost feel bad."]},{"action":"wounded","messages":["*The mite's movements become frantic, buzzing in tight circles.*"]},{"action":"near_death","messages":["*The Dust Mite limps on three legs, dragging itself forward with desperate clicks.*"]}],"id":"01KKR5QWTA8JDZGRMHM21CR2J1","ref":"dust-mite","name":"Dust Mite","title":"Dust Mite","description":"A near-invisible arthropod that strikes with surprising ferocity for its minuscule size.\n","lore":"Dust Mites thrive in forgotten ruins, feeding on magical residue left behind by ancient civilizations.\n","type_flags":1,"rarity":1,"personality":5,"rank":2,"family":1,"level":1,"stats":{"hp":12,"max_hp":12,"attack":6,"defense":0,"speed":8,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"loot":{"entries":[{"item_ref":"potion","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"rations","min_quantity":1,"max_quantity":1,"drop_rate":0.18},{"item_ref":"vitality-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.06},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.06}],"max_drops":1,"gold_min":3,"gold_max":8,"xp_reward":15},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Dust Mite","hidden":true}},{"tags":[],"abilities":[{"id":"burn","name":"Ignite","damage":4,"cooldown_turns":3}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Ember Wisp darts at {target} and scorches exposed skin! {dmg} damage!","A tendril of pale flame lashes out from the wisp and singes {target}! {dmg} damage!"]},{"action":"debuff","messages":["The Ember Wisp flares in panic, showering {target} with burning embers! {effect} takes hold!","Desperate heat radiates from the wisp. {target} can feel {effect} seeping in!"]},{"action":"flee","messages":["The Ember Wisp flickers rapidly and zips away like a frightened firefly!","It dims almost to nothing and drifts away, too scared to maintain its own flame."]},{"action":"death","messages":["The Ember Wisp gutters once, twice, and goes out. A tiny curl of smoke is all that remains.","The light fades. The wisp dies the way all fires do — quietly, when there's nothing left to burn."]},{"action":"wounded","messages":["*The wisp's flame shifts to a sickly blue. It bobs erratically, looking for an escape.*"]},{"action":"near_death","messages":["*The Ember Wisp is barely a spark now, flickering between being and not-being.*"]}],"id":"01KKR5QWTBPWP2WD71838AMPZB","ref":"ember-wisp","name":"Ember Wisp","title":"Ember Wisp","description":"A floating orb of pale fire that drifts through corridors, leaving trails of burning air.\n","lore":"Ember Wisps are fragments of dying fire elementals, flickering between existence and oblivion.\n","type_flags":1,"rarity":1,"personality":3,"element":1,"rank":2,"family":4,"level":2,"stats":{"hp":16,"max_hp":16,"attack":4,"defense":0,"speed":5,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"loot":{"entries":[{"item_ref":"bandage","min_quantity":1,"max_quantity":1,"drop_rate":0.27},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"fire-flask","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"iron-skin-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"trap-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.13}],"max_drops":1,"gold_min":5,"gold_max":12,"xp_reward":30},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Ember Wisp","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"searing-bite","name":"Searing Bite","description":"A close-quarters strike carrying its element.","element":1,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"flame-gout","name":"Flame Gout","description":"A ranged burst that covers the ground in front of it.","element":1,"mp_cost":8,"hit_chance":1,"status_effect":"burn","category":"special","power":34,"pp":15,"max_pp":15,"status_chance":0.25,"target":"enemy"},{"id":"solar-flare","name":"Solar Flare","description":"Everything it has, released at once.","element":1,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Emberstripe lunges at {target} for {dmg} damage!","Emberstripe presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Emberstripe breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N13","ref":"emberstripe","name":"Emberstripe","title":"Emberstripe","description":"Red and banded with a crest that stands when it is interested in you, which is rarely good news.\n","lore":"Runs hot enough that rain steams off it. Kept as a hearth animal in some valleys, on the strict understanding that it chooses the hearth.\n","type_flags":16,"rarity":2,"personality":4,"element":1,"rank":2,"family":1,"img":"/assets/npc/emberstripe.png","level":16,"stats":{"hp":72,"max_hp":72,"attack":24,"defense":16,"speed":20,"mp":40,"max_mp":40,"special_attack":12,"special_defense":14,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"searing-bite"},{"level":18,"ability_id":"flame-gout"},{"level":26,"ability_id":"solar-flare"}]},"template":"splash","sidebar":{"label":"Emberstripe","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Fireball","damage":8}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Fire Imp hurls a sputtering fireball at {target}! It cackles as it connects! {dmg} damage!","\"Hee hee hee!\" The imp snaps its fingers and {target} catches fire! {dmg} damage!","The imp does a little jig and flings a flame bolt at {target}! {dmg} damage!"]},{"action":"debuff","messages":["The Fire Imp panics and sneezes fire everywhere! {target} is caught in the {effect}!","Frantic flames spiral out of the imp's hands! {target} suffers {effect}!"]},{"action":"flee","messages":["The Fire Imp shrieks \"NOPE NOPE NOPE!\" and rockets away on a jet of flame!","The imp squeaks in terror and dives headfirst into a torch sconce, vanishing!"]},{"action":"death","messages":["The Fire Imp's flame gutters out. It lets out one tiny \"oh\" and turns to ash.","With a final pop and a puff of sulfurous smoke, the imp is gone."]},{"action":"wounded","messages":["*The imp's flame dims to a nervous flicker. It keeps glancing at the exits.*"]},{"action":"near_death","messages":["*The Fire Imp is barely a candle flame now, whimpering and clutching its own tail.*"]}],"id":"01KKR5QWTBNKBVAN8J4168AFRW","ref":"fire-imp","name":"Fire Imp","title":"Fire Imp","description":"A small demonic creature wreathed in flame, cackling as it hurls fireballs at anything that moves.\n","lore":"Fire Imps are summoned servants that outlived their masters, now running wild in the dungeon depths.\n","type_flags":1,"rarity":1,"personality":3,"element":1,"rank":2,"family":3,"level":2,"stats":{"hp":18,"max_hp":18,"attack":8,"defense":0,"speed":6,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"loot":{"entries":[{"item_ref":"bandage","min_quantity":1,"max_quantity":1,"drop_rate":0.27},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"fire-flask","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"iron-skin-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"trap-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.13}],"max_drops":1,"gold_min":5,"gold_max":12,"xp_reward":30},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Fire Imp","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Harpoon","damage":4}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The fishing boat's harpoon plunges into {target}! {dmg} damage!","A whaling line whips through the water — {target} takes {dmg} damage!"]},{"action":"death","messages":["The fishing boat splinters apart and slips beneath the waves."]}],"id":"01KSAVJR1ASDVMRD9B29PHBXWV","ref":"fishing-boat","name":"Fishing Boat","title":"Fishing Boat","description":"Craftsman-built water-locked vessel. Slow, mid HP, harpoon-tipped ranged attack against Whales + Beasts. Spawned by Docks; lives in river / ocean tiles only.\n","type_flags":1,"rarity":0,"personality":4,"rank":0,"family":5,"level":3,"stats":{"hp":80,"max_hp":80,"attack":4,"defense":2,"speed":3,"armor":1,"intelligence":4,"strength":8,"agility":6,"move_speed":0.42,"will":6},"unit_type":17,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.fishing_boat","behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Fishing Boat","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"rime-fang","name":"Rime Fang","description":"A close-quarters strike carrying its element.","element":2,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"frost-breath","name":"Frost Breath","description":"A ranged burst that covers the ground in front of it.","element":2,"mp_cost":8,"hit_chance":1,"category":"special","power":34,"pp":15,"max_pp":15,"target":"enemy"},{"id":"absolute-winter","name":"Absolute Winter","description":"Everything it has, released at once.","element":2,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Frostfang lunges at {target} for {dmg} damage!","Frostfang presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Frostfang breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N21","ref":"frostfang","name":"Frostfang","title":"Frostfang","description":"Dark blue over black, low to the ground, moving with the deliberateness of something that has never had to hurry.\n","lore":"Silent on snow. Trackers say the first sign of one is that the other animals have already left.\n","type_flags":16,"rarity":2,"personality":4,"element":2,"rank":2,"family":1,"img":"/assets/npc/frostfang.png","level":16,"stats":{"hp":72,"max_hp":72,"attack":24,"defense":16,"speed":20,"mp":40,"max_mp":40,"special_attack":12,"special_defense":14,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"rime-fang"},{"level":18,"ability_id":"frost-breath"},{"level":26,"ability_id":"absolute-winter"}]},"template":"splash","sidebar":{"label":"Frostfang","hidden":true}},{"tags":[],"abilities":[{"id":"heavy-attack","name":"Fungal Slam","damage":10}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Fungal Brute swings a massive arm like a tree trunk into {target}! {dmg} damage!","Spore clouds burst from the brute's fist as it hammers {target} into the ground! {dmg} damage!","The ground shakes as the brute stomps toward {target} and delivers a crushing blow! {dmg} damage!"]},{"action":"heavy_attack","messages":["The Fungal Brute roars — a wet, echoing bellow — and bodyslams {target}! {dmg} damage!","Mushrooms burst from the walls as the brute channels its full mass into {target}! {dmg} damage!"]},{"action":"defend","messages":["The Fungal Brute's skin hardens into bark-like armor. Spores cloud the air. (+{armor} armor)"]},{"action":"death","messages":["The Fungal Brute topples like a felled tree, releasing a final cloud of spores as it decomposes.","It groans — a sound like creaking wood — and collapses. Mushrooms begin sprouting from the corpse immediately."]},{"action":"wounded","messages":["*Chunks of fungal matter slough off the brute. New growth is already filling the gaps.*"]},{"action":"near_death","messages":["*The brute is rotting faster than it can regenerate. Its movements are sluggish and desperate.*"]}],"id":"01KKR5QWTB7S5FY2HNXJN5Y4NY","ref":"fungal-brute","name":"Fungal Brute","title":"Fungal Brute","description":"A massive fungal creature that lumbers forward with devastating force, its body thick with toxic spores.\n","lore":"Fungal Brutes grow in the deepest caverns, their bodies an amalgamation of countless smaller fungi merged into one hulking mass.\n","type_flags":1,"rarity":1,"personality":5,"element":4,"rank":2,"family":9,"level":2,"stats":{"hp":38,"max_hp":38,"attack":10,"defense":2,"speed":2,"armor":2},"behavior":{"first_strike":false,"movement_type":1},"loot":{"entries":[{"item_ref":"bandage","min_quantity":1,"max_quantity":1,"drop_rate":0.27},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"fire-flask","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"iron-skin-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"trap-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.13}],"max_drops":1,"gold_min":5,"gold_max":12,"xp_reward":30},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Fungal Brute","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Arrow Volley","damage":7}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The galley looses an arrow volley at {target}! {dmg} damage!","Twin bow archers strike {target}! {dmg} damage!"]},{"action":"death","messages":["The galley founders, oars dragging into the depths."]}],"id":"01KSAV4D81ZJNBH8W8MS410ZX4","ref":"galley","name":"Galley","title":"Galley","description":"Player warship — Shipyard-built (Dock T1+). Water-locked, ranged arrow loadout, decent HP. Sister combat boat to the FishingBoat economy hull; kept on cadence by ShipyardGalleyProductionSystem.\n","type_flags":1,"rarity":1,"personality":4,"rank":2,"family":5,"level":4,"stats":{"hp":140,"max_hp":140,"attack":7,"defense":3,"speed":4,"armor":2,"intelligence":6,"strength":14,"agility":8,"move_speed":0.5,"will":10},"unit_type":19,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.galley","behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Galley","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"rime-fang","name":"Rime Fang","description":"A close-quarters strike carrying its element.","element":2,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"frost-breath","name":"Frost Breath","description":"A ranged burst that covers the ground in front of it.","element":2,"mp_cost":8,"hit_chance":1,"category":"special","power":34,"pp":15,"max_pp":15,"target":"enemy"},{"id":"absolute-winter","name":"Absolute Winter","description":"Everything it has, released at once.","element":2,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Glacierfang lunges at {target} for {dmg} damage!","Glacierfang presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Glacierfang breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N07","ref":"glacierfang","name":"Glacierfang","title":"Glacierfang","description":"Broad and slab-sided in blue and red, built like something that expects to be hit and has opinions about it.\n","lore":"Sheds a rime of frost as it walks that persists for hours. Northern caravans pay well for one purely because the water barrels stop going bad.\n","type_flags":16,"rarity":2,"personality":4,"element":2,"rank":2,"family":1,"img":"/assets/npc/glacierfang.png","level":16,"stats":{"hp":88,"max_hp":88,"attack":18,"defense":26,"speed":12,"mp":40,"max_mp":40,"special_attack":14,"special_defense":24,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"rime-fang"},{"level":18,"ability_id":"frost-breath"},{"level":26,"ability_id":"absolute-winter"}],"secondary_element":"earth"},"template":"splash","sidebar":{"label":"Glacierfang","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Crystal Blade","damage":10}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["You see the blade a heartbeat too late — the Glass Assassin is already withdrawing it from {target}! {dmg} damage!","A shimmer in the air is the only warning before {target} is slashed! {dmg} damage!","The assassin's arm extends into a crystal blade and pierces {target}'s defense! {dmg} damage!","Light bends around the assassin. {target} doesn't see the cut coming. {dmg} damage."]},{"action":"defend","messages":["The Glass Assassin goes completely still. It becomes nearly invisible against the stone walls. (+{armor} armor)"]},{"action":"flee","messages":["The Glass Assassin refracts the light around itself and simply... disappears.","One moment it's there. Then just empty air and a faint tinkling sound."]},{"action":"death","messages":["The Glass Assassin shatters into a thousand razor fragments. Each one catches the light one final time.","A web of cracks spreads across its body. It looks down at itself, then breaks apart in silence."]},{"action":"wounded","messages":["*A fracture line appears across the assassin's torso. Its movements remain precise.*"]},{"action":"near_death","messages":["*The Glass Assassin is riddled with cracks. Light bleeds through it from every angle.*"]}],"id":"01KKR5QWTBH0QF9K030QMZFQWC","ref":"glass-assassin","name":"Glass Assassin","title":"Glass Assassin","description":"A humanoid figure made of living glass that strikes with lethal precision, its transparent body nearly invisible.\n","lore":"Glass Assassins were created as perfect killers — transparent, silent, and razor-sharp.\n","type_flags":1,"rarity":2,"personality":2,"rank":2,"family":11,"level":3,"stats":{"hp":22,"max_hp":22,"attack":10,"defense":1,"speed":9,"armor":1},"behavior":{"first_strike":true,"movement_type":1},"faction":{"faction_id":"crystal-order"},"loot":{"entries":[{"item_ref":"ward","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"campfire-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"rage-draught","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"phoenix-feather","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"antidote","min_quantity":1,"max_quantity":1,"drop_rate":0.17},{"item_ref":"smoke-bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.08}],"max_drops":2,"gold_min":8,"gold_max":18,"xp_reward":50},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Glass Assassin","hidden":true}},{"tags":[],"abilities":[{"id":"charge","name":"Glass Rampage"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Glass Golem drives a massive crystalline fist into {target}. The impact echoes through the chamber. {dmg} damage.","Razor edges along the golem's arm open a deep gash in {target} as it sweeps past. {dmg} damage.","The golem stamps the ground and a shard of glass erupts beneath {target}! {dmg} damage."]},{"action":"charge","messages":["The Glass Golem's body begins to resonate. A deep hum fills the chamber as every facet ignites with light.","It lowers its head and the room goes dark — all light is being drawn into the golem's core."]},{"action":"defend","messages":["The golem rearranges its glass plates into an interlocking shield wall. Light bounces everywhere. (+{armor} armor)","It becomes a fortress. Your reflection stares back at you from a hundred mirrored surfaces. (+{armor} armor)"]},{"action":"aoe","messages":["The Glass Golem detonates its outer shell! Razor shards fly in every direction! {dmg} damage to all!","A blinding flash erupts from the golem's core. When you can see again, everything hurts. {dmg} damage to all."]},{"action":"death","messages":["The golem's core fractures with a sound like a cathedral bell. It collapses in slow motion, a cascade of glittering ruin.","Silence. Then the Glass Golem simply falls apart — not with fury, but with the quiet acceptance of stone returning to sand."]},{"action":"wounded","messages":["*Deep fractures web across the golem's torso. Light bleeds from every crack.*","*A massive glass plate falls from the golem's shoulder and shatters on the ground. It does not look down.*"]},{"action":"near_death","messages":["*The golem is more hole than wall now. Its core pulses weakly, visible through the ruin of its body.*"]}],"id":"01KKR5QWTBJ3ZFEHR24YGT6VYX","ref":"glass-golem","name":"Glass Golem","title":"Glass Golem","description":"An enormous golem of fused glass that towers over all challengers, its body a maze of razor-sharp edges.\n","lore":"The Glass Golem was created as a final guardian, its body forged from the crystallized tears of a dying god.\n","type_flags":33,"rarity":3,"personality":4,"element":7,"rank":3,"family":11,"level":5,"stats":{"hp":60,"max_hp":60,"attack":10,"defense":8,"speed":3,"armor":8},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"crystal-order"},"loot":{"entries":[{"item_ref":"ward","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"potion","min_quantity":1,"max_quantity":2,"drop_rate":0.45},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"teleport-rune","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"campfire-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"phoenix-feather","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"elixir","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"smoke-bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.15}],"max_drops":2,"gold_min":15,"gold_max":30,"xp_reward":100},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Glass Golem","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Engulf","damage":5}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Glass Slime squelches forward and engulfs {target}'s arm! {dmg} damage!","A razor-thin pseudopod lashes out from the slime's body! {dmg} damage to {target}!","The slime launches a glob of molten glass at {target}! {dmg} damage!","Shards of crystal churn inside the slime as it slams into {target}! {dmg} damage!"]},{"action":"defend","messages":["The Glass Slime compresses into a dense, glittering sphere. (+{armor} armor)","Light refracts wildly as the slime hardens its outer membrane. (+{armor} armor)"]},{"action":"death","messages":["The Glass Slime shudders and bursts into a thousand glittering fragments.","With a wet pop, the slime collapses into a puddle of liquid crystal.","The slime's glow dims and it melts into the stone floor, leaving only glass dust."]},{"action":"wounded","messages":["*Cracks spider-web across the slime's translucent body. It pulses angrily.*","*The slime's color shifts from clear to a murky, agitated crimson.*"]},{"action":"near_death","messages":["*The Glass Slime is barely holding its shape, fragments sloughing off with each movement.*"]}],"id":"01KKR5QWT9998CCD18XN2B3726","ref":"glass-slime","name":"Glass Slime","title":"Glass Slime","description":"A translucent blob of living glass that oozes through dungeon corridors, absorbing anything it touches.\n","lore":"Born from shattered crystal and ambient mana, Glass Slimes are among the first threats dungeon delvers encounter.\n","type_flags":1,"rarity":1,"personality":5,"rank":2,"family":8,"sprite_atlas":{"atlas_ref":"/Game/NPC/Slime/T_Slime_Crawl","columns":5,"rows":3,"cell_width":64,"cell_height":64,"row_front":0,"row_side":1,"row_back":2,"mirror_right_from_side":true,"world_width":128,"world_height":128,"pivot_z":0,"clips":[{"anim":"crawl","row":0,"start_frame":0,"frame_count":5,"fps":10,"loop":true}]},"level":1,"stats":{"hp":20,"max_hp":20,"attack":5,"defense":0,"speed":3,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"crystal-order"},"loot":{"entries":[{"item_ref":"potion","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"rations","min_quantity":1,"max_quantity":1,"drop_rate":0.18},{"item_ref":"vitality-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.06},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.06}],"max_drops":1,"gold_min":3,"gold_max":8,"xp_reward":15},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Glass Slime","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Club Swing","damage":4}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The goblin lunges at {target} with a rusty club! {dmg} damage!","A wild swing connects with {target}! {dmg} damage!"]},{"action":"death","messages":["The goblin crumples with a final snarl."]}],"id":"01KSAVBCDKGE0N89F6ZPH846Z8","ref":"goblin","name":"Goblin","title":"Goblin","description":"Wiry humanoid raider — fast, frail, swings a club. The default Hostile-faction footsoldier of the Rareicon empire-builder; also recruitable as a Player goblin worker via Lost Goblin Band events.\n","type_flags":1,"rarity":0,"personality":1,"rank":0,"family":5,"level":1,"stats":{"hp":40,"max_hp":40,"attack":4,"defense":1,"speed":4,"max_mp":30,"max_ep":100,"armor":0,"intelligence":4,"strength":8,"agility":12,"hp_regen":0,"mp_regen":0.5,"ep_regen":5,"move_speed":0.7,"max_hunger":100,"max_fatigue":100,"will":5,"hunger_per_sec":0.285,"fatigue_per_sec":0.2},"unit_type":1,"default_weapon":1,"dialogue_tree_id":0,"name_key":"creature.goblin","behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"hostile"},"template":"splash","sidebar":{"label":"Goblin","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Warlord Cleave","damage":11}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The goblin general roars — {target} takes {dmg} crushing damage!","Spiked crown gleaming, the warlord cleaves into {target} for {dmg}!"]},{"action":"death","messages":["The goblin general topples, warpaint streaked with blood."]}],"id":"01KSAVZ00000000000000GGNRL","ref":"goblin-general","name":"Goblin General","title":"Goblin General","description":"Hostile warlord goblin. Chestplate, spiked crown, warpaint. Tougher than a regular Goblin, anchors larger raid waves and elite hostile garrisons.\n","type_flags":1,"rarity":2,"personality":1,"rank":2,"family":5,"level":5,"stats":{"hp":140,"max_hp":140,"attack":11,"defense":3,"speed":4,"max_mp":30,"max_ep":150,"armor":3,"intelligence":9,"strength":16,"agility":12,"hp_regen":0.2,"mp_regen":0.3,"ep_regen":6,"move_speed":0.75,"max_hunger":180,"max_fatigue":130,"will":12,"hunger_per_sec":0.32,"fatigue_per_sec":0.22},"unit_type":16,"default_weapon":1,"dialogue_tree_id":0,"name_key":"creature.goblin_general","behavior":{"first_strike":false,"movement_type":2},"faction":{"faction_id":"hostile"},"template":"splash","sidebar":{"label":"Goblin General","hidden":true}},{"tags":[],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[{"zone":"grassland","spawn_weight":1}],"phase_rules":[{"time_start":700,"time_end":1800}],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KKWBVKEN10357T9ZZ4BNJCG9","ref":"green-toad","name":"Green Toad","title":"Green Toad","description":"A small amphibian that sits idle in the grass, croaks occasionally, and hops to nearby spots during the day.\n","lore":"Green Toads are common grassland amphibians known for their rhythmic croaking and sudden, arcing hops.\nThey use a sprite-sheet animation with idle, croak emote, and hop cycles across a 9x5 frame grid.\nOccasionally they pause to puff up their throat in a charming display before launching to a new spot.\n","type_flags":1,"rarity":0,"personality":11,"element":10,"rank":1,"family":1,"level":1,"stats":{"hp":3,"max_hp":3,"attack":0,"defense":0,"speed":1,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"spatial":{"walk_speed":2,"can_fly":false},"creature_config":{"render_kind":1,"pool_size":8,"chunk_size":16,"per_chunk":1,"spawn_chance":0.35,"schedule":2},"credits":"KBVE Isometric ambient creature system.\n","template":"splash","sidebar":{"label":"Green Toad","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"umbral-claw","name":"Umbral Claw","description":"A close-quarters strike carrying its element.","element":5,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"nightfall","name":"Nightfall","description":"A ranged burst that covers the ground in front of it.","element":5,"mp_cost":8,"hit_chance":1,"category":"special","power":34,"pp":15,"max_pp":15,"target":"enemy"},{"id":"devouring-dark","name":"Devouring Dark","description":"Everything it has, released at once.","element":5,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Grimclaw lunges at {target} for {dmg} damage!","Grimclaw presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Grimclaw breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N17","ref":"grimclaw","name":"Grimclaw","title":"Grimclaw","description":"Black with red claws and a red mark across the chest that does not scar over.\n","lore":"The mark appears during the change and is identical on every recorded specimen, which is the single most-studied and least-explained fact about the line.\n","type_flags":16,"rarity":2,"personality":4,"element":5,"rank":2,"family":1,"img":"/assets/npc/grimclaw.png","level":16,"stats":{"hp":72,"max_hp":72,"attack":24,"defense":16,"speed":20,"mp":40,"max_mp":40,"special_attack":12,"special_defense":14,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"umbral-claw"},{"level":18,"ability_id":"nightfall"},{"level":26,"ability_id":"devouring-dark"}]},"template":"splash","sidebar":{"label":"Grimclaw","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Crossbow Volley","damage":10}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The King looses a crossbow bolt! {target} reels for {dmg} damage!","A snapped quarrel arcs through the air. {target} takes {dmg} damage!"]},{"action":"death","messages":["The King falls. The crown rolls free across the field — the run ends here."]}],"id":"01KSAV57D0DKQNWXJ8AC01V8PQ","ref":"king","name":"King","title":"King","description":"Player avatar. Crowned warrior — high HP, ranged crossbow loadout, drives the empire-builder loop. Rarely seen on the front line by mid-game; lose him and the run ends.\n","type_flags":1,"rarity":4,"personality":10,"rank":4,"family":5,"level":8,"stats":{"hp":200,"max_hp":200,"attack":10,"defense":4,"speed":4,"max_mp":100,"max_ep":220,"armor":3,"intelligence":14,"strength":14,"agility":11,"mp_regen":2,"ep_regen":7,"move_speed":0.7,"max_hunger":220,"max_fatigue":120,"will":16,"hunger_per_sec":0.3135,"fatigue_per_sec":0.22},"unit_type":5,"default_weapon":2,"dialogue_tree_id":0,"name_key":"creature.king","behavior":{"first_strike":false,"movement_type":3},"faction":{"faction_id":"player"},"equipment":{"equipped":[{"slot":7,"item_ref":"gold-plated-shield"},{"slot":6,"item_ref":"iron-sword"},{"slot":2,"item_ref":"iron-armor"}]},"template":"splash","sidebar":{"label":"King","hidden":true}},{"tags":["friendslop","bridge","talker"],"abilities":[{"id":"attack","name":"Steel Cleave","damage":8}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The knight crashes into {target} with a steel-shod blow! {dmg} damage!","Plate clanks as the knight cleaves {target}! {dmg} damage!"]},{"action":"death","messages":["The knight falls heavily, plate ringing against the stone."]}],"id":"01KSAVJ4TXAMCXS00X0F0H2W1E","ref":"knight","name":"Knight","title":"Knight","description":"Heavy-armoured Player melee. Slow, hard-hitting, soaks damage for the army line.\n","type_flags":1,"rarity":1,"personality":10,"rank":2,"family":5,"level":4,"stats":{"hp":120,"max_hp":120,"attack":8,"defense":3,"speed":3,"max_ep":180,"armor":4,"intelligence":8,"strength":16,"agility":8,"ep_regen":6,"move_speed":0.55,"max_hunger":200,"max_fatigue":120,"will":11,"hunger_per_sec":0.3325,"fatigue_per_sec":0.22},"unit_type":2,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.knight","behavior":{"first_strike":false,"movement_type":2},"faction":{"faction_id":"player"},"equipment":{"equipped":[{"slot":7,"item_ref":"iron-shield"},{"slot":6,"item_ref":"iron-sword"},{"slot":2,"item_ref":"iron-armor"}]},"dialogue_tree":{"entry_node_id":"greet","nodes":[{"id":"greet","text":"Stand where I can see your hands and we will get on well enough.","next_node_id":"menu","condition":"!seen:greet"},{"id":"greet_again","text":"You again. Hands.","next_node_id":"menu"},{"id":"menu","text":"Say it, then.","options":[{"id":"ask_posted","label":"Who posted you here?","next_node_id":"posted"},{"id":"tell_book","label":"The warden keeps a book of who crosses.","next_node_id":"book","required_flags":["sable_showed_the_book","!knight_named_the_orders"]},{"id":"ask_book_again","label":"About that book.","next_node_id":"book_again","required_flags":["knight_named_the_orders"]},{"id":"tell_ridge","label":"A trader says things stand along the ridge road at night.","next_node_id":"ridge","required_flags":["merchant_named_the_ridge_road"]},{"id":"leave","label":"(Walk away.)","next_node_id":"farewell"}]},{"id":"posted","text":"The order came down the road and I came down after it. That is as much as I was told and more than I was asked.","next_node_id":"menu"},{"id":"book","text":"It comes to me. I read the names, I send it on, and it goes somewhere I have never been. She knows that. She would rather not say it, and I would rather she did not.","next_node_id":"menu","trigger_on_enter":"set_flag:knight_named_the_orders"},{"id":"book_again","text":"Names go up. Nothing comes back down. That has been the arrangement for two winters.","next_node_id":"menu"},{"id":"ridge","text":"They stand there in the daylight as well. He only notices at night because at night he is alone with them.","next_node_id":"menu"},{"id":"farewell","text":"Cross in daylight."}]},"template":"splash","sidebar":{"label":"Knight","hidden":true}},{"tags":["kbve-factorio","dispatcher"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[{"trigger":"greeting","lines":["Fleet ready. Where are we sending them?","Every chassis on the board, captain. Your call.","Wheels lubed, fuel topped, drivers alert."]},{"trigger":"mining","lines":["Miners en route. They will fan out on arrival.","Drill bits warm. Ore is borrowed time anyway."]},{"trigger":"defense","lines":["Defenders deployed. They hold or they fall back.","Turrets up. Biters will think twice."]},{"trigger":"combat","lines":["Strike package away. Make it count.","No survivors at the target. Acknowledged."]},{"trigger":"sync","lines":["New chassis registered with the grid.","Headcount updated. The roster is clean."]},{"trigger":"unregistered","lines":["Some vehicles are still off-grid. Run a sync.","I count more cars than transponders. Sync them."]}],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ00000000000000KRESS","ref":"kress","name":"Kress","title":"Kress","description":"Sci-fi fleet dispatcher. Runs the colony's autonomous vehicle grid from a console hub — registration, dispatch, retreat orders. Calm voice, fast hands.\n","type_flags":1,"rarity":1,"personality":10,"rank":0,"family":5,"img":"/assets/npc/kress.png","level":1,"stats":{"hp":30,"max_hp":30,"attack":1,"defense":0,"speed":3,"armor":0},"behavior":{"first_strike":false,"movement_type":0},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Kress","hidden":true},"role":"Fleet Dispatcher"},{"tags":[],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[{"zone":"river","spawn_weight":1}],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KZWMGYHVMYGZBXJ4RAWY6R4F","ref":"lizard-fish","name":"Lizardfish","title":"Lizardfish","description":"A slender river fish that drifts in loose schools through shallow current, catchable with a line from the bank.\n","lore":"Lizardfish hold the slow water behind gravel bars, facing upstream in loose ranks so the current\ndoes the swimming for them. The long jaw and mottled back read as reptilian to anyone who has only\nseen one hauled up on a line, which is where the name comes from and why river folk insist it is\nperfectly good eating despite the look of it. A school breaks apart at a shadow on the water and\nreassembles a few lengths downstream as if nothing happened.\n","type_flags":1,"rarity":0,"personality":11,"element":10,"rank":1,"family":1,"level":1,"stats":{"hp":2,"max_hp":2,"attack":0,"defense":0,"speed":4,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"spatial":{"walk_speed":1.2,"can_swim":true,"can_fly":false},"interaction":{"is_interactable":true,"is_attackable":true,"is_targetable":true},"credits":"KBVE friendslop river fauna.\n","template":"splash","sidebar":{"label":"Lizardfish","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"glint-fang","name":"Glint Fang","description":"A close-quarters strike carrying its element.","element":11,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"sunbeam","name":"Sunbeam","description":"A ranged burst that covers the ground in front of it.","element":11,"mp_cost":8,"hit_chance":1,"category":"special","power":34,"pp":15,"max_pp":15,"target":"enemy"},{"id":"prism-lance","name":"Prism Lance","description":"Everything it has, released at once.","element":11,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Lumipaw lunges at {target} for {dmg} damage!","Lumipaw presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Lumipaw breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N06","ref":"lumipaw","name":"Lumipaw","title":"Lumipaw","description":"Pale lilac and gold, small for an evolved form, and faintly warm to the touch even in cold weather.\n","lore":"The gentlest of the line by a wide margin. It is also the only one recorded as refusing to fight outright, which trainers discover at the worst possible moment.\n","type_flags":16,"rarity":2,"personality":4,"element":11,"rank":2,"family":1,"img":"/assets/npc/lumipaw.png","level":16,"stats":{"hp":66,"max_hp":66,"attack":12,"defense":14,"speed":22,"mp":40,"max_mp":40,"special_attack":26,"special_defense":18,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"glint-fang"},{"level":18,"ability_id":"sunbeam"},{"level":26,"ability_id":"prism-lance"}],"secondary_element":"holy"},"template":"splash","sidebar":{"label":"Lumipaw","hidden":true}},{"tags":["friendslop","bridge","talker"],"abilities":[{"id":"attack","name":"Arcane Bolt","damage":9}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The mage hurls a glowing bolt at {target}! {dmg} damage!","Arcane sigils flare — {target} reels for {dmg} damage!"]},{"action":"death","messages":["The mage's robes burn out as the spellfire flickers and dies."]}],"id":"01KSAVAEF2667PTP0HAG228QA5","ref":"mage","name":"Mage","title":"Mage","description":"Cloth-armoured spellcaster. Light HP, big mana pool, flings ranged spells from the back line.\n","type_flags":1,"rarity":2,"personality":2,"rank":2,"family":5,"level":4,"stats":{"hp":45,"max_hp":45,"attack":9,"defense":4,"speed":4,"max_mp":150,"max_ep":140,"armor":0,"intelligence":17,"strength":6,"agility":9,"mp_regen":4,"ep_regen":4.5,"move_speed":0.65,"max_hunger":150,"max_fatigue":100,"will":15,"hunger_per_sec":0.2375,"fatigue_per_sec":0.28},"unit_type":4,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.mage","behavior":{"first_strike":true,"movement_type":2},"faction":{"faction_id":"player"},"dialogue_tree":{"entry_node_id":"greet","nodes":[{"id":"greet","text":"Not there — I have been counting the water for an hour and your feet are a variable.","next_node_id":"menu","condition":"!seen:greet"},{"id":"greet_again","text":"Mind the marks in the mud.","next_node_id":"menu"},{"id":"menu","text":"Ask quickly. The light is moving.","options":[{"id":"ask_measuring","label":"What are you measuring?","next_node_id":"measuring"},{"id":"tell_boy","label":"The boy on the bank thinks they are waiting for something.","next_node_id":"boy","required_flags":["tam_guessed_the_mechs","!mage_weighed_the_guess"]},{"id":"ask_boy_again","label":"About the boy's guess.","next_node_id":"boy_again","required_flags":["mage_weighed_the_guess"]},{"id":"ask_asked","label":"Have you tried asking them?","next_node_id":"asked"},{"id":"leave","label":"(Walk away.)","next_node_id":"farewell"}]},{"id":"measuring","text":"Where they stand. Not what they are — I gave that up. Where. They pick the same three feet of river every day and I would like to know what is under it.","next_node_id":"menu"},{"id":"boy","text":"The boy is not wrong, and I have spent four years being cleverer than him about it. Waiting is the only word that fits a thing which stands still on purpose.","next_node_id":"menu","trigger_on_enter":"set_flag:mage_weighed_the_guess"},{"id":"boy_again","text":"Tell him I said so, if you like. Tell him I said it slowly.","next_node_id":"menu"},{"id":"asked","text":"Every day for a season. They never refuse. Refusing would be an answer.","next_node_id":"menu"},{"id":"farewell","text":"Go on. You are standing in my light."}]},"template":"splash","sidebar":{"label":"Mage","hidden":true}},{"tags":["friendslop","bridge","talker"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ00000000000000MARLOW","ref":"marlow","name":"Marlow","title":"Marlow","description":"Keeper of the river crossing in Friendslop. Asks a toll for the bridge rather than for himself, watches the mechs come down to the shallows, and knows which plank to mind.\n","type_flags":1,"rarity":0,"personality":4,"rank":0,"family":5,"level":1,"dialogue_tree":{"entry_node_id":"greet","nodes":[{"id":"greet","text":"Careful on the bank — it gives way where the reeds are thickest. Marlow. I keep the crossing.","next_node_id":"menu","condition":"!seen:greet"},{"id":"greet_pestered","text":"Still here, {{player}}. So is the bridge.","next_node_id":"menu","condition":"pestered>=2"},{"id":"greet_known","text":"Welcome back, {{player}}. The crossing hasn't moved.","next_node_id":"menu","condition":"respect>=2"},{"id":"greet_again","text":"Back again, {{player}}. The crossing hasn't moved.","next_node_id":"menu"},{"id":"menu","text":"Ask, then. The river isn't going anywhere either.","options":[{"id":"ask_bridge","label":"Who built this bridge?","next_node_id":"bridge"},{"id":"ask_river","label":"What lives in the river?","next_node_id":"river"},{"id":"ask_toll","label":"You want a toll, don't you.","next_node_id":"toll","required_flags":["!marlow_toll_paid"]},{"id":"ask_mechs","label":"What are those walking machines?","next_node_id":"mechs","required_flags":["marlow_toll_paid"]},{"id":"take_the_crossing","label":"Is there anything the crossing needs?","next_node_id":"crossing_work"},{"id":"leave","label":"(Walk away.)","next_node_id":"farewell"}]},{"id":"bridge","text":"Nobody living. It was here before the road was, and the road came before us.","next_node_id":"menu"},{"id":"river","text":"Fish, mostly. Something bigger in the deep bend, though I've only seen the wake.","next_node_id":"menu","trigger_on_enter":"set_flag:marlow_knows_river"},{"id":"crossing_work","text":"It needs what it always needs. Somebody to pay it something, and somebody to mind the third plank.","next_node_id":"menu","trigger_on_enter":"quest_start:friendslop-third-plank"},{"id":"toll","text":"A toll. Not for me — for the bridge. It keeps standing as long as someone still pays it something.","options":[{"id":"pay","label":"Pay the toll.","next_node_id":"toll_paid","set_flag":"marlow_toll_paid"},{"id":"refuse","label":"I'll wade instead.","next_node_id":"toll_refused"}]},{"id":"toll_paid","text":"Kind of you. Cross whenever you like, and mind the third plank.","next_node_id":"menu"},{"id":"toll_refused","text":"Suit yourself. The water's colder than it looks.","next_node_id":"menu"},{"id":"mechs","text":"The tall ones? They come down from the ridge and stand in the shallows. Never cross. Never explain.","next_node_id":"menu"},{"id":"farewell","text":"Go on, then. The bank's yours as much as mine.","condition":"!marlow_toll_paid"},{"id":"farewell_paid","text":"Safe crossing. Third plank."}]},"template":"splash","sidebar":{"label":"Marlow","hidden":true},"role":"Bridge Keeper"},{"tags":[],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[{"zone":"grassland","spawn_weight":0.55}],"phase_rules":[{"time_start":1900,"time_end":530}],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KKWBVKEK4SR70NMKE1SST5H4","ref":"meadow-firefly","name":"Meadow Firefly","title":"Meadow Firefly","description":"A tiny luminescent spirit that drifts through grasslands at night, pulsing with a soft green glow.\n","lore":"Meadow Fireflies are gentle spirits of fading starlight, drawn to open grasslands after dusk.\nTheir synchronized double-pulse glow has inspired countless folk tales about fairy lanterns\nguiding lost travelers home.\n","type_flags":1,"rarity":0,"personality":11,"element":11,"rank":1,"family":10,"level":1,"stats":{"hp":1,"max_hp":1,"attack":0,"defense":0,"speed":3,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"spatial":{"walk_speed":0.7,"can_fly":true},"creature_config":{"render_kind":3,"pool_size":80,"chunk_size":12,"per_chunk":3,"spawn_chance":0.55,"schedule":3},"credits":"KBVE Isometric ambient creature system.\n","template":"splash","sidebar":{"label":"Meadow Firefly","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"static-bite","name":"Static Bite","description":"Chomps down with electrified jaws; may paralyze.","element":3,"damage":15,"hit_chance":0.95,"status_effect":"paralyze","category":"physical","power":15,"pp":25,"max_pp":25,"status_chance":0.2,"high_crit":true,"target":"enemy"},{"id":"spark-bark","name":"Spark Bark","description":"A cone of crackling sound and sparks.","element":3,"mp_cost":5,"hit_chance":1,"status_effect":"paralyze","category":"special","power":18,"pp":20,"max_pp":20,"status_chance":0.3,"target":"enemy"},{"id":"overclock","name":"Overclock","description":"Floods the servos with current, spiking speed.","category":"status","pp":10,"max_pp":10,"target":"self","stat_changes":[{"stat":"speed","stages":2,"target":"self"},{"stat":"attack","stages":1,"target":"self"}]},{"id":"plate-up","name":"Plate Up","description":"Clamps scavenged plating over vital servos.","heal_amount":8,"category":"status","pp":15,"max_pp":15,"target":"self","stat_changes":[{"stat":"defense","stages":1,"target":"self"},{"stat":"special_defense","stages":1,"target":"self"}]}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Mechamutt lunges with a joyful electric yip — {target} takes {dmg} damage!","Servos whir as Mechamutt slams into {target} for {dmg} damage!"]},{"action":"flee","messages":["Mechamutt's antenna droops, and it skitters off on clattering paws!"]},{"action":"wounded","messages":["*Sparks leak from Mechamutt's seams, but its tail keeps wagging.*"]},{"action":"near_death","messages":["*Mechamutt's optics flicker red. One more hit and the lights go out.*"]},{"action":"caught","messages":["Mechamutt powers down with a contented chirp — caught!"]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N01","ref":"mechamutt","name":"Mechamutt","title":"Mechamutt","description":"A scrappy salvage-built robot dog with a wagging antenna tail and a bark that crackles with static.\n","lore":"Nobody built Mechamutt on purpose. It assembled itself out of a junkyard's worth of broken drones, decided a passing scavenger was its owner, and has followed the scent of fresh scrap ever since. Loyal to a fault, terrified of magnets.\n","type_flags":16,"rarity":1,"personality":7,"element":3,"rank":0,"family":6,"img":"/assets/npc/mechamutt.png","level":5,"stats":{"hp":45,"max_hp":45,"attack":9,"defense":7,"speed":11,"mp":20,"max_mp":20,"special_attack":12,"special_defense":8,"accuracy":100,"evasion":100,"crit_rate":5,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"loot":{"entries":[{"item_ref":"scrap-metal","min_quantity":1,"max_quantity":3,"drop_rate":0.4},{"item_ref":"spare-battery","min_quantity":1,"max_quantity":1,"drop_rate":0.15}],"max_drops":2,"gold_min":3,"gold_max":9,"xp_reward":40},"spatial":{"walk_speed":3.2,"run_speed":5,"can_swim":false,"can_fly":false},"interaction":{"is_interactable":true,"is_attackable":true,"is_targetable":true},"pet":{"catchable":true,"capture_rate":120,"growth_rate":"medium_fast","base_xp_yield":64,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"spark-bark"},{"level":8,"ability_id":"static-bite"},{"level":12,"ability_id":"plate-up"},{"level":16,"ability_id":"overclock"}],"secondary_element":"earth"},"credits":"By Screen Smith\n","template":"splash","sidebar":{"label":"Mechamutt","hidden":true}},{"tags":["friendslop","bridge","talker"],"abilities":[{"id":"attack","name":"Pouch Swing","damage":1}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The merchant swings a coin-laden purse at {target}! {dmg} damage!"]},{"action":"death","messages":["Coins clatter across the cobbles as the merchant falls."]}],"id":"01KSAVZ000000000000000MRCH","ref":"merchant","name":"Merchant","title":"Merchant","description":"Civilian humanoid trader. Flat cap, coin pouch. No combat role; used as the visual base for Innkeepers (one per Inn, swapped per tier). Future Caravan/Bazaar AI will reuse this body.\n","type_flags":1,"rarity":0,"personality":10,"rank":0,"family":5,"level":1,"stats":{"hp":30,"max_hp":30,"attack":1,"defense":0,"speed":3,"max_ep":80,"armor":0,"intelligence":12,"strength":6,"agility":8,"ep_regen":4,"move_speed":0.6,"max_hunger":150,"max_fatigue":100,"will":10,"hunger_per_sec":0.3,"fatigue_per_sec":0.18},"unit_type":9,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.merchant","behavior":{"first_strike":false,"movement_type":2},"faction":{"faction_id":"player"},"dialogue_tree":{"entry_node_id":"greet","nodes":[{"id":"greet","text":"Cart on this side, buyer on that side, and a man in between who wants a coin for the privilege.","next_node_id":"menu","condition":"!seen:greet"},{"id":"greet_again","text":"Still here. Still on the wrong side.","next_node_id":"menu"},{"id":"menu","text":"Something you need, or are you only passing?","options":[{"id":"ask_cart","label":"Why not take the cart over?","next_node_id":"cart"},{"id":"tell_toll","label":"I paid Marlow's toll.","next_node_id":"toll","required_flags":["marlow_toll_paid","!merchant_heard_the_toll"]},{"id":"ask_toll_again","label":"You'll pay it eventually.","next_node_id":"toll_again","required_flags":["merchant_heard_the_toll"]},{"id":"ask_road","label":"Where did you come in from?","next_node_id":"road"},{"id":"ask_wares","label":"What are you carrying?","next_node_id":"wares"},{"id":"leave","label":"(Walk away.)","next_node_id":"farewell"}]},{"id":"cart","text":"The third plank. He tells everyone to mind it. I have to do more than mind it — I have to put a loaded axle over it.","next_node_id":"menu"},{"id":"toll","text":"Then you are a better customer than I am a merchant. He charges a man his own weight and the cart its own besides.","next_node_id":"menu","trigger_on_enter":"set_flag:merchant_heard_the_toll"},{"id":"toll_again","text":"Eventually. When the ford runs low, or when he stops looking.","next_node_id":"menu"},{"id":"road","text":"Down the ridge road, and I would not go back up it after dark. There are things standing along it that were not standing there in the morning.","next_node_id":"menu","trigger_on_enter":"set_flag:merchant_named_the_ridge_road"},{"id":"wares","text":"Salt, wire, lamp oil, needles. Nothing anybody wants until the day they want it very badly.","next_node_id":"menu"},{"id":"farewell","text":"If you are crossing, tell him the cart is still waiting."}]},"shop_items":["potion","elixir","swift-tonic","iron-sword","iron-shield"],"template":"splash","sidebar":{"label":"Merchant","hidden":true}},{"tags":["kbve-factorio","logistics"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[{"trigger":"greeting","lines":["Convoys rolling, manifests clean. How can I help?","Routes are short today — fewer biters on the south road.","Pickup, dropoff, repeat. Easy job. Mostly."]},{"trigger":"deposit","lines":["Manifest closed. Numbers match.","Trunk empty. Next run on the board."]}],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ000000000000000MIRA","ref":"mira","name":"Mira","title":"Mira","description":"Sci-fi logistics officer. Runs the hauler ring — what loads where, when, and in what order. Has a soft spot for clean spreadsheets and full cargo holds.\n","type_flags":1,"rarity":1,"personality":7,"rank":0,"family":5,"img":"/assets/npc/mira.png","level":1,"stats":{"hp":30,"max_hp":30,"attack":1,"defense":1,"speed":3,"armor":0},"behavior":{"first_strike":false,"movement_type":0},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Mira","hidden":true},"role":"Logistics Officer"},{"tags":["cryptothrone","cloud-city"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[{"trigger":"greeting","lines":["Peace, traveler. The path to the throne is long.","Patience and wisdom will serve you well."]}],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ000000000000000MONK","ref":"monk","name":"Elder Monk","title":"Elder Monk","description":"A serene keeper of the old ways. Meditates near the plaza shrine and offers travelers patience, wisdom, and the occasional cryptic hint about the road to the throne.\n","type_flags":1,"rarity":0,"personality":4,"rank":0,"family":5,"img":"/assets/entity/monks.png","sprite_atlas":{"atlas_ref":"monks","columns":8,"rows":1,"cell_width":52,"cell_height":72,"row_front":0,"row_side":0,"row_back":0,"world_width":24,"world_height":33,"clips":[{"anim":"idle","row":0,"start_frame":0,"frame_count":1,"fps":1}]},"level":1,"stats":{"hp":30,"max_hp":30,"attack":1,"defense":2,"speed":1,"armor":1},"behavior":{"first_strike":false,"movement_type":0},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Elder Monk","hidden":true},"role":"Shrine Keeper"},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"thorn-lash","name":"Thorn Lash","description":"A close-quarters strike carrying its element.","element":10,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"pollen-storm","name":"Pollen Storm","description":"A ranged burst that covers the ground in front of it.","element":10,"mp_cost":8,"hit_chance":1,"status_effect":"poison","category":"special","power":34,"pp":15,"max_pp":15,"status_chance":0.25,"target":"enemy"},{"id":"overgrowth","name":"Overgrowth","description":"Everything it has, released at once.","element":10,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Mossantler lunges at {target} for {dmg} damage!","Mossantler presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Mossantler breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N10","ref":"mossantler","name":"Mossantler","title":"Mossantler","description":"Green and heavily overgrown, with a rack of living foliage that flowers in season.\n","lore":"Old ones become difficult to distinguish from the thicket they are standing in, which is thought to be the point. Deeply territorial about ground it has personally grown.\n","type_flags":16,"rarity":2,"personality":4,"element":10,"rank":2,"family":1,"img":"/assets/npc/mossantler.png","level":16,"stats":{"hp":88,"max_hp":88,"attack":18,"defense":26,"speed":12,"mp":40,"max_mp":40,"special_attack":14,"special_defense":24,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"thorn-lash"},{"level":18,"ability_id":"pollen-storm"},{"level":26,"ability_id":"overgrowth"}],"secondary_element":"earth"},"template":"splash","sidebar":{"label":"Mossantler","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Spore Burst","damage":4}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Mushroom Sprite bounces off a wall and headbutts {target}! {dmg} damage!","A puff of toxic spores erupts as the sprite slams into {target}! {dmg} damage!","The sprite giggles — a wet, gurgling sound — and body-checks {target}! {dmg} damage!"]},{"action":"debuff","messages":["The Mushroom Sprite releases a thick cloud of glowing spores! {target} chokes on {effect}!","Tiny mushrooms sprout where the sprite touches {target}. {effect} takes hold!"]},{"action":"death","messages":["The Mushroom Sprite pops like a cork, releasing one final cloud of harmless spores.","It deflates with a sad little wheeze and crumbles into compost."]},{"action":"wounded","messages":["*The sprite's cap is dented. Spore dust leaks from the cracks.*"]},{"action":"near_death","messages":["*The Mushroom Sprite wobbles drunkenly, its cap nearly split in half.*"]}],"id":"01KKR5QWTAJEKFBFF31JNDW8Q9","ref":"mushroom-sprite","name":"Mushroom Sprite","title":"Mushroom Sprite","description":"A tiny fungal creature that bounces erratically, releasing clouds of irritating spores.\n","lore":"Mushroom Sprites are animated by deep earth magic, tending underground fungal gardens when not disturbed.\n","type_flags":1,"rarity":1,"personality":5,"element":4,"rank":2,"family":9,"level":1,"stats":{"hp":18,"max_hp":18,"attack":4,"defense":0,"speed":4,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"loot":{"entries":[{"item_ref":"potion","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"rations","min_quantity":1,"max_quantity":1,"drop_rate":0.18},{"item_ref":"vitality-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.06},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.06}],"max_drops":1,"gold_min":3,"gold_max":8,"xp_reward":15},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Mushroom Sprite","hidden":true}},{"tags":[],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSR8C4R81VPD7J5CH6VEGTJP","ref":"nd-enemy-runner","name":"Runner","title":"Nexus Defense — Runner","description":"Fast, fragile basic enemy for Nexus Defense. Walks the lane from the spawn point toward the player's Nexus and dies in a couple of tower volleys. Drops a flat gold bounty on death.\n","type_flags":1,"rarity":0,"personality":1,"rank":0,"family":5,"level":1,"stats":{"hp":50,"max_hp":50,"attack":1,"defense":0,"speed":60,"armor":0},"faction":{"faction_id":"daemoncorps"},"loot":{"gold_min":8,"gold_max":8},"drafted":false,"template":"splash","sidebar":{"label":"Runner","hidden":true}},{"tags":[],"abilities":[{"id":"charge","name":"Phantom Charge"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Phantom Knight charges through a pillar and swings at {target}! {dmg} damage!","\"FOR THE FALLEN!\" The knight's spectral blade cleaves through {target}! {dmg} damage!","Ghostly hooves thunder as the knight rides down {target}! {dmg} damage!"]},{"action":"charge","messages":["The Phantom Knight raises its banner high. The air crackles with ghostly war drums!","\"STEEL YOURSELVES!\" The knight's form blazes with spectral fire as it prepares to charge!"]},{"action":"defend","messages":["The Phantom Knight plants a ghostly shield. The emblem on it glows with forgotten honor. (+{armor} armor)"]},{"action":"death","messages":["The Phantom Knight salutes — a reflex from a life long ended — and fades like morning mist.","Its spectral armor clatters to the ground, piece by piece, until nothing remains.","\"The battle... is finally over...\" The knight kneels, and is gone."]},{"action":"wounded","messages":["*The knight's spectral form wavers. Through the gaps you glimpse the battlefield where it died.*"]},{"action":"near_death","messages":["*\"I will NOT retreat again!\" The Phantom Knight's voice cracks with ancient grief.*"]}],"id":"01KKR5QWTB1TRDD9W2D6MFNME5","ref":"phantom-knight","name":"Phantom Knight","title":"Phantom Knight","description":"The ghost of a fallen knight that charges through the battlefield, armor clanking with otherworldly echoes.\n","lore":"Phantom Knights died in battles they believed unjust, and now fight an eternal war against all who cross their path.\n","type_flags":1,"rarity":2,"personality":1,"element":5,"rank":2,"family":10,"level":3,"stats":{"hp":28,"max_hp":28,"attack":8,"defense":4,"speed":5,"armor":4},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"shadow-court"},"loot":{"entries":[{"item_ref":"ward","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"campfire-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"rage-draught","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"phoenix-feather","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"antidote","min_quantity":1,"max_quantity":1,"drop_rate":0.17},{"item_ref":"smoke-bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.08}],"max_drops":2,"gold_min":8,"gold_max":18,"xp_reward":50},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Phantom Knight","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Cannon Volley","damage":6}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The pirate ship looses a ragged volley! {target} takes {dmg} damage!","A jeering crew fires from the deck — {target} reels for {dmg} damage!"]},{"action":"death","messages":["The pirate ship lists badly, then slips beneath the waves with its haul."]}],"id":"01KSAVQR3VN6ZE4AVMV0V4Z6BV","ref":"pirate-ship","name":"Pirate Ship","title":"Pirate Ship","description":"Hostile coastal raider. PirateCove-spawned via PirateCoveRaidSystem; water-locked, arrow attack, slightly weaker than the player Galley but spawned in waves. The ocean sister to the Bandit raid line.\n","type_flags":1,"rarity":1,"personality":1,"rank":2,"family":5,"level":4,"stats":{"hp":120,"max_hp":120,"attack":6,"defense":3,"speed":4,"armor":1,"intelligence":5,"strength":14,"agility":10,"move_speed":0.55,"will":10},"unit_type":20,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.pirate_ship","behavior":{"first_strike":false,"movement_type":2},"faction":{"faction_id":"hostile"},"template":"splash","sidebar":{"label":"Pirate Ship","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"warp-claw","name":"Warp Claw","description":"A close-quarters strike carrying its element.","element":7,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"mana-burst","name":"Mana Burst","description":"A ranged burst that covers the ground in front of it.","element":7,"mp_cost":8,"hit_chance":1,"category":"special","power":34,"pp":15,"max_pp":15,"target":"enemy"},{"id":"unmaking","name":"Unmaking","description":"Everything it has, released at once.","element":7,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Prismawing lunges at {target} for {dmg} damage!","Prismawing presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Prismawing breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N19","ref":"prismawing","name":"Prismawing","title":"Prismawing","description":"Magenta and crystalline, with broad scaled wings that throw coloured light across the ground.\n","lore":"The most fragile form and the most valuable, for reasons that have more to do with collectors than with combat.\n","type_flags":16,"rarity":2,"personality":4,"element":7,"rank":2,"family":1,"img":"/assets/npc/prismawing.png","level":16,"stats":{"hp":66,"max_hp":66,"attack":12,"defense":14,"speed":22,"mp":40,"max_mp":40,"special_attack":26,"special_defense":18,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"warp-claw"},{"level":18,"ability_id":"mana-burst"},{"level":26,"ability_id":"unmaking"}],"secondary_element":"light"},"template":"splash","sidebar":{"label":"Prismawing","hidden":true}},{"tags":["kbve-factorio","combat"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[{"trigger":"greeting","lines":["Reno. What is dying today?","Lieutenant on station. Awaiting orders.","Walls hold or we move outward. Your call."]},{"trigger":"rally","lines":["On me. Tight wedge. Move.","Hold the line — fall back on my mark, not before."]}],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ000000000000000RENO","ref":"reno","name":"Reno","title":"Reno","description":"Sci-fi combat lieutenant. Coordinates the colony's response force when biters breach the wall. Loud, blunt, and effective. Treats every alarm like the last one.\n","type_flags":1,"rarity":1,"personality":1,"rank":2,"family":5,"img":"/assets/npc/reno.png","level":2,"stats":{"hp":60,"max_hp":60,"attack":8,"defense":3,"speed":4,"armor":2},"behavior":{"first_strike":true,"movement_type":2},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Reno","hidden":true},"role":"Combat Lieutenant"},{"tags":[],"abilities":[{"id":"attack","name":"Twin Strike","damage":9}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The rogue slips behind {target} — twin daggers flash! {dmg} damage!","{target} catches a blade between the ribs — {dmg} damage!"]},{"action":"death","messages":["The rogue staggers, cloak settling over the still form."]}],"id":"01KSAVZ000000000000000ROGE","ref":"rogue","name":"Rogue","title":"Rogue","description":"Player melee skirmisher. Dual-dagger, dark cloak, face scarf. Fast and high-attack but glassy — picks off stragglers, dies fast in line combat.\n","type_flags":1,"rarity":1,"personality":2,"rank":0,"family":5,"level":3,"stats":{"hp":45,"max_hp":45,"attack":9,"defense":1,"speed":6,"max_ep":130,"armor":0,"intelligence":9,"strength":11,"agility":16,"ep_regen":7,"move_speed":0.95,"max_hunger":130,"max_fatigue":90,"will":8,"hunger_per_sec":0.3,"fatigue_per_sec":0.22},"unit_type":7,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.rogue","behavior":{"first_strike":true,"movement_type":4},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Rogue","hidden":true}},{"tags":["friendslop","bridge","talker"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ00000000000000SABLE","ref":"sable","name":"Sable","title":"Sable","description":"Keeps the road on the ridge side of the Friendslop crossing and writes down who uses it. Will not say what she is recording for, and notices what you have already been told.\n","type_flags":1,"rarity":0,"personality":8,"rank":0,"family":5,"level":1,"dialogue_tree":{"entry_node_id":"greet","nodes":[{"id":"greet","text":"Name goes in the book whether you give it or not. Easier if you give it.","next_node_id":"menu","condition":"!seen:greet"},{"id":"greet_again","text":"You're in the book already.","next_node_id":"menu"},{"id":"menu","text":"Well.","options":[{"id":"ask_book","label":"What's the book for?","next_node_id":"book"},{"id":"ask_road","label":"Where does the road go?","next_node_id":"road"},{"id":"tell_bend","label":"There's an old fish in the deep bend.","next_node_id":"bend","required_flags":["wren_named_the_bend","!sable_wrote_the_fish"]},{"id":"ask_toll","label":"Marlow takes a toll for the bridge.","next_node_id":"toll","required_flags":["marlow_toll_paid"]},{"id":"leave","label":"(Walk away.)","next_node_id":"farewell"}]},{"id":"book","text":"Who crosses, and when, and which way. I don't decide what it's for. I only keep it accurate.","next_node_id":"menu","trigger_on_enter":"set_flag:sable_showed_the_book"},{"id":"road","text":"Up the ridge, and then further than I have been. The mechs come down it and go back up it, so it goes somewhere.","next_node_id":"menu"},{"id":"bend","text":"The forager told you that. She's the only one who says it out loud.","next_node_id":"bend_written","trigger_on_enter":"set_flag:sable_wrote_the_fish"},{"id":"bend_written","text":"It goes in the book. Most things do.","next_node_id":"menu"},{"id":"toll","text":"He's kept that bridge standing on small coins for longer than the road has been worth walking. Say what you like about the toll.","next_node_id":"menu"},{"id":"farewell","text":"Mind the ridge after dark."}]},"template":"splash","sidebar":{"label":"Sable","hidden":true},"role":"Road Warden"},{"tags":[],"abilities":[{"id":"attack","name":"Quick Strike","damage":3}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The scout darts in with a quick jab! {target} takes {dmg} damage!"]},{"action":"death","messages":["The scout falls quietly, mapping notes scattering on the wind."]}],"id":"01KSAVJ63XB5GY5MNA969VNW61","ref":"scout","name":"Scout","title":"Scout","description":"Player recon unit. Fast, light, no weapon — vision radius 3 (vs default 1) feeds FogBakeSystem so the player explores fog of war faster. Recruited from Barracks for 5 Coin + 2 Timber.\n","type_flags":1,"rarity":0,"personality":2,"rank":0,"family":5,"level":1,"stats":{"hp":35,"max_hp":35,"attack":3,"defense":2,"speed":6,"max_ep":120,"armor":0,"intelligence":9,"strength":6,"agility":16,"ep_regen":6,"move_speed":0.95,"will":7},"unit_type":21,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.scout","behavior":{"first_strike":false,"movement_type":2},"faction":{"faction_id":"player"},"equipment":{"equipped":[{"slot":1,"item_ref":"hood"},{"slot":2,"item_ref":"leather"}]},"template":"splash","sidebar":{"label":"Scout","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Shadow Strike","damage":8}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Shade Stalker materializes behind {target} and drives a spectral blade home! {dmg} damage!","\"You never saw me.\" A cold slash opens across {target}'s back. {dmg} damage.","Shadows ripple and {target} staggers — the Stalker struck from nowhere. {dmg} damage."]},{"action":"defend","messages":["The Shade Stalker dissolves into the shadows, watching and waiting. (+{armor} armor)"]},{"action":"flee","messages":["The Shade Stalker melts into the darkness. You hear a whisper: \"Next time.\"","It was there. Now it isn't. Only the chill remains."]},{"action":"death","messages":["The Shade Stalker's form unravels like smoke. Its last words: \"The hunt... ends...\"","Shadow pours from its wounds like ink. The Stalker fades, finally at rest."]},{"action":"wounded","messages":["*The Stalker's form flickers. For the first time, it looks uncertain.*"]},{"action":"near_death","messages":["*The Shade Stalker can barely hold its shape. It phases in and out, desperate.*"]}],"id":"01KKR5QWTBAF71Q1NJTD7RZKEW","ref":"shade-stalker","name":"Shade Stalker","title":"Shade Stalker","description":"A dark figure that moves between shadows, striking before its prey even knows it is there.\n","lore":"Shade Stalkers are remnants of assassins who died mid-hunt, their killing intent crystallized into spectral form.\n","type_flags":1,"rarity":2,"personality":2,"element":5,"rank":2,"family":10,"level":2,"stats":{"hp":20,"max_hp":20,"attack":8,"defense":1,"speed":8,"armor":1},"behavior":{"first_strike":true,"movement_type":1},"faction":{"faction_id":"shadow-court"},"loot":{"entries":[{"item_ref":"bandage","min_quantity":1,"max_quantity":1,"drop_rate":0.27},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"fire-flask","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"iron-skin-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"trap-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.13}],"max_drops":1,"gold_min":5,"gold_max":12,"xp_reward":30},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Shade Stalker","hidden":true}},{"tags":[],"abilities":[{"id":"heavy-attack","name":"Death Scythe","damage":12}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Shadow Wraith's claws pass through {target}'s guard like it isn't there! {dmg} damage!","Darkness coalesces into a fist and slams into {target}! {dmg} damage!","The wraith whispers something hateful and {target} reels from an unseen blow! {dmg} damage!"]},{"action":"heavy_attack","messages":["The Shadow Wraith screams — a sound that scrapes the inside of your skull — and tears into {target}! {dmg} damage!","The wraith's entire form surges forward, engulfing {target} in freezing darkness! {dmg} damage!"]},{"action":"defend","messages":["The wraith's form thins to near-transparency. Attacks pass through harmlessly. (+{armor} armor)"]},{"action":"death","messages":["The Shadow Wraith unravels like a torn curtain, its malice dissipating into cold air.","It reaches toward {target} one last time, then dissolves. The room grows warmer."]},{"action":"wounded","messages":["*The wraith flickers. Its hunger is now tinged with something like desperation.*"]},{"action":"near_death","messages":["*The Shadow Wraith is barely a stain on the air. Its hatred is the only thing holding it together.*"]}],"id":"01KKR5QWTBF2XX7BG384X7V5V1","ref":"shadow-wraith","name":"Shadow Wraith","title":"Shadow Wraith","description":"A ghostly figure that phases through walls, delivering devastating blows from the darkness.\n","lore":"Shadow Wraiths are formed from concentrated malice, hunting the living to feed their insatiable hunger.\n","type_flags":1,"rarity":2,"personality":2,"element":5,"rank":2,"family":10,"level":3,"stats":{"hp":25,"max_hp":25,"attack":12,"defense":2,"speed":7,"armor":2},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"shadow-court"},"loot":{"entries":[{"item_ref":"ward","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"campfire-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"rage-draught","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"phoenix-feather","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"antidote","min_quantity":1,"max_quantity":1,"drop_rate":0.17},{"item_ref":"smoke-bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.08}],"max_drops":2,"gold_min":8,"gold_max":18,"xp_reward":50},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Shadow Wraith","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Headbutt","damage":1}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"death","messages":["The sheep crumples mid-bleat."]}],"id":"01KSAVAAWG80N798A1T6G6E9MD","ref":"sheep","name":"Sheep","title":"Sheep","description":"Passive grazing livestock. Slow, harmless. Drops Wool / Meat when killed; herds farm Migration events spawn flocks.\n","type_flags":1,"rarity":0,"personality":3,"rank":0,"family":1,"level":1,"stats":{"hp":20,"max_hp":20,"attack":1,"defense":0,"speed":2,"armor":0,"intelligence":2,"strength":3,"agility":5,"move_speed":0.35,"will":2},"unit_type":11,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.sheep","behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"wildlife"},"template":"splash","sidebar":{"label":"Sheep","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Shibe throws itself at {target} for {dmg} damage!","Shibe nips {target} for {dmg} damage and looks pleased about it!"]},{"action":"flee","messages":["Shibe decides this was never its problem and trots off."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N03","ref":"shibe","name":"Shibe","title":"Shibe","description":"A small tan-and-cream dog with a curled tail and an expression of total, unearned confidence. Common on every road and in most doorways.\n","lore":"The most-caught pet in the world and the least predictable one to raise. A shibe is a shibe until the day it is given a shard, a core, a plume or a cap — and then it is one of eighteen things, permanently, with no way back and no second choice. Handlers argue endlessly about which form is best and quietly agree that the argument is the appeal. Nobody has managed to make one evolve twice.\n","type_flags":16,"rarity":0,"personality":7,"element":0,"rank":0,"family":1,"img":"/assets/npc/shibe.png","level":5,"stats":{"hp":42,"max_hp":42,"attack":12,"defense":10,"speed":14,"mp":20,"max_mp":20,"special_attack":11,"special_defense":10,"accuracy":100,"evasion":100,"crit_rate":5,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":190,"growth_rate":"medium_fast","base_xp_yield":62,"base_friendship":80,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"}],"evolutions":[{"evolves_to_ref":"voidmaw","item_ref":"umbral-shard"},{"evolves_to_ref":"verdanwing","item_ref":"verdant-plume"},{"evolves_to_ref":"lumipaw","item_ref":"dawn-prism"},{"evolves_to_ref":"glacierfang","item_ref":"glacial-core"},{"evolves_to_ref":"blazeruff","item_ref":"ember-shard"},{"evolves_to_ref":"stormcoat","item_ref":"storm-cell"},{"evolves_to_ref":"mossantler","item_ref":"mossy-antler"},{"evolves_to_ref":"direhowl","item_ref":"dire-fang"},{"evolves_to_ref":"duskwing","item_ref":"dusk-feather"},{"evolves_to_ref":"emberstripe","item_ref":"cinder-brand"},{"evolves_to_ref":"mechamutt","item_ref":"cyber-core"},{"evolves_to_ref":"aurelight","item_ref":"seraph-bell"},{"evolves_to_ref":"aetherfang","item_ref":"aether-shard"},{"evolves_to_ref":"grimclaw","item_ref":"grim-sigil"},{"evolves_to_ref":"sporecap","item_ref":"spore-cap"},{"evolves_to_ref":"prismawing","item_ref":"prism-wing"},{"evolves_to_ref":"solmane","item_ref":"sun-mane"},{"evolves_to_ref":"frostfang","item_ref":"frost-fang"}]},"template":"splash","sidebar":{"label":"Shibe","hidden":true}},{"tags":["herbmail","player","sidekick","base-character"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ000000000000000SDKK","ref":"sidekick","name":"Sidekick","title":"Sidekick","description":"The base human character used across herbmail-game — both the player avatar and the template every humanoid NPC is built from. A SIDEKICK modular skin body wearing removable knight armor over its underwear layer.\n","type_flags":1,"rarity":2,"personality":10,"rank":0,"family":5,"level":1,"stats":{"hp":100,"max_hp":100,"attack":5,"defense":5,"speed":5,"armor":3},"behavior":{"first_strike":false,"movement_type":2},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Sidekick","hidden":true},"role":"Base Character / Player Avatar"},{"tags":["kbve-factorio","bank"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[{"trigger":"greeting","lines":["Your vault is sealed and surveyed.","I keep what dies with you — and what does not.","Eight by eight, give or take. Pack tight."]},{"trigger":"deposit","lines":["Tucked away. Safer with me than with you.","Counted twice. Logged twice."]}],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ000000000000000SILA","ref":"sila","name":"Sila","title":"Sila","description":"Sci-fi vault keeper. Catalogs and seals personal lockers in the colony bank. Polite but cold; she has counted every gram of metal that crosses the threshold.\n","type_flags":1,"rarity":1,"personality":4,"rank":0,"family":5,"img":"/assets/npc/sila.png","level":1,"stats":{"hp":30,"max_hp":30,"attack":1,"defense":0,"speed":3,"armor":0},"behavior":{"first_strike":false,"movement_type":0},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Sila","hidden":true},"role":"Vault Keeper"},{"tags":[],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAV00000000000000000024","ref":"skeleton","name":"Skeleton","title":"Skeleton","description":"undead unit. Migrated from NPCDB compiled table.","type_flags":1,"rarity":0,"personality":4,"rank":0,"family":2,"level":1,"stats":{"hp":35,"max_hp":35,"attack":4,"defense":1,"speed":2,"armor":0,"intelligence":2,"strength":9,"agility":9,"move_speed":0.45,"will":4},"unit_type":24,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.skeleton","faction":{"faction_id":"hostile"},"template":"splash","sidebar":{"label":"Skeleton","hidden":true}},{"tags":[],"abilities":[{"id":"defend","name":"Shield Wall","damage":5}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Skeleton Guard thrusts its rusted sword at {target} with mechanical precision. {dmg} damage.","Bones rattle as the guard delivers a disciplined strike to {target}. {dmg} damage.","The guard steps forward and swings. No wasted motion. {dmg} damage to {target}."]},{"action":"defend","messages":["The Skeleton Guard plants its shield and holds the line. (+{armor} armor)","It raises a dented shield without urgency. This is just another watch. (+{armor} armor)"]},{"action":"death","messages":["The Skeleton Guard's jawbone drops. The rest follows, clattering to the floor in a heap of old bones.","Its eye sockets dim. The guard collapses, armor and all, finally relieved of duty.","The bones scatter as if the oath holding them together has finally been fulfilled."]},{"action":"wounded","messages":["*A rib cracks loose and falls to the ground. The guard doesn't flinch.*"]},{"action":"near_death","messages":["*The Skeleton Guard is missing half its ribcage. It fights on regardless.*"]}],"id":"01KKR5QWTAEV48Y4WK51JWBXTX","ref":"skeleton-guard","name":"Skeleton Guard","title":"Skeleton Guard","description":"A reanimated skeleton clad in rusted armor, standing eternal watch over dusty corridors.\n","lore":"Skeleton Guards are bound by ancient oaths that persist beyond death, endlessly patrolling their designated posts.\n","type_flags":1,"rarity":1,"personality":4,"rank":2,"family":2,"level":2,"stats":{"hp":30,"max_hp":30,"attack":5,"defense":5,"speed":3,"armor":3},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"deep-wardens"},"loot":{"entries":[{"item_ref":"bandage","min_quantity":1,"max_quantity":1,"drop_rate":0.27},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"fire-flask","min_quantity":1,"max_quantity":1,"drop_rate":0.13},{"item_ref":"iron-skin-potion","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"trap-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.07},{"item_ref":"whetstone","min_quantity":1,"max_quantity":1,"drop_rate":0.13}],"max_drops":1,"gold_min":5,"gold_max":12,"xp_reward":30},"equipment":{"equipped":[{"slot":6,"item_ref":"rusty-sword"},{"slot":7,"item_ref":"wooden-shield"},{"slot":1,"item_ref":"hood"}]},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Skeleton Guard","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Sword Strike","damage":6}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The soldier strikes with disciplined precision! {dmg} damage to {target}!","A trained swing finds its mark on {target}. {dmg} damage!"]},{"action":"death","messages":["The soldier falls in formation, banner still gripped tight."]}],"id":"01KSAVJJEH5P7XCW5ZRTA6YR4N","ref":"soldier","name":"Soldier","title":"Soldier","description":"Standard Player infantry. Balanced stats, the workhorse of every Barracks roster.\n","type_flags":1,"rarity":0,"personality":4,"rank":0,"family":5,"level":2,"stats":{"hp":70,"max_hp":70,"attack":6,"defense":2,"speed":5,"max_ep":200,"armor":2,"intelligence":9,"strength":12,"agility":12,"ep_regen":7,"move_speed":0.8,"max_hunger":180,"max_fatigue":110,"will":9,"hunger_per_sec":0.285,"fatigue_per_sec":0.2},"unit_type":3,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.soldier","behavior":{"first_strike":false,"movement_type":2},"faction":{"faction_id":"player"},"equipment":{"equipped":[{"slot":7,"item_ref":"wooden-shield"},{"slot":6,"item_ref":"rusty-sword"},{"slot":2,"item_ref":"chain-mail"}]},"template":"splash","sidebar":{"label":"Soldier","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"searing-bite","name":"Searing Bite","description":"A close-quarters strike carrying its element.","element":1,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"flame-gout","name":"Flame Gout","description":"A ranged burst that covers the ground in front of it.","element":1,"mp_cost":8,"hit_chance":1,"status_effect":"burn","category":"special","power":34,"pp":15,"max_pp":15,"status_chance":0.25,"target":"enemy"},{"id":"solar-flare","name":"Solar Flare","description":"Everything it has, released at once.","element":1,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Solmane lunges at {target} for {dmg} damage!","Solmane presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Solmane breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N20","ref":"solmane","name":"Solmane","title":"Solmane","description":"Orange and cream, thickly maned, the largest of the line by mass and untroubled by it.\n","lore":"Sleeps in full sun for most of the day and covers ground at a frightening pace when it decides to. Regarded as the noble form, mostly by people who have not fed one.\n","type_flags":16,"rarity":2,"personality":4,"element":1,"rank":2,"family":1,"img":"/assets/npc/solmane.png","level":16,"stats":{"hp":76,"max_hp":76,"attack":20,"defense":18,"speed":20,"mp":40,"max_mp":40,"special_attack":20,"special_defense":18,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"searing-bite"},{"level":18,"ability_id":"flame-gout"},{"level":26,"ability_id":"solar-flare"}],"secondary_element":"holy"},"template":"splash","sidebar":{"label":"Solmane","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"toxic-nip","name":"Toxic Nip","description":"A close-quarters strike carrying its element.","element":4,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"spore-cloud","name":"Spore Cloud","description":"A ranged burst that covers the ground in front of it.","element":4,"mp_cost":8,"hit_chance":1,"status_effect":"poison","category":"special","power":34,"pp":15,"max_pp":15,"status_chance":0.25,"target":"enemy"},{"id":"blight-bloom","name":"Blight Bloom","description":"Everything it has, released at once.","element":4,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Sporecap lunges at {target} for {dmg} damage!","Sporecap presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Sporecap breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N18","ref":"sporecap","name":"Sporecap","title":"Sporecap","description":"Pale grey under a broad red-and-white cap that is continuous with its skull.\n","lore":"The cap is load-bearing and the animal is unbothered by this. Releases spores when alarmed, which is why handlers work upwind of one on principle.\n","type_flags":16,"rarity":2,"personality":4,"element":4,"rank":2,"family":1,"img":"/assets/npc/sporecap.png","level":16,"stats":{"hp":88,"max_hp":88,"attack":18,"defense":26,"speed":12,"mp":40,"max_mp":40,"special_attack":14,"special_defense":24,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"toxic-nip"},{"level":18,"ability_id":"spore-cloud"},{"level":26,"ability_id":"blight-bloom"}],"secondary_element":"nature"},"template":"splash","sidebar":{"label":"Sporecap","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Stone Fist","damage":6}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Stone Sentinel brings down a granite fist on {target}. The floor cracks. {dmg} damage.","It swings with the inevitability of a landslide. {target} takes {dmg} damage.","The sentinel's arm arcs slowly but unstoppably into {target}. {dmg} damage."]},{"action":"defend","messages":["The Stone Sentinel crosses its massive arms. You might as well attack a mountain. (+{armor} armor)","Ancient glyphs pulse across its surface. The stone hardens further. (+{armor} armor)"]},{"action":"charge","messages":["The Stone Sentinel plants both feet. The ground trembles. It is gathering everything it has."]},{"action":"death","messages":["The sentinel's glyph-eyes dim. It lowers itself to one knee and goes still — a monument to duty.","Cracks race across its body. The Stone Sentinel crumbles, and the vault it guarded lies open at last."]},{"action":"wounded","messages":["*Stone chips fall from the sentinel's torso. It does not acknowledge the damage.*"]},{"action":"near_death","messages":["*The sentinel is held together by willpower and ancient mortar. One more blow might end it.*"]}],"id":"01KKR5QWTB0Y8E1VSW19X56NVW","ref":"stone-sentinel","name":"Stone Sentinel","title":"Stone Sentinel","description":"A massive stone construct that defends its territory with unwavering determination and crushing force.\n","lore":"Stone Sentinels were crafted by master artisans to guard vaults of immense importance, and they have never abandoned their duty.\n","type_flags":1,"rarity":2,"personality":4,"element":8,"rank":2,"family":11,"level":3,"stats":{"hp":40,"max_hp":40,"attack":6,"defense":6,"speed":2,"armor":6},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"deep-wardens"},"loot":{"entries":[{"item_ref":"ward","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"campfire-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"rage-draught","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"phoenix-feather","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"antidote","min_quantity":1,"max_quantity":1,"drop_rate":0.17},{"item_ref":"smoke-bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.08}],"max_drops":2,"gold_min":8,"gold_max":18,"xp_reward":50},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Stone Sentinel","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"static-bite","name":"Static Bite","description":"A close-quarters strike carrying its element.","element":3,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"arc-bark","name":"Arc Bark","description":"A ranged burst that covers the ground in front of it.","element":3,"mp_cost":8,"hit_chance":1,"status_effect":"paralyze","category":"special","power":34,"pp":15,"max_pp":15,"status_chance":0.25,"target":"enemy"},{"id":"overload","name":"Overload","description":"Everything it has, released at once.","element":3,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Stormcoat lunges at {target} for {dmg} damage!","Stormcoat presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Stormcoat breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N09","ref":"stormcoat","name":"Stormcoat","title":"Stormcoat","description":"Blue and gold with translucent cyan wings that buzz rather than beat, and a permanent smell of scorched air.\n","lore":"Nests on high ground during dry storms for reasons nobody has established. The wings are too small to fly on and it uses them anyway.\n","type_flags":16,"rarity":2,"personality":4,"element":3,"rank":2,"family":1,"img":"/assets/npc/stormcoat.png","level":16,"stats":{"hp":64,"max_hp":64,"attack":20,"defense":13,"speed":30,"mp":40,"max_mp":40,"special_attack":18,"special_defense":13,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"static-bite"},{"level":18,"ability_id":"arc-bark"},{"level":26,"ability_id":"overload"}],"secondary_element":"wind"},"template":"splash","sidebar":{"label":"Stormcoat","hidden":true}},{"tags":["friendslop","bridge","talker"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ0000000000000000TAM","ref":"tam","name":"Tam","title":"Tam","description":"A boy who sits on the bank counting the mechs that come down from the ridge. Wants to know what they are, and will trade what he has watched for what you have been told.\n","type_flags":1,"rarity":0,"personality":7,"rank":0,"family":5,"level":1,"dialogue_tree":{"entry_node_id":"greet","nodes":[{"id":"greet","text":"Four today. There's usually four. One of them stands further out than the others and I don't know why.","next_node_id":"menu","condition":"!seen:greet"},{"id":"greet_again","text":"Still four.","next_node_id":"menu"},{"id":"menu","text":"You can sit, if you want. They take a while.","options":[{"id":"ask_counting","label":"What are you counting?","next_node_id":"counting"},{"id":"tell_mechs","label":"Marlow told me about them.","next_node_id":"told","required_flags":["marlow_toll_paid","!tam_heard_about_mechs"]},{"id":"ask_mechs_again","label":"What do you think they are?","next_node_id":"guess","required_flags":["tam_heard_about_mechs"]},{"id":"ask_bridge","label":"Why not watch from the bridge?","next_node_id":"bridge"},{"id":"take_the_guess","label":"Do you want somebody who would know to hear that?","next_node_id":"take_it_then"},{"id":"leave","label":"(Walk away.)","next_node_id":"farewell"}]},{"id":"counting","text":"The tall ones. They come down at the same hour and stand in the shallows and then they go back up. I've never seen one cross.","next_node_id":"menu"},{"id":"told","text":"He says they never explain. That's not the same as not knowing, is it. He watches them as long as I do, he just does it standing up.","next_node_id":"menu","trigger_on_enter":"set_flag:tam_heard_about_mechs"},{"id":"guess","text":"I think they're waiting for something to come back down the river. That's why they stand in it and not next to it.","next_node_id":"menu","trigger_on_enter":"set_flag:tam_guessed_the_mechs"},{"id":"take_it_then","text":"The one with the books. They'll tell me I'm wrong, but they'll say why, and nobody down here ever says why.","next_node_id":"menu","trigger_on_enter":"quest_start:friendslop-mech-watch"},{"id":"bridge","text":"Marlow charges. And you can't see the shallows from up there anyway, only the tops of them.","next_node_id":"menu","condition":"!marlow_toll_paid"},{"id":"bridge_paid","text":"You've paid him, so you can. I'd still rather be down here — you can't see the shallows from up there, only the tops of them.","next_node_id":"menu"},{"id":"farewell","text":"If you see one move, come and tell me. I'll be here."}]},"template":"splash","sidebar":{"label":"Tam","hidden":true},"role":"Lookout"},{"tags":["kbve-factorio","repair"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[{"trigger":"greeting","lines":["Tann here. Wall holding?","Plates are bowed but the rivets hold.","Stand clear of the welder."]},{"trigger":"repair","lines":["Patched. It will last the night.","Worse on the inside than on the spec sheet."]}],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ000000000000000TANN","ref":"tann","name":"Tann","title":"Tann","description":"Sci-fi field engineer. Roams the perimeter with a torch in one hand and a multitool in the other, patching wall plates and rotating burned-out turrets.\n","type_flags":1,"rarity":0,"personality":4,"rank":0,"family":5,"img":"/assets/npc/tann.png","level":1,"stats":{"hp":40,"max_hp":40,"attack":2,"defense":2,"speed":3,"armor":1},"behavior":{"first_strike":false,"movement_type":2},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Tann","hidden":true},"role":"Field Engineer"},{"tags":[],"abilities":[{"id":"aoe-attack","name":"Shatter Wave","damage":8}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["\"You remind me of my generals. They also thought they could win.\" The King strikes {target}. {dmg} damage.","A fragment of crown orbits into {target} like a guided missile. {dmg} damage.","The Shattered King gestures lazily. Dark force hammers {target}. {dmg} damage.","\"Kneel.\" The word itself is a weapon. {target} staggers from {dmg} damage."]},{"action":"heavy_attack","messages":["\"I RULED CONTINENTS!\" The chamber shakes as the King unleashes his full fury on {target}! {dmg} damage!","Crown fragments orbit faster, faster — then converge on {target} all at once! {dmg} damage!"]},{"action":"aoe","messages":["\"ALL EMPIRES FALL!\" The Shattered King releases a wave of ancient power! {dmg} damage to all!","The King raises what remains of his crown. The room fills with blinding, terrible light. {dmg} damage to all!"]},{"action":"defend","messages":["Crown fragments orbit the King like a shield. \"Time is on my side. It always has been.\" (+{armor} armor)"]},{"action":"charge","messages":["The King closes his eyes. \"Do you hear them? My subjects. They still cry out for their king.\" Power builds...","The fragments of his crown begin to reassemble. The air grows heavy with the weight of ages."]},{"action":"heal","messages":["\"I have died a thousand deaths. One more heals nothing.\" The King draws life from the ruins. +{amount} HP.","The dungeon walls pulse. The King's wounds close. \"This place remembers its master.\""]},{"action":"debuff","messages":["\"Carry this burden.\" The King speaks a word of royal decree. {target} is bound by {effect}.","The weight of a dead empire settles on {target}'s shoulders. {effect} takes hold."]},{"action":"death","messages":["The crown fragments clatter to the ground. The King smiles. \"At last... a worthy successor. Rule well.\" He crumbles to dust.","\"My empire... my people... forgive me.\" The Shattered King's form dissolves. The dungeon falls silent for the first time in centuries.","He reaches for his crown one final time. His fingers pass through it. \"So this is how it ends.\" And he is gone."]},{"action":"wounded","messages":["*\"Interesting. Pain. I had forgotten what that felt like.\" The King regards his wound with curiosity.*","*Crown fragments orbit more erratically. The King's composure shows its first crack.*"]},{"action":"near_death","messages":["*\"I have ruled... I have fallen... I have endured...\" The King's voice is barely a whisper now.*","*The crown fragments fall to the ground one by one. The King watches them go with ancient, tired eyes.*"]}],"id":"01KKR5QWTCHDFP2XHQEZMR3J4F","ref":"the-shattered-king","name":"The Shattered King","title":"The Shattered King","description":"An ancient ruler whose fractured body radiates immense power, speaking in riddles of ages past.\n","lore":"The Shattered King once ruled an empire that spanned continents. When his kingdom fell, his rage shattered his own crown and bound his soul to the ruins forever.\n","type_flags":33,"rarity":4,"personality":6,"element":5,"rank":4,"family":2,"level":5,"stats":{"hp":55,"max_hp":55,"attack":8,"defense":6,"speed":5,"armor":6},"behavior":{"first_strike":true,"movement_type":1},"faction":{"faction_id":"shadow-court"},"loot":{"entries":[{"item_ref":"ward","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"potion","min_quantity":1,"max_quantity":2,"drop_rate":0.45},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.3},{"item_ref":"teleport-rune","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"campfire-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"phoenix-feather","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"elixir","min_quantity":1,"max_quantity":1,"drop_rate":0.15},{"item_ref":"smoke-bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.15}],"max_drops":2,"gold_min":15,"gold_max":30,"xp_reward":100},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"The Shattered King","hidden":true}},{"tags":[],"abilities":[{"id":"poison","name":"Fang Strike","damage":6,"cooldown_turns":3}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Venomfang Lurker strikes from the shadows — two punctures in {target}'s leg! {dmg} damage!","Coiled muscles unwind as the lurker launches itself at {target}'s throat! {dmg} damage!"]},{"action":"debuff","messages":["The lurker sinks its fangs deep and holds. Venom pumps into {target}! {effect} takes hold!","Green ichor drips from the Venomfang's jaws as {target} feels {effect} burning through their veins!","A double-strike — fang, fang — and {target} stumbles as {effect} sets in!"]},{"action":"defend","messages":["The Venomfang Lurker coils tightly, scales gleaming with toxic sheen. (+{armor} armor)"]},{"action":"death","messages":["The Venomfang Lurker thrashes once and goes still. Venom pools beneath its body.","It hisses its last breath and uncoils, fangs bared even in death."]},{"action":"wounded","messages":["*The lurker recoils, hissing through damaged scales. Its strikes become more desperate.*"]},{"action":"near_death","messages":["*The Venomfang drags itself forward on pure instinct, leaving a trail of venom behind it.*"]}],"id":"01KKR5QWTBD4Y94FSMS25SR13H","ref":"venomfang-lurker","name":"Venomfang Lurker","title":"Venomfang Lurker","description":"A serpentine creature that coils in darkness, delivering multiple doses of deadly venom before its prey can react.\n","lore":"Venomfang Lurkers have evolved venom so potent that a single bite can fell creatures many times their size.\n","type_flags":1,"rarity":2,"personality":5,"element":4,"rank":2,"family":1,"level":3,"stats":{"hp":26,"max_hp":26,"attack":6,"defense":3,"speed":7,"armor":3},"behavior":{"first_strike":true,"movement_type":1},"loot":{"entries":[{"item_ref":"ward","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"campfire-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"rage-draught","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"phoenix-feather","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"antidote","min_quantity":1,"max_quantity":1,"drop_rate":0.17},{"item_ref":"smoke-bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.08}],"max_drops":2,"gold_min":8,"gold_max":18,"xp_reward":50},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Venomfang Lurker","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"thorn-lash","name":"Thorn Lash","description":"A close-quarters strike carrying its element.","element":10,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"pollen-storm","name":"Pollen Storm","description":"A ranged burst that covers the ground in front of it.","element":10,"mp_cost":8,"hit_chance":1,"status_effect":"poison","category":"special","power":34,"pp":15,"max_pp":15,"status_chance":0.25,"target":"enemy"},{"id":"overgrowth","name":"Overgrowth","description":"Everything it has, released at once.","element":10,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Verdanwing lunges at {target} for {dmg} damage!","Verdanwing presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Verdanwing breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N05","ref":"verdanwing","name":"Verdanwing","title":"Verdanwing","description":"Lean and lime-bright, with black flight feathers it keeps folded until it needs to be somewhere else immediately.\n","lore":"Feeds on nothing anyone can identify and outruns horses over short distances. Farmers consider one in a hedgerow a good omen and one in a granary a catastrophe.\n","type_flags":16,"rarity":2,"personality":4,"element":10,"rank":2,"family":1,"img":"/assets/npc/verdanwing.png","level":16,"stats":{"hp":64,"max_hp":64,"attack":20,"defense":13,"speed":30,"mp":40,"max_mp":40,"special_attack":18,"special_defense":13,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"thorn-lash"},{"level":18,"ability_id":"pollen-storm"},{"level":26,"ability_id":"overgrowth"}],"secondary_element":"wind"},"template":"splash","sidebar":{"label":"Verdanwing","hidden":true}},{"tags":["kbve-factorio","shopkeeper"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[{"trigger":"greeting","lines":["Welcome to the Exchange, engineer. Spend wisely.","Coin moves the factory. What will you trade for?","Need stock? My shelves are deep.","Quality scales with coin, not vice versa."]},{"trigger":"buy","lines":["A solid pick — back to the line with you.","Pleasure doing business.","Stamped, sealed, yours."]},{"trigger":"empty_pocket","lines":["Come back when the pockets jingle.","No coin, no deal. Mine more."]}],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ000000000000000VEXX","ref":"vex","name":"Vex","title":"Vex","description":"Sci-fi exchange keeper. Operates the trading window of a colony hub: takes coin, hands over crates, watches the queue. Stoic with a sharp tongue when the till runs short.\n","type_flags":1,"rarity":1,"personality":2,"rank":0,"family":5,"img":"/assets/npc/vex.png","level":1,"stats":{"hp":30,"max_hp":30,"attack":1,"defense":0,"speed":3,"armor":0},"behavior":{"first_strike":false,"movement_type":0},"faction":{"faction_id":"player"},"template":"splash","sidebar":{"label":"Vex","hidden":true},"role":"Exchange Keeper"},{"tags":[],"abilities":[{"id":"heavy-attack","name":"Void Rend","damage":10}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Void Walker's arm stretches impossibly and strikes {target} from ten feet away! {dmg} damage!","Reality folds. {target} is suddenly standing where the Walker's fist is. {dmg} damage.","The Walker steps sideways through nothing and appears behind {target}! {dmg} damage!"]},{"action":"heavy_attack","messages":["The Void Walker tears open a rift and pulls {target} halfway through! {dmg} damage!","Space inverts around {target}. Everything hurts at once. {dmg} damage."]},{"action":"defend","messages":["The Void Walker shifts partially out of phase. Attacks slide through empty space. (+{armor} armor)"]},{"action":"death","messages":["The Void Walker collapses inward like a punctured balloon, reality snapping shut behind it.","It reaches for a crack in the air, but there are none left. It dissipates with a soft pop."]},{"action":"wounded","messages":["*The Walker's movements become erratic. The space around it warps unpredictably.*"]},{"action":"near_death","messages":["*Reality is reasserting itself. The Void Walker is losing its grip on this plane.*"]}],"id":"01KKR5QWTBFFJ36ZASQAVP8WN0","ref":"void-walker","name":"Void Walker","title":"Void Walker","description":"A being that exists between planes, striking from impossible angles with reality-bending attacks.\n","lore":"Void Walkers slip through cracks in reality, drawn to places where the boundaries between worlds grow thin.\n","type_flags":1,"rarity":2,"personality":2,"element":7,"rank":2,"family":8,"level":3,"stats":{"hp":30,"max_hp":30,"attack":10,"defense":3,"speed":6,"armor":3},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"shadow-court"},"loot":{"entries":[{"item_ref":"ward","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.25},{"item_ref":"campfire-kit","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"rage-draught","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"phoenix-feather","min_quantity":1,"max_quantity":1,"drop_rate":0.08},{"item_ref":"antidote","min_quantity":1,"max_quantity":1,"drop_rate":0.17},{"item_ref":"smoke-bomb","min_quantity":1,"max_quantity":1,"drop_rate":0.08}],"max_drops":2,"gold_min":8,"gold_max":18,"xp_reward":50},"credits":"Ported from KBVE DiscordSH dungeon crawler.\n","template":"splash","sidebar":{"label":"Void Walker","hidden":true}},{"tags":[],"abilities":[{"id":"tackle","name":"Tackle","description":"A reckless full-body charge.","damage":12,"hit_chance":1,"category":"physical","power":12,"pp":35,"max_pp":35,"priority":0,"target":"enemy"},{"id":"bite","name":"Bite","description":"A short, hard bite with the whole jaw behind it.","damage":16,"hit_chance":0.95,"category":"physical","power":16,"pp":25,"max_pp":25,"high_crit":true,"target":"enemy"},{"id":"howl","name":"Howl","description":"A rising howl that steadies its own nerve.","category":"status","pp":20,"max_pp":20,"target":"self","stat_changes":[{"stat":"attack","stages":1,"target":"self"},{"stat":"special_attack","stages":1,"target":"self"}]},{"id":"umbral-claw","name":"Umbral Claw","description":"A close-quarters strike carrying its element.","element":5,"damage":22,"hit_chance":0.95,"category":"physical","power":22,"pp":20,"max_pp":20,"high_crit":true,"target":"enemy"},{"id":"nightfall","name":"Nightfall","description":"A ranged burst that covers the ground in front of it.","element":5,"mp_cost":8,"hit_chance":1,"category":"special","power":34,"pp":15,"max_pp":15,"target":"enemy"},{"id":"devouring-dark","name":"Devouring Dark","description":"Everything it has, released at once.","element":5,"mp_cost":14,"hit_chance":0.9,"category":"special","power":48,"pp":8,"max_pp":8,"high_crit":true,"target":"enemy"}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["Voidmaw lunges at {target} for {dmg} damage!","Voidmaw presses the attack — {target} takes {dmg} damage!"]},{"action":"flee","messages":["Voidmaw breaks off and is gone into the treeline."]}],"id":"01KME8R5PG7Z9QB3T6VX2H4N04","ref":"voidmaw","name":"Voidmaw","title":"Voidmaw","description":"A low, heavy-shouldered hound with a violet crystal grown through its spine and eyes that do not reflect torchlight.\n","lore":"The crystal is not an implant. Handlers who have watched the change describe it as the shibe's own bone deciding to keep growing after the rest of it stopped.\n","type_flags":16,"rarity":2,"personality":4,"element":5,"rank":2,"family":1,"img":"/assets/npc/voidmaw.png","level":16,"stats":{"hp":88,"max_hp":88,"attack":18,"defense":26,"speed":12,"mp":40,"max_mp":40,"special_attack":14,"special_defense":24,"accuracy":100,"evasion":100,"crit_rate":6,"crit_damage":1.5},"behavior":{"first_strike":false,"can_flee":true,"aggro_range":0,"wander_radius":6,"movement_type":1},"pet":{"catchable":true,"capture_rate":45,"growth_rate":"medium_fast","base_xp_yield":154,"base_friendship":70,"gender_ratio":0.5,"movepool":[{"level":1,"ability_id":"tackle"},{"level":1,"ability_id":"bite"},{"level":8,"ability_id":"howl"},{"level":12,"ability_id":"umbral-claw"},{"level":18,"ability_id":"nightfall"},{"level":26,"ability_id":"devouring-dark"}],"secondary_element":"arcane"},"template":"splash","sidebar":{"label":"Voidmaw","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Tail Slap","damage":9}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The whale's tail crashes into {target}! {dmg} damage!"]},{"action":"death","messages":["The whale rolls onto its back and drifts, oil bleeding into the tide."]}],"id":"01KSAVP2EPHGT01VZ7WYGN0PV6","ref":"whale","name":"Whale","title":"Whale","description":"Oceanic / river leviathan. Massive HP pool — a lone Fishing Boat can't solo it quickly. Drops Whale Oil + bulk Meat via EnemyLootDropSystem.\n","type_flags":1,"rarity":2,"personality":11,"rank":2,"family":1,"level":6,"stats":{"hp":320,"max_hp":320,"attack":9,"defense":4,"speed":1,"armor":2,"intelligence":6,"strength":18,"agility":2,"move_speed":0.22,"will":14},"unit_type":18,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.whale","behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"beast"},"template":"splash","sidebar":{"label":"Whale","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Bite","damage":5}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The wolf lunges and tears into {target}! {dmg} damage!","Fangs sink deep — {target} bleeds for {dmg} damage!"]},{"action":"death","messages":["The wolf yelps once, then falls silent."]}],"id":"01KSAVCWA0E408E163EMXV0M45","ref":"wolf","name":"Wolf","title":"Wolf","description":"Forest-biome predator. Fast melee bite, packs spawn in Wolf Pack events near Farms. Beast faction — bites Player + Wildlife indiscriminately. Drops Wolf Pelt + Wolf Fang.\n","type_flags":1,"rarity":1,"personality":1,"rank":0,"family":1,"level":2,"stats":{"hp":35,"max_hp":35,"attack":5,"defense":1,"speed":5,"armor":0,"intelligence":3,"strength":9,"agility":14,"move_speed":0.65,"will":6},"unit_type":13,"default_weapon":0,"dialogue_tree_id":0,"name_key":"creature.wolf","behavior":{"first_strike":true,"movement_type":1},"faction":{"faction_id":"beast"},"template":"splash","sidebar":{"label":"Wolf","hidden":true}},{"tags":[],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[{"zone":"grassland","spawn_weight":1}],"phase_rules":[{"time_start":700,"time_end":1800}],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KKWBVKEMG5SA4RHTXPQMEC63","ref":"woodland-butterfly","name":"Woodland Butterfly","title":"Woodland Butterfly","description":"A colorful butterfly that flutters through sunlit meadows, entering from the edges and wandering lazily on the breeze.\n","lore":"Woodland Butterflies come in seven distinct color morphs — from monarch orange to purple emperor.\nThey drift in from the edges of the visible world, flutter around a wander anchor, and glide away\nwhen they stray too far. Gentle wind pushes them along their path.\n","type_flags":1,"rarity":0,"personality":11,"element":10,"rank":1,"family":1,"level":1,"stats":{"hp":1,"max_hp":1,"attack":0,"defense":0,"speed":2,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"spatial":{"walk_speed":0.35,"can_fly":true},"creature_config":{"render_kind":2,"pool_size":14,"chunk_size":16,"per_chunk":2,"spawn_chance":0.45,"schedule":2},"credits":"KBVE Isometric ambient creature system.\n","template":"splash","sidebar":{"label":"Woodland Butterfly","hidden":true}},{"tags":[],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The Wraith Executioner raises its phantom axe and brings it down on {target} with the weight of a thousand sentences! {dmg} damage!","A spectral blade arcs through {target}'s guard — the Executioner does not miss. {dmg} damage.","\"Guilty.\" The word echoes before the axe falls on {target}. {dmg} damage."]},{"action":"heavy_attack","messages":["The Executioner grips its axe with both hands — the blade ignites with black fire and cleaves through {target}! {dmg} damage!","\"BY DECREE OF THE HOLLOW COURT!\" The phantom axe splits the air and crashes into {target}! {dmg} damage!"]},{"action":"defend","messages":["The Executioner plants its axe and stands motionless. Its tattered robes harden into spectral plate. (+{armor} armor)"]},{"action":"charge","messages":["The Wraith Executioner raises one skeletal hand. The names of the condemned scroll across the air in burning glyphs.","A spectral chopping block materializes. The Executioner runs one finger along the edge of its axe."]},{"action":"death","messages":["The phantom axe clatters to the ground and dissolves. The Executioner looks at its empty hands and whispers, \"...pardoned.\" Then it is gone.","The tattered robes collapse in a heap. A long list of names burns away to ash where the Wraith stood.","The Executioner falls to its knees, grasping at the phantom axe as it fades. \"My sentence... is served.\""]},{"action":"wounded","messages":["*The Executioner's robes tear further, revealing the hollow void beneath. It shows no pain — only cold resolve.*"]},{"action":"near_death","messages":["*The phantom axe flickers in and out of existence. The Executioner's form wavers like a candle about to die.*","*\"One... final... verdict...\" The Wraith Executioner's voice is barely audible, but the malice is undiminished.*"]}],"id":"01KMWEP3FYXD54R527KQ6CM2N5","ref":"wraith-executioner","name":"Wraith Executioner","title":"Wraith Executioner","description":"A spectral headsman draped in tattered judicial robes, carrying an impossibly large phantom axe that cleaves through armor and soul alike.\n","lore":"In life, the Executioner served a kingdom long since swallowed by darkness. Tasked with carrying out the sentences of a corrupt court, it executed hundreds — guilty and innocent alike. When the kingdom fell, the Executioner's guilt bound its soul to an eternal sentence of its own: to wander the ruins, forever seeking absolution through the only craft it ever knew. Its phantom axe is said to sever not just flesh, but the ties between a soul and its body — those slain by the Wraith Executioner do not rest easily.\n","type_flags":33,"rarity":3,"personality":4,"element":5,"rank":2,"family":2,"level":4,"stats":{"hp":40,"max_hp":40,"attack":14,"defense":5,"speed":4,"armor":4},"behavior":{"first_strike":true,"movement_type":2},"credits":"Asset reference: [Undead Executioner by DarkPixel Kronovi](https://darkpixel-kronovi.itch.io/undead-executioner).\nFuture integration: UV-ready shader for apps/kbve/isometric.\n","template":"splash","sidebar":{"label":"Wraith Executioner","hidden":true}},{"tags":["friendslop","bridge","talker"],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[],"id":"01KSAVZ000000000000000WREN","ref":"wren","name":"Wren","title":"Wren","description":"Forager working the far bank of the Friendslop crossing. Reads the river by what grows beside it, and will say what is in the deep bend if you have already heard Marlow wonder about it.\n","type_flags":1,"rarity":0,"personality":7,"rank":0,"family":5,"level":1,"dialogue_tree":{"entry_node_id":"greet","nodes":[{"id":"greet","text":"Mind where you put your feet — half of what's underfoot here is worth more than the bridge.","next_node_id":"menu","condition":"!seen:greet"},{"id":"greet_again","text":"You again. Careful, the reeds are wet through.","next_node_id":"menu"},{"id":"menu","text":"Well? The light goes early down here.","options":[{"id":"ask_doing","label":"What are you looking for?","next_node_id":"doing"},{"id":"ask_bend","label":"Marlow said something big is in the deep bend.","next_node_id":"bend","required_flags":["marlow_knows_river","!wren_named_the_bend"]},{"id":"ask_bend_again","label":"That thing in the bend, again.","next_node_id":"bend_again","required_flags":["wren_named_the_bend"]},{"id":"ask_marlow","label":"You know the bridge keeper?","next_node_id":"marlow"},{"id":"carry_word","label":"Should somebody else know about the bitterroot?","next_node_id":"carry_word_yes"},{"id":"leave","label":"(Walk away.)","next_node_id":"farewell"}]},{"id":"doing","text":"Bitterroot, mostly. It only takes where the water has been and gone, so it grows in a line and tells you where the river used to sit.","next_node_id":"menu","trigger_on_enter":"set_flag:wren_taught_bitterroot"},{"id":"carry_word_yes","text":"The one who keeps the dressing. Tell them where it grows, not what it looks like — everyone gets that part wrong.","next_node_id":"menu","trigger_on_enter":"quest_start:friendslop-bitterroot"},{"id":"bend","text":"He would. He watches it from the deck and never goes down to it. It's a fish, and it's old, and it has been there longer than he has kept the crossing.","next_node_id":"menu","trigger_on_enter":"set_flag:wren_named_the_bend"},{"id":"bend_again","text":"Still a fish. Still old. Go and look, if you like — it doesn't mind being looked at.","next_node_id":"menu"},{"id":"marlow","text":"Everyone knows Marlow. He asks a toll for a bridge nobody built and puts every coin of it back into the planks.","next_node_id":"menu","condition":"!marlow_toll_paid"},{"id":"marlow_paid","text":"You paid him, then. He'll have told you about the third plank — he tells everyone, and he's right.","next_node_id":"menu"},{"id":"farewell","text":"Go on. Leave me the bitterroot."}]},"template":"splash","sidebar":{"label":"Wren","hidden":true},"role":"Forager"},{"tags":[],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"flee","messages":["The Air Wyvern banks hard on a gust and climbs out of reach in a single beat of its wings.","It catches a thermal and spirals up into the open sky, indifferent to those below."]},{"action":"death","messages":["The Air Wyvern folds its wings and falls, the wind around it going suddenly still."]}],"id":"01KVZH165F3RA3QXDXZT5G2D3K","ref":"wyvern_air","name":"Air Wyvern","title":"Air Wyvern","description":"A lithe sky-wyvern with translucent wings that hum with rushing wind, drifting in lazy spirals over the open grass. It roams the surface but never aggresses.\n","lore":"Air Wyverns ride the high currents above the grasslands, harmless to travelers who leave them be.\nThey steer by the wind alone, riding thermals in wide, drifting circles and never stooping to attack.\n","type_flags":1,"rarity":1,"personality":11,"element":9,"rank":2,"family":7,"level":2,"stats":{"hp":40,"max_hp":40,"attack":0,"defense":1,"speed":5,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"neutral"},"spatial":{"walk_speed":0.5,"can_fly":true},"credits":"KBVE Isometric ambient creature system.\n","template":"splash","sidebar":{"label":"Air Wyvern","hidden":true}},{"tags":[],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"flee","messages":["The Fire Wyvern flares its wings, scattering sparks, and beats away on a wash of hot air.","It climbs in a spiral of rising heat, leaving only a faint smell of smoke behind."]},{"action":"death","messages":["The Fire Wyvern's embers gutter out as it falls, the air around it cooling fast."]}],"id":"01KVZH165H90EGYDVTE5H2BAR9","ref":"wyvern_fire","name":"Fire Wyvern","title":"Fire Wyvern","description":"A wyvern wreathed in heat-shimmer, embers curling from its wingtips as it wheels over the grass. It roams the surface but never aggresses.\n","lore":"Fire Wyverns ride the warm updrafts of sun-baked grasslands, harmless to travelers who leave them be.\nEmbers trail from their wings as they wheel overhead, never stooping to attack.\n","type_flags":1,"rarity":1,"personality":11,"element":1,"rank":2,"family":7,"level":2,"stats":{"hp":40,"max_hp":40,"attack":0,"defense":1,"speed":5,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"neutral"},"spatial":{"walk_speed":0.5,"can_fly":true},"credits":"KBVE Isometric ambient creature system.\n","template":"splash","sidebar":{"label":"Fire Wyvern","hidden":true}},{"tags":[],"abilities":[],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"flee","messages":["The Water Wyvern slips sideways through a curtain of its own mist and is gone.","It dives low, skims the dew, and rises away on cool damp air, paying no mind to those below."]},{"action":"death","messages":["The Water Wyvern falls, its misty trail thinning to nothing before it lands."]}],"id":"01KVZH165HXHX87DESWFBHGF8Y","ref":"wyvern_water","name":"Water Wyvern","title":"Water Wyvern","description":"A sleek wyvern whose scales shimmer like rain on glass, trailing a fine mist as it glides over the grass. It roams the surface but never aggresses.\n","lore":"Water Wyverns drift along the morning fog lines, harmless to travelers who leave them be.\nThey gather dew on their wings and ride the cool air over the grasslands, never stooping to attack.\n","type_flags":1,"rarity":1,"personality":11,"element":2,"rank":2,"family":7,"level":2,"stats":{"hp":40,"max_hp":40,"attack":0,"defense":1,"speed":5,"armor":0},"behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"neutral"},"spatial":{"walk_speed":0.5,"can_fly":true},"credits":"KBVE Isometric ambient creature system.\n","template":"splash","sidebar":{"label":"Water Wyvern","hidden":true}},{"tags":[],"abilities":[{"id":"attack","name":"Bite","damage":4}],"weaknesses":[],"resistances":[],"status_immunities":[],"intent_weights":[],"spawn_rules":[],"phase_rules":[],"difficulty_overrides":[],"dialogue":[],"quest_refs":[],"extensions":[],"flavor_text":[{"action":"attack","messages":["The zombie sinks rotted teeth into {target}! {dmg} damage!","Cold, dead hands rake across {target} — {dmg} damage!"]},{"action":"death","messages":["The zombie collapses and stops twitching for good."]}],"id":"01KSAVP0BZN4KBB5Y1P62RVVWS","ref":"zombie","name":"Zombie","title":"Zombie","description":"Slow, undead horde unit. Spawns at night via ZombieNightSpawnSystem and around demolished shrines. Bite/claw melee, prefers to chase Player units, doesn't fatigue.\n","type_flags":1,"rarity":0,"personality":1,"rank":0,"family":2,"level":2,"stats":{"hp":50,"max_hp":50,"attack":4,"defense":1,"speed":2,"armor":0,"intelligence":1,"strength":10,"agility":4,"move_speed":0.28,"will":3},"unit_type":15,"default_weapon":0,"dialogue_tree_id":12,"name_key":"creature.zombie","behavior":{"first_strike":false,"movement_type":1},"faction":{"faction_id":"hostile"},"template":"splash","sidebar":{"label":"Zombie","hidden":true}}],"index":{"01KME8R5PG7Z9QB3T6VX2H4N16":0,"aetherfang":0,"Aetherfang":0,"01KSAVZ000000000000000ARCH":1,"archer":1,"Archer":1,"01KME8R5PG7Z9QB3T6VX2H4N15":2,"aurelight":2,"Aurelight":2,"01KSAV7YC1CT201N51YJ15V1PK":3,"bandit":3,"Bandit":3,"01KSAVTYT9RBX566KHNYHGEREA":4,"bandit-scout":4,"Bandit Scout":4,"01KSAVZ000000000000000BARK":5,"barkeep":5,"Evee The BarKeep":5,"01KME8R5PG7Z9QB3T6VX2H4N08":6,"blazeruff":6,"Blazeruff":6,"01KKR5QWTA6KARZ9EQB9Y476S4":7,"bone-archer":7,"Bone Archer":7,"01KSAVJQSG83RSRAN9W8B27VTT":8,"cavalry":8,"Cavalry":8,"01KKR5QWTARVPDS4ENXBK4MBD2":9,"cave-spider":9,"Cave Spider":9,"01KSAVKEYE51RE3HX4T4G1BNRV":10,"chicken":10,"Chicken":10,"01KSAVZ000000000000000CLRC":11,"cleric":11,"Cleric":11,"01KKR5QWTB3TXCY87HZXFHYFYG":12,"corrupted-warden":12,"Corrupted Warden":12,"01KSAV880T75RMTKD004K83GDQ":13,"cow":13,"Cow":13,"01KKR5QWTADGEX9BC9H29E0YB9":14,"crumbling-statue":14,"Crumbling Statue":14,"01KKR5QWTAMADFK3GY8Q47GQ6N":15,"crystal-bat":15,"Crystal Bat":15,"01KKR5QWTBC89E1XJHM3CZ5SRK":16,"crystal-golem":16,"Crystal Golem":16,"01KKR5QWTBV72R8B4V4JBNG308":17,"cursed-knight":17,"Cursed Knight":17,"01KME8R5PG7Z9QB3T6VX2H4N11":18,"direhowl":18,"Direhowl":18,"01KME8R5PG7Z9QB3T6VX2H4N12":19,"duskwing":19,"Duskwing":19,"01KKR5QWTA8JDZGRMHM21CR2J1":20,"dust-mite":20,"Dust Mite":20,"01KKR5QWTBPWP2WD71838AMPZB":21,"ember-wisp":21,"Ember Wisp":21,"01KME8R5PG7Z9QB3T6VX2H4N13":22,"emberstripe":22,"Emberstripe":22,"01KKR5QWTBNKBVAN8J4168AFRW":23,"fire-imp":23,"Fire Imp":23,"01KSAVJR1ASDVMRD9B29PHBXWV":24,"fishing-boat":24,"Fishing Boat":24,"01KME8R5PG7Z9QB3T6VX2H4N21":25,"frostfang":25,"Frostfang":25,"01KKR5QWTB7S5FY2HNXJN5Y4NY":26,"fungal-brute":26,"Fungal Brute":26,"01KSAV4D81ZJNBH8W8MS410ZX4":27,"galley":27,"Galley":27,"01KME8R5PG7Z9QB3T6VX2H4N07":28,"glacierfang":28,"Glacierfang":28,"01KKR5QWTBH0QF9K030QMZFQWC":29,"glass-assassin":29,"Glass Assassin":29,"01KKR5QWTBJ3ZFEHR24YGT6VYX":30,"glass-golem":30,"Glass Golem":30,"01KKR5QWT9998CCD18XN2B3726":31,"glass-slime":31,"Glass Slime":31,"01KSAVBCDKGE0N89F6ZPH846Z8":32,"goblin":32,"Goblin":32,"01KSAVZ00000000000000GGNRL":33,"goblin-general":33,"Goblin General":33,"01KKWBVKEN10357T9ZZ4BNJCG9":34,"green-toad":34,"Green Toad":34,"01KME8R5PG7Z9QB3T6VX2H4N17":35,"grimclaw":35,"Grimclaw":35,"01KSAV57D0DKQNWXJ8AC01V8PQ":36,"king":36,"King":36,"01KSAVJ4TXAMCXS00X0F0H2W1E":37,"knight":37,"Knight":37,"01KSAVZ00000000000000KRESS":38,"kress":38,"Kress":38,"01KZWMGYHVMYGZBXJ4RAWY6R4F":39,"lizard-fish":39,"Lizardfish":39,"01KME8R5PG7Z9QB3T6VX2H4N06":40,"lumipaw":40,"Lumipaw":40,"01KSAVAEF2667PTP0HAG228QA5":41,"mage":41,"Mage":41,"01KSAVZ00000000000000MARLOW":42,"marlow":42,"Marlow":42,"01KKWBVKEK4SR70NMKE1SST5H4":43,"meadow-firefly":43,"Meadow Firefly":43,"01KME8R5PG7Z9QB3T6VX2H4N01":44,"mechamutt":44,"Mechamutt":44,"01KSAVZ000000000000000MRCH":45,"merchant":45,"Merchant":45,"01KSAVZ000000000000000MIRA":46,"mira":46,"Mira":46,"01KSAVZ000000000000000MONK":47,"monk":47,"Elder Monk":47,"01KME8R5PG7Z9QB3T6VX2H4N10":48,"mossantler":48,"Mossantler":48,"01KKR5QWTAJEKFBFF31JNDW8Q9":49,"mushroom-sprite":49,"Mushroom Sprite":49,"01KSR8C4R81VPD7J5CH6VEGTJP":50,"nd-enemy-runner":50,"Runner":50,"01KKR5QWTB1TRDD9W2D6MFNME5":51,"phantom-knight":51,"Phantom Knight":51,"01KSAVQR3VN6ZE4AVMV0V4Z6BV":52,"pirate-ship":52,"Pirate Ship":52,"01KME8R5PG7Z9QB3T6VX2H4N19":53,"prismawing":53,"Prismawing":53,"01KSAVZ000000000000000RENO":54,"reno":54,"Reno":54,"01KSAVZ000000000000000ROGE":55,"rogue":55,"Rogue":55,"01KSAVZ00000000000000SABLE":56,"sable":56,"Sable":56,"01KSAVJ63XB5GY5MNA969VNW61":57,"scout":57,"Scout":57,"01KKR5QWTBAF71Q1NJTD7RZKEW":58,"shade-stalker":58,"Shade Stalker":58,"01KKR5QWTBF2XX7BG384X7V5V1":59,"shadow-wraith":59,"Shadow Wraith":59,"01KSAVAAWG80N798A1T6G6E9MD":60,"sheep":60,"Sheep":60,"01KME8R5PG7Z9QB3T6VX2H4N03":61,"shibe":61,"Shibe":61,"01KSAVZ000000000000000SDKK":62,"sidekick":62,"Sidekick":62,"01KSAVZ000000000000000SILA":63,"sila":63,"Sila":63,"01KSAV00000000000000000024":64,"skeleton":64,"Skeleton":64,"01KKR5QWTAEV48Y4WK51JWBXTX":65,"skeleton-guard":65,"Skeleton Guard":65,"01KSAVJJEH5P7XCW5ZRTA6YR4N":66,"soldier":66,"Soldier":66,"01KME8R5PG7Z9QB3T6VX2H4N20":67,"solmane":67,"Solmane":67,"01KME8R5PG7Z9QB3T6VX2H4N18":68,"sporecap":68,"Sporecap":68,"01KKR5QWTB0Y8E1VSW19X56NVW":69,"stone-sentinel":69,"Stone Sentinel":69,"01KME8R5PG7Z9QB3T6VX2H4N09":70,"stormcoat":70,"Stormcoat":70,"01KSAVZ0000000000000000TAM":71,"tam":71,"Tam":71,"01KSAVZ000000000000000TANN":72,"tann":72,"Tann":72,"01KKR5QWTCHDFP2XHQEZMR3J4F":73,"the-shattered-king":73,"The Shattered King":73,"01KKR5QWTBD4Y94FSMS25SR13H":74,"venomfang-lurker":74,"Venomfang Lurker":74,"01KME8R5PG7Z9QB3T6VX2H4N05":75,"verdanwing":75,"Verdanwing":75,"01KSAVZ000000000000000VEXX":76,"vex":76,"Vex":76,"01KKR5QWTBFFJ36ZASQAVP8WN0":77,"void-walker":77,"Void Walker":77,"01KME8R5PG7Z9QB3T6VX2H4N04":78,"voidmaw":78,"Voidmaw":78,"01KSAVP2EPHGT01VZ7WYGN0PV6":79,"whale":79,"Whale":79,"01KSAVCWA0E408E163EMXV0M45":80,"wolf":80,"Wolf":80,"01KKWBVKEMG5SA4RHTXPQMEC63":81,"woodland-butterfly":81,"Woodland Butterfly":81,"01KMWEP3FYXD54R527KQ6CM2N5":82,"wraith-executioner":82,"Wraith Executioner":82,"01KSAVZ000000000000000WREN":83,"wren":83,"Wren":83,"01KVZH165F3RA3QXDXZT5G2D3K":84,"wyvern_air":84,"Air Wyvern":84,"01KVZH165H90EGYDVTE5H2BAR9":85,"wyvern_fire":85,"Fire Wyvern":85,"01KVZH165HXHX87DESWFBHGF8Y":86,"wyvern_water":86,"Water Wyvern":86,"01KSAVP0BZN4KBB5Y1P62RVVWS":87,"zombie":87,"Zombie":87}}