How to Add a Combat Class in C2C

Thunderbrd

C2C War Dog
Joined
Jan 2, 2010
Messages
29,813
Location
Las Vegas
How to Add a Combat Class in C2C


With the Combat Mod comes new methods of controlling the mod which rely fairly heavily on a liberal application of Combat Class definitions. However, there's been some complaint, understandably, that adding a combat class takes a certain amount of effort and has a number of not so visible steps involved. Here's an attempt to cleave through the confusion and make this totally simple.

Although not technically a step, you can start with opening all of these files in Notepad++ to make flipping between them with each new entry rather quick and easy.

I'll lead us through with an example. For this example, we're adding the 'Canine' combat class:


Step 1: CIV4UnitCombatInfos.xml

(C:\Program Files (x86)\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\Mods\Caveman2Cosmos\Assets\XML\Units\CIV4UnitCombatInfos.xml)

Code:
		<UnitCombatInfo>
			<Type>UNITCOMBAT_COMBAT_WORKER</Type>
			<Description>TXT_KEY_UNITCOMBAT_COMBAT_WORKER</Description>
			<Button>Art/Interface/Buttons/Promotions/combatworker.dds</Button>
		</UnitCombatInfo>
		[COLOR="SeaGreen"]<UnitCombatInfo>
			<Type>UNITCOMBAT_COMBAT_CANINE</Type>
			<Description>TXT_KEY_UNITCOMBAT_COMBAT_CANINE</Description>
			<Button>Art/Interface/Buttons/Promotions/combatworker.dds</Button>
		</UnitCombatInfo>[/COLOR]
	</UnitCombatInfos>
</Civ4UnitCombatInfos>

You may notice the one overlooked portion of this step was to add the Button graphic reference. Unfortunately, I can't seem to locate the unpacking program for FPKs (I recently switched computers.) so for now I'm leaving that step undone until I spend the time to get myself set up to either create the graphic or at least find the most appropriate fit among the boneyard of unused graphic buttons in our FPKs.


Step 2: UnitNaming.xml

(C:\Program Files (x86)\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\Mods\Caveman2Cosmos\Assets\Config\Unit Naming.xml)

Code:
			<option id="Combat_NAVAL" key="CombatNAVAL" 
					type="string" default="DEFAULT"/>
[COLOR="SeaGreen"]			<option id="Combat_CANINE" key="CombatCANINE"
					type="string" default="DEFAULT"/>[/COLOR]
			<accessor get="getByCombatType" set="setByCombatType" 
					  args="combatType" id="Combat_%s"/>
		</section>
	</options>


Step 3: BUGOptions_RoMGameText.xml

(C:\Program Files (x86)\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\Mods\Caveman2Cosmos\Assets\XML\Text\BUGOptions_RoMGameText.xml)

Code:
[COLOR="SeaGreen"]	<TEXT>
		<Tag>TXT_KEY_BUG_OPT_UNITNAMING__COMBAT_CANINE_TEXT</Tag>
		<English>Naming Convention: Combat[CANINE]</English>
		<French>Convention des Noms: Combat[CANINE]</French>
		<German>Benennungsregel: Kampf[CANINE]</German>
		<Italian>Naming Convention: Combat[CANINE]</Italian>
		<Spanish>Naming Convention: Combat[CANINE]</Spanish>
		<Finnish>Naming Convention: Combat[CANINE]</Finnish>
		<Hungarian></Hungarian>
		<Polish></Polish>
		<Russian></Russian>
		<Chinese></Chinese>
		<Japanese></Japanese>
	</TEXT>
	<TEXT>
		<Tag>TXT_KEY_BUG_OPT_UNITNAMING__COMBAT_CANINE_HOVER</Tag>
		<English>Enter the user defined naming convention for combat units 'CANINE'.</English>
		<French>Entrez la convention des noms pour les unités 'CANINE'.</French>
		<German>Eingabe der benutzerdefinierten Benennungsregel für 'CANINE' Einheiten</German>
		<Italian>Inserisci la tua convenzione di denominazione personalizzata per le Unità di Combattimento Corazzate ('Combat[WORKER]').</Italian>
		<Spanish>Enter the user defined naming convention for combat units 'CANINE'.</Spanish>
		<Finnish>Enter the user defined naming convention for combat units 'CANINE'.</Finnish>
		<Hungarian></Hungarian>
		<Polish></Polish>
		<Russian></Russian>
		<Chinese></Chinese>
		<Japanese></Japanese>
	</TEXT>[/COLOR]
