ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/random_maps/standalone.C
Revision: 1.17
Committed: Fri Apr 11 21:09:53 2008 UTC (16 years, 1 month ago) by root
Content type: text/plain
Branch: MAIN
CVS Tags: rel-2_6, rel-2_7, rel-2_5, rel-2_71, rel-2_54, rel-2_55, rel-2_52, rel-2_53, rel-2_56, rel-2_61
Changes since 1.16: +3 -3 lines
Log Message:
*** empty log message ***

File Contents

# Content
1 /*
2 * This file is part of Deliantra, the Roguelike Realtime MMORPG.
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>
22 */
23
24 #define LO_NEWFILE 2
25
26 /* the main routine for making a standalone version. */
27
28 #include <time.h>
29 #include <stdio.h>
30 #include <global.h>
31 #include <maze_gen.h>
32 #include <room_gen.h>
33 #include <random_map.h>
34 #include <rproto.h>
35
36 int
37 main (int argc, char *argv[])
38 {
39 char InFileName[1024], OutFileName[1024];
40 maptile *newMap;
41 random_map_params rp;
42 FILE *fp;
43
44 if (argc < 3)
45 {
46 printf ("\nUsage: %s inputfile outputfile\n", argv[0]);
47 exit (0);
48 }
49
50 strcpy (InFileName, argv[1]);
51 strcpy (OutFileName, argv[2]);
52
53 init_globals ();
54 init_library ();
55 init_archetypes ();
56 init_artifacts ();
57 init_formulae ();
58 init_readable ();
59
60 init_gods ();
61 memset (&rp, 0, sizeof (random_map_params));
62 rp.Xsize = -1;
63 rp.Ysize = -1;
64 if ((fp = fopen (InFileName, "r")) == NULL)
65 {
66 fprintf (stderr, "\nError: can not open %s\n", InFileName);
67 exit (1);
68 }
69 load_parameters (fp, LO_NEWFILE, &rp);
70 fclose (fp);
71 newMap = generate_random_map (OutFileName, &rp);
72 new_save_map (newMap, 1);
73 exit (0);
74 }
75
76 void
77 set_map_timeout (maptile *)
78 {
79 } /* doesn't need to do anything */
80
81 #include <global.h>
82
83 /* some plagarized code from apply.c--I needed just these two functions
84 without all the rest of the junk, so.... */
85 int
86 auto_apply (object *op)
87 {
88 object *tmp = NULL;
89 int i;
90
91 switch (op->type)
92 {
93 case SHOP_FLOOR:
94 if (!op->has_random_items ())
95 return 0;
96 do
97 {
98 i = 10; /* let's give it 10 tries */
99 while ((tmp = generate_treasure (op->randomitems, op->stats.exp ? op->stats.exp : 5)) == NULL && --i);
100 if (tmp == NULL)
101 return 0;
102 if (QUERY_FLAG (tmp, FLAG_CURSED) || QUERY_FLAG (tmp, FLAG_DAMNED))
103 {
104 tmp->destroy ();
105 tmp = NULL;
106 }
107 }
108 while (!tmp);
109
110 tmp->x = op->x, tmp->y = op->y;
111 SET_FLAG (tmp, FLAG_UNPAID);
112 insert_ob_in_map (tmp, op->map, NULL, 0);
113 CLEAR_FLAG (op, FLAG_AUTO_APPLY);
114 identify (tmp);
115 break;
116
117 case TREASURE:
118 if (op->has_random_items ())
119 while ((op->stats.hp--) > 0)
120 create_treasure (op->randomitems, op, GT_ENVIRONMENT,
121 op->stats.exp ? op->stats.exp : op->map == NULL ? 14 : op->map->difficulty, 0);
122 op->remove ();
123 op->destroy ();
124 break;
125 }
126
127 return tmp ? 1 : 0;
128 }
129
130 /* fix_auto_apply goes through the entire map (only the first time
131 * when an original map is loaded) and performs special actions for
132 * certain objects (most initialization of chests and creation of
133 * treasures and stuff). Calls auto_apply if appropriate.
134 */
135 void
136 fix_auto_apply (maptile *m)
137 {
138 object *tmp, *above = NULL;
139 int x, y;
140
141 for (x = 0; x < m->width; x++)
142 for (y = 0; y < m->height; y++)
143 for (tmp = GET_MAP_OB (m, x, y); tmp != NULL; tmp = above)
144 {
145 above = tmp->above;
146
147 if (QUERY_FLAG (tmp, FLAG_AUTO_APPLY))
148 auto_apply (tmp);
149 else if (tmp->type == TREASURE)
150 {
151 if (tmp->has_random_items ())
152 while ((tmp->stats.hp--) > 0)
153 create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0);
154 }
155 if (tmp && tmp->arch && tmp->type != PLAYER && tmp->type != TREASURE && tmp->randomitems)
156 {
157 if (tmp->type == CONTAINER)
158 {
159 if (tmp->has_random_items ())
160 while ((tmp->stats.hp--) > 0)
161 create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0);
162 }
163 else if (tmp->has_random_items ())
164 create_treasure (tmp->randomitems, tmp, GT_APPLY, m->difficulty, 0);
165 }
166 }
167 for (x = 0; x < m->width; x++)
168 for (y = 0; y < m->height; y++)
169 for (tmp = GET_MAP_OB (m, x, y); tmp != NULL; tmp = tmp->above)
170 if (tmp->above && (tmp->type == TRIGGER_BUTTON || tmp->type == TRIGGER_PEDESTAL))
171 check_trigger (tmp, tmp->above);
172 }
173
174 /**
175 * Those are dummy functions defined to resolve all symboles.
176 * Added as part of glue cleaning.
177 * Ryo 2005-07-15
178 **/
179
180 void
181 new_draw_info (int a, int b, const object *ob, const char *txt)
182 {
183 fprintf (logfile, "%s\n", txt);
184 }
185
186 void
187 new_info_map (int color, maptile *map, const char *str)
188 {
189 fprintf (logfile, "new_info_map: %s\n", str);
190 }
191
192 void
193 move_teleporter (object *ob)
194 {
195 }
196
197 void
198 move_firewall (object *ob)
199 {
200 }
201
202 void
203 move_duplicator (object *ob)
204 {
205 }
206
207 void
208 move_marker (object *ob)
209 {
210 }
211
212 void
213 move_creator (object *ob)
214 {
215 }
216
217 void
218 emergency_save (int x)
219 {
220 }
221
222 void
223 clean_tmp_files (void)
224 {
225 }
226
227 void
228 esrv_send_item (object *ob, object *obx)
229 {
230 }
231
232 void
233 dragon_ability_gain (object *ob, int x, int y)
234 {
235 }
236
237 void
238 weather_effect (const char *c)
239 {
240 }
241
242 void
243 set_darkness_map (maptile *m)
244 {
245 }
246
247 void
248 move_apply (object *ob, object *obt, object *obx)
249 {
250 }
251
252 object *
253 find_skill_by_number (object *ob, int x)
254 {
255 return NULL;
256 }
257
258 void
259 esrv_del_item (player *pl, int tag)
260 {
261 }
262
263 void
264 esrv_update_spells (player *pl)
265 {
266 }
267
268 void
269 monster_check_apply (object *ob, object *obt)
270 {
271 }
272
273 void
274 trap_adjust (object *ob, int x)
275 {
276 }
277