Index: binaries/data/mods/public/art/actors/structures/gauls/civic_centre.xml
===================================================================
--- binaries/data/mods/public/art/actors/structures/gauls/civic_centre.xml	(revision 18253)
+++ binaries/data/mods/public/art/actors/structures/gauls/civic_centre.xml	(working copy)
@@ -16,7 +16,6 @@
         <prop actor="props/units/weapons/arrow_front.xml" attachpoint="projectile"/>
       </props>
       <textures>
-	    <texture file="structural/celt_struct_1.dds" name="baseTex"/>
 	    <texture file="structural/celt_struct_1_norm.png" name="normTex"/>
 	    <texture file="structural/celt_struct_1_spec.png" name="specTex"/>
 		<texture file="structural/ao/gaul_civic_centre.png" name="aoTex"/>
@@ -24,6 +23,18 @@
     </variant>
   </group>
   <group>
+    <variant name="summer" frequency="1">
+      <textures>
+        <texture file="structural/celt_struct_1.dds" name="baseTex"/>
+	  </textures>
+	</variant>
+    <variant name="winter">
+      <textures>
+        <texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
+	  </textures>
+	</variant>
+  </group>
+  <group>
     <variant frequency="100" name="Idle"/>
     <variant name="garrisoned">
       <props>
Index: binaries/data/mods/public/art/actors/structures/iberians/fireship.xml
===================================================================
--- binaries/data/mods/public/art/actors/structures/iberians/fireship.xml	(revision 18253)
+++ binaries/data/mods/public/art/actors/structures/iberians/fireship.xml	(working copy)
@@ -2,35 +2,59 @@
 <actor version="1">
   <castshadow/>
   <group>
-    <variant frequency="1" name="firea">
+    <variant frequency="1" name="base">
       <mesh>structural/iber_fireship.dae</mesh>
       <props>
         <prop actor="props/structures/iberians/fireship_wood.xml" attachpoint="root"/>
-        <prop actor="particle/flame_med.xml" attachpoint="fire1"/>
-        <prop actor="particle/smoke_med.xml" attachpoint="fire1"/>
-        <prop actor="particle/flame.xml" attachpoint="fire2"/>
-        <prop actor="" attachpoint="fire3"/>
+      </props>
+      <textures><texture file="structural/iber_ship.dds" name="baseTex"/></textures>
+    </variant>
+  </group>
+  <group>
+    <variant name="healthy" frequency="1">
+      <props>
+        <prop actor="particle/flame_jav.xml" attachpoint="fire1"/>
+        <prop actor="particle/smoke_jav.xml" attachpoint="fire1"/>
         <prop actor="particle/flame_jav.xml" attachpoint="fire4"/>
         <prop actor="particle/smoke_jav.xml" attachpoint="fire4"/>
-        <prop actor="particle/flame.xml" attachpoint="fire5"/>
-        <prop actor="particle/smoke_catapult.xml" attachpoint="fire5"/>
       </props>
-      <textures><texture file="structural/iber_ship.dds" name="baseTex"/></textures>
     </variant>
-    <variant frequency="1" name="fireb">
-      <mesh>structural/iber_fireship.dae</mesh>
+    <variant name="lightDamage">
       <props>
-        <prop actor="props/structures/iberians/fireship_wood.xml" attachpoint="root"/>
-        <prop actor="particle/flame_jav.xml" attachpoint="fire1"/>
+        <prop actor="particle/flame.xml" attachpoint="fire1"/>
         <prop actor="particle/smoke.xml" attachpoint="fire1"/>
-        <prop actor="particle/flame.xml" attachpoint="fire2"/>
-        <prop actor="particle/flame_med.xml" attachpoint="fire3"/>
-        <prop actor="particle/smoke_med.xml" attachpoint="fire3"/>
+        <prop actor="particle/flame_jav.xml" attachpoint="fire3"/>
+        <prop actor="particle/smoke_jav.xml" attachpoint="fire3"/>
+        <prop actor="particle/flame.xml" attachpoint="fire4"/>
+        <prop actor="particle/smoke_jav.xml" attachpoint="fire4"/>
+      </props>
+    </variant>
+    <variant name="mediumDamage">
+      <props>
+        <prop actor="particle/flame.xml" attachpoint="fire1"/>
+        <prop actor="particle/smoke.xml" attachpoint="fire1"/>
+        <prop actor="particle/flame_jav.xml" attachpoint="fire2"/>
+        <prop actor="particle/flame.xml" attachpoint="fire3"/>
+        <prop actor="particle/smoke.xml" attachpoint="fire3"/>
+        <prop actor="particle/flame.xml" attachpoint="fire4"/>
+        <prop actor="particle/smoke.xml" attachpoint="fire4"/>
         <prop actor="particle/flame_jav.xml" attachpoint="fire5"/>
