Jump to content

RFC: Haste


Recommended Posts

On 9/6/2023 at 2:30 AM, polytope said:

disagree, if the AI can't find a single worthwhile target for Haste it shouldn't cast it.

I’m not talking about what scripts should do. I’m talking about how to make the spell work best with scripts as they exist right now. I have no idea what current AI scripts look like, my only data point is that scripts right now were written on the assumption that Haste is AoE. And therefore, changing the targeting parameters of the spell will likely be worse for unchanging AI scripts than for human players who can react dynamically to the change. 

Edited by subtledoctor
Link to comment
6 hours ago, Salk said:

My two cents here about Haste being AoE or not is that unless there is compelling reason to make it single target, I think we should stick to the canon AD&D 2nd Ed. version of the spell and keep it AoE. Even if it may be in some circumstances less convenient for the AI than it is for the player.

Yes, but in PnP it ages the recipient by an entire year, that's a tradeoff that prevents overuse of the spell. In this cRPG however, where things are streamlined a bit that feature - which ensures Haste is a spell for emergencies or career-defining special occasions - was removed. Compared to other wizard buffs of neighboring levels (Strength, Luck, Improved Invisibility, Spirit Armor) which are single target with minimal drawbacks if any (can't target other beneficial spells on an Improved Invisible character, chance of minor damage with Spirit Armor) it seems appropriate for Haste as implemented in game to also be single target.

The alternative of reducing the duration seems worse, because it makes it easier to simply wait it out when the AI uses it. For instance with a 5-round duration it can almost be waited out with one of the ProMW or Mantle type spells, not even needing to kite the hasted enemy all over the map (which is admittedly difficult, if they're hasted and you aren't, easier with the boots of speed).

1 hour ago, subtledoctor said:

I’m not talking about what scripts should do. I’m talking about how to make the spell work best with scripts as they exist right now. I have no idea what current AI scripts look like, my only data point is that scripts right now were written on the assumption that Haste is AoE. And therefore, changing the targeting parameters of the spell will likely be worse for unchanging AI scripts than for human players who can react dynamically to the change. 

Well, DavidW said on page 1 that currently only fighter/mages get it in SCS and cast it upon themselves, so would be indifferent to this change. In vanilla game scripts I believe the check is usually for SPECIFICS.ids i.e. a scripting trigger like NearestMyGroupOfType().

I'm pretty sure though (between various AI mods and vanilla), that the most frequent thing the AI checks for regarding Haste is STATE_HASTED for the purpose of either knowing whether an ally has been buffed with it or deciding to throw a Remove Magic at enemies, so that opcode shouldn't be removed from the spell.

Edited by polytope
Link to comment
11 hours ago, Endarire said:

To clarify regarding vanilla haste and attempting to balance it for SR, are we more concerned about players using it against the AI or the AI using it against players/parties?

10 hours ago, subtledoctor said:

I think the aim is to balance the spell as used by the player, without hampering the performance of the AI

Surely the main thing is to ensure nothing is broken, i.e. the AI doesn't get caught in an unrealistic loop where it can't detect the Hasted state and pointlessly reuses Haste spells/oils, a slightly less problematic issue is dispel checks, and the AI failing to recognize Hasted characters as targets for Remove Magic.

The balancing of the spell relative to other low level wizard buffs is the main project of the Spell Revisions mod, although I haven't played with it for a while, I do try to support compatibility on the basis of its popularity. Some time ago it was decided by the authors that Haste needed a nerf to be in line with competing 3rd level spells, I'm arguing that of all aspects that could be changed in this regard of Haste, the opcode itself is the worst choice, the duration second worst (radically changing the duration of a spell also leads to the AI doing inappropriate things, as would substantial changes to the casting time), this leaves the number of targets affected as the least harmful obvious solution in terms of balance and compatibility.

Link to comment

The Slow spell does not dispel the effects of Haste, right?

If that is correct, couldn't we get to nerf a bit the Haste spell indirectly by having Slow automatically dispel its effects? And to not make the Slow spell too powerful we could make so that Slow would dispel Haste but not Improved Haste.

Just an idea...

Edited by Salk
Link to comment
1 hour ago, Salk said:

If that is correct, couldn't we get to nerf a bit the Haste spell indirectly by having Slow automatically dispel its effects? And to not make the Slow spell too powerful we could make so that Slow would dispel Haste but not Improved Haste.

