Modular XML Question

Razorius

Chieftain
Joined
Jun 30, 2006
Messages
18
Hey ROM AND Team! What a fantastic mod. Countless hours and skills went into this and I am just floored. I've been modding games for decades, and it just feels like the Civ4 community is among the best and most supportive out there. Up there with Kerbal and Paradox games. Just a wonderful job on this mod.

I'm learning to mod Civ4, all these years after release. I know... late to the party.

I'm looking to make a modmod for AND, and reading as much as I can about modular XML practices. I noticed in the file "Rise of Mankind - A New Dawn.ini" that Modular XML Loading = 0. Shouldn't that be 1? I have the MCP installed and it seems to run fine, and that one's modular, so what gives?

Thanks for the help, I'm not sure this will be my last question, but I'll keep digging through the forums here to find answers to questions that may have already been answered.
 
Some mods use ModularLoading = 1, but not all mods need it. It doesn't control the Modules files. Those are controlled by MLF_CIV4ModularLoadingControls.xml in the Modules folder. In order to get a modmod to work, the name of the modmod has to be added to that file and the <bLoad> set to 1.
 
Ok, thanks for clearing that up.

If I understand, any xml files in my module that share a name with the mod or vanilla game would be treated as addendum to those native xml files. Merged as it were. And so long as they don't conflict, all should be well.

So adding units is fairly straightforward if you include all the required files and xml data for just that addition. Easy enough.

If there is a duplicate, there are load order rules to determine which gets loaded. I recall reading that in the guides forum.

Do I have to pack the graphics files in an archive, or can they be loose in their appropriate sub-folder?

I notice that there are alternate terrain graphics archives with altered file extensions. Is it as simple as renaming the extensions to activate one + deactivate the other?

Mapscripts still work after doing that?

Thanks,
Raz
 
Do I have to pack the graphics files in an archive, or can they be loose in their appropriate sub-folder?
Yes, you can leave them unpacked but packing them makes the mod load faster. It really makes a difference when we're speaking of hundreds of stuff (like in MegaPack). Leaving a dozen of models unpacked is okay but you will experience it anyway :)

I notice that there are alternate terrain graphics archives with altered file extensions. Is it as simple as renaming the extensions to activate one + deactivate the other?
You can use the and2_checker.exe, that was created especially for this mod. I don't think renaming would work. I think those files are archives, given the size differences.
 
You can use the and2_checker.exe, that was created especially for this mod. I don't think renaming would work. I think those files are archives, given the size differences.

The terrain files archives are double-packed. It's a TAR archive inside an XZ. I use 7-Zip and it can extract the FPK from inside. I don't know about other file-compression programs.
 
The easiest way to keep modular files straight is to add your module name as a prefix. So you might have a file named YourMod_Civ4UnitInfos.xml. It doesn't really matter what the name of the file is.

The things you need are the right schema file included in the file's folder, the XML file with the actual game data pointing to that schema, and the correct XML syntax. For example, if you have the unit schema in your module folder, then the game can interpret any XML with <UnitInfos> tags to be unit info.
 
Hmm... I'm still having trouble. Trying to start with something fairly simple, adding a new unit. I've decided not to try and pak the files, though i will probably do that in the future.

I've downloaded a unit graphics pack from the collection here on the site.
I've created a folder inside the module folder called "CrownMod" and added loading instruction to MLF_CIV4ModularLoadingControls.xml
3 xml files inside the module folder:
CIV4ModularLoadingControlsSchema.xml (untouched)
MLF_CIV4ModularLoadingControls.xml (telling it to recognized the CrownMod subfolder structure, currently just a folder called Units)
modinfo.xml (just empty at the moment, but I understand what is will be used for)

In the Units subfolder I have my downloaded graphics pack, Skeleton_Swordsman
Inside this subfolder are 4 xml files:
Skeleton_Swordsman_CIV4ArtDefines_Unit
Skeleton_Swordsman_CIV4ArtDefinesSchema
Skeleton_Swordsman_CIV4UnitInfos
Skeleton_Swordsman_CIV4UnitSchema

