Jump to content

Photo

Project: Spells Missing Ability Headers


54 replies to this topic

#1 CamDawg

CamDawg

    ALL GLORY TO THE HYPNOTOAD

  • Gibberling Poobah
  • 9684 posts
  • Gender:Not Telling

Posted 07 April 2005 - 03:14 AM

Bioware got really lazy when it came to spells that have abilities dependent on caster level. Call Lightning (sppr302) is a good example: damage is supposed to be 2d8 + 1d8/caster level. However, looking at the spell you'll notice that the spell has ability headers for level 1 and then skips to levels 6-18. The level 1 ability actually does 7d8 damage (i.e. level 5 equivalent).

Since characters begin the game at 89000 or 161000 XP, Bioware never planned for characters to be casting spells at low levels. Because of this, many spells lack low-level headers. However, this does not account for characters that dual-class or characters that have been level-drained. In this example, any cleric below level 6 would use the level 1 header, which would cast Call Lightning at the equivalent of a level 5 caster. (Call Lightning is also missing its level 19 and 20 headers, but that's a different bugfix. :) ) As an aside, this is especially acute when these spell files are used in Tutu, so this is something that should be dropped into Tutufix.

We need someone to peruse the spell files and check the available headers to see where else Bioware has been lazy.

Why is this Hypnotoad video so popu... ALL GLORY TO THE HYPNOTOAD.


#2 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 07 April 2005 - 07:48 AM

Who loves WeiDU?
Barkskin [SPPR202.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 4



Goodberry [SPPR207.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 6



Spiritual Hammer [SPPR213.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 4



Draw Upon Holy Might [SPPR214.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 6



Animate Dead [SPPR301.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 10



Call Lightning [SPPR302.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Glyph of Warding [SPPR304.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Holy Smite [SPPR313.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Unholy Blight [SPPR314.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Free Action [SPPR403.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Protection from Lightning [SPPR407.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Protection from Evil 10' Radius [SPPR408.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Death Ward [SPPR409.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Poison [SPPR411.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 10



Holy Power [SPPR412.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Flame Strike [SPPR503.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Iron Skins [SPPR506.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 8



Champion's Strength [SPPR507.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Chaotic Commands [SPPR508.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Magic Resistance [SPPR509.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Greater Command [SPPR512.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Righteous Magic [SPPR513.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Mass Cure [SPPR514.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Slay Living [SPPR599.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Aerial Servant [SPPR601.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 12



Conjure Fire Elemental [SPPR605.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 12



Shield of the Archons [SPPR701.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Conjure Earth Elemental [SPPR702.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Fire Storm [SPPR705.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Symbol, Fear [SPPR706.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Sunray [SPPR707.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Finger of Death [SPPR708.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Confusion [SPPR709.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 16



Regeneration [SPPR711.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Symbol, Stun [SPPR718.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Summon Deva [SPPR726.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 14



Summon Fallen Deva [SPPR727.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 14



Aura of Flaming Death [SPPR730.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 14



Friends [SPWI107.SPL]:

  Apparent spell level: 1

  Initial ability level: 1

  Second ability level: 3



Magic Missile [SPWI112.SPL]:

  Apparent spell level: 1

  Initial ability level: 1

  Second ability level: 3



Blur [SPWI201.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 4



Melf's Acid Arrow [SPWI211.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 6



Mirror Image [SPWI212.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 4



Strength [SPWI214.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 4



Ray of Enfeeblement [SPWI221.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 4



Chaos Shield [SPWI222.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 5



Mirror Image [SPWI298.SPL]:

  Apparent spell level: 2

  Initial ability level: 1

  Second ability level: 4



Flame Arrow [SPWI303.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 10



Fireball [SPWI304.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Haste [SPWI305.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Lightning Bolt [SPWI308.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Monster Summoning I [SPWI309.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Skull Trap [SPWI313.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Vampiric Touch [SPWI314.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Minor Spell Deflection [SPWI318.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Protection from Fire [SPWI319.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Protection from Cold [SPWI320.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Hold Undead [SPWI324.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Melf's Minute Meteors [SPWI325.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Lightning Bolt [SPWI399.SPL]:

  Apparent spell level: 3

  Initial ability level: 1

  Second ability level: 6



Confusion [SPWI401.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 6



Fire Shield (Blue) [SPWI403.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Improved Invisibility [SPWI405.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Minor Globe of Invulneribility [SPWI406.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Monster Summoning II [SPWI407.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Stoneskin [SPWI408.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Emotion [SPWI411.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Greater Malison [SPWI412.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Polymorph Self [SPWI416.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Fire Shield (Red) [SPWI418.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Spider Spawn [SPWI423.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Farsight [SPWI424.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Wizard Eye [SPWI425.SPL]:

  Apparent spell level: 4

  Initial ability level: 1

  Second ability level: 8



Animate Dead [SPWI501.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Cone of Cold [SPWI503.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 11



Monster Summoning III [SPWI504.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Shadow Door [SPWI505.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Hold Monster [SPWI507.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Protection from Normal Weapons [SPWI511.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Protection from Electricity [SPWI512.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Lower Resistance [SPWI514.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Conjure Lesser Fire Elemental [SPWI516.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Protection from Acid [SPWI517.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Phantom Blade [SPWI518.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Conjure Lesser Air Elemental [SPWI520.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Conjure Lesser Earth Elemental [SPWI521.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Sunfire [SPWI523.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Immunity: Abjuration [SPWI590.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Immunity: Conjuration [SPWI591.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Immunity: Divination [SPWI592.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Immunity: Enchantment [SPWI593.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Immunity: Illusion [SPWI594.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Immunity: Evocation [SPWI595.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Immunity: Necromancy [SPWI596.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Immunity: Alteration [SPWI597.SPL]:

  Apparent spell level: 5

  Initial ability level: 1

  Second ability level: 10



Globe of Invulnerability [SPWI602.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 13



Tenser's Transformation [SPWI603.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 13



Protection from Magic Energy [SPWI606.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 13



Mislead [SPWI607.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 13



Pierce Magic [SPWI608.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 13



Improved Haste [SPWI613.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 13



Chain Lightning [SPWI615.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 14



Contingency [SPWI617.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 15



Spell Deflection [SPWI618.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 13



Wyvern Call [SPWI619.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 13



Conjure Fire Elemental [SPWI620.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 12



Conjure Air Elemental [SPWI621.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 15



Conjure Earth Elemental [SPWI622.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 15



Carrion Summons [SPWI623.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 12



Summon Nishruu [SPWI624.SPL]:

  Apparent spell level: 6

  Initial ability level: 1

  Second ability level: 13



Spell Turning [SPWI701.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Protection from the Elements [SPWI702.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Project Image [SPWI703.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Mordenkainen's Sword [SPWI716.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Summon Efreeti [SPWI717.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Summon Djinni [SPWI718.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Summon Hakeashar [SPWI719.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 16



Control Undead [SPWI720.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Mass Invisibility [SPWI721.SPL]:

  Apparent spell level: 7

  Initial ability level: 1

  Second ability level: 15



Protection from Energy [SPWI803.SPL]:

  Apparent spell level: 8

  Initial ability level: 1

  Second ability level: 17



Simulacrum [SPWI804.SPL]:

  Apparent spell level: 8

  Initial ability level: 1

  Second ability level: 17



Pierce Shield [SPWI805.SPL]:

  Apparent spell level: 8

  Initial ability level: 1

  Second ability level: 17



Incendiary Cloud [SPWI810.SPL]:

  Apparent spell level: 8

  Initial ability level: 1

  Second ability level: 17



Symbol, Fear [SPWI811.SPL]:

  Apparent spell level: 8

  Initial ability level: 1

  Second ability level: 18



Abi-Dalzim's Horrid Wilting [SPWI812.SPL]:

  Apparent spell level: 8

  Initial ability level: 1

  Second ability level: 17



Symbol, Stun [SPWI816.SPL]:

  Apparent spell level: 8

  Initial ability level: 1

  Second ability level: 18



Symbol, Stun [SPWI898.SPL]:

  Apparent spell level: 8

  Initial ability level: 1

  Second ability level: 17



Symbol, Fear [SPWI899.SPL]:

  Apparent spell level: 8

  Initial ability level: 1

  Second ability level: 17



Summon Planetar [SPWI923.SPL]:

  Apparent spell level: 9

  Initial ability level: 1

  Second ability level: 18



Summon Dark Planetar [SPWI924.SPL]:

  Apparent spell level: 9

  Initial ability level: 1

  Second ability level: 18
I'll whip up something to compare to the actual required caster level if I get the time or there's sufficient interest. Regardless, this probably won't be a bug in most cases (helping Tutu is nowhere near sufficient as a reason to start patching files in a BG2 bug fix-pack, IMO).

#3 SimDing0

SimDing0

    Extremely cute and fluffy and lovely.

  • Modders
  • 1319 posts
  • Gender:Male

Posted 07 April 2005 - 08:00 AM

It's a BG2 bugfix too though, because you can easily end up casting at low levels if you dual-class or are level-drained.

#4 CamDawg

CamDawg

    ALL GLORY TO THE HYPNOTOAD

  • Gibberling Poobah
  • 9684 posts
  • Gender:Not Telling

Posted 07 April 2005 - 08:12 AM

Cool, thanks devSin. Now it's just the easy part of fixing them.

It's a BG2 bugfix too though, because you can easily end up casting at low levels if you dual-class or are level-drained.

<{POST_SNAPBACK}>


However, this does not account for characters that dual-class or characters that have been level-drained.

<{POST_SNAPBACK}>


:)

Why is this Hypnotoad video so popu... ALL GLORY TO THE HYPNOTOAD.


#5 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 07 April 2005 - 08:14 AM

The code:
COPY_EXISTING_REGEXP ~^SPPR[1-7].+\.SPL$~ ~OVERRIDE~

  READ_STRREF 0x08 ~spellName~

  READ_LONG 0x34 ~apparentSpellLevel~ ELSE 0x01

  READ_LONG 0x64 ~abilitiesOffset~ ELSE 0x72

  READ_SHORT 0x68 ~numberOfAbilities~ ELSE 0x00

  PATCH_IF (~%numberOfAbilities%~ > 0x01)

  BEGIN

    READ_SHORT ~%abilitiesOffset%~ + 0x10 ~spellLevel1~ ELSE 0x01

    READ_SHORT ~%abilitiesOffset%~ + 0x38 ~spellLevel2~ ELSE 0x02

    SET ~requiredLevel~ = (~%apparentSpellLevel%~ = 0x01) ? 1 :

                          (~%apparentSpellLevel%~ = 0x02) ? 3 :

                          (~%apparentSpellLevel%~ = 0x03) ? 5 :

                          (~%apparentSpellLevel%~ = 0x04) ? 7 :

                          (~%apparentSpellLevel%~ = 0x05) ? 9 :

                          (~%apparentSpellLevel%~ = 0x06) ? 11 : 14

    PATCH_IF (~%spellLevel2%~ != (~%spellLevel1%~ + 0x01))

         AND (~%spellLevel2%~ > (~%requiredLevel%~ + 0x01))

    BEGIN

      PATCH_PRINT ~%spellName% [%SOURCE_FILE%]:

  Apparent spell level: %apparentSpellLevel%

  Required caster level: %requiredLevel%

  Initial ability level: %spellLevel1%

  Second ability level: %spellLevel2%~

    END

  END

BUT_ONLY_IF_IT_CHANGES



COPY_EXISTING_REGEXP ~^SPWI[1-9].+\.SPL$~ ~OVERRIDE~

  READ_STRREF 0x08 ~spellName~

  READ_LONG 0x34 ~apparentSpellLevel~ ELSE 0x01

  READ_LONG 0x64 ~abilitiesOffset~ ELSE 0x72

  READ_SHORT 0x68 ~numberOfAbilities~ ELSE 0x00

  PATCH_IF (~%numberOfAbilities%~ > 0x01)

  BEGIN

    READ_SHORT ~%abilitiesOffset%~ + 0x10 ~spellLevel1~ ELSE 0x01

    READ_SHORT ~%abilitiesOffset%~ + 0x38 ~spellLevel2~ ELSE 0x02

    SET ~requiredLevel~ = (~%apparentSpellLevel%~ = 0x01) ? 1 :

                          (~%apparentSpellLevel%~ = 0x02) ? 3 :

                          (~%apparentSpellLevel%~ = 0x03) ? 5 :

                          (~%apparentSpellLevel%~ = 0x04) ? 7 :

                          (~%apparentSpellLevel%~ = 0x05) ? 9 :

                          (~%apparentSpellLevel%~ = 0x06) ? 12 :

                          (~%apparentSpellLevel%~ = 0x07) ? 14 :

                          (~%apparentSpellLevel%~ = 0x08) ? 16 : 18

    PATCH_IF (~%spellLevel2%~ != (~%spellLevel1%~ + 0x01))

         AND (~%spellLevel2%~ > (~%requiredLevel%~ + 0x01))

    BEGIN

      PATCH_PRINT ~%spellName% [%SOURCE_FILE%]:

  Apparent spell level: %apparentSpellLevel%

  Required caster level: %requiredLevel%

  Initial ability level: %spellLevel1%

  Second ability level: %spellLevel2%~

    END

  END

BUT_ONLY_IF_IT_CHANGES
And the list:
Goodberry [SPPR207.SPL]:

  Apparent spell level: 2

  Required caster level: 3

  Initial ability level: 1

  Second ability level: 6



Draw Upon Holy Might [SPPR214.SPL]:

  Apparent spell level: 2

  Required caster level: 3

  Initial ability level: 1

  Second ability level: 6



Animate Dead [SPPR301.SPL]:

  Apparent spell level: 3

  Required caster level: 5

  Initial ability level: 1

  Second ability level: 10



Poison [SPPR411.SPL]:

  Apparent spell level: 4

  Required caster level: 7

  Initial ability level: 1

  Second ability level: 10



Confusion [SPPR709.SPL]:

  Apparent spell level: 7

  Required caster level: 14

  Initial ability level: 1

  Second ability level: 16



Friends [SPWI107.SPL]:

  Apparent spell level: 1

  Required caster level: 1

  Initial ability level: 1

  Second ability level: 3



Magic Missile [SPWI112.SPL]:

  Apparent spell level: 1

  Required caster level: 1

  Initial ability level: 1

  Second ability level: 3



Melf's Acid Arrow [SPWI211.SPL]:

  Apparent spell level: 2

  Required caster level: 3

  Initial ability level: 1

  Second ability level: 6



Chaos Shield [SPWI222.SPL]:

  Apparent spell level: 2

  Required caster level: 3

  Initial ability level: 1

  Second ability level: 5



Flame Arrow [SPWI303.SPL]:

  Apparent spell level: 3

  Required caster level: 5

  Initial ability level: 1

  Second ability level: 10



Cone of Cold [SPWI503.SPL]:

  Apparent spell level: 5

  Required caster level: 9

  Initial ability level: 1

  Second ability level: 11



Chain Lightning [SPWI615.SPL]:

  Apparent spell level: 6

  Required caster level: 12

  Initial ability level: 1

  Second ability level: 14



Contingency [SPWI617.SPL]:

  Apparent spell level: 6

  Required caster level: 12

  Initial ability level: 1

  Second ability level: 15



Conjure Air Elemental [SPWI621.SPL]:

  Apparent spell level: 6

  Required caster level: 12

  Initial ability level: 1

  Second ability level: 15



Conjure Earth Elemental [SPWI622.SPL]:

  Apparent spell level: 6

  Required caster level: 12

  Initial ability level: 1

  Second ability level: 15



Summon Hakeashar [SPWI719.SPL]:

  Apparent spell level: 7

  Required caster level: 14

  Initial ability level: 1

  Second ability level: 16



Symbol, Fear [SPWI811.SPL]:

  Apparent spell level: 8

  Required caster level: 16

  Initial ability level: 1

  Second ability level: 18



Symbol, Stun [SPWI816.SPL]:

  Apparent spell level: 8

  Required caster level: 16

  Initial ability level: 1

  Second ability level: 18

Edited by devSin, 07 April 2005 - 09:40 AM.


#6 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 07 April 2005 - 08:26 AM

It's a BG2 bugfix too though, because you can easily end up casting at low levels if you dual-class or are level-drained.

But you still have to be the minimum caster level, no? So if you have to be level n to cast a spell, and the spell effects change every three levels, then you'll only need a level 1 (acts as level n, since you can't even cast the spell until level n), and then n + [3,6,9,...]. BioWare always started spell abilities at level 1 (perhaps this is required for ForceSpell() type actions or creatures that have non-player classes; most likely it was just the logical thing to do). It's not a bug unless the player can actually cast the spell where the effects would be applied at an inappropriate level (if you could actually cast Call Lightning at level 1, for instance, but it was doing level 5 damage until level 6, then that would be a bug).

At least, that's the way I understand it.

Edited by devSin, 07 April 2005 - 08:31 AM.


#7 SimDing0

SimDing0

    Extremely cute and fluffy and lovely.

  • Modders
  • 1319 posts
  • Gender:Male

Posted 07 April 2005 - 08:29 AM

What happens with scrolls?

#8 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 07 April 2005 - 08:37 AM

Scrolls should either be cast instantly (using the level 1 ability, which is the level n ability), in which case the spell is cast with the minimum effect parameters (as appropriate for the spell level and the required caster level), or at a pre-determined level (I think BioWare used level 10 for all of these, so about half will use the level 1 ability effects anyway). There is no contingency for having spells a player is unable to cast (so there is no "real" level 1 ability for Symbol, Death, for instance); any allowed class can cast a scroll of any level, and the effects will most likely be the minimum level at which the spell can legitimately be cast. This is the same for other types of items that have cast spell effects; I do not believe this to be a bug (otherwise, most scrolls would be worthless).

Unless your question was alluding to something other than my previous post, in which case, I'm just rambling.

Edited by devSin, 07 April 2005 - 08:39 AM.


#9 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 07 April 2005 - 09:30 AM

And, based on all that, my list of potential issues:
Animate Dead [SPPR301.SPL]: Uses Level 9 effects for Levels 5-9

Cone of Cold [SPWI503.SPL]: Uses Level 10 effects for Level 9 and Level 10

Conjure Air Elemental [SPWI621.SPL]: Uses Level 14 effects for Levels 12-14

Conjure Earth Elemental [SPWI622.SPL]: Uses Level 14 effects for Levels 12-14

Summon Hakeashar [SPWI719.SPL]: Uses Level 15 effects for Level 14 and Level 15
Someone will need to verify, but these all look to me like bugs.

#10 Kish

Kish
  • Modders
  • 786 posts
  • Gender:Not Telling
  • Location:Rohnert Park, CA

Posted 07 April 2005 - 10:17 AM

Bioware got really lazy when it came to spells that have abilities dependent on caster level. Call Lightning (sppr302) is a good example: damage is supposed to be 2d8 + 1d8/caster level. However, looking at the spell you'll notice that the spell has ability headers for level 1 and then skips to levels 6-18. The level 1 ability actually does 7d8 damage (i.e. level 5 equivalent).

Since characters begin the game at 89000 or 161000 XP, Bioware never planned for characters to be casting spells at low levels. Because of this, many spells lack low-level headers.

<{POST_SNAPBACK}>

devSin is correct. It has more to do with "below fifth level no one can cast a third level druid spell." Although my observations are far from comprehensive, of the spells I looked at, that was always the case--first an effect for level 1 which applies to the lowest level at which it's possible to cast the spell, then effects for each level at which something about the spell changed.

Scrolls are supposed to function as if cast by the wizard/sorcerer/cleric/druid who created them, at the time they were created (so if you create a scroll at level 10 and then gain five levels, it still works as if cast by a 10th-level caster, it doesn't track your rising level and become more powerful).
"You are what you do. Choose again, and change."
--Miles Vorkosigan

"The really unforgivable acts are committed by calm men in beautiful green silk rooms, who deal death wholesale, by the shipload, without lust, or anger, or desire, or any redeeming emotion to excuse them but cold fear of some pretended future. But the crimes they hope to prevent in the future are imaginary. The ones they commit in the present--they are real."
--Aral Vorkosigan

#11 Ghreyfain

Ghreyfain

    Gots hat

  • Modders
  • 224 posts
  • Gender:Male
  • Location:Calgary, Canada

Posted 09 April 2005 - 03:18 PM

All scrolls are intended to be cast at level 10, unless there's either a bug anywhere, or it's specifically intended otherwise.

And yeah, if you take a look at any spell; fireball, skull trap, lightning bolt, their first usable incarnation is at level 5, so why bother making an effect for levels 1-4? I think the reason they make the first usable effect work for level 1 is in case they mistakenly code an enemy as level 1. An ogre-mage, say, who has fireball manually added to his repertoire, or perhaps cast via script.

I put forward that making fixes for instances in which it will never ever have an effect should not have effort wasted on it. Much like writing content for the CG Korgan, or the Romanced Valygar. I forget who did that, and which one it was. Quitch and Korgan, I think? Anyways, the point still stands.

#12 Kish

Kish
  • Modders
  • 786 posts
  • Gender:Not Telling
  • Location:Rohnert Park, CA

Posted 09 April 2005 - 04:25 PM

I put forward that making fixes for instances in which it will never ever have an effect should not have effort wasted on it.  Much like writing content for the CG Korgan, or the Romanced Valygar.  I forget who did that, and which one it was.  Quitch and Korgan, I think?  Anyways, the point still stands.

<{POST_SNAPBACK}>

Yes, I agree.
"You are what you do. Choose again, and change."
--Miles Vorkosigan

"The really unforgivable acts are committed by calm men in beautiful green silk rooms, who deal death wholesale, by the shipload, without lust, or anger, or desire, or any redeeming emotion to excuse them but cold fear of some pretended future. But the crimes they hope to prevent in the future are imaginary. The ones they commit in the present--they are real."
--Aral Vorkosigan

#13 devSin

devSin
  • Modders
  • 3017 posts
  • Gender:Male

Posted 09 April 2005 - 04:54 PM

The 5 I listed are legitimate bugs that need fixing, though.

EDIT: My patches
COPY_EXISTING ~SPPR301.SPL~ ~OVERRIDE~
  WRITE_EVALUATED_ASCII 0x9e ~%SOURCE_RES%B~ #8
  WRITE_EVALUATED_ASCII 0xc6 ~%SOURCE_RES%B~ #8
  WRITE_EVALUATED_ASCII 0xee ~%SOURCE_RES%B~ #8
  WRITE_EVALUATED_ASCII 0x0116 ~%SOURCE_RES%B~ #8
  WRITE_EVALUATED_ASCII 0x013e ~%SOURCE_RES%B~ #8
  WRITE_EVALUATED_ASCII 0x0166 ~%SOURCE_RES%B~ #8
  WRITE_BYTE 0x018d 0x03
  WRITE_BYTE 0x019c 0x37
  WRITE_BYTE 0x01cd 0x38
  WRITE_BYTE 0x01fd 0x38
  WRITE_BYTE 0x02bc 0x2d
  READ_LONG 0x64 ~abilitiesOffset~ ELSE 0x72
  READ_SHORT 0x68 ~numberOfAbilities~ ELSE 0x00
  READ_ASCII ~%abilitiesOffset%~ ~cloneAbility~ ELSE ~~ (40)
  FOR (index = 0x04; index > 0x00; index = index - 0x01) BEGIN
    INSERT_BYTES ~%abilitiesOffset%~ + 0x28 0x28
    WRITE_EVALUATED_ASCII ~%abilitiesOffset%~ + 0x28 ~%cloneAbility%~ #40
    WRITE_SHORT ~%abilitiesOffset%~ + 0x38 ~%index%~ + 0x05
  END
  WRITE_LONG 0x6a ~%effectsOffset%~ + 0xa0
  WRITE_SHORT 0x68 ~%numberOfAbilities%~ + 0x04
  READ_LONG 0x6a ~effectsOffset~ ELSE 0x72
  READ_SHORT 0x70 ~numberOfEffects~ ELSE 0x00
  READ_ASCII ~%effectsOffset%~ ~cloneEffect~ ELSE ~~ (144)
  READ_SHORT ~%abilitiesOffset%~ + 0x1e ~numberOfAbilityEffects~ ELSE 0x00
  SET ~numberOfEffects~ = ~%numberOfEffects%~ + ~%numberOfAbilityEffects%~
  FOR (index = 0x04; index > 0x00; index = index - 0x01) BEGIN
    INSERT_BYTES ~%effectsOffset%~ + (~%numberOfEffects%~ * 0x30) 0x90
    WRITE_EVALUATED_ASCII ~%effectsOffset%~ + (~%numberOfEffects%~ * 0x30) ~%cloneEffect%~ #144
  END
  SET ~probability~ = 0x4b
  FOR (READ_SHORT 0x68 numberOfAbilities ELSE 0x00; numberOfAbilities > 0x01; numberOfAbilities = numberOfAbilities - 0x01) BEGIN
    FOR (index = numberOfEffects; index > 0x00; index = index - 0x01) BEGIN
      READ_BYTE ~%effectsOffset%~ + 0x12 ~probabilityOne~ ELSE 0x00
      READ_BYTE ~%effectsOffset%~ + 0x13 ~probabilityTwo~ ELSE 0x00
      WRITE_BYTE ~%effectsOffset%~ + 0x12 (~%probabilityTwo%~ = 0x00) ? ~%probability%~ : ~%probabilityOne%~
      WRITE_BYTE ~%effectsOffset%~ + 0x13 (~%probabilityOne%~ = 0x64) ? ~%probability%~ + 0x01 : ~%probabilityTwo%~
      SET ~effectsOffset~ = ~%effectsOffset%~ + 0x30
    END
    SET ~probability~ = ~%probability%~ - 0x05
  END
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~SPWI503.SPL~ ~OVERRIDE~
  WRITE_SHORT 0x80 0x0c
  READ_LONG 0x64 ~abilitiesOffset~ ELSE 0x72
  READ_SHORT 0x68 ~numberOfAbilities~ ELSE 0x00
  READ_ASCII ~%abilitiesOffset%~ ~cloneAbility~ ELSE ~~ (40)
  INSERT_BYTES ~%abilitiesOffset%~ + 0x28 0x28
  WRITE_EVALUATED_ASCII ~%abilitiesOffset%~ + 0x28 ~%cloneAbility%~ #40
  WRITE_SHORT ~%abilitiesOffset%~ + 0x38 0x0a
  WRITE_LONG 0x6a ~%effectsOffset%~ + 0x28
  WRITE_SHORT 0x68 ~%numberOfAbilities%~ + 0x01
  READ_LONG 0x6a ~effectsOffset~ ELSE 0x72
  READ_SHORT 0x70 ~numberOfEffects~ ELSE 0x00
  READ_ASCII ~%effectsOffset%~ ~cloneEffect~ ELSE ~~ (96)
  READ_SHORT ~%abilitiesOffset%~ + 0x1e ~numberOfAbilityEffects~ ELSE 0x00
  SET ~numberOfEffects~ = ~%numberOfEffects%~ + ~%numberOfAbilityEffects%~
  INSERT_BYTES ~%effectsOffset%~ + (~%numberOfEffects%~ * 0x30) 0x60
  WRITE_EVALUATED_ASCII ~%effectsOffset%~ + (~%numberOfEffects%~ * 0x30) ~%cloneEffect%~ #96
  WRITE_LONG 0x0286 0x04
  WRITE_LONG 0x029e 0x04
  WRITE_LONG 0x032e 0x06
  WRITE_LONG 0x035e 0x05
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING_REGEXP ~^SPWI62[12]\.SPL$~ ~OVERRIDE~
  READ_LONG 0x64 ~abilitiesOffset~ ELSE 0x72
  READ_SHORT 0x68 ~numberOfAbilities~ ELSE 0x00
  READ_ASCII ~%abilitiesOffset%~ ~cloneAbility~ ELSE ~~ (40)
  INSERT_BYTES ~%abilitiesOffset%~ + 0x28 0x28
  WRITE_EVALUATED_ASCII ~%abilitiesOffset%~ + 0x28 ~%cloneAbility%~ #40
  WRITE_SHORT ~%abilitiesOffset%~ + 0x38 0x0e
  INSERT_BYTES ~%abilitiesOffset%~ + 0x28 0x28
  WRITE_EVALUATED_ASCII ~%abilitiesOffset%~ + 0x28 ~%cloneAbility%~ #40
  WRITE_SHORT ~%abilitiesOffset%~ + 0x38 0x0d
  WRITE_LONG 0x6a ~%effectsOffset%~ + 0x50
  WRITE_SHORT 0x68 ~%numberOfAbilities%~ + 0x02
  READ_LONG 0x6a ~effectsOffset~ ELSE 0x72
  READ_SHORT 0x70 ~numberOfEffects~ ELSE 0x00
  READ_ASCII ~%effectsOffset%~ ~cloneEffect~ ELSE ~~ (288)
  READ_SHORT ~%abilitiesOffset%~ + 0x1e ~numberOfAbilityEffects~ ELSE 0x00
  SET ~numberOfEffects~ = ~%numberOfEffects%~ + ~%numberOfAbilityEffects%~
  INSERT_BYTES ~%effectsOffset%~ + (~%numberOfEffects%~ * 0x30) 0x0120
  WRITE_EVALUATED_ASCII ~%effectsOffset%~ + (~%numberOfEffects%~ * 0x30) ~%cloneEffect%~ #288
  INSERT_BYTES ~%effectsOffset%~ + (~%numberOfEffects%~ * 0x30) 0x0120
  WRITE_EVALUATED_ASCII ~%effectsOffset%~ + (~%numberOfEffects%~ * 0x30) ~%cloneEffect%~ #288
  SET ~effectLength~ = 0x02d0
  FOR (READ_SHORT 0x68 numberOfAbilities ELSE 0x00; numberOfAbilities > 0x00; numberOfAbilities = numberOfAbilities - 0x01) BEGIN
    FOR (index = numberOfEffects; index > 0x00; index = index - 0x01) BEGIN
      READ_LONG ~%effectsOffset%~ + 0x0e ~currentLength~ ELSE 0x00
      WRITE_LONG ~%effectsOffset%~ + 0x0e (~%currentLength%~ > 0x3c) ? ~%effectLength%~ : ~%currentLength%~
      SET ~effectsOffset~ = ~%effectsOffset%~ + 0x30
    END
    SET ~effectLength~ = ~%effectLength%~ + 0x3c
  END
BUT_ONLY_IF_IT_CHANGES

COPY_EXISTING ~SPWI719.SPL~ ~OVERRIDE~
  READ_LONG 0x64 ~abilitiesOffset~ ELSE 0x72
  READ_SHORT 0x68 ~numberOfAbilities~ ELSE 0x00
  READ_ASCII ~%abilitiesOffset%~ ~cloneAbility~ ELSE ~~ (40)
  INSERT_BYTES ~%abilitiesOffset%~ + 0x28 0x28
  WRITE_EVALUATED_ASCII ~%abilitiesOffset%~ + 0x28 ~%cloneAbility%~ #40
  WRITE_SHORT ~%abilitiesOffset%~ + 0x38 0x0f
  WRITE_LONG 0x6a ~%effectsOffset%~ + 0x28
  WRITE_SHORT 0x68 ~%numberOfAbilities%~ + 0x01
  READ_LONG 0x6a ~effectsOffset~ ELSE 0x72
  READ_SHORT 0x70 ~numberOfEffects~ ELSE 0x00
  READ_ASCII ~%effectsOffset%~ ~cloneEffect~ ELSE ~~ (48)
  READ_SHORT ~%abilitiesOffset%~ + 0x1e ~numberOfAbilityEffects~ ELSE 0x00
  SET ~numberOfEffects~ = ~%numberOfEffects%~ + ~%numberOfAbilityEffects%~
  INSERT_BYTES ~%effectsOffset%~ + (~%numberOfEffects%~ * 0x30) 0x30
  WRITE_EVALUATED_ASCII ~%effectsOffset%~ + (~%numberOfEffects%~ * 0x30) ~%cloneEffect%~ #48
  WRITE_LONG 0x0198 132
BUT_ONLY_IF_IT_CHANGES
You can tell when I start getting tired of Baldur's Gate II bugs when my patches come out half-assed like this. Hopefully, this will give enough info to Cam for him to whip up razzle-dazzle patches without having to troll throught the individual spells.

Edited by devSin, 09 April 2005 - 05:01 PM.


#14 SimDing0

SimDing0

    Extremely cute and fluffy and lovely.

  • Modders
  • 1319 posts
  • Gender:Male

Posted 09 April 2005 - 04:57 PM

So I open up NI to look at the SPLs, and the very first thing I encounter is Grease's duration not accurately reflecting the description (it says 3 rounds + 1/level, but you actually get a duration of 10). Off to a good start!

#15 CamDawg

CamDawg

    ALL GLORY TO THE HYPNOTOAD

  • Gibberling Poobah
  • 9684 posts
  • Gender:Not Telling

Posted 09 April 2005 - 05:02 PM

I had bumbled across one of the legit ones a long time ago, and vaguely remembered it. I starting thumbing through the files, not even considering that a third level spell can't even be cast by someone below fifth level, which is a rather embarassing oversight. :)

In a vague attempt to actually spot in a wolf amidst my cries, the PC's innate Vampiric Touch and DUHM need some low-level headers as well.

Why is this Hypnotoad video so popu... ALL GLORY TO THE HYPNOTOAD.




Reply to this topic



  


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users