Annotation of 43BSDTahoe/games/rogue/rogue.h, revision 1.1

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

unix.superglobalmegacorp.com

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