rogue.h revision 1.16 1 1.16 jsm /* $NetBSD: rogue.h,v 1.16 2004/01/27 20:30:30 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.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.15 jsm const 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.16 jsm object *alloc_object(void);
447 1.16 jsm object *check_duplicate(object *, object *);
448 1.16 jsm const char *get_ench_color(void);
449 1.16 jsm object *get_letter_object(int);
450 1.16 jsm object *get_thrown_at_monster(object *, short, short *, short *);
451 1.16 jsm object *get_zapped_monster(short, short *, short *);
452 1.16 jsm object *gr_monster(object *, int);
453 1.16 jsm object *gr_object(void);
454 1.16 jsm char *md_getenv(const char *);
455 1.6 mycroft const char *
456 1.16 jsm md_gln(void);
457 1.16 jsm char *md_malloc(int);
458 1.16 jsm const char *mon_name(const object *);
459 1.16 jsm const char *name_of(const object *);
460 1.16 jsm object *object_at(object *, short, short);
461 1.16 jsm object *pick_up(int, int, short *);
462 1.16 jsm void add_exp(int, boolean);
463 1.16 jsm void add_mazes(void);
464 1.16 jsm void add_traps(void);
465 1.16 jsm void aggravate(void);
466 1.16 jsm void aim_monster(object *);
467 1.16 jsm void bounce(short, short, short, short, short);
468 1.16 jsm void byebye(int);
469 1.16 jsm void c_object_for_wizard(void);
470 1.16 jsm void call_it(void);
471 1.16 jsm boolean can_move(int, int, int, int);
472 1.16 jsm boolean can_turn(int, int);
473 1.16 jsm void center(short, const char *);
474 1.16 jsm void check_gold_seeker(object *);
475 1.16 jsm boolean check_hunger(boolean);
476 1.16 jsm boolean check_imitator(object *);
477 1.16 jsm void check_message(void);
478 1.16 jsm int check_up(void);
479 1.16 jsm void clean_up(const char *) __attribute__((__noreturn__));
480 1.16 jsm void clear_level(void);
481 1.16 jsm void cnfs(void);
482 1.16 jsm int coin_toss(void);
483 1.16 jsm int connect_rooms(short, short);
484 1.16 jsm void cough_up(object *);
485 1.16 jsm void create_monster(void);
486 1.16 jsm int damage_for_strength(void);
487 1.16 jsm void darken_room(short);
488 1.16 jsm void disappear(object *);
489 1.16 jsm void do_args(int, char **);
490 1.16 jsm void do_opts(void);
491 1.16 jsm void do_put_on(object *, boolean);
492 1.16 jsm void do_shell(void);
493 1.16 jsm void do_wear(object *);
494 1.16 jsm void do_wield(object *);
495 1.16 jsm void dr_course(object *, boolean, short, short);
496 1.16 jsm void drain_life(void);
497 1.16 jsm void draw_magic_map(void);
498 1.16 jsm void draw_simple_passage(short, short, short, short, short);
499 1.16 jsm void drop(void);
500 1.16 jsm int drop_check(void);
501 1.16 jsm void drop_level(void);
502 1.16 jsm void eat(void);
503 1.16 jsm void edit_opts(void);
504 1.16 jsm void env_get_value(char **, char *, boolean);
505 1.16 jsm void error_save(int) __attribute__((__noreturn__));
506 1.16 jsm void fight(int);
507 1.16 jsm void fill_it(int, boolean);
508 1.16 jsm void fill_out_level(void);
509 1.16 jsm boolean flame_broil(object *);
510 1.16 jsm int flit(object *);
511 1.16 jsm void flop_weapon(object *, short, short);
512 1.16 jsm void free_object(object *);
513 1.16 jsm void free_stuff(object *);
514 1.16 jsm void freeze(object *);
515 1.16 jsm int get_armor_class(const object *);
516 1.16 jsm int get_com_id(int *, short);
517 1.16 jsm int get_damage(const char *, boolean);
518 1.16 jsm void get_desc(const object *, char *);
519 1.16 jsm int get_dir(short, short, short, short);
520 1.16 jsm void get_dir_rc(short, short *, short *, short);
521 1.16 jsm char get_dungeon_char(short, short);
522 1.16 jsm int get_exp_level(long);
523 1.16 jsm void get_food(object *, boolean);
524 1.16 jsm int get_hit_chance(const object *);
525 1.16 jsm int get_input_line(const char *, const char *, char *, const char *, boolean, boolean);
526 1.16 jsm char get_mask_char(unsigned short);
527 1.16 jsm int get_number(const char *);
528 1.16 jsm boolean get_oth_room(short, short *, short *);
529 1.16 jsm int get_rand(int, int);
530 1.16 jsm short get_room_number(int, int);
531 1.16 jsm int get_value(const object *);
532 1.16 jsm int get_w_damage(const object *);
533 1.16 jsm void get_wand_and_ring_materials(void);
534 1.16 jsm int get_weapon_damage(const object *);
535 1.16 jsm char gmc(object *);
536 1.16 jsm char gmc_row_col(int, int);
537 1.16 jsm void go_blind(void);
538 1.16 jsm boolean gold_at(int, int);
539 1.16 jsm void gr_armor(object *);
540 1.16 jsm char gr_dir(void);
541 1.16 jsm char gr_obj_char(void);
542 1.16 jsm void gr_potion(object *);
543 1.16 jsm void gr_ring(object *, boolean);
544 1.16 jsm short gr_room(void);
545 1.16 jsm void gr_row_col(short *, short *, unsigned short);
546 1.16 jsm void gr_scroll(object *);
547 1.16 jsm void gr_wand(object *);
548 1.16 jsm void gr_weapon(object *, int);
549 1.16 jsm void hallucinate(void);
550 1.16 jsm boolean has_amulet(void);
551 1.16 jsm boolean has_been_touched(const struct rogue_time *, const struct rogue_time *);
552 1.16 jsm void heal(void);
553 1.16 jsm void hide_boxed_passage(int, int, int, int, int);
554 1.16 jsm void hold_monster(void);
555 1.16 jsm int hp_raise(void);
556 1.16 jsm void id_all(void);
557 1.16 jsm void id_com(void);
558 1.16 jsm void id_trap(void);
559 1.16 jsm void id_type(void);
560 1.16 jsm void idntfy(void);
561 1.16 jsm boolean imitating(int, int);
562 1.16 jsm int init(int, char **);
563 1.16 jsm void init_str(char **, const char *);
564 1.16 jsm void insert_score(char [][], char [][], const char *, short, short, const object *, int);
565 1.16 jsm void inv_armor_weapon(boolean);
566 1.16 jsm void inv_rings(void);
567 1.16 jsm void inventory(const object *, unsigned short);
568 1.16 jsm boolean is_all_connected(void);
569 1.16 jsm boolean is_digit(int);
570 1.16 jsm boolean is_direction(short, short *);
571 1.16 jsm boolean is_pack_letter(short *, unsigned short *);
572 1.16 jsm boolean is_passable(int, int);
573 1.16 jsm boolean is_vowel(short);
574 1.16 jsm void kick_into_pack(void);
575 1.16 jsm void killed_by(const object *, short) __attribute__((__noreturn__));
576 1.16 jsm long lget_number(const char *);
577 1.16 jsm void light_passage(int, int);
578 1.16 jsm void light_up_room(int);
579 1.16 jsm boolean m_confuse(object *);
580 1.16 jsm void make_level(void);
581 1.16 jsm void make_maze(short, short, short, short, short, short);
582 1.16 jsm void make_party(void);
583 1.16 jsm void make_room(short, short, short, short);
584 1.16 jsm void make_scroll_titles(void);
585 1.16 jsm boolean mask_pack(const object *, unsigned short);
586 1.16 jsm boolean mask_room(short, short *, short *, unsigned short);
587 1.16 jsm boolean md_df(const char *);
588 1.16 jsm void md_exit(int) __attribute__((__noreturn__));
589 1.16 jsm void md_gct(struct rogue_time *);
590 1.16 jsm int md_get_file_id(const char *);
591 1.16 jsm void md_gfmt(const char *, struct rogue_time *);
592 1.16 jsm int md_gseed(void);
593 1.16 jsm void md_heed_signals(void);
594 1.16 jsm void md_ignore_signals(void);
595 1.16 jsm int md_link_count(const char *);
596 1.16 jsm void md_lock(boolean);
597 1.16 jsm void md_shell(const char *);
598 1.16 jsm void md_sleep(int);
599 1.16 jsm void md_slurp(void);
600 1.16 jsm void message(const char *, boolean);
601 1.16 jsm void mix_colors(void);
602 1.16 jsm void mix_random_rooms(void);
603 1.16 jsm int mon_can_go(const object *, int, int);
604 1.16 jsm int mon_damage(object *, short);
605 1.16 jsm void mon_hit(object *);
606 1.16 jsm boolean mon_sees(const object *, int, int);
607 1.16 jsm int move_confused(object *);
608 1.16 jsm void move_mon_to(object *, int, int);
609 1.16 jsm void move_onto(void);
610 1.16 jsm int mtry(object *, int, int);
611 1.16 jsm void multiple_move_rogue(short);
612 1.16 jsm void mv_1_monster(object *, int, int);
613 1.16 jsm void mv_aquatars(void);
614 1.16 jsm void mv_mons(void);
615 1.16 jsm int name_cmp(char *, const char *);
616 1.16 jsm short next_avail_ichar(void);
617 1.16 jsm boolean next_to_something(int, int);
618 1.16 jsm void nickize(char *, const char *, const char *);
619 1.16 jsm int no_room_for_monster(int);
620 1.16 jsm int one_move_rogue(short, short);
621 1.16 jsm void onintr(int);
622 1.16 jsm void opt_erase(int);
623 1.16 jsm void opt_go(int);
624 1.16 jsm void opt_show(int);
625 1.16 jsm short pack_count(const object *);
626 1.16 jsm short pack_letter(const char *, unsigned short);
627 1.16 jsm void pad(const char *, short);
628 1.16 jsm void party_monsters(int, int);
629 1.16 jsm short party_objects(int);
630 1.16 jsm void place_at(object *, int, int);
631 1.16 jsm void plant_gold(int, int, boolean);
632 1.16 jsm void play_level(void);
633 1.16 jsm void player_init(void);
634 1.16 jsm void potion_heal(int);
635 1.16 jsm int pr_com_id(int);
636 1.16 jsm int pr_motion_char(int);
637 1.16 jsm void print_stats(int);
638 1.16 jsm void put_amulet(void);
639 1.16 jsm void put_door(room *, short, short *, short *);
640 1.16 jsm void put_gold(void);
641 1.16 jsm void put_m_at(int, int, object *);
642 1.16 jsm void put_mons(void);
643 1.16 jsm void put_objects(void);
644 1.16 jsm void put_on_ring(void);
645 1.16 jsm void put_player(short);
646 1.16 jsm void put_scores(const object *, short) __attribute__((__noreturn__));
647 1.16 jsm void put_stairs(void);
648 1.16 jsm void quaff(void);
649 1.16 jsm void quit(boolean);
650 1.16 jsm int r_index(const char *, int, boolean);
651 1.16 jsm void r_read(FILE *, char *, int);
652 1.16 jsm void r_write(FILE *, const char *, int);
653 1.16 jsm void rand_around(short, short *, short *);
654 1.16 jsm int rand_percent(int);
655 1.16 jsm void rand_place(object *);
656 1.16 jsm void read_pack(object *, FILE *, boolean);
657 1.16 jsm void read_scroll(void);
658 1.16 jsm void read_string(char *, FILE *, size_t);
659 1.16 jsm void recursive_deadend(short, const short *, short, short);
660 1.16 jsm boolean reg_move(void);
661 1.16 jsm void relight(void);
662 1.16 jsm void remessage(short);
663 1.16 jsm void remove_ring(void);
664 1.16 jsm void rest(int);
665 1.16 jsm void restore(const char *);
666 1.16 jsm int rgetchar(void);
667 1.16 jsm void ring_stats(boolean);
668 1.16 jsm int rogue_can_see(int, int);
669 1.16 jsm void rogue_damage(short, object *, short);
670 1.16 jsm void rogue_hit(object *, boolean);
671 1.16 jsm int rogue_is_around(int, int);
672 1.16 jsm long rrandom(void);
673 1.16 jsm void rust(object *);
674 1.16 jsm void rw_dungeon(FILE *, boolean);
675 1.16 jsm void rw_id(struct id *, FILE *, int, boolean);
676 1.16 jsm void rw_rooms(FILE *, boolean);
677 1.16 jsm void s_con_mon(object *);
678 1.16 jsm int same_col(int, int);
679 1.16 jsm int same_row(int, int);
680 1.16 jsm void save_game(void);
681 1.16 jsm void save_into_file(const char *);
682 1.16 jsm void save_screen(void);
683 1.16 jsm void search(short, boolean);
684 1.16 jsm boolean seek_gold(object *);
685 1.16 jsm void sell_pack(void);
686 1.16 jsm void sf_error(void) __attribute__((__noreturn__));
687 1.16 jsm void show_average_hp(void);
688 1.16 jsm void show_monsters(void);
689 1.16 jsm void show_objects(void);
690 1.16 jsm void show_traps(void);
691 1.16 jsm void single_inv(short);
692 1.16 jsm void sound_bell(void);
693 1.16 jsm void special_hit(object *);
694 1.16 jsm void srrandom(int);
695 1.16 jsm void start_window(void);
696 1.16 jsm void steal_gold(object *);
697 1.16 jsm void steal_item(object *);
698 1.16 jsm void sting(object *);
699 1.16 jsm void stop_window(void);
700 1.16 jsm void take_a_nap(void);
701 1.16 jsm void take_from_pack(object *, object *);
702 1.16 jsm void take_off(void);
703 1.16 jsm void tele(void);
704 1.16 jsm void tele_away(object *);
705 1.16 jsm void throw(void);
706 1.16 jsm boolean throw_at_monster(object *, object *);
707 1.16 jsm int to_hit(const object *);
708 1.16 jsm short trap_at(int, int);
709 1.16 jsm void trap_player(int, int);
710 1.16 jsm boolean try_to_cough(short, short, object *);
711 1.16 jsm void turn_passage(short, boolean);
712 1.16 jsm void un_put_on(object *);
713 1.16 jsm void unblind(void);
714 1.16 jsm void unconfuse(void);
715 1.16 jsm void uncurse_all(void);
716 1.16 jsm void unhallucinate(void);
717 1.16 jsm void unwear(object *);
718 1.16 jsm void unwield(object *);
719 1.16 jsm void vanish(object *, short, object *);
720 1.16 jsm void visit_rooms(int);
721 1.16 jsm void wait_for_ack(void);
722 1.16 jsm void wake_room(short, boolean, short, short);
723 1.16 jsm void wake_up(object *);
724 1.16 jsm void wanderer(void);
725 1.16 jsm void wdrain_life(object *);
726 1.16 jsm void wear(void);
727 1.16 jsm void wield(void);
728 1.16 jsm void win(void) __attribute__((__noreturn__));
729 1.16 jsm void wizardize(void);
730 1.16 jsm void write_pack(const object *, FILE *);
731 1.16 jsm void write_string(char *, FILE *);
732 1.16 jsm long xxx(boolean);
733 1.16 jsm void xxxx(char *, short);
734 1.16 jsm void zap_monster(object *, unsigned short);
735 1.16 jsm void zapp(void);
736 1.16 jsm object *add_to_pack(object *, object *, int);
737 1.16 jsm struct id *get_id_table(const object *);
738 1.16 jsm unsigned short gr_what_is(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