| 1 |
root |
1.1 |
/* |
| 2 |
root |
1.13 |
* This file is part of Deliantra, the Roguelike Realtime MMORPG. |
| 3 |
root |
1.21 |
* |
| 4 |
root |
1.22 |
* Copyright (©) 2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016 Marc Alexander Lehmann / Robin Redeker / the Deliantra team |
| 5 |
root |
1.17 |
* Copyright (©) 2002-2003 Mark Wedel & Crossfire Development Team |
| 6 |
|
|
* Copyright (©) 1992 Frank Tore Johansen |
| 7 |
root |
1.21 |
* |
| 8 |
root |
1.16 |
* Deliantra is free software: you can redistribute it and/or modify it under |
| 9 |
|
|
* the terms of the Affero GNU General Public License as published by the |
| 10 |
|
|
* Free Software Foundation, either version 3 of the License, or (at your |
| 11 |
|
|
* option) any later version. |
| 12 |
root |
1.21 |
* |
| 13 |
root |
1.12 |
* This program is distributed in the hope that it will be useful, |
| 14 |
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 |
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 16 |
|
|
* GNU General Public License for more details. |
| 17 |
root |
1.21 |
* |
| 18 |
root |
1.16 |
* You should have received a copy of the Affero GNU General Public License |
| 19 |
|
|
* and the GNU General Public License along with this program. If not, see |
| 20 |
|
|
* <http://www.gnu.org/licenses/>. |
| 21 |
root |
1.21 |
* |
| 22 |
root |
1.13 |
* The authors can be reached via e-mail to <support@deliantra.net> |
| 23 |
pippijn |
1.10 |
*/ |
| 24 |
root |
1.1 |
|
| 25 |
|
|
#ifndef SPELLS_H |
| 26 |
|
|
#define SPELLS_H |
| 27 |
|
|
|
| 28 |
root |
1.15 |
#define PATH_NULL 0x00000000 /* 0 */ |
| 29 |
|
|
#define PATH_PROT 0x00000001 /* 1 */ |
| 30 |
|
|
#define PATH_FIRE 0x00000002 /* 2 */ |
| 31 |
|
|
#define PATH_FROST 0x00000004 /* 4 */ |
| 32 |
|
|
#define PATH_ELEC 0x00000008 /* 8 */ |
| 33 |
|
|
#define PATH_MISSILE 0x00000010 /* 16 */ |
| 34 |
|
|
#define PATH_SELF 0x00000020 /* 32 */ |
| 35 |
|
|
#define PATH_SUMMON 0x00000040 /* 64 */ |
| 36 |
|
|
#define PATH_ABJURE 0x00000080 /* 128 */ |
| 37 |
|
|
#define PATH_RESTORE 0x00000100 /* 256 */ |
| 38 |
|
|
#define PATH_DETONATE 0x00000200 /* 512 */ |
| 39 |
|
|
#define PATH_MIND 0x00000400 /* 1024 */ |
| 40 |
|
|
#define PATH_CREATE 0x00000800 /* 2048 */ |
| 41 |
|
|
#define PATH_TELE 0x00001000 /* 4096 */ |
| 42 |
|
|
#define PATH_INFO 0x00002000 /* 8192 */ |
| 43 |
|
|
#define PATH_TRANSMUTE 0x00004000 /* 16384 */ |
| 44 |
root |
1.1 |
#define PATH_TRANSFER 0x00008000 /* 32768 */ |
| 45 |
root |
1.15 |
#define PATH_TURNING 0x00010000 /* 65536 */ |
| 46 |
root |
1.1 |
#define PATH_WOUNDING 0x00020000 /* 131072 */ |
| 47 |
|
|
#define PATH_DEATH 0x00040000 /* 262144 */ |
| 48 |
|
|
#define PATH_LIGHT 0x00080000 /* 524288 */ |
| 49 |
|
|
|
| 50 |
|
|
#define PATH_SP_MULT(op,spell) (((op->path_attuned & spell->path_attuned) ? 0.8 : 1) * \ |
| 51 |
root |
1.4 |
((op->path_repelled & spell->path_attuned) ? 1.25 : 1)) |
| 52 |
root |
1.1 |
|
| 53 |
|
|
#define NRSPELLPATHS 20 |
| 54 |
elmex |
1.2 |
extern const char* const spellpathnames[NRSPELLPATHS]; |
| 55 |
root |
1.1 |
|
| 56 |
|
|
/* The only place this is really used is to allocate an array |
| 57 |
root |
1.23 |
* when printing out the spells the player knows. |
| 58 |
root |
1.1 |
*/ |
| 59 |
|
|
#define NROFREALSPELLS 1024 |
| 60 |
|
|
|
| 61 |
|
|
/* this is passed to SP_level_spellpoint_cost to determine |
| 62 |
|
|
* what to check. These values are also used in other places |
| 63 |
|
|
* when we want to pass into a function if it is a cleric spell |
| 64 |
|
|
* or a wizard (mana) spell. |
| 65 |
|
|
*/ |
| 66 |
|
|
#define SPELL_MANA 0x1 |
| 67 |
|
|
#define SPELL_GRACE 0x2 |
| 68 |
|
|
#define SPELL_HIGHEST 0x3 |
| 69 |
|
|
|
| 70 |
|
|
/* This is the subtype for the spells. Start at 1 so that |
| 71 |
pippijn |
1.8 |
* it is easy to see 0 as an uninitialised value. |
| 72 |
root |
1.1 |
* Note that for some spells, subtype pretty accurately |
| 73 |
|
|
* describes the entire spell (SP_DETECT_MAGIC). But for other, the subtype |
| 74 |
|
|
* may not really say much (eg, SP_BOLT), and it is other |
| 75 |
|
|
* fields within the object which really determines its properties. |
| 76 |
|
|
* No effort is made to match these new numbers with the old ones, |
| 77 |
|
|
* and given there is not a 1:1 mapping, you can't do that anyways. |
| 78 |
|
|
*/ |
| 79 |
|
|
|
| 80 |
|
|
#define SP_RAISE_DEAD 1 |
| 81 |
|
|
#define SP_RUNE 2 |
| 82 |
|
|
#define SP_MAKE_MARK 3 |
| 83 |
|
|
#define SP_BOLT 4 |
| 84 |
|
|
#define SP_BULLET 5 |
| 85 |
|
|
#define SP_EXPLOSION 6 |
| 86 |
|
|
#define SP_CONE 7 |
| 87 |
|
|
#define SP_BOMB 8 |
| 88 |
|
|
#define SP_WONDER 9 |
| 89 |
|
|
#define SP_SMITE 10 |
| 90 |
|
|
#define SP_MAGIC_MISSILE 11 |
| 91 |
|
|
#define SP_SUMMON_GOLEM 12 |
| 92 |
|
|
#define SP_DIMENSION_DOOR 13 |
| 93 |
|
|
#define SP_MAGIC_MAPPING 14 |
| 94 |
|
|
#define SP_MAGIC_WALL 15 |
| 95 |
|
|
#define SP_DESTRUCTION 16 |
| 96 |
|
|
#define SP_PERCEIVE_SELF 17 |
| 97 |
|
|
#define SP_WORD_OF_RECALL 18 |
| 98 |
|
|
#define SP_INVISIBLE 19 |
| 99 |
|
|
#define SP_PROBE 20 |
| 100 |
|
|
#define SP_HEALING 21 |
| 101 |
|
|
#define SP_CREATE_FOOD 22 |
| 102 |
|
|
#define SP_EARTH_TO_DUST 23 |
| 103 |
|
|
#define SP_CHANGE_ABILITY 24 |
| 104 |
|
|
#define SP_BLESS 25 |
| 105 |
|
|
#define SP_CURSE 26 |
| 106 |
|
|
#define SP_SUMMON_MONSTER 27 |
| 107 |
|
|
#define SP_CHARGING 28 |
| 108 |
|
|
#define SP_POLYMORPH 29 |
| 109 |
|
|
#define SP_ALCHEMY 30 |
| 110 |
|
|
#define SP_REMOVE_CURSE 31 |
| 111 |
|
|
#define SP_IDENTIFY 32 |
| 112 |
|
|
#define SP_DETECTION 33 |
| 113 |
|
|
#define SP_MOOD_CHANGE 34 |
| 114 |
|
|
#define SP_MOVING_BALL 35 |
| 115 |
|
|
#define SP_SWARM 36 |
| 116 |
|
|
#define SP_CHANGE_MANA 37 |
| 117 |
|
|
#define SP_DISPEL_RUNE 38 |
| 118 |
|
|
#define SP_CREATE_MISSILE 39 |
| 119 |
|
|
#define SP_CONSECRATE 40 |
| 120 |
|
|
#define SP_ANIMATE_WEAPON 41 |
| 121 |
|
|
#define SP_LIGHT 42 |
| 122 |
|
|
#define SP_CHANGE_MAP_LIGHT 43 |
| 123 |
|
|
#define SP_FAERY_FIRE 44 |
| 124 |
|
|
#define SP_CAUSE_DISEASE 45 |
| 125 |
|
|
#define SP_AURA 46 |
| 126 |
|
|
#define SP_TOWN_PORTAL 47 |
| 127 |
|
|
#define SP_PARTY_SPELL 48 |
| 128 |
|
|
|
| 129 |
|
|
/* Potion subtypes */ |
| 130 |
|
|
#define POT_SPELL 1 |
| 131 |
|
|
#define POT_DUST 2 |
| 132 |
|
|
#define POT_FIGURINE 3 |
| 133 |
|
|
#define POT_BALM 4 |
| 134 |
|
|
|
| 135 |
|
|
/* This is for the force subtypes */ |
| 136 |
|
|
#define FORCE_CONFUSION 1 |
| 137 |
|
|
#define FORCE_CHANGE_ABILITY 2 |
| 138 |
|
|
|
| 139 |
|
|
#define PATH_TIME_MULT(op,spell) (((op->path_attuned & spell->path_attuned) ? 0.8 : 1) * \ |
| 140 |
root |
1.4 |
((op->path_repelled & spell->path_attuned) ? 1.25 : 1)) |
| 141 |
root |
1.1 |
|
| 142 |
|
|
/* These are some hard coded values that are used within the code |
| 143 |
|
|
* for spell failure effects or pieces of spells. Rather |
| 144 |
|
|
* then hardcode the names, use defines so it is easier to |
| 145 |
|
|
* update if necessary. |
| 146 |
|
|
*/ |
| 147 |
|
|
#define SP_MED_FIREBALL "spell_medium_fireball" |
| 148 |
|
|
#define LOOSE_MANA "loose_magic" |
| 149 |
|
|
#define SPELL_WONDER "spell_wonder" |
| 150 |
|
|
#define GOD_POWER "god_power" |
| 151 |
|
|
#define SPLINT "splint" /* for bombs */ |
| 152 |
|
|
#define SWARM_SPELL "swarm_spell" |
| 153 |
|
|
#define GENERIC_RUNE "generic_rune" |
| 154 |
|
|
#define HOLY_POSSESSION "spell_holy_possession" |
| 155 |
|
|
#define FORCE_NAME "force" /* instead of it being hardcoded */ |
| 156 |
|
|
/* This is used for fumbles - this arch is all set up to do |
| 157 |
|
|
* the right just by inserting it |
| 158 |
|
|
*/ |
| 159 |
|
|
#define EXPLODING_FIREBALL "exploding_fireball" |
| 160 |
|
|
|
| 161 |
|
|
#endif |