{
  "locations": [
    {
      "id": "start_point",
      "name": {
        "en": "🌆 Ruined Downtown Core",
        "es": "🌆 Centro de la ciudad destruido"
      },
      "description": {
        "en": "The wind howls through skeletal skyscrapers. Debris litters the cracked asphalt. You sense danger, but also opportunity.",
        "es": "El viento ruge a través de los esqueléticos rascacielos. El desastre llena el asfalto roto. Sientes el peligro, pero también la oportunidad."
      },
      "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": {
                  "en": "You disturb a nest of rats! They bite you!",
                  "es": "Te topas con una colmena de ratones. Te muerden!"
                },
                "crit_success": "",
                "failure": {
                  "en": "Just rotting garbage. Nothing useful.",
                  "es": "Solo escombros rotos. Nada útil."
                },
                "success": {
                  "en": "Despite the smell, you find some [Plastic Bottles] and [Cloth Scraps].",
                  "es": "A pesar del olor, encuentras algunos [Botellas de plástico] y [Ramas de tela]."
                }
              }
            }
          },
          "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": {
                  "en": "The trunk is rusted shut. You can't get it open.",
                  "es": "El maletero está oxidado. No puedes abrirlo."
                },
                "success": {
                  "en": "With a great heave, you pry the trunk open and find a [Tire Iron]!",
                  "es": "Con un gran esfuerzo, pruebas el maletero y encuentras una [Herramienta de neumáticos]!"
                }
              }
            },
            "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": {
                  "en": "The glovebox is empty except for dust and old receipts.",
                  "es": ""
                },
                "success": {
                  "en": "You find a half-eaten [Stale Chocolate Bar].",
                  "es": ""
                }
              }
            }
          },
          "template_id": "sedan"
        }
      }
    },
    {
      "id": "gas_station",
      "name": {
        "en": "⛽️ Abandoned Gas Station",
        "es": "⛽️ Gasolinera abandonada"
      },
      "description": {
        "en": "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.",
        "es": "El olor a gasolina se suspende en el aire. Un sedán oxidado está en los surtidores, su puerta está abierta. Por detrás de la gasolinera, ves un pequeño almacén de herramientas con una mesa de trabajo."
      },
      "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": {
                  "en": "You find some cloth scraps and plastic in the glovebox.",
                  "es": ""
                },
                "failure": {
                  "en": "The glovebox is empty except for old papers.",
                  "es": ""
                },
                "crit_success": {
                  "en": "You find scrap metal from the dashboard!",
                  "es": ""
                },
                "crit_failure": {
                  "en": "The glovebox is jammed shut.",
                  "es": ""
                }
              }
            },
            "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": {
                  "en": "You force the trunk open and find scrap metal and plastic.",
                  "es": ""
                },
                "failure": {
                  "en": "The trunk is rusted shut.",
                  "es": ""
                },
                "crit_success": {
                  "en": "The trunk contains tools!",
                  "es": ""
                },
                "crit_failure": {
                  "en": "You cut your hand on rusty metal! (-5 HP)",
                  "es": ""
                }
              }
            }
          }
        },
        "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": {
                  "en": "You find scrap metal and cloth in the storage box.",
                  "es": ""
                },
                "failure": {
                  "en": "The storage box is mostly empty.",
                  "es": ""
                },
                "crit_success": {
                  "en": "You discover tools inside!",
                  "es": ""
                },
                "crit_failure": {
                  "en": "Just oil stains and rust.",
                  "es": ""
                }
              }
            }
          }
        }
      }
    },
    {
      "id": "residential",
      "name": {
        "en": "🏘️ Residential Street",
        "es": "🏘️ Calle residencial"
      },
      "description": {
        "en": "A quiet suburban street lined with abandoned homes. Most are boarded up, but a few doors hang open, creaking in the wind.",
        "es": "Una tranquila calle suburbana llena de casas abandonadas. La mayoría están tapiadas, pero algunas puertas están abiertas, movidas por el viento."
      },
      "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": {
                  "en": "The floor collapses beneath you! (-10 HP)",
                  "es": "¡El suelo se derrumba bajo ti! (-10 HP)"
                },
                "crit_success": "",
                "failure": {
                  "en": "The house has already been thoroughly looted. Nothing remains.",
                  "es": "La casa ya ha sido despojada de todo. No queda nada."
                },
                "success": {
                  "en": "You find some useful supplies!",
                  "es": "¡Encuentras algunos suministros útiles!"
                }
              }
            }
          },
          "template_id": "house"
        }
      }
    },
    {
      "id": "clinic",
      "name": {
        "en": "🏥 Old Clinic",
        "es": "🏥 Clínica abandonada"
      },
      "description": {
        "en": "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.",
        "es": "Una pequeña clínica médica, sus ventanas están rotas. El salón de espera es un desastre de sillas invertidas y papeles dispersos. Las habitaciones de examen pueden todavía tener suministros."
      },
      "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": {
                  "en": "The cabinet is empty. Someone got here first.",
                  "es": ""
                },
                "success": {
                  "en": "Jackpot! You find a [First Aid Kit] and some [Bandages]!",
                  "es": ""
                }
              }
            }
          },
          "template_id": "medkit"
        }
      }
    },
    {
      "id": "plaza",
      "name": {
        "en": "🏬 Shopping Plaza",
        "es": "🏬 Plaza de comercio"
      },
      "description": {
        "en": "A strip mall with broken storefronts. Most shops have been thoroughly ransacked, but you might find something if you search carefully.",
        "es": "Una plaza de comercio con vitrinas rotas. La mayoría de las tiendas han sido despojadas, pero puedes encontrar algo si buscas con cuidado."
      },
      "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": {
                  "en": "You smash the vending machine and grab bottles and scrap.",
                  "es": ""
                },
                "failure": {
                  "en": "The machine is too sturdy to break.",
                  "es": ""
                },
                "crit_success": {
                  "en": "Packaged food falls out!",
                  "es": ""
                },
                "crit_failure": {
                  "en": "Glass cuts your arm! (-10 HP)",
                  "es": ""
                }
              }
            },
            "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": {
                  "en": "You find a plastic bottle at the bottom.",
                  "es": ""
                },
                "failure": {
                  "en": "Nothing left to scavenge.",
                  "es": ""
                },
                "crit_success": {
                  "en": "A snack is wedged in the dispenser!",
                  "es": ""
                },
                "crit_failure": {
                  "en": "Already picked clean.",
                  "es": ""
                }
              }
            }
          }
        },
        "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": {
                  "en": "You dig through rubble and find scrap metal and cloth.",
                  "es": ""
                },
                "failure": {
                  "en": "Just broken concrete and dust.",
                  "es": ""
                },
                "crit_success": {
                  "en": "A tool was buried in the debris!",
                  "es": ""
                },
                "crit_failure": {
                  "en": "Sharp debris cuts you! (-5 HP)",
                  "es": ""
                }
              }
            }
          }
        }
      }
    },
    {
      "id": "park",
      "name": {
        "en": "🌳 Suburban Park",
        "es": "🌳 Parque suburbano"
      },
      "description": {
        "en": "An overgrown park with rusted playground equipment. Nature is slowly reclaiming this space. A maintenance shed sits at the far end.",
        "es": "Un parque suburbano deshabitado con equipos de juegos oxidados. La naturaleza está reclamando este espacio. Un almacén de mantenimiento se encuentra al final."
      },
      "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": {
                  "en": "The shed has been picked clean. Only empty shelves remain.",
                  "es": ""
                },
                "success": {
                  "en": "You find some tools!",
                  "es": ""
                }
              }
            }
          },
          "template_id": "toolshed"
        }
      }
    },
    {
      "id": "overpass",
      "name": {
        "en": "🛣️ Highway Overpass",
        "es": "🛣️ Puesto de carretera"
      },
      "description": {
        "en": "A concrete overpass spanning the cracked highway below. Abandoned vehicles litter the road. This is a good vantage point to survey the area.",
        "es": "Un puesto de carretera de cemento que atraviesa la carretera rota por debajo. Vehículos abandonados se desvanecen por la carretera. Este es un buen punto de vista para examinar el área."
      },
      "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": {
                  "en": "You find a half-eaten [Stale Chocolate Bar].",
                  "es": ""
                },
                "failure": {
                  "en": "The glovebox is empty except for dust and old receipts.",
                  "es": ""
                },
                "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": {
                  "en": "With a great heave, you pry the trunk open and find a [Tire Iron]!",
                  "es": ""
                },
                "failure": {
                  "en": "The trunk is rusted shut. You can't get it open.",
                  "es": ""
                },
                "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": {
                  "en": "You find a half-eaten [Stale Chocolate Bar].",
                  "es": ""
                },
                "failure": {
                  "en": "The glovebox is empty except for dust and old receipts.",
                  "es": ""
                },
                "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": {
                  "en": "With a great heave, you pry the trunk open and find a [Tire Iron]!",
                  "es": ""
                },
                "failure": {
                  "en": "The trunk is rusted shut. You can't get it open.",
                  "es": ""
                },
                "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": {
        "en": "🏭 Warehouse District",
        "es": "🏭 Distrito de Almacenes"
      },
      "description": {
        "en": "Rows of industrial warehouses stretch before you. Metal doors creak in the wind. The loading docks are littered with debris and abandoned cargo.",
        "es": "Filas de almacenes industriales se extienden ante ti. Las puertas metálicas crujen en el viento. Los muelles de carga están cubiertos de basura y carga abandonada."
      },
      "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": {
                  "en": "You disturb a nest of rats! They bite you! (-8 HP)",
                  "es": ""
                },
                "crit_success": "",
                "failure": {
                  "en": "Just rotting garbage. Nothing useful.",
                  "es": ""
                },
                "success": {
                  "en": "Despite the smell, you find some [Plastic Bottles] and [Cloth Scraps].",
                  "es": ""
                }
              }
            }
          },
          "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": {
                  "en": "The shed has been picked clean. Only empty shelves remain.",
                  "es": ""
                },
                "success": {
                  "en": "You find some tools: [Rusty Nails], [Wood Planks], and a [Flashlight]!",
                  "es": ""
                }
              }
            }
          },
          "template_id": "toolshed"
        }
      }
    },
    {
      "id": "warehouse_interior",
      "name": {
        "en": "📦 Warehouse Interior",
        "es": "📦 Interior del almacén"
      },
      "description": {
        "en": "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.",
        "es": "Dentro del almacén, las estanterías altas proyectan sombras largas. Los cajones y los palets dispersos sugieren que esto alguna vez fue un centro de distribución. La puerta del despacho de la oficina de atrás se coloca abierta."
      },
      "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": {
                  "en": "You successfully 🔎 search box.",
                  "es": ""
                },
                "failure": {
                  "en": "You failed to 🔎 search box.",
                  "es": ""
                },
                "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": {
        "en": "🚇 Subway Station Entrance",
        "es": "🚇 Entrada de la Estación de Metro"
      },
      "description": {
        "en": "Stairs descend into darkness. The entrance to an abandoned subway station yawns before you. Emergency lighting flickers somewhere below.",
        "es": "Los escalones descienden en la oscuridad. La entrada a una estación de metro abandonada se abre ante ti. La luz de emergencia titila por debajo de algún lugar."
      },
      "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": {
                  "en": "Debris shifts and hits your leg! (-4 HP)",
                  "es": ""
                },
                "crit_success": {
                  "en": "You uncover a tool buried deep!",
                  "es": ""
                },
                "failure": {
                  "en": "Just concrete chunks.",
                  "es": ""
                },
                "success": {
                  "en": "You sift through rubble and find scrap metal.",
                  "es": ""
                }
              }
            }
          },
          "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": {
                  "en": "The machine topples on you! (-12 HP)",
                  "es": ""
                },
                "crit_success": {
                  "en": "Food packages tumble out!",
                  "es": ""
                },
                "failure": {
                  "en": "The machine won't budge.",
                  "es": ""
                },
                "success": {
                  "en": "You bash open the vending machine and grab bottles.",
                  "es": ""
                }
              }
            },
            "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": {
                  "en": "Nothing here.",
                  "es": ""
                },
                "crit_success": {
                  "en": "A bottle still rolls out!",
                  "es": ""
                },
                "failure": {
                  "en": "Completely empty.",
                  "es": ""
                },
                "success": {
                  "en": "You find a bottle in the machine's slot.",
                  "es": ""
                }
              }
            }
          },
          "template_id": "vending_machine"
        }
      }
    },
    {
      "id": "subway_tunnels",
      "name": {
        "en": "🚊 Subway Tunnels",
        "es": "🚊 Túneles de Metro"
      },
      "description": {
        "en": "Dark subway tunnels stretch into blackness. Flickering emergency lights cast eerie shadows. The third rail is dead, but you should still watch your step.",
        "es": "Los túneles de metro oscuros se extienden en la oscuridad. Las luces de emergencia titilan castellando sombras. El tercer rail está muerto, pero aún debes prestar atención a tus pies."
      },
      "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": {
                  "en": "You find scrap metal in the tunnel debris.",
                  "es": ""
                },
                "failure": {
                  "en": "Just rocks and dirt.",
                  "es": ""
                },
                "crit_success": {
                  "en": "A maintenance tool was left behind!",
                  "es": ""
                },
                "crit_failure": {
                  "en": "You stumble and hit the wall! (-6 HP)",
                  "es": ""
                }
              }
            }
          }
        }
      }
    },
    {
      "id": "office_building",
      "name": {
        "en": "🏢 Office Building",
        "es": "🏢 Edificio de Oficinas"
      },
      "description": {
        "en": "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.",
        "es": "Un edificio de oficinas de cinco pisos con ventanas rotas. El lobby está despeinado, pero las escaleras parecen intactas. Puedes escuchar el viento susurrando por las plantas superiores."
      },
      "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": {
                  "en": "You find scrap metal and cloth in the lobby debris.",
                  "es": ""
                },
                "failure": {
                  "en": "Just broken furniture and papers.",
                  "es": ""
                },
                "crit_success": {
                  "en": "You discover useful materials!",
                  "es": ""
                },
                "crit_failure": {
                  "en": "Glass cuts your hand! (-5 HP)",
                  "es": ""
                }
              }
            }
          }
        }
      }
    },
    {
      "id": "office_interior",
      "name": {
        "en": "💼 Office Floors",
        "es": "💼 Pisos de Oficinas"
      },
      "description": {
        "en": "Cubicles stretch across the floor. Papers scatter in the breeze from broken windows. Filing cabinets stand open, already ransacked. A corner office looks promising.",
        "es": "Los cubículos se extienden por el suelo. Los papeles se dispersan en el viento de las ventanas rotas. Los cajones de archivo se colocan abiertos, ya despojados. Un despacho de esquina parece prometedor."
      },
      "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": {
                  "en": "You find cloth and bottles in desk drawers.",
                  "es": ""
                },
                "failure": {
                  "en": "Everything's been picked through already.",
                  "es": ""
                },
                "crit_success": {
                  "en": "Someone left food in their desk!",
                  "es": ""
                },
                "crit_failure": {
                  "en": "Just old paperwork.",
                  "es": ""
                }
              }
            }
          }
        }
      }
    },
    {
      "id": "location_1760791397492",
      "name": {
        "en": "Subway Section A",
        "es": "Sección A del metro"
      },
      "description": {
        "en": "A shady dimly lit subway section. All you can see are abandoned train tracks and some garbage lying around. ",
        "es": "Una sección oscura y despeinada del metro. Todo lo que puedes ver son rutas de tren abandonadas y algunos desechos de basura por el suelo."
      },
      "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": {
                  "en": "You dig through the garbage and find scrap metal.",
                  "es": ""
                },
                "failure": {
                  "en": "Just rotting trash.",
                  "es": ""
                },
                "crit_success": {
                  "en": "A tool was discarded here!",
                  "es": ""
                },
                "crit_failure": {
                  "en": "You step on sharp debris! (-5 HP)",
                  "es": ""
                }
              }
            }
          }
        }
      }
    }
  ],
  "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
      }
    ]
  }
}