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.17 by root, Fri Apr 11 21:09:53 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 */
105 while ((tmp = generate_treasure (op->randomitems, op->stats.exp ? op->stats.exp : 5)) == NULL && --i); 99 while ((tmp = generate_treasure (op->randomitems, op->stats.exp ? op->stats.exp : 5)) == NULL && --i);
106 if (tmp == NULL) 100 if (tmp == NULL)
107 return 0; 101 return 0;
108 if (QUERY_FLAG (tmp, FLAG_CURSED) || QUERY_FLAG (tmp, FLAG_DAMNED)) 102 if (QUERY_FLAG (tmp, FLAG_CURSED) || QUERY_FLAG (tmp, FLAG_DAMNED))
109 { 103 {
110 free_object (tmp); 104 tmp->destroy ();
111 tmp = NULL; 105 tmp = NULL;
112 } 106 }
113 } 107 }
114 while (!tmp); 108 while (!tmp);
115 109
116 tmp->x = op->x, tmp->y = op->y; 110 tmp->x = op->x, tmp->y = op->y;
117 SET_FLAG (tmp, FLAG_UNPAID); 111 SET_FLAG (tmp, FLAG_UNPAID);
118 insert_ob_in_map (tmp, op->map, NULL, 0); 112 insert_ob_in_map (tmp, op->map, NULL, 0);
119 CLEAR_FLAG (op, FLAG_AUTO_APPLY); 113 CLEAR_FLAG (op, FLAG_AUTO_APPLY);
120 identify (tmp); 114 identify (tmp);
121 break; 115 break;
122 116
123 case TREASURE: 117 case TREASURE:
124 if (HAS_RANDOM_ITEMS (op)) 118 if (op->has_random_items ())
125 while ((op->stats.hp--) > 0) 119 while ((op->stats.hp--) > 0)
126 create_treasure (op->randomitems, op, GT_ENVIRONMENT, 120 create_treasure (op->randomitems, op, GT_ENVIRONMENT,
127 op->stats.exp ? op->stats.exp : op->map == NULL ? 14 : op->map->difficulty, 0); 121 op->stats.exp ? op->stats.exp : op->map == NULL ? 14 : op->map->difficulty, 0);
128 remove_ob (op); 122 op->remove ();
129 free_object (op); 123 op->destroy ();
130 break; 124 break;
131 } 125 }
132 126
133 return tmp ? 1 : 0; 127 return tmp ? 1 : 0;
134} 128}
135 129
136/* 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
137 * when an original map is loaded) and performs special actions for 131 * when an original map is loaded) and performs special actions for
138 * certain objects (most initialization of chests and creation of 132 * certain objects (most initialization of chests and creation of
139 * treasures and stuff). Calls auto_apply if appropriate. 133 * treasures and stuff). Calls auto_apply if appropriate.
140 */ 134 */
141
142void 135void
143fix_auto_apply (mapstruct *m) 136fix_auto_apply (maptile *m)
144{ 137{
145 object *tmp, *above = NULL; 138 object *tmp, *above = NULL;
146 int x, y; 139 int x, y;
147 140
148 for (x = 0; x < MAP_WIDTH (m); x++) 141 for (x = 0; x < m->width; x++)
149 for (y = 0; y < MAP_HEIGHT (m); y++) 142 for (y = 0; y < m->height; y++)
150 for (tmp = get_map_ob (m, x, y); tmp != NULL; tmp = above) 143 for (tmp = GET_MAP_OB (m, x, y); tmp != NULL; tmp = above)
151 { 144 {
152 above = tmp->above; 145 above = tmp->above;
153 146
154 if (QUERY_FLAG (tmp, FLAG_AUTO_APPLY)) 147 if (QUERY_FLAG (tmp, FLAG_AUTO_APPLY))
155 auto_apply (tmp); 148 auto_apply (tmp);
156 else if (tmp->type == TREASURE) 149 else if (tmp->type == TREASURE)
157 { 150 {
158 if (HAS_RANDOM_ITEMS (tmp)) 151 if (tmp->has_random_items ())
159 while ((tmp->stats.hp--) > 0) 152 while ((tmp->stats.hp--) > 0)
160 create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0); 153 create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0);
161 } 154 }
162 if (tmp && tmp->arch && tmp->type != PLAYER && tmp->type != TREASURE && tmp->randomitems) 155 if (tmp && tmp->arch && tmp->type != PLAYER && tmp->type != TREASURE && tmp->randomitems)
163 { 156 {
164 if (tmp->type == CONTAINER) 157 if (tmp->type == CONTAINER)
165 { 158 {
166 if (HAS_RANDOM_ITEMS (tmp)) 159 if (tmp->has_random_items ())
167 while ((tmp->stats.hp--) > 0) 160 while ((tmp->stats.hp--) > 0)
168 create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0); 161 create_treasure (tmp->randomitems, tmp, 0, m->difficulty, 0);
169 } 162 }
170 else if (HAS_RANDOM_ITEMS (tmp)) 163 else if (tmp->has_random_items ())
171 create_treasure (tmp->randomitems, tmp, GT_APPLY, m->difficulty, 0); 164 create_treasure (tmp->randomitems, tmp, GT_APPLY, m->difficulty, 0);
172 } 165 }
173 } 166 }
174 for (x = 0; x < MAP_WIDTH (m); x++) 167 for (x = 0; x < m->width; x++)
175 for (y = 0; y < MAP_HEIGHT (m); y++) 168 for (y = 0; y < m->height; y++)
176 for (tmp = get_map_ob (m, x, y); tmp != NULL; tmp = tmp->above) 169 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)) 170 if (tmp->above && (tmp->type == TRIGGER_BUTTON || tmp->type == TRIGGER_PEDESTAL))
178 check_trigger (tmp, tmp->above); 171 check_trigger (tmp, tmp->above);
179} 172}
180 173
181/** 174/**
189{ 182{
190 fprintf (logfile, "%s\n", txt); 183 fprintf (logfile, "%s\n", txt);
191} 184}
192 185
193void 186void
194new_info_map (int color, mapstruct *map, const char *str) 187new_info_map (int color, maptile *map, const char *str)
195{ 188{
196 fprintf (logfile, "new_info_map: %s\n", str); 189 fprintf (logfile, "new_info_map: %s\n", str);
197} 190}
198 191
199void 192void
245weather_effect (const char *c) 238weather_effect (const char *c)
246{ 239{
247} 240}
248 241
249void 242void
250set_darkness_map (mapstruct *m) 243set_darkness_map (maptile *m)
251{ 244{
252} 245}
253 246
254void 247void
255move_apply (object *ob, object *obt, object *obx) 248move_apply (object *ob, object *obt, object *obx)
279 272
280void 273void
281trap_adjust (object *ob, int x) 274trap_adjust (object *ob, int x)
282{ 275{
283} 276}
277

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines