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

Comparing deliantra/server/server/login.C (file contents):
Revision 1.36 by root, Sat Dec 30 10:16:11 2006 UTC vs.
Revision 1.38 by root, Sun Dec 31 21:26:19 2006 UTC

125 (unapply == unapply_never ? "unapply_never" : "unapply_always")); 125 (unapply == unapply_never ? "unapply_never" : "unapply_always"));
126 126
127 if (ob->map) 127 if (ob->map)
128 fprintf (freezer, "map %s\n", &ob->map->path); 128 fprintf (freezer, "map %s\n", &ob->map->path);
129 129
130 fprintf (freezer, "savebed_map %s\n", savebed_map); 130 fprintf (freezer, "savebed_map %s\n", &savebed_map);
131 fprintf (freezer, "bed_x %d\nbed_y %d\n", bed_x, bed_y); 131 fprintf (freezer, "bed_x %d\nbed_y %d\n", bed_x, bed_y);
132 fprintf (freezer, "weapon_sp %f\n", weapon_sp); 132 fprintf (freezer, "weapon_sp %f\n", weapon_sp);
133 fprintf (freezer, "Str %d\n", orig_stats.Str); 133 fprintf (freezer, "Str %d\n", orig_stats.Str);
134 fprintf (freezer, "Dex %d\n", orig_stats.Dex); 134 fprintf (freezer, "Dex %d\n", orig_stats.Dex);
135 fprintf (freezer, "Con %d\n", orig_stats.Con); 135 fprintf (freezer, "Con %d\n", orig_stats.Con);
188 char buf[MAX_BUF], bufall[MAX_BUF]; 188 char buf[MAX_BUF], bufall[MAX_BUF];
189 189
190 pl->set_object (object::create ()); 190 pl->set_object (object::create ());
191 pl->last_save_time = time (0); 191 pl->last_save_time = time (0);
192 192
193 assign (pl->savebed_map, first_map_path); 193 pl->savebed_map = first_map_path;
194 194
195 /* Loop through the file, loading the rest of the values */ 195 /* Loop through the file, loading the rest of the values */
196 while (fgets (bufall, MAX_BUF, thawer)) 196 for (;;)
197 { 197 {
198 int value; 198 keyword kw = thawer.get_kv ();
199 sscanf (bufall, "%s %d\n", buf, &value);
200 199
201 if (!strcmp (buf, "endplst")) 200 switch (kw)
202 break;
203 else if (!strcmp (buf, "oid"))
204 thawer.get (pl, value);
205 else if (!strcmp (buf, "password"))
206 sscanf (bufall, "password %[^\n]", pl->password);
207 else if (!strcmp (buf, "title"))
208 sscanf (bufall, "title %[^\n]", pl->own_title);
209 else if (!strcmp (buf, "explore"))
210 pl->explore = value;
211 else if (!strcmp (buf, "gen_hp"))
212 pl->gen_hp = value;
213 else if (!strcmp (buf, "shoottype"))
214 pl->shoottype = (rangetype) value;
215 else if (!strcmp (buf, "bowtype"))
216 pl->bowtype = (bowtype_t) value;
217 else if (!strcmp (buf, "petmode"))
218 pl->petmode = (petmode_t) value;
219 else if (!strcmp (buf, "gen_sp"))
220 pl->gen_sp = value;
221 else if (!strcmp (buf, "gen_grace"))
222 pl->gen_grace = value;
223 else if (!strcmp (buf, "listening"))
224 pl->listening = value;
225 else if (!strcmp (buf, "peaceful"))
226 pl->peaceful = value;
227 else if (!strcmp (buf, "digestion"))
228 pl->digestion = value;
229 else if (!strcmp (buf, "pickup"))
230 pl->mode = value;
231 else if (!strcmp (buf, "outputs_sync"))
232 pl->outputs_sync = value;
233 else if (!strcmp (buf, "outputs_count"))
234 pl->outputs_count = value;
235 else if (!strcmp (buf, "map"))
236 sscanf (bufall, "map %s", pl->maplevel);
237 else if (!strcmp (buf, "savebed_map"))
238 sscanf (bufall, "savebed_map %s", pl->savebed_map);
239 else if (!strcmp (buf, "bed_x"))
240 pl->bed_x = value;
241 else if (!strcmp (buf, "bed_y"))
242 pl->bed_y = value;
243 else if (!strcmp (buf, "weapon_sp"))
244 sscanf (buf, "weapon_sp %f", &pl->weapon_sp);
245 else if (!strcmp (buf, "Str"))
246 pl->orig_stats.Str = value;
247 else if (!strcmp (buf, "Dex"))
248 pl->orig_stats.Dex = value;
249 else if (!strcmp (buf, "Con"))
250 pl->orig_stats.Con = value;
251 else if (!strcmp (buf, "Int"))
252 pl->orig_stats.Int = value;
253 else if (!strcmp (buf, "Pow"))
254 pl->orig_stats.Pow = value;
255 else if (!strcmp (buf, "Wis"))
256 pl->orig_stats.Wis = value;
257 else if (!strcmp (buf, "Cha"))
258 pl->orig_stats.Cha = value;
259 else if (!strcmp (buf, "usekeys"))
260 { 201 {
261 if (!strcmp (bufall + 8, "key_inventory\n")) 202 case KW_ERROR:
203 case KW_EOF:
204 LOG (llevError, "%s: error while reading player header\n", path);
205 return 0;
206
207 case KW_endplst:
208 goto done;
209
210 case KW_oid: thawer.get (pl, thawer.get_sint32 ()); break;
211 case KW_password: assign (pl->password , thawer.get_str ()); break;
212 case KW_title: assign (pl->own_title, thawer.get_str ()); break;
213 case KW_shoottype: pl->shoottype = (rangetype) thawer.get_sint32 (); break;
214 case KW_bowtype: pl->bowtype = (bowtype_t) thawer.get_sint32 (); break;
215 case KW_petmode: pl->petmode = (petmode_t) thawer.get_sint32 (); break;
216 case KW_explore: thawer.get (pl->explore); break;
217 case KW_listening: thawer.get (pl->listening); break;
218 case KW_peaceful: thawer.get (pl->peaceful); break;
219 case KW_digestion: thawer.get (pl->digestion); break;
220 case KW_pickup: thawer.get (pl->mode); break;
221 case KW_outputs_sync: thawer.get (pl->outputs_sync); break;
222 case KW_outputs_count: thawer.get (pl->outputs_count); break;
223 case KW_map: thawer.get (pl->maplevel); break;
224 case KW_savebed_map: thawer.get (pl->savebed_map); break;
225 case KW_bed_x: thawer.get (pl->bed_x); break;
226 case KW_bed_y: thawer.get (pl->bed_y); break;
227 case KW_weapon_sp: thawer.get (pl->weapon_sp); break;
228 case KW_Str: thawer.get (pl->orig_stats.Str); break;
229 case KW_Dex: thawer.get (pl->orig_stats.Dex); break;
230 case KW_Con: thawer.get (pl->orig_stats.Con); break;
231 case KW_Int: thawer.get (pl->orig_stats.Int); break;
232 case KW_Pow: thawer.get (pl->orig_stats.Pow); break;
233 case KW_Wis: thawer.get (pl->orig_stats.Wis); break;
234 case KW_Cha: thawer.get (pl->orig_stats.Cha); break;
235 case KW_gen_hp: thawer.get (pl->gen_hp); break;
236 case KW_gen_sp: thawer.get (pl->gen_sp); break;
237 case KW_gen_grace: thawer.get (pl->gen_grace); break;
238
239 case KW_usekeys:
240 if (!strcmp (thawer.get_str (), "key_inventory"))
262 pl->usekeys = key_inventory; 241 pl->usekeys = key_inventory;
263 else if (!strcmp (bufall + 8, "keyrings\n")) 242 else if (!strcmp (thawer.get_str (), "keyrings"))
264 pl->usekeys = keyrings; 243 pl->usekeys = keyrings;
265 else if (!strcmp (bufall + 8, "containers\n")) 244 else if (!strcmp (thawer.get_str (), "containers"))
266 pl->usekeys = containers; 245 pl->usekeys = containers;
267 else 246 else
268 LOG (llevDebug, "load_player: got unknown usekeys type: %s\n", bufall + 8); 247 LOG (llevDebug, "load_player: got unknown usekeys type: %s\n", thawer.get_str ());
248 break;
249
250 case KW_unapply:
251 if (!strcmp (thawer.get_str (), "unapply_nochoice"))
252 pl->unapply = unapply_nochoice;
253 else if (!strcmp (thawer.get_str (), "unapply_never"))
254 pl->unapply = unapply_never;
255 else if (!strcmp (thawer.get_str (), "unapply_always"))
256 pl->unapply = unapply_always;
257 else
258 LOG (llevDebug, "load_player: got unknown unapply type: %s\n", thawer.get_str ());
259 break;
260
261 case KW_lev_array:
262 {
263 int count = thawer.get_sint32 ();
264
265 for (int i = 1; i <= count; i++)
266 {
267 char line[128];
268
269 fgets (line, 128, thawer); pl->levhp [i] = atoi (line);
270 fgets (line, 128, thawer); pl->levsp [i] = atoi (line);
271 fgets (line, 128, thawer); pl->levgrace[i] = atoi (line);
272 }
273 }
274 break;
275
276 default:
277 LOG (llevError, "%s: skipping unknown key in player header: %s\n", path, keyword_str [kw]);
278 break;
269 } 279 }
270 else if (!strcmp (buf, "unapply"))
271 {
272 if (!strcmp (bufall + 8, "unapply_nochoice\n"))
273 pl->unapply = unapply_nochoice;
274 else if (!strcmp (bufall + 8, "unapply_never\n"))
275 pl->unapply = unapply_never;
276 else if (!strcmp (bufall + 8, "unapply_always\n"))
277 pl->unapply = unapply_always;
278 else
279 LOG (llevDebug, "load_player: got unknown unapply type: %s\n", bufall + 8);
280 }
281 else if (!strcmp (buf, "lev_array"))
282 {
283 for (int i = 1; i <= value; i++)
284 {
285 char line[128];
286
287 fgets (line, 128, thawer);
288 pl->levhp[i] = atoi (line);
289 fgets (line, 128, thawer);
290 pl->levsp[i] = atoi (line);
291 fgets (line, 128, thawer);
292 pl->levgrace[i] = atoi (line);
293 }
294 /* spell_array code removed - don't know when that was last used.
295 * Even the load code below will someday be replaced by spells being
296 * objects.
297 */
298 }
299 else
300 LOG (llevDebug, "unparseable line in player file %s: %s\n", path, bufall);
301 } 280 }
302 281
282done:
303 /* this loads the standard objects values. */ 283 /* this loads the standard objects values. */
304 load_object (thawer, pl->ob, 0); 284 load_object (thawer, pl->ob, 0);
305 285
306 pl->last_save_tick = pticks; 286 pl->last_save_tick = pticks;
307 287

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines