CONST.C
上传用户:kesirui
上传日期:2007-01-07
资源大小:263k
文件大小:44k
源码类别:

Internet/网络编程

开发平台:

WINDOWS

  1. /***************************************************************************
  2.  *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
  3.  *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
  4.  *                                                                         *
  5.  *  Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael          *
  6.  *  Chastain, Michael Quan, and Mitchell Tse.                              *
  7.  *                                                                         *
  8.  *  In order to use any part of this Merc Diku Mud, you must comply with   *
  9.  *  both the original Diku license in 'license.doc' as well the Merc       *
  10.  *  license in 'license.txt'.  In particular, you may not remove either of *
  11.  *  these copyright notices.                                               *
  12.  *                                                                         *
  13.  *  Much time and thought has gone into this software and you are          *
  14.  *  benefitting.  We hope that you share your changes too.  What goes      *
  15.  *  around, comes around.                                                  *
  16.  ***************************************************************************/
  17. #if defined(macintosh)
  18. #include <types.h>
  19. #else
  20. #include <sys/types.h>
  21. #endif
  22. #include <stdio.h>
  23. #include <time.h>
  24. #include "merc.h"
  25. /*
  26.  * Class table.
  27.  */
  28. const struct class_type class_table [MAX_CLASS] =
  29. {
  30.     {
  31. "Mag",  APPLY_INT,  OBJ_VNUM_SCHOOL_DAGGER,
  32. 3018,  95,  18, 10,  6,  8, TRUE
  33.     },
  34.     {
  35. "Cle",  APPLY_WIS,  OBJ_VNUM_SCHOOL_MACE,
  36. 3003,  95,  18, 12,  7, 10, TRUE
  37.     },
  38.     {
  39. "Thi",  APPLY_DEX,  OBJ_VNUM_SCHOOL_DAGGER,
  40. 3028,  85,  18,  8,  8, 13, FALSE
  41.     },
  42.     {
  43. "War",  APPLY_STR,  OBJ_VNUM_SCHOOL_SWORD,
  44. 3022,  85,  18,  6,  11, 15, FALSE
  45.     },
  46.     {
  47.    "Psi",  APPLY_WIS,  OBJ_VNUM_SCHOOL_DAGGER,
  48.    3151,  95,  18,  9,   6,  9, TRUE
  49.     }
  50. };
  51. #define CLASS_MAGE       0
  52. #define CLASS_CLERIC     1
  53. #define CLASS_THIEF      2
  54. #define CLASS_WARRIOR    3
  55. #define CLASS_PSIONICIST 4
  56. /*
  57.  * Titles.
  58.  */
  59. char * const title_table [MAX_CLASS][MAX_LEVEL+1][2] =
  60. {
  61.     {
  62. { "Man", "Woman" },
  63. { "Apprentice of Magic", "Apprentice of Magic" },
  64. { "Spell Student", "Spell Student" },
  65. { "Scholar of Magic", "Scholar of Magic" },
  66. { "Delver in Spells", "Delveress in Spells" },
  67. { "Medium of Magic", "Medium of Magic" },
  68. { "Scribe of Magic", "Scribess of Magic" },
  69. { "Seer", "Seeress" },
  70. { "Sage", "Sage" },
  71. { "Illusionist", "Illusionist" },
  72. { "Abjurer", "Abjuress" },
  73. { "Invoker", "Invoker" },
  74. { "Enchanter", "Enchantress" },
  75. { "Conjurer", "Conjuress" },
  76. { "Magician", "Witch" },
  77. { "Creator", "Creator" },
  78. { "Savant", "Savant" },
  79. { "Magus", "Craftess" },
  80. { "Wizard", "Wizard" },
  81. { "Warlock", "War Witch" },
  82. { "Sorcerer", "Sorceress" },
  83. { "Elder Sorcerer", "Elder Sorceress" },
  84. { "Grand Sorcerer", "Grand Sorceress" },
  85. { "Great Sorcerer", "Great Sorceress" },
  86. { "Golem Maker", "Golem Maker" },
  87. { "Greater Golem Maker", "Greater Golem Maker" },
  88. { "Maker of Stones", "Maker of Stones", },
  89. { "Maker of Potions", "Maker of Potions", },
  90. { "Maker of Scrolls", "Maker of Scrolls", },
  91. { "Maker of Wands", "Maker of Wands", },
  92. { "Maker of Staves", "Maker of Staves", },
  93. { "Demon Summoner", "Demon Summoner" },
  94. { "Greater Demon Summoner", "Greater Demon Summoner" },
  95. { "Dragon Charmer", "Dragon Charmer" },
  96. { "Greater Dragon Charmer", "Greater Dragon Charmer" },
  97. { "Master of all Magic", "Master of all Magic" },
  98. { "Mage Hero", "Mage Heroine" },
  99. { "Angel of Magic", "Angel of Magic" },
  100. { "Deity of Magic", "Deity of Magic" },
  101. { "Supremity of Magic", "Supremity of Magic" },
  102. { "Implementor", "Implementress" }
  103.     },
  104.     {
  105. { "Man", "Woman" },
  106. { "Believer", "Believer" },
  107. { "Attendant", "Attendant" },
  108. { "Acolyte", "Acolyte" },
  109. { "Novice", "Novice" },
  110. { "Missionary", "Missionary" },
  111. { "Adept", "Adept" },
  112. { "Deacon", "Deaconess" },
  113. { "Vicar", "Vicaress" },
  114. { "Priest", "Priestess" },
  115. { "Minister", "Lady Minister" },
  116. { "Canon", "Canon" },
  117. { "Levite", "Levitess" },
  118. { "Curate", "Curess" },
  119. { "Monk", "Nun" },
  120. { "Healer", "Healess" },
  121. { "Chaplain", "Chaplain" },
  122. { "Expositor", "Expositress" },
  123. { "Bishop", "Bishop" },
  124. { "Arch Bishop", "Arch Lady of the Church" },
  125. { "Patriarch", "Matriarch" },
  126. { "Elder Patriarch", "Elder Matriarch" },
  127. { "Grand Patriarch", "Grand Matriarch" },
  128. { "Great Patriarch", "Great Matriarch" },
  129. { "Demon Killer", "Demon Killer" },
  130. { "Greater Demon Killer", "Greater Demon Killer" },
  131. { "Cardinal of the Sea", "Cardinal of the Sea" },
  132. { "Cardinal of the Earth", "Cardinal of the Earth" },
  133. { "Cardinal of the Air", "Cardinal of the Air" },
  134. { "Cardinal of the Ether", "Cardinal of the Ether" },
  135. { "Cardinal of the Heavens", "Cardinal of the Heavens" },
  136. { "Avatar of an Immortal", "Avatar of an Immortal" },
  137. { "Avatar of a Deity", "Avatar of a Deity" },
  138. { "Avatar of a Supremity", "Avatar of a Supremity" },
  139. { "Avatar of an Implementor", "Avatar of an Implementor" },
  140. { "Master of all Divinity", "Mistress of all Divinity" },
  141. { "Holy Hero", "Holy Heroine" },
  142. { "Angel", "Angel" },
  143. { "Deity", "Deity" },
  144. { "Supreme Master", "Supreme Mistress" },
  145. { "Implementor", "Implementress" }
  146.     },
  147.     {
  148. { "Man", "Woman" },
  149. { "Pilferer", "Pilferess" },
  150. { "Footpad", "Footpad" },
  151. { "Filcher", "Filcheress" },
  152. { "Pick-Pocket", "Pick-Pocket" },
  153. { "Sneak", "Sneak" },
  154. { "Pincher", "Pincheress" },
  155. { "Cut-Purse", "Cut-Purse" },
  156. { "Snatcher", "Snatcheress" },
  157. { "Sharper", "Sharpress" },
  158. { "Rogue", "Rogue" },
  159. { "Robber", "Robber" },
  160. { "Magsman", "Magswoman" },
  161. { "Highwayman", "Highwaywoman" },
  162. { "Burglar", "Burglaress" },
  163. { "Thief", "Thief" },
  164. { "Knifer", "Knifer" },
  165. { "Quick-Blade", "Quick-Blade" },
  166. { "Killer", "Murderess" },
  167. { "Brigand", "Brigand" },
  168. { "Cut-Throat", "Cut-Throat" },
  169. { "Spy", "Spy" },
  170. { "Grand Spy", "Grand Spy" },
  171. { "Master Spy", "Master Spy" },
  172. { "Assassin", "Assassin" },
  173. { "Greater Assassin", "Greater Assassin" },
  174. { "Master of Vision", "Mistress of Vision" },
  175. { "Master of Hearing", "Mistress of Hearing" },
  176. { "Master of Smell", "Mistress of Smell" },
  177. { "Master of Taste", "Mistress of Taste" },
  178. { "Master of Touch", "Mistress of Touch" },
  179. { "Crime Lord", "Crime Mistress" },
  180. { "Infamous Crime Lord", "Infamous Crime Mistress" },
  181. { "Greater Crime Lord", "Greater Crime Mistress" },
  182. { "Master Crime Lord", "Master Crime Mistress" },
  183. { "Godfather", "Godmother" },
  184. { "Assassin Hero", "Assassin Heroine" },
  185. { "Angel of Death", "Angel of Death" },
  186. { "Deity of Assassins", "Deity of Assassins" },
  187. { "Supreme Master", "Supreme Mistress" },
  188. { "Implementor", "Implementress" }
  189.     },
  190.     {
  191. { "Man", "Woman" },
  192. { "Swordpupil", "Swordpupil" },
  193. { "Recruit", "Recruit" },
  194. { "Sentry", "Sentress" },
  195. { "Fighter", "Fighter" },
  196. { "Soldier", "Soldier" },
  197. { "Warrior", "Warrior" },
  198. { "Veteran", "Veteran" },
  199. { "Swordsman", "Swordswoman" },
  200. { "Fencer", "Fenceress" },
  201. { "Combatant", "Combatess" },
  202. { "Hero", "Heroine" },
  203. { "Myrmidon", "Myrmidon" },
  204. { "Swashbuckler", "Swashbuckleress" },
  205. { "Mercenary", "Mercenaress" },
  206. { "Swordmaster", "Swordmistress" },
  207. { "Lieutenant", "Lieutenant" },
  208. { "Champion", "Lady Champion" },
  209. { "Dragoon", "Lady Dragoon" },
  210. { "Cavalier", "Lady Cavalier" },
  211. { "Knight", "Lady Knight" },
  212. { "Grand Knight", "Grand Knight" },
  213. { "Master Knight", "Master Knight" },
  214. { "Paladin", "Paladin" },
  215. { "Grand Paladin", "Grand Paladin" },
  216. { "Demon Slayer", "Demon Slayer" },
  217. { "Greater Demon Slayer", "Greater Demon Slayer" },
  218. { "Dragon Slayer", "Dragon Slayer" },
  219. { "Greater Dragon Slayer", "Greater Dragon Slayer" },
  220. { "Underlord", "Underlord" },
  221. { "Overlord", "Overlord" },
  222. { "Baron of Thunder", "Baroness of Thunder" },
  223. { "Baron of Storms", "Baroness of Storms" },
  224. { "Baron of Tornadoes", "Baroness of Tornadoes" },
  225. { "Baron of Hurricanes", "Baroness of Hurricanes" },
  226. { "Baron of Meteors", "Baroness of Meteors" },
  227. { "Knight Hero", "Knight Heroine" },
  228. { "Angel of War", "Angel of War" },
  229. { "Deity of War", "Deity of War" },
  230. { "Supreme Master of War", "Supreme Mistress of War" },
  231. { "Implementor", "Implementress" }
  232.     },
  233.     {
  234.         { "Man",                        "Woman"                         },
  235.         { "Psychic",                    "Psychic",                      },
  236.         { "Medium",                     "Medium",                       },
  237.         { "Gypsy",                      "Gypsy",                        },
  238.         { "Meditator",                  "Meditator",                    },
  239.         { "Mind Prober",                "Mind Prober",                  },
  240.         { "Soul Searcher",              "Soul Searcher",                },
  241.         { "Astral Voyager",             "Astral Voyager",               },
  242.         { "Seeker",                     "Seeker",                       },
  243.         { "Empath",                     "Empath",                       },
  244.         { "Mind Reader",                "Mind Reader"                   },
  245.         { "Telepath",                   "Telepath",                     },
  246.         { "Mental Adept",               "Mental Adept",                 },
  247.         { "Spoonbender",                "Spoonbender",                  },
  248.         { "Perceptive",                 "Perceptive",                   },
  249.         { "Clever",                     "Clever",                       },
  250.         { "Wise",                       "Wise",                         },
  251.         { "Genius",                     "Genius",                       },
  252.         { "Oracle",                     "Oracle",                       },
  253.         { "Soothsayer",                 "Soothsayer",                   },
  254.         { "Truthteller",                "Truthteller",                  },
  255.         { "Sage",                       "Sage",                         },
  256.         { "Master Psychic",             "Mistress Psychic",             },
  257.         { "Master Meditator",           "Mistress Meditator",           },
  258.         { "Master Empath",              "Mistress Empath",              },
  259.         { "Master Clairvoyant",         "Mistress Clairvoyant",         },
  260.         { "Master Mind Reader",         "Mistress Mind Reader",         },
  261.         { "Master Telepath",            "Mistress Telepath",            },
  262.         { "Master Spoonbender",         "Mistress Spoonbender",         },
  263.         { "Grand Master Psychic",       "Grand Mistress Psychic",       },
  264.         { "Grand Master Meditator",     "Grand Mistress Meditator",     },
  265.         { "Grand Master Empath",        "Grand Mistress Empath",        },
  266.         { "Grand Master Clairvoyant",   "Grand Mistress Clairvoyant",   },
  267.         { "Grand Master Mind Reader",   "Grand Mistress Mind Reader",   },
  268.         { "Grand Master Telepath",      "Grand Mistress Telepath",      },
  269.         { "Grand Master Spoonbender",   "Grand Mistress Spoonbender",   },
  270.         { "Psionicist Hero",            "Psionicist Herione",           },
  271.         { "Psionicist Angel",           "Psionicist Angel"              },
  272.         { "Deity of Psionics",          "Deity of Psionics"             },
  273.         { "Supreme Psionicst",          "Supreme Psionicist"            },
  274.         { "Implementor",                "Implementress"                 }
  275.     }
  276. };
  277. /*
  278.  * Race table.
  279.  */
  280. const struct race_type race_table [MAX_RACE] =
  281. {
  282.     {
  283.     "Hum", "Human", 0, 0, 0, 0, 0, 3044, 3001,
  284.        (1<<CLASS_MAGE)|(1<<CLASS_CLERIC)|(1<<CLASS_THIEF)|(1<<CLASS_WARRIOR),
  285.        0
  286.     },
  287.     {
  288.     "Dwa", "Dwarf", 0, 0, 0, 0, 1, 4765, 4749,
  289.        (1<<CLASS_THIEF)|(1<<CLASS_WARRIOR)|(1<<CLASS_PSIONICIST),
  290.        AFF_INFRARED
  291.     },
  292.     {
  293.     "Ogr", "Ogre", 1, -2, -1, 0, 1, 3044, 3001, //7701, 7712,
  294.        (1<<CLASS_THIEF)|(1<<CLASS_WARRIOR),
  295.        AFF_INFRARED
  296.     },
  297.     {
  298.     "Aar", "Aarakocran", 0, 0, 0, 1, 0, 5618, 5604,
  299.        (1<<CLASS_THIEF)|(1<<CLASS_WARRIOR),
  300.        AFF_FLYING
  301.     },
  302.     {
  303.     "Gno", "Gnome", -1, 0, 1, 0, 0, 3044, 3001, //4257, 4248,
  304.        (1<<CLASS_THIEF)|(1<<CLASS_WARRIOR)|(1<<CLASS_CLERIC)|(1<<CLASS_PSIONICIST),
  305.        AFF_INFRARED
  306.     }
  307. };
  308. /*
  309.  * Attribute bonus tables.
  310.  */
  311. const struct str_app_type str_app [26] =
  312. {
  313.     { -5, -4,   0,  0 },  /* 0  */
  314.     { -5, -4,   3,  1 },  /* 1  */
  315.     { -3, -2,   3,  2 },
  316.     { -3, -1,  10,  3 },  /* 3  */
  317.     { -2, -1,  25,  4 },
  318.     { -2, -1,  55,  5 },  /* 5  */
  319.     { -1,  0,  80,  6 },
  320.     { -1,  0,  90,  7 },
  321.     {  0,  0, 100,  8 },
  322.     {  0,  0, 100,  9 },
  323.     {  0,  0, 115, 10 }, /* 10  */
  324.     {  0,  0, 115, 11 },
  325.     {  0,  0, 140, 12 },
  326.     {  0,  0, 140, 13 }, /* 13  */
  327.     {  0,  1, 170, 14 },
  328.     {  1,  1, 170, 15 }, /* 15  */
  329.     {  1,  2, 195, 16 },
  330.     {  2,  3, 220, 22 },
  331.     {  2,  4, 250, 25 }, /* 18  */
  332.     {  3,  5, 400, 30 },
  333.     {  3,  6, 500, 35 }, /* 20  */
  334.     {  4,  7, 600, 40 },
  335.     {  5,  7, 700, 45 },
  336.     {  6,  8, 800, 50 },
  337.     {  8, 10, 900, 55 },
  338.     { 10, 12, 999, 60 }  /* 25   */
  339. };
  340. const struct int_app_type int_app [26] =
  341. {
  342.     {  3 }, /*  0 */
  343.     {  5 }, /*  1 */
  344.     {  7 },
  345.     {  8 }, /*  3 */
  346.     {  9 },
  347.     { 10 }, /*  5 */
  348.     { 11 },
  349.     { 12 },
  350.     { 13 },
  351.     { 15 },
  352.     { 17 }, /* 10 */
  353.     { 19 },
  354.     { 22 },
  355.     { 25 },
  356.     { 28 },
  357.     { 31 }, /* 15 */
  358.     { 34 },
  359.     { 37 },
  360.     { 40 }, /* 18 */
  361.     { 44 },
  362.     { 49 }, /* 20 */
  363.     { 55 },
  364.     { 60 },
  365.     { 70 },
  366.     { 85 },
  367.     { 99 } /* 25 */
  368. };
  369. const struct wis_app_type wis_app [26] =
  370. {
  371.     { 0 }, /*  0 */
  372.     { 0 }, /*  1 */
  373.     { 0 },
  374.     { 0 }, /*  3 */
  375.     { 0 },
  376.     { 1 }, /*  5 */
  377.     { 1 },
  378.     { 1 },
  379.     { 1 },
  380.     { 2 },
  381.     { 2 }, /* 10 */
  382.     { 2 },
  383.     { 2 },
  384.     { 2 },
  385.     { 2 },
  386.     { 3 }, /* 15 */
  387.     { 3 },
  388.     { 4 },
  389.     { 4 }, /* 18 */
  390.     { 5 },
  391.     { 5 }, /* 20 */
  392.     { 6 },
  393.     { 7 },
  394.     { 7 },
  395.     { 7 },
  396.     { 8 } /* 25 */
  397. };
  398. const struct dex_app_type dex_app [26] =
  399. {
  400.     {   60 },   /* 0 */
  401.     {   50 },   /* 1 */
  402.     {   50 },
  403.     {   40 },
  404.     {   30 },
  405.     {   20 },   /* 5 */
  406.     {   10 },
  407.     {    0 },
  408.     {    0 },
  409.     {    0 },
  410.     {    0 },   /* 10 */
  411.     {    0 },
  412.     {    0 },
  413.     {    0 },
  414.     {    0 },
  415.     { - 10 },   /* 15 */
  416.     { - 15 },
  417.     { - 20 },
  418.     { - 30 },
  419.     { - 40 },
  420.     { - 50 },   /* 20 */
  421.     { - 65 },
  422.     { - 75 },
  423.     { - 90 },
  424.     { -105 },
  425.     { -120 }    /* 25 */
  426. };
  427. const struct con_app_type con_app [26] =
  428. {
  429.     { -4, 20 },   /*  0 */
  430.     { -3, 25 },   /*  1 */
  431.     { -2, 30 },
  432.     { -2, 35 },   /*  3 */
  433.     { -1, 40 },
  434.     { -1, 45 },   /*  5 */
  435.     { -1, 50 },
  436.     {  0, 55 },
  437.     {  0, 60 },
  438.     {  0, 65 },
  439.     {  0, 70 },   /* 10 */
  440.     {  0, 75 },
  441.     {  0, 80 },
  442.     {  0, 85 },
  443.     {  0, 88 },
  444.     {  1, 90 },   /* 15 */
  445.     {  2, 95 },
  446.     {  2, 97 },
  447.     {  3, 99 },   /* 18 */
  448.     {  3, 99 },
  449.     {  4, 99 },   /* 20 */
  450.     {  4, 99 },
  451.     {  5, 99 },
  452.     {  6, 99 },
  453.     {  7, 99 },
  454.     {  8, 99 }    /* 25 */
  455. };
  456. /*
  457.  * Liquid properties.
  458.  * Used in world.obj.
  459.  */
  460. const struct liq_type liq_table [LIQ_MAX] =
  461. {
  462.     { "water", "clear", {  0, 1, 10 } },  /*  0 */
  463.     { "beer", "amber", {  3, 2,  5 } },
  464.     { "wine", "rose", {  5, 2,  5 } },
  465.     { "ale", "brown", {  2, 2,  5 } },
  466.     { "dark ale", "dark", {  1, 2,  5 } },
  467.     { "whisky", "golden", {  6, 1,  4 } },  /*  5 */
  468.     { "lemonade", "pink", {  0, 1,  8 } },
  469.     { "firebreather", "boiling", { 10, 0,  0 } },
  470.     { "local specialty", "everclear", {  3, 3,  3 } },
  471.     { "slime mold juice", "green", {  0, 4, -8 } },
  472.     { "milk", "white", {  0, 3,  6 } },  /* 10 */
  473.     { "tea", "tan", {  0, 1,  6 } },
  474.     { "coffee", "black", {  0, 1,  6 } },
  475.     { "blood", "red", {  0, 2, -1 } },
  476.     { "salt water", "clear", {  0, 1, -2 } },
  477.     { "cola", "cherry", {  0, 1,  5 } }   /* 15 */
  478. };
  479. /*
  480.  * The skill and spell table.
  481.  * Slot numbers must never be changed as they appear in #OBJECTS sections.
  482.  */
  483. #define SLOT(n) n
  484. const struct skill_type skill_table [MAX_SKILL] =
  485. {
  486. /*
  487.  * Magic spells.
  488.  */
  489.     {
  490. "reserved", { 99, 99, 99, 99, 99 },
  491. 0, TAR_IGNORE, POS_STANDING,
  492. NULL, SLOT( 0),  0,  0,
  493. "", ""
  494.     },
  495.     {
  496. "acid blast", { 20, 37, 37, 37, 37 },
  497. spell_acid_blast, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  498. NULL, SLOT(70), 20, 12,
  499. "acid blast", "!Acid Blast!"
  500.     },
  501.     {
  502. "armor", {  5,  1, 37, 37, 37  },
  503. spell_armor, TAR_CHAR_DEFENSIVE, POS_STANDING,
  504. NULL, SLOT( 1),  5, 12,
  505. "", "You feel less protected."
  506.     },
  507.     {
  508. "bless", { 37,  5, 37, 37, 37  },
  509. spell_bless, TAR_CHAR_DEFENSIVE, POS_STANDING,
  510. NULL, SLOT( 3),  5, 12,
  511. "", "You feel less righteous."
  512.     },
  513.     {
  514. "blindness", {  8,  5, 37, 37, 37  },
  515. spell_blindness, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  516. &gsn_blindness, SLOT( 4),  5, 12,
  517. "", "You can see again."
  518.     },
  519.     {
  520. "burning hands", {  5, 37, 37, 37, 37  },
  521. spell_burning_hands, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  522. NULL, SLOT( 5), 15, 12,
  523. "burning hands", "!Burning Hands!"
  524.     },
  525.     {
  526. "call lightning", { 37, 12, 37, 37, 37  },
  527. spell_call_lightning, TAR_IGNORE, POS_FIGHTING,
  528. NULL, SLOT( 6), 15, 12,
  529. "lightning bolt", "!Call Lightning!"
  530.     },
  531.     {
  532. "cause critical", { 37,  9, 37, 37, 37  },
  533. spell_cause_critical, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  534. NULL, SLOT(63), 20, 12,
  535. "spell", "!Cause Critical!"
  536.     },
  537.     {
  538. "cause light", { 37,  1, 37, 37, 37  },
  539. spell_cause_light, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  540. NULL, SLOT(62), 15, 12,
  541. "spell", "!Cause Light!"
  542.     },
  543.     {
  544. "cause serious", { 37,  5, 37, 37, 37  },
  545. spell_cause_serious, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  546. NULL, SLOT(64), 17, 12,
  547. "spell", "!Cause Serious!"
  548.     },
  549.     {
  550. "change sex", { 37, 37, 37, 37, 37  },
  551. spell_change_sex, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
  552. NULL, SLOT(82), 15, 12,
  553. "", "Your body feels familiar again."
  554.     },
  555.     {
  556. "charm person", { 14, 37, 37, 37, 37  },
  557. spell_charm_person, TAR_CHAR_OFFENSIVE, POS_STANDING,
  558. &gsn_charm_person, SLOT( 7),  5, 12,
  559. "", "You feel more self-confident."
  560.     },
  561.     {
  562. "chill touch", {  3, 37, 37, 37, 37  },
  563. spell_chill_touch, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  564. NULL, SLOT( 8), 15, 12,
  565. "chilling touch", "You feel less cold."
  566.     },
  567.     {
  568. "colour spray", { 11, 37, 37, 37, 37  },
  569. spell_colour_spray, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  570. NULL, SLOT(10), 15, 12,
  571. "colour spray", "!Colour Spray!"
  572.     },
  573.     {
  574. "continual light", {  4,  2, 37, 37, 37  },
  575. spell_continual_light, TAR_IGNORE, POS_STANDING,
  576. NULL, SLOT(57),  7, 12,
  577. "", "!Continual Light!"
  578.     },
  579.     {
  580. "control weather", { 10, 13, 37, 37, 37  },
  581. spell_control_weather, TAR_IGNORE, POS_STANDING,
  582. NULL, SLOT(11), 25, 12,
  583. "", "!Control Weather!"
  584.     },
  585.     {
  586. "create food", { 37,  3, 37, 37, 37  },
  587. spell_create_food, TAR_IGNORE, POS_STANDING,
  588. NULL, SLOT(12),  5, 12,
  589. "", "!Create Food!"
  590.     },
  591.     {
  592. "create spring", { 10, 37, 37, 37, 37  },
  593. spell_create_spring, TAR_IGNORE, POS_STANDING,
  594. NULL, SLOT(80), 20, 12,
  595. "", "!Create Spring!"
  596.     },
  597.     {
  598. "create water", { 37,  2, 37, 37, 37  },
  599. spell_create_water, TAR_OBJ_INV, POS_STANDING,
  600. NULL, SLOT(13),  5, 12,
  601. "", "!Create Water!"
  602.     },
  603.     {
  604. "cure blindness", { 37,  4, 37, 37, 37  },
  605. spell_cure_blindness, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
  606. NULL, SLOT(14),  5, 12,
  607. "", "!Cure Blindness!"
  608.     },
  609.     {
  610. "cure critical", { 37,  9, 37, 37, 37  },
  611. spell_cure_critical, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
  612. NULL, SLOT(15), 20, 12,
  613. "", "!Cure Critical!"
  614.     },
  615.     {
  616. "cure light", { 37,  1, 37, 37, 37  },
  617. spell_cure_light, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
  618. NULL, SLOT(16), 10, 12,
  619. "", "!Cure Light!"
  620.     },
  621.     {
  622. "cure poison", { 37,  9, 37, 37, 37  },
  623. spell_cure_poison, TAR_CHAR_DEFENSIVE, POS_STANDING,
  624. NULL, SLOT(43),  5, 12,
  625. "", "!Cure Poison!"
  626.     },
  627.     {
  628. "cure serious", { 37,  5, 37, 37, 37  },
  629. spell_cure_serious, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
  630. NULL, SLOT(61), 15, 12,
  631. "", "!Cure Serious!"
  632.     },
  633.     {
  634. "curse", { 12, 12, 37, 37, 37  },
  635. spell_curse, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  636. &gsn_curse, SLOT(17), 20, 12,
  637. "curse", "The curse wears off."
  638.     },
  639.     {
  640. "deafness", { 37, 37, 37, 37, 37  },
  641. spell_dispel_magic, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  642. NULL, SLOT(52), 15, 12,
  643. "", "!Deafness!"
  644.     },
  645.     {
  646. "detect evil", { 37,  4, 37, 37, 37  },
  647. spell_detect_evil, TAR_CHAR_SELF, POS_STANDING,
  648. NULL, SLOT(18),  5, 12,
  649. "", "The red in your vision disappears."
  650.     },
  651.     {
  652. "detect hidden", { 37,  7, 37, 37, 37  },
  653. spell_detect_hidden, TAR_CHAR_SELF, POS_STANDING,
  654. NULL, SLOT(44),  5, 12,
  655. "", "You feel less aware of your suroundings."
  656.     },
  657.     {
  658. "detect invis", {  2,  5, 37, 37, 37  },
  659. spell_detect_invis, TAR_CHAR_SELF, POS_STANDING,
  660. NULL, SLOT(19),  5, 12,
  661. "", "You no longer see invisible objects."
  662.     },
  663.     {
  664. "detect magic", {  2,  3, 37, 37, 37  },
  665. spell_detect_magic, TAR_CHAR_SELF, POS_STANDING,
  666. NULL, SLOT(20),  5, 12,
  667. "", "The detect magic wears off."
  668.     },
  669.     {
  670. "detect poison", { 37,  5, 37, 37, 37  },
  671. spell_detect_poison, TAR_OBJ_INV, POS_STANDING,
  672. NULL, SLOT(21),  5, 12,
  673. "", "!Detect Poison!"
  674.     },
  675.     {
  676. "dispel evil", { 37, 10, 37, 37, 37  },
  677. spell_dispel_evil, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  678. NULL, SLOT(22), 15, 12,
  679. "dispel evil", "!Dispel Evil!"
  680.     },
  681.     {
  682. "dispel magic", { 26, 31, 37, 37, 37  },
  683. spell_dispel_magic, TAR_CHAR_OFFENSIVE, POS_STANDING,
  684. NULL, SLOT(59), 15, 12,
  685. "", "!Dispel Magic!"
  686.     },
  687.     {
  688. "earthquake", { 37,  7, 37, 37, 37  },
  689. spell_earthquake, TAR_IGNORE, POS_FIGHTING,
  690. NULL, SLOT(23), 15, 12,
  691. "earthquake", "!Earthquake!"
  692.     },
  693.     {
  694. "enchant weapon", { 12, 37, 37, 37, 37  },
  695. spell_enchant_weapon, TAR_OBJ_INV, POS_STANDING,
  696. NULL, SLOT(24), 100, 24,
  697. "", "!Enchant Weapon!"
  698.     },
  699.     {
  700. "energy drain", { 13, 37, 37, 37, 37  },
  701. spell_energy_drain, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  702. NULL, SLOT(25), 35, 12,
  703. "energy drain", "!Energy Drain!"
  704.     },
  705.     {
  706. "faerie fire", {  4,  2, 37, 37, 37  },
  707. spell_faerie_fire, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  708. NULL, SLOT(72),  5, 12,
  709. "faerie fire", "The pink aura around you fades away."
  710.     },
  711.     {
  712. "faerie fog", { 10, 14, 37, 37, 37  },
  713. spell_faerie_fog, TAR_IGNORE, POS_STANDING,
  714. NULL, SLOT(73), 12, 12,
  715. "faerie fog", "!Faerie Fog!"
  716.     },
  717.     {
  718. "fireball", { 15, 37, 37, 37, 37  },
  719. spell_fireball, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  720. NULL, SLOT(26), 15, 12,
  721. "fireball", "!Fireball!"
  722.     },
  723.     {
  724. "flamestrike", { 37, 13, 37, 37, 37  },
  725. spell_flamestrike, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  726. NULL, SLOT(65), 20, 12,
  727. "flamestrike", "!Flamestrike!"
  728.     },
  729.     {
  730. "fly", {  7, 12, 37, 37, 37  },
  731. spell_fly, TAR_CHAR_DEFENSIVE, POS_STANDING,
  732. NULL, SLOT(56), 10, 18,
  733. "", "You slowly float to the ground."
  734.     },
  735.     {
  736. "gate", { 37, 37, 37, 37, 37  },
  737. spell_gate, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
  738. NULL, SLOT(83), 50, 12,
  739. "", "!Gate!"
  740.     },
  741.     {
  742. "giant strength", {  7, 37, 37, 37, 37  },
  743. spell_giant_strength, TAR_CHAR_DEFENSIVE, POS_STANDING,
  744. NULL, SLOT(39), 20, 12,
  745. "", "You feel weaker."
  746.     },
  747.     {
  748. "harm", { 37, 15, 37, 37, 37  },
  749. spell_harm, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  750. NULL, SLOT(27), 35, 12,
  751. "harm spell", "!Harm!"
  752.     },
  753.     {
  754. "heal", { 37, 14, 37, 37, 37  },
  755. spell_heal, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
  756. NULL, SLOT(28), 50, 12,
  757. "", "!Heal!"
  758.     },
  759.     {
  760. "identify", { 10, 10, 37, 37, 37  },
  761. spell_identify, TAR_OBJ_INV, POS_STANDING,
  762. NULL, SLOT(53), 12, 24,
  763. "", "!Identify!"
  764.     },
  765.     {
  766. "infravision", {  6,  9, 37, 37, 37  },
  767. spell_infravision, TAR_CHAR_DEFENSIVE, POS_STANDING,
  768. NULL, SLOT(77),  5, 18,
  769. "", "You no longer see in the dark."
  770.     },
  771.     {
  772. "invis", {  4, 37, 37, 37, 37  },
  773. spell_invis, TAR_CHAR_DEFENSIVE, POS_STANDING,
  774. &gsn_invis, SLOT(29),  5, 12,
  775. "", "You are no longer invisible."
  776.     },
  777.     {
  778. "know alignment", {  8,  5, 37, 37, 37  },
  779. spell_know_alignment, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  780. NULL, SLOT(58),  9, 12,
  781. "", "!Know Alignment!"
  782.     },
  783.     {
  784. "lightning bolt", {  9, 37, 37, 37, 37  },
  785. spell_lightning_bolt, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  786. NULL, SLOT(30), 15, 12,
  787. "lightning bolt", "!Lightning Bolt!"
  788.     },
  789.     {
  790. "locate object", {  6, 10, 37, 37, 37  },
  791. spell_locate_object, TAR_IGNORE, POS_STANDING,
  792. NULL, SLOT(31), 20, 18,
  793. "", "!Locate Object!"
  794.     },
  795.     {
  796. "magic missile", {  1, 37, 37, 37, 37  },
  797. spell_magic_missile, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  798. NULL, SLOT(32), 15, 12,
  799. "magic missile", "!Magic Missile!"
  800.     },
  801.     // @@@
  802.     {
  803. "make purse", { 37, 37, 37, 37, 37  },
  804. spell_make_purse, TAR_OBJ_INV, POS_STANDING,
  805. NULL, SLOT(50), 100, 24,
  806. "", "!Make Purse!"
  807.     },
  808.     {
  809. "mass invis", { 15, 17, 37, 37, 37  },
  810. spell_mass_invis, TAR_IGNORE, POS_STANDING,
  811. &gsn_mass_invis, SLOT(69), 20, 24,
  812. "", "!Mass Invis!"
  813.     },
  814.     {
  815. "pass door", { 18, 37, 37, 37, 37  },
  816. spell_pass_door, TAR_CHAR_SELF, POS_STANDING,
  817. NULL, SLOT(74), 20, 12,
  818. "", "You feel solid again."
  819.     },
  820.     {
  821. "poison", { 37,  8, 37, 37, 37  },
  822. spell_poison, TAR_CHAR_OFFENSIVE, POS_STANDING,
  823. &gsn_poison, SLOT(33), 10, 12,
  824. "poison", "You feel less sick."
  825.     },
  826.     {
  827. "protection", { 37,  6, 37, 37, 37  },
  828. spell_protection, TAR_CHAR_SELF, POS_STANDING,
  829. NULL, SLOT(34),  5, 12,
  830. "", "You feel less protected."
  831.     },
  832.     {
  833. "refresh", {  5,  3, 37, 37, 37  },
  834. spell_refresh, TAR_CHAR_DEFENSIVE, POS_STANDING,
  835. NULL, SLOT(81), 12, 18,
  836. "refresh", "!Refresh!"
  837.     },
  838.     {
  839. "remove curse", { 37, 12, 37, 37, 37  },
  840. spell_remove_curse, TAR_CHAR_DEFENSIVE, POS_STANDING,
  841. NULL, SLOT(35),  5, 12,
  842. "", "!Remove Curse!"
  843.     },
  844.     {
  845. "sanctuary", { 37, 13, 37, 37, 37  },
  846. spell_sanctuary, TAR_CHAR_DEFENSIVE, POS_STANDING,
  847. NULL, SLOT(36), 75, 12,
  848. "", "The white aura around your body fades."
  849.     },
  850.     {
  851. "shield", { 13, 37, 37, 37, 37  },
  852. spell_shield, TAR_CHAR_DEFENSIVE, POS_STANDING,
  853. NULL, SLOT(67), 12, 18,
  854. "", "Your force shield shimmers then fades away."
  855.     },
  856.     {
  857. "shocking grasp", {  7, 37, 37, 37, 37  },
  858. spell_shocking_grasp, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  859. NULL, SLOT(37), 15, 12,
  860. "shocking grasp", "!Shocking Grasp!"
  861.     },
  862.     {
  863. "silence", { 37, 37, 37, 37, 37  },
  864. spell_dispel_magic, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  865. NULL, SLOT(112), 15, 12,
  866. "", "!Silence!"
  867.     },
  868.     {
  869. "sleep", { 14, 37, 37, 37, 37  },
  870. spell_sleep, TAR_CHAR_OFFENSIVE, POS_STANDING,
  871. &gsn_sleep, SLOT(38), 15, 12,
  872. "", "You feel less tired."
  873.     },
  874.     {
  875. "stone skin", { 17, 37, 37, 37, 37  },
  876. spell_stone_skin, TAR_CHAR_SELF, POS_STANDING,
  877. NULL, SLOT(66), 12, 18,
  878. "", "Your skin feels soft again."
  879.     },
  880.     {
  881. "summon", { 37,  8, 37, 37, 37  },
  882. spell_summon, TAR_IGNORE, POS_STANDING,
  883. NULL, SLOT(40), 50, 12,
  884. "", "!Summon!"
  885.     },
  886.     {
  887. "teleport", {  8, 37, 37, 37, 37  },
  888. spell_teleport, TAR_CHAR_SELF, POS_FIGHTING,
  889. NULL,   SLOT( 2), 35, 12,
  890. "", "!Teleport!"
  891.     },
  892.     {
  893. "vampiric touch", { 37, 37, 37, 37, 37  },
  894. spell_dispel_magic, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  895. NULL, SLOT(85), 15, 12,
  896. "", "!Vampiric Touch!"
  897.     },
  898.     {
  899. "ventriloquate", {  1, 37, 37, 37, 37  },
  900. spell_ventriloquate, TAR_IGNORE, POS_STANDING,
  901. NULL, SLOT(41),  5, 12,
  902. "", "!Ventriloquate!"
  903.     },
  904.     {
  905. "weaken", {  7, 37, 37, 37, 37  },
  906. spell_weaken, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  907. NULL, SLOT(68), 20, 12,
  908. "spell", "You feel stronger."
  909.     },
  910.     {
  911. "word of recall", { 37, 37, 37, 37, 37  },
  912. spell_word_of_recall, TAR_CHAR_SELF, POS_RESTING,
  913. NULL, SLOT(42),  5, 12,
  914. "", "!Word of Recall!"
  915.     },
  916. /*
  917.  * Dragon breath
  918.  */
  919.     {
  920. "acid breath", { 33, 37, 37, 37, 37  },
  921. spell_acid_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  922. NULL, SLOT(200),  0,  4,
  923. "blast of acid", "!Acid Breath!"
  924.     },
  925.     {
  926. "fire breath", { 34, 37, 37, 37, 37  },
  927. spell_fire_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  928. NULL, SLOT(201),  0,  4,
  929. "blast of flame", "!Fire Breath!"
  930.     },
  931.     {
  932. "frost breath", { 31, 37, 37, 37, 37  },
  933. spell_frost_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  934. NULL, SLOT(202),  0,  4,
  935. "blast of frost", "!Frost Breath!"
  936.     },
  937.     {
  938. "gas breath", { 35, 37, 37, 37, 37  },
  939. spell_gas_breath, TAR_IGNORE, POS_FIGHTING,
  940. NULL, SLOT(203),  0,  4,
  941. "blast of gas", "!Gas Breath!"
  942.     },
  943.     {
  944. "lightning breath", { 32, 37, 37, 37, 37  },
  945. spell_lightning_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  946. NULL, SLOT(204),  0,  4,
  947. "blast of lightning", "!Lightning Breath!"
  948.     },
  949. /*
  950.  * Fighter and thief skills.
  951.  */
  952.     {
  953. "backstab", { 37, 37,  1, 37, 37  },
  954. spell_null, TAR_IGNORE, POS_STANDING,
  955. &gsn_backstab, SLOT( 0),  0, 24,
  956. "backstab", "!Backstab!"
  957.     },
  958.     {
  959. "disarm", { 37, 37, 10, 37, 37  },
  960. spell_null, TAR_IGNORE, POS_FIGHTING,
  961. &gsn_disarm, SLOT( 0),  0, 24,
  962. "", "!Disarm!"
  963.     },
  964.     {
  965. "dodge", { 37, 37,  1, 37, 37  },
  966. spell_null, TAR_IGNORE, POS_FIGHTING,
  967. &gsn_dodge, SLOT( 0),  0,  0,
  968. "", "!Dodge!"
  969.     },
  970.     {
  971. "enhanced damage", { 37, 37, 37,  1, 37  },
  972. spell_null, TAR_IGNORE, POS_FIGHTING,
  973. &gsn_enhanced_damage, SLOT( 0),  0,  0,
  974. "", "!Enhanced Damage!"
  975.     },
  976.     {
  977. "hide", { 37, 37,  1, 37, 37  },
  978. spell_null, TAR_IGNORE, POS_RESTING,
  979. &gsn_hide, SLOT( 0),  0, 12,
  980. "", "!Hide!"
  981.     },
  982.     {
  983. "kick", { 37, 37, 37,  1, 37  },
  984. spell_null, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  985. &gsn_kick, SLOT( 0),  0,  8,
  986. "kick", "!Kick!"
  987.     },
  988.     {
  989. "parry", { 37, 37, 37,  1, 37  },
  990. spell_null, TAR_IGNORE, POS_FIGHTING,
  991. &gsn_parry, SLOT( 0),  0,  0,
  992. "", "!Parry!"
  993.     },
  994.     {
  995. "peek", { 37, 37,  1, 37, 37  },
  996. spell_null, TAR_IGNORE, POS_STANDING,
  997. &gsn_peek, SLOT( 0),  0,  0,
  998. "", "!Peek!"
  999.     },
  1000.     {
  1001. "pick lock", { 37, 37,  1, 37, 37  },
  1002. spell_null, TAR_IGNORE, POS_STANDING,
  1003. &gsn_pick_lock, SLOT( 0),  0, 12,
  1004. "", "!Pick!"
  1005.     },
  1006.     {
  1007. "rescue", { 37, 37, 37,  1, 37  },
  1008. spell_null, TAR_IGNORE, POS_FIGHTING,
  1009. &gsn_rescue, SLOT( 0),  0, 12,
  1010. "", "!Rescue!"
  1011.     },
  1012.     {
  1013. "second attack", { 37, 37,  1,  1, 37  },
  1014. spell_null, TAR_IGNORE, POS_FIGHTING,
  1015. &gsn_second_attack, SLOT( 0),  0,  0,
  1016. "", "!Second Attack!"
  1017.     },
  1018.     {
  1019. "sneak", { 37, 37,  1, 37, 37  },
  1020. spell_null, TAR_IGNORE, POS_STANDING,
  1021. &gsn_sneak, SLOT( 0),  0, 12,
  1022. "", NULL
  1023.     },
  1024.     {
  1025. "steal", { 37, 37,  1, 37, 37  },
  1026. spell_null, TAR_IGNORE, POS_STANDING,
  1027. &gsn_steal, SLOT( 0),  0, 24,
  1028. "", "!Steal!"
  1029.     },
  1030.     {
  1031. "third attack", { 37, 37, 37,  1, 37  },
  1032. spell_null, TAR_IGNORE, POS_FIGHTING,
  1033. &gsn_third_attack, SLOT( 0),  0,  0,
  1034. "", "!Third Attack!"
  1035.     },
  1036. /*
  1037.  *  Spells for mega1.are from Glop/Erkenbrand.
  1038. */
  1039.     {
  1040.         "general purpose",      { 37, 37, 37, 37, 37  },
  1041. spell_general_purpose,  TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1042. NULL,                   SLOT(205),      0,      12,
  1043. "general purpose ammo", "!General Purpose Ammo!"
  1044.     },
  1045.     {
  1046.         "high explosive",       { 37, 37, 37, 37, 37  },
  1047. spell_high_explosive,   TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1048. NULL,                   SLOT(206),      0,      12,
  1049. "high explosive ammo",  "!High Explosive Ammo!"
  1050.     },
  1051.     /*
  1052.      * Psionicist spell/skill definitions
  1053.      * Psi class conceived, created, and coded by Thelonius (EnvyMud)
  1054.      */
  1055.     {
  1056.         "adrenaline control",           { 37, 37, 37, 37,    10 },
  1057.         spell_adrenaline_control,       TAR_CHAR_SELF,  POS_STANDING,
  1058.         NULL,                           SLOT(500), 6,      12,
  1059.         "",                             "The adrenaline rush wears off."
  1060.     },
  1061.     {
  1062.         "agitation",            { 37, 37, 37, 37,     6 },
  1063.         spell_agitation,        TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1064.         NULL,                   SLOT(501), 10,     12,
  1065.         "agitation",            "!Agitation!"
  1066.     },
  1067.     {
  1068.         "aura sight",           { 37, 37, 37, 37,    14 },
  1069.         spell_aura_sight,       TAR_CHAR_DEFENSIVE,     POS_STANDING,
  1070.         NULL,                   SLOT(502), 9,     12,
  1071.         "",                     "!Aura Sight!"
  1072.     },
  1073.     {
  1074.         "awe",                  { 37, 37, 37, 37,    21 },
  1075.         spell_awe,              TAR_CHAR_DEFENSIVE,     POS_FIGHTING,
  1076.         NULL,                   SLOT(503), 35,     12,
  1077.         "",                     "!Awe!"
  1078.     },
  1079.     {
  1080.         "ballistic attack",     { 37, 37, 37, 37,     1 },
  1081.         spell_ballistic_attack, TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1082.         NULL,                   SLOT(504), 5,     12,
  1083.         "ballistic attack",     "!Ballistic Attack!"
  1084.     },
  1085.     {
  1086.         "biofeedback",          { 37, 37, 37, 37,    18 },
  1087.         spell_biofeedback,      TAR_CHAR_SELF,          POS_STANDING,
  1088.         NULL,                   SLOT(505), 75,     12,
  1089.         "",                     "Your biofeedback is no longer effective."
  1090.     },
  1091.     {
  1092.         "cell adjustment",      { 37, 37, 37, 37,    11 },
  1093.         spell_cell_adjustment,  TAR_CHAR_SELF,          POS_STANDING,
  1094.         NULL,                   SLOT(506), 8,     12,
  1095.         "",                     "!Cell Adjustment!"
  1096.     },
  1097.     {
  1098.         "chameleon power",      { 37, 37, 37, 37,     6 },
  1099.         spell_null,             TAR_IGNORE,             POS_STANDING,
  1100.         &gsn_chameleon,         SLOT(507), 0,     12,
  1101.         "",                     "!Chameleon Power!"
  1102.     },
  1103.     {
  1104.         "combat mind",          { 37, 37, 37, 37,   15 },
  1105.         spell_combat_mind,      TAR_CHAR_DEFENSIVE,     POS_STANDING,
  1106.         NULL,                   SLOT(508), 15,     12,
  1107.         "",                     "Your battle sense has faded."
  1108.     },
  1109.     {
  1110.         "complete healing",     { 37, 37, 37, 37,    28 },
  1111.         spell_complete_healing, TAR_CHAR_SELF,          POS_STANDING,
  1112.         NULL,                   SLOT(509), 100,    12,
  1113.         "",                     "!Complete Healing!"
  1114.     },
  1115.     {
  1116.         "control flames",       { 37, 37, 37, 37,     8 },
  1117.         spell_control_flames,   TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1118.         NULL,                   SLOT(510), 15,     12,
  1119.         "tongue of flame",      "!Control Flames!"
  1120.     },
  1121.     {
  1122.         "create sound",         { 37, 37, 37, 37,     2 },
  1123.         spell_create_sound,     TAR_CHAR_DEFENSIVE,     POS_STANDING,
  1124.         NULL,                   SLOT(511), 5,     12,
  1125.         "",                     "!Create Sound!"
  1126.     },
  1127.     {
  1128.         "death field",          { 37, 37, 37, 37,    30 },
  1129.         spell_death_field,      TAR_IGNORE,             POS_FIGHTING,
  1130.         NULL,                   SLOT(512), 200,    18,
  1131.         "field of death",       "!Death Field!"
  1132.     },
  1133.     {
  1134.         "detonate",             { 37, 37, 37, 37,    20 },
  1135.         spell_detonate,         TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1136.         NULL,                   SLOT(513), 35,     24,
  1137.         "detonation",           "!Detonate!"
  1138.     },
  1139.     {
  1140.         "disintegrate",         { 37, 37, 37, 37,    27 },
  1141.         spell_disintegrate,     TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1142.         NULL,                   SLOT(514), 150,    18,
  1143.         "disintegration",       "!Disintegrate!"
  1144.     },
  1145.     {
  1146.         "displacement",         { 37, 37, 37, 37,     9 },
  1147.         spell_displacement,     TAR_CHAR_SELF,          POS_STANDING,
  1148.         NULL,                   SLOT(515), 10,     12,
  1149.         "",                     "You are no longer displaced."
  1150.     },
  1151.     {
  1152.         "domination",           { 37, 37, 37, 37,    16 },
  1153.         spell_domination,       TAR_CHAR_OFFENSIVE,     POS_STANDING,
  1154.         &gsn_domination,        SLOT(516), 5,     12,
  1155.         "",                     "You regain control of your body."
  1156.     },
  1157.     {
  1158.         "ectoplasmic form",     { 37, 37, 37, 37,    19 },
  1159.         spell_ectoplasmic_form, TAR_CHAR_SELF,          POS_STANDING,
  1160.         NULL,                   SLOT(517), 20,     12,
  1161.         "",                     "You feel solid again."
  1162.     },
  1163.     {
  1164.         "ego whip",             { 37, 37, 37, 37,    13 },
  1165.         spell_ego_whip,         TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1166.         NULL,                   SLOT(518), 20,     12,
  1167.         "",                     "You feel more confident."
  1168.     },
  1169.     {
  1170.         "energy containment",           { 37, 37, 37, 37,    10 },
  1171.         spell_energy_containment,       TAR_CHAR_SELF,  POS_STANDING,
  1172.         NULL,                           SLOT(519), 10,     12,
  1173.         "",                             "You no longer absorb energy."
  1174.     },
  1175.     {
  1176.         "enhance armor",        { 37, 37, 37, 37,    15 },
  1177.         spell_enhance_armor,    TAR_OBJ_INV,    POS_STANDING,
  1178.         NULL,                   SLOT(520), 100,    24,
  1179.         "",                     "!Enhance Armor!"
  1180.     },
  1181.     {
  1182.         "enhanced strength",            { 37, 37, 37, 37,     7 },
  1183.         spell_enhanced_strength,        TAR_CHAR_SELF,  POS_STANDING,
  1184.         NULL,                           SLOT(521), 20,     12,
  1185.         "",                             "You no longer feel so HUGE."
  1186.     },
  1187.     {
  1188.         "flesh armor",          { 37, 37, 37, 37,    11 },
  1189.         spell_flesh_armor,      TAR_CHAR_SELF,          POS_STANDING,
  1190.         NULL,                   SLOT(522), 15,     12,
  1191.         "",                     "Your skin returns to normal."
  1192.     },
  1193.     {
  1194.         "heighten senses",      { 37, 37, 37, 37,     3 },
  1195.         spell_null,             TAR_CHAR_SELF,          POS_STANDING,
  1196.         &gsn_heighten,          SLOT(523), 0,      0,
  1197.         "",                     "Your senses return to normal."
  1198.     },
  1199.     {
  1200.         "inertial barrier",     { 37, 37, 37, 37,    19 },
  1201.         spell_inertial_barrier, TAR_IGNORE,             POS_STANDING,
  1202.         NULL,                   SLOT(524), 40,     24,
  1203.         "",                     "Your inertial barrier dissipates."
  1204.     },
  1205.     {
  1206.         "inflict pain",         { 37, 37, 37, 37,     5 },
  1207.         spell_inflict_pain,     TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1208.         NULL,                   SLOT(525), 10,     12,
  1209.         "mindpower",            "!Inflict Pain!"
  1210.     },
  1211.     {
  1212.         "intellect fortress",           { 37, 37, 37, 37,    12 },
  1213.         spell_intellect_fortress,       TAR_IGNORE,     POS_STANDING,
  1214.         NULL,                           SLOT(526), 25,     24,
  1215.         "",                     "Your intellectual fortress crumbles."
  1216.     },
  1217.     {
  1218.         "lend health",          { 37, 37, 37, 37,    10 },
  1219.         spell_lend_health,      TAR_CHAR_DEFENSIVE,     POS_STANDING,
  1220.         NULL,                   SLOT(527), 10,     12,
  1221.         "",                     "!Lend Health!"
  1222.     },
  1223.     {
  1224.         "levitation",           { 37, 37, 37, 37,     3 },
  1225.         spell_levitation,       TAR_CHAR_DEFENSIVE,     POS_STANDING,
  1226.         NULL,                   SLOT(528), 10,     18,
  1227.         "",                     "You slowly float to the ground."
  1228.     },
  1229.     {
  1230.         "mental barrier",       { 37, 37, 37, 37,     6 },
  1231.         spell_mental_barrier,   TAR_CHAR_SELF,          POS_STANDING,
  1232.         NULL,                   SLOT(529), 8,     12,
  1233.         "",                     "Your mental barrier breaks down."
  1234.     },
  1235.     {
  1236.         "mind thrust",          { 37, 37, 37, 37,     2 },
  1237.         spell_mind_thrust,      TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1238.         NULL,                   SLOT(530), 8,     12,
  1239.         "mind thrust",          "!Mind Thrust!"
  1240. },
  1241.     {
  1242.         "project force",        { 37, 37, 37, 37,     9 },
  1243.         spell_project_force,    TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1244.         NULL,                   SLOT(531), 18,     12,
  1245.         "projected force",      "!Project Force!"
  1246.     },
  1247.     {
  1248.         "psionic blast",        { 37, 37, 37, 37,    17 },
  1249.         spell_psionic_blast,    TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1250.         NULL,                   SLOT(532), 25,     12,
  1251.         "psionic blast",        "!Psionic Blast!"
  1252.     },
  1253.     {
  1254.         "psychic crush",        { 37, 37, 37, 37,     8 },
  1255.         spell_psychic_crush,    TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1256.         NULL,                   SLOT(533), 15,     18,
  1257.         "psychic crush",        "!Psychic Crush!"
  1258.     },
  1259.     {
  1260.         "psychic drain",        { 37, 37, 37, 37,     4 },
  1261.         spell_psychic_drain,    TAR_CHAR_OFFENSIVE,     POS_FIGHTING,
  1262.         NULL,                   SLOT(534), 20,     12,
  1263.         "",                     "You no longer feel drained."
  1264.     },
  1265.     {
  1266.         "psychic healing",      { 37, 37, 37, 37,     5 },
  1267.         spell_psychic_healing,  TAR_CHAR_SELF,          POS_STANDING,
  1268.         NULL,                   SLOT(535), 20,      12,
  1269.         "",                     "!Psychic Healing!"
  1270.     },
  1271.     {
  1272.         "shadow form",          { 37, 37, 37, 37,     2 },
  1273.         spell_null,             TAR_IGNORE,             POS_STANDING,
  1274.         &gsn_shadow,            SLOT(536), 0,     12,
  1275.         "",                     "You no longer move in the shadows."
  1276.     },
  1277.     {
  1278.         "share strength",       { 37, 37, 37, 37,    11 },
  1279.         spell_share_strength,   TAR_CHAR_DEFENSIVE,     POS_STANDING,
  1280.         NULL,                   SLOT(537), 8,     12,
  1281.         "",                     "You no longer share strength with another."
  1282.     },
  1283.     {
  1284.         "thought shield",       { 37, 37, 37, 37,     1 },
  1285.         spell_thought_shield,   TAR_CHAR_SELF,          POS_STANDING,
  1286.         NULL,                   SLOT(538), 5,     12,
  1287.         "",                     "You no longer feel so protected."
  1288.     },
  1289.     {
  1290.         "ultrablast",           { 37, 37, 37, 37,    25 },
  1291.         spell_ultrablast,       TAR_IGNORE,             POS_FIGHTING,
  1292.         NULL,                   SLOT(539), 75,     24,
  1293.         "ultrablast",           "!Ultrablast!"
  1294.     }
  1295. #if 1 // @@@
  1296.      ,
  1297. /*
  1298.  *  These spells are to allow TFC zones to load for testing.  They all call
  1299.  *  spell_dispel_magic, which says 'unimplemented' or something...
  1300. */
  1301.     {
  1302. "cause disease", { 37, 37, 37, 37, 37 },
  1303. spell_dispel_magic, TAR_CHAR_OFFENSIVE, POS_STANDING,
  1304. NULL, SLOT(105), 15, 12,
  1305. "", "!Cause Disease!"
  1306.     },
  1307.     {
  1308. "cure disease", { 37, 37, 37, 37, 37 },
  1309. spell_dispel_magic, TAR_CHAR_DEFENSIVE, POS_STANDING,
  1310. NULL, SLOT(104), 15, 12,
  1311. "", "!Cause Disease!"
  1312.     },
  1313.     {
  1314. "detect good", { 37, 37, 37, 37, 37 },
  1315. spell_dispel_magic, TAR_CHAR_SELF, POS_STANDING,
  1316. NULL, SLOT(9), 15, 12,
  1317. "", "The blue in your vision disappears"
  1318.     },
  1319.     {
  1320. "dispel good", { 37, 37, 37, 37, 37 },
  1321. spell_dispel_magic, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
  1322. NULL, SLOT(37), 15, 12,
  1323. "dispel good", "!Dispel Good!"
  1324.     },
  1325.     {
  1326. "jump", { 37, 37, 37, 37, 37 },
  1327. spell_dispel_magic, TAR_CHAR_SELF, POS_FIGHTING,
  1328. NULL, SLOT(47), 15, 12,
  1329. "", "!Jump!"
  1330.     },
  1331.     {
  1332. "protection good", { 37, 37, 37, 37, 37 },
  1333. spell_dispel_magic, TAR_CHAR_SELF, POS_STANDING,
  1334. NULL, SLOT(45), 15, 12,
  1335. "", "!Protection Good!"
  1336.     },
  1337.     {
  1338. "tongues", { 37, 37, 37, 37, 37 },
  1339. spell_dispel_magic, TAR_CHAR_SELF, POS_STANDING,
  1340. NULL, SLOT(98), 15, 12,
  1341. "", "!Tongues!"
  1342.     },
  1343.     {
  1344. "true seeing", { 37, 37, 37, 37, 37 },
  1345. spell_dispel_magic, TAR_CHAR_SELF, POS_STANDING,
  1346. NULL, SLOT(103), 15, 12,
  1347. "", "You see less true <cackle>"
  1348.     },
  1349.     {
  1350. "animate dead", { 37, 37, 37, 37, 37  },
  1351. spell_animate_dead, TAR_IGNORE, POS_STANDING,
  1352. NULL, SLOT(97),  5, 12,
  1353. "", "!Animate Dead!"
  1354.     },
  1355. #endif
  1356. };