Mercurial > hg > early-roguelike
annotate arogue5/scrolls.c @ 237:2236ef808bcb
XRogue: fix some uses of entire structs instead of their members.
Some calls to runto() were given a pointer to the player struct instead
of to the player's coordinates.  A call to death() was passed a pointer
to a monster instead of the monster's type number.
| author | John "Elwin" Edwards | 
|---|---|
| date | Tue, 08 Mar 2016 20:47:57 -0500 | 
| parents | 56e748983fa8 | 
| children | 
| rev | line source | 
|---|---|
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 1 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 2 * Read a scroll and let it happen | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 3 * | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 4 * Advanced Rogue | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 5 * Copyright (C) 1984, 1985 Michael Morgan, Ken Dalka and AT&T | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 6 * All rights reserved. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 7 * | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 8 * Based on "Rogue: Exploring the Dungeons of Doom" | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 9 * Copyright (C) 1980, 1981 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 10 * All rights reserved. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 11 * | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 12 * See the file LICENSE.TXT for full copyright and licensing information. | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 13 */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 14 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 15 #include "curses.h" | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 16 #include <ctype.h> | 
| 67 | 17 #include <stdlib.h> | 
| 18 #include <string.h> | |
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 19 #include "rogue.h" | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 20 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 21 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 22 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 23 /* | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 24 * let the hero get rid of some type of monster (but not a UNIQUE!) | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 25 */ | 
| 218 
56e748983fa8
Advanced Rogue 5: convert to ANSI function declarations.
 John "Elwin" Edwards parents: 
170diff
changeset | 26 void | 
| 
56e748983fa8
Advanced Rogue 5: convert to ANSI function declarations.
 John "Elwin" Edwards parents: 
170diff
changeset | 27 genocide(void) | 
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 28 { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 29 register struct linked_list *ip; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 30 register struct thing *mp; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 31 register int i; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 32 register struct linked_list *nip; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 33 register int num_monst = NUMMONST-NUMUNIQUE-1, /* cannot genocide uniques */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 34 pres_monst=1, | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 35 num_lines=2*(LINES-3); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 36 register int which_monst; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 37 char monst_name[40]; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 38 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 39 /* Print out the monsters */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 40 while (num_monst > 0) { | 
| 218 
56e748983fa8
Advanced Rogue 5: convert to ANSI function declarations.
 John "Elwin" Edwards parents: 
170diff
changeset | 41 int left_limit; | 
| 63 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 42 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 43 if (num_monst < num_lines) left_limit = (num_monst+1)/2; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 44 else left_limit = num_lines/2; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 45 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 46 wclear(hw); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 47 touchwin(hw); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 48 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 49 /* Print left column */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 50 wmove(hw, 2, 0); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 51 for (i=0; i<left_limit; i++) { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 52 sprintf(monst_name, | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 53 "[%d] %c%s\n", | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 54 pres_monst, | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 55 monsters[pres_monst].m_normal ? ' ' : '*', | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 56 monsters[pres_monst].m_name); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 57 waddstr(hw, monst_name); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 58 pres_monst++; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 59 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 60 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 61 /* Print right column */ | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 62 for (i=0; i<left_limit && pres_monst<=NUMMONST-NUMUNIQUE-1; i++) { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 63 sprintf(monst_name, | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 64 "[%d] %c%s\n", | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 65 pres_monst, | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 66 monsters[pres_monst].m_normal ? ' ' : '*', | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 67 monsters[pres_monst].m_name); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 68 wmove(hw, i+2, COLS/2); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 69 waddstr(hw, monst_name); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 70 pres_monst++; | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 71 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 72 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 73 if ((num_monst -= num_lines) > 0) { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 74 mvwaddstr(hw, LINES-1, 0, morestr); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 75 draw(hw); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 76 wait_for(hw,' '); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 77 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 78 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 79 else { | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 80 mvwaddstr(hw, 0, 0, "Which monster"); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 81 if (!terse) waddstr(hw, " do you wish to wipe out"); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 82 waddstr(hw, "? "); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 83 draw(hw); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 84 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 85 } | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 86 | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 87 get_monst: | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 88 get_str(monst_name, hw); | 
| 
0ed67132cf10
Import Advanced Rogue 5.8 from the Roguelike Restoration Project (r1490)
 elwin parents: diff
changeset | 
