Mod Component Requests Thread

Here's a modcomp idea I have for quite some time. Please let me know if someone has already made something like this or is willing to do it.

Great Explorers


A new type of great person that rewards players for exploring the world. So it would not be born from :gp: points in cities but would need a new progress bar, similar to Great Generals.
Great Explorer Points (GEP) would come from exploring the map. When it reaches a threshold, the civ receives a Great Explorer in its capital, its current GEP is reset to 0 and the GEP threshold is increased one step for all civs.

GEP could be gained something like this:
  • +4 for revealing a black land tile
  • +1 for revealing a black water tile
  • +x for discovering certain features (should be customizable to use with Natural Wonders)
  • +100 for making contact with another civ.
Of course it should scale with map size and buildings, civics and traits should be able to affect GEP generations.
 
Here's a modcomp idea I have for quite some time. Please let me know if someone has already made something like this or is willing to do it.

Great Explorers


A new type of great person that rewards players for exploring the world. So it would not be born from :gp: points in cities but would need a new progress bar, similar to Great Generals.
Great Explorer Points (GEP) would come from exploring the map. When it reaches a threshold, the civ receives a Great Explorer in its capital, its current GEP is reset to 0 and the GEP threshold is increased one step for all civs.

GEP could be gained something like this:
  • +4 for revealing a black land tile
  • +1 for revealing a black water tile
  • +x for discovering certain features (should be customizable to use with Natural Wonders)
  • +100 for making contact with another civ.
Of course it should scale with map size and buildings, civics and traits should be able to affect GEP generations.
I would love to do that but it is far too complicated for my python and sdk programming skills.
As far as I know it hasn't been done before.
 
I would love to do that but it is far too complicated for my python and sdk programming skills.
As far as I know it hasn't been done before.
I know that Colonization has something like this for the founding fathers.
I wonder wonder if that could be reverse engineered into a modcomp for BtS.
Maybe @raystuttgart or @Nightinggale can say more about it.
 
I know that Colonization has something like this for the founding fathers.
I wonder wonder if that could be reverse engineered into a modcomp for BtS.
Maybe @raystuttgart or @Nightinggale can say more about it.
Technically everything about founding fathers is placed in the colonization DLL and can be copied to BTS.

