Source:NetHack 3.4.0/skills.h
Jump to navigation
Jump to search
Below is the full text to skills.h from the source code of NetHack 3.4.0. To link to a particular line, write [[NetHack 3.4.0/skills.h#line123]], for example.
Warning! This is the source code from an old release. For the latest release, see Source code
The NetHack General Public License applies to screenshots, source code and other content from NetHack.
This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.
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 */