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.2 by root, Tue Aug 29 08:01:36 2006 UTC vs.
Revision 1.14 by pippijn, Mon Jan 15 21:06:19 2007 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines