Clean up market classes:
template_structure_economic_market.xml → Market template_structure_military_dock.xml → Dock <Market/TradeType> node → Trade requirement for bartering: BarterMarket → Barter Change Petra accordingly Also changing: Renamed the Gates class to Gate, LongWall to WallLong (cf. WallTower), and StoneWall to Wall, to match their template file names. Adjusted AI code, technologies, and templates accordingly. Entity build restrictions: renamed Apadana to Palace; replaced UniqueStructure with IshtarGate and TempleOfVesta. added Council to the (unbuildable) spart_gerousia.xml, since it's functionally identical to athen_prytaneion.xml. Introduced the following classes: Council, IshtarGate, Library, TempleOfVesta, and Theater, to match their build restrictions. WallMedium and WallShort, to complement the already existing WallLong and WallTower classes. Stoa, TempleOfMars, and TriumphalArch, for completeness. Made the ArmyCamp, Colony, Gate, Lighthouse, Naval, Palace, Palisade, SiegeWall, and StoneWall classes visible. Deleted the now unused Apadana, Kennel, SpecialBuilding classes. Removed the Village class from outposts and palisades, because those are not supposed to count towards the phase technology requirements. Slightly rephrased the phase technology requirements tooltips. Corrected the <GenericName> of the various palisade files. Updated Structure tooltips from D2578 that have not already been committed elsewhere. Patch By: Nescio Differenital Revision: D2892 This was SVN commit r23865.
This commit is contained in:
parent
e428678b7e
commit
2ef3fd7a77
@ -1064,7 +1064,7 @@ PETRA.AttackPlan.prototype.checkTargetObstruction = function(gameState, target,
|
|||||||
if (!struct.position() || !struct.get("Obstruction") || struct.hasClass("Field"))
|
if (!struct.position() || !struct.get("Obstruction") || struct.hasClass("Field"))
|
||||||
continue;
|
continue;
|
||||||
// we consider that we can reach the target, but nonetheless check that we did not cross any enemy gate
|
// we consider that we can reach the target, but nonetheless check that we did not cross any enemy gate
|
||||||
if (dist < radius + 10 && !struct.hasClass("Gates"))
|
if (dist < radius + 10 && !struct.hasClass("Gate"))
|
||||||
continue;
|
continue;
|
||||||
// Check that we are really blocked by this structure, i.e. advancing by 1+0.8(clearance)m
|
// Check that we are really blocked by this structure, i.e. advancing by 1+0.8(clearance)m
|
||||||
// in the target direction would bring us inside its obstruction.
|
// in the target direction would bring us inside its obstruction.
|
||||||
@ -1436,15 +1436,15 @@ PETRA.AttackPlan.prototype.update = function(gameState, events)
|
|||||||
let targetClassesUnit;
|
let targetClassesUnit;
|
||||||
let targetClassesSiege;
|
let targetClassesSiege;
|
||||||
if (this.type == "Rush")
|
if (this.type == "Rush")
|
||||||
targetClassesUnit = { "attack": ["Unit", "Structure"], "avoid": ["Palisade", "StoneWall", "Tower", "Fortress"], "vetoEntities": veto };
|
targetClassesUnit = { "attack": ["Unit", "Structure"], "avoid": ["Palisade", "Wall", "Tower", "Fortress"], "vetoEntities": veto };
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (this.target.hasClass("Fortress"))
|
if (this.target.hasClass("Fortress"))
|
||||||
targetClassesUnit = { "attack": ["Unit", "Structure"], "avoid": ["Palisade", "StoneWall"], "vetoEntities": veto };
|
targetClassesUnit = { "attack": ["Unit", "Structure"], "avoid": ["Palisade", "Wall"], "vetoEntities": veto };
|
||||||
else if (this.target.hasClass("Palisade") || this.target.hasClass("StoneWall"))
|
else if (this.target.hasClass("Palisade") || this.target.hasClass("Wall"))
|
||||||
targetClassesUnit = { "attack": ["Unit", "Structure"], "avoid": ["Fortress"], "vetoEntities": veto };
|
targetClassesUnit = { "attack": ["Unit", "Structure"], "avoid": ["Fortress"], "vetoEntities": veto };
|
||||||
else
|
else
|
||||||
targetClassesUnit = { "attack": ["Unit", "Structure"], "avoid": ["Palisade", "StoneWall", "Fortress"], "vetoEntities": veto };
|
targetClassesUnit = { "attack": ["Unit", "Structure"], "avoid": ["Palisade", "Wall", "Fortress"], "vetoEntities": veto };
|
||||||
}
|
}
|
||||||
if (this.target.hasClass("Structure"))
|
if (this.target.hasClass("Structure"))
|
||||||
targetClassesSiege = { "attack": ["Structure"], "avoid": [], "vetoEntities": veto };
|
targetClassesSiege = { "attack": ["Structure"], "avoid": [], "vetoEntities": veto };
|
||||||
@ -1561,14 +1561,14 @@ PETRA.AttackPlan.prototype.update = function(gameState, events)
|
|||||||
{
|
{
|
||||||
mStruct.sort((structa, structb) => {
|
mStruct.sort((structa, structb) => {
|
||||||
let vala = structa.costSum();
|
let vala = structa.costSum();
|
||||||
if (structa.hasClass("Gates") && ent.canAttackClass("StoneWall"))
|
if (structa.hasClass("Gate") && ent.canAttackClass("Wall"))
|
||||||
vala += 10000;
|
vala += 10000;
|
||||||
else if (structa.hasDefensiveFire())
|
else if (structa.hasDefensiveFire())
|
||||||
vala += 1000;
|
vala += 1000;
|
||||||
else if (structa.hasClass("ConquestCritical"))
|
else if (structa.hasClass("ConquestCritical"))
|
||||||
vala += 200;
|
vala += 200;
|
||||||
let valb = structb.costSum();
|
let valb = structb.costSum();
|
||||||
if (structb.hasClass("Gates") && ent.canAttackClass("StoneWall"))
|
if (structb.hasClass("Gate") && ent.canAttackClass("Wall"))
|
||||||
valb += 10000;
|
valb += 10000;
|
||||||
else if (structb.hasDefensiveFire())
|
else if (structb.hasDefensiveFire())
|
||||||
valb += 1000;
|
valb += 1000;
|
||||||
@ -1576,7 +1576,7 @@ PETRA.AttackPlan.prototype.update = function(gameState, events)
|
|||||||
valb += 200;
|
valb += 200;
|
||||||
return valb - vala;
|
return valb - vala;
|
||||||
});
|
});
|
||||||
if (mStruct[0].hasClass("Gates"))
|
if (mStruct[0].hasClass("Gate"))
|
||||||
ent.attack(mStruct[0].id(), PETRA.allowCapture(gameState, ent, mStruct[0]));
|
ent.attack(mStruct[0].id(), PETRA.allowCapture(gameState, ent, mStruct[0]));
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1676,18 +1676,18 @@ PETRA.AttackPlan.prototype.update = function(gameState, events)
|
|||||||
{
|
{
|
||||||
mStruct.sort((structa, structb) => {
|
mStruct.sort((structa, structb) => {
|
||||||
let vala = structa.costSum();
|
let vala = structa.costSum();
|
||||||
if (structa.hasClass("Gates") && ent.canAttackClass("StoneWall"))
|
if (structa.hasClass("Gate") && ent.canAttackClass("Wall"))
|
||||||
vala += 10000;
|
vala += 10000;
|
||||||
else if (structa.hasClass("ConquestCritical"))
|
else if (structa.hasClass("ConquestCritical"))
|
||||||
vala += 100;
|
vala += 100;
|
||||||
let valb = structb.costSum();
|
let valb = structb.costSum();
|
||||||
if (structb.hasClass("Gates") && ent.canAttackClass("StoneWall"))
|
if (structb.hasClass("Gate") && ent.canAttackClass("Wall"))
|
||||||
valb += 10000;
|
valb += 10000;
|
||||||
else if (structb.hasClass("ConquestCritical"))
|
else if (structb.hasClass("ConquestCritical"))
|
||||||
valb += 100;
|
valb += 100;
|
||||||
return valb - vala;
|
return valb - vala;
|
||||||
});
|
});
|
||||||
if (mStruct[0].hasClass("Gates"))
|
if (mStruct[0].hasClass("Gate"))
|
||||||
ent.attack(mStruct[0].id(), false);
|
ent.attack(mStruct[0].id(), false);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -1833,11 +1833,11 @@ PETRA.AttackPlan.prototype.UpdateWalking = function(gameState, events)
|
|||||||
if (!this.path[0][0] || !this.path[0][1])
|
if (!this.path[0][0] || !this.path[0][1])
|
||||||
API3.warn("Start: Problem with path " + uneval(this.path));
|
API3.warn("Start: Problem with path " + uneval(this.path));
|
||||||
// We're stuck, presumably. Check if there are no walls just close to us.
|
// We're stuck, presumably. Check if there are no walls just close to us.
|
||||||
for (let ent of gameState.getEnemyStructures().filter(API3.Filters.byClass(["Palisade", "StoneWall"])).values())
|
for (let ent of gameState.getEnemyStructures().filter(API3.Filters.byClass(["Palisade", "Wall"])).values())
|
||||||
{
|
{
|
||||||
if (API3.SquareVectorDistance(this.position, ent.position()) > 800)
|
if (API3.SquareVectorDistance(this.position, ent.position()) > 800)
|
||||||
continue;
|
continue;
|
||||||
let enemyClass = ent.hasClass("StoneWall") ? "StoneWall" : "Palisade";
|
let enemyClass = ent.hasClass("Wall") ? "Wall" : "Palisade";
|
||||||
// there are walls, so check if we can attack
|
// there are walls, so check if we can attack
|
||||||
if (this.unitCollection.filter(API3.Filters.byCanAttackClass(enemyClass)).hasEntities())
|
if (this.unitCollection.filter(API3.Filters.byCanAttackClass(enemyClass)).hasEntities())
|
||||||
{
|
{
|
||||||
|
@ -781,7 +781,7 @@ PETRA.BaseManager.prototype.assignToFoundations = function(gameState, noRepair)
|
|||||||
continue; // we do not build fields
|
continue; // we do not build fields
|
||||||
|
|
||||||
if (gameState.ai.HQ.isNearInvadingArmy(target.position()))
|
if (gameState.ai.HQ.isNearInvadingArmy(target.position()))
|
||||||
if (!target.hasClass("CivCentre") && !target.hasClass("StoneWall") &&
|
if (!target.hasClass("CivCentre") && !target.hasClass("Wall") &&
|
||||||
(!target.hasClass("Wonder") || !gameState.getVictoryConditions().has("wonder")))
|
(!target.hasClass("Wonder") || !gameState.getVictoryConditions().has("wonder")))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
@ -801,7 +801,7 @@ PETRA.BaseManager.prototype.assignToFoundations = function(gameState, noRepair)
|
|||||||
target.getMetadata(PlayerID, "phaseUp") == true)
|
target.getMetadata(PlayerID, "phaseUp") == true)
|
||||||
targetNB = 7;
|
targetNB = 7;
|
||||||
else if (target.hasClass("Barracks") || target.hasClass("Range") || target.hasClass("Stable") ||
|
else if (target.hasClass("Barracks") || target.hasClass("Range") || target.hasClass("Stable") ||
|
||||||
target.hasClass("Tower") || target.hasClass("Market"))
|
target.hasClass("Tower") || target.hasClass("Market"))
|
||||||
targetNB = 4;
|
targetNB = 4;
|
||||||
else if (target.hasClass("House") || target.hasClass("DropsiteWood"))
|
else if (target.hasClass("House") || target.hasClass("DropsiteWood"))
|
||||||
targetNB = 3;
|
targetNB = 3;
|
||||||
@ -880,7 +880,7 @@ PETRA.BaseManager.prototype.assignToFoundations = function(gameState, noRepair)
|
|||||||
if (gameState.ai.HQ.isNearInvadingArmy(target.position()))
|
if (gameState.ai.HQ.isNearInvadingArmy(target.position()))
|
||||||
{
|
{
|
||||||
if (target.healthLevel() > 0.5 ||
|
if (target.healthLevel() > 0.5 ||
|
||||||
!target.hasClass("CivCentre") && !target.hasClass("StoneWall") &&
|
!target.hasClass("CivCentre") && !target.hasClass("Wall") &&
|
||||||
(!target.hasClass("Wonder") || !gameState.getVictoryConditions().has("wonder")))
|
(!target.hasClass("Wonder") || !gameState.getVictoryConditions().has("wonder")))
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -282,7 +282,7 @@ PETRA.HQ.prototype.checkEvents = function(gameState, events)
|
|||||||
let ent = gameState.getEntityById(evt.newentity);
|
let ent = gameState.getEntityById(evt.newentity);
|
||||||
if (!ent || ent.owner() != PlayerID)
|
if (!ent || ent.owner() != PlayerID)
|
||||||
continue;
|
continue;
|
||||||
if (ent.hasClass("BarterMarket") && this.maxFields)
|
if (ent.hasClass("Market") && this.maxFields)
|
||||||
this.maxFields = false;
|
this.maxFields = false;
|
||||||
if (ent.getMetadata(PlayerID, "base") === undefined)
|
if (ent.getMetadata(PlayerID, "base") === undefined)
|
||||||
continue;
|
continue;
|
||||||
@ -556,7 +556,7 @@ PETRA.HQ.prototype.checkPhaseRequirements = function(gameState, queues)
|
|||||||
!queues.militaryBuilding.hasQueuedUnits() &&
|
!queues.militaryBuilding.hasQueuedUnits() &&
|
||||||
!queues.defenseBuilding.hasQueuedUnits())
|
!queues.defenseBuilding.hasQueuedUnits())
|
||||||
{
|
{
|
||||||
if (!gameState.getOwnEntitiesByClass("BarterMarket", true).hasEntities() &&
|
if (!gameState.getOwnEntitiesByClass("Market", true).hasEntities() &&
|
||||||
this.canBuild(gameState, "structures/{civ}_market"))
|
this.canBuild(gameState, "structures/{civ}_market"))
|
||||||
{
|
{
|
||||||
plan = new PETRA.ConstructionPlan(gameState, "structures/{civ}_market", { "phaseUp": true });
|
plan = new PETRA.ConstructionPlan(gameState, "structures/{civ}_market", { "phaseUp": true });
|
||||||
@ -1281,9 +1281,9 @@ PETRA.HQ.prototype.findStrategicCCLocation = function(gameState, template)
|
|||||||
*/
|
*/
|
||||||
PETRA.HQ.prototype.findMarketLocation = function(gameState, template)
|
PETRA.HQ.prototype.findMarketLocation = function(gameState, template)
|
||||||
{
|
{
|
||||||
let markets = gameState.updatingCollection("diplo-ExclusiveAllyMarkets", API3.Filters.byClass("Market"), gameState.getExclusiveAllyEntities()).toEntityArray();
|
let markets = gameState.updatingCollection("diplo-ExclusiveAllyMarkets", API3.Filters.byClass("Trade"), gameState.getExclusiveAllyEntities()).toEntityArray();
|
||||||
if (!markets.length)
|
if (!markets.length)
|
||||||
markets = gameState.updatingCollection("OwnMarkets", API3.Filters.byClass("Market"), gameState.getOwnStructures()).toEntityArray();
|
markets = gameState.updatingCollection("OwnMarkets", API3.Filters.byClass("Trade"), gameState.getOwnStructures()).toEntityArray();
|
||||||
|
|
||||||
if (!markets.length) // this is the first market. For the time being, place it arbitrarily by the ConstructionPlan
|
if (!markets.length) // this is the first market. For the time being, place it arbitrarily by the ConstructionPlan
|
||||||
return [-1, -1, -1, 0];
|
return [-1, -1, -1, 0];
|
||||||
@ -1306,7 +1306,7 @@ PETRA.HQ.prototype.findMarketLocation = function(gameState, template)
|
|||||||
let bestDistSq;
|
let bestDistSq;
|
||||||
let bestGainMult;
|
let bestGainMult;
|
||||||
let radius = Math.ceil(template.obstructionRadius().max / obstructions.cellSize);
|
let radius = Math.ceil(template.obstructionRadius().max / obstructions.cellSize);
|
||||||
let isNavalMarket = template.hasClass("NavalMarket");
|
let isNavalMarket = template.hasClass("Naval") && template.hasClass("Trade");
|
||||||
|
|
||||||
let width = this.territoryMap.width;
|
let width = this.territoryMap.width;
|
||||||
let cellSize = this.territoryMap.cellSize;
|
let cellSize = this.territoryMap.cellSize;
|
||||||
@ -1335,7 +1335,7 @@ PETRA.HQ.prototype.findMarketLocation = function(gameState, template)
|
|||||||
let gainMultiplier;
|
let gainMultiplier;
|
||||||
for (let market of markets)
|
for (let market of markets)
|
||||||
{
|
{
|
||||||
if (isNavalMarket && market.hasClass("NavalMarket"))
|
if (isNavalMarket && template.hasClass("Naval") && template.hasClass("Trade"))
|
||||||
{
|
{
|
||||||
if (PETRA.getSeaAccess(gameState, market) != gameState.ai.accessibility.getAccessValue(pos, true))
|
if (PETRA.getSeaAccess(gameState, market) != gameState.ai.accessibility.getAccessValue(pos, true))
|
||||||
continue;
|
continue;
|
||||||
@ -1377,13 +1377,13 @@ PETRA.HQ.prototype.findMarketLocation = function(gameState, template)
|
|||||||
let expectedGain = Math.round(bestGainMult * TradeGain(bestDistSq, gameState.sharedScript.mapSize));
|
let expectedGain = Math.round(bestGainMult * TradeGain(bestDistSq, gameState.sharedScript.mapSize));
|
||||||
if (this.Config.debug > 1)
|
if (this.Config.debug > 1)
|
||||||
API3.warn("this would give a trading gain of " + expectedGain);
|
API3.warn("this would give a trading gain of " + expectedGain);
|
||||||
// do not keep it if gain is too small, except if this is our first BarterMarket
|
// Do not keep it if gain is too small, except if this is our first Market.
|
||||||
let idx;
|
let idx;
|
||||||
if (expectedGain < this.tradeManager.minimalGain)
|
if (expectedGain < this.tradeManager.minimalGain)
|
||||||
{
|
{
|
||||||
if (template.hasClass("BarterMarket") &&
|
if (template.hasClass("Market") &&
|
||||||
!gameState.getOwnEntitiesByClass("BarterMarket", true).hasEntities())
|
!gameState.getOwnEntitiesByClass("Market", true).hasEntities())
|
||||||
idx = -1; // needed by queueplanBuilding manager to keep that market
|
idx = -1; // Needed by queueplanBuilding manager to keep that Market.
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -1538,7 +1538,7 @@ PETRA.HQ.prototype.buildTemple = function(gameState, queues)
|
|||||||
// at least one market (which have the same queue) should be build before any temple
|
// at least one market (which have the same queue) should be build before any temple
|
||||||
if (queues.economicBuilding.hasQueuedUnits() ||
|
if (queues.economicBuilding.hasQueuedUnits() ||
|
||||||
gameState.getOwnEntitiesByClass("Temple", true).hasEntities() ||
|
gameState.getOwnEntitiesByClass("Temple", true).hasEntities() ||
|
||||||
!gameState.getOwnEntitiesByClass("BarterMarket", true).hasEntities())
|
!gameState.getOwnEntitiesByClass("Market", true).hasEntities())
|
||||||
return;
|
return;
|
||||||
// Try to build a temple earlier if in regicide to recruit healer guards
|
// Try to build a temple earlier if in regicide to recruit healer guards
|
||||||
if (this.currentPhase < 3 && !gameState.getVictoryConditions().has("regicide"))
|
if (this.currentPhase < 3 && !gameState.getVictoryConditions().has("regicide"))
|
||||||
@ -1554,11 +1554,11 @@ PETRA.HQ.prototype.buildTemple = function(gameState, queues)
|
|||||||
|
|
||||||
PETRA.HQ.prototype.buildMarket = function(gameState, queues)
|
PETRA.HQ.prototype.buildMarket = function(gameState, queues)
|
||||||
{
|
{
|
||||||
if (gameState.getOwnEntitiesByClass("BarterMarket", true).hasEntities() ||
|
if (gameState.getOwnEntitiesByClass("Market", true).hasEntities() ||
|
||||||
!this.canBuild(gameState, "structures/{civ}_market"))
|
!this.canBuild(gameState, "structures/{civ}_market"))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (queues.economicBuilding.hasQueuedUnitsWithClass("BarterMarket"))
|
if (queues.economicBuilding.hasQueuedUnitsWithClass("Market"))
|
||||||
{
|
{
|
||||||
if (!queues.economicBuilding.paused)
|
if (!queues.economicBuilding.paused)
|
||||||
{
|
{
|
||||||
@ -1902,7 +1902,7 @@ PETRA.HQ.prototype.buildBlacksmith = function(gameState, queues)
|
|||||||
queues.militaryBuilding.hasQueuedUnits() || gameState.getOwnEntitiesByClass("Blacksmith", true).length)
|
queues.militaryBuilding.hasQueuedUnits() || gameState.getOwnEntitiesByClass("Blacksmith", true).length)
|
||||||
return;
|
return;
|
||||||
// Build a market before the blacksmith.
|
// Build a market before the blacksmith.
|
||||||
if (!gameState.getOwnEntitiesByClass("BarterMarket", true).hasEntities())
|
if (!gameState.getOwnEntitiesByClass("Market", true).hasEntities())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (this.canBuild(gameState, "structures/{civ}_blacksmith"))
|
if (this.canBuild(gameState, "structures/{civ}_blacksmith"))
|
||||||
@ -2670,7 +2670,7 @@ PETRA.HQ.prototype.update = function(gameState, queues, events)
|
|||||||
Engine.ProfileStart("Headquarters update");
|
Engine.ProfileStart("Headquarters update");
|
||||||
this.turnCache = {};
|
this.turnCache = {};
|
||||||
this.territoryMap = PETRA.createTerritoryMap(gameState);
|
this.territoryMap = PETRA.createTerritoryMap(gameState);
|
||||||
this.canBarter = gameState.getOwnEntitiesByClass("BarterMarket", true).filter(API3.Filters.isBuilt()).hasEntities();
|
this.canBarter = gameState.getOwnEntitiesByClass("Market", true).filter(API3.Filters.isBuilt()).hasEntities();
|
||||||
// TODO find a better way to update
|
// TODO find a better way to update
|
||||||
if (this.currentPhase != gameState.currentPhase())
|
if (this.currentPhase != gameState.currentPhase())
|
||||||
{
|
{
|
||||||
|
@ -713,8 +713,8 @@ PETRA.NavalManager.prototype.buildNavalStructures = function(gameState, queues)
|
|||||||
|
|
||||||
if (gameState.ai.HQ.getAccountedPopulation(gameState) > this.Config.Economy.popForDock)
|
if (gameState.ai.HQ.getAccountedPopulation(gameState) > this.Config.Economy.popForDock)
|
||||||
{
|
{
|
||||||
if (queues.dock.countQueuedUnitsWithClass("NavalMarket") === 0 &&
|
if (queues.dock.countQueuedUnitsWithClass("Dock") === 0 &&
|
||||||
!gameState.getOwnStructures().filter(API3.Filters.and(API3.Filters.byClass("NavalMarket"), API3.Filters.isFoundation())).hasEntities() &&
|
!gameState.getOwnStructures().filter(API3.Filters.and(API3.Filters.byClass("Dock"), API3.Filters.isFoundation())).hasEntities() &&
|
||||||
gameState.ai.HQ.canBuild(gameState, "structures/{civ}_dock"))
|
gameState.ai.HQ.canBuild(gameState, "structures/{civ}_dock"))
|
||||||
{
|
{
|
||||||
let dockStarted = false;
|
let dockStarted = false;
|
||||||
@ -745,8 +745,8 @@ PETRA.NavalManager.prototype.buildNavalStructures = function(gameState, queues)
|
|||||||
if (!this.docks.filter(API3.Filters.byClass("Dock")).hasEntities() ||
|
if (!this.docks.filter(API3.Filters.byClass("Dock")).hasEntities() ||
|
||||||
this.docks.filter(API3.Filters.byClass("Shipyard")).hasEntities())
|
this.docks.filter(API3.Filters.byClass("Shipyard")).hasEntities())
|
||||||
return;
|
return;
|
||||||
// Use in priority resources to build a market
|
// Use in priority resources to build a Market.
|
||||||
if (!gameState.getOwnEntitiesByClass("BarterMarket", true).hasEntities() &&
|
if (!gameState.getOwnEntitiesByClass("Market", true).hasEntities() &&
|
||||||
gameState.ai.HQ.canBuild(gameState, "structures/{civ}_market"))
|
gameState.ai.HQ.canBuild(gameState, "structures/{civ}_market"))
|
||||||
return;
|
return;
|
||||||
let template;
|
let template;
|
||||||
|
@ -54,10 +54,10 @@ PETRA.ConstructionPlan.prototype.start = function(gameState)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.metadata && this.metadata.expectedGain && (!this.template.hasClass("BarterMarket") ||
|
if (this.metadata && this.metadata.expectedGain && (!this.template.hasClass("Market") ||
|
||||||
gameState.getOwnEntitiesByClass("BarterMarket", true).hasEntities()))
|
gameState.getOwnEntitiesByClass("Market", true).hasEntities()))
|
||||||
{
|
{
|
||||||
// Check if this market is still worth building (others may have been built making it useless)
|
// Check if this Market is still worth building (others may have been built making it useless).
|
||||||
let tradeManager = gameState.ai.HQ.tradeManager;
|
let tradeManager = gameState.ai.HQ.tradeManager;
|
||||||
tradeManager.checkRoutes(gameState);
|
tradeManager.checkRoutes(gameState);
|
||||||
if (!tradeManager.isNewMarketWorth(this.metadata.expectedGain))
|
if (!tradeManager.isNewMarketWorth(this.metadata.expectedGain))
|
||||||
@ -161,7 +161,7 @@ PETRA.ConstructionPlan.prototype.findGoodPosition = function(gameState)
|
|||||||
if (!template.hasClass("Fortress") || gameState.getOwnEntitiesByClass("Fortress", true).hasEntities())
|
if (!template.hasClass("Fortress") || gameState.getOwnEntitiesByClass("Fortress", true).hasEntities())
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if (template.hasClass("Market")) // Docks (i.e. NavalMarket) are done before
|
else if (template.hasClass("Market")) // Docks are done before.
|
||||||
{
|
{
|
||||||
let pos = HQ.findMarketLocation(gameState, template);
|
let pos = HQ.findMarketLocation(gameState, template);
|
||||||
if (pos && pos[2] > 0)
|
if (pos && pos[2] > 0)
|
||||||
@ -218,29 +218,29 @@ PETRA.ConstructionPlan.prototype.findGoodPosition = function(gameState)
|
|||||||
if (struct.resourceDropsiteTypes() && struct.resourceDropsiteTypes().indexOf("food") != -1)
|
if (struct.resourceDropsiteTypes() && struct.resourceDropsiteTypes().indexOf("food") != -1)
|
||||||
{
|
{
|
||||||
if (template.hasClass("Field") || template.hasClass("Corral"))
|
if (template.hasClass("Field") || template.hasClass("Corral"))
|
||||||
placement.addInfluence(x, z, 80/cellSize, 50);
|
placement.addInfluence(x, z, 80 / cellSize, 50);
|
||||||
else // If this is not a field add a negative influence because we want to leave this area for fields
|
else // If this is not a field add a negative influence because we want to leave this area for fields
|
||||||
placement.addInfluence(x, z, 80/cellSize, -20);
|
placement.addInfluence(x, z, 80 / cellSize, -20);
|
||||||
}
|
}
|
||||||
else if (template.hasClass("House"))
|
else if (template.hasClass("House"))
|
||||||
{
|
{
|
||||||
if (ent.hasClass("House"))
|
if (ent.hasClass("House"))
|
||||||
{
|
{
|
||||||
placement.addInfluence(x, z, 60/cellSize, 40); // houses are close to other houses
|
placement.addInfluence(x, z, 60 / cellSize, 40); // houses are close to other houses
|
||||||
alreadyHasHouses = true;
|
alreadyHasHouses = true;
|
||||||
}
|
}
|
||||||
else if (!ent.hasClass("StoneWall") || ent.hasClass("Gates"))
|
else if (!ent.hasClass("Wall") || ent.hasClass("Gate"))
|
||||||
placement.addInfluence(x, z, 60/cellSize, -40); // and further away from other stuffs
|
placement.addInfluence(x, z, 60 / cellSize, -40); // and further away from other stuffs
|
||||||
}
|
}
|
||||||
else if (template.hasClass("Farmstead") && (!ent.hasClass("Field") && !ent.hasClass("Corral") &&
|
else if (template.hasClass("Farmstead") && (!ent.hasClass("Field") && !ent.hasClass("Corral") &&
|
||||||
(!ent.hasClass("StoneWall") || ent.hasClass("Gates"))))
|
(!ent.hasClass("Wall") || ent.hasClass("Gate"))))
|
||||||
placement.addInfluence(x, z, 100/cellSize, -25); // move farmsteads away to make room (StoneWall test needed for iber)
|
placement.addInfluence(x, z, 100 / cellSize, -25); // move farmsteads away to make room (Wall test needed for iber)
|
||||||
else if (template.hasClass("GarrisonFortress") && ent.hasClass("House"))
|
else if (template.hasClass("GarrisonFortress") && ent.hasClass("House"))
|
||||||
placement.addInfluence(x, z, 120/cellSize, -50);
|
placement.addInfluence(x, z, 120 / cellSize, -50);
|
||||||
else if (template.hasClass("Military"))
|
else if (template.hasClass("Military"))
|
||||||
placement.addInfluence(x, z, 40/cellSize, -40);
|
placement.addInfluence(x, z, 40 / cellSize, -40);
|
||||||
else if (template.genericName() == "Rotary Mill" && ent.hasClass("Field"))
|
else if (template.genericName() == "Rotary Mill" && ent.hasClass("Field"))
|
||||||
placement.addInfluence(x, z, 60/cellSize, 40);
|
placement.addInfluence(x, z, 60 / cellSize, 40);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (template.hasClass("Farmstead"))
|
if (template.hasClass("Farmstead"))
|
||||||
@ -256,8 +256,8 @@ PETRA.ConstructionPlan.prototype.findGoodPosition = function(gameState)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Requires to be inside our territory, and inside our base territory if required
|
// Requires to be inside our territory, and inside our base territory if required
|
||||||
// and if our first market, put it on border if possible to maximize distance with next market
|
// and if our first market, put it on border if possible to maximize distance with next Market.
|
||||||
let favorBorder = template.hasClass("BarterMarket");
|
let favorBorder = template.hasClass("Market");
|
||||||
let disfavorBorder = gameState.currentPhase() > 1 && !template.hasDefensiveFire();
|
let disfavorBorder = gameState.currentPhase() > 1 && !template.hasDefensiveFire();
|
||||||
let favoredBase = this.metadata && (this.metadata.favoredBase ||
|
let favoredBase = this.metadata && (this.metadata.favoredBase ||
|
||||||
(this.metadata.militaryBase ? HQ.findBestBaseForMilitary(gameState) : undefined));
|
(this.metadata.militaryBase ? HQ.findBestBaseForMilitary(gameState) : undefined));
|
||||||
@ -319,7 +319,7 @@ PETRA.ConstructionPlan.prototype.findGoodPosition = function(gameState)
|
|||||||
this.type == gameState.applyCiv("structures/{civ}_elephant_stables"))
|
this.type == gameState.applyCiv("structures/{civ}_elephant_stables"))
|
||||||
radius = Math.floor((template.obstructionRadius().max + 8) / obstructions.cellSize);
|
radius = Math.floor((template.obstructionRadius().max + 8) / obstructions.cellSize);
|
||||||
else if (template.resourceDropsiteTypes() === undefined && !template.hasClass("House") &&
|
else if (template.resourceDropsiteTypes() === undefined && !template.hasClass("House") &&
|
||||||
!template.hasClass("Field") && !template.hasClass("BarterMarket"))
|
!template.hasClass("Field") && !template.hasClass("Market"))
|
||||||
radius = Math.ceil((template.obstructionRadius().max + 4) / obstructions.cellSize);
|
radius = Math.ceil((template.obstructionRadius().max + 4) / obstructions.cellSize);
|
||||||
else
|
else
|
||||||
radius = Math.ceil(template.obstructionRadius().max / obstructions.cellSize);
|
radius = Math.ceil(template.obstructionRadius().max / obstructions.cellSize);
|
||||||
|
@ -199,7 +199,7 @@ PETRA.ResearchManager.prototype.update = function(gameState, queues)
|
|||||||
{
|
{
|
||||||
let template = techs[i][1]._template;
|
let template = techs[i][1]._template;
|
||||||
if (template.affects && template.affects.length === 1 &&
|
if (template.affects && template.affects.length === 1 &&
|
||||||
(template.affects[0] === "Healer" || template.affects[0] === "Outpost" || template.affects[0] === "StoneWall"))
|
(template.affects[0] === "Healer" || template.affects[0] === "Outpost" || template.affects[0] === "Wall"))
|
||||||
{
|
{
|
||||||
techs.splice(i--, 1);
|
techs.splice(i--, 1);
|
||||||
continue;
|
continue;
|
||||||
|
@ -91,7 +91,7 @@ PETRA.TradeManager.prototype.trainMoreTraders = function(gameState, queues)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
template = gameState.applyCiv("units/{civ}_support_trader");
|
template = gameState.applyCiv("units/{civ}_support_trader");
|
||||||
if (!this.tradeRoute.source.hasClass("NavalMarket"))
|
if (!this.tradeRoute.source.hasClass("Naval"))
|
||||||
metadata.base = this.tradeRoute.source.getMetadata(PlayerID, "base");
|
metadata.base = this.tradeRoute.source.getMetadata(PlayerID, "base");
|
||||||
else
|
else
|
||||||
metadata.base = this.tradeRoute.target.getMetadata(PlayerID, "base");
|
metadata.base = this.tradeRoute.target.getMetadata(PlayerID, "base");
|
||||||
@ -214,7 +214,7 @@ PETRA.TradeManager.prototype.setTradingGoods = function(gameState)
|
|||||||
*/
|
*/
|
||||||
PETRA.TradeManager.prototype.performBarter = function(gameState)
|
PETRA.TradeManager.prototype.performBarter = function(gameState)
|
||||||
{
|
{
|
||||||
let barterers = gameState.getOwnEntitiesByClass("BarterMarket", true).filter(API3.Filters.isBuilt()).toEntityArray();
|
let barterers = gameState.getOwnEntitiesByClass("Barter", true).filter(API3.Filters.isBuilt()).toEntityArray();
|
||||||
if (barterers.length == 0)
|
if (barterers.length == 0)
|
||||||
return false;
|
return false;
|
||||||
let resBarterCodes = Resources.GetBarterableCodes();
|
let resBarterCodes = Resources.GetBarterableCodes();
|
||||||
@ -335,7 +335,7 @@ PETRA.TradeManager.prototype.checkEvents = function(gameState, events)
|
|||||||
for (let evt of events.EntityRenamed)
|
for (let evt of events.EntityRenamed)
|
||||||
{
|
{
|
||||||
let ent = gameState.getEntityById(evt.newentity);
|
let ent = gameState.getEntityById(evt.newentity);
|
||||||
if (!ent || !ent.hasClass("Market"))
|
if (!ent || !ent.hasClass("Trade"))
|
||||||
continue;
|
continue;
|
||||||
for (let trader of this.traders.values())
|
for (let trader of this.traders.values())
|
||||||
{
|
{
|
||||||
@ -358,7 +358,7 @@ PETRA.TradeManager.prototype.checkEvents = function(gameState, events)
|
|||||||
if (!evt.entityObj)
|
if (!evt.entityObj)
|
||||||
continue;
|
continue;
|
||||||
let ent = evt.entityObj;
|
let ent = evt.entityObj;
|
||||||
if (!ent || !ent.hasClass("Market") || !gameState.isPlayerAlly(ent.owner()))
|
if (!ent || !ent.hasClass("Trade") || !gameState.isPlayerAlly(ent.owner()))
|
||||||
continue;
|
continue;
|
||||||
this.activateProspection(gameState);
|
this.activateProspection(gameState);
|
||||||
return true;
|
return true;
|
||||||
@ -368,7 +368,7 @@ PETRA.TradeManager.prototype.checkEvents = function(gameState, events)
|
|||||||
for (let evt of events.Create)
|
for (let evt of events.Create)
|
||||||
{
|
{
|
||||||
let ent = gameState.getEntityById(evt.entity);
|
let ent = gameState.getEntityById(evt.entity);
|
||||||
if (!ent || ent.foundationProgress() !== undefined || !ent.hasClass("Market") ||
|
if (!ent || ent.foundationProgress() !== undefined || !ent.hasClass("Trade") ||
|
||||||
!gameState.isPlayerAlly(ent.owner()))
|
!gameState.isPlayerAlly(ent.owner()))
|
||||||
continue;
|
continue;
|
||||||
this.activateProspection(gameState);
|
this.activateProspection(gameState);
|
||||||
@ -382,7 +382,7 @@ PETRA.TradeManager.prototype.checkEvents = function(gameState, events)
|
|||||||
if (!gameState.isPlayerAlly(evt.from) && !gameState.isPlayerAlly(evt.to))
|
if (!gameState.isPlayerAlly(evt.from) && !gameState.isPlayerAlly(evt.to))
|
||||||
continue;
|
continue;
|
||||||
let ent = gameState.getEntityById(evt.entity);
|
let ent = gameState.getEntityById(evt.entity);
|
||||||
if (!ent || ent.foundationProgress() !== undefined || !ent.hasClass("Market"))
|
if (!ent || ent.foundationProgress() !== undefined || !ent.hasClass("Trade"))
|
||||||
continue;
|
continue;
|
||||||
this.activateProspection(gameState);
|
this.activateProspection(gameState);
|
||||||
return true;
|
return true;
|
||||||
@ -419,8 +419,8 @@ PETRA.TradeManager.prototype.checkRoutes = function(gameState, accessIndex)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let market1 = gameState.updatingCollection("OwnMarkets", API3.Filters.byClass("Market"), gameState.getOwnStructures());
|
let market1 = gameState.updatingCollection("OwnMarkets", API3.Filters.byClass("Trade"), gameState.getOwnStructures());
|
||||||
let market2 = gameState.updatingCollection("diplo-ExclusiveAllyMarkets", API3.Filters.byClass("Market"), gameState.getExclusiveAllyEntities());
|
let market2 = gameState.updatingCollection("diplo-ExclusiveAllyMarkets", API3.Filters.byClass("Trade"), gameState.getExclusiveAllyEntities());
|
||||||
if (market1.length + market2.length < 2) // We have to wait ... markets will be built soon
|
if (market1.length + market2.length < 2) // We have to wait ... markets will be built soon
|
||||||
{
|
{
|
||||||
this.tradeRoute = undefined;
|
this.tradeRoute = undefined;
|
||||||
@ -444,7 +444,7 @@ PETRA.TradeManager.prototype.checkRoutes = function(gameState, accessIndex)
|
|||||||
if (!m1.position())
|
if (!m1.position())
|
||||||
continue;
|
continue;
|
||||||
let access1 = PETRA.getLandAccess(gameState, m1);
|
let access1 = PETRA.getLandAccess(gameState, m1);
|
||||||
let sea1 = m1.hasClass("NavalMarket") ? PETRA.getSeaAccess(gameState, m1) : undefined;
|
let sea1 = m1.hasClass("Naval") ? PETRA.getSeaAccess(gameState, m1) : undefined;
|
||||||
for (let m2 of market2.values())
|
for (let m2 of market2.values())
|
||||||
{
|
{
|
||||||
if (onlyOurs && m1.id() >= m2.id())
|
if (onlyOurs && m1.id() >= m2.id())
|
||||||
@ -452,7 +452,7 @@ PETRA.TradeManager.prototype.checkRoutes = function(gameState, accessIndex)
|
|||||||
if (!m2.position())
|
if (!m2.position())
|
||||||
continue;
|
continue;
|
||||||
let access2 = PETRA.getLandAccess(gameState, m2);
|
let access2 = PETRA.getLandAccess(gameState, m2);
|
||||||
let sea2 = m2.hasClass("NavalMarket") ? PETRA.getSeaAccess(gameState, m2) : undefined;
|
let sea2 = m2.hasClass("Naval") ? PETRA.getSeaAccess(gameState, m2) : undefined;
|
||||||
let land = access1 == access2 ? access1 : undefined;
|
let land = access1 == access2 ? access1 : undefined;
|
||||||
let sea = sea1 && sea1 == sea2 ? sea1 : undefined;
|
let sea = sea1 && sea1 == sea2 ? sea1 : undefined;
|
||||||
if (!land && !sea)
|
if (!land && !sea)
|
||||||
@ -586,12 +586,12 @@ PETRA.TradeManager.prototype.checkTrader = function(gameState, ent)
|
|||||||
|
|
||||||
PETRA.TradeManager.prototype.prospectForNewMarket = function(gameState, queues)
|
PETRA.TradeManager.prototype.prospectForNewMarket = function(gameState, queues)
|
||||||
{
|
{
|
||||||
if (queues.economicBuilding.hasQueuedUnitsWithClass("Market") || queues.dock.hasQueuedUnitsWithClass("Market"))
|
if (queues.economicBuilding.hasQueuedUnitsWithClass("Trade") || queues.dock.hasQueuedUnitsWithClass("Trade"))
|
||||||
return;
|
return;
|
||||||
if (!gameState.ai.HQ.canBuild(gameState, "structures/{civ}_market"))
|
if (!gameState.ai.HQ.canBuild(gameState, "structures/{civ}_market"))
|
||||||
return;
|
return;
|
||||||
if (!gameState.updatingCollection("OwnMarkets", API3.Filters.byClass("Market"), gameState.getOwnStructures()).hasEntities() &&
|
if (!gameState.updatingCollection("OwnMarkets", API3.Filters.byClass("Trade"), gameState.getOwnStructures()).hasEntities() &&
|
||||||
!gameState.updatingCollection("diplo-ExclusiveAllyMarkets", API3.Filters.byClass("Market"), gameState.getExclusiveAllyEntities()).hasEntities())
|
!gameState.updatingCollection("diplo-ExclusiveAllyMarkets", API3.Filters.byClass("Trade"), gameState.getExclusiveAllyEntities()).hasEntities())
|
||||||
return;
|
return;
|
||||||
let template = gameState.getTemplate(gameState.applyCiv("structures/{civ}_market"));
|
let template = gameState.getTemplate(gameState.applyCiv("structures/{civ}_market"));
|
||||||
if (!template)
|
if (!template)
|
||||||
@ -600,7 +600,7 @@ PETRA.TradeManager.prototype.prospectForNewMarket = function(gameState, queues)
|
|||||||
let marketPos = gameState.ai.HQ.findMarketLocation(gameState, template);
|
let marketPos = gameState.ai.HQ.findMarketLocation(gameState, template);
|
||||||
if (!marketPos || marketPos[3] == 0) // marketPos[3] is the expected gain
|
if (!marketPos || marketPos[3] == 0) // marketPos[3] is the expected gain
|
||||||
{ // no position found
|
{ // no position found
|
||||||
if (gameState.getOwnEntitiesByClass("BarterMarket", true).hasEntities())
|
if (gameState.getOwnEntitiesByClass("Market", true).hasEntities())
|
||||||
gameState.ai.HQ.buildManager.setUnbuildable(gameState, gameState.applyCiv("structures/{civ}_market"));
|
gameState.ai.HQ.buildManager.setUnbuildable(gameState, gameState.applyCiv("structures/{civ}_market"));
|
||||||
else
|
else
|
||||||
this.routeProspection = false;
|
this.routeProspection = false;
|
||||||
@ -621,7 +621,7 @@ PETRA.TradeManager.prototype.prospectForNewMarket = function(gameState, queues)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!this.tradeRoute)
|
if (!this.tradeRoute)
|
||||||
gameState.ai.queueManager.changePriority("economicBuilding", 2*this.Config.priorities.economicBuilding);
|
gameState.ai.queueManager.changePriority("economicBuilding", 2 * this.Config.priorities.economicBuilding);
|
||||||
let plan = new PETRA.ConstructionPlan(gameState, "structures/{civ}_market");
|
let plan = new PETRA.ConstructionPlan(gameState, "structures/{civ}_market");
|
||||||
if (!this.tradeRoute)
|
if (!this.tradeRoute)
|
||||||
plan.queueToReset = "economicBuilding";
|
plan.queueToReset = "economicBuilding";
|
||||||
|
@ -55,7 +55,7 @@ Barter.prototype.PlayerHasMarket = function(playerID)
|
|||||||
{
|
{
|
||||||
var cmpFoundation = Engine.QueryInterface(entity, IID_Foundation);
|
var cmpFoundation = Engine.QueryInterface(entity, IID_Foundation);
|
||||||
var cmpIdentity = Engine.QueryInterface(entity, IID_Identity);
|
var cmpIdentity = Engine.QueryInterface(entity, IID_Identity);
|
||||||
if (!cmpFoundation && cmpIdentity && cmpIdentity.HasClass("BarterMarket"))
|
if (!cmpFoundation && cmpIdentity && cmpIdentity.HasClass("Barter"))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -495,7 +495,7 @@ GuiInterface.prototype.GetEntityState = function(player, ent)
|
|||||||
"req": cmpPromotion.GetRequiredXp()
|
"req": cmpPromotion.GetRequiredXp()
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!cmpFoundation && cmpIdentity && cmpIdentity.HasClass("BarterMarket"))
|
if (!cmpFoundation && cmpIdentity && cmpIdentity.HasClass("Barter"))
|
||||||
ret.isBarterMarket = true;
|
ret.isBarterMarket = true;
|
||||||
|
|
||||||
let cmpHeal = Engine.QueryInterface(ent, IID_Heal);
|
let cmpHeal = Engine.QueryInterface(ent, IID_Heal);
|
||||||
|
@ -57,7 +57,7 @@ Identity.prototype.Schema =
|
|||||||
"</element>" +
|
"</element>" +
|
||||||
"</optional>" +
|
"</optional>" +
|
||||||
"<optional>" +
|
"<optional>" +
|
||||||
"<element name='Classes' a:help='Optional list of space-separated classes applying to this entity. Choices include: AfricanElephant, Animal, Apadana, ArmyCamp, Ashoka, BarterMarket, Celt, CitizenSoldier, CivCentre, Colony, ConquestCritical, Domestic, DropsiteFood, DropsiteMetal, DropsiteStone, DropsiteWood, FemaleCitizen, FishingBoat, ForestPlant, GarrisonFortress, Gates, Human, Iberian, Immortal, IndianElephant, Italian, Juggernaut, Kennel, Lighthouse, LongWall, MercenaryCamp, Naval, NavalMarket, Organic, Palace, Palisade, Player, PtolemyIV, SeaCreature, SiegeWall, SpecialBuilding, StoneWall, Structure, Syssiton, Theater, Unit, WallTower.'>" +
|
"<element name='Classes' a:help='Optional list of space-separated classes applying to this entity. Choices include: AfricanElephant, Animal, Ashoka, Barter, Celt, CitizenSoldier, CivCentre, ConquestCritical, Domestic, DropsiteFood, DropsiteMetal, DropsiteStone, DropsiteWood, FemaleCitizen, ForestPlant, GarrisonFortress, Human, Iberian, Immortal, IndianElephant, Italian, Juggernaut, MercenaryCamp, Organic, Player, PtolemyIV, SeaCreature, Structure, Unit, WallLong, WallMedium, WallShort, WallTower.'>" +
|
||||||
"<attribute name='datatype'>" +
|
"<attribute name='datatype'>" +
|
||||||
"<value>tokens</value>" +
|
"<value>tokens</value>" +
|
||||||
"</attribute>" +
|
"</attribute>" +
|
||||||
@ -65,7 +65,7 @@ Identity.prototype.Schema =
|
|||||||
"</element>" +
|
"</element>" +
|
||||||
"</optional>" +
|
"</optional>" +
|
||||||
"<optional>" +
|
"<optional>" +
|
||||||
"<element name='VisibleClasses' a:help='Optional list of space-separated classes applying to this entity. These classes will also be visible in various GUI elements. If the classes need spaces, underscores will be replaced with spaces. Choices include: Archer, ArtilleryTower, Axeman, Barracks, Bireme, Blacksmith, BoltShooter, BoltTower, Camel, Cavalry, Champion, Chariot, Citizen, City, Civic, CivilCentre, Clubman, Corral, Crossbowman, Defensive, Dock, Dog, Economic, Elephant, ElephantStable, Embassy, Farmstead, Field, Fireship, Fortress, Healer, Hero, House, Infantry, Javelinist, Maceman, Melee, Market, Mercenary, Military, Outpost, Pikeman, Quadrireme, Quinquereme, Ram, Range, Ranged, Relic, Resource, SentryTower, Ship, Shipyard, Siege, SiegeTower, Slave, Slinger, Soldier, Spearman, Stable, StoneThrower, StoneTower, Storehouse, Support, Swordsman, Temple, Tower, Town, Trader, Trireme, Village, Warship, Wonder, Worker, Workshop.'>" +
|
"<element name='VisibleClasses' a:help='Optional list of space-separated classes applying to this entity. These classes will also be visible in various GUI elements. If the classes need spaces, underscores will be replaced with spaces. Choices include: Archer, ArmyCamp, ArtilleryTower, Axeman, Barracks, Bireme, Blacksmith, BoltShooter, BoltTower, Camel, Cavalry, Champion, Chariot, Citizen, City, Civic, CivilCentre, Clubman, Colony, Corral, Council, Crossbowman, Defensive, Dock, Dog, Economic, Elephant, ElephantStable, Embassy, Farmstead, Field, Fireship, FishingBoat, Fortress, Gate, Gymnasium, Healer, Hero, House, Infantry, IshtarGate, Javelinist, Library, Lighthouse, Maceman, Melee, Market, Mercenary, MerchantShip, Military, Naval, Outpost, Palace, Pikeman, Pillar, Quadrireme, Quinquereme, Ram, Range, Ranged, Relic, Resource, SentryTower, Ship, Shipyard, Siege, SiegeTower, SiegeWall, Slave, Slinger, Soldier, Spearman, Stable, Stoa, StoneThrower, StoneTower, Storehouse, Support, Swordsman, Syssiton, Temple, TempleOfAmun, TempleOfApedemak, TempleOfMars, TempleOfVesta, Theater, Tower, Town, Trade, Trader, Trireme, TriumphalArch, Village, Wall, Warship, Wonder, Worker, Workshop.'>" +
|
||||||
"<attribute name='datatype'>" +
|
"<attribute name='datatype'>" +
|
||||||
"<value>tokens</value>" +
|
"<value>tokens</value>" +
|
||||||
"</attribute>" +
|
"</attribute>" +
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
{
|
{
|
||||||
"type": "global",
|
"type": "global",
|
||||||
"affects": ["Market"],
|
"affects": ["Trade"],
|
||||||
"affectedPlayers": ["ExclusiveMutualAlly"],
|
"affectedPlayers": ["ExclusiveMutualAlly"],
|
||||||
"modifications": [
|
"modifications": [
|
||||||
{ "value": "Market/InternationalBonus", "add": 0.1 }
|
{ "value": "Market/InternationalBonus", "add": 0.1 }
|
||||||
],
|
],
|
||||||
"auraName": "Trademasters",
|
"auraName": "Trademasters",
|
||||||
"auraDescription": "Allied Markets +10% international trade bonus."
|
"auraDescription": "Allies +10% international trade bonus."
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@
|
|||||||
{
|
{
|
||||||
"Name": "Trademasters",
|
"Name": "Trademasters",
|
||||||
"History": "The Phoenicians and Carthaginians were broadly known as the greatest trading civilization of the ancient and classical world.",
|
"History": "The Phoenicians and Carthaginians were broadly known as the greatest trading civilization of the ancient and classical world.",
|
||||||
"Description": "Allied Markets +10% international trade bonus."
|
"Description": "Allies +10% international trade bonus."
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"Structures":
|
"Structures":
|
||||||
|
@ -7,11 +7,11 @@
|
|||||||
"requirementsTooltip": "Unlocked in Town Phase.",
|
"requirementsTooltip": "Unlocked in Town Phase.",
|
||||||
"icon": "stone_blocks_brown.png",
|
"icon": "stone_blocks_brown.png",
|
||||||
"researchTime": 40,
|
"researchTime": 40,
|
||||||
"tooltip": "City walls -20% build time, but -1 crush armor level.",
|
"tooltip": "Walls −20% build time, but −1 crush armor.",
|
||||||
"modifications": [
|
"modifications": [
|
||||||
{ "value": "Cost/BuildTime", "multiply": 0.8 },
|
{ "value": "Armour/Crush", "add": -1 },
|
||||||
{ "value": "Armour/Crush", "add": -1 }
|
{ "value": "Cost/BuildTime", "multiply": 0.8 }
|
||||||
],
|
],
|
||||||
"affects": ["StoneWall"],
|
"affects": ["Wall"],
|
||||||
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
|
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
|
||||||
}
|
}
|
||||||
|
@ -6,9 +6,9 @@
|
|||||||
"tooltip": "Carthaginian Walls +100% build time, +100% stone cost, and +200% health.",
|
"tooltip": "Carthaginian Walls +100% build time, +100% stone cost, and +200% health.",
|
||||||
"requirements": { "civ": "cart" },
|
"requirements": { "civ": "cart" },
|
||||||
"modifications": [
|
"modifications": [
|
||||||
{ "value": "Health/Max", "multiply": 3 },
|
|
||||||
{ "value": "Cost/BuildTime", "multiply": 2 },
|
{ "value": "Cost/BuildTime", "multiply": 2 },
|
||||||
{ "value": "Cost/Resources/stone", "multiply": 2 }
|
{ "value": "Cost/Resources/stone", "multiply": 2 },
|
||||||
|
{ "value": "Health/Max", "multiply": 3 }
|
||||||
],
|
],
|
||||||
"affects": ["StoneWall"]
|
"affects": ["Wall"]
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,8 @@
|
|||||||
"icon": "wooden_walls.png",
|
"icon": "wooden_walls.png",
|
||||||
"tooltip": "Mauryan City Walls −20% build time and −20% health.",
|
"tooltip": "Mauryan City Walls −20% build time and −20% health.",
|
||||||
"modifications": [
|
"modifications": [
|
||||||
{ "value": "Health/Max", "multiply": 0.8 },
|
{ "value": "Cost/BuildTime", "multiply": 0.8 },
|
||||||
{ "value": "Cost/BuildTime", "multiply": 0.8 }
|
{ "value": "Health/Max", "multiply": 0.8 }
|
||||||
],
|
],
|
||||||
"affects": ["StoneWall"]
|
"affects": ["Wall"]
|
||||||
}
|
}
|
||||||
|
@ -7,11 +7,11 @@
|
|||||||
"requirementsTooltip": "Unlocked in Town Phase.",
|
"requirementsTooltip": "Unlocked in Town Phase.",
|
||||||
"icon": "stone_blocks.png",
|
"icon": "stone_blocks.png",
|
||||||
"researchTime": 40,
|
"researchTime": 40,
|
||||||
"tooltip": "City walls +2 crush armor levels, but +10% build time.",
|
"tooltip": "Walls +2 crush armor, but +10% build time.",
|
||||||
"modifications": [
|
"modifications": [
|
||||||
{ "value": "Cost/BuildTime", "multiply": 1.1 },
|
{ "value": "Armour/Crush", "add": 2 },
|
||||||
{ "value": "Armour/Crush", "add": 2 }
|
{ "value": "Cost/BuildTime", "multiply": 1.1 }
|
||||||
],
|
],
|
||||||
"affects": ["StoneWall"],
|
"affects": ["Wall"],
|
||||||
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
|
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
|
||||||
}
|
}
|
||||||
|
@ -2,14 +2,19 @@
|
|||||||
"genericName": "Athenian Long Walls",
|
"genericName": "Athenian Long Walls",
|
||||||
"description": "The Long Walls of Athens were constructed under the auspices of the wily Themistocles and extended 6 km from the city to the port of Piraeus. This secured the city's sea supply routes and prevented an enemy from starving out the city during a siege.",
|
"description": "The Long Walls of Athens were constructed under the auspices of the wily Themistocles and extended 6 km from the city to the port of Piraeus. This secured the city's sea supply routes and prevented an enemy from starving out the city during a siege.",
|
||||||
"cost": { "food": 0, "wood": 0, "stone": 250, "metal": 250 },
|
"cost": { "food": 0, "wood": 0, "stone": 250, "metal": 250 },
|
||||||
"requirements": { "all": [{ "tech": "phase_city" }, { "civ": "athen" }] },
|
"requirements": {
|
||||||
|
"all": [
|
||||||
|
{ "tech": "phase_city" },
|
||||||
|
{ "civ": "athen" }
|
||||||
|
]
|
||||||
|
},
|
||||||
"requirementsTooltip": "Unlocked in City Phase.",
|
"requirementsTooltip": "Unlocked in City Phase.",
|
||||||
"icon": "crenelations.png",
|
"icon": "crenelations.png",
|
||||||
"researchTime": 60,
|
"researchTime": 60,
|
||||||
"tooltip": "Build stone walls in neutral territory.",
|
"tooltip": "Build Walls in own or neutral territory.",
|
||||||
"modifications": [
|
"modifications": [
|
||||||
{ "value": "BuildRestrictions/Territory", "replace": ["own", "neutral"] }
|
{ "value": "BuildRestrictions/Territory", "replace": ["own", "neutral"] }
|
||||||
],
|
],
|
||||||
"affects": ["StoneWall"],
|
"affects": ["Wall"],
|
||||||
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
|
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"genericName": "Walls build time vs. Health",
|
"genericName": "Wall armor vs build time.",
|
||||||
"top": "buildtime_walls_rubble",
|
"top": "buildtime_walls_rubble",
|
||||||
"bottom": "health_walls_geometric_masonry",
|
"bottom": "health_walls_geometric_masonry",
|
||||||
"requirements": { "notciv": "iber" }
|
"requirements": { "notciv": "iber" }
|
||||||
|
@ -5,8 +5,13 @@
|
|||||||
},
|
},
|
||||||
"description": "Advances from a bustling town to a veritable metropolis, full of the wonders of modern technology. This is the Athenian city phase, where metal gathering rates are boosted because of the 'Silver Owls' bonus.",
|
"description": "Advances from a bustling town to a veritable metropolis, full of the wonders of modern technology. This is the Athenian city phase, where metal gathering rates are boosted because of the 'Silver Owls' bonus.",
|
||||||
"cost": { "food": 0, "wood": 0, "stone": 750, "metal": 750 },
|
"cost": { "food": 0, "wood": 0, "stone": 750, "metal": 750 },
|
||||||
"requirements": { "entity": { "class": "Town", "number": 4 } },
|
"requirements": {
|
||||||
"requirementsTooltip": "Requires 4 new Town Phase structures (except Walls and Civic Centers).",
|
"entity": {
|
||||||
|
"class": "Town",
|
||||||
|
"number": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirementsTooltip": "Requires 4 Town Structures.",
|
||||||
"supersedes": "phase_town_athen",
|
"supersedes": "phase_town_athen",
|
||||||
"replaces": ["phase_city"],
|
"replaces": ["phase_city"],
|
||||||
"icon": "city_phase.png",
|
"icon": "city_phase.png",
|
||||||
|
@ -6,8 +6,13 @@
|
|||||||
},
|
},
|
||||||
"description": "Advances from a bustling town to a veritable metropolis, full of the wonders of modern technology.",
|
"description": "Advances from a bustling town to a veritable metropolis, full of the wonders of modern technology.",
|
||||||
"cost": { "food": 0, "wood": 0, "stone": 750, "metal": 750 },
|
"cost": { "food": 0, "wood": 0, "stone": 750, "metal": 750 },
|
||||||
"requirements": { "entity": { "class": "Town", "number": 4 } },
|
"requirements": {
|
||||||
"requirementsTooltip": "Requires 4 new Town Phase structures (except Walls and Civic Centers).",
|
"entity": {
|
||||||
|
"class": "Town",
|
||||||
|
"number": 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirementsTooltip": "Requires 4 Town Structures.",
|
||||||
"supersedes": "phase_town_generic",
|
"supersedes": "phase_town_generic",
|
||||||
"replaces": ["phase_city"],
|
"replaces": ["phase_city"],
|
||||||
"icon": "city_phase.png",
|
"icon": "city_phase.png",
|
||||||
|
@ -5,8 +5,13 @@
|
|||||||
},
|
},
|
||||||
"description": "Advances from a small village to a bustling town, ready to expand rapidly. This is the Athenian town phase, where metal gathering rates are boosted because of the 'Silver Owls' bonus.",
|
"description": "Advances from a small village to a bustling town, ready to expand rapidly. This is the Athenian town phase, where metal gathering rates are boosted because of the 'Silver Owls' bonus.",
|
||||||
"cost": { "food": 500, "wood": 500, "stone": 0, "metal": 0 },
|
"cost": { "food": 500, "wood": 500, "stone": 0, "metal": 0 },
|
||||||
"requirements": { "entity": { "class": "Village", "number": 5 } },
|
"requirements": {
|
||||||
"requirementsTooltip": "Requires 5 Village Phase structures (except Palisades and Farm Fields).",
|
"entity": {
|
||||||
|
"class": "Village",
|
||||||
|
"number": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirementsTooltip": "Requires 5 Village Structures.",
|
||||||
"supersedes": "phase_village",
|
"supersedes": "phase_village",
|
||||||
"replaces": ["phase_town"],
|
"replaces": ["phase_town"],
|
||||||
"icon": "town_phase.png",
|
"icon": "town_phase.png",
|
||||||
|
@ -6,8 +6,13 @@
|
|||||||
},
|
},
|
||||||
"description": "Advances from a small village to a bustling town, ready to expand rapidly.",
|
"description": "Advances from a small village to a bustling town, ready to expand rapidly.",
|
||||||
"cost": { "food": 500, "wood": 500, "stone": 0, "metal": 0 },
|
"cost": { "food": 500, "wood": 500, "stone": 0, "metal": 0 },
|
||||||
"requirements": { "entity": { "class": "Village", "number": 5 } },
|
"requirements": {
|
||||||
"requirementsTooltip": "Requires 5 Village Phase structures (except Palisades and Farm Fields).",
|
"entity": {
|
||||||
|
"class": "Village",
|
||||||
|
"number": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"requirementsTooltip": "Requires 5 Village Structures.",
|
||||||
"supersedes": "phase_village",
|
"supersedes": "phase_village",
|
||||||
"replaces": ["phase_town"],
|
"replaces": ["phase_town"],
|
||||||
"icon": "town_phase.png",
|
"icon": "town_phase.png",
|
||||||
|
@ -6,10 +6,10 @@
|
|||||||
"requirementsTooltip": "Unlocked in Town Phase.",
|
"requirementsTooltip": "Unlocked in Town Phase.",
|
||||||
"icon": "sibylline_books.png",
|
"icon": "sibylline_books.png",
|
||||||
"researchTime": 40,
|
"researchTime": 40,
|
||||||
"tooltip": "Market +10% International Bonus.",
|
"tooltip": "+10% international trade bonus.",
|
||||||
"modifications": [
|
"modifications": [
|
||||||
{ "value": "Market/InternationalBonus", "add": 0.1 }
|
{ "value": "Market/InternationalBonus", "add": 0.1 }
|
||||||
],
|
],
|
||||||
"affects": ["Market"],
|
"affects": ["Trade"],
|
||||||
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
|
"soundComplete": "interface/alarm/alarm_upgradearmory.xml"
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
<Fortress>10</Fortress>
|
<Fortress>10</Fortress>
|
||||||
<Wonder>1</Wonder>
|
<Wonder>1</Wonder>
|
||||||
<Hero>1</Hero>
|
<Hero>1</Hero>
|
||||||
<Apadana>1</Apadana>
|
<Palace>1</Palace>
|
||||||
<Embassy>3</Embassy>
|
<Embassy>3</Embassy>
|
||||||
<Monument>5</Monument>
|
<Monument>5</Monument>
|
||||||
<Pillar>0</Pillar>
|
<Pillar>0</Pillar>
|
||||||
@ -29,12 +29,13 @@
|
|||||||
<Library>1</Library>
|
<Library>1</Library>
|
||||||
<Lighthouse>1</Lighthouse>
|
<Lighthouse>1</Lighthouse>
|
||||||
<Juggernaut>1</Juggernaut>
|
<Juggernaut>1</Juggernaut>
|
||||||
<UniqueBuilding>1</UniqueBuilding>
|
<IshtarGate>1</IshtarGate>
|
||||||
<Hall>2</Hall>
|
<Hall>2</Hall>
|
||||||
<Stoa>2</Stoa>
|
<Stoa>2</Stoa>
|
||||||
<PyramidSmall>4</PyramidSmall>
|
<PyramidSmall>4</PyramidSmall>
|
||||||
<PyramidLarge>2</PyramidLarge>
|
<PyramidLarge>2</PyramidLarge>
|
||||||
<TempleOfAmun>1</TempleOfAmun>
|
<TempleOfAmun>1</TempleOfAmun>
|
||||||
|
<TempleOfVesta>1</TempleOfVesta>
|
||||||
<Gladiator>0</Gladiator>
|
<Gladiator>0</Gladiator>
|
||||||
<WarDog>20</WarDog>
|
<WarDog>20</WarDog>
|
||||||
</Limits>
|
</Limits>
|
||||||
|
@ -19,10 +19,11 @@
|
|||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Civ>athen</Civ>
|
<Civ>athen</Civ>
|
||||||
<Classes datatype="tokens">ConquestCritical</Classes>
|
|
||||||
<GenericName>Gymnasium</GenericName>
|
<GenericName>Gymnasium</GenericName>
|
||||||
<SpecificName>Gymnasion</SpecificName>
|
<SpecificName>Gymnasion</SpecificName>
|
||||||
<Tooltip>Train Champions.</Tooltip>
|
<Tooltip>Train Champions.</Tooltip>
|
||||||
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">Gymnasium</VisibleClasses>
|
||||||
<Icon>structures/gymnasium.png</Icon>
|
<Icon>structures/gymnasium.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -19,10 +19,11 @@
|
|||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Civ>athen</Civ>
|
<Civ>athen</Civ>
|
||||||
<Classes datatype="tokens">ConquestCritical</Classes>
|
|
||||||
<GenericName>Council Chamber</GenericName>
|
<GenericName>Council Chamber</GenericName>
|
||||||
<SpecificName>Prytaneion</SpecificName>
|
<SpecificName>Prytaneion</SpecificName>
|
||||||
<Tooltip>Train Heroes and research technologies.</Tooltip>
|
<Tooltip>Train Heroes and research technologies.</Tooltip>
|
||||||
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">Council</VisibleClasses>
|
||||||
<Icon>structures/tholos.png</Icon>
|
<Icon>structures/tholos.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -9,12 +9,12 @@
|
|||||||
<Height>8.0</Height>
|
<Height>8.0</Height>
|
||||||
</Footprint>
|
</Footprint>
|
||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Island Settlement</GenericName>
|
|
||||||
<Civ>brit</Civ>
|
<Civ>brit</Civ>
|
||||||
<Classes datatype="tokens">Naval</Classes>
|
<GenericName>Island Settlement</GenericName>
|
||||||
<Icon>structures/crannog.png</Icon>
|
|
||||||
<Tooltip>Increase population limit and defend waterways.</Tooltip>
|
|
||||||
<SpecificName>Cranogion</SpecificName>
|
<SpecificName>Cranogion</SpecificName>
|
||||||
|
<Tooltip>Build upon a shoreline in own, neutral, or allied territory. Acquire large tracts of territory. Territory root. Dropsite for food, wood, stone, and metal. Train Citizens, construct Ships, and research technologies. Garrison Soldiers for additional arrows.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">Naval</VisibleClasses>
|
||||||
|
<Icon>structures/crannog.png</Icon>
|
||||||
<RequiredTechnology>phase_town</RequiredTechnology>
|
<RequiredTechnology>phase_town</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Obstruction>
|
<Obstruction>
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<Civ>brit</Civ>
|
<Civ>brit</Civ>
|
||||||
<SpecificName>Uxelon</SpecificName>
|
<SpecificName>Uxelon</SpecificName>
|
||||||
<Tooltip>Does not shoot or garrison.</Tooltip>
|
<Tooltip disable=""/>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Obstruction>
|
<Obstruction>
|
||||||
<Static width="10" depth="9"/>
|
<Static width="10" depth="9"/>
|
||||||
|
@ -40,11 +40,11 @@
|
|||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Civ>cart</Civ>
|
<Civ>cart</Civ>
|
||||||
<Classes datatype="tokens">ConquestCritical</Classes>
|
|
||||||
<GenericName>Naval Shipyard</GenericName>
|
<GenericName>Naval Shipyard</GenericName>
|
||||||
<SpecificName>Cothon</SpecificName>
|
<SpecificName>Cothon</SpecificName>
|
||||||
<VisibleClasses datatype="tokens">-City Shipyard Town</VisibleClasses>
|
<Tooltip>Build upon a shoreline in own, neutral, or allied territory. Acquire large tracts of territory. Territory root. Construct Warships and research technologies.</Tooltip>
|
||||||
<Tooltip>Construct and repair mighty warships.</Tooltip>
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">Naval -City Town Shipyard</VisibleClasses>
|
||||||
<Icon>structures/uber_dock.png</Icon>
|
<Icon>structures/uber_dock.png</Icon>
|
||||||
<RequiredTechnology>phase_town</RequiredTechnology>
|
<RequiredTechnology>phase_town</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<Civ>cart</Civ>
|
<Civ>cart</Civ>
|
||||||
<SpecificName>Maqdaš</SpecificName>
|
<SpecificName>Maqdaš</SpecificName>
|
||||||
<Tooltip>Train Healers and Champions and research healing technologies. Garrison units to heal them at a quick rate.</Tooltip>
|
<Tooltip>Train Healers and Champions and research healing technologies.</Tooltip>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<stone>80</stone>
|
<stone>80</stone>
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<Civ>gaul</Civ>
|
<Civ>gaul</Civ>
|
||||||
<SpecificName>Uxelon</SpecificName>
|
<SpecificName>Uxelon</SpecificName>
|
||||||
<Tooltip>Does not shoot or garrison.</Tooltip>
|
<Tooltip disable=""/>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Obstruction>
|
<Obstruction>
|
||||||
<Static width="8" depth="8"/>
|
<Static width="8" depth="8"/>
|
||||||
|
@ -31,9 +31,9 @@
|
|||||||
<Civ>iber</Civ>
|
<Civ>iber</Civ>
|
||||||
<GenericName>Revered Monument</GenericName>
|
<GenericName>Revered Monument</GenericName>
|
||||||
<SpecificName>Gur Oroigarri</SpecificName>
|
<SpecificName>Gur Oroigarri</SpecificName>
|
||||||
<Classes datatype="tokens">Monument</Classes>
|
<Tooltip>Territory root.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">Monument</VisibleClasses>
|
||||||
<Icon>structures/iberian_bull.png</Icon>
|
<Icon>structures/iberian_bull.png</Icon>
|
||||||
<Tooltip>All units within vision of this monument will fight harder. Buildings in the territory of the monument do not decay.</Tooltip>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<stone>20</stone>
|
<stone>20</stone>
|
||||||
|
@ -7,8 +7,8 @@
|
|||||||
<Civ>kush</Civ>
|
<Civ>kush</Civ>
|
||||||
<GenericName>Temple of Apedemak</GenericName>
|
<GenericName>Temple of Apedemak</GenericName>
|
||||||
<SpecificName>Pr-ʿIprmk</SpecificName>
|
<SpecificName>Pr-ʿIprmk</SpecificName>
|
||||||
<Tooltip>Train priests to heal your troops. Train Meroitic Temple Guards. Garrison units to heal them at a quick rate.</Tooltip>
|
<Tooltip>Train Healers and Apedamak Champions and research healing technologies.</Tooltip>
|
||||||
<Classes datatype="tokens">TempleOfApedemak</Classes>
|
<VisibleClasses datatype="tokens">TempleOfApedemak</VisibleClasses>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Obstruction>
|
<Obstruction>
|
||||||
<Static width="18" depth="30.0"/>
|
<Static width="18" depth="30.0"/>
|
||||||
|
@ -27,10 +27,9 @@
|
|||||||
<Civ>kush</Civ>
|
<Civ>kush</Civ>
|
||||||
<GenericName>Grand Temple of Amun</GenericName>
|
<GenericName>Grand Temple of Amun</GenericName>
|
||||||
<SpecificName>Pr-ʿImn</SpecificName>
|
<SpecificName>Pr-ʿImn</SpecificName>
|
||||||
<Tooltip>Train priests to heal your troops. Train Napatan Temple Guards and research unique technologies. Garrison units to heal them at a quick rate.</Tooltip>
|
<Tooltip>Train Healers and Amun Champions and research healing technologies.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">-Town City TempleOfAmun</VisibleClasses>
|
||||||
<Icon>structures/temple_epic.png</Icon>
|
<Icon>structures/temple_epic.png</Icon>
|
||||||
<Classes datatype="tokens">TempleOfAmun</Classes>
|
|
||||||
<VisibleClasses datatype="tokens">City -Town</VisibleClasses>
|
|
||||||
<RequiredTechnology>phase_city</RequiredTechnology>
|
<RequiredTechnology>phase_city</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -14,10 +14,11 @@
|
|||||||
</Footprint>
|
</Footprint>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Civ>maur</Civ>
|
<Civ>maur</Civ>
|
||||||
<Classes datatype="tokens">ConquestCritical</Classes>
|
|
||||||
<SpecificName>Harmya</SpecificName>
|
<SpecificName>Harmya</SpecificName>
|
||||||
<Icon>gaia/special_stoa.png</Icon>
|
|
||||||
<Tooltip>Train Female Citizens, Champions, and Heroes.</Tooltip>
|
<Tooltip>Train Female Citizens, Champions, and Heroes.</Tooltip>
|
||||||
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">Palace</VisibleClasses>
|
||||||
|
<Icon>gaia/special_stoa.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<stone>40</stone>
|
<stone>40</stone>
|
||||||
|
@ -31,9 +31,9 @@
|
|||||||
<Civ>maur</Civ>
|
<Civ>maur</Civ>
|
||||||
<GenericName>Edict Pillar of Ashoka</GenericName>
|
<GenericName>Edict Pillar of Ashoka</GenericName>
|
||||||
<SpecificName>Śāsana Stambha Aśokā</SpecificName>
|
<SpecificName>Śāsana Stambha Aśokā</SpecificName>
|
||||||
<Classes datatype="tokens">Pillar</Classes>
|
<Tooltip>Territory root.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">Pillar</VisibleClasses>
|
||||||
<Icon>structures/ashoka_pillar.png</Icon>
|
<Icon>structures/ashoka_pillar.png</Icon>
|
||||||
<Tooltip>The famous pillar of Ashoka. Increases the walk speed of traders. Buildings in the territory of the monument do not decay.</Tooltip>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<stone>20</stone>
|
<stone>20</stone>
|
||||||
|
@ -10,9 +10,6 @@
|
|||||||
<Square width="4" depth="10"/>
|
<Square width="4" depth="10"/>
|
||||||
<Height>6</Height>
|
<Height>6</Height>
|
||||||
</Footprint>
|
</Footprint>
|
||||||
<Identity>
|
|
||||||
<SpecificName>Palisade Curve</SpecificName>
|
|
||||||
</Identity>
|
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>2</wood>
|
<wood>2</wood>
|
||||||
</Loot>
|
</Loot>
|
||||||
|
@ -10,9 +10,6 @@
|
|||||||
<Square width="1.5" depth="3"/>
|
<Square width="1.5" depth="3"/>
|
||||||
<Height>5</Height>
|
<Height>5</Height>
|
||||||
</Footprint>
|
</Footprint>
|
||||||
<Identity>
|
|
||||||
<SpecificName>Palisade End</SpecificName>
|
|
||||||
</Identity>
|
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>1</wood>
|
<wood>1</wood>
|
||||||
</Loot>
|
</Loot>
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
<Height>9.0</Height>
|
<Height>9.0</Height>
|
||||||
</Footprint>
|
</Footprint>
|
||||||
<Identity>
|
<Identity>
|
||||||
<SpecificName>Palisade Fort</SpecificName>
|
|
||||||
<GenericName>Wooden Tower</GenericName>
|
<GenericName>Wooden Tower</GenericName>
|
||||||
<Icon>structures/palisade_fort.png</Icon>
|
<Icon>structures/palisade_fort.png</Icon>
|
||||||
<Classes datatype="tokens">Palisade</Classes>
|
<Classes datatype="tokens">Palisade</Classes>
|
||||||
|
@ -17,11 +17,11 @@
|
|||||||
<Max op="mul">0.64</Max>
|
<Max op="mul">0.64</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">Gates</Classes>
|
<GenericName>Palisade Gate</GenericName>
|
||||||
<SpecificName>Palisade Gate</SpecificName>
|
|
||||||
<SelectionGroupName>structures/palisades_gate</SelectionGroupName>
|
<SelectionGroupName>structures/palisades_gate</SelectionGroupName>
|
||||||
|
<Tooltip>Allow units access through Palisades. Can be locked to prevent access.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">Gate</VisibleClasses>
|
||||||
<Icon>structures/wooden_gate.png</Icon>
|
<Icon>structures/wooden_gate.png</Icon>
|
||||||
<Tooltip>Allow units access through a palisade wall. Can be locked to prevent access.</Tooltip>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>4</wood>
|
<wood>4</wood>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<Max op="mul">0.75</Max>
|
<Max op="mul">0.75</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<SpecificName>Palisade</SpecificName>
|
<Tooltip>Can be converted into a Palisade Gate.</Tooltip>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>3</wood>
|
<wood>3</wood>
|
||||||
@ -28,11 +28,11 @@
|
|||||||
<Upgrade>
|
<Upgrade>
|
||||||
<Gate>
|
<Gate>
|
||||||
<Entity>structures/palisades_gate</Entity>
|
<Entity>structures/palisades_gate</Entity>
|
||||||
|
<Tooltip>Allow units access through Palisades. Can be locked to prevent access.</Tooltip>
|
||||||
<Cost>
|
<Cost>
|
||||||
<wood>20</wood>
|
<wood>20</wood>
|
||||||
</Cost>
|
</Cost>
|
||||||
<Time>5</Time>
|
<Time>5</Time>
|
||||||
<Tooltip>This will allow you to let units circulate through your fortifications.</Tooltip>
|
|
||||||
<Variant>upgrading</Variant>
|
<Variant>upgrading</Variant>
|
||||||
</Gate>
|
</Gate>
|
||||||
</Upgrade>
|
</Upgrade>
|
||||||
|
@ -13,9 +13,6 @@
|
|||||||
<Health>
|
<Health>
|
||||||
<Max op="mul">0.5</Max>
|
<Max op="mul">0.5</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
|
||||||
<SpecificName>Palisade</SpecificName>
|
|
||||||
</Identity>
|
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>2</wood>
|
<wood>2</wood>
|
||||||
</Loot>
|
</Loot>
|
||||||
|
@ -13,9 +13,6 @@
|
|||||||
<Health>
|
<Health>
|
||||||
<Max op="mul">0.25</Max>
|
<Max op="mul">0.25</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
|
||||||
<SpecificName>Palisade</SpecificName>
|
|
||||||
</Identity>
|
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>1</wood>
|
<wood>1</wood>
|
||||||
</Loot>
|
</Loot>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<Max op="mul">0.5</Max>
|
<Max op="mul">0.5</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<SpecificName>Angle Spike</SpecificName>
|
<GenericName>Angle Spike</GenericName>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>1</wood>
|
<wood>1</wood>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<Max op="mul">0.2</Max>
|
<Max op="mul">0.2</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<SpecificName>Small Spikes</SpecificName>
|
<GenericName>Small Spikes</GenericName>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>1</wood>
|
<wood>1</wood>
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
<Max op="mul">0.5</Max>
|
<Max op="mul">0.5</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<SpecificName>Tall Spikes</SpecificName>
|
<GenericName>Tall Spikes</GenericName>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>2</wood>
|
<wood>2</wood>
|
||||||
|
@ -10,9 +10,6 @@
|
|||||||
<Square width="3" depth="10"/>
|
<Square width="3" depth="10"/>
|
||||||
<Height>6</Height>
|
<Height>6</Height>
|
||||||
</Footprint>
|
</Footprint>
|
||||||
<Identity>
|
|
||||||
<SpecificName>Palisade</SpecificName>
|
|
||||||
</Identity>
|
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>2</wood>
|
<wood>2</wood>
|
||||||
</Loot>
|
</Loot>
|
||||||
|
@ -13,10 +13,6 @@
|
|||||||
<Health>
|
<Health>
|
||||||
<Max op="mul">0.75</Max>
|
<Max op="mul">0.75</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
|
||||||
<SpecificName>Palisade</SpecificName>
|
|
||||||
<Classes datatype="tokens">Tower</Classes>
|
|
||||||
</Identity>
|
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>1</wood>
|
<wood>1</wood>
|
||||||
</Loot>
|
</Loot>
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
<Height>12.0</Height>
|
<Height>12.0</Height>
|
||||||
</Footprint>
|
</Footprint>
|
||||||
<Identity>
|
<Identity>
|
||||||
<SpecificName>Watchtower</SpecificName>
|
<GenericName>Watchtower</GenericName>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>3</wood>
|
<wood>3</wood>
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Entity parent="template_structure_special">
|
<Entity parent="template_structure_special">
|
||||||
<BuildRestrictions>
|
<BuildRestrictions>
|
||||||
<Category>Apadana</Category>
|
<Category>Palace</Category>
|
||||||
</BuildRestrictions>
|
</BuildRestrictions>
|
||||||
<Cost>
|
<Cost>
|
||||||
<BuildTime>300</BuildTime>
|
<BuildTime>300</BuildTime>
|
||||||
@ -26,9 +26,10 @@
|
|||||||
<Civ>pers</Civ>
|
<Civ>pers</Civ>
|
||||||
<GenericName>Throne Hall</GenericName>
|
<GenericName>Throne Hall</GenericName>
|
||||||
<SpecificName>Apadāna</SpecificName>
|
<SpecificName>Apadāna</SpecificName>
|
||||||
<Classes datatype="tokens">Apadana ConquestCritical Palace</Classes>
|
<Tooltip>Train Champions and Heroes.</Tooltip>
|
||||||
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">Palace</VisibleClasses>
|
||||||
<Icon>structures/palace.png</Icon>
|
<Icon>structures/palace.png</Icon>
|
||||||
<Tooltip>"Satrapy Tribute": Gain a trickle of food, wood, stone, and metal resources. Train Champions and Heroes.</Tooltip>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<stone>60</stone>
|
<stone>60</stone>
|
||||||
|
@ -23,9 +23,10 @@
|
|||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Civ>pers</Civ>
|
<Civ>pers</Civ>
|
||||||
<Classes datatype="tokens">ConquestCritical</Classes>
|
|
||||||
<GenericName>Gate of All Nations</GenericName>
|
<GenericName>Gate of All Nations</GenericName>
|
||||||
<SpecificName>Duvarθi Visadahyu</SpecificName>
|
<SpecificName>Duvarθi Visadahyu</SpecificName>
|
||||||
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">Hall</VisibleClasses>
|
||||||
<Icon>structures/pers_hall.png</Icon>
|
<Icon>structures/pers_hall.png</Icon>
|
||||||
<Tooltip>Train Champions.</Tooltip>
|
<Tooltip>Train Champions.</Tooltip>
|
||||||
</Identity>
|
</Identity>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
structures/loyalty_regen
|
structures/loyalty_regen
|
||||||
</Auras>
|
</Auras>
|
||||||
<BuildRestrictions>
|
<BuildRestrictions>
|
||||||
<Category>UniqueBuilding</Category>
|
<Category>IshtarGate</Category>
|
||||||
</BuildRestrictions>
|
</BuildRestrictions>
|
||||||
<Capturable disable=""/>
|
<Capturable disable=""/>
|
||||||
<Cost>
|
<Cost>
|
||||||
@ -26,10 +26,10 @@
|
|||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Civ>pers</Civ>
|
<Civ>pers</Civ>
|
||||||
<GenericName>Persian Special Building</GenericName>
|
<GenericName>Ishtar Gate of Babylon</GenericName>
|
||||||
<SpecificName>Ishtar Gate of Babylon</SpecificName>
|
<Tooltip>Territory root.</Tooltip>
|
||||||
<Tooltip>Increases the loyalty regeneration of nearby structures, making them harder to capture.</Tooltip>
|
|
||||||
<Classes datatype="tokens">ConquestCritical</Classes>
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">IshtarGate</VisibleClasses>
|
||||||
<Icon>structures/pers_gate.png</Icon>
|
<Icon>structures/pers_gate.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -23,7 +23,8 @@
|
|||||||
<Civ>pers</Civ>
|
<Civ>pers</Civ>
|
||||||
<GenericName>Palace</GenericName>
|
<GenericName>Palace</GenericName>
|
||||||
<SpecificName>Taçara</SpecificName>
|
<SpecificName>Taçara</SpecificName>
|
||||||
<Classes datatype="tokens">ConquestCritical Palace</Classes>
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">Palace</VisibleClasses>
|
||||||
<Icon>structures/palace.png</Icon>
|
<Icon>structures/palace.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -23,9 +23,8 @@
|
|||||||
<Civ>ptol</Civ>
|
<Civ>ptol</Civ>
|
||||||
<GenericName>Lighthouse</GenericName>
|
<GenericName>Lighthouse</GenericName>
|
||||||
<SpecificName>Pharos</SpecificName>
|
<SpecificName>Pharos</SpecificName>
|
||||||
<Classes datatype="tokens">Lighthouse</Classes>
|
<Tooltip>Build upon a shoreline in own, neutral, or allied territory. Reveal the shorelines over the entire map. Very large vision range.</Tooltip>
|
||||||
<VisibleClasses datatype="tokens">-City Town</VisibleClasses>
|
<VisibleClasses datatype="tokens">-City Town Lighthouse</VisibleClasses>
|
||||||
<Tooltip>Build along the shore to reveal the shorelines over the entire map. Very large vision range: 180 meters.</Tooltip>
|
|
||||||
<Icon>structures/lighthouse.png</Icon>
|
<Icon>structures/lighthouse.png</Icon>
|
||||||
<RequiredTechnology>phase_town</RequiredTechnology>
|
<RequiredTechnology>phase_town</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<Civ>ptol</Civ>
|
<Civ>ptol</Civ>
|
||||||
<SpecificName>Klērouchia</SpecificName>
|
<SpecificName>Klērouchia</SpecificName>
|
||||||
<Tooltip>This is the Ptolemaic expansion building, similar to Civic Centers for other factions. It is weaker and carries a smaller territory influence, but is cheaper and built faster. Train settler-soldiers of various nationalities.</Tooltip>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Obstruction>
|
<Obstruction>
|
||||||
<Static width="32" depth="31"/>
|
<Static width="32" depth="31"/>
|
||||||
|
@ -20,7 +20,8 @@
|
|||||||
<Civ>rome</Civ>
|
<Civ>rome</Civ>
|
||||||
<GenericName>Triumphal Arch</GenericName>
|
<GenericName>Triumphal Arch</GenericName>
|
||||||
<SpecificName>Arcus Triumphālis</SpecificName>
|
<SpecificName>Arcus Triumphālis</SpecificName>
|
||||||
<Classes datatype="tokens">ConquestCritical</Classes>
|
<Tooltip>Territory root.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">TriumphalArch</VisibleClasses>
|
||||||
<Icon>structures/arch.png</Icon>
|
<Icon>structures/arch.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -79,9 +79,10 @@
|
|||||||
<Civ>rome</Civ>
|
<Civ>rome</Civ>
|
||||||
<GenericName>Army Camp</GenericName>
|
<GenericName>Army Camp</GenericName>
|
||||||
<SpecificName>Castra</SpecificName>
|
<SpecificName>Castra</SpecificName>
|
||||||
<Classes datatype="tokens">ArmyCamp ConquestCritical</Classes>
|
|
||||||
<Icon>structures/roman_camp.png</Icon>
|
|
||||||
<Tooltip>Build in neutral or enemy territory. Train Citizen-Soldiers and construct Siege Engines. Garrison Soldiers for additional arrows.</Tooltip>
|
<Tooltip>Build in neutral or enemy territory. Train Citizen-Soldiers and construct Siege Engines. Garrison Soldiers for additional arrows.</Tooltip>
|
||||||
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">ArmyCamp</VisibleClasses>
|
||||||
|
<Icon>structures/roman_camp.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<xp>100</xp>
|
<xp>100</xp>
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<Civ>rome</Civ>
|
<Civ>rome</Civ>
|
||||||
<GenericName>Siege Wall Gate</GenericName>
|
<GenericName>Siege Wall Gate</GenericName>
|
||||||
<SpecificName>Porta Circummūnītiōnis</SpecificName>
|
<SpecificName>Porta Circummūnītiōnis</SpecificName>
|
||||||
<Classes datatype="tokens">SiegeWall</Classes>
|
<VisibleClasses datatype="tokens">SiegeWall</VisibleClasses>
|
||||||
<Icon>structures/wooden_gate.png</Icon>
|
<Icon>structures/wooden_gate.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -31,9 +31,8 @@
|
|||||||
<SelectionGroupName>structures/rome_wallset_siege</SelectionGroupName>
|
<SelectionGroupName>structures/rome_wallset_siege</SelectionGroupName>
|
||||||
<GenericName>Siege Wall</GenericName>
|
<GenericName>Siege Wall</GenericName>
|
||||||
<SpecificName>Mūrus Circummūnītiōnis</SpecificName>
|
<SpecificName>Mūrus Circummūnītiōnis</SpecificName>
|
||||||
<Classes datatype="tokens">SiegeWall</Classes>
|
<VisibleClasses datatype="tokens">SiegeWall</VisibleClasses>
|
||||||
<Icon>structures/siege_wall.png</Icon>
|
<Icon>structures/siege_wall.png</Icon>
|
||||||
<Tooltip>A wooden and turf palisade buildable in enemy and neutral territories.</Tooltip>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>12</wood>
|
<wood>12</wood>
|
||||||
|
@ -31,9 +31,8 @@
|
|||||||
<SelectionGroupName>structures/rome_wallset_siege</SelectionGroupName>
|
<SelectionGroupName>structures/rome_wallset_siege</SelectionGroupName>
|
||||||
<GenericName>Siege Wall</GenericName>
|
<GenericName>Siege Wall</GenericName>
|
||||||
<SpecificName>Mūrus Circummūnītiōnis</SpecificName>
|
<SpecificName>Mūrus Circummūnītiōnis</SpecificName>
|
||||||
<Classes datatype="tokens">SiegeWall</Classes>
|
<VisibleClasses datatype="tokens">SiegeWall</VisibleClasses>
|
||||||
<Icon>structures/siege_wall.png</Icon>
|
<Icon>structures/siege_wall.png</Icon>
|
||||||
<Tooltip>A wooden and turf palisade buildable in enemy and neutral territories.</Tooltip>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>8</wood>
|
<wood>8</wood>
|
||||||
|
@ -31,9 +31,8 @@
|
|||||||
<SelectionGroupName>structures/rome_wallset_siege</SelectionGroupName>
|
<SelectionGroupName>structures/rome_wallset_siege</SelectionGroupName>
|
||||||
<GenericName>Siege Wall</GenericName>
|
<GenericName>Siege Wall</GenericName>
|
||||||
<SpecificName>Mūrus Circummūnītiōnis</SpecificName>
|
<SpecificName>Mūrus Circummūnītiōnis</SpecificName>
|
||||||
<Classes datatype="tokens">SiegeWall</Classes>
|
<VisibleClasses datatype="tokens">SiegeWall</VisibleClasses>
|
||||||
<Icon>structures/siege_wall.png</Icon>
|
<Icon>structures/siege_wall.png</Icon>
|
||||||
<Tooltip>A wooden and turf palisade buildable in enemy and neutral territories.</Tooltip>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>4</wood>
|
<wood>4</wood>
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
<Civ>rome</Civ>
|
<Civ>rome</Civ>
|
||||||
<GenericName>Siege Wall Tower</GenericName>
|
<GenericName>Siege Wall Tower</GenericName>
|
||||||
<SpecificName>Turris Circummūnītiōnis</SpecificName>
|
<SpecificName>Turris Circummūnītiōnis</SpecificName>
|
||||||
<Classes datatype="tokens">SiegeWall</Classes>
|
<VisibleClasses datatype="tokens">SiegeWall</VisibleClasses>
|
||||||
<Icon>structures/siege_wall.png</Icon>
|
<Icon>structures/siege_wall.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
<Civ>rome</Civ>
|
<Civ>rome</Civ>
|
||||||
<GenericName>Temple of Mars</GenericName>
|
<GenericName>Temple of Mars</GenericName>
|
||||||
<SpecificName>Aedēs Mārtiālis</SpecificName>
|
<SpecificName>Aedēs Mārtiālis</SpecificName>
|
||||||
|
<VisibleClasses datatype="tokens">-Town City TempleOfMars</VisibleClasses>
|
||||||
|
<RequiredTechnology>phase_city</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Obstruction>
|
<Obstruction>
|
||||||
<Static width="20.0" depth="40.0"/>
|
<Static width="20.0" depth="40.0"/>
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
structures/loyalty_regen
|
structures/loyalty_regen
|
||||||
</Auras>
|
</Auras>
|
||||||
<BuildRestrictions>
|
<BuildRestrictions>
|
||||||
<Category>UniqueBuilding</Category>
|
<Category>TempleOfVesta</Category>
|
||||||
</BuildRestrictions>
|
</BuildRestrictions>
|
||||||
<Footprint replace="">
|
<Footprint replace="">
|
||||||
<Circle radius="11.0"/>
|
<Circle radius="11.0"/>
|
||||||
@ -15,8 +15,9 @@
|
|||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Temple of Vesta</GenericName>
|
<GenericName>Temple of Vesta</GenericName>
|
||||||
<Icon>structures/temple_vesta.png</Icon>
|
|
||||||
<SpecificName>Aedēs Vestālis</SpecificName>
|
<SpecificName>Aedēs Vestālis</SpecificName>
|
||||||
|
<VisibleClasses datatype="tokens">TempleOfVesta</VisibleClasses>
|
||||||
|
<Icon>structures/temple_vesta.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Obstruction>
|
<Obstruction>
|
||||||
<Static width="19.0" depth="19.0"/>
|
<Static width="19.0" depth="19.0"/>
|
||||||
|
@ -4,8 +4,9 @@
|
|||||||
<Civ>rome</Civ>
|
<Civ>rome</Civ>
|
||||||
<GenericName>Siege Wall</GenericName>
|
<GenericName>Siege Wall</GenericName>
|
||||||
<SpecificName>Mūrus Circummūnītiōnis</SpecificName>
|
<SpecificName>Mūrus Circummūnītiōnis</SpecificName>
|
||||||
|
<Tooltip>Wall off an area. Build in own, neutral, or enemy territory.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">SiegeWall</VisibleClasses>
|
||||||
<Icon>structures/siege_wall.png</Icon>
|
<Icon>structures/siege_wall.png</Icon>
|
||||||
<Tooltip>A wooden and turf palisade buildable in enemy and neutral territories.</Tooltip>
|
|
||||||
<RequiredTechnology>phase_city</RequiredTechnology>
|
<RequiredTechnology>phase_city</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
<WallSet>
|
<WallSet>
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<Civ>sele</Civ>
|
<Civ>sele</Civ>
|
||||||
<SpecificName>Klērouchia</SpecificName>
|
<SpecificName>Klērouchia</SpecificName>
|
||||||
<Tooltip>This is the Seleucid expansion building, similar to Civic Centers for other factions. It is weaker and carries a smaller territory influence, but is cheaper and built faster. Train settler-soldiers of various nationalities.</Tooltip>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Obstruction>
|
<Obstruction>
|
||||||
<Static width="29" depth="29"/>
|
<Static width="29" depth="29"/>
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Entity parent="template_structure_special">
|
<Entity parent="template_structure_special">
|
||||||
|
<BuildRestrictions>
|
||||||
|
<Category>Council</Category>
|
||||||
|
</BuildRestrictions>
|
||||||
<Cost>
|
<Cost>
|
||||||
<BuildTime>200</BuildTime>
|
<BuildTime>200</BuildTime>
|
||||||
<Resources>
|
<Resources>
|
||||||
@ -16,10 +19,11 @@
|
|||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Civ>spart</Civ>
|
<Civ>spart</Civ>
|
||||||
<Classes datatype="tokens">ConquestCritical</Classes>
|
|
||||||
<GenericName>Spartan Senate</GenericName>
|
<GenericName>Spartan Senate</GenericName>
|
||||||
<SpecificName>Gerousia</SpecificName>
|
<SpecificName>Gerousia</SpecificName>
|
||||||
<Tooltip>Train Heroes.</Tooltip>
|
<Tooltip>Train Heroes.</Tooltip>
|
||||||
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">Council</VisibleClasses>
|
||||||
<Icon>structures/tholos.png</Icon>
|
<Icon>structures/tholos.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -20,10 +20,11 @@
|
|||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Civ>spart</Civ>
|
<Civ>spart</Civ>
|
||||||
<Classes datatype="tokens">ConquestCritical Syssiton</Classes>
|
|
||||||
<GenericName>Military Mess Hall</GenericName>
|
<GenericName>Military Mess Hall</GenericName>
|
||||||
<SpecificName>Syssition</SpecificName>
|
<SpecificName>Syssition</SpecificName>
|
||||||
<Tooltip>Train Champions and Heroes.</Tooltip>
|
<Tooltip>Train Champions and Heroes.</Tooltip>
|
||||||
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">Syssiton</VisibleClasses>
|
||||||
<Icon>structures/syssition.png</Icon>
|
<Icon>structures/syssition.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Entity parent="template_wallset">
|
<Entity parent="template_wallset">
|
||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Wooden Wall</GenericName>
|
<GenericName>Palisade</GenericName>
|
||||||
<SpecificName>Palisade</SpecificName>
|
<VisibleClasses datatype="tokens">-Wall Palisade</VisibleClasses>
|
||||||
<Classes datatype="tokens">-StoneWall Palisade</Classes>
|
|
||||||
<Icon>structures/palisade_wall.png</Icon>
|
<Icon>structures/palisade_wall.png</Icon>
|
||||||
<RequiredTechnology>phase_village</RequiredTechnology>
|
<RequiredTechnology>phase_village</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
|
@ -86,7 +86,7 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Civic Center</GenericName>
|
<GenericName>Civic Center</GenericName>
|
||||||
<SelectionGroupName>template_structure_civic_civil_centre</SelectionGroupName>
|
<SelectionGroupName>template_structure_civic_civil_centre</SelectionGroupName>
|
||||||
<Tooltip>Build to acquire large tracts of territory. Train citizens.</Tooltip>
|
<Tooltip>Build in own or neutral territory. Acquire large tracts of territory. Territory root. Dropsite for food, wood, stone, and metal. Train Citizens and research technologies. Garrison Soldiers for additional arrows.</Tooltip>
|
||||||
<Classes datatype="tokens">CivCentre</Classes>
|
<Classes datatype="tokens">CivCentre</Classes>
|
||||||
<VisibleClasses datatype="tokens">Defensive CivilCentre</VisibleClasses>
|
<VisibleClasses datatype="tokens">Defensive CivilCentre</VisibleClasses>
|
||||||
<Icon>structures/civic_centre.png</Icon>
|
<Icon>structures/civic_centre.png</Icon>
|
||||||
|
@ -25,8 +25,8 @@
|
|||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Military Colony</GenericName>
|
<GenericName>Military Colony</GenericName>
|
||||||
<Classes datatype="tokens">Colony</Classes>
|
|
||||||
<SelectionGroupName>template_structure_civic_civil_centre_military_colony</SelectionGroupName>
|
<SelectionGroupName>template_structure_civic_civil_centre_military_colony</SelectionGroupName>
|
||||||
|
<VisibleClasses datatype="tokens">Colony</VisibleClasses>
|
||||||
<Icon>structures/military_settlement.png</Icon>
|
<Icon>structures/military_settlement.png</Icon>
|
||||||
<RequiredTechnology>phase_town</RequiredTechnology>
|
<RequiredTechnology>phase_town</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
|
@ -32,10 +32,10 @@
|
|||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>House</GenericName>
|
<GenericName>House</GenericName>
|
||||||
<Tooltip>Increase the population limit.</Tooltip>
|
|
||||||
<VisibleClasses datatype="tokens">Village House</VisibleClasses>
|
|
||||||
<SelectionGroupName>template_structure_civic_house</SelectionGroupName>
|
<SelectionGroupName>template_structure_civic_house</SelectionGroupName>
|
||||||
|
<VisibleClasses datatype="tokens">Village House</VisibleClasses>
|
||||||
<Icon>structures/house.png</Icon>
|
<Icon>structures/house.png</Icon>
|
||||||
|
<RequiredTechnology>phase_village</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>15</wood>
|
<wood>15</wood>
|
||||||
|
@ -30,10 +30,10 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Stoa</GenericName>
|
<GenericName>Stoa</GenericName>
|
||||||
<SelectionGroupName>template_structure_civic_stoa</SelectionGroupName>
|
<SelectionGroupName>template_structure_civic_stoa</SelectionGroupName>
|
||||||
<Tooltip>Recruit special units.</Tooltip>
|
<Tooltip>Train Mercenary Champions.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">Town Stoa</VisibleClasses>
|
||||||
<Icon>gaia/special_stoa.png</Icon>
|
<Icon>gaia/special_stoa.png</Icon>
|
||||||
<RequiredTechnology>phase_town</RequiredTechnology>
|
<RequiredTechnology>phase_town</RequiredTechnology>
|
||||||
<VisibleClasses datatype="tokens">Town</VisibleClasses>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<stone>20</stone>
|
<stone>20</stone>
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Temple</GenericName>
|
<GenericName>Temple</GenericName>
|
||||||
<SelectionGroupName>template_structure_civic_temple</SelectionGroupName>
|
<SelectionGroupName>template_structure_civic_temple</SelectionGroupName>
|
||||||
<Tooltip>Train Healers and research healing technologies. Garrison units to heal them at a quick rate.</Tooltip>
|
<Tooltip>Train Healers and research healing technologies.</Tooltip>
|
||||||
<VisibleClasses datatype="tokens">Town Temple</VisibleClasses>
|
<VisibleClasses datatype="tokens">Town Temple</VisibleClasses>
|
||||||
<Icon>structures/temple.png</Icon>
|
<Icon>structures/temple.png</Icon>
|
||||||
<RequiredTechnology>phase_town</RequiredTechnology>
|
<RequiredTechnology>phase_town</RequiredTechnology>
|
||||||
|
@ -17,12 +17,11 @@
|
|||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_2x2</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_2x2</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">Palisade</Classes>
|
<GenericName>Palisade</GenericName>
|
||||||
<GenericName>Wooden Wall</GenericName>
|
|
||||||
<SelectionGroupName>template_structure_defensive_palisade</SelectionGroupName>
|
<SelectionGroupName>template_structure_defensive_palisade</SelectionGroupName>
|
||||||
<Tooltip>Wall off your town for a stout defense.</Tooltip>
|
<Tooltip>Wall off an area.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">Palisade</VisibleClasses>
|
||||||
<Icon>gaia/special_palisade.png</Icon>
|
<Icon>gaia/special_palisade.png</Icon>
|
||||||
<RequiredTechnology>phase_village</RequiredTechnology>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<ProductionQueue disable=""/>
|
<ProductionQueue disable=""/>
|
||||||
<RallyPoint disable=""/>
|
<RallyPoint disable=""/>
|
||||||
|
@ -49,6 +49,7 @@
|
|||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_2x2</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_2x2</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
|
<GenericName>Tower</GenericName>
|
||||||
<VisibleClasses datatype="tokens">Tower</VisibleClasses>
|
<VisibleClasses datatype="tokens">Tower</VisibleClasses>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Sound>
|
<Sound>
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
<GenericName>Outpost</GenericName>
|
<GenericName>Outpost</GenericName>
|
||||||
<SelectionGroupName>template_structure_defensive_tower_outpost</SelectionGroupName>
|
<SelectionGroupName>template_structure_defensive_tower_outpost</SelectionGroupName>
|
||||||
<Tooltip>Build in own or neutral territory. Slowly converts to Gaia while in neutral territory.</Tooltip>
|
<Tooltip>Build in own or neutral territory. Slowly converts to Gaia while in neutral territory.</Tooltip>
|
||||||
<VisibleClasses datatype="tokens">Village -Tower Outpost</VisibleClasses>
|
<VisibleClasses datatype="tokens">-Tower Outpost</VisibleClasses>
|
||||||
<Icon>structures/outpost.png</Icon>
|
<Icon>structures/outpost.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -37,6 +37,7 @@
|
|||||||
<Tooltip>Garrison Infantry for additional arrows. Needs the “Murder Holes” technology to protect its foot.</Tooltip>
|
<Tooltip>Garrison Infantry for additional arrows. Needs the “Murder Holes” technology to protect its foot.</Tooltip>
|
||||||
<VisibleClasses datatype="tokens">Village SentryTower</VisibleClasses>
|
<VisibleClasses datatype="tokens">Village SentryTower</VisibleClasses>
|
||||||
<Icon>structures/sentry_tower.png</Icon>
|
<Icon>structures/sentry_tower.png</Icon>
|
||||||
|
<RequiredTechnology>phase_village</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>20</wood>
|
<wood>20</wood>
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
<Max>1000</Max>
|
<Max>1000</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Defense Tower</GenericName>
|
<GenericName>Stone Tower</GenericName>
|
||||||
<SelectionGroupName>template_structure_defensive_tower_stone</SelectionGroupName>
|
<SelectionGroupName>template_structure_defensive_tower_stone</SelectionGroupName>
|
||||||
<Tooltip>Garrison Infantry for additional arrows. Needs the “Murder Holes” technology to protect its foot.</Tooltip>
|
<Tooltip>Garrison Infantry for additional arrows. Needs the “Murder Holes” technology to protect its foot.</Tooltip>
|
||||||
<VisibleClasses datatype="tokens">Town StoneTower</VisibleClasses>
|
<VisibleClasses datatype="tokens">Town StoneTower</VisibleClasses>
|
||||||
|
@ -12,10 +12,10 @@
|
|||||||
<Height>8.0</Height>
|
<Height>8.0</Height>
|
||||||
</Footprint>
|
</Footprint>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">StoneWall</Classes>
|
<GenericName>Wall</GenericName>
|
||||||
<GenericName>Stone Wall</GenericName>
|
|
||||||
<SelectionGroupName>template_structure_defensive_wall</SelectionGroupName>
|
<SelectionGroupName>template_structure_defensive_wall</SelectionGroupName>
|
||||||
<Tooltip>Wall off your town for a stout defense.</Tooltip>
|
<Tooltip>Wall off your town for a stout defense.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">Wall</VisibleClasses>
|
||||||
<Icon>structures/wall.png</Icon>
|
<Icon>structures/wall.png</Icon>
|
||||||
<RequiredTechnology>phase_town</RequiredTechnology>
|
<RequiredTechnology>phase_town</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
|
@ -16,11 +16,11 @@
|
|||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_wall_long</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_wall_long</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">Gates</Classes>
|
<GenericName>Gate</GenericName>
|
||||||
<GenericName>City Gate</GenericName>
|
|
||||||
<SelectionGroupName>template_structure_defensive_wall_gate</SelectionGroupName>
|
<SelectionGroupName>template_structure_defensive_wall_gate</SelectionGroupName>
|
||||||
|
<Tooltip>Allow units access through Walls. Can be locked to prevent access.</Tooltip>
|
||||||
|
<VisibleClasses datatype="tokens">Gate</VisibleClasses>
|
||||||
<Icon>structures/gate.png</Icon>
|
<Icon>structures/gate.png</Icon>
|
||||||
<Tooltip>Allow units access through a city wall. Can be locked to prevent access.</Tooltip>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<stone>12</stone>
|
<stone>12</stone>
|
||||||
|
@ -22,8 +22,8 @@
|
|||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_wall_long</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_wall_long</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">LongWall</Classes>
|
<Tooltip>Can be converted into a Gate.</Tooltip>
|
||||||
<Tooltip>Long wall segments can be converted to gates.</Tooltip>
|
<Classes datatype="tokens">WallLong</Classes>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<stone>7</stone>
|
<stone>7</stone>
|
||||||
@ -32,7 +32,7 @@
|
|||||||
<Upgrade>
|
<Upgrade>
|
||||||
<Gate>
|
<Gate>
|
||||||
<Entity>structures/{civ}_wall_gate</Entity>
|
<Entity>structures/{civ}_wall_gate</Entity>
|
||||||
<Tooltip>This will allow you to let units circulate through your fortifications.</Tooltip>
|
<Tooltip>Allow units access through Walls. Can be locked to prevent access.</Tooltip>
|
||||||
<Cost>
|
<Cost>
|
||||||
<stone>60</stone>
|
<stone>60</stone>
|
||||||
</Cost>
|
</Cost>
|
||||||
|
@ -21,6 +21,9 @@
|
|||||||
<Max>2000</Max>
|
<Max>2000</Max>
|
||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_wall_medium</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_wall_medium</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
|
<Identity>
|
||||||
|
<Classes datatype="tokens">WallMedium</Classes>
|
||||||
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<stone>5</stone>
|
<stone>5</stone>
|
||||||
</Loot>
|
</Loot>
|
||||||
|
@ -10,6 +10,9 @@
|
|||||||
<Max>1000</Max>
|
<Max>1000</Max>
|
||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_wall_short</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_wall_short</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
|
<Identity>
|
||||||
|
<Classes datatype="tokens">WallShort</Classes>
|
||||||
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<stone>3</stone>
|
<stone>3</stone>
|
||||||
</Loot>
|
</Loot>
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Wall Turret</GenericName>
|
<GenericName>Wall Turret</GenericName>
|
||||||
<SelectionGroupName>template_structure_defensive_wall_tower</SelectionGroupName>
|
<SelectionGroupName>template_structure_defensive_wall_tower</SelectionGroupName>
|
||||||
<Tooltip>Garrison Infantry for additional arrows. Needs the “Murder Holes” technology to protect its foot.</Tooltip>
|
<Tooltip>Garrison Infantry for additional arrows.</Tooltip>
|
||||||
<Classes datatype="tokens">WallTower</Classes>
|
<Classes datatype="tokens">WallTower</Classes>
|
||||||
<Icon>structures/tower.png</Icon>
|
<Icon>structures/tower.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
|
@ -26,12 +26,13 @@
|
|||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_4x4</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_4x4</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">DropsiteFood</Classes>
|
|
||||||
<GenericName>Farmstead</GenericName>
|
<GenericName>Farmstead</GenericName>
|
||||||
<SelectionGroupName>template_structure_economic_farmstead</SelectionGroupName>
|
<SelectionGroupName>template_structure_economic_farmstead</SelectionGroupName>
|
||||||
<Icon>structures/farmstead.png</Icon>
|
<Tooltip>Dropsite for food. Research food gathering technologies.</Tooltip>
|
||||||
<Tooltip>Dropsite for the food resource. Research food gathering improvements.</Tooltip>
|
<Classes datatype="tokens">DropsiteFood</Classes>
|
||||||
<VisibleClasses datatype="tokens">Village Farmstead</VisibleClasses>
|
<VisibleClasses datatype="tokens">Village Farmstead</VisibleClasses>
|
||||||
|
<Icon>structures/farmstead.png</Icon>
|
||||||
|
<RequiredTechnology>phase_village</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>20</wood>
|
<wood>20</wood>
|
||||||
|
@ -24,13 +24,13 @@
|
|||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_5x5</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_5x5</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">BarterMarket</Classes>
|
|
||||||
<GenericName>Market</GenericName>
|
<GenericName>Market</GenericName>
|
||||||
<SelectionGroupName>template_structure_economic_market</SelectionGroupName>
|
<SelectionGroupName>template_structure_economic_market</SelectionGroupName>
|
||||||
|
<Tooltip>Barter resources. Establish trade routes. Train Traders and research trade and barter technologies.</Tooltip>
|
||||||
|
<Classes datatype="tokens">Barter</Classes>
|
||||||
|
<VisibleClasses datatype="tokens">Trade Town Market</VisibleClasses>
|
||||||
<Icon>structures/market.png</Icon>
|
<Icon>structures/market.png</Icon>
|
||||||
<RequiredTechnology>phase_town</RequiredTechnology>
|
<RequiredTechnology>phase_town</RequiredTechnology>
|
||||||
<Tooltip>Create trade units to trade between other markets. Barter resources. Research trading and bartering improvements.</Tooltip>
|
|
||||||
<VisibleClasses datatype="tokens">Town Market</VisibleClasses>
|
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>60</wood>
|
<wood>60</wood>
|
||||||
|
@ -27,12 +27,13 @@
|
|||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_3x3</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_3x3</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">DropsiteWood DropsiteMetal DropsiteStone</Classes>
|
|
||||||
<GenericName>Storehouse</GenericName>
|
<GenericName>Storehouse</GenericName>
|
||||||
<SelectionGroupName>template_structure_economic_storehouse</SelectionGroupName>
|
<SelectionGroupName>template_structure_economic_storehouse</SelectionGroupName>
|
||||||
<Icon>structures/storehouse.png</Icon>
|
<Tooltip>Dropsite for wood, stone, and metal. Research gathering technologies.</Tooltip>
|
||||||
<Tooltip>Dropsite for wood, stone, and metal resources. Research gathering improvements for these resources.</Tooltip>
|
<Classes datatype="tokens">DropsiteWood DropsiteMetal DropsiteStone</Classes>
|
||||||
<VisibleClasses datatype="tokens">Village Storehouse</VisibleClasses>
|
<VisibleClasses datatype="tokens">Village Storehouse</VisibleClasses>
|
||||||
|
<Icon>structures/storehouse.png</Icon>
|
||||||
|
<RequiredTechnology>phase_village</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>20</wood>
|
<wood>20</wood>
|
||||||
|
@ -25,7 +25,7 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Barracks</GenericName>
|
<GenericName>Barracks</GenericName>
|
||||||
<SelectionGroupName>template_structure_military_barracks</SelectionGroupName>
|
<SelectionGroupName>template_structure_military_barracks</SelectionGroupName>
|
||||||
<Tooltip>Train citizen-soldiers. Research training improvements.</Tooltip>
|
<Tooltip>Train Citizen Soldiers and research technologies.</Tooltip>
|
||||||
<VisibleClasses datatype="tokens">Village Barracks</VisibleClasses>
|
<VisibleClasses datatype="tokens">Village Barracks</VisibleClasses>
|
||||||
<Icon>structures/barracks.png</Icon>
|
<Icon>structures/barracks.png</Icon>
|
||||||
<RequiredTechnology>phase_village</RequiredTechnology>
|
<RequiredTechnology>phase_village</RequiredTechnology>
|
||||||
|
@ -24,9 +24,8 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Dock</GenericName>
|
<GenericName>Dock</GenericName>
|
||||||
<SelectionGroupName>template_structure_military_dock</SelectionGroupName>
|
<SelectionGroupName>template_structure_military_dock</SelectionGroupName>
|
||||||
<Tooltip>Build upon a shoreline to construct naval vessels and to open sea trade. Research naval improvements.</Tooltip>
|
<Tooltip>Build upon a shoreline in own, neutral, or allied territory. Dropsite for food, wood, stone, and metal. Establish trade routes. Construct Ships and research Ship technologies.</Tooltip>
|
||||||
<Classes datatype="tokens">Naval NavalMarket</Classes>
|
<VisibleClasses datatype="tokens">Economic Naval Trade Village Dock</VisibleClasses>
|
||||||
<VisibleClasses datatype="tokens">Economic Village Market Dock</VisibleClasses>
|
|
||||||
<Icon>structures/dock.png</Icon>
|
<Icon>structures/dock.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -17,9 +17,10 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Corral</GenericName>
|
<GenericName>Corral</GenericName>
|
||||||
<SelectionGroupName>template_structure_resource_corral</SelectionGroupName>
|
<SelectionGroupName>template_structure_resource_corral</SelectionGroupName>
|
||||||
<Tooltip>Raise herd animals for food. Task domestic animals here to gain a trickle of food or other bonus (Not yet implemented).</Tooltip>
|
<Tooltip>Raise Domestic Animals for food.</Tooltip>
|
||||||
<VisibleClasses datatype="tokens">Village Corral</VisibleClasses>
|
<VisibleClasses datatype="tokens">Village Corral</VisibleClasses>
|
||||||
<Icon>structures/corral.png</Icon>
|
<Icon>structures/corral.png</Icon>
|
||||||
|
<RequiredTechnology>phase_village</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
<wood>20</wood>
|
<wood>20</wood>
|
||||||
|
@ -30,9 +30,7 @@
|
|||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_6x6</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_6x6</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Special Building</GenericName>
|
<GenericName>Special Structure</GenericName>
|
||||||
<Tooltip>This is a special building unique to a particular civilization.</Tooltip>
|
|
||||||
<Classes datatype="tokens">SpecialBuilding</Classes>
|
|
||||||
<VisibleClasses datatype="tokens">City</VisibleClasses>
|
<VisibleClasses datatype="tokens">City</VisibleClasses>
|
||||||
<RequiredTechnology>phase_city</RequiredTechnology>
|
<RequiredTechnology>phase_city</RequiredTechnology>
|
||||||
</Identity>
|
</Identity>
|
||||||
|
@ -18,9 +18,9 @@
|
|||||||
<Max>2000</Max>
|
<Max>2000</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">Amphitheater</Classes>
|
|
||||||
<GenericName>Amphitheater</GenericName>
|
<GenericName>Amphitheater</GenericName>
|
||||||
<SelectionGroupName>template_structure_special_amphitheater</SelectionGroupName>
|
<SelectionGroupName>template_structure_special_amphitheater</SelectionGroupName>
|
||||||
|
<VisibleClasses datatype="tokens">Amphitheater</VisibleClasses>
|
||||||
<Icon>structures/theater.png</Icon>
|
<Icon>structures/theater.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -23,7 +23,7 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Library</GenericName>
|
<GenericName>Library</GenericName>
|
||||||
<SelectionGroupName>template_structure_special_library</SelectionGroupName>
|
<SelectionGroupName>template_structure_special_library</SelectionGroupName>
|
||||||
<Tooltip>Research special technologies.</Tooltip>
|
<VisibleClasses datatype="tokens">Library</VisibleClasses>
|
||||||
<Icon>structures/library_scroll.png</Icon>
|
<Icon>structures/library_scroll.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
<Identity>
|
<Identity>
|
||||||
<GenericName>Rotary Mill</GenericName>
|
<GenericName>Rotary Mill</GenericName>
|
||||||
<SelectionGroupName>template_structure_special_rotarymill</SelectionGroupName>
|
<SelectionGroupName>template_structure_special_rotarymill</SelectionGroupName>
|
||||||
|
<VisibleClasses datatype="tokens">RotaryMill</VisibleClasses>
|
||||||
<Icon>structures/rotarymill.png</Icon>
|
<Icon>structures/rotarymill.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -21,9 +21,9 @@
|
|||||||
<Max>2000</Max>
|
<Max>2000</Max>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">Theater</Classes>
|
|
||||||
<GenericName>Theater</GenericName>
|
<GenericName>Theater</GenericName>
|
||||||
<SelectionGroupName>template_structure_special_theater</SelectionGroupName>
|
<SelectionGroupName>template_structure_special_theater</SelectionGroupName>
|
||||||
|
<VisibleClasses datatype="tokens">Theater</VisibleClasses>
|
||||||
<Icon>structures/theater.png</Icon>
|
<Icon>structures/theater.png</Icon>
|
||||||
</Identity>
|
</Identity>
|
||||||
<Loot>
|
<Loot>
|
||||||
|
@ -46,10 +46,10 @@
|
|||||||
<SpawnEntityOnDeath>decay|rubble/rubble_stone_6x6</SpawnEntityOnDeath>
|
<SpawnEntityOnDeath>decay|rubble/rubble_stone_6x6</SpawnEntityOnDeath>
|
||||||
</Health>
|
</Health>
|
||||||
<Identity>
|
<Identity>
|
||||||
<Classes datatype="tokens">ConquestCritical</Classes>
|
|
||||||
<GenericName>Wonder</GenericName>
|
<GenericName>Wonder</GenericName>
|
||||||
<SelectionGroupName>template_structure_wonder</SelectionGroupName>
|
<SelectionGroupName>template_structure_wonder</SelectionGroupName>
|
||||||
<Tooltip>Bring glory to your civilization and add large tracts of land to your empire.</Tooltip>
|
<Tooltip>Bring glory to your civilization and add large tracts of land to your empire.</Tooltip>
|
||||||
|
<Classes datatype="tokens">ConquestCritical</Classes>
|
||||||
<VisibleClasses datatype="tokens">City Wonder</VisibleClasses>
|
<VisibleClasses datatype="tokens">City Wonder</VisibleClasses>
|
||||||
<Icon>structures/wonder.png</Icon>
|
<Icon>structures/wonder.png</Icon>
|
||||||
<RequiredTechnology>phase_city</RequiredTechnology>
|
<RequiredTechnology>phase_city</RequiredTechnology>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<Capture>2.5</Capture>
|
<Capture>2.5</Capture>
|
||||||
<MaxRange>4</MaxRange>
|
<MaxRange>4</MaxRange>
|
||||||
<RepeatTime>1000</RepeatTime>
|
<RepeatTime>1000</RepeatTime>
|
||||||
<RestrictedClasses datatype="tokens">Field Palisade SiegeWall StoneWall</RestrictedClasses>
|
<RestrictedClasses datatype="tokens">Field Palisade Wall</RestrictedClasses>
|
||||||
</Capture>
|
</Capture>
|
||||||
<Slaughter>
|
<Slaughter>
|
||||||
<Damage>
|
<Damage>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<Capture>5</Capture>
|
<Capture>5</Capture>
|
||||||
<MaxRange>4</MaxRange>
|
<MaxRange>4</MaxRange>
|
||||||
<RepeatTime>1000</RepeatTime>
|
<RepeatTime>1000</RepeatTime>
|
||||||
<RestrictedClasses datatype="tokens">Field Palisade SiegeWall StoneWall</RestrictedClasses>
|
<RestrictedClasses datatype="tokens">Field Palisade Wall</RestrictedClasses>
|
||||||
</Capture>
|
</Capture>
|
||||||
</Attack>
|
</Attack>
|
||||||
<Identity>
|
<Identity>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<Capture>10</Capture>
|
<Capture>10</Capture>
|
||||||
<MaxRange>4</MaxRange>
|
<MaxRange>4</MaxRange>
|
||||||
<RepeatTime>1000</RepeatTime>
|
<RepeatTime>1000</RepeatTime>
|
||||||
<RestrictedClasses datatype="tokens">Field Palisade SiegeWall StoneWall</RestrictedClasses>
|
<RestrictedClasses datatype="tokens">Field Palisade Wall</RestrictedClasses>
|
||||||
</Capture>
|
</Capture>
|
||||||
</Attack>
|
</Attack>
|
||||||
<Auras datatype="tokens">
|
<Auras datatype="tokens">
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user