Difference between revisions of "Source:NetHack 3.6.0/include/skills.h"

From NetHackWiki
Jump to navigation Jump to search
(Created page with "__MIXEDSYNTAXHIGHLIGHT__ Below is the full text to '''skills.h''' from the source code of NetHack 3.6.0. To link to a particular line, write...")
 
 
Line 3: Line 3:
  
 
{{NGPL}}
 
{{NGPL}}
  <span id="line1">1.   /* NetHack 3.6 skills.h $NHDT-Date: 1432512778 2015/05/25 00:12:58 $  $NHDT-Branch: master $:$NHDT-Revision: 1.11 $ */</span>
+
  <span id="line1">1. /* NetHack 3.6 skills.h $NHDT-Date: 1432512778 2015/05/25 00:12:58 $  $NHDT-Branch: master $:$NHDT-Revision: 1.11 $ */</span>
  <span id="line2">2.   /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985-1999. */</span>
+
  <span id="line2">2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985-1999. */</span>
  <span id="line3">3.   /* NetHack may be freely redistributed.  See license for details. */</span>
+
  <span id="line3">3. /* NetHack may be freely redistributed.  See license for details. */</span>
  <span id="line4">4.   </span>
+
  <span id="line4">4. </span>
  <span id="line5">5.   #ifndef SKILLS_H</span>
+
  <span id="line5">5. #ifndef SKILLS_H</span>
  <span id="line6">6.   #define SKILLS_H</span>
+
  <span id="line6">6. #define SKILLS_H</span>
  <span id="line7">7.   </span>
+
  <span id="line7">7. </span>
  <span id="line8">8.   /* Much of this code was taken from you.h.  It is now</span>
+
  <span id="line8">8. /* Much of this code was taken from you.h.  It is now</span>
  <span id="line9">9.     * in a separate file so it can be included in objects.c.</span>
+
  <span id="line9">9.  * in a separate file so it can be included in objects.c.</span>
  <span id="line10">10.   */</span>
+
  <span id="line10">10.  */</span>
  <span id="line11">11.   </span>
+
  <span id="line11">11. </span>
  <span id="line12">12.   /* Code to denote that no skill is applicable */</span>
+
  <span id="line12">12. /* Code to denote that no skill is applicable */</span>
  <span id="line13">13.   #define P_NONE 0</span>
+
  <span id="line13">13. #define P_NONE 0</span>
  <span id="line14">14.   </span>
+
  <span id="line14">14. </span>
  <span id="line15">15.   /* Weapon Skills -- Stephen White</span>
+
  <span id="line15">15. /* Weapon Skills -- Stephen White</span>
  <span id="line16">16.   * Order matters and are used in macros.</span>
+
  <span id="line16">16.  * Order matters and are used in macros.</span>
  <span id="line17">17.   * Positive values denote hand-to-hand weapons or launchers.</span>
+
  <span id="line17">17.  * Positive values denote hand-to-hand weapons or launchers.</span>
  <span id="line18">18.   * Negative values denote ammunition or missiles.</span>
+
  <span id="line18">18.  * Negative values denote ammunition or missiles.</span>
  <span id="line19">19.   * Update weapon.c if you amend any skills.</span>
+
  <span id="line19">19.  * Update weapon.c if you amend any skills.</span>
  <span id="line20">20.   * Also used for oc_subtyp.</span>
+
  <span id="line20">20.  * Also used for oc_subtyp.</span>
  <span id="line21">21.   */</span>
+
  <span id="line21">21.  */</span>
  <span id="line22">22.   #define P_DAGGER 1</span>
+
  <span id="line22">22. #define P_DAGGER 1</span>
  <span id="line23">23.   #define P_KNIFE 2</span>
+
  <span id="line23">23. #define P_KNIFE 2</span>
  <span id="line24">24.   #define P_AXE 3</span>