-        <prop actor="particle/smoke_jav.xml" attachpoint="fire5"/>
       </props>
-      <textures><texture file="structural/iber_ship.dds" name="baseTex"/></textures>
     </variant>
+    <variant name="heavyDamage">
+      <props>
+        <prop actor="particle/flame_large.xml" attachpoint="fire1"/>
+        <prop actor="particle/smoke_med.xml" attachpoint="fire1"/>
+        <prop actor="particle/flame.xml" attachpoint="fire2"/>
+        <prop actor="particle/flame_large.xml" attachpoint="fire3"/>
+        <prop actor="particle/smoke.xml" attachpoint="fire3"/>
+        <prop actor="particle/flame.xml" attachpoint="fire4"/>
+        <prop actor="particle/flame_large.xml" attachpoint="fire4"/>
+        <prop actor="particle/smoke_med.xml" attachpoint="fire5"/>
+      </props>
+    </variant>
+    <variant name="death">
+    </variant>
   </group>
   <material>player_trans.xml</material>
 </actor>
Index: binaries/data/mods/public/maps/skirmishes/Northern Island (2).xml
===================================================================
--- binaries/data/mods/public/maps/skirmishes/Northern Island (2).xml	(revision 18253)
+++ binaries/data/mods/public/maps/skirmishes/Northern Island (2).xml	(working copy)
@@ -51,7 +51,8 @@
     {}
   ],
   "Preview": "northern_island.png",
-  "RevealMap": false
+  "RevealMap": false,
+  "Season": "winter"
 }
 ]]></ScriptSettings>
 	<Entities>
@@ -6724,4 +6725,4 @@
 		</Entity>
 	</Entities>
 	<Paths/>
