ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/spells.h
Revision: 1.18
Committed: Fri Mar 26 01:04:44 2010 UTC (14 years, 2 months ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: rel-3_0
Changes since 1.17: +1 -1 lines
Log Message:
update copyright for up to 2010

File Contents

# User Rev Content
1 root 1.1 /*
2 root 1.13 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
3 pippijn 1.10 *
4 root 1.18 * Copyright (©) 2005,2006,2007,2008,2009,2010 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 pippijn 1.10 *
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 pippijn 1.10 *
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 pippijn 1.10 *
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.11 *
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     * when printing out the spells the player knows.
58     */
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