ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/include/skills.h
(Generate patch)

Comparing deliantra/server/include/skills.h (file contents):
Revision 1.2 by pippijn, Sun Apr 30 12:07:47 2006 UTC vs.
Revision 1.10 by root, Fri Dec 15 20:07:02 2006 UTC

1/*
2 * static char *rcsid_skills_h =
3 * "$Id: skills.h,v 1.2 2006/04/30 12:07:47 pippijn Exp $";
4 */
5
6/* 1/*
7 CrossFire, A Multiplayer game for X-windows 2 CrossFire, A Multiplayer game for X-windows
8 3
9 Copyright (C) 2003 Mark Wedel & Crossfire Development Team 4 Copyright (C) 2003 Mark Wedel & Crossfire Development Team
10 Copyright (C) 1992 Frank Tore Johansen 5 Copyright (C) 1992 Frank Tore Johansen
21 16
22 You should have received a copy of the GNU General Public License 17 You should have received a copy of the GNU General Public License
23 along with this program; if not, write to the Free Software 18 along with this program; if not, write to the Free Software
24 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
25 20
26 The authors can be reached via e-mail at crossfire-devel@real-time.com 21 The authors can be reached via e-mail at crossfire.de
27*/ 22*/
28 23
24#ifndef SKILLS_H__
25#define SKILLS_H__
29 26
30/* This list is just a subtype <-> skill (code wise) in the 27/* This list is just a subtype <-> skill (code wise) in the
31 * server translation. In theory, the processing of the different 28 * server translation. In theory, the processing of the different
32 * skills could be done via strncmp 29 * skills could be done via strncmp
33 * This list doesn't really try to identify what the skills do. 30 * This list doesn't really try to identify what the skills do.
34 * The order of this list has no special meaning. 0 is not used 31 * The order of this list has no special meaning. 0 is not used
35 * to denote improperly set objects. 32 * to denote improperly set objects.
36 */ 33 */
37 34enum {
38#define SK_LOCKPICKING 1 35 SK_NONE = 0,
39#define SK_HIDING 2 36# define def(uc) SK_ ## uc,
40#define SK_SMITHERY 3 37# include "skillinc.h"
41#define SK_BOWYER 4 38# undef def
42#define SK_JEWELER 5 39 NUM_SKILLS,
43#define SK_ALCHEMY 6 40};
44#define SK_STEALING 7
45#define SK_LITERACY 8
46#define SK_BARGAINING 9
47#define SK_JUMPING 10
48#define SK_DET_MAGIC 11
49#define SK_ORATORY 12
50#define SK_SINGING 13
51#define SK_DET_CURSE 14
52#define SK_FIND_TRAPS 15
53#define SK_MEDITATION 16
54#define SK_PUNCHING 17
55#define SK_FLAME_TOUCH 18
56#define SK_KARATE 19
57#define SK_CLIMBING 20
58#define SK_WOODSMAN 21
59#define SK_INSCRIPTION 22
60#define SK_ONE_HANDED_WEAPON 23
61#define SK_MISSILE_WEAPON 24
62#define SK_THROWING 25
63#define SK_USE_MAGIC_ITEM 26
64#define SK_DISARM_TRAPS 27
65#define SK_SET_TRAP 28
66#define SK_THAUMATURGY 29
67#define SK_PRAYING 30
68#define SK_CLAWING 31
69#define SK_LEVITATION 32
70#define SK_SUMMONING 33
71#define SK_PYROMANCY 34
72#define SK_EVOCATION 35
73#define SK_SORCERY 36
74#define SK_TWO_HANDED_WEAPON 37
75#define SK_SPARK_TOUCH 38
76#define SK_FROST_TOUCH 39
77#define SK_ACID_TOUCH 40
78#define SK_POISON_TOUCH 41
79
80/* This is the highest number skill in the table +1
81 * This is used to store pointers to the actual skills -
82 * to make life easier, we use the value above as index,
83 * eg, SK_EVOCATION (35) will be in last_skills[35].
84 */
85#define NUM_SKILLS 42
86
87 41
88/* This is used in the exp functions - basically what to do if 42/* This is used in the exp functions - basically what to do if
89 * the player doesn't have the skill he should get exp in. 43 * the player doesn't have the skill he should get exp in.
90 */ 44 */
91 45
92#define SK_EXP_ADD_SKILL 0 /* Give the player the skill */ 46#define SK_EXP_ADD_SKILL 0 /* Give the player the skill */
93#define SK_EXP_TOTAL 1 /* Give player exp to total, no skill */ 47#define SK_EXP_TOTAL 1 /* Give player exp to total, no skill */
94#define SK_EXP_NONE 2 /* Player gets nothing */ 48#define SK_EXP_NONE 2 /* Player gets nothing */
95#define SK_SUBTRACT_SKILL_EXP 3 /* Used when removing exp */ 49#define SK_SUBTRACT_SKILL_EXP 3 /* Used when removing exp */
50#define SK_EXP_SKILL_ONLY 4 /* Player gets only skill experience */
96 51
97#define USING_SKILL(op, skill) ((op)->chosen_skill && (op)->chosen_skill->subtype == skill) 52#define USING_SKILL(op, skill) ((op)->chosen_skill && (op)->chosen_skill->subtype == skill)
98 53
99/* This macro is used in fix_player() to define if this is a sill 54/* This macro is used in fix_player() to define if this is a skill
100 * that should be used to calculate wc's and the like. 55 * that should be used to calculate wc's and the like.
101 */ 56 */
102#define IS_COMBAT_SKILL(num) \ 57#define IS_COMBAT_SKILL(num) \
103 ((num==SK_PUNCHING) || (num==SK_FLAME_TOUCH) || (num==SK_KARATE) || \ 58 ((num==SK_PUNCHING) || (num==SK_FLAME_TOUCH) || (num==SK_KARATE) || \
104 (num==SK_ONE_HANDED_WEAPON) || (num==SK_MISSILE_WEAPON) || \ 59 (num==SK_ONE_HANDED_WEAPON) || (num==SK_MISSILE_WEAPON) || \
105 (num==SK_THROWING) || (num==SK_CLAWING) || (num==SK_TWO_HANDED_WEAPON) || \ 60 (num==SK_THROWING) || (num==SK_CLAWING) || (num==SK_TWO_HANDED_WEAPON) || \
106 (num==SK_SPARK_TOUCH) || (num==SK_FROST_TOUCH) || \ 61 (num==SK_SPARK_TOUCH) || (num==SK_SHIVER) || \
107 (num==SK_ACID_TOUCH) || (num==SK_POISON_TOUCH)) 62 (num==SK_ACID_SPLASH) || (num==SK_POISON_NAIL))
108 63
109/* Like IS_COMBAT_SKILL above, but instead this is used to determine 64/* Like IS_COMBAT_SKILL above, but instead this is used to determine
110 * how many mana points the player has. 65 * how many mana points the player has.
111 */ 66 */
112#define IS_MANA_SKILL(num) \ 67#define IS_MANA_SKILL(num) \
116/* Currently only one of these, but put the define here to make 71/* Currently only one of these, but put the define here to make
117 * it easier to expand it in the future */ 72 * it easier to expand it in the future */
118#define IS_GRACE_SKILL(num) \ 73#define IS_GRACE_SKILL(num) \
119 (num==SK_PRAYING) 74 (num==SK_PRAYING)
120 75
121
122
123extern const char *skill_names[NUM_SKILLS]; 76extern shstr skill_names[NUM_SKILLS];
124
125#ifdef WANT_UNARMED_SKILLS
126/* Table of unarmed attack skills. Terminated by -1. This
127 * is also the list that we should try to use skills when
128 * automatically applying one for the player.
129 * Note it is hardcoded in the skill_util.c that dragons always
130 * want clawing if possible.
131 * included in a #ifdef so we don't get bunches of warnings about
132 * unused values. it is located here instead of a .c file to make
133 * updates easier and put it in a more central place - it shouldn't
134 * change very often, but it make sense to have it with the enumerated
135 * skill numbers above.
136 */
137static uint8 unarmed_skills[] = {
138SK_KARATE,
139SK_CLAWING,
140SK_FLAME_TOUCH,
141SK_PUNCHING,
142SK_SPARK_TOUCH,
143SK_FROST_TOUCH,
144SK_ACID_TOUCH,
145SK_POISON_TOUCH,
146-1
147};
148
149/* Just in case one file includes this more than once */
150#undef WANT_UNARMED_SKILLS
151 77
152#endif 78#endif
79

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines