ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/c_move.C
Revision: 1.3
Committed: Sun Sep 10 15:59:57 2006 UTC (17 years, 9 months ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.2: +48 -35 lines
Log Message:
indent

File Contents

# Content
1
2 /*
3 * static char *rcsid_c_move_c =
4 * "$Id: c_move.C,v 1.2 2006-08-29 08:01:37 root Exp $";
5 */
6
7 /*
8 CrossFire, A Multiplayer game for X-windows
9
10 Copyright (C) 2002 Mark Wedel & Crossfire Development Team
11 Copyright (C) 1992 Frank Tore Johansen
12
13 This program is free software; you can redistribute it and/or modify
14 it under the terms of the GNU General Public License as published by
15 the Free Software Foundation; either version 2 of the License, or
16 (at your option) any later version.
17
18 This program is distributed in the hope that it will be useful,
19 but WITHOUT ANY WARRANTY; without even the implied warranty of
20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 GNU General Public License for more details.
22
23 You should have received a copy of the GNU General Public License
24 along with this program; if not, write to the Free Software
25 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
26
27 The author can be reached via e-mail to crossfire-devel@real-time.com
28 */
29
30 #include <global.h>
31 #ifndef __CEXTRACT__
32 # include <sproto.h>
33 #endif
34 #include <skills.h>
35
36 static int
37 move_internal (object *op, char *params, int dir)
38 {
39 if (params)
40 {
41 if (params[0] == 'f')
42 {
43 if (!op->contr->fire_on)
44 {
45 op->contr->fire_on = 1;
46 move_player (op, dir);
47 op->contr->fire_on = 0;
48 return 0;
49 }
50 }
51 else if (params[0] == 'r' && !op->contr->run_on)
52 op->contr->run_on = 1;
53 }
54 move_player (op, dir);
55 return 0;
56 }
57
58 int
59 command_east (object *op, char *params)
60 {
61 return move_internal (op, params, 3);
62 }
63
64 int
65 command_north (object *op, char *params)
66 {
67 return move_internal (op, params, 1);
68 }
69
70 int
71 command_northeast (object *op, char *params)
72 {
73 return move_internal (op, params, 2);
74 }
75
76 int
77 command_northwest (object *op, char *params)
78 {
79 return move_internal (op, params, 8);
80 }
81
82 int
83 command_south (object *op, char *params)
84 {
85 return move_internal (op, params, 5);
86 }
87
88 int
89 command_southeast (object *op, char *params)
90 {
91 return move_internal (op, params, 4);
92 }
93
94 int
95 command_southwest (object *op, char *params)
96 {
97 return move_internal (op, params, 6);
98 }
99
100 int
101 command_west (object *op, char *params)
102 {
103 return move_internal (op, params, 7);
104 }
105
106 int
107 command_stay (object *op, char *params)
108 {
109 if (!op->contr->fire_on && (!params || params[0] != 'f'))
110 return 0;
111 fire (op, 0);
112 return 0;
113 }