ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/random_maps/standalone.C
(Generate patch)

Comparing deliantra/server/random_maps/standalone.C (file contents):
Revision 1.3 by root, Sun Sep 10 16:06:37 2006 UTC vs.
Revision 1.18 by root, Mon Sep 29 09:04:51 2008 UTC

1
2/* 1/*
3 * static char *rcsid_standalone_c = 2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
4 * "$Id: standalone.C,v 1.3 2006/09/10 16:06:37 root Exp $"; 3 *
4 * Copyright (©) 2005,2006,2007,2008 Marc Alexander Lehmann / Robin Redeker / the Deliantra team
5 * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team
6 * Copyright (©) 1992,2007 Frank Tore Johansen
7 *
8 * Deliantra 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 <support@deliantra.net>
5 */ 22 */
6
7/*
8 CrossFire, A Multiplayer game for X-windows
9
10 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
11 Copyright (C) 1992 Frank Tore Johansen
12
13 This program is free software; you can redistribute it and/or modify
14 it under the terms of the GNU General Public License as published by
15 the Free Software Foundation; either version 2 of the License, or
16 (at your option) any later version.
17
18 This program is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with this program; if not, write to the Free Software
25 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26
27 The authors can be reached via e-mail at crossfire-devel@real-time.com
28*/
29 23
30#define LO_NEWFILE 2 24#define LO_NEWFILE 2
31 25
32/* the main routine for making a standalone version. */ 26/* the main routine for making a standalone version. */
33 27
41 35
42int 36int
43main (int argc, char *argv[]) 37main (int argc, char *argv[])
44{ 38{
45 char InFileName[1024], OutFileName[1024]; 39 char InFileName[1024], OutFileName[1024];
46 mapstruct *newMap; 40 maptile *newMap;
47 RMParms rp; 41 random_map_params rp;
48 FILE *fp; 42 FILE *fp;
49 43
50 if (argc < 3) 44 if (argc < 3)
51 { 45 {
52 printf ("\nUsage: %s inputfile outputfile\n", argv[0]); 46 printf ("\nUsage: %s inputfile outputfile\n", argv[0]);
53 exit (0); 47 exit (0);
54 } 48 }
49
55 strcpy (InFileName, argv[1]); 50 strcpy (InFileName, argv[1]);
56 strcpy (OutFileName, argv[2]); 51 strcpy (OutFileName, argv[2]);
57 52
58 init_globals (); 53 init_globals ();
59 init_library (); 54 init_library ();
61 init_artifacts (); 56 init_artifacts ();
62 init_formulae (); 57 init_formulae ();
63 init_readable (); 58 init_readable ();
64 59
65 init_gods (); 60 init_gods ();
66 memset (&rp, 0, sizeof (RMParms)); 61 memset (&rp, 0, sizeof (random_map_params));
67 rp.Xsize = -1; 62 rp.Xsize = -1;
68 rp.Ysize = -1; 63 rp.Ysize = -1;
69 if ((fp = fopen (InFileName, "r")) == NULL) 64 if ((fp = fopen (InFileName, "r")) == NULL)
70 { 65 {
71 fprintf (stderr, "\nError: can not open %s\n", InFileName); 66 fprintf (stderr, "\nError: can not open %s\n", InFileName);
77 new_save_map (newMap, 1); 72 new_save_map (newMap, 1);
78 exit (0); 73 exit (0);
79} 74}
80 75
81void 76void
82set_map_timeout (mapstruct *) 77set_map_timeout (maptile *)
83{ 78{
84} /* doesn't need to do anything */ 79} /* doesn't need to do anything */
85 80
86#include <global.h> 81#include <global.h>
87
88 82
89/* some plagarized code from apply.c--I needed just these two functions 83/* some plagarized code from apply.c--I needed just these two functions
90without all the rest of the junk, so.... */ 84without all the rest of the junk, so.... */
91int 85int
92auto_apply (object *op) 86auto_apply (object *op)
94 object *tmp = NULL; 88 object *tmp = NULL;
95 int i; 89 int i;
96 90
97 switch (op->type) 91 switch (op->type)
98 { 92 {
99 case SHOP_FLOOR: 93 case SHOP_FLOOR:
100 if (!HAS_RANDOM_ITEMS (op)) 94 if (!op->has_random_items ())
101 return 0; 95 return 0;
102 do 96 do
103 { 97 {
104 i = 10; /* let's give it 10 tries */ 98 i = 10; /* let's give it 10 tries */
99
105 while ((tmp = generate_treasure (op->randomitems, op->stats.exp ? op->stats.exp : 5)) == NULL && --i); 100 while (!(tmp = generate_treasure (op->randomitems, op->stats.exp ? op->stats.exp : 5))
101 && --i)
102 ;
103
106 if (tmp == NULL) 104 if (tmp == NULL)
107 return 0; 105 return 0;
106
108 if (QUERY_FLAG (tmp, FLAG_CURSED) || QUERY_FLAG (tmp, FLAG_DAMNED)) 107 if (QUERY_FLAG (tmp, FLAG_CURSED) || QUERY_FLAG (tmp, FLAG_DAMNED))
109 { 108 {
110 free_object (tmp); 109 tmp->destroy (true);
111 tmp = NULL; 110 tmp = NULL;
112 } 111 }
113 } 112 }
114 while (!tmp); 113 while (!tmp);
115 114
116 tmp->x = op->x, tmp->y = op->y; 115 tmp->x = op->x, tmp->y = op->y;
117 SET_FLAG (tmp, FLAG_UNPAID); 116 SET_FLAG (tmp, FLAG_UNPAID);
118 insert_ob_in_map (tmp, op->map, NULL, 0); 117 insert_ob_in_map (tmp, op->map, NULL, 0);
119 CLEAR_FLAG (op, FLAG_AUTO_APPLY); 118 CLEAR_FLAG (op, FLAG_AUTO_APPLY);
120 identify (tmp); 119 identify (tmp);
121 break; 120 break;
122 121
123 case TREASURE: 122 case TREASURE:
124 if (HAS_RANDOM_ITEMS (op)) 123 if (op->has_random_items ())
125 while ((op->stats.hp--) > 0) 124 while ((op->stats.hp--) > 0)
126 create_treasure (op->randomitems, op, GT_ENVIRONMENT, 125 create_treasure (op->randomitems, op, GT_ENVIRONMENT,
127 op->stats.exp ? op->stats.exp : op->map == NULL ? 14 : op->map->difficulty, 0); 126 op->stats.exp ? op->stats.exp : op->map == NULL ? 14 : op->map->difficulty, 0);
128 remove_ob (op); 127
129 free_object (op); 128 op->destroy (true);
130 break; 129 break;
131 } 130 }
132 131
133 return tmp ? 1 : 0; 132 return tmp ? 1 : 0;
134} 133}
135 134
136/* fix_auto_apply goes through the entire map (only the first time 135/* fix_auto_apply goes through the entire map (only the first time
137 * when an original map is loaded) and performs special actions for 136 * when an original map is loaded) and performs special actions for
138 * certain objects (most initialization of chests and creation of 137 * certain objects (most initialization of chests and creation of
139 * treasures and stuff). Calls auto_apply if appropriate. 138 * treasures and stuff). Calls auto_apply if appropriate.
140 */ 139 */
141
142void 140void
143fix_auto_apply (mapstruct *m) 141fix_auto_apply (maptile *m)
144{ 142{
145 object *tmp, *above = NULL; 143 object *tmp, *above = NULL;
146 int x, y; 144 int x, y;
147 145
148 for (x = 0; x < MAP_WIDTH (m); x++) 146 for (x = 0; x < m->width; x++)
149 for (y = 0; y < MAP_HEIGHT (m); y++) 147 for (y = 0; y < m->height; y++)
150 for (tmp = get_map_ob (m, x, y); tmp != NULL; tmp = above) 148 for (tmp = GET_MAP_OB (m, x, y); tmp != NULL; tmp = above)
151 { 149 {
152 above = tmp->above; 150 above = tmp->above;
153 151
154 if (QUERY_FLAG (tmp, FLAG_AUTO_APPLY)) 152 if (QUERY_FLAG (tmp, FLAG_AUTO_APPLY))
155 auto_apply (tmp); 153 auto_apply (tmp);
156 else if (tmp->type == TREASURE) 154 else if (tmp->type == TREASURE)
157 { 155 {
158 if (HAS_RANDOM_ITEMS (tmp)) 156 if (tmp->has_random_items ())
159 while ((tmp->stats.hp--) > 0) 157 while ((tmp->stats.hp--) > 0)
160 create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0); 158 create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0);
161 } 159 }
162 if (tmp && tmp->arch && tmp->type != PLAYER && tmp->type != TREASURE && tmp->randomitems) 160 if (tmp && tmp->arch && tmp->type != PLAYER && tmp->type != TREASURE && tmp->randomitems)
163 { 161 {
164 if (tmp->type == CONTAINER) 162 if (tmp->type == CONTAINER)
165 { 163 {
166 if (HAS_RANDOM_ITEMS (tmp)) 164 if (tmp->has_random_items ())
167 while ((tmp->stats.hp--) > 0) 165 while ((tmp->stats.hp--) > 0)
168 create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0); 166 create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0);
169 } 167 }
170 else if (HAS_RANDOM_ITEMS (tmp)) 168 else if (tmp->has_random_items ())
171 create_treasure (tmp->randomitems, tmp, GT_APPLY, m->difficulty, 0); 169 create_treasure (tmp->randomitems, tmp, GT_APPLY, m->difficulty, 0);
172 } 170 }
173 } 171 }
174 for (x = 0; x < MAP_WIDTH (m); x++) 172 for (x = 0; x < m->width; x++)
175 for (y = 0; y < MAP_HEIGHT (m); y++) 173 for (y = 0; y < m->height; y++)
176 for (tmp = get_map_ob (m, x, y); tmp != NULL; tmp = tmp->above) 174 for (tmp = GET_MAP_OB (m, x, y); tmp != NULL; tmp = tmp->above)
177 if (tmp->above && (tmp->type == TRIGGER_BUTTON || tmp->type == TRIGGER_PEDESTAL)) 175 if (tmp->above && (tmp->type == TRIGGER_BUTTON || tmp->type == TRIGGER_PEDESTAL))
178 check_trigger (tmp, tmp->above); 176 check_trigger (tmp, tmp->above);
179} 177}
180 178
181/** 179/**
189{ 187{
190 fprintf (logfile, "%s\n", txt); 188 fprintf (logfile, "%s\n", txt);
191} 189}
192 190
193void 191void
194new_info_map (int color, mapstruct *map, const char *str) 192new_info_map (int color, maptile *map, const char *str)
195{ 193{
196 fprintf (logfile, "new_info_map: %s\n", str); 194 fprintf (logfile, "new_info_map: %s\n", str);
197} 195}
198 196
199void 197void
245weather_effect (const char *c) 243weather_effect (const char *c)
246{ 244{
247} 245}
248 246
249void 247void
250set_darkness_map (mapstruct *m) 248set_darkness_map (maptile *m)
251{ 249{
252} 250}
253 251
254void 252void
255move_apply (object *ob, object *obt, object *obx) 253move_apply (object *ob, object *obt, object *obx)
279 277
280void 278void
281trap_adjust (object *ob, int x) 279trap_adjust (object *ob, int x)
282{ 280{
283} 281}
282

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines