[Idea] Realistic City Siege

Ok as you said. Now we can add combat class siege_gatecrasher to all rams units.

Good idea to get to that right away I think.

I'm going to be looking for some help here... I'll need a full unit list on a google doc so I can begin to work on planning CC assignments. Would anyone be willing to help with that admittedly daunting task?
 
I'm going to be looking for some help here... I'll need a full unit list on a google doc so I can begin to work on planning CC assignments. Would anyone be willing to help with that admittedly daunting task?

Isn't that what Hydro did/started in the Combat Class Thread?
I just want to mention it, not that there are multiple people doing the excact same thing.
 
https://docs.google.com/spreadsheet/ccc?key=0Aqem4Vnkfp5pdHgyQU1fSndVbG5pei1pM01nNEp4N2c&usp=sharing

This is my proposal to tweak traps line with new tags.
Note that current damage in surrunding tiles should be completly removed.

I also added 3 new traps proposals that not exists (green background) with stats

@TB and Hydro
Feel free to edit this document.

@others
If you have any ideas please put it on forum first before edit.

When traps will be ready to implement i will post my proposals to tweak rams.
 
That looks about right to me actually.

Now... we wouldn't remove the adjacent damage effects from the game to do this, just the traps. It would still exist via the bombard towers etc... things that generate automatic defensive fire against enemies surrounding the city.

And I think all in all this outlook would make much more sense. Those proposed numbers fit pretty well with eventual dodge and armor being in play too, at least they seem to for now.

These wouldn't be the only applications of potential damage on attack effects either though right?

Also... many of these might be greatly simplifiable as to what CCs are affected. Check out the Motility Category of Combat Classes (in the C2C Combat Class Plans link in my sig here). Once added to all units, these CCs would seem to be the main thing that would differentiate whether one of these traps would damage that unit type or not. And don't be afraid to indicate ALL with the new boolean... Nanobotic traps, at least, would be a good fit for ALL for a start (this doesn't affect air raids mind you.)
 
Hmm. But how should it be written? Like this?

Code:
			<MayDamageAttackingUnitCombatTypes>
				<UnitCombatType>UNITCOMBAT_MELEE</UnitCombatType>
				<iDamageAttackerChance>20</iDamageAttackerChance>
				<iDamageToAttacker>5</iDamageToAttacker>
			</MayDamageAttackingUnitCombatTypes>

And then how do you write it for more than one type of CC?
 
The more complex form that would've allowed for variation doesn't exist. So the syntax is:
Code:
			<MayDamageAttackingUnitCombatTypes>
				<UnitCombatType>UNITCOMBAT_MELEE</UnitCombatType>
				<UnitCombatType>UNITCOMBAT_MOUNTED</UnitCombatType>
			</MayDamageAttackingUnitCombatTypes>
			<iDamageAttackerChance>20</iDamageAttackerChance>
			<iDamageToAttacker>5</iDamageToAttacker>
You can refrain from using <MayDamageAttackingUnitCombatTypes> at all and use instead <bDamageAllAttackers>1</bDamageAllAttackers> after <iDamageToAttacker>.

We've also got <bDamageToAttackerIgnoresArmor>1</bDamageToAttackerIgnoresArmor> to indicate this building's Damage to Attacker effect bypasses the damaged unit's armor. It would go just before bDamageAllAttackers and after iDamageToAttacker in order.
 
Note that this traps described in my c2c traps Google doc should not ignore armor. Also please use bDamageAllAttackers for nanobotic traps.
 
@TB
Thanks for the code.

@Nimek

1. Are we keeping the repel on the traps?

2. Also on Bobby Traps and higher I am adding Hovercrafts CC. While they could float over Pit, Mechanical and even Landmines I do not think they would not trigger Bobby Traps.

3. At what tech would Spiked Pit traps fit in? More stats if you want me to make it.

4. For more advanced traps would/should Clone CC be included?
 
@hydro

Yes repel stay but remove damage on surrounding plots. Thank you. Also hovercrafts are good idea.
 
Hmm. But how should it be written? Like this?

Code:
			<MayDamageAttackingUnitCombatTypes>
				<UnitCombatType>UNITCOMBAT_MELEE</UnitCombatType>
				<iDamageAttackerChance>20</iDamageAttackerChance>
				<iDamageToAttacker>5</iDamageToAttacker>
			</MayDamageAttackingUnitCombatTypes>

And then how do you write it for more than one type of CC?

Note that this traps described in my c2c traps Google doc should not ignore armor. Also please use bDamageAllAttackers for nanobotic traps.

I think the Spiked Pit Trap at least should ignore armour. Maybe even increase the damage. If you fall 3m you usually don't hurt yourself so much, but if you fall from this hight in a plate armour....

Also, once the Firststrike = Range change is done, Archers and other Range Units should be hit AFTER they performed their firststrikes.
 
I applied the changes to Pit Traps, Mechanical Traps, Land Mines, Booby Traps and Robotic Traps and pushed it to the SVN. However in testign I did not see any text saying it applied.

@TB
Could you look over my Tower Mod and check on the traps to see if I did it right? There are no errors but its just weird no stats show up for the new properties.

@Nimek
I need more stats from you for the other new traps. Like req techs, obsolete techs, req resources, etc.
 
I recently read a book that also dealed with modern weapons. I was wondering if we should add a Microwave Tower (Building) or a Microwave unit. They would have lots of repel against Infanterie and Weeled units but less against Robots and tanks.

Is it acutally possible to have repel vs certain CC? I think Bee Bombs won't stop robots or Tanks from attacking at all... (I want to add controlled Bees at Biopunk / Cyberpunk, so this would be usefull)
 
Yes, an offensice one. I've read that microwave weapons are used nowadays against violent demonstrants. They cause burnings that hurt very strong. Eventhough I think they CAN kill people, I'd like to give him lots of repel against "unarmoured" units, and also reducing revolt instability and maybe crime, but without the effects the Bombard Tower and the like have.
 
2. Also on Bobby Traps and higher I am adding Hovercrafts CC. While they could float over Pit, Mechanical and even Landmines I do not think they would not trigger Bobby Traps.
hmm... interesting. This gives me some cause to pause and further consider the Motility CC section. Maybe I need a 'High Hover' and 'Low Hover' category, though there'd also be a difference between Driven and Piloted in this case (Driven would be on Low Hovers and Piloted would be on High Hover.) But then many Hover Craft don't actually have any protective casing around the operator, so in those cases I suppose they'd be exposed so perhaps could qualify as Riding. And Hovercraft are and are not naval... Yeah, I think High and Low Hover would cover it don't you?

I'm trying to give you all the CC tools you'd need in the Motility section so you don't even have to USE Melee, Mounted etc... on tags like these where the determining factor is actually how the unit gets around.

And Bobby must be getting tired of people being out there trying to set traps for him. The Boobies are pretty much extinct though so they wouldn't be offended by the correct use of the term.

For more advanced traps would/should Clone CC be included?
Thus why using the Motility category would be a better way to go. I realize they aren't quite done yet (but you should see our document's Unit Assignment page to see what kind of progress we're showing in the planning there. Could use some help there too y'all!)

@TB
Could you look over my Tower Mod and check on the traps to see if I did it right? There are no errors but its just weird no stats show up for the new properties.
hmm... not saying its impossible to have a bug here. I'm not sure how well I tested after the supplementary booleans and maybe something got broken there.

BUT, first, make sure to load with the debug dll and not the normal one to make sure there aren't errors. Without using that, you won't get any error notifications on bad xml anymore.

To USE this, rename the main CvGameCore.dll file in the assets by adding .core or .whateveryouwant to the end after .dll. Then remove the .debug part of the name on the CvGameCore.dll.debug file. THEN run the mod. (reverse all this afterwards - debug dlls are a horribly slow way to really run the game) That's when you'll see any errors in xml now. AIAndy made some changes to the load process and this is our new method on xml debug checks.

Mind, I think you know this but I'm just stating it again - others might still not realize this must be done to catch xml problems.

I'll have more time to look into this later tonight perhaps.

I recently read a book that also dealed with modern weapons. I was wondering if we should add a Microwave Tower (Building) or a Microwave unit. They would have lots of repel against Infanterie and Weeled units but less against Robots and tanks.
Yeah, Microwave blasters on Humvees are going into a lot of use right now as riot-control non-lethal submission weaponry. It may not make a bad unit type but it might make just as good an equipment set. Repel... yep, absolutely perfect use of Repel I think.

You might notice I put a Combat Class in the list specifically for these weapons. I do love our modern progressions in weapons tech and how they are so focused on 'Non-Lethal'. I believe they'd also greatly increase chances to capture!

Is it acutally possible to have repel vs certain CC? I think Bee Bombs won't stop robots or Tanks from attacking at all... (I want to add controlled Bees at Biopunk / Cyberpunk, so this would be usefull)

<UnitCombatRepelAgainstModifiers> is the tag.
 
You might notice I put a Combat Class in the list specifically for these weapons. I do love our modern progressions in weapons tech and how they are so focused on 'Non-Lethal'. I believe they'd also greatly increase chances to capture!

Great! Right now, it's amost impossbile to capture a unit after the medival era. I won 200+ battles in one turn against a city, had Slavery Worldview, run Banditry... But only got 2 Slaves!


<UnitCombatRepelAgainstModifiers> is the tag.

Could you give an example please?

How would the code look like if I want repel against Melee and Archers, for example? (I think this will work better if mobility is in added)
 
hmm... not saying its impossible to have a bug here. I'm not sure how well I tested after the supplementary booleans and maybe something got broken there.

BUT, first, make sure to load with the debug dll and not the normal one to make sure there aren't errors. Without using that, you won't get any error notifications on bad xml anymore.

To USE this, rename the main CvGameCore.dll file in the assets by adding .core or .whateveryouwant to the end after .dll. Then remove the .debug part of the name on the CvGameCore.dll.debug file. THEN run the mod. (reverse all this afterwards - debug dlls are a horribly slow way to really run the game) That's when you'll see any errors in xml now. AIAndy made some changes to the load process and this is our new method on xml debug checks.

Mind, I think you know this but I'm just stating it again - others might still not realize this must be done to catch xml problems.

I'll have more time to look into this later tonight perhaps.

*eyes glaze over* Wait what? Debug what? *hands it over* You fix, I am confused. :crazyeye:
 
Great! Right now, it's amost impossbile to capture a unit after the medival era. I won 200+ battles in one turn against a city, had Slavery Worldview, run Banditry... But only got 2 Slaves!
I'd say that's just a side effect of the capture mechanism not being fully developed yet. We need to review units and promotions for modifiers on that mechanism and there's a couple of promotion lines that need developed for the structure. Additionally, Civics can play a role and aren't fully evaluated for that role yet. So there's less chance to capture right now than there ultimately will be.




Could you give an example please?
Code:
			<UnitCombatRepelAgainstModifiers>
				<UnitCombatRepelAgainstModifier>
					<UnitCombatType>UNITCOMBAT_MELEE</UnitCombatType>
					<iUnitCombatDefenseAgainstModifier>20</iUnitCombatDefenseAgainstModifier>
				</UnitCombatRepelAgainstModifier>
				<UnitCombatRepelAgainstModifier>
					<UnitCombatType>UNITCOMBAT_ARCHERY</UnitCombatType>
					<iUnitCombatDefenseAgainstModifier>20</iUnitCombatDefenseAgainstModifier>
				</UnitCombatRepelAgainstModifier>
			</UnitCombatRepelAgainstModifiers>
For the order:
Spoiler :

