1 1.25 hgutch /* $NetBSD: rogue.h,v 1.25 2025/04/07 14:36:28 hgutch 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.23 dholland short ichar; /* 'A' is for aquator */ 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.19 dholland #define INIT_AW NULL 246 1.19 dholland #define INIT_RINGS NULL 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.24 dholland #define INIT_PACK {0,NULL,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,NULL} 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.19 dholland #define NO_ROOM (-1) 297 1.1 cgd 298 1.19 dholland #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 level_monsters; 353 1.1 cgd 354 1.1 cgd #define MONSTERS 26 355 1.1 cgd 356 1.1 cgd #define HASTED 01L 357 1.1 cgd #define SLOWED 02L 358 1.1 cgd #define INVISIBLE 04L 359 1.1 cgd #define ASLEEP 010L 360 1.1 cgd #define WAKENS 020L 361 1.1 cgd #define WANDERS 040L 362 1.1 cgd #define FLIES 0100L 363 1.1 cgd #define FLITS 0200L 364 1.1 cgd #define CAN_FLIT 0400L /* can, but usually doesn't, flit */ 365 1.1 cgd #define CONFUSED 01000L 366 1.1 cgd #define RUSTS 02000L 367 1.1 cgd #define HOLDS 04000L 368 1.1 cgd #define FREEZES 010000L 369 1.1 cgd #define STEALS_GOLD 020000L 370 1.1 cgd #define STEALS_ITEM 040000L 371 1.1 cgd #define STINGS 0100000L 372 1.1 cgd #define DRAINS_LIFE 0200000L 373 1.1 cgd #define DROPS_LEVEL 0400000L 374 1.1 cgd #define SEEKS_GOLD 01000000L 375 1.1 cgd #define FREEZING_ROGUE 02000000L 376 1.1 cgd #define RUST_VANISHED 04000000L 377 1.1 cgd #define CONFUSES 010000000L 378 1.1 cgd #define IMITATES 020000000L 379 1.1 cgd #define FLAMES 040000000L 380 1.1 cgd #define STATIONARY 0100000000L /* damage will be 1,2,3,... */ 381 1.1 cgd #define NAPPING 0200000000L /* can't wake up for a while */ 382 1.1 cgd #define ALREADY_MOVED 0400000000L 383 1.1 cgd 384 1.1 cgd #define SPECIAL_HIT (RUSTS|HOLDS|FREEZES|STEALS_GOLD|STEALS_ITEM|STINGS|DRAINS_LIFE|DROPS_LEVEL) 385 1.1 cgd 386 1.1 cgd #define WAKE_PERCENT 45 387 1.1 cgd #define FLIT_PERCENT 40 388 1.1 cgd #define PARTY_WAKE_PERCENT 75 389 1.1 cgd 390 1.1 cgd #define HYPOTHERMIA 1 391 1.1 cgd #define STARVATION 2 392 1.1 cgd #define POISON_DART 3 393 1.1 cgd #define QUIT 4 394 1.1 cgd #define WIN 5 395 1.1 cgd #define KFIRE 6 396 1.1 cgd 397 1.1 cgd #define UPWARD 0 398 1.1 cgd #define UPRIGHT 1 399 1.1 cgd #define RIGHT 2 400 1.1 cgd #define DOWNRIGHT 3 401 1.1 cgd #define DOWN 4 402 1.1 cgd #define DOWNLEFT 5 403 1.1 cgd #define LEFT 6 404 1.1 cgd #define UPLEFT 7 405 1.1 cgd #define DIRS 8 406 1.1 cgd 407 1.1 cgd #define ROW1 7 408 1.1 cgd #define ROW2 15 409 1.1 cgd 410 1.1 cgd #define COL1 26 411 1.1 cgd #define COL2 52 412 1.1 cgd 413 1.1 cgd #define MOVED 0 414 1.1 cgd #define MOVE_FAILED -1 415 1.1 cgd #define STOPPED_ON_SOMETHING -2 416 1.1 cgd #define CANCEL '\033' 417 1.1 cgd #define LIST '*' 418 1.1 cgd 419 1.1 cgd #define HUNGRY 300 420 1.1 cgd #define WEAK 150 421 1.1 cgd #define FAINT 20 422 1.1 cgd #define STARVE 0 423 1.1 cgd 424 1.1 cgd #define MIN_ROW 1 425 1.1 cgd 426 1.1 cgd struct rogue_time { 427 1.1 cgd short year; /* >= 1987 */ 428 1.1 cgd short month; /* 1 - 12 */ 429 1.1 cgd short day; /* 1 - 31 */ 430 1.1 cgd short hour; /* 0 - 23 */ 431 1.1 cgd short minute; /* 0 - 59 */ 432 1.1 cgd short second; /* 0 - 59 */ 433 1.1 cgd }; 434 1.1 cgd 435 1.1 cgd #include <curses.h> 436 1.5 lukem 437 1.5 lukem /* 438 1.5 lukem * external routine declarations. 439 1.5 lukem */ 440 1.5 lukem #include <stdio.h> 441 1.5 lukem #include <string.h> 442 1.10 jsm #include <sys/types.h> 443 1.10 jsm #include <unistd.h> 444 1.5 lukem 445 1.16 jsm object *alloc_object(void); 446 1.16 jsm object *get_letter_object(int); 447 1.16 jsm object *gr_monster(object *, int); 448 1.16 jsm object *gr_object(void); 449 1.16 jsm char *md_getenv(const char *); 450 1.6 mycroft const char * 451 1.16 jsm md_gln(void); 452 1.19 dholland void *md_malloc(size_t); 453 1.16 jsm const char *mon_name(const object *); 454 1.16 jsm const char *name_of(const object *); 455 1.16 jsm object *object_at(object *, short, short); 456 1.16 jsm object *pick_up(int, int, short *); 457 1.16 jsm void add_exp(int, boolean); 458 1.16 jsm void add_traps(void); 459 1.16 jsm void aggravate(void); 460 1.16 jsm void bounce(short, short, short, short, short); 461 1.16 jsm void byebye(int); 462 1.16 jsm void c_object_for_wizard(void); 463 1.16 jsm void call_it(void); 464 1.16 jsm boolean can_move(int, int, int, int); 465 1.16 jsm void check_gold_seeker(object *); 466 1.16 jsm boolean check_imitator(object *); 467 1.16 jsm void check_message(void); 468 1.16 jsm int check_up(void); 469 1.22 dholland void clean_up(const char *) __dead; 470 1.16 jsm void clear_level(void); 471 1.16 jsm void cnfs(void); 472 1.16 jsm int coin_toss(void); 473 1.16 jsm void cough_up(object *); 474 1.16 jsm void create_monster(void); 475 1.16 jsm void darken_room(short); 476 1.16 jsm void do_put_on(object *, boolean); 477 1.16 jsm void do_shell(void); 478 1.16 jsm void do_wear(object *); 479 1.16 jsm void do_wield(object *); 480 1.16 jsm void dr_course(object *, boolean, short, short); 481 1.16 jsm void draw_magic_map(void); 482 1.16 jsm void drop(void); 483 1.16 jsm int drop_check(void); 484 1.16 jsm void eat(void); 485 1.16 jsm void edit_opts(void); 486 1.22 dholland void error_save(int) __dead; 487 1.19 dholland void fight(boolean); 488 1.16 jsm boolean flame_broil(object *); 489 1.16 jsm void free_object(object *); 490 1.16 jsm void free_stuff(object *); 491 1.16 jsm int get_armor_class(const object *); 492 1.16 jsm int get_damage(const char *, boolean); 493 1.18 dholland void get_desc(const object *, char *, size_t); 494 1.16 jsm void get_dir_rc(short, short *, short *, short); 495 1.16 jsm char get_dungeon_char(short, short); 496 1.16 jsm void get_food(object *, boolean); 497 1.16 jsm int get_hit_chance(const object *); 498 1.18 dholland int get_input_line(const char *, const char *, char *, size_t, const char *, boolean, boolean); 499 1.16 jsm char get_mask_char(unsigned short); 500 1.16 jsm int get_number(const char *); 501 1.16 jsm int get_rand(int, int); 502 1.16 jsm short get_room_number(int, int); 503 1.16 jsm void get_wand_and_ring_materials(void); 504 1.16 jsm int get_weapon_damage(const object *); 505 1.16 jsm char gmc(object *); 506 1.16 jsm char gmc_row_col(int, int); 507 1.16 jsm char gr_obj_char(void); 508 1.16 jsm void gr_ring(object *, boolean); 509 1.16 jsm short gr_room(void); 510 1.16 jsm void gr_row_col(short *, short *, unsigned short); 511 1.16 jsm void hallucinate(void); 512 1.16 jsm boolean has_amulet(void); 513 1.16 jsm int hp_raise(void); 514 1.16 jsm void id_com(void); 515 1.16 jsm void id_trap(void); 516 1.16 jsm void id_type(void); 517 1.19 dholland boolean imitating(short, short); 518 1.16 jsm int init(int, char **); 519 1.17 jsm void insert_score(char [][82], char [][30], const char *, short, short, const object *, int); 520 1.16 jsm void inv_armor_weapon(boolean); 521 1.16 jsm void inv_rings(void); 522 1.16 jsm void inventory(const object *, unsigned short); 523 1.16 jsm boolean is_all_connected(void); 524 1.16 jsm boolean is_digit(int); 525 1.16 jsm boolean is_direction(short, short *); 526 1.16 jsm boolean is_passable(int, int); 527 1.16 jsm boolean is_vowel(short); 528 1.16 jsm void kick_into_pack(void); 529 1.22 dholland void killed_by(const object *, short) __dead; 530 1.16 jsm long lget_number(const char *); 531 1.16 jsm void light_passage(int, int); 532 1.16 jsm void light_up_room(int); 533 1.16 jsm boolean m_confuse(object *); 534 1.16 jsm void make_level(void); 535 1.16 jsm void make_scroll_titles(void); 536 1.16 jsm boolean md_df(const char *); 537 1.22 dholland void md_exit(int) __dead; 538 1.16 jsm void md_gct(struct rogue_time *); 539 1.16 jsm int md_get_file_id(const char *); 540 1.16 jsm void md_gfmt(const char *, struct rogue_time *); 541 1.16 jsm int md_gseed(void); 542 1.16 jsm void md_heed_signals(void); 543 1.16 jsm void md_ignore_signals(void); 544 1.16 jsm int md_link_count(const char *); 545 1.16 jsm void md_lock(boolean); 546 1.16 jsm void md_shell(const char *); 547 1.16 jsm void md_sleep(int); 548 1.16 jsm void md_slurp(void); 549 1.18 dholland /*void message(const char *, boolean);*/ 550 1.22 dholland void messagef(boolean, const char *, ...) __printflike(2, 3); 551 1.16 jsm void mix_colors(void); 552 1.19 dholland int mon_can_go(const object *, short, short); 553 1.16 jsm int mon_damage(object *, short); 554 1.16 jsm void mon_hit(object *); 555 1.16 jsm boolean mon_sees(const object *, int, int); 556 1.19 dholland void move_mon_to(object *, short, short); 557 1.16 jsm void move_onto(void); 558 1.16 jsm void multiple_move_rogue(short); 559 1.19 dholland void mv_1_monster(object *, short, short); 560 1.16 jsm void mv_aquatars(void); 561 1.16 jsm void mv_mons(void); 562 1.16 jsm int name_cmp(char *, const char *); 563 1.16 jsm void nickize(char *, const char *, const char *); 564 1.16 jsm int one_move_rogue(short, short); 565 1.16 jsm void onintr(int); 566 1.16 jsm short pack_count(const object *); 567 1.16 jsm short pack_letter(const char *, unsigned short); 568 1.16 jsm void pad(const char *, short); 569 1.16 jsm void party_monsters(int, int); 570 1.16 jsm short party_objects(int); 571 1.16 jsm void place_at(object *, int, int); 572 1.16 jsm void play_level(void); 573 1.16 jsm void print_stats(int); 574 1.16 jsm void put_amulet(void); 575 1.16 jsm void put_mons(void); 576 1.16 jsm void put_objects(void); 577 1.16 jsm void put_on_ring(void); 578 1.16 jsm void put_player(short); 579 1.22 dholland void put_scores(const object *, short) __dead; 580 1.16 jsm void put_stairs(void); 581 1.16 jsm void quaff(void); 582 1.16 jsm void quit(boolean); 583 1.16 jsm int r_index(const char *, int, boolean); 584 1.16 jsm void rand_around(short, short *, short *); 585 1.16 jsm int rand_percent(int); 586 1.16 jsm void read_scroll(void); 587 1.16 jsm boolean reg_move(void); 588 1.16 jsm void relight(void); 589 1.16 jsm void remessage(short); 590 1.16 jsm void remove_ring(void); 591 1.16 jsm void rest(int); 592 1.16 jsm void restore(const char *); 593 1.16 jsm int rgetchar(void); 594 1.16 jsm void ring_stats(boolean); 595 1.16 jsm int rogue_can_see(int, int); 596 1.16 jsm void rogue_damage(short, object *, short); 597 1.16 jsm void rogue_hit(object *, boolean); 598 1.16 jsm void rust(object *); 599 1.16 jsm void s_con_mon(object *); 600 1.16 jsm void save_game(void); 601 1.16 jsm void save_into_file(const char *); 602 1.16 jsm void search(short, boolean); 603 1.16 jsm boolean seek_gold(object *); 604 1.25 hgutch void set_weapon_damage(object *); 605 1.25 hgutch void set_monster_damage(object *); 606 1.16 jsm void show_average_hp(void); 607 1.16 jsm void show_monsters(void); 608 1.16 jsm void show_objects(void); 609 1.16 jsm void show_traps(void); 610 1.16 jsm void single_inv(short); 611 1.16 jsm void sound_bell(void); 612 1.16 jsm void special_hit(object *); 613 1.16 jsm void srrandom(int); 614 1.16 jsm void start_window(void); 615 1.16 jsm void stop_window(void); 616 1.16 jsm void take_a_nap(void); 617 1.16 jsm void take_from_pack(object *, object *); 618 1.16 jsm void take_off(void); 619 1.16 jsm void tele(void); 620 1.16 jsm void throw(void); 621 1.19 dholland void trap_player(short, short); 622 1.16 jsm void un_put_on(object *); 623 1.16 jsm void unblind(void); 624 1.16 jsm void unconfuse(void); 625 1.16 jsm void unhallucinate(void); 626 1.16 jsm void unwear(object *); 627 1.16 jsm void unwield(object *); 628 1.16 jsm void vanish(object *, short, object *); 629 1.16 jsm void wait_for_ack(void); 630 1.16 jsm void wake_room(short, boolean, short, short); 631 1.16 jsm void wake_up(object *); 632 1.16 jsm void wanderer(void); 633 1.16 jsm void wear(void); 634 1.16 jsm void wield(void); 635 1.22 dholland void win(void) __dead; 636 1.16 jsm void wizardize(void); 637 1.16 jsm long xxx(boolean); 638 1.16 jsm void xxxx(char *, short); 639 1.16 jsm void zapp(void); 640 1.16 jsm object *add_to_pack(object *, object *, int); 641 1.16 jsm struct id *get_id_table(const object *); 642 1.5 lukem 643 1.5 lukem extern boolean ask_quit; 644 1.5 lukem extern boolean being_held; 645 1.5 lukem extern boolean cant_int; 646 1.5 lukem extern boolean con_mon; 647 1.5 lukem extern boolean detect_monster; 648 1.5 lukem extern boolean did_int; 649 1.5 lukem extern boolean interrupted; 650 1.5 lukem extern boolean is_wood[]; 651 1.5 lukem extern boolean jump; 652 1.5 lukem extern boolean maintain_armor; 653 1.5 lukem extern boolean mon_disappeared; 654 1.5 lukem extern boolean msg_cleared; 655 1.5 lukem extern boolean no_skull; 656 1.5 lukem extern boolean passgo; 657 1.5 lukem extern boolean r_see_invisible; 658 1.5 lukem extern boolean r_teleport; 659 1.5 lukem extern boolean save_is_interactive; 660 1.5 lukem extern boolean score_only; 661 1.5 lukem extern boolean see_invisible; 662 1.5 lukem extern boolean sustain_strength; 663 1.5 lukem extern boolean trap_door; 664 1.5 lukem extern boolean wizard; 665 1.18 dholland #define HIT_MESSAGE_SIZE 80 666 1.18 dholland extern char hit_message[HIT_MESSAGE_SIZE]; 667 1.13 mrg #define HUNGER_STR_LEN 8 668 1.13 mrg extern char hunger_str[HUNGER_STR_LEN]; 669 1.13 mrg extern char login_name[MAX_OPT_LEN]; 670 1.8 hubertf extern const char *byebye_string; 671 1.21 joerg extern const char curse_message[]; 672 1.8 hubertf extern const char *error_file; 673 1.5 lukem extern char *fruit; 674 1.8 hubertf extern const char *const m_names[]; 675 1.8 hubertf extern const char *more; 676 1.8 hubertf extern const char *new_level_message; 677 1.5 lukem extern char *nick_name; 678 1.8 hubertf extern const char *press_space; 679 1.5 lukem extern char *save_file; 680 1.21 joerg extern const char you_can_move_again[]; 681 1.8 hubertf extern const long level_points[]; 682 1.5 lukem extern short add_strength; 683 1.5 lukem extern short auto_search; 684 1.5 lukem extern short bear_trap; 685 1.5 lukem extern short blind; 686 1.5 lukem extern short confused; 687 1.5 lukem extern short cur_level; 688 1.5 lukem extern short cur_room; 689 1.5 lukem extern short e_rings; 690 1.5 lukem extern short extra_hp; 691 1.5 lukem extern short foods; 692 1.5 lukem extern short halluc; 693 1.5 lukem extern short haste_self; 694 1.5 lukem extern short less_hp; 695 1.5 lukem extern short levitate; 696 1.5 lukem extern short m_moves; 697 1.5 lukem extern short max_level; 698 1.5 lukem extern short party_room; 699 1.5 lukem extern short r_rings; 700 1.5 lukem extern short regeneration; 701 1.5 lukem extern short ring_exp; 702 1.5 lukem extern short stealthy; 703 1.10 jsm extern gid_t gid; 704 1.10 jsm extern gid_t egid; 705