Header:Size=114 Bytes | Ext. Header: Size= 40 Bytes | Feature Block: Size=48 Bytes |
Overall structure:
Offset | Size (datatype) | Description |
---|---|---|
0x0000 | 4 (char array) | Signature (‘SPL ’) |
0x0004 | 4 (char array) | Version (‘V1 ‘) |
0x0008 | 4 (dword) | Spell Name - Unidentified (strref) |
0x0010 | 8 (resref) | Completion Sound |
0x0018 | 4 (dword) | |
0x001c | 2 (word) |
Info:
|
0x001e | 4 (dword) | |
0x0022 | 2 (word) | |
0x0025 | 1 (byte) | Primary Type (School) (IWD: school.2da, BG2:mschool.2da)
Info:
For subspells,
Primary Type should always match parent spell, both for interaction with opcodes #220/#229, and with the specialists save bonus/penalty (and opcode #346).
|
0x0027 | 1 (char) | Secondary Type (BG2:msectype.2da)
Info:
For subspells,
Secondary Type should always match parent spell, for interaction with opcodes #221/#230.
|
0x0034 | 4 (dword) |
|
0x003a | 8 (resref) | Spellbook icon (BAM). The engine replaces the last character of this filename with a C. |
0x0050 | 4 (dword) | Spell Description - Unidentified (strref) |
0x0064 | 4 (dword) | Extended Header offset |
0x0068 | 2 (word) | Extended Header count |
0x006a | 4 (dword) | Feature Block Table offset |
0x006e | 2 (word) | Casting Feature Block offset (these feature blocks may not use target type 2) |
0x0070 | 2 (word) | Casting Feature Block count |
Offset | Size (datatype) | Description |
---|---|---|
0x0000 | 1 (char) | Spell form
Note:
This field matters only for
ITM , SPL files shouldn’t function any different based on their type (even 0 ).
|
0x0001 | 1 (char) |
|
0x0002 | 2 (word) |
Note:
Subspells don’t require an
Ability Location .
|
0x0004 | 8 (resref) | Memorised icon (BAM). The engine replaces the last character of this filename with a B. |
0x000c | 1 (char) |
Note:
|
0x000d | 1 (char) |
|
0x000e | 2 (word) |
Info:
As far as subspells are concerned, their
Range is only checked if cast through opcode #148, opcode #232, opcode #258, or opcode #260.
|
0x0010 | 2 (word) | |
0x0012 | 2 (word) |
Info:
|
0x0014 | 2 (word) | Times per day |
0x001e | 2 (word) | Count of feature blocks |
0x0020 | 2 (word) | Offset to feature blocks |
0x0026 | 2 (word) | Projectile (BG2: projectl.ids. Note: in BG2, this value is off-by-one from projectl.ids value. I.e. binary value of |
Offset | Size (datatype) | Description |
---|---|---|
0x0000 | 2 (word) | Opcode Number |
0x0002 | 1 (char) |
Info:
See here for further details.
|
0x0003 | 1 (char) | Power |
0x0004 | 4 (dword) | Parameter 1 |
0x0008 | 4 (dword) | Parameter 2 |
0x000c | 1 (char) |
Info:
See here for further details.
|
0x000d | 1 (char) |
The default behaviour is that effects cannot be dispelled and ignore magic resistance.
This can also be presented in the more traditional way:
The only difference between |
0x000e | 4 (dword) | |
0x0012 | 1 (char) | |
0x0013 | 1 (char) |
Info:
See here for further details.
|
0x0014 | 8 (resref) | Resource |
0x001c | 4 (dword) |
Info:
See here for further details.
|
0x0020 | 4 (dword) |
Info:
See here for further details.
|
0x0024 | 4 (dword) |
Info:
See here for further details.
|
0x0028 | 4 (dword) | Saving Throw Bonus |
0x002c | 4 (dword) | TobEx: Stacking ID. Checked when bit 25 of the Saving Throw Type is set. If two effects of the same opcode are applied, both have Limit Effect Stacking bit set, and both have the same stacking ID, then the latter applied effect is suspended in application until the former effect expires. Regardless of whether it is applied, the latter effect will expire at the same time that it would expire if it was applied. In other words, the total duration of some non-stacking effect opcode is not extended because more than one copy of the effect was applied. Stacking IDs are unique to the opcode being applied. To maintain uniqueness of stacking IDs between different mods, one recommendation is to use the higher word of Special as the modder’s Infinity Engine Community Prefix, then use the lower word as an identifying ID. For example, 0x41360001 (‘A6’ 0x0001). |
Bit | Byte 1 | Byte 2 | Byte 3 | Byte 4 |
---|---|---|---|---|
0 | Unknown | Unknown | Not in combat | Can target invisible (BGEE, TobEx) |
1 | Unknown |
Breaks Sanctuary / Invisibility (EE games)
|
Unknown | Castable when silenced (BGEE, TobEx) |
2 | Unknown |
Hostile
|
Unknown | Unknown |
3 | Unknown | No LOS required | Unknown | Unknown |
4 | Unknown | Allow spotting | Unknown | Unknown |
5 | Unknown | Outdoors only | Unknown | Unknown |
6 | Unknown | Ignore dead-magic and wild surge effect | Unknown | Unknown |
7 | Unknown | Ignore wild surge effect (i.e. trigger/contingency) | Unknown | Unknown |
bit 1: Exclude Evil priests. (BG2 & HoW)
bit 2: Exclude Good priests. (BG2 & HoW)
bit 3: Exclude GENeutral priests. (BG2 & HoW)
bit 4: Exclude Lawful priests. (BG2 & HoW)
bit 5: Exclude LCNeutral priests. (BG2 & HoW)
bit 6: Exclude Abjurers
bit 7: Exclude Conjurers
bit 8: Exclude Diviners
bit 9: Exclude Enchanters
bit 10: Exclude Illusionists
bit 11: Exclude Invokers
bit 12: Exclude Necromancers
bit 13: Exclude Transmuters
bit 14: Wild Magic (exclude Generalists) (BG2)
bit 15 - 29: Unused
bit 30: Exclude Cleric/Paladin
bit 31: Exclude Druid/Ranger
NB.Alignment and School exclusion bits cannot be combined.
BG1,BG2,IWD
...No animation
08
09 Necromancy
10 Alteration
11 Enchantment
12 Abjuration
13 Illusion
14 Conjuration
15 Invocation
16 Divination
17 White sparks
18 Black sparks
19 White sparks
20 White sparks
21 White sparks
22 White -> red sparks
23 White -> purple/red sparks
24 White -> red sparks
26 White sparks
32 White sparks
34 White sparks
56461 No animation
65535 No animation
NB. The 'spark' entries are related to sprklclr.2da (and probably opcode #41)
PST
36: Alteration
37: Conjuration
38: Enchantment
39: Divination
40: Illusion
41: Invocation
42: Necromancy
44: Special (Innate) Skill