Index: binaries/data/mods/public/simulation/components/Attack.js =================================================================== --- binaries/data/mods/public/simulation/components/Attack.js +++ binaries/data/mods/public/simulation/components/Attack.js @@ -93,11 +93,13 @@ "0.0" + "0.0" + "" + + "1000" + "4.0" + "" + "" + - "" + - "" + + "" + + "" + + "" + "" + "" + "" + @@ -109,33 +111,11 @@ "" + Attacking.BuildAttackEffectsSchema() + "" + - "" + - "" + - "" + - "" + // TODO: it shouldn't be stretched - "" + - "" + - Attack.prototype.preferredClassesSchema + - Attack.prototype.restrictedClassesSchema + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - Attacking.BuildAttackEffectsSchema() + - "" + - "" + + "" + + "" + + "" + ""+ - "" + + "" + "" + "" + "" + @@ -146,13 +126,17 @@ "" + "" + "" + - "" + - "" + - "" + - "" + + "" + + "" + + "" + + "" + + "" + + "" + // TODO: it shouldn't be stretched "" + "" + - "" + + "" + + "" + + "" + "" + "" + "" + @@ -163,82 +147,45 @@ "" + "" + "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + + "" + + "" + + "" + + "" + "" + "" + - "" + - "" + - "" + - Attack.prototype.preferredClassesSchema + - Attack.prototype.restrictedClassesSchema + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - Attacking.BuildAttackEffectsSchema() + - "" + - "" + // TODO: it shouldn't be stretched - "" + - "" + - Attack.prototype.preferredClassesSchema + - Attack.prototype.restrictedClassesSchema + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - "" + - Attacking.BuildAttackEffectsSchema() + - "" + // TODO: how do these work? + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + Attack.prototype.preferredClassesSchema + Attack.prototype.restrictedClassesSchema + "" + "" + - ""; + ""; Attack.prototype.Init = function() { @@ -502,18 +449,31 @@ */ Attack.prototype.PerformAttack = function(type, target) { - let attackerOwner = Engine.QueryInterface(this.entity, IID_Ownership).GetOwner(); + let cmpPosition = Engine.QueryInterface(this.entity, IID_Position); + if (!cmpPosition || !cmpPosition.IsInWorld()) + return; + let selfPosition = cmpPosition.GetPosition(); + + let cmpTargetPosition = Engine.QueryInterface(target, IID_Position); + if (!cmpTargetPosition || !cmpTargetPosition.IsInWorld()) + return; + let targetPosition = cmpTargetPosition.GetPosition(); + + let cmpOwnership = Engine.QueryInterface(this.entity, IID_Ownership); + if (!cmpOwnership) + return; + let attackerOwner = cmpOwnership.GetOwner(); let data = { "type": type, "attackData": this.GetAttackEffectsData(type), - "target": target, + "splash": this.GetSplashData(type), "attacker": this.entity, "attackerOwner": attackerOwner, + "target": target, }; - // If this is a ranged attack, then launch a projectile - if (type == "Ranged") + if (this.template[type].Projectile) { let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); let turnLength = cmpTimer.GetLatestTurnLength()/1000; @@ -528,15 +488,6 @@ // We will try to estimate the position of the target, where we can hit it. // We first estimate the time-till-hit by extrapolating linearly the movement // of the last turn. We compute the time till an arrow will intersect the target. - let cmpPosition = Engine.QueryInterface(this.entity, IID_Position); - if (!cmpPosition || !cmpPosition.IsInWorld()) - return; - let selfPosition = cmpPosition.GetPosition(); - let cmpTargetPosition = Engine.QueryInterface(target, IID_Position); - if (!cmpTargetPosition || !cmpTargetPosition.IsInWorld()) - return; - let targetPosition = cmpTargetPosition.GetPosition(); - let targetVelocity = Vector3D.sub(targetPosition, cmpTargetPosition.GetPreviousPosition()).div(turnLength); let timeToTarget = PositionHelper.PredictTimeToTarget(selfPosition, horizSpeed, targetPosition, targetVelocity); @@ -571,31 +522,23 @@ let predictedHeight = cmpTargetPosition.GetHeightAt(predictedPosition.x, predictedPosition.z); // Add inaccuracy based on spread. - let distanceModifiedSpread = ApplyValueModificationsToEntity("Attack/Ranged/Spread", +this.template[type].Projectile.Spread, this.entity) * + let distanceModifiedSpread = ApplyValueModificationsToEntity("Attack/" + type + "/Spread", +this.template[type].Projectile.Spread, this.entity) * predictedPosition.horizDistanceTo(selfPosition) / 100; let randNorm = randomNormal2D(); let offsetX = randNorm[0] * distanceModifiedSpread; let offsetZ = randNorm[1] * distanceModifiedSpread; - let realTargetPosition = new Vector3D(predictedPosition.x + offsetX, predictedHeight, predictedPosition.z + offsetZ); + data.position = new Vector3D(predictedPosition.x + offsetX, predictedHeight, predictedPosition.z + offsetZ); - // Recalculate when the missile will hit the target position. - let realHorizDistance = realTargetPosition.horizDistanceTo(selfPosition); + let realHorizDistance = data.position.horizDistanceTo(selfPosition); timeToTarget = realHorizDistance / horizSpeed; - let missileDirection = Vector3D.sub(realTargetPosition, selfPosition).div(realHorizDistance); - - // Launch the graphical projectile. - let cmpProjectileManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_ProjectileManager); + data.direction = Vector3D.sub(data.position, selfPosition).div(realHorizDistance); - let actorName = ""; - let impactActorName = ""; - let impactAnimationLifetime = 0; - - actorName = this.template[type].Projectile.ActorName || ""; - impactActorName = this.template[type].Projectile.ImpactActorName || ""; - impactAnimationLifetime = this.template[type].Projectile.ImpactAnimationLifetime || 0; + let actorName = this.template[type].Projectile.ActorName || ""; + let impactActorName = this.template[type].Projectile.ImpactActorName || ""; + let impactAnimationLifetime = this.template[type].Projectile.ImpactAnimationLifetime || 0; // TODO: Use unit rotation to implement x/z offsets. let deltaLaunchPoint = new Vector3D(0, +this.template[type].Projectile.LaunchPoint["@y"], 0); @@ -614,24 +557,28 @@ launchPoint = visualActorLaunchPoint; } - let id = cmpProjectileManager.LaunchProjectileAtPoint(launchPoint, realTargetPosition, horizSpeed, gravity, actorName, impactActorName, impactAnimationLifetime); + let cmpProjectileManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_ProjectileManager); + data.projectileId = cmpProjectileManager.LaunchProjectileAtPoint(launchPoint, data.position, horizSpeed, gravity, actorName, impactActorName, impactAnimationLifetime); - let attackImpactSound = ""; let cmpSound = Engine.QueryInterface(this.entity, IID_Sound); - if (cmpSound) - attackImpactSound = cmpSound.GetSoundGroup("attack_impact_" + type.toLowerCase()); + data.attackImpactSound = cmpSound ? cmpSound.GetSoundGroup("attack_impact_" + type.toLowerCase()) : ""; - data.position = realTargetPosition; - data.direction = missileDirection; - data.projectileId = id; - data.attackImpactSound = attackImpactSound; - data.splash = this.GetSplashData(type); data.friendlyFire = this.template[type].Projectile.FriendlyFire == "true"; - cmpTimer.SetTimeout(SYSTEM_ENTITY, IID_DelayedDamage, "MissileHit", +this.template[type].Delay + timeToTarget * 1000, data); + cmpTimer.SetTimeout(SYSTEM_ENTITY, IID_DelayedDamage, "MissileHit", +(this.template[type].Delay || 0) + timeToTarget * 1000, data); } else - Attacking.HandleAttackEffects(target, data); + { + data.position = targetPosition; + data.direction = Vector3D.sub(targetPosition, selfPosition); + if (this.template[type].Delay) + { + let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); + cmpTimer.SetTimeout(SYSTEM_ENTITY, IID_DelayedDamage, "CauseAttackEffects", +(this.template[type].Delay || 0), data); + } + else + Engine.QueryInterface(SYSTEM_ENTITY, IID_DelayedDamage).CauseAttackEffects(data, 0); + } }; Attack.prototype.OnValueModification = function(msg) @@ -648,20 +595,20 @@ cmpUnitAI.UpdateRangeQueries(); }; -Attack.prototype.GetRangeOverlays = function() +Attack.prototype.GetRangeOverlays = function(type = "Ranged") { - if (!this.template.Ranged || !this.template.Ranged.RangeOverlay) + if (!this.template[type] || !this.template[type].RangeOverlay) return []; - let range = this.GetRange("Ranged"); + let range = this.GetRange(type); let rangeOverlays = []; for (let i in range) if ((i == "min" || i == "max") && range[i]) rangeOverlays.push({ "radius": range[i], - "texture": this.template.Ranged.RangeOverlay.LineTexture, - "textureMask": this.template.Ranged.RangeOverlay.LineTextureMask, - "thickness": +this.template.Ranged.RangeOverlay.LineThickness, + "texture": this.template[type].RangeOverlay.LineTexture, + "textureMask": this.template[type].RangeOverlay.LineTextureMask, + "thickness": +this.template[type].RangeOverlay.LineThickness, }); return rangeOverlays; }; Index: binaries/data/mods/public/simulation/components/DelayedDamage.js =================================================================== --- binaries/data/mods/public/simulation/components/DelayedDamage.js +++ binaries/data/mods/public/simulation/components/DelayedDamage.js @@ -89,4 +89,48 @@ } }; +/** + * Handles damage caused by non projectile attack. + * @param {Object} data - The data sent by the caller. + * @param {string} data.type - The type of damage. + * @param {Object} data.attackData - Data of the form { 'effectType': { ...opaque effect data... }, 'Bonuses': {...} }. + * @param {number} data.target - The entity id of the target. + * @param {number} data.attacker - The entity id of the attacker. + * @param {number} data.attackerOwner - The player id of the owner of the attacker. + * @param {Vector3D} data.position - The expected position of the target. + * @param {Vector3D} data.direction - The unit vector defining the direction. + * @param {boolean} data.friendlyFire - A flag indicating whether allied entities can also be damaged. + * ***When splash damage*** + * @param {boolean} data.splash.friendlyFire - A flag indicating if allied entities are also damaged. + * @param {number} data.splash.radius - The radius of the splash damage. + * @param {string} data.splash.shape - The shape of the splash range. + * @param {Object} data.splash.attackData - same as attackData, for splash. + */ +DelayedDamage.prototype.CauseAttackEffects = function(data, lateness) +{ + if (!data.position) + return; + + if (data.splash) + Attacking.CauseDamageOverArea({ + "type": data.type, + "attackData": data.splash.attackData, + "attacker": data.attacker, + "attackerOwner": data.attackerOwner, + "origin": Vector2D.from3D(data.position), + "radius": data.splash.radius, + "shape": data.splash.shape, + "direction": data.direction, + "friendlyFire": data.splash.friendlyFire + }); + + let target = data.target; + // Since we can't damage mirages, replace a miraged target by the real target. + let cmpMirage = Engine.QueryInterface(data.target, IID_Mirage); + if (cmpMirage) + target = cmpMirage.GetParent(); + + Attacking.HandleAttackEffects(target, data); +}; + Engine.RegisterSystemComponentType(IID_DelayedDamage, "DelayedDamage", DelayedDamage); Index: binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml =================================================================== --- binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml +++ binaries/data/mods/public/simulation/templates/structures/rome/army_camp.xml @@ -7,10 +7,8 @@ 25 60 - 0 1200 2000 - 0 100 1.5 Index: binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml +++ binaries/data/mods/public/simulation/templates/template_structure_civic_civil_centre.xml @@ -13,10 +13,8 @@ 12 60 - 0 1200 2000 - 0 100 1.5 Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_tower.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_defensive_tower.xml +++ binaries/data/mods/public/simulation/templates/template_structure_defensive_tower.xml @@ -7,7 +7,6 @@ 10 1200 2000 - 0 100 1.5 Index: binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml +++ binaries/data/mods/public/simulation/templates/template_structure_military_fortress.xml @@ -7,10 +7,8 @@ 16 60 - 0 1200 2000 - 0 100 1.5 Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml +++ binaries/data/mods/public/simulation/templates/template_unit_cavalry.xml @@ -14,6 +14,8 @@ 1000 2 + 1000 + !Domestic Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_archer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_archer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_archer.xml @@ -7,10 +7,8 @@ 7 60 - 0 500 1000 - 0 100 2 Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_crossbowman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_crossbowman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_crossbowman.xml @@ -7,10 +7,8 @@ 20 60 - 0 2400 3000 - 0 120 2 Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_javelineer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_javelineer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged_javelineer.xml @@ -7,10 +7,8 @@ 18 30 - 0 750 1250 - 0 70 4 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_archer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_archer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_archer.xml @@ -7,10 +7,8 @@ 14 60 - 0 500 1000 - 0 100 0.8 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_crossbowman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_crossbowman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_crossbowman.xml @@ -7,10 +7,8 @@ 40 60 - 0 2400 3000 - 0 120 0.8 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_javelineer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_javelineer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_javelineer.xml @@ -7,10 +7,8 @@ 36 30 - 0 750 1250 - 0 70 1.6 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml @@ -7,10 +7,8 @@ 13.5 60 - 0 500 1000 - 0 100 0.8 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_crossbowman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_crossbowman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_crossbowman.xml @@ -7,10 +7,8 @@ 40 60 - 0 2400 3000 - 0 120 0.8 Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelineer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelineer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelineer.xml @@ -7,10 +7,8 @@ 26 30 - 0 500 1000 - 0 70 1.6 Index: binaries/data/mods/public/simulation/templates/template_unit_elephant_archer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_elephant_archer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_elephant_archer.xml @@ -7,10 +7,8 @@ 14 60 - 0 500 1000 - 0 100 2 Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_archer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_archer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_archer.xml @@ -7,10 +7,8 @@ 28 60 - 0 500 1000 - 0 100 0.4 Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_crossbowman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_crossbowman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_crossbowman.xml @@ -7,10 +7,8 @@ 80 60 - 0 2400 3000 - 0 120 0.4 Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelineer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelineer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelineer.xml @@ -7,10 +7,8 @@ 60 30 - 0 750 1250 - 0 70 0.8 Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_archer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_archer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_archer.xml @@ -7,10 +7,8 @@ 27 60 - 0 500 1000 - 0 100 0.4 Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_crossbowman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_crossbowman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_crossbowman.xml @@ -7,10 +7,8 @@ 80 60 - 0 2400 3000 - 0 120 0.4 Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_javelineer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_javelineer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_javelineer.xml @@ -7,10 +7,8 @@ 50 30 - 0 600 1000 - 0 70 0.8 Index: binaries/data/mods/public/simulation/templates/template_unit_infantry.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry.xml @@ -14,6 +14,8 @@ 1000 2 + 1000 + !Domestic Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_archer.xml @@ -7,10 +7,8 @@ 6.7 60 - 0 500 1000 - 0 100 2 Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_crossbowman.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_crossbowman.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_crossbowman.xml @@ -7,10 +7,8 @@ 20 60 - 0 2400 3000 - 0 120 2 Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelineer.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelineer.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelineer.xml @@ -7,10 +7,8 @@ 16 30 - 0 750 1250 - 0 70 4 Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml +++ binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_slinger.xml @@ -8,10 +8,8 @@ 1.1 45 - 0 750 1250 - 0 90 3 Index: binaries/data/mods/public/simulation/templates/template_unit_ship_bireme.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_ship_bireme.xml +++ binaries/data/mods/public/simulation/templates/template_unit_ship_bireme.xml @@ -7,10 +7,8 @@ 35 45 - 0 1000 2000 - 0 100 2 Index: binaries/data/mods/public/simulation/templates/template_unit_ship_quinquereme.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_ship_quinquereme.xml +++ binaries/data/mods/public/simulation/templates/template_unit_ship_quinquereme.xml @@ -10,7 +10,6 @@ 40 2000 5000 - 0 40 6 Index: binaries/data/mods/public/simulation/templates/template_unit_ship_trireme.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_ship_trireme.xml +++ binaries/data/mods/public/simulation/templates/template_unit_ship_trireme.xml @@ -7,10 +7,8 @@ 35 55 - 0 1000 2000 - 0 100 2 Index: binaries/data/mods/public/simulation/templates/template_unit_siege_boltshooter.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_siege_boltshooter.xml +++ binaries/data/mods/public/simulation/templates/template_unit_siege_boltshooter.xml @@ -10,7 +10,6 @@ 15 5000 6000 - 0 150 1 Index: binaries/data/mods/public/simulation/templates/template_unit_siege_stonethrower.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_siege_stonethrower.xml +++ binaries/data/mods/public/simulation/templates/template_unit_siege_stonethrower.xml @@ -10,7 +10,6 @@ 40 6000 7000 - 0 40 6 Index: binaries/data/mods/public/simulation/templates/template_unit_siege_tower.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_siege_tower.xml +++ binaries/data/mods/public/simulation/templates/template_unit_siege_tower.xml @@ -12,7 +12,6 @@ 10 1200 2000 - 0 100 2 Index: binaries/data/mods/public/simulation/templates/template_unit_support_female_citizen.xml =================================================================== --- binaries/data/mods/public/simulation/templates/template_unit_support_female_citizen.xml +++ binaries/data/mods/public/simulation/templates/template_unit_support_female_citizen.xml @@ -16,6 +16,8 @@ 1000 2 + 1000 + !Domestic Index: binaries/data/mods/public/simulation/templates/units/plane.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/plane.xml +++ binaries/data/mods/public/simulation/templates/units/plane.xml @@ -11,7 +11,6 @@ 80 0 10000 - 0 75 1 Index: binaries/data/mods/public/simulation/templates/units/theb_siege_fireraiser.xml =================================================================== --- binaries/data/mods/public/simulation/templates/units/theb_siege_fireraiser.xml +++ binaries/data/mods/public/simulation/templates/units/theb_siege_fireraiser.xml @@ -10,7 +10,6 @@ 10 2000 2000 - 0 10 2