ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/spells.h
Revision: 1.12
Committed: Sun Jul 1 05:00:18 2007 UTC (16 years, 10 months ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: rel-2_2, rel-2_3
Changes since 1.11: +11 -12 lines
Log Message:
- upgrade crossfire trt to the GPL version 3 (hopefully correctly).
- add a single file covered by the GNU Affero General Public License
  (which is not yet released, so I used the current draft, which is
  legally a bit wavy, but its likely better than nothing as it expresses
  direct intent by the authors, and we can upgrade as soon as it has been
  released).
  * this should ensure availability of source code for the server at least
    and hopefully also archetypes and maps even when modified versions
    are not being distributed, in accordance of section 13 of the agplv3.

File Contents

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