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.16 by root, Thu Nov 8 19:43:25 2007 UTC

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

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines