OBDATA.DAT
OBDATA.DAT is found in GEODATA and contains general information on objects found in the game. It is static information on the general properties of objects; to hack dynamic Battlescape info on e.g. the number of rounds left in a particular clip, see OBPOS.DAT.
There are 80 entries, each of which are 54 bytes long. It is 4,320 bytes long. It's line width is 54.
The order of objects in this file is also equal to their offset OBDATA reference number. For example, the first record (OBDATA 0) is the pistol, second record (OBDATA 1) is pistol clip, etc.
There are 33 entries are for corpses, which includes 4 entries (quarters) for large corpses, including tanks. Otherwise there are 41 "object" entries, and 6 obsolete/unused entries.
Values are presented according to offset (0 to 53) in bold.
Note: If you hack OBDATA to do Battlescape testing, you do not need to reload the whole game, at least not for DOS X-COM. The DOS version has a separate executable (TACTICAL.EXE) that loads all data again. The WinCE version may need to be entirely reloaded.
Structure
0-19: Name of object. Delimited by a null character. These are internal names... they all make sense, but are not the standardized names displayed in the game. Names and IDs (reference lookup numbers, including within OBDATA - see e.g. [26] to [28]):
Index | Object | Index | Object | Index | Object |
---|---|---|---|---|---|
00/x00 | PISTOL | 27/x1B | Flare | 54/x36 | Floater Corpse |
01/x01 | PISTOL CLIP | 28/x1C | empty | 55/x37 | Celatid Corpse |
02/x02 | RIFLE | 29/x1D | empty | 56/x38 | Silacoid Corpse |
03/x03 | RIFLE CLIP | 30/x1E | empty | 57/x39 | Chryssalid Corpse |
04/x04 | HEAVY CANNON | 31/x1F | CORPSE | 58/x3A | reaper corpse 1 |
05/x05 | CANNON AP-AMMO | 32/x20 | CORPSE & ARMOUR | 59/x3B | reaper corpse 2 |
06/x06 | CANNON HE-AMMO | 33/x21 | CORPSE & POWER SUIT | 60/x3C | reaper corpse 3 |
07/x07 | CANNON I-AMMO | 34/x22 | Heavy Plasma | 61/x3D | reaper corpse 4 |
08/x08 | AUTO-CANNON | 35/x23 | Heavy Plasma Clip | 62/x3E | cyber 1 |
09/x09 | AUTO-CANNON AP-AMMO | 36/x24 | Plasma Rifle | 63/x3F | cyber 2 |
10/x0A | AUTO-CANNON HE-AMMO | 37/x25 | Plasma Rifle Clip | 64/x40 | cyber 3 |
11/x0B | AUTO-CANNON I-AMMO | 38/x26 | Plasma Pistol | 65/x41 | cyber 4 |
12/x0C | ROCKET LAUNCHER | 39/x27 | Plasma Pistol Clip | 66/x42 | secto 1 |
13/x0D | SMALL ROCKET | 40/x28 | BLASTER LAUNCHER | 67/x43 | secto 2 |
14/x0E | LARGE ROCKET | 41/x29 | BLASTER BOMB | 68/x44 | secto 3 |
15/x0F | INCENDIARY ROCKET | 42/x2A | SMALL LAUNCHER | 69/x45 | secto 4 |
16/x10 | LASER PISTOL | 43/x2B | STUN MISSILE | 70/x46 | hover 1 |
17/x11 | LASER GUN | 44/x2C | ALIEN GRENADE | 71/x47 | hover 2 |
18/x12 | HEAVY LASER | 45/x2D | ELERIUM-115 | 72/x48 | hover 3 |
19/x13 | GRENADE | 46/x2E | MIND PROBE | 73/x49 | hover 4 |
20/x14 | SMOKE GRENADE | 47/x2F | >>UNDEFINED << | 74/x4A | TANK1 |
21/x15 | PROXIMITY GRENADE | 48/x30 | >> empty << | 75/x4B | TANK 2 |
22/x16 | HIGH EXPLOSIVE | 49/x31 | >> empty << | 76/x4C | TANK 3 |
23/x17 | MOTION SCANNER | 50/x32 | Sectoid Corpse | 77/x4D | TANK 4 |
24/x18 | MEDI-KIT | 51/x33 | Snakeman Corpse | 78/x4E | CIVM |
25/x19 | PSI-AMP | 52/x34 | Ethereal Corpse | 79/x4F | CIVF |
26/x1A | STUN ROD | 53/x35 | Muton Corpse |
The names as displayed in battle are stored in ENGLISH2.DAT, FRENCH2.DAT and GERMAN2.DAT, hence allowing them to appear in multiple languages. However, I can't find how the OBDATA.DAT records are linked to these external records - It isn't a direct mapping, as the order differs in parts. Most likely the matter is handled in the executable, but this might make adding extra items tricky. - Bomb Bloke 03:40, 11 September 2006 (PDT)
I belive I found where/how they are stored in TACTICAL.EXE, see the discussion. -- Pi Masta 19:21, 9 February 2007 (PST)
20: BIGOBS.PCK reference (pointer to graphic for inventory)
21: FLOOROB.PCK reference (pointer to graphic for item on ground)
22: Average Weapon Strength (Same as seen in UFOpaedia). For clip weapons, this applies to the clip, not the weapon itself. Also note that, if set to 0, the weapon will still "shoot" and the hit will "hit" (assuming it didn't miss) and register with the hit counter, UNITREF.DAT[81]. So this is an easy way to avoid any damage while testing, if so desired.
For information on hacking explosives vs. their blast diameters and strength, see this. It includes what happens if you change the Stun Bomb to HE.
23: Item Weight? See [43]. Doesn't seem to play a role in throwing/encumberance and might be junk.
24: Inventory X Size (width)
25: Inventory Y Size (height)
26-28: Look-up within OBDATA for ammo this weapon uses. Up to three types possible; 255 for no (more) ammo. Note that ammo always directly follows its weapon in this file.
29: HANDOB.PCK reference (pointer to graphic for battlescape)
30: Same as 29
In a few instances, [29] is different to [30]. [30] is most likely the correct offset to use. - Bomb Bloke 03:40, 11 September 2006 (PDT)
31: Ammo Damage Type
0 AP 1 IN 2 HE 3 Laser 4 Plasma 5 Stun 6 Melee 7 Acid Spit (from Celatid) 255 Not Ammo
32: Accuracy, Auto
33: Accuracy, Snap
34: Accuracy, Aimed
Percent TUs are rounded down (truncated). In an extreme case, if you hack UNITREF.DAT[25] (Base TUs) to 199 and Percent TUs to 1, you will need 1 TU to fire the weapon (and can make 199 shots per turn). Or to really make things interesting, set Base TUs to 99 and Percent TUs to 1 - now it takes zero TUs! Also, it relies on Base TUs, not current TUs, so if you e.g. put Base TUs at 99, Percent TUs at 1 (0 TUs per shot), and Current TUs at 255, you still get 255 TUs, with 0 TUs per shot, for the turn you load that savegame - excellent if you plan on reloading it for each round of testing.
Don't set Percent TUs to 0. If you do, the object is no longer considered a weapon, and can only be thrown.
35: Percent TUs Used, Auto
36: Percent TUs Used, Snap
37: Percent TUs Used, Aimed
38: Primary use: Clip Size (for ammo; see [49]). Secondary use: Melee weapon strength, as follows:
0 All Corpses/Electroflare/Mind probe 8 Pistol 65 Stun Rod 10 Everything else...
Tertiary use: Timer for "grenade", if Grenade ([44]) is true. Only works if item is ammo ([49]). If it is then e.g. since Blaster has a 1 here (1 bomb per blaster "clip"), it will explode at end of turn 1 (if not being held in inventory).
39: Possibly Melee-related Stat??
0 All Corpses 0 Plasma Pistol Clip 5 Stun Rod 9 Pistol and Pistol Clip 8 Everything else...
NKF: Melee damage type?
0 AP 1 IN 2 HE 3 Laser or Gauss 4 Plasma or Sonic 5 Stun 6 TFTD vibroblade damage (does not appear to be used in UFO)
40: Possibly Melee Accuracy?? Zombie found that changing this does not change the Stun Rod's 100% accuracy (nor does changing soldier Melee Accuracy). Thus the Stun Rod appears to be hard-wired to 100%. Has anyone tried editing this value with hacked melee weapons?
0 All Corpses 0 Electroflare 0 Plasma Weapon Clips 100 Everything else...
41: Melee TU%
0 All Corpses 0 Electroflare 0 Plasma Weapon Clips 30 Stun Rod 50 Everything else...
NKF: TU% when attacking as a melee weapon:
50 Most objects 30 Stun rod 40 TFTD thermal tazer 10 Vibroblade 15 Thermal lance 20 Heavy thermal Lance
So a summary of 39 to 41 looks like this:
39 40 41 Objects 0 0 0 All Corpses/Plasma Pistol Clip 5 100 30 Stun Rod 8 0 0 Plasma Rifle Clip/Heavy Plasma Clip/Electroflare 9 100 50 Pistol/Pistol Clip 8 100 50 Everything else... (34 objects)
42: Explosive strength needed to destroy object
43: Item Weight Used for both throwing and encumberance purposes.
44: Grenade Type
1 Grenade, Alien Grenade, High Explosive 2 Proximity Grenade 3 Smoke Grenade
45: Maybe an abandoned bit field, all except the Elerium tick?:
0 All corpses and many human objects, including weapons and ammo 1 All alien weapons and ammo but also several common human ammos and the pistol 4 Elerium
46: Boolean: Is Weapon That Shoots?
47: Boolean: Is Weapon?
48: Boolean: Is Non-Waypoint Weapon?
49: Boolean: Is Ammo?
50: Boolean: Is Two-Handed Weapon?
51: Boolean: Is Blaster Launcher?
52: Boolean: Is Alien?
53: Scoring points (except for Elerium which works per 50 units)
See Also
- OBPOS.DAT - Stores positions of objects in a battlescape
- PRODUCT.DAT - Stores information on manufactuable items (Hours, Cost, etc.)
- PURCHASE.DAT - Stores buying and selling Information about most of these items
- UP.DAT - References items in this file for the UFOpaedia
- GEODATA - Parent Folder for file
- Saved Game Files