subtledoctor Posted September 6, 2023 Author Share Posted September 6, 2023 (edited) 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 March 8 by subtledoctor Quote Link to comment
polytope Posted September 6, 2023 Share Posted September 6, 2023 (edited) 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 September 6, 2023 by polytope Quote Link to comment
Endarire Posted September 6, 2023 Share Posted September 6, 2023 (edited) 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? Edited September 6, 2023 by Endarire Quote Link to comment
subtledoctor Posted September 6, 2023 Author Share Posted September 6, 2023 I think the aim is to balance the spell as used by the player, without hampering the performance of the AI. Quote Link to comment
polytope Posted September 7, 2023 Share Posted September 7, 2023 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. Quote Link to comment
Salk Posted September 7, 2023 Share Posted September 7, 2023 (edited) 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 September 7, 2023 by Salk Quote Link to comment
polytope Posted September 7, 2023 Share Posted September 7, 2023 (edited) 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 September 7, 2023 by polytope Quote Link to comment
subtledoctor Posted September 7, 2023 Author Share Posted September 7, 2023 4 hours ago, polytope said: 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 Yes when I said the aim is to “not hamper the AI,” this would count as hampering the AI. Quote Link to comment
subtledoctor Posted September 7, 2023 Author Share Posted September 7, 2023 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. Quote Link to comment
polytope Posted September 7, 2023 Share Posted September 7, 2023 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. Quote Link to comment
subtledoctor Posted September 7, 2023 Author Share Posted September 7, 2023 (edited) 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 September 7, 2023 by subtledoctor Quote Link to comment
Salk Posted September 7, 2023 Share Posted September 7, 2023 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. Quote Link to comment
subtledoctor Posted September 7, 2023 Author Share Posted September 7, 2023 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… Quote Link to comment
Salk Posted September 7, 2023 Share Posted September 7, 2023 Just now, subtledoctor said: I suppose SR could implement it on the old engine via some extra subspells - the same way SR fixes Spell Shield itself. Hmmm… That would be desirable for classic game players like myself. Quote Link to comment
Bartimaeus Posted September 7, 2023 Share Posted September 7, 2023 Merely negating, whether you're casting Haste or Slow, feels too much like you're casting a really lousy dispel that only affects haste/slow - particularly problematic for Slow, which is already gated behind a saving throw. Quote Link to comment
Recommended Posts
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.