About: Source:Hack 1.0/mklv.shk.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 mklv.shk.c from the source code of Hack 1.0. To link to a particular line, write [[Hack 1.0/mklv.shk.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/mklv.shk.c
rdfs:comment
  • Below is the full text to mklv.shk.c from the source code of Hack 1.0. To link to a particular line, write [[Hack 1.0/mklv.shk.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 mklv.shk.c from the source code of Hack 1.0. To link to a particular line, write [[Hack 1.0/mklv.shk.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. #ifndef QUEST 4. #include "mklev.h" 5. #include "def.eshk.h" 6. #define ESHK ((struct eshk *)(&(shk->mextra[0]))) 7. extern struct monst *makemon(); 8. 9. char shtypes[] = "=/)%?!["; /* 8 shoptypes: 7 specialised, 1 mixed */ 10. schar shprobs[] = { 3,3,5,5,10,10,14,50 }; /* their probabilities */ 11. 12. mkshop(){ 13. register struct mkroom *sroom; 14. register int sh,sx,sy,i; 15. register char let; 16. int roomno; 17. register struct monst *shk; 18. for(sroom = &rooms[0], roomno = 0; ; sroom++, roomno++){ 19. if(sroom->hx < 0) return; 20. if(sroom->lx <= xdnstair && xdnstair <= sroom->hx && 21. sroom->ly <= ydnstair && ydnstair <= sroom->hy) continue; 22. if(sroom->lx <= xupstair && xupstair <= sroom->hx && 23. sroom->ly <= yupstair && yupstair <= sroom->hy) continue; 24. if( 25. #ifdef WIZARD 26. wizard || 27. #endif WIZARD 28. sroom->doorct == 1) break; 29. } 30. #ifdef WIZARD 31. if(wizard){ 32. extern char *getenv(); 33. register char *ep = getenv("SHOPTYPE"); 34. if(ep){ 35. if(*ep == 'z' || *ep == 'Z'){ 36. mkzoo(); 37. return; 38. } 39. for(i=0; shtypes[i]; i++) 40. if(*ep == shtypes[i]) break; 41. let = i; 42. goto gotlet; 43. } 44. } 45. #endif WIZARD 46. for(i = rn2(100),let = 0; (i -= shprobs[let])>= 0; let++) 47. if(!shtypes[let]) break; /* superfluous */ 48. #ifdef WIZARD 49. gotlet: 50. #endif WIZARD 51. sroom->rtype = 8+let; 52. let = shtypes[let]; 53. sh = sroom->fdoor; 54. sx = doors[sh].x; 55. sy = doors[sh].y; 56. if(sx == sroom->lx-1) sx++; else 57. if(sx == sroom->hx+1) sx--; else 58. if(sy == sroom->ly-1) sy++; else 59. if(sy == sroom->hy+1) sy--; else { 60. printf("Where is shopdoor?"); 61. return; 62. } 63. if(!(shk = makemon(PM_SHK,sx,sy))) return; 64. shk->isshk = shk->mpeaceful = 1; 65. shk->msleep = 0; 66. shk->mtrapseen = ~0; /* we know all the traps already */ 67. ESHK->shoproom = roomno; 68. ESHK->shd = doors[sh]; 69. ESHK->shk.x = sx; 70. ESHK->shk.y = sy; 71. ESHK->robbed = 0; 72. ESHK->visitct = 0; 73. shk->mgold = 1000 + 30*rnd(100); /* initial capital */ 74. ESHK->billct = 0; 75. findname(ESHK->shknam, let); 76. for(sx = sroom->lx; sx <= sroom->hx; sx++) 77. for(sy = sroom->ly; sy <= sroom->hy; sy++){ 78. register struct monst *mtmp; 79. if((sx == sroom->lx && doors[sh].x == sx-1) || 80. (sx == sroom->hx && doors[sh].x == sx+1) || 81. (sy == sroom->ly && doors[sh].y == sy-1) || 82. (sy == sroom->hy && doors[sh].y == sy+1)) continue; 83. if(rn2(100) < dlevel && !m_at(sx,sy) && 84. (mtmp = makemon(PM_MIMIC, sx, sy))){ 85. mtmp->mimic = 86. (let && rn2(10) < dlevel) ? let : ']'; 87. continue; 88. } 89. mkobj_at(let, sx, sy); 90. } 91. #ifdef WIZARD 92. if(wizard) printf("I made a %c-shop.", let ? let : 'g'); 93. #endif WIZARD 94. } 95. 96. mkzoo(){ 97. register struct mkroom *sroom; 98. register int sh,sx,sy,i; 99. int goldlim = 500 * dlevel; 100. for(sroom = &rooms[0]; ; sroom++){ 101. if(sroom->hx < 0) return; 102. if(sroom->lx <= xdnstair && xdnstair <= sroom->hx && 103. sroom->ly <= ydnstair && ydnstair <= sroom->hy) continue; 104. if(sroom->lx <= xupstair && xupstair <= sroom->hx && 105. sroom->ly <= yupstair && yupstair <= sroom->hy) continue; 106. if(sroom->doorct == 1) break; 107. } 108. sroom->rtype = 7; 109. sh = sroom->fdoor; 110. for(sx = sroom->lx; sx <= sroom->hx; sx++) 111. for(sy = sroom->ly; sy <= sroom->hy; sy++){ 112. if((sx == sroom->lx && doors[sh].x == sx-1) || 113. (sx == sroom->hx && doors[sh].x == sx+1) || 114. (sy == sroom->ly && doors[sh].y == sy-1) || 115. (sy == sroom->hy && doors[sh].y == sy+1)) continue; 116. (void) makemon((struct permonst *) 0,sx,sy); 117. i = sq(dist2(sx,sy,doors[sh].x,doors[sh].y)); 118. if(i >= goldlim) i = 5*dlevel; 119. goldlim -= i; 120. mkgold(10 + rn2(i), sx, sy); 121. } 122. #ifdef WIZARD 123. if(wizard) printf("I made a zoo."); 124. #endif WIZARD 125. } 126. 127. dist2(x0,y0,x1,y1){ 128. return((x0-x1)*(x0-x1) + (y0-y1)*(y0-y1)); 129. } 130. 131. sq(a) int a; { 132. return(a*a); 133. } 134. #endif QUEST
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