Index: binaries/data/mods/public/globalscripts/Templates.js
===================================================================
--- binaries/data/mods/public/globalscripts/Templates.js
+++ binaries/data/mods/public/globalscripts/Templates.js
@@ -196,12 +196,13 @@
(2 * ret.attack[type].elevationBonus + ret.attack[type].maxRange));
}
ret.attack[type].repeatTime = getAttackStat("RepeatTime");
+ ret.attack[type].friendlyFire = template.Attack[type].FriendlyFire ? template.Attack[type].FriendlyFire != "false" : false;
if (template.Attack[type].Splash)
{
ret.attack[type].splash = {
// true if undefined
- "friendlyFire": template.Attack[type].Splash.FriendlyFire != "false",
+ "friendlyFire": template.Attack[type].FriendlyFire ? template.Attack[type].FriendlyFire != "false" : false,
"shape": template.Attack[type].Splash.Shape
};
for (let damageType of damageTypes.GetTypes())
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
@@ -89,6 +89,7 @@
"800" +
"1600" +
"1000" +
+ "false" +
"" +
"" +
"Cavalry" +
@@ -106,7 +107,6 @@
"" +
"Circular" +
"20" +
- "false" +
"0.0" +
"10.0" +
"0.0" +
@@ -162,11 +162,13 @@
"" +
"" +
"" +
+ "" +
+ "" +
+ "" +
"" +
"" +
"" +
"" +
- "" +
DamageTypes.BuildSchema("damage strength") +
Attack.prototype.bonusesSchema +
"" +
@@ -466,7 +468,7 @@
return false;
let splash = this.GetAttackStrengths(type + ".Splash");
- splash.friendlyFire = this.template[type].Splash.FriendlyFire != "false";
+ splash.friendlyFire = this.template[type].FriendlyFire != "false";
splash.shape = this.template[type].Splash.Shape;
return splash;
};
@@ -594,12 +596,12 @@
"bonus": this.GetBonusTemplate(type),
"isSplash": false,
"attackerOwner": attackerOwner,
+ "friendlyFire": this.template[type].FriendlyFire ? this.template[type].FriendlyFire != "false" : "false",
"attackImpactSound": attackImpactSound,
"statusEffects": this.template[type].StatusEffects
};
if (this.template[type].Splash)
{
- data.friendlyFire = this.template[type].Splash.FriendlyFire != "false";
data.radius = +this.template[type].Splash.Range;
data.shape = this.template[type].Splash.Shape;
data.isSplash = true;
Index: binaries/data/mods/public/simulation/components/Damage.js
===================================================================
--- binaries/data/mods/public/simulation/components/Damage.js
+++ binaries/data/mods/public/simulation/components/Damage.js
@@ -94,8 +94,8 @@
* @param {Object} data.bonus - the attack bonus template from the attacker.
* @param {string} data.attackImpactSound - the name of the sound emited on impact.
* @param {Object} data.statusEffects - status effects eg. poisoning, burning etc.
- * ***When splash damage***
* @param {boolean} data.friendlyFire - a flag indicating if allied entities are also damaged.
+ * ***When splash damage***
* @param {number} data.radius - the radius of the splash damage.
* @param {string} data.shape - the shape of the splash range.
* @param {Object} data.splashBonus - the attack bonus template from the attacker.
@@ -150,8 +150,7 @@
return;
// If we didn't hit the main target look for nearby units
- let cmpPlayer = QueryPlayerIDInterface(data.attackerOwner);
- let ents = this.EntitiesNearPoint(Vector2D.from3D(data.position), targetPosition.horizDistanceTo(data.position) * 2, cmpPlayer.GetEnemies());
+ let ents = this.EntitiesNearPoint(Vector2D.from3D(data.position), targetPosition.horizDistanceTo(data.position) * 2, this.GetPlayersToDamage(data.attackerOwner, data.friendlyFire));
for (let ent of ents)
{
if (!this.TestCollision(ent, data.position, lateness))
Index: binaries/data/mods/public/simulation/components/tests/test_Attack.js
===================================================================
--- binaries/data/mods/public/simulation/components/tests/test_Attack.js
+++ binaries/data/mods/public/simulation/components/tests/test_Attack.js
@@ -76,6 +76,7 @@
"Spread": 2,
"Gravity": 1
},
+ "FriendlyFire": "false",
"PreferredClasses": {
"_string": "Archer"
},
@@ -85,7 +86,6 @@
"Splash" : {
"Shape": "Circular",
"Range": 10,
- "FriendlyFire": "false",
"Hack": 0.0,
"Pierce": 15.0,
"Crush": 35.0,
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
@@ -35,6 +35,7 @@
"MaxRange": 50,
"MinRange": 0,
"Delay": 0,
+ "FriendlyFire": "false",
"Projectile": {
"Speed": 75.0,
"Spread": 0.5,
@@ -62,6 +63,7 @@
"attackerOwner": attackerOwner,
"position": targetPos,
"isSplash": false,
+ "friendlyFire": "false",
"projectileId": 9,
"direction": new Vector3D(1,0,0)
};
@@ -352,6 +354,7 @@
"projectileId": 9,
"bonus": undefined,
"isSplash": false,
+ "friendlyFire": "false",
"attackerOwner": 1
};
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
@@ -13,7 +13,6 @@
Circular
10
- false
0.0
15.0
35.0
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
@@ -13,7 +13,6 @@
Linear
8.0
- false
0.0
75.0
5.0
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
@@ -21,7 +21,6 @@
Circular
10
- false
0.0
15.0
35.0
Index: binaries/data/mods/public/simulation/templates/units/rome_siege_onager.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/rome_siege_onager.xml
+++ binaries/data/mods/public/simulation/templates/units/rome_siege_onager.xml
@@ -9,7 +9,6 @@
Circular
10
- false
40.0
0.0
40.0