From 731bdaad527d0c58abb34738878971cbb5dcdd0e Mon Sep 17 00:00:00 2001
From: Peak <45887317+Peakwastaken@users.noreply.github.com>
Date: Tue, 14 May 2024 21:03:40 -0400
Subject: [PATCH] Adds Oil Platform specials to spawn in the ocean (#73469)
* Adds Oil Platform specials to spawn in the ocean
#### Summary
Content "Adds a new Special, Oil Platforms, to spawn in the ocean."
#### Purpose of change
The ocean is completely devoid of content right now, and I understand it might make it very unappealing to work on before anything is actually there to make people interested in going there, so I figured I'd get the machine rolling while trying my hands at doing some mapping for CDDA !
#### Describe the solution
This special is UNIQUE with a 5% chance of spawning per overmap, I tried using check_for_locations to prevent it from spawning to close to the short with no luck, so city_distance is what's kind of doing that for now.
It features mostly industrial loot (Tools, electronics, work/diving clothes, heavy machinery, solar pannels), as well as quite a few skill books, medicine, food, some chemistry ingredients, and the potential for 55gal drums containing various fuel, as well as newly added crude oil (which I'd like to make a recipe to turn into fuel with a catalytic cracking reactor in the future).
There's a 20% chance for a helicopter spawn on the helipad, which might be a wreck (from the "helicopters" spawn group), and four 10% chance for single motor boat spawns by the pillars on the water. There's also up to three inflatable boats floating down below the emergency dockings on the east side.
Besides the most common types of zombies, It is mostly populated by zombie/feral mechanics or crewmen, swimmer zombies, and there are small chances of zapper/gasoline zombies to spawn. For the latter, there are four hardcoded locations with 5% chance of spawning, and some further chances in the zombie group a week in. Figured it'd work well thematically and could be interesting as either a boon or a bane depending on how you handle it.
I tried to stick as best as I could to what an oil platform could look like by doing quite a bit of research, the only thing I really skirted around was for the plume; a chimney that usually extends quite a ways out over the ocean to burn excess gas. I didn't want there to be somewhere you could just easily walk to and attract all the zombies to take a dive so easily, so it mostly goes up in height.
I went with a gravity based structure, the supporting pillars extending all the way to the bottom of the ocean, because I'd like, in a potential follow up, leave some room to add a small chance of it having a submerged hidden lab kind of thing in the concrete slab at the bottom. Such pillars usually are used to house piping that'd connect to underwater pipe-lines, so I figured it'd be good like this for now anyways ! Plus it makes it easier to justify every bit of piping that runs along the platform, which i've tried to do as best as possible.
#### Describe alternatives you've considered
- As said above, adding a chance for a hidden submerged lab to be connected to the pillars going down - probably for a new project if it seems like a good idea.
- Adding ramps instead of stairs to the various walkways - seemed like idle zombies liked to kill themselves by walking up and dropping back down.
- Making it bigger and globally_unique, but I'd rather have both if possible !
- Adding even more chances for gasoline zombies to spawn as time progresses.
#### Testing
Spawning in a new world, teleporting to the ocean, seems to spawn fine.
Going around to see if I've made any mistakes, fixed all the ones I could see.
#### Additional context
Screenshots : (I'm not sure if this'll work but I'll try)
* Of course I spot a mistake right after I create the PR
* Update data/json/furniture_and_terrain/terrain-manufactured.json
* Update data/json/furniture_and_terrain/terrain-manufactured.json
* Fixed wrong surface water type, a wrongly aligned pipe, and made the platform a little longer to avoid zombies spawning outside of its berth
* Added a catalytic cracking reactor, reworked the drum groups to make more sense where they spawn
* Fixed crude_oil's material and ammo type, removed processed fuel and the rope leading to the crane, replaced forklifts by trolleys, increased minimum city distance and liquid amount in containers
* Fixed crude_oil's material and ammo type, removed processed fuel and the rope leading to the crane, replaced forklifts by trolleys, increased minimum city distance and liquid amount in containers
* Accidentally modified the crude lamp oil energy value, this should fix it (Sorry, struggling a little with github here)
* Update data/json/mapgen/oil_platform/oil_platform_z2.json
* Update data/json/furniture_and_terrain/terrain-manufactured.json
* Update data/json/mapgen/oil_platform/oil_platform_z2.json
* Apply suggestions from code review
* Switched the tanks leading to the generators from salt water to diesel (didn't make sense)
* Update overmap_terrain_coverage_whitelist.json
* Update data/json/items/fuel.json
---------
Co-authored-by: Maleclypse <54345792+Maleclypse@users.noreply.github.com>
---
.../terrain-manufactured.json | 96 ++++++
data/json/items/ammo_types.json | 6 +
data/json/items/fuel.json | 24 ++
.../mapgen/oil_platform/oil_platform_uw.json | 117 +++++++
.../mapgen/oil_platform/oil_platform_z-8.json | 117 +++++++
.../mapgen/oil_platform/oil_platform_z-9.json | 117 +++++++
.../mapgen/oil_platform/oil_platform_z0.json | 151 +++++++++
.../mapgen/oil_platform/oil_platform_z1.json | 117 +++++++
.../mapgen/oil_platform/oil_platform_z2.json | 178 +++++++++++
.../mapgen/oil_platform/oil_platform_z3.json | 163 ++++++++++
.../mapgen/oil_platform/oil_platform_z4.json | 126 ++++++++
.../mapgen/oil_platform/oil_platform_z5.json | 137 ++++++++
.../mapgen/oil_platform/oil_platform_z6.json | 117 +++++++
.../mapgen/oil_platform/oil_platform_z7.json | 116 +++++++
.../mapgen_palettes/oil_platform_palette.json | 297 ++++++++++++++++++
data/json/materials.json | 11 +
data/json/monstergroups/zombies.json | 27 ++
.../overmap/overmap_special/oil_platform.json | 216 +++++++++++++
.../overmap_terrain_oil_platform.json | 168 ++++++++++
.../overmap_terrain_coverage_whitelist.json | 134 +++++++-
20 files changed, 2434 insertions(+), 1 deletion(-)
create mode 100644 data/json/mapgen/oil_platform/oil_platform_uw.json
create mode 100644 data/json/mapgen/oil_platform/oil_platform_z-8.json
create mode 100644 data/json/mapgen/oil_platform/oil_platform_z-9.json
create mode 100644 data/json/mapgen/oil_platform/oil_platform_z0.json
create mode 100644 data/json/mapgen/oil_platform/oil_platform_z1.json
create mode 100644 data/json/mapgen/oil_platform/oil_platform_z2.json
create mode 100644 data/json/mapgen/oil_platform/oil_platform_z3.json
create mode 100644 data/json/mapgen/oil_platform/oil_platform_z4.json
create mode 100644 data/json/mapgen/oil_platform/oil_platform_z5.json
create mode 100644 data/json/mapgen/oil_platform/oil_platform_z6.json
create mode 100644 data/json/mapgen/oil_platform/oil_platform_z7.json
create mode 100644 data/json/mapgen_palettes/oil_platform_palette.json
create mode 100644 data/json/overmap/overmap_special/oil_platform.json
create mode 100644 data/json/overmap/overmap_terrain/overmap_terrain_oil_platform.json
diff --git a/data/json/furniture_and_terrain/terrain-manufactured.json b/data/json/furniture_and_terrain/terrain-manufactured.json
index 219d5f22e204d..21c897d7c17db 100644
--- a/data/json/furniture_and_terrain/terrain-manufactured.json
+++ b/data/json/furniture_and_terrain/terrain-manufactured.json
@@ -447,6 +447,29 @@
]
}
},
+ {
+ "type": "terrain",
+ "id": "t_truss_pillar",
+ "name": "truss pillar",
+ "description": "A hollow metal pillar composed of interconnected beams that distribute loads efficiently while maintaining stability and strength.",
+ "symbol": "H",
+ "color": "light_gray",
+ "looks_like": "t_radio_tower",
+ "move_cost": 0,
+ "flags": [ "TRANSPARENT", "NOITEM", "PERMEABLE", "THIN_OBSTACLE" ],
+ "bash": {
+ "str_min": 60,
+ "str_max": 210,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "ter_set": "t_concrete",
+ "items": [
+ { "item": "steel_lump", "count": [ 1, 2 ] },
+ { "item": "steel_chunk", "count": [ 1, 4 ] },
+ { "item": "scrap", "count": [ 3, 12 ] }
+ ]
+ }
+ },
{
"type": "terrain",
"id": "t_sewage_pipe",
@@ -483,6 +506,79 @@
"sound": "metal screeching!",
"sound_fail": "clang!",
"ter_set": "t_sewage",
+ "items": [
+ { "item": "steel_lump", "count": [ 1, 4 ] },
+ { "item": "steel_chunk", "count": [ 1, 4 ] },
+ { "item": "pipe_fittings", "count": [ 0, 4 ] },
+ { "item": "scrap", "count": [ 3, 7 ] }
+ ]
+ }
+ },
+ {
+ "type": "terrain",
+ "id": "t_drill_machinery",
+ "name": "drilling machinery",
+ "description": "All the machinery required to operate and control de drill string and the drill bit down below. It is now inactive.",
+ "symbol": "&",
+ "color": "black",
+ "looks_like": "f_machinery_heavy",
+ "move_cost": 0,
+ "coverage": 50,
+ "flags": [ "NOITEM", "WALL" ],
+ "bash": {
+ "str_min": 20,
+ "str_max": 150,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "ter_set": "t_open_air",
+ "items": [
+ { "item": "steel_plate", "count": [ 0, 4 ] },
+ { "item": "steel_chunk", "count": [ 1, 4 ] },
+ { "item": "scrap", "count": [ 3, 7 ] }
+ ]
+ }
+ },
+ {
+ "type": "terrain",
+ "id": "t_drill_string",
+ "name": "drill string",
+ "description": "An extremely resistant length of mechanical tubing used to reach deep under water and drill into pockets of oil.",
+ "symbol": "O",
+ "color": "black",
+ "looks_like": "t_little_column",
+ "move_cost": 0,
+ "coverage": 50,
+ "flags": [ "NOITEM", "THIN_OBSTACLE", "PERMEABLE" ],
+ "bash": {
+ "str_min": 30,
+ "str_max": 150,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "ter_set": "t_open_air",
+ "items": [
+ { "item": "steel_plate", "count": [ 0, 4 ] },
+ { "item": "steel_chunk", "count": [ 1, 4 ] },
+ { "item": "scrap", "count": [ 3, 7 ] }
+ ]
+ }
+ },
+ {
+ "type": "terrain",
+ "id": "t_underwater_drill_string",
+ "name": "drill string",
+ "description": "An extremely resistant length of mechanical tubing used to reach deep under water and drill into pockets of oil.",
+ "symbol": "O",
+ "color": "blue",
+ "looks_like": "t_little_column",
+ "move_cost": 0,
+ "coverage": 50,
+ "flags": [ "NOITEM", "THIN_OBSTACLE", "PERMEABLE" ],
+ "bash": {
+ "str_min": 30,
+ "str_max": 150,
+ "sound": "metal screeching!",
+ "sound_fail": "clang!",
+ "ter_set": "t_saltwater_cube",
"items": [
{ "item": "steel_lump", "prob": 50 },
{ "item": "steel_chunk", "count": [ 1, 4 ] },
diff --git a/data/json/items/ammo_types.json b/data/json/items/ammo_types.json
index 9e29ba4ecc4d4..9a0d870ee8340 100644
--- a/data/json/items/ammo_types.json
+++ b/data/json/items/ammo_types.json
@@ -443,6 +443,12 @@
"name": "motor oil",
"default": "motor_oil"
},
+ {
+ "type": "ammunition_type",
+ "id": "crude_oil",
+ "name": "crude oil",
+ "default": "crude_oil"
+ },
{
"type": "ammunition_type",
"id": "thread",
diff --git a/data/json/items/fuel.json b/data/json/items/fuel.json
index 2b752fc2772d2..db7171259bd2c 100644
--- a/data/json/items/fuel.json
+++ b/data/json/items/fuel.json
@@ -203,6 +203,30 @@
"damage": { "damage_type": "heat", "amount": 2, "armor_penetration": 2 },
"effects": [ "FLAME", "STREAM" ]
},
+ {
+ "id": "crude_oil",
+ "type": "AMMO",
+ "name": { "str_sp": "crude oil" },
+ "description": "A thick black slurry that can be refined to produce usable products including gasoline or diesel",
+ "category": "fuel",
+ "weight": "800 mg",
+ "volume": "200ml",
+ "price": 20,
+ "price_postapoc": 50,
+ "count": 250,
+ "stack_size": 200,
+ "phase": "liquid",
+ "looks_like": "diesel",
+ "container": "bottle_plastic",
+ "sealed": false,
+ "symbol": "=",
+ "color": "black",
+ "material": [ "crude_oil" ],
+ "ammo_type": "crude_oil",
+ "range": 3,
+ "damage": { "damage_type": "heat", "amount": 5, "armor_penetration": 5 },
+ "effects": [ "FLAME", "STREAM", "INCENDIARY" ]
+ },
{
"id": "napalm",
"type": "AMMO",
diff --git a/data/json/mapgen/oil_platform/oil_platform_uw.json b/data/json/mapgen/oil_platform/oil_platform_uw.json
new file mode 100644
index 0000000000000..e511e91d1b6b6
--- /dev/null
+++ b/data/json/mapgen/oil_platform/oil_platform_uw.json
@@ -0,0 +1,117 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [
+ [ "oil_platform_1a_uw", "oil_platform_1b_uw", "oil_platform_1c_uw" ],
+ [ "oil_platform_2a_uw", "oil_platform_2b_uw", "oil_platform_2c_uw" ],
+ [ "oil_platform_3a_uw", "oil_platform_3b_uw", "oil_platform_3c_uw" ],
+ [ "oil_platform_4a_uw", "oil_platform_4b_uw", "oil_platform_4c_uw" ]
+ ],
+ "object": {
+ "fill_ter": "t_metal_floor",
+ "rows": [
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "//////////////#####//////////////////////////////////#####//////////////",
+ "////////////#########//////////////////////////////#########////////////",
+ "///////////###########////////////////////////////###########///////////",
+ "//////////#############//////////////////////////#############//////////",
+ "//////////#############//////////////////////////#############//////////",
+ "/////////###############////////////////////////###############/////////",
+ "/////////######o.o######////////////////////////######o.o######/////////",
+ "/////////######.X.######////////////////////////######.X.######/////////",
+ "/////////######o.o######////////////////////////######o.o######/////////",
+ "/////////###############////////////////////////###############/////////",
+ "//////////#############//////////////////////////#############//////////",
+ "//////////#############//////////////////////////#############//////////",
+ "///////////###########////////////////////////////###########///////////",
+ "////////////#########//////////////////////////////#########////////////",
+ "//////////////#####//////////////////////////////////#####//////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "///////////////////////////////////‼o///////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "//////////////#####//////////////////////////////////#####//////////////",
+ "////////////#########//////////////////////////////#########////////////",
+ "///////////###########////////////////////////////###########///////////",
+ "//////////#############//////////////////////////#############//////////",
+ "//////////#############//////////////////////////#############//////////",
+ "/////////###############////////////////////////###############/////////",
+ "/////////######o.o######////////////////////////######o.o######/////////",
+ "/////////######.X.######////////////////////////######.X.######/////////",
+ "/////////######o.o######////////////////////////######o.o######/////////",
+ "/////////###############////////////////////////###############/////////",
+ "//////////#############//////////////////////////#############//////////",
+ "//////////#############//////////////////////////#############//////////",
+ "///////////###########////////////////////////////###########///////////",
+ "////////////#########//////////////////////////////#########////////////",
+ "//////////////#####//////////////////////////////////#####//////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////"
+ ],
+ "palettes": [ "oil_platform_palette" ],
+ "gaspumps": { },
+ "signs": { },
+ "terrain": { "‼": "t_underwater_drill_string" }
+ }
+ }
+]
diff --git a/data/json/mapgen/oil_platform/oil_platform_z-8.json b/data/json/mapgen/oil_platform/oil_platform_z-8.json
new file mode 100644
index 0000000000000..29c15ccb36140
--- /dev/null
+++ b/data/json/mapgen/oil_platform/oil_platform_z-8.json
@@ -0,0 +1,117 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [
+ [ "oil_platform_1a_z-8", "oil_platform_1b_z-8", "oil_platform_1c_z-8" ],
+ [ "oil_platform_2a_z-8", "oil_platform_2b_z-8", "oil_platform_2c_z-8" ],
+ [ "oil_platform_3a_z-8", "oil_platform_3b_z-8", "oil_platform_3c_z-8" ],
+ [ "oil_platform_4a_z-8", "oil_platform_4b_z-8", "oil_platform_4c_z-8" ]
+ ],
+ "object": {
+ "fill_ter": "t_metal_floor",
+ "rows": [
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "//////////////#####☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#####//////////////",
+ "////////////#########☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#########////////////",
+ "///////////###########☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼###########///////////",
+ "//////////#############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#############//////////",
+ "//////////#############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#############//////////",
+ "/////////###############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼###############/////////",
+ "/////////######o.o######☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼######o.o######/////////",
+ "/////////######.X.######☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼######.X.######/////////",
+ "/////////######o.o######☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼######o.o######/////////",
+ "/////////###############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼###############/////////",
+ "/////////☼#############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#############☼/////////",
+ "/////////☼#############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#############☼/////////",
+ "/////////☼☼###########☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼###########☼☼/////////",
+ "/////////☼☼☼#########☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#########☼☼☼/////////",
+ "/////////☼☼☼☼☼#####☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#####☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼//////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼////////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼////////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼//////////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼//////////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼//////‼o//////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼//////////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼//////////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼////////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼////////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼//////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼/////////",
+ "/////////☼☼☼☼☼#####☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#####☼☼☼☼☼/////////",
+ "/////////☼☼☼#########☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#########☼☼☼/////////",
+ "/////////☼☼###########☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼###########☼☼/////////",
+ "/////////☼#############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#############☼/////////",
+ "/////////☼#############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#############☼/////////",
+ "/////////###############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼###############/////////",
+ "/////////######o.o######☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼######o.o######/////////",
+ "/////////######.X.######☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼######.X.######/////////",
+ "/////////######o.o######☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼######o.o######/////////",
+ "/////////###############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼###############/////////",
+ "//////////#############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#############//////////",
+ "//////////#############☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#############//////////",
+ "///////////###########☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼###########///////////",
+ "////////////#########☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#########////////////",
+ "//////////////#####☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼☼#####//////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////"
+ ],
+ "palettes": [ "oil_platform_palette" ],
+ "gaspumps": { },
+ "signs": { },
+ "terrain": { "☼": "t_lake_bed_concrete", "‼": "t_underwater_drill_string" }
+ }
+ }
+]
diff --git a/data/json/mapgen/oil_platform/oil_platform_z-9.json b/data/json/mapgen/oil_platform/oil_platform_z-9.json
new file mode 100644
index 0000000000000..9daa4cd199e62
--- /dev/null
+++ b/data/json/mapgen/oil_platform/oil_platform_z-9.json
@@ -0,0 +1,117 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [
+ [ "oil_platform_1a_z-9", "oil_platform_1b_z-9", "oil_platform_1c_z-9" ],
+ [ "oil_platform_2a_z-9", "oil_platform_2b_z-9", "oil_platform_2c_z-9" ],
+ [ "oil_platform_3a_z-9", "oil_platform_3b_z-9", "oil_platform_3c_z-9" ],
+ [ "oil_platform_4a_z-9", "oil_platform_4b_z-9", "oil_platform_4c_z-9" ]
+ ],
+ "object": {
+ "fill_ter": "t_metal_floor",
+ "rows": [
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "//////////////############################################//////////////",
+ "////////////################################################////////////",
+ "///////////##################################################///////////",
+ "//////////####################################################//////////",
+ "//////////####################################################//////////",
+ "/////////######################################################/////////",
+ "/////////######o.o####################################o.o######/////////",
+ "/////////######.^.####################################.^.######/////////",
+ "/////////######o.o####################################o.o######/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////########################☼☼☼☼☼☼########################/////////",
+ "/////////#######################☼☼☼☼☼☼☼☼#######################/////////",
+ "/////////#####################☼☼☼☼☼☼☼☼☼☼☼☼#####################/////////",
+ "/////////#####################☼☼☼☼☼☼☼☼☼☼☼☼#####################/////////",
+ "/////////####################☼☼☼☼☼☼☼☼☼☼☼☼☼☼####################/////////",
+ "/////////####################☼☼☼☼☼☼☼☼☼☼☼☼☼☼####################/////////",
+ "/////////####################☼☼☼☼☼☼‼o☼☼☼☼☼☼####################/////////",
+ "/////////####################☼☼☼☼☼☼☼☼☼☼☼☼☼☼####################/////////",
+ "/////////####################☼☼☼☼☼☼☼☼☼☼☼☼☼☼####################/////////",
+ "/////////#####################☼☼☼☼☼☼☼☼☼☼☼☼#####################/////////",
+ "/////////#####################☼☼☼☼☼☼☼☼☼☼☼☼#####################/////////",
+ "/////////#######################☼☼☼☼☼☼☼☼#######################/////////",
+ "/////////########################☼☼☼☼☼☼########################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######################################################/////////",
+ "/////////######o.o####################################o.o######/////////",
+ "/////////######.^.####################################.^.######/////////",
+ "/////////######o.o####################################o.o######/////////",
+ "/////////######################################################/////////",
+ "//////////####################################################//////////",
+ "//////////####################################################//////////",
+ "///////////##################################################///////////",
+ "////////////################################################////////////",
+ "//////////////############################################//////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////",
+ "////////////////////////////////////////////////////////////////////////"
+ ],
+ "palettes": [ "oil_platform_palette" ],
+ "gaspumps": { },
+ "signs": { },
+ "terrain": { "☼": "t_ocean_bed", "‼": "t_underwater_drill_string" }
+ }
+ }
+]
diff --git a/data/json/mapgen/oil_platform/oil_platform_z0.json b/data/json/mapgen/oil_platform/oil_platform_z0.json
new file mode 100644
index 0000000000000..d8e87457b25fe
--- /dev/null
+++ b/data/json/mapgen/oil_platform/oil_platform_z0.json
@@ -0,0 +1,151 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [
+ [ "oil_platform_1a_0", "oil_platform_1b_0", "oil_platform_1c_0" ],
+ [ "oil_platform_2a_0", "oil_platform_2b_0", "oil_platform_2c_0" ],
+ [ "oil_platform_3a_0", "oil_platform_3b_0", "oil_platform_3c_0" ],
+ [ "oil_platform_4a_0", "oil_platform_4b_0", "oil_platform_4c_0" ]
+ ],
+ "object": {
+ "fill_ter": "t_bridge",
+ "rows": [
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~i~ii~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~i~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~i~~~i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ii~~i~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~i~ZZZ~i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~i~~ZZZ~~i~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~i~Z^Z~~i~~~~~~~~~~~~~~~~~~~~~~~~~~~i~~i~~Z^Z~~i~~~~~~~~~~~~",
+ "~~~~~~~~~~~~i~#####~~~~i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#####~~~~~~~~~~~~~~",
+ "~~~~~~~~~~i~#########~~~~~~~~~~~~~~~~~~~~~~~~~~~i~~#########~~i~~~~~~~~~",
+ "~~~~~~~~i~~###########~~i~~~~~~~~~~~~~~~~~~~~~~~~~###########~~i~~~~~~~~",
+ "~~~~~~~~~~#############~~~~~~~~~~~~~~~~~~~~~~~~~~#############~~~~~~~~~~",
+ "~~~~~~~i~~#############~~~~~~~~~~~~~~~~~~~~~~~~~~#############~i~~~~~~~~",
+ "~~~~~~i~~###############~~~~~~~~~~~~~~~~~~~~~~~~###############i~i~~~~~~",
+ "~~~~~i~ZZ######o.o######~~~~~~~~~~~~~~~~~~~~~~~~######o.o######ZZ~i~~~~~",
+ "~~~~i~~Z^######.X.######~~~~~~~~~~~~~~~~~~~~~~~~######.X.######^Z~~i~~~~",
+ "~~~~~i~ZZ######o.o######~~~~~~~~~~~~~~~~~~~~~~~~######o.o######ZZ~i~~~~~",
+ "~~~~~~~i~###############~~~~~~~~~~~~~~~~~~~~~~~~###############~~i~~~~~~",
+ "~~~~~~i~~~#############~~~~~~~~~~~~~~~~~~~~~~~~~~#############~~i~~~~~~~",
+ "~~~~~~~~~~#############~~~~~~~~~~~~~~~~~~~~~~~~~~#############~~~~~~~~~~",
+ "~~~~~~~i~~~###########~~~~~~~~~~~~~~~~~~~~~~~~~i~~###########~i~~~~~~~~~",
+ "~~~~~~~~i~~~#########~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#########~i~~~~~~~~~~",
+ "~~~~~~~~~~i~~~#####~~~i~~~~~~~~~~~~~~~~~~~~~~~~~~i~~~#####~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~i~~~~~i~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~i~~i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~‼o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~n~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~i~~i~~~~i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~i~i~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~#####~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~i~~#####~i~~~~~~~~~~~~",
+ "~~~~~~~~~i~~#########~~i~~~~~~~~~~~~~~~~~~~~~~~~~i~#########~i~~~~~~~~~~",
+ "~~~~~~~~i~~###########~~~~~~~~~~~~~~~~~~~~~~~~~~~~###########~~~~~~~~~~~",
+ "~~~~~~~i~~#############~i~~~~~~~~~~~~~~~~~~~~~~i~#############i~~~~~~~~~",
+ "~~~~~~~~~~#############~~~~~~~~~~~~~~~~~~~~~~~~~~#############~i~~~~~~~~",
+ "~~~~~i~~~###############~~~~~~~~~~~~~~~~~~~~~~~~###############~~i~~~~~~",
+ "~~~~~i~ZZ######o.o######~~~~~~~~~~~~~~~~~~~~~~~~######o.o######ZZ~i~~~~~",
+ "~~~~i~~Z^######.X.######~~~~~~~~~~~~~~~~~~~~~~~~######.X.######^Z~i~~~~~",
+ "~~~i~~~ZZ######o.o######~~~~~~~~~~~~~~~~~~~~~~~~######o.o######ZZ~i~~~~~",
+ "~~~~~~i~~###############~~~~~~~~~~~~~~~~~~~~~~~~###############~~i~~~~~~",
+ "~~~~~~~~i~#############~~~~~~~~~~~~~~~~~~~~~~~~~~#############~i~~~~~~~~",
+ "~~~~~~i~~~#############~~~~~~~~~~~~~~~~~~~~~~~~~~#############~i~~~~~~~~",
+ "~~~~~~~~~~~###########~~~~~~~~~~~~~~~~~~~~~~~~~~~~###########~~~~~~~~~~~",
+ "~~~~~~~~~i~~#########~~i~~~~~~~~~~~~~~~~~~~~~~~i~~~#########~~i~~~~~~~~~",
+ "~~~~~~~~~~~i~~#####~~i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~#####~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~i~~Z^Z~i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~i~~~~Z^Z~~i~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~i~ZZZ~~i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~i~ZZZ~~i~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~i~~ii~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~i~ii~~i~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~i~i~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~i~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~",
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+ ],
+ "palettes": [ "oil_platform_palette" ],
+ "gaspumps": { },
+ "signs": { },
+ "terrain": { "i": "t_water_dp", "n": "t_water_dp", "‼": "t_drill_string" },
+ "place_vehicles": [
+ {
+ "vehicle": "boat_motor_single",
+ "x": [ 10, 14 ],
+ "y": [ 10, 14 ],
+ "rotation": [ 0, 90, 180, 270 ],
+ "chance": 10,
+ "status": -1
+ },
+ {
+ "vehicle": "boat_motor_single",
+ "x": [ 58, 62 ],
+ "y": [ 80, 88 ],
+ "rotation": [ 0, 90, 180, 270 ],
+ "chance": 10,
+ "status": -1
+ },
+ {
+ "vehicle": "boat_motor_single",
+ "x": [ 10, 14 ],
+ "y": [ 80, 88 ],
+ "rotation": [ 0, 90, 180, 270 ],
+ "chance": 10,
+ "status": -1
+ },
+ {
+ "vehicle": "boat_motor_single",
+ "x": [ 58, 62 ],
+ "y": [ 10, 14 ],
+ "rotation": [ 0, 90, 180, 270 ],
+ "chance": 10,
+ "status": -1
+ }
+ ]
+ }
+ }
+]
diff --git a/data/json/mapgen/oil_platform/oil_platform_z1.json b/data/json/mapgen/oil_platform/oil_platform_z1.json
new file mode 100644
index 0000000000000..eeff6a63547ae
--- /dev/null
+++ b/data/json/mapgen/oil_platform/oil_platform_z1.json
@@ -0,0 +1,117 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [
+ [ "oil_platform_1a_1", "oil_platform_1b_1", "oil_platform_1c_1" ],
+ [ "oil_platform_2a_1", "oil_platform_2b_1", "oil_platform_2c_1" ],
+ [ "oil_platform_3a_1", "oil_platform_3b_1", "oil_platform_3c_1" ],
+ [ "oil_platform_4a_1", "oil_platform_4b_1", "oil_platform_4c_1" ]
+ ],
+ "object": {
+ "fill_ter": "t_strconc_floor_no_roof",
+ "rows": [
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "...............===....................................===...............",
+ "...............=v=....................................=v=...............",
+ "..............==_==..................................==_==..............",
+ "............===___===..............................===__i===............",
+ "...........==_i___i_==............................==_______==...........",
+ "..........==___###___==..........................==i__###___==..........",
+ "..........=___#####___=..........................=___#####_i_=..........",
+ ".........==__#######_i==........................==__#######__==.........",
+ ".......===_i###o.o###__==========================__###o.o###__===.......",
+ ".......=v___###.X.###___ZZZZZZZZZZZZZZZZZZZZZZZZ___###.X.###_i_v=.......",
+ ".......===__###o.o###__============^^============__###o.o###__===.......",
+ ".........==__#######_i==..........====..........==__#######__==.........",
+ "..........=_i_#####___=..........................=_i_#####_i_=..........",
+ "..........==___###i__==..........................==___###___==..........",
+ "...........==_______==............................==__i____==...........",
+ "............===__i===..............................===___===............",
+ "..............==_==..................................==_==..............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=.................‼o.................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z==..................................==Z=...............",
+ "...............=Z^=..................................=^Z=...............",
+ "...............=Z^=..................................=^Z=...............",
+ "...............=Z==..................................==Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "...............=Z=....................................=Z=...............",
+ "..............==_==..................................==_==..............",
+ "............===___===..............................===___===............",
+ "...........==__i____==............................==__i____==...........",
+ "..........==___###___==..........................==___###___==..........",
+ "..........=___#####___=..........................=___#####___=..........",
+ ".........==__#######_i==..........====..........==__#######_i==.........",
+ ".......===i_###o.o###__============^^============_i###o.o###__===.......",
+ ".......=v___###.X.###___ZZZZZZZZZZZZZZZZZZZZZZZZ___###.X.###___v=.......",
+ ".......===__###o.o###i_==========================__###o.o###i_===.......",
+ ".........==i_#######__==........................==i_#######__==.........",
+ "..........=___#####___=..........................=___#####___=..........",
+ "..........==___###___==..........................==___###__i==..........",
+ "...........==_i___i_==............................==_i_____==...........",
+ "............===___===..............................===___===............",
+ "..............==_==..................................==_==..............",
+ "...............=v=....................................=v=...............",
+ "...............===....................................===...............",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................"
+ ],
+ "palettes": [ "oil_platform_palette" ],
+ "gaspumps": { },
+ "signs": { },
+ "terrain": { "‼": "t_drill_string" }
+ }
+ }
+]
diff --git a/data/json/mapgen/oil_platform/oil_platform_z2.json b/data/json/mapgen/oil_platform/oil_platform_z2.json
new file mode 100644
index 0000000000000..9cc17a3fef91e
--- /dev/null
+++ b/data/json/mapgen/oil_platform/oil_platform_z2.json
@@ -0,0 +1,178 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [
+ [ "oil_platform_1a_2", "oil_platform_1b_2", "oil_platform_1c_2" ],
+ [ "oil_platform_2a_2", "oil_platform_2b_2", "oil_platform_2c_2" ],
+ [ "oil_platform_3a_2", "oil_platform_3b_2", "oil_platform_3c_2" ],
+ [ "oil_platform_4a_2", "oil_platform_4b_2", "oil_platform_4c_2" ]
+ ],
+ "object": {
+ "fill_ter": "t_strconc_floor_no_roof",
+ "rows": [
+ "........................................................................",
+ ".======================================================================.",
+ ".=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ=.",
+ ".=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ=.",
+ ".=ZZ__________________________________________________=<=___________ZZ=.",
+ ".=ZZ_______________²__________________________________===___________ZZ=.",
+ ".=ZZ____________________________________________T______T______T_____ZZ=.",
+ ".=ZZ_____õõ_________________________________________________________ZZ=.",
+ ".=ZZ_____õõ______________________õõõ________________________________ZZ=.",
+ ".=ZZ____________õõõõ________________________________________________ZZ=.",
+ ".=ZZ_____________õõõ________________________________________________ZZ=.",
+ ".=ZZt___________________________________________T______T______T____tZZ=.",
+ ".=ZZ______________________________________6_________________________ZZ=.",
+ ".=ZZ_____####*#####*########*++*##77777777###*#####*#######*###_____ZZ=.",
+ ".=Z=_____#õ`õõõ`õõ____+___________________6Q¼KKQ#p__ppppppp__ψ#_____=Z=.",
+ ".=<=t____#õõ`õ_õ______+________________________Q#p____________+____t=<=.",
+ ".=Z=_____*õ___________############õ____↨_______Q#p__bbbbbbb___#_____=Z=.",
+ ".=ZZ_____#____________#ψ»»»»╜1»»»#õ_______²____«#p____________*_____ZZ=.",
+ ".=ZZ_____#__õooo_oooψ_#»←____Ƨ___+_____________K#p__ppppppp___#_____ZZ=.",
+ ".=ZZt____#__1o•o_o•o1_#╜Ƨ_______;#______________+_____________#____tZZ=.",
+ ".=ZZ____õ*__Qo##?##oQ_#1___1☼_←_»#<__<#ψ________#___1##?##1___#_____ZZ=.",
+ ".=ZZ___õ_#__Qo#o_o#oQ_#♫__Ƨ♀o`__»##**##C___õõ__¿#oooo#o_o#oo__*_____ZZ=.",
+ ".=ZZ____õ#__Qo#.v.#oQ_#___←Ko`__»#ZZZZ#º__õõõ__K#o__•#.v.#•o__#_____ZZ=.",
+ ".=ZZt___õ#__Qo#o_o#oQ_#__♀K♀oψ___#ZvvZ*K_______Q#o_oo#o.o#oo♫_#____tZZ=.",
+ ".=Z=_____*__1o#####o1_#_1╟1┼o1←__#ZZZZ#QQQ_____Q#o_o_#####_oõ_#_____=Z=.",
+ ".=<=_____#__oo•o_o•ooo#_♫æ_0•…`__#=__=#####*++*##############+#_____=<=.",
+ ".=Z=_____+__o_oo_oo__o#_←o_o_o`__#=__=___________o_o_______o________=Z=.",
+ ".=ZZt____#õõo_o___o__o#_1o•o•o1__#_______________o_ooo_ooooo_______tZZ=.",
+ ".=ZZ_____##############+########+#____T______T___o_==o_o==_________ZZZ=.",
+ ".=ZZ________o_o_t_o__o___o_o_o______________________=========.......",
+ "..............................................=ZZZZZZZZZZZZZZZZZ=.......",
+ "..............................................=Z_______________Z=.......",
+ "..............................................=Z_______________Z=.......",
+ "..............................................=Z______===______Z=.......",
+ "..............................................=Z______=u^______Z=.......",
+ "............................===...............=Z______===______Z=.......",
+ "..===========================<=================Z_______________Z======..",
+ "..=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ_______________ZZZZZZ=..",
+ "..=Z####W#####W##############################*#####*##+##*#####*####Z=..",
+ ".==Z#,hhh,hh,,,,ý#&&&},}#Q_øøøøøøøøøøøøøø2222#22222222222222222__#Z==.",
+ ".=>ZW3333333,,,,,+,,,,#},}#Q_OOOOqqqqqqOOOO____+________________2__*Z>=.",
+ ".=,,><#,,,,,,,#_1o•__•#__8888882_Q#Z=..",
+ "..=Z#,é,(((((((3h,,,########*++*########*++*#,,#__oo0oo#oo8888882_Q*Z=..",
+ "..=ZWƧc,(((((((3h,,B#&,,BBB,,,,,,Ƨc&&cƧ,,,,,#,,#_1o•__•#__8888882_Q#Z=..",
+ ".==Z#,z,(((((((3h,,B#&,,,,,,,,,,céc,,céc,,,,+,,#__oo0oo#oo8888882_♫#Z==.",
+ ".=ZW,,,hhhhhh,h,,,&,,,,,#ccc,,,,,,,,,,ccc#+##__o____#®________♫♫#Z>=.",
+ ".==Z#BB,,,,,,,,,,,,ψ#ý&&,,,##éè,Ƨ,,,,,,,Ƨèé##)S##*##*#####*+*###*###Z==.",
+ "..=Z###W##W#+#W##W######,,,ψ*éè,,Ƨ,Ƨ,,Ƨ,,èé##)))#.o..=ZZZZZZZZZZZZZZZ=..",
+ "..=ZZZZZZZZZZZZZZZZZZZZ+,,,,*éèèèèèèèèèèèèé##+#+#oo.==Z===============..",
+ "..===========Z=========#FbbD##éééééééééééé###g#gW...>ZZZ>...............",
+ "............=Z=...oo.oo##**###************###W###...==Z==...............",
+ "...........==Z==.....................................=Z=...t............",
+ "...........>ZZZ>.........o.o...ooooooooo.............=Z=................",
+ "...........==Z==.........o.o.........................=Z=................",
+ "............=Z=..........o.o.........................=Z=................",
+ ".........ooo=Z=..........o.o.........................=Z=................",
+ ".........o..=Z=..........o.o.........................=Z=................",
+ ".........o..=Z=......................................=Z==...............",
+ ".........o..=Z=.................t======t.............=ZZ<..t............",
+ ".........o..=Z=.=<=...=>=.....oo==ZZZZ==oo....=>=....=Z==...............",
+ "......uXuo..=Z===Z=====Z=========ZZZZZZ========Z======Z=................",
+ "......Zooo..=ZZZZZZZZZZZZZZZZZZZZZZ‼oZZZZZZZZZZZZZZZZZZ=................",
+ "......uXuo..=Z===Z=====Z=========ZZZZZZ=====Z==Z======Z=................",
+ ".........o..=Z=.=<=...=>=.....oo==ZZZZ==oo....=>=....=Z=................",
+ ".........o..=Z=......o..........t=ZZZZ=t.............=Z=....o...........",
+ ".........o..=Z=......o..........#****+*#.............=Z=....o...........",
+ ".........o..=Z=......o..........#ééé,,,#.............=Z=....o...........",
+ ".........o..=Z=......o..........*ch,,,,*.............=Z=...to...........",
+ "............=Z=.................#c,,,,é#.............=Z=................",
+ "............=Z=................J#c,>>,é#.............=Z=................",
+ "...........==Z==................##*##*##.............=Z=..=====.........",
+ "...........>ZZZ>.....................................=Z=..>ZZZ>.........",
+ "..===========Z==============....===..===....==========Z=====Z=========..",
+ "..=ZZZZZZZZZZZZZZZZZZZZZZZZ======>====<======ZZZZZZZZZZZZZZZZZZZZZZZZ=..",
+ "..=Z######*#####*######++#ZZZZZZZZZZZZZZZZZZZZ#++##***************##Z=..",
+ "..=Z#BBBBBψBBBBBψBBBBB#,,######*######*##÷#####,,#P,P,P,P,P,P,V,V,V#Z=..",
+ "..=Z*,,,,,,,,,,,,,,,,,#,,##±±#ççffççSS≡≡#Y÷g÷g#,,#,,,,,,,,,,,,,,,,,*Z=..",
+ ".==Z#BBBBB,BBBBB,BBBBB#,,#N))#))))))))))#Y#+#+#,,#x,x,x,x,x,x,V,V,V*Z==.",
+ ".=Z#B,B,B,hhhh,,B,B,B#,,#N))#))44KK)KK)÷Y÷S)S#,,+,,,,,,,,,,,,,,,,s*Z>=.",
+ ".==Z#B,B,B,3333,,B,B,B#,,##±±#))))))))))####+##,,+,,,,,RRRRRR,,,,,,*Z==.",
+ "..=Z#B,B,B,h,hh,,B,B,B#,,#####K§KKKKKKKK#ψz,,ý#,,*,,,,bRrrrrRb,,,,s*Z=..",
+ "..=Z############+######,,,,,,,,,,,,,,,,,,,,,,,+,,#s,,,bRrrrrRb,,,,,*Z=..",
+ "..=Z#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+,,#,,,,bRrrrrRb,,,,,#Z=..",
+ "..=Z*,hhhh,,hhh,hhhh,hhh,,h,hh,,hh,,hhhh,hhhh,#,,#s,,,bRrrrrRb,,,,,+Z=..",
+ "..=Z+,3333,3333,3333,3333,3333,3333,3333,3333,#,,#ψ,s,FRRRRRRDbbbbψ#Z=..",
+ "..=Z*,,hhh,hh,h,,hhh,hhhh,,hhh,,hhh,,hhh,,hhh,#,,################+##Z=..",
+ "..=Z#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#,,#BBBðFDð3,,,,,#U)U#Z=..",
+ ".==Z###+##>,,,,,,,,,,h3h,h3h,h3h,######h3h,h3h#,,#,,,,,,,,,▀▀▀,#U)U÷Z==.",
+ ".=>Z#},,}##ð,,,,,,,,,h3h,h3h,h3h,#>,,>#h3h,h3h#,,*ð3ð3ðÄ,,,▀▀▀,#U)U#Z>=.",
+ ".=ZZZZZZZZ=..............................................",
+ ".......===================..............................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "............................................................. ....",
+ "............................................................. ....",
+ "............................................................. ....",
+ "............................................................. ....",
+ "............................................................. ....",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................"
+ ],
+ "palettes": [ "oil_platform_palette" ],
+ "gaspumps": { },
+ "signs": { },
+ "liquids": { "0": [ { "liquid": "diesel", "amount": [ 500, 2000 ] } ] },
+ "terrain": {
+ "8": "t_strconc_floor_no_roof",
+ "9": "t_strconc_floor_no_roof",
+ "2": "t_strconc_floor_no_roof",
+ "ø": "t_strconc_floor_no_roof",
+ "0": "t_strconc_floor_no_roof",
+ "®": "t_strconc_floor_no_roof",
+ "Q": "t_strconc_floor_no_roof",
+ "↨": "t_strconc_floor_no_roof",
+ "♫": "t_strconc_floor_no_roof",
+ "N": "t_linoleum_white",
+ "5": "t_linoleum_white",
+ "4": "t_linoleum_white",
+ "K": "t_linoleum_white",
+ "§": "t_linoleum_white",
+ "±": "t_linoleum_white",
+ "ç": "t_linoleum_white",
+ "≡": "t_linoleum_white",
+ "f": "t_linoleum_white",
+ "‼": "t_drill_string"
+ },
+ "furniture": { "®": "f_fireman_cabinet" },
+ "items": {
+ "®": [ { "item": "fireman_cabinet", "chance": 80 } ],
+ "N": [
+ { "item": "preserved_food", "chance": 90, "repeat": [ 1, 5 ] },
+ { "item": "cannedfood", "chance": 90, "repeat": [ 1, 5 ] },
+ { "item": "groce_ingredient", "chance": 90, "repeat": [ 1, 5 ] }
+ ],
+ "K": [
+ { "item": "kitchen_nonfood", "chance": 20, "repeat": [ 0, 1 ] },
+ { "item": "kitchen_appliances", "chance": 20, "repeat": [ 0, 1 ] },
+ { "item": "crate_kitchen", "chance": 20, "repeat": [ 0, 1 ] },
+ { "item": "kitchen_counters", "chance": 20, "repeat": [ 0, 1 ] }
+ ],
+ "Q": [
+ { "item": "tools_common", "chance": 15 },
+ { "item": "tools_electronics", "chance": 65, "repeat": [ 0, 2 ] },
+ { "item": "tools_mechanic", "chance": 10, "repeat": [ 0, 1 ] },
+ { "item": "SUS_welding_gear", "chance": 10, "repeat": [ 1, 2 ] },
+ { "item": "supplies_electronics", "chance": 40, "repeat": [ 0, 2 ] },
+ { "item": "hardware_trash", "chance": 15 },
+ { "item": "trash", "chance": 5, "repeat": [ 0, 2 ] }
+ ],
+ "S": { "item": "SUS_kitchen_sink", "chance": 90, "repeat": [ 0, 2 ] }
+ }
+ }
+ }
+]
diff --git a/data/json/mapgen/oil_platform/oil_platform_z4.json b/data/json/mapgen/oil_platform/oil_platform_z4.json
new file mode 100644
index 0000000000000..269eb419974dc
--- /dev/null
+++ b/data/json/mapgen/oil_platform/oil_platform_z4.json
@@ -0,0 +1,126 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [
+ [ "oil_platform_1a_4", "oil_platform_1b_4", "oil_platform_1c_4" ],
+ [ "oil_platform_2a_4", "oil_platform_2b_4", "oil_platform_2c_4" ],
+ [ "oil_platform_3a_4", "oil_platform_3b_4", "oil_platform_3c_4" ],
+ [ "oil_platform_4a_4", "oil_platform_4b_4", "oil_platform_4c_4" ]
+ ],
+ "object": {
+ "fill_ter": "t_floor_noroof",
+ "rows": [
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "......................................................====..............",
+ "......................................................=uX=..............",
+ "............................===.......................====..............",
+ "............................=>=..........===............................",
+ ".....................========Z============<========.....................",
+ "....==================----------------------------==================....",
+ "....=------------------###W##W##W######W##W##W###------------------=....",
+ ".====------------------#KézKézKézKéýψKézKézKézKé#------------------====.",
+ ".=>Z----H-------H------#,h,,h,,h,,h,,,h,,h,,h,,h#------H-------H----Z>=.",
+ ".====------------------W,,,,,,,,,,,,,,,,,,,,,,,,W------------------====.",
+ "....=------------------#,h,,h,,h,,,,,,,,,h,,h,,h#------------------=....",
+ "....=------------------#KézKézKé###++###KézKézKé#------------------=....",
+ "....=------------------##########>,,,,>##########------------------=....",
+ "....=-------^----------+,,,,,,,,,,,,,,,,,,,,,,,,+----------^-------=....",
+ "....=------------------*,,,,,,,,,,,,,,,,,,,,,,,,*------------------=....",
+ ".====-----------------J###########*++*###########J-----------------====.",
+ ".=>Z----H-------H------#ýLLL22LLLψ,,,,ψLLL22LLLý#------H-------H----Z>=.",
+ ".====------------------#,,,,,,,,,,,,,,,,,,,,,,,,#------------------====.",
+ "....=------------------*,,Kéz,,,,,,,,,z,,,,zéK,,*------------------=....",
+ "....=============Z=====#&,þƧ,,,,éè,Ƨ,,èé,,,,Ƨþ,==========Z========....",
+ "................=Z=....*&,cé,,,,cèèèèèèé,,,,éc,&*.........=Z=...........",
+ "................=Z=....#&,↨,,QQ,cééþþééc,QQ,,,,.........=Z=...........",
+ "................=Z=o..o##*#*#*#*#******#*#*#*#*##.........=Z=...........",
+ "................=Z=.......................................=Z=...........",
+ "................=Z=.......................................=Z=...........",
+ "................=Z=.......................................=Z=...........",
+ "................=Z=.......................................=Z=...........",
+ "................=Z=.......................................=Z=...........",
+ "................=Z=.......................................=Z=...........",
+ "................=Z=.....................................===Z=...........",
+ "................=Z=.....................................>ZZZ=...........",
+ "................=>=............ootZZZZtoo...............===Z=...........",
+ "....uXu..........................Z....Z...................=Z=...........",
+ "....Zooo.........................Z.‼o.Z...................=Z=...........",
+ "....uXu..........................Z....Z...................=Z=...........",
+ "................=>=............ootZZZZtoo.................=Z=...........",
+ "................=Z=.......................................=Z=...........",
+ "................=Z=.............||||||||..................=Z=...........",
+ "................=Z=.............|------|..................=Z=...........",
+ "................=Z=.............|-π----|..................=Z=...........",
+ "................=Z=.............|------|..................=Z=...........",
+ "................=Z=.............|------|..................=Z=...........",
+ "................=Z=.............||||||||..................=Z=...........",
+ "................=Z=.......................................=Z=...........",
+ "..===============Z==========.........===....===============Z==========..",
+ "..=ZZZZZZZZZZZZZZZZZZZZZZZZ===========>======ZZZZZZZZZZZZZZZZZZZZZZZZ=..",
+ "..=Z##W##W##W##W##W###++##ZZZZZZZZZZZZZZZZZZZZ##++###W##W##W##W##W##Z=..",
+ "..=Z#@@#@@#@@#@@#@@#F,,,ψ#J-----È-È--È-È-----J#ψ,,,F#@@#@@#@@#@@#@@#Z=..",
+ ".==Z#l,#l,#l,#l,#l,#b,,,#####÷#####**#####÷#####,,,b#,l#,l#,l#,l#,l#Z==.",
+ ".=>Z#d,#d,#d,#d,#d,#b,,,#Sg##Y##gS#,,#Sg##Y##gS#,,,b#,d#,d#,d#,d#,d#Z>=.",
+ ".==Z##+##+##+##+##+#D,,,+))U÷Y÷U))+,,+))U÷Y÷U))+,,,D#+##+##+##+##+##Z==.",
+ "..=Z+,,,,,,,,,,,,,,,,,,,#####Y#####,,#####Y#####,,,,,,,,,,,,,,,,,,,+Z=..",
+ "..=Z+,,,,,,,,,,,,,,,,,,,#Sg##Y##gS#,,#Sg##Y##gS#,,,,,,,,,,,,,,,,,,,+Z=..",
+ "..=Z##+###+###+#######,,+))U÷Y÷U))+,,+))U÷Y÷U))+,,#######+###+###+##Z=..",
+ "..=Z#@,l#l,@#l,@#ýppp#,,#####Y#####,,#####Y#####,,#pppý#@,l#l,@#l,@#Z=..",
+ "..=ZW@,d#d,@#d,@#p,,,+,,#Sg##Y##gS#,,#Sg##Y##gS#,,+,,,p#@,d#d,@#d,@WZ=..",
+ "..=Z#############p,bb#,,+))U÷Y÷U))+,,+))U÷Y÷U))+,,#bb,p#############Z=..",
+ "..=ZW@@#@@#@@#@@#p,bb#,,#####Y#####,,#####Y#####,,#bb,p#@@#@@#@@#@@WZ=..",
+ "..=Z#,l#,l#,l#,l#p,,,+,,#Sg##Y##gS#,,#Sg##Y##gS#,,+,,,p#,l#,l#,l#,l#Z=..",
+ "..=Z#,d#,d#,d#,d#ýppp#,,+))U÷Y÷U))+,,+))U÷Y÷U))+,,#pppý#,d#,d#,d#,d#Z=..",
+ "..=Z#+##+##+##+#######,,###########,,###########,,######+##+##+##+##Z=..",
+ "..=Z+,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+Z=..",
+ ".==Z+,↨,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,+Z==.",
+ ".=>Z#####+#####+###+###+###+###+##>,,>##+###+###+###+###+###+###++##Z>=.",
+ ".==ZWh,,,,,┴┴#@,l#l,,#d,@#@,l#@,l#,,,,#d,,#@,d#l,@#l,,#@,,#,,d#},,}#Z==.",
+ "..=Z#éKBBdl┴┴#@,d#@@d#l,@#@,d#@,d#<,,<#l@@#@,l#d,@#@@d#@dl#@@l#ψ}}}#Z=..",
+ "..=Z##W####W###W###W###W###W###W###WW###W###W###W###W###W##W########Z=..",
+ "..=ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ=..",
+ "..=================================>>=================================..",
+ "..................................====..................................",
+ "..............====......................................................",
+ "..............=Xu=......................................................",
+ "..............====......................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................"
+ ],
+ "palettes": [ "oil_platform_palette" ],
+ "gaspumps": { },
+ "signs": { },
+ "terrain": { "π": "t_tile_flat_roof", "È": "t_tile_flat_roof" },
+ "items": {
+ "K": [
+ { "item": "office_mess", "chance": 10, "repeat": [ 1, 2 ] },
+ { "item": "office", "chance": 10, "repeat": [ 1, 2 ] },
+ { "item": "consumer_electronics", "chance": 15 },
+ { "item": "office_supplies", "chance": 15 }
+ ],
+ "p": { "item": "clothing_work_set", "chance": 85, "repeat": [ 0, 4 ] }
+ }
+ }
+ }
+]
diff --git a/data/json/mapgen/oil_platform/oil_platform_z5.json b/data/json/mapgen/oil_platform/oil_platform_z5.json
new file mode 100644
index 0000000000000..cd590ad6f2268
--- /dev/null
+++ b/data/json/mapgen/oil_platform/oil_platform_z5.json
@@ -0,0 +1,137 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [
+ [ "oil_platform_1a_5", "oil_platform_1b_5", "oil_platform_1c_5" ],
+ [ "oil_platform_2a_5", "oil_platform_2b_5", "oil_platform_2c_5" ],
+ [ "oil_platform_3a_5", "oil_platform_3b_5", "oil_platform_3c_5" ],
+ [ "oil_platform_4a_5", "oil_platform_4b_5", "oil_platform_4c_5" ]
+ ],
+ "object": {
+ "fill_ter": "t_tile_flat_roof",
+ "rows": [
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "......................................................[]][==............",
+ "......................................................]éƧ]8=............",
+ "......................................................]Yv]8=............",
+ "......................................................[]][^=............",
+ ".........................................===............................",
+ ".........................................=>=............................",
+ ".........................................=Z=............................",
+ ".......................||||||||||||||||||=-=|||||.......................",
+ ".......................|------------------------|.......................",
+ ".......................|-π--ìì--ìì--ìì--ìì--ìì--|.......................",
+ ".........HZ▐!▐ZH.......|-È----------------------|.......HZ▐!▐ZH.........",
+ ".........Z.....Z.......|-π--¶¶--¶¶--¶¶--¶¶--¶¶--|.......Z.....Z.........",
+ ".........▐.....▐.......|-È--¶¶--¶¶--¶¶--¶¶--¶¶--|.......▐.....▐.........",
+ ".........!.===.!.......|------------------------|.......!.===.!.........",
+ ".........▐.=X=.▐.......|------------------------|.......▐.=X=.▐.........",
+ ".........Z.=Z=.Z.......|---…ooooo…------¶¶--¶¶--|.......Z.=Z=.Z.........",
+ ".........H!===!H.......|---1w•o•w1------¶¶--¶¶--|.......H!===!H.........",
+ ".......................|---…ooooo…--------------|.......................",
+ ".......................|------o---------π--π--π-|.......................",
+ "...................oooooooooooo----oo0--È--È--È-|.......................",
+ "...................o...|-----------o•1--π--π--π-|.......................",
+ "...................o..ooooooooooooooo0--È--È--È-|.......................",
+ "...................o..o|------------------------|.......................",
+ "...................o..o||||||||||||||||||||||||||.......................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.........oo....oo................................",
+ "..uXu..............o..o...........tZZt..................................",
+ "..Zooo.............o..o...........Z‼oZ..................................",
+ "..uXu..............o..o...........tZZt..................................",
+ "...................o..o.........oo....oo................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "...................o..o.................................................",
+ "....|||||||||||||||o||o|||....................||||||||||||||||||||||....",
+ "....|-------ì-ì-ì--o--o--|....................|--------------------|....",
+ "....|--------------o--o--||||||||||||||||||||||--------------T-----|....",
+ "....|-π--π--π----==o==oooooooooo--π-π-ìì-ìì------------------------|....",
+ "....|-È--È--È-----,,>#bbbbb#----------------------|....",
+ "....|||||#*##*##*##*##*##*##*##*##*##*##*##*#|||||||||||||||||||||||....",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "............=^[]][......................................................",
+ "............=8]vY]......................................................",
+ "............=8]Ƨé]......................................................",
+ "............==[]][......................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................"
+ ],
+ "palettes": [ "oil_platform_palette" ],
+ "gaspumps": { },
+ "signs": { },
+ "terrain": {
+ "3": "t_floor_noroof",
+ "≥": "t_floor_noroof",
+ "τ": "t_floor_noroof",
+ "ψ": "t_floor_noroof",
+ "b": "t_floor_noroof",
+ "D": "t_floor_noroof",
+ "8": "t_bridge",
+ "Ƨ": "t_metal_floor",
+ "é": "t_metal_floor"
+ },
+ "items": {
+ ",": [ { "item": "laundromat_containers", "chance": 5 }, { "item": "laundromat_bleach", "chance": 5 } ],
+ "3": [ { "item": "laundromat_containers", "chance": 5 }, { "item": "laundromat_bleach", "chance": 65 } ],
+ "≥": { "item": "laundry", "chance": 50, "repeat": [ 5, 15 ] },
+ "τ": { "item": "laundry", "chance": 50, "repeat": [ 5, 15 ] }
+ },
+ "liquids": {
+ "…": { "liquid": "water_clean", "amount": [ 250, 2500 ] },
+ "0": { "liquid": "water_sewage", "amount": [ 250, 1500 ] }
+ }
+ }
+ }
+]
diff --git a/data/json/mapgen/oil_platform/oil_platform_z6.json b/data/json/mapgen/oil_platform/oil_platform_z6.json
new file mode 100644
index 0000000000000..ab6644a87a476
--- /dev/null
+++ b/data/json/mapgen/oil_platform/oil_platform_z6.json
@@ -0,0 +1,117 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [
+ [ "oil_platform_1a_6", "oil_platform_1b_6", "oil_platform_1c_6" ],
+ [ "oil_platform_2a_6", "oil_platform_2b_6", "oil_platform_2c_6" ],
+ [ "oil_platform_3a_6", "oil_platform_3b_6", "oil_platform_3c_6" ],
+ [ "oil_platform_4a_6", "oil_platform_4b_6", "oil_platform_4c_6" ]
+ ],
+ "object": {
+ "fill_ter": "t_tile_flat_roof",
+ "rows": [
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "...................................................... ↑ ..............",
+ "..........................↑...↑...↑...↑...↑...↑...↑... ↑Z88..........",
+ ".........................ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ↑ ZZ88..........",
+ "..........................================================X==...........",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "..........H▐▐▐H..........................................H▐▐▐H..........",
+ "..........▐...▐..........................................▐...▐..........",
+ "..........▐===▐..........................................▐===▐..........",
+ "..........▐=X=▐..........................................▐=X=▐..........",
+ "..........H===H..........................................H===H..........",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ ".................................oo..oo.................................",
+ "uXu...............................tZZt..................................",
+ "Zooo..............................Z‼oZ..................................",
+ "uXu...............................tZZt..................................",
+ ".................................oo..oo.................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "...........................................................yyyyyyy......",
+ ".........................................................yyy:::::yyy....",
+ "..................===...................................yy:::::::::yy...",
+ "..................>Z>..................................yy:::::::::::yy..",
+ "..................===.................................yy:::::::::::::yy.",
+ "......................................................y:::::::::::::::y.",
+ ".....................................................yy:::::::::::::::yy",
+ "...................................................==y::::::yyyyy::::::y",
+ "...................................................>Zy::::::::y::::::::y",
+ "...................................................>Zy::::::::→::::::::y",
+ "...................................................>Zy::::::::y::::::::y",
+ "...................................................==y::::::yyyyy::::::y",
+ ".....................................................yy:::::::::::::::yy",
+ "......................................................y:::::::::::::::y.",
+ ".........||||||||||||||||||||||||||||||||||||.........yy:::::::::::::yy.",
+ ".........|----------------------------------|..........yy:::::::::::yy..",
+ ".........|-π------------------------------π-|...........yy:::::::::yy...",
+ ".........|-π------------------------------π-|............yyy:::::yyy....",
+ ".........|----------------------------------|..............yyyyyyy......",
+ ".........||||||||||||||||||||||||||||||||||||...........................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "...........==X================================..........................",
+ "..........##ZZ ↑ ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ.........................",
+ "..........##Z↑ ...↑...↑...↑...↑...↑...↑...↑..........................",
+ ".............. ↑ ......................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................"
+ ],
+ "palettes": [ "oil_platform_palette" ],
+ "gaspumps": { },
+ "signs": { },
+ "terrain": { "→": "t_thconc_y" }
+ }
+ }
+]
diff --git a/data/json/mapgen/oil_platform/oil_platform_z7.json b/data/json/mapgen/oil_platform/oil_platform_z7.json
new file mode 100644
index 0000000000000..aded40d0d0331
--- /dev/null
+++ b/data/json/mapgen/oil_platform/oil_platform_z7.json
@@ -0,0 +1,116 @@
+[
+ {
+ "type": "mapgen",
+ "method": "json",
+ "om_terrain": [
+ [ "oil_platform_1a_7", "oil_platform_1b_7", "oil_platform_1c_7" ],
+ [ "oil_platform_2a_7", "oil_platform_2b_7", "oil_platform_2c_7" ],
+ [ "oil_platform_3a_7", "oil_platform_3b_7", "oil_platform_3c_7" ],
+ [ "oil_platform_4a_7", "oil_platform_4b_7", "oil_platform_4c_7" ]
+ ],
+ "object": {
+ "fill_ter": "t_tile_flat_roof",
+ "rows": [
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "..........................ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ...........",
+ "..........................................................Z.............",
+ "..........................................................v.............",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........=======.........................................=======.........",
+ "........=ZZZZZ=.........................................=ZZZZZ=.........",
+ "........=ZH!HZ=.........................................=ZH!HZ=.........",
+ "........=Z▐▐▐Z=.........................................=Z▐▐▐Z=.........",
+ "........=ZHvHZ=.........................................=ZHvHZ=.........",
+ "........=ZZZZZ=.........................................=ZZZZZ=.........",
+ "........=======.........................................=======.........",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "..................................oooo..................................",
+ "Zvu...............................tZot..................................",
+ "πoZ...............................Z‼oZ..................................",
+ "Zvu...............................tZot..................................",
+ "..................................oooo..................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ ".............v..........................................................",
+ ".............Z..........................................................",
+ "...........ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ..........................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................",
+ "........................................................................"
+ ],
+ "palettes": [ "oil_platform_palette" ],
+ "gaspumps": { },
+ "signs": { }
+ }
+ }
+]
diff --git a/data/json/mapgen_palettes/oil_platform_palette.json b/data/json/mapgen_palettes/oil_platform_palette.json
new file mode 100644
index 0000000000000..cc6aa36265700
--- /dev/null
+++ b/data/json/mapgen_palettes/oil_platform_palette.json
@@ -0,0 +1,297 @@
+[
+ {
+ "type": "palette",
+ "id": "oil_platform_palette",
+ "liquids": { "-": { "liquid": "salt_water", "amount": [ 1, 4 ], "chance": 140 } },
+ "terrain": {
+ "~": "t_swater_dp",
+ "/": "t_saltwater_cube",
+ "^": "t_ladder_up",
+ "v": "t_ladder_down",
+ "#": "t_concrete_wall_w",
+ ".": "t_open_air",
+ "X": "t_ladder_up_down",
+ "=": "t_metal_railing",
+ "Y": "t_metal_floor",
+ "Z": "t_bridge",
+ "_": "t_strconc_floor_no_roof",
+ ",": "t_floor_noroof",
+ "?": [ [ "t_door_metal_interior_locked", 5 ], "t_door_metal_c" ],
+ "o": "t_sewage_pipe",
+ ">": "t_stairs_down",
+ "<": "t_stairs_up",
+ "+": [ [ "t_door_c", 30 ], [ "t_door_o", 25 ], [ "t_door_locked", 20 ] ],
+ "y": "t_thconc_y",
+ ":": "t_thconc_floor_no_roof",
+ "6": "t_gates_mech_control",
+ "7": "t_door_metal_locked",
+ "W": [
+ [ "t_window_frame", 5 ],
+ [ "t_window_domestic", 5 ],
+ "t_window_no_curtains",
+ "t_window_open",
+ "t_window_no_curtains_open",
+ [ "t_curtains", 5 ]
+ ],
+ "-": "t_tile_flat_roof",
+ "|": "t_gutter",
+ "T": "t_support_l",
+ "t": "t_support_s",
+ "H": "t_radio_tower",
+ "þ": "t_radio_controls",
+ "↑": "t_little_column",
+ "u": "t_truss_pillar",
+ "*": [ [ "t_window", 13 ], [ "t_window_frame", 5 ] ],
+ "J": "t_gutter_downspout",
+ "÷": "t_metal_ventilation_shutter",
+ "U": "t_linoleum_white",
+ "S": "t_linoleum_white",
+ "g": "t_linoleum_white",
+ ")": "t_linoleum_white",
+ "(": "t_carpet_wood_yellow",
+ "•": "t_sewage_pump",
+ "L": [ "t_sai_box_damaged", "t_sai_box" ],
+ "O": "t_potential_trans",
+ "q": "t_current_trans",
+ "R": "t_fence_rope",
+ " ": "t_metal_roof",
+ "á": "t_backboard",
+ "▐": "t_bridge",
+ "!": "t_bridge",
+ "[": "t_scrap_wall",
+ "]": "t_scrap_wall_halfway",
+ "↓": "t_rope_up",
+ "‼": "t_drill_machinery"
+ },
+ "furniture": {
+ "0": "f_standing_tank",
+ "…": "f_standing_tank",
+ "1": "f_control_station",
+ "2": "f_electrical_conduit",
+ "3": "f_table",
+ "4": "f_oven",
+ "5": "f_woodstove",
+ "9": "f_water_heater",
+ "8": "f_generator_broken",
+ "A": "f_air_compressor",
+ "C": "f_workbench",
+ "E": "f_shaker",
+ "G": "f_stool",
+ "e": "f_desk",
+ "K": "f_counter",
+ "I": "f_IV_pole",
+ "m": "f_anesthetic",
+ "k": "f_ventilator",
+ "M": "f_dialysis",
+ "N": "f_glass_cabinet",
+ "f": "f_fridge",
+ "S": "f_sink",
+ "Q": "f_utility_shelf",
+ "}": "f_utility_shelf",
+ "ψ": [ [ "f_fireman_cabinet", 40 ], [ "f_fireman_cabinet_o", 10 ], [ "f_fireman_cabinet_b", 10 ] ],
+ "U": "f_shower",
+ "w": "f_water_purifier",
+ "b": "f_bench",
+ "c": "f_cupboard",
+ "ç": "f_cupboard",
+ "B": "f_bookcase",
+ "h": "f_chair",
+ "d": [ "f_wardrobe", "f_dresser" ],
+ "l": [ "f_foot_locker", "f_foot_locker_aluminum" ],
+ "@": "f_triple_bunkbed",
+ "j": [ [ "f_curtain", 10 ], [ "f_curtain_open", 2 ] ],
+ "é": "f_console_broken",
+ "è": "f_console_broken_table",
+ "õ": [ [ "f_crate_c", 30 ], [ "f_crate_o", 10 ], [ "f_cardboard_box", 15 ], [ "f_null", 5 ] ],
+ "&": "f_filing_cabinet",
+ "ý": [ "f_indoor_plant", "f_indoor_plant_y" ],
+ "z": "f_trashcan",
+ "§": "f_counter_gate_c",
+ "p": "f_locker",
+ "P": "f_exercise",
+ "r": "f_canvas_floor",
+ "s": "f_punching_bag",
+ "V": "f_ergometer",
+ "x": "f_treadmill",
+ "æ": "f_air_compressor",
+ "ø": "f_capacitor",
+ "┴": "f_bed",
+ "╟": "f_GC",
+ "┼": "f_HPLC",
+ "┐": "f_MS",
+ "╜": "f_chemical_mixer",
+ "»": "f_lab_bench",
+ "«": "f_heavy_lathe",
+ "¼": "f_bandsaw",
+ "¿": "f_hydraulic_press",
+ "º": "f_drill_press",
+ "≥": "f_washer",
+ "≡": "f_dishwasher",
+ "τ": "f_dryer",
+ "±": "f_freezer",
+ "µ": "f_dumpster",
+ "φ": "f_pinball_machine",
+ "▀": "f_pool_table",
+ "▐": "f_small_satellite_dish",
+ "π": "f_roof_turbine_vent",
+ "¶": "f_solar_unit",
+ ";": "f_eyewash",
+ "ì": "f_vent_pipe",
+ "ð": "f_sofa",
+ "È": "f_air_conditioner",
+ "!": "f_cellphone_booster",
+ "Ä": "f_speaker_cabinet"
+ },
+ "toilets": { "g": { } },
+ "items": {
+ "I": [ { "item": "saline_bottle_random", "chance": 100 } ],
+ "B": [
+ { "item": "book_survival", "chance": 5 },
+ { "item": "literature", "chance": 5 },
+ { "item": "novels", "chance": 55, "repeat": [ 6, 10 ] },
+ { "item": "hardware_books", "chance": 15 },
+ { "item": "exotic_books", "chance": 2 },
+ { "item": "carpentrybooks", "chance": 15 },
+ { "item": "religious_books", "chance": 35, "repeat": [ 0, 3 ] },
+ { "item": "manuals", "chance": 15 },
+ { "item": "textbooks", "chance": 5 },
+ { "item": "lab_bookshelves", "chance": 5 },
+ { "item": "tailorbooks", "chance": 5 },
+ { "item": "magazines", "chance": 35, "repeat": [ 1, 3 ] }
+ ],
+ "@": [
+ { "item": "bed", "chance": 50 },
+ { "item": "magazines", "chance": 5, "repeat": [ 0, 1 ] },
+ { "item": "literature", "chance": 5, "repeat": [ 0, 1 ] },
+ { "item": "novels", "chance": 5, "repeat": [ 0, 1 ] },
+ { "item": "phones", "chance": 5, "repeat": [ 0, 1 ] }
+ ],
+ "Q": [
+ { "item": "tools_common", "chance": 20 },
+ { "item": "tools_electronics", "chance": 55, "repeat": [ 0, 2 ] },
+ { "item": "tools_mechanic", "chance": 5, "repeat": [ 0, 1 ] },
+ { "item": "SUS_welding_gear", "chance": 5, "repeat": [ 1, 2 ] },
+ { "item": "supplies_electronics", "chance": 40, "repeat": [ 0, 2 ] },
+ { "item": "hardware_trash", "chance": 15 },
+ { "item": "trash", "chance": 5, "repeat": [ 0, 2 ] }
+ ],
+ "c": [
+ { "item": "tools_common", "chance": 20 },
+ { "item": "tools_electronics", "chance": 55, "repeat": [ 0, 2 ] },
+ { "item": "supplies_electronics", "chance": 30, "repeat": [ 0, 2 ] },
+ { "item": "hardware_trash", "chance": 15 },
+ { "item": "trash", "chance": 5, "repeat": [ 0, 2 ] },
+ { "item": "file_room", "chance": 20, "repeat": [ 1, 2 ] },
+ { "item": "office_paper", "chance": 20, "repeat": [ 3, 4 ] },
+ { "item": "office", "chance": 25 }
+ ],
+ "ψ": [ { "item": "fireman_cabinet", "chance": 80 } ],
+ "õ": [
+ { "item": "tools_common", "chance": 20 },
+ { "item": "hardware_bulk", "chance": 30, "repeat": [ 1, 3 ] },
+ { "item": "plumbing_bulk", "chance": 30, "repeat": [ 1, 2 ] },
+ { "item": "supplies_electronics", "chance": 10, "repeat": [ 1, 2 ] },
+ { "item": "mechanics", "chance": 8, "repeat": [ 1, 2 ] },
+ { "item": "supplies_reagents_lab", "chance": 2, "repeat": [ 1, 3 ] },
+ { "item": "metal_workshop", "chance": 10 }
+ ],
+ "-": [ { "item": "roof_trash", "chance": 3 } ],
+ "&": [
+ { "item": "magazines", "chance": 5 },
+ { "item": "file_room", "chance": 50, "repeat": [ 1, 2 ] },
+ { "item": "office_paper", "chance": 50, "repeat": [ 3, 4 ] },
+ { "item": "office", "chance": 25 },
+ { "item": "maps", "chance": 3 },
+ { "item": "office_mess", "chance": 15, "repeat": [ 1, 2 ] },
+ { "item": "trash", "chance": 5, "repeat": [ 0, 2 ] },
+ { "item": "office_supplies", "chance": 25 }
+ ],
+ "z": { "item": "trash", "chance": 90, "repeat": [ 0, 8 ] },
+ "µ": [
+ { "item": "trash", "chance": 90, "repeat": [ 5, 15 ] },
+ { "item": "rolling_trash", "chance": 90, "repeat": [ 2, 10 ] }
+ ],
+ "S": { "item": "SUS_bathroom_sink", "chance": 80, "repeat": [ 0, 2 ] },
+ "d": [
+ { "item": "SUS_dresser_mens", "chance": 90, "repeat": [ 0, 5 ] },
+ { "item": "SUS_dresser_womens", "chance": 80, "repeat": [ 0, 4 ] },
+ { "item": "bags_trip", "chance": 15 },
+ { "item": "small_bags", "chance": 30 }
+ ],
+ "l": [
+ { "item": "SUS_dresser_mens", "chance": 60, "repeat": [ 0, 1 ] },
+ { "item": "SUS_dresser_womens", "chance": 60, "repeat": [ 0, 1 ] },
+ { "item": "SUS_bathroom_medicine", "chance": 15, "repeat": [ 0, 1 ] },
+ { "item": "used_1st_aid", "chance": 5 },
+ { "item": "phones", "chance": 15, "repeat": [ 0, 1 ] },
+ { "item": "magazines", "chance": 15, "repeat": [ 0, 1 ] },
+ { "item": "literature", "chance": 15, "repeat": [ 0, 1 ] },
+ { "item": "novels", "chance": 15, "repeat": [ 0, 1 ] },
+ { "item": "hardware_books", "chance": 5 },
+ { "item": "manuals", "chance": 5 },
+ { "item": "tools_common", "chance": 15 },
+ { "item": "adhesive_bandages_box_used", "chance": 5 },
+ { "item": "textbooks", "chance": 5 },
+ { "item": "groce_softdrink", "chance": 30, "repeat": [ 0, 1 ] }
+ ],
+ "}": [ { "item": "cleaning_bulk", "chance": 80, "repeat": [ 0, 4 ] } ],
+ "»": [ { "item": "chem_lab", "chance": 70, "repeat": [ 0, 4 ] } ],
+ "f": [
+ { "item": "sea_restaur_fridge", "chance": 100, "repeat": [ 2, 25 ] },
+ { "item": "restaur_fridge", "chance": 100, "repeat": [ 2, 25 ] },
+ { "item": "groce_softdrink", "chance": 100, "repeat": [ 2, 10 ] }
+ ],
+ "3": [
+ { "item": "softdrinks_canned", "chance": 15 },
+ { "item": "office_supplies", "chance": 15 },
+ { "item": "office_paper", "chance": 15 }
+ ],
+ "±": [
+ { "item": "groce_frozen", "chance": 80, "repeat": [ 1, 5 ] },
+ { "item": "groce_meat", "chance": 80, "repeat": [ 0, 8 ] },
+ { "item": "toasterpastryfrozen_box_snack_2", "chance": 80, "repeat": [ 1, 3 ] }
+ ],
+ "ç": [
+ { "item": "kitchen_nonfood", "chance": 80, "repeat": [ 0, 5 ] },
+ { "item": "kitchen_appliances", "chance": 80, "repeat": [ 0, 5 ] },
+ { "item": "crate_kitchen", "chance": 80, "repeat": [ 0, 5 ] },
+ { "item": "kitchen_counters", "chance": 80, "repeat": [ 0, 5 ] },
+ { "item": "groce_condiment", "chance": 80, "repeat": [ 2, 5 ] }
+ ],
+ "4": [ { "item": "SUS_oven", "chance": 85, "repeat": [ 0, 4 ] } ],
+ "≡": [ { "item": "SUS_dishwasher", "chance": 85, "repeat": [ 0, 4 ] } ],
+ "`": { "item": "oil_drums", "chance": 60 },
+ "♫": { "item": "lubricant", "chance": 50 },
+ "▀": { "item": "pool_table", "chance": 60 }
+ },
+ "vehicles": {
+ "Ƨ": { "vehicle": "swivel_chair", "chance": 100, "rotation": [ 0, 90, 180, 270 ] },
+ "²": { "vehicle": "trolley", "chance": 70, "rotation": [ 0, 90, 180, 270 ] },
+ "→": { "vehicle": "helicopters", "chance": 20, "rotation": [ 0, 90, 180, 270 ] },
+ "n": { "vehicle": "inflatable_boat", "chance": 80 }
+ },
+ "vendingmachines": { "D": { "item_group": "vending_drink_items" }, "F": { "item_group": "vending_food_items" } },
+ "monster": {
+ "i": { "monster": "mon_zombie_swimmer_base", "chance": 30 },
+ "↨": { "monster": "mon_gas_zombie", "chance": 5 },
+ "←": { "monster": "mon_zombie_scientist", "chance": 70 }
+ }
+ },
+ {
+ "id": "lubricant",
+ "type": "item_group",
+ "items": [
+ { "item": "motor_oil", "container-item": "metal_tank", "charges-min": 2000, "charges-max": 60000, "prob": 50 },
+ { "item": "motor_oil", "container-item": "jerrycan_big", "charges-min": 0, "charges-max": 20000, "prob": 30 },
+ { "item": "metal_tank", "prob": 20 }
+ ]
+ },
+ {
+ "id": "oil_drums",
+ "type": "item_group",
+ "items": [
+ { "item": "crude_oil", "container-item": "55gal_drum", "charges-min": 180000, "charges-max": 200000, "prob": 60 },
+ { "item": "55gal_drum", "prob": 30 }
+ ]
+ }
+]
diff --git a/data/json/materials.json b/data/json/materials.json
index 5ef2c1e77fd54..7bd62fe59b9cd 100644
--- a/data/json/materials.json
+++ b/data/json/materials.json
@@ -1175,6 +1175,17 @@
"explosion_data": { "chance_hot": 5, "chance_cold": 10, "factor": 0.2, "fiery": true, "size_factor": 0.1 }
}
},
+ {
+ "type": "material",
+ "id": "crude_oil",
+ "density": 0.8,
+ "name": "Crude oil",
+ "copy-from": "hydrocarbons",
+ "fuel_data": {
+ "energy": "38000 kJ",
+ "explosion_data": { "chance_hot": 5, "chance_cold": 10, "factor": 0.2, "fiery": true, "size_factor": 0.1 }
+ }
+ },
{
"type": "material",
"id": "iflesh",
diff --git a/data/json/monstergroups/zombies.json b/data/json/monstergroups/zombies.json
index 327dec471202f..efe80390d9543 100644
--- a/data/json/monstergroups/zombies.json
+++ b/data/json/monstergroups/zombies.json
@@ -491,6 +491,33 @@
{ "monster": "mon_zombie_tough", "weight": 25, "cost_multiplier": 0 }
]
},
+ {
+ "type": "monstergroup",
+ "name": "GROUP_OIL_PLATFORM",
+ "monsters": [
+ { "monster": "mon_zombie_technician", "weight": 60 },
+ { "monster": "mon_zombie", "weight": 90 },
+ { "monster": "mon_zombie_fireman", "weight": 10 },
+ { "monster": "mon_zombie_medical", "weight": 10 },
+ { "monster": "mon_zombie_fat", "weight": 20 },
+ { "monster": "mon_zombie_crawler", "weight": 12 },
+ { "monster": "mon_feral_human_pipe", "weight": 6, "cost_multiplier": 2 },
+ { "monster": "mon_feral_human_crowbar", "weight": 6, "cost_multiplier": 2 },
+ { "monster": "mon_feral_human_axe", "weight": 4, "cost_multiplier": 4, "starts": "86 hours" },
+ { "monster": "mon_zombie_brainless", "weight": 12 },
+ { "monster": "mon_feral_human_tool", "weight": 6, "cost_multiplier": 3 },
+ { "monster": "mon_feral_sailor_wrench", "weight": 6, "cost_multiplier": 3, "starts": "86 hours" },
+ { "monster": "mon_feral_sailor_mop", "weight": 6, "cost_multiplier": 3 },
+ { "monster": "mon_feral_sailor_axe", "weight": 4, "cost_multiplier": 4, "starts": "540 hours" },
+ { "monster": "mon_feral_sailor_lug_wrench", "weight": 6, "cost_multiplier": 3, "starts": "86 hours" },
+ { "monster": "mon_zombie_static", "weight": 4, "cost_multiplier": 2, "starts": "86 hours" },
+ { "monster": "mon_zombie_swimmer_base", "weight": 40 },
+ { "monster": "mon_zombie_survivor", "weight": 4, "cost_multiplier": 5, "starts": "270 hours" },
+ { "monster": "mon_zombie_survivor_elite", "weight": 2, "cost_multiplier": 5, "starts": "540 hours" },
+ { "monster": "mon_zombie_runner", "weight": 20, "cost_multiplier": 2 },
+ { "monster": "mon_gas_zombie", "weight": 1, "cost_multiplier": 6, "starts": "540 hours" }
+ ]
+ },
{
"type": "monstergroup",
"name": "GROUP_CHURCH_ZOMBIE",
diff --git a/data/json/overmap/overmap_special/oil_platform.json b/data/json/overmap/overmap_special/oil_platform.json
new file mode 100644
index 0000000000000..1c77bbf07f65b
--- /dev/null
+++ b/data/json/overmap/overmap_special/oil_platform.json
@@ -0,0 +1,216 @@
+[
+ {
+ "type": "overmap_special",
+ "id": "oil_platform",
+ "overmaps": [
+ { "point": [ 0, 0, 0 ], "overmap": "oil_platform_1a_0_north" },
+ { "point": [ 1, 0, 0 ], "overmap": "oil_platform_1b_0_north" },
+ { "point": [ 2, 0, 0 ], "overmap": "oil_platform_1c_0_north" },
+ { "point": [ 0, 1, 0 ], "overmap": "oil_platform_2a_0_north" },
+ { "point": [ 1, 1, 0 ], "overmap": "oil_platform_2b_0_north" },
+ { "point": [ 2, 1, 0 ], "overmap": "oil_platform_2c_0_north" },
+ { "point": [ 0, 2, 0 ], "overmap": "oil_platform_3a_0_north" },
+ { "point": [ 1, 2, 0 ], "overmap": "oil_platform_3b_0_north" },
+ { "point": [ 2, 2, 0 ], "overmap": "oil_platform_3c_0_north" },
+ { "point": [ 0, 3, 0 ], "overmap": "oil_platform_4a_0_north" },
+ { "point": [ 1, 3, 0 ], "overmap": "oil_platform_4b_0_north" },
+ { "point": [ 2, 3, 0 ], "overmap": "oil_platform_4c_0_north" },
+ { "point": [ 0, 0, 1 ], "overmap": "oil_platform_1a_1_north" },
+ { "point": [ 1, 0, 1 ], "overmap": "oil_platform_1b_1_north" },
+ { "point": [ 2, 0, 1 ], "overmap": "oil_platform_1c_1_north" },
+ { "point": [ 0, 1, 1 ], "overmap": "oil_platform_2a_1_north" },
+ { "point": [ 1, 1, 1 ], "overmap": "oil_platform_2b_1_north" },
+ { "point": [ 2, 1, 1 ], "overmap": "oil_platform_2c_1_north" },
+ { "point": [ 0, 2, 1 ], "overmap": "oil_platform_3a_1_north" },
+ { "point": [ 1, 2, 1 ], "overmap": "oil_platform_3b_1_north" },
+ { "point": [ 2, 2, 1 ], "overmap": "oil_platform_3c_1_north" },
+ { "point": [ 0, 3, 1 ], "overmap": "oil_platform_4a_1_north" },
+ { "point": [ 1, 3, 1 ], "overmap": "oil_platform_4b_1_north" },
+ { "point": [ 2, 3, 1 ], "overmap": "oil_platform_4c_1_north" },
+ { "point": [ 0, 0, 2 ], "overmap": "oil_platform_1a_2_north" },
+ { "point": [ 1, 0, 2 ], "overmap": "oil_platform_1b_2_north" },
+ { "point": [ 2, 0, 2 ], "overmap": "oil_platform_1c_2_north" },
+ { "point": [ 0, 1, 2 ], "overmap": "oil_platform_2a_2_north" },
+ { "point": [ 1, 1, 2 ], "overmap": "oil_platform_2b_2_north" },
+ { "point": [ 2, 1, 2 ], "overmap": "oil_platform_2c_2_north" },
+ { "point": [ 0, 2, 2 ], "overmap": "oil_platform_3a_2_north" },
+ { "point": [ 1, 2, 2 ], "overmap": "oil_platform_3b_2_north" },
+ { "point": [ 2, 2, 2 ], "overmap": "oil_platform_3c_2_north" },
+ { "point": [ 0, 3, 2 ], "overmap": "oil_platform_4a_2_north" },
+ { "point": [ 1, 3, 2 ], "overmap": "oil_platform_4b_2_north" },
+ { "point": [ 2, 3, 2 ], "overmap": "oil_platform_4c_2_north" },
+ { "point": [ 0, 0, 3 ], "overmap": "oil_platform_1a_3_north" },
+ { "point": [ 1, 0, 3 ], "overmap": "oil_platform_1b_3_north" },
+ { "point": [ 2, 0, 3 ], "overmap": "oil_platform_1c_3_north" },
+ { "point": [ 0, 1, 3 ], "overmap": "oil_platform_2a_3_north" },
+ { "point": [ 1, 1, 3 ], "overmap": "oil_platform_2b_3_north" },
+ { "point": [ 2, 1, 3 ], "overmap": "oil_platform_2c_3_north" },
+ { "point": [ 0, 2, 3 ], "overmap": "oil_platform_3a_3_north" },
+ { "point": [ 1, 2, 3 ], "overmap": "oil_platform_3b_3_north" },
+ { "point": [ 2, 2, 3 ], "overmap": "oil_platform_3c_3_north" },
+ { "point": [ 0, 3, 3 ], "overmap": "oil_platform_4a_3_north" },
+ { "point": [ 1, 3, 3 ], "overmap": "oil_platform_4b_3_north" },
+ { "point": [ 2, 3, 3 ], "overmap": "oil_platform_4c_3_north" },
+ { "point": [ 0, 0, 4 ], "overmap": "oil_platform_1a_4_north" },
+ { "point": [ 1, 0, 4 ], "overmap": "oil_platform_1b_4_north" },
+ { "point": [ 2, 0, 4 ], "overmap": "oil_platform_1c_4_north" },
+ { "point": [ 0, 1, 4 ], "overmap": "oil_platform_2a_4_north" },
+ { "point": [ 1, 1, 4 ], "overmap": "oil_platform_2b_4_north" },
+ { "point": [ 2, 1, 4 ], "overmap": "oil_platform_2c_4_north" },
+ { "point": [ 0, 2, 4 ], "overmap": "oil_platform_3a_4_north" },
+ { "point": [ 1, 2, 4 ], "overmap": "oil_platform_3b_4_north" },
+ { "point": [ 2, 2, 4 ], "overmap": "oil_platform_3c_4_north" },
+ { "point": [ 0, 3, 4 ], "overmap": "oil_platform_4a_4_north" },
+ { "point": [ 1, 3, 4 ], "overmap": "oil_platform_4b_4_north" },
+ { "point": [ 2, 3, 4 ], "overmap": "oil_platform_4c_4_north" },
+ { "point": [ 0, 0, 5 ], "overmap": "oil_platform_1a_5_north" },
+ { "point": [ 1, 0, 5 ], "overmap": "oil_platform_1b_5_north" },
+ { "point": [ 2, 0, 5 ], "overmap": "oil_platform_1c_5_north" },
+ { "point": [ 0, 1, 5 ], "overmap": "oil_platform_2a_5_north" },
+ { "point": [ 1, 1, 5 ], "overmap": "oil_platform_2b_5_north" },
+ { "point": [ 2, 1, 5 ], "overmap": "oil_platform_2c_5_north" },
+ { "point": [ 0, 2, 5 ], "overmap": "oil_platform_3a_5_north" },
+ { "point": [ 1, 2, 5 ], "overmap": "oil_platform_3b_5_north" },
+ { "point": [ 2, 2, 5 ], "overmap": "oil_platform_3c_5_north" },
+ { "point": [ 0, 3, 5 ], "overmap": "oil_platform_4a_5_north" },
+ { "point": [ 1, 3, 5 ], "overmap": "oil_platform_4b_5_north" },
+ { "point": [ 2, 3, 5 ], "overmap": "oil_platform_4c_5_north" },
+ { "point": [ 0, 0, 6 ], "overmap": "oil_platform_1a_6_north" },
+ { "point": [ 1, 0, 6 ], "overmap": "oil_platform_1b_6_north" },
+ { "point": [ 2, 0, 6 ], "overmap": "oil_platform_1c_6_north" },
+ { "point": [ 0, 1, 6 ], "overmap": "oil_platform_2a_6_north" },
+ { "point": [ 1, 1, 6 ], "overmap": "oil_platform_2b_6_north" },
+ { "point": [ 2, 1, 6 ], "overmap": "oil_platform_2c_6_north" },
+ { "point": [ 0, 2, 6 ], "overmap": "oil_platform_3a_6_north" },
+ { "point": [ 1, 2, 6 ], "overmap": "oil_platform_3b_6_north" },
+ { "point": [ 2, 2, 6 ], "overmap": "oil_platform_3c_6_north" },
+ { "point": [ 0, 3, 6 ], "overmap": "oil_platform_4a_6_north" },
+ { "point": [ 1, 3, 6 ], "overmap": "oil_platform_4b_6_north" },
+ { "point": [ 2, 3, 6 ], "overmap": "oil_platform_4c_6_north" },
+ { "point": [ 0, 0, 7 ], "overmap": "oil_platform_1a_7_north" },
+ { "point": [ 1, 0, 7 ], "overmap": "oil_platform_1b_7_north" },
+ { "point": [ 2, 0, 7 ], "overmap": "oil_platform_1c_7_north" },
+ { "point": [ 0, 1, 7 ], "overmap": "oil_platform_2a_7_north" },
+ { "point": [ 1, 1, 7 ], "overmap": "oil_platform_2b_7_north" },
+ { "point": [ 2, 1, 7 ], "overmap": "oil_platform_2c_7_north" },
+ { "point": [ 0, 2, 7 ], "overmap": "oil_platform_3a_7_north" },
+ { "point": [ 1, 2, 7 ], "overmap": "oil_platform_3b_7_north" },
+ { "point": [ 2, 2, 7 ], "overmap": "oil_platform_3c_7_north" },
+ { "point": [ 0, 3, 7 ], "overmap": "oil_platform_4a_7_north" },
+ { "point": [ 1, 3, 7 ], "overmap": "oil_platform_4b_7_north" },
+ { "point": [ 2, 3, 7 ], "overmap": "oil_platform_4c_7_north" },
+ { "point": [ 0, 0, -1 ], "overmap": "oil_platform_1a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 0, -1 ], "overmap": "oil_platform_1b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 0, -1 ], "overmap": "oil_platform_1c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 1, -1 ], "overmap": "oil_platform_2a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 1, -1 ], "overmap": "oil_platform_2b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 1, -1 ], "overmap": "oil_platform_2c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 2, -1 ], "overmap": "oil_platform_3a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 2, -1 ], "overmap": "oil_platform_3b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 2, -1 ], "overmap": "oil_platform_3c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 3, -1 ], "overmap": "oil_platform_4a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 3, -1 ], "overmap": "oil_platform_4b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 3, -1 ], "overmap": "oil_platform_4c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 0, -2 ], "overmap": "oil_platform_1a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 0, -2 ], "overmap": "oil_platform_1b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 0, -2 ], "overmap": "oil_platform_1c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 1, -2 ], "overmap": "oil_platform_2a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 1, -2 ], "overmap": "oil_platform_2b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 1, -2 ], "overmap": "oil_platform_2c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 2, -2 ], "overmap": "oil_platform_3a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 2, -2 ], "overmap": "oil_platform_3b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 2, -2 ], "overmap": "oil_platform_3c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 3, -2 ], "overmap": "oil_platform_4a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 3, -2 ], "overmap": "oil_platform_4b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 3, -2 ], "overmap": "oil_platform_4c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 0, -3 ], "overmap": "oil_platform_1a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 0, -3 ], "overmap": "oil_platform_1b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 0, -3 ], "overmap": "oil_platform_1c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 1, -3 ], "overmap": "oil_platform_2a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 1, -3 ], "overmap": "oil_platform_2b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 1, -3 ], "overmap": "oil_platform_2c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 2, -3 ], "overmap": "oil_platform_3a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 2, -3 ], "overmap": "oil_platform_3b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 2, -3 ], "overmap": "oil_platform_3c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 3, -3 ], "overmap": "oil_platform_4a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 3, -3 ], "overmap": "oil_platform_4b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 3, -3 ], "overmap": "oil_platform_4c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 0, -4 ], "overmap": "oil_platform_1a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 0, -4 ], "overmap": "oil_platform_1b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 0, -4 ], "overmap": "oil_platform_1c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 1, -4 ], "overmap": "oil_platform_2a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 1, -4 ], "overmap": "oil_platform_2b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 1, -4 ], "overmap": "oil_platform_2c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 2, -4 ], "overmap": "oil_platform_3a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 2, -4 ], "overmap": "oil_platform_3b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 2, -4 ], "overmap": "oil_platform_3c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 3, -4 ], "overmap": "oil_platform_4a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 3, -4 ], "overmap": "oil_platform_4b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 3, -4 ], "overmap": "oil_platform_4c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 0, -5 ], "overmap": "oil_platform_1a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 0, -5 ], "overmap": "oil_platform_1b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 0, -5 ], "overmap": "oil_platform_1c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 1, -5 ], "overmap": "oil_platform_2a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 1, -5 ], "overmap": "oil_platform_2b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 1, -5 ], "overmap": "oil_platform_2c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 2, -5 ], "overmap": "oil_platform_3a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 2, -5 ], "overmap": "oil_platform_3b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 2, -5 ], "overmap": "oil_platform_3c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 3, -5 ], "overmap": "oil_platform_4a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 3, -5 ], "overmap": "oil_platform_4b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 3, -5 ], "overmap": "oil_platform_4c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 0, -6 ], "overmap": "oil_platform_1a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 0, -6 ], "overmap": "oil_platform_1b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 0, -6 ], "overmap": "oil_platform_1c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 1, -6 ], "overmap": "oil_platform_2a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 1, -6 ], "overmap": "oil_platform_2b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 1, -6 ], "overmap": "oil_platform_2c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 2, -6 ], "overmap": "oil_platform_3a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 2, -6 ], "overmap": "oil_platform_3b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 2, -6 ], "overmap": "oil_platform_3c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 3, -6 ], "overmap": "oil_platform_4a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 3, -6 ], "overmap": "oil_platform_4b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 3, -6 ], "overmap": "oil_platform_4c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 0, -7 ], "overmap": "oil_platform_1a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 0, -7 ], "overmap": "oil_platform_1b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 0, -7 ], "overmap": "oil_platform_1c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 1, -7 ], "overmap": "oil_platform_2a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 1, -7 ], "overmap": "oil_platform_2b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 1, -7 ], "overmap": "oil_platform_2c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 2, -7 ], "overmap": "oil_platform_3a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 2, -7 ], "overmap": "oil_platform_3b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 2, -7 ], "overmap": "oil_platform_3c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 3, -7 ], "overmap": "oil_platform_4a_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 3, -7 ], "overmap": "oil_platform_4b_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 3, -7 ], "overmap": "oil_platform_4c_uw_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 0, -8 ], "overmap": "oil_platform_1a_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 0, -8 ], "overmap": "oil_platform_1b_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 0, -8 ], "overmap": "oil_platform_1c_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 1, -8 ], "overmap": "oil_platform_2a_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 1, -8 ], "overmap": "oil_platform_2b_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 1, -8 ], "overmap": "oil_platform_2c_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 2, -8 ], "overmap": "oil_platform_3a_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 2, -8 ], "overmap": "oil_platform_3b_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 2, -8 ], "overmap": "oil_platform_3c_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 3, -8 ], "overmap": "oil_platform_4a_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 1, 3, -8 ], "overmap": "oil_platform_4b_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 2, 3, -8 ], "overmap": "oil_platform_4c_z-8_north", "locations": [ "ocean_water_cube" ] },
+ { "point": [ 0, 0, -9 ], "overmap": "oil_platform_1a_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 1, 0, -9 ], "overmap": "oil_platform_1b_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 2, 0, -9 ], "overmap": "oil_platform_1c_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 0, 1, -9 ], "overmap": "oil_platform_2a_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 1, 1, -9 ], "overmap": "oil_platform_2b_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 2, 1, -9 ], "overmap": "oil_platform_2c_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 0, 2, -9 ], "overmap": "oil_platform_3a_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 1, 2, -9 ], "overmap": "oil_platform_3b_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 2, 2, -9 ], "overmap": "oil_platform_3c_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 0, 3, -9 ], "overmap": "oil_platform_4a_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 1, 3, -9 ], "overmap": "oil_platform_4b_z-9_north", "locations": [ "ocean_bed" ] },
+ { "point": [ 2, 3, -9 ], "overmap": "oil_platform_4c_z-9_north", "locations": [ "ocean_bed" ] }
+ ],
+ "city_distance": [ 150, 1000 ],
+ "locations": [ "ocean_surface" ],
+ "occurrences": [ 5, 100 ],
+ "flags": [ "MAN_MADE", "OCEAN", "UNIQUE" ]
+ }
+]
diff --git a/data/json/overmap/overmap_terrain/overmap_terrain_oil_platform.json b/data/json/overmap/overmap_terrain/overmap_terrain_oil_platform.json
new file mode 100644
index 0000000000000..94713b2ebe867
--- /dev/null
+++ b/data/json/overmap/overmap_terrain/overmap_terrain_oil_platform.json
@@ -0,0 +1,168 @@
+[
+ {
+ "type": "overmap_terrain",
+ "id": [
+ "oil_platform_1a_2",
+ "oil_platform_1b_2",
+ "oil_platform_1c_2",
+ "oil_platform_2a_2",
+ "oil_platform_2b_2",
+ "oil_platform_2c_2",
+ "oil_platform_3a_2",
+ "oil_platform_3b_2",
+ "oil_platform_3c_2",
+ "oil_platform_4a_2",
+ "oil_platform_4b_2",
+ "oil_platform_4c_2",
+ "oil_platform_1a_3",
+ "oil_platform_1b_3",
+ "oil_platform_1c_3",
+ "oil_platform_4a_3",
+ "oil_platform_4b_3",
+ "oil_platform_4c_3",
+ "oil_platform_1a_4",
+ "oil_platform_1b_4",
+ "oil_platform_1c_4",
+ "oil_platform_4a_4",
+ "oil_platform_4b_4",
+ "oil_platform_4c_4",
+ "oil_platform_1a_5",
+ "oil_platform_1b_5",
+ "oil_platform_1c_5",
+ "oil_platform_3a_5",
+ "oil_platform_3b_5",
+ "oil_platform_3c_5",
+ "oil_platform_4a_5",
+ "oil_platform_4b_5",
+ "oil_platform_4c_5"
+ ],
+ "name": "oil platform",
+ "sym": "O",
+ "color": "red",
+ "see_cost": 5,
+ "spawns": { "group": "GROUP_OIL_PLATFORM", "population": [ 15, 20 ], "chance": 100 },
+ "flags": [ "RISK_HIGH", "OCEAN" ]
+ },
+ {
+ "type": "overmap_terrain",
+ "//": "Dorms area",
+ "id": [
+ "oil_platform_3a_3",
+ "oil_platform_3b_3",
+ "oil_platform_3c_3",
+ "oil_platform_3a_4",
+ "oil_platform_3b_4",
+ "oil_platform_3c_4"
+ ],
+ "name": "oil platform",
+ "sym": "O",
+ "color": "red",
+ "see_cost": 5,
+ "spawns": { "group": "GROUP_OIL_PLATFORM", "population": [ 25, 35 ], "chance": 100 },
+ "flags": [ "RISK_HIGH", "OCEAN" ]
+ },
+ {
+ "type": "overmap_terrain",
+ "//": "Open air, lower and underwater levels",
+ "id": [
+ "oil_platform_1a_0",
+ "oil_platform_1b_0",
+ "oil_platform_1c_0",
+ "oil_platform_2a_0",
+ "oil_platform_2b_0",
+ "oil_platform_2c_0",
+ "oil_platform_3a_0",
+ "oil_platform_3b_0",
+ "oil_platform_3c_0",
+ "oil_platform_4a_0",
+ "oil_platform_4b_0",
+ "oil_platform_4c_0",
+ "oil_platform_1a_1",
+ "oil_platform_1b_1",
+ "oil_platform_1c_1",
+ "oil_platform_2a_1",
+ "oil_platform_2b_1",
+ "oil_platform_2c_1",
+ "oil_platform_3a_1",
+ "oil_platform_3b_1",
+ "oil_platform_3c_1",
+ "oil_platform_4a_1",
+ "oil_platform_4b_1",
+ "oil_platform_4c_1",
+ "oil_platform_2a_3",
+ "oil_platform_2b_3",
+ "oil_platform_2c_3",
+ "oil_platform_2a_4",
+ "oil_platform_2b_4",
+ "oil_platform_2c_4",
+ "oil_platform_2a_5",
+ "oil_platform_2b_5",
+ "oil_platform_2c_5",
+ "oil_platform_1a_6",
+ "oil_platform_1b_6",
+ "oil_platform_1c_6",
+ "oil_platform_2a_6",
+ "oil_platform_2b_6",
+ "oil_platform_2c_6",
+ "oil_platform_3a_6",
+ "oil_platform_3b_6",
+ "oil_platform_3c_6",
+ "oil_platform_4a_6",
+ "oil_platform_4b_6",
+ "oil_platform_4c_6",
+ "oil_platform_1a_7",
+ "oil_platform_1b_7",
+ "oil_platform_1c_7",
+ "oil_platform_2a_7",
+ "oil_platform_2b_7",
+ "oil_platform_2c_7",
+ "oil_platform_3a_7",
+ "oil_platform_3b_7",
+ "oil_platform_3c_7",
+ "oil_platform_4a_7",
+ "oil_platform_4b_7",
+ "oil_platform_4c_7",
+ "oil_platform_1a_uw",
+ "oil_platform_1b_uw",
+ "oil_platform_1c_uw",
+ "oil_platform_2a_uw",
+ "oil_platform_2b_uw",
+ "oil_platform_2c_uw",
+ "oil_platform_3a_uw",
+ "oil_platform_3b_uw",
+ "oil_platform_3c_uw",
+ "oil_platform_4a_uw",
+ "oil_platform_4b_uw",
+ "oil_platform_4c_uw",
+ "oil_platform_1a_z-8",
+ "oil_platform_1b_z-8",
+ "oil_platform_1c_z-8",
+ "oil_platform_2a_z-8",
+ "oil_platform_2b_z-8",
+ "oil_platform_2c_z-8",
+ "oil_platform_3a_z-8",
+ "oil_platform_3b_z-8",
+ "oil_platform_3c_z-8",
+ "oil_platform_4a_z-8",
+ "oil_platform_4b_z-8",
+ "oil_platform_4c_z-8",
+ "oil_platform_1a_z-9",
+ "oil_platform_1b_z-9",
+ "oil_platform_1c_z-9",
+ "oil_platform_2a_z-9",
+ "oil_platform_2b_z-9",
+ "oil_platform_2c_z-9",
+ "oil_platform_3a_z-9",
+ "oil_platform_3b_z-9",
+ "oil_platform_3c_z-9",
+ "oil_platform_4a_z-9",
+ "oil_platform_4b_z-9",
+ "oil_platform_4c_z-9"
+ ],
+ "name": "oil platform",
+ "sym": "O",
+ "color": "red",
+ "see_cost": 5,
+ "flags": [ "RISK_HIGH", "OCEAN" ]
+ }
+]
diff --git a/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json b/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json
index b3203493b6156..355311be67aa7 100644
--- a/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json
+++ b/data/mods/TEST_DATA/overmap_terrain_coverage_test/overmap_terrain_coverage_whitelist.json
@@ -64,7 +64,139 @@
"unvitrified_farm_1",
"unvitrified_farm_2",
"unvitrified_farm_neg_1",
- "unvitrified_orchard"
+ "unvitrified_orchard",
+ "oil_platform_1a_2",
+ "oil_platform_1b_2",
+ "oil_platform_1c_2",
+ "oil_platform_2a_2",
+ "oil_platform_2b_2",
+ "oil_platform_2c_2",
+ "oil_platform_3a_2",
+ "oil_platform_3b_2",
+ "oil_platform_3c_2",
+ "oil_platform_4a_2",
+ "oil_platform_4b_2",
+ "oil_platform_4c_2",
+ "oil_platform_1a_3",
+ "oil_platform_1b_3",
+ "oil_platform_1c_3",
+ "oil_platform_4a_3",
+ "oil_platform_4b_3",
+ "oil_platform_4c_3",
+ "oil_platform_1a_4",
+ "oil_platform_1b_4",
+ "oil_platform_1c_4",
+ "oil_platform_4a_4",
+ "oil_platform_4b_4",
+ "oil_platform_4c_4",
+ "oil_platform_1a_5",
+ "oil_platform_1b_5",
+ "oil_platform_1c_5",
+ "oil_platform_3a_5",
+ "oil_platform_3b_5",
+ "oil_platform_3c_5",
+ "oil_platform_4a_5",
+ "oil_platform_4b_5",
+ "oil_platform_4c_5",
+ "oil_platform_3a_3",
+ "oil_platform_3b_3",
+ "oil_platform_3c_3",
+ "oil_platform_3a_4",
+ "oil_platform_3b_4",
+ "oil_platform_3c_4",
+ "oil_platform_1a_0",
+ "oil_platform_1b_0",
+ "oil_platform_1c_0",
+ "oil_platform_2a_0",
+ "oil_platform_2b_0",
+ "oil_platform_2c_0",
+ "oil_platform_3a_0",
+ "oil_platform_3b_0",
+ "oil_platform_3c_0",
+ "oil_platform_4a_0",
+ "oil_platform_4b_0",
+ "oil_platform_4c_0",
+ "oil_platform_1a_1",
+ "oil_platform_1b_1",
+ "oil_platform_1c_1",
+ "oil_platform_2a_1",
+ "oil_platform_2b_1",
+ "oil_platform_2c_1",
+ "oil_platform_3a_1",
+ "oil_platform_3b_1",
+ "oil_platform_3c_1",
+ "oil_platform_4a_1",
+ "oil_platform_4b_1",
+ "oil_platform_4c_1",
+ "oil_platform_2a_3",
+ "oil_platform_2b_3",
+ "oil_platform_2c_3",
+ "oil_platform_2a_4",
+ "oil_platform_2b_4",
+ "oil_platform_2c_4",
+ "oil_platform_2a_5",
+ "oil_platform_2b_5",
+ "oil_platform_2c_5",
+ "oil_platform_1a_6",
+ "oil_platform_1b_6",
+ "oil_platform_1c_6",
+ "oil_platform_2a_6",
+ "oil_platform_2b_6",
+ "oil_platform_2c_6",
+ "oil_platform_3a_6",
+ "oil_platform_3b_6",
+ "oil_platform_3c_6",
+ "oil_platform_4a_6",
+ "oil_platform_4b_6",
+ "oil_platform_4c_6",
+ "oil_platform_1a_7",
+ "oil_platform_1b_7",
+ "oil_platform_1c_7",
+ "oil_platform_2a_7",
+ "oil_platform_2b_7",
+ "oil_platform_2c_7",
+ "oil_platform_3a_7",
+ "oil_platform_3b_7",
+ "oil_platform_3c_7",
+ "oil_platform_4a_7",
+ "oil_platform_4b_7",
+ "oil_platform_4c_7",
+ "oil_platform_1a_uw",
+ "oil_platform_1b_uw",
+ "oil_platform_1c_uw",
+ "oil_platform_2a_uw",
+ "oil_platform_2b_uw",
+ "oil_platform_2c_uw",
+ "oil_platform_3a_uw",
+ "oil_platform_3b_uw",
+ "oil_platform_3c_uw",
+ "oil_platform_4a_uw",
+ "oil_platform_4b_uw",
+ "oil_platform_4c_uw",
+ "oil_platform_1a_z-8",
+ "oil_platform_1b_z-8",
+ "oil_platform_1c_z-8",
+ "oil_platform_2a_z-8",
+ "oil_platform_2b_z-8",
+ "oil_platform_2c_z-8",
+ "oil_platform_3a_z-8",
+ "oil_platform_3b_z-8",
+ "oil_platform_3c_z-8",
+ "oil_platform_4a_z-8",
+ "oil_platform_4b_z-8",
+ "oil_platform_4c_z-8",
+ "oil_platform_1a_z-9",
+ "oil_platform_1b_z-9",
+ "oil_platform_1c_z-9",
+ "oil_platform_2a_z-9",
+ "oil_platform_2b_z-9",
+ "oil_platform_2c_z-9",
+ "oil_platform_3a_z-9",
+ "oil_platform_3b_z-9",
+ "oil_platform_3c_z-9",
+ "oil_platform_4a_z-9",
+ "oil_platform_4b_z-9",
+ "oil_platform_4c_z-9"
]
}
]