+
  <span id="line24">24. #define P_AXE 3</span>
  <span id="line25">25.   #define P_PICK_AXE 4</span>
+
  <span id="line25">25. #define P_PICK_AXE 4</span>
  <span id="line26">26.   #define P_SHORT_SWORD 5</span>
+
  <span id="line26">26. #define P_SHORT_SWORD 5</span>
  <span id="line27">27.   #define P_BROAD_SWORD 6</span>
+
  <span id="line27">27. #define P_BROAD_SWORD 6</span>
  <span id="line28">28.   #define P_LONG_SWORD 7</span>
+
  <span id="line28">28. #define P_LONG_SWORD 7</span>
  <span id="line29">29.   #define P_TWO_HANDED_SWORD 8</span>
+
  <span id="line29">29. #define P_TWO_HANDED_SWORD 8</span>
  <span id="line30">30.   #define P_SCIMITAR 9</span>
+
  <span id="line30">30. #define P_SCIMITAR 9</span>
  <span id="line31">31.   #define P_SABER 10</span>
+
  <span id="line31">31. #define P_SABER 10</span>
  <span id="line32">32.   #define P_CLUB 11 /* Heavy-shafted bludgeon */</span>
+
  <span id="line32">32. #define P_CLUB 11 /* Heavy-shafted bludgeon */</span>
  <span id="line33">33.   #define P_MACE 12</span>
+
  <span id="line33">33. #define P_MACE 12</span>
  <span id="line34">34.   #define P_MORNING_STAR 13 /* Spiked bludgeon */</span>
+
  <span id="line34">34. #define P_MORNING_STAR 13 /* Spiked bludgeon */</span>
  <span id="line35">35.   #define P_FLAIL 14        /* Two pieces hinged or chained together */</span>
+
  <span id="line35">35. #define P_FLAIL 14        /* Two pieces hinged or chained together */</span>
  <span id="line36">36.   #define P_HAMMER 15      /* Heavy head on the end */</span>
+
  <span id="line36">36. #define P_HAMMER 15      /* Heavy head on the end */</span>
  <span id="line37">37.   #define P_QUARTERSTAFF 16 /* Long-shafted bludgeon */</span>
+
  <span id="line37">37. #define P_QUARTERSTAFF 16 /* Long-shafted bludgeon */</span>
  <span id="line38">38.   #define P_POLEARMS 17</span>
+
  <span id="line38">38. #define P_POLEARMS 17</span>
  <span id="line39">39.   #define P_SPEAR 18 /* includes javelin */</span>
+
  <span id="line39">39. #define P_SPEAR 18 /* includes javelin */</span>
  <span id="line40">40.   #define P_TRIDENT 19</span>
+
  <span id="line40">40. #define P_TRIDENT 19</span>
  <span id="line41">41.   #define P_LANCE 20</span>
+
  <span id="line41">41. #define P_LANCE 20</span>
  <span id="line42">42.   #define P_BOW 21</span>
+
  <span id="line42">42. #define P_BOW 21</span>
  <span id="line43">43.   #define P_SLING 22</span>
+
  <span id="line43">43. #define P_SLING 22</span>
  <span id="line44">44.   #define P_CROSSBOW 23</span>
+
  <span id="line44">44. #define P_CROSSBOW 23</span>
  <span id="line45">45.   #define P_DART 24</span>
+
  <span id="line45">45. #define P_DART 24</span>
  <span id="line46">46.   #define P_SHURIKEN 25</span>
+
  <span id="line46">46. #define P_SHURIKEN 25</span>
  <span id="line47">47.   #define P_BOOMERANG 26</span>
+
  <span id="line47">47. #define P_BOOMERANG 26</span>
  <span id="line48">48.   #define P_WHIP 27</span>
+
  <span id="line48">48. #define P_WHIP 27</span>
  <span id="line49">49.   #define P_UNICORN_HORN 28 /* last weapon */</span>
