1
0
forked from 0ad/0ad

Tokens for required technologies.

Use tokens for required technologies, allowing `-tech` and easier
replacements.
Fixes requiring `replace=""` when replacing techs.
Also a minor fix in the TemplateParser.js for upgrade requirements.
Refs. 9bb9ff8b16.

Differential revision: https://code.wildfiregames.com/D4912
Comments by: @Stan
This was SVN commit r27505.
This commit is contained in:
Freagarach 2023-01-30 08:05:34 +00:00
parent c80bfc8732
commit 83b786dcf5
150 changed files with 193 additions and 186 deletions

View File

@ -968,9 +968,9 @@ function getRequirementsTooltip(enabled, requirements, civ)
return "";
// Simple requirements (one tech) can be translated on the fly.
if ("Techs" in requirements && !requirements.Techs.includes(" "))
if ("Techs" in requirements && !requirements.Techs._string.includes(" "))
return objectionFont(sprintf(translate("Requires %(technology)s"), {
"technology": getEntityNames(GetTechnologyData(requirements.Techs, civ))
"technology": getEntityNames(GetTechnologyData(requirements.Techs._string, civ))
}));
return objectionFont(translate(requirements.Tooltip));
}

View File

@ -77,7 +77,7 @@ class TemplateParser
else
{
let highestPhaseIndex = 0;
for (const tech of parsed.requirements.Techs.split(" "))
for (const tech of parsed.requirements.Techs._string.split(" "))
{
if (tech[0] === "!")
continue;
@ -271,12 +271,24 @@ class TemplateParser
data.tooltip = upgrade.tooltip || data.tooltip;
data.requirements = upgrade.requirements || data.requirements;
if (!data.requirements)
if (!data.requirements?.Techs)
data.phase = this.phaseList[0];
else if (this.TemplateLoader.isPhaseTech(data.requirements.Techs))
data.phase = this.getActualPhase(data.requirements.Techs);
else
data.phase = this.getPhaseOfTechnology(data.requirements.Techs, civCode);
{
let highestPhaseIndex = 0;
for (const tech of data.requirements.Techs._string.split(" "))
{
if (tech[0] === "!")
continue;
const phaseIndex = this.phaseList.indexOf(
this.TemplateLoader.isPhaseTech(tech) ? this.getActualPhase(tech) :
this.getPhaseOfTechnology(tech, civCode));
if (phaseIndex > highestPhaseIndex)
highestPhaseIndex = phaseIndex;
}
data.phase = this.phaseList[highestPhaseIndex];
}
newUpgrades.push(data);
}

View File

@ -23,6 +23,9 @@ RequirementsHelper.prototype.EntityRequirementsSchema =
RequirementsHelper.prototype.TechnologyRequirementsSchema =
"<element name='Techs' a:help='White-space separated list of technologies that need to be researched. ! negates a tech.'>" +
"<attribute name='datatype'>" +
"<value>tokens</value>" +
"</attribute>" +
"<text/>" +
"</element>";
@ -118,8 +121,8 @@ RequirementsHelper.prototype.AllRequirementsMet = function(template, cmpTechMana
return false;
}
}
if (requirementType === "Techs")
for (const tech of requirement.split(" "))
if (requirementType === "Techs" && requirement._string)
for (const tech of requirement._string.split(" "))
if (tech[0] === "!" ? cmpTechManager.IsTechnologyResearched(tech.substring(1)) :
!cmpTechManager.IsTechnologyResearched(tech))
return false;
@ -152,8 +155,8 @@ RequirementsHelper.prototype.AnyRequirementsMet = function(template, cmpTechMana
return true;
}
}
if (requirementType === "Techs")
for (const tech of requirement.split(" "))
if (requirementType === "Techs" && requirement._string)
for (const tech of requirement._string.split(" "))
if (tech[0] === "!" ? !cmpTechManager.IsTechnologyResearched(tech.substring(1)) :
cmpTechManager.IsTechnologyResearched(tech))
return true;

View File