It wouldn't solve the crucial issue of AI not recognizing Haste or how to dispel/reverse it, as in the current SR.

On this subject, the opcodes #16 and #40 for Haste and Slow perfectly negate each other in the vanilla game, although the spells/items that apply them don't always.

Example: Character receives a Haste spell, then is Slowed by a mage, or even a mustard jelly, now they're moving at normal speed, then they're slowed again, perhaps by a stone golem, or a confused PC with the flail of ages, now they're moving at Slowed speed, then they use an oil of speed, back to normal speed, then the party mage casts Improved Haste on them, now they're not only Hasted, but actually Improved Hasted with double normal attack rate, with all these effects overlapping.

The problem is that in vanilla Slow spells and (some) items apply additional penalties to armor class and THAC0 concurrent with the Slowed state, those aren't negated by Haste.

Another issue is that on fixpacked/EE installs, Improved Haste protects from regular Haste but as a result if an Improved Hasted char is Slowed you can't use a Haste spell to simply "cure" it, the protection from Haste should be stripped by Slow, as for the additional debuffs of Slow spells these should either be removed by Haste or tbh, just get rid of this aspect to the spell, Slowing the target to half normal apr/move and the associated initiative penalty as well as the doubling of spell casting times is already very powerful, no need to make it more so.

Edited by polytope
Link to comment
42 minutes ago, polytope said:

Example: Character receives a Haste spell, then is Slowed by a mage, or even a mustard jelly, now they're moving at normal speed, then they're slowed again, perhaps by a stone golem, or a confused PC with the flail of ages, now they're moving at Slowed speed, then they use an oil of speed, back to normal speed, then the party mage casts Improved Haste on them, now they're not only Hasted, but actually Improved Hasted with double normal attack rate, with all these effects overlapping.

This is not what happens. Slow dispels and replaces Haste. Haste dispels and replaces Slow. 

I made a mod to make it work as you describe, using the Spell Shield effect. 

Link to comment

Well yeah, there's a difference between suboptimal performance of an AI enemy versus brokenness. The AI is always somewhat hampered, relatively speaking, to the player.

19 minutes ago, subtledoctor said:

This is not what happens. Slow dispels and replaces Haste. Haste dispels and replaces Slow. 

I made a mod to make it work as you describe, using the Spell Shield effect. 

It's definitely what happens in vanilla prior to Spell Revisions, Hasting a Slowed character puts them at normal speed, not hasted. As does Slowing a Hasted character.

Link to comment
4 hours ago, polytope said:

It's definitely what happens in vanilla prior to Spell Revisions, Hasting a Slowed character puts them at normal speed, not hasted. As does Slowing a Hasted character.

You made me doubt myself, so I just tested - you are mistaken. I created a character in unmodded BGEE v2.6.6, and had her cast Haste on herself. Then I attacked Phlydia, who I set to cast Slow instead of her usual Acid Arrow. My Hasted character failed her save, and went straight from Hasted to Slowed. 

The same thing happens in reverse: if I let Phlydia Slow me and then I cast Haste, I go immediately from Slowed to Hasted. There is no intermediate state. The only way to go from Hasted/Slowed to normal speed is 1) Dispel Magic, or 2) waiting out the duration. 

Spell Revisions retains this behavior. As I say, my “Random Tweaks” mod includes a component to make them actually cancel each other, rather than each completely overriding the other. (In the past I have raised the idea of SR making this change, but it was not popular.)

Edited by subtledoctor
Link to comment
5 minutes ago, subtledoctor said:

Spell Revisions retains this behavior. As I say, my “Random Tweaks” mod includes a component to make them actually cancel each other, rather than each completely overriding the other. (In the past I have raised the idea of SR making this change, but it was not popular.)

Weird. I find it very reasonable instead.

Link to comment
31 minutes ago, Salk said:

Weird. I find it very reasonable instead.

Also problematic because my tweak uses the Spell Shield opcode, which works on the EE engine but is buggy on the old engine. SR needs to support both, so I made a tweak to install over SR  for EE players who want that change. 

I suppose SR could implement it on the old engine via some extra subspells - the same way SR fixes Spell Shield itself. Hmmm…

Link to comment

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...