--- deliantra/server/common/player.C 2007/04/29 21:44:34 1.23 +++ deliantra/server/common/player.C 2007/06/04 13:04:00 1.31 @@ -1,25 +1,25 @@ /* - * CrossFire, A Multiplayer game for X-windows - * - * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team - * Copyright (C) 2002 Mark Wedel & Crossfire Development Team - * Copyright (C) 1992 Frank Tore Johansen - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - * - * The authors can be reached via e-mail at + * This file is part of Crossfire TRT, the Multiplayer Online Role Playing Game. + * + * Copyright (©) 2005,2006,2007 Marc Alexander Lehmann / Robin Redeker / the Crossfire TRT team + * Copyright (©) 2002,2007 Mark Wedel & Crossfire Development Team + * Copyright (©) 1992,2007 Frank Tore Johansen + * + * Crossfire TRT is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2 of the License, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with Crossfire TRT; if not, write to the Free Software Foundation, Inc. 51 + * Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + * + * The authors can be reached via e-mail to */ #include @@ -47,40 +47,16 @@ int is_dragon_pl (const object *op) { - if (op != NULL && op->type == PLAYER && op->arch != NULL && op->arch->clone.race != NULL && strcmp (op->arch->clone.race, "dragon") == 0) + if (op + && op->type == PLAYER + && op->arch + && op->arch->race + && !strcmp (op->arch->race, "dragon")) return 1; return 0; } -/* Returns TRUE if the range specified (int r) is legal - that is, - * the character has an item that is equipped for that range type. - * return 0 if there is no item of that range type that is usable. - * This function could probably be simplified, eg, everything - * should index into the ranges[] array. - */ -bool -player::legal_range (rangetype r) const -{ - switch (r) - { - case range_none: /* "Nothing" is always legal */ - return 1; - - case range_bow: - case range_misc: - case range_magic: /* cast spells */ - case range_golem: - return !!ranges [r]; - - case range_skill: - return !!ob->chosen_skill; - } - - /* No match above, must not be valid */ - return 0; -} - /* * If final is set, it a clean/final save, not a backup, ie dont remove objects from inventory */ @@ -107,7 +83,6 @@ PL_OUT (gen_sp); PL_OUT (gen_grace); PL_OUT (listening); - PL_OUT (shoottype); PL_OUT (bowtype); PL_OUT (petmode); PL_OUT (peaceful); @@ -124,6 +99,7 @@ PL_OUT (bed_x); PL_OUT (bed_y); PL_OUT (weapon_sp); + PL_OUT (weapon_sp_left); PL_OUT2 (Str, orig_stats.Str); PL_OUT2 (Dex, orig_stats.Dex); PL_OUT2 (Con, orig_stats.Con); @@ -136,9 +112,9 @@ for (int i = 1; i <= 10; i++) { - fprintf (freezer, "%d\n", levhp [i]); - fprintf (freezer, "%d\n", levsp [i]); - fprintf (freezer, "%d\n", levgrace[i]); + freezer.add (levhp [i]); freezer.add ('\n'); + freezer.add (levsp [i]); freezer.add ('\n'); + freezer.add (levgrace[i]); freezer.add ('\n'); } freezer.put (ob->contr); @@ -214,7 +190,6 @@ case KW_oid: f.get (pl, f.get_sint32 ()); break; case KW_password: assign (pl->password , f.get_str ()); break; case KW_title: assign (pl->own_title, f.get_str ()); break; - case KW_shoottype: pl->shoottype = (rangetype) f.get_sint32 (); break; case KW_bowtype: pl->bowtype = (bowtype_t) f.get_sint32 (); break; case KW_petmode: pl->petmode = (petmode_t) f.get_sint32 (); break; case KW_listening: f.get (pl->listening); break; @@ -228,6 +203,7 @@ case KW_bed_x: f.get (pl->bed_x); break; case KW_bed_y: f.get (pl->bed_y); break; case KW_weapon_sp: f.get (pl->weapon_sp); break; + case KW_weapon_sp_left:f.get (pl->weapon_sp_left); break; case KW_Str: f.get (pl->orig_stats.Str); break; case KW_Dex: f.get (pl->orig_stats.Dex); break; case KW_Con: f.get (pl->orig_stats.Con); break;