RevDCM Specific Code Proposals

@Afforess

Your upload is missing the altered schema files to take into account the new tags. Also these tags need to be shown in the appropriate files (you added a couple tags, forgot which ones now, but all of them need to be shown in the first object in their proper files; and these tags need their schema file changes as well so that they are loaded). These are needed because I'm not sure what your schema set up is, and mainly so that other modmakers know these new tags are there and how to use them. As an example check out the Lion in UnitInfos, specifically the bolded code:
Spoiler :
Code:
		<UnitInfo>
			<Class>UNITCLASS_LION</Class>
			<Type>UNIT_LION</Type>
			<UniqueNames/>
			<Special>NONE</Special>
			<Capture>NONE</Capture>
			<Combat>NONE</Combat>
			<Domain>DOMAIN_LAND</Domain>
			<DefaultUnitAI>UNITAI_ANIMAL</DefaultUnitAI>
			<Invisible>NONE</Invisible>
			<SeeInvisible>NONE</SeeInvisible>
			<Description>TXT_KEY_UNIT_LION</Description>
			<Civilopedia>TXT_KEY_CONCEPT_ANIMALS_PEDIA</Civilopedia>
			<Strategy>TXT_KEY_UNIT_ANIMAL_STRATEGY</Strategy>
			<Advisor>NONE</Advisor>
			<bAnimal>1</bAnimal>
			<bFood>0</bFood>
			<bNoBadGoodies>0</bNoBadGoodies>
			<bOnlyDefensive>0</bOnlyDefensive>
			<bNoCapture>0</bNoCapture>
			<bQuickCombat>0</bQuickCombat>
			<bRivalTerritory>0</bRivalTerritory>
			<bMilitaryHappiness>0</bMilitaryHappiness>
			<bMilitarySupport>0</bMilitarySupport>
			<bMilitaryProduction>0</bMilitaryProduction>
			<bPillage>0</bPillage>
			<bSpy>0</bSpy>
			<bSabotage>0</bSabotage>
			<bDestroy>0</bDestroy>
			<bStealPlans>0</bStealPlans>
			<bInvestigate>0</bInvestigate>
			<bCounterSpy>0</bCounterSpy>
			<bFound>0</bFound>
			<bGoldenAge>0</bGoldenAge>
			<bInvisible>0</bInvisible>
			<bFirstStrikeImmune>0</bFirstStrikeImmune>
			<bNoDefensiveBonus>1</bNoDefensiveBonus>
			<bIgnoreBuildingDefense>0</bIgnoreBuildingDefense>
			<bCanMoveImpassable>0</bCanMoveImpassable>
			<bCanMoveAllTerrain>0</bCanMoveAllTerrain>
			<bFlatMovementCost>0</bFlatMovementCost>
			<bIgnoreTerrainCost>0</bIgnoreTerrainCost>
			<bNukeImmune>0</bNukeImmune>
			<bPrereqBonuses>0</bPrereqBonuses>
			<bPrereqReligion>0</bPrereqReligion>
			<bMechanized>0</bMechanized>
			<bSuicide>0</bSuicide>
			<bHiddenNationality>0</bHiddenNationality>
			<bAlwaysHostile>0</bAlwaysHostile>
			[B]<bInquisitor>0</bInquisitor>[/B]
			<UnitClassUpgrades/>
			<UnitClassTargets/>
			<UnitCombatTargets/>
			<UnitClassDefenders/>
			<UnitCombatDefenders/>
			<FlankingStrikes/>
			<UnitAIs>
				<UnitAI>
					<UnitAIType>UNITAI_ANIMAL</UnitAIType>
					<bUnitAI>1</bUnitAI>
				</UnitAI>
			</UnitAIs>
			<NotUnitAIs/>
			<Builds/>
			<ReligionSpreads/>
			<CorporationSpreads/>
			<GreatPeoples/>
			<Buildings/>
			<ForceBuildings/>
			[B]<ForceObsoleteTech>NONE</ForceObsoleteTech>
			<bStateReligion>0</bStateReligion>
			<PrereqGameOption>NONE</PrereqGameOption>
			<NotGameOption>NONE</NotGameOption>
			<PrereqOrCivics>
				<PrereqCivic>
					<CivicOption>NONE</CivicOption>
					<bPrereqCivic>1</bPrereqCivic>
				</PrereqCivic>
			</PrereqOrCivics>[/B]
			<HolyCity>NONE</HolyCity>
			<ReligionType>NONE</ReligionType>
			<StateReligion>NONE</StateReligion>
			<PrereqReligion>NONE</PrereqReligion>
			<PrereqCorporation>NONE</PrereqCorporation>
			<PrereqBuilding>NONE</PrereqBuilding>
			<PrereqTech>NONE</PrereqTech>
			<TechTypes/>
			<BonusType>NONE</BonusType>
			<PrereqBonuses/>
			<ProductionTraits/>
			<Flavors/>
			<iAIWeight>0</iAIWeight>
			<iCost>-1</iCost>
			<iHurryCostModifier>0</iHurryCostModifier>
			<iAdvancedStartCost>-1</iAdvancedStartCost>
			<iAdvancedStartCostIncrease>0</iAdvancedStartCostIncrease>
			<iMinAreaSize>-1</iMinAreaSize>
			<iMoves>1</iMoves>
			<bNoRevealMap>0</bNoRevealMap>
			<iAirRange>0</iAirRange>
			<iAirUnitCap>0</iAirUnitCap>
			<iDropRange>0</iDropRange>
			<iNukeRange>-1</iNukeRange>
			<iWorkRate>0</iWorkRate>
			<iBaseDiscover>0</iBaseDiscover>
			<iDiscoverMultiplier>0</iDiscoverMultiplier>
			<iBaseHurry>0</iBaseHurry>
			<iHurryMultiplier>0</iHurryMultiplier>
			<iBaseTrade>0</iBaseTrade>
			<iTradeMultiplier>0</iTradeMultiplier>
			<iGreatWorkCulture>0</iGreatWorkCulture>
			<iEspionagePoints>0</iEspionagePoints>
			<TerrainImpassables/>
			<FeatureImpassables/>
			<TerrainPassableTechs/>
			<FeaturePassableTechs/>
			<iCombat>2</iCombat>
			<iCombatLimit>100</iCombatLimit>
			<iAirCombat>0</iAirCombat>
			<iAirCombatLimit>0</iAirCombatLimit>
			<iXPValueAttack>4</iXPValueAttack>
			<iXPValueDefense>2</iXPValueDefense>
			<iFirstStrikes>0</iFirstStrikes>
			<iChanceFirstStrikes>0</iChanceFirstStrikes>
			<iInterceptionProbability>0</iInterceptionProbability>
			<iEvasionProbability>0</iEvasionProbability>
			<iWithdrawalProb>0</iWithdrawalProb>
			<iCollateralDamage>0</iCollateralDamage>
			<iCollateralDamageLimit>0</iCollateralDamageLimit>
			<iCollateralDamageMaxUnits>0</iCollateralDamageMaxUnits>
			<iCityAttack>0</iCityAttack>
			<iCityDefense>0</iCityDefense>
			<iAnimalCombat>0</iAnimalCombat>
			<iHillsAttack>0</iHillsAttack>
			<iHillsDefense>0</iHillsDefense>
			<TerrainNatives>
				<TerrainNative>
					<TerrainType>TERRAIN_GRASS</TerrainType>
					<bTerrainNative>1</bTerrainNative>
				</TerrainNative>
				<TerrainNative>
					<TerrainType>TERRAIN_PLAINS</TerrainType>
					<bTerrainNative>1</bTerrainNative>
				</TerrainNative>
				<TerrainNative>
					<TerrainType>TERRAIN_DESERT</TerrainType>
					<bTerrainNative>1</bTerrainNative>
				</TerrainNative>
			</TerrainNatives>
			<FeatureNatives/>
			<TerrainAttacks/>
			<TerrainDefenses/>
			<FeatureAttacks/>
			<FeatureDefenses/>
			<UnitClassAttackMods/>
			<UnitClassDefenseMods/>
			<UnitCombatMods/>
			<UnitCombatCollateralImmunes/>
			<DomainMods/>
			<BonusProductionModifiers/>
			<iBombRate>0</iBombRate>
			<iBombardRate>0</iBombardRate>
			<SpecialCargo>NONE</SpecialCargo>
			<DomainCargo>NONE</DomainCargo>
			<iCargo>0</iCargo>
			<iConscription>0</iConscription>
			<iCultureGarrison>0</iCultureGarrison>
			<iExtraCost>0</iExtraCost>
			<iAsset>1</iAsset>
			<iPower>1</iPower>
			<UnitMeshGroups>
				<iGroupSize>3</iGroupSize>
				<fMaxSpeed>1.75</fMaxSpeed>
				<fPadTime>1</fPadTime>
				<iMeleeWaveSize>3</iMeleeWaveSize>
				<iRangedWaveSize>0</iRangedWaveSize>
				<UnitMeshGroup>
					<iRequired>3</iRequired>
					<EarlyArtDefineTag>ART_DEF_UNIT_LION</EarlyArtDefineTag>
				</UnitMeshGroup>
			</UnitMeshGroups>
			<FormationType>FORMATION_TYPE_ANIMAL</FormationType>
			<HotKey/>
			<bAltDown>0</bAltDown>
			<bShiftDown>0</bShiftDown>
			<bCtrlDown>0</bCtrlDown>
			<iHotKeyPriority>0</iHotKeyPriority>
			<FreePromotions/>
			<LeaderPromotion>NONE</LeaderPromotion>
			<iLeaderExperience>0</iLeaderExperience>
		</UnitInfo>

