/***************************************************************************
* Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer, *
* Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe. *
* *
* Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael *
* Chastain, Michael Quan, and Mitchell Tse. *
* *
* In order to use any part of this Merc Diku Mud, you must comply with *
* both the original Diku license in 'license.doc' as well the Merc *
* license in 'license.txt'. In particular, you may not remove either of *
* these copyright notices. *
* *
* Much time and thought has gone into this software and you are *
* benefitting. We hope that you share your changes too. What goes *
* around, comes around. *
***************************************************************************/
#include <glib.h>
#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <time.h>
#include <merc.h>
#include <tables.h>
#include <interp.h>
/*
* Liquid properties.
* Used in world.obj.
*/
const struct liq_type liq_table [LIQ_MAX] =
{
{ "water", "clear", { 0, 1, 10 } }, /* 0 */
{ "beer", "amber", { 3, 2, 5 } },
{ "wine", "rose", { 5, 2, 5 } },
{ "ale", "brown", { 2, 2, 5 } },
{ "dark ale", "dark", { 1, 2, 5 } },
{ "whisky", "golden", { 6, 1, 4 } }, /* 5 */
{ "lemonade", "pink", { 0, 1, 8 } },
{ "firebreather", "boiling", { 10, 0, 0 } },
{ "local specialty", "everclear", { 3, 3, 3 } },
{ "slime mold juice", "green", { 0, 4, -8 } },
{ "milk", "white", { 0, 3, 6 } }, /* 10 */
{ "tea", "tan", { 0, 1, 6 } },
{ "coffee", "black", { 0, 1, 6 } },
{ "blood", "red", { 0, 0, 5 } },
{ "salt water", "clear", { 0, 1, -2 } },
{ "cola", "cherry", { 0, 1, 5 } } /* 15 */
};
/*
* The skill and spell table.
* Slot numbers must never be changed as they appear in #OBJECTS sections.
*/
#define SLOT(n) n
/*
* const struct skill_type skill_table [MAX_SKILL] =
*/
const struct skill_type skill_table [] =
{
/*
* Magic spells.
*/
{
"reserved", 99,
0, TAR_IGNORE, POS_STANDING,
NULL, SLOT( 0), 0, 0,
"", "", 0
},
{
"acid blast", 2,
spell_acid_blast, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(70), 20, 12,
"acid blast", "!Acid Blast!",
BCLASS_MAGE
},
{
"armor", 1,
spell_armor, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT( 1), 5, 12,
"", "{cYou feel less protected.{x",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"bless", 1,
spell_bless, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT( 3), 5, 12,
"", "{cYou feel less righteous.{x",
BCLASS_WARRIOR|BCLASS_CLERIC
},
{
"blindness", 1,
spell_blindness, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
&gsn_blindness, SLOT( 4), 5, 12,
"", "{cYou can see again.{x",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"burning hands", 2,
spell_burning_hands, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT( 5), 15, 12,
"burning hands", "!Burning Hands!",
BCLASS_MAGE
},
{
"call lightning", 2,
spell_call_lightning, TAR_IGNORE, POS_FIGHTING,
NULL, SLOT( 6), 15, 12,
"lightning bolt", "!Call Lightning!" ,
BCLASS_MAGE
},
{
"cause critical", 2,
spell_cause_critical, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(63), 20, 12,
"spell", "!Cause Critical!" ,
BCLASS_CLERIC
},
{
"cause light", 2,
spell_cause_light, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(62), 15, 12,
"spell", "!Cause Light!" ,
BCLASS_CLERIC
},
{
"cause serious", 2,
spell_cause_serious, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(64), 17, 12,
"spell", "!Cause Serious!",
BCLASS_CLERIC
},
{
"change sex", 7,
spell_change_sex, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT(82), 15, 12,
"", "{cYour body feels familiar again.{x",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"charm person", 2,
spell_charm_person, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_charm_person, SLOT( 7), 5, 12,
"", "{cYou feel more self-confident.{x",
BCLASS_MAGE
},
{
"chill touch", 2,
spell_chill_touch, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT( 8), 15, 12,
"chilling touch", "{cYou feel less cold.{x",
BCLASS_MAGE
},
{
"colour spray", 2,
spell_colour_spray, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(10), 15, 12,
"colour spray", "!Colour Spray!" ,
BCLASS_MAGE
},
{
"continual light", 1,
spell_continual_light, TAR_IGNORE, POS_STANDING,
NULL, SLOT(57), 7, 12,
"", "!Continual Light!" ,
BCLASS_MAGE|BCLASS_CLERIC
},
{
"control weather", 2,
spell_control_weather, TAR_IGNORE, POS_STANDING,
NULL, SLOT(11), 25, 12,
"", "!Control Weather!",
BCLASS_MAGE
},
{
"create food", 7,
spell_create_food, TAR_IGNORE, POS_STANDING,
NULL, SLOT(12), 5, 12,
"", "!Create Food!",
BCLASS_WARRIOR
},
{
"create spring", 7,
spell_create_spring, TAR_IGNORE, POS_STANDING,
NULL, SLOT(80), 20, 12,
"", "!Create Spring!",
BCLASS_WARRIOR
},
{
"create water", 7,
spell_create_water, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(13), 5, 12,
"", "!Create Water!",
BCLASS_WARRIOR
},
{
"cure blindness", 1,
spell_cure_blindness, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT(14), 5, 12,
"", "!Cure Blindness!",
BCLASS_CLERIC
},
{
"cure critical", 2,
spell_cure_critical, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT(15), 20, 12,
"", "!Cure Critical!" ,
BCLASS_CLERIC
},
{
"cure light", 2,
spell_cure_light, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT(16), 10, 12,
"", "!Cure Light!" ,
BCLASS_CLERIC
},
{
"cure poison", 1,
spell_cure_poison, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(43), 5, 12,
"", "!Cure Poison!",
BCLASS_CLERIC
},
{
"cure serious", 2,
spell_cure_serious, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT(61), 15, 12,
"", "!Cure Serious!",
BCLASS_CLERIC
},
{
"curse", 2,
spell_curse, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_curse, SLOT(17), 20, 12,
"curse", "{cThe curse wears off.{x",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"detect evil", 2,
spell_detect_evil, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT(18), 5, 12,
"", "{cThe red in your vision disappears.{x",
BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"detect hidden", 1,
spell_detect_hidden, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT(44), 5, 12,
"", "{cYou feel less aware of your surroundings.{x" ,
BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"detect invis", 1,
spell_detect_invis, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT(19), 5, 12,
"", "{cYou no longer see invisible objects.{x" ,
BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"detect magic", 2,
spell_detect_magic, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT(20), 5, 12,
"", "{cThe detect magic wears off.{x" ,
BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"detect poison", 2,
spell_detect_poison, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(21), 5, 12,
"", "!Detect Poison!" ,
BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"dispel evil", 2,
spell_dispel_evil, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(22), 15, 12,
"dispel evil", "!Dispel Evil!" ,
BCLASS_MAGE|BCLASS_CLERIC
},
{
"dispel magic", 1,
spell_dispel_magic, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(59), 15, 12,
"", "!Dispel Magic!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"earthquake", 2,
spell_earthquake, TAR_IGNORE, POS_FIGHTING,
NULL, SLOT(23), 15, 12,
"earthquake", "!Earthquake!" ,
BCLASS_CLERIC
},
{
"enchant weapon", 1,
spell_enchant_weapon, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(24), 100, 24,
"", "!Enchant Weapon!" ,
BCLASS_MAGE
},
{
"energy drain", 1,
spell_energy_drain, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(25), 35, 12,
"energy drain", "!Energy Drain!" ,
BCLASS_MAGE|BCLASS_CLERIC
},
{
"faerie fire", 2,
spell_faerie_fire, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(72), 5, 12,
"faerie fire", "{cThe pink aura around you fades away.{x" ,
BCLASS_MAGE|BCLASS_CLERIC
},
{
"faerie fog", 2,
spell_faerie_fog, TAR_IGNORE, POS_STANDING,
NULL, SLOT(73), 12, 12,
"faerie fog", "!Faerie Fog!" ,
BCLASS_MAGE|BCLASS_CLERIC
},
{
"fireball", 1,
spell_fireball, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(26), 15, 12,
"fireball", "!Fireball!" ,
BCLASS_MAGE
},
{
"flamestrike", 2,
spell_flamestrike, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(65), 20, 12,
"flamestrike", "!Flamestrike!" ,
BCLASS_CLERIC
},
{
"fly", 1,
spell_fly, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(56), 10, 18,
"", "{cYou slowly float to the ground.{x",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"gate", 6,
spell_gate, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT(83), 50, 12,
"", "!Gate!",
BCLASS_WARRIOR
},
{
"giant strength", 1,
spell_giant_strength, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(39), 20, 12,
"", "{cYou feel weaker.{x",
BCLASS_WARRIOR|BCLASS_MAGE
},
{
"harm", 1,
spell_harm, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(27), 35, 12,
"harm spell", "!Harm!",
BCLASS_CLERIC
},
{
"heal", 1,
spell_heal, TAR_CHAR_DEFENSIVE, POS_FIGHTING,
NULL, SLOT(28), 50, 12,
"", "!Heal!" ,
BCLASS_WARRIOR|BCLASS_CLERIC
},
{
"identify", 1,
spell_identify, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(53), 12, 24,
"", "!Identify!",
BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"infravision", 1,
spell_infravision, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(77), 5, 18,
"", "{cYou no longer see in the dark.{x" ,
BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"invis", 1,
spell_invis, TAR_CHAR_DEFENSIVE, POS_STANDING,
&gsn_invis, SLOT(29), 5, 12,
"", "{cYou are no longer invisible.{x" ,
BCLASS_MAGE|BCLASS_THIEF
},
{
"know alignment", 2,
spell_know_alignment, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(58), 9, 12,
"", "!Know Alignment!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"lightning bolt", 2,
spell_lightning_bolt, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(30), 15, 12,
"lightning bolt", "!Lightning Bolt!" ,
BCLASS_MAGE
},
{
"locate object", 1,
spell_locate_object, TAR_IGNORE, POS_STANDING,
NULL, SLOT(31), 20, 18,
"", "!Locate Object!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"magic missile", 2,
spell_magic_missile, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(32), 15, 4,
"magic missile", "!Magic Missile!",
BCLASS_WARRIOR|BCLASS_MAGE
},
{
"mass invis", 1,
spell_mass_invis, TAR_IGNORE, POS_STANDING,
&gsn_mass_invis, SLOT(69), 20, 24,
"", "!Mass Invis!",
BCLASS_MAGE|BCLASS_THIEF
},
{
"perfection", 3,
spell_perfection, TAR_IGNORE, POS_STANDING,
NULL, SLOT(0), 10000, 12,
"", "!Perfection!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"pass door", 1,
spell_pass_door, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT(74), 20, 12,
"", "{cYou feel solid again.{x",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"poison", 1,
spell_poison, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_poison, SLOT(33), 10, 12,
"poison", "{cYou feel less sick.{x",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"cure disease", 1,
spell_cure_disease, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(501), 20, 12,
"", "!Cure Disease!",
BCLASS_CLERIC
},
{
"plague", 1,
spell_plague, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_plague, SLOT(35), 20, 12,
"plague", "{cYour sores vanish.{x",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"protection", 1,
spell_protection, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT(34), 5, 12,
"", "{cYou feel less protected.{x",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"refresh", 2,
spell_refresh, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(81), 12, 18,
"refresh", "!Refresh!" ,
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"remove curse", 2,
spell_remove_curse, TAR_IGNORE, POS_STANDING,
NULL, SLOT(35), 5, 12,
"", "!Remove Curse!",
BCLASS_CLERIC
},
{
"sanctuary", 1,
spell_sanctuary, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(36), 75, 12,
"", "{cThe white aura around your body fades.{x",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"shield", 1,
spell_shield, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(67), 12, 18,
"", "{cYour force shield shimmers then fades away.{x" ,
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"shocking grasp", 2,
spell_shocking_grasp, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(37), 15, 12,
"shocking grasp", "!Shocking Grasp!",
BCLASS_MAGE
},
{
"sleep", 2,
spell_sleep, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_sleep, SLOT(38), 15, 12,
"", "{cYou feel less tired.{x" ,
BCLASS_MAGE
},
{
"stone skin", 1,
spell_stone_skin, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT(66), 12, 18,
"", "{cYour skin feels soft again.{x",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"summon", 2,
spell_summon, TAR_IGNORE, POS_STANDING,
NULL, SLOT(40), 50, 12,
"", "!Summon!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"teleport", 2,
spell_teleport, TAR_CHAR_SELF, POS_FIGHTING,
NULL, SLOT( 2), 35, 12,
"", "!Teleport!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"ventriloquate", 2,
spell_ventriloquate, TAR_IGNORE, POS_STANDING,
NULL, SLOT(41), 5, 12,
"", "!Ventriloquate!" ,
BCLASS_MAGE
},
{
"weaken", 2,
spell_weaken, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(68), 20, 12,
"spell", "{cYou feel stronger.{x",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"word of recall", 9,
spell_word_of_recall, TAR_CHAR_SELF, POS_RESTING,
NULL, SLOT(42), 5, 12,
"", "!Word of Recall!" ,
BCLASS_WARRIOR
},
/*
* Dragon breath
*/
{
"acid breath", 7,
spell_acid_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(200), 1500, 24,
"blast of acid", "!Acid Breath!",
BCLASS_WARRIOR
},
{
"fire breath", 7,
spell_fire_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(201), 1500, 24,
"blast of flame", "!Fire Breath!",
BCLASS_WARRIOR
},
{
"frost breath", 7,
spell_frost_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(202), 1500, 24,
"blast of frost", "!Frost Breath!",
BCLASS_WARRIOR
},
{
"gas breath", 7,
spell_gas_breath, TAR_IGNORE, POS_FIGHTING,
NULL, SLOT(203), 1500, 24,
"blast of gas", "!Gas Breath!",
BCLASS_WARRIOR
},
{
"lightning breath", 7,
spell_lightning_breath, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(204), 1500, 24,
"blast of lightning", "!Lightning Breath!",
BCLASS_WARRIOR
},
/*
* Fighter and thief skills.
*/
{
"backstab", 1,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_backstab, SLOT( 0), 0, 24,
"backstab", "!Backstab!" ,
BCLASS_THIEF
},
{
"disarm", 1,
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_disarm, SLOT( 0), 0, 24,
"", "!Disarm!",
BCLASS_WARRIOR
},
{
"hide", 1,
spell_null, TAR_IGNORE, POS_RESTING,
&gsn_hide, SLOT( 0), 0, 12,
"", "!Hide!",
BCLASS_THIEF
},
{
"hurl", 1,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_hurl, SLOT( 0), 0, 24,
"", "!Hurl!" ,
BCLASS_WARRIOR
},
{
"kick", 1,
spell_null, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
&gsn_kick, SLOT( 0), 0, 24,
"kick", "!Kick!",
BCLASS_WARRIOR|BCLASS_THIEF
},
{
"peek", 1,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_peek, SLOT( 0), 0, 0,
"", "!Peek!",
BCLASS_THIEF
},
{
"pick lock", 1,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_pick_lock, SLOT( 0), 0, 12,
"", "!Pick!" ,
BCLASS_THIEF
},
{
"rescue", 1,
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_rescue, SLOT( 0), 0, 12,
"", "!Rescue!",
BCLASS_WARRIOR
},
{
"sneak", 1,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_sneak, SLOT( 0), 0, 12,
"", "{cYour footsteps are no longer so quiet.{x",
BCLASS_WARRIOR|BCLASS_THIEF
},
{
"steal", 3,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_steal, SLOT( 0), 0, 24,
"", "!Steal!" ,
BCLASS_THIEF
},
/*
* Spells for mega1.are from Glop/Erkenbrand.
*/
{
"general purpose", 7,
spell_general_purpose, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(501), 0, 12,
"general purpose ammo", "!General Purpose Ammo!",
BCLASS_WARRIOR
},
{
"high explosive", 7,
spell_high_explosive, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(502), 0, 12,
"high explosive ammo", "!High Explosive Ammo!",
BCLASS_WARRIOR
},
/*
* Spells added by KaVir.
*/
{
"guardian", 2,
spell_guardian, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(600), 100, 12,
"", "!Guardian!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"soulblade", 1,
spell_soulblade, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(601), 100, 12,
"", "!Soulblade!" ,
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"mana", 2,
spell_mana, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(602), 0, 12,
"", "!Mana!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"frenzy", 1,
spell_frenzy, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(603), 20, 12,
"", "{cYour bloodlust subsides.{x",
BCLASS_WARRIOR|BCLASS_CLERIC
},
{
"darkblessing", 1,
spell_darkblessing, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(604), 20, 12,
"", "{cYou feel less wicked.{x" ,
BCLASS_CLERIC
},
{
"portal", 2,
spell_portal, TAR_IGNORE, POS_STANDING,
NULL, SLOT(604), 50, 12,
"", "!Portal!" ,
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"energyflux", 2,
spell_energyflux, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(605), 0, 12,
"", "!EnergyFlux!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"voodoo", 3,
spell_voodoo, TAR_IGNORE, POS_STANDING,
NULL, SLOT(606), 100, 12,
"", "!Voodoo!" ,
BCLASS_MAGE|BCLASS_CLERIC
},
{
"transport", 2,
spell_transport, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(607), 12, 24,
"", "!Transport!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"regenerate", 1,
spell_regenerate, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(608), 100, 12,
"", "!Regenerate!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"clot", 1,
spell_clot, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(609), 50, 12,
"", "!Clot!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"mend", 1,
spell_mend, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(610), 50, 12,
"", "!Mend!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"punch", 2,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_punch, SLOT( 0), 0, 24,
"punch", "!Punch!",
BCLASS_WARRIOR
},
{
"bash", 2,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_bash, SLOT( 0), 0, 24,
"bash", "!bash!",
BCLASS_WARRIOR
},
{
"stomp", 3,
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_stomp, SLOT( 0), 0, 36,
"stomp", "!Stomp!",
BCLASS_WARRIOR
},
{
"elbow", 99,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_elbow, SLOT( 0), 0, 24,
"elbow", "!Elbow!",
BCLASS_WARRIOR
},
{
"headbutt", 99,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_headbutt, SLOT( 0), 0, 24,
"headbutt", "!Headbutt!",
BCLASS_WARRIOR
},
{
"sweep", 99,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_sweep, SLOT( 0), 0, 24,
"sweep", "!Sweep!",
BCLASS_WARRIOR
},
{
"knee", 99,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_knee, SLOT( 0), 0, 24,
"knee", "!Knee!" ,
BCLASS_WARRIOR
},
{
"quest", 2,
spell_quest, TAR_IGNORE, POS_STANDING,
NULL, SLOT(611), 500, 12,
"", "!Quest!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"minor creation", 2,
spell_minor_creation, TAR_IGNORE, POS_STANDING,
NULL, SLOT(612), 500, 12,
"", "!MinorCreation!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"brew", 2,
spell_brew, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(613), 100, 12,
"", "!Brew!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"scribe", 2,
spell_scribe, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(614), 100, 12,
"", "!Scribe!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"carve", 2,
spell_carve, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(615), 200, 12,
"", "!Carve!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"engrave", 2,
spell_engrave, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(616), 300, 12,
"", "!Engrave!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"bake", 2,
spell_bake, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(617), 100, 12,
"", "!Bake!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"mount", 2,
spell_mount, TAR_CHAR_DEFENSIVE, POS_STANDING,
NULL, SLOT(618), 100, 12,
"", "!Mount!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"berserk", 2,
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_berserk, SLOT( 0), 0, 24,
"", "!Berserk!",
BCLASS_WARRIOR
},
{
"fastdraw", 1,
spell_null, TAR_IGNORE, POS_FIGHTING,
&gsn_fastdraw, SLOT( 0), 0, 0,
"", "!Fastdraw!",
BCLASS_WARRIOR
},
{
"scan", 1,
spell_scan, TAR_IGNORE, POS_STANDING,
NULL, SLOT(619), 6, 24,
"", "!Scan!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"repair", 2,
spell_repair, TAR_IGNORE, POS_STANDING,
NULL, SLOT(620), 100, 24,
"", "!Repair!" ,
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"spellproof", 2,
spell_spellproof, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(621), 50, 12,
"", "!Spellproof!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"preserve", 2,
spell_preserve, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(550), 12, 24,
"", "!Preserve!",
BCLASS_MAGE|BCLASS_CLERIC
},
{
"track", 2,
spell_null, TAR_IGNORE, POS_STANDING,
&gsn_track, SLOT( 0), 0, 0,
"", "!Track!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"major creation", 4,
spell_major_creation, TAR_IGNORE, POS_STANDING,
NULL, SLOT(551), 100, 12,
"", "!MajorCreation!" ,
BCLASS_WARRIOR
},
{
"copy", 4,
NULL, TAR_IGNORE, POS_STANDING,
NULL, SLOT(552), 100, 12,
"", "!Copy!" ,
BCLASS_WARRIOR
},
{
"insert page", 4,
spell_insert_page, TAR_IGNORE, POS_STANDING,
NULL, SLOT(553), 7, 12,
"", "!InsertPage!",
BCLASS_WARRIOR
},
{
"purple sorcery", 99,
spell_null, TAR_IGNORE, POS_STANDING,
NULL, SLOT(554), 100, 12,
"", "{cThe purple spell on you fades away.{x" ,
BCLASS_WARRIOR
},
{
"red sorcery", 99,
spell_null, TAR_IGNORE, POS_STANDING,
NULL, SLOT(555), 100, 12,
"", "{cThe red spell on you fades away.{x" ,
BCLASS_WARRIOR
},
{
"blue sorcery", 99,
spell_null, TAR_IGNORE, POS_STANDING,
NULL, SLOT(556), 100, 12,
"", "{cThe blue spell on you fades away.{x",
BCLASS_WARRIOR
},
{
"green sorcery", 99,
spell_null, TAR_IGNORE, POS_STANDING,
NULL, SLOT(557), 100, 12,
"", "{cThe green spell on you fades away.{x" ,
BCLASS_WARRIOR
},
{
"yellow sorcery", 99,
spell_null, TAR_IGNORE, POS_STANDING,
NULL, SLOT(558), 100, 12,
"", "{cThe yellow spell on you fades away.{x",
BCLASS_WARRIOR
},
{
"chaos blast", 99,
spell_chaos_blast, TAR_CHAR_OFFENSIVE, POS_FIGHTING,
NULL, SLOT(559), 20, 12,
"chaos blast", "!Chaos Blast!",
BCLASS_WARRIOR
},
{
"resistance", 1,
spell_resistance, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(560), 50, 12,
"", "!Resistance!",
BCLASS_WARRIOR|BCLASS_MAGE|BCLASS_CLERIC|BCLASS_THIEF
},
{
"web", 99,
spell_web, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_web, SLOT(561), 100, 12,
"", "{cThe web surrounding you breaks away.{x" ,
BCLASS_WARRIOR
},
{
"arms", 99,
spell_arm, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_arm, SLOT(569), 100, 12,
"", "{cThe tenticals surrounding you breaks away.{x",
BCLASS_WARRIOR
},
{
"polymorph", 4,
spell_polymorph, TAR_IGNORE, POS_STANDING,
&gsn_polymorph, SLOT(562), 50, 12,
"", "{cYou resume your normal form.{x",
BCLASS_WARRIOR
},
{
"birth control", 99,
spell_contraception, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT(563), 20, 12,
"", "",
BCLASS_WARRIOR
},
{
"remove page", 4,
spell_find_familiar, TAR_IGNORE, POS_STANDING,
NULL, SLOT(564), 10, 12,
"", "!RemovePage!",
BCLASS_WARRIOR
},
{
"find familiar", 4,
spell_find_familiar, TAR_IGNORE, POS_STANDING,
NULL, SLOT(565), 100, 12,
"", "" ,
BCLASS_WARRIOR
},
{
"improve", 4,
spell_improve, TAR_OBJ_INV, POS_STANDING,
NULL, SLOT(566), 1500, 12,
"", "!Improve!" ,
BCLASS_WARRIOR
},
{
"darkness", 9,
spell_null, TAR_CHAR_SELF, POS_STANDING,
&gsn_darkness, SLOT( 91), 5, 12,
NULL, "{cYour globe of darkness fades.{x",
BCLASS_WARRIOR
},
{
"paradox", 10,
spell_null, TAR_CHAR_SELF, POS_STANDING,
&gsn_paradox, SLOT( 90), 5, 12,
NULL, "{cYour paradox fades.{x",
BCLASS_WARRIOR
},
{
"drow poison", 10,
spell_null, TAR_CHAR_OFFENSIVE, POS_STANDING,
NULL, SLOT(92), 10, 12,
"poison", "{cYou feel less sick.{x",
BCLASS_WARRIOR
},
{
"levitation", 10,
spell_null, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT(93), 10, 12,
"poison", "!Levitation!" ,
BCLASS_WARRIOR
},
/* MAX_SKILL = 141 */
/*
* Anthing past here WILL NOT be in the prac list...(Check MAX_SKILL)
*/
{
"AggDamage", 10,
spell_null, TAR_CHAR_SELF, POS_STANDING,
&gsn_agg_damage, SLOT(666), 10, 12,
"Aggdamage", "Your wound slowly close up." ,
BCLASS_WARRIOR
},
{
"fear", 99,
spell_fear, TAR_CHAR_OFFENSIVE, POS_STANDING,
&gsn_fear, SLOT(567), 5, 12,
"", "You no longer feel so scared.",
BCLASS_WARRIOR
},
{
"blood potency", 99,
spell_null, TAR_CHAR_SELF, POS_STANDING,
&gsn_potency, SLOT(571), 100, 12,
"", "Your blood returns to its original potency."
},
{
"Disease", 10,
spell_null, TAR_CHAR_SELF, POS_STANDING,
NULL, SLOT(666), 10, 12,
"Disease", "You feel clean once again.",
BCLASS_WARRIOR
}
};
const struct discipline_type discipline_table [MAX_DISC] =
{
{ "Aabombwe ", "ABOMBWE ", ""},
{ "Animalism ", "ANIMALISM ", ""},
{ "Auspex ", "AUSPEX ", ""},
{ "Celerity ", "CELERITY ", ""},
{ "Chimerstry ", "CHIMERSTRY ", ""},
{ "Daimoninon ", "DAIMOINON ", ""},
{ "Deimon ", "DEIMOS ", ""},
{ "Dementation", "DEMENTATION", ""},
{ "Dominate ", "DOMINATE ", ""},
{ "Fortitude ", "FORTITUDE ", ""},
{ "Grotesquous", "GROTESQUOUS", ""},
{ "Kai ", "KAI ", ""},
{ "Melpominee ", "MELPOMINEE ", ""},
{ "Mortis ", "MORTIS ", ""},
{ "Necromancy ", "NECROMANCY ", ""},
{ "Nihilistics", "NIHILISTICS", ""},
{ "Obeah ", "Obeah ", ""},
{ "Obfuscate ", "OBFUSCATE ", ""},
{ "Obtenebration", "OBTENEBRATION",""},
{ "Ogham ", "OGHAM ", ""},
{ "Potence ", "POTENCE ", ""},
{ "Presence ", "PRESENCE ", ""},
{ "Protean ", "PROTEAN ", ""},
{ "Quietus ", "QUIETUS ", ""},
{ "Rift ", "RIFT ", ""},
{ "Sanguinus ", "SANGUINUS ", ""},
{ "Serpentis ", "SERPENTIS ", ""},
{ "Temporis ", "TEMPORIS ", ""},
{ "Thanatosis ", "THANATOSIS ", ""},
{ "Thaumaturgy", "THAUMATURGY", ""},
{ "Vicissitude", "VICISSITUDE", ""},
{ "Visceratika", "VISCERATIKA", ""},
{ "Not Used ", " ", ""},
{ "Not Used ", " ", ""},
{ "Not Used ", " ", ""},
{ "Not Used ", " ", ""},
{ "Not Used ", " ", ""},
{ "Not Used ", " ", ""},
{ "Not Used ", " ", ""},
{ "Not Used ", " ", ""}
};
const struct vamp_clan_type vamp_clan_table [MAX_VAMP_CLAN] =
{
{ "Assamites", CLAN_ASSAMITES, "Independent", {DISC_CELERITY, DISC_OBFUSCATE, DISC_QUIETUS},
"Dominion Zillah Haquim" },
{ "Ba'ali", CLAN_BAALI, "Independent", {DISC_CELERITY, DISC_DAIMOINON, DISC_OBFUSCATE},
"Dominion Enoch Saulot Seker" },
{ "Blood Bro",CLAN_BLOOD_BROTHERS, "Independent", {DISC_CELERITY, DISC_POTENCE, DISC_SANGUINUS},
"Dominion Lilith Tzimisce Tremere" },
{ "Brujah",CLAN_BRUJAH, "Camarilla", {DISC_CELERITY, DISC_POTENCE, DISC_PRESENCE},
"Dominion Irad Troile" },
{ "Bushi", CLAN_BUSHI, "KindrdEast", {DISC_CELERITY, DISC_KAI, DISC_PRESENCE},
"NOT-DESCNDENT-OF-Dominion" },
{ "Cappodocian",CLAN_CAPPADOCIANS, "Independent", {DISC_MORTIS, DISC_AUSPEX, DISC_FORTITUDE},
"Dominion Irad Cappadocius" },
{ "Harbingers",CLAN_HARBINGERS_OF_SKULLS, "Sabbat", {DISC_AUSPEX, DISC_FORTITUDE, DISC_NECROMANCY},
"Dominion " },
{ "Daughters",CLAN_DAUGHTERS_OF_CACOPHONY, "Independent", {DISC_FORTITUDE, DISC_MELPOMINEE, DISC_PRESENCE},
"Dominion Enoch Arikel" },
{ "Gaki",CLAN_GAKI, "KindrdEast", {DISC_AUSPEX, DISC_DOMINATE, DISC_RIFT},
"NOT-DESCENDENT-OF-Dominion" },
{ "Gangrel", CLAN_GANGREL, "Camarilla", {DISC_ANIMALISM, DISC_FORTITUDE, DISC_PROTEAN},
"Dominion Lilith Ennoia" },
{ "Gargoyles",CLAN_GARGOYLES, "Independent", {DISC_FORTITUDE, DISC_POTENCE, DISC_VISCERATIKA},
"Dominion Enoch Tremere Viscera" },
{ "Giovanni",CLAN_GIOVANNI, "Independent", {DISC_DOMINATE, DISC_NECROMANCY, DISC_POTENCE},
"Dominion Irad Giovanni" },
{ "Lasombra",CLAN_LASOMBRA, "Sabbat", {DISC_OBTENEBRATION, DISC_DOMINATE, DISC_POTENCE},
"Dominion Irad Lasombra" },
{ "Lamia",CLAN_LAMIA, "Independent", {DISC_DEIMOS, DISC_POTENCE, DISC_MORTIS},
"Dominion Irad Cappadocius" },
{ "Lhiannan", CLAN_LHIANNAN, "Independent", {DISC_ANIMALISM, DISC_OGHAM, DISC_PRESENCE},
"Dominion Lilith Ennoia" },
{ "Liabon",CLAN_LIABON, "Independent", {DISC_ABOMBWE, DISC_ANIMALISM, DISC_FORTITUDE},
"Dominion Lilith Ennoia Al-Sidi" },
{ "Malkavian",CLAN_MALKAVIAN, "Camarilla", {DISC_DEMENTATION, DISC_OBFUSCATE, DISC_AUSPEX},
"Dominion Enoch Malkav" },
{ "Nagaraja",CLAN_NAGARAJA, "Independent", {DISC_AUSPEX, DISC_NECROMANCY, DISC_NIHILISTICS},
"Dominion Enoch Saulot" },
{ "Nosferatu", CLAN_NOSFERATU, "Camarilla", {DISC_ANIMALISM, DISC_OBFUSCATE, DISC_POTENCE},
"Dominion Zillah BabaYaga" },
{ "Nictuku",CLAN_NICTUKU, "Independent", {DISC_OBFUSCATE, DISC_QUIETUS, DISC_GROTESQUOUS},
"Dominion Zillah Absimillard" },
{ "Ravnos",CLAN_RAVNOS, "Independent", {DISC_ANIMALISM, DISC_CHIMERSTRY, DISC_FORTITUDE},
"Dominion Lilith Ravana" },
{ "Salubri",CLAN_SALUBRI, "Independent", {DISC_AUSPEX, DISC_FORTITUDE, DISC_OBEAH},
"Dominion Enoch Saulot" },
{ "Samedi",CLAN_SAMEDI, "Independent", {DISC_NECROMANCY, DISC_OBFUSCATE, DISC_THANATOSIS},
"Dominion Irad Giovanni Samedi" },
{ "Setite",CLAN_SETITES, "Followers", {DISC_PRESENCE, DISC_OBFUSCATE, DISC_SERPENTIS},
"Dominion Zillah Set" },
{ "Toreador", CLAN_TOREADOR, "Camarilla", {DISC_CELERITY, DISC_PRESENCE, DISC_AUSPEX},
"Dominion Enoch Arikel" },
{ "Tremere",CLAN_TREMERE, "Camarilla", {DISC_THAUMATURGY, DISC_AUSPEX, DISC_DOMINATE},
"Dominion Enoch Tremere" },
{ "True Brujah",CLAN_TRUE_BRUJAH, "Independent", {DISC_PRESENCE, DISC_POTENCE, DISC_TEMPORIS},
"Dominion Irad Brujah" },
{ "Tzimisce", CLAN_TZIMISCE , "Sabbat", {DISC_VICISSITUDE, DISC_AUSPEX, DISC_ANIMALISM},
"Dominion Lilith Tzimisce" },
{ "Ventrue",CLAN_VENTRUE, "Camarilla", {DISC_PRESENCE, DISC_DOMINATE, DISC_FORTITUDE},
"Dominion Irad Veddartha" }
};
const struct spell_colour_type spell_colour_table [5] =
{
{ "purple", MAGENTA },
{ "red", L_RED },
{ "blue", L_BLUE },
{ "green", L_GREEN },
{ "yellow", YELLOW }
};
const struct flag_type spc_flags [] =
{
{ "champion", SPC_CHAMPION, TRUE },
{ "demon_lord", SPC_DEMON_LORD, TRUE },
{ "wolfman", SPC_WOLFMAN, TRUE},
{ "prince", SPC_PRINCE, TRUE },
{ "sire", SPC_SIRE, TRUE },
{ "anarch", SPC_ANARCH, TRUE },
{ "inconnu", SPC_INCONNU, TRUE },
{ "antitribu", SPC_ANTITRIBU, TRUE },
{ "sabbat", SPC_SABBAT, TRUE },
{ "camarilla", SPC_CAMARILLA, TRUE },
{ "independent", SPC_INDEPENDENT, TRUE },
{ "inducted", SPC_INDUCTED, TRUE },
{ "primogen", SPC_PRIMOGEN, TRUE },
{ "justicar", SPC_JUSTICAR, TRUE },
{ "bloodhunt", SPC_BLOODHUNT, TRUE },
{ "pack", SPC_PACK, TRUE },
{ "wyrm", SPC_WYRM, TRUE },
{ "followers", SPC_FOLLOWERS, TRUE },
{ "beta", SPC_BETA, TRUE },
{ "technocracy", SPC_TECHNOCRACY, TRUE },
{ "traditions", SPC_TRADITIONS, TRUE },
{ "newpack", SPC_NEWPACK, TRUE },
{ "elder", SPC_ELDER, TRUE },
{ NULL, 0, FALSE}
};
/* item type list */
const struct item_type item_table [] =
{
{ ITEM_LIGHT, "light" },
{ ITEM_SCROLL, "scroll" },
{ ITEM_WAND, "wand" },
{ ITEM_STAFF, "staff" },
{ ITEM_WEAPON, "weapon" },
{ ITEM_TREASURE, "treasure" },
{ ITEM_ARMOR, "armor" },
{ ITEM_POTION, "potion" },
{ ITEM_TRASH, "trash" },
{ ITEM_CONTAINER, "container" },
{ ITEM_DRINK_CON, "drink" },
{ ITEM_KEY, "key" },
{ ITEM_FOOD, "food" },
{ ITEM_MONEY, "money" },
{ ITEM_BOAT, "boat" },
{ ITEM_CORPSE_NPC,"npc_corpse" },
{ ITEM_CORPSE_PC, "pc_corpse" },
{ ITEM_FOUNTAIN, "fountain" },
{ ITEM_PILL, "pill" },
{ 0, NULL }
};