About: Source:Hack 1.0/hack.u init.c   Sponge Permalink

An Entity of Type : owl:Thing, within Data Space : 134.155.108.49:8890 associated with source dataset(s)

Below is the full text to hack.u_init.c from the source code of Hack 1.0. To link to a particular line, write [[Hack 1.0/hack.u_init.c#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code

AttributesValues
rdfs:label
  • Source:Hack 1.0/hack.u init.c
rdfs:comment
  • Below is the full text to hack.u_init.c from the source code of Hack 1.0. To link to a particular line, write [[Hack 1.0/hack.u_init.c#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code
dcterms:subject
dbkwik:nethack/pro...iPageUsesTemplate
abstract
  • Below is the full text to hack.u_init.c from the source code of Hack 1.0. To link to a particular line, write [[Hack 1.0/hack.u_init.c#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1984. */ 2. 3. #include "hack.h" 4. #include 5. #include 6. #define Strcat (void) strcat 7. #define UNDEF_TYP 0 8. #define UNDEF_SPE (-1) 9. extern struct obj *addinv(); 10. extern char plname[]; 11. 12. char pl_character[PL_CSIZ]; 13. 14. struct trobj { 15. uchar trotyp; 16. schar trspe; 17. char trolet; 18. Bitfield(trquan,6); 19. Bitfield(trknown,1); 20. }; 21. 22. #ifdef WIZARD 23. struct trobj Extra_objs[] = { 24. { 0, 0, 0, 0, 0 }, 25. { 0, 0, 0, 0, 0 } 26. }; 27. #endif WIZARD 28. 29. struct trobj Cave_man[] = { 30. { MACE, 1, WEAPON_SYM, 1, 1 }, 31. { BOW, 1, WEAPON_SYM, 1, 1 }, 32. { ARROW, 0, WEAPON_SYM, 25, 1 }, /* quan is variable */ 33. { LEATHER_ARMOR, 2, ARMOR_SYM, 1, 1 }, 34. { 0, 0, 0, 0, 0} 35. }; 36. 37. struct trobj Fighter[] = { 38. { TWO_HANDED_SWORD, 0, WEAPON_SYM, 1, 1 }, 39. { RING_MAIL, 3, ARMOR_SYM, 1, 1 }, 40. { 0, 0, 0, 0, 0 } 41. }; 42. 43. struct trobj Knight[] = { 44. { LONG_SWORD, 0, WEAPON_SYM, 1, 1 }, 45. { SPEAR, 2, WEAPON_SYM, 1, 1 }, 46. { RING_MAIL, 4, ARMOR_SYM, 1, 1 }, 47. { HELMET, 1, ARMOR_SYM, 1, 1 }, 48. { SHIELD, 1, ARMOR_SYM, 1, 1 }, 49. { PAIR_OF_GLOVES, 1, ARMOR_SYM, 1, 1 }, 50. { 0, 0, 0, 0, 0 } 51. }; 52. 53. struct trobj Speleologist[] = { 54. { STUDDED_LEATHER_ARMOR, 3, ARMOR_SYM, 1, 1 }, 55. { UNDEF_TYP, 0, POTION_SYM, 2, 0 }, 56. { FOOD_RATION, 0, FOOD_SYM, 3, 1 }, 57. { ICE_BOX, 0, TOOL_SYM, 1, 0 }, 58. { 0, 0, 0, 0, 0} 59. }; 60. 61. struct trobj Tourist[] = { 62. { UNDEF_TYP, 0, FOOD_SYM, 10, 1 }, 63. { POT_EXTRA_HEALING, 0, POTION_SYM, 2, 0 }, 64. { EXPENSIVE_CAMERA, 0, TOOL_SYM, 1, 1 }, 65. { DART, 2, WEAPON_SYM, 25, 1 }, /* quan is variable */ 66. { 0, 0, 0, 0, 0 } 67. }; 68. 69. struct trobj Wizard[] = { 70. { ELVEN_CLOAK, 1, ARMOR_SYM, 1, 1 }, 71. { UNDEF_TYP, UNDEF_SPE, WAND_SYM, 2, 0 }, 72. { UNDEF_TYP, UNDEF_SPE, RING_SYM, 2, 0 }, 73. { UNDEF_TYP, UNDEF_SPE, POTION_SYM, 2, 0 }, 74. { UNDEF_TYP, UNDEF_SPE, SCROLL_SYM, 3, 0 }, 75. { 0, 0, 0, 0, 0 } 76. }; 77. 78. #ifdef NEWS 79. int u_in_infl; 80. 81. u_in_intrup(){ 82. u_in_infl++; 83. (void) signal(SIGINT, u_in_intrup); 84. } 85. #endif NEWS 86. 87. u_init(){ 88. register int c,pc,i; 89. #ifdef NEWS 90. /* It is not unlikely that we get an interrupt here 91. intended to kill the news; unfortunately this would 92. also kill (part of) the following question */ 93. int (*prevsig)() = signal(SIGINT, u_in_intrup); 94. #endif NEWS 95. register char *cp; 96. char buf[256]; 97. if(pc = pl_character[0]) goto got_suffix; 98. buf[0] = 0; 99. Strcat(buf, " Tell me what kind of character you are: "); 100. Strcat(buf, "Are you a Tourist, a Speleologist, a Fighter, "); 101. Strcat(buf, " a Knight, a Cave-man or a Wizard? [TSFKCW] "); 102. intrup: 103. for(cp = buf; *cp; cp++){ 104. #ifdef NEWS 105. if(u_in_infl){ 106. u_in_infl = 0; 107. goto intrup; 108. } 109. #endif NEWS 110. (void) putchar(*cp); 111. } 112. loop: 113. (void) fflush(stdout); 114. pc = 0; 115. while((c = getchar()) != ' ') { 116. if(c == EOF) { 117. #ifdef NEWS 118. if(u_in_infl) goto intrup; /* %% */ 119. #endif NEWS 120. settty(" End of input? "); 121. exit(0); 122. } 123. if(!pc) pc = c; 124. } 125. if(!pc || !index("TSFKCWtsfkcw", pc)){ 126. printf("Answer with T,S,F,K,C or W. What are you? "); 127. goto loop; 128. } 129. got_suffix: 130. if('a' <= pc && pc <= 'z') pc += 'A'-'a'; 131. 132. #ifdef NEWS 133. (void) signal(SIGINT,prevsig); 134. #endif NEWS 135. 136. u.usym = '@'; 137. u.ulevel = 1; 138. init_uhunger(); 139. u.uhpmax = u.uhp = 12; 140. u.ustrmax = u.ustr = !rn2(20) ? 14 + rn2(7) : 16; 141. #ifdef QUEST 142. u.uhorizon = 6; 143. #endif QUEST 144. switch(pc) { 145. case 'C': 146. setpl_char("Cave-man"); 147. Cave_man[2].trquan = 12 + rnd(9)*rnd(9); 148. u.uhp = u.uhpmax = 16; 149. u.ustr = u.ustrmax = 18; 150. ini_inv(Cave_man); 151. break; 152. case 'T': 153. setpl_char("Tourist"); 154. Tourist[3].trquan = 20 + rnd(20); 155. u.ugold = u.ugold0 = rnd(1000); 156. u.uhp = u.uhpmax = 10; 157. u.ustr = u.ustrmax = 8; 158. ini_inv(Tourist); 159. break; 160. case 'W': 161. setpl_char("Wizard"); 162. for(i=1; i<=4; i++) if(!rn2(5)) 163. Wizard[i].trquan += rn2(3) - 1; 164. u.uhp = u.uhpmax = 15; 165. u.ustr = u.ustrmax = 16; 166. ini_inv(Wizard); 167. break; 168. case 'S': 169. setpl_char("Speleologist"); 170. Fast = INTRINSIC; 171. Stealth = INTRINSIC; 172. u.uhp = u.uhpmax = 12; 173. u.ustr = u.ustrmax = 10; 174. ini_inv(Speleologist); 175. break; 176. case 'K': 177. setpl_char("Knight"); 178. u.uhp = u.uhpmax = 12; 179. u.ustr = u.ustrmax = 10; 180. ini_inv(Knight); 181. break; 182. case 'F': 183. setpl_char("Fighter"); 184. u.uhp = u.uhpmax = 14; 185. u.ustr = u.ustrmax = 17; 186. ini_inv(Fighter); 187. } 188. find_ac(); 189. /* make sure he can carry all he has - especially for T's */ 190. while(inv_weight() > 0 && u.ustr < 118) 191. u.ustr++, u.ustrmax++; 192. #ifdef WIZARD 193. if(wizard) wiz_inv(); 194. #endif WIZARD 195. } 196. 197. ini_inv(trop) register struct trobj *trop; { 198. register struct obj *obj; 199. extern struct obj *mkobj(); 200. while(trop->trolet) { 201. obj = mkobj(trop->trolet); 202. obj->known = trop->trknown; 203. obj->cursed = 0; 204. if(obj->olet == WEAPON_SYM){ 205. obj->quan = trop->trquan; 206. trop->trquan = 1; 207. } 208. if(trop->trspe != UNDEF_SPE) 209. obj->spe = trop->trspe; 210. if(trop->trotyp != UNDEF_TYP) 211. obj->otyp = trop->trotyp; 212. obj->owt = weight(obj); /* defined after setting otyp+quan */ 213. obj = addinv(obj); 214. if(obj->olet == ARMOR_SYM){ 215. switch(obj->otyp){ 216. case SHIELD: 217. if(!uarms) setworn(obj, W_ARMS); 218. break; 219. case HELMET: 220. if(!uarmh) setworn(obj, W_ARMH); 221. break; 222. case PAIR_OF_GLOVES: 223. if(!uarmg) setworn(obj, W_ARMG); 224. break; 225. case ELVEN_CLOAK: 226. if(!uarm2) 227. setworn(obj, W_ARM); 228. break; 229. default: 230. if(!uarm) setworn(obj, W_ARM); 231. } 232. } 233. if(obj->olet == WEAPON_SYM) 234. if(!uwep) setuwep(obj); 235. if(--trop->trquan) continue; /* make a similar object */ 236. trop++; 237. } 238. } 239. 240. #ifdef WIZARD 241. wiz_inv(){ 242. register struct trobj *trop = &Extra_objs[0]; 243. extern char *getenv(); 244. register char *ep = getenv("INVENT"); 245. register int type; 246. while(ep && *ep) { 247. type = atoi(ep); 248. ep = index(ep, ','); 249. if(ep) while(*ep == ',' || *ep == ' ') ep++; 250. if(type <= 0 || type > NROFOBJECTS) continue; 251. trop->trotyp = type; 252. trop->trolet = objects[type].oc_olet; 253. trop->trspe = 4; 254. trop->trknown = 1; 255. trop->trquan = 1; 256. ini_inv(trop); 257. } 258. /* give him a wand of wishing by default */ 259. trop->trotyp = WAN_WISHING; 260. trop->trolet = WAND_SYM; 261. trop->trspe = 20; 262. trop->trknown = 1; 263. trop->trquan = 1; 264. ini_inv(trop); 265. } 266. #endif WIZARD 267. 268. setpl_char(plc) char *plc; { 269. (void) strncpy(pl_character, plc, PL_CSIZ-1); 270. pl_character[PL_CSIZ-1] = 0; 271. } 272. 273. plnamesuffix() { 274. register char *p; 275. if(p = rindex(plname, '-')) { 276. *p = 0; 277. if(!plname[0]) { 278. askname(); 279. plnamesuffix(); 280. } 281. if(index("TSFKCWtsfkcw", p[1])) { 282. pl_character[0] = p[1]; 283. pl_character[1] = 0; 284. } 285. } 286. }
Alternative Linked Data Views: ODE     Raw Data in: CXML | CSV | RDF ( N-Triples N3/Turtle JSON XML ) | OData ( Atom JSON ) | Microdata ( JSON HTML) | JSON-LD    About   
This material is Open Knowledge   W3C Semantic Web Technology [RDF Data] Valid XHTML + RDFa
OpenLink Virtuoso version 07.20.3217, on Linux (x86_64-pc-linux-gnu), Standard Edition
Data on this page belongs to its respective rights holders.
Virtuoso Faceted Browser Copyright © 2009-2012 OpenLink Software