[R&F] Need help on adding unit & improvement through xml

iieeann

Chieftain
Joined
Nov 30, 2017
Messages
21
Hi all, I have been modifying xml files all the while for minor game customization, but now seems to hit the wall with R&F.

I am using Korea now, trying to "copy" other civilization's unique improvement and unit over. I have done this with Australia without problem, but the same way did not work with Korea.

The game did not crash, the names of the unit & improvement are correct as well as values, but the graphical appearance is incorrect. All added unique units appear as warrior, only the icon is correct. Unique improvement shows empty, the tile info shown as improved with correct values.

[Database] ERROR: UNIQUE constraint failed: IconTextureAtlases.Name, IconTextureAtlases.IconSize

This line appears many times in Database.log. It seems there is broken link to the artwork. Can anyone show me the file & parameter that connect the link? Thanks a lot.
 
Can you post the code you're using? That error indicates that you're trying to repeat an entry of which the table will only allow one version, and I can't tell why without seeing how you're doing it.
 
Nothing is done on Expansion1_Leaders.xml. Under Expansion1_Civilizations.xml i add some lines for unique unit and improvement. I copy the original lines with additional word "_ADD" to try to differentiate it from original, but description still use the same.

Code:
<GameInfo>
    <Types>
        <!--CIVS-->
        <Row Type="TRAIT_CIVILIZATION_UNIT_ADD_OKIHTCITAW" Kind="KIND_TRAIT"/>
        <Row Type="TRAIT_CIVILIZATION_IMPROVEMENT_KURGAN_ADD" Kind="KIND_TRAIT"/>
    </Types>

    <Traits>
       <Row TraitType="TRAIT_CIVILIZATION_UNIT_ADD_OKIHTCITAW" Name="LOC_TRAIT_CIVILIZATION_UNIT_CREE_OKIHTCITAW_NAME"/>
       <Row TraitType="TRAIT_CIVILIZATION_IMPROVEMENT_KURGAN_ADD" Name="LOC_TRAIT_CIVILIZATION_IMPROVEMENT_KURGAN_NAME"/>
    </Traits>

    <CivilizationTraits>
       <Row CivilizationType="CIVILIZATION_KOREA" TraitType="TRAIT_CIVILIZATION_UNIT_ADD_OKIHTCITAW"/>
       <Row CivilizationType="CIVILIZATION_KOREA" TraitType="TRAIT_CIVILIZATION_IMPROVEMENT_KURGAN_ADD"/>
    </CivilizationTraits>
</GameInfo>

Expansion1_Units.xml :-
Code:
<GameInfo>
    <Types>
       <Row Type="UNIT_ADD_OKIHTCITAW" Kind="KIND_UNIT"/>
    </Types>

    <Tags>
       <Row Tag="CLASS_ADD_OKIHTCITAW" Vocabulary="ABILITY_CLASS"/>
    </Tags>

    <TypeTags>
       <Row Type="UNIT_ADD_OKIHTCITAW" Tag="CLASS_RECON"/>
       <Row Type="UNIT_ADD_OKIHTCITAW" Tag="CLASS_CREE_OKIHTCITAW"/>
    </TypeTags>

    <Units>
       <Row UnitType="UNIT_ADD_OKIHTCITAW" BaseMoves="3" Cost="40" AdvisorType="ADVISOR_CONQUEST" BaseSightRange="2" ZoneOfControl="true" Domain="DOMAIN_LAND" FormationClass="FORMATION_CLASS_LAND_COMBAT" Name="LOC_UNIT_CREE_OKIHTCITAW_NAME" Description="LOC_UNIT_CREE_OKIHTCITAW_DESCRIPTION" PurchaseYield="YIELD_GOLD" PromotionClass="PROMOTION_CLASS_RECON" Combat="24" TraitType="TRAIT_CIVILIZATION_UNIT_ADD_OKIHTCITAW"/>
    </Units>

    <UnitAiInfos>
       <Row UnitType="UNIT_ADD_OKIHTCITAW" AiType="UNITAI_EXPLORE"/>
       <Row UnitType="UNIT_ADD_OKIHTCITAW" AiType="UNITTYPE_LAND_COMBAT"/>
    </UnitAiInfos>

    <UnitUpgrades>
       <Row Unit="UNIT_ADD_OKIHTCITAW" UpgradeUnit="UNIT_RANGER"/>
    </UnitUpgrades>

    <UnitReplaces>
       <Row CivUniqueUnitType="UNIT_ADD_OKIHTCITAW" ReplacesUnitType="UNIT_SCOUT"/>
    </UnitReplaces>