<element type="Type"/>
<!-- XMLCOPY 02/20/2008 MRGENIE -->
<element type="bForceOverwrite" minOccurs="0"/>
<element type="bForceDelete" minOccurs="0"/>
<element type="iForceInsertLocation" minOccurs="0"/>
<element type="bTypeDependency" minOccurs="0"/>
<element type="AndDependencyTypes" minOccurs="0"/>
<element type="OrDependencyTypes" minOccurs="0"/>
<!-- XMLCOPY END MRGENIE -->
<element type="SpecialBuildingType" minOccurs="0"/>
<element type="Description" minOccurs="0"/>
<element type="Civilopedia" minOccurs="0"/>
<element type="Strategy" minOccurs="0"/>
<element type="Help" minOccurs="0"/>
<element type="Advisor" minOccurs="0"/>
<element type="ArtDefineTag" minOccurs="0"/>
<element type="MovieDefineTag" minOccurs="0"/>
<element type="HolyCity" minOccurs="0"/>
<element type="ReligionType" minOccurs="0"/>
<element type="StateReligion" minOccurs="0"/>
<element type="bStateReligion" minOccurs="0"/>
<element type="PrereqReligion" minOccurs="0"/>
<element type="PrereqCorporation" minOccurs="0"/>
<element type="FoundsCorporation" minOccurs="0"/>
<element type="GlobalReligionCommerce" minOccurs="0"/>
<element type="GlobalCorporationCommerce" minOccurs="0"/>
<element type="VictoryPrereq" minOccurs="0"/>
<element type="FreeStartEra" minOccurs="0"/>
<element type="MaxStartEra" minOccurs="0"/>
<element type="ObsoleteTech" minOccurs="0"/>
<element type="PrereqTech" minOccurs="0"/>
<element type="TechTypes" minOccurs="0"/>
<element type="Bonus" minOccurs="0"/>
<element type="PrereqBonuses" minOccurs="0"/>
<element type="ProductionTraits" minOccurs="0"/>
<element type="HappinessTraits" minOccurs="0"/>
<element type="NoBonus" minOccurs="0"/>
<element type="PowerBonus" minOccurs="0"/>
<element type="FreeBonus" minOccurs="0"/>
<element type="ExtraFreeBonuses" minOccurs="0"/>
<element type="iNumFreeBonuses" minOccurs="0"/>
<element type="FreeBuilding" minOccurs="0"/>
<element type="FreeAreaBuilding" minOccurs="0"/>
<element type="FreeTradeRegionBuilding" minOccurs="0"/>
<element type="FreePromotion" minOccurs="0"/>
<element type="CivicOption" minOccurs="0"/>
<element type="GreatPeopleUnitClass" minOccurs="0"/>
<element type="iGreatPeopleRateChange" minOccurs="0"/>
<element type="iHurryAngerModifier" minOccurs="0"/>
<element type="bBorderObstacle" minOccurs="0"/>
<element type="bTeamShare" minOccurs="0"/>
<element type="bAutoBuild" minOccurs="0"/>
<element type="bWater" minOccurs="0"/>
<element type="bRiver" minOccurs="0"/>
<element type="bPower" minOccurs="0"/>
<element type="bDirtyPower" minOccurs="0"/>
<element type="bAreaCleanPower" minOccurs="0"/>
<element type="bOrbital" minOccurs="0"/>
<element type="bOrbitalInfrastructure" minOccurs="0"/>
<element type="DiploVoteType" minOccurs="0"/>
<element type="bForceTeamVoteEligible" minOccurs="0"/>
<element type="bCapital" minOccurs="0"/>
<element type="bGovernmentCenter" minOccurs="0"/>
<element type="bGoldenAge" minOccurs="0"/>
<element type="bAllowsNukes" minOccurs="0"/>
<element type="bMapCentering" minOccurs="0"/>
<element type="bNoUnhappiness" minOccurs="0"/>
<element type="bNoUnhealthyPopulation" minOccurs="0"/>
<element type="bBuildingOnlyHealthy" minOccurs="0"/>
<element type="bNeverCapture" minOccurs="0"/>
<element type="bNukeImmune" minOccurs="0"/>
<element type="bPrereqReligion" minOccurs="0"/>
<element type="bNoHolyCity" minOccurs="0"/>
<element type="bCenterInCity" minOccurs="0"/>
<element type="iAIWeight" minOccurs="0"/>
<element type="iCost" minOccurs="0"/>
<element type="iHurryCostModifier" minOccurs="0"/>
<element type="iAdvancedStartCost" minOccurs="0"/>
<element type="iAdvancedStartCostIncrease" minOccurs="0"/>
<element type="iMinAreaSize" minOccurs="0"/>
<element type="iConquestProb" minOccurs="0"/>
<element type="iCitiesPrereq" minOccurs="0"/>
<element type="iTeamsPrereq" minOccurs="0"/>
<element type="iLevelPrereq" minOccurs="0"/>
<element type="iMinLatitude" minOccurs="0"/>
<element type="iMaxLatitude" minOccurs="0"/>
<element type="iGreatPeopleRateModifier" minOccurs="0"/>
<element type="iGreatGeneralRateModifier" minOccurs="0"/>
<element type="iDomesticGreatGeneralRateModifier" minOccurs="0"/>
<element type="iGlobalGreatPeopleRateModifier" minOccurs="0"/>
<element type="iAnarchyModifier" minOccurs="0"/>
<element type="iGoldenAgeModifier" minOccurs="0"/>
<element type="iGlobalHurryModifier" minOccurs="0"/>
<element type="iExperience" minOccurs="0"/>
<element type="iGlobalExperience" minOccurs="0"/>
<element type="iFoodKept" minOccurs="0"/>
<element type="iAirlift" minOccurs="0"/>
<element type="iAirModifier" minOccurs="0"/>
<element type="iAirUnitCapacity" minOccurs="0"/>
<element type="iNukeModifier" minOccurs="0"/>
<element type="iNukeExplosionRand" minOccurs="0"/>
<element type="iFreeSpecialist" minOccurs="0"/>
<element type="iAreaFreeSpecialist" minOccurs="0"/>
<element type="iGlobalFreeSpecialist" minOccurs="0"/>
<element type="iMaintenanceModifier" minOccurs="0"/>
<!--DPII < Maintenance Modifiers > -->
<element type= "iGlobalMaintenanceModifier" minOccurs="0"/>
<element type="iAreaMaintenanceModifier" minOccurs="0"/>
<element type="iOtherAreaMaintenanceModifier" minOccurs="0"/>
<element type="iDistanceMaintenanceModifier" minOccurs="0"/>
<element type="iNumCitiesMaintenanceModifier" minOccurs="0"/>
<element type="iCoastalDistanceMaintenanceModifier" minOccurs="0"/>
<element type="iConnectedCityMaintenanceModifier" minOccurs="0"/>
<!--DPII < Maintenance Modifiers > -->
<element type="iWarWearinessModifier" minOccurs="0"/>
<element type="iGlobalWarWearinessModifier" minOccurs="0"/>
<element type="iEnemyWarWearinessModifier" minOccurs="0"/>
<element type="iHealRateChange" minOccurs="0"/>
<element type="iHealth" minOccurs="0"/>
<element type="iAreaHealth" minOccurs="0"/>
<element type="iGlobalHealth" minOccurs="0"/>
<element type="iHappiness" minOccurs="0"/>
<element type="iAreaHappiness" minOccurs="0"/>
<element type="iGlobalHappiness" minOccurs="0"/>
<element type="iStateReligionHappiness" minOccurs="0"/>
<element type="iWorkerSpeedModifier" minOccurs="0"/>
<element type="iMilitaryProductionModifier" minOccurs="0"/>
<element type="iSpaceProductionModifier" minOccurs="0"/>
<element type="iGlobalSpaceProductionModifier" minOccurs="0"/>
<element type="iTradeRoutes" minOccurs="0"/>
<element type="iCoastalTradeRoutes" minOccurs="0"/>
<element type="iGlobalTradeRoutes" minOccurs="0"/>
<element type="iTradeRouteModifier" minOccurs="0"/>
<element type="iForeignTradeRouteModifier" minOccurs="0"/>
<element type="iGlobalPopulationChange" minOccurs="0"/>
<element type="iFreeTechs" minOccurs="0"/>
<element type="FreeSpecialTech" minOccurs="0"/>
<element type="iDefense" minOccurs="0"/>
<element type="iBombardDefense" minOccurs="0"/>
<element type="iAllCityDefense" minOccurs="0"/>
<element type="iEspionageDefense" minOccurs="0"/>
<!-- RevDCM Building Effects -->
<element type="iUnitUpgradePriceModifier" minOccurs="0"/>
<element type="iRevIdxLocal" minOccurs="0"/>
<element type="iRevIdxNational" minOccurs="0"/>
<element type="iRevIdxDistanceModifier" minOccurs="0"/>
<!-- RevDCM end -->
<element type="iAsset" minOccurs="0"/>
<element type="iPower" minOccurs="0"/>
<!--Afforess-->
<element type="iPopulationgrowthratepercentage" minOccurs="0"/>
<element type="iGlobalPopulationgrowthratepercentage" minOccurs="0"/>
<element type="iRevolutionIndexModifier" minOccurs="0"/>
<element type="iWorldTradeRoutes" minOccurs="0"/>
<element type="FreePromotion_2" minOccurs="0"/>
<element type="FreePromotion_3" minOccurs="0"/>
<element type="PrereqGameOption" minOccurs="0"/>
<element type="NotGameOption" minOccurs="0"/>
<element type="bBuildOnlyOnPeaks" minOccurs="0"/>
<element type="bApplyFreePromotionOnMove" minOccurs="0"/>
<element type="bProvidesFreshWater" minOccurs="0"/>
<element type="bForceAllTradeRoutes" minOccurs="0"/>
<element type="bForceNoPrereqScaling" minOccurs="0"/>
<element type="bPrereqWar" minOccurs="0"/>
<element type="bPrereqPower" minOccurs="0"/>
<element type="bRequiresActiveCivics" minOccurs="0"/>
<element type="BonusCommerceModifiers" minOccurs="0"/>
<element type="BonusYieldChanges" minOccurs="0"/>
<element type="VicinityBonusYieldChanges" minOccurs="0"/>
<element type="iDarkAgePointsObsolete" minOccurs="0"/>
<element type="iDarkAgePointsWeight" minOccurs="0"/>
<element type="iLineOfSight" minOccurs="0"/>
<element type="ProductionContinueBuildingClass" minOccurs="0"/>
<element type="PrereqCultureLevel" minOccurs="0"/>
<element type="iPrereqPopulation" minOccurs="0"/>
<element type="iWorkableRadius" minOccurs="0"/>
<element type="bZoneOfControl" minOccurs="0"/>
<element type="bProtectedCulture" minOccurs="0"/>
<element type="iAdjacentDamagePercent" minOccurs="0"/>
<element type="iInvasionChance" minOccurs="0"/>
<element type="iNoEntryDefenseLevel" minOccurs="0"/>
<element type="iNumUnitFullHeal" minOccurs="0"/>
<element type="iOccupationTimeModifier" minOccurs="0"/>
<element type="CommerceAttacks" minOccurs="0"/>
<element type="UnitCombatExtraStrengths" minOccurs="0"/>
<element type="ExtendsBuildingClass" minOccurs="0"/>
<element type="iNumPopulationEmployed" minOccurs="0"/>
<element type="iHealthPercentPerPopulation" minOccurs="0"/>
<element type="iHappinessPercentPerPopulation" minOccurs="0"/>
<element type="BonusCommercePercentChanges" minOccurs="0"/>
<!--Afforess-->
<element type="fVisibilityPriority" minOccurs="0"/>
<element type="SeaPlotYieldChanges" minOccurs="0"/>
<element type="RiverPlotYieldChanges" minOccurs="0"/>
<element type="GlobalSeaPlotYieldChanges" minOccurs="0"/>
<element type="YieldChanges" minOccurs="0"/>
<element type="YieldModifiers" minOccurs="0"/>
<element type="PowerYieldModifiers" minOccurs="0"/>
<element type="AreaYieldModifiers" minOccurs="0"/>
<element type="GlobalYieldModifiers" minOccurs="0"/>
<element type="CommerceChanges" minOccurs="0"/>
<element type="ObsoleteSafeCommerceChanges" minOccurs="0"/>
<element type="CommerceChangeDoubleTimes" minOccurs="0"/>
<element type="CommerceModifiers" minOccurs="0"/>
<element type="GlobalCommerceModifiers" minOccurs="0"/>
<element type="SpecialistExtraCommerces" minOccurs="0"/>
<element type="StateReligionCommerces" minOccurs="0"/>
<element type="CommerceHappinesses" minOccurs="0"/>
<element type="ReligionChanges" minOccurs="0"/>
<element type="SpecialistCounts" minOccurs="0"/>
<element type="FreeSpecialistCounts" minOccurs="0"/>
<element type="CommerceFlexibles" minOccurs="0"/>
<element type="CommerceChangeOriginalOwners" minOccurs="0"/>
<element type="ConstructSound" minOccurs="0"/>
<element type="BonusHealthChanges" minOccurs="0"/>
<element type="BonusHappinessChanges" minOccurs="0"/>
<element type="BonusProductionModifiers" minOccurs="0"/>
<element type="UnitCombatFreeExperiences" minOccurs="0"/>
<element type="DomainFreeExperiences" minOccurs="0"/>
<element type="DomainProductionModifiers" minOccurs="0"/>
<element type="BuildingHappinessChanges" minOccurs="0"/>
<element type="PrereqBuildingClasses" minOccurs="0"/>
<element type="BuildingClassNeededs" minOccurs="0"/>
<element type="SpecialistYieldChanges" minOccurs="0"/>
<element type="BonusYieldModifiers" minOccurs="0"/>
<element type="ImprovementFreeSpecialists" minOccurs="0"/>
<element type="Flavors" minOccurs="0"/>
<element type="HotKey" minOccurs="0"/>
<element type="bAltDown" minOccurs="0"/>
<element type="bShiftDown" minOccurs="0"/>
<element type="bCtrlDown" minOccurs="0"/>
<element type="iHotKeyPriority" minOccurs="0"/>
<element type="iOrderPriority" minOccurs="0"/>
<!-- AIAndy Property related tag -->
<element type="Properties" minOccurs="0"/>
<element type="PropertiesAllCities" minOccurs="0"/>
<element type="PrereqMinProperties" minOccurs="0"/>
<element type="PrereqMaxProperties" minOccurs="0"/>
<element type="PrereqPlayerMinProperties" minOccurs="0"/>
<element type="PrereqPlayerMaxProperties" minOccurs="0"/>
<!-- Technology Affected Buildings: BEGIN -->
<element type="TechCommerceChanges" minOccurs="0"/>
<element type="TechYieldChanges" minOccurs="0"/>
<element type="TechSpecialistChanges" minOccurs="0"/>
<element type="TechCommerceModifiers" minOccurs="0"/>
<element type="TechYieldModifiers" minOccurs="0"/>
<!-- Technology Affected Buildings: END -->
<element type="bDCMNukesOkay" minOccurs="0"/>
<element type="iDCMAirbombMission" minOccurs="0"/>
<element type="PropertyManipulators" minOccurs="0"/>
<element type="GlobalBuildingExtraCommerces" minOccurs="0"/>
<!-- TB Combat Mods begin -->
<element type="iAidRate" minOccurs="0"/>
<element type="iTradeCommunicability" minOccurs="0"/>
<element type="iFrontSupportPercentModifier" minOccurs="0"/>
<element type="iShortRangeSupportPercentModifier" minOccurs="0"/>
<element type="iMediumRangeSupportPercentModifier" minOccurs="0"/>
<element type="iLongRangeSupportPercentModifier" minOccurs="0"/>
<element type="iFlankSupportPercentModifier" minOccurs="0"/>
<element type="iNationalCaptureProbabilityModifier" minOccurs="0"/>
<element type="iNationalCaptureResistanceModifier" minOccurs="0"/>
<element type="iLocalCaptureProbabilityModifier" minOccurs="0"/>
<element type="iLocalCaptureResistanceModifier" minOccurs="0"/>
<element type="iLocalDynamicDefense" minOccurs="0"/>
<element type="iRiverDefensePenalty" minOccurs="0"/>
<element type="iLocalRepel" minOccurs="0"/>
<element type="iMinDefense" minOccurs="0"/>
<element type="iBuildingDefenseRecoverySpeedModifier" minOccurs="0"/>
<element type="iCityDefenseRecoverySpeedModifier" minOccurs="0"/>
<element type="MayDamageAttackingUnitCombatTypes" minOccurs="0"/>
<element type="iDamageAttackerChance" minOccurs="0"/>
<element type="iDamageToAttacker" minOccurs="0"/>
<element type="bDamageToAttackerIgnoresArmor" minOccurs="0"/>
<element type="bDamageAllAttackers" minOccurs="0"/>
<element type="FreePromoTypes" minOccurs="0"/>
<element type="DiseaseTypes" minOccurs="0"/>
<element type="UnitCombatRetrainTypes" minOccurs="0"/>
<element type="UnitCombatRepelModifiers" minOccurs="0"/>
<element type="UnitCombatRepelAgainstModifiers" minOccurs="0"/>
<element type="UnitCombatDefenseAgainstModifiers" minOccurs="0"/>
<element type="UnitCombatProdModifiers" minOccurs="0"/>
<element type="UnitCombatOngoingTrainingDurations" minOccurs="0"/>
<element type="BonusAidModifiers" minOccurs="0"/>
<element type="AfflictionOutbreakLevelModifiers" minOccurs="0"/>
<element type="TechOutbreakLevelModifiers" minOccurs="0"/>
<element type="TechHappinessTypes" minOccurs="0"/>
<element type="TechHealthTypes" minOccurs="0"/>
<element type="TechSpecialistHappinessTypes" minOccurs="0"/>
<element type="TechSpecialistHealthTypes" minOccurs="0"/>
<element type="TechSpecialistUnHappinessTypes" minOccurs="0"/>
<element type="TechSpecialistUnHealthTypes" minOccurs="0"/>
<element type="TechSpecialistHappinesses" minOccurs="0"/>
<element type="TechSpecialistHealths" minOccurs="0"/>
<element type="LocalSpecialistYieldChanges" minOccurs="0"/>
<element type="Hurrys" minOccurs="0"/>


