Difference between revisions of "Source:NetHack 2.2a/pray.c"
Jump to navigation
Jump to search
m (Automated source code upload) |
Kernigh bot (talk | contribs) m (NetHack 2.2a/pray.c moved to Source:NetHack 2.2a/pray.c: Robot: moved page) |
(No difference)
|
Latest revision as of 02:37, 4 March 2008
Below is the full text to pray.c from the source code of NetHack 2.2a. To link to a particular line, write [[NetHack 2.2a/pray.c#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. /* SCCS Id: @(#)pray.c 2.1 87/10/07 2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. 4. #include "hack.h" 5. 6. extern char *nomovemsg; 7. extern struct monst *mkmon_at(); 8. extern struct obj *mkobj_at(); 9. 10. dopray() { /* M. Stephenson (1.0.3b) */ 11. #ifdef PRAYERS 12. if (u.ublesscnt > 0) { /* disturbing the gods too much */ 13. 14. u.ublesscnt += 200; 15. u.uluck -= 3; 16. if (u.uluck < LUCKMIN) u.uluck = LUCKMIN; 17. #ifdef HARD 18. u.ugangr++; 19. angrygods(); 20. #else 21. if (u.ugangr++) angrygods(); 22. else { /* exactly one warning */ 23. pline("A voice booms out: You have angered us,"); 24. pline("Disturb us again at your own risk!"); 25. } 26. #endif 27. } else if (u.uluck < 0) angrygods(); /* a bad boy/girl */ 28. else pleased(); /* or a good boy/girl */ 29. #endif 30. nomovemsg = "You finished your prayer."; 31. nomul(-3); 32. return(1); 33. } 34. 35. #ifdef PRAYERS 36. angrygods() { 37. register int tmp; 38. 39. pline ("You get the feeling the gods are angry..."); 40. /* changed from tmp = u.ugangr + abs (u.uluck) -- rph */ 41. tmp = 3*u.ugangr + (u.uluck > 0 ? -u.uluck/3 : -u.uluck); 42. tmp = (tmp > 15 ? 15 : tmp); /* lets be a little reasonable */ 43. switch (tmp ? rn2(tmp): 0) { 44. 45. case 0: 46. case 1: pline("but nothing appears to happen."); 47. break; 48. case 2: 49. case 3: pline("A voice booms out: You are arrogant, mortal."); 50. pline("You must relearn your lessons!"); 51. if (u.ulevel > 1) losexp(); 52. else { 53. u.uexp = 0; 54. flags.botl = 1; 55. } 56. break; 57. case 4: 58. case 5: 59. case 6: pline("A black glow surrounds you."); 60. rndcurse(); 61. break; 62. case 7: 63. case 8: pline("A voice booms out: You dare to call upon us?"); 64. pline("Then, die mortal!"); 65. mkmon_at('&', u.ux, u.uy); 66. break; 67. 68. default: pline("Suddenly, a bolt of lightning strikes you!"); 69. pline("You are fried to a crisp."); 70. killer = "pissed off deity"; 71. done("died"); 72. break; 73. } 74. u.ublesscnt = 250; 75. return(0); 76. } 77. 78. pleased() { 79. 80. char *tmp, *hcolor(); 81. 82. u.ugangr--; 83. if (u.ugangr < 0) u.ugangr = 0; 84. pline("You feel the gods are pleased."); 85. 86. switch(rn2((u.uluck + 6)/2)) { 87. 88. case 0: pline("but nothing seems to happen."); 89. break; 90. case 1: 91. if(!uwep) { 92. if(uleft && uleft->cursed) { 93. pline("your left hand glows amber."); 94. uleft->cursed = 0; 95. } else if(uright && uright->cursed) { 96. pline("your right hand glows amber."); 97. uright->cursed = 0; 98. } else pline("but nothing seems to happen."); 99. break; 100. } 101. #ifdef KAA 102. if(uwep->olet == WEAPON_SYM) { 103. if (uwep->cursed) { 104. uwep->cursed=0; 105. pline("Your %s %s.", aobjnam(uwep,"softly glow"), 106. Hallucination ? hcolor() : "amber"); 107. } else if(uwep->otyp >= ARROW && uwep->otyp <= SPEAR) { 108. uwep->dknown=1; 109. tmp = Hallucination ? hcolor() : "light blue"; 110. pline("Your %s with a%s %s aura.", aobjnam(uwep,"softly glow"), 111. index("aeiou",*tmp) ? "n" : "", tmp); 112. } 113. } else 114. #endif 115. pline("but nothing seems to happen."); 116. break; 117. case 2: 118. case 3: 119. pline("A %s glow surrounds you", 120. Hallucination ? hcolor() : "golden"); 121. u.uhp = u.uhpmax += 5; 122. u.ustr = u.ustrmax; 123. if (u.uhunger < 900) init_uhunger(); 124. if (u.uluck < 0) u.uluck = 0; 125. if (Blinded) Blinded = 1; 126. flags.botl = 1; 127. break; 128. case 4: 129. case 5: pline("A voice booms out: We are pleased with your progress,"); 130. pline("and grant you the gift of"); 131. if (!(HTelepat & INTRINSIC)) { 132. HTelepat |= INTRINSIC; 133. pline ("Telepathy,"); 134. } else if (!(Fast & INTRINSIC)) { 135. Fast |= INTRINSIC; 136. pline ("Speed,"); 137. } else if (!(Stealth & INTRINSIC)) { 138. Stealth |= INTRINSIC; 139. pline ("Stealth,"); 140. } else { 141. if (!(Protection & INTRINSIC)) { 142. Protection |= INTRINSIC; 143. if (!u.ublessed) u.ublessed = rnd(3) + 1; 144. } else u.ublessed++; 145. pline ("our protection,"); 146. } 147. pline ("Use it wisely in our names!"); 148. break; 149. 150. case 6: pline ("An object appears at your feet!"); 151. #ifdef SPELLS 152. mkobj_at('+', u.ux, u.uy); 153. #else 154. mkobj_at('?', u.ux, u.uy); 155. #endif 156. break; 157. 158. case 7: pline("A voice booms out: We crown thee..."); 159. pline("The Hand of Elbereth!"); 160. HInvis |= INTRINSIC; 161. HSee_invisible |= INTRINSIC; 162. HFire_resistance |= INTRINSIC; 163. HCold_resistance |= INTRINSIC; 164. HPoison_resistance |= INTRINSIC; 165. #ifdef RPH 166. if(uwep && (uwep->otyp == LONG_SWORD)) 167. oname(uwep, "Excalibur"); 168. #endif 169. break; 170. 171. default: impossible("Confused deity!"); 172. break; 173. } 174. u.ublesscnt = 300; 175. #ifdef HARD 176. u.ublesscnt += (u.udemigod * 1000); 177. #endif 178. return(0); 179. } 180. #endif /* PRAYERS /**/ 181. #ifdef NEWCLASS 182. doturn() { /* Knights & Priest(esse)s only please */ 183. 184. register struct monst *mtmp; 185. register int xlev = 6; 186. extern char pl_character[]; 187. 188. if((pl_character[0] != 'P') && 189. (pl_character[0] != 'K')) { 190. 191. pline("You don't know how to turn undead!"); 192. return(0); 193. } 194. if (Inhell) { 195. 196. pline("Being in hell, your gods won't help you."); 197. aggravate(); 198. return(0); 199. } 200. pline("Calling upon your gods, you chant an arcane formula."); 201. for(mtmp = fmon; mtmp; mtmp = mtmp->nmon) 202. if(cansee(mtmp->mx,mtmp->my)) { 203. if(index(UNDEAD,mtmp->data->mlet) || 204. ((mtmp->data->mlet == '&') && (u.ulevel > 10))) { 205. 206. if(Confusion) { 207. pline("Unfortunately, your voice falters."); 208. mtmp->mflee = mtmp->mfroz = mtmp->msleep = 0; 209. } else if (! resist(mtmp, '+', 0, TELL)) 210. switch (mtmp->data->mlet) { 211. case 'V': xlev += 2; 212. case 'W': xlev += 4; 213. case 'Z': if(u.ulevel >= xlev) { 214. if(!resist(mtmp, '+', 0, NOTELL)) { 215. pline("You destroy the %s", monnam(mtmp)); 216. mondied(mtmp); 217. } else mtmp->mflee = 1; 218. } else mtmp->mflee = 1; 219. break; 220. default: mtmp->mflee = 1; 221. break; 222. } 223. } 224. } 225. nomul(-5); 226. return(1); 227. } 228. #endif /* NEWCLASS /**/ 229.