[BACK]Return to rogue.h CVS log [TXT][DIR] Up to [contributed] / early-roguelike / rogue4

Annotation of early-roguelike/rogue4/rogue.h, Revision 1.1

1.1     ! rubenllo    1: /*
        !             2:  * Rogue definitions and variable declarations
        !             3:  *
        !             4:  * @(#)rogue.h 5.2 (Berkeley) 5/10/82
        !             5:  *
        !             6:  * Rogue: Exploring the Dungeons of Doom
        !             7:  * Copyright (C) 1980, 1981, 1982 Michael Toy, Ken Arnold and Glenn Wichman
        !             8:  * All rights reserved.
        !             9:  *
        !            10:  * See the file LICENSE.TXT for full copyright and licensing information.
        !            11:  */
        !            12:
        !            13: typedef struct {
        !            14:     const char *st_name;
        !            15:     const int   st_value;
        !            16: } STONE;
        !            17:
        !            18: extern const char *rainbow[];
        !            19: extern const STONE stones[];
        !            20: extern const char *sylls[];
        !            21: extern const char *wood[];
        !            22: extern const char *metal[];
        !            23:
        !            24: #define NCOLORS 27
        !            25: #define NSYLLS  159
        !            26: #define NSTONES 26
        !            27: #define NWOOD   33
        !            28: #define NMETAL  22
        !            29:
        !            30: /*
        !            31:  * Maximum number of different things
        !            32:  */
        !            33: #define MAXDAEMONS  20
        !            34: #define MAXROOMS       9
        !            35: #define MAXTHINGS      9
        !            36: #define MAXOBJ         9
        !            37: #define MAXPACK                23
        !            38: #define MAXTRAPS       10
        !            39: #define AMULETLEVEL    26
        !            40: #define        NUMTHINGS       7       /* number of types of things */
        !            41: #define MAXPASS                13      /* upper limit on number of passages */
        !            42:
        !            43: /*
        !            44:  * return values for get functions
        !            45:  */
        !            46: #define        NORM    0       /* normal exit */
        !            47: #define        QUIT    1       /* quit option setting */
        !            48: #define        MINUS   2       /* back up one option */
        !            49:
        !            50: /*
        !            51:  * All the fun defines
        !            52:  */
        !            53: #define shint          char            /* short integer (for very small #s) */
        !            54: #define when           break;case
        !            55: #define otherwise      break;default
        !            56: #define until(expr)    while(!(expr))
        !            57: #define next(ptr)      (*ptr).l_next
        !            58: #define prev(ptr)      (*ptr).l_prev
        !            59: #define winat(y,x)     (moat(y,x) != NULL ? moat(y,x)->t_disguise : chat(y,x))
        !            60: #define DISTANCE(y1, x1, y2, x2) ((x2 - x1)*(x2 - x1) + (y2 - y1)*(y2 - y1))
        !            61: #define ce(a,b)                ((a).x == (b).x && (a).y == (b).y)
        !            62: #define hero           player.t_pos
        !            63: #define pstats         player.t_stats
        !            64: #define pack           player.t_pack
        !            65: #define proom          player.t_room
        !            66: #define max_hp         player.t_stats.s_maxhp
        !            67: #define attach(a,b)    _attach(&a,b)
        !            68: #define detach(a,b)    _detach(&a,b)
        !            69: #define free_list(a)   _free_list(&a)
        !            70: #ifndef max
        !            71: #define max(a,b)       ((a) > (b) ? (a) : (b))
        !            72: #endif
        !            73: #define on(thing,flag) (((thing).t_flags & (flag)) != 0)
        !            74: #undef CTRL
        !            75: #define CTRL(ch)       (ch & 037)
        !            76: #define GOLDCALC       (rnd(50 + 10 * level) + 2)
        !            77: #define ISRING(h,r)    (cur_ring[h] != NULL && cur_ring[h]->o_which == r)
        !            78: #define ISWEARING(r)   (ISRING(LEFT, r) || ISRING(RIGHT, r))
        !            79: #define ISMULT(type)   (type==POTION || type==SCROLL || type==FOOD || type==GOLD)
        !            80: #define INDEX(y,x)     (((x) << 5) + (y))
        !            81: #define chat(y,x)      (_level[((x) << 5) + (y)])
        !            82: #define flat(y,x)      (_flags[((x) << 5) + (y)])
        !            83: #define moat(y,x)      (_monst[((x) << 5) + (y)])
        !            84: #define unc(cp)                (cp).y, (cp).x
        !            85: #ifdef WIZARD
        !            86: #define debug          if (wizard) msg
        !            87: #endif
        !            88:
        !            89: /*
        !            90:  * Things that appear on the screens
        !            91:  */
        !            92: #define PASSAGE                '#'
        !            93: #define DOOR           '+'
        !            94: #define FLOOR          '.'
        !            95: #define PLAYER         '@'
        !            96: #define TRAP           '^'
        !            97: #define STAIRS         '%'
        !            98: #define GOLD           '*'
        !            99: #define POTION         '!'
        !           100: #define SCROLL         '?'
        !           101: #define MAGIC          '$'
        !           102: #define FOOD           ':'
        !           103: #define WEAPON         ')'
        !           104: #define ARMOR          ']'
        !           105: #define AMULET         ','
        !           106: #define RING           '='
        !           107: #define STICK          '/'
        !           108: #define CALLABLE       -1
        !           109:
        !           110: int spread(int nm);
        !           111: /*
        !           112:  * Various constants
        !           113:  */
        !           114: #define        PASSWD          "mTuZ7WUV9RWkQ"
        !           115: #define BEARTIME       spread(3)
        !           116: #define SLEEPTIME      spread(5)
        !           117: #define HEALTIME       spread(30)
        !           118: #define HOLDTIME       spread(2)
        !           119: #define WANDERTIME     spread(70)
        !           120: #define BEFORE         spread(1)
        !           121: #define AFTER          spread(2)
        !           122: #define HUHDURATION    spread(20)
        !           123: #define SEEDURATION    spread(850)
        !           124: #define HUNGERTIME     spread(1300)
        !           125: #define MORETIME       150
        !           126: #define STOMACHSIZE    2000
        !           127: #define STARVETIME     850
        !           128: #define ESCAPE         27
        !           129: #define LEFT           0
        !           130: #define RIGHT          1
        !           131: #define BOLT_LENGTH    6
        !           132: #define LAMPDIST       3
        !           133:
        !           134: /*
        !           135:  * Save against things
        !           136:  */
        !           137: #define VS_POISON      00
        !           138: #define VS_PARALYZATION        00
        !           139: #define VS_DEATH       00
        !           140: #define VS_BREATH      02
        !           141: #define VS_MAGIC       03
        !           142:
        !           143: /*
        !           144:  * Various flag bits
        !           145:  */
        !           146: /* flags for rooms */
        !           147: #define ISDARK 0000001         /* room is dark */
        !           148: #define ISGONE 0000002         /* room is gone (a corridor) */
        !           149:
        !           150: /* flags for objects */
        !           151: #define ISCURSED 000001                /* object is cursed */
        !           152: #define ISKNOW 0000002         /* player knows details about the object */
        !           153: #define ISMISL 0000004         /* object is a missile type */
        !           154: #define ISMANY 0000010         /* object comes in groups */
        !           155:
        !           156: /* flags for creatures */
        !           157: #define CANHUH 0000001         /* creature can confuse */
        !           158: #define CANSEE 0000002         /* creature can see invisible creatures */
        !           159: #define ISBLIND        0000004         /* creature is blind */
        !           160: #define ISCANC 0000010         /* creature has special qualities cancelled */
        !           161: #define ISFOUND        0000020         /* creature has been seen (used for objects) */
        !           162: #define ISGREED        0000040         /* creature runs to protect gold */
        !           163: #define ISHASTE        0000100         /* creature has been hastened */
        !           164: #define ISHELD 0000400         /* creature has been held */
        !           165: #define ISHUH  0001000         /* creature is confused */
        !           166: #define ISINVIS        0002000         /* creature is invisible */
        !           167: #define ISMEAN 0004000         /* creature can wake when player enters room */
        !           168: #define ISREGEN        0010000         /* creature can regenerate */
        !           169: #define ISRUN  0020000         /* creature is running at the player */
        !           170: #define SEEMONST 040000                /* hero can detect unseen monsters */
        !           171: #define ISSLOW 0100000         /* creature has been slowed */
        !           172:
        !           173: /*
        !           174:  * Flags for level map
        !           175:  */
        !           176: #define F_PASS         0x80            /* is a passageway */
        !           177: #define F_SEEN         0x40            /* have seen this corridor before */
        !           178: #define F_DROPPED      0x20            /* object was dropped here */
        !           179: #define F_LOCKED       0x20            /* door is locked */
        !           180: #define F_REAL         0x10            /* what you see is what you get */
        !           181: #define F_PNUM         0x0f            /* passage number mask */
        !           182: #define F_TMASK                0x07            /* trap number mask */
        !           183:
        !           184: /*
        !           185:  * Trap types
        !           186:  */
        !           187: #define T_DOOR 00
        !           188: #define T_ARROW        01
        !           189: #define T_SLEEP        02
        !           190: #define T_BEAR 03
        !           191: #define T_TELEP        04
        !           192: #define T_DART 05
        !           193: #define NTRAPS 6
        !           194:
        !           195: /*
        !           196:  * Potion types
        !           197:  */
        !           198: #define P_CONFUSE      0
        !           199: #define P_PARALYZE     1
        !           200: #define P_POISON       2
        !           201: #define P_STRENGTH     3
        !           202: #define P_SEEINVIS     4
        !           203: #define P_HEALING      5
        !           204: #define P_MFIND                6
        !           205: #define        P_TFIND         7
        !           206: #define        P_RAISE         8
        !           207: #define P_XHEAL                9
        !           208: #define P_HASTE                10
        !           209: #define P_RESTORE      11
        !           210: #define P_BLIND                12
        !           211: #define P_NOP          13
        !           212: #define MAXPOTIONS     14
        !           213:
        !           214: /*
        !           215:  * Scroll types
        !           216:  */
        !           217: #define S_CONFUSE      0
        !           218: #define S_MAP          1
        !           219: #define S_HOLD         2
        !           220: #define S_SLEEP                3
        !           221: #define S_ARMOR                4
        !           222: #define S_IDENT                5
        !           223: #define S_SCARE                6
        !           224: #define S_GFIND                7
        !           225: #define S_TELEP                8
        !           226: #define S_ENCH         9
        !           227: #define S_CREATE       10
        !           228: #define S_REMOVE       11
        !           229: #define S_AGGR         12
        !           230: #define S_NOP          13
        !           231: #define S_GENOCIDE     14
        !           232: #define MAXSCROLLS     15
        !           233:
        !           234: /*
        !           235:  * Weapon types
        !           236:  */
        !           237: #define MACE           0
        !           238: #define SWORD          1
        !           239: #define BOW            2
        !           240: #define ARROW          3
        !           241: #define DAGGER         4
        !           242: #define TWOSWORD       5
        !           243: #define DART           6
        !           244: #define CROSSBOW       7
        !           245: #define BOLT           8
        !           246: #define SPEAR          9
        !           247: #define FLAME          10      /* fake entry for dragon breath (ick) */
        !           248: #define MAXWEAPONS     10      /* this should equal FLAME */
        !           249:
        !           250: /*
        !           251:  * Armor types
        !           252:  */
        !           253: #define LEATHER                0
        !           254: #define RING_MAIL      1
        !           255: #define STUDDED_LEATHER        2
        !           256: #define SCALE_MAIL     3
        !           257: #define CHAIN_MAIL     4
        !           258: #define SPLINT_MAIL    5
        !           259: #define BANDED_MAIL    6
        !           260: #define PLATE_MAIL     7
        !           261: #define MAXARMORS      8
        !           262:
        !           263: /*
        !           264:  * Ring types
        !           265:  */
        !           266: #define R_PROTECT      0
        !           267: #define R_ADDSTR       1
        !           268: #define R_SUSTSTR      2
        !           269: #define R_SEARCH       3
        !           270: #define R_SEEINVIS     4
        !           271: #define R_NOP          5
        !           272: #define R_AGGR         6
        !           273: #define R_ADDHIT       7
        !           274: #define R_ADDDAM       8
        !           275: #define R_REGEN                9
        !           276: #define R_DIGEST       10
        !           277: #define R_TELEPORT     11
        !           278: #define R_STEALTH      12
        !           279: #define R_SUSTARM      13
        !           280: #define MAXRINGS       14
        !           281:
        !           282: /*
        !           283:  * Rod/Wand/Staff types
        !           284:  */
        !           285:
        !           286: #define WS_LIGHT       0
        !           287: #define WS_HIT         1
        !           288: #define WS_ELECT       2
        !           289: #define WS_FIRE                3
        !           290: #define WS_COLD                4
        !           291: #define WS_POLYMORPH   5
        !           292: #define WS_MISSILE     6
        !           293: #define WS_HASTE_M     7
        !           294: #define WS_SLOW_M      8
        !           295: #define WS_DRAIN       9
        !           296: #define WS_NOP         10
        !           297: #define WS_TELAWAY     11
        !           298: #define WS_TELTO       12
        !           299: #define WS_CANCEL      13
        !           300: #define MAXSTICKS      14
        !           301:
        !           302: /*
        !           303:  * Now we define the structures and types
        !           304:  */
        !           305:
        !           306: /*
        !           307:  * Help list
        !           308:  */
        !           309:
        !           310: struct h_list {
        !           311:     char h_ch;
        !           312:     char *h_desc;
        !           313: };
        !           314:
        !           315: /*
        !           316:  * Coordinate data type
        !           317:  */
        !           318: typedef struct {
        !           319:     shint x;
        !           320:     shint y;
        !           321: } coord;
        !           322:
        !           323: /* daemon/fuse data type */
        !           324:
        !           325: struct delayed_action {
        !           326:     int d_type;
        !           327:     void (*d_func)();
        !           328:     int d_arg;
        !           329:     int d_time;
        !           330: };
        !           331:
        !           332: /**/
        !           333:
        !           334: typedef unsigned int str_t;
        !           335:
        !           336: /*
        !           337:  * Stuff about magic items
        !           338:  */
        !           339:
        !           340: struct magic_item {
        !           341:     const char *mi_name;
        !           342:     shint mi_prob;
        !           343:     short mi_worth;
        !           344: };
        !           345:
        !           346: /*
        !           347:  * Room structure
        !           348:  */
        !           349: struct room {
        !           350:     coord r_pos;                       /* Upper left corner */
        !           351:     coord r_max;                       /* Size of room */
        !           352:     coord r_gold;                      /* Where the gold is */
        !           353:     int r_goldval;                     /* How much the gold is worth */
        !           354:     short r_flags;                     /* Info about the room */
        !           355:     shint r_nexits;                    /* Number of exits */
        !           356:     coord r_exit[12];                  /* Where the exits are */
        !           357: };
        !           358:
        !           359: /*
        !           360:  * Structure describing a fighting being
        !           361:  */
        !           362: struct stats {
        !           363:     str_t s_str;                       /* Strength */
        !           364:     long s_exp;                                /* Experience */
        !           365:     shint s_lvl;                       /* Level of mastery */
        !           366:     shint s_arm;                       /* Armor class */
        !           367:     short s_hpt;                       /* Hit points */
        !           368:     char s_dmg[16];                    /* String describing damage done */
        !           369:     shint s_maxhp;                     /* Max hit points */
        !           370: };
        !           371:
        !           372: /*
        !           373:  * Structure for monsters and player
        !           374:  */
        !           375: union thing {
        !           376:     struct {
        !           377:        union thing *_l_next, *_l_prev; /* Next pointer in link */
        !           378:        coord _t_pos;                   /* Position */
        !           379:        bool _t_turn;                   /* If slowed, is it a turn to move */
        !           380:        unsigned char _t_type;          /* What it is */
        !           381:        char _t_disguise;               /* What mimic looks like */
        !           382:        char _t_oldch;                  /* Character that was where it was */
        !           383:        coord *_t_dest;                 /* Where it is running to */
        !           384:        short _t_flags;                 /* State word */
        !           385:        struct stats _t_stats;          /* Physical description */
        !           386:        struct room *_t_room;           /* Current room for thing */
        !           387:        union thing *_t_pack;           /* What the thing is carrying */
        !           388:     int  _t_reserved;
        !           389:     } _t;
        !           390:     struct {
        !           391:        union thing *_l_next, *_l_prev; /* Next pointer in link */
        !           392:        shint _o_type;                  /* What kind of object it is */
        !           393:        coord _o_pos;                   /* Where it lives on the screen */
        !           394:        char *_o_text;                  /* What it says if you read it */
        !           395:        char _o_launch;                 /* What you need to launch it */
        !           396:        char _o_damage[8];              /* Damage if used like sword */
        !           397:        char _o_hurldmg[8];             /* Damage if thrown */
        !           398:        shint _o_count;                 /* Count for plural objects */
        !           399:        shint _o_which;                 /* Which object of a type it is */
        !           400:        shint _o_hplus;                 /* Plusses to hit */
        !           401:        shint _o_dplus;                 /* Plusses to damage */
        !           402:        short _o_ac;                    /* Armor class */
        !           403:        short _o_flags;                 /* Information about objects */
        !           404:        shint _o_group;                 /* Group number for this object */
        !           405:     } _o;
        !           406: };
        !           407:
        !           408: typedef union thing THING;
        !           409:
        !           410: #define l_next         _t._l_next
        !           411: #define l_prev         _t._l_prev
        !           412: #define t_pos          _t._t_pos
        !           413: #define t_turn         _t._t_turn
        !           414: #define t_type         _t._t_type
        !           415: #define t_disguise     _t._t_disguise
        !           416: #define t_oldch                _t._t_oldch
        !           417: #define t_dest         _t._t_dest
        !           418: #define t_flags                _t._t_flags
        !           419: #define t_stats                _t._t_stats
        !           420: #define t_pack         _t._t_pack
        !           421: #define t_room         _t._t_room
        !           422: #define t_reserved      _t._t_reserved
        !           423: #define o_type         _o._o_type
        !           424: #define o_pos          _o._o_pos
        !           425: #define o_text         _o._o_text
        !           426: #define o_launch       _o._o_launch
        !           427: #define o_damage       _o._o_damage
        !           428: #define o_hurldmg      _o._o_hurldmg
        !           429: #define o_count                _o._o_count
        !           430: #define o_which                _o._o_which
        !           431: #define o_hplus                _o._o_hplus
        !           432: #define o_dplus                _o._o_dplus
        !           433: #define o_ac           _o._o_ac
        !           434: #define o_charges      o_ac
        !           435: #define o_goldval      o_ac
        !           436: #define o_flags                _o._o_flags
        !           437: #define o_group                _o._o_group
        !           438: #define o_reserved      _o._o_reserved
        !           439:
        !           440: /*
        !           441:  * Array containing information on all the various types of mosnters
        !           442:  */
        !           443: struct monster {
        !           444:     const char *m_name;                        /* What to call the monster */
        !           445:     const shint m_carry;                       /* Probability of carrying something */
        !           446:     const short m_flags;                       /* Things about the monster */
        !           447:     struct stats m_stats;              /* Initial stats */
        !           448: };
        !           449:
        !           450: /*
        !           451:  * External variables
        !           452:  */
        !           453:
        !           454: extern struct delayed_action d_list[20];
        !           455:
        !           456: extern THING   *_monst[], *cur_armor, *cur_ring[], *cur_weapon,
        !           457:                *lvl_obj, *mlist, player;
        !           458:
        !           459: extern coord   delta, oldpos;
        !           460:
        !           461: extern struct h_list   helpstr[];
        !           462:
        !           463: extern struct room     *oldrp, passages[], rooms[];
        !           464:
        !           465: extern struct stats    max_stats;
        !           466:
        !           467: extern struct monster  monsters[];
        !           468:
        !           469: extern struct magic_item       p_magic[], r_magic[], s_magic[],
        !           470:                                things[], ws_magic[];
        !           471:
        !           472: /*
        !           473:  * Function types
        !           474:  */
        !           475:
        !           476: coord  *find_dest(), *rndmove();
        !           477:
        !           478: THING  *find_mons(), *find_obj(), *get_item(), *new_item(),
        !           479:        *new_thing(), *wake_monster();
        !           480:
        !           481: struct room    *roomin(coord *cp);
        !           482:
        !           483: void    _attach(THING **list, THING *item);
        !           484: void    _detach(THING **list, THING *item);
        !           485: void    _free_list(THING **ptr);
        !           486: bool    add_haste(bool potion);
        !           487: void    add_line(char *fmt, char *arg);
        !           488: void    add_pack(THING *obj, bool silent);
        !           489: void    add_str(str_t *sp, int amt);
        !           490: void    addmsg(char *fmt, ...);
        !           491: void    aggravate(void);
        !           492: int     attack(THING *mp);
        !           493: void    auto_save(int sig);
        !           494: void    call_it(bool know, char **guess);
        !           495: bool    cansee(int y, int x);
        !           496: char   *charge_str(THING *obj);
        !           497: void    check_level(void);
        !           498: void    chg_str(int amt);
        !           499: void    command(void);
        !           500: void    death(char monst);
        !           501: bool    diag_ok(coord *sp, coord *ep);
        !           502: void    discard(THING *item);
        !           503: void    discovered(void);
        !           504: void    do_daemons(int flag);
        !           505: void    do_fuses(int flag);
        !           506: void    do_motion(THING *obj, int ydelta, int xdelta);
        !           507: void    do_move(int dy, int dx);
        !           508: void    do_passages(void);
        !           509: void    do_rooms(void);
        !           510: void    do_run(char ch);
        !           511: void    do_zap(void);
        !           512: void    doctor(void);
        !           513: void    door_open(struct room *rp);
        !           514: void    drop(void);
        !           515: bool    dropcheck(THING *op);
        !           516: void    eat(void);
        !           517: int     encread(void *starta, int size, FILE *inf);
        !           518: void    encwrite(void *starta, int size, FILE *outf);
        !           519: void    end_line(void);
        !           520: void    endmsg(void);
        !           521: void    enter_room(coord *cp);
        !           522: void    extinguish(void (*func)());
        !           523: void    fall(THING *obj, bool pr);
        !           524: bool    fallpos(coord *pos, coord *newpos, bool pass);
        !           525: void    fatal(char *s);
        !           526: bool    fight(coord *mp, char mn, THING *weap, bool thrown);
        !           527: THING  *find_obj(int y, int x);
        !           528: void    fire_bolt(coord *start, coord *dir, char *name);
        !           529: void    fix_stick(THING *cur);
        !           530: void    flush_type(void);
        !           531: void    fuse(void (*func)(), int arg, int time, int type);
        !           532: void    genocide(void);
        !           533: bool    get_dir(void);
        !           534: THING  *get_item(char *purpose, int type);
        !           535: int     get_str(char *opt, WINDOW *win);
        !           536: void    give_pack(THING *tp);
        !           537: bool    hit_monster(int y, int x, THING *obj);
        !           538: void    init_check(void);
        !           539: void    init_colors(void);
        !           540: void    init_materials(void);
        !           541: void    init_names(void);
        !           542: void    init_player(void);
        !           543: void    init_stones(void);
        !           544: void    init_things(void);
        !           545: void    init_weapon(THING *weap, char type);
        !           546: char   *inv_name(THING *obj, bool drop);
        !           547: bool    inventory(THING *list, int type);
        !           548: void    invis_on(void);
        !           549: bool    is_current(THING *obj);
        !           550: bool    is_magic(THING *obj);
        !           551: bool    issymlink(char *sp);
        !           552: void    kill_daemon(void (*func)());
        !           553: void    killed(THING *tp, bool pr);
        !           554: void    leave(int sig);
        !           555: void    leave_room(coord *cp);
        !           556: void    lengthen(void (*func)(), int xtime);
        !           557: bool    lock_sc(void);
        !           558: void    look(bool wakeup);
        !           559: void    missile(int ydelta, int xdelta);
        !           560: void    msg(char *fmt, ...);
        !           561: THING  *new_item(void);
        !           562: void    new_level(void);
        !           563: void    new_monster(THING *tp, char type, coord *cp);
        !           564: THING  *new_thing(void);
        !           565: void    nohaste(void);
        !           566: char   *num(int n1, int n2, char type);
        !           567: void    open_log(void);
        !           568: void    open_score(void);
        !           569: void    option(void);
        !           570: char    pack_char(THING *obj);
        !           571: void    parse_opts(char *str);
        !           572: void    pick_up(char ch);
        !           573: void    picky_inven(void);
        !           574: void    playit(void);
        !           575: void    quaff(void);
        !           576: void    quit(int a);
        !           577: void    raise_level(void);
        !           578: char    randmonster(bool wander);
        !           579: void    read_scroll(void);
        !           580: int     readchar(void);
        !           581: int     readcharw(WINDOW *win);
        !           582: void    remove_monster(coord *mp, THING *tp, bool waskill);
        !           583: bool    restore(char *file, char **envp);
        !           584: int     ring_eat(int hand);
        !           585: char   *ring_num(THING *obj);
        !           586: void    ring_off(void);
        !           587: void    ring_on(void);
        !           588: int     rnd(int range);
        !           589: void    rnd_pos(struct room *rp, coord *cp);
        !           590: int     rnd_room(void);
        !           591: coord  *rndmove(THING *who);
        !           592: int     roll(int number, int sides);
        !           593: void    rollwand(void);
        !           594: void    runners(void);
        !           595: void    runto(coord *runner, coord *spot);
        !           596: bool    save(int which);
        !           597: bool    save_game(void);
        !           598: bool    save_throw(int which, THING *tp);
        !           599: void    score(int amount, int flags, char monst);
        !           600: bool    see_monst(THING *mp);
        !           601: void    setup(void);
        !           602: void    shell(void);
        !           603: void    show_win(WINDOW *scr, char *message);
        !           604: void    sight(void);
        !           605: int     sign(int nm);
        !           606: void    start_daemon(void (*func)(), int arg, int type);
        !           607: void    start_score(void);
        !           608: void    status(void);
        !           609: bool    step_ok(char ch);
        !           610: void    stomach(void);
        !           611: void    strucpy(char *s1, char *s2, int len);
        !           612: void    swander(void);
        !           613: bool    swing(int at_lvl, int op_arm, int wplus);
        !           614: void    take_off(void);
        !           615: int     teleport(void);
        !           616: void    total_winner(void);
        !           617: char   *tr_name(char type);
        !           618: bool    turn_see(bool turn_off);
        !           619: void    turn_see_off(void);
        !           620: void    unconfuse(void);
        !           621: char   *unctrol(char ch);
        !           622: void    unlock_sc(void);
        !           623: void    unsee(void);
        !           624: char   *vowelstr(const char *str);
        !           625: char   *xcrypt(const char *key, const char *setting);
        !           626: void    w_wait_for(WINDOW *win, char ch);
        !           627: void    wait_for(char ch);
        !           628: THING  *wake_monster(int y, int x);
        !           629: void    wanderer(void);
        !           630: void    waste_time(void);
        !           631: void    wear(void);
        !           632: void    whatis(bool insist);
        !           633: void    wield(void);
        !           634: void    writelog(int amount, int flags, char monst);
        !           635:
        !           636: #ifdef HAVE_CONFIG_H
        !           637: #include "config.h"
        !           638: #endif
        !           639: #include "extern.h"
        !           640:
        !           641: #ifndef PATH_MAX
        !           642: #define PATH_MAX _MAX_PATH
        !           643: #endif

CVSweb