Edit:
Found another slight oversight. Inquisitions caused an immediate decrease in Revolutionary sentiment when done, and this effect lasted a couple of turns. This effect has been lost in the update. Could you reapply this effect, it was one of the main uses of running an inquisition as it gave you immediate relief.
 
Hey Opera good to see you here :king:

I've also recently started on a cyberspace-themed total conversion mod using RevDCM as a base; a short while ago I went through the XMLs and weeded out most of the base Civ4 content, I'll attach a zipfile of this runnable RevDCM XML "skeleton" which should hopefully save time for anyone making a total conversion mod based on RevDCM.

As far as the tech hardcoding, I've removed basically all the Civ4 techs and it doesn't seem to cause problems; I'd guess the only issue is absence of the effect of Liberalism and Sci Method, which you could work around by making techs with those XML tags with different display text names appropriate for your use.

I'm actually thinking about disabling the Revolutions aspect for now until my mod is further developed but can't find how to disable it in the options or XML; is there a way to do this using RevDCM? (e.g. DuneWars is based on this modpack, but doesn't employ Revolutions.)

phungus420, re your upcoming 2.7 release, do you anticipate it should be relatively easy to merge the RevDCM XMLs I'm currently making onto this new modpack? It sounds like the only changed tags will be in buildings, which shouldn't be too bad.
Just to react now that I tested it:

It works fine; I mean, it loads without issues. Although I don't know why you kept the projects and the promotions but removed the improvements :p

Anyway, thanks for that :D
 
@Afforess

Your upload is missing the altered schema files to take into account the new tags. Also these tags need to be shown in the appropriate files (you added a couple tags, forgot which ones now, but all of them need to be shown in the first object in their proper files; and these tags need their schema file changes as well so that they are loaded). These are needed because I'm not sure what your schema set up is, and mainly so that other modmakers know these new tags are there and how to use them. As an example check out the Lion in UnitInfos, specifically the bolded code:
Spoiler :
Code:
		<UnitInfo>
			<Class>UNITCLASS_LION</Class>
			<Type>UNIT_LION</Type>
			<UniqueNames/>
			<Special>NONE</Special>
			<Capture>NONE</Capture>
			<Combat>NONE</Combat>
			<Domain>DOMAIN_LAND</Domain>
			<DefaultUnitAI>UNITAI_ANIMAL</DefaultUnitAI>
			<Invisible>NONE</Invisible>
			<SeeInvisible>NONE</SeeInvisible>
			<Description>TXT_KEY_UNIT_LION</Description>
			<Civilopedia>TXT_KEY_CONCEPT_ANIMALS_PEDIA</Civilopedia>
			<Strategy>TXT_KEY_UNIT_ANIMAL_STRATEGY</Strategy>
			<Advisor>NONE</Advisor>
			<bAnimal>1</bAnimal>
			<bFood>0</bFood>
			<bNoBadGoodies>0</bNoBadGoodies>
			<bOnlyDefensive>0</bOnlyDefensive>
			<bNoCapture>0</bNoCapture>
			<bQuickCombat>0</bQuickCombat>
			<bRivalTerritory>0</bRivalTerritory>
			<bMilitaryHappiness>0</bMilitaryHappiness>
			<bMilitarySupport>0</bMilitarySupport>
			<bMilitaryProduction>0</bMilitaryProduction>
			<bPillage>0</bPillage>
			<bSpy>0</bSpy>
			<bSabotage>0</bSabotage>
			<bDestroy>0</bDestroy>
			<bStealPlans>0</bStealPlans>
			<bInvestigate>0</bInvestigate>
			<bCounterSpy>0</bCounterSpy>
			<bFound>0</bFound>
			<bGoldenAge>0</bGoldenAge>
			<bInvisible>0</bInvisible>
			<bFirstStrikeImmune>0</bFirstStrikeImmune>
			<bNoDefensiveBonus>1</bNoDefensiveBonus>
			<bIgnoreBuildingDefense>0</bIgnoreBuildingDefense>
			<bCanMoveImpassable>0</bCanMoveImpassable>
			<bCanMoveAllTerrain>0</bCanMoveAllTerrain>
			<bFlatMovementCost>0</bFlatMovementCost>
			<bIgnoreTerrainCost>0</bIgnoreTerrainCost>
			<bNukeImmune>0</bNukeImmune>
			<bPrereqBonuses>0</bPrereqBonuses>
			<bPrereqReligion>0</bPrereqReligion>
			<bMechanized>0</bMechanized>
			<bSuicide>0</bSuicide>
			<bHiddenNationality>0</bHiddenNationality>
			<bAlwaysHostile>0</bAlwaysHostile>
			[B]<bInquisitor>0</bInquisitor>[/B]
			<UnitClassUpgrades/>
			<UnitClassTargets/>
			<UnitCombatTargets/>
			<UnitClassDefenders/>
			<UnitCombatDefenders/>
			<FlankingStrikes/>
			<UnitAIs>
				<UnitAI>
					<UnitAIType>UNITAI_ANIMAL</UnitAIType>
					<bUnitAI>1</bUnitAI>
				</UnitAI>
			</UnitAIs>
			<NotUnitAIs/>
			<Builds/>
			<ReligionSpreads/>
			<CorporationSpreads/>
			<GreatPeoples/>
			<Buildings/>
			<ForceBuildings/>
			[B]<ForceObsoleteTech>NONE</ForceObsoleteTech>
			<bStateReligion>0</bStateReligion>
			<PrereqGameOption>NONE</PrereqGameOption>
			<NotGameOption>NONE</NotGameOption>
			<PrereqOrCivics>
				<PrereqCivic>
					<CivicOption>NONE</CivicOption>
					<bPrereqCivic>1</bPrereqCivic>
				</PrereqCivic>
			</PrereqOrCivics>[/B]
			<HolyCity>NONE</HolyCity>
			<ReligionType>NONE</ReligionType>
			<StateReligion>NONE</StateReligion>
			<PrereqReligion>NONE</PrereqReligion>
			<PrereqCorporation>NONE</PrereqCorporation>
			<PrereqBuilding>NONE</PrereqBuilding>
			<PrereqTech>NONE</PrereqTech>
			<TechTypes/>
			<BonusType>NONE</BonusType>
			<PrereqBonuses/>
			<ProductionTraits/>
			<Flavors/>
			<iAIWeight>0</iAIWeight>
			<iCost>-1</iCost>
			<iHurryCostModifier>0</iHurryCostModifier>
			<iAdvancedStartCost>-1</iAdvancedStartCost>
			<iAdvancedStartCostIncrease>0</iAdvancedStartCostIncrease>
			<iMinAreaSize>-1</iMinAreaSize>
			<iMoves>1</iMoves>
			<bNoRevealMap>0</bNoRevealMap>
			<iAirRange>0</iAirRange>
			<iAirUnitCap>0</iAirUnitCap>
			<iDropRange>0</iDropRange>
			<iNukeRange>-1</iNukeRange>
			<iWorkRate>0</iWorkRate>
			<iBaseDiscover>0</iBaseDiscover>
			<iDiscoverMultiplier>0</iDiscoverMultiplier>
			<iBaseHurry>0</iBaseHurry>
			<iHurryMultiplier>0</iHurryMultiplier>
			<iBaseTrade>0</iBaseTrade>
			<iTradeMultiplier>0</iTradeMultiplier>
			<iGreatWorkCulture>0</iGreatWorkCulture>
			<iEspionagePoints>0</iEspionagePoints>
			<TerrainImpassables/>
			<FeatureImpassables/>
			<TerrainPassableTechs/>
			<FeaturePassableTechs/>
			<iCombat>2</iCombat>
			<iCombatLimit>100</iCombatLimit>
			<iAirCombat>0</iAirCombat>
			<iAirCombatLimit>0</iAirCombatLimit>
			<iXPValueAttack>4</iXPValueAttack>
			<iXPValueDefense>2</iXPValueDefense>
			<iFirstStrikes>0</iFirstStrikes>
			<iChanceFirstStrikes>0</iChanceFirstStrikes>
			<iInterceptionProbability>0</iInterceptionProbability>
			<iEvasionProbability>0</iEvasionProbability>
			<iWithdrawalProb>0</iWithdrawalProb>
			<iCollateralDamage>0</iCollateralDamage>
			<iCollateralDamageLimit>0</iCollateralDamageLimit>
			<iCollateralDamageMaxUnits>0</iCollateralDamageMaxUnits>
			<iCityAttack>0</iCityAttack>
			<iCityDefense>0</iCityDefense>
			<iAnimalCombat>0</iAnimalCombat>
			<iHillsAttack>0</iHillsAttack>
			<iHillsDefense>0</iHillsDefense>
			<TerrainNatives>
				<TerrainNative>
					<TerrainType>TERRAIN_GRASS</TerrainType>
					<bTerrainNative>1</bTerrainNative>
				</TerrainNative>
				<TerrainNative>
					<TerrainType>TERRAIN_PLAINS</TerrainType>
					<bTerrainNative>1</bTerrainNative>
				</TerrainNative>
				<TerrainNative>
					<TerrainType>TERRAIN_DESERT</TerrainType>
					<bTerrainNative>1</bTerrainNative>
				</TerrainNative>
			</TerrainNatives>
			<FeatureNatives/>
			<TerrainAttacks/>
			<TerrainDefenses/>
			<FeatureAttacks/>
			<FeatureDefenses/>
			<UnitClassAttackMods/>
			<UnitClassDefenseMods/>
			<UnitCombatMods/>
			<UnitCombatCollateralImmunes/>
			<DomainMods/>
			<BonusProductionModifiers/>
			<iBombRate>0</iBombRate>
			<iBombardRate>0</iBombardRate>
			<SpecialCargo>NONE</SpecialCargo>
			<DomainCargo>NONE</DomainCargo>
			<iCargo>0</iCargo>
			<iConscription>0</iConscription>
			<iCultureGarrison>0</iCultureGarrison>
			<iExtraCost>0</iExtraCost>
			<iAsset>1</iAsset>
			<iPower>1</iPower>
			<UnitMeshGroups>
				<iGroupSize>3</iGroupSize>
				<fMaxSpeed>1.75</fMaxSpeed>
				<fPadTime>1</fPadTime>
				<iMeleeWaveSize>3</iMeleeWaveSize>
				<iRangedWaveSize>0</iRangedWaveSize>
				<UnitMeshGroup>
					<iRequired>3</iRequired>
					<EarlyArtDefineTag>ART_DEF_UNIT_LION</EarlyArtDefineTag>
				</UnitMeshGroup>
			</UnitMeshGroups>
			<FormationType>FORMATION_TYPE_ANIMAL</FormationType>
			<HotKey/>
			<bAltDown>0</bAltDown>
			<bShiftDown>0</bShiftDown>
			<bCtrlDown>0</bCtrlDown>
			<iHotKeyPriority>0</iHotKeyPriority>
			<FreePromotions/>
			<LeaderPromotion>NONE</LeaderPromotion>
			<iLeaderExperience>0</iLeaderExperience>
		</UnitInfo>

Edit:
Found another slight oversight. Inquisitions caused an immediate decrease in Revolutionary sentiment when done, and this effect lasted a couple of turns. This effect has been lost in the update. Could you reapply this effect, it was one of the main uses of running an inquisition as it gave you immediate relief.

Sorry, I forgot about the schema stuff, I'll upload a new unitInfos and schema... and terrain and feature stuff too.

As for the other thing, Inquisitions do decrease revolutionary setiment, see here:

Code:
//Increase Temp Anger
			pCity->changeHurryAngerTimer(pCity->flatHurryAngerLength());
			if (GC.getGameINLINE().isOption(GAMEOPTION_REVOLUTION))
			{
				//Avoid setting the Rev Index below 0...
				pCity->changeLocalRevIndex(-std::min(pCity->getRevolutionIndex(), iCompensationGold));
			}

Failure increases revolution sentiment though.
 
Ahh, then the problem is it doesn't display. It used to show green strip indicating the drop in the RevIdx bar, this no longer shows. I'm pretty sure that requires python to re-implement as most of the interface is done in python. Also I could have sworn that drop in RevIdx from an inquisition lasted a couple turns... though I could be mistaken here, it just always seemed like it.
 
Ahh, then the problem is it doesn't display. It used to show green strip indicating the drop in the RevIdx bar, this no longer shows. I'm pretty sure that requires python to re-implement as most of the interface is done in python. Also I could have sworn that drop in RevIdx from an inquisition lasted a couple turns... though I could be mistaken here, it just always seemed like it.

Yeah, that is the bad part about most of Revolution's being in Python. You will have exactly the same problem with a Building RevIndexModifier tag, I have it in my mod, the effects never appear on the hover bar, but do happen.

If it REALLY bothers you, you could add a new variable and functions in CvCity just for the inquisition effect, expose them to python so it shows up and call them for the bar; but that's a TON of work and will increase memory usage just for aesthetics...

The only other alternative is no better; move all the Revolution code to SDK. There's no way you can get me to do that, that code is like 10x as long as the Inquisition stuff, and the Inquisitions still ate up a good 10 hours of my weekend. :p
(But I was watching British sitcoms while coding, so I was rather slow...)
 
(re XML skeleton for conversion mods)
Just to react now that I tested it:
It works fine; I mean, it loads without issues.
It seems to work fine to me, but if Revolutions uses specific Civ4 unit/tech tagnames like TECH_LIBERALISM somewhere in the DLL or python, I'm thinking there could still potentially be problems during a situation (eg rebellion) when it calls one of those functions.

I don't know why you kept the projects and the promotions but removed the improvements
Sheer laziness and negligence! Also, thought I could reuse some of the promotions. I was for some reason worried about potential crashes from any python/SDK calls for spaceship project tags, but I think the projects can probably just be removed too.

Anyway, thanks for that.
You're welcome! I'm glad someone else is making a new RevDCM conversion, keep me posted about any issues you run into.
 
@Afforess, I don't mean to rush you, but I'd really like to get the current build I have in the SVN, but am waiting on the schema files and infos files. I'm pretty sure you have these handy, or could put them up in a couple minutes since I assume these are tags you already have working in AND. Just hate having a 99% built version hanging around in limbo because of a minor thing; so just am posting a little reminder.
 
If it REALLY bothers you, you could add a new variable and functions in CvCity just for the inquisition effect, expose them to python so it shows up and call them for the bar; but that's a TON of work and will increase memory usage just for aesthetics...

Yeah, it does really bother me, but it's something I can work on over the next couple days. As far as exposing to Python, can I just declare a new variable in CvCity.h and expose that variable to python through CyCity, right? I don't see any reason I would need to construct a new variable in CvInfos for this, please correct me if I'm wrong though.
 
Yeah, it does really bother me, but it's something I can work on over the next couple days. As far as exposing to Python, can I just declare a new variable in CvCity.h and expose that variable to python through CyCity, right? I don't see any reason I would need to construct a new variable in CvInfos for this, please correct me if I'm wrong though.

Yeah, just a new variable in CvCity, with a get and change function. It should be very similar to the m_iLocalRevIndex variable.

Anyway, here are the schema's.

View attachment RevolutionDCM Schemas.rar
 
Edit:
Nevermind, figured it out. Actually the bug module stuff is pretty usefull.
Yes, there's lot of useful stuff :)

Forgot to say in my last post: Every game option that players should be able to change with ease should be in game option list or in BUG options. Hardly any mod user know how to change game defines from GlobalDefinesAlt or from ini files so we'd need to give them ability to change those settings in-game. :) Though, on some mod components it's difficult to decide what they should be able to tweak and what not... and the multiplayer mode is another matter...
 
I think the only inquisition thing that needs to be editable from the BUG Panel is the respawning of holy cities; other than that, everything else should only be useful for modders.
 
I think the only inquisition thing that needs to be editable from the BUG Panel is the respawning of holy cities; other than that, everything else should only be useful for modders.
How about Limited religion option? Is it now in the SDK?
 
@Afforess, 2 quick questions:

1)I've been thinking about it, and since we now have a bStateReligion tag in UnitInfos, and the inquisition tags in CivicInfos I think we could allow inquisitions for civs that are running no state religion. I certainly have no use for it, but I imagine there are mods out there that use the RevDCM core that have tried to add in anti religious regime type civics, like the Soviets had, and China has. I see the functionality of this working by adding in a else clause wherever there is a conditional (pPlayer.getStateReligion() != NO_RELIGION) check, where the function would add a secondary clause that would allow inquisitions if normal inquisition conditions are met, and the Inquisitor unit does not have the bStateReligion set to true. Also this change would need to be reflected in the main function that defines how religions are removed from the city. Could you point me toward where the best places to put in such code would be? Finally some AI logic so the AI could use this ability would need to be written, would you be willing to write the code for such logic?

