Is haste supposed to do this? (Several bugs)
[Deleted User]
Posts: 207
Haste seems to double poison damage (not instantaneous poison damage), regeneration rate, blade barrier/globe of blades castings per round. That intended? I think it makes sense given the lore of that spell, but it probably wasn't intended.
EDIT: Oh, and I just noticed it seems to double the speed of the casting graphics, thus halving their duration.
EDIT: Oh, and I just noticed it seems to double the speed of the casting graphics, thus halving their duration.
Post edited by [Deleted User] on
1
Comments
If you played a Shadowdancer before, it's quite obvious, because if you're hasted, you can backstab twice per round using ONLY your stealth ability, without needing invisibility potions. Activating the thief aggressive script is also useful to see this. Deactivate stealth after your character automatically enter stealth, and about 3 seconds later, it will enter stealth again (or try to).
*I just noticed the two potions you have in your quick item slots are inaccessible, that is, you need to unequip and equip them to be able to use them as a quick item. So I guess that's another bug I have to report. EDIT: It seems after loading the "chapter start" save, this problem vanishes. Don't know why.
I did not test the actual spell. There must be some difference between the spell and oil of speed, since you can use the latter in conjunction with Offensive Spin (I don't know the specifics), which is another possible bug, too. I'm pretty sure it applies regardless. I'll update this message as soon as I test it, just in case.
UPDATE: Both Haste and Improved Haste cause this.
During my tests I noticed I was casting Haste and Improved Haste with scrolls faster than normal. They have a casting time of 3, but after hasting my character, it looks a lot more like 2. Created a "nalia15" and added her to the party to compare spells hasted & "unhasted". Plus, the hasted character begins the casting before the "unhasted." (Don't know if the last one is a bug or not).
Tried casting Wail of the Banshee from a scroll. It has a casting time of 9, but after hasting the character, it looks more like 4. Pretty big difference.
The speed of the casting graphics was doubled as well, but it matches the modified casting time of those scrolls. So unlike with memorized spells, the casting time actually matches the "hasted" casting graphics.
Tested in BG2EE TOB.
In short, these are the bugs I noted:
- Poison damage over time and regeneration are doubled (or at least significantly increased) while hasted.
- Globe of Blades and Blade Barrier get two castings per round after being hasted.
- Stealth cooldown is halved while hasted.
- Casting graphics are much faster. In the case of scrolls, the casting time of the spell matches the duration of the faster casting graphics, so you can cast them significantly faster.
- Oil of speed is stackable with Offensive Spin. (Oil must be used AFTER Offensive Spin) -> EDIT: Nope, BEFORE.
- Haste does not always add an extra attack. Sometimes it just adds half. For example 5/2 -> 3, instead of 7/2.
I believe @Galactygon is best placed to deal as he knows more in this area than I do. I've had a quick look through Redmine though as one bit sounded familiar, and found two references.
Internal report 6492 was done for Oil > spin but would not cover the scenario you identified.
Internal report 4296 has been reported for haste 5/2 -> 3.
Thanks
The only new one is the Stealth cooldown, since that was added by Beamdog, the original game had no cooldown.
During the next 4 rounds, the character's movement rate doubles and gains a +2 bonus to hit and damage rolls as well as an extra attack per round. All attacks deal maximum damage for the duration. Offensive Spin may not be used in conjunction with the Haste or Improved Haste spells.
This oil increases the movement and combat capabilities of the imbiber by 100%. Thus, a movement rate of 9 becomes 18, and a character normally able to attack once in a round attacks twice. However, this does not reduce spellcasting time. The duration of the effect is 1 hour.
STATISTICS:
Special: Doubles movement and attack rates
Duration: 1 hour
Weight: 1
When you have 5/2 APR, you make 3 attacks in one round, then 2 attacks in the next, an average of 2.5 attacks per 6 seconds.
While hasted, you would make 2 attacks in one round, then 1 attack in the next, but because those rounds process twice as fast, it results in 3 attacks over 6 seconds. It's simply not possible to have 1/2 APR increments while hasted.
The other option for the Haste spell is to not use the Haste effect, and just increase APR, Movement and Weapon Speed separately, but then you will not get a full/any APR increase if you already have 9/2 or 5 APR, so its still not ideal.
Thanks for clearing this up, I have now repro-d the stealth cooldown speedup for hasted characters as a separate ticket
@Kjeron
Thanks for submitting a comprehensive report, I really appreciate it. I've been able to reproduce and report the following issues:
- Oil of Speed haste type and description should match.
- Slow should not decrease regeneration rate.
The following issues have already been reported earlier:- Stealth cooldown should not be sped up when hasted
- Casting graphics should not be sped up and be in sync with actual casting time when hasted
- Casting time from scrolls and ForceSpell(Point)(RES) actions should not be sped up when hasted.
- Repeating effects (poison, disease, regeneration, opcode 232, apply repeating eff) should not be sped up when hasted.
I cannot reproduce the following issues:- Slow does not decrease poison damage rate.
- Slow does not decrease repeating .eff application rate (i.e. Insect Plague).
Offensive Spin dispels effects from POTN14.itm (as opcode 321 dispels based on parent resource as recorded at 0x94 of EFF V2 which can be either an .itm or .spl) so this works as intended when I try to reproduce it. Most of the other effects (i.e. casting speed, stealth cooldown, 1 spell/2 rounds increase) are intentional when the character is slowed.Well, it looks like I was wrong. You have to apply it before and not after Offensive Spin. Then, they stack. Looks like Offensive Spin prevents you from using Oil of Speed but it does not dispel the effects of oil of speed.
Poison is definitely slowed if the poisoned creature has a slow effect. I used Nalia to slow and Dorn to poison to check this. I don't know if the total damage is affected though. I'll update this as soon as I check. Should be 1 poison damage per second, but if slowed, the damage is about every 2 seconds.
UPDATE: @Galactygon It's exactly as @kjeron said, a max level poison weapon inflicts only 6 instantaneous damage plus 12 points of damage, one every two seconds (should be a total of 24, 1 every second). also confirmed Blade Barrier is slowed as well (1 casting per 2 rounds), when your character is slowed. I don't know why you couldn't.
I haven't tried Insect Plague, though, but if you two say it should be the same, then, it should happen as well.
The same applies for the repeating effect opcode 272. Insect Plague applies damage once every 2 seconds and is not affected by slow. Creeping Doom applies damage once every second and is affected by slow.
I've reported the following issues internally:
- Disease/poison effects should not be affected by slow
- Cast spell on condition (opcode 232) should not be affected by slow
- Apply repeating eff (opcode 272) should not be affected by slow
Now I see the issue with Offensive Spin. In SoD it does not stack with Oil of Speed. In BG2EE many of these effects are missing. Reporting.It would certainly be worth it to fix this at an engine level.
Fixes to the Oil of Speed were attempted (function to match description), but reverted after complaints, so hopefully the next update will alter the description to match the function instead.
I don't know anything regarding progress or possibility of engine-related fixes to haste/slow.
Some more details regarding the attack cycle, and it's interaction with haste/slow:
- Attacks cycle over a 2-Round period. This doesn't change while hasted or slowed, what does change is the length of those rounds, to either 3 seconds (Haste) or 12 seconds (Slow).
- The "Attacks per Round" displayed in the Record/Inventory screens incorrectly lists the number of "Attacks per 6 seconds" while hasted, instead of "Attacks per round" as it does while slowed or normal.
- (Exception: "The Chesley Crusher +2", and any item using "Set Final" APR - as it overrides the display with whatever value you give it, correct or not, for example): - Assuming the character's attacks for the entire 2-round period, they will always make an even number of attacks over that 2-round period. When a character's APR is 3/2, it is still making 2 attacks each round, but the last attack in the second round will auto-miss. These Auto-Misses are NOT cosmetic, they will trigger "AttackedBy()" and will terminate invisibility. They work similar to how attacking a helpless target results in an Auto-Hit - they have no attack roll, and no chance for a Critical Hit or Miss, but they do have priority over an Auto-Hit.
- The character will always make at least one Main-hand attack over the 2-round period (including Auto-Miss attacks), will always make an equal number of Off-hand attacks each round (0 or 1), and will always make their Off-hand attacks in the same attack slot each round: If the 2-round period contains no Auto-Miss attacks, the Off-hand attacks will always be last, otherwise they will always be second-to-last (which can be first, if there are only 2 attacks that round). If they don't have enough attacks to keep them equal between rounds, Off-hand attacks will be replaced with Main-hand attacks.
- If haste type is 'Improved', or if slowed, Attacks for each Round will remain unchanged, effectively doubling/halving the number of "Hit-able" attacks per 6 seconds.
- If haste type is 'Normal', "Hit-able" Attacks for each 2-Round will be reduced to half, rounded up, added to 1, then split evenly between the two rounds, with an Auto-Miss attack added if necessary to keep it equal. This effectively rounds down then increases by one the number of "Hit-able" attacks per 6 seconds.
- If haste type is 'Weak', "Hit-able" Attacks for each 2-Round period will be reduced to half, rounded up, then split evenly between the two rounds, with an Auto-Miss attack added if necessary to keep it equal. This effectively rounds up the number of functional attacks per 6 seconds.
An updated chart: "M" = Mainhand attack
"O" = Off-hand attack (Mainhand attack if no off-hand weapon is present)
"-" = Auto-Miss attack
These "Auto-Miss" attacks also show up occasionally when your APR increases mid-round.
(Disclaimer: all references above to "6 seconds" may in fact be "100 ticks", and subsequently 50 ticks (haste) / 200 ticks (slow).)
http://blog.beamdog.com/2018/10/october-26-livestream-recap.html
HASTE
This spell makes allied creatures function at double their normal movement rate and gain a -2 initiative bonus. They also receive a bonus to their number of attacks per round, which sometimes is one extra attack per round and other times is half an attack per round. A creature moving at 6 and attacking once per round would move at 12 and attack twice per round. But a creature attacking 3/2 times per round would only increase its attacking speed to 2 per round.
Other effects:
• Halves the casting time of scrolls, but not of memorized spells
• Halves the cooldown of Stealth.
• Increases the speed of poison and disease damage dealt over time.
• Doubles the speed of regeneration rate and the number of hits per round of Summon Insects, Creeping Doom, Blade Barrier and Globe of Blades.
This spell is not cumulative with other similar magic. It negates the effects of a Slow spell.
SLOW
A Slow spell causes creatures to move, attack and cast spells at half of their normal rates. Slowed creatures have an Armor Class and attack penalty of -4. It negates Haste.
Other effects:
• Halves the speed of regeneration rate, and the hits per round of Summon Insects, Creeping Doom, Blade Barrier and Globe of Blades.
• Decreases the speed of poison and disease damage dealt over time.
• Doubles the cooldown of Stealth.
I've skipped the part about combining several instances of each spell because it seems self evident to me: You cast Haste on a creature, now it's hasted. Then you cast Slow and it's back to normal speed. Then you cast Haste again and it's hasted again. It seems very intuitive to me, unless I've missed something about how this works.
However, the -4 AC/THAC0 from slow always applies, as those are not tied to the slow effect itself.
I would reword "attacks and casts spells at half of their normal rates" to
"attacks, uses items, and casts spells at half of their normal rates. In addition, spells take twice as long to cast."
A spell's "rate" (once/round) doesn't have anything to do with it's cast speed, which leaves it ambiguous as to whether or not it's affected (it is).
For instance, I understand that if you cast 2 consecutive slow spells on a creature, the second one has no effect, so the "slow quantity" is still 1. Therefore, if you then cast Haste on that creature, it's enough to cancel its slow effect. Whereas, as you explained, Slow + Contagion would raise the "slow quantity" to 2 and a single haste would not cancel the slow effect. But what if you cast Haste twice? Does it work then?
Checking descriptions, I've come up with a list of sources of haste and slow:
Slow: Slow, Contagion, Dark taint, Dolorous decay, Holy Word, Unholy Word, Writhing Fog, Set Special Snare, attacks of some monsters and weapons.
Haste: Haste, Improved Haste, Sphere of Chaos, Oil of Speed, some wearable items.
In an extreme example, a creature is struck by all the possible sources of slow: the 7 spells, plus the trap, plus a slowing attack from a monster and another one from a weapon. Does it get a "slow quantity" of 10 (7+1+1+1)? If so, does it mean that it needs hasting from 10 different sources to cancel the slow effects? Or 10 hastings from the same source?
Wow, this is tricky...
By default, 10x haste from one source is no different from 10x different sources of haste with regards to it's quantity, so it wouldn't matter. However, the source of haste/slow does matter with regards to how individual sources block(haste) or remove(slow) each other.
The "variants" of the "Slow Spell" are coded to remove any prior instances of themselves and all other such variants, as otherwise their -4 AC/THAC0 penalties would stack. In BG/SOD, that's: (Golem Slow, Wish Slow, Surge Slow, Beholder Slow, Vortex Web, and Wizard Slow).
Writhing Fog blocks itself from affecting a creature more than once per round, regardless of if they save against it. (This one is an odd exception - though it's new so that may be why.)
Any other type/source of slow will stack(quantity) with themselves, each other, one Writhing Fog, and one "Slow Spell".
The Improved Haste spell will block further instances of the Level 3 Haste spell (Wizard or Ranger version) while it's in effect (but only those two spells, not any other variants). Otherwise, all haste sources stack(quantity), including [Improved/Normal] Whirlwind Attack (which is a haste effect).
(This part gets far more complicated once mods are considered)
HASTE
This spell is not cumulative with other similar magic. It negates the effects of a Slow spell. However, if a creature has been affected by Slow several times, it takes several castings of Haste to cancel the slow effect.
SLOW
This spell is not cumulative with other similar magic. It negates the effects of a Haste spell. However, if a creature has been affected by Haste several times, it takes several castings of Slow to cancel the haste effect.
I know this is inaccurate (at best), but, assuming I got all of this right, I'd say it's a decent compromise between accuracy and readability.
What is a weak Haste?
Aside from mods, it's only used in the appropriately named "RUNRUN.spl", which certain creatures are apply to themselves during "run-away" blocks of their scripts (Cespenar, for example).