ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/global.h
(Generate patch)

Comparing deliantra/server/include/global.h (file contents):
Revision 1.11 by root, Sun Sep 3 07:57:56 2006 UTC vs.
Revision 1.38 by root, Sun Jan 7 02:39:14 2007 UTC

1/*
2 * static char *rcsid_global_h =
3 * "$Id: global.h,v 1.11 2006/09/03 07:57:56 root Exp $";
4 */
5
6/* 1/*
7 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
8 3
4 Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
9 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
10 Copyright (C) 1992 Frank Tore Johansen 6 Copyright (C) 1992 Frank Tore Johansen
11 7
12 This program is free software; you can redistribute it and/or modify 8 This program is free software; you can redistribute it and/or modify
13 it under the terms of the GNU General Public License as published by 9 it under the terms of the GNU General Public License as published by
21 17
22 You should have received a copy of the GNU General Public License 18 You should have received a copy of the GNU General Public License
23 along with this program; if not, write to the Free Software 19 along with this program; if not, write to the Free Software
24 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 21
26 The author can be reached via e-mail to crossfire-devel@real-time.com 22 The author can be reached via e-mail to crossfire@schmorp.de
27*/ 23*/
28 24
29#ifndef GLOBAL_H 25#ifndef GLOBAL_H
30#define GLOBAL_H 26#define GLOBAL_H
31 27
33#define EXTERN extern 29#define EXTERN extern
34#endif 30#endif
35 31
36#include "includes.h" 32#include "includes.h"
37 33
34#include "config.h"
35#include "define.h"
36#include "logger.h"
38 37
39/* Type defines for specific signed/unsigned variables of a certain number 38#ifndef TRUE
40 * of bits. Not really used anyplace, but if a certain number of bits 39#define TRUE 1
41 * is required, these type defines should then be used. This will make
42 * porting to systems that have different sized data types easier.
43 *
44 * Note: The type defines should just mean that the data type has at
45 * least that many bits. if a uint16 is actually 32 bits, no big deal,
46 * it is just a waste of space.
47 *
48 * Note2: When using something that is normally stored in a character
49 * (ie strings), don't use the uint8/sint8 typdefs, use 'char' instead.
50 * The signedness for char is probably not universal, and using char
51 * will probably be more portable than sint8/unit8
52 */
53
54
55typedef unsigned int uint32;
56
57#ifndef UINT32_MAX
58#define UINT32_MAX 4294967295U
59#endif 40#endif
60 41
61typedef signed int sint32; 42#ifndef FALSE
62#define SINT32_MAX 2147483647 43#define FALSE 0
63
64typedef unsigned short uint16;
65#ifndef UINT16_MAX
66#define UINT16_MAX 65535
67#endif 44#endif
68 45
69typedef signed short sint16; 46// used only for tagging structure members so scripting languages
70#define SINT16_MAX 32767 47// can easily parse the include files.
71 48#define INTERFACE_CLASS(name)
72typedef unsigned char uint8; 49#define ACC(meta,member) member
73#ifndef UINT8_MAX 50#define MTH
74#define UINT8_MAX 255
75#endif
76
77typedef signed char sint8;
78#define SINT8_MAX 127
79
80
81typedef unsigned short Fontindex;
82
83#ifdef WIN32
84/* Python plugin stuff defines SIZEOF_LONG_LONG as 8, and besides __int64 is a 64b type on MSVC...
85 * So let's force the typedef */
86typedef unsigned __int64 uint64;
87typedef signed __int64 sint64;
88/* Needed for experience */
89#define atoll _atoi64
90
91/* To reduce number of warnings */
92#pragma warning( disable: 4244 ) /* conversion from 'xxx' to 'yyy', possible loss of data */
93#pragma warning( disable: 4305 ) /* initializing float f = 0.05; instead of f = 0.05f; */
94
95#else /* WIN32 */
96
97#if SIZEOF_LONG == 8
98typedef unsigned long uint64;
99typedef signed long sint64;
100#elif SIZEOF_LONG_LONG == 8
101typedef unsigned long long uint64;
102typedef signed long long sint64;
103#else
104#error do not know how to get a 64 bit value on this system.
105#error correct and send mail to crossfire-devel on how to do this
106#endif
107
108#endif
109
110#include <vector>
111 51
112#include "keyword.h" 52#include "keyword.h"
113#include "traits.h" 53#include "traits.h"
114#include "dynbuf.h" 54#include "dynbuf.h"
55#include "util.h"
115#include "shstr.h" 56#include "shstr.h"
116#include "util.h"
117 57
118/* This blob, in this order, is needed to actually define maps */ 58/* This blob, in this order, is needed to actually define maps */
119#include "face.h" 59#include "face.h"
120/* Include the basic defines from spells.h */ 60
61#include "spells.h"
62
121#include "attack.h" /* needs to be before material.h */ 63#include "attack.h" /* needs to be before material.h */
122#include "material.h" 64#include "material.h"
123#include "living.h" 65#include "living.h"
124#include "object.h" 66#include "object.h"
125#include "map.h" 67#include "map.h"
126#include "tod.h" 68#include "tod.h"
127 69
128#include "skills.h" 70#include "skills.h"
129 71
130/* Pull in the socket structure - used in the player structure */ 72/* Pull in the socket structure - used in the player structure */
131#include "newserver.h" 73#include "network.h"
74#include "client.h"
132 75
133/* Pull in the player structure */ 76/* Pull in the player structure */
134#include "player.h" 77#include "player.h"
135 78
136/* pull in treasure structure */ 79/* pull in treasure structure */
142#include "book.h" 85#include "book.h"
143/* 86/*
144 * So far only used when dealing with artifacts. 87 * So far only used when dealing with artifacts.
145 * (now used by alchemy and other code too. Nov 95 b.t). 88 * (now used by alchemy and other code too. Nov 95 b.t).
146 */ 89 */
147typedef struct linked_char { 90struct linked_char
91{
148 shstr name; 92 shstr name;
149 struct linked_char *next; 93 struct linked_char *next;
150} linked_char; 94};
151
152 95
153/* Pull in artifacts */ 96/* Pull in artifacts */
154#include "artifact.h" 97#include "artifact.h"
155 98
156/* Now for gods */ 99/* Now for gods */
159/* Now for races */ 102/* Now for races */
160#include "race.h" 103#include "race.h"
161 104
162/* Now for recipe/alchemy */ 105/* Now for recipe/alchemy */
163#include "recipe.h" 106#include "recipe.h"
164
165/* Now for spells */
166#include "spells.h"
167 107
168#include "funcpoint.h" 108#include "funcpoint.h"
169 109
170/***************************************************************************** 110/*****************************************************************************
171 * GLOBAL VARIABLES: * 111 * GLOBAL VARIABLES: *
175 115
176/* 116/*
177 * These are the beginnings of linked lists: 117 * These are the beginnings of linked lists:
178 */ 118 */
179EXTERN player *first_player; 119EXTERN player *first_player;
180EXTERN mapstruct *first_map;
181EXTERN region *first_region; 120EXTERN region *first_region;
182EXTERN treasurelist *first_treasurelist; 121EXTERN treasurelist *first_treasurelist;
183EXTERN artifactlist *first_artifactlist; 122EXTERN artifactlist *first_artifactlist;
184EXTERN archetype *first_archetype; 123EXTERN archetype *first_archetype;
185EXTERN objectlink *first_friendly_object; /* Objects monsters will go after */ 124EXTERN objectlink *first_friendly_object; /* Objects monsters will go after */
186EXTERN godlink *first_god; 125EXTERN godlink *first_god;
187EXTERN racelink *first_race; 126EXTERN racelink *first_race;
188 127
189/* 128/*
190 * The editor uses these (will get them out of here later):
191 */
192
193EXTERN long editor; /* if true, edit maps instead of playing (almost obsolete) */
194
195/*
196 * Variables set by different flags (see init.c): 129 * Variables set by different flags (see init.c):
197 */ 130 */
198 131
199EXTERN long warn_archetypes; /* If true, write warnings when failing */ 132EXTERN bool warn_archetypes; /* If true, write warnings when failing */
200 /* to find archetypes when loading from file */ 133 /* to find archetypes when loading from file */
201EXTERN long init_done; /* Ignores signals until init_done is true */ 134EXTERN bool init_done; /* Ignores signals until init_done is true */
202EXTERN long trying_emergency_save; /* True when emergency_save() is reached */ 135EXTERN bool in_cleanup; /* True when cleanup() is reached */
203EXTERN long nroferrors; /* If it exceeds MAX_ERRORS, call fatal() */
204 136
205extern long pticks; /* used by various function to determine */ 137extern long pticks; /* used by various function to determine */
206 /* how often to save the character */ 138 /* how often to save the character */
207/* 139/*
208 * Misc global variables: 140 * Misc global variables:
213EXTERN long nrofartifacts; /* Only used in malloc_info() */ 145EXTERN long nrofartifacts; /* Only used in malloc_info() */
214EXTERN long nrofallowedstr; /* Only used in malloc_info() */ 146EXTERN long nrofallowedstr; /* Only used in malloc_info() */
215 147
216EXTERN archetype *empty_archetype; /* Nice to have fast access to it */ 148EXTERN archetype *empty_archetype; /* Nice to have fast access to it */
217EXTERN archetype *map_archeytpe; 149EXTERN archetype *map_archeytpe;
218EXTERN char first_map_path[MAX_BUF]; /* The start-level */ 150EXTERN shstr first_map_path; /* The start-level */
219EXTERN char first_map_ext_path[MAX_BUF]; /* Path used for per-race start maps */ 151EXTERN shstr first_map_ext_path; /* Path used for per-race start maps */
220 152
221EXTERN char errmsg[HUGE_BUF]; 153EXTERN char errmsg[HUGE_BUF];
222EXTERN long ob_count; 154EXTERN long ob_count;
223/* 155/*
224 * Used in treasure.c 156 * Used in treasure.c
225 */ 157 */
226EXTERN archetype *ring_arch,*amulet_arch,*staff_arch,*crown_arch; 158EXTERN archetype *ring_arch,*amulet_arch,*staff_arch,*crown_arch;
227extern shstr undead_name; /* Used in hit_player() in main.c */
228 159
229extern std::vector<Animations> animations; 160EXTERN std::vector<Animations> animations;
230EXTERN int num_animations,animations_allocated, bmaps_checksum; 161EXTERN int num_animations,animations_allocated, bmaps_checksum;
231 162
232/* Rotate right from bsd sum. This is used in various places for checksumming */ 163/* Rotate right from bsd sum. This is used in various places for checksumming */
233#define ROTATE_RIGHT(c) if ((c) & 01) (c) = ((c) >>1) + 0x80000000; else (c) >>= 1; 164#define ROTATE_RIGHT(c) if ((c) & 01) (c) = ((c) >>1) + 0x80000000; else (c) >>= 1;
234 165
235
236#define SET_ANIMATION(ob,newanim) ob->face=&new_faces[animations[ob->animation_id].faces[newanim]] 166#define SET_ANIMATION(ob,newanim) ob->face = new_faces + animations [ob->animation_id].faces [newanim]
237#define GET_ANIMATION(ob,anim) (animations[ob->animation_id].faces[anim]) 167#define GET_ANIMATION(ob,anim) animations [ob->animation_id].faces [anim]
238#define GET_ANIM_ID(ob) (ob->animation_id) 168#define GET_ANIM_ID(ob) (ob->animation_id)
239/* NUM_ANIMATIONS returns the number of animations allocated. The last 169/* NUM_ANIMATIONS returns the number of animations allocated. The last
240 * usuable animation will be NUM_ANIMATIONS-1 (for example, if an object 170 * usuable animation will be NUM_ANIMATIONS-1 (for example, if an object
241 * has 8 animations, NUM_ANIMATIONS will return 8, but the values will 171 * has 8 animations, NUM_ANIMATIONS will return 8, but the values will
242 * range from 0 through 7. 172 * range from 0 through 7.
251 181
252extern New_Face *blank_face, *empty_face; 182extern New_Face *blank_face, *empty_face;
253extern New_Face *dark_faces[]; 183extern New_Face *dark_faces[];
254extern New_Face *smooth_face; 184extern New_Face *smooth_face;
255 185
256
257extern long max_time; /* loop time */
258extern NewSocket *init_sockets; 186extern client *init_sockets;
259 187
188extern void emergency_save ();
189extern void cleanup (const char *cause, bool make_core = false);
260 190
261EXTERN char *font_graphic;
262
263#ifndef __CEXTRACT__
264#include "libproto.h" 191#include "libproto.h"
265#include "sockproto.h" 192#include "sockproto.h"
266#endif
267
268 193
269#define decrease_ob(xyz) decrease_ob_nr(xyz,1) 194#define decrease_ob(xyz) decrease_ob_nr(xyz,1)
270 195
271/* FREE_AND_CLEAR frees the pointer and then sets it to NULL. 196INTERFACE_CLASS (Settings)
272 * This is generally done as a safety, and having this macro
273 * makes the code a bit cleaner when doing so.
274 */
275#define FREE_AND_CLEAR(xyz) {free(xyz); xyz=NULL; }
276
277#ifdef CALLOC
278#undef CALLOC
279#endif
280
281#ifdef USE_CALLOC
282# define CALLOC(x,y) calloc(x,y)
283# define CFREE(x) free(x)
284#else
285# define CALLOC(x,y) malloc(x*y)
286# define CFREE(x) free(x)
287#endif
288
289#ifndef WIN32 /* ---win32 we define this stuff in win32.h */
290#if HAVE_DIRENT_H
291# include <dirent.h>
292# define NAMLEN(dirent) strlen((dirent)->d_name)
293#else
294# define dirent direct
295# define NAMLEN(dirent) (dirnet)->d_namlen
296# if HAVE_SYS_NDIR_H
297# include <sys/ndir.h>
298# endif
299# if HAVE_SYS_DIR_H
300# include <sys/dir.h>
301# endif
302# if HAVE_NDIR_H
303# include <ndir.h>
304# endif
305#endif
306#endif
307
308typedef struct Settings { 197struct Settings {
309 char *logfilename; /* logfile to use */ 198 char *ACC (RO, logfilename); /* logfile to use */
310 uint16 csport; /* port for new client/server */ 199 int ACC (RW, csport); /* port for new client/server */
311 LogLevel debug; /* Default debugging level */ 200 int ACC (RW, debug); /* Default debugging level */
312 uint8 dumpvalues; /* Set to dump various values/tables */ 201 uint8 dumpvalues; /* Set to dump various values/tables */
313 char *dumparg; /* additional argument for some dump functions */ 202 char *dumparg; /* additional argument for some dump functions */
314 uint8 daemonmode; /* If true, detach and become daemon */ 203 uint8 daemonmode; /* If true, detach and become daemon */
315 int argc; /* parameters that were passed to the program */ 204 int argc; /* parameters that were passed to the program */
316 char **argv; /* Only used by xio.c, so will go away at some time */ 205 char **argv; /* Only used by xio.c, so will go away at some time */
317 char *confdir; /* configuration files */ 206 char *ACC (RO, confdir); /* configuration files */
318 char *datadir; /* read only data files */ 207 char *ACC (RO, datadir); /* read only data files */
319 char *localdir; /* read/write data files */ 208 char *ACC (RO, localdir); /* read/write data files */
320 char *playerdir; /* Where the player files are */ 209 char *ACC (RO, playerdir); /* Where the player files are */
321 char *mapdir; /* Where the map files are */ 210 char *ACC (RO, mapdir); /* Where the map files are */
322 char *archetypes; /* name of the archetypes file - libdir is prepended */ 211 char *ACC (RO, archetypes); /* name of the archetypes file - libdir is prepended */
323 char *regions; /* name of the regions file - libdir is prepended */ 212 char *ACC (RO, regions); /* name of the regions file - libdir is prepended */
324 char *treasures; /* location of the treasures file. */ 213 char *ACC (RO, treasures); /* location of the treasures file. */
325 char *uniquedir; /* directory for the unique items */ 214 char *ACC (RO, uniquedir); /* directory for the unique items */
326 char *templatedir; /* directory for the template map */ 215 char *ACC (RO, templatedir); /* directory for the template map */
327 char *tmpdir; /* Directory to use for temporary files */ 216 char *ACC (RO, tmpdir); /* Directory to use for temporary files */
328 uint8 stat_loss_on_death; /* If true, chars lose a random stat when they die */
329 sint16 pk_luck_penalty; /* Amount by which player luck is reduced if they PK */ 217 sint16 ACC (RW, pk_luck_penalty); /* Amount by which player luck is reduced if they PK */
218 uint8 ACC (RW, stat_loss_on_death); /* If true, chars lose a random stat when they die */
330 uint8 permanent_exp_ratio; /* how much exp should be 'permenant' and unable to be lost*/ 219 uint8 ACC (RW, permanent_exp_ratio); /* how much exp should be 'permenant' and unable to be lost*/
331 uint8 death_penalty_ratio; /* how much exp should be lost at death */ 220 uint8 ACC (RW, death_penalty_ratio); /* how much exp should be lost at death */
332 uint8 death_penalty_level; /* how many levels worth of exp may be lost on one death */ 221 uint8 ACC (RW, death_penalty_level); /* how many levels worth of exp may be lost on one death */
333 uint8 balanced_stat_loss; /* If true, Death stat depletion based on level etc */ 222 uint8 ACC (RW, balanced_stat_loss); /* If true, Death stat depletion based on level etc */
334 uint8 not_permadeth; /* if true, death is non-permament */ 223 uint8 ACC (RW, not_permadeth); /* if true, death is non-permament */
335 uint8 simple_exp; /* If true, use the simple experience system */ 224 uint8 ACC (RW, simple_exp); /* If true, use the simple experience system */
336 int reset_loc_time; /* Number of seconds to put player back at home */ 225 int ACC (RW, reset_loc_time); /* Number of seconds to put player back at home */
337 uint8 set_title; /* players can set thier title */ 226 uint8 ACC (RW, set_title); /* players can set thier title */
338 uint8 resurrection; /* ressurection possible w/ permadeth on */ 227 uint8 ACC (RW, resurrection); /* ressurection possible w/ permadeth on */
339 uint8 search_items; /* search_items command */ 228 uint8 ACC (RW, search_items); /* search_items command */
340 uint8 spell_encumbrance; /* encumbrance effects spells */ 229 uint8 ACC (RW, spell_encumbrance); /* encumbrance effects spells */
341 uint8 spell_failure_effects; /* nasty backlash to spell failures */ 230 uint8 ACC (RW, spell_failure_effects); /* nasty backlash to spell failures */
342 uint16 set_friendly_fire; /* Percent of damage done by peaceful player vs player damage */ 231 uint16 ACC (RW, set_friendly_fire); /* Percent of damage done by peaceful player vs player damage */
343 uint8 casting_time; /* it takes awhile to cast a spell */ 232 uint8 ACC (RW, casting_time); /* it takes awhile to cast a spell */
344 uint8 real_wiz; /* use mud-like wizards */ 233 uint8 ACC (RW, real_wiz); /* use mud-like wizards */
345 uint8 recycle_tmp_maps; /* re-use tmp maps. */ 234 uint8 dummy_000;
346 uint8 explore_mode; /* explore mode allowed? */
347 uint8 spellpoint_level_depend; /* spell costs go up with level */ 235 uint8 ACC (RW, spellpoint_level_depend); /* spell costs go up with level */
348 char who_format[MAX_BUF]; /* The format that the who command should use */
349 char who_wiz_format[MAX_BUF]; /* The format that the who command should use when called by a dm*/
350 char motd[MAX_BUF]; /* name of the motd file */ 236 char ACC (RW, motd)[MAX_BUF]; /* name of the motd file */
351 char *rules; /* name of rules file*/ 237 char *ACC (RO, rules); /* name of rules file*/
352 char *news; /* name of news file*/ 238 char *ACC (RO, news); /* name of news file*/
353 char dm_mail[MAX_BUF]; /* DM's Email address */ 239 char ACC (RW, dm_mail)[MAX_BUF]; /* DM's Email address */
354 240
355 /* The meta_ is information for the metaserver. These are set in
356 * the lib/settings file.
357 */
358 uint8 meta_on:1; /* True if we should send updates */
359 char meta_server[MAX_BUF]; /* Hostname/ip addr of the metaserver */
360 char meta_host[MAX_BUF]; /* Hostname of this host */
361 uint16 meta_port; /* Port number to use for updates */
362 char meta_comment[MAX_BUF]; /* Comment we send to the metaserver */
363
364 uint32 worldmapstartx; /* starting x tile for the worldmap */ 241 uint32 ACC (RW, worldmapstartx); /* starting x tile for the worldmap */
365 uint32 worldmapstarty; /* starting y tile for the worldmap */ 242 uint32 ACC (RW, worldmapstarty); /* starting y tile for the worldmap */
366 uint32 worldmaptilesx; /* number of tiles wide the worldmap is */ 243 uint32 ACC (RW, worldmaptilesx); /* number of tiles wide the worldmap is */
367 uint32 worldmaptilesy; /* number of tiles high the worldmap is */ 244 uint32 ACC (RW, worldmaptilesy); /* number of tiles high the worldmap is */
368 uint32 worldmaptilesizex; /* number of squares wide in a wm tile */ 245 uint32 ACC (RW, worldmaptilesizex); /* number of squares wide in a wm tile */
369 uint32 worldmaptilesizey; /* number of squares high in a wm tile */ 246 uint32 ACC (RW, worldmaptilesizey); /* number of squares high in a wm tile */
370 uint16 dynamiclevel; /* how dynamic is the world? */ 247 uint16 ACC (RW, dynamiclevel); /* how dynamic is the world? */
371 uint8 fastclock; /* if true, clock goes warp 9 */ 248 uint8 ACC (RW, fastclock); /* if true, clock goes warp 9 */
372 249
373 char *emergency_mapname; /* map to return players to in emergency */
374 uint16 emergency_x, emergency_y; /* coordinates to use on that map */
375
376 sint16 max_level; /* This is read out of exp_table */ 250 int ACC (RW, max_level); /* This is read out of exp_table */
377 float item_power_factor; /* See note in setings file */ 251 float ACC (RW, item_power_factor); /* See note in setings file */
378 252
379 int armor_max_enchant; /* Maximum number of times an armor can be enchanted */ 253 int ACC (RW, armor_max_enchant); /* Maximum number of times an armor can be enchanted */
380 int armor_weight_reduction; /* Weight reduction per enchantment */ 254 int ACC (RW, armor_weight_reduction); /* Weight reduction per enchantment */
255 int ACC (RW, armor_speed_improvement); /* Speed improvement */
381 uint8 armor_weight_linear; /* If 1, weight reduction is linear, else exponantiel */ 256 uint8 ACC (RW, armor_weight_linear); /* If 1, weight reduction is linear, else exponantiel */
382 int armor_speed_improvement; /* Speed improvement */
383 uint8 armor_speed_linear; /* If 1, speed improvement is linear, else exponantiel */ 257 uint8 ACC (RW, armor_speed_linear); /* If 1, speed improvement is linear, else exponantiel */
384 uint8 no_player_stealing; /* If 1, can not steal from other players */ 258 uint8 ACC (RW, no_player_stealing); /* If 1, can not steal from other players */
385 uint8 create_home_portals; /* If 1, can create portals in personal maps */ 259 uint8 ACC (RW, create_home_portals); /* If 1, can create portals in personal maps */
386} Settings; 260};
387 261
388extern Settings settings; 262extern Settings settings;
389
390/* 0.94.1 - change to GETTIMEOFDAY macro - SNI systems only one one option.
391 * rather than have complex #ifdefs throughout the file, lets just figure
392 * it out once, here at the top.
393 * Have no idea if that is the right symbol to check on for NetBSD,
394 * but NetBSD does use 2 params.
395 * Move this to global.h from time.c since its also used in arch.c
396 */
397
398#ifdef GETTIMEOFDAY_TWO_ARGS
399#define GETTIMEOFDAY(last_time) gettimeofday(last_time, (struct timezone *) NULL);
400#else
401#define GETTIMEOFDAY(last_time) gettimeofday(last_time);
402#endif
403 263
404#include "plugin.h" 264#include "plugin.h"
405#include "cfperl.h" 265#include "cfperl.h"
406 266
407//TODO: various TEMPORARY link guards to avoid doing the wrong thing
408void free (archetype *);
409void free (recipe *);
410void free (linked_char *);
411void free (godlink *);
412void free (mapstruct *);
413void free (key_value *);
414void free (treasure *);
415void free (materialtype_t *);
416void free (player *);
417
418#endif /* GLOBAL_H */ 267#endif /* GLOBAL_H */
268

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines