PiD Item Specs


Ron Hunsinger <listreply1@erstesoft.com> in a Story forum post writes:

The following is a reformatted dump of the internal table that PiD uses to describe item types. The data does not appear in any resources or saved files; it had to be extracted from the data initialization code of the 68K version of PiD (version 2.0).

The formatting will almost certainly come out wrong here. Sorry about that. I did try to add enough punctuation that the lines can still be uniquely parsed, with some extra characters to make it easier to identify the fields even though they don't line up.

00 (Map): 2, instant, 0*, 4oz, 18, $0, none 
01 (Watch): 4, watch, 0*, 2oz, 4, $0, none 
02 (Flashlight): 5, light, 0*, 10oz, 70, $0, none 
03 (Goggles): 6, wear, 1*, 25oz, 450, $0, none 
04 (Gasmask): 24, wear, 0*, 15oz, 300, $0, none 
05 (): 0, nouse, 0*, 0oz, 0, $0, none 
06 (CanvasBag): 9, nouse, 0*, 2oz, 65535, $0, any(400) 
07 (): 0, nouse, 0*, 0oz, 0, $0, none 
08 (CedarBox): 11, nouse, 2*, 0oz, 100, $0, any(100) 
09 (VelvetBag): 12, nouse, 1*, 2oz, 65535, $0, any(12000) 
10 (LeadBox): 13, nouse, 2*, 70oz, 190, $0, any(190) 
11 (): 0, nouse, 0*, 0oz, 0, $0, none 
12 (GlassVial): 15, instant, 0*, 3oz, 12, $0, none 
13 (): 0, nouse, 0*, 0oz, 0, $0, none 
14 (RedCloak): 23, wear, 1*, 2oz, 60, $0, none 
15 (): 0, nouse, 0*, 0oz, 0, $0, none 
16 (Nuke): 25, instant, 1*, 220oz, 90, $0, none 
17 (Beacon): 26, instant, 1*, 10oz, 60, $0, none 
18 (PotionBlue): 17, consume, 0*, 1oz, 10, $0, none 
19 (PotionRed): 16, consume, 0*, 1oz, 10, $0, none 
20 (PotionBrown): 18, consume, 0*, 2oz, 10, $0, none 
21 (PotionViolet): 19, consume, 0*, 1oz, 10, $0, none 
22 (MeinKampf): 21, nouse, 0*, 4oz, 0, $0, none 
23 (Propaganda): 3, nouse, 0*, 0oz, 0, $0, none 
24 (EasterEgg): 22, consume, 2*, 2oz, 0, $0, none 
25 (BadM16): 42, nouse, 0*, 115oz, 0, $0, AmmoM16(33) 
26 (BadAK47): 46, nouse, 0*, 120oz, 0, $0, AmmoAK*(33) 
27 (BadMP41): 43, nouse, 0*, 97oz, 0, $0, AmmoMP(36) 
28 (BadP4): 45, nouse, 0*, 46oz, 0, $0, AmmoP4(10) 
29 (RingRuby): 28, wear, 0*, 5oz, 2, $380, none 
30 (RingAmethyst): 27, wear, 1*, 5oz, 2, $310, none 
31 (Necklace): 40, wear, 1*, 20oz, 20, $1201, none 
32 (Gemstone): 39, nouse, 5*, 20oz, 40, $540, none 
33 (Pipes): 30, instant, 3*, 78oz, 488, $560, none 
34 (KeySilver): 32, nouse, 1*, 18oz, 12, $92, none 
35 (Bowl): 33, nouse, 1*, 69oz, 260, $150, none 
36 (KeyGold): 31, nouse, 1*, 25oz, 12, $11, none 
37 (Ingot): 34, nouse, 1*, 365oz, 100, $380, none 
38 (Sapphire): 36, nouse, 1*, 2oz, 4, $150, none 
39 (): 0, nouse, 0*, 0oz, 0, $0, none 
40 (Emerald): 37, nouse, 1*, 3oz, 4, $119, none 
41 (Pearl): 38, nouse, 1*, 4oz, 32, $110, none 
42 (): 0, nouse, 0*, 0oz, 0, $0, none 
43 (): 0, nouse, 0*, 0oz, 0, $0, none 
44 (): 0, nouse, 0*, 0oz, 0, $0, none 
45 (WeaponKnife): 8, weapon, 0*, 22oz, 40, $0, none 
46 (WeaponP4): 45, weapon, 1*, 46oz, 50, $0, AmmoP4(10) 
47 (WeaponColt): 44, weapon, 0*, 41oz, 50, $0, AmmoColt(10) 
48 (WeaponMP): 43, weapon, 1*, 103oz, 70, $0, AmmoMP(36) 
49 (WeaponAK): 46, weapon, 1*, 135oz, 80, $0, AmmoAK*(33) 
50 (Weapon40): 47, weapon, 1*, 120oz, 80, $0, Ammo40*(5) 
51 (AmmoP4): 48, nouse, 0*, 7oz, 10, $0, none 
52 (AmmoMP): 49, nouse, 0*, 19oz, 36, $0, none 
53 (AmmoAKPlain): 50, nouse, 0*, 15oz, 33, $0, none 
54 (AmmoAKHE): 50, nouse, 0*, 15oz, 33, $0, none 
55 (AmmoAKSabot): 50, nouse, 0*, 15oz, 33, $0, none 
56 (AmmoM16): 50, nouse, 0*, 19oz, 33, $0, none 
57 (AmmoColt): 48, nouse, 0*, 12oz, 10, $0, none 
58 (Ammo40HE): 51, nouse, 0*, 2oz, 5, $0, none 
59 (Ammo40Frag): 51, nouse, 0*, 2oz, 5, $0, none 
60 (Ammo40Proj): 51, nouse, 0*, 4oz, 5, $0, none 
61 (SilverMedal): 52, nouse, 0*, 10oz, 70, $1, none 
62 (NotePlain): 3, nouse, 0*, 0oz, 0, $0, none 
63 (NoteBungie): 3, nouse, 0*, 0oz, 0, $0, none 
64 (CrystalYellow): 53, crystal, 2*, 0oz, 0, $0, none 
65 (CrystalBlue): 54, crystal, 2*, 0oz, 0, $0, none 
66 (CrystalOrange): 55, crystal, 2*, 0oz, 0, $0, none 
67 (): 7, nouse, 0*, 0oz, 0, $0, none 
68 (CrystalViolet): 56, crystal, 2*, 0oz, 0, $0, none 
69 (CrystalGreen): 58, crystal, 2*, 0oz, 0, $0, none 
70 (CrystalBlack): 57, crystal, 2*, 0oz, 0, $0, none

