Index: binaries/data/mods/public/gui/session/unit_actions.js
===================================================================
--- binaries/data/mods/public/gui/session/unit_actions.js
+++ binaries/data/mods/public/gui/session/unit_actions.js
@@ -258,7 +258,7 @@
},
"getActionInfo": function(entState, targetState)
{
- if (!entState.unitAI || !entState.unitAI.canPatrol)
+ if (!entState.unitAI || !entState.patrol)
return false;
return { "possible": true };
@@ -713,7 +713,7 @@
{
if (!targetState.guard ||
!playerCheck(entState, targetState, ["Player", "Ally"]) ||
- !entState.unitAI || !entState.unitAI.canGuard ||
+ !entState.unitAI || !entState.guard ||
targetState.unitAI && targetState.unitAI.isGuarding)
return false;
@@ -1212,7 +1212,7 @@
"getInfo": function(entStates)
{
if (entStates.every(entState =>
- !entState.unitAI || !entState.unitAI.canGuard || entState.unitAI.isGuarding))
+ !entState.unitAI || !entState.guard || entState.unitAI.isGuarding))
return false;
return {
@@ -1265,7 +1265,7 @@
"patrol": {
"getInfo": function(entStates)
{
- if (!entStates.some(entState => entState.unitAI && entState.unitAI.canPatrol))
+ if (!entStates.some(entState => entState.unitAI && !!entState.patrol))
return false;
return {
@@ -1431,7 +1431,7 @@
{
return entities.some(ent => {
let entState = GetEntityState(ent);
- return entState && entState.unitAI && entState.unitAI.canPatrol;
+ return entState && entState.unitAI && !!entState.patrol;
});
}
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
@@ -540,7 +540,7 @@
"isCapturable": function() { return this.get("Capturable") !== undefined; },
- "canGuard": function() { return this.get("UnitAI/CanGuard") === "true"; },
+ "canGuard": function() { return this.get("Guard") !== undefined; },
"canGarrison": function() { return "Garrisonable" in this._template; },
});
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
@@ -350,13 +350,15 @@
"state": cmpUnitAI.GetCurrentState(),
"orders": cmpUnitAI.GetOrders(),
"hasWorkOrders": cmpUnitAI.HasWorkOrders(),
- "canGuard": cmpUnitAI.CanGuard(),
"isGuarding": cmpUnitAI.IsGuardOf(),
- "canPatrol": cmpUnitAI.CanPatrol(),
"selectableStances": cmpUnitAI.GetSelectableStances(),
"isIdle": cmpUnitAI.IsIdle(),
};
+ let cmpPatrol = Engine.QueryInterface(ent, IID_Patrol);
+ if (cmpPatrol)
+ ret.patrol = true;
+
let cmpGuard = Engine.QueryInterface(ent, IID_Guard);
if (cmpGuard)
ret.guard = {
Index: binaries/data/mods/public/simulation/components/Patrol.js
===================================================================
--- /dev/null
+++ binaries/data/mods/public/simulation/components/Patrol.js
@@ -0,0 +1,13 @@
+function Patrol() {}
+
+/**
+ * Placeholder component saying an entity can patrol.
+ */
+Patrol.prototype.Schema =
+ "";
+
+Patrol.prototype.Init = function() {};
+
+Patrol.prototype.Serialize = null;
+
+Engine.RegisterComponentType(IID_Patrol, "Patrol", Patrol);
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
@@ -18,12 +18,6 @@
"" +
"" +
"" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
"" +
"" +
"" +
@@ -4985,18 +4979,16 @@
// Do not let a unit already guarded to guard. This would work in principle,
// but would clutter the gui with too much buttons to take all cases into account
- var cmpGuard = Engine.QueryInterface(this.entity, IID_Guard);
- if (cmpGuard && cmpGuard.GetEntities().length)
- return false;
-
- return this.template.CanGuard == "true";
+ let cmpGuard = Engine.QueryInterface(this.entity, IID_Guard);
+ return cmpGuard && !cmpGuard.GetEntities().length;
};
UnitAI.prototype.CanPatrol = function()
{
// Formation controllers should always respond to commands
// (then the individual units can make up their own minds)
- return this.IsFormationController() || this.template.CanPatrol == "true";
+ let cmpPatrol = Engine.QueryInterface(this.entity, IID_Patrol);
+ return this.IsFormationController() || cmpPatrol;
};
/**
Index: binaries/data/mods/public/simulation/components/interfaces/Patrol.js
===================================================================
--- /dev/null
+++ binaries/data/mods/public/simulation/components/interfaces/Patrol.js
@@ -0,0 +1 @@
+Engine.RegisterInterface("Patrol");
Index: binaries/data/mods/public/simulation/templates/template_bird.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_bird.xml
+++ binaries/data/mods/public/simulation/templates/template_bird.xml
@@ -24,8 +24,6 @@
passive
passive
false
- false
- false
1000.0
10.0
10000
Index: binaries/data/mods/public/simulation/templates/template_formation.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_formation.xml
+++ binaries/data/mods/public/simulation/templates/template_formation.xml
@@ -62,8 +62,6 @@
aggressive
true
12.0
- true
- true
true
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
@@ -71,6 +71,7 @@
+
0
upright
@@ -117,8 +118,6 @@
aggressive
12.0
false
- true
- true
false
Index: binaries/data/mods/public/simulation/templates/template_unit_fauna.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_fauna.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_fauna.xml
@@ -18,10 +18,9 @@
food
+
- false
- false
8.0
24.0
2000
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
@@ -31,6 +31,7 @@
10
true
+
FishingBoat -ConquestCritical
@@ -42,6 +43,7 @@
10
0
+
6.0
1.0
@@ -63,8 +65,6 @@
passive
- false
- false
ship-small
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
@@ -20,6 +20,7 @@
10
true
+
400
@@ -36,6 +37,7 @@
15
0
+
12.0
@@ -50,8 +52,6 @@
passive
- false
- false
ship-small
Index: binaries/data/mods/public/simulation/templates/template_unit_support_female_citizen.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_support_female_citizen.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_support_female_citizen.xml
@@ -53,6 +53,7 @@
Citizen Worker
+
2.0
1.0
@@ -88,9 +89,6 @@
resource/mining/mining.xml
-
- false
-
32
Index: binaries/data/mods/public/simulation/templates/template_unit_support_trader.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/template_unit_support_trader.xml
+++ binaries/data/mods/public/simulation/templates/template_unit_support_trader.xml
@@ -7,6 +7,7 @@
80
+
100
@@ -17,6 +18,7 @@
Trade resources between your own markets and those of your allies.
+
@@ -40,10 +42,6 @@
0.75
-
- false
- false
-
60
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
@@ -38,6 +38,7 @@
10
10
+
pitch
@@ -63,9 +64,6 @@
actor/fauna/animal/elephant_trained.xml
-
- false
-
large
0.6
Index: binaries/data/mods/public/simulation/templates/units/spart_support_female_citizen.xml
===================================================================
--- binaries/data/mods/public/simulation/templates/units/spart_support_female_citizen.xml
+++ binaries/data/mods/public/simulation/templates/units/spart_support_female_citizen.xml
@@ -25,9 +25,7 @@
units/spart_support_female_citizen.png
units/spart_support_female_citizen
-
- true
-
+
units/spartans/female_citizen.xml