ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/global.h
Revision: 1.63
Committed: Sun Jul 1 05:00:18 2007 UTC (16 years, 11 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.62: +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,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 GLOBAL_H
25 #define GLOBAL_H
26
27 //#define _GLIBCXX_CONCEPT_CHECKS
28
29 #ifndef EXTERN
30 #define EXTERN extern
31 #endif
32
33 #include "includes.h"
34
35 #include "config.h"
36 #include "define.h"
37 #include "logger.h"
38
39 #ifndef TRUE
40 #define TRUE 1
41 #endif
42
43 #ifndef FALSE
44 #define FALSE 0
45 #endif
46
47 // used only for tagging structure members so scripting languages
48 // can easily parse the include files.
49 #define INTERFACE_CLASS(name)
50 #define ACC(meta,member) member
51 #define MTH
52
53 #if __GNUC__ >= 3
54 # define attribute(attrlist) __attribute__(attrlist)
55 #else
56 # define attribute(attrlist)
57 #endif
58
59 #include "keyword.h"
60 #include "traits.h"
61 #include "dynbuf.h"
62 #include "util.h"
63 #include "shstr.h"
64 #include "cfperl.h"
65
66 /* This blob, in this order, is needed to actually define maps */
67 #include "face.h"
68
69 #include "spells.h"
70
71 #include "attack.h" /* needs to be before material.h */
72 #include "material.h"
73 #include "living.h"
74 #include "object.h"
75 #include "region.h"
76 #include "map.h"
77 #include "tod.h"
78
79 #include "skills.h"
80
81 /* Pull in the socket structure - used in the player structure */
82 #include "network.h"
83 #include "client.h"
84
85 /* Pull in the player structure */
86 #include "player.h"
87
88 /* pull in treasure structure */
89 #include "treasure.h"
90
91 #include "commands.h"
92
93 /* pull in book structures */
94 #include "book.h"
95 /*
96 * So far only used when dealing with artifacts.
97 * (now used by alchemy and other code too. Nov 95 b.t).
98 */
99 struct linked_char
100 {
101 shstr name;
102 struct linked_char *next;
103 };
104
105 /* Pull in artifacts */
106 #include "artifact.h"
107
108 /* Now for gods */
109 #include "god.h"
110
111 /* Now for races */
112 #include "race.h"
113
114 /* Now for recipe/alchemy */
115 #include "recipe.h"
116
117 #include "funcpoint.h"
118
119 /*****************************************************************************
120 * GLOBAL VARIABLES: *
121 *****************************************************************************/
122
123 /*
124 * These are the beginnings of linked lists:
125 */
126 EXTERN artifactlist *first_artifactlist;
127 EXTERN objectlink *first_friendly_object; /* Objects monsters will go after */
128 EXTERN godlink *first_god;
129 EXTERN racelink *first_race;
130
131 /*
132 * Variables set by different flags (see init.c):
133 */
134
135 EXTERN bool init_done; /* Ignores signals until init_done is true */
136 EXTERN bool in_cleanup; /* True when cleanup() is reached */
137
138 extern tick_t pticks; /* used by various function to determine */
139 /* how often to save the character */
140 /*
141 * Misc global variables:
142 */
143 EXTERN FILE *logfile; /* Used by server/daemon.c */
144
145 EXTERN archetype *empty_archetype; /* Nice to have fast access to it */
146 EXTERN archetype *map_archeytpe;
147 EXTERN shstr first_map_path; /* The start-level */
148 EXTERN shstr first_map_ext_path; /* Path used for per-race start maps */
149
150 EXTERN char errmsg[HUGE_BUF];
151 EXTERN long ob_count;
152 /*
153 * Used in treasure.c
154 */
155 EXTERN archetype *ring_arch, *amulet_arch, *staff_arch, *crown_arch;
156
157 #define SET_ANIMATION(ob,newanim) ob->face = animations [ob->animation_id].faces [newanim]
158 #define GET_ANIMATION(ob,anim) animations [ob->animation_id].faces [anim]
159 #define GET_ANIM_ID(ob) (ob->animation_id)
160 /* NUM_ANIMATIONS returns the number of animations allocated. The last
161 * usuable animation will be NUM_ANIMATIONS-1 (for example, if an object
162 * has 8 animations, NUM_ANIMATIONS will return 8, but the values will
163 * range from 0 through 7.
164 */
165 #define NUM_ANIMATIONS(ob) (animations[ob->animation_id].num_animations)
166 #define NUM_FACINGS(ob) (animations[ob->animation_id].facings)
167
168 extern short freearr_x[SIZEOFFREE], freearr_y[SIZEOFFREE];
169 extern int maxfree[SIZEOFFREE], freedir[SIZEOFFREE];
170 extern int rightof_x[9], rightof_y[9];
171 extern int leftof_x[9], leftof_y[9];
172
173 extern void emergency_save ();
174 extern void cleanup (const char *cause, bool make_core = false);
175
176 #include "libproto.h"
177 #include "sockproto.h"
178
179 #define decrease_ob(xyz) decrease_ob_nr(xyz,1)
180
181 INTERFACE_CLASS (Settings)
182 struct Settings {
183 const char *ACC (RO, logfilename); /* logfile to use */
184 int ACC (RW, csport); /* port for new client/server */
185 int ACC (RW, debug); /* Default debugging level */
186 uint8 dumpvalues; /* Set to dump various values/tables */
187 const char *dumparg; /* additional argument for some dump functions */
188 uint8 daemonmode; /* If true, detach and become daemon */
189 int argc; /* parameters that were passed to the program */
190 char **argv; /* Only used by xio.c, so will go away at some time */
191 const char *ACC (RO, confdir); /* configuration files */
192 const char *ACC (RO, datadir); /* read only data files */
193 const char *ACC (RO, localdir); /* read/write data files */
194 const char *ACC (RO, playerdir); /* Where the player files are */
195 const char *ACC (RO, mapdir); /* Where the map files are */
196 const char *ACC (RO, archetypes); /* name of the archetypes file - libdir is prepended */
197 const char *ACC (RO, regions); /* name of the regions file - libdir is prepended */
198 const char *ACC (RO, treasures); /* location of the treasures file. */
199 const char *ACC (RO, uniquedir); /* directory for the unique items */
200 const char *ACC (RO, templatedir); /* directory for the template map */
201 const char *ACC (RO, tmpdir); /* Directory to use for temporary files */
202 sint16 ACC (RW, pk_luck_penalty); /* Amount by which player luck is reduced if they PK */
203 uint8 ACC (RW, stat_loss_on_death); /* If true, chars lose a random stat when they die */
204 uint8 ACC (RW, permanent_exp_ratio); /* how much exp should be 'permenant' and unable to be lost*/
205 uint8 ACC (RW, death_penalty_ratio); /* how much exp should be lost at death */
206 uint8 ACC (RW, death_penalty_level); /* how many levels worth of exp may be lost on one death */
207 uint8 ACC (RW, balanced_stat_loss); /* If true, Death stat depletion based on level etc */
208 uint8 ACC (RW, not_permadeth); /* if true, death is non-permament */
209 uint8 ACC (RW, simple_exp); /* If true, use the simple experience system */
210 uint8 ACC (RW, set_title); /* players can set thier title */
211 uint8 ACC (RW, resurrection); /* ressurection possible w/ permadeth on */
212 uint8 ACC (RW, search_items); /* search_items command */
213 uint8 ACC (RW, spell_encumbrance); /* encumbrance effects spells */
214 uint8 ACC (RW, spell_failure_effects); /* nasty backlash to spell failures */
215 uint16 ACC (RW, set_friendly_fire); /* Percent of damage done by peaceful player vs player damage */
216 uint8 dummy_001;
217 uint8 dummy_002;
218 uint8 dummy_000;
219 uint8 ACC (RW, spellpoint_level_depend); /* spell costs go up with level */
220 char ACC (RW, motd)[MAX_BUF]; /* name of the motd file */
221 const char *ACC (RO, rules); /* name of rules file*/
222 const char *ACC (RO, news); /* name of news file*/
223 char ACC (RW, dm_mail)[MAX_BUF]; /* DM's Email address */
224
225 uint32 ACC (RW, worldmapstartx); /* starting x tile for the worldmap */
226 uint32 ACC (RW, worldmapstarty); /* starting y tile for the worldmap */
227 uint32 ACC (RW, worldmaptilesx); /* number of tiles wide the worldmap is */
228 uint32 ACC (RW, worldmaptilesy); /* number of tiles high the worldmap is */
229 uint32 ACC (RW, worldmaptilesizex); /* number of squares wide in a wm tile */
230 uint32 ACC (RW, worldmaptilesizey); /* number of squares high in a wm tile */
231 uint16 ACC (RW, dynamiclevel); /* how dynamic is the world? */
232 uint8 ACC (RW, fastclock); /* if true, clock goes warp 9 */
233
234 int ACC (RW, max_level); /* This is read out of exp_table */
235 float ACC (RW, item_power_factor); /* See note in setings file */
236
237 int ACC (RW, armor_max_enchant); /* Maximum number of times an armor can be enchanted */
238 int ACC (RW, armor_weight_reduction); /* Weight reduction per enchantment */
239 int ACC (RW, armor_speed_improvement); /* Speed improvement */
240 uint8 ACC (RW, armor_weight_linear); /* If 1, weight reduction is linear, else exponantiel */
241 uint8 ACC (RW, armor_speed_linear); /* If 1, speed improvement is linear, else exponantiel */
242 };
243
244 extern Settings settings;
245
246 void reset_signals ();
247
248 #include "plugin.h"
249
250 #endif /* GLOBAL_H */
251