OBDATA.DAT

From UFOpaedia
Revision as of 08:13, 10 June 2007 by Arrow Quivershaft (talk | contribs) (Got a Hex Editor! Learned a bit, found the TU Percent data on this page for the drills was wrong, corrected it.)
Jump to navigation Jump to search

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]):

  ID   Name                            ID   Name
   0   PISTOL                          40   BLASTER LAUNCHER
   1   PISTOL CLIP                     41   BLASTER BOMB
   2   RIFLE                           42   SMALL LAUNCHER
   3   RIFLE CLIP                      43   STUN MISSILE
   4   HEAVY CANNON                    44   ALIEN GRENADE
   5   CANNON AP-AMMO                  45   ELERIUM-115
   6   CANNON HE-AMMO                  46   MIND PROBE
   7   CANNON I-AMMO                   47   >>UNDEFINED <<
   8   AUTO-CANNON                     48   >> empty <<
   9   AUTO-CANNON AP-AMMO             49   >> empty <<
  10   AUTO-CANNON HE-AMMO             50   Sectoid Corpse
  11   AUTO-CANNON I-AMMO              51   Snakeman Corpse
  12   ROCKET LAUNCHER                 52   Ethereal Corpse
  13   SMALL ROCKET                    53   Muton Corpse
  14   LARGE ROCKET                    54   Floater Corpse
  15   INCENDIARY ROCKET               55   Celatid Corpse
  16   LASER PISTOL                    56   Silacoid Corpse
  17   LASER GUN                       57   Chryssalid Corpse
  18   HEAVY LASER                     58   reaper corpse 1
  19   GRENADE                         59   reaper corpse 2
  20   SMOKE GRENADE                   60   reaper corpse 3
  21   PROXIMITY GRENADE               61   reaper corpse 4
  22   HIGH EXPLOSIVE                  62   cyber 1
  23   MOTION SCANNER                  63   cyber 2
  24   MEDI-KIT                        64   cyber 3
  25   PSI-AMP                         65   cyber 4
  26   STUN ROD                        66   secto 1
  27   Flare                           67   secto 2
  28   empty                           68   secto 3
  29   empty                           69   secto 4
  30   empty                           70   hover 1
  31   CORPSE                          71   hover 2
  32   CORPSE & ARMOUR                 72   hover 3
  33   CORPSE & POWER SUIT             73   hover 4
  34   Heavy Plasma                    74   TANK1
  35   Heavy Plasma Clip               75   TANK 2
  36   Plasma Rifle                    76   TANK 3
  37   Plasma Rifle Clip               77   TANK 4
  38   Plasma Pistol                   78   CIVM
  39   Plasma Pistol Clip              79   CIVF

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] - could one be thrown weight, and the other inventory weight?

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

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