I've also created two folder structures inside the main mod assets/art folder:
interface/buttons/units/ (for the skeleton_swordsman button)
and Units/Skeleton_Swordsman (for the unit graphics, .dds files and .nif files.)

This was all built using Custom_Civilizations_MCP as a sort of template, recognizing that I'm not trying to include a whole new civ, just a unit for use in the world-builder.

So much going on here with subfolders, and many of the guides conflict since most were written pre-bts and the addition of modular loading. Thanks for the help. Looking forward to contributing one day.
 
You just didn't tell what the problem is? Does the unit not appear in game? Or is it just a pink blob?

BTW: If you post your xml files we may look into it and see if those are okay.
You can also post a screenshot if you think that tells us more.
 
Yeah, I realized after I wrote that - there was no good way to follow or help.

I've gone a slightly different route, using the Xiongnu from the MCP as a template to create my own custom civ with a unique unit artstyle.

I'm getting a xml call failed error at launch. I'm able to select the civ from a custom game, but it has no graphics or description from the text xml files. I've included both as archives.

Thanks if you have time to look it over.
 

Attachments

  • CrownMod.rar
    9.6 MB · Views: 155
  • Assets-XML-Text.rar
    58.4 KB · Views: 146
As a very first pass, one of the things you need to do is check that your XML files are pointing at the right schemas. If those lines are wrong, then the whole thing falls apart. Look at Skeleton_Swordsman_CIV4ArtDefines_Unit.xml and Varanys_CIV4LeaderHeadInfos.xml. Those XML files are not pointing to the right schemas. I tried fixing them and that doesn't fix the main problems, but it is a necessary step. I don't have the time at this exact moment to look deeper, but I will see what I can do about getting your components to work. We might have to disassemble the whole thing and do this one piece at a time.
 
I think there is some kind of problem with loading game text from modules at the moment. I have been trying out an absolute bare-bones file structure to see if I can just get the civilization working with no additional parts. The game text will not load if the text file is in a module. If I put the text file in Assets\XML\Text, it loads fine. I think this problem has the same root as the problem with TXT_KEY in the AND Mega Pack thread.
 
Awesome. Thanks for responding. I do want to contribute, so I appreciate the efforts.

I'm glad that my trouble with the XML TXT_KEYs wasn't just carelessness, which obviously the previous issue you spelled out was. That's my bad.

Perhaps this case is too complex as a first tackle. Would you be willing to help with setting up a simple, single unit module? Something fun. I'll take a crack and post some files if you're up for it.
 
Go ahead and post what you want us to look at. But do try it out yourself and let us know what your results are. That helps troubleshoot and serves as examples for teaching you and any other readers what can go wrong. There are oh-so-many things that can go wrong, and depending on what exactly is going wrong, you can get anything from something simply not working to outright crashes.
 
Okay, so here is a super barebones new unit presented as a module. It has absolutely no frills.

The original unit comes from saibotlieh, with some additional credits and thanks in the readme.
That original graphics pack came only with 4 files (2x .dds files and 2x .nif files) and a subfolder with a button.

I created a folder in the /assets/modules folder called Skeleton.
I created just 4 xml files (like I said, bare bones)
2 of them are schema files, renamed to include the prefix skeleton_
The other two are
Skeleton_CIV4ArtDefines_Unit
Skeleton_CIV4UnitInfos
Then I replaced the button with my own graphics.

For the Skeleton_CIV4UnitInfos.xml file, I used the Hellebardier Unitinfo files as a base. It's a UU for Switzerland that was part of a tutorial on mod-modding simply because I knew it worked after a playtest.
In this file, I changed some tags, including <Type> and <EarlyArtDefineTag> to coincide with the unit.

In the Skeleton_CIV4ArtDefines_Unit.xml file, I changed the button tag to:
<Button>,Modules/Skeleton/btn_skeleton.dds</Button>
(Still not sure why the comma there)

I also changed this NIF file location, and SHADERNIF location but the unit did not come with a .kfm file, nor any tips on how to go about one, so I playtested with this:
<NIF>Modules/Skeleton/swordsman.nif</NIF>
<KFM>Modules/Skeleton/swordsman.kfm</KFM>
<SHADERNIF>Modules/Skeleton/swordsman_FX.nif</SHADERNIF>

