Mercurial > hg > early-roguelike
annotate rogue4/misc.c @ 317:aab761616489 default tip
Rearrange some Autoconf files.
Autoconf was failing to detect install-sh at the top level and needed
some explicit directions.  It also wants config.guess and config.sub to
be provided too.
A few other macros have also been updated.
| author | John "Elwin" Edwards | 
|---|---|
| date | Tue, 05 Sep 2023 20:05:24 -0400 | 
| parents | e52a8a7ad4c5 | 
| children | 
| rev | line source | 
|---|---|
| 12 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 1 /* | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 2 * All sorts of miscellaneous routines | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 3 * | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 4 * @(#)misc.c 4.30 (Berkeley) 4/6/82 | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 5 * | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 6 * Rogue: Exploring the Dungeons of Doom | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 7 * Copyright (C) 1980, 1981, 1982 Michael Toy, Ken Arnold and Glenn Wichman | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 8 * All rights reserved. | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 9 * | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 10 * See the file LICENSE.TXT for full copyright and licensing information. | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 11 */ | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 12 | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 13 #include <stdlib.h> | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 14 #include <curses.h> | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 15 #include <ctype.h> | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 16 #include <string.h> | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 17 #include "rogue.h" | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 18 | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 19 /* | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 20 * tr_name: | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 21 * Print the name of a trap | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 22 */ | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 23 char * | 
| 215 | 24 tr_name(char type) | 
| 12 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 25 { | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 26 switch (type) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 27 { | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 28 case T_DOOR: | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 29 return terse ? "a trapdoor" : "you found a trapdoor"; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 30 case T_BEAR: | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 31 return terse ? "a beartrap" : "you found a beartrap"; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 32 case T_SLEEP: | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 33 return terse ? "a sleeping gas trap":"you found a sleeping gas trap"; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 34 case T_ARROW: | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 35 return terse ? "an arrow trap" : "you found an arrow trap"; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 36 case T_TELEP: | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 37 return terse ? "a teleport trap" : "you found a teleport trap"; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 38 case T_DART: | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 39 return terse ? "a dart trap" : "you found a poison dart trap"; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 40 } | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 41 msg("wierd trap: %d", type); | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 42 return NULL; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 43 } | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 44 | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 45 /* | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 46 * look: | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 47 * A quick glance all around the player | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 48 */ | 
| 215 | 49 void | 
| 50 look(bool wakeup) | |
| 12 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 51 { | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 52 register int x, y; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 53 register unsigned char ch; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 54 register int index; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 55 register THING *tp; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 56 register struct room *rp; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 57 register int ey, ex; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 58 register int passcount = 0; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 59 register char pfl, *fp, pch; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 60 register int sy, sx, sumhero = 0, diffhero = 0; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 61 | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 62 rp = proom; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 63 if (!ce(oldpos, hero)) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 64 { | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 65 if ((oldrp->r_flags & (ISGONE|ISDARK)) == ISDARK && !on(player,ISBLIND)) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 66 { | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 67 ey = oldpos.y + 1; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 68 ex = oldpos.x + 1; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 69 sy = oldpos.y - 1; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 70 for (x = oldpos.x - 1; x <= ex; x++) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 71 for (y = sy; y <= ey; y++) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 72 { | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 73 if (y == hero.y && x == hero.x) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 74 continue; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 75 move(y, x); | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 76 if (inch() == FLOOR) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 77 addch(' '); | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 78 } | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 79 } | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 80 oldpos = hero; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 81 oldrp = rp; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 82 } | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 83 ey = hero.y + 1; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 84 ex = hero.x + 1; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 85 sx = hero.x - 1; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 86 sy = hero.y - 1; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 87 if (door_stop && !firstmove && running) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 88 { | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 89 sumhero = hero.y + hero.x; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 90 diffhero = hero.y - hero.x; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 91 } | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 92 index = INDEX(hero.y, hero.x); | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 93 pfl = _flags[index]; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 94 pch = _level[index]; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 95 for (y = sy; y <= ey; y++) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 96 if (y > 0 && y < LINES - 1) for (x = sx; x <= ex; x++) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 97 { | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 98 if (x <= 0 || x >= COLS) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 99 continue; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 100 if (!on(player, ISBLIND)) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 101 { | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 102 if (y == hero.y && x == hero.x) | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 103 continue; | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 104 } | 
| 
9535a08ddc39
Import Rogue 5.2 from the Roguelike Restoration Project (r1490)
 edwarj4 parents: diff
changeset | 105 else if (y != hero.y || x != hero.x) | 
