About: Source:NetHack 3.1.0/were.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 were.c from the source code of NetHack 3.1.0. To link to a particular line, write [[NetHack 3.1.0/were.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 3.1.0/were.c
rdfs:comment
  • Below is the full text to were.c from the source code of NetHack 3.1.0. To link to a particular line, write [[NetHack 3.1.0/were.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 were.c from the source code of NetHack 3.1.0. To link to a particular line, write [[NetHack 3.1.0/were.c#line123]], for example. Warning! This is the source code from an old release. For the latest release, see Source code 1. /* SCCS Id: @(#)were.c 3.1 93/01/17 */ 2. /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ 3. /* NetHack may be freely redistributed. See license for details. */ 4. 5. #include "hack.h" 6. 7. #ifdef OVL0 8. 9. void 10. were_change(mon) 11. register struct monst *mon; 12. { 13. register int pm = monsndx(mon->data); 14. 15. if(is_were(mon->data)) 16. if(is_human(mon->data)) { 17. if(Protection_from_shape_changers) return; 18. if(!rn2(50-(night()*20)) || flags.moonphase == FULL_MOON) { 19. new_were(mon); 20. if(mons[pm].msound == MS_BARK && flags.soundok) 21. You("hear a %s howling at the moon.", 22. pm == PM_HUMAN_WEREJACKAL ? "jackal" : "wolf"); 23. } 24. } else if(!rn2(30) || Protection_from_shape_changers) new_were(mon); 25. } 26. 27. #endif /* OVL0 */ 28. #ifdef OVLB 29. 30. static int FDECL(counter_were,(int)); 31. 32. static int 33. counter_were(pm) 34. int pm; 35. { 36. switch(pm) { 37. case PM_WEREWOLF: return(PM_HUMAN_WEREWOLF); 38. case PM_HUMAN_WEREWOLF: return(PM_WEREWOLF); 39. case PM_WEREJACKAL: return(PM_HUMAN_WEREJACKAL); 40. case PM_HUMAN_WEREJACKAL: return(PM_WEREJACKAL); 41. case PM_WERERAT: return(PM_HUMAN_WERERAT); 42. case PM_HUMAN_WERERAT: return(PM_WERERAT); 43. default: return(0); 44. } 45. } 46. 47. void 48. new_were(mon) 49. register struct monst *mon; 50. { 51. register int pm; 52. 53. pm = counter_were(monsndx(mon->data)); 54. if(!pm) { 55. impossible("unknown lycanthrope %s.", mon->data->mname); 56. return; 57. } 58. 59. if(canseemon(mon)) 60. pline("%s changes into a %s.", Monnam(mon), 61. Hallucination ? rndmonnam() : 62. is_human(&mons[pm]) ? "human" : 63. mons[pm].mname+4); 64. 65. mon->data = &mons[pm]; 66. if (mon->msleep || !mon->mcanmove) { 67. /* transformation wakens and/or revitalizes */ 68. mon->msleep = 0; 69. mon->mfrozen = 0; /* not asleep or paralyzed */ 70. mon->mcanmove = 1; 71. } 72. /* regenerate by 1/4 of the lost hit points */ 73. mon->mhp += (mon->mhpmax - mon->mhp) / 4; 74. newsym(mon->mx,mon->my); 75. #ifdef MUSE 76. mon_break_armor(mon); 77. possibly_unwield(mon); 78. #endif 79. } 80. 81. boolean 82. were_summon(ptr,yours) /* were-creature (even you) summons a horde */ 83. register struct permonst *ptr; 84. register boolean yours; 85. { 86. register int i, typ, pm = monsndx(ptr); 87. register struct monst *mtmp; 88. boolean success = FALSE; 89. 90. if(Protection_from_shape_changers && !yours) 91. return FALSE; 92. for(i = rnd(5); i > 0; i--) { 93. switch(pm) { 94. 95. case PM_WERERAT: 96. case PM_HUMAN_WERERAT: 97. typ = rn2(3) ? PM_SEWER_RAT : rn2(3) ? PM_GIANT_RAT : PM_RABID_RAT ; 98. break; 99. case PM_WEREJACKAL: 100. case PM_HUMAN_WEREJACKAL: 101. typ = PM_JACKAL; 102. break; 103. case PM_WEREWOLF: 104. case PM_HUMAN_WEREWOLF: 105. typ = rn2(5) ? PM_WOLF : PM_WINTER_WOLF ; 106. break; 107. default: 108. continue; 109. } 110. mtmp = makemon(&mons[typ], u.ux, u.uy); 111. if (mtmp) success = TRUE; 112. if (yours && mtmp) 113. (void) tamedog(mtmp, (struct obj *) 0); 114. } 115. return success; 116. } 117. 118. #ifdef POLYSELF 119. void 120. you_were() { 121. char qbuf[80]; 122. if(u.umonnum == u.ulycn) return; 123. if(Polymorph_control) { 124. Sprintf(qbuf,"Do you want to change into a %s? ", mons[u.ulycn].mname+4); 125. if(yn(qbuf) == 'n') return; 126. } 127. (void) polymon(u.ulycn); 128. } 129. #endif 130. 131. #endif /* OVLB */ 132. 133. /*were.c*/
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