Jump to content

Manual labor spell-check


devSin

Recommended Posts

Note that in the implentation fields, I've left everything at the engine values, so for example a duration would be 6 rather than 1 round, AoE 256 rather than 30 . I'll note discrepancies when I spot them, though I'm sure I'll probably miss some.

 

Description                             Implentation
SPWI101 - Grease
School: Conjuration                     Conjuration
Range: 10 yards                         25 (should be 30)
Duration: 3 rounds +1 round/level       10 (should be 18 (+6/level if you decide to do that))
Casting Time: 1                         9 (should be 1)
Area of Effect: 30'x30' square area     256
Saving Throw: Special                   neg., spells, +2 bonus

SPWI102 - Armor
School: Conjuration                     Conjuration
Range: 0                                1
Duration: 9 hours                       3000 (should be 2700)
Casting Time: 1 round                   9
Area of Effect: caster                  caster
Saving Throw: None                      none
Effect: AC 6                            AC 6

SPWI103 - Burning Hands
School: Alteration                      Alteration
Range: 5 feet                           2 (should be 5)
Duration: Instantaneous                 instant
Casting Time: 1                         1
Area of Effect: 60 degree arc           ?
Saving Throw: 1/2                       1/2, spells
Effect: 1d3 damage +2/level max +10     1d3 +2/level max +10

SPWI104 - Charm Person                  
School: Enchantment/Charm  Enchantment                    
Range: Visual range of caster           60
Duration: 5 rounds                      30
Casting Time: 1                         1
Area of Effect: 1 person                1 person
Saving Throw: Neg.                      neg., spells +3 bonus

SPWI105 - Color Spray
School: Alteration                      Alteration
Range: 30 feet                          15 (should be 30)
Duration: Special / 5 rounds            30 
Casting Time: 1                         1
Area of Effect: 60 degree arc           250 (should be 256)
Saving Throw: Special                   neg., spells -3 penalty, 

SPWI106 - Blindness
School: Illusion                        Illusion
Range: Visual range of caster           40 (should be 60, or alter description)
Duration: 10 turns                      600
Casting Time: 2                         2
Area of Effect: 1 creature              1 creature
Saving Throw: Neg.                      neg., spells

SPWI107 - Friends 
School: Enchantment                     Enchantment
Range: 0                                1
Duration: 1d4 rounds +1 round/level     30 +12/2 levels (needs values for levels 2, 4, 6, etc plus change "1d4" in description)
Casting Time: 1                         1
Area of Effect: caster                  caster
Saving Throw: Special                   none
Effect: +6 CHA                          +6 CHA

SPWI108 - Protection From Petrification 
School: Abjuration                      Abjuration
Range: 0                                1
Duration: 5 turns                       300
Casting Time: 1                         1
Area of Effect: Target                  1 creature
Saving Throw: None                      none

SPWI110 - Identify
School: Divination                      Divination
Range: 0                                1
Duration: Instantaneous                 This spell seems to be hardcoded,
Casting Time: Special                   as the only ability bears no
Area of Effect: 1 item                  resemblence to the actual effect.
Saving Throw: None

SPWI111 - Infravision 
School: Divination                      Divination
Range: Visual range of caster           30 (should be 60, or alter description)
Duration: 10 turns                      600
Casting Time: Special                   1 (don't see how it's particularly special)
Area of Effect: 1 Creature              1 creature
Saving Throw: None                      none

SPWI112 - Magic Missile 
School: Evocation 	 Invocation
Range: Visual range of caster           50 (should be 60, or alter description)
Duration: Instantaneous                 instant
Casting Time: 1                         1
Area of Effect: 1 creature              1 creature
Saving Throw: None                      none
Effect: 1d4+1 damage/2 levels max 5d4+5 2d2+1 damage /2 levels (description is correct)

SPWI113 - Protection From Evil 
School: Abjuration                      Abjuration
Range: Touch                            1
Duration: 2 rounds/level                12/level
Casting Time: 1                         1
Area of Effect: Creature touched        1 creature
Saving Throw: None                      none

SPWI114 - Shield
School: Evocation                       Invocation
Range: 0                                1
Duration: 5 turns                       300
Casting Time: 1                         1
Area of Effect: caster                  caster
Saving Throw: None                      none

SPWI115 - Shocking Grasp
School: Alteration                      Alteration
Range: Touch                            1
Duration: Special                       6/level
Casting Time: 1                         1
Area of Effect: Touched creature        self
Saving Throw: None                      none
Effect: 1d8 +1/level                    1d8 +1/level

SPWI116 - Sleep
School: Enchantment/Charm               Enchantment
Range: 30 yards                         60 (should be 90 - 3 feet to the yard, not 2)
Duration: 5 rounds/level                30/level
Casting Time: 1                         1
Area of Effect: Special                 area
Saving Throw: Neg.                      neg., death/poison, -3 penalty

SPWI117 - Chill Touch
School: Necromancy                      Necromancy
Range: 0                                1
Duration: 1 turn                        60
Casting Time: 1                         1
Area of Effect: The caster              self
Saving Throw: Neg.                      neg., spells
Effect: 1d8 damage, -2 THAC0            1d8 damage, -2 THAC0

SPWI118 - Chromatic Orb
School: Evocation                       Invocation
Range: 30 yards                         50 (should be 90)
Duration: special / various             various, and a couple are wrong.  1st level: should be 6, not 10.
                                        5th level: should be 18, not 20.
Casting Time: 1
Area of Effect: One creature 
Saving Throw: special
Effects: 1st level - blind              reduces attack rolls, saving throws and AC by 4 (description is wrong)
        12th level - 2d16 damage        2d8 damage (effect is wrong)

SPWI119 - Larloch's Minor Drain
School: Necromancy                      Necromancy
Range: 30 yards                         30 (should be 90 - range is feet, not yards)
Duration: Special / 1 turn              60
Casting Time: 1                         1
Area of Effect: Target creature         1 creature
Saving Throw: None                      none

SPWI120 - Reflected Image
School: Illusion/Phantasm               Illusion
Range: 0                                1
Duration: 3 rounds + 1/level            18 +1/level
Casting Time: 1                         1
Area of Effect: Caster                  self
Saving Throw: None                      none

SPWI123 - Find Familiar
School: Conjuration/Summoning           Conjuration
Range: n/a                              20
Duration: special                       60
Casting Time: 1 round                   3 (should be 9)
Area of Effect: 1 familiar              area
Saving Throw: Special                   none

SPWI124 - Nahal's Reckless Dweomer 
School: Invocation/Evocation            Conjuration (worth fixing?)
Range: Special                          20
Duration: Special                       permanent
Casting Time: 5                         3 (should be 5)
Area of Effect: Special                 none
Saving Throw: Special                   none

SPWI125 - Spook
School: Illusion/Phantasm               Illusionist
Range: 30 ft.                           60 (should be 30)
Duration: 3 rounds                      18
Casting Time: 1                         1
Area of Effect: 1 creature              1 creature
Saving Throw: Neg.                      neg., spells

Link to comment

Level 2 spells:

 

SPWI201 - Blur                          
School: Illusion/Phantasm               Illusion
Range: 0                                1
Duration: 4 rounds +2 rounds/level      24 +12/level
Casting Time: 2                         2
Area of Effect: The caster              self
Saving Throw: None                      none

SPWI202 - Detect Evil                   
School: Divination                      Divination
Range: Visual range of caster           1
Duration: Instant                       60
Casting Time: 2                         2
Area of Effect: Sight                   self
Saving Throw: None                      none 

SPWI203 - Detect Invisibility           
School: Divination                      Divination
Range: 0                                1
Duration: Instant                       instant
Casting Time: 2                         2
Area of Effect: 70 foot radius          2000
Saving Throw: None                      none 

SPWI205 - Horror
School: Necromancy                      Necromancy
Range: 25 yards                         40
Duration: 1 turn                        18 (should be 60)
Casting Time: 2                         2
Area of Effect: 30 foot cube            256
Saving Throw: Neg.                      neg., spells, +2 bonus

SPWI206 - Invisibility
School: Illusion/Phantasm               Illusion
Range: Touch                            1
Duration: Special / 24 hours            7200
Casting Time: 2                         2
Area of Effect: Creature touched        creature
Saving Throw: None                      none

SPWI207 - Knock
School: Alteration                      Alteration
Range: Visual range of caster           20
Duration: Instant                       instant
Casting Time: 1                         1
Area of Effect: Locked door or chest    creature
Saving Throw: None                      none

SPWI208 - Know Alignment
School: Divination                      Divination
Range: 10 yards                         30
Duration: instant                       30
Casting Time: 1 round                   2 (should be 9)
Area of Effect: 1 creature              1 creature
Saving Throw: None                      none

SPWI209 - Luck
School: Enchantment/Charm               Enchantment
Range: 10 yards                         15 
Duration: 3 rounds                      20 (should be  18)
Casting Time: 2                         2
Area of Effect: 1 creature              1 creature
Saving Throw: None                      none

SPWI210 - Resist Fear
School: Abjuration                      Abjuration
Range: 10 yards                         30
Duration: 1 hour                        300
Casting Time: 1                         1
Area of Effect: 30' radius              256
Saving Throw: Special                   none

SPWI211 - Melf's Acid Arrow
School: Conjuration                     Conjuration
Range: Visual range of caster           60
Duration: Special                       6/3 levels
Casting Time: 2                         3 (should be 2)
Area of Effect: 1 target                1 creature
Saving Throw: Special                   none
Effect: 2d4/3 levels                    2d4/3 levels

SPWI212 - Mirror Image
School: Illusion/Phantasm               Illusion
Range: 0                                1
Duration: 3 rounds + 1 round/level      18 +6/level
Casting Time: 1                         1
Area of Effect: Special                 self
Saving Throw: None                      none

SPWI213 - Stinking Cloud
School: Evocation                       Invocation
Range: 30 yards                         40
Duration: 1 turn                        duration controlled by projectile, which is 10
Casting Time: 2                         2
Area of Effect: 30-foot radius          256
Saving Throw: Special                   neg., death/poison, +2 bonus
Effect: unconscious for 1-2 rounds      9

SPWI214 - Strength
School: Alteration                      Alteration
Range: Touch                            20
Duration: 1 turn/level                  60/level
Casting Time: 1 round                   2 (should be 9)
Area of Effect: Target creature         1 creature
Saving Throw: None                      none

SPWI215 - Web
School: Evocation                       Invocation
Range: Visual sight of caster           40
Duration: 1 turn                        duration controlled by projectile, which is 10
Casting Time: 2                         2
Area of Effect: Special                 256
Saving Throw: Special                   neg., spells, -2 penalty

SPWI217 - Agannazar's Scorcher
School: Evocation                       Invocation
Range: 20 yards                         15 yards
Duration: Instant                       instant
Casting Time: 3                         2 (should be 3)
Area of Effect: 2-foot by 60-foot jet   ?
Saving Throw: None                      none

SPWI218 - Ghoul Touch
School: Necromancy                      Necromancy
Range: 0                                1
Duration: 5 rounds                      30
Casting Time: 1                         1
Area of Effect: The caster              self
Saving Throw: Neg.                      none

SPWI219 - Vocalize
School: Alteration                      Alteration
Range: 0                                1
Duration: 1 turn                        60
Casting Time: 2                         2
Area of Effect: Caster                  self
Saving Throw: None                      none

SPWI220 - Power Word Sleep
School: Conjuration/Summoning           Conjuration
Range: 30 yards                         40
Duration: 5 rounds                      permanent (err, is this right?)
Casting Time: 1                         1
Area of Effect: 1 creature              1 creature
Saving Throw: None                      none

SPWI221 - Ray of Enfeeblement
School: Enchantment/Charm               Enchantment
Range: Visual sight of caster           40
Duration: 1 round/level                 6/level
Casting Time: 2                         2
Area of Effect: 1 creature              1 creature
Saving Throw: Neg.                      neg., spells

SPWI222 - Chaos Shield                  
School: Abjuration                      Some fields Illusion, others Abjuration
Range: 0                                0
Duration: 5 rounds +10 rounds/5 levels  30 +60/5 levels
Casting Time: 2                         2
Area of Effect: caster                  self
Saving Throw: None                      none

SPWI223 - Deafness
School: Illusion/Phantasm               Illusion
Range: 60 yds.                          40
Duration: Special                       permanent
Casting Time: 2                         2
Area of Effect: 1 creature              1 creature
Saving Throw: Neg.                      neg., spells

SPWI224 - Glitterdust
School: Conjuration/Summoning           Conjuration
Range: 10 yds.                          20
Duration: 4 rounds                      24
Casting Time: 2                         2
Area of Effect: 20 ft                   256
Saving Throw: Special                   neg., spells

Link to comment

I'm slowly starting to work through these. These also incorporate additional fixes from devSin:

 

// grease fixes
COPY_EXISTING ~spwi101.spl~ ~override~
 WRITE_EVALUATED_ASCII 0x3a ~spwi101c~ // fixes icon
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 READ_LONG  0x6a "fx_off"
 READ_SHORT 0x70 "fx_num"
 FOR ("index" = 0; "%index%" < "%abil_num%"; "index" = ("%index%" + 1)) BEGIN // first fix existing effects
   WRITE_SHORT ("%abil_off%" + 0x0e + ("%index%" * 0x28)) 30 // corrects range
   READ_SHORT  ("%abil_off%" + 0x10) "min_lev"
   READ_SHORT  ("%abil_off%" + 0x1e) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20) "abil_fx_idx"
   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 // longer than one round
       WRITE_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%index2%"))) (18 + (6 * "%min_lev%")) // corrects duration
     END
   END
 END
 PATCH_IF ("%min_lev%" < 20) BEGIN // if abilities don't go to lev 20
   READ_ASCII ("%fx_off%" + (0x30 * "%abil_fx_idx%")) "effects" ("%abil_fx_num%" * 0x30) // reads whole block of effects from last ability
   READ_ASCII ("%abil_off%" + (0x28 * ("%abil_num%" - 1))) "ability" (0x28)              // reads last ability
   FOR ("index" = 20; "%index%" > "%min_lev%"; "index" = ("%index%" - 1)) BEGIN          // now extend headers
     INSERT_BYTES          ("%fx_off%" + (0x30 * "%abil_fx_idx%")) ("%abil_fx_num%" * 0x30) // inserts bytes
     WRITE_EVALUATED_ASCII ("%fx_off%" + (0x30 * "%abil_fx_idx%")) "%effects%"              // clones existing effects
     FOR ("index2" = 0; "%index2%" < "%abil_fx_num%"; "index2" = ("%index2%" + 1)) BEGIN    // loop to adjust effects by min level
       READ_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%" + "%index2%"))) "duration"
       PATCH_IF ("%duration%" > 5) BEGIN // longer than one round
         WRITE_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%" + "%index2%"))) (18 + (6 * "%index%")) // corrects duration
       END
     END
     INSERT_BYTES          ("%abil_off%" + 0x28) 0x28        // inserts bytes
     WRITE_EVALUATED_ASCII ("%abil_off%" + 0x28) "%ability%" // clones existing ability
     WRITE_SHORT           ("%abil_off%" + 0x38) ("%index%") // minimum level
     WRITE_SHORT           ("%abil_off%" + 0x46) "%abil_fx_num%"
     WRITE_SHORT           ("%abil_off%" + 0x48) ("%abil_fx_idx%" + ("%abil_fx_num%" * ("%index%" - 1)))
     SET "fx_off" = ("%fx_off%" + 0x28)
     SET "abil_num" = ("%abil_num%" + 1)
   END
 WRITE_LONG  0x6a "%fx_off%"
 WRITE_SHORT 0x68 "%abil_num%"
 END
 BUT_ONLY_IF_IT_CHANGES

// armor fixes
COPY_EXISTING ~spwi102.spl~ ~override~
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 READ_LONG  0x6a "fx_off"
 FOR ("index" = 0; "%index%" < "%abil_num%"; "index" = ("%index%" + 1)) BEGIN // fix existing effects
   WRITE_SHORT ("%abil_off%" + 0x12 + ("%index%" * 0x28)) 1 // casting time
   READ_SHORT  ("%abil_off%" + 0x10) "min_lev"
   READ_SHORT  ("%abil_off%" + 0x1e) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20) "abil_fx_idx"
   FOR ("index2" = 0; "%index2%" < "%abil_fx_num%"; "index2" = ("%index2%" + 1)) BEGIN
     READ_LONG ("%fx_off%" +      + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
     READ_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "duration"
     PATCH_IF ("%opcode%" = 215) BEGIN // play 3d effect opcode
       WRITE_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 2             // corrects duration
       WRITE_ASCII ("%fx_off%" + 0x14 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) ~sparmor2~ #8 // corrects resref
     END
     PATCH_IF ("%duration%" > 5) BEGIN // longer than one round
       WRITE_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 2700 // corrects duration
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES
 
// burning hands fixes
COPY_EXISTING ~spwi103.spl~ ~override~
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 READ_LONG  0x6a "fx_off"
 FOR ("index" = 0; "%index%" < "%abil_num%"; "index" = ("%index%" + 1)) BEGIN // fix existing effects
   WRITE_SHORT ("%abil_off%" + 0x0e + ("%index%" * 0x28)) 5 // corrects range
   READ_SHORT  ("%abil_off%" + 0x10) "min_lev"
   READ_SHORT  ("%abil_off%" + 0x1e) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20) "abil_fx_idx"
   PATCH_IF ("%min_lev%" = 1) BEGIN
     FOR ("index2" = 0; "%index2%" < "%abil_fx_num%"; "index2" = ("%index2%" + 1)) BEGIN
       READ_LONG ("%fx_off%" +      + (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
       PATCH_IF ("%opcode%" = 165) BEGIN // play 3d effect opcode
         WRITE_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 2             // corrects duration
       END
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES
 
// color spray fixes
COPY_EXISTING ~spwi105.spl~ ~override~
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 FOR ("index" = 0; "%index%" < "%abil_num%"; "index" = ("%index%" + 1)) BEGIN // fix existing effects
   WRITE_SHORT ("%abil_off%" + 0x0e + ("%index%" * 0x28)) 30 // corrects range
 END
 BUT_ONLY_IF_IT_CHANGES

// color spray arc fix  
COPY_EXISTING ~cspray.pro~ ~override~
 WRITE_SHORT 0x206 256
 BUT_ONLY_IF_IT_CHANGES

Link to comment
grease fixes
I don't see any evidence that this is an actual bug. The Grease project lasts for one turn (this is the same as Web, Entangle, etc.), and the effects last for a similar duration.

 

armor fixes
Again, I don't see a bug. The spell lasts for 9 hours (make sure you correct the duration), so it makes sense to me that it would have a high casting time (the other armor spells don't last nearly as long). And definitely don't change the visual effect (SPARMOR2 is an unused animation that I restore locally; it's so ugly in-game that I decided to give it to the weakest armor spell).

 

burning hands fixes
There's nothing to suggest this is a bug. The Burning Hands projectile is *very* short (if you increase the range, it's likely that you'll end up hitting nothing). I can't tell what the duration thing is doing (the duration should be controlled by the projectile alone).

 