</Civ4GameText>

Just add these to the end of the file. Replace all instances of CANINE with the new name of your Unit Combat.


Step 4: C2C_UnitCombat_CIV4GameText.xml


(C:\Program Files (x86)\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\Mods\Caveman2Cosmos\Assets\XML\Text\C2C_UnitCombat_CIV4GameText.xml)

Code:
[COLOR="SeaGreen"]	<TEXT>
		<Tag>TXT_KEY_UNITCOMBAT_CANINE</Tag>
		<English>Canine</English>
		<French>
			<Text>Unités Ouvrières</Text>
			<Gender>Female</Gender>
			<Plural>1</Plural>
		</French>
		<German>Bautrupp-Einheiten</German>
		<Italian>Canine</Italian>
		<Spanish>Canine</Spanish>
		<Finnish></Finnish>
		<Hungarian></Hungarian>
		<Polish></Polish>
		<Russian></Russian>
		<Chinese></Chinese>
		<Japanese></Japanese>
	</TEXT>[/COLOR]
</Civ4GameText>
Again, just add to the end here. Good for Calvitix and other translators to review these of course.

Note: this is the file, apparently, where I'm going to need to go through and remove the term 'Units' to make the display on these flow a bit better under a multiple Combat Class environment. (So don't add the term 'Units' to yours even if others still show it.)


Step 5: BugUnitNameOptionsTab.py

(C:\Program Files (x86)\Firaxis Games\Sid Meier's Civilization 4\Beyond the Sword\Mods\Caveman2Cosmos\Assets\Python\BUG\Tabs\BugUnitNameOptionsTab.py)

Note: This step is DISCRETIONAL. Use ONLY if the combat class added is a primary or core class. More secondary classes should not be added here.

This can be safely manipulated with text alone as long as no errors are made in the tabbing of the document.

Code:
## BugUnitNameOptionsTab
##
## Tab for the BUG Unit Name Options.
##
## Copyright (c) 2007-2008 The BUG Mod.
##
## Author: Ruff_Hi

import BugOptionsTab

class BugUnitNameOptionsTab(BugOptionsTab.BugOptionsTab):
	"BUG Unit Name Options Screen Tab"
	
	def __init__(self, screen):
		BugOptionsTab.BugOptionsTab.__init__(self, "UnitNaming", "Unit Naming")

	def create(self, screen):
		tab = self.createTab(screen)
		panel = self.createMainPanel(screen)
		column = self.addOneColumnLayout(screen, panel)
	
		left, center, right = self.addThreeColumnLayout(screen, column, "Options")
		
		self.addCheckbox(screen, left, "UnitNaming__Enabled")
		self.addCheckbox(screen, center, "MiscHover__UpdateUnitNameOnUpgrade")
		self.addCheckbox(screen, right, "UnitNaming__UseAdvanced")

		columnL, columnR = self.addTwoColumnLayout(screen, column, "UnitNaming")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Default")
		# self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_AIR")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_ANIMAL")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_ARCHER")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_ASSAULT_MECH")
		# self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_ARMOR")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_BIOLOGICAL")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_BOMBERS")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_CLONES")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_DREADNOUGHT")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_DIESEL_SHIPS")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_DOOM")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_EARLY_BOMBERS")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_EARLY_FIGHTERS")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_SPY")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_GUN")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_HELICOPTER")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_HERO")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_HITECH")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_HUNTER")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_JET_FIGHTERS")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_MELEE")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_MISSILE")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_MOUNTED")
		# self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_NAVAL")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_None")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_NANITE")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_NUCLEAR_SHIPS")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_RECON")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_ROBOT")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_SETTLER")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_SIEGE")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_STEALTH")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_STEAM_SHIPS")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_SUPERSONIC_PLANES")
		# self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_SPY")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_TRACKED")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_WHEELED")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_WOODEN_SHIPS")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_WORKER")
		self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_COMBAT_WORKER")
		[COLOR="SeaGreen"]self.addTextEdit(screen, columnL, columnR, "UnitNaming__Combat_CANINE")[/COLOR]
Again, simply add to the end.


Step 7: Establish Promotion Access
Now that the basics is set up, the other consideration to make is promotion access. This step may be more a part of Promotion design work and is not always necessary by any means.

This is normally done by defining access to promotions via the promotioninfos.xml itself, as in:

Code:
		<PromotionInfo>
			<Type>PROMOTION_COMBAT1</Type>
			<Description>TXT_KEY_PROMOTION_COMBAT1</Description>
			<Sound>AS2D_IF_LEVELUP</Sound>
			<LayerAnimationPath>NONE</LayerAnimationPath>
			<PromotionPrereq>NONE</PromotionPrereq>
			<PromotionPrereqOr1>NONE</PromotionPrereqOr1>
			<PromotionPrereqOr2>NONE</PromotionPrereqOr2>
			<TechPrereq>NONE</TechPrereq>
			<StateReligionPrereq>NONE</StateReligionPrereq>
			<bLeader>0</bLeader>
			<!--TB SubCombat Mod begin  TB Override Mod begin-->
			<PromotionLine>PROMOTIONLINE_COMBAT</PromotionLine>
			<iLinePriority>1</iLinePriority>
			<SubCombatChangeTypes/>
			<!--TB Mod End -->
			<bBlitz>0</bBlitz>
			<bAmphib>0</bAmphib>
			<bRiver>0</bRiver>
			<bEnemyRoute>0</bEnemyRoute>
			<bAlwaysHeal>0</bAlwaysHeal>
			<bHillsDoubleMove>0</bHillsDoubleMove>
			<bImmuneToFirstStrikes>0</bImmuneToFirstStrikes>
			<iVisibilityChange>0</iVisibilityChange>
			<iMovesChange>0</iMovesChange>
			<iMoveDiscountChange>0</iMoveDiscountChange>
			<iAirRangeChange>0</iAirRangeChange>
			<iInterceptChange>0</iInterceptChange>
			<iEvasionChange>0</iEvasionChange>
			<iWithdrawalChange>0</iWithdrawalChange>
			<!--TB Combat Mod begin-->
			<iPursuitChange>0</iPursuitChange>
			<iEarlyWithdrawChange>0</iEarlyWithdrawChange>
			<iVSBarbsChange>0</iVSBarbsChange>
			<iArmorChange>0</iArmorChange>
			<iPunctureChange>0</iPunctureChange>
			<iDigInChange>0</iDigInChange>
			<iFortCollatDefChange>0</iFortCollatDefChange>
			<iOverrunChange>0</iOverrunChange>
			<iRepelChange>0</iRepelChange>
			<iFortRepelChange>0</iFortRepelChange>
			<iEarlyRepelChange>0</iEarlyRepelChange>
			<iUnyieldingChange>0</iUnyieldingChange>
			<iKnockbackChange>0</iKnockbackChange>
			<iEarlyKnockbackChange>0</iEarlyKnockbackChange>
			<bStampedeChange>0</bStampedeChange>
			<iStrAdjperRndChange>0</iStrAdjperRndChange>
			<iStrAdjperAttChange>0</iStrAdjperAttChange>
			<iStrAdjperDefChange>0</iStrAdjperDefChange>
			<iWithdrawAdjperAttChange>0</iWithdrawAdjperAttChange>
			<iUnnerveChange>0</iUnnerveChange>
			<iEncloseChange>0</iEncloseChange>
			<iLungeChange>0</iLungeChange>
			<iDynamicDefenseChange>0</iDynamicDefenseChange>
			<iStrengthChange>0</iStrengthChange>
			<bAnimalIgnoresBordersChange>0</bAnimalIgnoresBordersChange>
			<bOnslaughtChange>0</bOnslaughtChange>
			<AfflictOnAttackChangeTypes/>
			<CureAfflictionChangeTypes/>
			<!--TB Combat Mod end-->
			<iCargoChange>0</iCargoChange>
			<iCollateralDamageChange>0</iCollateralDamageChange>
			<iBombardRateChange>0</iBombardRateChange>
			<iFirstStrikesChange>0</iFirstStrikesChange>
			<iChanceFirstStrikesChange>0</iChanceFirstStrikesChange>
			<iEnemyHealChange>0</iEnemyHealChange>
			<iNeutralHealChange>0</iNeutralHealChange>
			<iFriendlyHealChange>0</iFriendlyHealChange>
			<iSameTileHealChange>0</iSameTileHealChange>
			<iAdjacentTileHealChange>0</iAdjacentTileHealChange>
			<iCombatPercent>10</iCombatPercent>
			<iCityAttack>0</iCityAttack>
			<iCityDefense>0</iCityDefense>
			<iHillsAttack>0</iHillsAttack>
			<iHillsDefense>0</iHillsDefense>
			<iKamikazePercent>0</iKamikazePercent>
			<iRevoltProtection>0</iRevoltProtection>
			<iCollateralDamageProtection>0</iCollateralDamageProtection>
			<iPillageChange>0</iPillageChange>
			<iUpgradeDiscount>0</iUpgradeDiscount>
			<iExperiencePercent>0</iExperiencePercent>
			<TerrainAttacks/>
			<TerrainDefenses/>
			<FeatureAttacks/>
			<FeatureDefenses/>
			<UnitCombatMods/>
			<DomainMods/>
			<TerrainDoubleMoves/>
			<FeatureDoubleMoves/>
			<UnitCombats>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_ANIMAL</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_RECON</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_HUNTER</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_ARCHER</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_MOUNTED</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_MELEE</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_GUN</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_HITECH</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_WHEELED</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_TRACKED</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_HELICOPTER</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_WOODEN_SHIPS</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_STEAM_SHIPS</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_DIESEL_SHIPS</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_NUCLEAR_SHIPS</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_SUBMARINE</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_CLONES</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_ASSAULT_MECH</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_DREADNOUGHT</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					<UnitCombatType>UNITCOMBAT_CIVILIAN</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>
				<UnitCombat>
					[COLOR="SeaGreen"]<UnitCombatType>UNITCOMBAT_CANINE</UnitCombatType>
					<bUnitCombat>1</bUnitCombat>
				</UnitCombat>[/COLOR]
			</UnitCombats>
			<HotKey/>
			<bAltDown>0</bAltDown>
			<bShiftDown>0</bShiftDown>
			<bCtrlDown>0</bCtrlDown>
			<iHotKeyPriority>0</iHotKeyPriority>
			<Button>,Art/Interface/Buttons/Promotions/Combat1.dds,Art/Interface/Buttons/Promotions_Atlas.dds,8,2</Button>
		</PromotionInfo>

Under this method, every promotion you want the unit combat to have access to needs to be defined as such in the definition of the promotion. (ew...)

HOWEVER, we now have PromotionLines that can guide Unit Combat Access in a very streamlined manner.

So say we want our Canine Combat Class to have access to all Combat Line Promotions (Combats I - VI):
in CIV4PromotionLineInfos.xml,
Code:
		<PromotionLineInfo>
			<Type>PROMOTIONLINE_COMBAT</Type>
			<Description>TXT_KEY_PROMOTIONLINE_COMBAT</Description>
			<Button>,Art/Interface/Buttons/Promotions/Combat1.dds,Art/Interface/Buttons/Promotions_Atlas.dds,8,2</Button>
			<NotOnGameOptions/>
			<UnitCombatPrereqTypes>
				[COLOR="SeaGreen"]<UnitCombatPrereqType>UNITCOMBAT_CANINE</UnitCombatPrereqType>[/COLOR]
			</UnitCombatPrereqTypes>
			<NotOnUnitCombatTypes/>
			<PrereqTech/>
			<ObsoleteTech/>
			<bAffliction>0</bAffliction>
			<bEquipment>0</bEquipment>
			<bCritical>0</bCritical>
		</PromotionLineInfo>
Note that in the (NEAR!) future you'll probably see multiples of these lines under <UnitCombatPrereqTypes> and they don't need a boolean to pair with.

Additionally, more likely, the above line will only show access to UNITCOMBAT_COMBATANT and most dog units would be further defined with the SubCombat UNITCOMBAT_COMBATANT, giving dog units access to the Combat line. But if you have a line that's less generic or unique to Canines, this is how you'd indicate that on the promotion line entry.

Now, if for some reason you want your unit combat to NOT have access to a line, for example: most (or some) dog units defined as Combatant sub combats but you don't want Canines to have access to the Combat line of promotions, you'd be able to use the <NotOnUnitCombatTypes> tag in PromotionLineInfos as below:
Code:
[COLOR="SeaGreen"]			<NotOnUnitCombatTypes>
				<NotOnUnitCombatType>UNITCOMBAT_CANINE</NotOnUnitCombatType>
			</NotOnUnitCombatTypes>[/COLOR]

This tag also exists on the basic PromotionInfos.xml as well so you can also select a limit along a line.

Therefore, if you have Canines accessing the Combat Line, you could limit them to only being able to achieve Combat III at most by putting the <NotOnUnitCombatTypes> tag, defined for Canines, under the info for COMBAT4, which would cut off all further progression.

Generally, in these cases, keep in mind that the NOT condition will always override a qualifying condition. The default is no, access is granted, then access is limited or cutoff completely by line to keep the multiple unit combat definitions in check.

EDIT: I'm also in the process of adding a bAutoPrereqHierarchy tag to PromotionLines as well. This will allow us, by replacing the 0 with a 1, force the promotion qualifier mechanisms to assume that next less Line Priority is also a Prereq along the whole line. Therefore, it will no longer be necessary to express in the xml that Combat II has a prerequisite of Combat I, that Combat III has a prerequisite of Combat II. With but a change from 0 to 1, the whole line will automatically assume this, so you only have to define the prerequisites of the first step on the line unless you have more to prerequisite conditions to add down the line. This will allow us to clean up the Promotions info tremendously and will greatly simplify adding a set of new promotions along a new line.

At the moment, the tag is there and we can indicate true or false but the coding is not yet in place (very easily set up but my compiler is moving like a snail tonight (I think my computer needs a restart! lol))


Anyhow, in regards to the Combat Class addition example, I'm actually doing this untested so if these steps seem to create any unusual effects or problems, or you know I've missed a step, please post them here to make sure I can get this head post updated. I've put Canines and Combatants in place tonight. Let me know if you encounter any trouble with them!

Any questions?


Note: Updated 10/11/2014 to latest filepaths and with some important footnotes that have come up since this was originally written.
 
Soon as I get a chance Giuseppe! I've got limited time in a given day and I've been in a mad race to polish what I've got introduced before moving on.
 
Yeah... I just need to get it again apparently... I thought I had it.

Anyhow, as you can see, ls612, manipulating python is no greater risk than any xml work. It doesn't require any compiling and can be accessed by any notepad method you may be using for xml. In this application, its just a matter of adding a copy of the line above, overwriting the name with the new combat class and making sure not to change the indent on that line at all. EASY!

Also... I hope you took careful note of the manner in which Promotion Lines can greatly simplify the establishment of promotion prerequisites. I'm going to eventually seek to replace the current expressions with the equivalent expressions according to the new methods - will cut down on a lot of text in the xml and will give us a much easier oversight on the prerequisites defined by just looking at the xml.
 
Ah... so it is. I still have to edit my mistakes in the texts up there though.

That said, funny we missed that step for so many of the new CCs.
 
Top Bottom