ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/skills.h
Revision: 1.17
Committed: Thu May 17 00:33:29 2007 UTC (17 years ago) by root
Content type: text/plain
Branch: MAIN
Changes since 1.16: +2 -2 lines
Log Message:
- do not require an item for the use magic item skill.
  thats because it is often used for "misc" objects such as scrolls,
  which do not get applied as ranged weapons. not requiring an item
  is not likely to be a big deal anyways.

File Contents

# Content
1 /*
2 * CrossFire, A Multiplayer game
3 *
4 * Copyright (C) 2005, 2006, 2007 Marc Lehmann & Crossfire+ Development Team
5 * Copyright (C) 2003 Mark Wedel & Crossfire Development Team
6 * Copyright (C) 1992 Frank Tore Johansen
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 *
22 * The authors can be reached via e-mail at crossfire@schmorp.de
23 */
24
25 #ifndef SKILLS_H__
26 #define SKILLS_H__
27
28 /* This list is just a subtype <-> skill (code wise) in the
29 * server translation. In theory, the processing of the different
30 * skills could be done via strncmp
31 * This list doesn't really try to identify what the skills do.
32 * The order of this list has no special meaning. 0 is not used
33 * to denote improperly set objects.
34 */
35 enum {
36 SK_NONE = 0,
37 # define def(uc, flags) SK_ ## uc,
38 # include "skillinc.h"
39 # undef def
40 NUM_SKILLS,
41 };
42
43 enum {
44 SF_COMBAT = 0x01, // skill is used only in direct attack combat
45 SF_RANGED = 0x02, // skill is only used for ranged attacks
46 SF_READY = 0x04, // skill can be used but is directionless
47 SF_NEED_WEAPON = 0x08, // skill requires a weapon object
48 SF_NEED_BOW = 0x10, // skill requires a bow object
49
50 SF_MANA = 0x40, // skill requires a mana-consuming spell
51 SF_GRACE = 0x80, // skill can use a grace-consuming spell
52 };
53
54 /* This is used in the exp functions - basically what to do if
55 * the player doesn't have the skill he should get exp in.
56 */
57
58 #define SK_EXP_ADD_SKILL 0 /* Give the player the skill */
59 #define SK_EXP_TOTAL 1 /* Give player exp to total, no skill */
60 #define SK_EXP_NONE 2 /* Player gets nothing */
61 #define SK_SUBTRACT_SKILL_EXP 3 /* Used when removing exp */
62 #define SK_EXP_SKILL_ONLY 4 /* Player gets only skill experience */
63
64 #define USING_SKILL(op, skill) ((op)->chosen_skill && (op)->chosen_skill->subtype == skill)
65
66 /* This macro is used in fix_player() to define if this is a skill
67 * that should be used to calculate wc's and the like.
68 */
69 #define IS_COMBAT_SKILL(num) (skill_flags [num] & SF_COMBAT)
70 #define IS_RANGED_SKILL(num) (skill_flags [num] & SF_RANGED)
71
72 /* Like IS_COMBAT_SKILL above, but instead this is used to determine
73 * how many mana points the player has.
74 */
75 #define IS_MANA_SKILL(num) (skill_flags [num] & SF_MANA)
76
77 /* Currently only one of these, but put the define here to make
78 * it easier to expand it in the future */
79 #define IS_GRACE_SKILL(num) (skill_flags [num] & SF_GRACE)
80
81 extern const uint8_t skill_flags[NUM_SKILLS];
82 extern shstr skill_names[NUM_SKILLS];
83
84 #endif
85