1438 lines
41 KiB
JSON
1438 lines
41 KiB
JSON
{
|
|
"locations": [
|
|
{
|
|
"id": "start_point",
|
|
"name": "\ud83c\udf06 Ruined Downtown Core",
|
|
"description": "The wind howls through skeletal skyscrapers. Debris litters the cracked asphalt. You sense danger, but also opportunity.",
|
|
"image_path": "images/locations/downtown.png",
|
|
"x": 0,
|
|
"y": 0,
|
|
"interactables": {
|
|
"rubble_1760793958629": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"text": {
|
|
"success": "You successfully \ud83d\udd0e search rubble.",
|
|
"failure": "You failed to \ud83d\udd0e search rubble."
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "scrap_metal",
|
|
"quantity": 1,
|
|
"chance": 1
|
|
}
|
|
],
|
|
"damage": 0
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"start_point_sedan": {
|
|
"template_id": "sedan",
|
|
"outcomes": {
|
|
"search_glovebox": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 1,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You find a half-eaten [Stale Chocolate Bar].",
|
|
"failure": "The glovebox is empty except for dust and old receipts.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "stale_chocolate_bar",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
},
|
|
"pop_trunk": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 3,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "With a great heave, you pry the trunk open and find a [Tire Iron]!",
|
|
"failure": "The trunk is rusted shut. You can't get it open.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "tire_iron",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"start_point_dumpster": {
|
|
"template_id": "dumpster",
|
|
"outcomes": {
|
|
"search_dumpster": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "Despite the smell, you find some [Plastic Bottles] and [Cloth Scraps].",
|
|
"failure": "Just rotting garbage. Nothing useful.",
|
|
"crit_success": "",
|
|
"crit_failure": "You disturb a nest of rats! They bite you! (-8 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "plastic_bottles",
|
|
"quantity": 3,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "cloth_scraps",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 8
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "gas_station",
|
|
"name": "\u26fd\ufe0f Abandoned Gas Station",
|
|
"description": "The smell of stale gasoline hangs in the air. A rusty sedan sits by the pumps, its door ajar. Behind the station, you spot a small tool shed.",
|
|
"image_path": "images/locations/gas_station.png",
|
|
"x": 0,
|
|
"y": 2,
|
|
"interactables": {}
|
|
},
|
|
{
|
|
"id": "residential",
|
|
"name": "\ud83c\udfd8\ufe0f Residential Street",
|
|
"description": "A quiet suburban street lined with abandoned homes. Most are boarded up, but a few doors hang open, creaking in the wind.",
|
|
"x": 3.0,
|
|
"y": 0.0,
|
|
"image_path": "images/locations/residential.png",
|
|
"interactables": {
|
|
"residential_house1": {
|
|
"template_id": "house",
|
|
"outcomes": {
|
|
"search_house": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 3,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You find some useful supplies: [Canned Beans], [Bottled Water], and [Cloth Scraps]!",
|
|
"failure": "The house has already been thoroughly looted. Nothing remains.",
|
|
"crit_success": "",
|
|
"crit_failure": "The floor collapses beneath you! (-10 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "canned_beans",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "bottled_water",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "cloth_scraps",
|
|
"quantity": 3,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 10
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"residential_rubble": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You dig through the debris and find some [Scrap Metal].",
|
|
"failure": "The pile seems to have been picked clean already.",
|
|
"crit_success": "",
|
|
"crit_failure": "You cut your hand on a sharp piece of glass! (-5 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "scrap_metal",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "clinic",
|
|
"name": "\ud83c\udfe5 Old Clinic",
|
|
"description": "A small medical clinic, its windows shattered. The waiting room is a mess of overturned chairs and scattered papers. The examination rooms might still have supplies.",
|
|
"x": 2.0,
|
|
"y": 3.0,
|
|
"image_path": "images/locations/clinic.png",
|
|
"interactables": {
|
|
"clinic_medkit": {
|
|
"template_id": "medkit",
|
|
"outcomes": {
|
|
"search_medkit": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "Jackpot! You find a [First Aid Kit] and some [Bandages]!",
|
|
"failure": "The cabinet is empty. Someone got here first.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "first_aid_kit",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "bandage",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"clinic_rubble": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You dig through the debris and find some [Scrap Metal].",
|
|
"failure": "The pile seems to have been picked clean already.",
|
|
"crit_success": "",
|
|
"crit_failure": "You cut your hand on a sharp piece of glass! (-5 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "scrap_metal",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "plaza",
|
|
"name": "\ud83c\udfec Shopping Plaza",
|
|
"description": "A strip mall with broken storefronts. Most shops have been thoroughly ransacked, but you might find something if you search carefully.",
|
|
"image_path": "images/locations/plaza.png",
|
|
"x": -2.5,
|
|
"y": 0,
|
|
"interactables": {
|
|
"rubble_1760803638919": {
|
|
"outcomes": {
|
|
"search": {
|
|
"crit_failure_chance": 0.1,
|
|
"crit_success_chance": 0.1,
|
|
"rewards": {
|
|
"crit_damage": 0,
|
|
"crit_items": [],
|
|
"damage": 0,
|
|
"items": []
|
|
},
|
|
"stamina_cost": 2,
|
|
"success_rate": 0.5,
|
|
"text": {
|
|
"crit_failure": "",
|
|
"crit_success": "",
|
|
"failure": "You failed to \ud83d\udd0e search rubble.",
|
|
"success": "You successfully \ud83d\udd0e search rubble."
|
|
}
|
|
}
|
|
},
|
|
"template_id": "rubble"
|
|
},
|
|
"plaza_vending_machine_1760805873300": {
|
|
"template_id": "vending_machine",
|
|
"outcomes": {
|
|
"break": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 5,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You successfully \ud83d\udd28 break open.",
|
|
"failure": "You failed to \ud83d\udd28 break open.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
},
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You successfully \ud83d\udd0e search machine.",
|
|
"failure": "You failed to \ud83d\udd0e search machine.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "energy_bar",
|
|
"quantity": 4,
|
|
"chance": 1
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "park",
|
|
"name": "\ud83c\udf33 Suburban Park",
|
|
"description": "An overgrown park with rusted playground equipment. Nature is slowly reclaiming this space. A maintenance shed sits at the far end.",
|
|
"x": -1.0,
|
|
"y": -2.0,
|
|
"image_path": "images/locations/park.png",
|
|
"interactables": {
|
|
"park_shed": {
|
|
"template_id": "toolshed",
|
|
"outcomes": {
|
|
"search_shed": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You find some tools: [Rusty Nails], [Wood Planks], and a [Flashlight]!",
|
|
"failure": "The shed has been picked clean. Only empty shelves remain.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "rusty_nails",
|
|
"quantity": 5,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "wood_planks",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "flashlight",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"park_rubble": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You dig through the debris and find some [Scrap Metal].",
|
|
"failure": "The pile seems to have been picked clean already.",
|
|
"crit_success": "",
|
|
"crit_failure": "You cut your hand on a sharp piece of glass! (-5 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "scrap_metal",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 5
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "overpass",
|
|
"name": "\ud83d\udee3\ufe0f Highway Overpass",
|
|
"description": "A concrete overpass spanning the cracked highway below. Abandoned vehicles litter the road. This is a good vantage point to survey the area.",
|
|
"x": 1.0,
|
|
"y": 4.5,
|
|
"image_path": "images/locations/overpass.png",
|
|
"interactables": {
|
|
"overpass_sedan1": {
|
|
"template_id": "sedan",
|
|
"outcomes": {
|
|
"search_glovebox": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 1,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You find a half-eaten [Stale Chocolate Bar].",
|
|
"failure": "The glovebox is empty except for dust and old receipts.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "stale_chocolate_bar",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
},
|
|
"pop_trunk": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 3,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "With a great heave, you pry the trunk open and find a [Tire Iron]!",
|
|
"failure": "The trunk is rusted shut. You can't get it open.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "tire_iron",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"overpass_sedan2": {
|
|
"template_id": "sedan",
|
|
"outcomes": {
|
|
"search_glovebox": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 1,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You find a half-eaten [Stale Chocolate Bar].",
|
|
"failure": "The glovebox is empty except for dust and old receipts.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "stale_chocolate_bar",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
},
|
|
"pop_trunk": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 3,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "With a great heave, you pry the trunk open and find a [Tire Iron]!",
|
|
"failure": "The trunk is rusted shut. You can't get it open.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "tire_iron",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "warehouse",
|
|
"name": "\ud83c\udfed Warehouse District",
|
|
"description": "Rows of industrial warehouses stretch before you. Metal doors creak in the wind. The loading docks are littered with debris and abandoned cargo.",
|
|
"x": 4.0,
|
|
"y": -1.5,
|
|
"image_path": "images/locations/warehouse.png",
|
|
"interactables": {
|
|
"warehouse_rubble": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You dig through the debris and find some [Scrap Metal].",
|
|
"failure": "The pile seems to have been picked clean already.",
|
|
"crit_success": "",
|
|
"crit_failure": "You cut your hand on a sharp piece of glass! (-5 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "scrap_metal",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"warehouse_dumpster": {
|
|
"template_id": "dumpster",
|
|
"outcomes": {
|
|
"search_dumpster": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "Despite the smell, you find some [Plastic Bottles] and [Cloth Scraps].",
|
|
"failure": "Just rotting garbage. Nothing useful.",
|
|
"crit_success": "",
|
|
"crit_failure": "You disturb a nest of rats! They bite you! (-8 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "plastic_bottles",
|
|
"quantity": 3,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "cloth_scraps",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 8
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"warehouse_toolshed": {
|
|
"template_id": "toolshed",
|
|
"outcomes": {
|
|
"search_shed": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You find some tools: [Rusty Nails], [Wood Planks], and a [Flashlight]!",
|
|
"failure": "The shed has been picked clean. Only empty shelves remain.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "rusty_nails",
|
|
"quantity": 5,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "wood_planks",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "flashlight",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "warehouse_interior",
|
|
"name": "\ud83d\udce6 Warehouse Interior",
|
|
"description": "Inside the warehouse, towering shelves cast long shadows. Scattered crates and pallets suggest this was once a distribution center. The back office door hangs open.",
|
|
"x": 4.5,
|
|
"y": -2.0,
|
|
"image_path": "images/locations/warehouse_interior.png",
|
|
"interactables": {
|
|
"warehouse_int_crate1": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You dig through the debris and find some [Scrap Metal].",
|
|
"failure": "The pile seems to have been picked clean already.",
|
|
"crit_success": "",
|
|
"crit_failure": "You cut your hand on a sharp piece of glass! (-5 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "scrap_metal",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"warehouse_int_crate2": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You dig through the debris and find some [Scrap Metal].",
|
|
"failure": "The pile seems to have been picked clean already.",
|
|
"crit_success": "",
|
|
"crit_failure": "You cut your hand on a sharp piece of glass! (-5 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "scrap_metal",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"warehouse_int_office": {
|
|
"template_id": "house",
|
|
"outcomes": {
|
|
"search_house": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 3,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You find some useful supplies: [Canned Beans], [Bottled Water], and [Cloth Scraps]!",
|
|
"failure": "The house has already been thoroughly looted. Nothing remains.",
|
|
"crit_success": "",
|
|
"crit_failure": "The floor collapses beneath you! (-10 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "canned_beans",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "bottled_water",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "cloth_scraps",
|
|
"quantity": 3,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 10
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "subway",
|
|
"name": "\ud83d\ude87 Subway Station Entrance",
|
|
"description": "Stairs descend into darkness. The entrance to an abandoned subway station yawns before you. Emergency lighting flickers somewhere below.",
|
|
"x": -4.0,
|
|
"y": -0.5,
|
|
"image_path": "images/locations/subway.png",
|
|
"interactables": {
|
|
"subway_rubble": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You dig through the debris and find some [Scrap Metal].",
|
|
"failure": "The pile seems to have been picked clean already.",
|
|
"crit_success": "",
|
|
"crit_failure": "You cut your hand on a sharp piece of glass! (-5 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "scrap_metal",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"subway_vending": {
|
|
"template_id": "vending",
|
|
"outcomes": {
|
|
"break_vending": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 4,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You smash the glass and grab [Energy Bars] and [Bottled Water]!",
|
|
"failure": "The machine is tougher than it looks. You can't break it open.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "energy_bar",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "bottled_water",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "subway_tunnels",
|
|
"name": "\ud83d\ude8a Subway Tunnels",
|
|
"description": "The tunnels stretch into darkness. Water drips from the ceiling. A stalled train blocks part of the track. The air is stale and oppressive.",
|
|
"image_path": "images/locations/subway_tunnels.png",
|
|
"x": -4.5,
|
|
"y": -1,
|
|
"interactables": {}
|
|
},
|
|
{
|
|
"id": "office_building",
|
|
"name": "\ud83c\udfe2 Office Building",
|
|
"description": "A five-story office building with shattered windows. The lobby is trashed, but the stairs appear intact. You can hear the wind whistling through the upper floors.",
|
|
"image_path": "images/locations/office_building.png",
|
|
"x": 3.5,
|
|
"y": 4,
|
|
"interactables": {
|
|
"rubble_1760801399701": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You successfully \ud83d\udd0e search rubble.",
|
|
"failure": "You failed to \ud83d\udd0e search rubble.",
|
|
"crit_success": "",
|
|
"crit_failure": ""
|
|
},
|
|
"rewards": {
|
|
"items": [],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "office_interior",
|
|
"name": "\ud83d\udcbc Office Floors",
|
|
"description": "Cubicles stretch across the floor. Papers scatter in the breeze from broken windows. Filing cabinets stand open, already ransacked. A corner office looks promising.",
|
|
"image_path": "images/locations/office_interior.png",
|
|
"x": 4,
|
|
"y": 4.5,
|
|
"interactables": {
|
|
"office_desk1": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You dig through the debris and find some [Scrap Metal].",
|
|
"failure": "The pile seems to have been picked clean already.",
|
|
"crit_success": "",
|
|
"crit_failure": "You cut your hand on a sharp piece of glass! (-5 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "scrap_metal",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"office_desk2": {
|
|
"template_id": "rubble",
|
|
"outcomes": {
|
|
"search": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 2,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You dig through the debris and find some [Scrap Metal].",
|
|
"failure": "The pile seems to have been picked clean already.",
|
|
"crit_success": "",
|
|
"crit_failure": "You cut your hand on a sharp piece of glass! (-5 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "scrap_metal",
|
|
"quantity": 2,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 5
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"office_corner": {
|
|
"template_id": "house",
|
|
"outcomes": {
|
|
"search_house": {
|
|
"success_rate": 0.5,
|
|
"stamina_cost": 3,
|
|
"crit_success_chance": 0.1,
|
|
"crit_failure_chance": 0.1,
|
|
"text": {
|
|
"success": "You find some useful supplies: [Canned Beans], [Bottled Water], and [Cloth Scraps]!",
|
|
"failure": "The house has already been thoroughly looted. Nothing remains.",
|
|
"crit_success": "",
|
|
"crit_failure": "The floor collapses beneath you! (-10 HP)"
|
|
},
|
|
"rewards": {
|
|
"items": [
|
|
{
|
|
"item_id": "canned_beans",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "bottled_water",
|
|
"quantity": 1,
|
|
"chance": 1.0
|
|
},
|
|
{
|
|
"item_id": "cloth_scraps",
|
|
"quantity": 3,
|
|
"chance": 1.0
|
|
}
|
|
],
|
|
"damage": 0,
|
|
"crit_items": [],
|
|
"crit_damage": 10
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "location_1760791397492",
|
|
"name": "Subway Section A",
|
|
"description": "A shady dimly lit subway section. All you can see are abandoned train tracks and some garbage lying around. ",
|
|
"image_path": "images/locations/subway_section_a.jpg",
|
|
"x": -5,
|
|
"y": -2,
|
|
"interactables": {}
|
|
}
|
|
],
|
|
"connections": [
|
|
{
|
|
"from": "start_point",
|
|
"to": "gas_station",
|
|
"direction": "north",
|
|
"stamina_cost": 6
|
|
},
|
|
{
|
|
"from": "start_point",
|
|
"to": "residential",
|
|
"direction": "east",
|
|
"stamina_cost": 9
|
|
},
|
|
{
|
|
"from": "start_point",
|
|
"to": "plaza",
|
|
"direction": "west",
|
|
"stamina_cost": 8
|
|
},
|
|
{
|
|
"from": "gas_station",
|
|
"to": "start_point",
|
|
"direction": "south",
|
|
"stamina_cost": 6
|
|
},
|
|
{
|
|
"from": "gas_station",
|
|
"to": "overpass",
|
|
"direction": "north",
|
|
"stamina_cost": 8
|
|
},
|
|
{
|
|
"from": "residential",
|
|
"to": "start_point",
|
|
"direction": "west",
|
|
"stamina_cost": 9
|
|
},
|
|
{
|
|
"from": "residential",
|
|
"to": "clinic",
|
|
"direction": "north",
|
|
"stamina_cost": 9
|
|
},
|
|
{
|
|
"from": "residential",
|
|
"to": "park",
|
|
"direction": "south",
|
|
"stamina_cost": 13
|
|
},
|
|
{
|
|
"from": "residential",
|
|
"to": "warehouse",
|
|
"direction": "southeast",
|
|
"stamina_cost": 5
|
|
},
|
|
{
|
|
"from": "clinic",
|
|
"to": "residential",
|
|
"direction": "south",
|
|
"stamina_cost": 9
|
|
},
|
|
{
|
|
"from": "clinic",
|
|
"to": "gas_station",
|
|
"direction": "west",
|
|
"stamina_cost": 7
|
|
},
|
|
{
|
|
"from": "clinic",
|
|
"to": "office_building",
|
|
"direction": "east",
|
|
"stamina_cost": 5
|
|
},
|
|
{
|
|
"from": "plaza",
|
|
"to": "start_point",
|
|
"direction": "east",
|
|
"stamina_cost": 8
|
|
},
|
|
{
|
|
"from": "plaza",
|
|
"to": "park",
|
|
"direction": "south",
|
|
"stamina_cost": 8
|
|
},
|
|
{
|
|
"from": "plaza",
|
|
"to": "subway",
|
|
"direction": "west",
|
|
"stamina_cost": 5
|
|
},
|
|
{
|
|
"from": "park",
|
|
"to": "plaza",
|
|
"direction": "north",
|
|
"stamina_cost": 8
|
|
},
|
|
{
|
|
"from": "park",
|
|
"to": "residential",
|
|
"direction": "east",
|
|
"stamina_cost": 13
|
|
},
|
|
{
|
|
"from": "park",
|
|
"to": "warehouse",
|
|
"direction": "southeast",
|
|
"stamina_cost": 15
|
|
},
|
|
{
|
|
"from": "overpass",
|
|
"to": "gas_station",
|
|
"direction": "south",
|
|
"stamina_cost": 8
|
|
},
|
|
{
|
|
"from": "overpass",
|
|
"to": "clinic",
|
|
"direction": "east",
|
|
"stamina_cost": 5
|
|
},
|
|
{
|
|
"from": "warehouse",
|
|
"to": "residential",
|
|
"direction": "northwest",
|
|
"stamina_cost": 5
|
|
},
|
|
{
|
|
"from": "warehouse",
|
|
"to": "park",
|
|
"direction": "west",
|
|
"stamina_cost": 15
|
|
},
|
|
{
|
|
"from": "warehouse",
|
|
"to": "warehouse_interior",
|
|
"direction": "inside",
|
|
"stamina_cost": 2
|
|
},
|
|
{
|
|
"from": "warehouse_interior",
|
|
"to": "warehouse",
|
|
"direction": "outside",
|
|
"stamina_cost": 2
|
|
},
|
|
{
|
|
"from": "subway",
|
|
"to": "plaza",
|
|
"direction": "east",
|
|
"stamina_cost": 5
|
|
},
|
|
{
|
|
"from": "subway",
|
|
"to": "subway_tunnels",
|
|
"direction": "down",
|
|
"stamina_cost": 2
|
|
},
|
|
{
|
|
"from": "subway_tunnels",
|
|
"to": "subway",
|
|
"direction": "up",
|
|
"stamina_cost": 2
|
|
},
|
|
{
|
|
"from": "office_building",
|
|
"to": "clinic",
|
|
"direction": "west",
|
|
"stamina_cost": 5
|
|
},
|
|
{
|
|
"from": "office_building",
|
|
"to": "overpass",
|
|
"direction": "south",
|
|
"stamina_cost": 8
|
|
},
|
|
{
|
|
"from": "office_building",
|
|
"to": "office_interior",
|
|
"direction": "inside",
|
|
"stamina_cost": 2
|
|
},
|
|
{
|
|
"from": "office_interior",
|
|
"to": "office_building",
|
|
"direction": "outside",
|
|
"stamina_cost": 2
|
|
},
|
|
{
|
|
"from": "location_1760789845933",
|
|
"to": "subway_tunnels",
|
|
"direction": "north"
|
|
},
|
|
{
|
|
"from": "location_1760791397492",
|
|
"to": "subway_tunnels",
|
|
"direction": "north"
|
|
},
|
|
{
|
|
"from": "location_1760791397492",
|
|
"to": "subway_tunnels",
|
|
"direction": "north"
|
|
},
|
|
{
|
|
"from": "location_1760799315918",
|
|
"to": "gas_station",
|
|
"direction": "southeast"
|
|
},
|
|
{
|
|
"from": "subway_tunnels",
|
|
"to": "location_1760791397492",
|
|
"direction": "south"
|
|
}
|
|
],
|
|
"danger_config": {
|
|
"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.1,
|
|
"wandering_chance": 0.2
|
|
},
|
|
"park": {
|
|
"danger_level": 1,
|
|
"encounter_rate": 0.1,
|
|
"wandering_chance": 0.2
|
|
},
|
|
"clinic": {
|
|
"danger_level": 2,
|
|
"encounter_rate": 0.2,
|
|
"wandering_chance": 0.35
|
|
},
|
|
"plaza": {
|
|
"danger_level": 2,
|
|
"encounter_rate": 0.15,
|
|
"wandering_chance": 0.3
|
|
},
|
|
"warehouse": {
|
|
"danger_level": 2,
|
|
"encounter_rate": 0.18,
|
|
"wandering_chance": 0.32
|
|
},
|
|
"warehouse_interior": {
|
|
"danger_level": 2,
|
|
"encounter_rate": 0.22,
|
|
"wandering_chance": 0.4
|
|
},
|
|
"overpass": {
|
|
"danger_level": 3,
|
|
"encounter_rate": 0.3,
|
|
"wandering_chance": 0.45
|
|
},
|
|
"office_building": {
|
|
"danger_level": 3,
|
|
"encounter_rate": 0.25,
|
|
"wandering_chance": 0.4
|
|
},
|
|
"office_interior": {
|
|
"danger_level": 3,
|
|
"encounter_rate": 0.35,
|
|
"wandering_chance": 0.5
|
|
},
|
|
"subway": {
|
|
"danger_level": 4,
|
|
"encounter_rate": 0.35,
|
|
"wandering_chance": 0.5
|
|
},
|
|
"subway_tunnels": {
|
|
"danger_level": 4,
|
|
"encounter_rate": 0.45,
|
|
"wandering_chance": 0.65
|
|
}
|
|
},
|
|
"spawn_config": {
|
|
"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
|
|
}
|
|
]
|
|
}
|
|
} |