I was able to place the unit via the WorldBuilder, but after a few turns, I got a CTD.

So I unpacked the vanilla assets0.fpk file, grabbed the vanilla swordsman .kfm and .kf files and plopped them into the module folder.

Voila, it works. It's not perfect. There seems to be some animations missing and the unit moves a little wonky, but otherwise, it all works.

I was surprised to learn that MLF_CIV4ModularLoadingControls.xml and it's schema file are not required. I believe that has to do with the launcher?

Some questions I have:
I've noticed some of the units in AND and MCP do not include all these .kf files in the .fpk packed files, but they seem to be necessary.
I've found some places in the AND artdefines_unit.xml file where the location pointing to .kfm files does not appear to have a .kfm file inside. One example is the Man-O-War, which calls for <KFM>Art/Units/Frigate/Frigate.kfm</KFM> but there is no .kfm in the AND unit assets pack or the vanilla assets pack that I loaded. There are 4 asset packs in the base game, perhaps I didn't unpack all of them and that is why I'm not seeing it. Is that a right assumption? Do I need to fully unpack all the assets to get all the graphics I need for a new unit to display all of the stances, combat graphics, etc?

For future units, I see the vital importance of using subfolders within the module and using modular loading controls to keep them all straight. I know that it's also best practice to pack the files as opposed to what I've done here.

But hey, it works, so I must be on the right path. Additional advices much appreciated.
 

Attachments

  • Skeleton.rar
    180.1 KB · Views: 119
Okay, so here is a super barebones new unit presented as a module. It has absolutely no frills.

The original unit comes from saibotlieh, with some additional credits and thanks in the readme.
That original graphics pack came only with 4 files (2x .dds files and 2x .nif files) and a subfolder with a button.

I created a folder in the /assets/modules folder called Skeleton.
I created just 4 xml files (like I said, bare bones)
2 of them are schema files, renamed to include the prefix skeleton_
The other two are
Skeleton_CIV4ArtDefines_Unit
Skeleton_CIV4UnitInfos
Then I replaced the button with my own graphics.

For the Skeleton_CIV4UnitInfos.xml file, I used the Hellebardier Unitinfo files as a base. It's a UU for Switzerland that was part of a tutorial on mod-modding simply because I knew it worked after a playtest.
In this file, I changed some tags, including <Type> and <EarlyArtDefineTag> to coincide with the unit.

One question you need to answer is how are you planning to use this unit? Is it supposed to be buildable by itself or is it a Unique Unit? If it's meant to stand alone, you will need to define a UnitClass for the unit and create a CIV4UnitClassInfos file in your module. If it is meant as a UU, then you can use an existing UnitClass but you need a Civ4Civilizations file to tell the game which generic unit the new unit will replace. I assume any modular building or unit needs six files: the four files you already have, plus a UnitClassInfos (or BuildingClassInfo for buildings) file and a GameText file. What you have done is to hard-code your Description into your UnitInfos, which does work but isn't friendly to switching languages. The GameText file is used for the unit name, unit strategy, and unit background. Due to whatever we've done to game text, any new GameText files have to go into the Text folder rather than stay in the mod.

In the Skeleton_CIV4ArtDefines_Unit.xml file, I changed the button tag to:
<Button>,Modules/Skeleton/btn_skeleton.dds</Button>
(Still not sure why the comma there)

The comma should not be there unless you are using an atlas. If you have a lot of button files, you can organize them into a single atlas file which loads faster. With an atlas, you need the comma; it tells the game to look for an atlas file but load a regular button if the atlas cannot be found.

I also changed this NIF file location, and SHADERNIF location but the unit did not come with a .kfm file, nor any tips on how to go about one, so I playtested with this:
<NIF>Modules/Skeleton/swordsman.nif</NIF>
<KFM>Modules/Skeleton/swordsman.kfm</KFM>
<SHADERNIF>Modules/Skeleton/swordsman_FX.nif</SHADERNIF>

