{
  "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.webp",
      "x": 0,
      "y": 0,
      "interactables": {
        "start_point_dumpster": {
          "outcomes": {
            "search_dumpster": {
              "crit_failure_chance": 0.1,
              "crit_success_chance": 0.1,
              "rewards": {
                "crit_damage": 8,
                "crit_items": [],
                "damage": 0,
                "items": [
                  {
                    "chance": 1,
                    "item_id": "plastic_bottles",
                    "quantity": 3
                  },
                  {
                    "chance": 1,
                    "item_id": "cloth_scraps",
                    "quantity": 2
                  }
                ]
              },
              "stamina_cost": 2,
              "success_rate": 0.5,
              "text": {
                "crit_failure": "You disturb a nest of rats! They bite you! (-8 HP)",
                "crit_success": "",
                "failure": "Just rotting garbage. Nothing useful.",
                "success": "Despite the smell, you find some [Plastic Bottles] and [Cloth Scraps]."
              }
            }
          },
          "template_id": "dumpster"
        },
        "start_point_sedan": {
          "outcomes": {
            "pop_trunk": {
              "crit_failure_chance": 0.1,
              "crit_success_chance": 0.1,
              "rewards": {
                "crit_damage": 0,
                "crit_items": [],
                "damage": 0,
                "items": [
                  {
                    "chance": 1,
                    "item_id": "tire_iron",
                    "quantity": 1
                  }
                ]
              },
              "stamina_cost": 3,
              "success_rate": 0.5,
              "text": {
                "crit_failure": "",
                "crit_success": "",
                "failure": "The trunk is rusted shut. You can't get it open.",
                "success": "With a great heave, you pry the trunk open and find a [Tire Iron]!"
              }
            },
            "search_glovebox": {
              "crit_failure_chance": 0.1,
              "crit_success_chance": 0.1,
              "rewards": {
                "crit_damage": 0,
                "crit_items": [],
                "damage": 0,
                "items": [
                  {
                    "chance": 1,
                    "item_id": "stale_chocolate_bar",
                    "quantity": 1
                  }
                ]
              },
              "stamina_cost": 1,
              "success_rate": 0.5,
              "text": {
                "crit_failure": "",
                "crit_success": "",
                "failure": "The glovebox is empty except for dust and old receipts.",
                "success": "You find a half-eaten [Stale Chocolate Bar]."
              }
            }
          },
          "template_id": "sedan"
        }
      }
    },
    {
      "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 with a workbench.",
      "image_path": "images/locations/gas_station.webp",
      "x": 0,
      "y": 2,
      "tags": [
        "workbench",
        "repair_station"
      ],
      "interactables": {
        "gas_station_sedan": {
          "template_id": "sedan",
          "outcomes": {
            "search_glovebox": {
              "stamina_cost": 1,
              "success_rate": 0.6,
              "crit_success_chance": 0.15,
              "crit_failure_chance": 0.05,
              "rewards": {
                "damage": 0,
                "crit_damage": 0,
                "items": [
                  {
                    "item_id": "cloth_scraps",
                    "quantity": 1,
                    "chance": 0.8
                  },
                  {
                    "item_id": "plastic_bottles",
                    "quantity": 1,
                    "chance": 0.5
                  }
                ],
                "crit_items": [
                  {
                    "item_id": "scrap_metal",
                    "quantity": 2,
                    "chance": 1.0
                  }
                ]
              },
              "text": {
                "success": "You find some cloth scraps and plastic in the glovebox.",
                "failure": "The glovebox is empty except for old papers.",
                "crit_success": "You find scrap metal from the dashboard!",
                "crit_failure": "The glovebox is jammed shut."
              }
            },
            "pop_trunk": {
              "stamina_cost": 3,
              "success_rate": 0.5,
              "crit_success_chance": 0.2,
              "crit_failure_chance": 0.1,
              "rewards": {
                "damage": 0,
                "crit_damage": 5,
                "items": [
                  {
                    "item_id": "scrap_metal",
                    "quantity": 3,
                    "chance": 0.7
                  },
                  {
                    "item_id": "plastic_bottles",
                    "quantity": 2,
                    "chance": 0.6
                  }
                ],
                "crit_items": [
                  {
                    "item_id": "tools",
                    "quantity": 1,
                    "chance": 0.3
                  }
                ]
              },
              "text": {
                "success": "You force the trunk open and find scrap metal and plastic.",
                "failure": "The trunk is rusted shut.",
                "crit_success": "The trunk contains tools!",
                "crit_failure": "You cut your hand on rusty metal! (-5 HP)"
              }
            }
          }
        },
        "gas_station_storage": {
          "template_id": "storage_box",
          "outcomes": {
            "search": {
              "stamina_cost": 2,
              "success_rate": 0.55,
              "crit_success_chance": 0.1,
              "crit_failure_chance": 0.1,
              "rewards": {
                "damage": 0,
                "crit_damage": 0,
                "items": [
                  {
                    "item_id": "scrap_metal",
                    "quantity": 2,
                    "chance": 0.7
                  },
                  {
                    "item_id": "cloth_scraps",
                    "quantity": 2,
                    "chance": 0.5
                  }
                ],
                "crit_items": [
                  {
                    "item_id": "tools",
                    "quantity": 1,
                    "chance": 0.4
                  }
                ]
              },
              "text": {
                "success": "You find scrap metal and cloth in the storage box.",
                "failure": "The storage box is mostly empty.",
                "crit_success": "You discover tools inside!",
                "crit_failure": "Just oil stains and rust."
              }
            }
          }
        }
      }
    },
    {
      "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.",
      "image_path": "images/locations/residential.webp",
      "x": 3,
      "y": 0,
      "interactables": {
        "residential_house1": {
          "outcomes": {
            "search_house": {
              "crit_failure_chance": 0.1,
              "crit_success_chance": 0.1,
              "rewards": {
                "crit_damage": 10,
                "crit_items": [],
                "damage": 0,
                "items": [
                  {
                    "chance": 1,
                    "item_id": "canned_beans",
                    "quantity": 1
                  },
                  {
                    "chance": 1,
                    "item_id": "bottled_water",
                    "quantity": 1
                  },
                  {
                    "chance": 1,
                    "item_id": "cloth_scraps",
                    "quantity": 3
                  }
                ]
              },
              "stamina_cost": 3,
              "success_rate": 0.5,
              "text": {
                "crit_failure": "The floor collapses beneath you! (-10 HP)",
                "crit_success": "",
                "failure": "The house has already been thoroughly looted. Nothing remains.",
                "success": "You find some useful supplies: [Canned Beans], [Bottled Water], and [Cloth Scraps]!"
              }
            }
          },
          "template_id": "house"
        }
      }
    },
    {
      "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.",
      "image_path": "images/locations/clinic.webp",
      "x": 2,
      "y": 3,
      "interactables": {
        "clinic_medkit": {
          "outcomes": {
            "search_medkit": {
              "crit_failure_chance": 0.1,
              "crit_success_chance": 0.1,
              "rewards": {
                "crit_damage": 0,
                "crit_items": [],
                "damage": 0,
                "items": [
                  {
                    "chance": 1,
                    "item_id": "first_aid_kit",
                    "quantity": 1
                  },
                  {
                    "chance": 1,
                    "item_id": "bandage",
                    "quantity": 2
                  }
                ]
              },
              "stamina_cost": 2,
              "success_rate": 0.5,
              "text": {
                "crit_failure": "",
                "crit_success": "",
                "failure": "The cabinet is empty. Someone got here first.",
                "success": "Jackpot! You find a [First Aid Kit] and some [Bandages]!"
              }
            }
          },
          "template_id": "medkit"
        }
      }
    },
    {
      "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.webp",
      "x": -2.5,
      "y": 0,
      "interactables": {
        "plaza_vending": {
          "template_id": "vending_machine",
          "outcomes": {
            "break": {
              "stamina_cost": 5,
              "success_rate": 0.7,
              "crit_success_chance": 0.15,
              "crit_failure_chance": 0.15,
              "rewards": {
                "damage": 0,
                "crit_damage": 10,
                "items": [
                  {
                    "item_id": "plastic_bottles",
                    "quantity": 4,
                    "chance": 0.8
                  },
                  {
                    "item_id": "scrap_metal",
                    "quantity": 2,
                    "chance": 0.6
                  }
                ],
                "crit_items": [
                  {
                    "item_id": "food",
                    "quantity": 3,
                    "chance": 0.5
                  }
                ]
              },
              "text": {
                "success": "You smash the vending machine and grab bottles and scrap.",
                "failure": "The machine is too sturdy to break.",
                "crit_success": "Packaged food falls out!",
                "crit_failure": "Glass cuts your arm! (-10 HP)"
              }
            },
            "search": {
              "stamina_cost": 2,
              "success_rate": 0.5,
              "crit_success_chance": 0.1,
              "crit_failure_chance": 0.05,
              "rewards": {
                "damage": 0,
                "crit_damage": 0,
                "items": [
                  {
                    "item_id": "plastic_bottles",
                    "quantity": 1,
                    "chance": 0.7
                  }
                ],
                "crit_items": [
                  {
                    "item_id": "food",
                    "quantity": 1,
                    "chance": 0.8
                  }
                ]
              },
              "text": {
                "success": "You find a plastic bottle at the bottom.",
                "failure": "Nothing left to scavenge.",
                "crit_success": "A snack is wedged in the dispenser!",
                "crit_failure": "Already picked clean."
              }
            }
          }
        },
        "plaza_rubble": {
          "template_id": "rubble",
          "outcomes": {
            "search": {
              "stamina_cost": 2,
              "success_rate": 0.5,
              "crit_success_chance": 0.1,
              "crit_failure_chance": 0.15,
              "rewards": {
                "damage": 0,
                "crit_damage": 5,
                "items": [
                  {
                    "item_id": "scrap_metal",
                    "quantity": 3,
                    "chance": 0.7
                  },
                  {
                    "item_id": "cloth_scraps",
                    "quantity": 2,
                    "chance": 0.5
                  }
                ],
                "crit_items": [
                  {
                    "item_id": "tools",
                    "quantity": 1,
                    "chance": 0.2
                  }
                ]
              },
              "text": {
                "success": "You dig through rubble and find scrap metal and cloth.",
                "failure": "Just broken concrete and dust.",
                "crit_success": "A tool was buried in the debris!",
                "crit_failure": "Sharp debris cuts you! (-5 HP)"
              }
            }
          }
        }
      }
    },
    {
      "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.",
      "image_path": "images/locations/park.webp",
      "x": -1,
      "y": -2,
      "interactables": {
        "park_shed": {
          "outcomes": {
            "search_shed": {
              "crit_failure_chance": 0.1,
              "crit_success_chance": 0.1,
              "rewards": {
                "crit_damage": 0,
                "crit_items": [],
                "damage": 0,
                "items": [
                  {
                    "chance": 1,
                    "item_id": "rusty_nails",
                    "quantity": 5
                  },
                  {
                    "chance": 1,
                    "item_id": "wood_planks",
                    "quantity": 2
                  },
                  {
                    "chance": 1,
                    "item_id": "flashlight",
                    "quantity": 1
                  },
                  {
                    "chance": 1,
                    "item_id": "knife",
                    "quantity": 1
                  }
                ]
              },
              "stamina_cost": 2,
              "success_rate": 0.5,
              "text": {
                "crit_failure": "",
                "crit_success": "",
                "failure": "The shed has been picked clean. Only empty shelves remain.",
                "success": "You find some tools: [Rusty Nails], [Wood Planks], and a [Flashlight]!"
              }
            }
          },
          "template_id": "toolshed"
        }
      }
    },
    {
      "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.webp",
      "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.",
      "image_path": "images/locations/warehouse.webp",
      "x": 4,
      "y": -1.5,
      "interactables": {
        "warehouse_dumpster": {
          "outcomes": {
            "search_dumpster": {
              "crit_failure_chance": 0.1,
              "crit_success_chance": 0.1,
              "rewards": {
                "crit_damage": 8,
                "crit_items": [],
                "damage": 0,
                "items": [
                  {
                    "chance": 1,
                    "item_id": "plastic_bottles",
                    "quantity": 3
                  },
                  {
                    "chance": 1,
                    "item_id": "cloth_scraps",
                    "quantity": 2
                  }
                ]
              },
              "stamina_cost": 2,
              "success_rate": 0.5,
              "text": {
                "crit_failure": "You disturb a nest of rats! They bite you! (-8 HP)",
                "crit_success": "",
                "failure": "Just rotting garbage. Nothing useful.",
                "success": "Despite the smell, you find some [Plastic Bottles] and [Cloth Scraps]."
              }
            }
          },
          "template_id": "dumpster"
        },
        "warehouse_toolshed": {
          "outcomes": {
            "search_shed": {
              "crit_failure_chance": 0.1,
              "crit_success_chance": 0.1,
              "rewards": {
                "crit_damage": 0,
                "crit_items": [],
                "damage": 0,
                "items": [
                  {
                    "chance": 1,
                    "item_id": "rusty_nails",
                    "quantity": 5
                  },
                  {
                    "chance": 1,
                    "item_id": "wood_planks",
                    "quantity": 2
                  },
                  {
                    "chance": 1,
                    "item_id": "flashlight",
                    "quantity": 1
                  }
                ]
              },
              "stamina_cost": 2,
              "success_rate": 0.5,
              "text": {
                "crit_failure": "",
                "crit_success": "",
                "failure": "The shed has been picked clean. Only empty shelves remain.",
                "success": "You find some tools: [Rusty Nails], [Wood Planks], and a [Flashlight]!"
              }
            }
          },
          "template_id": "toolshed"
        }
      }
    },
    {
      "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.",
      "image_path": "images/locations/warehouse_interior.webp",
      "x": 4.5,
      "y": -2,
      "interactables": {
        "storage_box_1762510181363": {
          "template_id": "storage_box",
          "outcomes": {
            "search": {
              "success_rate": 0.5,
              "stamina_cost": 2,
              "crit_success_chance": 0,
              "crit_failure_chance": 0,
              "text": {
                "success": "You successfully \ud83d\udd0e search box.",
                "failure": "You failed to \ud83d\udd0e search box.",
                "crit_success": "",
                "crit_failure": ""
              },
              "rewards": {
                "items": [
                  {
                    "item_id": "scrap_metal",
                    "quantity": 2,
                    "chance": 0.5
                  },
                  {
                    "item_id": "cloth_scraps",
                    "quantity": 1,
                    "chance": 0.3
                  }
                ],
                "damage": 0,
                "crit_items": [],
                "crit_damage": 0
              }
            }
          }
        }
      }
    },
    {
      "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.",
      "image_path": "images/locations/subway.webp",
      "x": -4,
      "y": -0.5,
      "interactables": {
        "subway_rubble": {
          "outcomes": {
            "search": {
              "crit_failure_chance": 0.1,
              "crit_success_chance": 0.15,
              "rewards": {
                "crit_damage": 4,
                "crit_items": [
                  {
                    "chance": 0.25,
                    "item_id": "tools",
                    "quantity": 1
                  }
                ],
                "damage": 0,
                "items": [
                  {
                    "chance": 0.8,
                    "item_id": "scrap_metal",
                    "quantity": 4
                  },
                  {
                    "chance": 0.4,
                    "item_id": "cloth_scraps",
                    "quantity": 1
                  }
                ]
              },
              "stamina_cost": 2,
              "success_rate": 0.55,
              "text": {
                "crit_failure": "Debris shifts and hits your leg! (-4 HP)",
                "crit_success": "You uncover a tool buried deep!",
                "failure": "Just concrete chunks.",
                "success": "You sift through rubble and find scrap metal."
              }
            }
          },
          "template_id": "rubble"
        },
        "subway_vending": {
          "outcomes": {
            "break": {
              "crit_failure_chance": 0.2,
              "crit_success_chance": 0.1,
              "rewards": {
                "crit_damage": 12,
                "crit_items": [
                  {
                    "chance": 0.6,
                    "item_id": "food",
                    "quantity": 2
                  }
                ],
                "damage": 0,
                "items": [
                  {
                    "chance": 0.8,
                    "item_id": "plastic_bottles",
                    "quantity": 3
                  }
                ]
              },
              "stamina_cost": 5,
              "success_rate": 0.6,
              "text": {
                "crit_failure": "The machine topples on you! (-12 HP)",
                "crit_success": "Food packages tumble out!",
                "failure": "The machine won't budge.",
                "success": "You bash open the vending machine and grab bottles."
              }
            },
            "search": {
              "crit_failure_chance": 0.05,
              "crit_success_chance": 0.05,
              "rewards": {
                "crit_damage": 0,
                "crit_items": [],
                "damage": 0,
                "items": [
                  {
                    "chance": 0.6,
                    "item_id": "plastic_bottles",
                    "quantity": 1
                  }
                ]
              },
              "stamina_cost": 2,
              "success_rate": 0.4,
              "text": {
                "crit_failure": "Nothing here.",
                "crit_success": "A bottle still rolls out!",
                "failure": "Completely empty.",
                "success": "You find a bottle in the machine's slot."
              }
            }
          },
          "template_id": "vending_machine"
        }
      }
    },
    {
      "id": "subway_tunnels",
      "name": "\ud83d\ude8a Subway Tunnels",
      "description": "Dark subway tunnels stretch into blackness. Flickering emergency lights cast eerie shadows. The third rail is dead, but you should still watch your step.",
      "image_path": "images/locations/subway_tunnels.webp",
      "x": -4.5,
      "y": -1,
      "interactables": {
        "tunnel_rubble": {
          "template_id": "rubble",
          "outcomes": {
            "search": {
              "stamina_cost": 2,
              "success_rate": 0.5,
              "crit_success_chance": 0.1,
              "crit_failure_chance": 0.15,
              "rewards": {
                "damage": 0,
                "crit_damage": 6,
                "items": [
                  {
                    "item_id": "scrap_metal",
                    "quantity": 3,
                    "chance": 0.8
                  }
                ],
                "crit_items": [
                  {
                    "item_id": "tools",
                    "quantity": 1,
                    "chance": 0.2
                  }
                ]
              },
              "text": {
                "success": "You find scrap metal in the tunnel debris.",
                "failure": "Just rocks and dirt.",
                "crit_success": "A maintenance tool was left behind!",
                "crit_failure": "You stumble and hit the wall! (-6 HP)"
              }
            }
          }
        }
      }
    },
    {
      "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.webp",
      "x": 3.5,
      "y": 4,
      "interactables": {
        "office_rubble": {
          "template_id": "rubble",
          "outcomes": {
            "search": {
              "stamina_cost": 2,
              "success_rate": 0.55,
              "crit_success_chance": 0.1,
              "crit_failure_chance": 0.1,
              "rewards": {
                "damage": 0,
                "crit_damage": 5,
                "items": [
                  {
                    "item_id": "scrap_metal",
                    "quantity": 2,
                    "chance": 0.7
                  },
                  {
                    "item_id": "cloth_scraps",
                    "quantity": 2,
                    "chance": 0.5
                  }
                ],
                "crit_items": []
              },
              "text": {
                "success": "You find scrap metal and cloth in the lobby debris.",
                "failure": "Just broken furniture and papers.",
                "crit_success": "You discover useful materials!",
                "crit_failure": "Glass cuts your hand! (-5 HP)"
              }
            }
          }
        }
      }
    },
    {
      "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.webp",
      "x": 4,
      "y": 4.5,
      "interactables": {
        "office_storage": {
          "template_id": "storage_box",
          "outcomes": {
            "search": {
              "stamina_cost": 2,
              "success_rate": 0.6,
              "crit_success_chance": 0.15,
              "crit_failure_chance": 0.05,
              "rewards": {
                "damage": 0,
                "crit_damage": 0,
                "items": [
                  {
                    "item_id": "cloth_scraps",
                    "quantity": 3,
                    "chance": 0.8
                  },
                  {
                    "item_id": "plastic_bottles",
                    "quantity": 1,
                    "chance": 0.5
                  }
                ],
                "crit_items": [
                  {
                    "item_id": "food",
                    "quantity": 1,
                    "chance": 0.5
                  }
                ]
              },
              "text": {
                "success": "You find cloth and bottles in desk drawers.",
                "failure": "Everything's been picked through already.",
                "crit_success": "Someone left food in their desk!",
                "crit_failure": "Just old paperwork."
              }
            }
          }
        }
      }
    },
    {
      "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": {
        "subway_a_rubble": {
          "template_id": "rubble",
          "outcomes": {
            "search": {
              "stamina_cost": 2,
              "success_rate": 0.5,
              "crit_success_chance": 0.1,
              "crit_failure_chance": 0.15,
              "rewards": {
                "damage": 0,
                "crit_damage": 5,
                "items": [
                  {
                    "item_id": "scrap_metal",
                    "quantity": 3,
                    "chance": 0.75
                  }
                ],
                "crit_items": [
                  {
                    "item_id": "tools",
                    "quantity": 1,
                    "chance": 0.2
                  }
                ]
              },
              "text": {
                "success": "You dig through the garbage and find scrap metal.",
                "failure": "Just rotting trash.",
                "crit_success": "A tool was discarded here!",
                "crit_failure": "You step on sharp debris! (-5 HP)"
              }
            }
          }
        }
      }
    }
  ],
  "connections": [
    {
      "from": "start_point",
      "to": "gas_station",
      "direction": "north"
    },
    {
      "from": "start_point",
      "to": "residential",
      "direction": "east"
    },
    {
      "from": "start_point",
      "to": "plaza",
      "direction": "west"
    },
    {
      "from": "gas_station",
      "to": "start_point",
      "direction": "south"
    },
    {
      "from": "residential",
      "to": "start_point",
      "direction": "west"
    },
    {
      "from": "residential",
      "to": "clinic",
      "direction": "north"
    },
    {
      "from": "residential",
      "to": "warehouse",
      "direction": "southeast"
    },
    {
      "from": "clinic",
      "to": "residential",
      "direction": "south"
    },
    {
      "from": "plaza",
      "to": "start_point",
      "direction": "east"
    },
    {
      "from": "plaza",
      "to": "subway",
      "direction": "west"
    },
    {
      "from": "warehouse",
      "to": "residential",
      "direction": "northwest"
    },
    {
      "from": "warehouse",
      "to": "warehouse_interior",
      "direction": "inside"
    },
    {
      "from": "warehouse_interior",
      "to": "warehouse",
      "direction": "outside"
    },
    {
      "from": "subway",
      "to": "plaza",
      "direction": "east"
    },
    {
      "from": "subway",
      "to": "subway_tunnels",
      "direction": "down"
    },
    {
      "from": "subway_tunnels",
      "to": "subway",
      "direction": "up"
    },
    {
      "from": "office_building",
      "to": "office_interior",
      "direction": "inside"
    },
    {
      "from": "office_interior",
      "to": "office_building",
      "direction": "outside"
    },
    {
      "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"
    },
    {
      "from": "park",
      "to": "start_point",
      "direction": "north"
    },
    {
      "from": "start_point",
      "to": "park",
      "direction": "south"
    },
    {
      "from": "clinic",
      "to": "office_building",
      "direction": "northeast"
    },
    {
      "from": "office_building",
      "to": "clinic",
      "direction": "southwest"
    },
    {
      "from": "clinic",
      "to": "gas_station",
      "direction": "southwest"
    },
    {
      "from": "gas_station",
      "to": "clinic",
      "direction": "northeast"
    },
    {
      "from": "gas_station",
      "to": "overpass",
      "direction": "north"
    },
    {
      "from": "overpass",
      "to": "gas_station",
      "direction": "south"
    },
    {
      "from": "clinic",
      "to": "overpass",
      "direction": "northwest"
    },
    {
      "from": "overpass",
      "to": "clinic",
      "direction": "southeast"
    },
    {
      "from": "park",
      "to": "warehouse",
      "direction": "east"
    },
    {
      "from": "warehouse",
      "to": "park",
      "direction": "west"
    },
    {
      "from": "park",
      "to": "residential",
      "direction": "northeast"
    },
    {
      "from": "residential",
      "to": "park",
      "direction": "southwest"
    },
    {
      "from": "plaza",
      "to": "park",
      "direction": "southeast"
    },
    {
      "from": "park",
      "to": "plaza",
      "direction": "northwest"
    }
  ],
  "danger_config": {
    "start_point": {
      "danger_level": 0,
      "encounter_rate": 0,
      "wandering_chance": 0
    },
    "gas_station": {
      "danger_level": 0,
      "encounter_rate": 0,
      "wandering_chance": 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
      }
    ]
  }
}