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, 10 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

# User Rev Content
1 root 1.1 /*
2 root 1.63 * This file is part of Crossfire TRT, the Roguelike Realtime MORPG.
3 pippijn 1.39 *
4 root 1.60 * 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 pippijn 1.39 *
8 root 1.63 * 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 pippijn 1.39 *
13 root 1.63 * 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.39 *
18 root 1.63 * 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 root 1.60 *
21     * The authors can be reached via e-mail to <crossfire@schmorp.de>
22 pippijn 1.39 */
23 root 1.1
24     #ifndef GLOBAL_H
25     #define GLOBAL_H
26    
27 root 1.50 //#define _GLIBCXX_CONCEPT_CHECKS
28 root 1.48
29 root 1.1 #ifndef EXTERN
30     #define EXTERN extern
31     #endif
32    
33     #include "includes.h"
34    
35 root 1.23 #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 root 1.10
47 root 1.23 // used only for tagging structure members so scripting languages
48     // can easily parse the include files.
49 root 1.32 #define INTERFACE_CLASS(name)
50 root 1.15 #define ACC(meta,member) member
51 root 1.32 #define MTH
52 root 1.15
53 root 1.58 #if __GNUC__ >= 3
54     # define attribute(attrlist) __attribute__(attrlist)
55     #else
56     # define attribute(attrlist)
57     #endif
58    
59 root 1.9 #include "keyword.h"
60 root 1.8 #include "traits.h"
61 root 1.9 #include "dynbuf.h"
62 root 1.13 #include "util.h"
63 root 1.9 #include "shstr.h"
64 root 1.62 #include "cfperl.h"
65 root 1.8
66 root 1.1 /* This blob, in this order, is needed to actually define maps */
67     #include "face.h"
68 root 1.30
69     #include "spells.h"
70    
71 root 1.1 #include "attack.h" /* needs to be before material.h */
72     #include "material.h"
73     #include "living.h"
74     #include "object.h"
75 root 1.55 #include "region.h"
76 root 1.1 #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 root 1.26 #include "network.h"
83     #include "client.h"
84 root 1.1
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 root 1.18 struct linked_char
100     {
101 root 1.10 shstr name;
102 root 1.1 struct linked_char *next;
103 root 1.18 };
104 root 1.1
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 root 1.33 EXTERN bool init_done; /* Ignores signals until init_done is true */
136     EXTERN bool in_cleanup; /* True when cleanup() is reached */
137 root 1.1
138 root 1.56 extern tick_t pticks; /* used by various function to determine */
139 root 1.6 /* how often to save the character */
140 root 1.1 /*
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 root 1.34 EXTERN shstr first_map_path; /* The start-level */
148     EXTERN shstr first_map_ext_path; /* Path used for per-race start maps */
149 root 1.1
150     EXTERN char errmsg[HUGE_BUF];
151     EXTERN long ob_count;
152     /*
153     * Used in treasure.c
154     */
155 root 1.44 EXTERN archetype *ring_arch, *amulet_arch, *staff_arch, *crown_arch;
156 root 1.1
157 root 1.47 #define SET_ANIMATION(ob,newanim) ob->face = animations [ob->animation_id].faces [newanim]
158 root 1.31 #define GET_ANIMATION(ob,anim) animations [ob->animation_id].faces [anim]
159 root 1.1 #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 root 1.33 extern void emergency_save ();
174 root 1.36 extern void cleanup (const char *cause, bool make_core = false);
175 root 1.33
176 root 1.1 #include "libproto.h"
177     #include "sockproto.h"
178    
179     #define decrease_ob(xyz) decrease_ob_nr(xyz,1)
180    
181 root 1.32 INTERFACE_CLASS (Settings)
182 root 1.22 struct Settings {
183 root 1.49 const char *ACC (RO, logfilename); /* logfile to use */
184 root 1.22 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 root 1.49 const char *dumparg; /* additional argument for some dump functions */
188 root 1.22 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 root 1.49 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 root 1.22 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 root 1.59 uint8 dummy_001;
217     uint8 dummy_002;
218 root 1.38 uint8 dummy_000;
219 root 1.22 uint8 ACC (RW, spellpoint_level_depend); /* spell costs go up with level */
220 root 1.49 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 root 1.22
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 root 1.1
244     extern Settings settings;
245    
246 root 1.57 void reset_signals ();
247    
248 root 1.1 #include "plugin.h"
249    
250     #endif /* GLOBAL_H */
251 root 1.12