Annotation of 43BSDReno/games/rogue/rogue.h, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.