Index: binaries/data/mods/public/art/actors/props/structures/britons/barracks_struct1.xml =================================================================== --- binaries/data/mods/public/art/actors/props/structures/britons/barracks_struct1.xml +++ binaries/data/mods/public/art/actors/props/structures/britons/barracks_struct1.xml @@ -5,12 +5,24 @@ props/brit_barracks_struct1.dae - - - - - + + + + + + + + + + + + + + + + + player_trans_ao_parallax_spec.xml Index: binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_armorstand_wood.xml =================================================================== --- binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_armorstand_wood.xml +++ binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_armorstand_wood.xml @@ -11,5 +11,17 @@ + + + + + + + + + + + + player_trans_parallax_spec.xml Index: binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_bucket_water.xml =================================================================== --- binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_bucket_water.xml +++ binaries/data/mods/public/art/actors/props/structures/celts/blacksmith_bucket_water.xml @@ -5,9 +5,21 @@ props/celt_blacksmith_bucket_water.dae - - + + + + + + + + + + + + + + player_water.xml Index: binaries/data/mods/public/art/actors/props/structures/celts/special.xml =================================================================== --- binaries/data/mods/public/art/actors/props/structures/celts/special.xml +++ binaries/data/mods/public/art/actors/props/structures/celts/special.xml @@ -5,11 +5,23 @@ props/celt_sb_roof.dae - - - - + + + + + + + + + + + + + + + + player_trans_parallax_spec.xml Index: binaries/data/mods/public/art/actors/props/structures/gauls/farmstead_struct1.xml =================================================================== --- binaries/data/mods/public/art/actors/props/structures/gauls/farmstead_struct1.xml +++ binaries/data/mods/public/art/actors/props/structures/gauls/farmstead_struct1.xml @@ -5,12 +5,24 @@ props/gaul_farmstead_struct1.dae - - - - - + + + + + + + + + + + + + + + + + player_trans_ao_parallax_spec.xml Index: binaries/data/mods/public/art/actors/structures/carthaginians/embassy_celtic.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/carthaginians/embassy_celtic.xml +++ binaries/data/mods/public/art/actors/structures/carthaginians/embassy_celtic.xml @@ -17,6 +17,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/barracks.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/barracks.xml +++ binaries/data/mods/public/art/actors/structures/celts/barracks.xml @@ -20,6 +20,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/civic_centre.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/civic_centre.xml +++ binaries/data/mods/public/art/actors/structures/celts/civic_centre.xml @@ -18,6 +18,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/dock.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/dock.xml +++ binaries/data/mods/public/art/actors/structures/celts/dock.xml @@ -17,6 +17,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/farmstead.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/farmstead.xml +++ binaries/data/mods/public/art/actors/structures/celts/farmstead.xml @@ -11,14 +11,26 @@ - - - - - + + + + + + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/homestead.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/homestead.xml +++ binaries/data/mods/public/art/actors/structures/celts/homestead.xml @@ -20,6 +20,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/house.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/house.xml +++ binaries/data/mods/public/art/actors/structures/celts/house.xml @@ -25,12 +25,24 @@ + + + + + + + + + + + + - - - - + + + + Index: binaries/data/mods/public/art/actors/structures/celts/hut.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/hut.xml +++ binaries/data/mods/public/art/actors/structures/celts/hut.xml @@ -16,6 +16,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/kennel.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/kennel.xml +++ binaries/data/mods/public/art/actors/structures/celts/kennel.xml @@ -11,14 +11,26 @@ - - - - - + + + + + + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/market_newest.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/market_newest.xml +++ binaries/data/mods/public/art/actors/structures/celts/market_newest.xml @@ -12,13 +12,25 @@ - - - - + + + + + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/plot_corral.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/plot_corral.xml +++ binaries/data/mods/public/art/actors/structures/celts/plot_corral.xml @@ -19,6 +19,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/storehouse.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/storehouse.xml +++ binaries/data/mods/public/art/actors/structures/celts/storehouse.xml @@ -18,6 +18,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/celts/temple.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/celts/temple.xml +++ binaries/data/mods/public/art/actors/structures/celts/temple.xml @@ -18,11 +18,23 @@ - + + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/fndn_celt_dock.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/fndn_celt_dock.xml +++ binaries/data/mods/public/art/actors/structures/fndn_celt_dock.xml @@ -14,5 +14,17 @@ + + + + + + + + + + + + no_trans_norm_spec.xml Index: binaries/data/mods/public/art/actors/structures/gauls/civic_centre.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/gauls/civic_centre.xml +++ binaries/data/mods/public/art/actors/structures/gauls/civic_centre.xml @@ -19,6 +19,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/gauls/house.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/gauls/house.xml +++ binaries/data/mods/public/art/actors/structures/gauls/house.xml @@ -11,6 +11,18 @@ + + + + + + + + + + + + structural/gaul_house_a.dae Index: binaries/data/mods/public/art/actors/structures/gauls/market.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/gauls/market.xml +++ binaries/data/mods/public/art/actors/structures/gauls/market.xml @@ -19,6 +19,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/art/actors/structures/gauls/scout_tower.xml =================================================================== --- binaries/data/mods/public/art/actors/structures/gauls/scout_tower.xml +++ binaries/data/mods/public/art/actors/structures/gauls/scout_tower.xml @@ -34,6 +34,18 @@ + + + + + + + + + + + + Index: binaries/data/mods/public/maps/skirmishes/alpine_valleys_2p.xml =================================================================== --- binaries/data/mods/public/maps/skirmishes/alpine_valleys_2p.xml +++ binaries/data/mods/public/maps/skirmishes/alpine_valleys_2p.xml @@ -39,6 +39,7 @@ - \ No newline at end of file + Index: binaries/data/mods/public/simulation/components/BiomeManager.js =================================================================== --- binaries/data/mods/public/simulation/components/BiomeManager.js +++ 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 manaager. + * @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); Index: binaries/data/mods/public/simulation/components/BiomeReplacer.js =================================================================== --- binaries/data/mods/public/simulation/components/BiomeReplacer.js +++ 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); Index: binaries/data/mods/public/simulation/components/interfaces/BiomeManager.js =================================================================== --- binaries/data/mods/public/simulation/components/interfaces/BiomeManager.js +++ binaries/data/mods/public/simulation/components/interfaces/BiomeManager.js @@ -0,0 +1 @@ +Engine.RegisterInterface("BiomeManager"); Index: binaries/data/mods/public/simulation/components/interfaces/BiomeReplacer.js =================================================================== --- binaries/data/mods/public/simulation/components/interfaces/BiomeReplacer.js +++ binaries/data/mods/public/simulation/components/interfaces/BiomeReplacer.js @@ -0,0 +1 @@ +Engine.RegisterInterface("BiomeReplacer"); Index: binaries/data/mods/public/simulation/helpers/InitGame.js =================================================================== --- binaries/data/mods/public/simulation/helpers/InitGame.js +++ binaries/data/mods/public/simulation/helpers/InitGame.js @@ -41,6 +41,11 @@ 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) { Index: binaries/data/mods/public/simulation/templates/special/filter/construction.xml =================================================================== --- binaries/data/mods/public/simulation/templates/special/filter/construction.xml +++ binaries/data/mods/public/simulation/templates/special/filter/construction.xml @@ -5,4 +5,5 @@ + Index: binaries/data/mods/public/simulation/templates/special/filter/preview.xml =================================================================== --- binaries/data/mods/public/simulation/templates/special/filter/preview.xml +++ binaries/data/mods/public/simulation/templates/special/filter/preview.xml @@ -1,5 +1,6 @@ + Index: binaries/data/mods/public/simulation/templates/structures/gaul/house.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/gaul/house.xml +++ binaries/data/mods/public/simulation/templates/structures/gaul/house.xml @@ -1,5 +1,13 @@ + + + + generic/alpine + winter + + + gaul Tegia