+
  <span id="line49">49. #define P_UNICORN_HORN 28 /* last weapon */</span>
  <span id="line50">50.   #define P_FIRST_WEAPON P_DAGGER</span>
+
  <span id="line50">50. #define P_FIRST_WEAPON P_DAGGER</span>
  <span id="line51">51.   #define P_LAST_WEAPON P_UNICORN_HORN</span>
+
  <span id="line51">51. #define P_LAST_WEAPON P_UNICORN_HORN</span>
  <span id="line52">52.   </span>
+
  <span id="line52">52. </span>
  <span id="line53">53.   /* Spell Skills added by Larry Stewart-Zerba */</span>
+
  <span id="line53">53. /* Spell Skills added by Larry Stewart-Zerba */</span>
  <span id="line54">54.   #define P_ATTACK_SPELL 29</span>
+
  <span id="line54">54. #define P_ATTACK_SPELL 29</span>
  <span id="line55">55.   #define P_HEALING_SPELL 30</span>
+
  <span id="line55">55. #define P_HEALING_SPELL 30</span>
  <span id="line56">56.   #define P_DIVINATION_SPELL 31</span>
+
  <span id="line56">56. #define P_DIVINATION_SPELL 31</span>
  <span id="line57">57.   #define P_ENCHANTMENT_SPELL 32</span>
+
  <span id="line57">57. #define P_ENCHANTMENT_SPELL 32</span>
  <span id="line58">58.   #define P_CLERIC_SPELL 33</span>
+
  <span id="line58">58. #define P_CLERIC_SPELL 33</span>
  <span id="line59">59.   #define P_ESCAPE_SPELL 34</span>
+
  <span id="line59">59. #define P_ESCAPE_SPELL 34</span>
  <span id="line60">60.   #define P_MATTER_SPELL 35</span>
+
  <span id="line60">60. #define P_MATTER_SPELL 35</span>
  <span id="line61">61.   #define P_FIRST_SPELL P_ATTACK_SPELL</span>
+
  <span id="line61">61. #define P_FIRST_SPELL P_ATTACK_SPELL</span>
  <span id="line62">62.   #define P_LAST_SPELL P_MATTER_SPELL</span>
+
  <span id="line62">62. #define P_LAST_SPELL P_MATTER_SPELL</span>
  <span id="line63">63.   </span>
+
  <span id="line63">63. </span>
  <span id="line64">64.   /* Other types of combat */</span>
+
  <span id="line64">64. /* Other types of combat */</span>
  <span id="line65">65.   #define P_BARE_HANDED_COMBAT 36 /* actually weaponless; gloves are ok */</span>
+
  <span id="line65">65. #define P_BARE_HANDED_COMBAT 36 /* actually weaponless; gloves are ok */</span>
  <span id="line66">66.   #define P_MARTIAL_ARTS P_BARE_HANDED_COMBAT /* Role distinguishes */</span>
+
  <span id="line66">66. #define P_MARTIAL_ARTS P_BARE_HANDED_COMBAT /* Role distinguishes */</span>
  <span id="line67">67.   #define P_TWO_WEAPON_COMBAT 37              /* Finally implemented */</span>
+
  <span id="line67">67. #define P_TWO_WEAPON_COMBAT 37              /* Finally implemented */</span>
  <span id="line68">68.   #define P_RIDING 38 /* How well you control your steed */</span>
+
  <span id="line68">68. #define P_RIDING 38 /* How well you control your steed */</span>
  <span id="line69">69.   #define P_LAST_H_TO_H P_RIDING</span>
+
  <span id="line69">69. #define P_LAST_H_TO_H P_RIDING</span>
  <span id="line70">70.   #define P_FIRST_H_TO_H P_BARE_HANDED_COMBAT</span>
+
  <span id="line70">70. #define P_FIRST_H_TO_H P_BARE_HANDED_COMBAT</span>
  <span id="line71">71.   </span>
