Tomb Titivator
Posts: 832
Joined: Wednesday, 17th April 2013, 13:28
Interface proposal: auto recast
There's been a lot of discussion about changing buffs so that instead of being periodically recast, they'll be active all the time while draining off some mana. See:
https://crawl.develz.org/wiki/doku.php? ... r_duration
The rationale is that most higher level characters keep their buffs up anyway, and having to recast is tedious. However, there are many issues of game balance to consider when implementing permabuffs.
My proposal: add an auto recast menu. This can be reached from the "I" menu (spells), for example. The auto recast menu shows a list of eligible spells (that the character has memorized and can be re-cast). The player toggles the spells that he/she wants to re-cast. On expiration of the spell, a new cast of the spell is attempted. If the spell is miscast, the player will need to cast manually again to start the cycle up.
Advantages:
1) Player has fine control over which spells are to be permabuff style and which are to be manually cast. This is useful especially for higher level buffs with still high failure rates.
2) Essentially, this is the same system as before, just automated. No game rebalancing necessary.
3) Fairly simple to code. In fact, I have a pretty good idea of how to implement it already. In main.cc, in the _decrement_a_duration() function, when (you.duration[dur]==0), call a _do_cast() if the auto recast toggle is set.
Btw, this may all be possible with Lua scripting, but I don't know Lua and I have been diving into the code recently, so that's why I propose to do it in the main code.