• Civilization 7 has been announced. For more info please check the forum here .

Suggestion: Auto-Haste

cabbagemeister

Please wait...
Joined
Jun 26, 2008
Messages
517
I just finished my first Calabim game, and I just loved vampires. Aside from the high xp, their death I and body I promotions make them fast and well-supported on the battlefield.

At the same time, using vampires bugged me to no end because at times they required so much micromanagement for optimum use. Any time I wanted to move a vamp across my empire, I knew that if I put them on a long goto command, it would take twice as much time for them to get to their destination than if I moved them manually one turn at a time, casting haste every turn. When I was building vamps in many cities and collecting them at one point for an invasion, I was pretty much forced to babysit every vamp every turn, or they would delay the whole invasion by 5 or 8 turns.

Obviously it's not just vamps that have this micromanagement problem, but any unit with Body I, including arcane units, centaurs (with sprint), and haste-trained Amurite units.

I have no idea how feasible this is, but I suggest that the code for goto commands be modified so that units with haste automatically cast it at the end of each auto-movement turn if the destination has not been reached yet. Obviously there are issues with this simplistic idea (for example, if multiple units on the same tile can cast haste, which one does?), but I feel these are not unresolvable. And it would save SO much micromanagement. With this change, you could even group a large stack with one body-trained adept, put them on goto, and the adept would auto-cast haste to speed the whole stack. Who wouldn't love that?
 
Well, now that you can que commands by holding the shift key, this isn't so important now, but queing the commands still requires a fair bit of time to do. And the que gets deleted if the units levels up or does anything not in the que. (Like get ambushed. You have to re-que every thing)
 
I've never done the queue commands thing; I always forget about it. Can you queue spells as well? Can you put move-spell-move-spell etc in the queue? That would help a lot (though it would as you said be very time-consuming, and would still in my opinion be inferior to an auto-haste).
 
I second the origional posters idea as my favored civ is currently calabim and ive noticed this problem with the vamps.
 
I think you can que spells. I once qued my worker to build five difrent mines. You just hold dowm shift, tell the unit to move, select build mine, tell to move and so on. However, long ques with arcane units, heroes, or workers in the mod that gives workers promotions and exp can be tricky, because it seems leveling up breakes ques.
Edit: Xienwolf's worker mod, which is included in Fall Further. Thats it!
 