+
  <span id="line71">71. </span>
  <span id="line72">72.   #define P_NUM_SKILLS (P_LAST_H_TO_H + 1)</span>
+
  <span id="line72">72. #define P_NUM_SKILLS (P_LAST_H_TO_H + 1)</span>
  <span id="line73">73.   </span>
+
  <span id="line73">73. </span>
  <span id="line74">74.   /* These roles qualify for a martial arts bonus */</span>
+
  <span id="line74">74. /* These roles qualify for a martial arts bonus */</span>
  <span id="line75">75.   #define martial_bonus() (Role_if(PM_SAMURAI) || Role_if(PM_MONK))</span>
+
  <span id="line75">75. #define martial_bonus() (Role_if(PM_SAMURAI) || Role_if(PM_MONK))</span>
  <span id="line76">76.   </span>
+
  <span id="line76">76. </span>
  <span id="line77">77.   /*</span>
+
  <span id="line77">77. /*</span>
  <span id="line78">78.   * These are the standard weapon skill levels.  It is important that</span>
+
  <span id="line78">78.  * These are the standard weapon skill levels.  It is important that</span>
  <span id="line79">79.   * the lowest "valid" skill be be 1.  The code calculates the</span>
+
  <span id="line79">79.  * the lowest "valid" skill be be 1.  The code calculates the</span>
  <span id="line80">80.   * previous amount to practice by calling  practice_needed_to_advance()</span>
+
  <span id="line80">80.  * previous amount to practice by calling  practice_needed_to_advance()</span>
  <span id="line81">81.   * with the current skill-1.  To work out for the UNSKILLED case,</span>
+
  <span id="line81">81.  * with the current skill-1.  To work out for the UNSKILLED case,</span>
  <span id="line82">82.   * a value of 0 needed.</span>
+
  <span id="line82">82.  * a value of 0 needed.</span>
  <span id="line83">83.   */</span>
+
  <span id="line83">83.  */</span>
  <span id="line84">84.   #define P_ISRESTRICTED 0</span>
+
  <span id="line84">84. #define P_ISRESTRICTED 0</span>
  <span id="line85">85.   #define P_UNSKILLED 1</span>
+
  <span id="line85">85. #define P_UNSKILLED 1</span>
  <span id="line86">86.   #define P_BASIC 2</span>
+
  <span id="line86">86. #define P_BASIC 2</span>
  <span id="line87">87.   #define P_SKILLED 3</span>
+
  <span id="line87">87. #define P_SKILLED 3</span>
  <span id="line88">88.   #define P_EXPERT 4</span>
+
  <span id="line88">88. #define P_EXPERT 4</span>
  <span id="line89">89.   #define P_MASTER 5      /* Unarmed combat/martial arts only */</span>
+
  <span id="line89">89. #define P_MASTER 5      /* Unarmed combat/martial arts only */</span>
  <span id="line90">90.   #define P_GRAND_MASTER 6 /* Unarmed combat/martial arts only */</span>
+
  <span id="line90">90. #define P_GRAND_MASTER 6 /* Unarmed combat/martial arts only */</span>
  <span id="line91">91.   </span>
+
  <span id="line91">91. </span>
  <span id="line92">92.   #define practice_needed_to_advance(level) ((level) * (level) *20)</span>
+
  <span id="line92">92. #define practice_needed_to_advance(level) ((level) * (level) *20)</span>
  <span id="line93">93.   </span>
+
  <span id="line93">93. </span>
  <span id="line94">94.   /* The hero's skill in various weapons. */</span>
+
  <span id="line94">94. /* The hero's skill in various weapons. */</span>
  <span id="line95">95.   struct skills {</span>
+
  <span id="line95">95. struct skills {</span>
  <span id="line96">96.       xchar skill;</span>
+
  <span id="line96">96.     xchar skill;</span>
  <span id="line97">97.       xchar max_skill;</span>
+
  <span id="line97">97.     xchar max_skill;</span>
  <span id="line98">98.       unsigned short advance;</span>
+
  <span id="line98">98.     unsigned short advance;</span>
  <span id="line99">99.   };</span>
+
  <span id="line99">99. };</span>
  <span id="line100">100. </span>
