Remove Great People Era skipping

Babarigo

Chieftain
Joined
Oct 18, 2013
Messages
76
Hi, for those who doesn't know, when a civ get to an era that is later to the actual great people's era, when he will be claimed every other great people will be skipped to go the one of the era of the most advanced civ.
For exemple, I'm going to have the first great engineer but one civ is at the Industrial Era. When I'll get this great engineer from the Medieval Era, the remaining 2 of the Medieval Era and the 3 of the Renaissance Era will be skipped.
Since the tech tree is so fast to complete and the ai (even just on emperor) got big boosts, the tech tree is just rushed and many great people are lost.
I don't like this mechanic so I would like to know how can I remove completely the great people era skipping.
I've tried to figure it myself by looking at the xml files but I didn't managed to find what causes this.
I would really appreciate if somebody could help me because that's the only reason why I don't want to play on deity.
Thanks.
 
Wait, so if everyone stays in the same era you can get all of the GP from that era? I had no idea.
 
Yes, in my actual game Kongo has rushed industrial era resulting in the loss of 5 great engineers but now they are researching older techs so I already have 2 greats engineers of the Industrial Era and I will have James Watt in about 10 turns. That's something that should be explained in the civilopedia.
 
Don't know if it'll help, but if you're talking about specific great people (by name) the era type is defined in the xml corresponding to their type (GREAT_PEOPLE_MERCHANTS.xml for example)

Otherwise era requirements are set in greatpeople.xml (AOE_REQUIRES_CLASSICAL_REQUIREMENTS)

If I'm answering the completely wrong question, I apologize.
Thanks for your help. I have deleted
<Row>
<RequirementId>AOE_REQUIRES_CLASSICAL_REQUIREMENTS</RequirementId>
<RequirementType>REQUIREMENT_REQUIREMENTSET_IS_MET</RequirementType>
</Row>
and
<Row>
<RequirementId>AOE_REQUIRES_CLASSICAL_REQUIREMENTS</RequirementId>
<Name>RequirementSetId</Name>
<Value>AOE_CLASSICAL_REQUIREMENTS</Value>
</Row>
for every era but I haven't noticed any change. Any other idea ?
 
Did you also check the eratype in the individual gp xmls

Spoiler example :
<Row GreatPersonIndividualType="GREAT_PERSON_INDIVIDUAL_COLAEUS" Name="LOC_GREAT_PERSON_INDIVIDUAL_COLAEUS_NAME" GreatPersonClassType="GREAT_PERSON_CLASS_MERCHANT" EraType="ERA_CLASSICAL" Gender="M" ActionCharges="1" ActionRequiresOwnedTile="false" ActionRequiresVisibleLuxury="true"/>

each specific gp has an era also

I haven't looked to far into gps, so there is likely something I don't know about yet.
 
Try changing the era type required in GreatPeople.xml like this:


<RequirementId>AOE_REQUIRES_MEDIEVAL_UNIT</RequirementId>
<Name>EraType</Name>
<Value>ERA_MEDIEVAL</Value>
</Row>


<RequirementId>AOE_REQUIRES_MEDIEVAL_UNIT</RequirementId>
<Name>EraType</Name>
<Value>ERA_CLASSICAL</Value>
</Row>

Do this for all the eras, so change ERA_RENAISSANCE, ERA_INDUSTRIAL etc to ERA_CLASSICAL. If it doesn't work I bet you have to change the individual eras for the great people as well in GreatPeople_whatever.xml.
 
I think this skipping mod is a great idea.. Why should the game be advantageous for the guy in the lead?? If they're leading and someone is struggling, the lead guy then might obviously pass on the great person, helping out the little guy!

+10 points to gryffindor for this!! ;)
 
Hey OP are you really sure it works as you say it works? I'm in a game in which everyone is in the industrial era (I know this by looking at the bottom of the tech tree), I just grabbed James Watt GE and the next one is a modern era GE (Alvar Aalto). This shouldn't happen if it works as you say it does. James Watt was the only GE of the Industrial Era that was gotten.
 
No, that was the only one picked out that era. Same thing happened again in modern era, here are some screenshots to show you what I mean:

Spoiler :
2zoaIqY.jpg

lOfUt6t.jpg



Me (Arabia) and Germany are the tech leaders, both in the Modern age. I just grabbed the modern era GE, and the next one that shows up is the atomic era GE. Either it's grabbing a GP from one era ahead of the leader or from one era ahead of whoever just grabbed it (I assume the former).

Btw (offtopic) I am using your pacing mod. I think it might be just a tad too slow (I can kinda build everything everywhere :p), but I really appreciate how much closer dates match up to real history.
 
Did you check how far civilizations progressed in the Civic Tree (aka "Purple Science"). You can switch eras from the civics trees as well so maybe someone is already in Atomic era.
 
Thanks for your help. I have deleted
<Row>
<RequirementId>AOE_REQUIRES_CLASSICAL_REQUIREMENTS</RequirementId>
<RequirementType>REQUIREMENT_REQUIREMENTSET_IS_MET</RequirementType>
</Row>
and
<Row>
<RequirementId>AOE_REQUIRES_CLASSICAL_REQUIREMENTS</RequirementId>
<Name>RequirementSetId</Name>
<Value>AOE_CLASSICAL_REQUIREMENTS</Value>
</Row>
for every era but I haven't noticed any change. Any other idea ?
That one is for units with area of effect abilities, such as generals and admirals.
 