I was able to place the unit via the WorldBuilder, but after a few turns, I got a CTD.

So I unpacked the vanilla assets0.fpk file, grabbed the vanilla swordsman .kfm and .kf files and plopped them into the module folder.

Voila, it works. It's not perfect. There seems to be some animations missing and the unit moves a little wonky, but otherwise, it all works.

KFM files are the animation instructions for a unit. Writing new ones is not something most modders do. Most new units are created by taking an existing unit model and modifying it. For example, you can take a Rifleman unit and change the DDS skin to get a new unit for a new art style.

When you have a new unit based on an existing one, then you can just point the new unit's ArtDefines KFM at the original KFM for the previously-existing unit and the new unit will still work. The only real problem is that you cannot play with Animations Frozen or the new unit will look like the old, because the KFM calls the old unit's frozen artworks. So in your case, you could have this:
Code:
           <NIF>Modules/Skeleton/swordsman.nif</NIF>
           <KFM>Art/Units/Swordsman/Swordsman.kfm</KFM>
           <SHADERNIF>Modules/Skeleton/swordsman_FX.nif</SHADERNIF>
and that will work. The files don't have to be in the same place.

I was surprised to learn that MLF_CIV4ModularLoadingControls.xml and it's schema file are not required. I believe that has to do with the launcher?

I think only one level of ModularLoadingControls is necessary, and that's the one in the main Modules folder. If the module is turned on in that file, then anything in that module would be loaded. You can use extra ModularLoadingControls if you want to be able to turn off particular parts of a module, but you could also make a separate module just for that part. The launcher is an add-on that isn't necessary to run the mod.

I've noticed some of the units in AND and MCP do not include all these .kf files in the .fpk packed files, but they seem to be necessary.

As I said before, you don't need to copy the KF files as long as your XML points to the right KFM. The KFM and KF files do have to go together, but they don't have to go with the NIF.

I've found some places in the AND artdefines_unit.xml file where the location pointing to .kfm files does not appear to have a .kfm file inside. One example is the Man-O-War, which calls for <KFM>Art/Units/Frigate/Frigate.kfm</KFM> but there is no .kfm in the AND unit assets pack or the vanilla assets pack that I loaded. There are 4 asset packs in the base game, perhaps I didn't unpack all of them and that is why I'm not seeing it. Is that a right assumption? Do I need to fully unpack all the assets to get all the graphics I need for a new unit to display all of the stances, combat graphics, etc?

You can unpack all the assets packs if you want. The files you're not seeing are in those packs. Any file that is not provided by the mod will be pulled from the base game. So the easiest solution is just point the XML at the KFM for the original unit used as a base and the game should take care of the rest.

For future units, I see the vital importance of using subfolders within the module and using modular loading controls to keep them all straight. I know that it's also best practice to pack the files as opposed to what I've done here.

You don't need to pack the files until you have many of them. The MegaPack has so many unit files that loading is incredibly slow unless the files are packed. But there is also a limit to how many packs the game can support.

I think you are on the right track. Just keep working at it.
 
Fantastic. Thanks for taking the time to respond.

I wasn't planning on the skeleton as anything but an exercise, though I had a few thoughts on how it might be usable within a light fantasy-themed module.

Coolest would be to spawn them as barbarian units from a new terrain "improvement" that would spawn skeletons and other undead-class creatures. That's a little adventurous though, as I'm just getting my feet wet in this civ4 modding business. There are a lot of steps to making that happen.

Another thought was to spawn them via an event script that looks for any city that does not contain a temple and makes a few pop up on the borders as barbarian adversaries. Again, a little advanced.

For now, I think I'll add a new unit class, add a building to allow civs to build them, reduce them to 3 strength, make them cheap, give them hidden nationality, and give them the cover promotion. See how the AI handles them.

Then maybe I'll add a necromancy-flavored religion and work in a few other undead units and put them within an upgrade chain, not sure. Not sure how far I want to go with a fantasy theme set at this point. I've also got some thoughts on improving the AND mod via a module that is not fantasy themed, so we'll see. Baby steps.
 
Here is the "finished" unit.

