Civilization 4 Community Core Project

This project is aiming to improve player's gaming experience of Civilization IV game, the most popular PC game for civilization building si...


Do not refresh or leave this page!

File Description

This project is aiming to improve player's gaming experience of Civilization IV game, the most popular PC game for civilization building simulation by Firaxis Games. Our objectives are improving modability, the AI, the UI, and the quality of the game. We are creating "base platform" or "universal mod" that variety of other user mod can be built upon it, utilizing Civ4 game DLL SDK released by Firaxis.

Read More

Civilization 4 Community Core Project

Version v1.61.0001a
Release Date: 6/11/06
Version Compatibilty: Civ4 1.61


"I, will release the source code to any and all C++ changes I make in the SDK to facilitate the merging of my code into any other Civ4 related C++ code. I further pledge to clearly indicate changes made to the released SDK files in my releases."


The Great Apple
The Lopez
Spoiled Fruit
Lord Olleus


We of the CCP are well aware that modifiying the games sourcecode is hard (oh brother can it be frustrating) and unlike XML or Pyton changes made by different people can not be easily combined (easy being a relative term ofcorse as I am shure Sevo will atest too). Thus we face massive fragmentation if the changes are not consolidated under one Dll. The CCP was started to adress this issue, we are dedicated to combining and compiling as many good SDK mods together. Our primary areas of interest are Improving Python calls, enabling new features in XML, Enancing the AI, Improving the UI and making the above easily configurable for the User. In this spirit everything in the CCP defaults to retaing the vannila Civ gameplay behavior, you may see some minor tweeks that dont effect gameplay


If your interested in joining our project you will want to access our Forum. Go to "Group Management" in the UserCP (, and apply to join the "Civ4 Community Enchancement Project" group. Then The Great Apple will aprove you, if he is online and dosn't do it in a timley mannor then send him a PM. TThe forum is ware we discuss and debate the CCP mods and work on merging. If you cant code but have an idea you can post on the main C&C forums, we are always reading it and pick up many ideas their. If you have a mod and would like to see it included in the CCP you will need get it in a stable working state with control calls that can be used to turn the feature on and off at runtime, and use good commenting on all changes. Help is avalible but do not expect other to debug your code for you or hold your hand. If you feel your up to it TGA can make you a developer on the SF project which will enable you to commit changes directly to the CVS. Most people will probably need to get a developer to sponsor their work and Commit it for them, the more hastle free you make this for the developer the better your chances. If the Mod is small you could get away with modifying the Virgin SDK files and submiting these changed files, the developer would then use a diff tool such as WinMerge or your comment tags to find your changes and incorporate them. But if your mod is going to be more then just a few lines on a handfull of files you should checkout the latest stable version of the project from SourceForge and modify thouse files instead this will make it feasable to include. 90% of all the moding so far has been in a handfull of files CvPlayer/CvUnit/CvCity/CvInfo and they get crowded with changes very quickly. Visit SF for guides on how to check out, as I said earlier I recomend TortiseCVS.


The file Provided contains an Asset folder which contains the DLL and other files required to run the CCP, the simplest way to use it is to delete the contents of your CustomAssets folder then drop all of the contents in the downloaded folder into CustomAssets. You will see that their are new XML schema files and new Python utilities that interact with the DLL to enable new features.
WARNING: These additional files MUST be included with the DLL!! Failure to include them may result in crashing or other irregular Behavior. When you download a Mods which requires the CCP files it might not include the CCP itself (Mod makers should make this clear) in which case you should place the CCP in your CustomAssets folder and invoke the Mod. If a Mod includes the CCP no special action is required other then making shure your Custom Assets is clear.


Due to the addition of new data members to the game its not yet possible to load older games.
WARNING: When using the CCP an attempting to load a game created without the CCP will result in a crash to desktop. Only games started with the CCP running will be loadable under the CCP. If you want to play an old game make shure your Custom Assets is clear and your current mod contains no Dll. For this reason it is recomended that Mod makers include the CCP within their Mod folders so CustomAssets can be left clear. We hope to have this issue resolved in the next version with full back loading capability of original Firaxis games and between version of the CCP. It will never be possible for unmodified Civ to load a game saved under a version of the CCP.


About the CVS folders, these folders allow you to use the TortiseCVS program to get easy access a portion of this projects SourceForge repository (you can also visit the site at If your like getting updates or helping us debug unstable versions you can get this cool little program at (got their for their usage guides as well) Note that you just get an update of the DLL/XML/Python, if you want to look at and Contribute to the SourceCode we have a sepearte download for that and Encourage you to join us at our private CivFanatics Forum. and use it to checkout the latest versionm, if not the Folders shouldn't cause you any problems and can be ignored.


For more details of the following, please look at the changelog included with the file.

1) AI:
Nothing - Further more the AI is oblivious of all of the other changes though they may benifit from them they cant "see" the benifit and will not value them any more because of the added effects.

2) UI:

3) Performance:
- Camera Zooms in on all combats not just Offensive ones (Roger Bacon)

4) Modding:
Note: None of these will have any impact on the normal game experience, however hopefully they will aid modders in improving the game.

- Enhanced game utils. The following checks have been incorperated into python to better control the game (12monkeys):

called from CvCity.cpp
canCityWorkOnPlot -> if you want to prevent a certain plot to be workable
canCityHurry -> to prevent hurry production in a city
canCityConscript() -> to prevent conscripting in a city
calculateCityDistanceMaintenance() -> to change the distance maintenance for a certain city. Eg. by a special building.
calculateCityNumCitiesMaintenance() -> to change the num cities maintenance for a certain city. Eg. by a special building.
spreadReligionToCity -> to take action if a new religion is spread to y city

called from CvUnit.cpp
doUnitCommand() -> be informed about all unit commands and take action if necessary
canUnitMoveInto() -> do restrict/allow a plot for unit movement
canUnitFortify -> Eg. for fantasy mods a "restless" cast
canUnitHeal -> to prevent a unit from healing (eg. for fantasy mods)
canUnitNukeAt -> to allow to nuke a friend or yourself (return TRUE to be able to nuke yourself!)
canUnitSpread() -> eg. to decide if a missionary can spread a religion
unitUpgradePrice -> to change upgrade price for certain units (due to a special building in a city?)
isUnitInvisible -> changes a units invisiblity (maybe for TheLopez' sniper mod)
canUnitJoinGroup -> to define if a unit can join a group. Eg. for limited group sizes.

called from CvPlayer.cpp
canPlayerContact -> influence diplomatic abilities of a civ
canPlayerTradeItem -> influence in what players can trade.
canPlayerTradeNetworkWith -> to temporarily interrupt trade networks
canPlayerRazeCity -> have influence if a city can be razed or not
razeCity -> be informed/take action when a city is razed
canPlayerFoundCity -> influence where a city can be found
canPlayerConvert -> have influence on the religion conversion of a certain player
playerFoundReligion -> to prevent a religion being founded

called from CvSelectionGroup.cpp
canGroupStartMission -> decide what group mission is allowed or not
groupStartMission -> be infromed when a group starts a mission

- New XML tags. Won't cause errors if not included. Full interface & 'pedia support, check the new Schema files to see ware the tags need to be placed, putting them in the wrong spot will generate XML load errors.

By Roger Bacon

<bFlying> Allows a Domain Land unit to move over water, units still obey <terrainImpassible> tags and need new <UnitAI> to function properly

Python Exports
bool CyUnit::isFlying()
void CyUnit::setFlying(bool Newvalue)

By (Impaler[WRG])

<iHappiness> - Adds set happiness in all cites. Negative values supported.
<iDiplomacy> - Any leader with Diplomacy altering traits experiences a bonus/penalty to all Diplomatic relations
<iSpecialists> - Any leader with the trait will get the perscribed number of free specialists in all cities
<iVoteModifier> - The number of Votes a player recives in the UN is multiplied by the modifer.

<LocalSpecialistYieldChange> - Increases the yield of the set specialist for this city only
<LocalSpecialistCommerceChange> - As above but for commerce
<FreeWithTech> - gives the Building for free in all cities when the tech is discovered

Python Exports:
int CyCity::getExtraSpecialistCommerceOfType(int Commerce, int Specialist)
void CyCity::changeExtraSpecialistCommerceOfType(int Commerce, int Specialist, int Change)
void CyCity::changeExtraSpecialistYieldOfType(int Yield, int Specialist, int Change)

Pyton Alterations:
behavior of CyCity::getExtraSpecilistYieldOfType(int Yield, int Specialist)
changed to reflect local bonuses rather then just piping up to the player, and getting an all cities
modifier, to get a Bonus attactched to the player as the result of a wonder or Tech use the
new CyPlayer::getSpecilistTypeExtraYield call described below

<SpecialistYieldChange> - Allows specialists of a certain type to increase their yield by the set amount on discovering the tech
<SpecialistCommerceChange> - As above but for commerce

Python Exports:
int CvTechInfo::getSpecialistYieldChange(int specialist, int yield)
int CvTechInfo::getSpecialistCommerceChange(int specialist, int Commerce)
int CvPlayer::getSpecialistTypeExtraYield(int specialist, int yield)
int CvPlayer::getSpecialistTypeExtraCommerce(int specialist, int Commerce)
void CvPlayer::changeSpecialistExtraYield(int specialist, int yield)
void CvPlayer::changeSpecialistExtraCommerce(int Specialist, int Commerce)

Civ4 ImprovmentInfos.xml
<ImprovmentMakesValids> allow an improvment to require another improvment creating in essense an upgrade if this is the only thing validating the Improvment, the AI will probably be screwed by this so it needs considerable testing.

Civ4 CommerceInfos.xml
The mod will have no effect unless the Commerce tags are expanded, if Civ4TechInfos is altered to give one or more Techs the <CommerceFlexable> you can alocate Commerce towards the new Commerce types. Alternativly any thing in the game that adds commerce with tripple <iCommerce> tags can create the new Commerce types, simply extend them, the order is as follows. Note that experience dose not yet do anything, its intended to be used for Python moding.


- Two new python methods: bool Cylot.isOcean(), and bool CyCity.isConnectedToOcean() (12monkeys)

- Debug function added for SDK. Check out mod readme for details (12monkeys)

5) Bug fixes:
- Fixed a bug where increasing the number of commerce type would cause bad things to happen. (Impaler[WrG])
- Fixed a bug where units being transported by units which get upgraded, and lose transport capacity because of being upgraded (caravels --> frigates), were still transported. Now transported units will jump to the nearest valid plot, like when you are pushed by culture. (12monkeys)
- Fixed relocation due to culture/end war for ships. They will no longer get stuck in lakes when they were originally on the ocean. (12monkeys)
- Fixed an issue where production queues could be loaded in new games allowing construction of other Civ's UUs. Production queues can still be loaded, but you can no longer build other Civ's UUs. (12monkeys)

6) Optional Gameplay:
- (configurable) GreatPeoplePointPooling by Impaler[WRG]. Re-directs all GreatPeople Points generated in an Empire to a central Pool attached to the player. Set with the GameInfo/GameOptionsInfo.xml set the <bDefault> to 1 and any game you start will perminently use the Pooling.

- (configurable) Chalids Slow Cultural Borders, also controled through GameOptionsInfo.xml and is permiently stamped on the game, recomed you combine with modification to the Cultural levels.

Read More

Comments on this File

There are no comments yet. Be the first!

The CCP Team

50 XP

Registered 20th August 2006

1 Files Uploaded

Share This File
Embed File