From my experience, if the era leader is in Classical Era the next GP is from Medieval (it's easy to note with writers or merchants, since is really hard someone get one of them into the ancient era) but if the era leader is in Modern, Atomic or Info the next one could be from the same era.
Looks like on early eras the next one is from the next era, however at later eras they can be from the same era.
 
Might be able to adjust the script in the gp pop-up. My first idea is to add a highest era check, then set the gp to that era so it will show up..
I won't be able to do much until tonight since I have work all day, so in mean time, if anyone thinks this is bad idea, or has better one let me know.

Also, if I am completely misunderstanding the gp complaint let me know also.
 
Might be able to adjust the script in the gp pop-up.
Are you sure this script is not just an UI element?
Or do you consider "forcing" skipped great people into the screen to make them available to the player only (and not the AI as it doesn't use the UI)?
 
From my experience, if the era leader is in Classical Era the next GP is from Medieval (it's easy to note with writers or merchants, since is really hard someone get one of them into the ancient era) but if the era leader is in Modern, Atomic or Info the next one could be from the same era.
Looks like on early eras the next one is from the next era, however at later eras they can be from the same era.

I just tested it with two players, it does indeed seem to pull GP from the era of (GP leader, tech leader, civic leader, average, I don't know) plus one.

Also, I didn't know this, but GP cost doesn't go up with the number of GP already picked (I kinda assumed it did). Getting writers as early as possible seems more important now for a tourism victory
 
Last edited:
I'm working on a GP mod at the moment, and had to make some small changes to the LUA for the GP pop-up (GreatPeoplePopup.lua). In the process I thought I'd have a look to see if I could do something about this. Some thoughts...

Progression
In the play testing I've done, focusing just on GPs, I've seen the following (I've been playing with very slow tech/civic speeds and 0 boosts):
  • GPs are pulled from the Era that is the latest for all players [EDIT]Actually this might be an average - just played a game and GPs were coming from Industrial when I was in Atomic[/EDIT]
  • As soon as no GPs are available in one Era, they're pulled from the next until there's no more
  • There is no 'order' - which GPs are pulled from the Era is totally random
List Generation
Unfortunately, the data from the list looks like it's figured out in the game's DLL. The core pieces look to be:

Code:
- GP Object
Game.GetGreatPeople();

- Get's previously recruited GPs
pGreatPeople:GetPastTimeline();

- Get's GPs to show
pGreatPeople:GetTimeline();

- Loop the timeline data to build the list of GPs to show

- Indexed list of all GPs for reference data (e.g. Name)
GameInfo.GreatPersonIndividuals

I think in theory, it should be possible to change this so that the loop is over the GreatPersonIndividuals list instead and use the GetPastTimeline list as reference to remove invalid GPs. However, this would probably be slow - and just get slower the more GPs that are in the system.

Also, you have to remember this is just UI code - it would have no impact on the AI, they would still use the timeline data to recruit GPs. So you would be recruiting person A from era A, while the AI could be recruiting person B from era B - and getting that guy that grants free oil, or toys, or perfume, etc.

I actually like that you might not get the opportunity to recruit some GPs - it adds variation to your games, and makes you focus in on where to spend your GP points. The key issues in my opinion are that:
  1. There's simply not enough GPs in the system to ensure that there will be enough to last the majority of the game,
  2. Partly as a result of #1, the actions of GPs are not varied enough (and often not very useful)
  3. Storage for Great Works is nuts - either you have loads that are empty, or you don't have enough
  4. Era progression is just way too fast, and should be linked to both techs AND civics IMO
The mod I'm working on looks to address #1, #2 and #3, while making some additional changes/tweaks. It's taking a long time to do, simply by the volume of research needed to find the relevant information for GPs and to figure out (and implement!) what their actions should be.

As for #4 ... it drives me crazy. In many games I've played (against Pedro, Peter and Mbenza) we ran out of Writers and Artists in the 1300s, with civics in the Atomic era and techs still in the Renaissance! My settlers drive around in camper-vans, my GP scientists/engineers are talking about rocketry, but the best my army can muster is crossbowmen and knights!
 
Last edited:
I really hope someone finds a way to address this problem, because for me it's a key nuisance in the game.

With regards to the mechanism, do we know if anything was changed in this? It seems to me that back in the early versions of the game, the game would very reliably offer GP of the era of the tech/culture leader. But since the last two patches, I've experienced these strange cases of GP actually jumping an era ahead - i.e. when most (all?) players are in industrial era, if an industrial GP is recruited, the next on offer is modern era.

Solution as I see it, in order of preference would be:
1) No skipping at all - all GP should be recruited (my preference - at least until many more GP are added to game. A blank GP page for last third of game is not fun!).
2) GP only skip to next era when majority of civs are in that era. This would be an acceptable mechanism and a good intermediate between above solution and below.
3) GP skips to next era of point leader is in next era. Not a solution I'd support, but still better than solutions below.
4) GP skips to the era of tech leader. This is how I thought it is - and that is very bad.
5) GP skips to one era ahead of tech leader. If that is actually how it is, it's a catastrophe and must be fixed asap.
 
Back
Top Bottom