@ -21,7 +21,7 @@ met();
// Simple requirements are assumed to be additive.
template = {
"Techs": "phase_city"
"Techs": { "_string": "phase_city" }
};
AddMock(playerEnt, IID_TechnologyManager, {
@ -40,7 +40,7 @@ AddMock(playerEnt, IID_TechnologyManager, {
met();
template = {
"Techs": "cartography phase_city"
"Techs": { "_string": "cartography phase_city" }
};
AddMock(playerEnt, IID_TechnologyManager, {
@ -248,7 +248,7 @@ met();
// Technology requirements.
template = {
"All": {
"Techs": "phase_town"
"Techs": { "_string": "phase_town" }
}
};
@ -264,14 +264,14 @@ met();
template = {
"All": {
"Techs": "phase_city"
"Techs": { "_string": "phase_city" }
}
};
notMet();
template = {
"All": {
"Techs": "phase_town phase_city"
"Techs": { "_string": "phase_town phase_city" }
}
};
notMet();
@ -283,14 +283,14 @@ met();
template = {
"All": {
"Techs": "!phase_city"
"Techs": { "_string": "!phase_city" }
}
};
notMet();
template = {
"All": {
"Techs": "!phase_town phase_city"
"Techs": { "_string": "!phase_town phase_city"}
}
};
notMet();
@ -310,7 +310,7 @@ template = {
"Variants": 2
}
},
"Techs": "phase_town"
"Techs": { "_string": "phase_town" }
}
};
@ -423,7 +423,7 @@ met();
// Technology requirements.
template = {
"Any": {
"Techs": "phase_town"
"Techs": { "_string": "phase_town" }
}
};
@ -439,7 +439,7 @@ met();
template = {
"Any": {
"Techs": "phase_town phase_city"
"Techs": { "_string": "phase_town phase_city" }
}
};
@ -450,7 +450,7 @@ met();
template = {
"Any": {
"Techs": "!phase_town"
"Techs": { "_string": "!phase_town" }
}
};
@ -466,7 +466,7 @@ met();
template = {
"Any": {
"Techs": "!phase_town phase_city"
"Techs": { "_string": "!phase_town phase_city" }
}
};
@ -485,7 +485,7 @@ template = {
"Variants": 2
}
},
"Techs": "!phase_town"
"Techs": { "_string": "!phase_town" }
}
};
@ -507,7 +507,7 @@ met();
template = {
"All": {
"All": {
"Techs": "!phase_town"
"Techs": { "_string": "!phase_town" }
},
"Any": {
"Entities": {
@ -516,7 +516,7 @@ template = {
"Variants": 2
}
},
"Techs": "phase_city"
"Techs": { "_string": "phase_city" }
}
}
};
@ -578,7 +578,7 @@ met();
template = {
"Any": {
"All": {
"Techs": "!phase_town"
"Techs": { "_string": "!phase_town" }
},
"Any": {
"Entities": {
@ -587,7 +587,7 @@ template = {
"Variants": 2
}
},
"Techs": "phase_city"
"Techs": { "_string": "phase_city" }
}
}
};
@ -651,7 +651,7 @@ template = {
"All": {
"Any": {
"All": {
"Techs": "cartography phase_imperial",
"Techs": { "_string": "cartography phase_imperial" }
},
"Entities": {
"class_1": {
@ -659,9 +659,9 @@ template = {
"Variants": 2
}
},
"Techs": "phase_city"
"Techs": { "_string": "phase_city" }
},
"Techs": "!phase_town"
"Techs": { "_string": "!phase_town" }
}
};

View File

@ -2,7 +2,7 @@
<Entity parent="gaia/fauna_pig">
<Identity>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot disable=""/>

View File

@ -17,7 +17,7 @@
<Icon>technologies/spy_trader.png</Icon>
<Undeletable>true</Undeletable>
<Requirements>
<Techs>unlock_spies</Techs>
<Techs datatype="tokens">unlock_spies</Techs>
</Requirements>
</Identity>
<VisionSharing>

View File

@ -17,7 +17,7 @@
<VisibleClasses datatype="tokens">Naval</VisibleClasses>
<Icon>structures/crannog.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Obstruction>

View File

@ -5,7 +5,7 @@
<SpecificName>Low Wall</SpecificName>
<Icon>structures/palisade_wall.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<WallSet>

View File

@ -31,7 +31,7 @@
<VisibleClasses datatype="tokens">City Council</VisibleClasses>
<Icon>structures/tholos.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -22,7 +22,7 @@
<VisibleClasses datatype="tokens">-Village Town</VisibleClasses>
<Icon>structures/embassy_celtic.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -38,7 +38,7 @@
<Time>40</Time>
<Variant>upgrading</Variant>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</ImperialCourt>
</Upgrade>

View File

@ -20,7 +20,7 @@
<Classes datatype="tokens">CivCentre CivSpecific</Classes>
<Icon>structures/military_settlement.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Population>

View File

@ -27,7 +27,7 @@
<Time>40</Time>
<Variant>upgrading</Variant>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</GreatArcheryTower>
</Upgrade>

View File

@ -24,7 +24,7 @@
<VisibleClasses datatype="tokens">LaoziGate Town</VisibleClasses>
<Icon>structures/paifang.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -40,7 +40,7 @@
<Tooltip>Train the Nine Ministers. Territory root. Research a powerful suite of Administrative technologies.</Tooltip>
<Icon>structures/imperial_ministry.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -34,7 +34,7 @@
<VisibleClasses datatype="tokens">Monument Town</VisibleClasses>
<Icon>structures/iberian_bull.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -29,7 +29,7 @@
<VisibleClasses datatype="tokens">City Pyramid</VisibleClasses>
<Icon>structures/kush_pyramid_big.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -26,7 +26,7 @@
<VisibleClasses datatype="tokens">Village Pyramid</VisibleClasses>
<Icon>structures/kush_pyramid_small.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -75,7 +75,7 @@
<VisibleClasses datatype="tokens">Town ArmyCamp</VisibleClasses>
<Icon>structures/roman_camp.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -29,7 +29,7 @@
<VisibleClasses datatype="tokens">Colony</VisibleClasses>
<Icon>structures/military_settlement.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -28,7 +28,7 @@
<VisibleClasses datatype="tokens">Village House</VisibleClasses>
<Icon>structures/house.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -30,7 +30,7 @@
<VisibleClasses datatype="tokens">Town Stoa</VisibleClasses>
<Icon>structures/stoa.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -32,7 +32,7 @@
<VisibleClasses datatype="tokens">Town Temple</VisibleClasses>
<Icon>structures/temple.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -56,7 +56,7 @@
<VisibleClasses datatype="tokens">ArtilleryTower</VisibleClasses>
<Icon>structures/tower_artillery.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -53,7 +53,7 @@
<VisibleClasses datatype="tokens">BoltTower</VisibleClasses>
<Icon>structures/tower_bolt.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -35,7 +35,7 @@
<VisibleClasses datatype="tokens">SentryTower</VisibleClasses>
<Icon>structures/sentry_tower.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Loot>
@ -66,7 +66,7 @@
<Variant>upgrading</Variant>
<Time>100</Time>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Tower>
</Upgrade>

View File

@ -33,7 +33,7 @@
<VisibleClasses datatype="tokens">StoneTower</VisibleClasses>
<Icon>structures/defense_tower.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -15,7 +15,7 @@
<VisibleClasses datatype="tokens">Wall</VisibleClasses>
<Icon>structures/wall.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Obstruction>

View File

@ -30,7 +30,7 @@
<VisibleClasses datatype="tokens">Village Farmstead</VisibleClasses>
<Icon>structures/farmstead.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -28,7 +28,7 @@
<VisibleClasses datatype="tokens">Trade Town Market</VisibleClasses>
<Icon>structures/market.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -28,7 +28,7 @@
<VisibleClasses datatype="tokens">Village Storehouse</VisibleClasses>
<Icon>structures/storehouse.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -28,7 +28,7 @@
<VisibleClasses datatype="tokens">City Arsenal</VisibleClasses>
<Icon>structures/siege_workshop.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -29,7 +29,7 @@
<VisibleClasses datatype="tokens">Village Barracks</VisibleClasses>
<Icon>structures/barracks.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -29,7 +29,7 @@
<VisibleClasses datatype="tokens">City ElephantStable</VisibleClasses>
<Icon>structures/stable_elephant.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -23,7 +23,7 @@
<SelectionGroupName>template_structure_military_embassy</SelectionGroupName>
<VisibleClasses datatype="tokens">Town Embassy</VisibleClasses>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Obstruction>

View File

@ -26,7 +26,7 @@
<VisibleClasses datatype="tokens">Town Forge</VisibleClasses>
<Icon>structures/blacksmith.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -69,7 +69,7 @@
<VisibleClasses datatype="tokens">Defensive Fortress</VisibleClasses>
<Icon>structures/fortress.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -25,7 +25,7 @@
<VisibleClasses datatype="tokens">Village Range</VisibleClasses>
<Icon>structures/range.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -29,7 +29,7 @@
<VisibleClasses datatype="tokens">Village Stable</VisibleClasses>
<Icon>structures/stable_01.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -29,7 +29,7 @@
<VisibleClasses datatype="tokens">Economic Village Corral</VisibleClasses>
<Icon>structures/corral.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<ResourceTrickle>

View File

@ -19,7 +19,7 @@
<GenericName>Special Structure</GenericName>
<VisibleClasses datatype="tokens">City</VisibleClasses>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Obstruction>

View File

@ -41,7 +41,7 @@
<VisibleClasses datatype="tokens">City Wonder</VisibleClasses>
<Icon>structures/wonder.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -14,7 +14,7 @@
<VisibleClasses datatype="tokens">Soldier Champion</VisibleClasses>
<GenericName>Champion Unit</GenericName>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Position>

View File

@ -20,7 +20,7 @@
<VisibleClasses datatype="tokens">Cavalry</VisibleClasses>
<GenericName>Champion Cavalry</GenericName>
<Requirements>
<Techs>unlock_champion_cavalry</Techs>
<Techs datatype="tokens">-phase_city unlock_champion_cavalry</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -2,7 +2,7 @@
<Entity parent="template_unit_fauna_herd_domestic">
<Identity>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Sound>

View File

@ -26,7 +26,7 @@
<GenericName>Hero</GenericName>
<Icon>technologies/laurel_wreath.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -41,7 +41,7 @@
<Tooltip>Unrepairable. Gradually loses health. Can only attack Ships.</Tooltip>
<VisibleClasses datatype="tokens">Melee Warship Fireship</VisibleClasses>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot disable=""/>

View File

@ -20,7 +20,7 @@
<Classes datatype="tokens">-ConquestCritical</Classes>
<VisibleClasses datatype="tokens">Trader Bribable</VisibleClasses>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -55,7 +55,7 @@
<VisibleClasses datatype="tokens">Heavy</VisibleClasses>
<Classes datatype="tokens">Quinquereme</Classes>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -23,7 +23,7 @@
<VisibleClasses datatype="tokens">Light</VisibleClasses>
<Classes datatype="tokens">Bireme</Classes>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -25,7 +25,7 @@
<VisibleClasses datatype="tokens">Medium</VisibleClasses>
<Classes datatype="tokens">Trireme</Classes>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -16,7 +16,7 @@
<VisibleClasses datatype="tokens">Siege</VisibleClasses>
<GenericName>Siege</GenericName>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">phase_city</Techs>
</Requirements>
</Identity>
<Position>

View File

@ -30,7 +30,7 @@
<Rank>Basic</Rank>
<Tooltip>Heal units.</Tooltip>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -12,7 +12,7 @@
<Icon>structures/wall.png</Icon>
<Undeletable>true</Undeletable>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Visibility>

View File

@ -11,7 +11,7 @@
<SpecificName>Hippeús</SpecificName>
<Icon>units/athen/cavalry_swordsman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -6,7 +6,7 @@
<SpecificName>Peltastḗs Thrâx</SpecificName>
<Icon>units/athen/infantry_javelinist.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -6,7 +6,7 @@
<SpecificName>Toxótēs Krētikós</SpecificName>
<Icon>units/mace/infantry_archer.png</Icon>
<Requirements>
<Techs>iphicratean_reforms</Techs>
<Techs datatype="tokens">iphicratean_reforms</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -5,7 +5,7 @@
</Cost>
<Identity>
<Requirements>
<Techs>unlock_females_house</Techs>
<Techs datatype="tokens">unlock_females_house</Techs>
</Requirements>
</Identity>
</Entity>

View File

@ -7,7 +7,7 @@
<GenericName>Celtic Cavalry</GenericName>
<Icon>units/brit/cavalry_swordsman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -13,7 +13,7 @@
<SpecificName>Adretos</SpecificName>
<Icon>units/brit/infantry_javelinist.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -5,7 +5,7 @@
</Cost>
<Identity>
<Requirements>
<Techs>unlock_females_house</Techs>
<Techs datatype="tokens">unlock_females_house</Techs>
</Requirements>
</Identity>
</Entity>

View File

@ -7,7 +7,7 @@
<SelectionGroupName>units/cart/cavalry_spearman_ital_b</SelectionGroupName>
<Icon>units/cart/cavalry_spearman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -7,7 +7,7 @@
<SelectionGroupName>units/cart/cavalry_swordsman_gaul_b</SelectionGroupName>
<Icon>units/cart/cavalry_swordsman_2.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -12,7 +12,7 @@
<SelectionGroupName>units/cart/cavalry_swordsman_iber_b</SelectionGroupName>
<Icon>units/cart/cavalry_swordsman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -15,7 +15,7 @@
<SelectionGroupName>units/cart/infantry_javelineer_iber_b</SelectionGroupName>
<Icon>units/cart/infantry_javelinist.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -15,7 +15,7 @@
<SelectionGroupName>units/cart/infantry_slinger_iber_b</SelectionGroupName>
<Icon>units/cart/infantry_slinger.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -15,7 +15,7 @@
<SelectionGroupName>units/cart/infantry_swordsman_gaul_b</SelectionGroupName>
<Icon>units/cart/infantry_swordsman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -15,7 +15,7 @@
<SelectionGroupName>units/cart/infantry_swordsman_ital_b</SelectionGroupName>
<Icon>units/cart/infantry_swordsman_2.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -10,7 +10,7 @@
<Tooltip>Trade between docks. Garrison a Trader aboard for additional profit (+20% for each garrisoned). Gather profitable aquatic treasures. Carthaginians have +25% sea trading bonus.</Tooltip>
<Icon>units/cart/ship_merchant.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">-phase_town phase_village</Techs>
</Requirements>
</Identity>
<Selectable>

View File

@ -5,7 +5,7 @@
</Cost>
<Identity>
<Requirements>
<Techs>unlock_females_house</Techs>
<Techs datatype="tokens">unlock_females_house</Techs>
</Requirements>
</Identity>
</Entity>

View File

@ -6,7 +6,7 @@
<SpecificName>Eporedos</SpecificName>
<Icon>units/gaul/cavalry_swordsman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -13,7 +13,7 @@
<SpecificName>Bariogaisatos</SpecificName>
<Icon>units/gaul/champion_fanatic.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -11,7 +11,7 @@
<SpecificName>Talmoris</SpecificName>
<Icon>units/gaul/infantry_slinger.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -5,7 +5,7 @@
</Cost>
<Identity>
<Requirements>
<Techs>unlock_females_house</Techs>
<Techs datatype="tokens">unlock_females_house</Techs>
</Requirements>
</Identity>
</Entity>

View File

@ -6,7 +6,7 @@
<SpecificName>Gōng Qíbīng</SpecificName>
<Icon>units/han/cavalry_archer.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -6,7 +6,7 @@
<SpecificName>Han Cavalry Crossbowman</SpecificName>
<Icon>units/han/cavalry_crossbowman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -6,7 +6,7 @@
<SpecificName>Máo Qíbīng</SpecificName>
<Icon>units/han/cavalry_spearman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -6,7 +6,7 @@
<SelectionGroupName>units/han/champion_cavalry</SelectionGroupName>
<Icon>units/han/champion_cavalry_spearman.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">-unlock_champion_cavalry phase_city</Techs>
</Requirements>
</Identity>
<VisualActor>

View File

@ -11,7 +11,7 @@
<VisibleClasses datatype="tokens">Chariot</VisibleClasses>
<Icon>units/han/chariot.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
<Techs datatype="tokens">-unlock_champion_cavalry phase_city</Techs>
</Requirements>
</Identity>
<VisualActor>

View File

@ -6,9 +6,6 @@
<SpecificName>Yǔ Lín</SpecificName>
<SelectionGroupName>units/han/champion_infantry_archer</SelectionGroupName>
<Icon>units/han/champion_infantry_archer.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
</Requirements>
</Identity>
<VisualActor>
<Actor>units/han/infantry_archer_c.xml</Actor>

View File

@ -4,9 +4,6 @@
<Civ>han</Civ>
<SpecificName>Juezhang</SpecificName>
<Icon>units/han/champion_infantry_crossbowman.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
</Requirements>
</Identity>
<VisualActor>
<Actor>units/han/infantry_crossbowman_c.xml</Actor>

View File

@ -6,9 +6,6 @@
<SpecificName>Hǔ Bēn</SpecificName>
<SelectionGroupName>units/han/champion_infantry_spearman</SelectionGroupName>
<Icon>units/han/champion_infantry_swordsman.png</Icon>
<Requirements>
<Techs>phase_city</Techs>
</Requirements>
</Identity>
<VisualActor>
<Actor>units/han/infantry_spearman_c.xml</Actor>

View File

@ -11,7 +11,7 @@
<SpecificName>Shè Shǒu</SpecificName>
<Icon>units/han/infantry_archer.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -21,7 +21,7 @@
<SpecificName>Jǐ Bīng</SpecificName>
<Icon>units/han/infantry_halberdman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -11,7 +11,7 @@
<SpecificName>Dāo Bīng</SpecificName>
<Icon>units/han/infantry_swordsman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -5,7 +5,7 @@
</Cost>
<Identity>
<Requirements>
<Techs>unlock_females_house</Techs>
<Techs datatype="tokens">unlock_females_house</Techs>
</Requirements>
</Identity>
</Entity>

View File

@ -45,7 +45,7 @@
<VisibleClasses datatype="tokens">Minister</VisibleClasses>
<Icon>units/han/minister.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Loot>

View File

@ -6,7 +6,7 @@
<SpecificName>Lantzari</SpecificName>
<Icon>units/iber/cavalry_spearman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -10,7 +10,7 @@
<SpecificName>Leial Ezpatari</SpecificName>
<Icon>units/iber/champion_infantry.png</Icon>
<Requirements>
<Techs>unlock_champion_infantry</Techs>
<Techs datatype="tokens">unlock_champion_infantry</Techs>
</Requirements>
</Identity>
<VisualActor>

View File

@ -11,7 +11,7 @@
<SpecificName>Habailari</SpecificName>
<Icon>units/iber/infantry_slinger.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -11,7 +11,7 @@
<SpecificName>Ezkutari</SpecificName>
<Icon>units/iber/infantry_spearman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -5,7 +5,7 @@
</Cost>
<Identity>
<Requirements>
<Techs>unlock_females_house</Techs>
<Techs datatype="tokens">unlock_females_house</Techs>
</Requirements>
</Identity>
</Entity>

View File

@ -8,7 +8,7 @@
<GenericName>Napatan Light Cavalry</GenericName>
<Icon>units/kush/cavalry_javelinist.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -19,7 +19,7 @@
<VisibleClasses datatype="tokens">Camel</VisibleClasses>
<Icon>units/kush/camel_javelinist.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -8,7 +8,7 @@
<SpecificName>Htr</SpecificName>
<Icon>units/kush/cavalry_spearman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -16,7 +16,7 @@
<SpecificName>Pdty Nhsyw</SpecificName>
<Icon>units/kush/infantry_archer.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -16,7 +16,7 @@
<SpecificName>nhw ʿhȝw Noba</SpecificName>
<Icon>units/kush/infantry_javelinist.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -16,7 +16,7 @@
<SpecificName>nhw Noba</SpecificName>
<Icon>units/kush/infantry_maceman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -16,7 +16,7 @@
<SpecificName>siȝwrd</SpecificName>
<Icon>units/kush/infantry_pikeman.png</Icon>
<Requirements>
<Techs>phase_town</Techs>
<Techs datatype="tokens">phase_town</Techs>
</Requirements>
</Identity>
<Promotion>

View File

@ -16,7 +16,7 @@
<SpecificName>iry-rdwy Nhsyw</SpecificName>
<Icon>units/kush/infantry_spearman.png</Icon>
<Requirements>
<Techs>phase_village</Techs>
<Techs datatype="tokens">phase_village</Techs>
</Requirements>
</Identity>
<Promotion>

Some files were not shown because too many files have changed in this diff Show More