PRO file format

Applies to:
BG2, BG2: ToB, BGEE

General Description
This file format describes projectiles, and the files are referenced spells and projectile weapons. Projectile files can control:
  • Projectile graphics
  • Projectile speed
  • Projectile area of effect
  • Projectile sound
These files have constant length 256 bytes (no BAM), 512 bytes (single target), or 768 bytes (area of effect).

Detailed Description

Offset Size (datatype) Description
0x00000 4 (char array) Signature ('PRO ')
0x00004 4 (char array) Version ('V1.0')
0x00008 2 (word) Projectile type
  • 1 no BAM
  • 2 single target
  • 3 area of effect
0x0000a 2 (word) Projectile speed (0x01 to 0xFF)
0x0000c 4 (dword) Sparking flags
  • bit 0: Show sparkle
  • bit 1: Use z coordinate
  • bit 2: Loop sound (0x10)
  • bit 3: Loop sound (0x18)
  • bit 4: Do not affect direct target
  • bit 5: Draw below animate objects
  • bit 6: Allow saving game (EE)
Further bits are unused.
0x00010 8 (resref) WAVC file (travelling)
0x00018 8 (resref) WAVC file (explosion/reach destination)
0x00020 8 (resref) Travelling VEF/VVC/BAM
0x00028 2 (word) Spark colour (from sprkclr.2da)
  • 0 = Crashes
  • 1 = Black
  • 2 = Blue
  • 3 = Chromatic
  • 4 = Gold
  • 5 = Green
  • 6 = Purple
  • 7 = Red
  • 8 = White
  • 9 = Ice
  • 10 = Stone
  • 11 = Magenta
  • 12 = Orange
The following fields are used by Enhanced Editions games only:
0x0002a 2 (word) Projectile width
0x0002c 4 (dword) Extended flags
  • Bit 0: Bounce from walls
  • Bit 1: Pass target
  • Bit 2: Draw centre VVC once
  • Bit 3: Hit immediately
  • Bit 4: Face target
  • Bit 5: Curved path
  • Bit 6: Start random frame
  • Bit 7: Pillar
  • Bit 8: Semi-transparent trail puff VEF
  • Bit 9: Tinted trail puff VEF
  • Bit 10: Multiple projectiles
  • Bit 11: Default spell on missed
  • Bit 12: Falling path
  • Bit 13: Comet
  • Bit 14: Lined up area of effect
  • Bit 15: Rectangular area of effect
  • Bit 16: Draw behind target
  • Bit 17: Casting glow effect
  • Bit 18: Travel door
  • Bit 19: Stop/fade after hit
  • Bit 20: Display message
  • Bit 21: Random path
  • Bit 22: Start random sequence
  • Bit 23: Colour pulse on hit
  • Bit 24: Touch projectile
  • Bit 25: Negate first creature target
  • Bit 26: Negate second creature target
  • Bit 27: Use either IDS
  • Bit 28: Delayed payload
  • Bit 29: Limited path count
  • Bit 30: IWD-style check (use entries from splprot.2da for first and second creature target)
  • Bit 31: Caster affected
0x00030 4 (strref) Display message
0x00034 4 (dword) Pulse colour (byte order: blue, green, red, unused)
0x00038 2 (word) Colour speed
0x0003a 2 (word) Screen shake amount
0x0003c 2 (word) First creature target: Value

If Extended Flags bit 30 is
  • unset: use IDS targets
  • set: use splprot.2da
0x0003e 2 (word) First creature target: Type

If Extended Flags bit 30 is unset: use IDS targets
  • 2 EA.IDS
  • 3 GENERAL.IDS
  • 4 RACE.IDS
  • 5 CLASS.IDS
  • 6 SPECIFIC.IDS
  • 7 GENDER.IDS
  • 8 ALIGNMEN.IDS
  • 9 KIT.IDS
If Extended Flags bit 30 is set: use entries from splprot.2da
0x00040 2 (word) Second creature target: Value
0x00042 2 (word) Second creature target: Type
0x00044 8 (resref) Default spell (SPL)
0x0004c 8 (resref) Success spell (SPL)
0x00054 2 (word) Angle increase minimum [PSTEE]
0x00056 2 (word) Angle increase maximum [PSTEE]
0x00058 2 (word) Curve minimum [PSTEE]
0x0005a 2 (word) Curve maximum [PSTEE]
0x0005c 2 (word) THAC0 bonus [PSTEE]
0x0005e 2 (word) THAC0 bonus (non-actor) [PSTEE]
0x00060 2 (word) Radius minimum [PSTEE]
0x00062 2 (word) Radius maximum [PSTEE]
0x00064 156 (bytes) Unused

The following struct is added when the projectile is a single target or area effect projectile (see 'Projectile type' at offset 0x00008). It has 100h (256) bytes.

Offset Size (datatype) Description
0x00100 4 (dword) BAM projectile flags
  • bit 0: Enable BAM colouring (palette at 0x11c)
  • bit 1: Enable smoke
  • bit 2: Unused
  • bit 3: Enable area lighting usage
  • bit 4: Enable area height usage
  • bit 5: Enable shadow
  • bit 6: Enable light spot
  • bit 7: Enable brighten flags
  • bit 8: Low level brighten
  • bit 9: High level brighten
