About: Source:NetHack 1.3d/fountain.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 fountain.c from the source code of NetHack 1.3d. To link to a particular line, write [[NetHack 1.3d/fountain.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:NetHack 1.3d/fountain.c
rdfs:comment
  • Below is the full text to fountain.c from the source code of NetHack 1.3d. To link to a particular line, write [[NetHack 1.3d/fountain.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 fountain.c from the source code of NetHack 1.3d. To link to a particular line, write [[NetHack 1.3d/fountain.c#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* SCCS Id: @(#)fountain.c 1.3 87/07/14 2. /* fountain.c v 1.4.1 */ 3. 4. /* 5. * Revision 1.4.1 87/05/20 11:53:00 M. Stephenson 6. * Implementation of KAA bug fixes. 7. * 8. * Revision 1.4 87/05/04 17:39:00 M. Stephenson 9. * Integration of independent modifications 10. * 11. * Revision 1.3 87/03/02 Eric Backus 12. * Rearranged, and dipfountain added 13. * 14. * Revision 1.2 87/03/01 13:59:59 gil 15. * patches 16. * 17. * Revision 1.1 87/02/11 15:14:10 gil 18. * Initial revision 19. * 20. */ 21. 22. /* Code for drinking from fountains. */ 23. /* Scott R. Turner, srt@ucla, 10/27/86 */ 24. 25. #include "hack.h" 26. 27. extern struct monst *mkmon_at(); 28. extern char genocided[]; 29. 30. #ifdef FOUNTAINS 31. #define somex() ((rand()%(croom->hx-croom->lx+1))+croom->lx) 32. #define somey() ((rand()%(croom->hy-croom->ly+1))+croom->ly) 33. 34. dowatersnakes() /* Fountain of snakes! */ { 35. register int num = rnd(6); 36. if (!index(genocided, 'S')) { 37. 38. pline("Good Lord! An endless stream of snakes pours forth!"); 39. while(num-- > 0) (void) mkmon_at('S',u.ux,u.uy); 40. } else 41. pline("The fountain bubbles furiously for a moment, then calms."); 42. } 43. 44. dowaterdemon() /* Water demon */ { 45. register struct monst *mtmp; 46. 47. pline("You have unleashed a water demon!"); 48. mtmp = mkmon_at('&',u.ux,u.uy); 49. if (rnd(100)>97) { 50. pline("He is grateful for his release and grants you a wish!"); 51. makewish(); 52. mondied(mtmp); 53. } 54. } 55. 56. dowaternymph() /* Water Nymph */ { 57. register struct monst *mtmp; 58. if(!index(genocided, 'N')) { 59. 60. pline("You have attracted a water nymph!"); 61. mtmp = mkmon_at('N',u.ux,u.uy); 62. mtmp->msleep = 0; 63. } else 64. pline("A large bubble rises to the surface and pops."); 65. } 66. 67. #include "mkroom.h" 68. 69. dogushforth() /* Gushing forth in this room */ { 70. register int num = rnd(10); 71. register xchar mx,my; 72. register int tryct = 0; 73. register int uroom = inroom(u.ux, u.uy); 74. register struct mkroom *croom = &rooms[uroom]; 75. register int madepool = 0; 76. 77. if(croom->hx < 0 || has_upstairs(croom) || 78. has_dnstairs(croom)) { 79. pline("Your thirst is quenched."); 80. return; 81. } 82. while(num--) { 83. do { 84. if(++tryct > 200) { 85. if(madepool) 86. pline("Water gushes forth from the overflowing fountain!"); 87. else 88. pline("Your thirst is quenched."); 89. return; 90. } 91. mx = somex(); 92. my = somey(); 93. } while(nexttodoor(mx,my) || !((mx+my)%2) || 94. (mx == u.ux && my == u.uy) || 95. (IS_POOL(levl[mx][my].typ))); 96. 97. /* Put a pool at mx, my */ 98. 99. levl[mx][my].typ = POOL; 100. atl(mx,my,POOL_SYM); 101. madepool = 1; 102. } 103. 104. pline("Water gushes forth from the overflowing fountain!"); 105. } 106. 107. dofindgem() /* Find a gem in the sparkling waters. */ { 108. 109. if (!Blind) pline("You spot a gem in the sparkling waters!"); 110. mkobj_at('*',u.ux,u.uy); 111. } 112. 113. dryup(){ 114. if (!rn2(5) && (levl[u.ux][u.uy].typ == FOUNTAIN)) { 115. pline("The fountain dries up!"); 116. levl[u.ux][u.uy].typ = ROOM; 117. if(Invis) newsym(u.ux, u.uy); 118. } 119. } 120. 121. drinkfountain(){ 122. 123. /* What happens when you drink from a fountain? */ 124. 125. register int fate = rnd(30); 126. 127. if (fate < 10) { 128. pline("The cool draught refreshes you."); 129. lesshungry(rnd(10)); 130. } 131. else 132. switch (fate) { 133. 134. case 20: /* Foul water */ 135. 136. pline("The water is foul! You gag and vomit."); 137. morehungry(rnd(20)+10); 138. if(Sick) { 139. Sick = 0; 140. pline("What a relief!"); 141. } 142. break; 143. 144. case 21: /* Poisonous */ 145. 146. pline("The water is contaminated!"); 147. if (Poison_resistance) { 148. pline("Perhaps it is run off from the nearby orange farm."); 149. losehp(rnd(4),"contaminated water"); 150. break; 151. } 152. losestr(rn1(4,3)); 153. losehp(rnd(10),"contaminated water"); 154. break; 155. 156. case 22: /* Fountain of snakes! */ 157. dowatersnakes(); 158. break; 159. 160. case 23: /* Water demon */ 161. dowaterdemon(); 162. break; 163. 164. case 24: /* Curse an item... */ { 165. register struct obj *obj; 166. 167. pline("This water's no good!"); 168. morehungry(rnd(20)+10); 169. for(obj = invent; obj ; obj = obj->nobj) 170. if (!rn2(5)) obj->cursed++; 171. break; 172. } 173. 174. case 25: /* See invisible */ 175. 176. pline("You see an image of someone stalking you."); 177. pline("But it disappears."); 178. HSee_invisible |= INTRINSIC; 179. break; 180. 181. case 26: /* See Monsters */{ 182. 183. register struct monst *mtmp; 184. if(!fmon) { 185. pline("You feel oddly disturbed."); 186. } else { 187. cls(); 188. for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) 189. if(mtmp->mx > 0) 190. at(mtmp->mx,mtmp->my,mtmp->data->mlet); 191. prme(); 192. pline("You sense the presence of monsters."); 193. more(); 194. docrt(); 195. } 196. break; } 197. 198. case 27: /* Find a gem in the sparkling waters. */ 199. dofindgem(); 200. break; 201. 202. case 28: /* Water Nymph */ 203. dowaternymph(); 204. break; 205. 206. case 29: /* Scare */ { 207. register struct monst *mtmp; 208. 209. pline("This water gives you bad breath!"); 210. for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) 211. mtmp->mflee = 1; 212. } 213. break; 214. 215. case 30: /* Gushing forth in this room */ 216. dogushforth(); 217. break; 218. } 219. 220. dryup(); 221. 222. } 223. 224. dipfountain(obj) 225. register struct obj *obj; 226. { 227. register int fate = rnd(30); 228. 229. if(fate<10) 230. if(!obj->rustfree && 231. /* Only swords affected here */ 232. (obj->otyp == LONG_SWORD || 233. obj->otyp == KATANA || 234. obj->otyp == BROAD_SWORD || 235. obj->otyp == SHORT_SWORD || 236. obj->otyp == TWO_HANDED_SWORD)) { 237. if(obj->spe > -6) { 238. pline("Your weapon rusts somewhat."); 239. obj->spe--; 240. } else pline("Your weapon looks quite rusted."); 241. } else pline("Well, it looks wet now."); 242. else if(fate<14) 243. if(obj->otyp == LONG_SWORD && !strcmp(ONAME(obj),"Excalibur")){ 244. /* The lady of the lake acts! - Eric Backus */ 245. /* Be *REAL* nice to him */ 246. pline("A murky hand from the depths reaches up to bless the sword."); 247. pline("As the hand retreats, the fountain disappears!"); 248. if(obj->spe < 5) obj->spe = 5; 249. obj->cursed = 0; 250. obj->rustfree = 1; 251. levl[u.ux][u.uy].typ = ROOM; 252. if(Invis) newsym(u.ux, u.uy); 253. return(0); 254. } else pline ("Well, it looks wet now."); 255. else 256. switch (fate) { 257. case 16: /* Curse the item */ 258. pline("Well, it looks wet now."); 259. obj->cursed = 1; 260. break; 261. case 17: 262. case 18: 263. case 19: 264. case 20: /* Uncurse the item */ 265. if(obj->cursed) { 266. pline("The water glows for a moment."); 267. obj->cursed = 0; 268. } else { 269. pline("A feeling of loss comes over you."); 270. } 271. break; 272. case 21: /* Water Demon */ 273. dowaterdemon(); 274. break; 275. case 22: /* Water Nymph */ 276. dowaternymph(); 277. break; 278. case 23: /* An Endless Stream Of Snakes */ 279. dowatersnakes(); 280. break; 281. case 24: /* Find a gem */ 282. dofindgem(); 283. break; 284. case 25: /* Water gushes forth */ 285. dogushforth(); 286. break; 287. case 26: /* Strange feeling */ 288. pline("A strange tingling runs up your arm."); 289. break; 290. case 27: /* Strange feeling */ 291. pline("You feel a sudden chill."); 292. break; 293. case 28: /* Strange feeling */ 294. pline("An urge to take a bath nearly overwhelms you."); 295. break; 296. case 29: /* You see coins */ 297. pline("Far below you, you see coins glistening in the water."); 298. break; 299. default: 300. break; 301. } 302. dryup(); 303. return(0); 304. } 305. #endif
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