ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/spells.h
Revision: 1.24
Committed: Sat Nov 17 23:40:01 2018 UTC (5 years, 5 months ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: HEAD
Changes since 1.23: +1 -0 lines
Log Message:
copyright update 2018

File Contents

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