Index: binaries/data/mods/public/globalscripts/Templates.js
===================================================================
--- binaries/data/mods/public/globalscripts/Templates.js
+++ binaries/data/mods/public/globalscripts/Templates.js
@@ -160,12 +160,33 @@
let ret = {};
- if (template.Armour)
+ if (template.Resistance)
{
- ret.armour = {};
- for (let damageType in template.Armour)
- if (damageType != "Foundation")
- ret.armour[damageType] = getEntityValue("Armour/" + damageType);
+ ret.resistance = {};
+ for (let resistanceType in template.Resistance)
+ {
+ if (resistanceType != "Foundation")
+ {
+ if (template.Resistance[resistanceType].Damage)
+ {
+ if (!ret.resistance.Damage)
+ ret.resistance.Damage = {};
+ for (let damageType in template.Resistance[resistanceType].Damage)
+ {
+ if (!ret.resistance.Damage[damageType])
+ ret.resistance.Damage[damageType] = 0;
+ ret.resistance.Damage[damageType] += getEntityValue("Resistance/" + resistanceType + "/Damage/" + damageType);
+ }
+ }
+ if (template.Resistance[resistanceType].Capture)
+ {
+ if (!ret.resistance.Capture)
+ ret.resistance.Capture = 0;
+ ret.resistance.Capture += getEntityValue("Resistance/" + resistanceType + "/Capture");
+ }
+ }
+
+ }
}
let getAttackEffects = (temp, path) => {
Index: binaries/data/mods/public/gui/common/tooltips.js
===================================================================
--- binaries/data/mods/public/gui/common/tooltips.js
+++ binaries/data/mods/public/gui/common/tooltips.js
@@ -152,35 +152,67 @@
}
/**
- * Converts an armor level into the actual reduction percentage
+ * Converts an resistance level into the actual reduction percentage
*/
-function armorLevelToPercentageString(level)
+function resistanceLevelToPercentageString(level)
{
return sprintf(translate("%(percentage)s%%"), {
"percentage": (100 - Math.round(Math.pow(0.9, level) * 100))
});
}
-function getArmorTooltip(template)
+function getResistanceTooltip(template)
{
- if (!template.armour)
+ if (!template.resistance)
return "";
+ let tooltips = [];
- return sprintf(translate("%(label)s %(details)s"), {
- "label": headerFont(translate("Armor:")),
- "details":
- Object.keys(template.armour).map(
- dmgType => sprintf(translate("%(damage)s %(damageType)s %(armorPercentage)s"), {
- "damage": template.armour[dmgType].toFixed(1),
- "damageType": unitFont(translateWithContext("damage type", dmgType)),
- "armorPercentage":
+ if (template.resistance.Damage)
+ tooltips.push(sprintf(translate("%(label)s %(details)s"), {
+ "label": headerFont(translate("Damage Resistance:")),
+ "details":
+ Object.keys(template.resistance.Damage).map(
+ dmgType => sprintf(translate("%(damage)s %(damageType)s %(resistancePercentage)s"), {
+ "damage": template.resistance.Damage[dmgType].toFixed(1),
+ "damageType": unitFont(translateWithContext("damage type", dmgType)),
+ "resistancePercentage":
+ '[font="sans-10"]' +
+ sprintf(translate("(%(resistancePercentage)s)"), {
+ "resistancePercentage": resistanceLevelToPercentageString(template.resistance.Damage[dmgType])
+ }) + '[/font]'
+ })
+ ).join(commaFont(translate(", ")))
+ }));
+ if (template.resistance.Capture)
+ tooltips.push(sprintf(translate("%(label)s %(details)s"), {
+ "label": headerFont(translate("Capture Resistance:")),
+ "details":
+ sprintf(translate("%(damage)s %(damageType)s %(resistancePercentage)s"), {
+ "damage": template.resistance.Capture.toFixed(1),
+ "damageType": unitFont(translateWithContext("damage type", "Capture")),
+ "resistancePercentage":
'[font="sans-10"]' +
- sprintf(translate("(%(armorPercentage)s)"), {
- "armorPercentage": armorLevelToPercentageString(template.armour[dmgType])
+ sprintf(translate("(%(resistancePercentage)s)"), {
+ "resistancePercentage": resistanceLevelToPercentageString(template.resistance.Capture)
}) + '[/font]'
})
- ).join(commaFont(translate(", ")))
- });
+ }));
+ if (template.resistance.StatusEffects)
+ tooltips.push(sprintf(translate("%(label)s %(details)s"), {
+ "label": headerFont(translate("Status Effects Resistance:")),
+ "details": "ToDo."
+ //sprintf(translate("%(damage)s %(damageType)s %(resistancePercentage)s"), {
+ // "damage": template.resistance.Capture.toFixed(1),
+ // "damageType": unitFont(translateWithContext("damage type", "Capture")),
+ // "resistancePercentage":
+ // '[font="sans-10"]' +
+ // sprintf(translate("(%(resistancePercentage)s)"), {
+ // "resistancePercentage": resistanceLevelToPercentageString(template.resistance.Capture)
+ // }) + '[/font]'
+ //})
+ }));
+
+ return tooltips.join("\n");
}
function attackRateDetails(interval, projectiles)
Index: binaries/data/mods/public/gui/reference/common/draw.js
===================================================================
--- binaries/data/mods/public/gui/reference/common/draw.js
+++ binaries/data/mods/public/gui/reference/common/draw.js
@@ -14,7 +14,7 @@
getHealerTooltip,
getAttackTooltip,
getSplashDamageTooltip,
- getArmorTooltip,
+ getResistanceTooltip,
getGarrisonTooltip,
getProjectilesTooltip,
getSpeedTooltip,
Index: binaries/data/mods/public/gui/reference/common/load.js
===================================================================
--- binaries/data/mods/public/gui/reference/common/load.js
+++ binaries/data/mods/public/gui/reference/common/load.js
@@ -140,9 +140,9 @@
if (!parsed.upgrades)
parsed.upgrades = [];
- // Note: An assumption is made here that wall segments all have the same armor and auras
+ // Note: An assumption is made here that wall segments all have the same resistance and auras
let struct = loadEntityTemplate(parsed.wallSet.templates.long);
- parsed.armour = struct.armour;
+ parsed.resistance = struct.resistance;
parsed.auras = struct.auras;
// For technology cost multiplier, we need to use the tower
Index: binaries/data/mods/public/gui/session/selection_details.js
===================================================================
--- binaries/data/mods/public/gui/session/selection_details.js
+++ binaries/data/mods/public/gui/session/selection_details.js
@@ -283,11 +283,11 @@
showTemplateDetails(entState.template);
};
- Engine.GetGUIObjectByName("attackAndArmorStats").tooltip = [
+ Engine.GetGUIObjectByName("attackAndResistanceStats").tooltip = [
getAttackTooltip,
getSplashDamageTooltip,
getHealerTooltip,
- getArmorTooltip,
+ getResistanceTooltip,
getGatherTooltip,
getSpeedTooltip,
getGarrisonTooltip,
Index: binaries/data/mods/public/gui/session/selection_panels.js
===================================================================
--- binaries/data/mods/public/gui/session/selection_panels.js
+++ binaries/data/mods/public/gui/session/selection_panels.js
@@ -983,7 +983,7 @@
getAttackTooltip,
getSplashDamageTooltip,
getHealerTooltip,
- getArmorTooltip,
+ getResistanceTooltip,
getGarrisonTooltip,
getProjectilesTooltip,
getSpeedTooltip
Index: binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
===================================================================
--- binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
+++ binaries/data/mods/public/gui/session/selection_panels_middle/single_details_area.xml
@@ -55,9 +55,9 @@
-
+
Index: binaries/data/mods/public/gui/session/session.js
===================================================================
--- binaries/data/mods/public/gui/session/session.js
+++ binaries/data/mods/public/gui/session/session.js
@@ -1075,7 +1075,7 @@
getPanelEntNameTooltip,
getCurrentHealthTooltip,
getAttackTooltip,
- getArmorTooltip,
+ getResistanceTooltip,
getEntityTooltip,
getAurasTooltip
].map(tooltip => tooltip(panelEntState)).filter(tip => tip).join("\n");
Index: binaries/data/mods/public/maps/random/polar_sea_triggers.js
===================================================================
--- binaries/data/mods/public/maps/random/polar_sea_triggers.js
+++ binaries/data/mods/public/maps/random/polar_sea_triggers.js
@@ -51,7 +51,7 @@
continue;
// The returned entities are sorted by RangeManager already
- let targets = Attacking.EntitiesNearPoint(attackerPos, 200, players).filter(ent => {
+ let targets = Attacking.EntitiesNearPoint(attackerPos, 0, 200, players).filter(ent => {
let cmpIdentity = Engine.QueryInterface(ent, IID_Identity);
return cmpIdentity && MatchesClassList(cmpIdentity.GetClassesList(), targetClasses);
});
Index: binaries/data/mods/public/simulation/ai/common-api/entity.js
===================================================================
--- binaries/data/mods/public/simulation/ai/common-api/entity.js
+++ binaries/data/mods/public/simulation/ai/common-api/entity.js
@@ -197,17 +197,41 @@
"getPopulationBonus": function() { return +this.get("Cost/PopulationBonus"); },
- "armourStrengths": function() {
- let armourDamageTypes = this.get("Armour");
- if (!armourDamageTypes)
+ "resistanceStrengths": function() {
+ let resistanceDamageTypes = this.get("Resistance");
+ if (!resistanceDamageTypes)
return undefined;
- let armour = {};
- for (let damageType in armourDamageTypes)
- if (damageType != "Foundation")
- armour[damageType] = +armourDamageTypes[damageType];
+ let resistance = {};
+ let effectTypes = ["Damage", "Capture"];
+ for (let effectType of effectTypes)
+ for (let resistanceType in resistanceDamageTypes)
+ {
+ let template = resistanceDamageTypes[resistanceType][effectType];
+ if (template)
+ {
+ if (effectType == "Capture")
+ {
+ if (!resistance.Capture)
+ resistance.Capture = 0;
+ resistance.Capture += +this.get("Resistance/" + resistanceType + "/Capture");
+ }
+ else if (effectType == "Damage")
+ {
+ if (!resistance.Damage)
+ resistance.Damage = {};
+ for (let damageType in template)
+ {
+ if (!resistance.Damage[damageType])
+ resistance.Damage[damageType] = 0;
+ resistance.Damage[damageType] += +this.get("Resistance/" + resistanceType + "/Damage/" + damageType);
+ }
+ }
+ }
+
+ }
- return armour;
+ return resistance;
},
"attackTypes": function() {
Index: binaries/data/mods/public/simulation/ai/petra/entityExtend.js
===================================================================
--- binaries/data/mods/public/simulation/ai/petra/entityExtend.js
+++ binaries/data/mods/public/simulation/ai/petra/entityExtend.js
@@ -52,14 +52,18 @@
}
}
- let armourStrength = ent.armourStrengths();
- for (let str in armourStrength)
+ let resistanceStrength = ent.resistanceStrengths();
+ for (let effectType in resistanceStrength)
{
- let val = parseFloat(armourStrength[str]);
- if (DamageTypeImportance[str])
- strength += DamageTypeImportance[str] * val / damageTypes.length;
- else if (debugLevel > 0)
- API3.warn("Petra: " + str + " unknown armourStrength in getMaxStrength (please add " + str + " to config.js).");
+ if (effectType == "Damage")
+ for (let str in resistanceStrength[effectType])
+ {
+ let val = parseFloat(resistanceStrength[effectType][str]);
+ if (DamageTypeImportance[str])
+ strength += DamageTypeImportance[str] * val / damageTypes.length;
+ else if (debugLevel > 0)
+ API3.warn("Petra: " + str + " unknown resistanceStrength in getMaxStrength (please add " + str + " to config.js).");
+ }
}
return strength * ent.maxHitpoints() / 100.0;
Index: binaries/data/mods/public/simulation/components/Armour.js
===================================================================
--- binaries/data/mods/public/simulation/components/Armour.js
+++ binaries/data/mods/public/simulation/components/Armour.js
@@ -1,73 +0,0 @@
-function Armour() {}
-
-Armour.prototype.DamageResistanceSchema = "" +
- "" +
- "" +
- "" +
- "Foundation" +
- "" +
- "" +
- "" +
- "";
-
-Armour.prototype.Schema =
- "Controls the damage resistance of the unit." +
- "" +
- "10.0" +
- "0.0" +
- "5.0" +
- "" +
- Armour.prototype.DamageResistanceSchema +
- "" +
- "" +
- Armour.prototype.DamageResistanceSchema +
- "" +
- "";
-
-Armour.prototype.Init = function()
-{
- this.invulnerable = false;
-};
-
-Armour.prototype.IsInvulnerable = function()
-{
- return this.invulnerable;
-};
-
-Armour.prototype.SetInvulnerability = function(invulnerability)
-{
- this.invulnerable = invulnerability;
- Engine.PostMessage(this.entity, MT_InvulnerabilityChanged, { "entity": this.entity, "invulnerability": invulnerability });
-};
-
-Armour.prototype.GetArmourStrengths = function(effectType)
-{
- // Work out the armour values with technology effects.
- let applyMods = (type, foundation) => {
- let strength;
- if (foundation)
- {
- strength = +this.template.Foundation[type];
- type = "Foundation/" + type;
- }
- else
- strength = +this.template[type];
-
- return ApplyValueModificationsToEntity("Armour/" + type, strength, this.entity);
- };
-
- let foundation = Engine.QueryInterface(this.entity, IID_Foundation) && this.template.Foundation;
-
- let ret = {};
-
- if (effectType != "Damage")
- return ret;
-
- for (let damageType in this.template)
- if (damageType != "Foundation")
- ret[damageType] = applyMods(damageType, foundation);
-
- return ret;
-};
-
-Engine.RegisterComponentType(IID_Resistance, "Armour", Armour);
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
@@ -138,6 +138,9 @@
"" +
"" +
"" +
+ "" +
+ "" +
+ "" +
"" +
"" +
Attacking.BuildAttackEffectsSchema() +
@@ -540,7 +543,8 @@
if (this.template[type].Splash)
data.splash = {
"friendlyFire": this.template[type].Splash.FriendlyFire != "false",
- "radius": +this.template[type].Splash.Range,
+ "minRange": +(this.template[type].Splash.MinRange || 0),
+ "maxRange": +this.template[type].Splash.Range,
"shape": this.template[type].Splash.Shape,
"attackData": this.GetAttackEffectsData(type, true),
};
Index: binaries/data/mods/public/simulation/components/Capturable.js
===================================================================
--- binaries/data/mods/public/simulation/components/Capturable.js
+++ binaries/data/mods/public/simulation/components/Capturable.js
@@ -58,7 +58,7 @@
bonusMultiplier *= cmpHealth.GetMaxHitpoints() / (0.1 * cmpHealth.GetMaxHitpoints() + 0.9 * cmpHealth.GetHitpoints());
- let total = Attacking.GetTotalAttackEffects({ "Capture": effectData }, "Capture") * bonusMultiplier;
+ let total = Attacking.GetTotalAttackEffects({ "Capture": effectData }, "Capture", this.entity) * bonusMultiplier;
let change = this.Reduce(total, attackerOwner);
// TODO: implement loot
Index: binaries/data/mods/public/simulation/components/DeathDamage.js
===================================================================
--- binaries/data/mods/public/simulation/components/DeathDamage.js
+++ binaries/data/mods/public/simulation/components/DeathDamage.js
@@ -1,23 +1,5 @@
function DeathDamage() {}
-DeathDamage.prototype.bonusesSchema =
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "";
-
DeathDamage.prototype.Schema =
"When a unit or building is destroyed, it inflicts damage to nearby units." +
"" +
@@ -31,6 +13,9 @@
"" +
"" +
"" +
+ "" +
+ "" +
+ "" +
"" +
"" +
Attacking.BuildAttackEffectsSchema();
@@ -58,7 +43,8 @@
if (owner == INVALID_PLAYER)
warn("Unit causing death damage does not have any owner.");
- let radius = ApplyValueModificationsToEntity("DeathDamage/Range", +this.template.Range, this.entity);
+ let minRange = ApplyValueModificationsToEntity("DeathDamage/MinRange", +(this.template.MinRange || 0), this.entity);
+ let maxRange = ApplyValueModificationsToEntity("DeathDamage/Range", +this.template.Range, this.entity);
Attacking.CauseDamageOverArea({
"type": "Death",
@@ -66,7 +52,8 @@
"attacker": this.entity,
"attackerOwner": owner,
"origin": pos,
- "radius": radius,
+ "minRange": minRange,
+ "maxRange": maxRange,
"shape": this.template.Shape,
"friendlyFire": this.template.FriendlyFire == "true",
});
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
@@ -44,7 +44,8 @@
"attacker": data.attacker,
"attackerOwner": data.attackerOwner,
"origin": Vector2D.from3D(data.position),
- "radius": data.splash.radius,
+ "minRange": data.splash.minRange,
+ "maxRange": data.splash.maxRange,
"shape": data.splash.shape,
"direction": data.direction,
"friendlyFire": data.splash.friendlyFire
@@ -69,7 +70,7 @@
// If we didn't hit the main target look for nearby units
let cmpPlayer = QueryPlayerIDInterface(data.attackerOwner);
- let ents = Attacking.EntitiesNearPoint(Vector2D.from3D(data.position), targetPosition.horizDistanceTo(data.position) * 2, cmpPlayer.GetEnemies());
+ let ents = Attacking.EntitiesNearPoint(Vector2D.from3D(data.position), 0, targetPosition.horizDistanceTo(data.position) * 2, cmpPlayer.GetEnemies());
for (let ent of ents)
{
if (!Attacking.TestCollision(ent, data.position, lateness))
Index: binaries/data/mods/public/simulation/components/GuiInterface.js
===================================================================
--- binaries/data/mods/public/simulation/components/GuiInterface.js
+++ binaries/data/mods/public/simulation/components/GuiInterface.js
@@ -432,9 +432,13 @@
}
}
- let cmpArmour = Engine.QueryInterface(ent, IID_Resistance);
- if (cmpArmour)
- ret.armour = cmpArmour.GetArmourStrengths("Damage");
+ let cmpResistance = Engine.QueryInterface(ent, IID_Resistance);
+ if (cmpResistance)
+ {
+ ret.resistance = {}
+ Object.assign(ret.resistance, cmpResistance.GetResistanceStrengths("Damage"));
+ Object.assign(ret.resistance, cmpResistance.GetResistanceStrengths("Capture"));
+ }
let cmpBuildingAI = Engine.QueryInterface(ent, IID_BuildingAI);
if (cmpBuildingAI)
Index: binaries/data/mods/public/simulation/components/Health.js
===================================================================
--- binaries/data/mods/public/simulation/components/Health.js
+++ binaries/data/mods/public/simulation/components/Health.js
@@ -186,11 +186,10 @@
Health.prototype.TakeDamage = function(effectData, attacker, attackerOwner, bonusMultiplier)
{
let cmpResistance = Engine.QueryInterface(this.entity, IID_Resistance);
-
if (cmpResistance && cmpResistance.IsInvulnerable())
return { "killed": false };
- let total = Attacking.GetTotalAttackEffects(effectData, "Damage", cmpResistance) * bonusMultiplier;
+ let total = Attacking.GetTotalAttackEffects(effectData, "Damage", this.entity) * bonusMultiplier;
// Reduce health
let change = this.Reduce(total);
Index: binaries/data/mods/public/simulation/components/Resistance.js
===================================================================
--- binaries/data/mods/public/simulation/components/Resistance.js
+++ binaries/data/mods/public/simulation/components/Resistance.js
@@ -1,73 +1,142 @@
-function Armour() {}
+function Resistance() {}
-Armour.prototype.DamageResistanceSchema = "" +
+/**
+ * Builds a RelaxRNG schema of possible attack effects.
+ * Currently harcoded to "Damage", "Capture" and "StatusEffects".
+ *
+ * @return {string} - RelaxNG schema string
+ */
+Resistance.prototype.BuildResistanceSchema = function()
+{
+ return "" +
"" +
- "" +
- "" +
- "Foundation" +
- "" +
- "" +
- "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
"";
+};
-Armour.prototype.Schema =
+Resistance.prototype.Schema =
"Controls the damage resistance of the unit." +
"" +
- "10.0" +
- "0.0" +
- "5.0" +
+ "" +
+ "" +
+ "10.0" +
+ "0.0" +
+ "5.0" +
+ "" +
+ "10" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "10" +
+ "0" +
+ "5.0" +
+ "" +
+ "" +
+ "" +
"" +
- Armour.prototype.DamageResistanceSchema +
- "" +
- "" +
- Armour.prototype.DamageResistanceSchema +
+ "" +
+ "" +
+ "" +
+ Resistance.prototype.BuildResistanceSchema() +
"" +
- "";
+ "";
-Armour.prototype.Init = function()
+Resistance.prototype.Init = function()
{
this.invulnerable = false;
};
-Armour.prototype.IsInvulnerable = function()
+Resistance.prototype.IsInvulnerable = function()
{
return this.invulnerable;
};
-Armour.prototype.SetInvulnerability = function(invulnerability)
+Resistance.prototype.SetInvulnerability = function(invulnerability)
{
this.invulnerable = invulnerability;
Engine.PostMessage(this.entity, MT_InvulnerabilityChanged, { "entity": this.entity, "invulnerability": invulnerability });
};
-Armour.prototype.GetArmourStrengths = function(effectType)
+/**
+ * Calculate the resistance of an entity.
+ * @param {string} effectType - The type of attack effect the resistance has to be calculated for (e.g. "Damage", "Capture").
+ * @param {string} circumvent - An optional array consisting of the resistance types not to use in calculation (e.g. "Shield").
+ * @return {object} - An object of the type { "Damage": { "Crush": 10, "Hack": 2 }, "Capture": 2 }
+ */
+Resistance.prototype.GetResistanceStrengths = function(effectType, circumvent = [])
{
- // Work out the armour values with technology effects.
- let applyMods = (type, foundation) => {
- let strength;
- if (foundation)
- {
- strength = +this.template.Foundation[type];
- type = "Foundation/" + type;
- }
- else
- strength = +this.template[type];
+ // Work out the resistance values with technology effects.
+ let applyMods = (resistanceType, damageType) => {
+ let strength = +this.template[resistanceType][effectType][damageType];
- return ApplyValueModificationsToEntity("Armour/" + type, strength, this.entity);
+ return ApplyValueModificationsToEntity("Resistance/" + resistanceType + "/" + effectType + "/" + damageType, strength, this.entity);
};
let foundation = Engine.QueryInterface(this.entity, IID_Foundation) && this.template.Foundation;
let ret = {};
- if (effectType != "Damage")
+ // ToDo: Support resistance against status effects.
+ if (effectType == "StatusEffects")
return ret;
- for (let damageType in this.template)
- if (damageType != "Foundation")
- ret[damageType] = applyMods(damageType, foundation);
+ for (let resistanceType in this.template)
+ {
+ if (circumvent.length && circumvent.indexOf(resistanceType) != -1)
+ continue;
+ if (!foundation && resistanceType == "Foundation")
+ continue;
+ if (foundation && resistanceType != "Foundation")
+ continue;
+ let template = this.template[resistanceType][effectType];
+ if (template)
+ {
+ if (effectType == "Capture")
+ {
+ if (!ret.Capture)
+ ret.Capture = 0;
+ ret.Capture += ApplyValueModificationsToEntity("Resistance/" + resistanceType + "/Capture", +this.template[resistanceType].Capture, this.entity);
+ }
+ else if (effectType == "Damage")
+ {
+ if (!ret.Damage)
+ ret.Damage = {};
+ for (let damageType in template)
+ {
+ if (!ret.Damage[damageType])
+ ret.Damage[damageType] = 0;
+ ret.Damage[damageType] += applyMods(resistanceType, damageType);
+ }
+ }
+ }
+ }
return ret;
};
-Engine.RegisterComponentType(IID_Resistance, "Armour", Armour);
+Engine.RegisterComponentType(IID_Resistance, "Resistance", Resistance);
Index: binaries/data/mods/public/simulation/components/tests/test_Damage.js
===================================================================
--- binaries/data/mods/public/simulation/components/tests/test_Damage.js
+++ binaries/data/mods/public/simulation/components/tests/test_Damage.js
@@ -166,7 +166,8 @@
"attacker": attacker,
"attackerOwner": attackerOwner,
"origin": origin,
- "radius": 10,
+ "minRange": 0,
+ "maxRange": 10,
"shape": "Linear",
"direction": new Vector3D(1, 747, 0),
"friendlyFire": false,
@@ -174,7 +175,7 @@
let fallOff = function(x, y)
{
- return (1 - x * x / (data.radius * data.radius)) * (1 - 25 * y * y / (data.radius * data.radius));
+ return (1 - x * x / (data.maxRange * data.maxRange)) * (1 - 25 * y * y / (data.maxRange * data.maxRange));
};
let hitEnts = new Set();
@@ -340,7 +341,8 @@
"attacker": 50,
"attackerOwner": attackerOwner,
"origin": new Vector2D(3, 4),
- "radius": radius,
+ "minRange": 0,
+ "maxRange": radius,
"shape": "Circular",
"friendlyFire": false,
});
@@ -470,7 +472,8 @@
// Add a splash damage.
data.splash = {};
data.splash.friendlyFire = false;
- data.splash.radius = 10;
+ data.splash.minRange = 0;
+ data.splash.maxRange = 10;
data.splash.shape = "Circular";
data.splash.attackData = { "Damage": { "Hack": 0, "Pierce": 0, "Crush": 200 } };
Index: binaries/data/mods/public/simulation/components/tests/test_DeathDamage.js
===================================================================
--- binaries/data/mods/public/simulation/components/tests/test_DeathDamage.js
+++ binaries/data/mods/public/simulation/components/tests/test_DeathDamage.js
@@ -45,7 +45,8 @@
"attacker": deadEnt,
"attackerOwner": player,
"origin": pos,
- "radius": template.Range,
+ "minRange": 0,
+ "maxRange": template.Range,
"shape": template.Shape,
"friendlyFire": false
};
Index: binaries/data/mods/public/simulation/data/auras/structures/wall_garrisoned.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/structures/wall_garrisoned.json
+++ binaries/data/mods/public/simulation/data/auras/structures/wall_garrisoned.json
@@ -2,9 +2,9 @@
"type": "garrisonedUnits",
"affects": ["Soldier"],
"modifications": [
- { "value": "Armour/Pierce", "add": 3 },
- { "value": "Armour/Hack", "add": 3 },
- { "value": "Armour/Crush", "add": 3 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 3 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 3 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 3 },
{ "value": "Vision/Range", "add": 20 }
],
"auraName": "Wall Protection",
Index: binaries/data/mods/public/simulation/data/auras/units/catafalques/cart_catafalque.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/units/catafalques/cart_catafalque.json
+++ binaries/data/mods/public/simulation/data/auras/units/catafalques/cart_catafalque.json
@@ -2,9 +2,9 @@
"type": "global",
"affects": ["Melee Cavalry"],
"modifications": [
- { "value": "Armour/Pierce", "add": 1 },
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Crush", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 1 },
{ "value": "Health/Max", "multiply": 1.1 }
],
"auraName": "Commander of Heavy Cavalry",
Index: binaries/data/mods/public/simulation/data/auras/units/catafalques/rome_catafalque_2.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/units/catafalques/rome_catafalque_2.json
+++ binaries/data/mods/public/simulation/data/auras/units/catafalques/rome_catafalque_2.json
@@ -2,9 +2,9 @@
"type": "global",
"affects": ["Human", "Siege"],
"modifications": [
- { "value": "Armour/Pierce", "add": 1 },
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Crush", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 1 }
],
"auraName": "Founder and Defender of the Republic",
"auraDescription": "Brutus was one of the key figures in the overthrow of the monarchy and the founding of the Roman Republic. Later, as consul he led a Roman army to victory against the Etruscan King Tarquinius who sought to retake the throne.\nHumans and Siege Engines +1 armor."
Index: binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_1.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_1.json
+++ binaries/data/mods/public/simulation/data/auras/units/heroes/athen_hero_iphicrates_1.json
@@ -2,9 +2,9 @@
"type": "formation",
"affects": ["Soldier"],
"modifications": [
- { "value": "Armour/Pierce", "add": 3 },
- { "value": "Armour/Hack", "add": 3 },
- { "value": "Armour/Crush", "add": 3 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 3 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 3 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 3 },
{ "value": "UnitMotion/WalkSpeed", "multiply": 1.15 }
],
"auraName": "Formation Reforms",
Index: binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_caratacos.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_caratacos.json
+++ binaries/data/mods/public/simulation/data/auras/units/heroes/brit_hero_caratacos.json
@@ -3,9 +3,9 @@
"affects": ["Soldier", "Siege"],
"modifications": [
{ "value": "UnitMotion/WalkSpeed", "multiply": 1.15 },
- { "value": "Armour/Pierce", "add": 1 },
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Crush", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 1 }
],
"auraName": "Guerrilla Chief",
"auraDescription": "All soldiers and siege engines +15% speed and +1 armor."
Index: binaries/data/mods/public/simulation/data/auras/units/heroes/iber_hero_caros_2.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/units/heroes/iber_hero_caros_2.json
+++ binaries/data/mods/public/simulation/data/auras/units/heroes/iber_hero_caros_2.json
@@ -3,9 +3,9 @@
"radius": 50,
"affects": ["Soldier"],
"modifications": [
- { "value": "Armour/Pierce", "add": 1 },
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Crush", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 1 }
],
"auraDescription": "+1 armor for soldiers.",
"auraName": "Battle Fervor",
Index: binaries/data/mods/public/simulation/data/auras/units/heroes/mace_hero_demetrius.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/units/heroes/mace_hero_demetrius.json
+++ binaries/data/mods/public/simulation/data/auras/units/heroes/mace_hero_demetrius.json
@@ -3,9 +3,9 @@
"radius": 60,
"affects": ["Siege"],
"modifications": [
- { "value": "Armour/Pierce", "add": 1 },
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Crush", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 1 },
{ "value": "Attack/Melee/Damage/Hack", "multiply": 1.2 },
{ "value": "Attack/Melee/Damage/Pierce", "multiply": 1.2 },
{ "value": "Attack/Melee/Damage/Crush", "multiply": 1.2 },
Index: binaries/data/mods/public/simulation/data/auras/units/heroes/rome_hero_maximus.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/units/heroes/rome_hero_maximus.json
+++ binaries/data/mods/public/simulation/data/auras/units/heroes/rome_hero_maximus.json
@@ -2,9 +2,9 @@
"type": "global",
"affects": ["Human", "Structure"],
"modifications": [
- { "value": "Armour/Pierce", "add": 1 },
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Crush", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 1 }
],
"auraName": "Shield of Rome",
"auraDescription": "+1 armor for all units and structures."
Index: binaries/data/mods/public/simulation/data/auras/units/heroes/sele_hero_antiochus_great.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/units/heroes/sele_hero_antiochus_great.json
+++ binaries/data/mods/public/simulation/data/auras/units/heroes/sele_hero_antiochus_great.json
@@ -3,9 +3,9 @@
"radius": 45,
"affects": ["Cavalry"],
"modifications": [
- { "value": "Armour/Pierce", "add": 2 },
- { "value": "Armour/Hack", "add": 2 },
- { "value": "Armour/Crush", "add": 2 }
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 2 }
],
"auraName": "Ilarchès",
"auraDescription": "Nearby cavalry gains +2 levels of all armor types."
Index: binaries/data/mods/public/simulation/data/auras/units/heroes/spart_hero_brasidas.json
===================================================================
--- binaries/data/mods/public/simulation/data/auras/units/heroes/spart_hero_brasidas.json
+++ binaries/data/mods/public/simulation/data/auras/units/heroes/spart_hero_brasidas.json
@@ -4,9 +4,9 @@
"affects": ["Citizen Infantry Javelinist"],
"modifications": [
{ "value": "Attack/Ranged/Damage/Pierce", "multiply": 1.25 },
- { "value": "Armour/Pierce", "add": 1 },
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Crush", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 1 }
],
"auraName": "Helot Reforms",
"auraDescription": "+25% attack and +1 armor for javelin infantry citizen-soldiers.",
Index: binaries/data/mods/public/simulation/data/technologies/advanced_unit_bonus.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/advanced_unit_bonus.json
+++ binaries/data/mods/public/simulation/data/technologies/advanced_unit_bonus.json
@@ -4,9 +4,9 @@
"tooltip": "Units promoted to the advanced class gain a lot of quality: 20% extra health, 1 extra armor level of every type, 20% extra loot, 20% extra attack for melee units, 4m extra range and better precision for ranged units, faster movement speeds and extra heal speed and range for healers.",
"modifications": [
{ "value": "Health/Max", "multiply": 1.2 },
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Pierce", "add": 1 },
- { "value": "Armour/Crush", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 1 },
{ "value": "Attack/Capture/Capture", "add": 0.4 },
{ "value": "ResourceGatherer/BaseSpeed", "multiply": 0.5 },
{ "value": "UnitMotion/WalkSpeed", "add": 0.5, "affects": "Infantry" },
Index: binaries/data/mods/public/simulation/data/technologies/armor_cav_01.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_cav_01.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_cav_01.json
@@ -15,8 +15,8 @@
"researchTime": 40,
"tooltip": "Equip your cavalry mounts with armor. All Cavalry +1 Hack and Pierce armor level.",
"modifications": [
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Pierce", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 }
],
"affects": ["Cavalry"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_cav_02.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_cav_02.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_cav_02.json
@@ -9,8 +9,8 @@
"researchTime": 40,
"tooltip": "Equip your cavalry mounts with armor. All Cavalry +1 Hack and Pierce armor level.",
"modifications": [
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Pierce", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 }
],
"affects": ["Cavalry"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_cav_chamfron.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_cav_chamfron.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_cav_chamfron.json
@@ -16,7 +16,7 @@
"researchTime": 40,
"tooltip": "Equip your cavalry mounts with armor. All Cavalry +1 Hack armor level.",
"modifications": [
- { "value": "Armour/Hack", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 }
],
"affects": ["Cavalry"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_hero_01.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_hero_01.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_hero_01.json
@@ -16,8 +16,8 @@
"researchTime": 40,
"tooltip": "All heroes +2 Hack Armor Levels and +2 Pierce Armor Levels, but also +50 Metal Cost.",
"modifications": [
- { "value": "Armour/Hack", "add": 2 },
- { "value": "Armour/Pierce", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 2 },
{ "value": "Cost/Resources/metal", "add": 50 }
],
"affects": ["Hero"],
Index: binaries/data/mods/public/simulation/data/technologies/armor_infantry_01.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_infantry_01.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_infantry_01.json
@@ -21,8 +21,8 @@
"researchTime": 40,
"tooltip": "All Infantry +1 Hack and Pierce Armor Level.",
"modifications": [
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Pierce", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 }
],
"affects": ["Infantry"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_infantry_02.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_infantry_02.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_infantry_02.json
@@ -19,8 +19,8 @@
"researchTime": 40,
"tooltip": "All Infantry +1 Hack and Pierce Armor Level.",
"modifications": [
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Pierce", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 }
],
"affects": ["Infantry"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_01.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_01.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_01.json
@@ -22,7 +22,7 @@
"researchTime": 40,
"tooltip": "All Infantry +1 Hack Armor Level.",
"modifications": [
- { "value": "Armour/Hack", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 }
],
"affects": ["Infantry"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_02.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_02.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_02.json
@@ -19,7 +19,7 @@
"researchTime": 40,
"tooltip": "All Infantry +1 Hack Armor Level.",
"modifications": [
- { "value": "Armour/Hack", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 }
],
"affects": ["Infantry"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_03.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_03.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_03.json
@@ -12,7 +12,7 @@
"researchTime": 40,
"tooltip": "All Infantry +1 Hack Armor Level.",
"modifications": [
- { "value": "Armour/Hack", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 }
],
"affects": ["Infantry"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_04.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_04.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_infantry_hack_04.json
@@ -12,7 +12,7 @@
"researchTime": 40,
"tooltip": "Champions +2 Hack Armor Levels, but also +10 Metal Cost.",
"modifications": [
- { "value": "Armour/Hack", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 2 },
{ "value": "Cost/Resources/metal", "add": 10 }
],
"affects": ["Champion"],
Index: binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_01.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_01.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_01.json
@@ -16,7 +16,7 @@
"researchTime": 40,
"tooltip": "Infantry Spearmen +2 Pierce Armor Levels.",
"modifications": [
- { "value": "Armour/Pierce", "add": 2 }
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 2 }
],
"affects": ["Infantry Spearman"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_02.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_02.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_02.json
@@ -16,7 +16,7 @@
"researchTime": 40,
"tooltip": "Infantry Spearmen +1 Pierce Armor Level.",
"modifications": [
- { "value": "Armour/Pierce", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 }
],
"affects": ["Infantry Spearman"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_03.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_03.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_03.json
@@ -16,7 +16,7 @@
"researchTime": 40,
"tooltip": "Infantry Spearmen +1 Pierce Armor Level.",
"modifications": [
- { "value": "Armour/Pierce", "add": 1 }
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 }
],
"affects": ["Infantry Spearman"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_04.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_04.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_infantryspearmen_pierce_04.json
@@ -16,7 +16,7 @@
"researchTime": 40,
"tooltip": "Champions +2 Pierce Armor Levels, but also +10 Metal Cost.",
"modifications": [
- { "value": "Armour/Pierce", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 2 },
{ "value": "Cost/Resources/metal", "add": 10 }
],
"affects": ["Champion"],
Index: binaries/data/mods/public/simulation/data/technologies/armor_ship_hullsheathing.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_ship_hullsheathing.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_ship_hullsheathing.json
@@ -9,9 +9,9 @@
"researchTime": 40,
"tooltip": "Lead sheathing protects ship hulls. +2 levels to all ship armor types.",
"modifications": [
- { "value": "Armour/Hack", "add": 2 },
- { "value": "Armour/Pierce", "add": 2 },
- { "value": "Armour/Crush", "add": 2 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 2 }
],
"affects": ["Ship"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_ship_hypozomata.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_ship_hypozomata.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_ship_hypozomata.json
@@ -9,9 +9,9 @@
"researchTime": 40,
"tooltip": "The hypozomata braces the ship's structure. +2 levels to all ship armor types.",
"modifications": [
- { "value": "Armour/Hack", "add": 2 },
- { "value": "Armour/Pierce", "add": 2 },
- { "value": "Armour/Crush", "add": 2 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 2 }
],
"affects": ["Ship"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/armor_ship_reinforcedhull.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/armor_ship_reinforcedhull.json
+++ binaries/data/mods/public/simulation/data/technologies/armor_ship_reinforcedhull.json
@@ -8,9 +8,9 @@
"researchTime": 40,
"tooltip": "Wooden reinforcement beams for hulls. +2 levels to all ship armor types.",
"modifications": [
- { "value": "Armour/Hack", "add": 2 },
- { "value": "Armour/Pierce", "add": 2 },
- { "value": "Armour/Crush", "add": 2 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 2 }
],
"affects": ["Ship"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/buildtime_walls_rubble.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/buildtime_walls_rubble.json
+++ binaries/data/mods/public/simulation/data/technologies/buildtime_walls_rubble.json
@@ -10,7 +10,7 @@
"tooltip": "City walls -20% build time, but -1 crush armor level.",
"modifications": [
{ "value": "Cost/BuildTime", "multiply": 0.8 },
- { "value": "Armour/Crush", "add": -1 }
+ { "value": "Resistance/Armour/Damage/Crush", "add": -1 }
],
"affects": ["StoneWall"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/elite_unit_bonus.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/elite_unit_bonus.json
+++ binaries/data/mods/public/simulation/data/technologies/elite_unit_bonus.json
@@ -4,9 +4,9 @@
"tooltip": "Units promoted to the elite class gain a lot of quality: 20% extra health, 1 extra armor level of every type, 20% extra loot, 20% extra attack for melee units, 4m extra range and better precision for ranged units, faster movement speeds and extra heal speed and range for healers.",
"modifications": [
{ "value": "Health/Max", "multiply": 1.2 },
- { "value": "Armour/Hack", "add": 1 },
- { "value": "Armour/Pierce", "add": 1 },
- { "value": "Armour/Crush", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Hack", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 1 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 1 },
{ "value": "Attack/Capture/Capture", "add": 0.4 },
{ "value": "ResourceGatherer/BaseSpeed", "multiply": 0.5 },
{ "value": "UnitMotion/WalkSpeed", "add": 0.5, "affects": "Infantry" },
Index: binaries/data/mods/public/simulation/data/technologies/health_walls_geometric_masonry.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/health_walls_geometric_masonry.json
+++ binaries/data/mods/public/simulation/data/technologies/health_walls_geometric_masonry.json
@@ -10,7 +10,7 @@
"tooltip": "City walls +2 crush armor levels, but +10% build time.",
"modifications": [
{ "value": "Cost/BuildTime", "multiply": 1.1 },
- { "value": "Armour/Crush", "add": 2 }
+ { "value": "Resistance/Armour/Damage/Crush", "add": 2 }
],
"affects": ["StoneWall"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/siege_armor.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/siege_armor.json
+++ binaries/data/mods/public/simulation/data/technologies/siege_armor.json
@@ -8,7 +8,7 @@
"researchTime": 40,
"tooltip": "Siege Engines +2 hack armor.",
"modifications": [
- { "value": "Armour/Hack", "add": 2 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 2 }
],
"affects": ["Siege"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/tower_armour.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/tower_armour.json
+++ binaries/data/mods/public/simulation/data/technologies/tower_armour.json
@@ -8,9 +8,9 @@
"researchTime": 40,
"tooltip": "Increases armor of defensive towers by 2 levels.",
"modifications": [
- { "value": "Armour/Hack", "add": 2 },
- { "value": "Armour/Pierce", "add": 2 },
- { "value": "Armour/Crush", "add": 2 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Crush", "add": 2 }
],
"affects": ["DefenseTower"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/data/technologies/trade_convoys_armor.json
===================================================================
--- binaries/data/mods/public/simulation/data/technologies/trade_convoys_armor.json
+++ binaries/data/mods/public/simulation/data/technologies/trade_convoys_armor.json
@@ -9,8 +9,8 @@
"researchTime": 40,
"tooltip": "Traders +2 Hack and Pierce armor levels.",
"modifications": [
- { "value": "Armour/Hack", "add": 2 },
- { "value": "Armour/Pierce", "add": 2 }
+ { "value": "Resistance/Armour/Damage/Hack", "add": 2 },
+ { "value": "Resistance/Armour/Damage/Pierce", "add": 2 }
],
"affects": ["Trader"],
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
Index: binaries/data/mods/public/simulation/helpers/Attacking.js
===================================================================
--- binaries/data/mods/public/simulation/helpers/Attacking.js
+++ binaries/data/mods/public/simulation/helpers/Attacking.js
@@ -18,10 +18,7 @@
"" +
"" +
"" +
- "" +
- // Armour requires Foundation to not be a damage type.
- "Foundation" +
- "" +
+ "" +
"" +
"" +
"" +
@@ -88,13 +85,20 @@
return ret;
};
-Attacking.prototype.GetTotalAttackEffects = function(effectData, effectType, cmpResistance)
+Attacking.prototype.GetTotalAttackEffects = function(effectData, effectType, target)
{
+ let cmpResistance = Engine.QueryInterface(target, IID_Resistance);
let total = 0;
- let armourStrengths = cmpResistance ? cmpResistance.GetArmourStrengths(effectType) : {};
-
+ let resistanceStrengths = {};
+ if (cmpResistance)
+ {
+ if (effectType == "Capture")
+ resistanceStrengths = cmpResistance.GetResistanceStrengths(effectType);
+ else
+ resistanceStrengths = cmpResistance.GetResistanceStrengths(effectType)[effectType];
+ }
for (let type in effectData)
- total += effectData[type] * Math.pow(0.9, armourStrengths[type] || 0);
+ total += effectData[type] * Math.pow(0.9, resistanceStrengths[type] || 0);
return total;
};
@@ -179,14 +183,15 @@
* @param {number} data.attacker - The entity id of the attacker.
* @param {number} data.attackerOwner - The player id of the attacker.
* @param {Vector2D} data.origin - The origin of the projectile hit.
- * @param {number} data.radius - The radius of the splash damage.
+ * @param {number} data.minRange - The minimal radius of the area damage.
+ * @param {number} data.maxRange - The maximum radius of the area damage.
* @param {string} data.shape - The shape of the radius.
* @param {Vector3D} [data.direction] - The unit vector defining the direction. Needed for linear splash damage.
* @param {boolean} data.friendlyFire - A flag indicating if allied entities also ought to be damaged.
*/
Attacking.prototype.CauseDamageOverArea = function(data)
{
- let nearEnts = this.EntitiesNearPoint(data.origin, data.radius,
+ let nearEnts = this.EntitiesNearPoint(data.origin, data.minRange, data.maxRange,
this.GetPlayersToDamage(data.attackerOwner, data.friendlyFire));
let damageMultiplier = 1;
@@ -195,7 +200,7 @@
{
let entityPosition = Engine.QueryInterface(ent, IID_Position).GetPosition2D();
if (data.shape == 'Circular') // circular effect with quadratic falloff in every direction
- damageMultiplier = 1 - data.origin.distanceToSquared(entityPosition) / (data.radius * data.radius);
+ damageMultiplier = 1 - data.origin.distanceToSquared(entityPosition) / (data.maxRange * data.maxRange);
else if (data.shape == 'Linear') // linear effect with quadratic falloff in two directions (only used for certain missiles)
{
// Get position of entity relative to splash origin.
@@ -207,12 +212,12 @@
let perpPos = relativePos.cross(direction);
// The width of linear splash is one fifth of the normal splash radius.
- let width = data.radius / 5;
+ let width = data.maxRange / 5;
// Check that the unit is within the distance splash width of the line starting at the missile's
// landing point which extends in the direction of the missile for length splash radius.
if (parallelPos >= 0 && Math.abs(perpPos) < width) // If in radius, quadratic falloff in both directions
- damageMultiplier = (1 - parallelPos * parallelPos / (data.radius * data.radius)) *
+ damageMultiplier = (1 - parallelPos * parallelPos / (data.maxRange * data.maxRange)) *
(1 - perpPos * perpPos / (width * width));
else
damageMultiplier = 0;
@@ -265,17 +270,18 @@
/**
* Gets entities near a give point for given players.
* @param {Vector2D} origin - The point to check around.
- * @param {number} radius - The radius around the point to check.
+ * @param {number} minRange - The minimum distance the entities may have from the point to check.
+ * @param {number} maxRange - The maximum distance the entities may have from the point to check.
* @param {number[]} players - The players of which we need to check entities.
* @return {number[]} The id's of the entities in range of the given point.
*/
-Attacking.prototype.EntitiesNearPoint = function(origin, radius, players)
+Attacking.prototype.EntitiesNearPoint = function(origin, minRange, maxRange, players)
{
// If there is insufficient data return an empty array.
- if (!origin || !radius || !players)
+ if (!origin || !maxRange || !players)
return [];
- return Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager).ExecuteQueryAroundPos(origin, 0, radius, players, IID_Resistance);
+ return Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager).ExecuteQueryAroundPos(origin, minRange, maxRange, players, IID_Resistance);
};
/**
Index: binaries/data/mods/public/simulation/templates/campaigns/army_mace_hero_alexander.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/campaigns/army_mace_hero_alexander.xml
+++ binaries/data/mods/public/simulation/templates/campaigns/army_mace_hero_alexander.xml
@@ -1,8 +1,12 @@
-
- 20.0
-
+
+
+
+ 20.0
+
+
+
7.0
Index: binaries/data/mods/public/simulation/templates/campaigns/army_spart_hero_leonidas.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/campaigns/army_spart_hero_leonidas.xml
+++ binaries/data/mods/public/simulation/templates/campaigns/army_spart_hero_leonidas.xml
@@ -1,8 +1,12 @@
-
- 20.0
-
+
+
+
+ 20.0
+
+
+
7.0
Index: binaries/data/mods/public/simulation/templates/gaia/fauna_walrus.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/gaia/fauna_walrus.xml
+++ binaries/data/mods/public/simulation/templates/gaia/fauna_walrus.xml
@@ -1,10 +1,14 @@
-
- 3
- 4
- 5
-
+
+
+
+ 3
+ 4
+ 5
+
+
+
Index: binaries/data/mods/public/simulation/templates/other/bench.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/bench.xml
+++ binaries/data/mods/public/simulation/templates/other/bench.xml
@@ -1,10 +1,14 @@
-
- 1
- 10
- 1
-
+
+
+
+ 1
+ 10
+ 1
+
+
+
Special
Index: binaries/data/mods/public/simulation/templates/other/column_doric.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/column_doric.xml
+++ binaries/data/mods/public/simulation/templates/other/column_doric.xml
@@ -1,10 +1,14 @@
-
- 2
- 5
- 2
-
+
+
+
+ 2
+ 5
+ 2
+
+
+
Fence
Index: binaries/data/mods/public/simulation/templates/other/column_doric_fallen.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/column_doric_fallen.xml
+++ binaries/data/mods/public/simulation/templates/other/column_doric_fallen.xml
@@ -1,10 +1,14 @@
-
- 2
- 5
- 2
-
+
+
+
+ 2
+ 5
+ 2
+
+
+
Special
Index: binaries/data/mods/public/simulation/templates/other/column_doric_fallen_b.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/column_doric_fallen_b.xml
+++ binaries/data/mods/public/simulation/templates/other/column_doric_fallen_b.xml
@@ -1,10 +1,14 @@
-
- 2
- 5
- 2
-
+
+
+
+ 2
+ 5
+ 2
+
+
+
Special
Index: binaries/data/mods/public/simulation/templates/other/fence_long.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/fence_long.xml
+++ binaries/data/mods/public/simulation/templates/other/fence_long.xml
@@ -1,10 +1,14 @@
-
- 1
- 10
- 1
-
+
+
+
+ 1
+ 10
+ 1
+
+
+
Special
Index: binaries/data/mods/public/simulation/templates/other/fence_short.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/fence_short.xml
+++ binaries/data/mods/public/simulation/templates/other/fence_short.xml
@@ -1,10 +1,14 @@
-
- 1
- 10
- 1
-
+
+
+
+ 1
+ 10
+ 1
+
+
+
Special
Index: binaries/data/mods/public/simulation/templates/other/fence_stone.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/fence_stone.xml
+++ binaries/data/mods/public/simulation/templates/other/fence_stone.xml
@@ -1,10 +1,14 @@
-
- 2
- 10
- 2
-
+
+
+
+ 2
+ 10
+ 2
+
+
+
Special
Index: binaries/data/mods/public/simulation/templates/other/obelisk.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/obelisk.xml
+++ binaries/data/mods/public/simulation/templates/other/obelisk.xml
@@ -1,10 +1,14 @@
-
- 2
- 10
- 2
-
+
+
+
+ 2
+ 10
+ 2
+
+
+
Special
Index: binaries/data/mods/public/simulation/templates/other/sele_colonnade.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/sele_colonnade.xml
+++ binaries/data/mods/public/simulation/templates/other/sele_colonnade.xml
@@ -1,10 +1,14 @@
-
- 2
- 5
- 2
-
+
+
+
+ 2
+ 5
+ 2
+
+
+
Fence
Index: binaries/data/mods/public/simulation/templates/other/table_rectangle.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/table_rectangle.xml
+++ binaries/data/mods/public/simulation/templates/other/table_rectangle.xml
@@ -1,10 +1,14 @@
-
- 1
- 10
- 1
-
+
+
+
+ 1
+ 10
+ 1
+
+
+
Special
Index: binaries/data/mods/public/simulation/templates/other/table_square.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/other/table_square.xml
+++ binaries/data/mods/public/simulation/templates/other/table_square.xml
@@ -1,10 +1,14 @@
-
- 1
- 10
- 1
-
+
+
+
+ 1
+ 10
+ 1
+
+
+
Special
Index: binaries/data/mods/public/simulation/templates/structures/cart_super_dock.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/cart_super_dock.xml
+++ binaries/data/mods/public/simulation/templates/structures/cart_super_dock.xml
@@ -1,8 +1,12 @@
-
- 35
-
+
+
+
+ 35
+
+
+
structures/cart_super_dock_repair
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
@@ -1,15 +1,21 @@
-
- -5.0
- -5.0
- -1.0
+
+
+
+ -5.0
+ -5.0
+ -1.0
+
+
- 1.0
- 5.0
- 1.0
+
+ 1.0
+ 5.0
+ 1.0
+
-
+
Index: binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_gate.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_gate.xml
+++ binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_gate.xml
@@ -1,15 +1,21 @@
-
- 15.0
- 35.0
- 5.0
+
+
+
+ 15.0
+ 35.0
+ 5.0
+
+
- 4.0
- 7.0
- 3.0
+
+ 4.0
+ 7.0
+ 3.0
+
-
+
own neutral enemy
Index: binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_long.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_long.xml
+++ binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_long.xml
@@ -1,15 +1,21 @@
-
- 15.0
- 35.0
- 5.0
+
+
+
+ 15.0
+ 35.0
+ 5.0
+
+
- 4.0
- 7.0
- 3.0
+
+ 4.0
+ 7.0
+ 3.0
+
-
+
own neutral enemy
Index: binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_medium.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_medium.xml
+++ binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_medium.xml
@@ -1,15 +1,21 @@
-
- 15.0
- 35.0
- 5.0
+
+
+
+ 15.0
+ 35.0
+ 5.0
+
+
- 4.0
- 7.0
- 3.0
+
+ 4.0
+ 7.0
+ 3.0
+
-
+
own neutral enemy
Index: binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_short.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_short.xml
+++ binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_short.xml
@@ -1,15 +1,21 @@
-
- 15.0
- 35.0
- 5.0
+
+
+
+ 15.0
+ 35.0
+ 5.0
+
+
- 4.0
- 7.0
- 3.0
+
+ 4.0
+ 7.0
+ 3.0
+
-
+
own neutral enemy
Index: binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_tower.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_tower.xml
+++ binaries/data/mods/public/simulation/templates/structures/rome_siege_wall_tower.xml
@@ -1,15 +1,21 @@
-
- 15.0
- 35.0
- 5.0
+
+
+
+ 15.0
+ 35.0
+ 5.0
+
+
- 4.0
- 7.0
- 3.0
+
+ 4.0
+ 7.0
+ 3.0
+
-
+
own neutral enemy
Index: binaries/data/mods/public/simulation/templates/template_structure.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure.xml
+++ binaries/data/mods/public/simulation/templates/template_structure.xml
@@ -1,16 +1,22 @@
-
- 1
- 1
- 1
+
+
+
+ 1
+ 1
+ 1
+
+
- 1
- 1
- 1
+
+ 1
+ 1
+ 1
+
-
+
0
0
Index: binaries/data/mods/public/simulation/templates/template_structure_civic.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_civic.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_civic.xml
@@ -1,15 +1,21 @@
-
- 20
- 30
- 3
+
+
+
+ 20
+ 30
+ 3
+
+
- 1
- 5
- 1
+
+ 1
+ 5
+ 1
+
-
+
ConquestCritical
Civic Structure
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
@@ -6,15 +6,21 @@
190
100
-
- 5
- 5
+
+
+
+ 5
+ 5
+
+
- 5
- 15
- 3
+
+ 5
+ 15
+ 3
+
-
+
Index: binaries/data/mods/public/simulation/templates/template_structure_defensive.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_defensive.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_defensive.xml
@@ -1,15 +1,21 @@
-
- 25
- 30
- 3
+
+
+
+ 25
+ 30
+ 3
+
+
- 1.0
- 5.0
- 1.0
+
+ 1.0
+ 5.0
+ 1.0
+
-
+
Defensive Structure
Defensive
Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_palisade.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_defensive_palisade.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_defensive_palisade.xml
@@ -1,10 +1,14 @@
-
- 4
- 25
- 2
-
+
+
+
+ 4
+ 25
+ 2
+
+
+
land-shore
Wall
Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_outpost.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_outpost.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_outpost.xml
@@ -1,15 +1,21 @@
-
- 5
- 20
- 1
+
+
+
+ 5
+ 20
+ 1
+
+
- 1
- 5
- 1
+
+ 1
+ 5
+ 1
+
-
+
Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_sentry.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_sentry.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_defensive_tower_sentry.xml
@@ -1,10 +1,14 @@
-
- -5
- -5
- -2
-
+
+
+
+ -5
+ -5
+ -2
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_structure_economic.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_economic.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_economic.xml
@@ -1,15 +1,21 @@
-
- 5
- 20
- 1
+
+
+
+ 5
+ 20
+ 1
+
+
- 1
- 5
- 1
+
+ 1
+ 5
+ 1
+
-
+
Economic Structure
Economic
Index: binaries/data/mods/public/simulation/templates/template_structure_military.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_military.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_military.xml
@@ -1,15 +1,21 @@
-
- 20
- 35
- 3
+
+
+
+ 20
+ 35
+ 3
+
+
- 1
- 5
- 1
+
+ 1
+ 5
+ 1
+
-
+
Military
Index: binaries/data/mods/public/simulation/templates/template_structure_military_embassy.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_military_embassy.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_military_embassy.xml
@@ -1,13 +1,19 @@
-
- 30
+
+
+
+ 30
+
+
- 3
- 10
- 3
+
+ 3
+ 10
+ 3
+
-
+
Embassy
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
@@ -1,10 +1,14 @@
-
- 5
- 5
- 3
-
+
+
+
+ 5
+ 5
+ 3
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_structure_military_kennel.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_military_kennel.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_military_kennel.xml
@@ -1,15 +1,21 @@
-
- 10
- 40
- 5
+
+
+
+ 10
+ 40
+ 5
+
+
- 3
- 8
- 2
+
+ 3
+ 8
+ 2
+
-
+
Kennel
Index: binaries/data/mods/public/simulation/templates/template_structure_resource.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_resource.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_resource.xml
@@ -1,15 +1,21 @@
-
- 1
- 20
- 1
+
+
+
+ 1
+ 20
+ 1
+
+
- 1
- 10
- 1
+
+ 1
+ 10
+ 1
+
-
+
Resource
Index: binaries/data/mods/public/simulation/templates/template_structure_resource_field.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_resource_field.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_resource_field.xml
@@ -1,10 +1,14 @@
-
- 15
- 40
- 5
-
+
+
+
+ 15
+ 40
+ 5
+
+
+
Field
Index: binaries/data/mods/public/simulation/templates/template_structure_special.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_special.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_special.xml
@@ -1,15 +1,21 @@
-
- 20
- 30
- 3
+
+
+
+ 20
+ 30
+ 3
+
+
- 3
- 10
- 3
+
+ 3
+ 10
+ 3
+
-
+
Special
Index: binaries/data/mods/public/simulation/templates/template_structure_wonder.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_wonder.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_wonder.xml
@@ -1,15 +1,21 @@
-
- 15
- 25
- 3
+
+
+
+ 15
+ 25
+ 3
+
+
- 2
- 10
- 2
+
+ 2
+ 10
+ 2
+
-
+
structures/wonder_pop_1
structures/wonder_pop_2
Index: binaries/data/mods/public/simulation/templates/template_unit.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit.xml
+++ binaries/data/mods/public/simulation/templates/template_unit.xml
@@ -1,11 +1,15 @@
-
- 1
- 1
- 15
-
+
+
+
+ 1
+ 1
+ 15
+
+
+
1
0
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
@@ -1,10 +1,14 @@
-
- 3
- 1
- 15
-
+
+
+
+ 3
+ 1
+ 15
+
+
+
2
Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee.xml
@@ -1,9 +1,13 @@
-
- 4
- 3
-
+
+
+
+ 4
+ 3
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_swordsman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_swordsman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_cavalry_melee_swordsman.xml
@@ -1,9 +1,13 @@
-
- 4
- 2
-
+
+
+
+ 4
+ 2
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry.xml
@@ -1,10 +1,14 @@
-
- 7
- 5
- 20
-
+
+
+
+ 7
+ 5
+ 20
+
+
+
1
30
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_spearman.xml
@@ -1,9 +1,13 @@
-
- 1
- 2
-
+
+
+
+ 1
+ 2
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_swordsman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_swordsman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_swordsman.xml
@@ -1,9 +1,13 @@
-
- 1
- 2
-
+
+
+
+ 1
+ 2
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_elephant.xml
@@ -1,10 +1,14 @@
-
- 10
- 10
- 25
-
+
+
+
+ 10
+ 10
+ 25
+
+
+
3
30
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry.xml
@@ -1,10 +1,14 @@
-
- 5
- 5
- 20
-
+
+
+
+ 5
+ 5
+ 20
+
+
+
20
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_maceman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_maceman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_maceman.xml
@@ -1,9 +1,13 @@
-
- 1
- 1
-
+
+
+
+ 1
+ 1
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_pikeman.xml
@@ -1,10 +1,14 @@
-
- 8
- 8
- 20
-
+
+
+
+ 8
+ 8
+ 20
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_spearman.xml
@@ -1,9 +1,13 @@
-
- 3
- 3
-
+
+
+
+ 3
+ 3
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_swordsman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_swordsman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_swordsman.xml
@@ -1,9 +1,13 @@
-
- 3
- 3
-
+
+
+
+ 3
+ 3
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_dog.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_dog.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_dog.xml
@@ -1,10 +1,14 @@
-
- 1
- 2
- 1
-
+
+
+
+ 1
+ 2
+ 1
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_defensive_elephant.xml
@@ -1,10 +1,14 @@
-
- 3
- 4
- 5
-
+
+
+
+ 3
+ 4
+ 5
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_skittish_elephant_infant.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_skittish_elephant_infant.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_fauna_hunt_skittish_elephant_infant.xml
@@ -1,10 +1,14 @@
-
- 1
- 3
- 1
-
+
+
+
+ 1
+ 3
+ 1
+
+
+
1.5
Index: binaries/data/mods/public/simulation/templates/template_unit_hero.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero.xml
@@ -1,10 +1,14 @@
-
- 10.0
- 20.0
- 15.0
-
+
+
+
+ 10.0
+ 20.0
+ 15.0
+
+
+
15
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry.xml
@@ -1,10 +1,14 @@
-
- 10
- 8
- 25
-
+
+
+
+ 10
+ 8
+ 25
+
+
+
50
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_spearman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_spearman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_spearman.xml
@@ -1,9 +1,13 @@
-
- 1
- 2
-
+
+
+
+ 1
+ 2
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_swordsman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_swordsman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_swordsman.xml
@@ -1,9 +1,13 @@
-
- 1
- 1
-
+
+
+
+ 1
+ 1
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_elephant_melee.xml
@@ -1,10 +1,14 @@
-
- 10
- 10
- 25
-
+
+
+
+ 10
+ 10
+ 25
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_healer.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_healer.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_healer.xml
@@ -1,10 +1,14 @@
-
- 4.0
- 8.0
- 4.0
-
+
+
+
+ 4.0
+ 8.0
+ 4.0
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry.xml
@@ -1,10 +1,14 @@
-
- 8
- 8
- 25
-
+
+
+
+ 8
+ 8
+ 25
+
+
+
40
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_pikeman.xml
@@ -1,9 +1,13 @@
-
- 9
- 9
-
+
+
+
+ 9
+ 9
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_spearman.xml
@@ -1,9 +1,13 @@
-
- 4
- 4
-
+
+
+
+ 4
+ 4
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_swordsman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_swordsman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_swordsman.xml
@@ -1,9 +1,13 @@
-
- 4
- 4
-
+
+
+
+ 4
+ 4
+
+
+
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
@@ -1,10 +1,14 @@
-
- 2
- 4
- 15
-
+
+
+
+ 2
+ 4
+ 15
+
+
+
2
Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_pikeman.xml
@@ -1,9 +1,13 @@
-
- 10
- 10
-
+
+
+
+ 10
+ 10
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_spearman.xml
@@ -1,9 +1,13 @@
-
- 5
- 5
-
+
+
+
+ 5
+ 5
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_swordsman.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_swordsman.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_infantry_melee_swordsman.xml
@@ -1,9 +1,13 @@
-
- 5
- 5
-
+
+
+
+ 5
+ 5
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged.xml
@@ -1,10 +1,14 @@
-
- 1
- 1
- 10
-
+
+
+
+ 1
+ 1
+ 10
+
+
+
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
@@ -1,9 +1,13 @@
-
- 1
- 1
-
+
+
+
+ 1
+ 1
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelinist.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelinist.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_infantry_ranged_javelinist.xml
@@ -1,9 +1,13 @@
-
- 1
- 1
-
+
+
+
+ 1
+ 1
+
+
+
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
@@ -1,9 +1,13 @@
-
- 1
- 1
-
+
+
+
+ 1
+ 1
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_ship.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_ship.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_ship.xml
@@ -1,10 +1,14 @@
-
- 5
- 10
- 5
-
+
+
+
+ 5
+ 10
+ 5
+
+
+
1
20
Index: binaries/data/mods/public/simulation/templates/template_unit_ship_fishing.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_ship_fishing.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_ship_fishing.xml
@@ -1,10 +1,14 @@
-
- 2
- 5
- 2
-
+
+
+
+ 2
+ 5
+ 2
+
+
+
Index: binaries/data/mods/public/simulation/templates/template_unit_ship_merchant.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_ship_merchant.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_ship_merchant.xml
@@ -1,10 +1,14 @@
-
- 2
- 5
- 2
-
+
+
+
+ 2
+ 5
+ 2
+
+
+
0
Index: binaries/data/mods/public/simulation/templates/template_unit_siege.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_siege.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_siege.xml
@@ -1,10 +1,14 @@
-
- 1
- 50
- 5
-
+
+
+
+ 1
+ 50
+ 5
+
+
+
500
10
Index: binaries/data/mods/public/simulation/templates/template_unit_support.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_support.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_support.xml
@@ -1,10 +1,14 @@
-
- 1
- 1
- 1
-
+
+
+
+ 1
+ 1
+ 1
+
+
+
8
Index: binaries/data/mods/public/simulation/templates/units/gaul_champion_fanatic.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/gaul_champion_fanatic.xml
+++ binaries/data/mods/public/simulation/templates/units/gaul_champion_fanatic.xml
@@ -1,9 +1,13 @@
-
- -4
- -4
-
+
+
+
+ -4
+ -4
+
+
+
0.75
Index: binaries/data/mods/public/simulation/templates/units/kush_champion_infantry_apedemak.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/kush_champion_infantry_apedemak.xml
+++ binaries/data/mods/public/simulation/templates/units/kush_champion_infantry_apedemak.xml
@@ -1,9 +1,13 @@
-
- -1
- -1
-
+
+
+
+ -1
+ -1
+
+
+
Index: binaries/data/mods/public/simulation/templates/units/kush_infantry_clubman_b.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/kush_infantry_clubman_b.xml
+++ binaries/data/mods/public/simulation/templates/units/kush_infantry_clubman_b.xml
@@ -1,8 +1,12 @@
-
- -1
-
+
+
+
+ -1
+
+
+
Index: binaries/data/mods/public/simulation/templates/units/mace_champion_infantry_e.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/mace_champion_infantry_e.xml
+++ binaries/data/mods/public/simulation/templates/units/mace_champion_infantry_e.xml
@@ -1,9 +1,13 @@
-
- 1
- 1
-
+
+
+
+ 1
+ 1
+
+
+
1.1
Index: binaries/data/mods/public/simulation/templates/units/maur_elephant_archer_b.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/maur_elephant_archer_b.xml
+++ binaries/data/mods/public/simulation/templates/units/maur_elephant_archer_b.xml
@@ -1,9 +1,13 @@
-
- 1.0
- 2.0
-
+
+
+
+ 1.0
+ 2.0
+
+
+
Index: binaries/data/mods/public/simulation/templates/units/maur_support_elephant.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/maur_support_elephant.xml
+++ binaries/data/mods/public/simulation/templates/units/maur_support_elephant.xml
@@ -1,10 +1,14 @@
-
- 5
- 8
- 10
-
+
+
+
+ 5
+ 8
+ 10
+
+
+
2.0
Index: binaries/data/mods/public/simulation/templates/units/merc_thorakites.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/merc_thorakites.xml
+++ binaries/data/mods/public/simulation/templates/units/merc_thorakites.xml
@@ -1,9 +1,13 @@
-
- 2
- 2
-
+
+
+
+ 2
+ 2
+
+
+