Index: binaries/data/mods/public/simulation/components/Attackable.js
===================================================================
--- /dev/null
+++ binaries/data/mods/public/simulation/components/Attackable.js
@@ -0,0 +1,11 @@
+function Attackable() {}
+
+Attackable.prototype.Schema = "";
+
+Attackable.prototype.Init = function()
+{
+};
+
+Attackable.prototype.Serialize = null;
+
+Engine.RegisterComponentType(IID_Attackable, "Attackable", Attackable);
Index: binaries/data/mods/public/simulation/components/BuildingAI.js
===================================================================
--- binaries/data/mods/public/simulation/components/BuildingAI.js
+++ binaries/data/mods/public/simulation/components/BuildingAI.js
@@ -139,8 +139,8 @@
var range = cmpAttack.GetRange(attackType);
this.enemyUnitsQuery = cmpRangeManager.CreateActiveParabolicQuery(
- this.entity, range.min, range.max, range.elevationBonus,
- enemies, IID_Resistance, cmpRangeManager.GetEntityFlagMask("normal"));
+ this.entity, range.min, range.max, range.elevationBonus,
+ enemies, IID_Attackable, cmpRangeManager.GetEntityFlagMask("normal"));
cmpRangeManager.EnableActiveQuery(this.enemyUnitsQuery);
};
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
@@ -76,7 +76,7 @@
// If we didn't hit the main target look for nearby units.
let ents = Attacking.EntitiesNearPoint(Vector2D.from3D(data.position), this.MISSILE_HIT_RADIUS,
- Attacking.GetPlayersToDamage(data.attackerOwner, data.friendlyFire));
+ Attacking.GetPlayersToDamage(data.attackerOwner, data.friendlyFire), IID_Attackable);
for (let ent of ents)
{
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
@@ -43,7 +43,7 @@
"" +
"" +
"" +
- "" +
+ "" +
"" +
"" +
Resistance.prototype.BuildResistanceSchema() +
@@ -52,7 +52,7 @@
Resistance.prototype.BuildResistanceSchema() +
"" +
"" +
- "";
+ "";
Resistance.prototype.Init = function()
{
Index: binaries/data/mods/public/simulation/components/UnitAI.js
===================================================================
--- binaries/data/mods/public/simulation/components/UnitAI.js
+++ binaries/data/mods/public/simulation/components/UnitAI.js
@@ -3772,7 +3772,7 @@
return;
let range = this.GetQueryRange(IID_Attack);
- this.losAttackRangeQuery = cmpRangeManager.CreateActiveQuery(this.entity, range.min, range.max, players, IID_Resistance, cmpRangeManager.GetEntityFlagMask("normal"));
+ this.losAttackRangeQuery = cmpRangeManager.CreateActiveQuery(this.entity, range.min, range.max, players, IID_Attackable, cmpRangeManager.GetEntityFlagMask("normal"));
if (enable)
cmpRangeManager.EnableActiveQuery(this.losAttackRangeQuery);
Index: binaries/data/mods/public/simulation/components/interfaces/Attackable.js
===================================================================
--- /dev/null
+++ binaries/data/mods/public/simulation/components/interfaces/Attackable.js
@@ -0,0 +1 @@
+Engine.RegisterInterface("Attackable");
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
@@ -1,6 +1,7 @@
Engine.LoadHelperScript("Attacking.js");
Engine.LoadHelperScript("Player.js");
Engine.LoadHelperScript("ValueModification.js");
+Engine.LoadComponentScript("interfaces/Attackable.js");
Engine.LoadComponentScript("interfaces/DelayedDamage.js");
Engine.LoadComponentScript("interfaces/Health.js");
Engine.LoadComponentScript("interfaces/Loot.js");
Index: binaries/data/mods/public/simulation/components/tests/test_UnitAI.js
===================================================================
--- binaries/data/mods/public/simulation/components/tests/test_UnitAI.js
+++ binaries/data/mods/public/simulation/components/tests/test_UnitAI.js
@@ -2,6 +2,7 @@
Engine.LoadHelperScript("Entity.js");
Engine.LoadHelperScript("Player.js");
Engine.LoadHelperScript("Sound.js");
+Engine.LoadComponentScript("interfaces/Attackable.js");
Engine.LoadComponentScript("interfaces/Auras.js");
Engine.LoadComponentScript("interfaces/Builder.js");
Engine.LoadComponentScript("interfaces/BuildingAI.js");
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
@@ -290,7 +290,7 @@
Attacking.prototype.CauseDamageOverArea = function(data)
{
let nearEnts = this.EntitiesNearPoint(data.origin, data.radius,
- this.GetPlayersToDamage(data.attackerOwner, data.friendlyFire));
+ this.GetPlayersToDamage(data.attackerOwner, data.friendlyFire), IID_Attackable);
let damageMultiplier = 1;
let cmpObstructionManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_ObstructionManager);
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,6 +1,7 @@
+
land
own
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,6 +1,7 @@
+
1
0