Difference between revisions of "Source:Hack 1.0/hack.h"
Jump to navigation
Jump to search
m (Automated source code upload) |
Kernigh bot (talk | contribs) m (Hack 1.0/hack.h moved to Source:Hack 1.0/hack.h: Robot: moved page) |
(No difference)
|
Latest revision as of 22:22, 3 March 2008
Below is the full text to hack.h from the source code of Hack 1.0. To link to a particular line, write [[Hack 1.0/hack.h#line123]], for example.
Warning! This is the source code from an old release. For the latest release, see Source code
Screenshots and source code from Hack are used under the CWI license.
1. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */ 2. 3. #include "mklev.h" 4. #include "hack.onames.h" 5. 6. #define ON 1 7. #define OFF 0 8. 9. extern struct obj *invent, *uwep, *uarm, *uarm2, *uarmh, *uarms, *uarmg, 10. *uleft, *uright, *fcobj; 11. extern struct obj *uchain; /* defined iff PUNISHED */ 12. extern struct obj *uball; /* defined if PUNISHED */ 13. struct obj *o_at(), *getobj(), *sobj_at(); 14. 15. struct flag { 16. unsigned ident; /* social security number for each monster */ 17. unsigned topl:2; /* a top line (message) has been printed */ 18. /* 0: top line empty; 2: no --More-- reqd. */ 19. unsigned cbreak:1; /* in cbreak mode, rogue format */ 20. unsigned oneline:1; /* give inventories 1 line at a time */ 21. unsigned move:1; 22. unsigned mv:1; 23. unsigned run:3; /* 0: h (etc), 1: H (etc), 2: fh (etc) */ 24. /* 3: FH, 4: ff+, 5: ff-, 6: FF+, 7: FF- */ 25. unsigned nopick:1; /* do not pickup objects */ 26. unsigned echo:1; /* 1 to echo characters */ 27. unsigned botl:1; /* partially redo status line */ 28. unsigned botlx:1; /* print an entirely new bottom line */ 29. unsigned nscrinh:1; /* inhibit nscr() in pline(); */ 30. }; 31. extern struct flag flags; 32. 33. struct prop { 34. #define TIMEOUT 007777 /* mask */ 35. #define LEFT_RING W_RINGL /* 010000L */ 36. #define RIGHT_RING W_RINGR /* 020000L */ 37. #define INTRINSIC 040000L 38. #define LEFT_SIDE LEFT_RING 39. #define RIGHT_SIDE RIGHT_RING 40. #define BOTH_SIDES (LEFT_SIDE | RIGHT_SIDE) 41. long p_flgs; 42. int (*p_tofn)(); /* called after timeout */ 43. }; 44. 45. struct you { 46. xchar ux, uy; 47. schar dx, dy; /* direction of fast move */ 48. #ifdef QUEST 49. schar di; /* direction of FF */ 50. xchar ux0, uy0; /* initial position FF */ 51. #endif QUEST 52. xchar udisx, udisy; /* last display pos */ 53. char usym; /* usually '@' */ 54. schar uluck; 55. int last_str_turn:3; /* 0: none, 1: half turn, 2: full turn */ 56. /* +: turn right, -: turn left */ 57. unsigned udispl:1; /* @ on display */ 58. unsigned ulevel:5; 59. #ifdef QUEST 60. unsigned uhorizon:7; 61. #endif QUEST 62. unsigned utrap:3; /* trap timeout */ 63. unsigned utraptype:1; /* defined if utrap nonzero */ 64. #define TT_BEARTRAP 0 65. #define TT_PIT 1 66. unsigned uinshop:1; 67. 68. 69. /* perhaps these #define's should also be generated by makedefs */ 70. #define TELEPAT LAST_RING /* not a ring */ 71. #define Telepat u.uprops[TELEPAT].p_flgs 72. #define FAST (LAST_RING+1) /* not a ring */ 73. #define Fast u.uprops[FAST].p_flgs 74. #define CONFUSION (LAST_RING+2) /* not a ring */ 75. #define Confusion u.uprops[CONFUSION].p_flgs 76. #define INVIS (LAST_RING+3) /* not a ring */ 77. #define Invis u.uprops[INVIS].p_flgs 78. #define GLIB (LAST_RING+4) /* not a ring */ 79. #define Glib u.uprops[GLIB].p_flgs 80. #define PUNISHED (LAST_RING+5) /* not a ring */ 81. #define Punished u.uprops[PUNISHED].p_flgs 82. #define SICK (LAST_RING+6) /* not a ring */ 83. #define Sick u.uprops[SICK].p_flgs 84. #define BLIND (LAST_RING+7) /* not a ring */ 85. #define Blind u.uprops[BLIND].p_flgs 86. #define WOUNDED_LEGS (LAST_RING+8) /* not a ring */ 87. #define Wounded_legs u.uprops[WOUNDED_LEGS].p_flgs 88. #define PROP(x) (x-RIN_ADORNMENT) /* convert ring to index in uprops */ 89. unsigned umconf:1; 90. char *usick_cause; 91. struct prop uprops[LAST_RING+9]; 92. 93. unsigned uswallow:1; /* set if swallowed by a monster */ 94. unsigned uswldtim:4; /* time you have been swallowed */ 95. unsigned uhs:3; /* hunger state - see hack.eat.c */ 96. schar ustr,ustrmax; 97. schar udaminc; 98. schar uac; 99. int uhp,uhpmax; 100. long int ugold,ugold0,uexp,urexp; 101. int uhunger; /* refd only in eat.c and shk.c */ 102. int uinvault; 103. struct monst *ustuck; 104. int nr_killed[CMNUM+2]; /* used for experience bookkeeping */ 105. }; 106. 107. extern struct you u; 108. 109. extern char *traps[]; 110. extern char *plur(), *monnam(), *Monnam(), *amonnam(), *Amonnam(), 111. *doname(), *aobjnam(); 112. extern char readchar(); 113. extern char vowels[]; 114. 115. extern xchar curx,cury; /* cursor location on screen */ 116. 117. extern coord bhitpos; /* place where thrown weapon falls to the ground */ 118. 119. extern xchar seehx,seelx,seehy,seely; /* where to see*/ 120. extern char *save_cm,*killer; 121. 122. extern xchar dlevel, maxdlevel; /* dungeon level */ 123. 124. extern long moves; 125. 126. extern int multi; 127. 128. 129. extern char lock[]; 130. 131. 132. #define DIST(x1,y1,x2,y2) (((x1)-(x2))*((x1)-(x2)) + ((y1)-(y2))*((y1)-(y2))) 133. 134. #define PL_CSIZ 20 /* sizeof pl_character */ 135. #define MAX_CARR_CAP 120 /* so that boulders can be heavier */ 136. #define FAR (COLNO+2) /* position outside screen */