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