Skeleton
Strength: 3, Moves 2 (undead don't tire), Hidden Nationality, Always Hostile.

Requires: Tradition Tech (TECH_MYSTICISM), a Shrine, and any of the first three early religion civics.

They cost 50, quite high for an early unit, but are sped up 50% by obsidian.

They comes with +10% vs mounted units (because it would scare the dung out of horses and elephants), Cover 1 (arrows are weak against skeletons), Fury (the undead feel no pain), and Warmth 1/Cold 1 mostly to prevent terrain damage.

If anyone wants to use the unit, you'll have to move the three GameText files to the Assets/XML/Text folder in the AND mod. Otherwise, it seems that you have everything you need to make this unit work. Thanks Vokarya!
 

Attachments

  • Skeleton.rar
    78.6 KB · Views: 137
Okay, so to complete the basic set up of a modmod, I created the MLF_Civ4ModularLoadingControls.xml, included its Schema, and added a modinfo file.
I also deprecated the Skeleton unit to a Units subfolder, which meant I had to replace some text in the unit graphics defines lines so that it pointed to the right subdirectory.

FWIW, hidden nationality and always hostile make it so that the unit cannot attack a city, they just walk in and out, so I changed those values back to 0.

I also added an empty Buildings subfolder for future work on adding a custom building.

One question that has come up: I want to change a value in an existing unit or building or other xml file, such as TechInfo, etc. Rather than making a whole new unit, I should be able to tell the mod to prefer one over the other via loading order. How do I go about that, or is there a better practice?
 

Attachments

  • CrownMod.rar
    80.3 KB · Views: 173
They comes with +10% vs mounted units (because it would scare the dung out of horses and elephants),
Well a walking skeleton would scare the rider more, IMO :lol:
 
One question that has come up: I want to change a value in an existing unit or building or other xml file, such as TechInfo, etc. Rather than making a whole new unit, I should be able to tell the mod to prefer one over the other via loading order. How do I go about that, or is there a better practice?
That is simple too. Take for example Walls:

Say we want it to give +2Xp for all units but no longer want to produce +1:culture:.
Adding a value not 0 or NONE is easy: Just change 0 to 2. (See line <iExperience>2</iExperience>)
Changing a value to 0 or NONE is more tricky: Changing <iCommerce>1</iCommerce> to <iCommerce>0</iCommerce> won't do anything in a module, since it sees no value to change. To solve this you need to insert <bForceOverwrite>1</bForceOverwrite> after the line defining the Type.
This trick works with most XML files but not all to my experience: There a few exceptions. I don't recall which are those but you will probably not need to deal with those yet.

Spoiler :

<BuildingInfo>
<BuildingClass>BUILDINGCLASS_WALLS</BuildingClass>
<Type>BUILDING_WALLS</Type>
<bForceOverwrite>1</bForceOverwrite>
<SpecialBuildingType>NONE</SpecialBuildingType>
<Description>TXT_KEY_BUILDING_WALLS</Description>
<Civilopedia>TXT_KEY_BUILDING_WALLS_PEDIA</Civilopedia>
<Strategy>TXT_KEY_BUILDING_WALLS_STRATEGY</Strategy>
<Advisor>ADVISOR_MILITARY</Advisor>
<ArtDefineTag>ART_DEF_BUILDING_WALLS</ArtDefineTag>
<MovieDefineTag>NONE</MovieDefineTag>
<HolyCity>NONE</HolyCity>
<ReligionType>NONE</ReligionType>
<StateReligion>NONE</StateReligion>
<bStateReligion>0</bStateReligion>
<PrereqReligion>NONE</PrereqReligion>
<PrereqCorporation>NONE</PrereqCorporation>
<FoundsCorporation>NONE</FoundsCorporation>
<GlobalReligionCommerce>NONE</GlobalReligionCommerce>
<GlobalCorporationCommerce>NONE</GlobalCorporationCommerce>
<VictoryPrereq>NONE</VictoryPrereq>
<FreeStartEra>NONE</FreeStartEra>
<MaxStartEra>NONE</MaxStartEra>
<ObsoleteTech>TECH_ARTILLERY</ObsoleteTech>
<PrereqTech>TECH_MASONRY</PrereqTech>
<TechTypes/>
<Bonus>NONE</Bonus>
<PrereqBonuses/>
<ProductionTraits>
<ProductionTrait>
<ProductionTraitType>TRAIT_PROTECTIVE</ProductionTraitType>
<iProductionTrait>100</iProductionTrait>
</ProductionTrait>
</ProductionTraits>
<HappinessTraits/>
<NoBonus>NONE</NoBonus>
<PowerBonus>NONE</PowerBonus>
<FreeBonus>NONE</FreeBonus>
<iNumFreeBonuses>0</iNumFreeBonuses>
<FreeBuilding>NONE</FreeBuilding>
<FreePromotion>NONE</FreePromotion>
<CivicOption>NONE</CivicOption>
<GreatPeopleUnitClass>NONE</GreatPeopleUnitClass>
<iGreatPeopleRateChange>0</iGreatPeopleRateChange>
<iHurryAngerModifier>0</iHurryAngerModifier>
<bBorderObstacle>0</bBorderObstacle>
<bTeamShare>0</bTeamShare>
<bWater>0</bWater>
<bRiver>0</bRiver>
<bPower>0</bPower>
<bDirtyPower>0</bDirtyPower>
<bAreaCleanPower>0</bAreaCleanPower>
<DiploVoteType>NONE</DiploVoteType>
<bForceTeamVoteEligible>0</bForceTeamVoteEligible>
<bCapital>0</bCapital>
<bGovernmentCenter>0</bGovernmentCenter>
<bGoldenAge>0</bGoldenAge>
<bAllowsNukes>0</bAllowsNukes>
<bMapCentering>0</bMapCentering>
<bNoUnhappiness>0</bNoUnhappiness>
<bNoUnhealthyPopulation>0</bNoUnhealthyPopulation>
<bBuildingOnlyHealthy>0</bBuildingOnlyHealthy>
<bNeverCapture>0</bNeverCapture>
<bNukeImmune>0</bNukeImmune>
<bPrereqReligion>0</bPrereqReligion>
<bFreeFromStateReligion>0</bFreeFromStateReligion>
<bCenterInCity>1</bCenterInCity>
<iAIWeight>0</iAIWeight>
<iCost>50</iCost>
<iHurryCostModifier>0</iHurryCostModifier>
<iAdvancedStartCost>100</iAdvancedStartCost>
<iAdvancedStartCostIncrease>0</iAdvancedStartCostIncrease>
<iMinAreaSize>-1</iMinAreaSize>
<iConquestProb>20</iConquestProb>
<iCitiesPrereq>0</iCitiesPrereq>
<iTeamsPrereq>0</iTeamsPrereq>
<iLevelPrereq>0</iLevelPrereq>
<iMinLatitude>0</iMinLatitude>
<iMaxLatitude>90</iMaxLatitude>
<iGreatPeopleRateModifier>0</iGreatPeopleRateModifier>
<iGreatGeneralRateModifier>0</iGreatGeneralRateModifier>
<iDomesticGreatGeneralRateModifier>0</iDomesticGreatGeneralRateModifier>
<iGlobalGreatPeopleRateModifier>0</iGlobalGreatPeopleRateModifier>
<iAnarchyModifier>0</iAnarchyModifier>
<iGoldenAgeModifier>0</iGoldenAgeModifier>
<iGlobalHurryModifier>0</iGlobalHurryModifier>
<iExperience>2</iExperience>
<iGlobalExperience>0</iGlobalExperience>
<iFoodKept>0</iFoodKept>
<iAirlift>0</iAirlift>
<iAirModifier>0</iAirModifier>
<iAirUnitCapacity>0</iAirUnitCapacity>
<iNukeModifier>0</iNukeModifier>
<iNukeExplosionRand>0</iNukeExplosionRand>
<iFreeSpecialist>0</iFreeSpecialist>
<iAreaFreeSpecialist>0</iAreaFreeSpecialist>
<iGlobalFreeSpecialist>0</iGlobalFreeSpecialist>
<iMaintenanceModifier>0</iMaintenanceModifier>
<iWarWearinessModifier>0</iWarWearinessModifier>
<iGlobalWarWearinessModifier>0</iGlobalWarWearinessModifier>
<iEnemyWarWearinessModifier>0</iEnemyWarWearinessModifier>
<iHealRateChange>0</iHealRateChange>
<iHealth>0</iHealth>
<iAreaHealth>0</iAreaHealth>
<iGlobalHealth>0</iGlobalHealth>
<iHappiness>0</iHappiness>
<iAreaHappiness>0</iAreaHappiness>
<iGlobalHappiness>0</iGlobalHappiness>
<iStateReligionHappiness>0</iStateReligionHappiness>
<iWorkerSpeedModifier>0</iWorkerSpeedModifier>
<iMilitaryProductionModifier>0</iMilitaryProductionModifier>
<iSpaceProductionModifier>0</iSpaceProductionModifier>
<iGlobalSpaceProductionModifier>0</iGlobalSpaceProductionModifier>
<iTradeRoutes>0</iTradeRoutes>
<iCoastalTradeRoutes>0</iCoastalTradeRoutes>
<iGlobalTradeRoutes>0</iGlobalTradeRoutes>
<iTradeRouteModifier>0</iTradeRouteModifier>
<iForeignTradeRouteModifier>0</iForeignTradeRouteModifier>
<iGlobalPopulationChange>0</iGlobalPopulationChange>
<iFreeTechs>0</iFreeTechs>
<iDefense>30</iDefense>
<iBombardDefense>20</iBombardDefense>
<iAllCityDefense>0</iAllCityDefense>
<iEspionageDefense>0</iEspionageDefense>
<iAsset>1</iAsset>
<iPower>2</iPower>
<fVisibilityPriority>1000.0</fVisibilityPriority>
<SeaPlotYieldChanges/>
<RiverPlotYieldChanges/>
<GlobalSeaPlotYieldChanges/>
<YieldChanges/>
<CommerceChanges>
<iCommerce>0</iCommerce>
<iCommerce>0</iCommerce>
<iCommerce>0</iCommerce>
</CommerceChanges>
<ObsoleteSafeCommerceChanges/>
<CommerceChangeDoubleTimes/>
<CommerceModifiers/>
<GlobalCommerceModifiers/>
<SpecialistExtraCommerces/>
<StateReligionCommerces/>
<CommerceHappinesses/>
<ReligionChanges/>
<SpecialistCounts/>
<FreeSpecialistCounts/>
<CommerceFlexibles/>
<CommerceChangeOriginalOwners/>
<ConstructSound>AS2D_BUILD_WALLS</ConstructSound>
<BonusHealthChanges/>
<BonusHappinessChanges/>
<BonusProductionModifiers>
<BonusProductionModifier>
<BonusType>BONUS_STONE</BonusType>
<iProductonModifier>100</iProductonModifier>
</BonusProductionModifier>
</BonusProductionModifiers>
<UnitCombatFreeExperiences/>
<DomainFreeExperiences/>
<DomainProductionModifiers/>
<BuildingHappinessChanges/>
<PrereqBuildingClasses/>
<BuildingClassNeededs/>
<SpecialistYieldChanges/>
<BonusYieldModifiers/>
<ImprovementFreeSpecialists/>
<Flavors>
<Flavor>
<FlavorType>FLAVOR_MILITARY</FlavorType>
<iFlavor>10</iFlavor>
</Flavor>
</Flavors>
<HotKey/>
<bAltDown>0</bAltDown>
<bShiftDown>0</bShiftDown>
<bCtrlDown>0</bCtrlDown>
<iHotKeyPriority>0</iHotKeyPriority>
<iDCMAirbombMission>2</iDCMAirbombMission>
<ReplaceBuildings>
<ReplaceBuilding>
<BuildingClassType>BUILDINGCLASS_HIGH_WALLS</BuildingClassType>
<bReplace>1</bReplace>
</ReplaceBuilding>
</ReplaceBuildings>
</BuildingInfo>
 
Last edited:
Top Bottom