1 | /* |
1 | /* |
2 | * CrossFire, A Multiplayer game for X-windows |
2 | * CrossFire, A Multiplayer game |
3 | * |
3 | * |
4 | * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team |
4 | * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team |
5 | * Copyright (C) 2002 Mark Wedel & Crossfire Development Team |
5 | * Copyright (C) 2002 Mark Wedel & Crossfire Development Team |
6 | * Copyright (C) 1992 Frank Tore Johansen |
6 | * Copyright (C) 1992 Frank Tore Johansen |
7 | * |
7 | * |
… | |
… | |
45 | * of the dragon race. |
45 | * of the dragon race. |
46 | */ |
46 | */ |
47 | int |
47 | int |
48 | is_dragon_pl (const object *op) |
48 | is_dragon_pl (const object *op) |
49 | { |
49 | { |
50 | if (op != NULL && op->type == PLAYER && op->arch != NULL && op->arch->clone.race != NULL && strcmp (op->arch->clone.race, "dragon") == 0) |
50 | if (op |
|
|
51 | && op->type == PLAYER |
|
|
52 | && op->arch |
|
|
53 | && op->arch->clone.race |
|
|
54 | && !strcmp (op->arch->clone.race, "dragon")) |
51 | return 1; |
55 | return 1; |
52 | |
56 | |
53 | return 0; |
57 | return 0; |
54 | } |
58 | } |
55 | |
59 | |
… | |
… | |
77 | PL_OUT2 (title, own_title); |
81 | PL_OUT2 (title, own_title); |
78 | PL_OUT (gen_hp); |
82 | PL_OUT (gen_hp); |
79 | PL_OUT (gen_sp); |
83 | PL_OUT (gen_sp); |
80 | PL_OUT (gen_grace); |
84 | PL_OUT (gen_grace); |
81 | PL_OUT (listening); |
85 | PL_OUT (listening); |
82 | PL_OUT (shoottype); |
|
|
83 | PL_OUT (bowtype); |
86 | PL_OUT (bowtype); |
84 | PL_OUT (petmode); |
87 | PL_OUT (petmode); |
85 | PL_OUT (peaceful); |
88 | PL_OUT (peaceful); |
86 | PL_OUT (digestion); |
89 | PL_OUT (digestion); |
87 | PL_OUT2 (pickup, mode); |
90 | PL_OUT2 (pickup, mode); |
… | |
… | |
94 | PL_OUT2 (map, maplevel); |
97 | PL_OUT2 (map, maplevel); |
95 | PL_OUT (savebed_map); |
98 | PL_OUT (savebed_map); |
96 | PL_OUT (bed_x); |
99 | PL_OUT (bed_x); |
97 | PL_OUT (bed_y); |
100 | PL_OUT (bed_y); |
98 | PL_OUT (weapon_sp); |
101 | PL_OUT (weapon_sp); |
|
|
102 | PL_OUT (weapon_sp_left); |
99 | PL_OUT2 (Str, orig_stats.Str); |
103 | PL_OUT2 (Str, orig_stats.Str); |
100 | PL_OUT2 (Dex, orig_stats.Dex); |
104 | PL_OUT2 (Dex, orig_stats.Dex); |
101 | PL_OUT2 (Con, orig_stats.Con); |
105 | PL_OUT2 (Con, orig_stats.Con); |
102 | PL_OUT2 (Int, orig_stats.Int); |
106 | PL_OUT2 (Int, orig_stats.Int); |
103 | PL_OUT2 (Pow, orig_stats.Pow); |
107 | PL_OUT2 (Pow, orig_stats.Pow); |
… | |
… | |
184 | return pl; |
188 | return pl; |
185 | |
189 | |
186 | case KW_oid: f.get (pl, f.get_sint32 ()); break; |
190 | case KW_oid: f.get (pl, f.get_sint32 ()); break; |
187 | case KW_password: assign (pl->password , f.get_str ()); break; |
191 | case KW_password: assign (pl->password , f.get_str ()); break; |
188 | case KW_title: assign (pl->own_title, f.get_str ()); break; |
192 | case KW_title: assign (pl->own_title, f.get_str ()); break; |
189 | case KW_shoottype: pl->shoottype = (rangetype) f.get_sint32 (); break; |
|
|
190 | case KW_bowtype: pl->bowtype = (bowtype_t) f.get_sint32 (); break; |
193 | case KW_bowtype: pl->bowtype = (bowtype_t) f.get_sint32 (); break; |
191 | case KW_petmode: pl->petmode = (petmode_t) f.get_sint32 (); break; |
194 | case KW_petmode: pl->petmode = (petmode_t) f.get_sint32 (); break; |
192 | case KW_listening: f.get (pl->listening); break; |
195 | case KW_listening: f.get (pl->listening); break; |
193 | case KW_peaceful: f.get (pl->peaceful); break; |
196 | case KW_peaceful: f.get (pl->peaceful); break; |
194 | case KW_digestion: f.get (pl->digestion); break; |
197 | case KW_digestion: f.get (pl->digestion); break; |
… | |
… | |
198 | case KW_map: f.get (pl->maplevel); break; |
201 | case KW_map: f.get (pl->maplevel); break; |
199 | case KW_savebed_map: f.get (pl->savebed_map); break; |
202 | case KW_savebed_map: f.get (pl->savebed_map); break; |
200 | case KW_bed_x: f.get (pl->bed_x); break; |
203 | case KW_bed_x: f.get (pl->bed_x); break; |
201 | case KW_bed_y: f.get (pl->bed_y); break; |
204 | case KW_bed_y: f.get (pl->bed_y); break; |
202 | case KW_weapon_sp: f.get (pl->weapon_sp); break; |
205 | case KW_weapon_sp: f.get (pl->weapon_sp); break; |
|
|
206 | case KW_weapon_sp_left:f.get (pl->weapon_sp_left); break; |
203 | case KW_Str: f.get (pl->orig_stats.Str); break; |
207 | case KW_Str: f.get (pl->orig_stats.Str); break; |
204 | case KW_Dex: f.get (pl->orig_stats.Dex); break; |
208 | case KW_Dex: f.get (pl->orig_stats.Dex); break; |
205 | case KW_Con: f.get (pl->orig_stats.Con); break; |
209 | case KW_Con: f.get (pl->orig_stats.Con); break; |
206 | case KW_Int: f.get (pl->orig_stats.Int); break; |
210 | case KW_Int: f.get (pl->orig_stats.Int); break; |
207 | case KW_Pow: f.get (pl->orig_stats.Pow); break; |
211 | case KW_Pow: f.get (pl->orig_stats.Pow); break; |
… | |
… | |
253 | } |
257 | } |
254 | |
258 | |
255 | failure: |
259 | failure: |
256 | LOG (llevError, "%s: too many or too grave errors, aborting player load.\n", f.name); |
260 | LOG (llevError, "%s: too many or too grave errors, aborting player load.\n", f.name); |
257 | |
261 | |
|
|
262 | if (pl->ob) |
258 | pl->ob->destroy (); |
263 | pl->ob->destroy (); |
|
|
264 | |
259 | pl->destroy (); |
265 | pl->destroy (); |
260 | |
266 | |
261 | return 0; |
267 | return 0; |
262 | } |
268 | } |
263 | |
269 | |