0x00104 8 (resref) Projectile animation (BAM)
0x0010c 8 (resref) Shadow animation (BAM)
0x00114 1 (byte) Projectile number (BAM sequence)
0x00115 1 (byte) Shadow number (BAM sequence)
0x00116 2 (word) Light spot intensity
0x00118 2 (word) Light spot width
0x0011a 2 (word) Light spot height
0x0011c 8 (resref) Palette (BMP)
  • STTRAVL1 = Blue
  • STTRAVL2 = Yellow
  • STTRAVL3 = Green
  • STTRAVL4 = Purple
  • STTRAVL5 = Pale purple
  • STTRAVL6 = Pink
  • STTRAVL7 = Blue
  • STTRAVL8 = Gold
0x00124 7 (bytes) Projectile colours
0x0012b 1 (byte) Smoke puff period
0x0012c 7 (bytes) Smoke colours
0x00133 1 (byte)
Face target granularity
  • 1 : Do not face target
  • 5 : Mirrored eastern directions (reduced granularity)
  • 9 : Mirrored eastern (full granularity)
  • 16 : Mot mirrored, not reduced
0x00134 2 (short) Projectile smoke animation (animate.ids)
0x00136 8 (resref) Trailing animation 1 (BAM)
0x0013e 8 (resref) Trailing animation 2 (BAM)
0x00146 8 (resref) Trailing animation 3 (BAM)
0x0014e 2 (word) Trailing number 1 (BAM sequence)
0x00150 2 (word) Trailing number 2 (BAM sequence)
0x00152 2 (word) Trailing number 3 (BAM sequence)
0x00154 4 (dword) Flags
  • bit 0: Puff at target
  • bit 1: Puff at source
0x00158 168 (bytes) Unused

If the projectile is an area effect projectile then an additional struct is added to the file. It has 100h (256) bytes.

Offset Size (datatype) Description
0x00200 4 (dword) Area projectile flags
  • bit 0: Projectile remains visible at destination
  • bit 1: Triggered by inanimate objects (e.g. doors)
  • bit 2: Triggered on condition
  • bit 3: Trigger during delay
  • bit 4: Use secondary projectile
  • bit 5: Use fragment graphics
  • bit 6: Target selection*
  • bit 7: Target selection*
  • bit 8: Number of triggers equal to cast mage level
  • bit 9: Number of triggers equal to cast cleric level
  • bit 10: Use VVC
  • bit 11: Cone shape
  • bit 12: Affect objects through wall, mountain, building, and off-area
  • bit 13: Check triggers from animation frame 30 (req. bit 0)
  • bit 14: Delayed explosion
  • bit 15: Affect only one target

  • *Target selection is relative to caster:
    • 00 Affect all
    • 01 Affect only enemies
    • 10 Affect all
    • 11 Affect only allies
Further bits are unused
0x00204 2 (word) Trigger radius (divide by approx 8.5 to receive diameter in feet)
0x00206 2 (word) Area of effect (divide by approx 8.5 to receive diameter in feet)
0x00208 8 (resref) Trigger sound
0x00210 2 (word) Explosion delay
0x00212 2 (short) Fragment animation (animate.ids)
0x00214 2 (word) Secondary projectile (projectl.ids-1)
0x00216 1 (byte) Trigger count (used if bits 8 and 9 at 0x200 are not set)
0x00217 1 (byte) Explosion animation (fireball.ids)
0x000218 1 (byte) Explosion colour
0x000219 1 (byte) Unused
0x00021a 2 (bytes) Explosion projectile (projectl.ids), played on affected creatures
0x00021c 8 (resref) Explosion animation (VVC)
0x000224 2 (word) Cone width (1 to 359)
The following fields are used by Enhanced Editions games only:
0x00226 2 (word) Unused
0x00228 8 (resref) Spread animation (VEF/VVC/BAM)
0x00230 8 (resref) Ring animation (VEF/VVC/BAM)
0x00238 8 (resref) Area sound (WAV)
0x00240 4 (dword) Extended flags
  • Bit 0: Paletted ring
  • Bit 1: Random speed
  • Bit 2: Start scattered
  • Bit 3: Paletted centre
  • Bit 4: Repeat scattering
  • Bit 5: Paletted animation
  • Bit 6: Unused
  • Bit 7: Unused
  • Bit 8: Unused
  • Bit 9: Oriented fireball puffs
  • Bit 10: Use hit dice lookup
  • Bit 11: Unused
  • Bit 12: Unused
  • Bit 13: Blended area/ring animation
  • Bit 14: Glowing area/ring animation
  • Bit 15: Hit point limit
0x00244 2 (word) Dice thrown for multiple targets
0x00246 2 (word) Dice sides for multiple targets
0x00248 2 (word) Animation granularity
0x0024a 2 (word) Animation granularity divider
0x0024c 180 (bytes) Unused