</GameInfo>

Expansion1_Improvements.xml :-
Code:
<GameInfo>
    <Types>
       <Row Type="IMPROVEMENT_KURGAN_ADD" Kind="KIND_IMPROVEMENT"/>
   </Types>

    <Improvements>
       <Row ImprovementType="IMPROVEMENT_KURGAN_ADD" Name="LOC_IMPROVEMENT_KURGAN_NAME" Description="LOC_IMPROVEMENT_KURGAN_DESCRIPTION" Icon="ICON_IMPROVEMENT_KURGAN" PlunderType="PLUNDER_FAITH" PlunderAmount="25" Buildable="true" PrereqTech="TECH_ANIMAL_HUSBANDRY" TraitType="TRAIT_CIVILIZATION_IMPROVEMENT_KURGAN_ADD"/>
    </Improvements>

    <Improvement_ValidTerrains>
       <Row ImprovementType="IMPROVEMENT_KURGAN_ADD" TerrainType="TERRAIN_DESERT"/>
       <Row ImprovementType="IMPROVEMENT_KURGAN_ADD" TerrainType="TERRAIN_TUNDRA"/>
       <Row ImprovementType="IMPROVEMENT_KURGAN_ADD" TerrainType="TERRAIN_PLAINS"/>
       <Row ImprovementType="IMPROVEMENT_KURGAN_ADD" TerrainType="TERRAIN_GRASS"/>
       <Row ImprovementType="IMPROVEMENT_KURGAN_ADD" TerrainType="TERRAIN_SNOW"/>
    </Improvement_ValidTerrains>

    <Improvement_ValidBuildUnits>
       <Row ImprovementType="IMPROVEMENT_KURGAN_ADD" UnitType="UNIT_BUILDER"/>
   </Improvement_ValidBuildUnits>

    <Improvement_YieldChanges>
       <Row ImprovementType="IMPROVEMENT_KURGAN_ADD" YieldType="YIELD_GOLD" YieldChange="1"/>
       <Row ImprovementType="IMPROVEMENT_KURGAN_ADD" YieldType="YIELD_FAITH" YieldChange="1"/>
   </Improvement_YieldChanges>

    <Improvement_BonusYieldChanges>
<!-- Row Id I do not know what is it, I just put 30 & 31 to avoid the same as others -->
       <Row Id="30" ImprovementType="IMPROVEMENT_KURGAN_ADD" YieldType="YIELD_GOLD" BonusYieldChange="1" PrereqCivic="CIVIC_GUILDS"/>
       <Row Id="31" ImprovementType="IMPROVEMENT_KURGAN_ADD" YieldType="YIELD_GOLD" BonusYieldChange="1" PrereqCivic="CIVIC_CAPITALISM"/>
   </Improvement_BonusYieldChanges>
</GameInfo>

Expansion1_Moments.xml :-
Code:
<GameInfo>
    <MomentIllustrations>
       <Row MomentIllustrationType="MOMENT_ILLUSTRATION_UNIQUE_UNIT" MomentDataType="MOMENT_DATA_UNIT" GameDataType="UNIT_ADD_OKIHTCITAW" Texture="Moment_UniqueUnit_Cree.dds"/>
       <Row MomentIllustrationType="MOMENT_ILLUSTRATION_UNIQUE_IMPROVEMENT" MomentDataType="MOMENT_DATA_IMPROVEMENT" GameDataType="IMPROVEMENT_KURGAN_ADD" Texture="Moment_Infrastructure_Scythia.dds"/>
    </MomentIllustrations>