-</Scenario>
\ No newline at end of file
+</Scenario>
Index: binaries/data/mods/public/simulation/components/SeasonManager.js
===================================================================
--- binaries/data/mods/public/simulation/components/SeasonManager.js	(nonexistent)
+++ binaries/data/mods/public/simulation/components/SeasonManager.js	(working copy)
@@ -0,0 +1,23 @@
+function SeasonManager() {}
+
+SeasonManager.prototype.Schema =
+	"<a:component type='system'/><empty/>";
+
+SeasonManager.prototype.Init = function()
+{
+	this.season = "summer";
+};
+
+SeasonManager.prototype.SetSeason = function(season)
+{
+	this.season = season;
+	Engine.BroadcastMessage(MT_SeasonChanged, { "newSeason": season });
+};
+
+SeasonManager.prototype.GetSeason = function()
+{
+	return this.season;
+};
+
+
+Engine.RegisterSystemComponentType(IID_SeasonManager, "SeasonManager", SeasonManager);
Index: binaries/data/mods/public/simulation/components/VariantSelection.js
===================================================================
--- binaries/data/mods/public/simulation/components/VariantSelection.js	(nonexistent)
+++ binaries/data/mods/public/simulation/components/VariantSelection.js	(working copy)
@@ -0,0 +1,85 @@
+function VariantSelection() {}
+
+VariantSelection.prototype.Schema =
+	"<a:example>" +
+		"<HealthVariants>" +
+			"<LightDamage>0.75</LightDamage>" +
+			"<MediumDamage>0.50</MediumDamage>" +
+			"<HeavyDamage>0.25</HeavyDamage>" +
+		"</HealthVariants>" +
+	"</a:example>" +
+	"<optional>" +
+		"<element name='HealthVariants'>" +
+			"<oneOrMore>" +
+				"<element>" +
+					"<anyName/>" +
+					"<data type='decimal'>" +
+						"<param name='minInclusive'>0</param>" +
+						"<param name='maxInclusive'>1</param>" +
+					"</data>" +
+				"</element>" +
+			"</oneOrMore>" +
+		"</element>" +
+	"</optional>";
+
+VariantSelection.prototype.Init = function()
+{
+	this.currentSelection = {
+		"health": "healthy",
+	};
+};
+
+VariantSelection.prototype.OnSeasonChanged = function(msg)
+{
+	let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
+	if (cmpVisual)
+		cmpVisual.SetVariantSelection("season", msg.newSeason);
+};
+
+VariantSelection.prototype.OnOwnershipChanged = function(msg)
+{
+	if (msg.from != -1)
+		return;
+	let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
+	let cmpSeasonManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_SeasonManager);
+	if (cmpVisual)
+		cmpVisual.SetVariantSelection("season", cmpSeasonManager.GetSeason());
+};
+
+VariantSelection.prototype.OnHealthChanged = function(msg)
+{
+	if (!this.template || !this.template.HealthVariants)
+		return;
+
+	let cmpHealth = Engine.QueryInterface(this.entity, IID_Health);
+	if (!cmpHealth)
+		return;
+
+	let healthRatio = cmpHealth.GetHitpoints() / cmpHealth.GetMaxHitpoints();
+
+	let oldSelection = this.currentSelection.health
+	if (healthRatio > 0)
+	{
+		this.currentSelection.health = "healthy";
+		for (let key in this.template.HealthVariants)
+		{
+			if (+this.template.HealthVariants[key] < healthRatio)
+				continue;
+			if (this.currentSelection.health == "healthy" ||
+				+this.template.HealthVariants[key] < +this.template.HealthVariants[this.currentSelection])
+				this.currentSelection.health = key;
+		}
+	}
+	else
+		this.currentSelection.health = "death"
+
+	if (oldSelection == this.currentSelection.health)
+		return;
+	let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
+	if (cmpVisual)
+		cmpVisual.SetVariantSelection("health", this.currentSelection.health);
+		
+};
+
+Engine.RegisterComponentType(IID_VariantSelection, "VariantSelection", VariantSelection);
+
Index: binaries/data/mods/public/simulation/components/interfaces/SeasonManager.js
===================================================================
--- binaries/data/mods/public/simulation/components/interfaces/SeasonManager.js	(nonexistent)
+++ binaries/data/mods/public/simulation/components/interfaces/SeasonManager.js	(working copy)
@@ -0,0 +1,2 @@
+Engine.RegisterInterface("SeasonManager");
+Engine.RegisterMessageType("SeasonChanged");
Index: binaries/data/mods/public/simulation/components/interfaces/VariantSelection.js
===================================================================
--- binaries/data/mods/public/simulation/components/interfaces/VariantSelection.js	(nonexistent)
+++ binaries/data/mods/public/simulation/components/interfaces/VariantSelection.js	(working copy)
@@ -0,0 +1,2 @@
+Engine.RegisterInterface("VariantSelection");
+
Index: binaries/data/mods/public/simulation/helpers/InitGame.js
===================================================================
--- binaries/data/mods/public/simulation/helpers/InitGame.js	(revision 18253)
+++ binaries/data/mods/public/simulation/helpers/InitGame.js	(working copy)
@@ -42,6 +42,12 @@
 			cmpRangeManager.ExploreAllTiles(i);
 	}
 
+	if (settings.Season)
+	{
+		let cmpSeasonManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_SeasonManager);
+		cmpSeasonManager.SetSeason(settings.Season);
+	}
+
 	// Sandbox, Very Easy, Easy, Medium, Hard, Very Hard
 	let rate = [ 0.50, 0.64, 0.80, 1.00, 1.25, 1.56 ];
 	let cmpPlayerManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_PlayerManager);
Index: binaries/data/mods/public/simulation/templates/structures/gaul_civil_centre.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/gaul_civil_centre.xml	(revision 18253)
+++ binaries/data/mods/public/simulation/templates/structures/gaul_civil_centre.xml	(working copy)
@@ -22,6 +22,7 @@
       units/{civ}_cavalry_javelinist_b
     </Entities>
   </ProductionQueue>
+  <VariantSelection/>
   <VisualActor>
     <Actor>structures/gauls/civic_centre.xml</Actor>
   </VisualActor>
Index: binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fire.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fire.xml	(revision 18253)
+++ binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_fire.xml	(working copy)
@@ -30,6 +30,13 @@
     <Max>500</Max>
     <RegenRate>-3</RegenRate>
   </Health>
+  <VariantSelection>
+    <HealthVariants>
+      <lightdamage>0.85</lightdamage>
+      <mediumdamage>0.65</mediumdamage>
+      <heavydamage>0.35</heavydamage>
+    </HealthVariants>
+  </VariantSelection>
   <Identity>
     <GenericName>Fire Ship</GenericName>
     <Classes datatype="tokens">Warship Fireship Melee</Classes>
