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

Comparing deliantra/server/server/c_range.C (file contents):
Revision 1.12 by root, Tue Dec 12 21:39:57 2006 UTC vs.
Revision 1.17 by pippijn, Fri Mar 2 13:32:52 2007 UTC

1/* 1/*
2 CrossFire, A Multiplayer game for X-windows 2 * CrossFire, A Multiplayer game for X-windows
3 3 *
4 * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
4 Copyright (C) 2002 Mark Wedel & Crossfire Development Team 5 * Copyright (C) 2002 Mark Wedel & Crossfire Development Team
5 Copyright (C) 1992 Frank Tore Johansen 6 * Copyright (C) 1992 Frank Tore Johansen
6 7 *
7 This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2 of the License, or 10 * the Free Software Foundation; either version 2 of the License, or
10 (at your option) any later version. 11 * (at your option) any later version.
11 12 *
12 This program is distributed in the hope that it will be useful, 13 * This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details. 16 * GNU General Public License for more details.
16 17 *
17 You should have received a copy of the GNU General Public License 18 * You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software 19 * along with this program; if not, write to the Free Software
19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 21 *
21 The authors can be reached via e-mail at <crossfire@schmorp.de> 22 * The authors can be reached via e-mail at <crossfire@schmorp.de>
22*/ 23 */
23 24
24/* This file deals with range related commands (casting, shooting, 25/* This file deals with range related commands (casting, shooting,
25 * throwing, etc. 26 * throwing, etc.
26 */ 27 */
27 28
28#include <global.h> 29#include <global.h>
29#ifndef __CEXTRACT__
30# include <sproto.h> 30#include <sproto.h>
31#endif
32#include <spells.h> 31#include <spells.h>
33#include <skills.h> 32#include <skills.h>
34#include <newclient.h>
35#include <commands.h> 33#include <commands.h>
36 34
37int 35int
38command_invoke (object *op, char *params) 36command_invoke (object *op, char *params)
39{ 37{
104 /* Note in the code below that we make some 102 /* Note in the code below that we make some
105 * presumptions that there will be a colon in the 103 * presumptions that there will be a colon in the
106 * string. given the code above, this is always 104 * string. given the code above, this is always
107 * the case. 105 * the case.
108 */ 106 */
109 qsort (spell_sort, num_found, MAX_BUF, (int (*)(const void *, const void *)) strcmp); 107 qsort (spell_sort, num_found, MAX_BUF, (int (*)(const void *, const void *)) std::strcmp);
110 strcpy (tmp, "asdfg"); /* Dummy string so initial compare fails */ 108 strcpy (tmp, "asdfg"); /* Dummy string so initial compare fails */
111 for (i = 0; i < num_found; i++) 109 for (i = 0; i < num_found; i++)
112 { 110 {
113 /* Different skill name, so print banner */ 111 /* Different skill name, so print banner */
114 if (strncmp (tmp, spell_sort[i], strlen (tmp))) 112 if (strncmp (tmp, spell_sort[i], strlen (tmp)))
246} 244}
247 245
248void 246void
249change_spell (object *op, char k) 247change_spell (object *op, char k)
250{ 248{
251
252 do 249 do
253 { 250 {
254 op->contr->shoottype = (rangetype) (op->contr->shoottype + ((k == '+') ? 1 : -1)); 251 op->contr->shoottype = (rangetype) (op->contr->shoottype + ((k == '+') ? 1 : -1));
255 if (op->contr->shoottype >= range_size) 252 if (op->contr->shoottype >= range_size)
256 op->contr->shoottype = range_none; 253 op->contr->shoottype = range_none;
257 else if (op->contr->shoottype <= range_bottom) 254 else if (op->contr->shoottype <= range_bottom)
258 op->contr->shoottype = (rangetype) (range_size - 1); 255 op->contr->shoottype = (rangetype) (range_size - 1);
259 } 256 }
260 while (!legal_range (op, op->contr->shoottype)); 257 while (!legal_range (op, op->contr->shoottype));
261 258
262 /* Legal range has already checked that we have an appropriate item 259 /* Legal range has already checked that we have an appropriate item
263 * that uses the slot, so we don't need to be too careful about 260 * that uses the slot, so we don't need to be too careful about
264 * checking the status of the object. 261 * checking the status of the object.
265 */ 262 */
266 switch (op->contr->shoottype) 263 switch (op->contr->shoottype)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines