home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / volume2 / umoria / part13 / treasure2.c < prev   
C/C++ Source or Header  |  1987-11-05  |  28KB  |  428 lines

  1. #include "constants.h"
  2. #include "types.h"
  3.  
  4. /* Identified objects flags                    */
  5. int object_ident[MAX_OBJECTS] = {
  6.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  7.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  8.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  9.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  10.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  11.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  12.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  13.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  14.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  15.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  16.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  17.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  18.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  19.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  20.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  21.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  22.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  23.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  24.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  25.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  26.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  27.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  28.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  29.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  30.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  31.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  32.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  33.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  34.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  35.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  36.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  37.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  38.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  39.   FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,
  40.   FALSE, FALSE, FALSE, FALSE
  41. };
  42.  
  43. int t_level[MAX_OBJ_LEVEL];
  44.  
  45. /* Gold list (All types of gold and gems are defined here)    */
  46. treasure_type gold_list[MAX_GOLD] = {
  47. {"copper"                                          , 100, '$',0x00000000,
  48.     0,      3,   1,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  49. {"copper"                                          , 100, '$',0x00000000,
  50.     0,      4,   2,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  51. {"copper"                                          , 100, '$',0x00000000,
  52.     0,      5,   3,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  53. {"silver"                                          , 100, '$',0x00000000,
  54.     0,      6,   4,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  55. {"silver"                                          , 100, '$',0x00000000,
  56.     0,      7,   5,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  57. {"silver"                                          , 100, '$',0x00000000,
  58.     0,      8,   6,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  59. {"garnets"                                         , 100, '*',0x00000000,
  60.     0,      9,   7,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  61. {"garnets"                                         , 100, '*',0x00000000,
  62.     0,     10,   8,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  63. {"gold"                                            , 100, '$',0x00000000,
  64.     0,     12,   9,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  65. {"gold"                                            , 100, '$',0x00000000,
  66.     0,     14,  10,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  67. {"gold"                                            , 100, '$',0x00000000,
  68.     0,     16,  11,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  69. {"opals"                                           , 100, '*',0x00000000,
  70.     0,     18,  12,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  71. {"sapphires"                                        , 100, '*',0x00000000,
  72.     0,     20,  13,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  73. {"gold"                                            , 100, '$',0x00000000,
  74.     0,     24,  14,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  75. {"rubies"                                          , 100, '*',0x00000000,
  76.     0,     28,  15,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  77. {"diamonds"                                        , 100, '*',0x00000000,
  78.     0,     32,  16,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  79. {"emeralds"                                        , 100, '*',0x00000000,
  80.     0,     40,  17,   0,   0,   0,   0,   0,   0, ' '    ,  1},
  81. {"mithril"                                         , 100, '$',0x00000000,
  82.     0,     80,  18,   0,   0,   0,   0,   0,   0, ' '    ,  1}
  83. };
  84.  
  85. treasure_type t_list[MAX_TALLOC];
  86. treasure_type inventory[INVEN_ARRAY_SIZE];
  87.  
  88. /* Items which are sold in the stores are different from dungeon */
  89. /* items so that identify works properly.  Note that the players */
  90. /* receive their initial items from this list, so position is    */
  91. /* very important...                                             */
  92. treasure_type inventory_init[INVEN_INIT_MAX] = {
  93. {"& Ration~ of Food"                               ,  80, ',',0x00000000,
  94.  5000,      3, 307,  10,   5,   0,   0,   0,   0, "0d0"  ,  0}, /*  1*/
  95. {"& Hard Biscuit~"                                 ,  80, ',',0x00000000,
  96.   500,      1, 309,   2,   5,   0,   0,   0,   0, "0d0"  ,  0}, /*  2*/
  97. {"& Strip~ of Beef Jerky"                          ,  80, ',',0x00000000,
  98.  1750,      2, 310,   2,   5,   0,   0,   0,   0, "0d0"  ,  0}, /*  3*/
  99. {"& Pint of Fine Ale"                              ,  80, ',',0x00000000,
  100.   500,      1, 311,  10,   3,   0,   0,   0,   0, "0d0"  ,  0}, /*  4*/
  101. {"& Pint of Fine Wine"                             ,  80, ',',0x00000000,
  102.   400,      2, 312,  10,   1,   0,   0,   0,   0, "0d0"  ,  0}, /*  5*/
  103. {"& Dagger (Misercorde) (%P2,%P3)"                 ,  23, '|',0x00000000,
  104.     0,     10,   2,  15,   1,   0,   0,   0,   0, "1d4"  ,  0}, /*  6*/
  105. {"& Dagger (Stiletto) (%P2,%P3)"                   ,  23, '|',0x00000000,
  106.     0,     10,   3,  12,   1,   0,   0,   0,   0, "1d4"  ,  0}, /*  7*/
  107. {"& Bastard Sword (%P2,%P3)"                       ,  23, '|',0x00000000,
  108.     0,    350,   7, 140,   1,   0,   0,   0,   0, "3d4"  ,  0}, /*  8*/
  109. {"& Broadsword (%P2,%P3)"                          ,  23, '|',0x00000000,
  110.     0,    255,  10, 150,   1,   0,   0,   0,   0, "2d5"  ,  0}, /*  9*/
  111. {"& Longsword (%P2,%P3)"                           ,  23, '|',0x00000000,
  112.     0,    300,  18, 130,   1,   0,   0,   0,   0, "1d10" ,  0}, /* 10*/
  113. {"& Small Sword (%P2,%P3)"                         ,  23, '|',0x00000000,
  114.     0,     48,  22,  75,   1,   0,   0,   0,   0, "1d6"  ,  0}, /* 11*/
  115. {"& Broad Axe (%P2,%P3)"                           ,  21, '\\',0x00000000,
  116.     0,    304,   4, 160,   1,   0,   0,   0,   0, "2d5"  ,  0}, /* 12*/
  117. {"& Morningstar (%P2,%P3)"                         ,  21, '\\',0x00000000,
  118.     0,    396,   9, 150,   1,   0,   0,   0,   0, "2d6"  ,  0}, /* 13*/
  119. {"& Mace (%P2,%P3)"                                ,  21, '\\',0x00000000,
  120.     0,    130,  10, 120,   1,   0,   0,   0,   0, "2d4"  ,  0}, /* 14*/
  121. {"& War Hammer (%P2,%P3)"                          ,  21, '\\',0x00000000,
  122.     0,    225,  11, 120,   1,   0,   0,   0,   0, "3d3"  ,  0}, /* 15*/
  123. {"& Halberd (%P2,%P3)"                             ,  22, '/',0x00000000,
  124.     0,    430,   5, 190,   1,   0,   0,   0,   0, "3d4"  ,  0}, /* 16*/
  125. {"& Pike (%P2,%P3)"                                ,  22, '/',0x00000000,
  126.     0,    358,   7, 160,   1,   0,   0,   0,   0, "2d5"  ,  0}, /* 17*/
  127. {"& Spear (%P2,%P3)"                               ,  22, '/',0x00000000,
  128.     0,     36,   8,  50,   1,   0,   0,   0,   0, "1d6"  ,  0}, /* 18*/
  129. {"& Short Bow (%P2)"                               ,  20, '}',0x00000000,
  130.     2,     50,   1,  30,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 19*/
  131. {"& Long Bow (%P2)"                                ,  20, '}',0x00000000,
  132.     3,    120,   2,  40,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 20*/
  133. {"& Light Crossbow (%P2)"                          ,  20, '}',0x00000000,
  134.     5,    160,  10, 110,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 21*/
  135. {"& Sling (%P2)"                                   ,  20, '}',0x00000000,
  136.     1,      5,  20,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 22*/
  137. {"& Arrow~ (%P2,%P3)"                              ,  12, '{',0x00000000,
  138.     0,      1,   1,   2,   1,   0,   0,   0,   0, "1d4"  ,  0}, /* 23*/
  139. {"& Bolt~ (%P2,%P3)"                               ,  11, '{',0x00000000,
  140.     0,      2,   1,   3,   1,   0,   0,   0,   0, "1d5"  ,  0}, /* 24*/
  141. {"& Iron Shot~ (%P2,%P3)"                          ,  10, '{',0x00000000,
  142.     0,      2,   1,   5,   1,   0,   0,   0,   0, "1d3"  ,  0}, /* 25*/
  143. {"& Pick (%P1) (%P2,%P3)"                          ,  25, '\\',0x20000000,
  144.     1,     50,   1, 150,   1,   0,   0,   0,   0, "1d3"  ,  0}, /* 26*/
  145. {"& Shovel (%P1) (%P2,%P3)"                        ,  25, '\\',0x20000000,
  146.     0,     15,   2,  60,   1,   0,   0,   0,   0, "1d2"  ,  0}, /* 27*/
  147. {"& Pair of Soft Leather Boots [%P6,%P4]"          ,  30, ']',0x00000000,
  148.     0,      7,   2,  30,   1,   0,   0,   2,   0, "1d1"  ,  0}, /* 28*/
  149. {"& Pair of Hard Leather Boots [%P6,%P4]"          ,  30, ']',0x00000000,
  150.     0,     12,   3,  40,   1,   0,   0,   3,   0, "1d1"  ,  0}, /* 29*/
  151. {"& Hard Leather Cap [%P6,%P4]"                    ,  33, ']',0x00000000,
  152.     0,     12,   2,  15,   1,   0,   0,   2,   0, "0d0"  ,  0}, /* 30*/
  153. {"& Metal Cap [%P6,%P4]"                           ,  33, ']',0x00000000,
  154.     0,     30,   3,  20,   1,   0,   0,   3,   0, "1d1"  ,  0}, /* 31*/
  155. {"& Iron Helm [%P6,%P4]"                           ,  33, ']',0x00000000,
  156.     0,     75,   4,  75,   1,   0,   0,   5,   0, "1d3"  ,  0}, /* 32*/
  157. {"Soft Leather Armor [%P6,%P4]"                    ,  36, '(',0x00000000,
  158.     0,     18,   2,  80,   1,   0,   0,   4,   0, "0d0"  ,  0}, /* 33*/
  159. {"Soft Studded Leather [%P6,%P4]"                  ,  36, '(',0x00000000,
  160.     0,     35,   3,  90,   1,   0,   0,   5,   0, "1d1"  ,  0}, /* 34*/
  161. {"Hard Leather Armor [%P6,%P4]"                    ,  36, '(',0x00000000,
  162.     0,     55,   4, 100,   1,  -1,   0,   6,   0, "1d1"  ,  0}, /* 35*/
  163. {"Hard Studded Leather [%P6,%P4]"                  ,  36, '(',0x00000000,
  164.     0,    100,   5, 110,   1,  -1,   0,   7,   0, "1d2"  ,  0}, /* 36*/
  165. {"Leather Scale Mail [%P6,%P4]"                    ,  36, '(',0x00000000,
  166.     0,    330,   9, 140,   1,  -1,   0,  11,   0, "1d1"  ,  0}, /* 37*/
  167. {"Metal Scale Mail [%P6,%P4]"                      ,  35, '[',0x00000000,
  168.     0,    430,   1, 250,   1,  -2,   0,  13,   0, "1d4"  ,  0}, /* 38*/
  169. {"Chain Mail [%P6,%P4]"                            ,  35, '[',0x00000000,
  170.     0,    530,   2, 220,   1,  -2,   0,  14,   0, "1d4"  ,  0}, /* 39*/
  171. {"Partial Plate Armor [%P6,%P4]"                   ,  35, '[',0x00000000,
  172.     0,    900,   9, 260,   1,  -3,   0,  22,   0, "1d6"  ,  0}, /* 40*/
  173. {"Full Plate Armor [%P6,%P4]"                      ,  35, '[',0x00000000,
  174.     0,   1050,  11, 380,   1,  -3,   0,  25,   0, "2d4"  ,  0}, /* 41*/
  175. {"& Cloak [%P6,%P4]"                               ,  32, '(',0x00000000,
  176.     0,      3,   1,  10,   1,   0,   0,   1,   0, "0d0"  ,  0}, /* 42*/
  177. {"& Set of Leather Gloves [%P6,%P4]"               ,  31, ']',0x00000000,
  178.     0,      3,   1,   5,   1,   0,   0,   1,   0, "0d0"  ,  0}, /* 43*/
  179. {"& Set of Gauntlets [%P6,%P4]"                    ,  31, ']',0x00000000,
  180.     0,     35,   2,  25,   1,   0,   0,   2,   0, "1d1"  ,  0}, /* 44*/
  181. {"& Small Leather Shield [%P6,%P4]"                ,  34, ')',0x00000000,
  182.     0,     30,   1,  50,   1,   0,   0,   2,   0, "1d1"  ,  0}, /* 45*/
  183. {"& Medium Leather Shield [%P6,%P4]"               ,  34, ')',0x00000000,
  184.     0,     60,   2,  75,   1,   0,   0,   3,   0, "1d2"  ,  0}, /* 46*/
  185. {"& Small Metal Shield [%P6,%P4]"                  ,  34, ')',0x00000000,
  186.     0,     50,   4,  65,   1,   0,   0,   3,   0, "1d3"  ,  0}, /* 47*/
  187. {"& Ring of Resist Fire"                           ,  45, '=',0x00080000,
  188.     0,    250,  11,   2,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 48*/
  189. {"& Ring of Resist Cold"                           ,  45, '=',0x00200000,
  190.     0,    250,  12,   2,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 49*/
  191. {"& Ring of Feather Falling"                       ,  45, '=',0x04000000,
  192.     0,    250,  13,   2,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 50*/
  193. {"& Ring of Protection [%P4]"                      ,  45, '=',0x00000000,
  194.     0,    100,  24,   2,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 51*/
  195. {"& Amulet of Charisma (%P1)"                      ,  40, '"',0x00000020,
  196.     0,    250,   6,   3,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 52*/
  197. {"& Amulet of Slow Digestion"                      ,  40, '"',0x00000080,
  198.     0,    200,   9,   3,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 53*/
  199. {"& Amulet of Resist Acid"                         ,  40, '"',0x00100000,
  200.     0,    300,  10,   3,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 54*/
  201. {"& Scroll~ of Enchant Weapon To-Hit"              ,  70, '?',0x00000001,
  202.     0,    125, 300,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 55*/
  203. {"& Scroll~ of Enchant Weapon To-Dam"              ,  70, '?',0x00000002,
  204.     0,    125, 301,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 56*/
  205. {"& Scroll~ of Enchant Armor"                      ,  70, '?',0x00000004,
  206.     0,    125, 302,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 57*/
  207. {"& Scroll~ of Identify"                           ,  70, '?',0x00000008,
  208.     0,     50, 303,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 58*/
  209. {"& Scroll~ of Remove Curse"                       ,  70, '?',0x00000010,
  210.     0,    100, 304,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 59*/
  211. {"& Scroll~ of Light"                              ,  70, '?',0x00000020,
  212.     0,     15, 305,   5,   3,   0,   0,   0,   0, "0d0"  ,  0}, /* 60*/
  213. {"& Scroll~ of Phase Door"                         ,  70, '?',0x00000080,
  214.     0,     15, 306,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 61*/
  215. {"& Scroll~ of Magic Mapping"                      ,  70, '?',0x00000800,
  216.     0,     40, 307,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 62*/
  217. {"& Scroll~ of Treasure Detection"                 ,  70, '?',0x00004000,
  218.     0,     15, 308,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 63*/
  219. {"& Scroll~ of Object Detection"                   ,  70, '?',0x00008000,
  220.     0,     15, 309,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 64*/
  221. {"& Scroll~ of Detect Invisible"                   ,  70, '?',0x00080000,
  222.     0,     15, 310,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 65*/
  223. {"& Scroll~ of Recharging"                         ,  70, '?',0x01000000,
  224.     0,    200, 311,   5,   1,   0,   0,   0,   0, "0d0"  ,  0}, /* 66*/
  225. {"& Book of Magic Spells [Beginners-Magik]"        ,  90, '?',0x0000007F,
  226.     0,     25, 257,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 67*/
  227. {"& Book of Magic Spells [Magik I]"                ,  90, '?',0x0000FF80,
  228.     0,    100, 258,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 68*/
  229. {"& Book of Magic Spells [Magik II]"               ,  90, '?',0x00FF0000,
  230.     0,    400, 259,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 69*/
  231. {"& Book of Magic Spells [The Mages Guide to Power]",  90, '?',0x7F000000,
  232.     0,    800, 261,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 70*/
  233. {"& Holy Book of Prayers [Beginners Handbook]"     ,  91, '?',0x000000FF,
  234.     0,     25, 258,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 71*/
  235. {"& Holy Book of Prayers [Words of Wisdom]"        ,  91, '?',0x0000FF00,
  236.     0,    100, 259,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 72*/
  237. {"& Holy Book of Prayers [Chants and Blessings]"   ,  91, '?',0x01FF0000,
  238.     0,    300, 260,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 73*/
  239. {"& Holy Book of Prayers [Exorcism and Dispelling]",  91, '?',0x7E000000,
  240.     0,    900, 261,  30,   1,-100,   0,   0,   0, "1d1"  ,  0}, /* 74*/
  241. {"& Potion~ of Restore Strength"                   ,  75, '!',0x00000004,
  242.     0,    300, 310,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 75*/
  243. {"& Potion~ of Restore Intelligence"               ,  75, '!',0x00000020,
  244.     0,    300, 311,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 76*/
  245. {"& Potion~ of Restore Wisdom"                     ,  75, '!',0x00000100,
  246.     0,    300, 312,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 77*/
  247. {"& Potion~ of Restore Charisma"                   ,  75, '!',0x00000800,
  248.     0,    300, 313,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 78*/
  249. {"& Potion~ of Cure Light Wounds"                  ,  75, '!',0x10001000,
  250.    50,     15, 314,   4,   2,   0,   0,   0,   0, "1d1"  ,  0}, /* 79*/
  251. {"& Potion~ of Cure Serious Wounds"                ,  75, '!',0x30002000,
  252.   100,     40, 315,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 80*/
  253. {"& Potion~ of Cure Critical Wounds"               ,  75, '!',0x70004000,
  254.   100,    100, 316,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 81*/
  255. {"& Potion~ of Restore Dexterity"                  ,  75, '!',0x04000000,
  256.     0,    300, 317,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 82*/
  257. {"& Potion~ of Restore Constitution"               ,  75, '!',0x68000000,
  258.     0,    300, 318,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 83*/
  259. {"& Potion~ of Heroism"                            ,  76, '!',0x00000010,
  260.     0,     35, 319,   4,   2,   0,   0,   0,   0, "1d1"  ,  0}, /* 84*/
  261. {"& Potion~ of Boldness"                         ,  76, '!',0x00000040,
  262.     0,     10, 320,   4,   2,   0,   0,   0,   0, "1d1"  ,  0}, /* 85*/
  263. {"& Wand of Light (%P1 charges)"                   ,  65, '-',0x00000001,
  264.     0,    200,   1,  10,   1,   0,   0,   0,   0, "1d1"  ,  2}, /* 86*/
  265. {"& Wand of Lightning Bolts (%P1 charges)"         ,  65, '-',0x00000002,
  266.     0,    600,   2,  10,   1,   0,   0,   0,   0, "1d1"  ,  6}, /* 87*/
  267. {"& Wand of Magic Missile (%P1 charges)"           ,  65, '-',0x00002000,
  268.     0,    200,  14,  10,   1,   0,   0,   0,   0, "1d1"  ,  2}, /* 88*/
  269. {"& Wand of Disarming (%P1 charges)"               ,  65, '-',0x00020000,
  270.     0,    700,  18,  10,   1,   0,   0,   0,   0, "1d1"  , 12}, /* 89*/
  271. {"& Wand of Lightning Balls (%P1 charges)"         ,  65, '-',0x00040000,
  272.     0,   1200,  19,  10,   1,   0,   0,   0,   0, "1d1"  , 20}, /* 90*/
  273. {"& Wand of Wonder (%P1 charges)"                  ,  65, '-',0x00800000,
  274.     0,    250,  24,  10,   1,   0,   0,   0,   0, "1d1"  , 10}, /* 91*/
  275. {"& Staff of Light (%P1 charges)"                  ,  55, '_',0x00000001,
  276.     0,    250,   1,  50,   1,   0,   0,   0,   0, "1d2"  ,  3}, /* 92*/
  277. {"& Staff of Door/Stair Location (%P1 charges)"    ,  55, '_',0x00000002,
  278.     0,    350,   2,  50,   1,   0,   0,   0,   0, "1d2"  ,  7}, /* 93*/
  279. {"& Staff of Trap Location (%P1 charges)"          ,  55, '_',0x00000004,
  280.     0,    350,   3,  50,   1,   0,   0,   0,   0, "1d2"  ,  7}, /* 94*/
  281. {"& Staff of Detect Invisible (%P1 charges)"       ,  55, '_',0x00008000,
  282.     0,    200,  16,  50,   1,   0,   0,   0,   0, "1d2"  ,  3}, /* 95*/
  283. {"& Potion~ of Restore Life Levels"                ,  76, '!',0x00000080,
  284.     0,    400, 321,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /* 96*/
  285. {"& Scroll~ of Blessing"                           ,  71, '?',0x00000020,
  286.     0,     15, 312,   5,   2,   0,   0,   0,   0, "0d0"  ,  0}, /* 97*/
  287. {"& Scroll~ of Word-of-Recall"                     ,  71, '?',0x00000100,
  288.     0,    150, 313,   5,   3,   0,   0,   0,   0, "0d0"  ,  0}, /* 98*/
  289. {"& Potion~ of Slow Poison"                        ,  76, '!',0x00000800,
  290.     0,     25, 322,   4,   2,   0,   0,   0,   0, "1d1"  ,  0}, /* 99*/
  291. {"& Potion~ of Neutralize Poison"                  ,  76, '!',0x00001000,
  292.     0,     75, 323,   4,   1,   0,   0,   0,   0, "1d1"  ,  0}, /*100*/
  293. {"& Wand of Stinking Cloud (%P1 charges)"          ,  65, '-',0x00200000,
  294.     0,    400,  22,  10,   1,   0,   0,   0,   0, "1d1"  ,  5}, /*101*/
  295. {"& Iron Spike~"                                   ,  13, '~',0x00000000,
  296.     0,      1,   1,  10,   1,   0,   0,   0,   0, "1d1"  ,  1}, /*102*/
  297. {"& Brass Lantern~ with %P5 turns of light"        ,  15, '~',0x00000000,
  298.  7500,     35,   2,  50,   1,   0,   0,   0,   0, "1d1"  ,  1}, /*103*/
  299. {"& Wooden Torch~ with %P5 turns of light"         ,  15, '~',0x00000000,
  300.  4000,      2, 270,  30,   5,   0,   0,   0,   0, "1d1"  ,  1}, /*104*/
  301. {"& Flask~ of oil"                                 ,  77, '!',0x00040000,
  302.  7500,      3, 257,  10,   5,   0,   0,   0,   0, "2d6"  ,  1}  /*105*/
  303. };
  304.  
  305. treasure_type blank_treasure = {"nothing", 0, ' ', 0, 0, 0, 0, 0, 0, 0, 0, 0,
  306.   0, "0d0", 0};
  307.  
  308. /* Treasure related values                    */
  309. int inven_ctr = 0;            /* Total different obj's    */
  310. int inven_weight = 0;       /* Cur carried weight    */
  311. int equip_ctr = 0;              /* Cur equipment ctr    */
  312. int tcptr;                  /* Cur treasure heap ptr    */
  313.  
  314. /* Following are feature objects defined for dungeon        */
  315.  
  316. /* Traps are just Nasty treasures...                */
  317. treasure_type trap_lista[MAX_TRAPA] = {
  318. {"an open pit"                                     , 102, ' ',0x00000000,
  319.     0,      0,   1,   0,   0,   0,   0,   0,   0, "2d6"  ,-50},
  320. {"an arrow trap"                                   , 101, '.',0x00000000,
  321.     0,      0,   2,   0,   0,   0,   0,   0,   0, "1d8"  ,  0},
  322. {"a covered pit"                                   , 101, '.',0x00000000,
  323.     0,      0,   3,   0,   0,   0,   0,   0,   0, "2d6"  ,  0},
  324. {"a trap door"                                     , 101, '.',0x00000000,
  325.     0,      0,   4,   0,   0,   0,   0,   0,   0, "2d8"  ,  0},
  326. {"a gas trap"                                      , 101, '.',0x00000000,
  327.     0,      0,   5,   0,   0,   0,   0,   0,   0, "1d4"  ,  0},
  328. {"a loose rock"                                    , 101, '.',0x00000000,
  329.     0,      0,   6,   0,   0,   0,   0,   0,   0, "0d0"  ,  0},
  330. {"a dart trap"                                     , 101, '.',0x00000000,
  331.     0,      0,   7,   0,   0,   0,   0,   0,   0, "1d4"  ,  0},
  332. {"a strange rune"                                  , 101, '.',0x00000000,
  333.     0,      0,   8,   0,   0,   0,   0,   0,   0, "0d0"  ,  0},
  334. {"some loose rock"                                 , 101, '.',0x00000000,
  335.     0,      0,   9,   0,   0,   0,   0,   0,   0, "2d6"  ,  0},
  336. {"a gas trap"                                      , 101, '.',0x00000000,
  337.     0,      0,  10,   0,   0,   0,   0,   0,   0, "1d4"  ,  0},
  338. {"a strange rune"                                  , 101, '.',0x00000000,
  339.     0,      0,  11,   0,   0,   0,   0,   0,   0, "0d0"  ,  0},
  340. {"a blackened spot"                                , 101, '.',0x00000000,
  341.     0,      0,  12,   0,   0,   0,   0,   0,   0, "4d6"  ,  0},
  342. {"some corroded rock"                              , 101, '.',0x00000000,
  343.     0,      0,  13,   0,   0,   0,   0,   0,   0, "4d6"  ,  0},
  344. {"a gas trap"                                      , 101, '.',0x00000000,
  345.     0,      0,  14,   0,   0,   0,   0,   0,   0, "2d6"  ,  0},
  346. {"a gas trap"                                      , 101, '.',0x00000000,
  347.     5,      0,  15,   0,   0,   0,   0,   0,   0, "1d4"  , 10},
  348. {"a gas trap"                                      , 101, '.',0x00000000,
  349.     5,      0,  16,   0,   0,   0,   0,   0,   0, "1d8"  ,  5},
  350. {"a dart trap"                                     , 101, '.',0x00000000,
  351.     5,      0,  17,   0,   0,   0,   0,   0,   0, "1d8"  , 10},
  352. {"a dart trap"                                     , 101, '.',0x00000000,
  353.     5,      0,  18,   0,   0,   0,   0,   0,   0, "1d8"  , 10}
  354. };
  355.  
  356. /* Traps: Level represents the difficulty of disarming;    */
  357. /* and P1 represents the experienced gained when disarmed*/
  358. treasure_type trap_listb[MAX_TRAPB] = {
  359. {"an open pit"                                     , 102, ' ',0x00000000,
  360.     1,      0,   1,   0,   0,   0,   0,   0,   0, "2d6"  ,-50},
  361. {"an arrow trap"                                   , 102, '^',0x00000000,
  362.     3,      0,   2,   0,   0,   0,   0,   0,   0, "1d8"  ,-10},
  363. {"a covered pit"                                   , 102, '^',0x00000000,
  364.     2,      0,   3,   0,   0,   0,   0,   0,   0, "2d6"  ,-40},
  365. {"a trap door"                                     , 102, '^',0x00000000,
  366.     5,      0,   4,   0,   0,   0,   0,   0,   0, "2d8"  ,-25},
  367. {"a gas trap"                                      , 102, '^',0x00000000,
  368.     3,      0,   5,   0,   0,   0,   0,   0,   0, "1d4"  ,  5},
  369. {"a loose rock"                                    , 102, ';',0x00000000,
  370.     0,      0,   6,   0,   0,   0,   0,   0,   0, "0d0"  ,-90},
  371. {"a dart trap"                                     , 102, '^',0x00000000,
  372.     5,      0,   7,   0,   0,   0,   0,   0,   0, "1d4"  , 10},
  373. {"a strange rune"                                  , 102, '^',0x00000000,
  374.     5,      0,   8,   0,   0,   0,   0,   0,   0, "0d0"  ,-10},
  375. {"some loose rock"                                 , 102, '^',0x00000000,
  376.     5,      0,   9,   0,   0,   0,   0,   0,   0, "2d6"  ,-10},
  377. {"a gas trap"                                      , 102, '^',0x00000000,
  378.    10,      0,  10,   0,   0,   0,   0,   0,   0, "1d4"  ,  5},
  379. {"a strange rune"                                  , 102, '^',0x00000000,
  380.     5,      0,  11,   0,   0,   0,   0,   0,   0, "0d0"  ,-10},
  381. {"a blackened spot"                                , 102, '^',0x00000000,
  382.    10,      0,  12,   0,   0,   0,   0,   0,   0, "4d6"  , 10},
  383. {"some corroded rock"                              , 102, '^',0x00000000,
  384.    10,      0,  13,   0,   0,   0,   0,   0,   0, "4d6"  , 10},
  385. {"a gas trap"                                      , 102, '^',0x00000000,
  386.     5,      0,  14,   0,   0,   0,   0,   0,   0, "2d6"  ,  5},
  387. {"a gas trap"                                      , 102, '^',0x00000000,
  388.     5,      0,  15,   0,   0,   0,   0,   0,   0, "1d4"  , 10},
  389. {"a gas trap"                                      , 102, '^',0x00000000,
  390.     5,      0,  16,   0,   0,   0,   0,   0,   0, "1d8"  ,  5},
  391. {"a dart trap"                                     , 102, '^',0x00000000,
  392.     5,      0,  17,   0,   0,   0,   0,   0,   0, "1d8"  , 10},
  393. {"a dart trap"                                     , 102, '^',0x00000000,
  394.     5,      0,  18,   0,   0,   0,   0,   0,   0, "1d8"  , 10},
  395.     /* Special case, see DOOR_LIST below (subvals must agree)        */
  396. {"a closed door"                                   , 105, '+',0x00000000,
  397.     0,      0,  19,   0,   0,   0,   0,   0,   0, "1d1"  ,  0}
  398. };
  399.  
  400. /* Special trap    */
  401. treasure_type scare_monster = 
  402. {"a strange rune"                                  , 102, '^',0x00000000,
  403.     0,      0,  99,   0,   0,   0,   0,   0,   0, "0d0"  ,-90};
  404.  
  405. treasure_type rubble = 
  406. {"some rubble"                                     , 103, ':',0x00000000,
  407.     0,      0,   1,   0,   0,   0,   0,   0,   0, "0d0"  ,  0};
  408.  
  409. /* Secret door must have same subval as closed door in    */
  410. /* TRAP_LISTB.  See CHANGE_TRAP                          */
  411. treasure_type door_list[3] = {
  412. {"an open door"                                    , 104,'\'',0x00000000,
  413.     0,      0,   1,   0,   0,   0,   0,   0,   0, "1d1"  ,  0},
  414. {"a closed door"                                   , 105, '+',0x00000000,
  415.     0,      0,  19,   0,   0,   0,   0,   0,   0, "1d1"  ,  0},
  416. {"a secret door"                                   , 109, '#',0x00000000,
  417.     0,      0,  19,   0,   0,   0,   0,   0,   0, "1d1"  ,  0}
  418. };
  419.  
  420. treasure_type up_stair = 
  421. {"an up staircase "                                , 107, '<',0x00000000,
  422.     0,      0,   1,   0,   0,   0,   0,   0,   0, "1d1"  ,  0};
  423.  
  424. treasure_type down_stair = 
  425. {"a down staircase"                                , 108, '>',0x00000000,
  426.     0,      0,   1,   0,   0,   0,   0,   0,   0, "1d1"  ,  0};
  427.  
  428.