summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--PKGBUILD27
-rw-r--r--hotfix-01_fix-negative-calories-when-creating-dry-rice-4373.patch26
-rw-r--r--hotfix-02_perf-disable-vsync-by-default-4414.patch53
-rw-r--r--hotfix-03_fix-enable-vsync-by-default-4433.patch26
-rw-r--r--hotfix-04_fix-mapgen-fix-for-level-0-of-the-Necropolis-4380.patch100
-rw-r--r--hotfix-05_fix-more-fix-for-level-0-of-the-Necropolis-4387.patch522
-rw-r--r--hotfix-06_fix-more-fix-for-level-0-of-the-Necropolis-2-4426.patch274
7 files changed, 1027 insertions, 1 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 76cb6ce..9a438a4 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -18,7 +18,7 @@ _pkgname=Cataclysm-BN
pkgver=0.6.0
#pkgver=202310040030
#_pkgver=2023-10-04-0030
-pkgrel=3
+pkgrel=4
pkgdesc="A post-apocalyptic roguelike."
#url="http://cataclysmrl.blogspot.com/"
#url="http://www.cataclysm.glyphgryph.com/"
@@ -36,6 +36,13 @@ source=("$pkgname-$pkgver.tar.gz::https://github.com/cataclysmbnteam/Cataclysm-B
"cataclysm-bn-tiles.desktop"
"icon_128x128.png"
+ "hotfix-01_fix-negative-calories-when-creating-dry-rice-4373.patch"
+ "hotfix-02_perf-disable-vsync-by-default-4414.patch"
+ "hotfix-03_fix-enable-vsync-by-default-4433.patch"
+ "hotfix-04_fix-mapgen-fix-for-level-0-of-the-Necropolis-4380.patch"
+ "hotfix-05_fix-more-fix-for-level-0-of-the-Necropolis-4387.patch"
+ "hotfix-06_fix-more-fix-for-level-0-of-the-Necropolis-2-4426.patch"
+
"revert-01_removed-traits.patch"
"revert-02_revert-book-revamp.patch"
"revert-03_generic-nv.patch"
@@ -162,6 +169,12 @@ b2sums=('1a311f72d159194d8737b75a484d015caf75a1920b1e9eaa0bdbcd9c0bb8aceda1f59a5
'069ecde58859b3d44cd687c4b6e718610cefb693ff86e66f199ebfb1b3072023ad2b6f0c28e27ef9c1ce4997f6a5b2ca0d45046996b3ff35a4aeaeb1a7cf9421'
'ad88bc6c1e3c8183a313b5eec42f98d6956afea349feff34a86e4536c9921fa99d2594282caf27de8ebb7ffb56376ed2e76d572227bfd6d8173c7bb1f01e23b8'
'6f70e90359a14e4839d9a2683debb88850e5dd387add911ad68fd87e5512cfcdd435da63e1e370358153673fd5a72a9b1e9c94f1979edb7948b4da8c82407bad'
+ '211eb5f17622546e41b21a6df3a54a777773fa092cad6818fece68975ceade9064f61735d44736f6b5fe4a320fc03855532b69ae9de6652806c1468c6979caf9'
+ '4d8996d5a29b539c9dfd6a970d4a6c51faf4739038ebaf40bfc8ad066219fc1605be028fb5c00588d73d0a8c930b3c867db0ce1c3174df172d1551901b428e4a'
+ 'e2cb955fe450bd9a06b82abf755dae72d8012e454c43ad69d1654a67d0c304769817087a03604da21b9f478bdc8365c95fee3d746a58a7bd007f652e9902d244'
+ 'a22b8b17d97b09d622ca777743224a164be5b7be3e7f763aa8b94eebc2a5447d5d7875587562987faacd68613628093bf215c38ad5544a8d48a2b4e8bca7c587'
+ '2acab6e5fb1c51f6b09ee13893917c9876f0009f9c8537d93f13563b461b9855722d3c1dc55803aee5922a9283da41656ec62dbf30cf6d265e858fd397762067'
+ 'bc6b14d6000412cea47bbe1bf3a4a56f06c13afcffd555cfe93d99e5d3b16ce66b0cb2458cd211dcf097974870b78876c2f3f056eb8f9304c4c85b2655dfe831'
'fdef1f81084e7b08203b8464f37a00e2efc8b11d423c6e6b82e612392d91047160d2bc472b63c836ebc48adee0b4f2b3434c3e07eed5876275b234e69d7f6b9c'
'2b42190f1d7189a38b3424efe64fd1b3921919a4f6fc872462ef684587de94b900e93f159597ab3e6f576268fed3e6966cddc3fa7250e1b746095fd7a2cbf6e9'
'e417a1786fbafb685099431f7f9926201ab80636bf3812da67acc341c7ef2b6a3853734d5b8b1bc355acbd5c0bedefb0401f8854aa5cb00032550afc8a7b9ebe'
@@ -303,6 +316,18 @@ prepare() {
# # # Hotfixes
echo "Applying hotfixes"
+ # Fix dried rice having negative calories
+ patch -Np1 --no-backup-if-mismatch -i "$srcdir"/hotfix-01_fix-negative-calories-when-creating-dry-rice-4373.patch
+
+ # Allow disabling vsync and enable vsync by default as disabling it causes problems for some users
+ patch -Np1 --no-backup-if-mismatch -i "$srcdir"/hotfix-02_perf-disable-vsync-by-default-4414.patch
+ patch -Np1 --no-backup-if-mismatch -i "$srcdir"/hotfix-03_fix-enable-vsync-by-default-4433.patch
+
+ # Backport some fixes for the Necropolis
+ patch -Np1 --no-backup-if-mismatch -i "$srcdir"/hotfix-04_fix-mapgen-fix-for-level-0-of-the-Necropolis-4380.patch
+ patch -Np1 --no-backup-if-mismatch -i "$srcdir"/hotfix-05_fix-more-fix-for-level-0-of-the-Necropolis-4387.patch
+ patch -Np1 --no-backup-if-mismatch -i "$srcdir"/hotfix-06_fix-more-fix-for-level-0-of-the-Necropolis-2-4426.patch
+
# # Adjust default mods
patch -Np1 --no-backup-if-mismatch -i "$srcdir"/src-20_fix-default-mods.patch
diff --git a/hotfix-01_fix-negative-calories-when-creating-dry-rice-4373.patch b/hotfix-01_fix-negative-calories-when-creating-dry-rice-4373.patch
new file mode 100644
index 0000000..8579837
--- /dev/null
+++ b/hotfix-01_fix-negative-calories-when-creating-dry-rice-4373.patch
@@ -0,0 +1,26 @@
+From 637b6c242d7bd261ab61a2eb273a6be552aab1a2 Mon Sep 17 00:00:00 2001
+From: Viss Valdyr <33199510+Lamandus@users.noreply.github.com>
+Date: Thu, 21 Mar 2024 01:25:59 +0100
+Subject: [PATCH] fix: negative calories when creating dry rice (#4373)
+
+---
+ data/json/items/comestibles/veggy_dishes.json | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/data/json/items/comestibles/veggy_dishes.json b/data/json/items/comestibles/veggy_dishes.json
+index 88f6e8d97f0..b60fad08e43 100644
+--- a/data/json/items/comestibles/veggy_dishes.json
++++ b/data/json/items/comestibles/veggy_dishes.json
+@@ -302,7 +302,8 @@
+ "milling": { "into": "flour", "conversion_rate": 3 },
+ "charges": 3,
+ "vitamins": [ [ "iron", 3 ] ],
+- "fun": -15
++ "fun": -15,
++ "flags": [ "NUTRIENT_OVERRIDE" ]
+ },
+ {
+ "type": "COMESTIBLE",
+--
+2.43.0
+
diff --git a/hotfix-02_perf-disable-vsync-by-default-4414.patch b/hotfix-02_perf-disable-vsync-by-default-4414.patch
new file mode 100644
index 0000000..4220a06
--- /dev/null
+++ b/hotfix-02_perf-disable-vsync-by-default-4414.patch
@@ -0,0 +1,53 @@
+From 404ca35f036358419353107cfbbfcf7c95f89ba8 Mon Sep 17 00:00:00 2001
+From: scarf <greenscarf005@gmail.com>
+Date: Mon, 1 Apr 2024 00:50:26 +0900
+Subject: [PATCH] perf: disable vsync by default (#4414)
+
+* perf: disable vsync by default
+
+* fix: warn vsync performance
+---
+ src/options.cpp | 7 +++++++
+ src/sdltiles.cpp | 8 ++++++--
+ 2 files changed, 13 insertions(+), 2 deletions(-)
+
+diff --git a/src/options.cpp b/src/options.cpp
+index 85832403dc0..684e8cbd48e 100644
+--- a/src/options.cpp
++++ b/src/options.cpp
+@@ -2090,6 +2090,13 @@ void options_manager::add_options_graphics()
+ false, COPT_CURSES_HIDE
+ );
+
++#if defined(SDL_HINT_RENDER_VSYNC)
++ add( "VSYNC", graphics, translate_marker( "Use VSync" ),
++ translate_marker( "Enable vertical synchronization to prevent screen tearing. VSync can slow the game down a lot. Requires restart." ),
++ false, COPT_CURSES_HIDE
++ );
++#endif
++
+ #if defined(__ANDROID__)
+ get_option( "FRAMEBUFFER_ACCEL" ).setPrerequisite( "SOFTWARE_RENDERING" );
+ #else
+diff --git a/src/sdltiles.cpp b/src/sdltiles.cpp
+index 226513ad2ff..561d2e767da 100644
+--- a/src/sdltiles.cpp
++++ b/src/sdltiles.cpp
+@@ -350,8 +350,12 @@ static void WinCreate()
+ if( !software_renderer ) {
+ dbg( DL::Info ) << "Attempting to initialize accelerated SDL renderer.";
+
+- renderer.reset( SDL_CreateRenderer( ::window.get(), renderer_id, SDL_RENDERER_ACCELERATED |
+- SDL_RENDERER_PRESENTVSYNC | SDL_RENDERER_TARGETTEXTURE ) );
++ int init_flags = SDL_RENDERER_ACCELERATED | SDL_RENDERER_TARGETTEXTURE;
++ if( get_option<bool>( "VSYNC" ) ) {
++ init_flags |= SDL_RENDERER_PRESENTVSYNC;
++ }
++
++ renderer.reset( SDL_CreateRenderer( ::window.get(), renderer_id, init_flags ) );
+ if( printErrorIf( !renderer,
+ "Failed to initialize accelerated renderer, falling back to software rendering" ) ) {
+ software_renderer = true;
+--
+2.43.0
+
diff --git a/hotfix-03_fix-enable-vsync-by-default-4433.patch b/hotfix-03_fix-enable-vsync-by-default-4433.patch
new file mode 100644
index 0000000..1122713
--- /dev/null
+++ b/hotfix-03_fix-enable-vsync-by-default-4433.patch
@@ -0,0 +1,26 @@
+From 4cc938973fab92800916dc99da5542bbcee14fa7 Mon Sep 17 00:00:00 2001
+From: scarf <greenscarf005@gmail.com>
+Date: Thu, 4 Apr 2024 18:14:18 +0900
+Subject: [PATCH] fix: enable vsync by default (#4433)
+
+was causing issues on windows
+---
+ src/options.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/options.cpp b/src/options.cpp
+index 684e8cbd48e..6bd5219ee22 100644
+--- a/src/options.cpp
++++ b/src/options.cpp
+@@ -2093,7 +2093,7 @@ void options_manager::add_options_graphics()
+ #if defined(SDL_HINT_RENDER_VSYNC)
+ add( "VSYNC", graphics, translate_marker( "Use VSync" ),
+ translate_marker( "Enable vertical synchronization to prevent screen tearing. VSync can slow the game down a lot. Requires restart." ),
+- false, COPT_CURSES_HIDE
++ true, COPT_CURSES_HIDE
+ );
+ #endif
+
+--
+2.43.0
+
diff --git a/hotfix-04_fix-mapgen-fix-for-level-0-of-the-Necropolis-4380.patch b/hotfix-04_fix-mapgen-fix-for-level-0-of-the-Necropolis-4380.patch
new file mode 100644
index 0000000..081464a
--- /dev/null
+++ b/hotfix-04_fix-mapgen-fix-for-level-0-of-the-Necropolis-4380.patch
@@ -0,0 +1,100 @@
+From 0992ddd7cea7c1f16101951367fa8a222d67f8b0 Mon Sep 17 00:00:00 2001
+From: 0Monet <146018959+0Monet@users.noreply.github.com>
+Date: Fri, 22 Mar 2024 22:58:30 +0100
+Subject: [PATCH] fix: mapgen fix for level 0 of the Necropolis (#4380)
+
+* Add symbols to the palette
+
+* Change symbols
+---
+ data/json/mapgen/necropolis/necropolis.json | 17 +++++++++--------
+ .../necropolis/necropolis_a.json | 10 ++++++++--
+ 2 files changed, 17 insertions(+), 10 deletions(-)
+
+diff --git a/data/json/mapgen/necropolis/necropolis.json b/data/json/mapgen/necropolis/necropolis.json
+index 32b64ed0835..111d183670e 100644
+--- a/data/json/mapgen/necropolis/necropolis.json
++++ b/data/json/mapgen/necropolis/necropolis.json
+@@ -98,6 +98,7 @@
+ "..........................ss_______,,_______ss..|-www-[[-www-|777777778."
+ ],
+ "palettes": [ "necropolis_a" ],
++ "terrain": { "1": "t_floor", "2": "t_floor", "3": "t_floor" },
+ "furniture": { "1": "f_rack", "2": "f_rack", "3": "f_counter" },
+ "items": {
+ "1": { "item": "farming_tools", "chance": 30 },
+@@ -649,18 +650,18 @@
+ "...........sssssss{{{s8ssssMMMMsMsMMMMMmmmmmmmmmMMMMMssssMssMssMssssssss",
+ "...........sss{{{sssssMsMMsMssMssMMMMMmm]]]]]]]mmMMMMMsMsMssssssssssssMs",
+ "......|--------{{{--sssssssssMM_MMMMMmm]]]]]]]]]mmMMMMM__MMMM_M___M_____",
+- "......| 33 222{{{{{sssssMsMM___MMMMMmm]]]]]]]]]]]mmMMMMM________M___M___",
+- "......| 11 2 {{{{ssssssMss_MMMMMMmm]]]]]]]]]]]]]mmMMMMM_M_M__M________",
+- "......| 11 { {{{){sMssMssss_MMMMMmm]]]]]]]]]]]]]]]mmMMMMM_____M________",
++ "......| èè ééé{{{{{sssssMsMM___MMMMMmm]]]]]]]]]]]mmMMMMM________M___M___",
++ "......| àà é {{{{ssssssMss_MMMMMMmm]]]]]]]]]]]]]mmMMMMM_M_M__M________",
++ "......| àà { {{{){sMssMssss_MMMMMmm]]]]]]]]]]]]]]]mmMMMMM_____M________",
+ ".#....| {{ {{{{{ssssMsMsMMMMMmm]]]]]]]]]]]]]]]]]mmMMMMM_MMMMM_MM_M_M",
+ "......|c {{{{){sssssMsMMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMM_M______M___",
+- "......|c 11{){{{ssssss.ssMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMM_M_MM_______",
++ "......|c àà{){{{ssssss.ssMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMM_M_MM_______",
+ "......|c {{{{{{sssssMsMsMMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMM,M_,,,M,,,_,",
+ "......|J J{){{){{ssssM.sMMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMMMM_MM,_MM,_,",
+ "......| {{ {)ssssssMssMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMM_MM______M__",
+- "......|c11 {{{{{{{sMsssssMMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMM_____MM_____",
+- "......|c11 1{{{{{ssssssMMMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMM_MM__M_M_M__",
+- "......| KK1 {{{{{MssMwsssMMMMMmm]]]]]]]]]]]]]]]]]mmMMMMM_M__M________",
++ "......|càà {{{{{{{sMsssssMMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMM_____MM_____",
++ "......|càà à{{{{{ssssssMMMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMM_MM__M_M_M__",
++ "......| KKà {{{{{MssMwsssMMMMMmm]]]]]]]]]]]]]]]]]mmMMMMM_M__M________",
+ "..x...|-|----{{{)--ssssMMMss_MMMMMmm]]]]]]]]]]]]]]]mmMMMMM____M__MMM__M_",
+ "........|RRRRR{{{{sssssssssMM_MMMMMmm]]]]]]]]]]]]]mmMMMMM_MMM_M__M______",
+ "........|R {{{{{{sssssMsMM___MMMMMmm]]]]]]]]]]]mmMMMMM__MM__M____M____",
+@@ -695,7 +696,7 @@
+ ],
+ "palettes": [ "necropolis_a" ],
+ "terrain": { "D": "t_floor", "R": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
+- "furniture": { "1": "f_bed", "2": "f_desk", "3": "f_dresser", "R": "f_rack" },
++ "furniture": { "R": "f_rack" },
+ "set": [
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 0, "x2": 23, "y": 0, "y2": 23 },
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 24, "x2": 47, "y": 0, "y2": 23 },
+diff --git a/data/json/mapgen_palettes/necropolis/necropolis_a.json b/data/json/mapgen_palettes/necropolis/necropolis_a.json
+index 657f5399bac..da883f01f07 100644
+--- a/data/json/mapgen_palettes/necropolis/necropolis_a.json
++++ b/data/json/mapgen_palettes/necropolis/necropolis_a.json
+@@ -3,9 +3,12 @@
+ "type": "palette",
+ "id": "necropolis_a",
+ "furniture": {
++ "@": "f_bed",
++ "à": "f_bed",
++ "é": "f_desk",
++ "è": "f_dresser",
+ ")": "f_wreckage",
+ "?": "f_sofa",
+- "@": "f_bed",
+ "B": "f_bathtub",
+ "C": "f_region_weed",
+ "D": "f_trashcan",
+@@ -41,6 +44,10 @@
+ "u": "f_barricade_road"
+ },
+ "terrain": {
++ "@": "t_floor",
++ "à": "t_floor",
++ "é": "t_floor",
++ "è": "t_floor",
+ "!": "t_bars",
+ "#": "t_region_shrub",
+ "&": "t_sidewalk",
+@@ -65,7 +72,6 @@
+ "=": "t_door_metal_locked",
+ ">": "t_stairs_down",
+ "?": "t_floor",
+- "@": "t_floor",
+ "A": "t_railing_h",
+ "B": "t_floor",
+ "C": "t_region_groundcover_urban",
+--
+2.43.0
+
diff --git a/hotfix-05_fix-more-fix-for-level-0-of-the-Necropolis-4387.patch b/hotfix-05_fix-more-fix-for-level-0-of-the-Necropolis-4387.patch
new file mode 100644
index 0000000..6f478f3
--- /dev/null
+++ b/hotfix-05_fix-more-fix-for-level-0-of-the-Necropolis-4387.patch
@@ -0,0 +1,522 @@
+From 3fbd2bfd731810410770039835c9cfee9c89bfcd Mon Sep 17 00:00:00 2001
+From: 0Monet <146018959+0Monet@users.noreply.github.com>
+Date: Sun, 24 Mar 2024 23:42:32 +0100
+Subject: [PATCH] fix: more fix for level 0 of the Necropolis (#4387)
+
+* Update necropolis.json
+
+* Update necropolis_a.json
+
+* Update necropolis.json
+
+* style(autofix.ci): automated formatting
+
+---------
+
+Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
+---
+ data/json/mapgen/necropolis/necropolis.json | 265 +++++++++---------
+ .../necropolis/necropolis_a.json | 14 +
+ 2 files changed, 150 insertions(+), 129 deletions(-)
+
+diff --git a/data/json/mapgen/necropolis/necropolis.json b/data/json/mapgen/necropolis/necropolis.json
+index 111d183670e..f03d1340342 100644
+--- a/data/json/mapgen/necropolis/necropolis.json
++++ b/data/json/mapgen/necropolis/necropolis.json
+@@ -44,6 +44,12 @@
+ ]
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_1", "necropolis_a_2", "necropolis_a_3" ],
++ [ "necropolis_a_10", "necropolis_a_11", "necropolis_a_12" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -87,11 +93,11 @@
+ ".q....V ;sssssssssss_______,,_______ss...8srrrrrrrrrsssssZZssr8.",
+ ".q....| ooP|....s...qss_______,,_______ss..|------------|rssssssr8.",
+ ".q....|;|--+----|--|es...qss________________ss..|222222222222|rssssssr8.",
+- ".q..ssss|r =_______________,,_______ss..w3 2|rssZZssr8.",
+- ".q..shss|r =_______________,,_______ss..w3 11 11 2|rssZZssr8.",
+- ".q..snss|r =_______________,,_______ss..w3 11 11 2|rssssssr8.",
+- ".q..shss|r =________________________ss..|r [sssssssr8.",
+- ".q..ssss|r =_______________,,_______ss..w3 11 [sssssssr8.",
++ ".q..ssss|r̲~~~~~~~~~=_______________,,_______ss..w3 2|rssZZssr8.",
++ ".q..sЮss|r̲~~~~~~~~~=_______________,,_______ss..w3 11 11 2|rssZZssr8.",
++ ".q..sЯss|r̲~~~~~~~~~=_______________,,_______ss..w3 11 11 2|rssssssr8.",
++ ".q..sЮss|r̲~~~~~~~~~=________________________ss..|r [sssssssr8.",
++ ".q..ssss|r̲~~~~~~~~~=_______________,,_______ss..w3 11 [sssssssr8.",
+ ".q......|----------|.....qss_______,,_______ss..w3 11 cc 1|rssssssr8.",
+ ".q.......................qss_______,,_______ss..w3 6 1|rssZZssr8.",
+ ".qQQQQQQQQQQQQQQQQQQQQQQQqss________________ss..|r333r c 1|rssZZssr8.",
+@@ -110,9 +116,9 @@
+ { "group": "SUS_junk_drawer", "x": 42, "y": 8, "chance": 75 },
+ { "group": "SUS_junk_drawer", "x": 42, "y": 10, "chance": 75 },
+ { "item": "television", "x": 32, "y": [ 11, 12 ], "chance": 80 },
+- { "item": "television", "x": 10, "y": [ 32, 33 ], "chance": 80 },
+- { "group": "tools_general", "x": 9, "y": [ 40, 44 ], "chance": 50, "repeat": 2 },
+- { "group": "supplies_mechanics", "x": 9, "y": [ 40, 44 ], "chance": 50, "repeat": 2 },
++ { "item": "television", "x": 10, "y": 32, "chance": 80 },
++ { "group": "tools_general", "x": 9, "y": [ 39, 43 ], "chance": 50, "repeat": 2 },
++ { "group": "supplies_mechanics", "x": 9, "y": [ 39, 43 ], "chance": 50, "repeat": 2 },
+ { "group": "fertilizers", "x": 25, "y": [ 52, 61 ], "chance": 40, "repeat": 4 },
+ { "group": "farming_seeds", "x": [ 25, 47 ], "y": 69, "chance": 30, "repeat": 10 }
+ ],
+@@ -128,15 +134,15 @@
+ { "vehicle": "electric_car", "x": 15, "y": 41, "chance": 75, "rotation": 0 },
+ { "vehicle": "flatbed_truck", "x": 55, "y": 30, "chance": 50, "rotation": 180 }
+ ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_1", "necropolis_a_2", "necropolis_a_3" ],
+- [ "necropolis_a_10", "necropolis_a_11", "necropolis_a_12" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_4", "necropolis_a_5", "necropolis_a_6" ],
++ [ "necropolis_a_13", "necropolis_a_14", "necropolis_a_15" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -222,15 +228,15 @@
+ { "vehicle": "policecar", "x": 60, "y": 16, "chance": 25, "rotation": 90 },
+ { "vehicle": "car", "x": 30, "y": 31, "chance": 100, "rotation": 135 }
+ ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_4", "necropolis_a_5", "necropolis_a_6" ],
+- [ "necropolis_a_13", "necropolis_a_14", "necropolis_a_15" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_7", "necropolis_a_8", "necropolis_a_9" ],
++ [ "necropolis_a_16", "necropolis_a_17", "necropolis_a_18" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -336,15 +342,15 @@
+ { "vehicle": "policecar", "x": 57, "y": 38, "chance": 50, "rotation": 180 },
+ { "vehicle": "policecar", "x": 57, "y": 45, "chance": 50, "rotation": 180 }
+ ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_7", "necropolis_a_8", "necropolis_a_9" ],
+- [ "necropolis_a_16", "necropolis_a_17", "necropolis_a_18" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_19", "necropolis_a_20", "necropolis_a_21" ],
++ [ "necropolis_a_28", "necropolis_a_29", "necropolis_a_30" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -374,20 +380,20 @@
+ ".....ssssssssssssssssssssssssssssssssssssssssssss..........ssss.........",
+ "......IsssssI..................ssssssss......sss............ss.........T",
+ ".....|-=====-|--|---HHH-HHH-HHH-[[--[[-HHH-|.sss............ss..........",
+- ".....|e | r[ ccccccccccc cccc|.sss....T.......ss...T......",
+- "..#..| EEEEE | r[ c|.sss............bss.........",
+- ".....| EEEEE | r[ cc cc ZZ c|.sss............bss.........",
+- ".....|zYEEEE | r[ rrrrrrrrr c c ZZ c|.sss............bss.........",
+- ".....|zYEEEE | r[ rrrrrrrrr 6c 6c cV.sss........T.....ss........",
+- "....X| EEEEE | r[ cV.sss..............ss......T.",
++ ".....|e~~~~~~| r[ ccccccccccc cccc|.sss....T.......ss...T......",
++ "..#..|~EEEEE~| r[ c|.sss............bss.........",
++ ".....|~EEEEE~| r[ cc cc ZZ c|.sss............bss.........",
++ ".....|zYEEEE~| r[ rrrrrrrrr c c ZZ c|.sss............bss.........",
++ ".....|zYEEEE~| r[ rrrrrrrrr 6c 6c cV.sss........T.....ss........",
++ "....X|~EEEEE~| r[ cV.sss..............ss......T.",
+ ".....|zYEEEYz| r[ cV.sss.............ssss.......",
+ ".....|zYEEEYz| r[ rrrrrrrrr ZZ ZZ c c|.sss...T........ssssss......",
+- ".....| EEEEE + r[ rrrrrrrrr ZZ ZZ c c|.sss........aAassssssss.....",
+- ".....|zYEEEE |--| c {c{.sss........aUasssssssssssss",
+- ".....|zz6% + Z{ ZZ c {{.sss........aUasssssssssssss",
+- ".....| + rrrrrrrrr Z{{ ZZ {{{{sss........aAassssssss.....",
+- ".....|-------| | rrrrrrrrr { { {{){|.sss...T........ssssss......",
+- "...........ss: | {{ {{){{{{|.sss.............ssss......T",
++ ".....|~EEEEE~+ r[ rrrrrrrrr ZZ ZZ c c|.sss........aAassssssss.....",
++ ".....|zYEEEE~|--| c {c{.sss........aUasssssssssssss",
++ ".....|zz6%~~~~~~+ Z{ ZZ c {{.sss........aUasssssssssssss",
++ ".....|~~~~~~~~~~+ rrrrrrrrr Z{{ ZZ {{{{sss........aAassssssss.....",
++ ".....|-------|~~| rrrrrrrrr { { {{){|.sss...T........ssssss......",
++ "...........ss:~~| {{ {{){{{{|.sss.............ssss......T",
+ "...........ss|--| {{ { rr{{{{{{{{{ss.sss..NNNNNNNNNN..ss........",
+ "...#.....x.ss| rrrrrr{rr {{{{{){{sssss.sss.MNNNNNNNNNNN..ss.......",
+ "...........ss|r rrrrr{rr){{{{){{{{{MssMssMMMsMNN55555NNNNNN.ss..T....",
+@@ -399,7 +405,14 @@
+ "...........ss|r {{ {{{{sMsssssMsMMsMMMMMMMMMMMMMMMNNNMNNMNNNNNNMss....."
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "%": "t_elevator_control_off", "Y": "t_elevator", "Z": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": {
++ "%": "t_elevator_control_off",
++ "Y": "t_elevator",
++ "Z": "t_floor",
++ "l": "t_floor",
++ "u": "t_floor",
++ "z": "t_thconc_floor"
++ },
+ "furniture": { "Y": "f_crate_c" },
+ "set": [
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 0, "x2": 23, "y": 0, "y2": 23 },
+@@ -449,15 +462,15 @@
+ { "vehicle": "car", "x": 15, "y": 17, "chance": 25, "rotation": 270 },
+ { "vehicle": "car_mini", "x": 22, "y": 18, "chance": 25, "rotation": 270 }
+ ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_19", "necropolis_a_20", "necropolis_a_21" ],
+- [ "necropolis_a_28", "necropolis_a_29", "necropolis_a_30" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_22", "necropolis_a_23", "necropolis_a_24" ],
++ [ "necropolis_a_31", "necropolis_a_32", "necropolis_a_33" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -546,15 +559,15 @@
+ { "vehicle": "fire_truck", "x": 15, "y": 8, "chance": 90, "rotation": 45 },
+ { "vehicle": "car", "x": 45, "y": 5, "chance": 100, "rotation": 45 }
+ ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_22", "necropolis_a_23", "necropolis_a_24" ],
+- [ "necropolis_a_31", "necropolis_a_32", "necropolis_a_33" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_25", "necropolis_a_26", "necropolis_a_27" ],
++ [ "necropolis_a_34", "necropolis_a_35", "necropolis_a_36" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -632,15 +645,15 @@
+ { "group": "GROUP_NECROPOLIS", "x": [ 25, 46 ], "y": [ 25, 46 ], "repeat": [ 1, 5 ] },
+ { "group": "GROUP_NECROPOLIS", "x": [ 49, 70 ], "y": [ 25, 46 ], "repeat": [ 1, 5 ] }
+ ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_25", "necropolis_a_26", "necropolis_a_27" ],
+- [ "necropolis_a_34", "necropolis_a_35", "necropolis_a_36" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_37", "necropolis_a_38", "necropolis_a_39" ],
++ [ "necropolis_a_46", "necropolis_a_47", "necropolis_a_48" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -723,15 +736,15 @@
+ { "vehicle": "fire_truck", "x": 32, "y": 28, "chance": 90, "rotation": 270 }
+ ],
+ "place_vendingmachines": [ { "item_group": "vending_drink", "x": 64, "y": 47 } ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_37", "necropolis_a_38", "necropolis_a_39" ],
+- [ "necropolis_a_46", "necropolis_a_47", "necropolis_a_48" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_40", "necropolis_a_41", "necropolis_a_42" ],
++ [ "necropolis_a_49", "necropolis_a_50", "necropolis_a_51" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -759,24 +772,24 @@
+ "sssssssssssssssssssssssssss__________________sssssssssssssssssssssssssss",
+ "ssssssssssssssssssssssssssss_________,,,,,,_ssssssssssssssssssssssssssss",
+ "..ss{{{{--|--|--|-----|sssss________________sss#######|--ww-++-ww---|sss",
+- "..ss{{ {@d|BB|BB|d@@ n|ss.ss_______,,_______ss##shhsss|hh chNNh|sss",
+- "..ss{{{@@ | t|t | @@ hwss.ss_______,,_______ss#shNNhss|NN chNNh|sss",
+- "..ss{ | S|S | wss.ss_______,,_______ss#shNNhsswNN h |sss",
+- "..ss{ |+-|-+| |ss.ss________________ssssshhssswhh N hcc |777",
++ "..ss{{ {@d|BB|BB|d@@ n|ss.ss_______,,_______ss##sh̲h̲sss|hh chNNh|sss",
++ "..ss{{{@@ | t|t | @@ hwss.ss_______,,_______ss#sh̲n̲n̲h̲ss|NN chNNh|sss",
++ "..ss{ | S|S | wss.ss_______,,_______ss#sh̲n̲n̲h̲sswNN h |sss",
++ "..ss{ |+-|-+| |ss.ss________________sssssh̲h̲ssswhh N hcc |777",
+ "..ss; f|f ;ss.ss_______,,_______sssssssssswcc h hc r|sss",
+ "..ss| nnnn | nnnn |ss.ss_______,,_______ss#sssssss|hh hc r|sss",
+- "..ss|-----|--|--|-----|ss.ss_______,,_______ss#sshhsss|NN h hc f|sss",
+- "..ss|n @@d|BB|BB|d@@ n|ss.ss________________ss#shNNhsswNN N hc f|sss",
+- "..sswh @@ | t|t | @@ hwss.ss_______,,_______ss#shNNhsswhh h hc c|sss",
+- "..ssw | S|S | wss.ss_______,,_______ss#sshhssswcc hc S|sss",
++ "..ss|-----|--|--|-----|ss.ss_______,,_______ss#ssh̲h̲sss|NN h hc f|sss",
++ "..ss|n @@d|BB|BB|d@@ n|ss.ss________________ss#sh̲n̲n̲h̲sswNN N hc f|sss",
++ "..sswh @@ | t|t | @@ hwss.ss_______,,_______ss#sh̲n̲n̲h̲sswhh h hc c|sss",
++ "..ssw | S|S | wss.ss_______,,_______ss#ssh̲h̲ssswcc hc S|sss",
+ "..ss| |+-|-+| |ss.ss_______,,_______ss#sssssss| c r|sss",
+ "..ss; f|f ;ss.ss________________ssssssssss[ c r|sss",
+ "..ss| nnnn | nnnn |ss.ss_______,,_______ssssssssss[ |----|c-- -|sss",
+ "..ss|-----|--|--|-----|ss.ss_______,,_______ss#sssssss| + | c|sss",
+- "..ss|n @@d|BB|BB|d@@ n|ss.ss_______,,_______ss#sshhsssw |S t |c S|Dss",
+- "..sswh @@ | t|t | @@ hwss.ss________________ss#shNNhssw |----|c S|Dss",
+- "..ssw | S|S | wss.ss_______,,_______ss#shNNhssw + |c ;sss",
+- "..ss| |+-|-+| |ss.ss_______,,_______ss##shhsss| |S t |cOOff|797",
++ "..ss|n @@d|BB|BB|d@@ n|ss.ss_______,,_______ss#ssh̲h̲sssw |S t |c S|d̲ss",
++ "..sswh @@ | t|t | @@ hwss.ss________________ss#sh̲n̲n̲h̲ssw |----|c S|d̲ss",
++ "..ssw | S|S | wss.ss_______,,_______ss#sh̲n̲n̲h̲ssw + |c ;sss",
++ "..ss| |+-|-+| |ss.ss_______,,_______ss##sh̲h̲sss| |S t |cOOff|797",
+ "..ss; f|f ;ss.ss_______,,________ss#####ss|--|----|-----|sss",
+ "..ss| nnnnn | nnnn |ss.ss_______________________,__,_________________",
+ "..ss|--------|--------|ss.ss_______,,______________,,,,_________________",
+@@ -804,15 +817,15 @@
+ { "group": "GROUP_NECROPOLIS", "x": [ 25, 46 ], "y": [ 25, 46 ], "repeat": [ 1, 5 ] },
+ { "group": "GROUP_NECROPOLIS", "x": [ 49, 70 ], "y": [ 25, 46 ], "repeat": [ 1, 5 ] }
+ ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_40", "necropolis_a_41", "necropolis_a_42" ],
+- [ "necropolis_a_49", "necropolis_a_50", "necropolis_a_51" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_43", "necropolis_a_44", "necropolis_a_45" ],
++ [ "necropolis_a_52", "necropolis_a_53", "necropolis_a_54" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -899,15 +912,15 @@
+ { "group": "GROUP_NECROPOLIS", "x": [ 25, 46 ], "y": [ 25, 46 ], "repeat": [ 1, 5 ] },
+ { "group": "GROUP_NECROPOLIS", "x": [ 49, 70 ], "y": [ 25, 46 ], "repeat": [ 1, 5 ] }
+ ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_43", "necropolis_a_44", "necropolis_a_45" ],
+- [ "necropolis_a_52", "necropolis_a_53", "necropolis_a_54" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_55", "necropolis_a_56", "necropolis_a_57" ],
++ [ "necropolis_a_64", "necropolis_a_65", "necropolis_a_66" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -988,15 +1001,15 @@
+ { "vehicle": "policecar", "x": 23, "y": 35, "chance": 90, "rotation": 90 }
+ ],
+ "place_vendingmachines": [ { "item_group": "vending_food", "x": 64, "y": 0 }, { "item_group": "vending_drink", "x": 68, "y": 17 } ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_55", "necropolis_a_56", "necropolis_a_57" ],
+- [ "necropolis_a_64", "necropolis_a_65", "necropolis_a_66" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_58", "necropolis_a_59", "necropolis_a_60" ],
++ [ "necropolis_a_67", "necropolis_a_68", "necropolis_a_69" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -1074,15 +1087,15 @@
+ { "vehicle": "pickup", "x": 64, "y": 21, "chance": 50, "rotation": 270 },
+ { "vehicle": "car", "x": 71, "y": 21, "chance": 50, "rotation": 270 }
+ ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_58", "necropolis_a_59", "necropolis_a_60" ],
+- [ "necropolis_a_67", "necropolis_a_68", "necropolis_a_69" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [
++ [ "necropolis_a_61", "necropolis_a_62", "necropolis_a_63" ],
++ [ "necropolis_a_70", "necropolis_a_71", "necropolis_a_72" ]
++ ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -1160,15 +1173,12 @@
+ { "vehicle": "pickup", "x": 15, "y": 21, "chance": 25, "rotation": 270 },
+ { "vehicle": "car", "x": 23, "y": 21, "chance": 25, "rotation": 270 }
+ ]
+- },
+- "om_terrain": [
+- [ "necropolis_a_61", "necropolis_a_62", "necropolis_a_63" ],
+- [ "necropolis_a_70", "necropolis_a_71", "necropolis_a_72" ]
+- ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [ [ "necropolis_a_73", "necropolis_a_74", "necropolis_a_75" ] ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -1216,12 +1226,12 @@
+ { "group": "GROUP_NECROPOLIS", "x": [ 25, 46 ], "y": [ 1, 22 ], "repeat": [ 1, 5 ] },
+ { "group": "GROUP_NECROPOLIS", "x": [ 49, 70 ], "y": [ 1, 22 ], "repeat": [ 1, 5 ] }
+ ]
+- },
+- "om_terrain": [ [ "necropolis_a_73", "necropolis_a_74", "necropolis_a_75" ] ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [ [ "necropolis_a_76", "necropolis_a_77", "necropolis_a_78" ] ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -1267,12 +1277,12 @@
+ { "group": "GROUP_NECROPOLIS", "x": [ 49, 70 ], "y": [ 1, 22 ], "repeat": [ 1, 5 ] }
+ ],
+ "place_vehicles": [ { "vehicle": "policecar", "x": 33, "y": 9, "chance": 90, "rotation": 0 } ]
+- },
+- "om_terrain": [ [ "necropolis_a_76", "necropolis_a_77", "necropolis_a_78" ] ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ },
+ {
++ "type": "mapgen",
++ "om_terrain": [ [ "necropolis_a_79", "necropolis_a_80", "necropolis_a_81" ] ],
++ "weight": 250,
+ "method": "json",
+ "object": {
+ "fill_ter": "t_floor",
+@@ -1325,9 +1335,6 @@
+ { "vehicle": "car", "x": 10, "y": 10, "chance": 75, "rotation": 270 },
+ { "vehicle": "pickup", "x": 21, "y": 10, "chance": 75, "rotation": 270 }
+ ]
+- },
+- "om_terrain": [ [ "necropolis_a_79", "necropolis_a_80", "necropolis_a_81" ] ],
+- "type": "mapgen",
+- "weight": 250
++ }
+ }
+ ]
+diff --git a/data/json/mapgen_palettes/necropolis/necropolis_a.json b/data/json/mapgen_palettes/necropolis/necropolis_a.json
+index da883f01f07..8e785c6163e 100644
+--- a/data/json/mapgen_palettes/necropolis/necropolis_a.json
++++ b/data/json/mapgen_palettes/necropolis/necropolis_a.json
+@@ -3,10 +3,16 @@
+ "type": "palette",
+ "id": "necropolis_a",
+ "furniture": {
++ "Ю": "f_camp_chair",
++ "Я": "f_tourist_table",
+ "@": "f_bed",
+ "à": "f_bed",
+ "é": "f_desk",
+ "è": "f_dresser",
++ "n̲": "f_table",
++ "h̲": "f_chair",
++ "d̲": "f_dumpster",
++ "r̲": "f_rack",
+ ")": "f_wreckage",
+ "?": "f_sofa",
+ "B": "f_bathtub",
+@@ -44,10 +50,17 @@
+ "u": "f_barricade_road"
+ },
+ "terrain": {
++ "Ю": "t_sidewalk",
++ "Я": "t_sidewalk",
+ "@": "t_floor",
+ "à": "t_floor",
+ "é": "t_floor",
+ "è": "t_floor",
++ "n̲": "t_sidewalk",
++ "h̲": "t_sidewalk",
++ "d̲": "t_sidewalk",
++ "~": "t_thconc_floor",
++ "r̲": "t_thconc_floor",
+ "!": "t_bars",
+ "#": "t_region_shrub",
+ "&": "t_sidewalk",
+@@ -137,6 +150,7 @@
+ "(": { "item": "pantry", "chance": 50, "repeat": 3 },
+ "@": { "item": "bed", "chance": 50, "repeat": 2 },
+ ".": { "item": "field", "chance": 1 },
++ "d̲": { "item": "trash", "chance": 65, "repeat": 4 },
+ "D": { "item": "floor_trash", "chance": 90, "repeat": 3 },
+ "O": { "item": "oven", "chance": 50, "repeat": 2 },
+ "d": { "item": "dresser", "chance": 50, "repeat": 3 },
+--
+2.43.0
+
diff --git a/hotfix-06_fix-more-fix-for-level-0-of-the-Necropolis-2-4426.patch b/hotfix-06_fix-more-fix-for-level-0-of-the-Necropolis-2-4426.patch
new file mode 100644
index 0000000..e02f479
--- /dev/null
+++ b/hotfix-06_fix-more-fix-for-level-0-of-the-Necropolis-2-4426.patch
@@ -0,0 +1,274 @@
+From d9a4610515b9c18d11ed97df0dd1e212719a5a77 Mon Sep 17 00:00:00 2001
+From: 0Monet <146018959+0Monet@users.noreply.github.com>
+Date: Thu, 4 Apr 2024 01:03:11 +0200
+Subject: [PATCH] fix: more fix for level 0 of the Necropolis 2 (#4426)
+
+* Update necropolis.json
+
+* Update necropolis_a.json
+
+* style(autofix.ci): automated formatting
+
+---------
+
+Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
+---
+ data/json/mapgen/necropolis/necropolis.json | 87 +++++++++----------
+ .../necropolis/necropolis_a.json | 10 ++-
+ 2 files changed, 47 insertions(+), 50 deletions(-)
+
+diff --git a/data/json/mapgen/necropolis/necropolis.json b/data/json/mapgen/necropolis/necropolis.json
+index f03d1340342..3e621b18774 100644
+--- a/data/json/mapgen/necropolis/necropolis.json
++++ b/data/json/mapgen/necropolis/necropolis.json
+@@ -79,28 +79,28 @@
+ "......................................ss................................",
+ "...............X......................ss................................",
+ ".qQQQQQQQQQQQQQQQQQQQQQQQq......sssssssssssssssss8777777777777777777778.",
+- ".q.......................q.....ssssssssssssssssss8ssrrrrrrrrrrsssssssr8.",
+- ".q..|-vv-|----|-|-----|..q....ss_________________9sssssssssssssssssssr8.",
+- ".q..|((Sc|BtcS|>|d @@ |..q...ss__________________9sssssssssssssssZZssr8.",
+- ".q..|( |B | + @@ v..q..ss___________________9sssssssssssssssZZssr8.",
+- ".q..vO |--+-|-| |..q.ss____________________9sssssssssssssssssssr8.",
+- ".q..vc + v..qss_____________________9sssssssssssssssssssr8.",
+- ".q..|f |c ?| ddd |..qss_____________________9sssssssssssssssZZssr8.",
+- ".q..|-| -|c ?|-----|..qss_________________s...8sssZZssssZZssssZZssr8.",
+- ".q....| ?v........qss________________ss...8sssZZssssZZssssssssr8.",
+- ".q....V hnnh |........qss________________ss...8sssssssssssssssssssr8.",
+- ".q....V hnnh ;sssssssssss_______,,_______ss...8sssssssssssssssZZssr8.",
+- ".q....V ;sssssssssss_______,,_______ss...8srrrrrrrrrsssssZZssr8.",
+- ".q....| ooP|....s...qss_______,,_______ss..|------------|rssssssr8.",
+- ".q....|;|--+----|--|es...qss________________ss..|222222222222|rssssssr8.",
+- ".q..ssss|r̲~~~~~~~~~=_______________,,_______ss..w3 2|rssZZssr8.",
+- ".q..sЮss|r̲~~~~~~~~~=_______________,,_______ss..w3 11 11 2|rssZZssr8.",
+- ".q..sЯss|r̲~~~~~~~~~=_______________,,_______ss..w3 11 11 2|rssssssr8.",
+- ".q..sЮss|r̲~~~~~~~~~=________________________ss..|r [sssssssr8.",
+- ".q..ssss|r̲~~~~~~~~~=_______________,,_______ss..w3 11 [sssssssr8.",
+- ".q......|----------|.....qss_______,,_______ss..w3 11 cc 1|rssssssr8.",
+- ".q.......................qss_______,,_______ss..w3 6 1|rssZZssr8.",
+- ".qQQQQQQQQQQQQQQQQQQQQQQQqss________________ss..|r333r c 1|rssZZssr8.",
++ ".q.......................q.....ssssssssssssssssss8ssṟṟṟṟṟṟṟṟṟṟsssssssṟ8.",
++ ".q..|-vv-|----|-|-----|..q....ss_________________9sssssssssssssssssssṟ8.",
++ ".q..|((Sc|BtcS|>|d @@ |..q...ss__________________9sssssssssssssssZZssṟ8.",
++ ".q..|( |B | + @@ v..q..ss___________________9sssssssssssssssZZssṟ8.",
++ ".q..vO |--+-|-| |..q.ss____________________9sssssssssssssssssssṟ8.",
++ ".q..vc + v..qss_____________________9sssssssssssssssssssṟ8.",
++ ".q..|f |c ?| ddd |..qss_____________________9sssssssssssssssZZssṟ8.",
++ ".q..|-| -|c ?|-----|..qss_________________s...8sssZZssssZZssssZZssṟ8.",
++ ".q....| ?v........qss________________ss...8sssZZssssZZssssssssṟ8.",
++ ".q....V hnnh |........qss________________ss...8sssssssssssssssssssṟ8.",
++ ".q....V hnnh ;sssssssssss_______,,_______ss...8sssssssssssssssZZssṟ8.",
++ ".q....V ;sssssssssss_______,,_______ss...8sṟṟṟṟṟṟṟṟṟsssssZZssṟ8.",
++ ".q....| ooP|....s...qss_______,,_______ss..|------------|ṟssssssṟ8.",
++ ".q....|;|--+----|--|es...qss________________ss..|222222222222|ṟssssssṟ8.",
++ ".q..ssss|r̲~~~~~~~~~=_______________,,_______ss..w3 2|ṟssZZssṟ8.",
++ ".q..sЮss|r̲~~~~~~~~~=_______________,,_______ss..w3 11 11 2|ṟssZZssṟ8.",
++ ".q..sЯss|r̲~~~~~~~~~=_______________,,_______ss..w3 11 11 2|ṟssssssṟ8.",
++ ".q..sЮss|r̲~~~~~~~~~=________________________ss..|r [sssssssṟ8.",
++ ".q..ssss|r̲~~~~~~~~~=_______________,,_______ss..w3 11 [sssssssṟ8.",
++ ".q......|----------|.....qss_______,,_______ss..w3 11 cc 1|ṟssssssṟ8.",
++ ".q.......................qss_______,,_______ss..w3 6 1|ṟssZZssṟ8.",
++ ".qQQQQQQQQQQQQQQQQQQQQQQQqss________________ss..|r333r c 1|ṟssZZssṟ8.",
+ "..........................ss_______,,_______ss..|-www-[[-www-|777777778."
+ ],
+ "palettes": [ "necropolis_a" ],
+@@ -197,7 +197,7 @@
+ ".|-{{{-sss-ssssssM.MMMsMMmm]]]]]]]]]]]]]]]]]mmMMMMMs_M_M___,,_______sss."
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "l": "t_floor", "u": "t_floor" },
++ "terrain": { "l": "t_floor" },
+ "set": [
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 0, "x2": 23, "y": 0, "y2": 23 },
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 24, "x2": 47, "y": 0, "y2": 23 },
+@@ -291,7 +291,7 @@
+ "..|P : | hhhhh |ss________________,________,________8........."
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "Z": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "Z": "t_floor", "l": "t_floor", "z": "t_floor" },
+ "furniture": { "F": "f_filing_cabinet" },
+ "items": {
+ "F": { "item": "office_paper", "chance": 40, "repeat": 5 },
+@@ -355,8 +355,8 @@
+ "object": {
+ "fill_ter": "t_floor",
+ "rows": [
+- ".....sssssssssssssssssssssss_______,,_______ss..........................",
+- "....ssssssssssssssssssssssss_______,,_______sss.........................",
++ ".....sssssssssssssssssssssss_______,,_______ss........ss................",
++ "....ssssssssssssssssssssssss_______,,_______sss.......ss................",
+ "....sss_____,______,_____sss________________ssssssssssssssssssssssssssss",
+ "....ss______,______,______ss_______,,________sssssssssssssssssssssssssss",
+ "....ss______,______,______ss_______,,___________________________________",
+@@ -405,14 +405,7 @@
+ "...........ss|r {{ {{{{sMsssssMsMMsMMMMMMMMMMMMMMMNNNMNNMNNNNNNMss....."
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": {
+- "%": "t_elevator_control_off",
+- "Y": "t_elevator",
+- "Z": "t_floor",
+- "l": "t_floor",
+- "u": "t_floor",
+- "z": "t_thconc_floor"
+- },
++ "terrain": { "%": "t_elevator_control_off", "Y": "t_elevator", "Z": "t_floor", "l": "t_floor", "z": "t_thconc_floor" },
+ "furniture": { "Y": "f_crate_c" },
+ "set": [
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 0, "x2": 23, "y": 0, "y2": 23 },
+@@ -525,7 +518,7 @@
+ "..ss________________sss..........|c |---------| h @@ |--|.."
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "Z": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "Z": "t_floor", "l": "t_floor", "z": "t_floor" },
+ "set": [
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 0, "x2": 23, "y": 0, "y2": 23 },
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 24, "x2": 47, "y": 0, "y2": 23 },
+@@ -622,7 +615,7 @@
+ "......|-{{{{ssMsMssMssMMMMMMMmm]]]]]]]]]]]]]]]]]]]mmMMMMM.M..M..MM......"
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "Z": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "Z": "t_floor", "l": "t_floor", "z": "t_floor" },
+ "furniture": { "$": "f_safe_l" },
+ "set": [
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 0, "x2": 23, "y": 0, "y2": 23 },
+@@ -708,7 +701,7 @@
+ "........|BB|d@@d@@ n|sss________________________sss| jjjjjj D|l |ss"
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "D": "t_floor", "R": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "D": "t_floor", "R": "t_floor", "l": "t_floor", "z": "t_floor" },
+ "furniture": { "R": "f_rack" },
+ "set": [
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 0, "x2": 23, "y": 0, "y2": 23 },
+@@ -799,7 +792,7 @@
+ "ss________________________ss_______,,______________,,,,_________________"
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "Z": "t_floor", "l": "t_floor", "N": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "Z": "t_floor", "l": "t_floor", "N": "t_floor", "z": "t_floor" },
+ "furniture": { "N": "f_table" },
+ "items": { "n": { "item": "traveler", "chance": 50 } },
+ "place_loot": [
+@@ -880,7 +873,7 @@
+ "___________________________________,,_______ss......C..................."
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "Z": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "Z": "t_floor", "l": "t_floor", "z": "t_floor" },
+ "furniture": { "$": "f_safe_l" },
+ "set": [
+ { "square": "radiation", "amount": [ 0, 1 ], "x": 0, "x2": 23, "y": 0, "y2": 23 },
+@@ -960,8 +953,8 @@
+ "________________u_______________________________________________________",
+ "________________________________________________________________________",
+ "__________________u_____________________________________________________",
+- "_,,,_,,,_,,,_,,,_,u,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,",
+- "_,,,_,,,_,,,_,,,_,u,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,",
++ "_,,,_,,,_,,,_,,,_,u̲,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,",
++ "_,,,_,,,_,,,_,,,_,u̲,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,_,,,",
+ "________________________________________________________________________",
+ "_________________u______________________________________________________",
+ "_________________u______________________________________________________",
+@@ -975,7 +968,7 @@
+ ".............###.s______,______,______,______s##s___,,___s|hnnh hnnh|ss"
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "D": "t_floor", "Z": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "D": "t_floor", "Z": "t_floor", "l": "t_floor", "z": "t_floor" },
+ "items": { "n": { "item": "traveler", "chance": 50 } },
+ "place_loot": [
+ { "group": "dining", "x": [ 56, 57 ], "y": [ 17, 18 ], "chance": 70 },
+@@ -1150,7 +1143,7 @@
+ "_____________________________s.......#.................................."
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "Z": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "Z": "t_floor", "l": "t_floor", "z": "t_floor" },
+ "items": { "r": { "item": "SUS_junk_drawer", "chance": 75 } },
+ "place_loot": [
+ { "group": "SUS_bathroom_medicine", "x": 59, "y": 10, "chance": 50 },
+@@ -1209,7 +1202,7 @@
+ "........................................................#..............."
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "D": "t_floor", "Z": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "D": "t_floor", "Z": "t_floor", "l": "t_floor", "z": "t_floor" },
+ "items": {
+ "L": { "item": "cleaning", "chance": 50, "repeat": 2 },
+ "n": { "item": "dining", "chance": 50 },
+@@ -1248,7 +1241,7 @@
+ "__________________________ss_______,,_______ss________s________ssD|r cc ",
+ "s_________________________ss____________uuu_ss________s________sss[ ",
+ "sssssss____________,,,,,,,ss_______,,_______ss________I________sss[ ",
+- "__________________________ss_______,uuu_____ss________&________ssD|r ",
++ "__________________________ss_______,u̲uu_____ss________&________ssD|r ",
+ "__________________________ss_______,,________s________I________sssw ",
+ "__________________________ss__uuu______________________________sssw rrr ",
+ "__________________________ss_______,,__________________________sss| rrr ",
+@@ -1262,7 +1255,7 @@
+ "............................________________ss.........................."
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "Z": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "Z": "t_floor", "l": "t_floor", "z": "t_floor" },
+ "gaspumps": { "&": { } },
+ "place_loot": [
+ { "group": "alcohol", "x": [ 67, 71 ], "y": 19, "chance": 30, "repeat": 3 },
+@@ -1313,7 +1306,7 @@
+ "..............#........................................................."
+ ],
+ "palettes": [ "necropolis_a" ],
+- "terrain": { "Z": "t_floor", "l": "t_floor", "u": "t_floor", "z": "t_floor" },
++ "terrain": { "Z": "t_floor", "l": "t_floor", "z": "t_floor" },
+ "place_vendingmachines": [ { "item_group": "vending_food", "x": 3, "y": 5 }, { "item_group": "vending_drink", "x": 4, "y": 5 } ],
+ "items": { "o": { "item": "hardware_books", "chance": 50 } },
+ "place_loot": [
+diff --git a/data/json/mapgen_palettes/necropolis/necropolis_a.json b/data/json/mapgen_palettes/necropolis/necropolis_a.json
+index 8e785c6163e..c474e5ced74 100644
+--- a/data/json/mapgen_palettes/necropolis/necropolis_a.json
++++ b/data/json/mapgen_palettes/necropolis/necropolis_a.json
+@@ -13,6 +13,9 @@
+ "h̲": "f_chair",
+ "d̲": "f_dumpster",
+ "r̲": "f_rack",
++ "u": "f_barricade_road",
++ "u̲": "f_barricade_road",
++ "ṟ": "f_rack",
+ ")": "f_wreckage",
+ "?": "f_sofa",
+ "B": "f_bathtub",
+@@ -46,8 +49,7 @@
+ "z": "f_crate_c",
+ "(": "f_cupboard",
+ "{": "f_rubble",
+- "t": "f_toilet",
+- "u": "f_barricade_road"
++ "t": "f_toilet"
+ },
+ "terrain": {
+ "Ю": "t_sidewalk",
+@@ -61,6 +63,9 @@
+ "d̲": "t_sidewalk",
+ "~": "t_thconc_floor",
+ "r̲": "t_thconc_floor",
++ "u": "t_pavement",
++ "u̲": "t_pavement_y",
++ "ṟ": "t_sidewalk",
+ "!": "t_bars",
+ "#": "t_region_shrub",
+ "&": "t_sidewalk",
+@@ -133,7 +138,6 @@
+ "r": "t_floor",
+ "s": "t_sidewalk",
+ "t": "t_floor",
+- "u": "t_pavement",
+ "v": "t_window_domestic",
+ "w": "t_window",
+ "x": "t_region_groundcover_urban",
+--
+2.43.0
+