However this is not like FF. It's so unique that it would likely be better to write it from scratch. It's not that hard to do (relatively speaking considering it's a new game feature). Add an int to each player, at the events in question, call a function, which increases the int and then checks if it's higher than a threshold in CvGame. If so, make explorer and CvGame increases threshold.

One problem though. What happens if there are two players on one team? All examples given for gaining points are for teams, but gaining a unit is for a player.
 
One problem though. What happens if there are two players on one team? All examples given for gaining points are for teams, but gaining a unit is for a player.
Isn't it possible for players to gain points instead of teams?
 
Isn't it possible for players to gain points instead of teams?
Sure it's possible, but do you want it? Say there is a natural feature, then player 1 explores it. Player 2 on the same team will then lose out of the ability to gain because the team explored it already. This will give a major disadvantages to teams with more than one player.

Alternatively you could do everything in CvTeam and then when an explore is gained, it is either one for each player, random player or the players takes turns.

All is technically possible, but you need to consider what makes sense from a game balance point of view.
 
In case of a team I think it would be ideal if both civs receive a GreatExplorer. Maybe the threshold should not increase immediately but only one turn later.
Of course this all is only a problem if two civs are one team from the start of the game. In case of an alliance formed later or being in a team with a vassal the civs would gain GEP together but their accumulated GEP would bevery likely to be different.
 
I have a small request. You probably have heard of Platypings Reinforcement modcomp script.
Good someone please add a new tag to it that gives units only if the player is human or AI. Something like this <requirement>AI</requirement> so now only if the civ is AI it gets the new units. Or <requirement>HUMAN</requirement>, so now only if that civ is human it gets the units. But if written like this <requirement>BOTH</requirement>, then it doesn't matter if it is human or AI, it gets the units anyway.
I'm hoping this is not too much to ask!
Here is a link to the reinforcement script, if you haven't heard of it I think you should try it out first.
https://forums.civfanatics.com/resources/reinforcement-script.21849/
 
Last edited:
@Zeta Nexus I managed to create something fairly close to the final product but I will need an answers first. What tech does the Tower of Babel need?
Here is what I achieved till now.
It is fairly complicated to make this as a wonder effect because it doesn't have where to be put, if you're not a python modder then you probably won't understand this.
So I defined the Tower of Babel as a project, I will define it as a building later but it will have some consequences.
Let's say the tech required to build the Tower of Babel is Masonry, civilizations that have masonry as well are going to get a -5 diplomacy with you.
I am still working on the war declaration, I will need a variable that triggers the war so every civ that has Masonry will declare war on you, or if I manage they will declare war on each other.
Is it ok if the Tower of Babel ruins diplomacy or only war?
Also if it is not the Ancient Era then the Tower of Babel can't be built. Is that ok? If not I can remove it.
 
Last edited:
Masonry is the tech requirement. ToB should be Classical or earlier. Limiting to Ancient is just too strict.
I don't like the diplomacy penalty in this case though with other some wonder it may be useful. Can you send it also, please?
Well, if you cannot do the war declaration, I'm open to other ideas. Just it should reflect to the babel confusion.
 
Masonry is the tech requirement. ToB should be Classical or earlier. Limiting to Ancient is just too strict.
I don't like the diplomacy penalty in this case though with other some wonder it may be useful. Can you send it also, please?
Well, if you cannot do the war declaration, I'm open to other ideas. Just it should reflect to the babel confusion.
I won't do anything to the tech except for add the effect, so I won't choose in what era it is limited.
War declaration is harder then I though it is so another effect would be better for me.
I also think War declaration is a bit too harsh.
 
I got a great idea!
When the Tower of Babel is built, in the civilization that built it half of their cities revolt and become a new civ. For example if they Babylon has 8 cities when they built the ToB 4 new civs appear all of them with 1 city. I could easily do that!.
 
Never mind I found a better solution, that is more conventional:
upload_2020-10-30_10-32-51.png

It makes the builder city grow very quickly but there will be a great fallback at Theology.
 
This gave me an idea which I eventually did for my mod.
I don't like the "set in stone" for Spain so much so did similar but you need to build a wonder called Copernicus to do it (art asset is on this forum).

You can use similar to do yours, it's quite straightforward in Python.
For me it's a bit easier because you can only build copernicus in coastal cities so I don't have to check too much where to build the galleon for free
def onBuildingBuilt(self, argsList):
'Building Completed'
pCity, iBuildingType = argsList

#2.17a Copernicus
iNumUnit = 3
iCopernicus = gc.getInfoTypeForString("BUILDING_COPERNICUS_OBSERVATORY")
iUnitCreated = gc.getInfoTypeForString("UNIT_GALLEON")
iPlayer = pCity.getOwner()
pPlayer = gc.getPlayer(iPlayer)
if (iBuildingType == iCopernicus):
for iLoop in xrange(iNumUnit):
pPlayer.initUnit(iUnitCreated, pCity.getX(), pCity.getY(), UnitAITypes.UNITAI_ATTACK, DirectionTypes.NO_DIRECTION)

#2.17a End

I also gave another power to Copernicus (which you can do with Optic) to allow for units to be able to cross the ocean.
I did in C++ so a bit more tricky,
in this function - bool CvUnit::canMoveInto(const CvPlot* pPlot, bool bAttack, bool bDeclareWar, bool bIgnoreLoad) const
 
This gave me an idea which I eventually did for my mod.
I don't like the "set in stone" for Spain so much so did similar but you need to build a wonder called Copernicus to do it (art asset is on this forum).

You can use similar to do yours, it's quite straightforward in Python.
For me it's a bit easier because you can only build copernicus in coastal cities so I don't have to check too much where to build the galleon for free


I also gave another power to Copernicus (which you can do with Optic) to allow for units to be able to cross the ocean.
I did in C++ so a bit more tricky,
in this function - bool CvUnit::canMoveInto(const CvPlot* pPlot, bool bAttack, bool bDeclareWar, bool bIgnoreLoad) const
I don't understand. Are you saying this as a request or are you talking about the Tower of Babel?
I also don't understand what Spain has to do with Copernicus who was Polish.
 
I am trying to make a mod in which Spain gets 5 conquistadors and 2 Galleons when they Discover Astronomy, I tried to make it an Event but it Doesn't work!
I would really appreciate any kind of help! Thank You

Sorry I got a notification of the above message (I didn't quote properly when I answered earlier today),
Was trying to help you with your Spain request. I had it on my to-do list for a while.
 
Top Bottom