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.