--- deliantra/server/socket/request.C 2007/04/27 00:49:58 1.90 +++ deliantra/server/socket/request.C 2007/05/17 14:14:56 1.97 @@ -1,5 +1,5 @@ /* - * CrossFire, A Multiplayer game for X-windows + * CrossFire, A Multiplayer game * * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team * Copyright (C) 2001 Mark Wedel @@ -728,6 +728,28 @@ ns->send_packet_printf ("query %d %s", flags, text ? text : ""); } +/** + * Get player's current range attack in obuf. + */ +static void +rangetostring (player *pl, char *obuf) +{ + dynbuf_text buf; + + if (pl->ranged_ob) + buf << " Range" << (pl->ob->current_weapon == pl->ranged_ob ? "*" : "") << ": " << pl->ranged_ob->name; + + if (pl->combat_ob) + buf << " Combat" << (pl->ob->current_weapon == pl->combat_ob ? "*" : "") << ": " << pl->combat_ob->name; + + //TODO: maybe golem should become the current_weapon, quite simply? + if (pl->golem) + buf << " Golem*: " << pl->golem->name; + + buf.linearise (obuf); + obuf [buf.size ()] = 0; +} + #define AddIfInt64(Old,New,Type) if (Old != New) {\ Old = New; \ sl << uint8 (Type) << uint64 (New); \ @@ -842,7 +864,7 @@ AddIfInt (ns->last_path_denied, ob->path_denied, CS_STAT_SPELL_DENY); } - rangetostring (ob, buf); /* we want use the new fire & run system in new client */ + rangetostring (pl, buf); /* we want use the new fire & run system in new client */ AddIfString (ns->stats.range, buf, CS_STAT_RANGE); set_title (ob, buf); AddIfString (ns->stats.title, buf, CS_STAT_TITLE);