*eyes glaze over* Wait what? Debug what? *hands it over* You fix, I am confused. :crazyeye:
Let me go over this again because this is VERY important for ALL XML modders to know.

We used to get errors when we'd run the game and the xml was screwed up somewhere. This NO LONGER HAPPENS by default. AIAndy changed the way the game loads data.

However, we still recognize a need to be able to easily find these errors.

So we now make and include in the mod, in the Assets file, two dlls, not just one.

Now, if a dll file is not named absolutely what it should be: CvGameCoreDLL.dll it will not be the core coding system that will run for the game. If there is no dll file in the assets folder, there's no programming for the game.

So all we must do to disable a dll file without actually harming this core code file in any way is to simply rename it so that the game doesn't find it and run it. Of course there can only ever be ONE dll file in the Assets folder.

So to TEST your XML you MUST load the game under the debug dll rather than the standard one that normally runs.

To do this, we rename the dll. To rename a file, right click on that file name and select 'rename' from the list that pops up. This is standard Windows behavior.

I rename the normal dll, the one in the assets folder named CvGameCoreDLL.dll, to: CvGameCoreDLL.dll.core

Doing this disables that dll since its now not exactly the same name as the core civ execution file is looking for when it goes to run the game. Once renamed, you don't have any game code basically.

Now we take the OTHER dll that's located in the Assets folder and make that the dll the game will run with. This other dll is by default named CvGameCoreDLL.dll.debug. It doesn't do anything when it's named this. It's only named specifically this way (ending in .debug) so y'all will know what its for.