color spray fixes
If you push the range of this out, it's likely you won't actually hit anything (as with Burning Hands, the projectile doesn't go that far).

 

color spray arc fix
I can't tell what's going on here, but I will say that updating projectiles is dangerous (in my mind), and we should get ample discussion in before changing any of them. In this case, I'd point out that the projectile is identical to the Prismatic Spray projectile, and there likely isn't any bug here.
Link to comment

Friends was another destroy-n-rebuild, but it now accurately lasts 1d4 + 1 round/level. Baldurdash "fixed" this by changing the description. :undecided:

 

// friends fixes
COPY_EXISTING ~spwi107.spl~ ~override~
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 READ_LONG  0x6a "fx_off"
 READ_SHORT  ("%abil_off%" + 0x48) "second_fx_idx"
 READ_SHORT  ("%abil_off%" + 0x1e + (0x28 * ("%abil_num%" - 1))) "last_fx_num"
 READ_SHORT  ("%abil_off%" + 0x20 + (0x28 * ("%abil_num%" - 1))) "last_fx_idx"
 DELETE_BYTES ("%fx_off%" + (0x30 * "%second_fx_idx%")) (0x30 * (("%last_fx_idx%" + "last_fx_num") - "%second_fx_idx%")) // eliminates all high lev effects
 DELETE_BYTES ("%abil_off%" + 0x28) (0x28 * ("%abil_num%" - 1)) // eliminates all abilities beyond the first
 SET "fx_off" = ("%fx_off%" - (0x28 * ("%abil_num%" - 1)))
 // now to patch effects at lev 1 before cloning
 READ_SHORT  ("%abil_off%" + 0x1e) "abil_fx_num"
 READ_SHORT  ("%abil_off%" + 0x20) "abil_fx_idx"
 FOR ("index" = "%abil_fx_num%"; "%index%" > 0; "index" = ("%index%" - 1)) BEGIN    // loop to adjust effects by min level
   READ_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + ("%index%" - 1)))) "duration"
   PATCH_IF ("%duration%" > 5) BEGIN // longer than one round
     WRITE_BYTE   ("%fx_off%" + 0x12 + (0x30 * ("%abil_fx_idx%" + ("%index%" - 1)))) 25 // probability high
     WRITE_LONG   ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + ("%index%" - 1)))) 12 // duration
     READ_ASCII   ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + ("%index%" - 1)))) "effect" (0x30) // reads entire effect
     INSERT_BYTES ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 0x30 // insert new effect
       WRITE_EVALUATED_ASCII ("%fx_off%" + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) "%effect%"
       WRITE_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 18 // duration
       WRITE_BYTE ("%fx_off%" + 0x12 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 50 // probability high
       WRITE_BYTE ("%fx_off%" + 0x13 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 26 // probability low
     INSERT_BYTES ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 0x30 // insert new effect
       WRITE_EVALUATED_ASCII ("%fx_off%" + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) "%effect%"
       WRITE_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 24 // duration
       WRITE_BYTE ("%fx_off%" + 0x12 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 75 // probability high
       WRITE_BYTE ("%fx_off%" + 0x13 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 61 // probability low
     INSERT_BYTES ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 0x30 // insert new effect
       WRITE_EVALUATED_ASCII ("%fx_off%" + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) "%effect%"
       WRITE_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 30  // duration
       WRITE_BYTE ("%fx_off%" + 0x12 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 100 // probability high
       WRITE_BYTE ("%fx_off%" + 0x13 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 76  // probability low
     SET "abil_fx_num" = ("%abil_fx_num%" + 3)
   END
 END
 WRITE_SHORT ("%abil_off%" + 0x1e) "%abil_fx_num%"
 READ_ASCII ("%fx_off%" + (0x30 * "%abil_fx_idx%")) "effects" ("%abil_fx_num%" * 0x30) // reads whole block of effects from last ability
 READ_ASCII ("%abil_off%") "ability" (0x28)                                            // reads last ability
 FOR ("index" = 20; "%index%" > 1; "index" = ("%index%" - 1)) BEGIN                    // now extend headers
   INSERT_BYTES          ("%fx_off%" + (0x30 * "%abil_fx_idx%")) ("%abil_fx_num%" * 0x30) // inserts bytes
   WRITE_EVALUATED_ASCII ("%fx_off%" + (0x30 * "%abil_fx_idx%")) "%effects%"              // clones existing effects
   FOR ("index2" = 0; "%index2%" < "%abil_fx_num%"; "index2" = ("%index2%" + 1)) BEGIN    // loop to adjust effects by min level
     READ_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%" + "%index2%"))) "duration"
     PATCH_IF ("%duration%" > 5) BEGIN // longer than one round
       WRITE_LONG ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%" + "%index2%"))) ("%duration%" + (6 * ("%index%" - 1))) // corrects duration
     END
   END
   INSERT_BYTES          ("%abil_off%" + 0x28) 0x28        // inserts bytes
   WRITE_EVALUATED_ASCII ("%abil_off%" + 0x28) "%ability%" // clones existing ability
   WRITE_SHORT           ("%abil_off%" + 0x38) ("%index%") // minimum level
   WRITE_SHORT           ("%abil_off%" + 0x46) "%abil_fx_num%"
   WRITE_SHORT           ("%abil_off%" + 0x48) ("%abil_fx_idx%" + ("%abil_fx_num%" * ("%index%" - 1)))
   SET "fx_off" = ("%fx_off%" + 0x28)
   SET "abil_num" = ("%abil_num%" + 1)
 END
 WRITE_LONG  0x6a "%fx_off%"
 WRITE_SHORT 0x68 20
 BUT_ONLY_IF_IT_CHANGES

 

Infravision and Spook were added to the Blindness patch, as they all use a range of 60.

 

Of the five magic missile spell files, Bioware has incorrect damage in four of them. The fifth is saved only because it's a special version without a damage opcode.

 

// magic missile damage fix
COPY_EXISTING ~spin685.spl~ ~override~ // Imoen/promenade cutscene version
             ~spin962.spl~ ~override~ // beholder version
             ~spwi003.spl~ ~override~ // trap wizard version
             ~spwi112.spl~ ~override~ // regular wizard version
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 READ_LONG  0x6a "fx_off"
 FOR ("index" = 0; "%index%" < "%abil_num%"; "index" = ("%index%" + 1)) BEGIN // fix existing effects
   WRITE_SHORT ("%abil_off%" + 0x0e + ("%index%" * 0x28)) 60 // corrects range
   READ_SHORT  ("%abil_off%" + 0x1e + ("%index%" * 0x28)) "abil_fx_num"
   READ_SHORT  ("%abil_off%" + 0x20 + ("%index%" * 0x28)) "abil_fx_idx"
   FOR ("index2" = 0; "%index2%" < "%abil_fx_num%"; "index2" = ("%index2%" + 1)) BEGIN
     READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%index2%"))) "opcode"
     PATCH_IF ("%opcode%" = 12) BEGIN // damage opcode
       WRITE_LONG  ("%fx_off%" + 0x04 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 1 // fixed damage
       WRITE_LONG  ("%fx_off%" + 0x1c + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 1 // num dice
       WRITE_LONG  ("%fx_off%" + 0x20 + (0x30 * ("%abil_fx_idx%" + "%index2%"))) 4 // dice size
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES

 

Shield school fix.

 

// school fix for shield
COPY_EXISTING ~spwi114.spl~ ~override~ // Imoen/promenade cutscene version
 WRITE_BYTE 0x22 24 // evocation
 BUT_ONLY_IF_IT_CHANGES

 

Sleep's description does mention the save penalty, so only the range needs a-fixin'. Lumped in the LMD fixes as well.

 

// range fixes
COPY_EXISTING ~spin104.spl~ ~override~ // innate LMD
             ~spwi116.spl~ ~override~ // sleep
             ~spwi119.spl~ ~override~ // mage LMD
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 FOR ("index" = 0; "%index%" < "%abil_num%"; "index" = ("%index%" + 1)) BEGIN // fix existing effects
   WRITE_SHORT ("%abil_off%" + 0x0e + ("%index%" * 0x28)) 90 // corrects range
 END
 BUT_ONLY_IF_IT_CHANGES

 

Chromatic Orb already had some fixes; added the durations fixes. W.r.t. the level 12 damage and level 1 blindness, my patched SoA install matches description and effects, so I did not include those changes.

 

At first-level, the sphere inflicts 1-4 damage and blinds the target for one round. (snip)  At 12th level, the sphere will inflict 2-16 points of acid damage and instantly kill the victim.

 

// chromatic orb has a few incorrect targets and MR checks
COPY_EXISTING ~spdr101.spl~ ~override~ // chromatic orb, stalker version
             ~spwi118.spl~ ~override~ // chromatic orb, wiz version
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 READ_LONG  0x6a "fx_off"
 WHILE ("%abil_num%" > 0) BEGIN
   SET "abil_num" = ("%abil_num%" - 1)
   READ_SHORT ("%abil_off%" + 0x10 + (0x28 * "%abil_num%")) "min_lev"
   WRITE_SHORT ("%abil_off%" + 0x0e + (0x28 * "%abil_num%")) 90 // corrects range
   PATCH_IF (("%min_lev%" = 1) OR ("%min_lev%" = 5) OR ("%min_lev%" = 10) OR ("%min_lev%" = 12)) BEGIN
     READ_SHORT ("%abil_off%" + 0x1e + (0x28 * "%abil_num%")) "abil_fx_num"
     READ_SHORT ("%abil_off%" + 0x20 + (0x28 * "%abil_num%")) "abil_fx_idx"
     WHILE ("%abil_fx_num%" > 0) BEGIN
       SET "abil_fx_num" = ("%abil_fx_num%" - 1)
       READ_SHORT ("%fx_off%" +        (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) "opcode"
       READ_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) "duration"
       PATCH_IF (("%duration%" > 5) AND ("%min_lev%" = 1)) BEGIN // fix level 1 durations
         WRITE_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 6
       END
       PATCH_IF (("%duration%" > 5) AND ("%min_lev%" = 5)) BEGIN // fix level 5 durations
         WRITE_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 18
       END
       PATCH_IF ("%opcode%" = 0) BEGIN // armor class penalty
         WRITE_BYTE ("%fx_off%" + 0x02 + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 2 // target: preset target
       END ELSE
       PATCH_IF (("%opcode%" = 139) OR ("%opcode%" = 142)) BEGIN // display portrait icon or display string
         WRITE_BYTE ("%fx_off%" + 0x0d + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 1 // dispel/not bypass
       END ELSE
       PATCH_IF ("%opcode%" = 55) BEGIN // slay
         WRITE_BYTE ("%fx_off%" + 0x0d + (0x30 * ("%abil_fx_idx%" + "%abil_fx_num%"))) 2 // not dispel/not bypass
       END
     END
   END
 END
 BUT_ONLY_IF_IT_CHANGES

 

For Find Familiar, I thought casting time of one round = 9 casting speed, not 1.

 

// find familiar casting time
COPY_EXISTING ~spwi102.spl~ ~override~
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 FOR ("index" = 0; "%index%" < "%abil_num%"; "index" = ("%index%" + 1)) BEGIN // fix existing effects
   WRITE_SHORT ("%abil_off%" + 0x12 + ("%index%" * 0x28)) 9 // casting time
 END
 BUT_ONLY_IF_IT_CHANGES

 

Nahal's Reckless Dweomer fixes.

 

// nahal's reckless dweomer casting time, school
COPY_EXISTING ~spwi124.spl~ ~override~
 WRITE_BYTE  0x22 15 // invocation
 WRITE_SHORT 0x25 6  // invoker
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 FOR ("index" = 0; "%index%" < "%abil_num%"; "index" = ("%index%" + 1)) BEGIN // fix existing effects
   WRITE_SHORT ("%abil_off%" + 0x12 + ("%index%" * 0x28)) 5 // casting time
 END
 BUT_ONLY_IF_IT_CHANGES

Link to comment

SPWI205 - Horror
Duration: 1 turn						18 (should be 60)

 

// horror duration incorrect
COPY_EXISTING ~spwi205.spl~ ~override~
 READ_LONG  0x64 "abil_off"
 READ_SHORT 0x68 "abil_num"
 READ_LONG  0x6a "fx_off"
 FOR (index = 0; index < abil_num; index = index + 1 ) BEGIN // cycle thru abilities
READ_SHORT  ("%abil_off%" + 0x1e + (0x28 * "%index%")) "abil_fx_num"
READ_SHORT  ("%abil_off%" + 0x20 + (0x28 * "%index%")) "abil_fx_idx"
FOR (index2 = 0; index2 < abil_fx_num; index2 = index2 + 1) BEGIN
  READ_SHORT ("%fx_off%" +		(0x30 * ("%index2%" + "%abil_fx_idx%"))) "opcode"
  READ_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%index2%" + "%abil_fx_idx%"))) "duration"
  PATCH_IF ("%duration%" = 18) BEGIN
	WRITE_LONG  ("%fx_off%" + 0x0e + (0x30 * ("%index2%" + "%abil_fx_idx%"))) 60
  END
END
 END
 BUT_ONLY_IF_IT_CHANGES

 

SPWI208 - Know Alignment
Casting Time: 1 round				   2 (should be 9)

SPWI209 - Luck
Duration: 3 rounds					  20 (should be  18)

SPWI211 - Melf's Acid Arrow
Casting Time: 2						 3 (should be 2)

SPWI214 - Strength
Casting Time: 1 round				   2 (should be 9)

SPWI217 - Agannazar's Scorcher
Casting Time: 3						 2 (should be 3)

SPWI222 - Chaos Shield				  
School: Abjuration					  Some fields Illusion, others Abjuration

Already fixed.

 

SPWI220 - Power Word Sleep
Duration: 5 rounds					  permanent (err, is this right?)

Yes--new info for the IESDP. Opcode 217 (PW Sleep/Sleep 20HP) is hardcoded to last 5 rounds and ignores timing 0 (instant/limited). You can use timing 4 (delay/permanent) to delay the effect, but once it goes into effect it'll still last five rounds, i.e. timing 4 with duration 6 will cause the target to stand there for 6 seconds, then sleep for 30.

 

And if no one has extended this thread in the 2 1/2 years it languished in Pending, then I don't feel bad about moving it to Archives. (Though, please, if anyone wishes to do this sort of anal-retentive analysis for the rest of the spells...)

Link to comment

I'd been waiting until I finished a DECOMPRESS_BAMC_TO_BAM macro to take another pass through spells (that's just for checking vvc durations). Here's a slightly abridged form of my false positive generator (by Logspammer Technologies©) if you want it.

spcl342.spl // Find Familiar:
Has 1 global effect(s)

spin649.spl // Pocket Plane:
Has 2 global effect(s)

spin680.spl // Deathsong:
Has 3 global effect(s)

spin681.spl // Wail of the Banshee:
Has 1 global effect(s)

spin692.spl // Silence 15' Radius:
>>Header 0:
 Required level of first extended header is 20 rather than one!

spin701.spl // FireBall:
Has 1 global effect(s)

spin714.spl // Lightning Bolt:
>>Header 1:
 Projectile (stone) does not match projectile in header 0 (spattck2)

spin789.spl // Demilich Howl:
Has 1 global effect(s)

spin820.spl // Wail of the Banshee:
Has 1 global effect(s)

spin897.spl // Gas Spore:
>>Header 1:
 Projectile (stone) does not match projectile in header 0 (arrowfli)

sppr101.spl // Bless:
>>Header 0:
 Range (40) does not match description (60)

sppr102.spl // Command:
>>Header 0:
 Range (35) does not match description (30)
>>>>Header 0 Effects 0 through 19 (opcode 177):
   Power level (0) does not match level (1)

sppr104.spl // Detect Evil:
>>Header 0:
 Range (5) is not exactly visual range
>>>>Header 0 Effect 0 (opcode 146):
   Power level (0) does not match level (1)

sppr105.spl // Entangle:
>>Header 0:
 Range (120) is not exactly visual range

sppr106.spl // Magic Stone:
>>Header 0:
 Range (50) does not match description (0)

sppr108.spl // Remove Fear:
>>Header 0:
 Range (30) does not match description (10)

sppr113.spl // Doom:
>>Header 0:
 Casting time in description (9) does not match casting time (1)
 Range (25) is not exactly visual range

sppr105.spl // Entangle:
>>>>Header 0 Effect 3 (opcode 174):
   Power level (2) does not match level (1)

sppr201.spl // Aid:
No spell school or multiple schools found in description

sppr204.spl // Charm Person or Mammal:
>>Header 0:
 Range (25) is not exactly visual range
>>>>Header 0 Effects 0 through 27 (opcode 177):
   Power level (0) does not match level (2)

sppr207.spl // Good Berries:
No spell school or multiple schools found in description

sppr208.spl // Hold Person:
>>Header 0:
 Range (35) is not exactly visual range

sppr209.spl // Know Alignment:
>>Header 0:
 Range (20) does not match description (10)

sppr210.spl // Resist Fire/Cold:
>>>>Header 3 Effect 4 (opcode 139):
   Power level (0) does not match level (2)

sppr211.spl // Silence 15' Radius:
>>Headers 0 through 19:
 Range (80) is not exactly visual range

sppr301.spl // Animate Dead:
>>Headers 0 through 10:
 Range (20) does not match description (10)

sppr302.spl // Call Lightning:
>>Headers 0 through 13:
 Casting time in description (90) does not match casting time (9)
 Range (80) does not match description (0)

sppr303.spl // Dispel Magic:
>>Header 0:
 Range (40) is not exactly visual range
>>>>Header 0 Effect 9 (opcode 215):
   Power level (3) does not match previous effect (0)
>>>>Header 0 Effect 40 (opcode 77):
   Power level (3) does not match previous effect (0)

sppr304.spl // Glyph of Warding:
No spell school or multiple schools found in description
>>Header 0 through 13:
 Casting time in description (Special) does not match casting time (9)
 Range (60) does not match description (20)

sppr305.spl // Hold Animal:
>>Header 0:
 Range (35) is not exactly visual range

sppr306.spl // Protection From Fire:
>>>>Headers 0 through 19 Effect 1 (opcode 50):
   Power level (1) does not match level (3)

sppr308.spl // Remove Paralysis:
>>Header 0:
 Range (150) does not match description (10)
>>>>Header 0 Effect 5 (opcode 240):
   Power level (0) does not match level (3)
>>>>Header 0 Effect 6 (opcode 240):
   Power level (0) does not match level (3)

sppr309.spl // Invisibility Purge:
>>Header 0:
 Range (1) is not exactly visual range

sppr310.spl // Miscast Magic:
>>Header 0:
 Range (50) is not exactly visual range

sppr311.spl // Rigid Thinking:
>>Header 0:
 Range (35) is not exactly visual range

sppr313.spl // Holy Smite:
>>Headers 0 through 15:
 Range (25) is not exactly visual range

sppr314.spl // Unholy Blight:
>>Header 0 through 15:
 Range (25) is not exactly visual range

sppr315.spl // Cure Medium Wounds:
>>>>Header 0 Effect 3 (opcode 164):
   Power level (0) does not match level (3)

sppr317.spl // Cure Disease:
No level found in description

sppr318.spl // Zone of Sweet Air:
No level found in description
>>Header 0:
 Range (1) does not match description (30)

sppr319.spl // Summon Insects:
No level found in description
>>Header 0:
 Range (60) does not match description (30)

sppr401.spl // Cure Serious Wounds:
>>>>Header 0 Effect 3 (opcode 164):
   Power level (0) does not match level (4)

sppr402.spl // Animal Summoning I:
No spell school or multiple schools found in description
>>Header 0:
 Range (30) does not match description (20)

sppr405.spl // Mental Domination:
>>Header 0:
 Range (40) is not exactly visual range
>>>>Header 0 Effects 0 through 13 (opcode 177):
   Power level (0) does not match level (4)

sppr406.spl // Defensive Harmony:
>>Header 0:
 Range (15) does not match description (0)

sppr408.spl // Protection From Evil 10' radius:
>>Headers 0 through 13:
 Range (15) does not match description (0)
>>>>Headers 2 through 6 Effect 0 (opcode 215):
   Power level (0) does not match level (4)

sppr409.spl // Death Ward:
>>Headers 0 through 13:
 Casting time in description (9) does not match casting time (1)
 Range (25) is not exactly visual range

sppr410.spl // Call Woodland Beings:
No spell school or multiple schools found in description

sppr411.spl // Poison:
>>Headers 0 through 4:
 Range (10) does not match description (15)

sppr413.spl // Negative Plane Protection:
No level found in description
Spell school in description (Abjuration) does not match primary type (8)
>>Header 0:
 Range (30) does not match description (0)

sppr414.spl // Cause Serious Wounds:
>>>>Header 0 Effect 0 (opcode 111):
   Power level (0) does not match level (4)
>>>>Header 0 Effect 1 (opcode 174):
   Power level (0) does not match level (4)
>>>>Header 0 Effect 2 (opcode 50):
   Power level (0) does not match level (4)
>>>>Header 0 Effect 3 (opcode 141):
   Power level (0) does not match level (4)

sppr415.spl // Farsight:
>>Headers 0 through 19:
 Range (6) does not match description (0)
>>>>Headers 0 through 19 Effect 0 (opcode 239):
   Power level (0) does not match level (4)
>>>>Headers 0 through 19 Effect 1 (opcode 174):
   Power level (0) does not match level (4)

sppr416.spl // Cloak of Fear:
No level found in description

sppr417.spl // Lesser Restoration:
Spell school in description (Necromancy) does not match primary type (8)
>>>>Header 0 Effect 3 (opcode 93):
   Power level (7) does not match level (4)

sppr501.spl // Animal Summoning II:
>>Header 0:
 Range (30) does not match description (60)

sppr502.spl // Cure Critical Wounds:
>>>>Header 0 Effect 2 (opcode 139):
   Power level (6) does not match level (5)
>>>>Header 0 Effect 3 (opcode 164):
   Power level (0) does not match level (5)

sppr503.spl // Flame Strike:
>>Headers 0 through 11:
 Range (40) is not exactly visual range
>>>>Headers 0 through 11 Effects 2 through 3 (opcode 215):
   Power level (0) does not match level (5)

sppr504.spl // Raise Dead:
>>Header 0:
 Range (30) does not match description (0)

sppr505.spl // True Seeing:
>>Header 0:
 Range (40) does not match description (0)

sppr506.spl // Iron Skins:
>>>>Header 7 Effect 2 (opcode 174):
   Power level (4) does not match level (5)

sppr507.spl // Champion's Strength:
>>Headers 0 through 9:
 Range (40) is not exactly visual range

sppr508.spl // Chaotic Commands:
>>Headers 0 through 9:
 Range (40) does not match description (0)
>>Header 9:
 Projectile (sparklpu) does not match projectile in header 8 (sparklgo)

sppr511.spl // Slay Living:
>>>>Header 0 Effect 0 (opcode 111):
   Power level (0) does not match level (5)
>>>>Header 0 Effect 1 (opcode 50):
   Power level (0) does not match level (5)

sppr512.spl // Greater Command:
>>Headers 0 through 11:
 Range (35) is not exactly visual range
>>Header 11:
 Projectile (sparblpa) does not match projectile in header 10 (spklarre)
>>>>Headers 0 through 11 Effects 0 through 9 (opcode 177):
   Power level (0) does not match level (5)
>>>>Headers 0 through 11 Effect 13 (opcode 215):
   Power level (1) does not match level (5)

sppr514.spl // Mass Cure:
>>Headers 0 through 11:
 Range (20) does not match description (0)

sppr515.spl // Repulse Undead:
>>>>Header 0 Effect 1 (opcode 8):
   Power level (0) does not match level (5)

sppr517.spl // Insect Plague:
>>Header 0:
 Range (40) does not match description (12)

sppr601.spl // Aerial Servant:
>>Headers 0 through 9:
 Range (20) does not match description (15)

sppr602.spl // Animal Summoning III:
>>Header 0:
 Range (120) does not match description (60)

sppr604.spl // Conjure Animals:
Spell school in description (Conjuration) does not match primary type (4)
>>Header 0:
 Range (30) does not match description (60)

sppr605.spl // Conjure Fire Elemental:
>>Headers 0 through 9:
 Range (35) is not exactly visual range

sppr609.spl // False Dawn:
>>>>Header 0 Effect 0 (opcode 146):
   Power level (0) does not match level (6)

sppr610.spl // Dolorous Decay:
No spell school or multiple schools found in description
>>Header 0:
 Range (20) does not match description (10)

sppr612.spl // Bolt of Glory:
>>Header 0:
 Range (40) does not match description (20)

sppr613.spl // Physical Mirror:
>>Header 0:
 Range (1) does not match description (30)
>>>>Header 0 Effect 18 (opcode 174):
   Power level (3) does not match level (6)

sppr614.spl // Sol's Searing Orb:
>>Header 0:
 Range (1) does not match description (30)

sppr702.spl // Conjure Earth Elemental:
>>Headers 0 through 6:
 Range (35) is not exactly visual range

sppr703.spl // Gate:
No spell school or multiple schools found in description
>>Header 0:
 Range (30) does not match description (20)
>>>>Header 0 Effect 0 (opcode 177):
   Power level (9) does not match level (7)

sppr705.spl // Fire Storm:
>>Headers 0 through 6:
 Range (80) does not match description (40)

sppr706.spl // Symbol, Fear:
No spell school or multiple schools found in description

sppr707.spl // Sunray:
No spell school or multiple schools found in description
>>Headers 0 through 6:
 Range (8) does not match description (20)
>>>>Headers 0 through 6 Effect 0 (opcode 146):
   Power level (6) does not match level (7)
>>>>Headers 0 through 6 Effect 7 (opcode 174):
   Power level (6) does not match level (7)

sppr708.spl // Finger of Death:
>>Headers 0 through 6:
 Range (40) is not exactly visual range

sppr709.spl // Confusion:
>>Headers 0 through 3:
 Range (45) is not exactly visual range

sppr712.spl // Resurrection:
>>Header 0:
 Range (30) does not match description (0)
>>>>Header 0 Effects 3 through 21 (opcode 172):
   Power level (5) does not match level (7)

sppr717.spl // Creeping Doom:
>>Header 0:
 Range (160) does not match description (80)

sppr718.spl // Symbol, Stun:
No spell school or multiple schools found in description
>>Headers 0 through 3:
 Range (70) does not match description (30)

sppr719.spl // Symbol, Death:
No spell school or multiple schools found in description
>>Header 0:
 Range (70) does not match description (30)

sppr720.spl // Earthquake:
>>Header 0:
 Range (40) does not match description (12)

sppr722.spl // Storm of Vengeance:
>>Header 0:
 Range (50) does not match description (90)

sppr723.spl // Elemental Summoning:
>>Header 0:
 Range (35) does not match description (10)

sppr724.spl // Greater Elemental Summoning:
>>Header 0:
 Range (35) does not match description (10)

sppr728.spl // Implosion:
Spell school in description (Evocation) does not match primary type (0)
>>Header 0:
 Range (40) is not exactly visual range
>>>>Header 0 Effect 6 (opcode 215):
   Power level (0) does not match level (7)
>>>>Header 0 Effect 7 (opcode 215):
   Power level (0) does not match level (7)

sppr729.spl // Mass Raise Dead:
>>Headers 0 through 19:
 Range (30) does not match description (0)
>>>>Headers 0 through 19 Effect 1 (opcode 215):
   Power level (5) does not match level (7)
>>>>Headers 0 though 19 Effects 2 through 26 (opcode 172):
   Power level (5) does not match level (7)
>>>>Headers 0 through 19 Effect 27 (opcode 17):
   Power level (6) does not match level (7)
>>>>Headers 0 through 19 Effect 28 (opcode 50):
   Power level (6) does not match level (7)
>>>>Headers 0 through 19 Effect 29 (opcode 215):
   Power level (6) does not match level (7)
>>>>Headers 0 through 19 Effect 30 (opcode 139):
   Power level (6) does not match level (7)

sppr730.spl // Aura of Flaming Death:
>>Headers 0 through 4:
 Range (40) does not match description (0)
>>>>Headers 0 through 4 Effect 8 (opcode 232):
   Power level (0) does not match level (7)


sppr731.spl // Fire Elemental Transformation:
>>>>Header 0 Effect 0 (opcode 172):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 1 (opcode 135):
   Power level (7) does not match level (1)
>>>>Header 0 Effect 2 (opcode 111):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 3 (opcode 172):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 4 (opcode 172):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 5 (opcode 172):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 6 (opcode 171):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 7 (opcode 215):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 8 (opcode 215):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 9 (opcode 142):
   Power level (7) does not match level (1)

sppr732.spl // Earth Elemental Transformation:
>>>>Header 0 Effect 0 (opcode 172):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 1 (opcode 135):
   Power level (7) does not match level (1)
>>>>Header 0 Effect 2 (opcode 111):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 3 (opcode 172):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 4 (opcode 172):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 5 (opcode 172):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 6 (opcode 171):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 7 (opcode 215):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 8 (opcode 215):
   Power level (0) does not match level (1)
>>>>Header 0 Effect 9 (opcode 142):
   Power level (7) does not match level (1)

spwi101.spl // Grease:
>>>>Headers 0 through 19 Effect 0 (opcode 158):
   Saving throw modifier (2) does not match description (0)
>>>>Headers 0 through 19 Effect 1 (opcode 126):
   Saving throw modifier (2) does not match description (0)
>>>>Headers 0 through 19 Effect 2 (opcode 174):
   Saving throw (0) does not match previous effect (1)
>>>>Headers 0 through 19 Effect 3 (opcode 142):
   Saving throw modifier (2) does not match description (0)
   Saving throw (1) does not match previous effect (0)

spwi103.spl // Burning Hands:
>>Headers 0 through 5:
 Range (5) does not match description (0)

spwi104.spl // Charm Person:
>>Header 0:
 Range (60) is not exactly visual range
>>>>Header 0 Effects 0 through 13 (opcode 177):
   Power level (0) does not match level (1)

spwi105.spl // Color Spray:
>>>>Header 0 Effects 0 through 9 (opcode 177):
   Power level (0) does not match level (1)

spwi106.spl // Blindness:
>>Header 0:
 Range (60) is not exactly visual range
>>>>Header 0 Effect 2 (opcode 139):
   Power level (0) does not match level (1)

spwi107.spl // Friends:
Colorglow Pulse effect has zero duration, which I hadn't noticed even after hours of fussing, ha!
>>>>Headers 0 through 19 Effect 1 (opcode 139):
   Power level (0) does not match level (1)

spwi111.spl // Infravision:
>>Header 0:
 Casting time in description (Special) does not match casting time (1)
>>>>Header 0 Effect 1 (opcode 139):
   Power level (0) does not match level (1)

spwi112.spl // Magic Missile:
>>Headers 0 through 4:
 Range (60) is not exactly visual range
>>>>Headers 0 through 4 Effect 1 (opcode 141):
   Power level (0) does not match level (1)

spwi113.spl // Protection From Evil:
>>>>Headers 0 through 19 Effect 0 (opcode 139):
   Power level (0) does not match level (1)
>>>>Headers 0 through 19 Effect 1 (opcode 142):
   Power level (0) does not match level (1)

spwi114.spl // Shield:
>>>>Header 0 Effect 2 (opcode 139):
   Power level (0) does not match level (1)

spwi115.spl // Shocking Grasp:
>>>>Header 0 Effect 0 (opcode 111):
   Power level (0) does not match level (1)
>>>>Headers 0 through 19 Effect 0 (opcode 111):
   Power level (0) does not match level (1)
>>>>Headers 1 through 19 Effect 1 (opcode 174):
   Power level (0) does not match level (1)

spwi116.spl // Sleep:
>>Headers 0 through 19:
 Range (90) does not match description (30)
>>>>Headers 0 though 19 Effects 0 through 9 (opcode 177):
   Power level (0) does not match level (1)

spwi118.spl // Chromatic Orb:
>>Headers 0 through 8:
 Range (90) does not match description (30)
>>>>Header 3 Effect 3 (opcode 139):
   Saving throw modifier (0) does not match description (6)

spwi119.spl // Larloch's Minor Drain:
>>Header 0:
 Range (90) does not match description (30)

spwi123.spl // Find Familiar:
Has 1 global effect(s)
>>>>Global effects:
   Power level (0) does not match level (1)
>>Header 0:
 Range (20) does not match description (0)

spwi124.spl // Nahal's Reckless Dweomer:
>>Header 0:
 Range (20) does not match description (0)
>>>>Header 0 Effect 1 (opcode 280):
   Power level (0) does not match level (1)

spwi125.spl // Spook:
>>Headers 0 through 6:
 Range (60) does not match description (30)



spwi202.spl // Detect Evil:
Description indicates level 1 while resref indicates level 2
>>Header 0:
 Range (5) is not exactly visual range
>>>>Header 0 Effect 0 (opcode 146):
   Power level (0) does not match level (2)

spwi205.spl // Horror:
>>Header 0:
 Range (40) does not match description (25)

spwi207.spl // Knock:
>>Header 0:
 Range (20) is not exactly visual range

spwi208.spl // Know Alignment:
>>Header 0:
 Range (30) does not match description (10)

spwi209.spl // Luck:
>>Header 0:
 Range (15) does not match description (10)
>>>>Header 0 Effect 0 (opcode 133):
   Duration (20) does not match description (18)
>>>>Header 0 Effect 3 (opcode 142):
   Duration (20) does not match description (18)
>>>>Header 0 Effect 4 (opcode 174):
   Duration (0) does not match description (18)
>>>>Header 0 Effect 5 (opcode 174):
   Duration (20) does not match description (18)

spwi210.spl // Resist Fear:
>>Header 0:
 Range (30) does not match description (10)
>>>>Header 0 Effect 12 (opcode 215):
   Power level (1) does not match level (2)

spwi211.spl // Melf's Acid Arrow:
>>Headers 0 through 6:
 Range (60) is not exactly visual range
>>Header 1:
 Spell form (1) does not match previous header 0 (2)

spwi213.spl // Stinking Cloud:
>>Header 0:
 Range (40) does not match description (30)
>>>>Header 0 Effects 0 through 9 (opcode 177):
   Power level (0) does not match level (2)
>>>>Header 0 Effect 10 (opcode 39):
   Saving throw modifier (2) does not match description (0)
>>>>Header 0 Effect 11 (opcode 142):
   Saving throw modifier (2) does not match description (0)

spwi214.spl // Strength:
>>Headers 0 through 20:
 Range (20) does not match description (0)

spwi215.spl // Web:
>>Header 0:
 Range (40) is not exactly visual range

spwi217.spl // Agannazar's Scorcher:
>>Header 0:
 Range (15) does not match description (20)
>>>>Header 0 Effect 1 (opcode 165):
   Power level (0) does not match level (2)
>>>>Header 0 Effect 2 (opcode 174):
   Power level (0) does not match level (2)

spwi219.spl // Vocalize:
>>>>Header 0 Effect 7 (opcode 215):
   Power level (1) does not match level (2)

spwi220.spl // Power Word Sleep:
>>Header 0:
 Range (40) does not match description (30)

spwi221.spl // Ray of Enfeeblement:
>>Headers 0 through 17:
 Range (40) is not exactly visual range
>>>>Header 0s through 17 Effect 2 (opcode 139):
   Saving throw modifier (-2) does not match description (0)

spwi222.spl // Chaos Shield*:
>>>>Headers 0 through 4 Effect 0 (opcode 281):
   Power level (0) does not match level (2)
>>>>Headers 0 through 4 Effect 1 (opcode 142):
   Power level (0) does not match level (2)
>>>>Headers 0 through 4 Effect 2 (opcode 215):
   Power level (4) does not match level (2)
>>>>Headers 0 through 4 Effect 3 (opcode 206):
   Power level (0) does not match level (2)
>>>>Headers 0 through 4 Effect 4 (opcode 206):
   Power level (0) does not match level (2)

spwi223.spl // Deafness:
>>Header 0:
 Range (40) does not match description (60)
>>>>Header 0 Effect 2 (opcode 215):
   Power level (1) does not match level (2)
>>>>Header 0 Effect 3 (opcode 215):
   Power level (1) does not match level (2)

spwi224.spl // Glitterdust:
>>Header 0:
 Range (20) does not match description (10)
>>>>Header 0 Effect 3 (opcode 215):
   Power level (4) does not match level (2)

spwi302.spl // Remove Magic:
>>Header 0:
 Range (40) is not exactly visual range
>>>>Header 0 Effect 9 (opcode 215):
   Power level (3) does not match previous effect (0)

spwi303.spl // Flame Arrow:
>>Headers 0 through 3:
 Range (60) is not exactly visual range

spwi304.spl // FireBall:
Has 1 global effect(s)
>>>>Global effects:
   Power level (0) does not match level (3)
>>Headers 0 through 5:
 Range (40) is not exactly visual range

spwi305.spl // Haste:
>>Headers 0 through 15:
 Range (15) is not exactly visual range

spwi306.spl // Hold Person:
>>Header 0:
 Range (35) is not exactly visual range
>>>>Header 0 Effect 0 (opcode 175):
   Saving throw modifier (-1) does not match description (0)
>>>>Header 0 Effect 1 (opcode 174):
   Saving throw modifier (-1) does not match description (0)
>>>>Header 0 Effect 2 (opcode 142):
   Saving throw modifier (-1) does not match description (0)
>>>>Header 0 Effect 3 (opcode 215):
   Saving throw modifier (-1) does not match description (0)

spwi308.spl // Lightning Bolt:
>>Header 1:
 Range (60) does not match description (100)
>>Header 2:
 Range (70) does not match description (110)
>>Header 3:
 Range (80) does not match description (120)
>>Header 4:
 Range (90) does not match description (130)
>>Header 5:
 Range (100) does not match description (140)

spwi309.spl // Monster Summoning I:
>>Headers 0 through 15:
 Range (20) does not match description (40)

spwi312.spl // Slow:
>>Header 0:
 Range (25) is not exactly visual range

spwi313.spl // Skull Trap:
No spell school or multiple schools found in description
>>Header 0:
 Range (55) does not match description (20)
>>Headers 1 through 15:
 Range (15) does not match description (20)

spwi316.spl // Dire Charm:
>>Header 0:
 Range (35) does not match description (20)
>>>>Header 0 Effects 0 though 13 (opcode 177):
   Power level (0) does not match level (3)
>>>>Header 0 Effect 17 (opcode 215):
   Saving throw modifier (3) does not match description (0)

spwi318.spl // Minor Spell Deflection:
>>>>Header 6 Effect 9 (opcode 201):
   Duration (180) does not match description (198)
>>>>Header 6 Effect 10 (opcode 201):
   Duration (180) does not match description (198)

spwi321.spl // Spell Thrust:
>>Header 0:
 Range (25) is not exactly visual range

spwi324.spl // Hold Undead:
>>Headers 0 through 15:
 Range (35) is not exactly visual range

spwi325.spl // Melf's Minute Meteors:
No spell school or multiple schools found in description
>>Headers 0 through 15:
 Range (1) does not match description (70)

spwi326.spl // Dispel Magic:
>>Header 0:
 Range (40) is not exactly visual range
>>>>Header 0 Effect 9 (opcode 215):
   Power level (3) does not match previous effect (0)
>>>>Header 0 Effect 40 (opcode 77):
   Power level (3) does not match previous effect (0)

spwi401.spl // Confusion:
>>Headers 0 through 3:
 Range (35) is not exactly visual range

spwi403.spl // Fire Shield (Blue):
No spell school or multiple schools found in description

spwi407.spl // Monster Summoning II:
>>Headers 0 through 13:
 Range (20) does not match description (40)

spwi409.spl // Contagion:
>>Header 0:
 Range (1) does not match description (30)

spwi410.spl // Remove Curse:
>>>>Header 0 Effect 0 (opcode 26):
   Power level (3) does not match level (4)
>>>>Header 0 Effect 1 (opcode 50):
   Power level (3) does not match level (4)
>>>>Header 0 Effect 2 (opcode 139):
   Power level (3) does not match level (4)

spwi411.spl // Emotion:
>>Headers 0 through 13:
 Range (50) is not exactly visual range
>>>>Headers 0 through 13 Effects 6 through 15 (opcode 177):
   Power level (0) does not match level (4)

spwi412.spl // Greater Malison:
>>Headers 0 through 13:
 Range (50) is not exactly visual range

spwi413.spl // Otiluke's Resilient Sphere:
>>Header 0:
 Range (40) does not match description (0)
>>>>Header 0 Effect 21 (opcode 102):
   Duration (60) does not match previous effect (42)

spwi414.spl // Spirit Armor:
>>>>Header 0 Effect 1 (opcode 139):
   Power level (3) does not match level (4)

spwi415.spl // Polymorph Other:
>>Header 0:
 Range (40) is not exactly visual range

spwi418.spl // Fire Shield (Red):
No spell school or multiple schools found in description
>>Headers 0 through 13:
 Range (40) does not match description (0)
>>>>Headers 0 through 13 Effect 6 (opcode 232):
   Power level (0) does not match level (4)

spwi419.spl // Secret Word:
>>Header 0:
 Range (40) is not exactly visual range

spwi421.spl // Teleport Field:
>>Header 0:
 Range (40) is not exactly visual range

spwi423.spl // Spider Spawn:
>>Headers 0 through 11:
 Range (25) does not match description (40)

spwi424.spl // Farsight:
>>Headers 0 through 13:
 Range (6) does not match description (0)

spwi425.spl // Wizard Eye:
No spell school or multiple schools found in description
>>Headers 0 through 13:
 Range (30) does not match description (0)

spwi490.spl // Shapeshifts Natural Form:
>>>>Header 0 Effect 14 (opcode 215):
   Power level (4) does not match level (1)

spwi491.spl // Shapeshifts Natural Form:
>>>>Header 0 Effect 13 (opcode 215):
   Power level (4) does not match level (1)
>>>>Header 0 Effect 14 (opcode 215):
   Power level (4) does not match level (1)
>>>>Header 0 Effect 15 (opcode 112):
   Power level (4) does not match level (1)

spwi493.spl // Shapeshifts Flind:
   Power level (4) does not match level (1)
>>>>Header 0 Effect 11 (opcode 215):
   Power level (4) does not match level (1)

spwi494.spl // Shapeshifts Ogre:
>>>>Header 0 Effect 10 (opcode 215):
   Power level (4) does not match level (1)

spwi495.spl // Shapeshifts Spider:
>>>>Header 0 Effect 10 (opcode 215):
   Power level (4) does not match level (1)

spwi496.spl // Shapeshifts Mustard Jelly:
>>>>Header 0 Effect 10 (opcode 215):
   Power level (4) does not match level (1)

spwi497.spl // Shapeshifts Brown Bear:
>>>>Header 0 Effect 10 (opcode 215):
   Power level (4) does not match level (1)

spwi498.spl // Shapeshifts Black Bear:
>>>>Header 0 Effect 10 (opcode 215):
   Power level (4) does not match level (1)

spwi499.spl // Shapeshifts Wolf:
>>>>Header 0 Effect 10 (opcode 215):
   Power level (4) does not match level (1)

spwi501.spl // Animate Dead:
>>Headers 0 through 6:
 Range (20) does not match description (10)
>>>>Header 0 Effect 1 (opcode 177):
   Power level (3) does not match level (5)
>>>>Header 0 Effect 2 (opcode 177):
   Power level (3) does not match level (5)

spwi502.spl // Cloud Kill:
>>Header 0:
 Range (40) does not match description (10)

spwi503.spl // Cone of Cold:
>>Header 0:
 Range (8) does not match description (0)
>>Headers 1 through 11:
 Range (12) does not match description (0)

spwi504.spl // Monster Summoning III:
>>Headers 0 through 11:
 Range (20) does not match description (40)

spwi505.spl // Shadow Door:
>>Headers 0 through 11:
 Range (1) does not match description (10)
>>>>Headers 0 through 11 Effect 1 (opcode141): 
   Power level (0) does not match level (5)

spwi506.spl // Domination:
>>Header 0:
 Range (40) is not exactly visual range
>>>>Header 0 Effects 0 though 13 (opcode 177):
   Power level (0) does not match level (5)

spwi507.spl // Hold Monster:
>>Headers 0 through 11:
 Range (40) is not exactly visual range  

spwi508.spl // Chaos:
>>Headers 0 through 3:
 Range (35) is not exactly visual range 

spwi513.spl // Breach:
>>Header 0:
 Range (40) is not exactly visual range

spwi514.spl // Lower Resistance:
No spell school or multiple schools found in description
>>Header 0 through 11:
 Range (40) is not exactly visual range

spwi515.spl // Oracle:
>>Header 0:
 Range (35) does not match description (0)

spwi516.spl // Conjure Lesser Fire Elemental:
>>Headers 0 through 11:
 Casting time in description (Special) does not match casting time (9)

spwi518.spl // Phantom Blade:
>>>>Header 8 Effect 2 (opcode 174):
   Duration (72) does not match description (120)

spwi520.spl // Conjure Lesser Air Elemental:
>>Headers 0 through 11:
 Casting time in description (Special) does not match casting time (9)

spwi521.spl // Conjure Lesser Earth Elemental:
>>Headers 0 through 11:
 Casting time in description (Special) does not match casting time (9)

spwi522.spl // Minor Spell Turning:
>>>>Header 11 Effect 5 (opcode 50):
   Power level (3) does not match level (5)

spwi523.spl // Sunfire:
>>>>Header 1 Effect 0 (opcode 12):
   Power level (3) does not match level (5)
>>>>Header 1 Effect 1 (opcode 12):
   Power level (3) does not match level (5)
>>>>Header 2 Effect 0 (opcode 12):
   Power level (6) does not match level (5)

spwi602.spl // Globe of Invulnerability:
>>>>Header 1 Effect 7 (opcode 8):
   Power level (4) does not match level (6)
>>>>Header 1 Effect 8 (opcode 139):
   Power level (4) does not match level (6)
>>>>Header 4 Effect 19 (opcode 206):
   Power level (170) does not match level (6)
>>>>Header 6 Effect 16 (opcode 8):
   Power level (4) does not match level (6)

spwi604.spl // Flesh to Stone:
>>Header 0:
 Range (50) is not exactly visual range

spwi605.spl // Death Spell:
>>Header 0:
 Range (50) is not exactly visual range

spwi608.spl // Pierce Magic:
>>Headers 0 through 8:
 Range (40) is not exactly visual range

spwi609.spl // True Sight:
>>Header 0:
 Range (40) does not match description (0) 

spwi612.spl // Power Word Silence:
>>Header 0:
 Range (80) does not match description (30)

spwi613.spl // Improved Haste:
>>Headers 0 through 8:
 Range (40) is not exactly visual range
>>>>Headers 0 through 8 Effect 0 (opcode 16):
   Power level (3) does not match level (6)
>>>>Headers 0 through 8 Effect 1 (opcode 141):
   Power level (3) does not match level (6)
>>>>Headers 0 through 8 Effect 2 (opcode 139):
   Power level (3) does not match level (6)
>>>>Headers 0 through 8 Effect 3 (opcode 174):
   Power level (3) does not match level (6)
>>>>Headers 0 through 8 Effect 4 (opcode 174):
   Power level (3) does not match level (6)

spwi614.spl // Death Fog:
>>Header 0:
 Range (40) does not match description (10)
>>>>Header 0 Effect 1 (opcode 141):
   Power level (0) does not match level (6)

spwi615.spl // Chain Lightning:
>>Headers 0 through 4:
 Range (40) is not exactly visual range

spwi617.spl // Contingency:
>>Headers 0 though 2:
 Casting time in description (90) does not match casting time (9)
 Range (40) is not exactly visual range

spwi619.spl // Wyvern Call:
>>Headers 0 through 8:
 Range (30) does not match description (40)

spwi620.spl // Conjure Fire Elemental:
Exclusion flags do not match spell school (2)
>>Headers 0 through 9:
 Range (35) is not exactly visual range

spwi621.spl // Conjure Air Elemental:
>>Headers 0 though 9:
 Range (35) is not exactly visual range

spwi622.spl // Conjure Earth Elemental:
>>Headers 0 though 9:
 Range (35) is not exactly visual range

spwi623.spl // Carrion Summons:
>>Headers 0 through 9:
 Range (25) does not match description (40)
>>>>Header 6 Effects 0 though 2 (opcode 177):
   Duration (142) does not match description (144)
>>>>Header 7 Effects 0 though 2 (opcode 177):
   Duration (148) does not match description (150)
>>>>Header 8 Effects 0 though 2 (opcode 177):
   Duration (154) does not match description (156)
>>>>Header 9 Effects 0 though 2 (opcode 177):
   Duration (160) does not match description (162)

spwi624.spl // Summon Nishruu:
>>Headers 0 through 9:
 Range (25) does not match description (40)
>>>>Header 7 Effect 0 (opcode 177):
   Duration (116) does not match description (114)
>>>>Header 8 Effect 0 (opcode 177):
   Duration (122) does not match description (120)

spwi625.spl // Stone to Flesh:
>>Header 0:
 Range (50) is not exactly visual range

spwi704.spl // Ruby Ray of Reversal:
>>Header 0:
 Range (40) is not exactly visual range 

spwi705.spl // Khelben's Warding Whip:
>>Header 0:
 Range (20) does not match description (10)

spwi707.spl // Cacofiend:
>>Header 0:
 Casting time in description (Special) does not match casting time (9)
 Range (35) is not exactly visual range

spwi711.spl // Sphere of Chaos:
>>Header 0:
 Range (40) is not exactly visual range
>>>>Header 0 Effects 0 though 9 (opcode 177):
   Power level (0) does not match level (7)
>>>>Header 0 Effect 23 (opcode 174):
   Power level (4) does not match level (7)

spwi712.spl // Delayed Blast Fireball:
>>Header 0:
 Range (40) is not exactly visual range

spwi713.spl // Finger of Death:
>>Header 0:
 Range (40) is not exactly visual range

spwi714.spl // Prismatic Spray:
>>Header 0:
 Range (15) does not match description (20)

spwi715.spl // Power Word, Stun:
No spell school or multiple schools found in description

spwi717.spl // Summon Efreeti:
>>Headers 0 through 6:
 Range (25) does not match description (40)
>>>>Header 5 Effect 0 (opcode 177):
   Duration (164) does not match description (162)
>>>>Header 6 Effect 0 (opcode 177):
   Duration (170) does not match description (168)

spwi718.spl // Summon Djinni:
>>Headers 0 through 6:
 Range (25) does not match description (40)

spwi719.spl // Summon Hakeashar:
>>Headers 0 through 6:
 Range (25) does not match description (40)

spwi720.spl // Control Undead:
>>Headers 0 through 6:
 Range (40) is not exactly visual range

spwi721.spl // Mass Invisibility:
>>Headers 0 through 6:
 Range (35) is not exactly visual range
>>>>Headers 0 though 6 Effect 0 (opcode 146):
   Power level (4) does not match level (7)
>>>>Headers 0 though 6 Effect 1 (opcode 20):
   Power level (4) does not match level (7)
>>>>Headers 0 though 6 Effect 2 (opcode 139):
   Power level (4) does not match level (7)
>>>>Headers 0 though 6 Effect 3 (opcode 141):
   Power level (4) does not match level (7)
>>>>Headers 0 though 6 Effect 4 (opcode 20):
   Power level (4) does not match level (7)
>>>>Headers 0 though 6 Effect 7 (opcode 146):
   Power level (4) does not match level (7)

spwi722.spl // Limited Wish:
No spell school or multiple schools found in description
>>>>Header 0 Effect 0 (opcode 177):
   Power level (0) does not match level (7)

spwi723.spl // Improved Chaos Shield*:
>>>>Header 0 Effect 0 (opcode 281):
   Power level (0) does not match level (7)
>>>>Header 0 Effect 1 (opcode 142):
   Power level (0) does not match level (7)
>>>>Header 0 Effect 2 (opcode 215):
   Power level (4) does not match level (7)
>>>>Header 0 Effect 3 (opcode 206):
   Power level (0) does not match level (7)
>>>>Header 0 Effect 4 (opcode 206):
   Power level (0) does not match level (7)

spwi803.spl // Protection From Energy:
>>>>Headers 1 though 4 Effect 11 (opcode 215):
   Power level (7) does not match level (8)

spwi805.spl // Pierce Shield:
>>Headers 0 through 4:
 Range (40) is not exactly visual range

spwi807.spl // Summon Fiend:
>>Header 0:
 Range (35) is not exactly visual range

spwi810.spl // Incendiary Cloud:
>>Headers 0 through 4:
 Range (40) is not exactly visual range

spwi811.spl // Symbol, Fear:
No spell school or multiple schools found in description
>>Headers 0 through 2:
 Range (70) does not match description (30)

spwi812.spl // Abi-Dalzim's Horrid Wilting:
>>Headers 0 through 4:
 Range (40) is not exactly visual range
>>>>Headers 0 though 4 Effect 2 (opcode 141):
   Power level (0) does not match level (8)

spwi813.spl // Maze:
No spell school or multiple schools found in description
>>Header 0:
 Range (3) does not match description (0)

spwi816.spl // Symbol, Stun:
No spell school or multiple schools found in description
>>Headers 0 through 2:
 Range (70) does not match description (30)

spwi817.spl // Symbol, Death:
No spell school or multiple schools found in description
>>Header 0:
 Range (70) does not match description (30)

spwi818.spl // Bigby's Clenched Fist:
>>Header 0:
 Range (35) is not exactly visual range
>>>>Header 0 Effect 1 (opcode 174):
   Power level (3) does not match level (8)
>>>>Header 0 Effect 15 (opcode 215):
   Power level (3) does not match level (8)

spwi903.spl // Spellstrike:
No spell school or multiple schools found in description
>>Header 0:
 Range (80) is not exactly visual range

spwi905.spl // Gate:
No spell school or multiple schools found in description
>>Header 0:
 Range (30) is not exactly visual range

spwi908.spl // Chain Contingency:
>>Header 0:
 Casting time in description (90) does not match casting time (9)
>>>>Header 0 Effect 0 (opcode 234):
   Power level (0) does not match level (9)

spwi910.spl // Imprisonment:
>>>>Header 0 Effect 2 (opcode 215):
   Power level (8) does not match level (9)
>>>>Header 0 Effect 3 (opcode 215):
   Power level (8) does not match level (9)

spwi911.spl // Meteor Swarm:
>>Header 0:
 Range (50) does not match description (90)

spwi912.spl // Power Word, Kill:
No spell school or multiple schools found in description
>>Header 0:
 Range (80) is not exactly visual range

spwi913.spl // Wail of the Banshee:
>>>>Header 0 Effect 2 (opcode 174):
   Power level (7) does not match level (9)
>>>>Global effects:
   Power level (0) does not match level (9)

spwi916.spl // Shapechange:
>>>>Header 0 Effect 19 (opcode 215):
   Power level (4) does not match level (9)
>>>>Header 0 Effect 20 (opcode 215):
   Power level (4) does not match level (9)
>>>>Header 0 Effect 21 (opcode 206):

spwi917.spl // Freedom:
>>Header 0:
 Range (320) does not match description (0)
>>>>Header 0 Effect 1 (opcode 146):
   Power level (0) does not match level (9)

spwi918.spl // Bigby's Crushing Hand:
>>Header 0:
 Range (35) is not exactly visual range

spwi919.spl // Wish:
No spell school or multiple schools found in description
>>>>Header 0 Effect 0 (opcode 67):
   Power level (0) does not match level (9)

spwi921.spl // Improved Alacrity:
   Power level (1) does not match previous effect (9)

spwi922.spl // Dragon's Breath:
>>Header 0:
 Range (320) is not exactly visual range

spwi925.spl // Comet:
>>Header 0:
 Range (50) does not match description (90)

spwi999.spl // <Invalid Strref -1>:
>>Header 0:
 Required level of first extended header is 5 rather than one!

 

Sorry, manual labor is all kinds of beneath me.

Link to comment

Other than cussedness*, there's really no reason not to do ACTION_IF NOT FILE_EXISTS ~override/bam.bam~ THEN BEGIN COPY_EXISTING bam.bam override AT_NOW batch_file_what_calls_zlib END COPY_EXISTING bam.bam DO_PATCHES.

 

 

 

 

 

 

*by cussedness I mean "let's dodge the Vista bullet", which OS probably won't even let you install archive compressors you might have contracted from bittorrent just in case you might accidentally squish a .dll.

Link to comment

In the above list, pretty much all of the .eff errors are from the elven/sleep charm fix not adding saving throws or power levels (and being added to stuff like Emotion where it ought not go, but that's another matter).

 

Fewer than 10% of player accessible spells with descriptions got their range correct - either the area of effect is confused with the range, or feet are confused with yards, or visual range is a number between 5 and 140, or....

 

Some of the power errors are probably Bioware's attempt to make always-run effects. The implementation is so inconsistent it's hard to say in any given situation what's going on. Summoning spells still ought to be power zero.

 

The only global effect that probably isn't a misimplementation isFireball's set global variable. Too bad its usage in script is not all that dependable.

Link to comment
The only global effect that probably isn't a misimplementation isFireball's set global variable. Too bad its usage in script is not all that dependable.
Oh, I think the slaver mages and bounty hunters in AR1800 would beg to differ! Scatter!

 

The global effects are cool except for the Wail immunities ('cause, like, the projectile can't even target the caster). Sunfire was also like that (instead of using the no-center projectile), but I guess we (or you) already change it since it doesn't show up with global effects.

 

Ranges >= 30 are valid as Range: 30 and Range: Visual (since spellcasting is capped at 30, there's no difference between it and 140).

Link to comment

I remember reloading several times to get that to trigger - it was an awfully cool idea. They get to take about a step before the spell goes off and it's haywire time if the last FireBall© cast by [ANYONE] was interrupted, but it's another attempt at detectable spells that doesn't clog stats. Perhaps not cool enough to have been sloppily cut and pasted into Solar Stance, but cool idea all the same.

 

The global effects on snares don't work in ToB and contributed to crashes in SoA, so I plucked them out already, along with all the dumb banshee clones.

 

Ranges > 30 should only matter in cases of NPC "attack my target" scripts with a spotter, or PCs using Wizard Eye. It's awfully marginal to be bothering with, but so's the rest of it :band:

 

I'd love to know how the random projectile changes in Chaotic Commands and Greater Command might have happened. DLTCP is making the Bioware editors look bad ;)

Link to comment
The global effects on snares don't work in ToB and contributed to crashes in SoA, so I plucked them out already, along with all the dumb banshee clones.
Really? Or just a "too many map notes" crash? I never payed attention with SoA, and they don't do anything bad or good in ToB, so it just kept my patch size down to ignore them (lord knows my patch for Yoshimo's special trap is already hideous).

 

Ranges > 30 should only matter in cases of NPC "attack my target" scripts with a spotter, or PCs using Wizard Eye. It's awfully marginal to be bothering with, but so's the rest of it :)
IIRC, the spellcaster should still walk to their own visual range, but I've never actually payed attention to the ins and outs of the mechanics (certainly just having a PC or familiar who can see the target doesn't increase the casting range beyond 30). ForceSpell() and such can target any range (the spell's range is completely ignored) and through any obstacle.

 

I'd love to know how the random projectile changes in Chaotic Commands and Greater Command might have happened. DLTCP is making the Bioware editors look bad :D
It does suck. Based on how they built or modified other spells, maybe they created the first ability for a spell and then duplicated for the rest; the stink is whether the original projectile is the right one (they created the "ideal" header) or whether it's a mistake introduced when copying from a template or another similar spell (and was corrected with additional abilities as they had to change all the effects anyway). Luckily, the schools correspond to unique colors of the "sparkle" projectiles, so it's easy to figure out what's right for enchantments (although I thought Chaotic Commands should be touch -- Range 1 with no projectile); Greater Command should have been an invisible area with whip animations (I think I make this change if the effects aren't already there).
Link to comment

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...