Sounds great! Let me know when you make it work! We have had some aging problems, or atleast that is what is most likely. Spies tend to die very young for some reason... Any idea why? Is it an error in the script?
Not an error,
per se, it's just that the script TATW uses (which looks like the one GreenEyedDevil first devised) increments the counter at turn start for every LocalFaction, four increments = winter = characters age. It works fine in single player, but in a hotseat every faction (except slave and Dark Lord of Mordor) is Local, so the counter gets incremented once for each player per turn. So, for instance, in my game with ten factions being played Local, 2.5 years were passing EVERY TURN*. More players makes the problem worse. Your spies were probably dying of old age.
(*Not entirely true, something goofy was going on and it wasn't counting every winter as a winter IF I didn't save and load during that
turn, so my people were really only ageing about twice as fast as they should have instead of five times as quickly. Still bloody annoying. And if you're saving the game and passing the file, you'd be experiencing the full force of the 'bug': # of players / 4 = years/turn instead of 4 turns / year.)
I asked
StealthFox if there's anyway to fix it and he very helpfully said there probably wasn't. I say 'very helpfully' because when someone tells me something can't be done it motivates me to find a way to do it.
First I thought to just change the number of counter increments needed to advance to season to fit the number of LocalFactions, but when a faction dies, it would get out of sync. So back to the drawing board, reading up on scripting, studying the existing script and then EUREKA, it hit me...
And voila!
Code:
declare_counter season_counter
set_counter season_counter 1
monitor_event FactionTurnEnd FactionType slave
inc_counter season_counter 1
if I_CompareCounter season_counter == 4
set_counter season_counter 0
end_if
end_monitor
monitor_event PreFactionTurnStart FactionIsLocal
if I_CompareCounter season_counter == 0
console_command season winter
end_if
if I_CompareCounter season_counter > 0
console_command season summer
end_if
end_monitor
New 4tpy script that is compatible with hotseat, and frankly more elegant than the current script in my humble opinion! It only increments the counter at the end of the slave faction turn, so it doesn't matter how many LocalFactions there are, and since the slave faction can't be killed it can't get screwed up. And since the slave faction is always the last faction to go, and a LocalFaction is always first in the turn, the counter effectively increments just before the end of the turn and the season changes, when it needs to change, at the beginning of the turn, which means it plays just like the old script, only it works correctly in hotseat!
I've tested it through four turns, just clicking through, and it seems to work just fine. Winter didn't come until turn four and characters didn't age until the start of turn five. It obviously needs more testing to be 100% certain it works as intended, but I can't see any reason why it wouldn't if it worked through the first five turns correctly, which it did.
Now, bear in mind, I'm playing a real hotseat, not a save-and-pass-the-file. Someone who knows more than I do would have to judge if this will work for you, but if simple scripts are working okay, I think this should.
If you respond to my reply then I will probably not answer you back before tomorrow because I am going to bed! Tomorrow I am going to raise 100 000 dollars for a school in Africa.
Good luck with that, then!