To activate that dll so that the game will find and use THAT set of code, simply rename the debug dll to what the game expects to find: CvGameCoreDLL.dll

This dll (now missing the simple added extension of .debug) is now found as the valid dll when the game goes to run. And it works a little differently.

THIS dll will send you any error reports you may be used to seeing if your xml is flawed. This is because it loads the game under the original set of rules that the old dlls would load by. Without performing this check, you will have potentially a lot of defunct xml code and not even know it, assuming that simply loading the game would've told you if you had a problem as it always used to.

THIS dll is also a LOT slower as it enables a ton of diagnostic checks. That part is where the coders have some insight you don't need to have. You're not running it for that reason anyhow. You're running it so you can get the usual error messages if your xml is flawed so you can find and fix those flaws without assuming everything's been done without any issues.

Therefore, since the debug dll runs VERY slowly, you don't want to commit that dll as the standard dll to be in use - ever. So after you've run your check and resolved any issues in the xml, you must rename it back to CvGameCoreDLL.dll.debug.

Then return the core dll to its standard service for the mod by renaming the core dll back to CvGameCoreDLL.dll (without the '.core' at the end that you put there to disable it.)

Does this make sense why this would be SO very important for anyone doing any XML programming in this mod to understand? I'll be happy to run a check here but making this a standard 'final check' before committing any new XML will avoid a lot of problems!

NOTE: When renaming sometimes it gives a warning message about how this might cause the dll to become instable yada yada. Ignore that and plow through it. We know what we're doing in the renaming of this thing.
 
Back
Top Bottom