</GameInfo>

In Expansion1_Icons_Improvements.xml this line is added. This line is taken from base version, no "_ADD" or the icon won't display. Index=19 is same as original.
Code:
<GameInfo>
    <IconDefinitions>
       <Row Name="ICON_IMPROVEMENT_KURGAN" Atlas="ICON_ATLAS_UNIT_ACTIONS" Index="19"/>
  </IconDefinitions>
</GameInfo>

Expansion1_Players.xml :-
Code:
<GameInfo>
    <PlayerItems>
       <Row Domain="Players:Expansion1_Players" CivilizationType="CIVILIZATION_KOREA" LeaderType="LEADER_SEONDEOK" Type="IMPROVEMENT_KURGAN_ADD" Icon="ICON_IMPROVEMENT_KURGAN" Name="LOC_IMPROVEMENT_KURGAN_NAME" Description="LOC_IMPROVEMENT_KURGAN_DESCRIPTION" SortIndex="20"/>
       <Row Domain="Players:Expansion1_Players" CivilizationType="CIVILIZATION_KOREA" LeaderType="LEADER_SEONDEOK" Type="UNIT_ADD_OKIHTCITAW" Icon="ICON_UNIT_CREE_OKIHTCITAW" Name="LOC_UNIT_CREE_OKIHTCITAW_NAME" Description="LOC_UNIT_CREE_OKIHTCITAW_DESCRIPTION" SortIndex="30"/>
</GameInfo>

Expansion1_Icons_Units. Index=11 is same as original.
Code:
<GameInfo>
    <IconDefinitions>
    <Row Name="ICON_UNIT_ADD_OKIHTCITAW"       Atlas="ICON_ATLAS_EXPANSION_1_UNITS" Index="11"/>
    </IconDefinitions>
</GameInfo>

Expansion1_Icons_UnitPortraits.xml :-
Code:
<GameInfo>
    <IconDefinitions>
    <Row Name="ICON_UNIT_ADD_OKIHTCITAW_PORTRAIT"      Atlas="ICON_ATLAS_EXPANSION_1_UNIT_PORTRAITS" Index="11"/>
    <Row Name="ICON_ETHNICITY_AFRICAN_UNIT_ADD_OKIHTCITAW_PORTRAIT"      Atlas="ICON_ATLAS_EXPANSION_1_AFRICAN_UNIT_PORTRAITS" Index="11"/>
    <Row Name="ICON_ETHNICITY_SOUTH_AMERICAN_UNIT_ADD_OKIHTCITAW_PORTRAIT"      Atlas="ICON_ATLAS_EXPANSION_1_SOUTH_AMERICAN_UNIT_PORTRAITS" Index="11"/>
    <Row Name="ICON_ETHNICITY_ASIAN_UNIT_ADD_OKIHTCITAW_PORTRAIT"      Atlas="ICON_ATLAS_EXPANSION_1_ASIAN_UNIT_PORTRAITS" Index="11"/>
    <Row Name="ICON_ETHNICITY_MEDITERRANEAN_UNIT_ADD_OKIHTCITAW_PORTRAIT"      Atlas="ICON_ATLAS_EXPANSION_1_MEDITERRANEAN_UNIT_PORTRAITS" Index="11"/>
    </IconDefinitions>
</GameInfo>
 
Last edited:
Hmm, i think i found part of the problems, i edit the units.artdef to copy entire code for the particular unique unit and rename the m_Name to new name and it seems to work. Will continue on improvements.artdef and see what will happen.

[UPDATE]
Yes it works after editing base file Improvements.artdef. I have never touch .artdef file before this and now only realize the effect.
 
Last edited:
Where in the xml file should i amend to rename the unit and improvement? In my case there will be 2 civilizations having the same unit and improvement name. tq.
 
Back
Top Bottom