Index: binaries/data/mods/public/globalscripts/Templates.js
===================================================================
--- binaries/data/mods/public/globalscripts/Templates.js
+++ binaries/data/mods/public/globalscripts/Templates.js
@@ -203,13 +203,14 @@
(2 * ret.attack[type].elevationBonus + ret.attack[type].maxRange));
ret.attack[type].repeatTime = getAttackStat("RepeatTime");
+ if (template.Attack[type].Projectile)
+ ret.attack[type].friendlyFire = template.Attack[type].Projectile.FriendlyFire == "true";
Object.assign(ret.attack[type], getAttackEffects(template.Attack[type], "Attack/" + type));
if (template.Attack[type].Splash)
{
ret.attack[type].splash = {
- // true if undefined
"friendlyFire": template.Attack[type].Splash.FriendlyFire != "false",
"shape": template.Attack[type].Splash.Shape,
};
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
@@ -71,6 +71,7 @@
"props/units/weapons/rock_flaming.xml" +
"props/units/weapons/rock_explosion.xml" +
"0.1" +
+ "false" +
"" +
"Champion" +
"" +
@@ -153,6 +154,7 @@
"" +
"" +
"" +
+ "" +
"" +
"" +
"" +
@@ -535,7 +537,8 @@
"position": realTargetPosition,
"direction": missileDirection,
"projectileId": id,
- "attackImpactSound": attackImpactSound
+ "attackImpactSound": attackImpactSound,
+ "friendlyFire": this.template[type].Projectile.FriendlyFire == "true",
};
if (this.template[type].Splash)
data.splash = {
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
@@ -20,6 +20,7 @@
* @param {number} data.projectileId - The id of the projectile.
* @param {Vector3D} data.direction - The unit vector defining the direction.
* @param {string} data.attackImpactSound - The name of the sound emited on impact.
+ * @param {boolean} data.friendlyFire - A flag indicating whether allied entities can also be damaged.
* ***When splash damage***
* @param {boolean} data.splash.friendlyFire - A flag indicating if allied entities are also damaged.
* @param {number} data.splash.radius - The radius of the splash damage.
@@ -67,9 +68,9 @@
if (!targetPosition)
return;
- // 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());
+ // If we didn't hit the main target look for nearby units.
+ let ents = Attacking.EntitiesNearPoint(Vector2D.from3D(data.position), targetPosition.horizDistanceTo(data.position) * 2,
+ Attacking.GetPlayersToDamage(data.attackerOwner, data.friendlyFire));
for (let ent of ents)
{
if (!Attacking.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
@@ -78,7 +78,8 @@
"Projectile": {
"Speed": 10,
"Spread": 2,
- "Gravity": 1
+ "Gravity": 1,
+ "FriendlyFire": false
},
"PreferredClasses": {
"_string": "Archer"
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
@@ -40,6 +40,7 @@
"Speed": 75.0,
"Spread": 0.5,
"Gravity": 9.81,
+ "FriendlyFire": false,
"LaunchPoint": { "@y": 3 }
}
}
@@ -375,6 +376,7 @@
"position": targetPos,
"direction": new Vector3D(1, 0, 0),
"projectileId": 9,
+ "friendlyFire": "false",
};
AddMock(SYSTEM_ENTITY, IID_PlayerManager, {
Index: binaries/data/mods/public/simulation/templates/campaigns/campaign_city_minor_test.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/campaigns/campaign_city_minor_test.xml
+++ binaries/data/mods/public/simulation/templates/campaigns/campaign_city_minor_test.xml
@@ -13,6 +13,7 @@
2000
75.0
+ false
Index: binaries/data/mods/public/simulation/templates/campaigns/campaign_city_test.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/campaigns/campaign_city_test.xml
+++ binaries/data/mods/public/simulation/templates/campaigns/campaign_city_test.xml
@@ -13,6 +13,7 @@
2000
75.0
+ false
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
@@ -26,6 +26,7 @@
75.0
1.5
9.81
+ false
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
@@ -31,6 +31,7 @@
75.0
1.5
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_tower.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_defensive_tower.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_defensive_tower.xml
@@ -14,6 +14,7 @@
75.0
1.5
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_structure_defensive_wall_tower.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_structure_defensive_wall_tower.xml
+++ binaries/data/mods/public/simulation/templates/template_structure_defensive_wall_tower.xml
@@ -16,6 +16,7 @@
75.0
1.5
9.81
+ false
Human
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
@@ -21,6 +21,7 @@
75.0
1.5
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_cavalry_ranged.xml
@@ -16,6 +16,7 @@
75.0
3.0
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_archer.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_archer.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_archer.xml
@@ -16,6 +16,7 @@
75.0
1.0
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_javelinist.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_javelinist.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_cavalry_javelinist.xml
@@ -16,6 +16,7 @@
62.5
1.0
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_archer.xml
@@ -16,6 +16,7 @@
75.0
1.0
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelinist.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelinist.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_champion_infantry_javelinist.xml
@@ -16,6 +16,7 @@
62.5
1.0
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_archer.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_archer.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_archer.xml
@@ -16,6 +16,7 @@
75.0
0.5
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelinist.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelinist.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_cavalry_javelinist.xml
@@ -16,6 +16,7 @@
62.5
0.5
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_archer.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_archer.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_archer.xml
@@ -16,6 +16,7 @@
75.0
0.5
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_javelinist.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_javelinist.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_hero_infantry_javelinist.xml
@@ -16,6 +16,7 @@
62.5
0.5
9.81
+ false
Human
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
@@ -21,6 +21,7 @@
75.0
3.0
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/template_unit_ship_bireme.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_ship_bireme.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_ship_bireme.xml
@@ -16,6 +16,7 @@
75.0
2.0
9.81
+ false
Ship Human
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
@@ -26,6 +26,7 @@
37.5
4.0
9.81
+ false
Ship Structure
Index: binaries/data/mods/public/simulation/templates/template_unit_ship_trireme.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_ship_trireme.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_ship_trireme.xml
@@ -16,6 +16,7 @@
75.0
2.0
9.81
+ false
Ship Human
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
@@ -26,6 +26,7 @@
150.0
2.0
9.81
+ false
Human Siege
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
@@ -16,6 +16,7 @@
37.5
4.0
9.81
+ false
props/units/weapons/rock_explosion.xml
0.1
Index: binaries/data/mods/public/simulation/templates/template_unit_siege_tower.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_siege_tower.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_siege_tower.xml
@@ -17,6 +17,7 @@
75.0
2.0
9.81
+ false
Human
Index: binaries/data/mods/public/simulation/templates/units/plane.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/plane.xml
+++ binaries/data/mods/public/simulation/templates/units/plane.xml
@@ -16,6 +16,7 @@
75.0
1.0
9.81
+ false
Index: binaries/data/mods/public/simulation/templates/units/theb_siege_fireraiser.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/theb_siege_fireraiser.xml
+++ binaries/data/mods/public/simulation/templates/units/theb_siege_fireraiser.xml
@@ -16,6 +16,7 @@
10.0
2.0
9.81
+ false