Annotation of 43BSDReno/games/rogue/rogue.h, revision 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.