Sid Meier's Civilization VI

Sid Meier's Civilization VI

EpsTweak for Catch-Up
81 Comments
Eps  [author] 3 Mar @ 10:35am 
I think so?
Vandos 3 Mar @ 4:14am 
Is this compatible with BBG?
Iskander 14 Sep, 2024 @ 9:35am 
Alright, thanks!
Eps  [author] 14 Sep, 2024 @ 6:41am 
It gives a eureka/inspiration, yes.
Iskander 13 Sep, 2024 @ 9:56am 
Thanks for the clarification!
Does it stack with a regular eureka/inspiration, for 80% in total? Or does it give a eureka/inspiration if the civ didn't have one.
Eps  [author] 13 Sep, 2024 @ 2:03am 
It's the same as an Eureka or Inspiration - 40%.
Iskander 12 Sep, 2024 @ 6:04am 
What amount is the "boost when the majority of other players have researched that same tech or civic?
How much of a boost is it?
Nandybear 19 Oct, 2023 @ 6:25pm 
@Puddings open up catchup.lua and near the beginning replace the 4 lines that look like this to my ones

if (epsPlayersStillAlive >= 3) then treshold = epsPlayersStillAlive - 1; end
if (epsPlayersStillAlive >= 6) then treshold = epsPlayersStillAlive - 1; end
if (epsPlayersStillAlive >= 9) then treshold = epsPlayersStillAlive - 1; end
if (epsPlayersStillAlive >= 12) then treshold = epsPlayersStillAlive - 1; end

Then the script won't execute until literally every player has the boost, at which point it's worthless (I think you can use zero but I am 100% guessing I suck at Lua)
Puddings 17 Oct, 2023 @ 6:52pm 
I really like this, but I wish you can make a version without the script boosts pls? I think the global grand embassy thing is good enough alone the free boosts just make it too easy and breaks immersion imo
Nandybear 1 Oct, 2023 @ 10:52am 
Sorry I had one of those "why am I playing this one thing so much" moments, got distracted, and forgot about this convo. Now back to it lol.

I had a look through functions with Suk's lua reference, I guess it'd be SetTech and SetCivic ? Also maybe some code has to be tweaked because of the check on if a person already has the boost, if giving it to them, this would no longer matter
Eps  [author] 20 Sep, 2023 @ 1:38pm 
I think it's jsut a matter of changing which function gets called?
Nandybear 20 Sep, 2023 @ 6:38am 
Oh wow I've just realised - it doesn't give them the whole thing, just the boost ?

Can't believe I never noticed that before lol. Is there a way to make it just give them the tech/civic wholesale ? Or is that a ton of more work ?
Eps  [author] 18 Sep, 2023 @ 12:12pm 
They may have gotten a boost on their own prior to the threshold triggering.
Nandybear 18 Sep, 2023 @ 6:20am 
It works brilliantly, woo! Thanks so much. Is there a time though, like does it happen every turn ? I have it set to

local treshold = 0;
if (epsPlayersStillAlive >= 3) then treshold = epsPlayersStillAlive - 2; end
..(cut for char limit)..
if (epsPlayersStillAlive >= 12) then treshold = epsPlayersStillAlive - 11; end

so like as soon as 1 person gets it, everyone gets the boost, but the notification shows up every few turns, does it run at a set rate ?

Like there's some civs who have 15-20 techs behind and I would expect em to get a new one every turn ? But I got future tech and got a notification only 3 people got the boost. Of 5 players left, 4 of em have less than 50 techs and don't seem to be getting boosted. I'd expect a boost every turn. Or are there some limits ?

Sorry for all the questions, it's just with this one I can't read it AT ALL. It's just fully foreign and incomprehensible to me.
Eps  [author] 18 Sep, 2023 @ 1:26am 
Yes, yes, and yes.
Nandybear 17 Sep, 2023 @ 11:48am 
OK so your first bit is about the mistake in my specific file, and not a change that needs making to yours ? I already corrected the mistake I posted some time back, I think that's what your referencing - so on a fresh file if I downloaded this new, your first step is not necessary ?

Step 2 - already done! You taught me that ages ago (thank you again for that).

And step 3 you literally mean replacing the word with the number 0 ? I've done all that and edited the text so ya should be good to go!

Thanks again for this!
Eps  [author] 16 Sep, 2023 @ 7:05am 
Right, so here's what you need to do:

Firstly, you shoud indeed move the techCatchupTable and civicCatchupTable lines above their respective "for" statements.

Next, on line 22, you need to add a "or player:IsHuman()" in front of the "then", like so:
"if (not player:IsMajor()) or (not player:IsAlive()) or player:IsHuman() then"
This will make it so you don't get any boosts, but the AI's will.

Next, on lines 39 and 54, right after the "NotificationManager.SendNotification(" lines, you need to change "playerIndex" to "0".
This will make it so that instead of the notification being sent to the player that got the boost, they will be sent to the first player (i.e. you).

Finally, in GameText.xml, you need to change the actual message for EPSTWEAK_CATCHUP_MESSAGE_TEXT, so that instead of saying "You received a boost" it says "A player received a boost". Otherwise it would be confusing.

I've tested these changes out on my end.
Eps  [author] 16 Sep, 2023 @ 3:07am 
And if you try to use a requirement set that happens to load after your mod, the game crashes.
Eps  [author] 16 Sep, 2023 @ 3:07am 
It's because of the way Civ 6 handles loading mods. First it groups them into "buckets" of dependency, then it loads each bucket in the order of the mod ID's within it. The bucket with the mods that don't depend on anything gets loaded first, then the bucket with mods that depend on mods in the first bucket, etc.
Because of this, predicting whether the requirementSets you are using will be loaded in before or after your mod is is practically impossible. So it's a lot easier to just create your own copies of them.
Nandybear 16 Sep, 2023 @ 1:04am 
Hey I had a weird modding Q that I can't easily find an answer for - when creating modIDs with requirements, why does each one need to be unique ? for ages I've been trying to use a "player_is_human" one from another place. It didn't work until I did it fully custom. Is it because each modifier creates it's own little..table I guess ? So certain rows (i think they're called) have to be unique and defined within themselves, until you hit the hardcoded bits like types ? Basically, is anything with an ID your thing that you have to fully define ?

I tried reading a guide and just got mega confused. I have created a bunch of mods now from reading your code and reading suk's SQL. But I'm basically monkey-see monkey-do, the "why" eludes the hell out of em lol.
Nandybear 15 Sep, 2023 @ 3:01am 
Sorry I just caught the last bit - I'm not a coder. I understand none of this. I am really good with winmerge and seeing "hey that thing is different to that thing, let's put em together and hope it works". Like I can do SQL and XML (especially thanks to guys like you) I can follow along the patterns in the scripts you make. But LUA ? It makes zero sense to me. I can't read it at all. Even trying to figure out the question I asked about trying to make it work with less or more players, it took me AGES to work out (do I need to make it a higher or lower number). Like, I just can't read and understand the code. It's just so abstract to me.
Nandybear 13 Sep, 2023 @ 2:27pm 
AH that's brilliant, really appreciate it mate.
Eps  [author] 13 Sep, 2023 @ 12:17pm 
Hah, that's amazing! I'll look into how the script could be modified to achieve what you want on an upcoming weekend. Cause I have a feeling is it would be just a case of changing a few "if" statements and numbers around. Which you could do yourself, without the need of a new build.
Nandybear 12 Sep, 2023 @ 6:07pm 
But I'll always be against an AI that simply isn't programmed to win a game. They just follow their really low-risk rulepaths and never once treat you as COMPETITION. So I make my own! And your mods have massively helped me achieve a game that I just sit and play for 40, 50h, even though I know they'll eventually not be a challenge. You made mods so good that it's just a blast in that middle area as they scramble with all these bonuses and just throw the kitchen sink at me lol.
Nandybear 12 Sep, 2023 @ 6:07pm 
So this mod in particular is one of my faves because I can perfectly control how I want the race to be. Before your mods and the others I mentioned, I've always won by medieval; my army is killing it, I have at LEAST 2x the amount of cities, and I'm usually an era or 2 ahead. But with this I can keep a really fine control on it. Oh some are lagging behind let's get everyone lined up a bit. Some are getting a bit too far ahead on their own let's disable shit and play against someone who is gonna be TROUBLE. It gives me flexibility.

I'm always gonna win. I play larger maps and I always have like, 2x the amount of cities at a minimum. Throw in being suzerain like 90% of the time, as that is the biggest benefit (imo) in the entire game. But sometimes I'll get a map where I didn't get Piccu, or Kilwa, or Venetian And suddenly I'm fighting GDRs with a +8 combat bonus with ships that cost me 20k to make (I added in cost progression for units, it's super fun but gets expensive quick)
Nandybear 12 Sep, 2023 @ 6:05pm 
1/?

Ya this whole mod for me is - I play the game weird. I like to know it's going to be a good long game, so I check the map out early (your mod with the settlers having a bigger view - I have that set to 20 lol). I play the game to world build and typically do domination games because i love building these big empires and putting cities in perfect places and having these huge stats.

The issue is, all this leads to me getting a lead against the AI pretty early on. So I balance it out with mods like this, like Late Game AI, like Easy Setup Lite where I can give em a bunch of extra stuff and a free percentage on civics/tech (all AI has 10% on every civic/tech from the start of the game. It used to be more but Late Game AI is a BEAST and really helped me find a more level game.
Nandybear 12 Sep, 2023 @ 12:17pm 
I have it setup so it doesn't work for me, I use

if (not player:IsMajor()) or (not player:IsAlive()) or (player:IsHuman()) then
return;
end
Eps  [author] 12 Sep, 2023 @ 6:31am 
In theory that should only very slightly affect performance. You have been seeing the messages, right?
Nandybear 12 Sep, 2023 @ 6:03am 
... So at some point (it goes back to at least 2022 lol those are my earliest verbose backups and they all have this) I moved a line by accident. Have I been using this for all this time with no culture catch up ? lol
Nandybear 12 Sep, 2023 @ 6:03am 
I'm sorry if I'm misreading this and I'm not trying to guilt you or owt I promise but that kinda sounds like something you'd be interested in doing ?! If not no worries it just reads like that a bit!

Also I just found something editing, wondering what damage it has done:

This is default around line 48

local playerCulture = player:GetCulture();
local civicCatchupTable = GetObjectValue(player, "EpsTweakCivicCatchupTable", {});
for civicIndex, count in pairs(civicCatchupTable) do
if (count) and (count >= treshold) and (not playerCulture:HasCivic(civicIndex)) and (not playerCulture:HasBoostBeenTriggered(civicIndex)) then



Mine is

local playerCulture = player:GetCulture();
for civicIndex, count in pairs(civicCatchupTable) do
local civicCatchupTable = GetObjectValue(player, "EpsTweakCivicCatchupTable", {});
if (count) and (count >= treshold) and (not playerCulture:HasCivic(civicIndex)) and (not playerCulture:HasBoostBeenTriggered(civicIndex)) then

>
Eps  [author] 12 Sep, 2023 @ 5:29am 
It wouldn't be hard at all. I would just need to show the message to player 0 if the player that got the boost is marked as not being IsHuman. It could be done as an alternate variant of the mod I guess?
Nandybear 12 Sep, 2023 @ 3:27am 
I'd love it if notifications could also apply for the AI - ie. it tells me when the AI received what boost, is this something that is easy to do ? Is ir a feature you're interested in ? How much work is it ? I know you don't liketaking paid requests but are OK with me asking others so I'm just wondering what the workload would look like so I can figure out a cost to see if it's worth it
Eps  [author] 16 Aug, 2023 @ 2:29am 
Nah, using them is thanks enough.
Nandybear 15 Aug, 2023 @ 4:10pm 
Awesome, cheers dude. btw is there anywhere I can buy you a coffee or beer or whatever ? I'm using like 20 of your mods, feels like I owe you a pint.
Eps  [author] 15 Aug, 2023 @ 3:10am 
Yes, changing the treshold would do it.
Nandybear 14 Aug, 2023 @ 9:43pm 
If I wanted it to apply to everyone as soon as 1 person got the tech, do I Just:

if (epsPlayersStillAlive >= 3) then treshold = epsPlayersStillAlive - 2; end
if (epsPlayersStillAlive >= 6) then treshold = epsPlayersStillAlive - 5; end
if (epsPlayersStillAlive >= 9) then treshold = epsPlayersStillAlive - 8; end
if (epsPlayersStillAlive >= 12) then treshold = epsPlayersStillAlive - 11; end

?
IndieForger 5 Aug, 2022 @ 4:29pm 
I just started using Extended Eras
https://steamhost.cn/steamcommunity_com/sharedfiles/filedetails/?id=2123444827
which adjusts bonuses / penalties to research from previous eras and ahead of time.

I believe used together with your mod it fixes problem with technology when focusing on other types of victory.

Thanks for putting it together! Upvoted and faved!
Eps  [author] 3 Aug, 2022 @ 9:00am 
Well, in any case, I don't mind if you get someone else to modify it.
Nandybear 3 Aug, 2022 @ 5:31am 
I actually think I did it lol. I went and cribbed one of your other mods and looked over how it should look, I *think* I've got it..
Nandybear 3 Aug, 2022 @ 4:39am 
Ello mate months back I tried doing an AI only change for this but could never crack it, I ended up going away from Civ for a bit but wanna get back into it - was wondering if you take requests ? I can't code it's too difficult for me but I'd be willing to pay if you could edit this so it only works for AI.

If you're not interested, would it be OK to ask elsewhere for someone to modify it ? I'm not sure on the etiquette around these things.

EDIT: Sorry just to clarify, it's the trade route bit I would need doing. You gave me the info to make the lua AI-only. But I could never crack the requirement set thingy, I don't know how to untangle mods!
Eps  [author] 2 May, 2022 @ 3:10am 
Lines 26 to 30. That code block sets the threshold based on how many players are still alive.
Rooster Factory 1 May, 2022 @ 7:58pm 
Thank you for the quick response. Would you be so kind as to point out which line the threshold varaible is located on? I think I know but im not sure and it seems very complicated so I dont want to mess it up.
Eps  [author] 29 Apr, 2022 @ 2:00pm 
The science/culture gain per trade route from Peter's effect is hardcoded and can't be changed. Meanwhile you can adjust how quickly the boosts come into play by playing with the Threshold variable in the script file.
Rooster Factory 29 Apr, 2022 @ 1:56pm 
Great Mod I've been waiting ages for someone to put something like this together. I don't understand coding enough beyond basic editing to be able to figure it out. Based on the code in this mod it looks complex as hell. I was hoping you could point out exactly where I could edit the mod so that the tech/civic boost takes place a little faster than where you put them eg boost after half the players know a tech. Or how to increase the amount of science/culture gained per route. +1 per route seems a bit low considering the cost of the techs especially as it moves towards the later ages. Thanks again for your work.
jht_89 19 Apr, 2022 @ 7:36pm 
Perfect, thanks for letting me know :)
Eps  [author] 19 Apr, 2022 @ 2:42pm 
That one line GameConfig.xml and every "TRAIT_LEADER_GRAND_EMBASSY" line in GameDefines.xml
jht_89 19 Apr, 2022 @ 1:53pm 
Could you confirm what sections of the mod files I'd need to adjust in order to not adjust Peter in any way (so as to prevent potential conflicts with Civilisations Expanded?
Nandybear 9 Apr, 2022 @ 11:52pm 
Realised was adding to wrong modifierID, added it to all the others, no luck either.
Nandybear 9 Apr, 2022 @ 11:43pm 
<Requirements>
<Row><RequirementId>EPS_REQUIREMENT_PLAYER_IS_AI</RequirementId><RequirementType>REQUIREMENT_PLAYER_IS_HUMAN</RequirementType><Inverse>True</Inverse></Row>
</Requirements>


No luck. It's just too confusing to me, I have zero experience with all this so it's basically a completely foreign concept. If this is too much of a faff to help with I understand, it's the catch up part I'm after anyway so it wouldn't be a major loss to just remove the trade route bit altogether
Nandybear 9 Apr, 2022 @ 11:43pm 
Ah this is where I trip up, I don't understand the whole thing with the modifiers and the modifier requirements, and the orders, I tried adding

<SubjectRequirementSetId>EPS_PLAYER_IS_AI</SubjectRequirementSetId>

so it became

<Row><ModifierId>EPSTWEAK_CATCHUP_ALL_PLAYERS</ModifierId><ModifierType>MODIFIER_ALL_PLAYERS_ATTACH_MODIFIER</ModifierType><SubjectRequirementSetId>EPS_PLAYER_IS_AI</SubjectRequirementSetId></Row>

And then added

<RequirementSets>
<Row><RequirementSetId>EPS_PLAYER_IS_AI</RequirementSetId><RequirementSetType>REQUIREMENTSET_TEST_ANY</RequirementSetType></Row>
</RequirementSets>

<RequirementSetRequirements>
<Row><RequirementSetId>EPS_PLAYER_IS_AI</RequirementSetId><RequirementId>EPS_REQUIREMENT_PLAYER_IS_AI</RequirementId></Row>
</RequirementSetRequirements>

1/2