/*************************************************************************** * 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 } };