diff --git a/binaries/data/mods/public/art/actors/props/structures/britons/barracks_struct1.xml b/binaries/data/mods/public/art/actors/props/structures/britons/barracks_struct1.xml
index 9398e265c3..d3f64ac5d7 100644
--- a/binaries/data/mods/public/art/actors/props/structures/britons/barracks_struct1.xml
+++ b/binaries/data/mods/public/art/actors/props/structures/britons/barracks_struct1.xml
@@ -5,11 +5,23 @@
props/brit_barracks_struct1.dae
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
player_trans_ao_parallax_spec.xml
diff --git a/binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_armorstand_wood.xml b/binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_armorstand_wood.xml
index 38256a3b05..beb9893130 100644
--- a/binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_armorstand_wood.xml
+++ b/binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_armorstand_wood.xml
@@ -11,5 +11,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
player_trans_parallax_spec.xml
diff --git a/binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_bucket_water.xml b/binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_bucket_water.xml
index 416e178384..940b2316a1 100644
--- a/binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_bucket_water.xml
+++ b/binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_bucket_water.xml
@@ -5,8 +5,20 @@
props/celt_blacksmith_bucket_water.dae
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
player_water.xml
diff --git a/binaries/data/mods/public/art/actors/props/structures/celts/special.xml b/binaries/data/mods/public/art/actors/props/structures/celts/special.xml
index c93dae2b9c..ea0a7e4f34 100644
--- a/binaries/data/mods/public/art/actors/props/structures/celts/special.xml
+++ b/binaries/data/mods/public/art/actors/props/structures/celts/special.xml
@@ -5,10 +5,22 @@
props/celt_sb_roof.dae
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
player_trans_parallax_spec.xml
diff --git a/binaries/data/mods/public/art/actors/props/structures/gauls/farmstead_struct1.xml b/binaries/data/mods/public/art/actors/props/structures/gauls/farmstead_struct1.xml
index 8392c5c710..5e84dfdeec 100644
--- a/binaries/data/mods/public/art/actors/props/structures/gauls/farmstead_struct1.xml
+++ b/binaries/data/mods/public/art/actors/props/structures/gauls/farmstead_struct1.xml
@@ -5,11 +5,23 @@
props/gaul_farmstead_struct1.dae
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
player_trans_ao_parallax_spec.xml
diff --git a/binaries/data/mods/public/art/actors/structures/carthaginians/embassy_celtic.xml b/binaries/data/mods/public/art/actors/structures/carthaginians/embassy_celtic.xml
index 411be19333..92a88db1dc 100644
--- a/binaries/data/mods/public/art/actors/structures/carthaginians/embassy_celtic.xml
+++ b/binaries/data/mods/public/art/actors/structures/carthaginians/embassy_celtic.xml
@@ -24,6 +24,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/barracks.xml b/binaries/data/mods/public/art/actors/structures/celts/barracks.xml
index 8f018fb174..045b13511e 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/barracks.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/barracks.xml
@@ -19,6 +19,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/civic_centre.xml b/binaries/data/mods/public/art/actors/structures/celts/civic_centre.xml
index be4d5ad39b..7e3b3930fd 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/civic_centre.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/civic_centre.xml
@@ -17,6 +17,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/dock.xml b/binaries/data/mods/public/art/actors/structures/celts/dock.xml
index d83916f7e0..90a9494abb 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/dock.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/dock.xml
@@ -16,6 +16,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/farmstead.xml b/binaries/data/mods/public/art/actors/structures/celts/farmstead.xml
index bd4ee59c24..623e713e46 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/farmstead.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/farmstead.xml
@@ -11,11 +11,23 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/homestead.xml b/binaries/data/mods/public/art/actors/structures/celts/homestead.xml
index bd1b0564c4..bbf719a586 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/homestead.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/homestead.xml
@@ -19,6 +19,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/house.xml b/binaries/data/mods/public/art/actors/structures/celts/house.xml
index 13dc16b724..b3b8d13061 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/house.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/house.xml
@@ -24,13 +24,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/hut.xml b/binaries/data/mods/public/art/actors/structures/celts/hut.xml
index 2f9d0a8772..c24fd8f8d4 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/hut.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/hut.xml
@@ -15,6 +15,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/kennel.xml b/binaries/data/mods/public/art/actors/structures/celts/kennel.xml
index 3c1ae0b322..af2e343a55 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/kennel.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/kennel.xml
@@ -11,11 +11,23 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/market_newest.xml b/binaries/data/mods/public/art/actors/structures/celts/market_newest.xml
index d16a0316e0..7e7414aa1b 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/market_newest.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/market_newest.xml
@@ -12,10 +12,22 @@
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/plot_corral.xml b/binaries/data/mods/public/art/actors/structures/celts/plot_corral.xml
index 99863ec6ae..380facf0c7 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/plot_corral.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/plot_corral.xml
@@ -18,6 +18,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/storehouse.xml b/binaries/data/mods/public/art/actors/structures/celts/storehouse.xml
index 65348d49d1..0d9c4dc6a0 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/storehouse.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/storehouse.xml
@@ -17,6 +17,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/celts/temple.xml b/binaries/data/mods/public/art/actors/structures/celts/temple.xml
index beb1427513..60b17a3c27 100644
--- a/binaries/data/mods/public/art/actors/structures/celts/temple.xml
+++ b/binaries/data/mods/public/art/actors/structures/celts/temple.xml
@@ -18,7 +18,19 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/fndn_celt_dock.xml b/binaries/data/mods/public/art/actors/structures/fndn_celt_dock.xml
index 65e3d2fb73..daa160efe8 100644
--- a/binaries/data/mods/public/art/actors/structures/fndn_celt_dock.xml
+++ b/binaries/data/mods/public/art/actors/structures/fndn_celt_dock.xml
@@ -14,5 +14,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
no_trans_norm_spec.xml
diff --git a/binaries/data/mods/public/art/actors/structures/gauls/civic_centre.xml b/binaries/data/mods/public/art/actors/structures/gauls/civic_centre.xml
index 5ef30b7836..5a097b69c7 100644
--- a/binaries/data/mods/public/art/actors/structures/gauls/civic_centre.xml
+++ b/binaries/data/mods/public/art/actors/structures/gauls/civic_centre.xml
@@ -18,6 +18,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/gauls/house.xml b/binaries/data/mods/public/art/actors/structures/gauls/house.xml
index a21084d164..94d23841cd 100644
--- a/binaries/data/mods/public/art/actors/structures/gauls/house.xml
+++ b/binaries/data/mods/public/art/actors/structures/gauls/house.xml
@@ -10,6 +10,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
structural/gaul_house_a.dae
diff --git a/binaries/data/mods/public/art/actors/structures/gauls/market.xml b/binaries/data/mods/public/art/actors/structures/gauls/market.xml
index 879c358304..cbe4f2bd19 100644
--- a/binaries/data/mods/public/art/actors/structures/gauls/market.xml
+++ b/binaries/data/mods/public/art/actors/structures/gauls/market.xml
@@ -18,6 +18,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/art/actors/structures/gauls/scout_tower.xml b/binaries/data/mods/public/art/actors/structures/gauls/scout_tower.xml
index acdb2d2d8e..95088c2ca1 100644
--- a/binaries/data/mods/public/art/actors/structures/gauls/scout_tower.xml
+++ b/binaries/data/mods/public/art/actors/structures/gauls/scout_tower.xml
@@ -33,6 +33,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/binaries/data/mods/public/maps/skirmishes/alpine_valleys_2p.xml b/binaries/data/mods/public/maps/skirmishes/alpine_valleys_2p.xml
index c2a6e6231f..c0660a6559 100644
--- a/binaries/data/mods/public/maps/skirmishes/alpine_valleys_2p.xml
+++ b/binaries/data/mods/public/maps/skirmishes/alpine_valleys_2p.xml
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:6a2ae0949134027744a90082e70c4c72ff4d5bab269d4fcb07b4bc95cd9254a0
-size 454876
+oid sha256:5132a75874dc063e0da91923bcb67d23520fcadd51cb45cd1355896d0c1e4e99
+size 454915
diff --git a/binaries/data/mods/public/simulation/components/BiomeManager.js b/binaries/data/mods/public/simulation/components/BiomeManager.js
new file mode 100644
index 0000000000..2f534eb387
--- /dev/null
+++ b/binaries/data/mods/public/simulation/components/BiomeManager.js
@@ -0,0 +1,43 @@
+/**
+ * A manager class for biomes.
+ * @class
+ * @constructor
+ */
+function BiomeManager() {}
+
+/**
+ * Defines the XML schema and help strings of the manager.
+ * @memberof BiomeManager
+ */
+BiomeManager.prototype.Schema =
+ "";
+
+/**
+ * Initializes the current map's biome.
+ * @memberof BiomeManager
+ */
+BiomeManager.prototype.Init = function()
+{
+ this.biome = "";
+}
+
+/**
+ * Sets the current map's biome.
+ * @param {string} biome - The new biome.
+ * @memberof BiomeManager
+ */
+BiomeManager.prototype.SetBiome = function(biome)
+{
+ this.biome = biome;
+}
+
+/**
+ * Returns the current map's biome.
+ * @memberof BiomeManager
+ */
+BiomeManager.prototype.GetBiome = function()
+{
+ return this.biome;
+}
+
+Engine.RegisterSystemComponentType(IID_BiomeManager, "BiomeManager", BiomeManager);
diff --git a/binaries/data/mods/public/simulation/components/BiomeReplacer.js b/binaries/data/mods/public/simulation/components/BiomeReplacer.js
new file mode 100644
index 0000000000..67462c5fa8
--- /dev/null
+++ b/binaries/data/mods/public/simulation/components/BiomeReplacer.js
@@ -0,0 +1,83 @@
+/**
+ * A manager class for biomes.
+ * @class
+ * @constructor
+ */
+function BiomeReplacer() {}
+
+/**
+ * Defines the XML schema and help strings of the component.
+ * @memberof BiomeReplacer
+ */
+BiomeReplacer.prototype.Schema = `
+ Defines the variants an entity can assume depending on a map biome.
+
+
+
+ generic/alpine
+ winter
+
+
+
+
+
+
+
+
+
+
+ tokens
+
+
+
+
+
+
+
+
+
+ `;
+
+/**
+ * Initializes the biome replacer.
+ * @memberof BiomeReplacer
+ */
+BiomeReplacer.prototype.Init = function()
+{
+
+}
+
+
+/**
+ * @param {{ "from": number, "to": number }} msg - Message containing the old new owner.
+ * @memberof BiomeReplacer
+ */
+BiomeReplacer.prototype.OnCreate = function(msg)
+{
+
+ const currentBiome = Engine.QueryInterface(SYSTEM_ENTITY, IID_BiomeManager)?.GetBiome();
+
+ if (!currentBiome)
+ return;
+
+ let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
+
+ if (!cmpVisual)
+ return;
+
+ for (const variantName of Object.keys(this.template.Variants))
+ {
+ const variant = this.template.Variants[variantName];
+ if (!variant.AffectedBiomes || !variant.AffectedBiomes._string)
+ continue;
+
+ const affectedBiomes = variant.AffectedBiomes._string.split(" ");
+ if (affectedBiomes.indexOf(currentBiome) !== -1)
+ {
+ cmpVisual.SelectAnimation(variant.ActorVariant, false, 1.0);
+ return;
+ }
+ }
+};
+
+Engine.RegisterComponentType(IID_BiomeReplacer, "BiomeReplacer", BiomeReplacer);
diff --git a/binaries/data/mods/public/simulation/components/interfaces/BiomeManager.js b/binaries/data/mods/public/simulation/components/interfaces/BiomeManager.js
new file mode 100644
index 0000000000..90ca6f9c74
--- /dev/null
+++ b/binaries/data/mods/public/simulation/components/interfaces/BiomeManager.js
@@ -0,0 +1 @@
+Engine.RegisterInterface("BiomeManager");
diff --git a/binaries/data/mods/public/simulation/components/interfaces/BiomeReplacer.js b/binaries/data/mods/public/simulation/components/interfaces/BiomeReplacer.js
new file mode 100644
index 0000000000..ed09a64773
--- /dev/null
+++ b/binaries/data/mods/public/simulation/components/interfaces/BiomeReplacer.js
@@ -0,0 +1 @@
+Engine.RegisterInterface("BiomeReplacer");
diff --git a/binaries/data/mods/public/simulation/helpers/InitGame.js b/binaries/data/mods/public/simulation/helpers/InitGame.js
index b083bc370d..9cff4c07c3 100644
--- a/binaries/data/mods/public/simulation/helpers/InitGame.js
+++ b/binaries/data/mods/public/simulation/helpers/InitGame.js
@@ -41,6 +41,11 @@ function InitGame(settings)
cmpRangeManager.ExploreMap(i);
}
+ if (settings.Biome)
+ {
+ Engine.QueryInterface(SYSTEM_ENTITY, IID_BiomeManager)?.SetBiome(settings.Biome);
+ }
+
const cmpAIManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AIManager);
for (let i = 0; i < settings.PlayerData.length; ++i)
{
diff --git a/binaries/data/mods/public/simulation/templates/special/filter/construction.xml b/binaries/data/mods/public/simulation/templates/special/filter/construction.xml
index 24b3b2ee51..e6d0e0e1a5 100644
--- a/binaries/data/mods/public/simulation/templates/special/filter/construction.xml
+++ b/binaries/data/mods/public/simulation/templates/special/filter/construction.xml
@@ -5,4 +5,5 @@
+
diff --git a/binaries/data/mods/public/simulation/templates/special/filter/preview.xml b/binaries/data/mods/public/simulation/templates/special/filter/preview.xml
index 53984d80c9..0b53e6ed7a 100644
--- a/binaries/data/mods/public/simulation/templates/special/filter/preview.xml
+++ b/binaries/data/mods/public/simulation/templates/special/filter/preview.xml
@@ -1,5 +1,6 @@
+
diff --git a/binaries/data/mods/public/simulation/templates/structures/gaul/house.xml b/binaries/data/mods/public/simulation/templates/structures/gaul/house.xml
index 6306502807..3438322a06 100644
--- a/binaries/data/mods/public/simulation/templates/structures/gaul/house.xml
+++ b/binaries/data/mods/public/simulation/templates/structures/gaul/house.xml
@@ -1,5 +1,13 @@
+
+
+
+ generic/alpine
+ winter
+
+
+
gaul
Tegia