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