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