diff --git a/doc/installation.md b/doc/installation.md
index fff2fd1735..e2a63357e6 100644
--- a/doc/installation.md
+++ b/doc/installation.md
@@ -1,5 +1,7 @@
# Installation
+You can select a different tileset than the one included with the game. You have two options: stable or latest. The stable version is tested and reliable, while the latest version is updated frequently and may have new features or bug fixes.
+
## Stable
The easiest way to download the tileset would be from the latest release. It is a stable tileset build which you can safely put into the game and run.
@@ -8,7 +10,8 @@ The easiest way to download the tileset would be from the latest release. It is
2. Extract archive once it's downloaded.
3. Put *UltimateCataclysm* folder from extracted files into your `cataclysmdda\gfx` folder. It should look like: `cataclysmdda\gfx\UltimateCataclysm`.
-> ⚠ If you have "Missing "tile_config.json" file" error upon loading the tileset, this means that you have downloaded and extracted the source code, and **not** the tileset.
+> [!WARNING]
+> If you have "Missing "tile_config.json" file" error upon loading the tileset, this means that you have downloaded and extracted the source code, and **not** the tileset.
## Develop
@@ -19,17 +22,14 @@ The most up to date build of the tileset (per commit). Might be broken.
3. Find *Artifacts* drop-down menu, click on it, and then select the artifact.
4. Proceed with step 2 and 3 from stable installation.
+> [!NOTE]
> Red cross means that the build has failed and no artifacts were produced.
# Building
-You will need:
-- Python 3
-- [Libvips](https://libvips.github.io/libvips/install.html)
-- pyvips (install it via python pip: `pip install pyvips`)
+To create your own tileset, test new sprites, or contribute to the project, please follow the instructions for your operating system:
+
+- For Linux, macOS, or other Unix-like systems, see [this guide](installation_nix.md).
+- For Windows, see [this guide](installation_windows.md).
-Once you have everything ready, you can build the tileset:
-```sh
-# Assuming that you are in the root of the tileset repository
-$ python3 tools/compose.py gfx/UltimateCataclysm
-```
+These guides will help you set up the required tools and steps to build the tileset from the source files.
diff --git a/doc/installation_nix.md b/doc/installation_nix.md
index 7c377bf18d..a3d24008db 100644
--- a/doc/installation_nix.md
+++ b/doc/installation_nix.md
@@ -2,6 +2,13 @@
Documentation of developing tileset with [Nix](https://nixos.org/).
+## Prerequisites
+
+You will need:
+- Python 3
+- [Libvips](https://libvips.github.io/libvips/install.html)
+- pyvips (install it via python pip: `pip install pyvips`)
+
## Build
As this repository uses flakes, it's possible to build any of the tileset (not only UlitCa) using `nix build .#{name}` command. For example:
diff --git a/doc/installation_windows.md b/doc/installation_windows.md
index 7c45ebee73..3b440779fb 100644
--- a/doc/installation_windows.md
+++ b/doc/installation_windows.md
@@ -2,52 +2,89 @@
Guide for Windows users, without touching the Command Line.
-## Install requirements
+## First steps
-**Python**
+1. [Register](https://github.com/join) on GitHub
+2. [Get](https://docs.github.com/en/enterprise-cloud@latest/desktop/installing-and-authenticating-to-github-desktop/installing-github-desktop#downloading-and-installing-github-desktop) `Github Desktop` [^1]
+3. [Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) Tileset repository
+4. [Clone](https://docs.github.com/en/desktop/adding-and-cloning-repositories/cloning-and-forking-repositories-from-github-desktop) forked repository.
-Install Python 3 from [python.org](https://www.python.org/downloads/windows/).
+> [!NOTE]
+> It is a good practice to create new branch at the start. Name it "playground" for example.
+> Your repo is your own private space. You can do whatever you want in it without affecting the original project. However, if you want to contribute to the project, you need to follow some guidelines. One of them is to keep your master branch clean and empty, and do your work in a separate branch. This will make it easier for you to sync your changes with the upstream repo and create pull requests.
-During installation, check "Add Python to PATH".
+Now you have source files on your drive and some tools as well.
+These tools will help you managing multitile objects, setting up the environment and composing tilesets.
-**libvips**
+## The Game
-Download the latest libvips distribution from [libvips.github.io](https://libvips.github.io/libvips/install.html)
-(get vips-dev-w64-web-#.#.#.zip NOT vips-dev-w64-all-#.#.#.zip).
+The easiest way to get the game is to use the [CDDA Game Launcher](https://github.com/Fris0uman/CDDA-Game-Launcher/releases).
+With the launcher, install the latest **experimental** release.
-Extract the files somewhere.
+Tools need to know where to put composed tileset. So you have three options:
+- copy `set_game_path.cmd` to your game dir and double-click it.
+- drag and drop game folder over `set_game_path.cmd` script.
+- or just double-click it and type path to the game folder.
-**Cataclysm-DDA game**
+> [!NOTE]
+> if you change your game folder later, you can repeat this step and provide new path.
-The easiest way to get the game is to use the [CDDA Game Launcher](https://github.com/Fris0uman/CDDA-Game-Launcher/releases).
-With the launcher, install the latest **experimental** release.
+## Tilesets and Windows
+
+Some tilesets reuse assets from other tilesets. This can be done by using symlinks, which are shortcuts that point to another file or folder. However, symlinks are disabled by default in Windows systems. If you want to compose tilesets that use symlinks (such as Altica or Ultica-ISO), you need to enable them.
+
+To enable symlinks, go to the `tools` folder in your local repository and double-click on `git_symlinks.cmd`. This will run a script that will configure your Git settings to allow symlinks. [^2]
-## Setting up paths
+## Python and Windows
-For composing tilesets, some path must be known to the respective scripts.
-This section describes the most easy drag & drop approach.
+If you dont have Python istalled yet you need to disable app execution alias.
+
+ Go to -> "start" and type "Manage App Execution Aliases". Go to it and turn off "Python"
-In `CDDA-Tilesets`, go into folder `tools`.
+![img](https://i.stack.imgur.com/7C78e.png)
+
+
-1. Copy `set_game_path.cmd` into the game's folder, and double-click it.
-OR: Drag & drop the game folder onto `set_game_path.cmd`.
- > Note: This sets the environmental variable `CDDA_PATH`.
+Make sure you are not using the Python version from the Microsoft Store. This version is incompatible with the tileset composing tools. You can uninstall this version safely from your system. The tools from the repo will install Python 3.12 for you, which you can use for any purpose.
-2. Copy `set_vips_path.cmd` into the vips folder (e.g. `C:\vips-dev-x.xx`), and double-click it.
-OR: Drag & drop the vips folder onto `set_vips_path.cmd`.
- > Note: This sets the environmental variable `LIBVIPS_PATH`.
+Open the `tools` folder in your local repository and double-click `updtset.cmd`
+Select any common tileset (like MShockXotto+) for the first runs until it finally compose.
+At the first run script will try to install Python using `winget`. In case of successful install it would stop and ask you to relaunch it again.
-3. Optional: To set a tileset to compose permanently, double-click `set_tileset.cmd` and select the desired tileset.
-If not set permanently, the update script will allow for interactive selection of a tileset.
- > Note: This sets the environmental variable `CDDA_TILESET`.
+> [!WARNING]
+> If script failed to install Python you should do it manually from [python.org](https://www.python.org/downloads/windows/).
+> During installation, check "Add Python to PATH".
-After these steps, it might be necessary to restart the computer.
+## Python and components
-## Compose and update tileset
+The script will first check if Python is installed on your system. It will print the Python version and verify that the pyvips module and the libvips library are available.
-In `tools`, double-click `updtset.cmd`.
+- If pyvips is missing, the script will try to install it automatically. This step should not cause any errors, only informational messages.
+- Next, the script will check if there are any libvips binaries in the system. If not, the script will attempt to download the 8.15 version and unzip it using VBS into the user’s home folder. Then, the script will call set_vips_path.cmd with this path.
-You will be prompted to select a tileset (unless it was set permanently).
-At the first run, `pyvips` will be installed automatically.
+If the script successfully adds libvips, it will stop and ask the user to run it again.
+> [!WARNING]
+> If script failed to install libvips you should do it manually.
+> Download the latest libvips distribution from [libvips.github.io](https://libvips.github.io/libvips/install.html)
+> get vips-dev-w64-web-#.#.#.zip NOT vips-dev-w64-all-#.#.#.zip
+> extract files somewhere and drag and drop this folder on `set_vips_path.cmd`
+
+## Final
+
+Maximum at third run script should compose tileset and propose you to check it in game.
If something goes wrong, read the script's output carefully!
+
+> [!TIP]
+> You may ask for help at tileset Discord server.
+
+> [!TIP]
+> To set a tileset to compose permanently, double-click `set_tileset.cmd` and select the desired tileset.
+> If not set permanently, the update script will allow for interactive selection of a tileset.
+> Note: This sets the environmental variable `CDDA_TILESET`. Delete it if you want to select tileset again.
+
+> [!TIP]
+> When scripts ask you to restart your computer it may be necessary on some systems. But you can try and skip reboots.
+
+[^1]: Some tasks can be done much faster and easier with command line actually. So you can try to run ```winget install Github.GitHubDesktop```
+[^2]: That tool will guide you how to [enable symlinks](https://blogs.windows.com/windowsdeveloper/2016/12/02/symlinks-windows-10/) in your system and turn them on for your local repository.
diff --git a/gfx/MShockXotto+/pngs_tall_32x48/furniture/monster_corpse/f_nm_nether_grass.png b/gfx/MShockXotto+/pngs_tall_32x48/furniture/monster_corpse/f_nm_nether_grass.png
new file mode 100644
index 0000000000..f46c4a43d0
Binary files /dev/null and b/gfx/MShockXotto+/pngs_tall_32x48/furniture/monster_corpse/f_nm_nether_grass.png differ
diff --git a/gfx/MShockXotto+/pngs_tall_32x48/furniture/monster_corpse/f_nm_tube.png b/gfx/MShockXotto+/pngs_tall_32x48/furniture/monster_corpse/f_nm_tube.png
new file mode 100644
index 0000000000..64327697c5
Binary files /dev/null and b/gfx/MShockXotto+/pngs_tall_32x48/furniture/monster_corpse/f_nm_tube.png differ
diff --git a/gfx/MShockXotto+/pngs_tall_32x48/furniture/monster_corpse/monster_corpse.json b/gfx/MShockXotto+/pngs_tall_32x48/furniture/monster_corpse/monster_corpse.json
new file mode 100644
index 0000000000..2ab41b352a
--- /dev/null
+++ b/gfx/MShockXotto+/pngs_tall_32x48/furniture/monster_corpse/monster_corpse.json
@@ -0,0 +1,10 @@
+[
+ {
+ "id": [ "f_nm_tube", "f_nm_tube_emitter" ],
+ "fg": "f_nm_tube"
+ },
+ {
+ "id": [ "f_nm_nether_grass", "f_nm_nether_grass_tall" ],
+ "fg": "f_nm_nether_grass"
+ }
+]
diff --git a/gfx/MShockXotto+/pngs_tall_32x48/terrain/t_nm_wall_teeth/t_nm_wall_teeth.png b/gfx/MShockXotto+/pngs_tall_32x48/terrain/t_nm_wall_teeth/t_nm_wall_teeth.png
new file mode 100644
index 0000000000..92fff01a1c
Binary files /dev/null and b/gfx/MShockXotto+/pngs_tall_32x48/terrain/t_nm_wall_teeth/t_nm_wall_teeth.png differ
diff --git a/gfx/MShockXotto+/pngs_tiles_32x32/furniture/monster_corpse/f_nm_nether_lichen.png b/gfx/MShockXotto+/pngs_tiles_32x32/furniture/monster_corpse/f_nm_nether_lichen.png
new file mode 100644
index 0000000000..72b0c3b7b4
Binary files /dev/null and b/gfx/MShockXotto+/pngs_tiles_32x32/furniture/monster_corpse/f_nm_nether_lichen.png differ
diff --git a/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_floor_flesh.png b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_floor_flesh.png
new file mode 100644
index 0000000000..2eb1efc5cb
Binary files /dev/null and b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_floor_flesh.png differ
diff --git a/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh.json b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh.json
new file mode 100644
index 0000000000..5885661b74
--- /dev/null
+++ b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh.json
@@ -0,0 +1,16 @@
+[
+ {
+ "id": "t_nm_ichor_sh",
+ "fg": "t_nm_ichor_sh_0",
+ "rotates": true,
+ "multitile": true,
+ "additional_tiles": [
+ { "id": "center", "fg": "t_nm_ichor_sh_0" },
+ { "id": "corner", "fg": "t_nm_ichor_sh_1" },
+ { "id": "edge", "fg": "t_nm_ichor_sh_2" },
+ { "id": "end_piece", "fg": "t_nm_ichor_sh_3" },
+ { "id": "t_connection", "fg": "t_nm_ichor_sh_0" },
+ { "id": "unconnected", "fg": "t_nm_ichor_sh_4" }
+ ]
+ }
+]
diff --git a/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_0.png b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_0.png
new file mode 100644
index 0000000000..69b2419c28
Binary files /dev/null and b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_0.png differ
diff --git a/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_1.png b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_1.png
new file mode 100644
index 0000000000..1e6e6d2649
Binary files /dev/null and b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_1.png differ
diff --git a/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_2.png b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_2.png
new file mode 100644
index 0000000000..96bae2b7d4
Binary files /dev/null and b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_2.png differ
diff --git a/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_3.png b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_3.png
new file mode 100644
index 0000000000..65292b9281
Binary files /dev/null and b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_3.png differ
diff --git a/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_4.png b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_4.png
new file mode 100644
index 0000000000..16344eb004
Binary files /dev/null and b/gfx/MShockXotto+/pngs_tiles_32x32/terrain/monster_corpse/t_nm_ichor_sh/t_nm_ichor_sh_4.png differ
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cabin/cabin.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cabin/cabin.json
index 1de05f52c4..af089287e6 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cabin/cabin.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cabin/cabin.json
@@ -17,7 +17,7 @@
"cabin_strange_b",
"riverside_dwelling"
],
- "fg": [ "cabin_faceN", "cabin_faceE", "cabin_faceS", "cabin_faceW" ],
+ "fg": [ "cabin_faceN", "cabin_faceW", "cabin_faceS", "cabin_faceE" ],
"bg": "field",
"rotates": true
},{
@@ -35,7 +35,7 @@
"cabin_lake_roof",
"lake_cabin_boathouse_roof"
],
- "fg": [ "cabin_faceN", "cabin_faceE", "cabin_faceS", "cabin_faceW" ],
+ "fg": [ "cabin_faceN", "cabin_faceW", "cabin_faceS", "cabin_faceE" ],
"bg": "open_air",
"rotates": true
}]
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_private_park/cs_private_park.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_private_park/cs_private_park.json
index 6311f5b1a8..88b63ef006 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_private_park/cs_private_park.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_private_park/cs_private_park.json
@@ -3,9 +3,9 @@
"id": "cs_private_park_roof",
"fg": [
"cs_private_park_rot_N",
- "cs_private_park_rot_E",
+ "cs_private_park_rot_W",
"cs_private_park_rot_S",
- "cs_private_park_rot_W"
+ "cs_private_park_rot_E"
],
"bg": "open_air",
"rotates": true
@@ -14,9 +14,9 @@
"id": "cs_private_park",
"fg": [
"cs_private_park_rot_N",
- "cs_private_park_rot_E",
+ "cs_private_park_rot_W",
"cs_private_park_rot_S",
- "cs_private_park_rot_W"
+ "cs_private_park_rot_E"
],
"bg": "field",
"rotates": true
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_public_art_piece/cs_public_art_piece.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_public_art_piece/cs_public_art_piece.json
index ad356381e6..d3142fc655 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_public_art_piece/cs_public_art_piece.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_public_art_piece/cs_public_art_piece.json
@@ -3,9 +3,9 @@
"id": "cs_public_art_piece",
"fg": [
"cs_public_art_piece_rot_N",
- "cs_public_art_piece_rot_E",
+ "cs_public_art_piece_rot_W",
"cs_public_art_piece_rot_S",
- "cs_public_art_piece_rot_W"
+ "cs_public_art_piece_rot_E"
],
"bg": "field",
"rotates": true
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_public_space/cs_public_space.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_public_space/cs_public_space.json
index 86d151b5bc..5b1fd0a591 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_public_space/cs_public_space.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/cs_public_space/cs_public_space.json
@@ -3,9 +3,9 @@
"id": "cs_public_space",
"fg": [
"cs_public_space_rot_N",
- "cs_public_space_rot_E",
+ "cs_public_space_rot_W",
"cs_public_space_rot_S",
- "cs_public_space_rot_W"
+ "cs_public_space_rot_E"
],
"bg": "field",
"rotates": true
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/dirt_road/dirt_road.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/dirt_road/dirt_road.json
index b233b4dc83..a55e8a70c6 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/dirt_road/dirt_road.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/dirt_road/dirt_road.json
@@ -1,19 +1,31 @@
[
-{
- "id": [ "dirt_road", "dirt_road_forest" ],
- "fg": [ "dirt_road_edge_ns", "dirt_road_edge_ew" ],
- "rotates": true
-},{
- "id": [ "dirt_road_3way", "dirt_road_3way_forest" ],
- "fg": [ "dirt_road_t_connection_n", "dirt_road_t_connection_e", "dirt_road_t_connection_s", "dirt_road_t_connection_w" ],
- "rotates": true
-},{
- "id": [ "dirt_road_turn", "dirt_road_turn_forest" ],
- "fg": [ "dirt_road_corner_ne", "dirt_road_corner_se", "dirt_road_corner_sw", "dirt_road_corner_nw" ],
- "rotates": true
-},{
- "id": [ "dirt_road_turn1", "dirt_road_turn1_forest" ],
- "fg": [ "dirt_road_corner_nw", "dirt_road_corner_ne", "dirt_road_corner_se", "dirt_road_corner_sw" ],
- "rotates": true
-}
-]
\ No newline at end of file
+ {
+ "id": [ "dirt_road", "dirt_road_forest" ],
+ "fg": [ "dirt_road_edge_ns", "dirt_road_edge_ew" ],
+ "rotates": true
+ },
+ {
+ "id": [ "dirt_road_turnback", "trailhead" ],
+ "fg": [ "dirt_road_end_piece_s", "dirt_road_end_piece_e", "dirt_road_end_piece_n", "dirt_road_end_piece_w" ],
+ "rotates": true
+ },
+ {
+ "id": [ "dirt_road_3way", "dirt_road_3way_forest" ],
+ "fg": [ "dirt_road_t_connection_n", "dirt_road_t_connection_w", "dirt_road_t_connection_s", "dirt_road_t_connection_e" ],
+ "rotates": true
+ },
+ {
+ "id": [ "dirt_road_turn", "dirt_road_turn_forest" ],
+ "fg": [ "dirt_road_corner_ne", "dirt_road_corner_nw", "dirt_road_corner_sw", "dirt_road_corner_se" ],
+ "rotates": true
+ },
+ {
+ "id": [ "dirt_road_turn1", "dirt_road_turn1_forest" ],
+ "fg": [ "dirt_road_corner_nw", "dirt_road_corner_ne", "dirt_road_corner_se", "dirt_road_corner_sw" ],
+ "rotates": true
+ },
+ {
+ "id": "dirt_road_4way",
+ "fg": "dirt_road_center"
+ }
+]
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/evac_shelters/evac_shelters.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/evac_shelters/evac_shelters.json
index 245058264f..ae24579b09 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/evac_shelters/evac_shelters.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/evac_shelters/evac_shelters.json
@@ -1,28 +1,35 @@
[
{
"id": [
- "shelter",
- "shelter_1",
- "shelter_2",
- "shelter_vandal",
- "shelter_1_vandal",
- "shelter_2_vandal"
- ],
- "fg": [ "otr_evac_shelter_1_faceN", "otr_evac_shelter_1_faceE", "otr_evac_shelter_1_faceS", "otr_evac_shelter_1_faceW" ],
+ "shelter",
+ "shelter_1",
+ "shelter_2",
+ "shelter_vandal",
+ "shelter_1_vandal",
+ "shelter_2_vandal",
+ "shelter_1b"
+ ],
+ "fg": [ "otr_evac_shelter_1_faceN", "otr_evac_shelter_1_faceW", "otr_evac_shelter_1_faceS", "otr_evac_shelter_1_faceE" ],
"bg": "field",
"rotates": true
- },{
+ },
+ {
"id": [
- "shelter_roof",
+ "shelter_roof",
"shelter_roof_1",
- "shelter_roof_2"
+ "shelter_roof_2",
+ "shelter_roof_1b"
],
- "fg": [ "otr_evac_shelter_1_faceN", "otr_evac_shelter_1_faceE", "otr_evac_shelter_1_faceS", "otr_evac_shelter_1_faceW" ],
+ "fg": [ "otr_evac_shelter_1_faceN", "otr_evac_shelter_1_faceW", "otr_evac_shelter_1_faceS", "otr_evac_shelter_1_faceE" ],
"bg": "open_air",
"rotates": true
- },{
- "id": "shelter_under",
- "fg": [ "otr_evac_shelter_1_faceN", "otr_evac_shelter_1_faceE", "otr_evac_shelter_1_faceS", "otr_evac_shelter_1_faceW" ],
+ },
+ {
+ "id": [
+ "shelter_under",
+ "shelter_under_1b"
+ ],
+ "fg": [ "otr_evac_shelter_1_faceN", "otr_evac_shelter_1_faceW", "otr_evac_shelter_1_faceS", "otr_evac_shelter_1_faceE" ],
"rotates": true
}
]
\ No newline at end of file
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/gas/omt_gasstations.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/gas/omt_gasstations.json
index cdddd3ba29..953f0c76b0 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/gas/omt_gasstations.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/gas/omt_gasstations.json
@@ -6,7 +6,7 @@
"garage_gas_1", "garage_gas_2", "garage_gas_3",
"garage_gas_roof_1", "garage_gas_roof_2", "garage_gas_roof_3"
],
- "fg": [ "gas_small_faceN", "gas_small_faceE", "gas_small_faceS", "gas_small_faceW" ],
+ "fg": [ "gas_small_faceN", "gas_small_faceW", "gas_small_faceS", "gas_small_faceE" ],
"bg": "field"
}
]
\ No newline at end of file
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/missile_silo/missile_silo.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/missile_silo/missile_silo.json
index d3cf71eec9..11ca95c47d 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/missile_silo/missile_silo.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/missile_silo/missile_silo.json
@@ -1,19 +1,19 @@
[
{
"id": "silo",
- "fg": [ "silo_rot_N", "silo_rot_E", "silo_rot_S", "silo_rot_W" ],
+ "fg": [ "silo_rot_N", "silo_rot_W", "silo_rot_S", "silo_rot_E" ],
"bg": "field",
"rotates": true
},
{
"id": "silo_1",
- "fg": [ "silo_rot_N", "silo_rot_E", "silo_rot_S", "silo_rot_W" ],
+ "fg": [ "silo_rot_N", "silo_rot_W", "silo_rot_S", "silo_rot_E" ],
"bg": "t_soil_center",
"rotates": true
},
{
"id": [ "silo_2", "silo_3", "silo_4", "silo_finale" ],
- "fg": [ "silo_rot_N", "silo_rot_E", "silo_rot_S", "silo_rot_W" ],
+ "fg": [ "silo_rot_N", "silo_rot_W", "silo_rot_S", "silo_rot_E" ],
"bg": "t_rock_center",
"rotates": true
}
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/pasture/pasture.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/pasture/pasture.json
index d0af1d683b..8b20e19051 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/pasture/pasture.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/pasture/pasture.json
@@ -1,53 +1,124 @@
-[{
- "id": "2farm_4",
- "fg": [ "pasture_end_n", "pasture_end_e", "pasture_end_s", "pasture_end_w" ],
- "rotates": true
-},{
- "id": "2farm_8",
- "fg": [ "pasture_end_s", "pasture_end_w", "pasture_end_n", "pasture_end_e" ],
- "rotates": true
-},{
- "id": "dairy_farm_NW",
- "fg": [ "pasture_end_w", "pasture_end_n", "pasture_end_e", "pasture_end_s" ],
- "rotates": true
-},{
- "id": "dairy_farm_NE",
- "fg": [ "pasture_end_e", "pasture_end_s", "pasture_end_w", "pasture_end_n" ],
- "rotates": true
-},{
- "id": "ranch_camp_1",
- "fg": [ "pasture_corner_nw", "pasture_corner_ne", "pasture_corner_se", "pasture_corner_sw" ],
- "rotates": true
-},{
- "id": [ "ranch_camp_2", "ranch_camp_3", "ranch_camp_4", "ranch_camp_5", "ranch_camp_6", "ranch_camp_7", "ranch_camp_8" ],
- "fg": [ "pasture_not_n", "pasture_not_e", "pasture_not_s", "pasture_not_w" ],
- "rotates": true
-},{
- "id": "ranch_camp_9",
- "fg": [ "pasture_corner_ne", "pasture_corner_se", "pasture_corner_sw", "pasture_corner_nw" ],
- "rotates": true
-},{
- "id": [ "ranch_camp_10", "ranch_camp_19", "ranch_camp_28", "ranch_camp_37", "ranch_camp_46", "ranch_camp_55", "ranch_camp_64" ],
- "fg": [ "pasture_not_w", "pasture_not_n", "pasture_not_e", "pasture_not_s" ],
- "rotates": true
-},{
- "id": [ "ranch_camp_11", "ranch_camp_12", "ranch_camp_13", "ranch_camp_14", "ranch_camp_15", "ranch_camp_16", "ranch_camp_20", "ranch_camp_21", "ranch_camp_22", "ranch_camp_23", "ranch_camp_24", "ranch_camp_25", "ranch_camp_26", "ranch_camp_29", "ranch_camp_30", "ranch_camp_31", "ranch_camp_32", "ranch_camp_33", "ranch_camp_34", "ranch_camp_35", "ranch_camp_38", "ranch_camp_39", "ranch_camp_40", "ranch_camp_41", "ranch_camp_42", "ranch_camp_43", "ranch_camp_44", "ranch_camp_47", "ranch_camp_48", "ranch_camp_49", "ranch_camp_50", "ranch_camp_51", "ranch_camp_52", "ranch_camp_53", "ranch_camp_56", "ranch_camp_58", "ranch_camp_59", "ranch_camp_60", "ranch_camp_61", "ranch_camp_62", "ranch_camp_65", "ranch_camp_69", "ranch_camp_70", "ranch_camp_71" ],
- "fg": "pasture_center",
- "rotates": true
-},{
- "id": [ "ranch_camp_18", "ranch_camp_27", "ranch_camp_36", "ranch_camp_45", "ranch_camp_54", "ranch_camp_63", "ranch_camp_72" ],
- "fg": [ "pasture_not_e", "pasture_not_s", "pasture_not_w", "pasture_not_n" ],
- "rotates": true
-},{
- "id": [ "ranch_camp_73", "ranch_camp_78" ],
- "fg": [ "pasture_corner_sw", "pasture_corner_nw", "pasture_corner_ne", "pasture_corner_se" ],
- "rotates": true
-},{
- "id": [ "ranch_camp_74", "ranch_camp_79", "ranch_camp_80" ],
- "fg": [ "pasture_not_s", "pasture_not_w", "pasture_not_n", "pasture_not_e" ],
- "rotates": true
-},{
- "id": [ "ranch_camp_75", "ranch_camp_81" ],
- "fg": [ "pasture_corner_se", "pasture_corner_sw", "pasture_corner_nw", "pasture_corner_ne" ],
- "rotates": true
-}]
\ No newline at end of file
+[
+ {
+ "id": "2farm_4",
+ "fg": [ "pasture_end_n", "pasture_end_e", "pasture_end_s", "pasture_end_w" ],
+ "rotates": true
+ },
+ {
+ "id": "2farm_8",
+ "fg": [ "pasture_end_s", "pasture_end_w", "pasture_end_n", "pasture_end_e" ],
+ "rotates": true
+ },
+ {
+ "id": "dairy_farm_NW",
+ "fg": [ "pasture_end_w", "pasture_end_s", "pasture_end_e", "pasture_end_n" ],
+ "rotates": true
+ },
+ {
+ "id": "dairy_farm_NE",
+ "fg": [ "pasture_end_e", "pasture_end_n", "pasture_end_w", "pasture_end_s" ],
+ "rotates": true
+ },
+ {
+ "id": "ranch_camp_1",
+ "fg": [ "pasture_corner_nw", "pasture_corner_ne", "pasture_corner_se", "pasture_corner_sw" ],
+ "rotates": true
+ },
+ {
+ "id": [ "ranch_camp_2", "ranch_camp_3", "ranch_camp_4", "ranch_camp_5", "ranch_camp_6", "ranch_camp_7", "ranch_camp_8" ],
+ "fg": [ "pasture_not_n", "pasture_not_e", "pasture_not_s", "pasture_not_w" ],
+ "rotates": true
+ },
+ {
+ "id": "ranch_camp_9",
+ "fg": [ "pasture_corner_ne", "pasture_corner_se", "pasture_corner_sw", "pasture_corner_nw" ],
+ "rotates": true
+ },
+ {
+ "id": [ "ranch_camp_10", "ranch_camp_19", "ranch_camp_28", "ranch_camp_37", "ranch_camp_46", "ranch_camp_55", "ranch_camp_64" ],
+ "fg": [ "pasture_not_w", "pasture_not_n", "pasture_not_e", "pasture_not_s" ],
+ "rotates": true
+ },
+ {
+ "id": [ "ranch_camp_11", "ranch_camp_12", "ranch_camp_13", "ranch_camp_14", "ranch_camp_15", "ranch_camp_16", "ranch_camp_20", "ranch_camp_21", "ranch_camp_22", "ranch_camp_23", "ranch_camp_24", "ranch_camp_25", "ranch_camp_26", "ranch_camp_29", "ranch_camp_30", "ranch_camp_31", "ranch_camp_32", "ranch_camp_33", "ranch_camp_34", "ranch_camp_35", "ranch_camp_38", "ranch_camp_39", "ranch_camp_40", "ranch_camp_41", "ranch_camp_42", "ranch_camp_43", "ranch_camp_44", "ranch_camp_47", "ranch_camp_48", "ranch_camp_49", "ranch_camp_50", "ranch_camp_51", "ranch_camp_52", "ranch_camp_53", "ranch_camp_56", "ranch_camp_58", "ranch_camp_59", "ranch_camp_60", "ranch_camp_61", "ranch_camp_62", "ranch_camp_65", "ranch_camp_69", "ranch_camp_70", "ranch_camp_71" ],
+ "fg": "pasture_center",
+ "rotates": true
+ },
+ {
+ "id": [ "ranch_camp_18", "ranch_camp_27", "ranch_camp_36", "ranch_camp_45", "ranch_camp_54", "ranch_camp_63", "ranch_camp_72" ],
+ "fg": [ "pasture_not_e", "pasture_not_s", "pasture_not_w", "pasture_not_n" ],
+ "rotates": true
+ },
+ {
+ "id": [ "ranch_camp_73", "ranch_camp_78" ],
+ "fg": [ "pasture_corner_sw", "pasture_corner_nw", "pasture_corner_ne", "pasture_corner_se" ],
+ "rotates": true
+ },
+ {
+ "id": [ "ranch_camp_74", "ranch_camp_79", "ranch_camp_80" ],
+ "fg": [ "pasture_not_s", "pasture_not_w", "pasture_not_n", "pasture_not_e" ],
+ "rotates": true
+ },
+ {
+ "id": [ "ranch_camp_75", "ranch_camp_81" ],
+ "fg": [ "pasture_corner_se", "pasture_corner_sw", "pasture_corner_nw", "pasture_corner_ne" ],
+ "rotates": true
+ },
+ {
+ "id": [ "paddock", "paddock_R_gap" ],
+ "fg": "pasture_unconnected"
+ },
+ {
+ "id": [ "paddock_trailhead_2", "paddock_trailhead_8" ],
+ "fg": "pasture_connection_ew"
+ },
+ {
+ "id": "paddock_DR",
+ "fg": "pasture_end_n"
+ },
+ {
+ "id": [ "paddock_trailhead_5", "paddock_R_butt" ],
+ "fg": "pasture_end_w"
+ },
+ {
+ "id": [ "paddock_L_butt", "paddock_C" ],
+ "fg": "pasture_end_e"
+ },
+ {
+ "id": "paddock_trailhead_3",
+ "fg": "pasture_corner_se"
+ },
+ {
+ "id": [ "splitrail_fence_DL", "paddock_trailhead_7" ],
+ "fg": "pasture_corner_nw"
+ },
+ {
+ "id": "paddock_trailhead_1",
+ "fg": "pasture_corner_ne"
+ },
+ {
+ "id": "splitrail_fence_UL",
+ "fg": [ "pasture_corner_se", "pasture_corner_ne" ],
+ "rotates": true
+ },
+ {
+ "id": "paddock_trailhead_4",
+ "fg": "pasture_not_n"
+ },
+ {
+ "id": "splitrail_fence_butt",
+ "fg": "pasture_not_e"
+ },
+ {
+ "id": "paddock_trailhead_6",
+ "fg": "pasture_not_s"
+ },
+ {
+ "id": "splitrail_fence_gap",
+ "fg": "pasture_not_w"
+ },
+ {
+ "id": [ "splitrail_fence_UR", "paddock_trailhead_9" ],
+ "fg": "pasture_corner_sw"
+ }
+]
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/pools/pools.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/pools/pools.json
index 7caea7c8ef..1697bc15e5 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/pools/pools.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/pools/pools.json
@@ -7,12 +7,12 @@
"pool_3",
"pool_4"
],
- "fg": [ "pool_2_faceN", "pool_2_faceE", "pool_2_faceS", "pool_2_faceW" ],
+ "fg": [ "pool_2_faceN", "pool_2_faceW", "pool_2_faceS", "pool_2_faceE" ],
"bg": "field",
"rotates": true
},{
"id": [ "pool_5", "pool_6" ],
- "fg": [ "pool_5_faceN", "pool_5_faceE", "pool_5_faceS", "pool_5_faceW" ],
+ "fg": [ "pool_5_faceN", "pool_5_faceW", "pool_5_faceS", "pool_5_faceE" ],
"bg": "field",
"rotates": true
},{
@@ -23,7 +23,7 @@
"pool_roof_3",
"pool_roof_4"
],
- "fg": [ "pool_2_faceN", "pool_2_faceE", "pool_2_faceS", "pool_2_faceW" ],
+ "fg": [ "pool_2_faceN", "pool_2_faceW", "pool_2_faceS", "pool_2_faceE" ],
"bg": "open_air",
"rotates": true
}
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/public_pond/public_pond.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/public_pond/public_pond.json
index 1e37a88336..2ec59f7d43 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/public_pond/public_pond.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/public_pond/public_pond.json
@@ -1,9 +1,12 @@
-[{
- "id": "PublicPond_1a",
- "fg": [ "public_pond_w", "public_pond_n", "public_pond_e", "public_pond_s" ],
- "rotates": true
-},{
- "id": "PublicPond_1b",
- "fg": [ "public_pond_e", "public_pond_s", "public_pond_w", "public_pond_n" ],
- "rotates": true
-}]
\ No newline at end of file
+[
+ {
+ "id": "PublicPond_1a",
+ "fg": [ "public_pond_w", "public_pond_s", "public_pond_e", "public_pond_n" ],
+ "rotates": true
+ },
+ {
+ "id": "PublicPond_1b",
+ "fg": [ "public_pond_e", "public_pond_n", "public_pond_w", "public_pond_s" ],
+ "rotates": true
+ }
+]
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/residential.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/residential.json
index bcfc7b40c1..ea3485d1cb 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/residential.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/residential.json
@@ -115,16 +115,8 @@
"urban_1_3",
"urban_1_4",
"urban_1_6",
- "urban_2_1",
- "urban_2_2",
"urban_3_1",
"urban_3_2",
- "urban_4_3",
- "urban_4_4",
- "urban_5_1",
- "urban_5_2",
- "urban_6_1",
- "urban_6_2",
"urban_7_1",
"urban_7_2",
"urban_8_1",
@@ -151,26 +143,10 @@
"urban_29_8",
"urban_29_9",
"urban_29_10",
- "urban_2_3",
- "urban_2_4",
- "urban_2_5",
- "urban_2_6",
"urban_3_3",
"urban_3_4",
"urban_3_5",
"urban_3_6",
- "urban_4_5",
- "urban_4_6",
- "urban_4_7",
- "urban_4_8",
- "urban_5_3",
- "urban_5_4",
- "urban_5_5",
- "urban_5_6",
- "urban_6_3",
- "urban_6_4",
- "urban_6_5",
- "urban_6_6",
"urban_7_3",
"urban_7_4",
"urban_7_5",
@@ -219,8 +195,32 @@
"urban_13_11",
"urban_13_12"
],
- "fg": [ "otr_house_1_faceN", "otr_house_1_faceE", "otr_house_1_faceS", "otr_house_1_faceW" ],
+ "fg": [ "otr_house_1_faceN", "otr_house_1_faceW", "otr_house_1_faceS", "otr_house_1_faceE" ],
"bg": "field",
"rotates": true
+ },
+ {
+ "id": [ "urban_4_3", "urban_4_4", "urban_2_1", "urban_2_2" ],
+ "fg": [ "otr_house_1_faceS", "otr_house_1_faceE", "otr_house_1_faceN", "otr_house_1_faceW" ],
+ "bg": "field",
+ "rotates": true
+ },
+ {
+ "id": [ "urban_5_1", "urban_5_2", "urban_6_1", "urban_6_2" ],
+ "fg": [ "otr_house_1_faceN", "otr_house_1_faceE", "otr_house_1_faceS", "otr_house_1_faceW" ],
+ "bg": "field",
+ "rotates": true
+ },
+ {
+ "id": [ "urban_4_5", "urban_4_6", "urban_4_7", "urban_4_8", "urban_2_3", "urban_2_4", "urban_2_5", "urban_2_6" ],
+ "fg": [ "otr_house_1_faceS", "otr_house_1_faceE", "otr_house_1_faceN", "otr_house_1_faceW" ],
+ "bg": "open_air",
+ "rotates": true
+ },
+ {
+ "id": [ "urban_5_3", "urban_5_4", "urban_5_5", "urban_5_6", "urban_6_3", "urban_6_4", "urban_6_5", "urban_6_6" ],
+ "fg": [ "otr_house_1_faceN", "otr_house_1_faceE", "otr_house_1_faceS", "otr_house_1_faceW" ],
+ "bg": "open_air",
+ "rotates": true
}
]
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/river/river.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/river/river.json
index 551f5fec60..a9c36757d4 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/river/river.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/river/river.json
@@ -1,71 +1,62 @@
-[{
- "id": "river_nw",
- "fg": "river_nw",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_sw",
- "fg": "river_sw",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_se",
- "fg": "river_se",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_ne",
- "fg": "river_ne",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_north",
- "fg": "river_north",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_west",
- "fg": "river_west",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_east",
- "fg": "river_east",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_south",
- "fg": "river_south",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_center",
- "fg": "river_center",
- "bg": "field",
- "rotates": false
-},{
- "id": "river",
- "fg": ["river_north", "river_east", "river_south", "river_west"],
- "bg": "field",
- "rotates": true
-},{
- "id": "river_c_not_nw",
- "fg": "river_c_not_nw",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_c_not_ne",
- "fg": "river_c_not_ne",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_c_not_sw",
- "fg": "river_c_not_sw",
- "bg": "field",
- "rotates": false
-},{
- "id": "river_c_not_se",
- "fg": "river_c_not_se",
- "bg": "field",
- "rotates": false
-}]
+[
+ {
+ "id": "river_nw",
+ "fg": "river_nw",
+ "bg": "field",
+ "rotates": false
+ },
+ {
+ "id": "river_sw",
+ "fg": "river_sw",
+ "bg": "field",
+ "rotates": false
+ },
+ {
+ "id": "river_se",
+ "fg": "river_se",
+ "bg": "field",
+ "rotates": false
+ },
+ {
+ "id": "river_ne",
+ "fg": "river_ne",
+ "bg": "field",
+ "rotates": false
+ },
+ {
+ "id": "river_center",
+ "fg": "river_center",
+ "bg": "field",
+ "rotates": false
+ },
+ {
+ "id": "river",
+ "fg": ["river_north", "river_west", "river_south", "river_east"],
+ "bg": "field",
+ "rotates": true
+ },
+ {
+ "id": "river_c_not_nw",
+ "fg": "river_c_not_nw",
+ "bg": "field",
+ "rotates": false
+ },
+ {
+ "id": "river_c_not_ne",
+ "fg": "river_c_not_ne",
+ "bg": "field",
+ "rotates": false
+ },
+ {
+ "id": "river_c_not_sw",
+ "fg": "river_c_not_sw",
+ "bg": "field",
+ "rotates": false
+ },
+ {
+ "id": "river_c_not_se",
+ "fg": "river_c_not_se",
+ "bg": "field",
+ "rotates": false
+ }
+]
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/road/road.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/road/road.json
index dfe9fc7723..38331f2aa1 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/road/road.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/road/road.json
@@ -1,54 +1,80 @@
-{
- "id": "road",
- "fg": "road_unconnected",
- "multitile": true,
- "additional_tiles": [
- {
- "id": "center",
- "fg": "road_center"
- },
- {
- "id": "corner",
- "fg": [
- "road_corner_nw",
- "road_corner_sw",
- "road_corner_se",
- "road_corner_ne"
- ],
- "bg": "field"
- },
- {
- "id": "t_connection",
- "fg": [
- "road_t_connection_n",
- "road_t_connection_w",
- "road_t_connection_s",
- "road_t_connection_e"
- ]
- },
- {
- "id": "edge",
- "fg": [
- "road_edge_ns",
- "road_edge_ew"
- ]
- },
- {
- "id": "end_piece",
- "fg": [
- "road_end_piece_n",
- "road_end_piece_w",
- "road_end_piece_s",
- "road_end_piece_e"
- ]
- },
- {
- "id": "unconnected",
- "fg": [
- "road_unconnected",
- "road_unconnected"
- ],
- "bg": "field"
- }
- ]
-}
+[
+ {
+ "id": "road",
+ "fg": "road_unconnected",
+ "multitile": true,
+ "additional_tiles": [
+ {
+ "id": "center",
+ "fg": "road_center"
+ },
+ {
+ "id": "corner",
+ "fg": [
+ "road_corner_nw",
+ "road_corner_sw",
+ "road_corner_se",
+ "road_corner_ne"
+ ],
+ "bg": "field"
+ },
+ {
+ "id": "t_connection",
+ "fg": [
+ "road_t_connection_n",
+ "road_t_connection_w",
+ "road_t_connection_s",
+ "road_t_connection_e"
+ ]
+ },
+ {
+ "id": "edge",
+ "fg": [
+ "road_edge_ns",
+ "road_edge_ew"
+ ]
+ },
+ {
+ "id": "end_piece",
+ "fg": [
+ "road_end_piece_n",
+ "road_end_piece_w",
+ "road_end_piece_s",
+ "road_end_piece_e"
+ ]
+ },
+ {
+ "id": "unconnected",
+ "fg": [
+ "road_unconnected",
+ "road_unconnected"
+ ],
+ "bg": "field"
+ }
+ ]
+ },
+ {
+ "id": "trailer_hub_01",
+ "fg": "road_center"
+ },
+ {
+ "id": "trailer_hub_11",
+ "fg": [ "road_edge_ew", "road_edge_ns" ],
+ "rotates": true
+ },
+ {
+ "id": [ "trailer_road", "trailer_road_1parkway", "trailer_road_2parkway" ],
+ "fg": [ "road_edge_ns", "road_edge_ew" ],
+ "rotates": true
+ },
+ {
+ "id": "trailer_road_turn",
+ "fg": [ "road_corner_ne", "road_corner_nw", "road_corner_sw", "road_corner_se" ],
+ "bg": "field",
+ "rotates": true
+ },
+ {
+ "id": "trailer_road_3way",
+ "fg": "road_center"
+ }
+]
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/road_nesw_manhole/road_nesw_manhole.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/road_nesw_manhole/road_nesw_manhole.json
index 2e402ea713..237e6c5172 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/road_nesw_manhole/road_nesw_manhole.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/road_nesw_manhole/road_nesw_manhole.json
@@ -1,7 +1,7 @@
[
-{
- "id": "road_nesw_manhole",
+ {
+ "id": [ "road_nesw_manhole", "city_center" ],
"fg": "road_nesw_manhole",
"bg": "road_center"
-}
-]
\ No newline at end of file
+ }
+]
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/rural_house/rural_house.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/rural_house/rural_house.json
index e54dc0b097..45398bf301 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/rural_house/rural_house.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/rural_house/rural_house.json
@@ -5,7 +5,7 @@
"farm_isherwood_2",
"2farm_11"
],
- "fg": [ "rural_house_faceN", "rural_house_faceE", "rural_house_faceS", "rural_house_faceW" ],
+ "fg": [ "rural_house_faceN", "rural_house_faceW", "rural_house_faceS", "rural_house_faceE" ],
"bg": "field",
"rotates": true
},{
@@ -13,7 +13,7 @@
"dairy_farm_SW",
"ranch_camp_68"
],
- "fg": [ "rural_house_faceS", "rural_house_faceW", "rural_house_faceN", "rural_house_faceE" ],
+ "fg": [ "rural_house_faceS", "rural_house_faceE", "rural_house_faceN", "rural_house_faceW" ],
"bg": "field",
"rotates": true
},{
@@ -23,7 +23,7 @@
"farm_isherwood_2_roof",
"2farm_roof_11"
],
- "fg": [ "rural_house_faceN", "rural_house_faceE", "rural_house_faceS", "rural_house_faceW" ],
+ "fg": [ "rural_house_faceN", "rural_house_faceW", "rural_house_faceS", "rural_house_faceE" ],
"bg": "open_air",
"rotates": true
},{
@@ -31,11 +31,11 @@
"dairy_farm_SW_roof",
"ranch_camp_68_roof"
],
- "fg": [ "rural_house_faceS", "rural_house_faceW", "rural_house_faceN", "rural_house_faceE" ],
+ "fg": [ "rural_house_faceS", "rural_house_faceE", "rural_house_faceN", "rural_house_faceW" ],
"bg": "open_air",
"rotates": true
},{
"id": "farm_isherwood_2_cellar",
- "fg": [ "rural_house_faceN", "rural_house_faceE", "rural_house_faceS", "rural_house_faceW" ],
+ "fg": [ "rural_house_faceN", "rural_house_faceW", "rural_house_faceS", "rural_house_faceE" ],
"rotates": true
}]
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/sub_station/sub_station.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/sub_station/sub_station.json
index dce336c130..db847ec29d 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/sub_station/sub_station.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/sub_station/sub_station.json
@@ -1,7 +1,7 @@
[
{
"id": [ "sub_station_roof", "sub_station", "sewer_sub_station", "underground_sub_station" ],
- "fg": [ "sub_station_rot_N", "sub_station_rot_E", "sub_station_rot_S", "sub_station_rot_W" ],
+ "fg": [ "sub_station_rot_N", "sub_station_rot_W", "sub_station_rot_S", "sub_station_rot_E" ],
"rotates": true
}
]
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/swamp_shack/swamp_shacks.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/swamp_shack/swamp_shacks.json
index 6f58ab14dc..757fe7b102 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/swamp_shack/swamp_shacks.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/swamp_shack/swamp_shacks.json
@@ -5,17 +5,17 @@
"rotates": true
},{
"id": "hunter_shack_1",
- "fg": [ "hunter_shack_1_faceS", "hunter_shack_1_faceE", "hunter_shack_1_faceN", "hunter_shack_1_faceW" ],
+ "fg": [ "hunter_shack_1_faceS", "hunter_shack_1_faceW", "hunter_shack_1_faceN", "hunter_shack_1_faceE" ],
"bg": "field",
"rotates": true
},{
"id": "hunter_shack_roof",
- "fg": [ "hunter_shack_faceN", "hunter_shack_faceE", "hunter_shack_faceS", "hunter_shack_faceW" ],
+ "fg": [ "hunter_shack_faceS", "hunter_shack_faceE", "hunter_shack_faceN", "hunter_shack_faceW" ],
"bg": "open_air",
"rotates": true
},{
"id": "hunter_shack_roof_1",
- "fg": [ "hunter_shack_1_faceS", "hunter_shack_1_faceE", "hunter_shack_1_faceN", "hunter_shack_1_faceW" ],
+ "fg": [ "hunter_shack_1_faceS", "hunter_shack_1_faceW", "hunter_shack_1_faceN", "hunter_shack_1_faceE" ],
"bg": "open_air",
"rotates": true
}]
\ No newline at end of file
diff --git a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/trail_small/trail_small.json b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/trail_small/trail_small.json
index e642c6af72..32449a2a50 100644
--- a/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/trail_small/trail_small.json
+++ b/gfx/UltimateCataclysm/pngs_normal_32x32/overmap/trail_small/trail_small.json
@@ -3,9 +3,9 @@
"id": "small_wooded_trail",
"fg": [
"small_wooded_trail_rot_N",
- "small_wooded_trail_rot_E",
+ "small_wooded_trail_rot_W",
"small_wooded_trail_rot_S",
- "small_wooded_trail_rot_W"
+ "small_wooded_trail_rot_E"
],
"bg": "field",
"rotates": true
@@ -14,9 +14,9 @@
"id": "small_wooded_trail_2",
"fg": [
"small_wooded_trail_2_rot_N",
- "small_wooded_trail_2_rot_E",
+ "small_wooded_trail_2_rot_W",
"small_wooded_trail_2_rot_S",
- "small_wooded_trail_2_rot_W"
+ "small_wooded_trail_2_rot_E"
],
"bg": "field",
"rotates": true
diff --git a/gfx/UltimateCataclysm/pngs_tall_32x64/overmap/wind_turbine/wind_turbine.json b/gfx/UltimateCataclysm/pngs_tall_32x64/overmap/wind_turbine/wind_turbine.json
index e87d909312..3408dbecf8 100644
--- a/gfx/UltimateCataclysm/pngs_tall_32x64/overmap/wind_turbine/wind_turbine.json
+++ b/gfx/UltimateCataclysm/pngs_tall_32x64/overmap/wind_turbine/wind_turbine.json
@@ -6,13 +6,13 @@
"wind_turbine_nacelle",
"wind_turbine_roof"
],
- "fg": [ "wind_turbine_rot_N", "wind_turbine_rot_E", "wind_turbine_rot_S", "wind_turbine_rot_W" ],
+ "fg": [ "wind_turbine_rot_N", "wind_turbine_rot_W", "wind_turbine_rot_S", "wind_turbine_rot_E" ],
"bg": "open_air_tall",
"rotates": true
},
{
"id": "wind_turbine_ground",
- "fg": [ "wind_turbine_rot_N", "wind_turbine_rot_E", "wind_turbine_rot_S", "wind_turbine_rot_W" ],
+ "fg": [ "wind_turbine_rot_N", "wind_turbine_rot_W", "wind_turbine_rot_S", "wind_turbine_rot_E" ],
"bg": "field_tall",
"rotates": true
}
diff --git a/tools/git_symlinks.cmd b/tools/git_symlinks.cmd
new file mode 100644
index 0000000000..3929258b80
--- /dev/null
+++ b/tools/git_symlinks.cmd
@@ -0,0 +1,14 @@
+@echo off
+echo Attention! You need to enable 'Developer mode' first.
+echo Read how to do it here:
+echo.
+echo https://learn.microsoft.com/en-us/windows/apps/get-started/developer-mode-features-and-debugging
+echo.
+echo Keep this window open, and enable this feature. Then press any key.
+pause >nul
+git config --global core.symlinks true
+git config --unset core.symlinks
+git reset --hard
+echo.
+echo Now you can follow symlinks in repository.
+pause
\ No newline at end of file
diff --git a/tools/set_vips_path.cmd b/tools/set_vips_path.cmd
index 4df2b30338..772d3a6d43 100644
--- a/tools/set_vips_path.cmd
+++ b/tools/set_vips_path.cmd
@@ -63,7 +63,7 @@ if /i [%is_temp%] EQU [YES] (
) else (
echo Setting libvips path to "%path_arg%", permanently
echo Reboot required
- setx LIBVIPS_PATH "%path_arg%"
+ setx LIBVIPS_PATH %path_arg%
)
if /i [%silent%] NEQ [YES] (
diff --git a/tools/updtset.cmd b/tools/updtset.cmd
index 3a5c5266a3..cabea13094 100644
--- a/tools/updtset.cmd
+++ b/tools/updtset.cmd
@@ -179,6 +179,9 @@ if errorlevel 1 (
if errorlevel 1 (
echo ERROR: No Python found!
echo If you are sure that Python is installed - please check 'path' environment variable.
+ echo Script will try to install Python 3.12, try to run this script again after this.
+ echo.
+ winget install Python.Python.3.12 --disable-interactivity
goto stop
) else (
set APP=python
@@ -204,11 +207,17 @@ if errorlevel 1 (
) else (
if /i [!verbose!] EQU [YES] (echo - Python 'pyvips' module found.)
)
-where %LIBVIPS_PATH%\bin\:vips vips /q
+where /q %LIBVIPS_PATH%\bin:vips.exe
if errorlevel 1 (
- echo ERROR! No 'libvips' library found. Please refer installation manual:
+ echo ERROR^^^! No 'libvips' library found. Please refer installation manual:
echo https://libvips.github.io/libvips/install.html
echo If you are sure that library was installed - please check library version and 'path' environment variable.
+ echo Script will try to download libvips 8.15 into your home directory, try to run this script again after this.
+ echo.
+ curl https://github.com/libvips/build-win64-mxe/releases/download/v8.15.0/vips-dev-w64-web-8.15.0.zip -L -o %HOMEDRIVE%%HOMEPATH%\vips-dev-w64-web-8.15.0.zip
+
+ call :UnZipFile "%HOMEDRIVE%%HOMEPATH%\vips" "%HOMEDRIVE%%HOMEPATH%\vips-dev-w64-web-8.15.0.zip"
+ call set_vips_path.cmd %HOMEDRIVE%%HOMEPATH%\vips\vips-dev-8.15\
goto stop
) else (
if /i [!verbose!] EQU [YES] (echo - Library 'libvips' found.)
@@ -263,3 +272,18 @@ echo.
echo (press any key to close this window^)
pause >nul
exit /b 1
+
+:UnZipFile
+set vbs="%temp%\_.vbs"
+if exist %vbs% del /f /q %vbs%
+>%vbs% echo Set fso = CreateObject("Scripting.FileSystemObject")
+>>%vbs% echo If NOT fso.FolderExists(%1) Then
+>>%vbs% echo fso.CreateFolder(%1)
+>>%vbs% echo End If
+>>%vbs% echo set objShell = CreateObject("Shell.Application")
+>>%vbs% echo set FilesInZip=objShell.NameSpace(%2).items
+>>%vbs% echo objShell.NameSpace(%1).CopyHere(FilesInZip)
+>>%vbs% echo Set fso = Nothing
+>>%vbs% echo Set objShell = Nothing
+cscript //nologo %vbs%
+if exist %vbs% del /f /q %vbs%