diff --git a/binaries/data/mods/public/gui/text/tips/celtic_war_barge.txt b/binaries/data/mods/public/gui/text/tips/celtic_war_barge.txt
index f2edf19c62..67e3aa35fe 100644
--- a/binaries/data/mods/public/gui/text/tips/celtic_war_barge.txt
+++ b/binaries/data/mods/public/gui/text/tips/celtic_war_barge.txt
@@ -1,8 +1,11 @@
CELTIC WAR BARGE
- A medium "trireme"-class warship.
-- The only ship of its kind.
+- Available to the Celtic Factions (Birtons, Gauls), Mauryans and Iberians.
+
+- Can transport up to 40 units across the waters.
+
+- Increases firepower with garrissoned infantry.
- Cannot ram, like other triremes, but has greater health and armour.
-- Can transport up to 40 units across the waters.
\ No newline at end of file
diff --git a/binaries/data/mods/public/gui/text/tips/fishing.txt b/binaries/data/mods/public/gui/text/tips/fishing.txt
index 45a06378a4..eb57b35bd1 100644
--- a/binaries/data/mods/public/gui/text/tips/fishing.txt
+++ b/binaries/data/mods/public/gui/text/tips/fishing.txt
@@ -1,8 +1,10 @@
FISHING
- Fish the seas for a bountiful harvest.
-- Fishing boats carry a large amount of Food per trip.
+- Fishing boats carry a large amount of food per trip.
-- Garrison a Support Unit aboard to double the Fishing Boat's gathering rate.
+- Fishing is faster than gathering food on fields.
-- Careful! Fish are not an infinite resource!
\ No newline at end of file
+- Garrison a support unit aboard to double the fishing boat's gathering rate.
+
+- Careful! Fish are not an infinite resource!
diff --git a/binaries/data/mods/public/gui/text/tips/quinquereme.txt b/binaries/data/mods/public/gui/text/tips/quinquereme.txt
index 5ef4579391..48375ea93a 100644
--- a/binaries/data/mods/public/gui/text/tips/quinquereme.txt
+++ b/binaries/data/mods/public/gui/text/tips/quinquereme.txt
@@ -1,6 +1,8 @@
HEAVY WARSHIP
- The heaviest standard warship. Available to: Rome, Carthage, Ptolemies, and Seleucids.
-- Garrison ballistas to increase fire power.
+- Transports up to 50 units.
+
+- Increases firepower with garrissoned catapults.
- Has a ramming attack that sinks enemy ships (NOT IMPLEMENTED YET).
diff --git a/binaries/data/mods/public/simulation/components/BuildingAI.js b/binaries/data/mods/public/simulation/components/BuildingAI.js
index d4e1dea4a2..7c3349f7da 100644
--- a/binaries/data/mods/public/simulation/components/BuildingAI.js
+++ b/binaries/data/mods/public/simulation/components/BuildingAI.js
@@ -8,10 +8,15 @@ BuildingAI.prototype.Schema =
"" +
"" +
"" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
"" +
"" +
"" +
- "" +
+ "" +
"" +
"";
@@ -20,10 +25,34 @@ BuildingAI.prototype.MAX_PREFERENCE_BONUS = 2;
BuildingAI.prototype.Init = function()
{
this.currentRound = 0;
+ this.archersGarrisoned = 0;
this.arrowsLeft = 0;
this.targetUnits = [];
};
+BuildingAI.prototype.OnGarrisonedUnitsChanged = function(msg)
+{
+ let classes = this.template.GarrisonArrowClasses;
+
+ for (let ent of msg.added)
+ {
+ let cmpIdentity = Engine.QueryInterface(ent, IID_Identity);
+ if (!cmpIdentity)
+ continue;
+ if (MatchesClassList(cmpIdentity.GetClassesList(), classes))
+ ++this.archersGarrisoned;
+ }
+
+ for (let ent of msg.removed)
+ {
+ let cmpIdentity = Engine.QueryInterface(ent, IID_Identity);
+ if (!cmpIdentity)
+ continue;
+ if (MatchesClassList(cmpIdentity.GetClassesList(), classes))
+ --this.archersGarrisoned;
+ }
+};
+
BuildingAI.prototype.OnOwnershipChanged = function(msg)
{
this.targetUnits = [];
@@ -198,6 +227,15 @@ BuildingAI.prototype.GetDefaultArrowCount = function()
return ApplyValueModificationsToEntity("BuildingAI/DefaultArrowCount", arrowCount, this.entity);
};
+BuildingAI.prototype.GetMaxArrowCount = function()
+{
+ if (!this.template.MaxArrowCount)
+ return undefined;
+
+ let maxArrowCount = +this.template.MaxArrowCount;
+ return Math.round(ApplyValueModificationsToEntity("BuildingAI/MaxArrowCount", maxArrowCount, this.entity));
+};
+
BuildingAI.prototype.GetGarrisonArrowMultiplier = function()
{
var arrowMult = +this.template.GarrisonArrowMultiplier;
@@ -223,8 +261,10 @@ BuildingAI.prototype.GetArrowCount = function()
let cmpGarrisonHolder = Engine.QueryInterface(this.entity, IID_GarrisonHolder);
if (cmpGarrisonHolder)
- count += Math.round(cmpGarrisonHolder.GetGarrisonedArcherCount(this.GetGarrisonArrowClasses()) * this.GetGarrisonArrowMultiplier());
+ count += Math.round(this.archersGarrisoned * this.GetGarrisonArrowMultiplier());
+ if (this.GetMaxArrowCount() < count)
+ return this.GetMaxArrowCount();
return count;
};
diff --git a/binaries/data/mods/public/simulation/components/GarrisonHolder.js b/binaries/data/mods/public/simulation/components/GarrisonHolder.js
index d1485895e4..1f0aaadbdc 100644
--- a/binaries/data/mods/public/simulation/components/GarrisonHolder.js
+++ b/binaries/data/mods/public/simulation/components/GarrisonHolder.js
@@ -187,23 +187,6 @@ GarrisonHolder.prototype.GetGarrisonedEntitiesCount = function()
return count;
};
-/**
- * Get number of garrisoned units capable of shooting arrows
- * Not necessarily archers
- */
-GarrisonHolder.prototype.GetGarrisonedArcherCount = function(garrisonArrowClasses)
-{
- var count = 0;
- for each (var entity in this.entities)
- {
- var cmpIdentity = Engine.QueryInterface(entity, IID_Identity);
- var classes = cmpIdentity.GetClassesList();
- if (classes.some(c => garrisonArrowClasses.indexOf(c) > -1))
- count++;
- }
- return count;
-};
-
/**
* Checks if an entity can be allowed to garrison in the building
* based on its class
diff --git a/binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml b/binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml
index 53f0be3758..307e13a6cb 100644
--- a/binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml
+++ b/binaries/data/mods/public/simulation/templates/structures/ptol_military_colony.xml
@@ -15,6 +15,7 @@
1
+ 15
1
diff --git a/binaries/data/mods/public/simulation/templates/structures/rome_army_camp.xml b/binaries/data/mods/public/simulation/templates/structures/rome_army_camp.xml
index 86479bfa6a..dcbb980a4f 100644
--- a/binaries/data/mods/public/simulation/templates/structures/rome_army_camp.xml
+++ b/binaries/data/mods/public/simulation/templates/structures/rome_army_camp.xml
@@ -24,8 +24,9 @@
- 3
- 0.5
+ 1
+ 15
+ 1
own neutral enemy
diff --git a/binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml b/binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml
index 083684e99b..12ef15db4a 100644
--- a/binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml
+++ b/binaries/data/mods/public/simulation/templates/structures/sele_military_colony.xml
@@ -15,6 +15,7 @@
1
+ 15
1
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml
index 8fcafb19b8..76784f05a4 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_bireme.xml
@@ -15,7 +15,8 @@
2
- 0.5
+ 10
+ 1
Infantry Ranged
@@ -45,7 +46,8 @@
Light Warship
Warship Light Bow Ranged
- phase_town
+ phase_town
+ Garrison up to 20 units for transport. Garrison increases the firepower up to 10 arrows.
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml
index 0ec81de6ce..6a6ece152b 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_quinquereme.xml
@@ -23,6 +23,7 @@
1
+ 10
1
Catapult
@@ -52,7 +53,7 @@
Heavy Warship
- Garrison with catapults to increase ranged fire power.
+ Garrison up to 10 catapults to increase fire power.
Warship Heavy Ranged
phase_city
diff --git a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml
index cbf2d31af9..f8cf46c7d2 100644
--- a/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml
+++ b/binaries/data/mods/public/simulation/templates/template_unit_mechanical_ship_trireme.xml
@@ -15,7 +15,8 @@
3
- 0.5
+ 13
+ 1
Infantry Ranged
@@ -46,6 +47,7 @@
Medium Warship
Warship Medium Ranged
phase_town
+ Garrison up to 30 units for transport. Garrison increases the firepower up to 13 arrows.