Auto renew spell


Although the central place for design discussion is ##crawl-dev on freenode, some may find it helpful to discuss requests and suggestions here first.

Mines Malingerer

Posts: 36

Joined: Saturday, 26th October 2013, 03:36

Post Tuesday, 14th January 2014, 04:59

Auto renew spell

In order to truly play optimally, there are a few tedious things that need to be done:
- add to the runrest stop option all the spell expiry messages for spells you want to keep active.
- recast each as it expires. (You could set up a macro to do this for you, though that won't stop casting if a monster shows up...)

It would be very nice to have an option to auto renew spells. My idea of how it would work:
- A toggle (like for auto-pickup) to enable or disable this behavior
- A menu (similar to the \ menu) of spells (can exclude spells that don't make sense. E.g. conjurations).
- Each spell would have 3 states:
- do not auto renew
- auto renew when wearing off (if spell gives warning that it does so; summons for instance do not give a wearing off message, just an expiry message when the summon vanishes)
- auto renew upon expiry

The 2nd state (auto renew when wearing off) could be left out for simplicity.


You probably wouldn't want to use this with haste or invis, or with spells that cost you a lot of hunger. But for the general case of keeping buffs up, or maintaining a summoned army, this would be very nice.
The toggle to disable would be for situations where you don't want to risk having your mana low for a bit, or if you are trying to conserve hunger (if you've chosen to renew spells that still cause you hunger).

Shoals Surfer

Posts: 255

Joined: Sunday, 24th April 2011, 04:13

Post Tuesday, 14th January 2014, 05:21

Re: Auto renew spell

running around with buffs up while no monsters are in los is not optimal; at the very least it is a waste of turns, and it is often a waste of nutrition as well (not that hunger is very relevant)

if you are this concerned about being "optimal", why don't you cast all buffs, walk ten spaces, and then wait until they expire and recast before walking any further? After all, you wouldn't want your buffs to start running out in the middle of a fight!!!!!!!

Or, alternately, you could play like a sane person.

PS--Anything that is such a non-decision that keeping it active 100% of the time in all situations seems even slightly reasonable probably needs to be removed/rebalanced
User avatar

Dungeon Master

Posts: 162

Joined: Sunday, 29th May 2011, 10:18

Post Tuesday, 14th January 2014, 05:34

Re: Auto renew spell

This has been discussed at least a couple of times. For example.

I think the swiftness treatment is a good approach: an upside, with a cooldown or downside.
Another thing we could do is cause spells to pop rather than timeout. rmsl might absorb a certain number of hits before dissipating. There would need to be a cost, perhaps a reduction in max-MP while the spell is up?

Mines Malingerer

Posts: 36

Joined: Saturday, 26th October 2013, 03:36

Post Tuesday, 14th January 2014, 05:52

Re: Auto renew spell

@Volteccer_Jack: So don't use the interface if you choose not to. I'd certainly use it for necromutation instead of having to manually recast.
And on certain characters, it can be decent to always have up a long-lasting buff. If you can cast dmsl with no or little hunger cost, and have enough spell power that it stays up for a while, why not run around with it on all the time?
Sure, it isn't always optimal. Toggle it off in those situations. I know I'd prefer to keep dmsl up (if I have it at low/no hunger) if I'm a squishy mage in areas that tend to be thick with cyclops or bolt-throwing mages, etc.
I, personally, do not bother doing this (runrest stop) with anything except necromutation. There are situations where I would want to do so though. For instance, if I have necromutation and am a sif worshipper, I might want to always renew a variety of buffs, then channel back to full mana (though this interface wouldn't quite accomplish that).

@brendan: both of those proposals you linked suggest alterations to how spells work.
My proposal has no effect on game balance or the mechanics of how spells work at all; you could accomplish the exact same thing via tedium: set up stop messages for all the spells you care about always/often having up and manually recast them.
This interface would remove that tediousness without having to give any thought to how balance is affected.
Though i think making buffs not have a duration but instead some sort of cost associated with keeping them active, or a certain number of charges, would be interesting, that requires design and more implementation work than this would.

One example where I would consider using such an interface would be battlesphere in the period between whenever it stops causing [much] hunger (quite fast for a De, for instance) and when it isn't really all that effective anymore.
I often keep one up when exploring a new floor so I don't have to use a turn while enemies are in LOS. (I'm not a score fanatic; I don't mind losing a turn every now and then to keep from potentially having to use a turn when I run into an enemy.)
User avatar

Dungeon Master

Posts: 502

Joined: Wednesday, 7th March 2012, 13:25

Location: Lexington, KY, US

Post Tuesday, 14th January 2014, 07:52

Re: Auto renew spell

Probably most of what you suggest could be implemented in Lua with a sufficiently advanced RC file (much like autofight is entirely user-side Lua). It would be a bit of a pain but at least that way any bugs would be self-contained.

Edit: In particular, you'd want to implement the ready() function, which is called on every turn. Look into you_clib in l_you.cc to get an idea of what kind of things you can check with things like you.phase_shifted(), you.swift(). Some enchantments might be missing Lua functions to query them, but those can be added on a case-by-case basis.
Last edited by neil on Wednesday, 15th January 2014, 01:05, edited 1 time in total.
User avatar

Dungeon Master

Posts: 762

Joined: Thursday, 25th April 2013, 02:43

Post Tuesday, 14th January 2014, 20:27

Re: Auto renew spell

This has been discussed to death. The chance of anybody adding anything of value are minimal.

morik, if you think this particular system has merit, I would recommend taking neil's suggestion and trying to use lua to code it up.
On IRC my nick is reaverb. I play online under the name reaver, though.

Return to Game Design Discussion

Who is online

Users browsing this forum: No registered users and 9 guests

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.