2)I plan on adding in a NotPrereqOrCivics array in UnitInfos. Do you already have such a tag written, if so I see no need to reinvent the wheel, so please upload it. If not, that's not big deal, it should be pretty trivial to add it in, it's pretty much a clone of the PrereqOrCivics tag anyway, just some minor logic changes to be made to CvPlayer, CvGameTextManager, and the python file that controls the SevoPedia unit display. Nothing that I'd have trouble with writing myself, but it's something I figure you may already have done anyway.
 
@Afforess, 2 quick questions:

1)I've been thinking about it, and since we now have a bStateReligion tag in UnitInfos, and the inquisition tags in CivicInfos I think we could allow inquisitions for civs that are running no state religion. I certainly have no use for it, but I imagine there are mods out there that use the RevDCM core that have tried to add in anti religious regime type civics, like the Soviets had, and China has. I see the functionality of this working by adding in a else clause wherever there is a conditional (pPlayer.getStateReligion() != NO_RELIGION) check, where the function would add a secondary clause that would allow inquisitions if normal inquisition conditions are met, and the Inquisitor unit does not have the bStateReligion set to true. Also this change would need to be reflected in the main function that defines how religions are removed from the city. Could you point me toward where the best places to put in such code would be? Finally some AI logic so the AI could use this ability would need to be written, would you be willing to write the code for such logic?

