[(BGEE, BG2) bug] Monster summoning I&II duration
The durations for monster summoning I & II are incorrect; I from the get-go and II once you start casting at levels 16+.
// duration for monster summoning i, ii incorrect when cast at many levels
COPY_EXISTING ~spwi309.spl~ ~override~
~spwi407.spl~ ~override~
READ_LONG 0x64 "abil_off" ELSE 0
READ_SHORT 0x68 "abil_num" ELSE 0
READ_LONG 0x6a "fx_off" ELSE 0
PATCH_IF ("%SOURCE_RES%" STRING_COMPARE_CASE "spwi309" = 0) THEN BEGIN
SET "base_dur" = 12
SET "open_lvl" = 5
END ELSE BEGIN
SET "base_dur" = 18
SET "open_lvl" = 7
END
FOR (index = 0 ; index < abil_num ; index = index + 1) BEGIN
READ_SHORT ("%abil_off%" + 0x10 + (0x28 * "%index%")) "min_lev"
READ_SHORT ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num"
READ_SHORT ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx"
PATCH_IF ("%min_lev%" = 1) THEN BEGIN
SET "min_lev" = "%open_lvl%"
END
FOR (index2 = 0 ; index2 < abil_fx_num ; index2 = index2 + 1) BEGIN
READ_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "duration"
PATCH_IF ("%duration%" > 5) BEGIN // filter out brief and/or instant effects like playing sounds and animations
WRITE_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ("%base_dur%" + ("%min_lev%" * 6))
END
END
END
BUT_ONLY_IF_IT_CHANGES
Post edited by Bhryaen on
0
Comments
Durations set, checked only first and last headers, but we trust loops
Verified with my stopwatch. >_>
Tried to test this from level 1 with a Wild Mage, but Neera was uncooperative with her wild surges.
@CamDawg, @Avenger_teambg
Just one thing though, how is Monster Summoning I supposed to behave when cast from a scroll? I always got a duration of 8 rounds.
8 rounds is correct. MS I is cast at level 6 from the scroll.
http://forum.baldursgate.com/discussion/comment/34015/#Comment_34015
By CamDawg's time accounting, the 8 rounds duration would be 48 sec.
I tested both spells from casting and scroll... using @Tanthalas' stopwatch technique. ;-) I timed it from the instant of monster appearance to the instant of vanishing. Because it was there, I threw in MSIII (SPWI504): I repeated the tests several times since, well... couldn't believe the mixed results... I also tried retesting backward from III to I because I thought there might be some odd stacking bug in the game, but no, those were consistent results...
So I'm assuming that only casting MSII from a scroll yields the correct duration: 60 sec. Not sure why the disparity between scrolls and spellcasting either...
EXPECTED:
Either change the MS scroll/ spell descriptions to the time disparity (it does seem a better duration the higher the MS rank) or- more of a bugfix- get all the spells to last only 60 sec each regardless of casting source.
I looked more into this and it looks like the spell has a different description once its in your spellbook. From your data that seems to be working fine.
The scrolls should all last the same though as they all say they have a 1 minute duration. Not sure if this wasn't something changed in BG2.
Ahh... thanks...
The spellbook spell description shows it as: Since the caster was Mage Lvl 9, this means the times should've been So, good. The casted spells are timed correctly. Since this is not a thread for correcting scroll durations, it's good for a...
Confirmed Fixed.
I'll make a new thread for scroll durations, I suppose...
SCRL1L, SCRL2A and SCRL2G all have in their text description in BGEE that the duration is 12 minutes (1 minute).
Yeah, my bad... Scrolls threw me off. I had no idea it would be different between scroll and casted spell parameters...
a) spells & spell scrolls should be using the same strings
b) times in the game should never be given in minutes
Minutes are the least useful time measurement in the game--rounds are easy to suss because you can auto-pause after each one (or count six seconds), and hours are tracked by the game clock (which gives days & hour on hover). There's no in-game way to count minutes, and with the compressed time scale you can't use your wristwatch either.
/off to rant in the strings thread
No, MSII is cast as if you were level 7, MSIII is cast as if you were level 9 so:
MSII 3 + 7 = 10 rounds 60 sec
MSIII 4 + 9 = 13 rounds 78 sec
Which are the values you got.
Good- then all has been put in motion that requires it...