/* ************************************************************************ * file: spells.h , Implementation of magic spells. Part of DIKUMUD * * Usage : Spells * ************************************************************************* */ #define MAX_WEAPON_SPELL 14 #define MAX_BUF_LENGTH 240 #define TYPE_UNDEFINED -1 #define SPELL_RESERVED_DBC 0 /* SKILL NUMBER ZERO */ #define SPELL_ARMOR 1 #define SPELL_CLARITY 2 #define SPELL_BLESS 3 #define SPELL_BLINDNESS 4 #define SPELL_BURNING_HANDS 5 #define SPELL_MORPHIA 6 #define SPELL_CHARM_PERSON 7 #define SPELL_CHILL_TOUCH 8 #define SPELL_REANIMATE 9 #define SPELL_COLOUR_SPRAY 10 #define SPELL_RELOCATE 11 #define SPELL_CREATE_FOOD 12 #define SPELL_CREATE_WATER 13 #define SPELL_CURE_BLIND 14 #define SPELL_CURE_CRITIC 15 #define SPELL_CURE_LIGHT 16 #define SPELL_CURSE 17 #define SPELL_JINGLE 18 #define SPELL_DETECT_INVISIBLE 19 #define SPELL_SCAN 20 #define SPELL_DRAIN_MR 21 #define SPELL_DISPEL_EVIL 22 #define SPELL_EARTHQUAKE 23 #define SPELL_ENCHANT_WEAPON 24 #define SPELL_ENERGY_DRAIN 25 #define SPELL_FIREBALL 26 #define SPELL_HARM 27 #define SPELL_HEAL 28 #define SPELL_INVISIBLE 29 #define SPELL_LIGHTNING_BOLT 30 #define SPELL_DOPPELGANGER 31 #define SPELL_MAGIC_MISSILE 32 #define SPELL_POISON 33 #define SPELL_PROTECT_FROM_EVIL 34 #define SPELL_REMOVE_CURSE 35 #define SPELL_SANCTUARY 36 #define SPELL_SHOCKING_GRASP 37 #define SPELL_SLEEP 38 #define SPELL_STRENGTH 39 #define SPELL_SUMMON 40 #define SPELL_FEARLESSNESS 41 #define SPELL_WORD_OF_RECALL 42 #define SPELL_REMOVE_POISON 43 #define SPELL_SENSE_LIFE 44 #define SPELL_SUNBURST 45 #define SPELL_CLONE 46 #define SPELL_INFRAVISION 47 #define SPELL_HOLDALIGN 48 #define SPELL_REGEN 49 #define SPELL_FARSEE 50 #define SPELL_GROUPHEAL 51 #define SPELL_MOGRIFICATION 52 #define SPELL_BURLYHEAL 53 #define SPELL_RADIATION 54 #define SPELL_NOVA 55 #define SPELL_FORGETFULNESS 56 #define SPELL_EXTRAHEAL 57 #define SPELL_BARF 58 #define SPELL_INVIGORATE 59 #define SPELL_HASTE 60 #define SPELL_HYPERREGEN 61 #define SPELL_SLIME 62 #define SPELL_STUPIDITY 63 #define SPELL_DISPEL_SPELL 64 #define SPELL_EXTREMELYBURLY 65 #define SPELL_OESOPHAGOSTENOSIS 66 #define SPELL_TRANSMUTATION 67 #define SPELL_GAS 68 #define SPELL_CYCLONE 69 #define MAXSPELL 70 #define SKILL_ATTACK 70 #define SKILL_SNEAK 71 #define SKILL_HIDE 72 #define SKILL_STEAL 73 #define SKILL_BACKSTAB 74 #define SKILL_PICK_LOCK 75 #define SKILL_KICK 76 #define SKILL_BASH 77 #define SKILL_RESCUE 78 #define SKILL_GR_RESCUE 79 #define SKILL_SHOOT 80 #define SKILL_BOMB 81 #define SPELL_MANAHEAL 83 #define SPELL_MOVEHEAL 84 #define SPELL_FIRE_BREATH 85 #define SPELL_GAS_BREATH 86 #define SPELL_FROST_BREATH 87 #define SPELL_ACID_BREATH 88 #define SPELL_LIGHTNING_BREATH 89 #define SPELL_MAGIC_MISSILE_WPN 90 #define SPELL_COLOUR_SPRAY_WPN 91 #define SPELL_FIREBALL_WPN 92 #define SPELL_DISPEL_EVIL_WPN 93 #define SPELL_BOLT_WPN 94 #define SPELL_SUNBURST_WPN 95 #define SPELL_SLIME_WPN 96 #define SPELL_GAS_WPN 97 #define TYPE_HIT 100 #define TYPE_BLUDGEON 101 #define TYPE_PIERCE 102 #define TYPE_SLASH 103 #define TYPE_WHIP 104 #define TYPE_BLAST 105 #define TYPE_SPLAT 106 #define TYPE_SPANK 107 #define TYPE_CRUSH 108 #define TYPE_BURN 109 #define TYPE_SHOOT 110 #define TYPE_SUFFERING 200 /* More anything but spells and weapontypes can be inserted here! */ #define MAX_TYPES 70 #define SAVING_PARA 0 #define SAVING_ROD 1 #define SAVING_SUNBURST 2 #define SAVING_BREATH 3 #define SAVING_SPELL 4 #define MAX_SPL_LIST 127 #define TAR_IGNORE 1 #define TAR_CHAR_ROOM 2 #define TAR_CHAR_WORLD 4 #define TAR_FIGHT_SELF 8 #define TAR_FIGHT_VICT 16 #define TAR_SELF_ONLY 32 /* Only a check, use with ei. TAR_CHAR_ROOM */ #define TAR_SELF_NONO 64 /* Only a check, use with ei. TAR_CHAR_ROOM */ #define TAR_OBJ_INV 128 #define TAR_OBJ_ROOM 256 #define TAR_OBJ_WORLD 512 #define TAR_OBJ_EQUIP 1024 struct spell_info_type { void (*spell_pointer) (short 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 */ short min_usesmana; /* Amount of mana used by a spell */ short beats; /* Heartbeats until ready for next */ short max_skill; short min_level; short targets; /* See below for use with TAR_XXX */ }; /* Possible Targets: bit 0 : IGNORE TARGET bit 1 : PC/NPC in room bit 2 : PC/NPC in world bit 3 : Object held bit 4 : Object in inventory bit 5 : Object in room bit 6 : Object in world bit 7 : If fighting, and no argument, select tar_char as self bit 8 : If fighting, and no argument, select tar_char as victim (fighting) bit 9 : If no argument, select self, if argument check that it IS self. */ #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 SHIELD_RAD 1 #define SHIELD_NOVA 2 #define SHIELD_SLIME 3 #define SHIELD_DRAIN 4 #define SHIELD_GAS 5 #define SHIELD_CYCLONE 6 #define SHIELD_BOMB 7 #define SHIELD_HARM 8 /* Attacktypes with grammar */ struct attack_hit_type { char *singular; char *plural; }; struct weapon_spell_list { int lo,hi; int lev,shift; char *name; void (*spellfun)(short l, struct char_data *ch, struct char_data *ta, struct obj_data *ob); };