/* ************************************************************************ * File: spells.h Part of CircleMUD * * Usage: header file: constants and fn prototypes for spell system * * * * All rights reserved. See license.doc for complete information. * * * * Copyright (C) 1993 by the Trustees of the Johns Hopkins University * * CircleMUD is based on DikuMUD, Copyright (C) 1990, 1991. * ************************************************************************ */ /* Archipelago changes by Alastair J. Neil Copyright (C) 1993, 94, 95, 96 */ #define SPELL_MULT 20 #define MAX_SPELL_NO 90 /* these are the last numbers usable */ #define MAX_ARM_SPELL 100 #define MAX_SKILL_NO 200 /* for spells and skills */ #define TYPE_UNDEFINED -1 #define SPELL_RESERVED_DBC 0 /* SKILL NUMBER ZERO */ #define SPELL_FORTITUDE_BEAR 1 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_BREATH_OF_INVIGORATION 2 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_LIGHTNING_SWORDSMAN 3 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_MILKY_EYES 4 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_CARBUNCLE_OT_EARTH 5 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_CALL_LIGHTNING 6 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_CHARM_PERSON 7 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_CHILL_TOUCH 8 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_CLONE 9 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_COLOUR_SPRAY 10 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_CONTROL_WEATHER 11 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_FEAST_FOR_FIVE 12 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_SOOTHE_PAINS_OT_BEAST 13 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_WEB 14 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_CURE_CRITIC 15 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_CURE_LIGHT 16 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_CURSE 17 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_DETECT_EVIL 18 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_DETECT_INVISIBLE 19 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_SENSE_NATURE_OF_VIS 20 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_MAGICAL_BALANCE 21 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_PERCEIVE_MAGIC 22 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_EARTH_SHOCK 23 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_DISPEL_INVIS 24 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_ENERGY_DRAIN 25 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_FIREBALL 26 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_INVIS1 27 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_INVIS2 28 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_INVIS3 29 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_ENCHANT1 30 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_LOCATE_OBJECT 31 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_RAIN_OF_STONES 32 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_POISON 33 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_PROTECT_FROM_EVIL 34 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_REMOVE_CURSE 35 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_SANCTUARY 36 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_SHOCKING_GRASP 37 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_SLEEP 38 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_MIGHT 39 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_SUMMON 40 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_VENTRILOQUATE 41 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_WORD_OF_RECALL 42 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_REMOVE_POISON 43 /* Reserved Skill[] DO NOT CHANGE */ #define SPELL_SENSE_LIFE 44 /* Reserved Skill[] DO NOT CHANGE */ /* NEW SPELLS are to be inserted here */ #define SPELL_IDENTIFY 45 #define SPELL_FLY 46 #define SPELL_LUNGS_OT_FISH 47 #define SPELL_GRANT_LUNGS_OT_FISH 48 #define SPELL_MEDITATION 49 #define SPELL_HEALTH 50 #define SPELL_BEAUTY 51 #define SPELL_NIMBLENESS 52 #define SPELL_ALERTNESS 53 #define SPELL_CRAFTYNESS 54 #define SPELL_CREATE_LIGHT 55 #define SPELL_RESIST_HEAT 56 #define SPELL_RESIST_COLD 57 #define SPELL_CONE_OF_COLD 58 #define SPELL_CAUSE_LIGHT 59 #define SPELL_CAUSE_CRITIC 60 #define SPELL_CREATE_OBJECT 61 #define SPELL_LAMP_WO_FLAME 91 #define SPELL_PALM_OF_FLAME 92 #define SPELL_FLASH_OF_SCARLET_FLAME 93 #define SPELL_PILUM_OF_FIRE 94 #define SPELL_ARC_OF_FIERY_RIBBONS 95 #define SPELL_BALL_OF_ABYSMAL_FLAME 96 #define SPELL_BREATH_OF_VULCAN 97 #define SPELL_LANCE_OF_SOLAR_FURY 98 #define SPELL_LAST_FLIGHT_OT_POENIX 99 #define SPELL_DOUSE_THE_FIRE 300 #define SPELL_QUENCH_THE_THIRST 301 #define SPELL_FOOTSTEPS_OT_SLIPPERY 302 #define SPELL_DELUGE_OF_RUSHING 320 #define SPELL_MIGHTY_TORRENT 321 #define SPELL_BLADE_OF_SHIVERING_ICE 322 #define SPELL_ENCASE_IN_ICE 323 #define SPELL_LUNGS_OF_WATER_DEATH 324 #define SPELL_POOL_OF_JENNY_GREENTEETH 325 #define SPELL_CALL_OF_THE_WATERY_GRAVE 326 #define SPELL_BIND_WOUNDS 330 #define SPELL_BLACKSMITH_MIGHT 331 #define SPELL_FREE_ACCURSED_BODY 332 #define SPELL_HEALING_TOUCH 333 #define SPELL_RESTORATION 334 #define SPELL_YOUTHFUL_BEAUTY 335 #define SPELL_CAT_NIMBLE 336 #define SPELL_HEARTY_HEALTH 337 #define SPELL_CONJURE_HOMONCULUS 338 #define SPELL_BODY_MADE_WHOLE 339 #define SPELL_CONJURE_GOLEM 340 #define SPELL_SPASMS 341 #define SPELL_LEAP 342 #define SPELL_GIFT_OF_VIGOUR 343 #define SPELL_ENDURANCE 344 #define SPELL_WALKING_CORPSE 345 #define SPELL_SEVEN_LEAGUE 346 #define SPELL_FROST_BREATH 401 #define SPELL_FIRE_BREATH 402 #define SPELL_ACID_BREATH 403 #define SPELL_GAS_BREATH 404 #define SPELL_LIGHTNING_BREATH 405 /* types of attacks and skills must NOT use same numbers as spells! */ #define SKILL_SNEAK 101 /* Reserved Skill[] DO NOT CHANGE */ #define SKILL_HIDE 102 /* Reserved Skill[] DO NOT CHANGE */ #define SKILL_STEAL 103 /* Reserved Skill[] DO NOT CHANGE */ #define SKILL_BACKSTAB 104 /* Reserved Skill[] DO NOT CHANGE */ #define SKILL_PICK_LOCK 105 /* Reserved Skill[] DO NOT CHANGE */ #define SKILL_KICK 106 /* Reserved Skill[] DO NOT CHANGE */ #define SKILL_BASH 107 /* Reserved Skill[] DO NOT CHANGE */ #define SKILL_RESCUE 108 #define SKILL_CLIMB 109 #define SKILL_QUESTION 110 #define SKILL_BEHEAD 111 /*#define SKILL_DISARM 112 #define SKILL_DODGE 113 #define SKILL_PARRY 114 */ #define SKILL_CREO 112 #define SKILL_INTELLEGO 113 #define SKILL_MUTO 114 #define SKILL_PERDO 115 #define SKILL_REGO 116 #define SKILL_ANIMAL 117 #define SKILL_AQUAM 118 #define SKILL_AURAM 119 #define SKILL_CORPUS 120 #define SKILL_HERBAM 121 #define SKILL_IGNEM 122 #define SKILL_IMAGONEM 123 #define SKILL_MENTEM 124 #define SKILL_TERRAM 125 #define SKILL_VIM 126 #define SKILL_MAGICTHEORY 127 #define SKILL_CAVALRY 128 #define SKILL_MOUNT 129 #define SKILL_RIDING 130 #define SKILL_TRACK 131 #define SKILL_TAME 132 #define SKILL_FISTICUFFS 133 #define SKILL_DUAL_WIELD 134 #define SKILL_BLESS 135 #define SKILL_TURN_UNDEAD 136 /* weapon proficiencies go here */ #define PROF_SWORD 201 /* slashing */ #define PROF_2H_SWORD 202 /* slash 2h */ #define PROF_DAGGER 203 /* pierce */ #define PROF_CLUB 204 /* bludgeon */ #define PROF_2H_CLUB 205 /* bludgeon 2h */ #define PROF_HAMMER 206 /* smite */ #define PROF_2H_HAMMER 207 /* smite 2h */ #define PROF_AXE 208 /* cleave */ #define PROF 2H_AXE 209 /* 2h cleave */ #define PROF_SPEAR 210 /* stab */ #define PROF_WHIP 211 /* whip (not in yet) */ #define PROF_CLAW 212 /* claw (not in yet) */ #define TYPE_HIT 300 #define TYPE_BLUDGEON 301 #define TYPE_PIERCE 302 #define TYPE_SLASH 303 #define TYPE_SMITE 304 #define TYPE_CLEAVE 305 #define TYPE_NO_BS_PIERCE 306 #define TYPE_CLAW 307 #define TYPE_BITE 308 #define TYPE_STING 309 #define TYPE_CRUSH 310 #define TYPE_PECK 311 #define TYPE_BUTT 312 #define TYPE_KICK 313 #define TYPE_WHIP 314 #define TYPE_SUFFERING 400 /* More anything but spells and weapontypes can be insterted here! */ #define MAX_TYPES 70 #define SAVING_PARA 0 #define SAVING_ROD 1 #define SAVING_PETRI 2 #define SAVING_BREATH 3 #define SAVING_SPELL 4 #define MAX_SPL_LIST 512 #define TAR_IGNORE (1 << 0) #define TAR_CHAR_ROOM (1 << 2) #define TAR_CHAR_WORLD (1 << 3) #define TAR_FIGHT_SELF (1 << 4) #define TAR_FIGHT_VICT (1 << 5) #define TAR_SELF_ONLY (1 << 6) /* Only a check, use with ei. TAR_CHAR_ROOM */ #define TAR_SELF_NONO (1 << 7) /* Only a check, use with ei. TAR_CHAR_ROOM */ #define TAR_OBJ_INV (1 << 8) #define TAR_OBJ_ROOM (1 << 9) #define TAR_OBJ_WORLD (1 << 10) #define TAR_OBJ_EQUIP (1 << 11) #define TEACH_HUMAN (1 << 1) #define TEACH_ELF (1 << 2) #define TEACH_HALF (1 << 3) #define TEACH_GIANT (1 << 4) #define TEACH_GNOME (1 << 5) #define TEACH_HELF (1 << 6) #define TEACH_OGIER (1 << 7) #define TEACH_DWARF (1 << 8) #define TEACH_MERMAN (1 << 9) #define TEACH_PIXIE (1 << 10) #define TEACH_AMARYA (1 << 11) #define TEACH_TROLL (1 << 12) #define TEACH_ALL (TEACH_HUMAN | TEACH_ELF | TEACH_HALF | TEACH_GIANT \ | TEACH_GNOME | TEACH_HELF | TEACH_OGIER | TEACH_DWARF \ | TEACH_MERMAN | TEACH_PIXIE | TEACH_AMARYA \ | TEACH_TROLL) #define STAT_NNE 0 #define STAT_STR 1 #define STAT_INT 2 #define STAT_WIS 3 #define STAT_CON 3 #define STAT_DEX 5 #define STAT_CHR 6 #define STAT_PER 7 #define STAT_GUI 8 #define STAT_LUC 9 #define STAT_FOC 10 #define STAT_DEV 11 #define RETE_GUILD 0 #define ARSMAGICA_GUILD 1 #define THIEF_GUILD 2 #define WARRIOR_GUILD 3 #define PEIM_GUILD 4 #define CLERIC_GUILD 5 #define RANGER_GUILD 6 #define CRIG_GUILD 7 #define CRAQ_GUILD 8 #define CRCO_GUILD 9 #define RECO_GUILD 10 #define MUCO_GUILD 11 #define RIDING_GUILD 12 #define PECO_GUILD 13 #define MUAQ_GUILD 14 #define CRAN_GUILD 15 #define INIM_GUILD 16 #define INVM_GUILD 17 #define CRIM_GUILD 18 #define MUTE_GUILD 19 #define MUAU_GUILD 20 struct spell_info_type { void (*spell_pointer) (int level, struct char_data *ch, char *arg, int type, struct char_data *tar_ch, struct obj_data *tar_obj); void (*spll_pointer) (int spell_no, int level, struct char_data *ch, char *arg, int type,struct char_data *tar_ch, struct obj_data *tar_obj); byte minimum_position; /* Position for caster */ ubyte min_usesmana; /* Amount of mana used by a spell */ byte beats; /* Heartbeats until ready for next */ ubyte min_level; /* Level required */ ubyte max_level; /* Max Level guild will teach to */ byte which_guild; /* GUild where it is taught */ byte difficulty; /* base diffuculty level 0,1,2,3 */ byte gold; /* gold cost per practice */ int key_stats; /* key stats affecting skill performance */ int sec_stats; /* secondary stats affecting skill performance */ int ter_stats; /* tertiary stats affecting skill performance */ sh_int targets; /* See below for use with TAR_XXX */ bool use_bas_lev; byte dam_duration; /* some spells linger for a certain number of ticks */ sh_int race_flag; /* a flag to set race specific spells */ }; #define SPELL_TYPE_SPELL 0 #define SPELL_TYPE_POTION 1 #define SPELL_TYPE_WAND 2 #define SPELL_TYPE_STAFF 3 #define SPELL_TYPE_SCROLL 4 #define SPELL_TYPE_ROD 5 #define SPELL_TYPE_PHILTRE 6 #define SPELL_TYPE_CANTRIP 7 /* Attacktypes with grammar */ #define ASPELLN(spellname) \ void spellname(int spell_no, int level, struct char_data *ch, \ struct char_data *victim, struct obj_data *obj) #define ACASTN(castname) \ void castname(int spell_no, int level, struct char_data *ch, \ char *arg, int type, \ struct char_data *victim, struct obj_data *tar_obj) ASPELLN(spell_enchant1); ASPELLN(spell_detect_magic1); ASPELLN(spell_detect_magic2); ASPELLN(spell_detect_magic3); ASPELLN(spell_detect_invis); ASPELLN(spell_dispel_invis); ASPELLN(spell_invis1); ASPELLN(spell_invis2); ASPELLN(spell_invis3); ASPELLN(spell_lungs_ot_fish); ASPELLN(spell_soothe_pains_ot_beast); ASPELLN(spell_web); ASPELLN(spell_web); ASPELLN(spell_feast_for_five); ASPELLN(spell_breath_of_vigor); ASPELLN(spell_invok_ot_milky_eyes); ASPELLN(spell_lightning_swordsman); ASPELLN(spell_milky_eyes); ASPELLN(spell_leap); ASPELLN(spell_seven_league); ASPELLN(spell_gift_of_vigour); ASPELLN(spell_endurance); ASPELLN(spell_walking_corpse); ASPELLN(spell_spasm); ASPELLN(spell_restoration); ASPELLN(spell_gen_dam); ASPELLN(spell_encase_in_ice); ASPELLN(spell_quench_thirst); ASPELLN(spell_footstep_slippery); ASPELLN(spell_lamp_wo_flame); ASPELLN(spell_bind_wounds); ASPELLN(spell_blacksmith_might); ASPELLN(spell_healing_touch); ASPELLN(spell_body_made_whole); ASPELLN(spell_youthful_beauty); ASPELLN(spell_nimble_cat); ASPELLN(spell_hearty_health); ASPELLN(spell_fortitude_ot_bear); ACASTN(cast_invok_ot_milky_eyes); ACASTN(cast_breath_of_vigor); ACASTN(cast_lamp_wo_flame); ACASTN(cast_gen_dam); ACASTN(cast_encase_in_ice); ACASTN(cast_quench_thirst); ACASTN(cast_footstep_slippery); ACASTN(cast_bind_wounds); ACASTN(cast_blacksmith_might); ACASTN(cast_healing_touch); ACASTN(cast_body_made_whole); ACASTN(cast_youthful_beauty); ACASTN(cast_nimble_cat); ACASTN(cast_hearty_health); ACASTN(cast_leap); ACASTN(cast_gift_of_vigour); ACASTN(cast_endurance); ACASTN(cast_walking_corpse); ACASTN(cast_spasm); ACASTN(cast_restoration); ACASTN(cast_seven_league); ACASTN(cast_fortitude_ot_bear); ACASTN(cast_lightning_swordsman); ACASTN(cast_milky_eyes); ACASTN(cast_lungs_ot_fish); ACASTN(cast_feast_for_five); ACASTN(cast_soothe_pains_ot_beast); ACASTN(cast_web); ACASTN(cast_invis1); ACASTN(cast_invis2); ACASTN(cast_invis3); ACASTN(cast_detect_invis); ACASTN(cast_detect_magic1); ACASTN(cast_detect_magic2); ACASTN(cast_detect_magic3); ACASTN(cast_dispel_invis); ACASTN(cast_enchant1);