The first two columns are just labels (item # and an abbreviated item name). The remaining columns are:

Frame: which image from resource '.256'(128). There is no palette adjustment, since items by definition can be picked up and carried between different levels, which would be using different palettes.

Usage: Each item has its own specific usage, but they fall into groups that have many behaviors in common. (For example, all weapons are different, but they behave alike in that they can be wielded and produce similar messages when you pick them up and put them down.) Internally, the game assigns a "usage number", from 0 to 9, to each item. Each group has specific messages that are displayed when you begin to use one, append to the inventory line while the item is "in use", or displayed when you stop using them. For some groups, the only difference in how they act is that these messages are different. I've arbitrarily picked mnemonic names for these groups:

Usage=0 (nouse): You can't use these items. Double-clicking on such an item in your inventory produces the message "You don't seem to be able to do anything with the ^1." (An unusable item may still be useful. For example, you can open/close the Canvas Bag, and put stuff in it, but you can't "use" it.)

Usage=1 (???): Behaves just like "nouse", but its volume is variable. PiD does not have any items with this usage.

Usage=2 (consume): When you double-click on such an item to "use" it, something unique to the item happens, and then the item is removed from your inventory. Potions and the Easter Egg have this usage.

Usage=3 (weapon): To use a weapon, it must not be in a container, and if it needs ammo you must have some. Your current weapon is put away, and this weapon (if different from what was your current weapon) becomes current. The begin/during/after messages are "ready", "(in hand)", "put away".

Usage=4 (crystal): To use a crystal, it must not be in a container. Your current crystal is put away, and this one (if different) is wielded. The messages are "ready", "(ready)", "put away".

Usage=5 (instant): Using this type of item does something, but the item itself is unaffected and remains in your inventory. Any messages are unique to the item.

Usage=6 (light): To use a light, it must not be in a container. Using a light toggles its "in use" flag, and also toggles a related flag the program can examine without having to search your inventory. The messages are "turned on", "(on)", "turned off".

Usage=7 (wear): Same as usage 6, except the messages are "worn", "(worn)", "removed".

Usage=8 (watch): Same as usage 6, except the messages are "worn", "(on wrist)", "removed".

Usage=9 (???): Same as usage 6, except the messages are "worn", "", "removed". There are no items in PiD with this usage.

The next column is the number of points (gold stars, hence the asterisk) you earn the first time you pick one of these items up.

Then there's the weight of the item, nominally in ounces, but the actual unit is 1/28th of a Kilogram. There will be some rounding error when these weights are converted to decimal for display. Weight is tracked but ignored in PiD.

The next column is the "volume" of the item. Volume determines how many things you can put in a container. The combined volume of all items in a container cannot exceed the container's capacity.

The $value is the value of the item. (Multiply the values in the table by 100. The unit is $0.1K.)

The final column combines two attributes of a container. Each item has a capacity, which is the maximum combined total of all items you put in the container. An item with a capacity of 0 is not a container. The other attribute controls what types of items can go into the container. A non-negative value means only that specific item can go in the container. (For example, the P4 pistol can only contain P4 ammo.) Negative values are wild-cards: -1 matches anything, -5 matches any kind of 40mm ammo, -6 matches any kind of AK ammo. The final column combines these as "none" if the item isn't a container, or itemType(capacity) if it is.

Note that the table says the Cedar Box can contain anything. There's a separate table specifically for the Cedar Box that limits it to holding only these items: Flashlight, Knife, WeaponP4, AmmoP4, AmmoMP, AmmoAKPlain, AmmoAKHE, AmmoAKSabot, AmmoM16, AmmoColt, Ammo40HE, Ammo40Frag, Ammo40Proj, SilverMedal.

Note that many of the "junk" items (notes, pamphlets, etc.) have zero volume. You can add them freely to containers without using up any space. (But they still count toward the hard limit of 256 items in your inventory.)

The table contains a number of unused entries, with all values zeroed out, EXCEPT that they forgot to zero out the frame # for item 67. The corresponding image is a tiny irregularly shaped red something-or-other. The shape dumper programs show a number of similar-appearing unused images in an assortment of colors. Make of that what you will.

For those who don't like my re-formatting, here's the original unformatted hex dump of the table:

fram usg val wt vol $$$ cap cont [kItemtype...] 
[ 0]: 0002 0005 0000 0004 0012 0000 0000 0000 Map 
[ 1]: 0004 0008 0000 0002 0004 0000 0000 0000 Watch 
[ 2]: 0005 0006 0000 000A 0046 0000 0000 0000 Flashlight 
[ 3]: 0006 0007 0001 0019 01C2 0000 0000 0000 Goggles 
[ 4]: 0018 0007 0000 000F 012C 0000 0000 0000 Gasmask 
[ 5]: 0000 0000 0000 0000 0000 0000 0000 0000 
[ 6]: 0009 0000 0000 0002 FFFF 0000 0190 FFFF CanvasBag 
[ 7]: 0000 0000 0000 0000 0000 0000 0000 0000 
[ 8]: 000B 0000 0002 0000 0064 0000 0064 FFFF CedarBox 
[ 9]: 000C 0000 0001 0002 FFFF 0000 2EE0 FFFF VelvetBag 
[10]: 000D 0000 0002 0046 00BE 0000 00BE FFFF LeadBox 
[11]: 0000 0000 0000 0000 0000 0000 0000 0000 
[12]: 000F 0005 0000 0003 000C 0000 0000 0000 GlassVial 
[13]: 0000 0000 0000 0000 0000 0000 0000 0000 
[14]: 0017 0007 0001 0002 003C 0000 0000 0000 RedCloak 
[15]: 0000 0000 0000 0000 0000 0000 0000 0000 
[16]: 0019 0005 0001 00DC 005A 0000 0000 0000 Nuke 
[17]: 001A 0005 0001 000A 003C 0000 0000 0000 Beacon 
[18]: 0011 0002 0000 0001 000A 0000 0000 0000 PotionBlue 
[19]: 0010 0002 0000 0001 000A 0000 0000 0000 PotionRed 
[20]: 0012 0002 0000 0002 000A 0000 0000 0000 PotionBrown 
[21]: 0013 0002 0000 0001 000A 0000 0000 0000 PotionViolet 
[22]: 0015 0000 0000 0004 0000 0000 0000 0000 MeinKampf 
[23]: 0003 0000 0000 0000 0000 0000 0000 0000 Propaganda 
[24]: 0016 0002 0002 0002 0000 0000 0000 0000 EasterEgg 
[25]: 002A 0000 0000 0073 0000 0000 0021 0038 BadM16 
[26]: 002E 0000 0000 0078 0000 0000 0021 FFFA BadAK47 
[27]: 002B 0000 0000 0061 0000 0000 0024 0034 BadMP41 
[28]: 002D 0000 0000 002E 0000 0000 000A 0033 BadP4 
[29]: 001C 0007 0000 0005 0002 017C 0000 0000 RingRuby 
[30]: 001B 0007 0001 0005 0002 0136 0000 0000 RingAmethyst 
[31]: 0028 0007 0001 0014 0014 04B1 0000 0000 Necklace 
[32]: 0027 0000 0005 0014 0028 021C 0000 0000 Gemstone 
[33]: 001E 0005 0003 004E 01E8 0230 0000 0000 Pipes 
[34]: 0020 0000 0001 0012 000C 005C 0000 0000 KeySilver 
[35]: 0021 0000 0001 0045 0104 0096 0000 0000 Bowl 
[36]: 001F 0000 0001 0019 000C 000B 0000 0000 KeyGold 
[37]: 0022 0000 0001 016D 0064 017C 0000 0000 Ingot 
[38]: 0024 0000 0001 0002 0004 0096 0000 0000 Sapphire 
[39]: 0000 0000 0000 0000 0000 0000 0000 0000 
[40]: 0025 0000 0001 0003 0004 0077 0000 0000 Emerald 
[41]: 0026 0000 0001 0004 0020 006E 0000 0000 Pearl 
[42]: 0000 0000 0000 0000 0000 0000 0000 0000 
[43]: 0000 0000 0000 0000 0000 0000 0000 0000 
[44]: 0000 0000 0000 0000 0000 0000 0000 0000 
[45]: 0008 0003 0000 0016 0028 0000 0000 0000 WeaponKnife 
[46]: 002D 0003 0001 002E 0032 0000 000A 0033 WeaponP4 
[47]: 002C 0003 0000 0029 0032 0000 000A 0039 WeaponColt 
[48]: 002B 0003 0001 0067 0046 0000 0024 0034 WeaponMP 
[49]: 002E 0003 0001 0087 0050 0000 0021 FFFA WeaponAK 
[50]: 002F 0003 0001 0078 0050 0000 0005 FFFB Weapon40 
[51]: 0030 0000 0000 0007 000A 0000 0000 0000 AmmoP4 
[52]: 0031 0000 0000 0013 0024 0000 0000 0000 AmmoMP 
[53]: 0032 0000 0000 000F 0021 0000 0000 0000 AmmoAKPlain 
[54]: 0032 0000 0000 000F 0021 0000 0000 0000 AmmoAKHE 
[55]: 0032 0000 0000 000F 0021 0000 0000 0000 AmmoAKSabot 
[56]: 0032 0000 0000 0013 0021 0000 0000 0000 AmmoM16 
[57]: 0030 0000 0000 000C 000A 0000 0000 0000 AmmoColt 
[58]: 0033 0000 0000 0002 0005 0000 0000 0000 Ammo40HE 
[59]: 0033 0000 0000 0002 0005 0000 0000 0000 Ammo40Frag 
[60]: 0033 0000 0000 0004 0005 0000 0000 0000 Ammo40Proj 
[61]: 0034 0000 0000 000A 0046 0001 0000 0000 SilverMedal 
[62]: 0003 0000 0000 0000 0000 0000 0000 0000 NotePlain 
[63]: 0003 0000 0000 0000 0000 0000 0000 0000 NoteBungie 
[64]: 0035 0004 0002 0000 0000 0000 0000 0000 CrystalYellow 
[65]: 0036 0004 0002 0000 0000 0000 0000 0000 CrystalBlue 
[66]: 0037 0004 0002 0000 0000 0000 0000 0000 CrystalOrange 
[67]: 0007 0000 0000 0000 0000 0000 0000 0000 
[68]: 0038 0004 0002 0000 0000 0000 0000 0000 CrystalViolet 
[69]: 003A 0004 0002 0000 0000 0000 0000 0000 CrystalGreen 
[70]: 0039 0004 0002 0000 0000 0000 0000 0000 CrystalBlack



Page maintained by Hamish Sinclair
Hamish.Sinclair123@gmail.com
Last updated June 27, 2012