rogue.h revision 1.10 1 1.10 jsm /* $NetBSD: rogue.h,v 1.10 1999/09/12 09:02:23 jsm Exp $ */
2 1.3 cgd
3 1.1 cgd /*
4 1.3 cgd * Copyright (c) 1988, 1993
5 1.3 cgd * The Regents of the University of California. All rights reserved.
6 1.1 cgd *
7 1.1 cgd * This code is derived from software contributed to Berkeley by
8 1.5 lukem * Timothy C. Stoehr.
9 1.1 cgd *
10 1.1 cgd * Redistribution and use in source and binary forms, with or without
11 1.1 cgd * modification, are permitted provided that the following conditions
12 1.1 cgd * are met:
13 1.1 cgd * 1. Redistributions of source code must retain the above copyright
14 1.1 cgd * notice, this list of conditions and the following disclaimer.
15 1.1 cgd * 2. Redistributions in binary form must reproduce the above copyright
16 1.1 cgd * notice, this list of conditions and the following disclaimer in the
17 1.1 cgd * documentation and/or other materials provided with the distribution.
18 1.1 cgd * 3. All advertising materials mentioning features or use of this software
19 1.1 cgd * must display the following acknowledgement:
20 1.1 cgd * This product includes software developed by the University of
21 1.1 cgd * California, Berkeley and its contributors.
22 1.1 cgd * 4. Neither the name of the University nor the names of its contributors
23 1.1 cgd * may be used to endorse or promote products derived from this software
24 1.1 cgd * without specific prior written permission.
25 1.1 cgd *
26 1.1 cgd * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
27 1.1 cgd * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 1.1 cgd * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
29 1.1 cgd * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
30 1.1 cgd * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
31 1.1 cgd * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 1.1 cgd * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 1.1 cgd * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 1.1 cgd * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 1.1 cgd * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 1.1 cgd * SUCH DAMAGE.
37 1.1 cgd *
38 1.3 cgd * @(#)rogue.h 8.1 (Berkeley) 5/31/93
39 1.1 cgd */
40 1.1 cgd
41 1.1 cgd /*
42 1.1 cgd * rogue.h
43 1.1 cgd *
44 1.1 cgd * This source herein may be modified and/or distributed by anybody who
45 1.1 cgd * so desires, with the following restrictions:
46 1.1 cgd * 1.) This notice shall not be removed.
47 1.1 cgd * 2.) Credit shall not be taken for the creation of this source.
48 1.1 cgd * 3.) This code is not to be traded, sold, or used for personal
49 1.1 cgd * gain or profit.
50 1.1 cgd */
51 1.1 cgd
52 1.1 cgd #define boolean char
53 1.1 cgd
54 1.1 cgd #define NOTHING ((unsigned short) 0)
55 1.1 cgd #define OBJECT ((unsigned short) 01)
56 1.1 cgd #define MONSTER ((unsigned short) 02)
57 1.1 cgd #define STAIRS ((unsigned short) 04)
58 1.1 cgd #define HORWALL ((unsigned short) 010)
59 1.1 cgd #define VERTWALL ((unsigned short) 020)
60 1.1 cgd #define DOOR ((unsigned short) 040)
61 1.1 cgd #define FLOOR ((unsigned short) 0100)
62 1.1 cgd #define TUNNEL ((unsigned short) 0200)
63 1.1 cgd #define TRAP ((unsigned short) 0400)
64 1.1 cgd #define HIDDEN ((unsigned short) 01000)
65 1.1 cgd
66 1.1 cgd #define ARMOR ((unsigned short) 01)
67 1.1 cgd #define WEAPON ((unsigned short) 02)
68 1.1 cgd #define SCROL ((unsigned short) 04)
69 1.1 cgd #define POTION ((unsigned short) 010)
70 1.1 cgd #define GOLD ((unsigned short) 020)
71 1.1 cgd #define FOOD ((unsigned short) 040)
72 1.1 cgd #define WAND ((unsigned short) 0100)
73 1.1 cgd #define RING ((unsigned short) 0200)
74 1.1 cgd #define AMULET ((unsigned short) 0400)
75 1.1 cgd #define ALL_OBJECTS ((unsigned short) 0777)
76 1.1 cgd
77 1.1 cgd #define LEATHER 0
78 1.1 cgd #define RINGMAIL 1
79 1.1 cgd #define SCALE 2
80 1.1 cgd #define CHAIN 3
81 1.1 cgd #define BANDED 4
82 1.1 cgd #define SPLINT 5
83 1.1 cgd #define PLATE 6
84 1.1 cgd #define ARMORS 7
85 1.1 cgd
86 1.1 cgd #define BOW 0
87 1.1 cgd #define DART 1
88 1.1 cgd #define ARROW 2
89 1.1 cgd #define DAGGER 3
90 1.1 cgd #define SHURIKEN 4
91 1.1 cgd #define MACE 5
92 1.1 cgd #define LONG_SWORD 6
93 1.1 cgd #define TWO_HANDED_SWORD 7
94 1.1 cgd #define WEAPONS 8
95 1.1 cgd
96 1.1 cgd #define MAX_PACK_COUNT 24
97 1.1 cgd
98 1.1 cgd #define PROTECT_ARMOR 0
99 1.1 cgd #define HOLD_MONSTER 1
100 1.1 cgd #define ENCH_WEAPON 2
101 1.1 cgd #define ENCH_ARMOR 3
102 1.1 cgd #define IDENTIFY 4
103 1.1 cgd #define TELEPORT 5
104 1.1 cgd #define SLEEP 6
105 1.1 cgd #define SCARE_MONSTER 7
106 1.1 cgd #define REMOVE_CURSE 8
107 1.1 cgd #define CREATE_MONSTER 9
108 1.1 cgd #define AGGRAVATE_MONSTER 10
109 1.1 cgd #define MAGIC_MAPPING 11
110 1.1 cgd #define CON_MON 12
111 1.1 cgd #define SCROLS 13
112 1.1 cgd
113 1.1 cgd #define INCREASE_STRENGTH 0
114 1.1 cgd #define RESTORE_STRENGTH 1
115 1.1 cgd #define HEALING 2
116 1.1 cgd #define EXTRA_HEALING 3
117 1.1 cgd #define POISON 4
118 1.1 cgd #define RAISE_LEVEL 5
119 1.1 cgd #define BLINDNESS 6
120 1.1 cgd #define HALLUCINATION 7
121 1.1 cgd #define DETECT_MONSTER 8
122 1.1 cgd #define DETECT_OBJECTS 9
123 1.1 cgd #define CONFUSION 10
124 1.1 cgd #define LEVITATION 11
125 1.1 cgd #define HASTE_SELF 12
126 1.1 cgd #define SEE_INVISIBLE 13
127 1.1 cgd #define POTIONS 14
128 1.1 cgd
129 1.1 cgd #define TELE_AWAY 0
130 1.1 cgd #define SLOW_MONSTER 1
131 1.1 cgd #define INVISIBILITY 2
132 1.1 cgd #define POLYMORPH 3
133 1.1 cgd #define HASTE_MONSTER 4
134 1.1 cgd #define MAGIC_MISSILE 5
135 1.1 cgd #define CANCELLATION 6
136 1.1 cgd #define DO_NOTHING 7
137 1.1 cgd #define DRAIN_LIFE 8
138 1.1 cgd #define COLD 9
139 1.1 cgd #define FIRE 10
140 1.1 cgd #define WANDS 11
141 1.1 cgd
142 1.1 cgd #define STEALTH 0
143 1.1 cgd #define R_TELEPORT 1
144 1.1 cgd #define REGENERATION 2
145 1.1 cgd #define SLOW_DIGEST 3
146 1.1 cgd #define ADD_STRENGTH 4
147 1.1 cgd #define SUSTAIN_STRENGTH 5
148 1.1 cgd #define DEXTERITY 6
149 1.1 cgd #define ADORNMENT 7
150 1.1 cgd #define R_SEE_INVISIBLE 8
151 1.1 cgd #define MAINTAIN_ARMOR 9
152 1.1 cgd #define SEARCHING 10
153 1.1 cgd #define RINGS 11
154 1.1 cgd
155 1.1 cgd #define RATION 0
156 1.1 cgd #define FRUIT 1
157 1.1 cgd
158 1.5 lukem #define NOT_USED ((unsigned short) 0)
159 1.1 cgd #define BEING_WIELDED ((unsigned short) 01)
160 1.5 lukem #define BEING_WORN ((unsigned short) 02)
161 1.1 cgd #define ON_LEFT_HAND ((unsigned short) 04)
162 1.1 cgd #define ON_RIGHT_HAND ((unsigned short) 010)
163 1.1 cgd #define ON_EITHER_HAND ((unsigned short) 014)
164 1.5 lukem #define BEING_USED ((unsigned short) 017)
165 1.1 cgd
166 1.1 cgd #define NO_TRAP -1
167 1.1 cgd #define TRAP_DOOR 0
168 1.1 cgd #define BEAR_TRAP 1
169 1.1 cgd #define TELE_TRAP 2
170 1.1 cgd #define DART_TRAP 3
171 1.1 cgd #define SLEEPING_GAS_TRAP 4
172 1.1 cgd #define RUST_TRAP 5
173 1.1 cgd #define TRAPS 6
174 1.1 cgd
175 1.1 cgd #define STEALTH_FACTOR 3
176 1.1 cgd #define R_TELE_PERCENT 8
177 1.1 cgd
178 1.5 lukem #define UNIDENTIFIED ((unsigned short) 00) /* MUST BE ZERO! */
179 1.5 lukem #define IDENTIFIED ((unsigned short) 01)
180 1.5 lukem #define CALLED ((unsigned short) 02)
181 1.1 cgd
182 1.1 cgd #define DROWS 24
183 1.1 cgd #define DCOLS 80
184 1.1 cgd #define NMESSAGES 5
185 1.1 cgd #define MAX_TITLE_LENGTH 30
186 1.1 cgd #define MAXSYLLABLES 40
187 1.1 cgd #define MAX_METAL 14
188 1.1 cgd #define WAND_MATERIALS 30
189 1.1 cgd #define GEMS 14
190 1.1 cgd
191 1.1 cgd #define GOLD_PERCENT 46
192 1.1 cgd
193 1.1 cgd #define MAX_OPT_LEN 40
194 1.1 cgd
195 1.1 cgd struct id {
196 1.1 cgd short value;
197 1.1 cgd char *title;
198 1.1 cgd char *real;
199 1.1 cgd unsigned short id_status;
200 1.1 cgd };
201 1.1 cgd
202 1.1 cgd /* The following #defines provide more meaningful names for some of the
203 1.1 cgd * struct object fields that are used for monsters. This, since each monster
204 1.1 cgd * and object (scrolls, potions, etc) are represented by a struct object.
205 1.1 cgd * Ideally, this should be handled by some kind of union structure.
206 1.1 cgd */
207 1.1 cgd
208 1.1 cgd #define m_damage damage
209 1.1 cgd #define hp_to_kill quantity
210 1.1 cgd #define m_char ichar
211 1.1 cgd #define first_level is_protected
212 1.1 cgd #define last_level is_cursed
213 1.1 cgd #define m_hit_chance class
214 1.1 cgd #define stationary_damage identified
215 1.1 cgd #define drop_percent which_kind
216 1.1 cgd #define trail_char d_enchant
217 1.1 cgd #define slowed_toggle quiver
218 1.1 cgd #define moves_confused hit_enchant
219 1.1 cgd #define nap_length picked_up
220 1.1 cgd #define disguise what_is
221 1.1 cgd #define next_monster next_object
222 1.1 cgd
223 1.1 cgd struct obj { /* comment is monster meaning */
224 1.1 cgd unsigned long m_flags; /* monster flags */
225 1.8 hubertf const char *damage; /* damage it does */
226 1.1 cgd short quantity; /* hit points to kill */
227 1.1 cgd short ichar; /* 'A' is for aquatar */
228 1.1 cgd short kill_exp; /* exp for killing it */
229 1.1 cgd short is_protected; /* level starts */
230 1.1 cgd short is_cursed; /* level ends */
231 1.1 cgd short class; /* chance of hitting you */
232 1.1 cgd short identified; /* 'F' damage, 1,2,3... */
233 1.1 cgd unsigned short which_kind; /* item carry/drop % */
234 1.1 cgd short o_row, o_col, o; /* o is how many times stuck at o_row, o_col */
235 1.1 cgd short row, col; /* current row, col */
236 1.1 cgd short d_enchant; /* room char when detect_monster */
237 1.1 cgd short quiver; /* monster slowed toggle */
238 1.1 cgd short trow, tcol; /* target row, col */
239 1.1 cgd short hit_enchant; /* how many moves is confused */
240 1.1 cgd unsigned short what_is; /* imitator's charactor (?!%: */
241 1.1 cgd short picked_up; /* sleep from wand of sleep */
242 1.1 cgd unsigned short in_use_flags;
243 1.1 cgd struct obj *next_object; /* next monster */
244 1.1 cgd };
245 1.1 cgd
246 1.1 cgd typedef struct obj object;
247 1.1 cgd
248 1.5 lukem #define INIT_AW (object*)0
249 1.5 lukem #define INIT_RINGS (object*)0
250 1.5 lukem #define INIT_HP 12
251 1.5 lukem #define INIT_STR 16
252 1.5 lukem #define INIT_EXPLEVEL 1
253 1.5 lukem #define INIT_EXP 0
254 1.5 lukem #define INIT_PACK {0}
255 1.5 lukem #define INIT_GOLD 0
256 1.5 lukem #define INIT_CHAR '@'
257 1.5 lukem #define INIT_MOVES 1250
258 1.1 cgd
259 1.1 cgd struct fightr {
260 1.1 cgd object *armor;
261 1.1 cgd object *weapon;
262 1.1 cgd object *left_ring, *right_ring;
263 1.1 cgd short hp_current;
264 1.1 cgd short hp_max;
265 1.1 cgd short str_current;
266 1.1 cgd short str_max;
267 1.1 cgd object pack;
268 1.1 cgd long gold;
269 1.1 cgd short exp;
270 1.1 cgd long exp_points;
271 1.1 cgd short row, col;
272 1.1 cgd short fchar;
273 1.1 cgd short moves_left;
274 1.1 cgd };
275 1.1 cgd
276 1.1 cgd typedef struct fightr fighter;
277 1.1 cgd
278 1.1 cgd struct dr {
279 1.1 cgd short oth_room;
280 1.1 cgd short oth_row,
281 1.1 cgd oth_col;
282 1.1 cgd short door_row,
283 1.1 cgd door_col;
284 1.1 cgd };
285 1.1 cgd
286 1.1 cgd typedef struct dr door;
287 1.1 cgd
288 1.1 cgd struct rm {
289 1.1 cgd short bottom_row, right_col, left_col, top_row;
290 1.1 cgd door doors[4];
291 1.1 cgd unsigned short is_room;
292 1.1 cgd };
293 1.1 cgd
294 1.1 cgd typedef struct rm room;
295 1.1 cgd
296 1.1 cgd #define MAXROOMS 9
297 1.1 cgd #define BIG_ROOM 10
298 1.1 cgd
299 1.1 cgd #define NO_ROOM -1
300 1.1 cgd
301 1.1 cgd #define PASSAGE -3 /* cur_room value */
302 1.1 cgd
303 1.1 cgd #define AMULET_LEVEL 26
304 1.1 cgd
305 1.1 cgd #define R_NOTHING ((unsigned short) 01)
306 1.1 cgd #define R_ROOM ((unsigned short) 02)
307 1.1 cgd #define R_MAZE ((unsigned short) 04)
308 1.1 cgd #define R_DEADEND ((unsigned short) 010)
309 1.1 cgd #define R_CROSS ((unsigned short) 020)
310 1.1 cgd
311 1.1 cgd #define MAX_EXP_LEVEL 21
312 1.1 cgd #define MAX_EXP 10000001L
313 1.1 cgd #define MAX_GOLD 999999
314 1.1 cgd #define MAX_ARMOR 99
315 1.1 cgd #define MAX_HP 999
316 1.1 cgd #define MAX_STRENGTH 99
317 1.1 cgd #define LAST_DUNGEON 99
318 1.1 cgd
319 1.1 cgd #define STAT_LEVEL 01
320 1.1 cgd #define STAT_GOLD 02
321 1.1 cgd #define STAT_HP 04
322 1.1 cgd #define STAT_STRENGTH 010
323 1.1 cgd #define STAT_ARMOR 020
324 1.1 cgd #define STAT_EXP 040
325 1.1 cgd #define STAT_HUNGER 0100
326 1.1 cgd #define STAT_LABEL 0200
327 1.1 cgd #define STAT_ALL 0377
328 1.1 cgd
329 1.1 cgd #define PARTY_TIME 10 /* one party somewhere in each 10 level span */
330 1.1 cgd
331 1.1 cgd #define MAX_TRAPS 10 /* maximum traps per level */
332 1.1 cgd
333 1.1 cgd #define HIDE_PERCENT 12
334 1.1 cgd
335 1.1 cgd struct tr {
336 1.1 cgd short trap_type;
337 1.1 cgd short trap_row, trap_col;
338 1.1 cgd };
339 1.1 cgd
340 1.1 cgd typedef struct tr trap;
341 1.1 cgd
342 1.1 cgd extern fighter rogue;
343 1.1 cgd extern room rooms[];
344 1.1 cgd extern trap traps[];
345 1.1 cgd extern unsigned short dungeon[DROWS][DCOLS];
346 1.1 cgd extern object level_objects;
347 1.1 cgd
348 1.1 cgd extern struct id id_scrolls[];
349 1.1 cgd extern struct id id_potions[];
350 1.1 cgd extern struct id id_wands[];
351 1.1 cgd extern struct id id_rings[];
352 1.1 cgd extern struct id id_weapons[];
353 1.1 cgd extern struct id id_armors[];
354 1.1 cgd
355 1.1 cgd extern object mon_tab[];
356 1.1 cgd extern object level_monsters;
357 1.1 cgd
358 1.1 cgd #define MONSTERS 26
359 1.1 cgd
360 1.1 cgd #define HASTED 01L
361 1.1 cgd #define SLOWED 02L
362 1.1 cgd #define INVISIBLE 04L
363 1.1 cgd #define ASLEEP 010L
364 1.1 cgd #define WAKENS 020L
365 1.1 cgd #define WANDERS 040L
366 1.1 cgd #define FLIES 0100L
367 1.1 cgd #define FLITS 0200L
368 1.1 cgd #define CAN_FLIT 0400L /* can, but usually doesn't, flit */
369 1.1 cgd #define CONFUSED 01000L
370 1.1 cgd #define RUSTS 02000L
371 1.1 cgd #define HOLDS 04000L
372 1.1 cgd #define FREEZES 010000L
373 1.1 cgd #define STEALS_GOLD 020000L
374 1.1 cgd #define STEALS_ITEM 040000L
375 1.1 cgd #define STINGS 0100000L
376 1.1 cgd #define DRAINS_LIFE 0200000L
377 1.1 cgd #define DROPS_LEVEL 0400000L
378 1.1 cgd #define SEEKS_GOLD 01000000L
379 1.1 cgd #define FREEZING_ROGUE 02000000L
380 1.1 cgd #define RUST_VANISHED 04000000L
381 1.1 cgd #define CONFUSES 010000000L
382 1.1 cgd #define IMITATES 020000000L
383 1.1 cgd #define FLAMES 040000000L
384 1.1 cgd #define STATIONARY 0100000000L /* damage will be 1,2,3,... */
385 1.1 cgd #define NAPPING 0200000000L /* can't wake up for a while */
386 1.1 cgd #define ALREADY_MOVED 0400000000L
387 1.1 cgd
388 1.1 cgd #define SPECIAL_HIT (RUSTS|HOLDS|FREEZES|STEALS_GOLD|STEALS_ITEM|STINGS|DRAINS_LIFE|DROPS_LEVEL)
389 1.1 cgd
390 1.1 cgd #define WAKE_PERCENT 45
391 1.1 cgd #define FLIT_PERCENT 40
392 1.1 cgd #define PARTY_WAKE_PERCENT 75
393 1.1 cgd
394 1.1 cgd #define HYPOTHERMIA 1
395 1.1 cgd #define STARVATION 2
396 1.1 cgd #define POISON_DART 3
397 1.1 cgd #define QUIT 4
398 1.1 cgd #define WIN 5
399 1.1 cgd #define KFIRE 6
400 1.1 cgd
401 1.1 cgd #define UPWARD 0
402 1.1 cgd #define UPRIGHT 1
403 1.1 cgd #define RIGHT 2
404 1.1 cgd #define DOWNRIGHT 3
405 1.1 cgd #define DOWN 4
406 1.1 cgd #define DOWNLEFT 5
407 1.1 cgd #define LEFT 6
408 1.1 cgd #define UPLEFT 7
409 1.1 cgd #define DIRS 8
410 1.1 cgd
411 1.1 cgd #define ROW1 7
412 1.1 cgd #define ROW2 15
413 1.1 cgd
414 1.1 cgd #define COL1 26
415 1.1 cgd #define COL2 52
416 1.1 cgd
417 1.1 cgd #define MOVED 0
418 1.1 cgd #define MOVE_FAILED -1
419 1.1 cgd #define STOPPED_ON_SOMETHING -2
420 1.1 cgd #define CANCEL '\033'
421 1.1 cgd #define LIST '*'
422 1.1 cgd
423 1.1 cgd #define HUNGRY 300
424 1.1 cgd #define WEAK 150
425 1.1 cgd #define FAINT 20
426 1.1 cgd #define STARVE 0
427 1.1 cgd
428 1.1 cgd #define MIN_ROW 1
429 1.1 cgd
430 1.1 cgd struct rogue_time {
431 1.1 cgd short year; /* >= 1987 */
432 1.1 cgd short month; /* 1 - 12 */
433 1.1 cgd short day; /* 1 - 31 */
434 1.1 cgd short hour; /* 0 - 23 */
435 1.1 cgd short minute; /* 0 - 59 */
436 1.1 cgd short second; /* 0 - 59 */
437 1.1 cgd };
438 1.1 cgd
439 1.1 cgd #ifdef CURSES
440 1.1 cgd struct _win_st {
441 1.1 cgd short _cury, _curx;
442 1.1 cgd short _maxy, _maxx;
443 1.1 cgd };
444 1.1 cgd
445 1.1 cgd typedef struct _win_st WINDOW;
446 1.1 cgd
447 1.1 cgd extern int LINES, COLS;
448 1.1 cgd extern WINDOW *curscr;
449 1.1 cgd extern char *CL;
450 1.1 cgd
451 1.1 cgd #else
452 1.1 cgd #include <curses.h>
453 1.1 cgd #endif
454 1.5 lukem
455 1.5 lukem /*
456 1.5 lukem * external routine declarations.
457 1.5 lukem */
458 1.5 lukem #include <stdio.h>
459 1.5 lukem #include <string.h>
460 1.10 jsm #include <sys/types.h>
461 1.10 jsm #include <unistd.h>
462 1.5 lukem
463 1.5 lukem object *alloc_object __P((void));
464 1.5 lukem object *check_duplicate __P((object *, object *));
465 1.8 hubertf const char *get_ench_color __P((void));
466 1.5 lukem object *get_letter_object __P((int));
467 1.5 lukem object *get_thrown_at_monster __P((object *, short, short *, short *));
468 1.5 lukem object *get_zapped_monster __P((short, short *, short *));
469 1.5 lukem object *gr_monster __P((object *, int));
470 1.5 lukem object *gr_object __P((void));
471 1.8 hubertf char *md_getenv __P((const char *));
472 1.6 mycroft const char *
473 1.6 mycroft md_gln __P((void));
474 1.5 lukem char *md_malloc __P((int));
475 1.8 hubertf const char *mon_name __P((const object *));
476 1.8 hubertf const char *name_of __P((const object *));
477 1.5 lukem object *object_at __P((object *, short, short));
478 1.5 lukem object *pick_up __P((int, int, short *));
479 1.5 lukem void add_exp __P((int, boolean));
480 1.5 lukem void add_mazes __P((void));
481 1.5 lukem void add_traps __P((void));
482 1.5 lukem void aggravate __P((void));
483 1.5 lukem void aim_monster __P((object *));
484 1.5 lukem void bounce __P((short, short, short, short, short));
485 1.5 lukem void byebye __P((int));
486 1.5 lukem void c_object_for_wizard __P((void));
487 1.5 lukem void call_it __P((void));
488 1.5 lukem boolean can_move __P((int, int, int, int));
489 1.5 lukem boolean can_turn __P((int, int));
490 1.8 hubertf void center __P((short, const char *));
491 1.5 lukem void check_gold_seeker __P((object *));
492 1.5 lukem boolean check_hunger __P((boolean));
493 1.5 lukem boolean check_imitator __P((object *));
494 1.5 lukem void check_message __P((void));
495 1.5 lukem int check_up __P((void));
496 1.8 hubertf void clean_up __P((const char *)) __attribute__((__noreturn__));
497 1.5 lukem void clear_level __P((void));
498 1.5 lukem void cnfs __P((void));
499 1.5 lukem int coin_toss __P((void));
500 1.5 lukem int connect_rooms __P((short, short));
501 1.5 lukem void cough_up __P((object *));
502 1.5 lukem void create_monster __P((void));
503 1.5 lukem int damage_for_strength __P((void));
504 1.5 lukem void darken_room __P((short));
505 1.5 lukem void disappear __P((object *));
506 1.5 lukem void do_args __P((int, char **));
507 1.5 lukem void do_opts __P((void));
508 1.5 lukem void do_put_on __P((object *, boolean));
509 1.5 lukem void do_shell __P((void));
510 1.5 lukem void do_wear __P((object *));
511 1.5 lukem void do_wield __P((object *));
512 1.5 lukem void dr_course __P((object *, boolean, short, short));
513 1.5 lukem void drain_life __P((void));
514 1.5 lukem void draw_magic_map __P((void));
515 1.5 lukem void draw_simple_passage __P((short, short, short, short, short));
516 1.5 lukem void drop __P((void));
517 1.5 lukem int drop_check __P((void));
518 1.5 lukem void drop_level __P((void));
519 1.5 lukem void eat __P((void));
520 1.5 lukem void edit_opts __P((void));
521 1.5 lukem void env_get_value __P((char **, char *, boolean));
522 1.7 hubertf void error_save __P((int)) __attribute__((__noreturn__));
523 1.5 lukem void fight __P((int));
524 1.5 lukem void fill_it __P((int, boolean));
525 1.5 lukem void fill_out_level __P((void));
526 1.5 lukem boolean flame_broil __P((object *));
527 1.5 lukem int flit __P((object *));
528 1.5 lukem void flop_weapon __P((object *, short, short));
529 1.5 lukem void free_object __P((object *));
530 1.5 lukem void free_stuff __P((object *));
531 1.5 lukem void freeze __P((object *));
532 1.8 hubertf int get_armor_class __P((const object *));
533 1.5 lukem int get_com_id __P((int *, short));
534 1.8 hubertf int get_damage __P((const char *, boolean));
535 1.8 hubertf void get_desc __P((const object *, char *));
536 1.5 lukem int get_dir __P((short, short, short, short));
537 1.5 lukem void get_dir_rc __P((short, short *, short *, short));
538 1.5 lukem char get_dungeon_char __P((short, short));
539 1.5 lukem int get_exp_level __P((long));
540 1.5 lukem void get_food __P((object *, boolean));
541 1.8 hubertf int get_hit_chance __P((const object *));
542 1.8 hubertf int get_input_line __P((const char *, const char *, char *, const char *, boolean, boolean));
543 1.5 lukem char get_mask_char __P((unsigned short));
544 1.8 hubertf int get_number __P((const char *));
545 1.5 lukem boolean get_oth_room __P((short, short *, short *));
546 1.5 lukem int get_rand __P((int, int));
547 1.5 lukem short get_room_number __P((int, int));
548 1.8 hubertf int get_value __P((const object *));
549 1.8 hubertf int get_w_damage __P((const object *));
550 1.5 lukem void get_wand_and_ring_materials __P((void));
551 1.8 hubertf int get_weapon_damage __P((const object *));
552 1.5 lukem char gmc __P((object *));
553 1.5 lukem char gmc_row_col __P((int, int));
554 1.5 lukem void go_blind __P((void));
555 1.5 lukem boolean gold_at __P((int, int));
556 1.5 lukem void gr_armor __P((object *));
557 1.5 lukem char gr_dir __P((void));
558 1.5 lukem char gr_obj_char __P((void));
559 1.5 lukem void gr_potion __P((object *));
560 1.5 lukem void gr_ring __P((object *, boolean));
561 1.5 lukem short gr_room __P((void));
562 1.5 lukem void gr_row_col __P((short *, short *, unsigned short));
563 1.5 lukem void gr_scroll __P((object *));
564 1.5 lukem void gr_wand __P((object *));
565 1.5 lukem void gr_weapon __P((object *, int));
566 1.5 lukem void hallucinate __P((void));
567 1.5 lukem boolean has_amulet __P((void));
568 1.8 hubertf boolean has_been_touched __P((const struct rogue_time *, const struct rogue_time *));
569 1.5 lukem void heal __P((void));
570 1.5 lukem void hide_boxed_passage __P((int, int, int, int, int));
571 1.5 lukem void hold_monster __P((void));
572 1.5 lukem int hp_raise __P((void));
573 1.5 lukem void id_all __P((void));
574 1.5 lukem void id_com __P((void));
575 1.5 lukem void id_trap __P((void));
576 1.5 lukem void id_type __P((void));
577 1.5 lukem void idntfy __P((void));
578 1.5 lukem boolean imitating __P((int, int));
579 1.5 lukem int init __P((int, char **));
580 1.8 hubertf void init_str __P((char **, const char *));
581 1.8 hubertf void insert_score __P((char [][], char [][], const char *, short, short, const object *, int));
582 1.5 lukem void inv_armor_weapon __P((boolean));
583 1.5 lukem void inv_rings __P((void));
584 1.8 hubertf void inventory __P((const object *, unsigned short));
585 1.5 lukem boolean is_all_connected __P((void));
586 1.5 lukem boolean is_digit __P((int));
587 1.5 lukem boolean is_direction __P((short, short *));
588 1.5 lukem boolean is_pack_letter __P((short *, unsigned short *));
589 1.5 lukem boolean is_passable __P((int, int));
590 1.5 lukem boolean is_vowel __P((short));
591 1.5 lukem void kick_into_pack __P((void));
592 1.9 jsm void killed_by __P((const object *, short)) __attribute__((__noreturn__));
593 1.8 hubertf long lget_number __P((const char *));
594 1.5 lukem void light_passage __P((int, int));
595 1.5 lukem void light_up_room __P((int));
596 1.5 lukem boolean m_confuse __P((object *));
597 1.5 lukem void make_level __P((void));
598 1.5 lukem void make_maze __P((short, short, short, short, short, short));
599 1.5 lukem void make_party __P((void));
600 1.5 lukem void make_room __P((short, short, short, short));
601 1.5 lukem void make_scroll_titles __P((void));
602 1.8 hubertf boolean mask_pack __P((const object *, unsigned short));
603 1.5 lukem boolean mask_room __P((short, short *, short *, unsigned short));
604 1.5 lukem void md_cbreak_no_echo_nonl __P((boolean));
605 1.8 hubertf boolean md_df __P((const char *));
606 1.7 hubertf void md_exit __P((int)) __attribute__((__noreturn__));
607 1.5 lukem void md_gct __P((struct rogue_time *));
608 1.5 lukem char *md_gdtcf __P((void));
609 1.8 hubertf int md_get_file_id __P((const char *));
610 1.8 hubertf void md_gfmt __P((const char *, struct rogue_time *));
611 1.5 lukem int md_gseed __P((void));
612 1.5 lukem void md_heed_signals __P((void));
613 1.5 lukem void md_ignore_signals __P((void));
614 1.8 hubertf int md_link_count __P((const char *));
615 1.5 lukem void md_lock __P((boolean));
616 1.8 hubertf void md_shell __P((const char *));
617 1.5 lukem void md_sleep __P((int));
618 1.5 lukem void md_slurp __P((void));
619 1.5 lukem void md_tstp __P((void));
620 1.8 hubertf void message __P((const char *, boolean));
621 1.5 lukem void mix_colors __P((void));
622 1.5 lukem void mix_colors __P((void));
623 1.5 lukem void mix_random_rooms __P((void));
624 1.8 hubertf int mon_can_go __P((const object *, int, int));
625 1.5 lukem int mon_damage __P((object *, short));
626 1.5 lukem void mon_hit __P((object *));
627 1.8 hubertf boolean mon_sees __P((const object *, int, int));
628 1.5 lukem int move_confused __P((object *));
629 1.5 lukem void move_mon_to __P((object *, int, int));
630 1.5 lukem void move_onto __P((void));
631 1.5 lukem int mtry __P((object *, int, int));
632 1.5 lukem void multiple_move_rogue __P((short));
633 1.5 lukem void mv_1_monster __P((object *, int, int));
634 1.5 lukem void mv_aquatars __P((void));
635 1.5 lukem void mv_mons __P((void));
636 1.8 hubertf int name_cmp __P((char *, const char *));
637 1.5 lukem short next_avail_ichar __P((void));
638 1.5 lukem boolean next_to_something __P((int, int));
639 1.8 hubertf void nickize __P((char *, const char *, const char *));
640 1.5 lukem int no_room_for_monster __P((int));
641 1.5 lukem int one_move_rogue __P((short, short));
642 1.5 lukem void onintr __P((int));
643 1.5 lukem void opt_erase __P((int));
644 1.5 lukem void opt_go __P((int));
645 1.5 lukem void opt_show __P((int));
646 1.8 hubertf short pack_count __P((const object *));
647 1.8 hubertf short pack_letter __P((const char *, unsigned short));
648 1.8 hubertf void pad __P((const char *, short));
649 1.5 lukem void party_monsters __P((int, int));
650 1.5 lukem short party_objects __P((int));
651 1.5 lukem void place_at __P((object *, int, int));
652 1.5 lukem void plant_gold __P((int, int, boolean));
653 1.5 lukem void play_level __P((void));
654 1.5 lukem void player_init __P((void));
655 1.5 lukem void player_init __P((void));
656 1.5 lukem void potion_heal __P((int));
657 1.5 lukem int pr_com_id __P((int));
658 1.5 lukem int pr_motion_char __P((int));
659 1.5 lukem void print_stats __P((int));
660 1.5 lukem void put_amulet __P((void));
661 1.5 lukem void put_door __P((room *, short, short *, short *));
662 1.5 lukem void put_gold __P((void));
663 1.5 lukem void put_m_at __P((int, int, object *));
664 1.5 lukem void put_mons __P((void));
665 1.5 lukem void put_objects __P((void));
666 1.5 lukem void put_on_ring __P((void));
667 1.5 lukem void put_player __P((short));
668 1.8 hubertf void put_scores __P((const object *, short)) __attribute__((__noreturn__));
669 1.5 lukem void put_stairs __P((void));
670 1.5 lukem void quaff __P((void));
671 1.5 lukem void quit __P((boolean));
672 1.8 hubertf int r_index __P((const char *, int, boolean));
673 1.5 lukem void r_read __P((FILE *, char *, int));
674 1.8 hubertf void r_write __P((FILE *, const char *, int));
675 1.5 lukem void rand_around __P((short, short *, short *));
676 1.5 lukem int rand_percent __P((int));
677 1.5 lukem void rand_place __P((object *));
678 1.5 lukem void read_pack __P((object *, FILE *, boolean));
679 1.5 lukem void read_scroll __P((void));
680 1.5 lukem void read_string __P((char *, FILE *));
681 1.8 hubertf void recursive_deadend __P((short, const short *, short, short));
682 1.5 lukem boolean reg_move __P((void));
683 1.5 lukem void relight __P((void));
684 1.5 lukem void remessage __P((short));
685 1.5 lukem void remove_ring __P((void));
686 1.5 lukem void rest __P((int));
687 1.8 hubertf void restore __P((const char *));
688 1.5 lukem int rgetchar __P((void));
689 1.5 lukem void ring_stats __P((boolean));
690 1.5 lukem int rogue_can_see __P((int, int));
691 1.5 lukem void rogue_damage __P((short, object *, short));
692 1.5 lukem void rogue_hit __P((object *, boolean));
693 1.5 lukem int rogue_is_around __P((int, int));
694 1.5 lukem long rrandom __P((void));
695 1.5 lukem void rust __P((object *));
696 1.5 lukem void rw_dungeon __P((FILE *, boolean));
697 1.5 lukem void rw_id __P((struct id *, FILE *, int, boolean));
698 1.5 lukem void rw_rooms __P((FILE *, boolean));
699 1.5 lukem void s_con_mon __P((object *));
700 1.5 lukem int same_col __P((int, int));
701 1.5 lukem int same_row __P((int, int));
702 1.5 lukem void save_game __P((void));
703 1.8 hubertf void save_into_file __P((const char *));
704 1.5 lukem void save_screen __P((void));
705 1.5 lukem void search __P((short, boolean));
706 1.5 lukem boolean seek_gold __P((object *));
707 1.5 lukem void sell_pack __P((void));
708 1.7 hubertf void sf_error __P((void)) __attribute__((__noreturn__));
709 1.5 lukem void show_average_hp __P((void));
710 1.5 lukem void show_monsters __P((void));
711 1.5 lukem void show_objects __P((void));
712 1.5 lukem void show_traps __P((void));
713 1.5 lukem void single_inv __P((short));
714 1.5 lukem void sound_bell __P((void));
715 1.5 lukem void special_hit __P((object *));
716 1.5 lukem void srrandom __P((int));
717 1.5 lukem void start_window __P((void));
718 1.5 lukem void start_window __P((void));
719 1.5 lukem void steal_gold __P((object *));
720 1.5 lukem void steal_item __P((object *));
721 1.5 lukem void sting __P((object *));
722 1.5 lukem void stop_window __P((void));
723 1.5 lukem void stop_window __P((void));
724 1.5 lukem void take_a_nap __P((void));
725 1.5 lukem void take_from_pack __P((object *, object *));
726 1.5 lukem void take_off __P((void));
727 1.5 lukem void tele __P((void));
728 1.5 lukem void tele_away __P((object *));
729 1.5 lukem void throw __P((void));
730 1.5 lukem boolean throw_at_monster __P((object *, object *));
731 1.8 hubertf int to_hit __P((const object *));
732 1.5 lukem short trap_at __P((int, int));
733 1.5 lukem void trap_player __P((int, int));
734 1.5 lukem boolean try_to_cough __P((short, short, object *));
735 1.5 lukem void turn_passage __P((short, boolean));
736 1.5 lukem void un_put_on __P((object *));
737 1.5 lukem void unblind __P((void));
738 1.5 lukem void unconfuse __P((void));
739 1.5 lukem void uncurse_all __P((void));
740 1.5 lukem void unhallucinate __P((void));
741 1.5 lukem void unwear __P((object *));
742 1.5 lukem void unwield __P((object *));
743 1.5 lukem void vanish __P((object *, short, object *));
744 1.5 lukem void visit_rooms __P((int));
745 1.5 lukem void wait_for_ack __P((void));
746 1.5 lukem void wake_room __P((short, boolean, short, short));
747 1.5 lukem void wake_up __P((object *));
748 1.5 lukem void wanderer __P((void));
749 1.5 lukem void wdrain_life __P((object *));
750 1.5 lukem void wear __P((void));
751 1.5 lukem void wield __P((void));
752 1.9 jsm void win __P((void)) __attribute__((__noreturn__));
753 1.5 lukem void wizardize __P((void));
754 1.8 hubertf void write_pack __P((const object *, FILE *));
755 1.5 lukem void write_string __P((char *, FILE *));
756 1.5 lukem long xxx __P((boolean));
757 1.5 lukem void xxxx __P((char *, short));
758 1.5 lukem void zap_monster __P((object *, unsigned short));
759 1.5 lukem void zapp __P((void));
760 1.5 lukem object *add_to_pack __P((object *, object *, int));
761 1.8 hubertf struct id *get_id_table __P((const object *));
762 1.5 lukem unsigned short gr_what_is __P((void));
763 1.5 lukem
764 1.5 lukem extern boolean ask_quit;
765 1.5 lukem extern boolean being_held;
766 1.5 lukem extern boolean cant_int;
767 1.5 lukem extern boolean con_mon;
768 1.5 lukem extern boolean detect_monster;
769 1.5 lukem extern boolean did_int;
770 1.5 lukem extern boolean interrupted;
771 1.5 lukem extern boolean is_wood[];
772 1.5 lukem extern boolean jump;
773 1.5 lukem extern boolean maintain_armor;
774 1.5 lukem extern boolean mon_disappeared;
775 1.5 lukem extern boolean msg_cleared;
776 1.5 lukem extern boolean no_skull;
777 1.5 lukem extern boolean passgo;
778 1.5 lukem extern boolean r_see_invisible;
779 1.5 lukem extern boolean r_teleport;
780 1.5 lukem extern boolean save_is_interactive;
781 1.5 lukem extern boolean score_only;
782 1.5 lukem extern boolean see_invisible;
783 1.5 lukem extern boolean sustain_strength;
784 1.5 lukem extern boolean trap_door;
785 1.5 lukem extern boolean wizard;
786 1.5 lukem extern char hit_message[];
787 1.5 lukem extern char hunger_str[];
788 1.5 lukem extern char login_name[];
789 1.8 hubertf extern const char *byebye_string;
790 1.8 hubertf extern const char *curse_message;
791 1.8 hubertf extern const char *error_file;
792 1.5 lukem extern char *fruit;
793 1.8 hubertf extern const char *const m_names[];
794 1.8 hubertf extern const char *more;
795 1.8 hubertf extern const char *new_level_message;
796 1.5 lukem extern char *nick_name;
797 1.8 hubertf extern const char *press_space;
798 1.5 lukem extern char *save_file;
799 1.8 hubertf extern const char *you_can_move_again;
800 1.8 hubertf extern const long level_points[];
801 1.5 lukem extern short add_strength;
802 1.5 lukem extern short auto_search;
803 1.5 lukem extern short bear_trap;
804 1.5 lukem extern short blind;
805 1.5 lukem extern short confused;
806 1.5 lukem extern short cur_level;
807 1.5 lukem extern short cur_room;
808 1.5 lukem extern short e_rings;
809 1.5 lukem extern short extra_hp;
810 1.5 lukem extern short foods;
811 1.5 lukem extern short halluc;
812 1.5 lukem extern short haste_self;
813 1.5 lukem extern short less_hp;
814 1.5 lukem extern short levitate;
815 1.5 lukem extern short m_moves;
816 1.5 lukem extern short max_level;
817 1.5 lukem extern short party_room;
818 1.5 lukem extern short r_rings;
819 1.5 lukem extern short regeneration;
820 1.5 lukem extern short ring_exp;
821 1.5 lukem extern short stealthy;
822 1.10 jsm extern gid_t gid;
823 1.10 jsm extern gid_t egid;
824