Hmm, it would not be a simple addition, I'd need to update a lot of the code. I can probably do it this weekend, if that's soon enough for you.

2)I plan on adding in a NotPrereqOrCivics array in UnitInfos. Do you already have such a tag written, if so I see no need to reinvent the wheel, so please upload it. If not, that's not big deal, it should be pretty trivial to add it in, it's pretty much a clone of the PrereqOrCivics tag anyway, just some minor logic changes to be made to CvPlayer, CvGameTextManager, and the python file that controls the SevoPedia unit display. Nothing that I'd have trouble with writing myself, but it's something I figure you may already have done anyway.

Wouldn't it make sense to just add a PrereqAndCivics array? Then, if you wanted a unit to NOT be available with a certain civic, you could use a combination of PrereqOr's and PrereqAnd's. No, I never added one for myself, but they are pretty similar.
 
Hmm, it would not be a simple addition, I'd need to update a lot of the code. I can probably do it this weekend, if that's soon enough for you.
I'm confident I can write the functionality code. What I'm asking is where I should look to do this, as you wrote it, I'm sure you have a pretty good idea where it would be best to add the functionality to. I don't know diddly about the AI though, so would need you to do this. I'm hoping you are interested though, as I'm pretty much going to add this functionality for RoM; it's the only mod I imagine that would currently have a use for it.

Wouldn't it make sense to just add a PrereqAndCivics array? Then, if you wanted a unit to NOT be available with a certain civic, you could use a combination of PrereqOr's and PrereqAnd's.
No, they are different things. What if I want a unit to be available Only if a civ is running Police State or Theocracy, but not to be available if the civ is running Free Speech, Free Religion, or Free Trade. I'm pretty sure I need a Not civic array to set that up. Again, I have no use for it, but I imagine one of the big mods that use RevDCM could put such a tag to good use, and I think it will be pretty trivial to add.
 
I'm confident I can write the functionality code. What I'm asking is where I should look to do this, as you wrote it, I'm sure you have a pretty good idea where it would be best to add the functionality to. I don't know diddly about the AI though, so would need you to do this. I'm hoping you are interested though, as I'm pretty much going to add this functionality for RoM; it's the only mod I imagine that would currently have a use for it.

Well, you'd have to change all the if (getStateReligion() == NO_RELIGION) checks, but the tricky part is that you can't just remove those checks, because trying to see if isHasReligion(NO_RELIGION) will cause crazy things to happen. It would be a substantial change, Inquisitions assumes you have a state religion, without one, a lot of the logic is flawed.

That's why I said I'd need a weekend to do it, it's not a simple change.

No, they are different things. What if I want a unit to be available Only if a civ is running Police State or Theocracy, but not to be available if the civ is running Free Speech, Free Religion, or Free Trade. I'm pretty sure I need a Not civic array to set that up. Again, I have no use for it, but I imagine one of the big mods that use RevDCM could put such a tag to good use, and I think it will be pretty trivial to add.

Okay, I see what you mean. Should be fairly straightforward.
 
I found a possible cause of rare CTD's, from the Inquisition code. The fix is easy.

In CvCity* CvPlayerAI::getInquisitionRevoltCity(CvUnit *pUnit, bool bNoUnit, int iRevIndexThreshold, int iTrendThreshold)

Change
Code:
CvCity* pBestCity;
to
Code:
CvCity* pBestCity = NULL;
 
Guys, the SVN still doesn't have this above post with my 1 line alteration in it. Leaving it out WILL cause CTD's.
 
Top Bottom