# SPL v1 (all games except IWD2)

Sorted alphabetically (sort by order in the file)

Effect headers ('fx') occur either as top-level headers (on-equip effects) or as child headers of ability headers ('ab_fx').

## Main Header

For readability, 'unusable' flags are listed separately.

Standard keys

Key | Type
--- | ---
allow_spotting | Boolean
break_sanctuary | Boolean
can_target_invisible | Boolean
castable_when_silenced | Boolean
casting_animation | Integer
casting_sound | String (8 bytes)
completion_sound | String (8 bytes)
description | Strref
description_image | String (8 bytes)
description_unused | Strref
hostile | Boolean
icon | String (8 bytes)
ignore_dead_magic | Boolean
ignore_wild_surge | Boolean
level[1] | Integer
name | Strref
name_unused | Strref
no_los_required | Boolean
non_combat | Boolean
outdoors_only | Boolean
school | Lookup (0=None, 1=Abjurer, 2=Conjurer, 3=Diviner, 4=Enchanter, 5=Illusionist, 6=Invoker, 7=Necromancer, 8=Transmuter, 9=Generalist, 10=Wildmage)
sectype | Integer
type | Lookup (0=Special, 1=Wizard, 2=Priest, 3=Psionic, 4=Innate, 5=BardSong)

Usability flags

Key | Type
--- | ---
unusable_abjuration | Boolean
unusable_abjurer | Boolean
unusable_alteration | Boolean
unusable_chaotic | Boolean
unusable_cleric | Boolean
unusable_conjuration | Boolean
unusable_conjurer | Boolean
unusable_divination | Boolean
unusable_diviner | Boolean
unusable_druid | Boolean
unusable_enchanter | Boolean
unusable_enchantment | Boolean
unusable_evil | Boolean
unusable_generalist | Boolean
unusable_geneutral | Boolean
unusable_good | Boolean
unusable_illusion | Boolean
unusable_illusionist | Boolean
unusable_invocation | Boolean
unusable_invoker | Boolean
unusable_lawful | Boolean
unusable_lcneutral | Boolean
unusable_necromancer | Boolean
unusable_necromancy | Boolean
unusable_transmutation | Boolean
unusable_transmuter | Boolean

## Ability (ab)

Standard keys

Key | Type
--- | ---
casting_time | Integer
exclusive_effects | Boolean
icon | String (8 bytes)
level[1] | Integer
location[4] | Lookup (0=None, 1=Weapon, 2=Spell, 3=Item, 4=Innate)
projectile[1] | id lookup (projectl) with off-by-one correction
range[1] | Integer
target[1] | Lookup (0=Invalid, 1=LivingActor, 2=Inventory, 3=DeadActor, 4=PointWithinRange, 5=Caster, 6=Crash, 7=CasterSpecial)
target_count | Integer
times_per_day[1] | Integer
type[1] | Lookup (0=None, 1=Melee, 2=Ranged, 3=Magical, 4=Launcher)
usable_after_id | Boolean
usable_before_id | Boolean
when_drained[1] | Integer

## Effect (fx)

Effects can occur as top-level headers (casting effects) or as child headers of ability headers. Use the 'ab_fx' special type to edit child headers.

Standard keys

Key | Type
--- | ---
blue | Integer
bypass_mirror_image | Boolean
damage_type | Lookup (0=Crushing, 1=Acid, 2=Cold, 4=Electricity, 8=Fire, 16=Piercing, 32=Poison, 64=Magic, 128=Missile, 256=Slashing, 512=MagicFire, 1024=MagicCold, 2048=Stunning)
damagetype | Lookup (0=Crushing, 1=Acid, 2=Cold, 4=Electricity, 8=Fire, 16=Piercing, 32=Poison, 64=Magic, 128=Missile, 256=Slashing, 512=MagicFire, 1024=MagicCold, 2048=Stunning)
dicenumber | Integer
dicesize | Integer
dispel_resist | Lookup (0=Nonmagical, 1=DispelResist, 2=NoDispelIgnoreResist, 3=DispelIgnoreResist)
drain_hp_to_caster | Boolean
duration | Integer
green | Integer
ignore_difficulty | Boolean
ignore_primary_target | Boolean
ignore_secondary_target | Boolean
opcode | Integer
parameter1 | Integer
parameter2 | Integer
parameter2a | Integer
parameter2b | Integer
power | Integer
probability1[100] | Integer
probability2 | Integer
red | Integer
resource | String (8 bytes)
save_for_half | Boolean
save_vs_breath | Boolean
save_vs_poison | Boolean
save_vs_polymorph | Boolean
save_vs_spell | Boolean
save_vs_wand | Boolean
savebonus | Integer
special | Integer
target | Lookup (0=None, 1=Self, 2=PresetTarget, 3=Party, 4=Everyone, 5=EveryoneExceptParty, 6=CasterGroup, 7=TargetGroup, 8=EveryoneExceptSelf, 9=OriginalCaster)
timing | Lookup (0=InstantLimited, 1=InstantPermanent, 2=Equipped, 3=DelayLimited, 4=DelayPermanent, 5=DelayEquipped, 6=LimitedAfterDuration, 7=PermanentAfterDuration, 9=InstantPermanentAfterDeath)