I completely agree. I wouldn't go so far as calling it "auto-haste" - why not just make the Haste spell give the Haste (or whatever its buff is called) promotion to all units in the stack - and this promotion doesn't have a 100% chance at the end of the turn to wear off, but instead wears off if its stack doesn't contain a caster capable of casting a spell this turn and having Body 1. This would basically make it perma-Haste, meaning all you'd have to do is keep one unit with Haste in your stack and not cast with that one every turn (which shouldn't be a problem at all, considering we are talking mostly about moving bigger armies).

As an alternative idea, consider making "autocast" spells possible, like many spells in Warcraft III. This would mean that Body 1 grants you the spells "Haste" and "Autocast Haste". I know nothing about modding in general and about it in this game specifically, but it would work somewhat like this:
By casting "Autocast Haste", the caster loses the ability to cast spells and gains the "Autocast Haste" promotion or something like that. The caster also gains a new spell called "Turn autocast off" or something like that, whcih reverts the unit back to its normal state. As long as this autocast is activated, however, the caster basically behaves like a non-caster, but at the beginning (or end or whenever it fits) its stack gains the Haste promotion. This could actually be done with many spells and would reduce micro-managing stacks with casters a lot.

Haste is probably one of the most micro-intensive spells in the game, and that doesn't seem to be appropriate for an adept level spell. I can understand having to recast Archmage spells every turn, but I don't understand having to cast Haste in 5 stacks every turn...

Besides, doing it like this would remove the "feature" of always walking at least two tiles because you can use Haste when your units have 0/1 movement (and the whole stack gets +1 movement point in this turn for 1/2, even if you just walked onto a hill/forest without roads which would normally require two movement points).

And in addition to all that, the AI might even be able to use something like that. After all, it absolutely likes handling huge stacks, and now these huge stacks might actually be able to keep up some of the buffs, e.g. move a bit faster than at a snail's pace...

If this is realisable without major performance/programming problems, Haste and probably many other similar spells should definitely be changed this way.
 
I completely agree. I wouldn't go so far as calling it "auto-haste" - why not just make the Haste spell give the Haste (or whatever its buff is called) promotion to all units in the stack - and this promotion doesn't have a 100% chance at the end of the turn to wear off, but instead wears off if its stack doesn't contain a caster capable of casting a spell this turn and having Body 1. This would basically make it perma-Haste, meaning all you'd have to do is keep one unit with Haste in your stack and not cast with that one every turn (which shouldn't be a problem at all, considering we are talking mostly about moving bigger armies).

That sounds like basically what I did in the first release on my modmod.

Hmm...I'm starting to think that that method (which requires a pyPerTurn function on the hasted promotion, which for every unit with the promotion much check the units in the same stack as it every turn) might be a bit too processor intensive. The easiest/least processor intensive way would probably be to make the Haste spell give the caster a "Hasting" promotion that casts Haste every turn, perhaps with a chance to wear off, like Crown of Brilliance. You could check to see if the caster had casted first too. If you don't care about controlling exactly where you use it, you could just make this a passive effect of Body 1.

Actually, you could easily expand that to work like you second idea. It would be hard to make it disallow any spell but "Turn Autocast Off," but very simple to make the autocasting promotion wear off whenever you cast anything else.
 
Yes, you could make the Haste promotion permanent and add an "unhaste" spell that removes it. I would wonder why you would ever want to unhaste though, unless you made the promotions have a downside too.

You could also add an "auto haste" promotion that casts haste through a PyPerTurn effect and is permanent until removed by a "stop autohasting" spell. Is it fair though for the unit to get to cast haste and another spell? If the casting effect also makes the unit unable to cast another spell and you can't control when it occurs it could be a problem. So long as "stop autohasting" has <bHasCasted>0</bHasCasted> and <bIgnoreHasCasted>1</bIgnoreHasCasted> it should be fine.


I think you have convinced me to add an auto cast X spell for all the spells that grant temporary promotions. (Note that most, if not all, promotions granted by spell in my version will be temporary, most randomly wearing off. I see no reason for Courage to last forever.) These spells will grant promotions that cast via pyPerTurn effects (and set the unit as having casted already) and will be removed by casting (unless I find that the forced casting of the pyPerTurn effect removes it. That would cause problems). Hmm, would it be a problem to make a single "Stop Auto Casting" spell that has no requirements and does nothing? Casting it should still remove all promotions with <bRemovedByCasting>1 </bRemovedByCasting>. I don't want to add a seperate spell for every autocasting promotion, and I definitely don't want a python prereq that has to check every unit for promotions every turn. I would say I'd only make only available to UNITCOMBAT_ADEPT so it wouldn't clutter all the units commands, but then untis trained by Govannon might be unable to stop autocasting.

I might actually go ahead and add this for almost every spell in the game. Of course, there are some for which it makes absolutely no sense, and others for which it might be overpowered (I think that autocasting could get around the limits on permanent summons)

Hopefully this many python calls won't slow things down too much.
 
I think a perma-haste with some slight combat downsides would be a good thing. Oh say, a slight -% to combat power in return for the extra movement.
 
Besides, doing it like this would remove the "feature" of always walking at least two tiles because you can use Haste when your units have 0/1 movement (and the whole stack gets +1 movement point in this turn for 1/2, even if you just walked onto a hill/forest without roads which would normally require two movement points).

Hmmm, I'm pretty sure this issue is already resolved. I'm almost positive that casting haste after moving onto a forest hill or a desert hill or similar has no effect (or actually, it makes units' movement go from 0/1 to 0/2).

I love the idea of haste working like inspiration or wall of stone, where units are hasted as long as a Body I caster is present.
 
When I play Calabim I edit the haste promotion to be permanent. Haste annoys me far too much otherwise.
 
Hmmm, I'm pretty sure this issue is already resolved. I'm almost positive that casting haste after moving onto a forest hill or a desert hill or similar has no effect (or actually, it makes units' movement go from 0/1 to 0/2).

I love the idea of haste working like inspiration or wall of stone, where units are hasted as long as a Body I caster is present.

I am 100% certain that it does have an effect. In my current game, I am taking advantage of haste by moving my stacks into forest (going from 1/1 move to 0/1) and then casting haste to go from 0/1 to 1/2, thereby letting me move an additional space.

I seem to recall that this was the case for a while, then was "fixed", but is now back to the old way. I could be wrong on that, though.

Oh, also I agree with your second point (working like Inspiration). However, I think that would require a Python hit for every unit that has Haste on every turn, which might eat up too many resources.
 
I think that sometimes it can give you extra movement and sometimes it can't. Iirc, you can get extra movement in forests or hill, but not both or jungles.


Yeah, I had it do a python check for every hasted unit before and it worked fine, but I do think it was slowing things down. (I did at least use a break statement so that it didn't have to keep checking after it knew there was at least 1 body1 caster in the stack) Having a pyPerTurn effect recast the spell would be more efficient, especially when you have large stacks.
 
Top Bottom