|
|
1.1 ! root 1: /* ! 2: * rogue.h ! 3: * ! 4: * This source herein may be modified and/or distributed by anybody who ! 5: * so desires, with the following restrictions: ! 6: * 1.) This notice shall not be removed. ! 7: * 2.) Credit shall not be taken for the creation of this source. ! 8: * 3.) This code is not to be traded, sold, or used for personal ! 9: * gain or profit. ! 10: * ! 11: * @(#)rogue.h 5.2 (Berkeley) 11/25/87 ! 12: */ ! 13: ! 14: #define boolean char ! 15: ! 16: #define NOTHING ((unsigned short) 0) ! 17: #define OBJECT ((unsigned short) 01) ! 18: #define MONSTER ((unsigned short) 02) ! 19: #define STAIRS ((unsigned short) 04) ! 20: #define HORWALL ((unsigned short) 010) ! 21: #define VERTWALL ((unsigned short) 020) ! 22: #define DOOR ((unsigned short) 040) ! 23: #define FLOOR ((unsigned short) 0100) ! 24: #define TUNNEL ((unsigned short) 0200) ! 25: #define TRAP ((unsigned short) 0400) ! 26: #define HIDDEN ((unsigned short) 01000) ! 27: ! 28: #define ARMOR ((unsigned short) 01) ! 29: #define WEAPON ((unsigned short) 02) ! 30: #define SCROL ((unsigned short) 04) ! 31: #define POTION ((unsigned short) 010) ! 32: #define GOLD ((unsigned short) 020) ! 33: #define FOOD ((unsigned short) 040) ! 34: #define WAND ((unsigned short) 0100) ! 35: #define RING ((unsigned short) 0200) ! 36: #define AMULET ((unsigned short) 0400) ! 37: #define ALL_OBJECTS ((unsigned short) 0777) ! 38: ! 39: #define LEATHER 0 ! 40: #define RINGMAIL 1 ! 41: #define SCALE 2 ! 42: #define CHAIN 3 ! 43: #define BANDED 4 ! 44: #define SPLINT 5 ! 45: #define PLATE 6 ! 46: #define ARMORS 7 ! 47: ! 48: #define BOW 0 ! 49: #define DART 1 ! 50: #define ARROW 2 ! 51: #define DAGGER 3 ! 52: #define SHURIKEN 4 ! 53: #define MACE 5 ! 54: #define LONG_SWORD 6 ! 55: #define TWO_HANDED_SWORD 7 ! 56: #define WEAPONS 8 ! 57: ! 58: #define MAX_PACK_COUNT 24 ! 59: ! 60: #define PROTECT_ARMOR 0 ! 61: #define HOLD_MONSTER 1 ! 62: #define ENCH_WEAPON 2 ! 63: #define ENCH_ARMOR 3 ! 64: #define IDENTIFY 4 ! 65: #define TELEPORT 5 ! 66: #define SLEEP 6 ! 67: #define SCARE_MONSTER 7 ! 68: #define REMOVE_CURSE 8 ! 69: #define CREATE_MONSTER 9 ! 70: #define AGGRAVATE_MONSTER 10 ! 71: #define MAGIC_MAPPING 11 ! 72: #define CON_MON 12 ! 73: #define SCROLS 13 ! 74: ! 75: #define INCREASE_STRENGTH 0 ! 76: #define RESTORE_STRENGTH 1 ! 77: #define HEALING 2 ! 78: #define EXTRA_HEALING 3 ! 79: #define POISON 4 ! 80: #define RAISE_LEVEL 5 ! 81: #define BLINDNESS 6 ! 82: #define HALLUCINATION 7 ! 83: #define DETECT_MONSTER 8 ! 84: #define DETECT_OBJECTS 9 ! 85: #define CONFUSION 10 ! 86: #define LEVITATION 11 ! 87: #define HASTE_SELF 12 ! 88: #define SEE_INVISIBLE 13 ! 89: #define POTIONS 14 ! 90: ! 91: #define TELE_AWAY 0 ! 92: #define SLOW_MONSTER 1 ! 93: #define INVISIBILITY 2 ! 94: #define POLYMORPH 3 ! 95: #define HASTE_MONSTER 4 ! 96: #define MAGIC_MISSILE 5 ! 97: #define CANCELLATION 6 ! 98: #define DO_NOTHING 7 ! 99: #define DRAIN_LIFE 8 ! 100: #define COLD 9 ! 101: #define FIRE 10 ! 102: #define WANDS 11 ! 103: ! 104: #define STEALTH 0 ! 105: #define R_TELEPORT 1 ! 106: #define REGENERATION 2 ! 107: #define SLOW_DIGEST 3 ! 108: #define ADD_STRENGTH 4 ! 109: #define SUSTAIN_STRENGTH 5 ! 110: #define DEXTERITY 6 ! 111: #define ADORNMENT 7 ! 112: #define R_SEE_INVISIBLE 8 ! 113: #define MAINTAIN_ARMOR 9 ! 114: #define SEARCHING 10 ! 115: #define RINGS 11 ! 116: ! 117: #define RATION 0 ! 118: #define FRUIT 1 ! 119: ! 120: #define NOT_USED ((unsigned short) 0) ! 121: #define BEING_WIELDED ((unsigned short) 01) ! 122: #define BEING_WORN ((unsigned short) 02) ! 123: #define ON_LEFT_HAND ((unsigned short) 04) ! 124: #define ON_RIGHT_HAND ((unsigned short) 010) ! 125: #define ON_EITHER_HAND ((unsigned short) 014) ! 126: #define BEING_USED ((unsigned short) 017) ! 127: ! 128: #define NO_TRAP -1 ! 129: #define TRAP_DOOR 0 ! 130: #define BEAR_TRAP 1 ! 131: #define TELE_TRAP 2 ! 132: #define DART_TRAP 3 ! 133: #define SLEEPING_GAS_TRAP 4 ! 134: #define RUST_TRAP 5 ! 135: #define TRAPS 6 ! 136: ! 137: #define STEALTH_FACTOR 3 ! 138: #define R_TELE_PERCENT 8 ! 139: ! 140: #define UNIDENTIFIED ((unsigned short) 00) /* MUST BE ZERO! */ ! 141: #define IDENTIFIED ((unsigned short) 01) ! 142: #define CALLED ((unsigned short) 02) ! 143: ! 144: #define DROWS 24 ! 145: #define DCOLS 80 ! 146: #define NMESSAGES 5 ! 147: #define MAX_TITLE_LENGTH 30 ! 148: #define MAXSYLLABLES 40 ! 149: #define MAX_METAL 14 ! 150: #define WAND_MATERIALS 30 ! 151: #define GEMS 14 ! 152: ! 153: #define GOLD_PERCENT 46 ! 154: ! 155: #define SCORE_FILE "/usr/games/lib/rogue.scores" ! 156: #define LOCK_FILE "/usr/games/lib/rogue.lock" ! 157: ! 158: #define MAX_OPT_LEN 40 ! 159: ! 160: struct id { ! 161: short value; ! 162: char *title; ! 163: char *real; ! 164: unsigned short id_status; ! 165: }; ! 166: ! 167: /* The following #defines provide more meaningful names for some of the ! 168: * struct object fields that are used for monsters. This, since each monster ! 169: * and object (scrolls, potions, etc) are represented by a struct object. ! 170: * Ideally, this should be handled by some kind of union structure. ! 171: */ ! 172: ! 173: #define m_damage damage ! 174: #define hp_to_kill quantity ! 175: #define m_char ichar ! 176: #define first_level is_protected ! 177: #define last_level is_cursed ! 178: #define m_hit_chance class ! 179: #define stationary_damage identified ! 180: #define drop_percent which_kind ! 181: #define trail_char d_enchant ! 182: #define slowed_toggle quiver ! 183: #define moves_confused hit_enchant ! 184: #define nap_length picked_up ! 185: #define disguise what_is ! 186: #define next_monster next_object ! 187: ! 188: struct obj { /* comment is monster meaning */ ! 189: unsigned long m_flags; /* monster flags */ ! 190: char *damage; /* damage it does */ ! 191: short quantity; /* hit points to kill */ ! 192: short ichar; /* 'A' is for aquatar */ ! 193: short kill_exp; /* exp for killing it */ ! 194: short is_protected; /* level starts */ ! 195: short is_cursed; /* level ends */ ! 196: short class; /* chance of hitting you */ ! 197: short identified; /* 'F' damage, 1,2,3... */ ! 198: unsigned short which_kind; /* item carry/drop % */ ! 199: short o_row, o_col, o; /* o is how many times stuck at o_row, o_col */ ! 200: short row, col; /* current row, col */ ! 201: short d_enchant; /* room char when detect_monster */ ! 202: short quiver; /* monster slowed toggle */ ! 203: short trow, tcol; /* target row, col */ ! 204: short hit_enchant; /* how many moves is confused */ ! 205: unsigned short what_is; /* imitator's charactor (?!%: */ ! 206: short picked_up; /* sleep from wand of sleep */ ! 207: unsigned short in_use_flags; ! 208: struct obj *next_object; /* next monster */ ! 209: }; ! 210: ! 211: typedef struct obj object; ! 212: ! 213: #define INIT_AW (object*)0,(object*)0 ! 214: #define INIT_RINGS (object*)0,(object*)0 ! 215: #define INIT_HP 12,12 ! 216: #define INIT_STR 16,16 ! 217: #define INIT_EXP 1,0 ! 218: #define INIT_PACK {0} ! 219: #define INIT_GOLD 0 ! 220: #define INIT_CHAR '@' ! 221: #define INIT_MOVES 1250 ! 222: ! 223: struct fightr { ! 224: object *armor; ! 225: object *weapon; ! 226: object *left_ring, *right_ring; ! 227: short hp_current; ! 228: short hp_max; ! 229: short str_current; ! 230: short str_max; ! 231: object pack; ! 232: long gold; ! 233: short exp; ! 234: long exp_points; ! 235: short row, col; ! 236: short fchar; ! 237: short moves_left; ! 238: }; ! 239: ! 240: typedef struct fightr fighter; ! 241: ! 242: struct dr { ! 243: short oth_room; ! 244: short oth_row, ! 245: oth_col; ! 246: short door_row, ! 247: door_col; ! 248: }; ! 249: ! 250: typedef struct dr door; ! 251: ! 252: struct rm { ! 253: short bottom_row, right_col, left_col, top_row; ! 254: door doors[4]; ! 255: unsigned short is_room; ! 256: }; ! 257: ! 258: typedef struct rm room; ! 259: ! 260: #define MAXROOMS 9 ! 261: #define BIG_ROOM 10 ! 262: ! 263: #define NO_ROOM -1 ! 264: ! 265: #define PASSAGE -3 /* cur_room value */ ! 266: ! 267: #define AMULET_LEVEL 26 ! 268: ! 269: #define R_NOTHING ((unsigned short) 01) ! 270: #define R_ROOM ((unsigned short) 02) ! 271: #define R_MAZE ((unsigned short) 04) ! 272: #define R_DEADEND ((unsigned short) 010) ! 273: #define R_CROSS ((unsigned short) 020) ! 274: ! 275: #define MAX_EXP_LEVEL 21 ! 276: #define MAX_EXP 10000001L ! 277: #define MAX_GOLD 999999 ! 278: #define MAX_ARMOR 99 ! 279: #define MAX_HP 999 ! 280: #define MAX_STRENGTH 99 ! 281: #define LAST_DUNGEON 99 ! 282: ! 283: #define STAT_LEVEL 01 ! 284: #define STAT_GOLD 02 ! 285: #define STAT_HP 04 ! 286: #define STAT_STRENGTH 010 ! 287: #define STAT_ARMOR 020 ! 288: #define STAT_EXP 040 ! 289: #define STAT_HUNGER 0100 ! 290: #define STAT_LABEL 0200 ! 291: #define STAT_ALL 0377 ! 292: ! 293: #define PARTY_TIME 10 /* one party somewhere in each 10 level span */ ! 294: ! 295: #define MAX_TRAPS 10 /* maximum traps per level */ ! 296: ! 297: #define HIDE_PERCENT 12 ! 298: ! 299: struct tr { ! 300: short trap_type; ! 301: short trap_row, trap_col; ! 302: }; ! 303: ! 304: typedef struct tr trap; ! 305: ! 306: extern fighter rogue; ! 307: extern room rooms[]; ! 308: extern trap traps[]; ! 309: extern unsigned short dungeon[DROWS][DCOLS]; ! 310: extern object level_objects; ! 311: ! 312: extern struct id id_scrolls[]; ! 313: extern struct id id_potions[]; ! 314: extern struct id id_wands[]; ! 315: extern struct id id_rings[]; ! 316: extern struct id id_weapons[]; ! 317: extern struct id id_armors[]; ! 318: ! 319: extern object mon_tab[]; ! 320: extern object level_monsters; ! 321: ! 322: #define MONSTERS 26 ! 323: ! 324: #define HASTED 01L ! 325: #define SLOWED 02L ! 326: #define INVISIBLE 04L ! 327: #define ASLEEP 010L ! 328: #define WAKENS 020L ! 329: #define WANDERS 040L ! 330: #define FLIES 0100L ! 331: #define FLITS 0200L ! 332: #define CAN_FLIT 0400L /* can, but usually doesn't, flit */ ! 333: #define CONFUSED 01000L ! 334: #define RUSTS 02000L ! 335: #define HOLDS 04000L ! 336: #define FREEZES 010000L ! 337: #define STEALS_GOLD 020000L ! 338: #define STEALS_ITEM 040000L ! 339: #define STINGS 0100000L ! 340: #define DRAINS_LIFE 0200000L ! 341: #define DROPS_LEVEL 0400000L ! 342: #define SEEKS_GOLD 01000000L ! 343: #define FREEZING_ROGUE 02000000L ! 344: #define RUST_VANISHED 04000000L ! 345: #define CONFUSES 010000000L ! 346: #define IMITATES 020000000L ! 347: #define FLAMES 040000000L ! 348: #define STATIONARY 0100000000L /* damage will be 1,2,3,... */ ! 349: #define NAPPING 0200000000L /* can't wake up for a while */ ! 350: #define ALREADY_MOVED 0400000000L ! 351: ! 352: #define SPECIAL_HIT (RUSTS|HOLDS|FREEZES|STEALS_GOLD|STEALS_ITEM|STINGS|DRAINS_LIFE|DROPS_LEVEL) ! 353: ! 354: #define WAKE_PERCENT 45 ! 355: #define FLIT_PERCENT 40 ! 356: #define PARTY_WAKE_PERCENT 75 ! 357: ! 358: #define HYPOTHERMIA 1 ! 359: #define STARVATION 2 ! 360: #define POISON_DART 3 ! 361: #define QUIT 4 ! 362: #define WIN 5 ! 363: #define KFIRE 6 ! 364: ! 365: #define UPWARD 0 ! 366: #define UPRIGHT 1 ! 367: #define RIGHT 2 ! 368: #define DOWNRIGHT 3 ! 369: #define DOWN 4 ! 370: #define DOWNLEFT 5 ! 371: #define LEFT 6 ! 372: #define UPLEFT 7 ! 373: #define DIRS 8 ! 374: ! 375: #define ROW1 7 ! 376: #define ROW2 15 ! 377: ! 378: #define COL1 26 ! 379: #define COL2 52 ! 380: ! 381: #define MOVED 0 ! 382: #define MOVE_FAILED -1 ! 383: #define STOPPED_ON_SOMETHING -2 ! 384: #define CANCEL '\033' ! 385: #define LIST '*' ! 386: ! 387: #define HUNGRY 300 ! 388: #define WEAK 150 ! 389: #define FAINT 20 ! 390: #define STARVE 0 ! 391: ! 392: #define MIN_ROW 1 ! 393: ! 394: /* external routine declarations. ! 395: */ ! 396: char *strcpy(); ! 397: char *strncpy(); ! 398: char *strcat(); ! 399: ! 400: char *mon_name(); ! 401: char *get_ench_color(); ! 402: char *name_of(); ! 403: char *md_gln(); ! 404: char *md_getenv(); ! 405: char *md_malloc(); ! 406: boolean is_direction(); ! 407: boolean mon_sees(); ! 408: boolean mask_pack(); ! 409: boolean mask_room(); ! 410: boolean is_digit(); ! 411: boolean check_hunger(); ! 412: boolean reg_move(); ! 413: boolean md_df(); ! 414: boolean has_been_touched(); ! 415: object *add_to_pack(); ! 416: object *alloc_object(); ! 417: object *get_letter_object(); ! 418: object *gr_monster(); ! 419: object *get_thrown_at_monster(); ! 420: object *get_zapped_monster(); ! 421: object *check_duplicate(); ! 422: object *gr_object(); ! 423: object *object_at(); ! 424: object *pick_up(); ! 425: struct id *get_id_table(); ! 426: unsigned short gr_what_is(); ! 427: long rrandom(); ! 428: long lget_number(); ! 429: long xxx(); ! 430: int byebye(), onintr(), error_save(); ! 431: ! 432: struct rogue_time { ! 433: short year; /* >= 1987 */ ! 434: short month; /* 1 - 12 */ ! 435: short day; /* 1 - 31 */ ! 436: short hour; /* 0 - 23 */ ! 437: short minute; /* 0 - 59 */ ! 438: short second; /* 0 - 59 */ ! 439: }; ! 440: ! 441: #ifdef CURSES ! 442: struct _win_st { ! 443: short _cury, _curx; ! 444: short _maxy, _maxx; ! 445: }; ! 446: ! 447: typedef struct _win_st WINDOW; ! 448: ! 449: extern int LINES, COLS; ! 450: extern WINDOW *curscr; ! 451: extern char *CL; ! 452: ! 453: char *md_gdtcf(); ! 454: ! 455: #else ! 456: #include <curses.h> ! 457: #endif
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.