Source:Skills.h

Below is the full text to include/skills.h from NetHack 3.4.3. To link to a particular line, write [[skills.h#line123 ]], for example. 1.   /*	SCCS Id: @(#)skills.h	3.4	1999/10/27	*/ 2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985-1999. */ 3.    /* NetHack may be freely redistributed. See license for details. */ 4.

5.   #ifndef SKILLS_H 6.   #define SKILLS_H 7.    8.    /* Much of this code was taken from you.h.  It is now 9.    * in a separate file so it can be included in objects.c.  10. */ 11.    12.    13.   /* Code to denote that no skill is applicable */ 14.  #define P_NONE				0 15.   16.   /* Weapon Skills -- Stephen White 17.   * Order matters and are used in macros. 18.   * Positive values denote hand-to-hand weapons or launchers. 19.   * Negative values denote ammunition or missiles. 20.   * Update weapon.c if you ammend any skills. 21.   * Also used for oc_subtyp. 22.   */  23.   #define P_DAGGER             1 24.  #define P_KNIFE              2 25.  #define P_AXE                3 26.  #define P_PICK_AXE           4 27.  #define P_SHORT_SWORD        5 28.  #define P_BROAD_SWORD        6 29.  #define P_LONG_SWORD         7 30.  #define P_TWO_HANDED_SWORD   8 31.  #define P_SCIMITAR           9 32.  #define P_SABER             10 33.  #define P_CLUB              11	/* Heavy-shafted bludgeon */ 34.  #define P_MACE              12 35.  #define P_MORNING_STAR      13	/* Spiked bludgeon */ 36.  #define P_FLAIL             14	/* Two pieces hinged or chained together */ 37.  #define P_HAMMER            15	/* Heavy head on the end */ 38.  #define P_QUARTERSTAFF      16	/* Long-shafted bludgeon */ 39.  #define P_POLEARMS          17 40.  #define P_SPEAR             18 41.  #define P_JAVELIN           19 42.  #define P_TRIDENT           20 43.  #define P_LANCE             21 44.  #define P_BOW               22 45.  #define P_SLING             23 46.  #define P_CROSSBOW          24 47.  #define P_DART              25 48.  #define P_SHURIKEN          26 49.  #define P_BOOMERANG         27 50.  #define P_WHIP              28 51.  #define P_UNICORN_HORN      29	/* last weapon */ 52.  #define P_FIRST_WEAPON      P_DAGGER 53.  #define P_LAST_WEAPON       P_UNICORN_HORN 54.   55.   /* Spell Skills added by Larry Stewart-Zerba */ 56.  #define P_ATTACK_SPELL      30 57.  #define P_HEALING_SPELL     31 58.  #define P_DIVINATION_SPELL  32 59.  #define P_ENCHANTMENT_SPELL 33 60.  #define P_CLERIC_SPELL      34 61.  #define P_ESCAPE_SPELL      35 62.  #define P_MATTER_SPELL      36 63.  #define P_FIRST_SPELL		P_ATTACK_SPELL 64.  #define P_LAST_SPELL		P_MATTER_SPELL 65.   66.   /* Other types of combat */ 67.  #define P_BARE_HANDED_COMBAT	37 68.  #define P_MARTIAL_ARTS		P_BARE_HANDED_COMBAT	/* Role distinguishes */ 69.  #define P_TWO_WEAPON_COMBAT	38	/* Finally implemented */ 70.  #ifdef STEED 71.  #define P_RIDING		39	/* How well you control your steed */ 72.  #define P_LAST_H_TO_H		P_RIDING 73.  #else 74.  #define P_LAST_H_TO_H		P_TWO_WEAPON_COMBAT 75.  #endif 76.  #define P_FIRST_H_TO_H		P_BARE_HANDED_COMBAT 77.   78.   #define P_NUM_SKILLS		(P_LAST_H_TO_H+1) 79.   80.   /* These roles qualify for a martial arts bonus */ 81.  #define martial_bonus	(Role_if(PM_SAMURAI) || Role_if(PM_MONK)) 82.   83.    84.   /*  85.    * These are the standard weapon skill levels. It is important that 86.   * the lowest "valid" skill be be 1. The code calculates the 87.   * previous amount to practice by calling  practice_needed_to_advance 88.   * with the current skill-1. To work out for the UNSKILLED case, 89.   * a value of 0 needed. 90.   */  91.   #define P_ISRESTRICTED	0 92.  #define P_UNSKILLED		1 93.  #define P_BASIC			2 94.  #define P_SKILLED		3 95.  #define P_EXPERT		4 96.  #define P_MASTER		5	/* Unarmed combat/martial arts only */ 97.  #define P_GRAND_MASTER	6	/* Unarmed combat/martial arts only */ 98.   99.   #define practice_needed_to_advance(level) ((level)*(level)*20) 100.  101.  /* The hero's skill in various weapons. */ 102.  struct skills { 103. 	xchar skill; 104. 	xchar max_skill; 105. 	unsigned short advance; 106. };  107.   108.  #define P_SKILL(type)		(u.weapon_skills[type].skill) 109. #define P_MAX_SKILL(type)	(u.weapon_skills[type].max_skill) 110. #define P_ADVANCE(type)		(u.weapon_skills[type].advance) 111. #define P_RESTRICTED(type)	(u.weapon_skills[type].skill == P_ISRESTRICTED) 112.  113.  #define P_SKILL_LIMIT 60	/* Max number of skill advancements */ 114.  115.  /* Initial skill matrix structure; used in u_init.c and weapon.c */ 116. struct def_skill { 117. 	xchar skill; 118. 	xchar skmax; 119. };  120.   121.  #endif  /* SKILLS_H */