For modders & mergers

Yes, some documentation as to what the added XML tags or schema items would be great. Otherwise, I guess it's trial and error.
 
Hello,

I have been trying to mod revolutions for some time, and have added several new civilizations to the game. Unfortunately, when I play, I get errors like the following:


Uploaded with ImageShack.us
and new nations no longer appear as a result of revolutions. Old nations can still reappear, cities can still revolt and join neighboring civs, normal BTS's colony liberation still works and I have seen at least one case where a vassal voluntarily gives up its independence to their master. However, new civs do not form, and there are very few small revolts, none once the second error shows up (much later than the first).

This is in a scenario, and none of my new civs start on the board, though there is a minor civilization there at start, which may be the cause of the error. Help?
 
I may be overly optimistic, but I think that I may have solved the second error on my own. Still getting the first one though.
 
Actually, never mind. I may have found a fix on my own.
 
I develop my own mod based on RoM 2.91. Сhangelog says that RoM uses RevDCM 2.7

Where can i find sources of CvGameCoreDLL.dll used in this version of RevDCM?
 
Yes, some documentation as to what the added XML tags or schema items would be great. Otherwise, I guess it's trial and error.


---------------------------------------------
Added XML tags:

In general you can easily reference the added XML tags inclued in RevDCM by checking the first item in the list.
For instance if you examine the Unit Lion (the first unit in UnitInfos), you will see this:
<!-- RevDCM Inquisitions -->
<bInquisitor>0</bInquisitor>
<!-- RevDCM Inquisitions -->
Showing where in UnitInfos the added tag is, and how to use it (the name should, in general be self explanitory).
So reference the first object in the XML to see the structure of the tags added by RevDCM, which are listed below:

BuildingInfos:
PrereqGameOption -If defined the building will require the spedified Game Option to be built
NotGameOption -If defined the building may not be constructed if the specified game option has been selected
iUnitUpgradePriceModifier -Spefies a % modifier to UnitUpgrade gold cost (Leonardo's Workshop)
iRevIdxLocal -RevIDX penalty applied locally to the city in which the building is constructed
iRevIdxNational -CivStability penalty applied nationally; negatively effect RevIdx through Empire stability
iRevIdxDistanceModifier -Modifier applied to city distance local RevIDX penalty (use negative number to reduce, positive to increase; see CivicInfos)
iDCMAirbombMission -Allows and sets odds of air bombing building (should be applied to all new buildings you wish to be bombable)

TraitInfos:
iRevIdxLocal -RevIDX penalty applied locally in each city
iRevIdxNational -CivStability penalty applied nationally; negatively effect RevIdx through Empire stability
iRevIdxDistanceModifier -Modifier applied to city distance local RevIDX penalty (use negative number to reduce, positive to increase; see CivicInfos)
iRevIdxHolyCityGood -RevIDX bonus for controlling state religion holy city
iRevIdxHolyCityBad -RevIDX penalty applied if heathens control yoru state religion holy city
fRevIdxNationalityMod -RevIDX multiplier applied to "nationality" local revolution effects
fRevIdxBadReligionMod -RevIDX local penalty for having non state religions
fRevIdxGoodReligionMod -RevIDX local bonus for city having state religion
bNonStateReligionCommerce -If enabled non state religions still apply culture
bUpgradeAnywhere -If enabled units can be upgraded outside national borders

CivicInfos:
bUpgradeAnywhere -Allows units of civ running this civic to upgrade units outside cultural borders
bAllowInquisitions -Allows uits defined as inquisitors to run the inquisitions mission
bDisallowInquisitions -Dissallows conducting the inquisitions mission (overides all other considerations)
ed locally in each city
iRevIdxNational -CivStability penalty applied nationally; negatively effect RevIdx through Empire stability
iRevIdxDistanceModifier -Modifier applied to city distance local RevIDX penalty (use negative number to reduce, positive to increase; see CivicInfos)
iRevIdxHolyCityGood -RevIDX bonus for controlling state religion holy city
iRevIdxHolyCityBad -RevIDX penalty applied if heathens control yoru state religion holy city
iRevIdxSwitchTo -Civ stability effect (applied for a coule of turns) for switching into civic
fRevIdxNationalityMod -RevIDX multiplier applied to "nationality" local revolution effects
fRevIdxBadReligionMod -RevIDX local penalty for having non state religions
fRevIdxGoodReligionMod -RevIDX local bonus for city having state religion
fRevViolentMod -Multiplier applied to insurgency effects (increases strength of rebellions)
iRevReligiousFreedom -Religious freedom, effects Revolutions calculations
iRevLaborFreedom -Labor freedom, effects Revolutions calculations
iRevEnvironmentalProtection -Environmental protections, effects Revolutions calculations
iRevDemocracyLevel -Political protections, effects Revolutions calculations
iRevDemocracyLevel -Is communist, effects Revolutions calculations
iRevDemocracyLevel -Is free speech, effects Revolutions calculations
bCanDoElection -Allows elections to be done in luie of default Reject/Accept options in Revolutions pop up

EraInfos:
iTechCostModifier -Applies general modifier to TechCost by Era

TechInfos:
bDCMAirBombTech1 -If enabled DCM air bombing chances increased
bDCMAirBombTech2 -If enabled DCM air bombing chances increased

FeatureInfos:
iWarmingDefense -gives defense against global warming
GrowthSound -Sets a growth sound

UnitInfos:
bInquisitor -If set the unit may conduct the Inquistion mission
MaxStartEra -If set the unit can not be trained on starts later then defined era
ForceObsoleteTech -If set the unit can not be trained once the defined tech has been researched
bStateReligion -If set the unit may only be trained in cities with the state religion
PrereqGameOption -If set the unit may only be trained if the defined game option has been selected
NotGameOption -If set the unit may not be trained if the defined game option has been selected
PrereqOrCivics -(array) If set one of the defined civics must be run by the player to train the unit
PrereqBuildingClasses -(array) If set the unit may only be trained if the defined buildingclasses have been built in the city
ForceObsoleteUnitClasses -(array) If Any unit set in the array is trainable in the city, the unit may not be trained
iDCMBombRange -If set the unit may bombard tiles up to the range defined
iDCMBombAccuracy -Accuracy of DCM bombarding
bDCMAirBomb1 -Allows fighter support
bDCMAirBomb2 -Allows bombing of buildings
bDCMAirBomb3 -Allows bombing of factories
bDCMAirBomb4 -Allows bombing of port facilities to attach ships directly in cities
bDCMAirBomb5 -Allows bombing (destroying hammers) invested in city's current production
bDCMFighterEngage -Allows unit to engage enemy air units directly


------------------------------------
API

In general the python API for exposed functions follows the same conventions as standard Civ4.
So for instance to get the UnitUpgradePrice modifier for a building you can use:
kBuilding.getUnitUpgradePriceModifie() to pull the value for a building from BuildingInfos
and you can see how this is effecting a player with:
pPlayer.getUnitUpgradePriceModifie()

There may be some slight differences as well. For instance if you call getRevIdxNational(),
on a specified object that applies an effect, such as a building, civic, or trait,
the call will return the value for that specific object, defined in that object's infos;
however if you pull it from a specified player using pPlayer.getRevIdxNational()
the function will return the cumultive effects of all of these currently being applied to the specified player.

y derivative functions are exposed to python (if you find one that is not, let us know and we'll expose it)


There are a few noteworthy non XML api functions added to the SDK, most have been exposed to python:

CvPlayer & CyPlayer:
isInquisitionConditions() -boolean, returns true if inquisition conditions are valid for a player, false if not
isHasHolyCity() -boolean, returns true if a Player has a holy city
isHasStateReligionHolyCity() -boolean, returns true if the player has their state religion holy city
isHasStateReligionShrine() -boolean, returns true if a player has their state religion shrine
canFoundReligion() -boolean, returns true if the player can found a religion (used mainly for limited Religions, but will work if this option is off, it'll just always return true)
getBestUnitType(UnitAITypes eUnitAI) - Returns the best UnitType a player can train for a given UnitAIType
isHumanDisabled() - Returns true if A human player is being Automated


CvGame & CyGame:
countNumReligionsFounded() -integer, returns the number of religions that have been founded in a game
countNumReligionTechsDiscovered() -integer, returns the number of Techs that have been discovered which can found a religion (should only differ from above function in Limited Religions, but will work if this option is off, it'll just always return true)
getBestUnitType(UnitAITypes eUnitAI) - Returns the best UnitType a player can train for a given UnitAIType
isHumanDisabled() - Returns true if A human player is being Automated


CvGame & CyGame:
countNumReligionsFounded() -integer, returns the number of religions that have been founded in a game
countNumReligionTechsDiscovered() -integer, returns the number of Techs that have been discovered which can found a religion (should only differ from above function in Limited Religions games)
isTechCanFoundReligion(TechTypes eIndex) -function returns true if the passed tech can still found a religion (similar to isReligionSlotTaken, but checked against the tech instead of a religion)
getHighestEra() - Returns the EraType of the most advanced player (instead of the average era as returned by getCurrentEra())
isGameStart() - Returns true if all civs are still in the same era as the start era
getAIAutoPlay(PlayerTypes iPlayer) - Returns number if turns left for Automation of a human player (0 for not being automated)
setAIAutoPlay(PlayerTypes iPlayer, int iNewValue) - Allow for setting the number of turns a human player will be automated for (0 for stop automation)
isForcedAIAutoPlay(PlayerTypes iPlayer) - Returns true if Automation is forced
getForcedAIAutoPlay(PlayerTypes iPlayer) - Returns number of turns Automation is forced for (0 for no longer forced)
setForcedAIAutoPlay(PlayerTypes iPlayer, int iNewValue, bool bForced) - Sets number of turns Automation is forced for (setting bForced to false makes automation unforced, setting to 0 turns off automation), will override AIAutoplay
 
Top Bottom