{ "npcs": { "feral_dog": { "npc_id": "feral_dog", "name": "Feral Dog", "description": "A wild, mangy dog with desperate hunger in its eyes. Its ribs are visible beneath matted fur.", "emoji": "🐕", "hp_min": 15, "hp_max": 25, "damage_min": 3, "damage_max": 7, "defense": 0, "xp_reward": 10, "loot_table": [ { "item_id": "raw_meat", "quantity_min": 1, "quantity_max": 2, "drop_chance": 0.6 }, { "item_id": "animal_hide", "quantity_min": 1, "quantity_max": 1, "drop_chance": 0.3 } ], "corpse_loot": [ { "item_id": "raw_meat", "quantity_min": 1, "quantity_max": 3, "required_tool": null }, { "item_id": "animal_hide", "quantity_min": 1, "quantity_max": 1, "required_tool": "knife" } ], "flee_chance": 0.3, "status_inflict_chance": 0.15, "image_path": "images/npcs/feral_dog.webp", "death_message": "The feral dog whimpers and collapses. Perhaps it was just hungry..." }, "raider_scout": { "npc_id": "raider_scout", "name": "Raider Scout", "description": "A lone raider wearing makeshift armor. They eye you with hostile intent.", "emoji": "🏴‍☠️", "hp_min": 30, "hp_max": 45, "damage_min": 5, "damage_max": 12, "defense": 2, "xp_reward": 25, "loot_table": [ { "item_id": "water_bottle", "quantity_min": 1, "quantity_max": 1, "drop_chance": 0.4 }, { "item_id": "canned_food", "quantity_min": 1, "quantity_max": 2, "drop_chance": 0.5 }, { "item_id": "bandage", "quantity_min": 1, "quantity_max": 3, "drop_chance": 0.6 }, { "item_id": "rusty_pipe", "quantity_min": 1, "quantity_max": 1, "drop_chance": 0.3 } ], "corpse_loot": [ { "item_id": "scrap_metal", "quantity_min": 2, "quantity_max": 4, "required_tool": null }, { "item_id": "cloth", "quantity_min": 1, "quantity_max": 2, "required_tool": "knife" } ], "flee_chance": 0.2, "status_inflict_chance": 0.1, "image_path": "images/npcs/raider_scout.webp", "death_message": "The raider scout falls with a final gasp. Their supplies are yours." }, "mutant_rat": { "npc_id": "mutant_rat", "name": "Mutant Rat", "description": "A grotesquely large rat, its fur patchy and eyes glowing with unnatural light.", "emoji": "🐀", "hp_min": 10, "hp_max": 18, "damage_min": 2, "damage_max": 5, "defense": 0, "xp_reward": 8, "loot_table": [ { "item_id": "raw_meat", "quantity_min": 1, "quantity_max": 1, "drop_chance": 0.4 } ], "corpse_loot": [ { "item_id": "raw_meat", "quantity_min": 1, "quantity_max": 2, "required_tool": null }, { "item_id": "mutant_tissue", "quantity_min": 1, "quantity_max": 1, "required_tool": "knife" } ], "flee_chance": 0.5, "status_inflict_chance": 0.25, "image_path": "images/npcs/mutant_rat.webp", "death_message": "The mutant rat squeals its last and goes still." }, "infected_human": { "npc_id": "infected_human", "name": "Infected Human", "description": "Once human, now something else. Their movements are jerky and their skin shows signs of advanced infection.", "emoji": "🧟", "hp_min": 35, "hp_max": 50, "damage_min": 6, "damage_max": 10, "defense": 1, "xp_reward": 30, "loot_table": [ { "item_id": "medical_supplies", "quantity_min": 1, "quantity_max": 1, "drop_chance": 0.2 }, { "item_id": "antibiotics", "quantity_min": 1, "quantity_max": 1, "drop_chance": 0.15 } ], "corpse_loot": [ { "item_id": "infected_tissue", "quantity_min": 1, "quantity_max": 2, "required_tool": "knife" }, { "item_id": "bone", "quantity_min": 1, "quantity_max": 3, "required_tool": "knife" } ], "flee_chance": 0.1, "status_inflict_chance": 0.3, "image_path": "images/npcs/infected_human.webp", "death_message": "The infected human finally finds peace in death." }, "scavenger": { "npc_id": "scavenger", "name": "Hostile Scavenger", "description": "Another survivor, but this one sees you as competition. They won't share territory.", "emoji": "💀", "hp_min": 25, "hp_max": 40, "damage_min": 4, "damage_max": 9, "defense": 3, "xp_reward": 20, "loot_table": [ { "item_id": "water_bottle", "quantity_min": 1, "quantity_max": 2, "drop_chance": 0.5 }, { "item_id": "canned_food", "quantity_min": 1, "quantity_max": 2, "drop_chance": 0.5 }, { "item_id": "bandage", "quantity_min": 1, "quantity_max": 2, "drop_chance": 0.4 }, { "item_id": "knife", "quantity_min": 1, "quantity_max": 1, "drop_chance": 0.2 }, { "item_id": "hiking_backpack", "quantity_min": 1, "quantity_max": 1, "drop_chance": 0.05 }, { "item_id": "flashlight", "quantity_min": 1, "quantity_max": 1, "drop_chance": 0.3 } ], "corpse_loot": [ { "item_id": "cloth", "quantity_min": 1, "quantity_max": 3, "required_tool": null }, { "item_id": "scrap_metal", "quantity_min": 1, "quantity_max": 2, "required_tool": null } ], "flee_chance": 0.25, "status_inflict_chance": 0.05, "image_path": "images/npcs/scavenger.webp", "death_message": "The scavenger's struggle ends. Survival has no mercy." } }, "danger_levels": { "start_point": { "danger_level": 0, "encounter_rate": 0.0, "wandering_chance": 0.0 }, "gas_station": { "danger_level": 0, "encounter_rate": 0.0, "wandering_chance": 0.0 }, "residential": { "danger_level": 1, "encounter_rate": 0.10, "wandering_chance": 0.20 }, "park": { "danger_level": 1, "encounter_rate": 0.10, "wandering_chance": 0.20 }, "clinic": { "danger_level": 2, "encounter_rate": 0.20, "wandering_chance": 0.35 }, "plaza": { "danger_level": 2, "encounter_rate": 0.15, "wandering_chance": 0.30 }, "warehouse": { "danger_level": 2, "encounter_rate": 0.18, "wandering_chance": 0.32 }, "warehouse_interior": { "danger_level": 2, "encounter_rate": 0.22, "wandering_chance": 0.40 }, "overpass": { "danger_level": 3, "encounter_rate": 0.30, "wandering_chance": 0.45 }, "office_building": { "danger_level": 3, "encounter_rate": 0.25, "wandering_chance": 0.40 }, "office_interior": { "danger_level": 3, "encounter_rate": 0.35, "wandering_chance": 0.50 }, "subway": { "danger_level": 4, "encounter_rate": 0.35, "wandering_chance": 0.50 }, "subway_tunnels": { "danger_level": 4, "encounter_rate": 0.45, "wandering_chance": 0.65 } }, "spawn_tables": { "start_point": [], "gas_station": [], "residential": [ { "npc_id": "feral_dog", "weight": 60 }, { "npc_id": "mutant_rat", "weight": 40 } ], "park": [ { "npc_id": "feral_dog", "weight": 50 }, { "npc_id": "mutant_rat", "weight": 50 } ], "clinic": [ { "npc_id": "infected_human", "weight": 40 }, { "npc_id": "mutant_rat", "weight": 30 }, { "npc_id": "scavenger", "weight": 30 } ], "plaza": [ { "npc_id": "raider_scout", "weight": 40 }, { "npc_id": "scavenger", "weight": 35 }, { "npc_id": "feral_dog", "weight": 25 } ], "warehouse": [ { "npc_id": "raider_scout", "weight": 45 }, { "npc_id": "scavenger", "weight": 35 }, { "npc_id": "mutant_rat", "weight": 20 } ], "warehouse_interior": [ { "npc_id": "raider_scout", "weight": 50 }, { "npc_id": "scavenger", "weight": 30 }, { "npc_id": "mutant_rat", "weight": 20 } ], "overpass": [ { "npc_id": "raider_scout", "weight": 50 }, { "npc_id": "infected_human", "weight": 30 }, { "npc_id": "scavenger", "weight": 20 } ], "office_building": [ { "npc_id": "raider_scout", "weight": 45 }, { "npc_id": "infected_human", "weight": 35 }, { "npc_id": "scavenger", "weight": 20 } ], "office_interior": [ { "npc_id": "infected_human", "weight": 50 }, { "npc_id": "raider_scout", "weight": 30 }, { "npc_id": "scavenger", "weight": 20 } ], "subway": [ { "npc_id": "infected_human", "weight": 50 }, { "npc_id": "raider_scout", "weight": 30 }, { "npc_id": "mutant_rat", "weight": 20 } ], "subway_tunnels": [ { "npc_id": "infected_human", "weight": 60 }, { "npc_id": "raider_scout", "weight": 25 }, { "npc_id": "mutant_rat", "weight": 15 } ] } }