Essentially, making savescumming into an official gameplay mechanic... made it possible to get a lot of the game-breaking advantages of savescumming, but without actually doing any cheating. This is pretty bad.
See the Threads attempts to mitigate these problems by only being usable once per zone level. However, this attempt fails, for several reasons:
1. The restriction does not apply to the See the Threads that you get from the Threads of Fate fixedart - giving every non-antimagic character access to unlimited time travel abuses.
2. There are ways for the player to create an unlimited number of new zone levels. The easiest is Temporal Reprieve, which is also available on a fixedart (Temporal Augmentation Robe), but there are also Fearscape, Dreamscape, and worldmap ambushes.
3. There are just *so many* zone levels in the normal game in the first place! Over a hundred! That's already enough to get amazing Wheel of Fate and Wyrm Bile rolls, and rather tediously at that...
Now, I'd like to pre-empt the protests of "but nobody will actually abuse this!"
Here's a game where I used Revisionist History to get 5 additional category points and 1 additional prodigy point from fonts of knowledge.
Here's another one where I used timeline splitting to get 2 additional prodigy points.
I think the only complete and practical solution is to just get rid of timeline-splitting talents. Yes, they're a cool demonstration of the flexibility of T-engine, but from a player perspective, they're cumbersome to use as intended and extremely easy to use as unintended. And both Chronomancer classes would still be extremely strong without them.
If not that, then at least get rid of Revisionist History and See the Threads - unlike Cease to Exist they don't offer a cool offensive option, they just negate the risk of whatever you're about to do. Ideas to somewhat mitigate (but not solve) the problems with Cease to Exist:
- If you fail to kill the target before Cease to Exist expires, Cease to Exist cannot be used again on that level.
- Only allow Cease to Exist to target rare+ rank enemies.
And if you do keep any chronoworlds talents, all of the following need to negate chronoworlds:
- Receiving the Brotherhood of Alchemists quest (this is when the recipes for the potions are determined; you can use timeline splitting talents to restart it until you have easy Foundations ingredients)
- Disturbing a grave, using a font of knowledge, touching a tentacle tree or demon statue (alternatively, pre-compute the results of these when the level is first created, like glowing chests do)
- Using the font of sacrifice
- Imbuing a gem or amulet with a jeweller
- Rerolling Wheel of Fate
- Stealing a talent with Morrigor
- Drinking Wyrm Bile
- Probably a lot more stuff that I've forgotten!
...but understand that this still leaves countless possible chronoworlds abuses in the game.
The other half of the problem is that timeline splitting is unstable. Using these talents often crashes my game with a segmentation fault, both when splitting the timeline (saving) and when rewinding time (loading). This may just be some general serialization bug that's simply more visible with timeline splitting talents because if I have these talents, I'm using them much more often than I am saving the game normally.
Another bug is that the game also seems to keep responding to input for a brief moment after starting to rewind time. You can see this by holding down the hotkey for Revisionist History (or pressing it rapidly) and looking at the console output - it will get spammed with error messages as you use Unfold History multiple times in succession:
Code: Select all
[LOG] Player casts #{bold}##PURPLE#Unfold History.#{normal}##LAST#
[useTalent] TALENT FAILED: T_REVISIONIST_HISTORY_BACK for player 58644 true
[LOG] Player casts #{bold}##PURPLE#Unfold History.#{normal}##LAST#
##Use Talent Lua Error## T_REVISIONIST_HISTORY_BACK Actor: 58644 player
Lua Error: /engine/interface/ActorTalents.lua:329: /engine/interface/ActorTalents.lua:302: /engine/interface/ActorTalents.lua:164: /data/talents/uber/mag.lua:305: attempt to index a nil value
stack traceback:
/data/talents/uber/mag.lua:305: in function </data/talents/uber/mag.lua:303>
[C]: in function 'xpcall'
/engine/interface/ActorTalents.lua:162: in function </engine/interface/ActorTalents.lua:151>
At [C]:-1
At [C]:-1 error
At /engine/interface/ActorTalents.lua:329 useTalent
At /engine/interface/PlayerHotkeys.lua:170
At /engine/interface/PlayerHotkeys.lua:162 activateHotkey
At /mod/class/Game.lua:2479 f
At /mod/class/Game.lua:2000 fct
At /engine/interface/PlayerHotkeys.lua:317
At /engine/KeyBind.lua:231
[USERCHAT] channel achievement kefyon tome Wibbly Wobbly Timey Wimey Stuff (Nightmare (Roguelike) difficulty) false true
[LOG] Player casts #{bold}##PURPLE#Unfold History.#{normal}##LAST#
##Use Talent Lua Error## T_REVISIONIST_HISTORY_BACK Actor: 58644 player
Lua Error: /engine/interface/ActorTalents.lua:329: /engine/interface/ActorTalents.lua:302: /engine/interface/ActorTalents.lua:164: /data/talents/uber/mag.lua:305: attempt to index a nil value
stack traceback:
/data/talents/uber/mag.lua:305: in function </data/talents/uber/mag.lua:303>
[C]: in function 'xpcall'
/engine/interface/ActorTalents.lua:162: in function </engine/interface/ActorTalents.lua:151>
At [C]:-1
At [C]:-1 error
At /engine/interface/ActorTalents.lua:329 useTalent
At /engine/interface/PlayerHotkeys.lua:170
At /engine/interface/PlayerHotkeys.lua:162 activateHotkey
At /mod/class/Game.lua:2479 f
At /mod/class/Game.lua:2000 fct
At /engine/interface/PlayerHotkeys.lua:317
At /engine/KeyBind.lua:231
[LOG] #LIGHT_BLUE#You go back in time to rewrite history!