+
  <span id="line100">100. </span>
  <span id="line101">101. #define P_SKILL(type) (u.weapon_skills[type].skill)</span>
+
  <span id="line101">101. #define P_SKILL(type) (u.weapon_skills[type].skill)</span>
  <span id="line102">102. #define P_MAX_SKILL(type) (u.weapon_skills[type].max_skill)</span>
+
  <span id="line102">102. #define P_MAX_SKILL(type) (u.weapon_skills[type].max_skill)</span>
  <span id="line103">103. #define P_ADVANCE(type) (u.weapon_skills[type].advance)</span>
+
  <span id="line103">103. #define P_ADVANCE(type) (u.weapon_skills[type].advance)</span>
  <span id="line104">104. #define P_RESTRICTED(type) (u.weapon_skills[type].skill == P_ISRESTRICTED)</span>
+
  <span id="line104">104. #define P_RESTRICTED(type) (u.weapon_skills[type].skill == P_ISRESTRICTED)</span>
  <span id="line105">105. </span>
+
  <span id="line105">105. </span>
  <span id="line106">106. #define P_SKILL_LIMIT 60 /* Max number of skill advancements */</span>
+
  <span id="line106">106. #define P_SKILL_LIMIT 60 /* Max number of skill advancements */</span>
  <span id="line107">107. </span>
+
  <span id="line107">107. </span>
  <span id="line108">108. /* Initial skill matrix structure; used in u_init.c and weapon.c */</span>
+
  <span id="line108">108. /* Initial skill matrix structure; used in u_init.c and weapon.c */</span>
  <span id="line109">109. struct def_skill {</span>
+
  <span id="line109">109. struct def_skill {</span>
  <span id="line110">110.     xchar skill;</span>
+
  <span id="line110">110.     xchar skill;</span>
  <span id="line111">111.     xchar skmax;</span>
+
  <span id="line111">111.     xchar skmax;</span>
  <span id="line112">112. };</span>
+
  <span id="line112">112. };</span>
  <span id="line113">113. </span>
+
  <span id="line113">113. </span>
  <span id="line114">114. #endif /* SKILLS_H */</span>
+
  <span id="line114">114. #endif /* SKILLS_H */</span>
 
[[Category:NetHack 3.6.0 source code|include/skills.h]]
 
[[Category:NetHack 3.6.0 source code|include/skills.h]]

Latest revision as of 13:41, 15 December 2015

Below is the full text to skills.h from the source code of NetHack 3.6.0. To link to a particular line, write [[Source:NetHack 3.6.0/include/skills.h#line123]], for example.

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.

 /* NetHack 3.6	skills.h	$NHDT-Date: 1432512778 2015/05/25 00:12:58 $  $NHDT-Branch: master $:$NHDT-Revision: 1.11 $ */
 /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985-1999. */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #ifndef SKILLS_H
 #define SKILLS_H
 
 /* Much of this code was taken from you.h.  It is now
  * in a separate file so it can be included in objects.c.
  */
 
 /* Code to denote that no skill is applicable */
 #define P_NONE 0
 
 /* Weapon Skills -- Stephen White
  * Order matters and are used in macros.
  * Positive values denote hand-to-hand weapons or launchers.
  * Negative values denote ammunition or missiles.
  * Update weapon.c if you amend any skills.
  * Also used for oc_subtyp.
  */
 #define P_DAGGER 1
 #define P_KNIFE 2
 #define P_AXE 3
 #define P_PICK_AXE 4
 #define P_SHORT_SWORD 5
 #define P_BROAD_SWORD 6
 #define P_LONG_SWORD 7
 #define P_TWO_HANDED_SWORD 8
 #define P_SCIMITAR 9
 #define P_SABER 10
 #define P_CLUB 11 /* Heavy-shafted bludgeon */
 #define P_MACE 12
 #define P_MORNING_STAR 13 /* Spiked bludgeon */
 #define P_FLAIL 14        /* Two pieces hinged or chained together */
 #define P_HAMMER 15       /* Heavy head on the end */
 #define P_QUARTERSTAFF 16 /* Long-shafted bludgeon */
 #define P_POLEARMS 17
 #define P_SPEAR 18 /* includes javelin */
 #define P_TRIDENT 19
 #define P_LANCE 20
 #define P_BOW 21
 #define P_SLING 22
 #define P_CROSSBOW 23
 #define P_DART 24
 #define P_SHURIKEN 25
 #define P_BOOMERANG 26
 #define P_WHIP 27
 #define P_UNICORN_HORN 28 /* last weapon */
 #define P_FIRST_WEAPON P_DAGGER
 #define P_LAST_WEAPON P_UNICORN_HORN
 
 /* Spell Skills added by Larry Stewart-Zerba */
 #define P_ATTACK_SPELL 29
 #define P_HEALING_SPELL 30
 #define P_DIVINATION_SPELL 31
 #define P_ENCHANTMENT_SPELL 32
 #define P_CLERIC_SPELL 33
 #define P_ESCAPE_SPELL 34
 #define P_MATTER_SPELL 35
 #define P_FIRST_SPELL P_ATTACK_SPELL
 #define P_LAST_SPELL P_MATTER_SPELL
 
 /* Other types of combat */
 #define P_BARE_HANDED_COMBAT 36 /* actually weaponless; gloves are ok */
 #define P_MARTIAL_ARTS P_BARE_HANDED_COMBAT /* Role distinguishes */
 #define P_TWO_WEAPON_COMBAT 37              /* Finally implemented */
 #define P_RIDING 38 /* How well you control your steed */
 #define P_LAST_H_TO_H P_RIDING
 #define P_FIRST_H_TO_H P_BARE_HANDED_COMBAT
 
 #define P_NUM_SKILLS (P_LAST_H_TO_H + 1)
 
 /* These roles qualify for a martial arts bonus */
 #define martial_bonus() (Role_if(PM_SAMURAI) || Role_if(PM_MONK))
 
 /*
  * These are the standard weapon skill levels.  It is important that
  * the lowest "valid" skill be be 1.  The code calculates the
  * previous amount to practice by calling  practice_needed_to_advance()
  * with the current skill-1.  To work out for the UNSKILLED case,
  * a value of 0 needed.
  */
 #define P_ISRESTRICTED 0
 #define P_UNSKILLED 1
 #define P_BASIC 2
 #define P_SKILLED 3
 #define P_EXPERT 4
 #define P_MASTER 5       /* Unarmed combat/martial arts only */
 #define P_GRAND_MASTER 6 /* Unarmed combat/martial arts only */
 
 #define practice_needed_to_advance(level) ((level) * (level) *20)
 
 /* The hero's skill in various weapons. */
 struct skills {
     xchar skill;
     xchar max_skill;
     unsigned short advance;
 };
 
 #define P_SKILL(type) (u.weapon_skills[type].skill)
 #define P_MAX_SKILL(type) (u.weapon_skills[type].max_skill)
 #define P_ADVANCE(type) (u.weapon_skills[type].advance)
 #define P_RESTRICTED(type) (u.weapon_skills[type].skill == P_ISRESTRICTED)
 
 #define P_SKILL_LIMIT 60 /* Max number of skill advancements */
 
 /* Initial skill matrix structure; used in u_init.c and weapon.c */
 struct def_skill {
     xchar skill;
     xchar skmax;
 };
 
 #endif /* SKILLS_H */