MERC.H
上传用户:kesirui
上传日期:2007-01-07
资源大小:263k
文件大小:54k
源码类别:

Internet/网络编程

开发平台:

WINDOWS

  1. /***************************************************************************
  2.  *  Original Diku Mud copyright (C) 1990, 1991 by Sebastian Hammer,        *
  3.  *  Michael Seifert, Hans Henrik St{rfeldt, Tom Madsen, and Katja Nyboe.   *
  4.  *                                                                         *
  5.  *  Merc Diku Mud improvments copyright (C) 1992, 1993 by Michael          *
  6.  *  Chastain, Michael Quan, and Mitchell Tse.                              *
  7.  *                                                                         *
  8.  *  In order to use any part of this Merc Diku Mud, you must comply with   *
  9.  *  both the original Diku license in 'license.doc' as well the Merc       *
  10.  *  license in 'license.txt'.  In particular, you may not remove either of *
  11.  *  these copyright notices.                                               *
  12.  *                                                                         *
  13.  *  Much time and thought has gone into this software and you are          *
  14.  *  benefitting.  We hope that you share your changes too.  What goes      *
  15.  *  around, comes around.                                                  *
  16.  ***************************************************************************/
  17. /*
  18.  * Accommodate old non-Ansi compilers.
  19.  */
  20. #if defined(TRADITIONAL)
  21. #define const
  22. #define args( list ) ( )
  23. #define DECLARE_DO_FUN( fun ) void fun( )
  24. #define DECLARE_SPEC_FUN( fun ) bool fun( )
  25. #define DECLARE_SPELL_FUN( fun ) void fun( )
  26. #else
  27. #define args( list ) list
  28. #define DECLARE_DO_FUN( fun ) DO_FUN    fun
  29. #define DECLARE_SPEC_FUN( fun ) SPEC_FUN  fun
  30. #define DECLARE_SPELL_FUN( fun ) SPELL_FUN fun
  31. #endif
  32. /*
  33.  * Short scalar types.
  34.  * Diavolo reports AIX compiler has bugs with short types.
  35.  */
  36. #if !defined(FALSE)
  37. #define FALSE  0
  38. #endif
  39. #if !defined(TRUE)
  40. #define TRUE  1
  41. #endif
  42. #if defined(_AIX)
  43. #if !defined(const)
  44. #define const
  45. #endif
  46. typedef int sh_int;
  47. typedef int bool;
  48. #define unix
  49. #else
  50. typedef short    int sh_int;
  51. typedef unsigned char bool;
  52. #endif
  53. #ifdef WIN32
  54. struct host_and_name_lookup *host_and_name;
  55. typedef unsigned int    u_int;
  56. typedef u_int           SOCKET;
  57. #endif
  58. /*
  59.  * Structure types.
  60.  */
  61. typedef struct affect_data AFFECT_DATA;
  62. typedef struct area_data AREA_DATA;
  63. typedef struct ban_data BAN_DATA;
  64. typedef struct char_data CHAR_DATA;
  65. typedef struct descriptor_data DESCRIPTOR_DATA;
  66. typedef struct exit_data EXIT_DATA;
  67. typedef struct extra_descr_data EXTRA_DESCR_DATA;
  68. typedef struct help_data HELP_DATA;
  69. typedef struct kill_data KILL_DATA;
  70. typedef struct mob_index_data MOB_INDEX_DATA;
  71. typedef struct note_data NOTE_DATA;
  72. typedef struct obj_data OBJ_DATA;
  73. typedef struct obj_index_data OBJ_INDEX_DATA;
  74. typedef struct pc_data PC_DATA;
  75. typedef struct reset_data RESET_DATA;
  76. typedef struct room_index_data ROOM_INDEX_DATA;
  77. typedef struct shop_data SHOP_DATA;
  78. typedef struct time_info_data TIME_INFO_DATA;
  79. typedef struct weather_data WEATHER_DATA;
  80. typedef struct  mob_prog_data           MPROG_DATA;         /* MOBprogram */
  81. typedef struct  mob_prog_act_list       MPROG_ACT_LIST;     /* MOBprogram */
  82. /*
  83.  * Function types.
  84.  */
  85. typedef void DO_FUN args( ( CHAR_DATA *ch, char *argument ) );
  86. typedef bool SPEC_FUN args( ( CHAR_DATA *ch ) );
  87. typedef void SPELL_FUN args( ( int sn, int level, CHAR_DATA *ch, void *vo ) );
  88. /*
  89.  * String and memory management parameters.
  90.  */
  91. #define MAX_KEY_HASH  1024
  92. #define MAX_STRING_LENGTH  4096
  93. #define MAX_INPUT_LENGTH   160
  94. /*
  95.  * Game parameters.
  96.  * Increase the max'es if you add more of something.
  97.  * Adjust the pulse numbers to suit yourself.
  98.  */
  99. #define MAX_SKILL   190
  100. //#define MAX_SKILL   120
  101. #define MAX_CLASS     5
  102. //#define MAX_CLASS     4
  103. #define MAX_RACE     5
  104. #define MAX_LEVEL    40
  105. #define LEVEL_HERO    (MAX_LEVEL - 4)
  106. #define LEVEL_IMMORTAL    (MAX_LEVEL - 3)
  107. #define PULSE_PER_SECOND     4
  108. #define PULSE_VIOLENCE   ( 3 * PULSE_PER_SECOND)
  109. #define PULSE_MOBILE   ( 4 * PULSE_PER_SECOND)
  110. #define PULSE_TICK   (30 * PULSE_PER_SECOND)
  111. #define PULSE_AREA   (60 * PULSE_PER_SECOND)
  112. /*
  113.  * Site ban structure.
  114.  */
  115. struct ban_data
  116. {
  117.     BAN_DATA * next;
  118.     char * name;
  119. };
  120. /*
  121.  * Time and weather stuff.
  122.  */
  123. #define SUN_DARK     0
  124. #define SUN_RISE     1
  125. #define SUN_LIGHT     2
  126. #define SUN_SET     3
  127. #define SKY_CLOUDLESS     0
  128. #define SKY_CLOUDY     1
  129. #define SKY_RAINING     2
  130. #define SKY_LIGHTNING     3
  131. struct time_info_data
  132. {
  133.     int hour;
  134.     int day;
  135.     int month;
  136.     int year;
  137. };
  138. struct weather_data
  139. {
  140.     int mmhg;
  141.     int change;
  142.     int sky;
  143.     int sunlight;
  144. };
  145. /*
  146.  * Connected state for a channel.
  147.  */
  148. #define CON_PLAYING  0
  149. #define CON_GET_NAME  1
  150. #define CON_GET_OLD_PASSWORD  2
  151. #define CON_CONFIRM_NEW_NAME  3
  152. #define CON_GET_NEW_PASSWORD  4
  153. #define CON_CONFIRM_NEW_PASSWORD  5
  154. #define CON_GET_NEW_SEX  6
  155. #define CON_GET_NEW_CLASS  7
  156. #define CON_READ_MOTD  8
  157. #define CON_GET_NEW_RACE       9
  158. /*
  159.  * Descriptor (channel) structure.
  160.  */
  161. struct descriptor_data
  162. {
  163.     DESCRIPTOR_DATA * next;
  164.     DESCRIPTOR_DATA * snoop_by;
  165.     CHAR_DATA * character;
  166.     CHAR_DATA * original;
  167.     char * host;
  168. #ifdef WIN32
  169.     SOCKET descriptor;
  170.     // This gets players site and user name
  171.     struct     host_and_name_lookup *host_and_name;
  172. #else
  173.     sh_int descriptor;
  174. #endif
  175.     sh_int connected;
  176.     bool fcommand;
  177.     char inbuf [4 * MAX_INPUT_LENGTH];
  178.     char incomm [MAX_INPUT_LENGTH];
  179.     char inlast [MAX_INPUT_LENGTH];
  180.     int repeat;
  181.     char *              showstr_head;
  182.     char *              showstr_point;
  183.     char * outbuf;
  184.     int outsize;
  185.     int outtop;
  186. };
  187. /*
  188.    descriptor_data(SOCKET desc) {
  189.       descriptor = desc;
  190.       connected = CON_GET_NAME;
  191.       showstr_head  = (char *) 0;
  192.       showstr_point = (char *) 0;
  193.       outsize = 2000;
  194.       outbuf = new char[outsize];
  195.       next = (descriptor_data *) 0;
  196.       snoop_by = (descriptor_data *) 0;
  197.       host = 0;
  198.       fcommand = FALSE;
  199.       repeat = 0;
  200.       outtop = 0;
  201.       incomm[0] = '';
  202.       }
  203.    ~descriptor_data() {
  204.       delete[] outbuf;
  205.       delete[] host;
  206.     }
  207. */
  208. /*
  209.  * Attribute bonus structures.
  210.  */
  211. struct str_app_type
  212. {
  213.     sh_int tohit;
  214.     sh_int todam;
  215.     sh_int carry;
  216.     sh_int wield;
  217. };
  218. struct int_app_type
  219. {
  220.     sh_int learn;
  221. };
  222. struct wis_app_type
  223. {
  224.     sh_int practice;
  225. };
  226. struct dex_app_type
  227. {
  228.     sh_int defensive;
  229. };
  230. struct con_app_type
  231. {
  232.     sh_int hitp;
  233.     sh_int shock;
  234. };
  235. /*
  236.  * TO types for act.
  237.  */
  238. #define TO_ROOM     0
  239. #define TO_NOTVICT     1
  240. #define TO_VICT     2
  241. #define TO_CHAR     3
  242. /*
  243.  * Help table types.
  244.  */
  245. struct help_data
  246. {
  247.     HELP_DATA * next;
  248.     sh_int level;
  249.     char * keyword;
  250.     char * text;
  251. };
  252. /*
  253.  * Shop types.
  254.  */
  255. #define MAX_TRADE  5
  256. struct shop_data
  257. {
  258.     SHOP_DATA * next; /* Next shop in list */
  259.     sh_int keeper; /* Vnum of shop keeper mob */
  260.     sh_int buy_type [MAX_TRADE]; /* Item types shop will buy */
  261.     sh_int profit_buy; /* Cost multiplier for buying */
  262.     sh_int profit_sell; /* Cost multiplier for selling */
  263.     sh_int open_hour; /* First opening hour */
  264.     sh_int close_hour; /* First closing hour */
  265. };
  266. /*
  267.  * Per-class stuff.
  268.  */
  269. struct class_type
  270. {
  271.     char  who_name [4]; /* Three-letter name for 'who' */
  272.     sh_int attr_prime; /* Prime attribute */
  273.     sh_int weapon; /* First weapon */
  274.     sh_int guild; /* Vnum of guild room */
  275.     sh_int skill_adept; /* Maximum skill level */
  276.     sh_int thac0_00; /* Thac0 for level  0 */
  277.     sh_int thac0_32; /* Thac0 for level 32 */
  278.     sh_int hp_min; /* Min hp gained on leveling */
  279.     sh_int hp_max; /* Max hp gained on leveling */
  280.     bool fMana; /* Class gains mana on level */
  281. };
  282. /*
  283.  * Per-race stuff.
  284.  */
  285. struct race_type
  286. {
  287.     char  who_name [4]; /* Three-letter name for 'who' */
  288.     char    long_name[20];
  289.     sh_int mod_str;
  290.     sh_int mod_int;
  291.     sh_int mod_wis;
  292.     sh_int mod_dex;
  293.     sh_int mod_con;
  294.     sh_int  city_vnum;     /* Racial city */
  295.     sh_int  city_temple;   /* Racial temple */
  296.     int     class_flags;   /* Classes allowed */
  297.     int bitvector;     /* Permanent magical ability */
  298. };
  299. /*
  300.  * Data structure for notes.
  301.  */
  302. struct note_data
  303. {
  304.     NOTE_DATA * next;
  305.     char * sender;
  306.     char * date;
  307.     char * to_list;
  308.     char * subject;
  309.     char * text;
  310.     time_t      date_stamp;
  311. };
  312. /*
  313.  * An affect.
  314.  */
  315. struct affect_data
  316. {
  317.     AFFECT_DATA * next;
  318.     sh_int type;
  319.     sh_int duration;
  320.     sh_int location;
  321.     sh_int modifier;
  322.     int bitvector;
  323. };
  324. /*
  325.  * A kill structure (indexed by level).
  326.  */
  327. struct kill_data
  328. {
  329.     sh_int number;
  330.     sh_int killed;
  331. };
  332. /***************************************************************************
  333.  *                                                                         *
  334.  *                   VALUES OF INTEREST TO AREA BUILDERS                   *
  335.  *                   (Start of section ... start here)                     *
  336.  *                                                                         *
  337.  ***************************************************************************/
  338. /*
  339.  * Well known mob virtual numbers.
  340.  * Defined in #MOBILES.
  341.  */
  342. #define MOB_VNUM_CITYGUARD    3060
  343. #define MOB_VNUM_VAMPIRE    3404
  344. #define MOB_VNUM_WALKING_DEAD 20
  345. /*
  346.  * ACT bits for mobs.
  347.  * Used in #MOBILES.
  348.  */
  349. #define ACT_IS_NPC       1 /* Auto set for mobs */
  350. #define ACT_SENTINEL       2 /* Stays in one room */
  351. #define ACT_SCAVENGER       4 /* Picks up objects */
  352. #define ACT_AGGRESSIVE      32 /* Attacks PC's */
  353. #define ACT_STAY_AREA      64 /* Won't leave area */
  354. #define ACT_WIMPY     128 /* Flees when hurt */
  355. #define ACT_PET     256 /* Auto set for pets */
  356. #define ACT_TRAIN     512 /* Can train PC's */
  357. #define ACT_PRACTICE    1024 /* Can practice PC's */
  358. /*
  359.  * Bits for 'affected_by'.
  360.  * Used in #MOBILES.
  361.  */
  362. #define AFF_BLIND       1
  363. #define AFF_INVISIBLE       2
  364. #define AFF_DETECT_EVIL       4
  365. #define AFF_DETECT_INVIS       8
  366. #define AFF_DETECT_MAGIC      16
  367. #define AFF_DETECT_HIDDEN      32
  368. #define AFF_HOLD      64 /* Unused */
  369. #define AFF_SANCTUARY     128
  370. #define AFF_FAERIE_FIRE     256
  371. #define AFF_INFRARED     512
  372. #define AFF_CURSE    1024
  373. #define AFF_FLAMING    2048 /* Unused */
  374. #define AFF_POISON    4096
  375. #define AFF_PROTECT    8192
  376. #define AFF_PARALYSIS   16384 /* Unused */
  377. #define AFF_SNEAK   32768
  378. #define AFF_HIDE   65536
  379. #define AFF_SLEEP  131072
  380. #define AFF_CHARM  262144
  381. #define AFF_FLYING  524288
  382. #define AFF_PASS_DOOR 1048576
  383. /*
  384.  * Sex.
  385.  * Used in #MOBILES.
  386.  */
  387. #define SEX_NEUTRAL       0
  388. #define SEX_MALE       1
  389. #define SEX_FEMALE       2
  390. /*
  391.  * Well known object virtual numbers.
  392.  * Defined in #OBJECTS.
  393.  */
  394. #define OBJ_VNUM_MONEY_ONE       2
  395. #define OBJ_VNUM_MONEY_SOME       3
  396. #define OBJ_VNUM_CORPSE_NPC      10
  397. #define OBJ_VNUM_CORPSE_PC      11
  398. #define OBJ_VNUM_SEVERED_HEAD      12
  399. #define OBJ_VNUM_TORN_HEART      13
  400. #define OBJ_VNUM_SLICED_ARM      14
  401. #define OBJ_VNUM_SLICED_LEG      15
  402. #define OBJ_VNUM_FINAL_TURD      16
  403. #define OBJ_VNUM_MUSHROOM      20
  404. #define OBJ_VNUM_LIGHT_BALL      21
  405. #define OBJ_VNUM_SPRING      22
  406. #define OBJ_VNUM_SCHOOL_MACE    3700
  407. #define OBJ_VNUM_SCHOOL_DAGGER    3701
  408. #define OBJ_VNUM_SCHOOL_SWORD    3702
  409. #define OBJ_VNUM_SCHOOL_VEST    3703
  410. #define OBJ_VNUM_SCHOOL_SHIELD    3704
  411. #define OBJ_VNUM_SCHOOL_BANNER     3716
  412. // The error object is used when a player file has an item that is no longer
  413. // part of the world--Slash
  414. #define OBJ_VNUM_ERROR  4
  415. /*
  416.  * Item types.
  417.  * Used in #OBJECTS.
  418.  */
  419. #define ITEM_LIGHT       1
  420. #define ITEM_SCROLL       2
  421. #define ITEM_WAND       3
  422. #define ITEM_STAFF       4
  423. #define ITEM_WEAPON       5
  424. #define ITEM_TREASURE       8
  425. #define ITEM_ARMOR       9
  426. #define ITEM_POTION      10
  427. #define ITEM_FURNITURE      12
  428. #define ITEM_TRASH      13
  429. #define ITEM_CONTAINER      15
  430. #define ITEM_DRINK_CON      17
  431. #define ITEM_KEY      18
  432. #define ITEM_FOOD      19
  433. #define ITEM_MONEY      20
  434. #define ITEM_BOAT      22
  435. #define ITEM_CORPSE_NPC      23
  436. #define ITEM_CORPSE_PC      24
  437. #define ITEM_FOUNTAIN      25
  438. #define ITEM_PILL      26
  439. /*
  440.  * Extra flags.
  441.  * Used in #OBJECTS.
  442.  */
  443. #define ITEM_GLOW       1
  444. #define ITEM_HUM       2
  445. #define ITEM_DARK       4
  446. #define ITEM_LOCK       8
  447. #define ITEM_EVIL      16
  448. #define ITEM_INVIS      32
  449. #define ITEM_MAGIC      64
  450. #define ITEM_NODROP     128
  451. #define ITEM_BLESS     256
  452. #define ITEM_ANTI_GOOD     512
  453. #define ITEM_ANTI_EVIL    1024
  454. #define ITEM_ANTI_NEUTRAL    2048
  455. #define ITEM_NOREMOVE    4096
  456. #define ITEM_INVENTORY    8192
  457. /*
  458.  * Wear flags.
  459.  * Used in #OBJECTS.
  460.  */
  461. #define ITEM_TAKE       1
  462. #define ITEM_WEAR_FINGER       2
  463. #define ITEM_WEAR_NECK       4
  464. #define ITEM_WEAR_BODY       8
  465. #define ITEM_WEAR_HEAD      16
  466. #define ITEM_WEAR_LEGS      32
  467. #define ITEM_WEAR_FEET      64
  468. #define ITEM_WEAR_HANDS     128 
  469. #define ITEM_WEAR_ARMS     256
  470. #define ITEM_WEAR_SHIELD     512
  471. #define ITEM_WEAR_ABOUT    1024 
  472. #define ITEM_WEAR_WAIST    2048
  473. #define ITEM_WEAR_WRIST    4096
  474. #define ITEM_WIELD    8192
  475. #define ITEM_HOLD   16384
  476. /*
  477.  * Apply types (for affects).
  478.  * Used in #OBJECTS.
  479.  */
  480. #define APPLY_NONE       0
  481. #define APPLY_STR       1
  482. #define APPLY_DEX       2
  483. #define APPLY_INT       3
  484. #define APPLY_WIS       4
  485. #define APPLY_CON       5
  486. #define APPLY_SEX       6
  487. #define APPLY_CLASS       7
  488. #define APPLY_LEVEL       8
  489. #define APPLY_AGE       9
  490. #define APPLY_HEIGHT      10
  491. #define APPLY_WEIGHT      11
  492. #define APPLY_MANA      12
  493. #define APPLY_HIT      13
  494. #define APPLY_MOVE      14
  495. #define APPLY_GOLD      15
  496. #define APPLY_EXP      16
  497. #define APPLY_AC      17
  498. #define APPLY_HITROLL      18
  499. #define APPLY_DAMROLL      19
  500. #define APPLY_SAVING_PARA      20
  501. #define APPLY_SAVING_ROD      21
  502. #define APPLY_SAVING_PETRI      22
  503. #define APPLY_SAVING_BREATH      23
  504. #define APPLY_SAVING_SPELL      24
  505. // TFC
  506. #define APPLY_CHARISMA           25
  507. #define APPLY_LUC               26 /* Luck */
  508. #define APPLY_NOSTEAL           27
  509. #define APPLY_NOSLEEP           28
  510. #define APPLY_NOSUMMON          29 /* Also called blocking */
  511. #define APPLY_NOCHARM           30 /* Also called steadfastness? */
  512. #define APPLY_NOSEXCHANGE       31 /* Also called familiarity */
  513. #define APPLY_TRUESEE           32
  514. #define APPLY_NOINFO            33 /* Also called Obscurement */
  515. /*
  516.  * Values for containers (value[1]).
  517.  * Used in #OBJECTS.
  518.  */
  519. #define CONT_CLOSEABLE       1
  520. #define CONT_PICKPROOF       2
  521. #define CONT_CLOSED       4
  522. #define CONT_LOCKED       8
  523. /*
  524.  * Well known room virtual numbers.
  525.  * Defined in #ROOMS.
  526.  */
  527. #define ROOM_VNUM_LIMBO       2
  528. #define ROOM_VNUM_CHAT    1200
  529. #define ROOM_VNUM_TEMPLE    3001
  530. #define ROOM_VNUM_ALTAR    3054
  531. #define ROOM_VNUM_SCHOOL    3700
  532. /*
  533.  * Room flags.
  534.  * Used in #ROOMS.
  535.  */
  536. #define ROOM_DARK       1
  537. #define ROOM_NO_MOB       4
  538. #define ROOM_INDOORS       8
  539. #define ROOM_PRIVATE     512
  540. #define ROOM_SAFE    1024
  541. #define ROOM_SOLITARY    2048
  542. #define ROOM_PET_SHOP    4096
  543. #define ROOM_NO_RECALL    8192
  544. /*
  545.  * Directions.
  546.  * Used in #ROOMS.
  547.  */
  548. #define DIR_NORTH       0
  549. #define DIR_EAST       1
  550. #define DIR_SOUTH       2
  551. #define DIR_WEST       3
  552. #define DIR_UP       4
  553. #define DIR_DOWN       5
  554. /*
  555.  * Exit flags.
  556.  * Used in #ROOMS.
  557.  */
  558. #define EX_ISDOOR       1
  559. #define EX_CLOSED       2
  560. #define EX_LOCKED       4
  561. #define EX_PICKPROOF      32
  562. /*
  563.  * Sector types.
  564.  * Used in #ROOMS.
  565.  */
  566. #define SECT_INSIDE       0
  567. #define SECT_CITY       1
  568. #define SECT_FIELD       2
  569. #define SECT_FOREST       3
  570. #define SECT_HILLS       4
  571. #define SECT_MOUNTAIN       5
  572. #define SECT_WATER_SWIM       6
  573. #define SECT_WATER_NOSWIM       7
  574. #define SECT_UNUSED       8
  575. #define SECT_AIR       9
  576. #define SECT_DESERT      10
  577. #define SECT_MAX      11
  578. /*
  579.  * Equpiment wear locations.
  580.  * Used in #RESETS.
  581.  */
  582. #define WEAR_NONE      -1
  583. #define WEAR_LIGHT       0
  584. #define WEAR_FINGER_L       1
  585. #define WEAR_FINGER_R       2
  586. #define WEAR_NECK_1       3
  587. #define WEAR_NECK_2       4
  588. #define WEAR_BODY       5
  589. #define WEAR_HEAD       6
  590. #define WEAR_LEGS       7
  591. #define WEAR_FEET       8
  592. #define WEAR_HANDS       9
  593. #define WEAR_ARMS      10
  594. #define WEAR_SHIELD      11
  595. #define WEAR_ABOUT      12
  596. #define WEAR_WAIST      13
  597. #define WEAR_WRIST_L      14
  598. #define WEAR_WRIST_R      15
  599. #define WEAR_WIELD      16
  600. #define WEAR_HOLD      17
  601. #define MAX_WEAR      18
  602. /***************************************************************************
  603.  *                                                                         *
  604.  *                   VALUES OF INTEREST TO AREA BUILDERS                   *
  605.  *                   (End of this section ... stop here)                   *
  606.  *                                                                         *
  607.  ***************************************************************************/
  608. /*
  609.  * Conditions.
  610.  */
  611. #define COND_DRUNK       0
  612. #define COND_FULL       1
  613. #define COND_THIRST       2
  614. /*
  615.  * Positions.
  616.  */
  617. #define POS_DEAD       0
  618. #define POS_MORTAL       1
  619. #define POS_INCAP       2
  620. #define POS_STUNNED       3
  621. #define POS_SLEEPING       4
  622. #define POS_RESTING       5
  623. #define POS_FIGHTING       6
  624. #define POS_STANDING       7
  625. /*
  626.  * ACT bits for players.
  627.  */
  628. #define PLR_IS_NPC       1 /* Don't EVER set. */
  629. #define PLR_BOUGHT_PET       2
  630. #define PLR_AUTOEXIT       8
  631. #define PLR_AUTOLOOT      16
  632. #define PLR_AUTOSAC                  32
  633. #define PLR_BLANK      64
  634. #define PLR_BRIEF     128
  635. #define PLR_COMBINE     512
  636. #define PLR_PROMPT    1024
  637. #define PLR_TELNET_GA    2048
  638. #define PLR_HOLYLIGHT    4096
  639. #define PLR_WIZINVIS    8192
  640. #define PLR_SILENCE   32768
  641. #define PLR_NO_EMOTE   65536
  642. #define PLR_NO_TELL  262144
  643. #define PLR_LOG  524288
  644. #define PLR_DENY 1048576
  645. #define PLR_FREEZE 2097152
  646. #define PLR_THIEF 4194304
  647. #define PLR_KILLER 8388608
  648. /*
  649.  * Obsolete bits.
  650.  */
  651. #if 0
  652. #define PLR_AUCTION       4 /* Obsolete */
  653. #define PLR_CHAT     256 /* Obsolete */
  654. #define PLR_NO_SHOUT  131072 /* Obsolete */
  655. #endif
  656. /*
  657.  * Channel bits.
  658.  */
  659. #define CHANNEL_AUCTION       1
  660. #define CHANNEL_CHAT       2
  661. #define CHANNEL_HACKER       4
  662. #define CHANNEL_IMMTALK       8
  663. #define CHANNEL_MUSIC      16
  664. #define CHANNEL_QUESTION      32
  665. #define CHANNEL_SHOUT      64
  666. #define CHANNEL_YELL     128
  667. /*
  668.  * Prototype for a mob.
  669.  * This is the in-memory version of #MOBILES.
  670.  */
  671. struct mob_index_data
  672. {
  673.     MOB_INDEX_DATA * next;
  674.     SPEC_FUN * spec_fun;
  675.     SHOP_DATA * pShop;
  676.     char * player_name;
  677.     char * short_descr;
  678.     char * long_descr;
  679.     char * description;
  680.     sh_int vnum;
  681.     sh_int count;
  682.     sh_int killed;
  683.     sh_int sex;
  684.     sh_int level;
  685.     int act;
  686.     int affected_by;
  687.     sh_int alignment;
  688.     sh_int hitroll; /* Unused */
  689.     sh_int ac; /* Unused */
  690.     sh_int hitnodice; /* Unused */
  691.     sh_int hitsizedice; /* Unused */
  692.     sh_int hitplus; /* Unused */
  693.     sh_int damnodice; /* Unused */
  694.     sh_int damsizedice; /* Unused */
  695.     sh_int damplus; /* Unused */
  696.     int gold; /* Unused */
  697.     MPROG_DATA *        mobprogs;               /* Used by MOBprogram */
  698.     int                 progtypes;              /* Used by MOBprogram */
  699.     void       *cargo; // @@@ ###
  700. };
  701. /*
  702.  * One character (PC or NPC).
  703.  */
  704. struct char_data
  705. {
  706.     CHAR_DATA * next;               /* Global chain of all char/mob */
  707.     CHAR_DATA * next_in_room;       /* Chain set by char_to_room() */
  708.     CHAR_DATA * master;             /* Who char follows or is charmed by */
  709.     CHAR_DATA * leader;             /* Leader of a group */
  710.     CHAR_DATA * fighting;           /* Who char is fighting */
  711.     CHAR_DATA * reply;              /* Last person who talked to char */
  712.     SPEC_FUN * spec_fun;           /* Mobile special function*/
  713.     MOB_INDEX_DATA * pIndexData;     /* Mobile class info */
  714.     DESCRIPTOR_DATA * desc;           /* Player socket info */
  715.     AFFECT_DATA * affected;           /* List of stat affects on char */
  716.     NOTE_DATA * pnote;              /* Note writing stuff */
  717.     OBJ_DATA * carrying;           /* Chain of char's inventory/wielded */
  718.     ROOM_INDEX_DATA * in_room;        /* Room char is in */
  719.     ROOM_INDEX_DATA * was_in_room;    /* Room returned to after 'idle void' */
  720.     PC_DATA * pcdata;             /* Data only PCs have */
  721.     char * name;
  722.     char * short_descr;
  723.     char * long_descr;
  724.     char * description;
  725.     char *              prompt;
  726.     sh_int sex;
  727.     sh_int class;
  728.     sh_int race;
  729.     sh_int level;
  730.     sh_int trust;
  731.     bool                wizbit;
  732.     int played;
  733.     time_t logon;
  734.     time_t save_time;
  735.     time_t              last_note;
  736.     sh_int timer;
  737.     sh_int wait;
  738.     sh_int hit;
  739.     sh_int max_hit;
  740.     sh_int mana;
  741.     sh_int max_mana;
  742.     sh_int move;
  743.     sh_int max_move;
  744.     int gold;
  745.     int exp;
  746.     int act;
  747.     int affected_by;
  748.     sh_int position;
  749.     sh_int practice;
  750.     sh_int carry_weight;
  751.     sh_int carry_number;
  752.     sh_int saving_throw;
  753.     sh_int alignment;
  754.     sh_int hitroll;
  755.     sh_int damroll;
  756.     sh_int armor;
  757.     sh_int wimpy;
  758.     sh_int deaf;
  759.     MPROG_ACT_LIST *    mpact;                  /* Used by MOBprogram */
  760.     int                 mpactnum;               /* Used by MOBprogram */
  761.     void       *cargo; // @@@ ###
  762. };
  763. /*
  764.  * Data which only PC's have.
  765.  */
  766. struct pc_data
  767. {
  768.     PC_DATA * next;
  769.     char * pwd;
  770.     char * bamfin;
  771.     char * bamfout;
  772.     char * title;
  773.     sh_int perm_str;
  774.     sh_int perm_int;
  775.     sh_int perm_wis;
  776.     sh_int perm_dex;
  777.     sh_int perm_con;
  778.     sh_int mod_str;
  779.     sh_int mod_int;
  780.     sh_int mod_wis;
  781.     sh_int mod_dex;
  782.     sh_int mod_con;
  783.     sh_int condition [3];
  784.     sh_int              pagelen;
  785.     sh_int learned [MAX_SKILL];
  786. };
  787. /*
  788.  * MOBprogram block
  789. */
  790. struct  mob_prog_act_list
  791. {
  792.     MPROG_ACT_LIST * next;
  793.     char *           buf;
  794.     CHAR_DATA *      ch;
  795.     OBJ_DATA *       obj;
  796.     void *           vo;
  797. };
  798. struct  mob_prog_data
  799. {
  800.     MPROG_DATA *next;
  801.     int         type;
  802.     char *      arglist;
  803.     char *      comlist;
  804. };
  805. bool    MOBtrigger;
  806. #define ERROR_PROG        -1
  807. #define IN_FILE_PROG       0
  808. #define ACT_PROG           1
  809. #define SPEECH_PROG        2
  810. #define RAND_PROG          4
  811. #define FIGHT_PROG         8
  812. #define DEATH_PROG        16
  813. #define HITPRCNT_PROG     32
  814. #define ENTRY_PROG        64
  815. #define GREET_PROG       128
  816. #define ALL_GREET_PROG   256
  817. #define GIVE_PROG        512
  818. #define BRIBE_PROG      1024
  819. /*
  820.  * Liquids.
  821.  */
  822. #define LIQ_WATER        0
  823. #define LIQ_MAX 16
  824. struct liq_type
  825. {
  826.     char * liq_name;
  827.     char * liq_color;
  828.     sh_int liq_affect[3];
  829. };
  830. /*
  831.  * Extra description data for a room or object.
  832.  */
  833. struct extra_descr_data
  834. {
  835.     EXTRA_DESCR_DATA *next; /* Next in list                     */
  836.     char *keyword;              /* Keyword in look/examine          */
  837.     char *description;          /* What to see                      */
  838. };
  839. /*
  840.  * Prototype for an object.
  841.  */
  842. struct obj_index_data
  843. {
  844.     OBJ_INDEX_DATA * next;
  845.     EXTRA_DESCR_DATA * extra_descr;
  846.     AFFECT_DATA * affected;
  847.     char * name;
  848.     char * short_descr;
  849.     char * description;
  850.     sh_int vnum;
  851.     sh_int item_type;
  852.     sh_int extra_flags;
  853.     sh_int wear_flags;
  854.     sh_int count;
  855.     sh_int weight;
  856.     int cost; /* Unused */
  857.     int value [4];
  858. };
  859. /*
  860.  * One object.
  861.  */
  862. struct obj_data
  863. {
  864.     OBJ_DATA * next;
  865.     OBJ_DATA * next_content;
  866.     OBJ_DATA * contains;
  867.     OBJ_DATA * in_obj;
  868.     CHAR_DATA * carried_by;
  869.     EXTRA_DESCR_DATA * extra_descr;
  870.     AFFECT_DATA * affected;
  871.     OBJ_INDEX_DATA * pIndexData;
  872.     ROOM_INDEX_DATA * in_room;
  873.     char * name;
  874.     char * short_descr;
  875.     char * description;
  876.     sh_int item_type;
  877.     sh_int extra_flags;
  878.     sh_int wear_flags;
  879.     sh_int wear_loc;
  880.     sh_int weight;
  881.     int cost;
  882.     sh_int level;
  883.     sh_int timer;
  884.     int value [4];
  885. };
  886. /*
  887.  * Exit data.
  888.  */
  889. struct exit_data
  890. {
  891.     ROOM_INDEX_DATA * to_room;
  892.     sh_int vnum;
  893.     sh_int exit_info;
  894.     sh_int key;
  895.     char * keyword;
  896.     char * description;
  897. };
  898. /*
  899.  * Reset commands:
  900.  *   '*': comment
  901.  *   'M': read a mobile 
  902.  *   'O': read an object
  903.  *   'P': put object in object
  904.  *   'G': give object to mobile
  905.  *   'E': equip object to mobile
  906.  *   'D': set state of door
  907.  *   'R': randomize room exits
  908.  *   'S': stop (end of list)
  909.  */
  910. /*
  911.  * Area-reset definition.
  912.  */
  913. struct reset_data
  914. {
  915.     RESET_DATA * next;
  916.     char command;
  917.     sh_int arg1;
  918.     sh_int arg2;
  919.     sh_int arg3;
  920. };
  921. /*
  922.  * Area definition.
  923.  */
  924. struct area_data
  925. {
  926.     AREA_DATA * next;
  927.     RESET_DATA * reset_first;
  928.     RESET_DATA * reset_last;
  929.     char * name;
  930.     sh_int age;
  931.     sh_int nplayer;
  932. };
  933. /*
  934.  * Room type.
  935.  */
  936. struct room_index_data
  937. {
  938.     ROOM_INDEX_DATA * next;
  939.     CHAR_DATA * people;
  940.     OBJ_DATA * contents;
  941.     EXTRA_DESCR_DATA * extra_descr;
  942.     AREA_DATA * area;
  943.     EXIT_DATA * exit [6];
  944.     char * name;
  945.     char * description;
  946.     sh_int vnum;
  947.     sh_int room_flags;
  948.     sh_int light;
  949.     sh_int sector_type;
  950. };
  951. /*
  952.  * Types of attacks.
  953.  * Must be non-overlapping with spell/skill types,
  954.  * but may be arbitrary beyond that.
  955.  */
  956. #define TYPE_UNDEFINED               -1
  957. #define TYPE_HIT                     1000
  958. /*
  959.  *  Target types.
  960.  */
  961. #define TAR_IGNORE     0
  962. #define TAR_CHAR_OFFENSIVE     1
  963. #define TAR_CHAR_DEFENSIVE     2
  964. #define TAR_CHAR_SELF     3
  965. #define TAR_OBJ_INV     4
  966. /*
  967.  * Skills include spells as a particular case.
  968.  */
  969. struct skill_type
  970. {
  971.     char * name; /* Name of skill */
  972.     sh_int skill_level[MAX_CLASS]; /* Level needed by class */
  973.     SPELL_FUN * spell_fun; /* Spell pointer (for spells) */
  974.     sh_int target; /* Legal targets */
  975.     sh_int minimum_position; /* Position for caster / user */
  976.     sh_int * pgsn; /* Pointer to associated gsn */
  977.     sh_int slot; /* Slot for #OBJECT loading */
  978.     sh_int min_mana; /* Minimum mana used */
  979.     sh_int beats; /* Waiting time after use */
  980.     char * noun_damage; /* Damage message */
  981.     char * msg_off; /* Wear off message */
  982. };
  983. /*
  984.  * These are skill_lookup return values for common skills and spells.
  985.  */
  986. extern sh_int gsn_backstab;
  987. extern sh_int gsn_dodge;
  988. extern sh_int gsn_hide;
  989. extern sh_int gsn_peek;
  990. extern sh_int gsn_pick_lock;
  991. extern sh_int gsn_sneak;
  992. extern sh_int gsn_steal;
  993. extern sh_int gsn_disarm;
  994. extern sh_int gsn_enhanced_damage;
  995. extern sh_int gsn_kick;
  996. extern sh_int gsn_parry;
  997. extern sh_int gsn_rescue;
  998. extern sh_int gsn_second_attack;
  999. extern sh_int gsn_third_attack;
  1000. extern sh_int gsn_blindness;
  1001. extern sh_int gsn_charm_person;
  1002. extern sh_int gsn_curse;
  1003. extern sh_int gsn_invis;
  1004. extern sh_int gsn_mass_invis;
  1005. extern sh_int gsn_poison;
  1006. extern sh_int gsn_sleep;
  1007. /*
  1008.  * Psionicist gsn's.
  1009.  */
  1010. extern  int     gsn_chameleon;
  1011. extern  int     gsn_domination;
  1012. extern  int     gsn_heighten;
  1013. extern  int     gsn_shadow;
  1014. /*
  1015.  * Utility macros.
  1016.  */
  1017. #define UMIN(a, b) ((a) < (b) ? (a) : (b))
  1018. #define UMAX(a, b) ((a) > (b) ? (a) : (b))
  1019. #define URANGE(a, b, c) ((b) < (a) ? (a) : ((b) > (c) ? (c) : (b)))
  1020. #define LOWER(c) ((c) >= 'A' && (c) <= 'Z' ? (c)+'a'-'A' : (c))
  1021. #define UPPER(c) ((c) >= 'a' && (c) <= 'z' ? (c)+'A'-'a' : (c))
  1022. #define IS_SET(flag, bit) ((flag) & (bit))
  1023. #define SET_BIT(var, bit) ((var) |= (bit))
  1024. #define REMOVE_BIT(var, bit) ((var) &= ~(bit))
  1025. /*
  1026.  * Character macros.
  1027.  */
  1028. #define IS_NPC(ch) (IS_SET((ch)->act, ACT_IS_NPC))
  1029. #define IS_IMMORTAL(ch) (get_trust(ch) >= LEVEL_IMMORTAL)
  1030. #define IS_HERO(ch) (get_trust(ch) >= LEVEL_HERO)
  1031. #define IS_AFFECTED(ch, sn) (IS_SET((ch)->affected_by, (sn)))
  1032. #define IS_GOOD(ch) (ch->alignment >= 350)
  1033. #define IS_EVIL(ch) (ch->alignment <= -350)
  1034. #define IS_NEUTRAL(ch) (!IS_GOOD(ch) && !IS_EVIL(ch))
  1035. #define IS_AWAKE(ch) (ch->position > POS_SLEEPING)
  1036. #define GET_AC(ch) ((ch)->armor     
  1037.     + ( IS_AWAKE(ch)     
  1038.     ? dex_app[get_curr_dex(ch)].defensive   
  1039.     : 0 ))
  1040. #define GET_HITROLL(ch) ((ch)->hitroll+str_app[get_curr_str(ch)].tohit)
  1041. #define GET_DAMROLL(ch) ((ch)->damroll+str_app[get_curr_str(ch)].todam)
  1042. #define IS_OUTSIDE(ch) (!IS_SET(     
  1043.     (ch)->in_room->room_flags,     
  1044.     ROOM_INDOORS))
  1045. #define WAIT_STATE(ch, npulse) ((ch)->wait = UMAX((ch)->wait, (npulse)))
  1046. #define MANA_COST(ch, sn)       (IS_NPC(ch) ? 0 : UMAX (                    
  1047. skill_table[sn].min_mana,                   
  1048. 100 / (2 + ch->level -                      
  1049. skill_table[sn].skill_level[ch->class] ) ) )
  1050. /*
  1051.  * Object macros.
  1052.  */
  1053. #define CAN_WEAR(obj, part) (IS_SET((obj)->wear_flags,  (part)))
  1054. #define IS_OBJ_STAT(obj, stat) (IS_SET((obj)->extra_flags, (stat)))
  1055. /*
  1056.  * Description macros.
  1057.  */
  1058. #define PERS(ch, looker) ( can_see( looker, (ch) ) ?
  1059. ( IS_NPC(ch) ? (ch)->short_descr
  1060. : (ch)->name ) : "someone" )
  1061. /*
  1062.  * Structure for a command in the command lookup table.
  1063.  */
  1064. struct cmd_type
  1065. {
  1066.     char * const name;
  1067.     DO_FUN * do_fun;
  1068.     sh_int position;
  1069.     sh_int level;
  1070.     sh_int log;
  1071. };
  1072. /*
  1073.  * Structure for a social in the socials table.
  1074.  */
  1075. struct social_type
  1076. {
  1077.     char * const name;
  1078.     char * const char_no_arg;
  1079.     char * const others_no_arg;
  1080.     char * const char_found;
  1081.     char * const others_found;
  1082.     char * const vict_found;
  1083.     char * const char_auto;
  1084.     char * const others_auto;
  1085. };
  1086. /*
  1087.  * Global constants.
  1088.  */
  1089. extern const struct str_app_type str_app [26];
  1090. extern const struct int_app_type int_app [26];
  1091. extern const struct wis_app_type wis_app [26];
  1092. extern const struct dex_app_type dex_app [26];
  1093. extern const struct con_app_type con_app [26];
  1094. extern const struct class_type class_table [MAX_CLASS];
  1095. extern const struct race_type   race_table [MAX_RACE];
  1096. extern const struct cmd_type cmd_table [];
  1097. extern const struct liq_type liq_table [LIQ_MAX];
  1098. extern const struct skill_type skill_table [MAX_SKILL];
  1099. extern const struct social_type social_table [];
  1100. extern char * const title_table [MAX_CLASS]
  1101. [MAX_LEVEL+1]
  1102. [2];
  1103. /*
  1104.  * Global variables.
  1105.  */
  1106. extern HELP_DATA   * help_first;
  1107. extern SHOP_DATA   * shop_first;
  1108. extern BAN_DATA   * ban_list;
  1109. extern CHAR_DATA   * char_list;
  1110. extern DESCRIPTOR_DATA   * descriptor_list;
  1111. extern NOTE_DATA   * note_list;
  1112. extern OBJ_DATA   * object_list;
  1113. extern AFFECT_DATA   * affect_free;
  1114. extern BAN_DATA   * ban_free;
  1115. extern CHAR_DATA   * char_free;
  1116. extern DESCRIPTOR_DATA   * descriptor_free;
  1117. extern EXTRA_DESCR_DATA  * extra_descr_free;
  1118. extern NOTE_DATA   * note_free;
  1119. extern OBJ_DATA   * obj_free;
  1120. extern PC_DATA   * pcdata_free;
  1121. extern char bug_buf [];
  1122. extern time_t current_time;
  1123. extern bool fLogAll;
  1124. extern FILE * fpReserve;
  1125. extern KILL_DATA kill_table [];
  1126. extern char log_buf [];
  1127. extern TIME_INFO_DATA time_info;
  1128. extern WEATHER_DATA weather_info;
  1129. /*
  1130.  * Command functions.
  1131.  * Defined in act_*.c (mostly).
  1132.  */
  1133. DECLARE_DO_FUN( do_advance );
  1134. DECLARE_DO_FUN( do_allow );
  1135. DECLARE_DO_FUN( do_answer );
  1136. DECLARE_DO_FUN( do_areas );
  1137. DECLARE_DO_FUN( do_at );
  1138. DECLARE_DO_FUN( do_auction );
  1139. DECLARE_DO_FUN( do_auto         );
  1140. DECLARE_DO_FUN( do_autoexit     );
  1141. DECLARE_DO_FUN( do_autoloot     );
  1142. DECLARE_DO_FUN( do_autosac      );
  1143. DECLARE_DO_FUN( do_backstab );
  1144. DECLARE_DO_FUN( do_bamfin );
  1145. DECLARE_DO_FUN( do_bamfout );
  1146. DECLARE_DO_FUN( do_ban );
  1147. DECLARE_DO_FUN( do_blank        );
  1148. DECLARE_DO_FUN( do_brandish );
  1149. DECLARE_DO_FUN( do_brief        );
  1150. DECLARE_DO_FUN( do_bug );
  1151. DECLARE_DO_FUN( do_buy );
  1152. DECLARE_DO_FUN( do_cast );
  1153. DECLARE_DO_FUN( do_channels );
  1154. DECLARE_DO_FUN( do_chat );
  1155. DECLARE_DO_FUN( do_close );
  1156. DECLARE_DO_FUN( do_combine      );
  1157. DECLARE_DO_FUN( do_commands );
  1158. DECLARE_DO_FUN( do_compare );
  1159. DECLARE_DO_FUN( do_config );
  1160. DECLARE_DO_FUN( do_consider );
  1161. DECLARE_DO_FUN( do_credits );
  1162. DECLARE_DO_FUN( do_deny );
  1163. DECLARE_DO_FUN( do_description );
  1164. DECLARE_DO_FUN( do_disarm );
  1165. DECLARE_DO_FUN( do_disconnect );
  1166. DECLARE_DO_FUN( do_down );
  1167. DECLARE_DO_FUN( do_drink );
  1168. DECLARE_DO_FUN( do_drop );
  1169. DECLARE_DO_FUN( do_east );
  1170. DECLARE_DO_FUN( do_eat );
  1171. DECLARE_DO_FUN( do_echo );
  1172. DECLARE_DO_FUN( do_emote );
  1173. DECLARE_DO_FUN( do_equipment );
  1174. DECLARE_DO_FUN( do_examine );
  1175. DECLARE_DO_FUN( do_exits );
  1176. DECLARE_DO_FUN( do_fill );
  1177. DECLARE_DO_FUN( do_flee );
  1178. DECLARE_DO_FUN( do_follow );
  1179. DECLARE_DO_FUN( do_force );
  1180. DECLARE_DO_FUN( do_freeze );
  1181. DECLARE_DO_FUN( do_get );
  1182. DECLARE_DO_FUN( do_give );
  1183. DECLARE_DO_FUN( do_goto );
  1184. DECLARE_DO_FUN( do_group );
  1185. DECLARE_DO_FUN( do_gtell );
  1186. DECLARE_DO_FUN( do_help );
  1187. DECLARE_DO_FUN( do_hide );
  1188. DECLARE_DO_FUN( do_holylight );
  1189. DECLARE_DO_FUN( do_idea );
  1190. DECLARE_DO_FUN( do_identify ); // @@@ ###
  1191. DECLARE_DO_FUN( do_immtalk );
  1192. DECLARE_DO_FUN( do_inventory );
  1193. DECLARE_DO_FUN( do_invis );
  1194. DECLARE_DO_FUN( do_kick );
  1195. DECLARE_DO_FUN( do_kill );
  1196. DECLARE_DO_FUN( do_list );
  1197. DECLARE_DO_FUN( do_lock );
  1198. DECLARE_DO_FUN( do_log );
  1199. DECLARE_DO_FUN( do_look );
  1200. DECLARE_DO_FUN( do_memory );
  1201. DECLARE_DO_FUN( do_mfind );
  1202. DECLARE_DO_FUN( do_mload );
  1203. DECLARE_DO_FUN( do_mpasound     );
  1204. DECLARE_DO_FUN( do_mpat         );
  1205. DECLARE_DO_FUN( do_mpecho       );
  1206. DECLARE_DO_FUN( do_mpechoaround );
  1207. DECLARE_DO_FUN( do_mpechoat     );
  1208. DECLARE_DO_FUN( do_mpforce      );
  1209. DECLARE_DO_FUN( do_mpgoto       );
  1210. DECLARE_DO_FUN( do_mpjunk       );
  1211. DECLARE_DO_FUN( do_mpkill       );
  1212. DECLARE_DO_FUN( do_mpmload      );
  1213. DECLARE_DO_FUN( do_mpoload      );
  1214. DECLARE_DO_FUN( do_mppurge      );
  1215. DECLARE_DO_FUN( do_mpstat       );
  1216. DECLARE_DO_FUN( do_mptransfer   );
  1217. DECLARE_DO_FUN( do_mset );
  1218. DECLARE_DO_FUN( do_mstat );
  1219. DECLARE_DO_FUN( do_mwhere );
  1220. DECLARE_DO_FUN( do_murde );
  1221. DECLARE_DO_FUN( do_murder );
  1222. DECLARE_DO_FUN( do_music );
  1223. DECLARE_DO_FUN( do_noemote );
  1224. DECLARE_DO_FUN( do_north );
  1225. DECLARE_DO_FUN( do_note );
  1226. DECLARE_DO_FUN( do_notell );
  1227. DECLARE_DO_FUN( do_ofind );
  1228. DECLARE_DO_FUN( do_oload );
  1229. DECLARE_DO_FUN( do_open );
  1230. DECLARE_DO_FUN( do_order );
  1231. DECLARE_DO_FUN( do_orphans );
  1232. DECLARE_DO_FUN( do_oset );
  1233. DECLARE_DO_FUN( do_ostat );
  1234. DECLARE_DO_FUN( do_owhere );
  1235. DECLARE_DO_FUN( do_pagelen      );
  1236. DECLARE_DO_FUN( do_pardon );
  1237. DECLARE_DO_FUN( do_password );
  1238. DECLARE_DO_FUN( do_peace );
  1239. DECLARE_DO_FUN( do_pick );
  1240. DECLARE_DO_FUN( do_pose );
  1241. DECLARE_DO_FUN( do_practice );
  1242. DECLARE_DO_FUN( do_prompt       );
  1243. DECLARE_DO_FUN( do_purge );
  1244. DECLARE_DO_FUN( do_put );
  1245. DECLARE_DO_FUN( do_quaff );
  1246. DECLARE_DO_FUN( do_question );
  1247. DECLARE_DO_FUN( do_qui );
  1248. DECLARE_DO_FUN( do_quit );
  1249. DECLARE_DO_FUN( do_reboo );
  1250. DECLARE_DO_FUN( do_reboot );
  1251. DECLARE_DO_FUN( do_recall );
  1252. DECLARE_DO_FUN( do_recho );
  1253. DECLARE_DO_FUN( do_recite );
  1254. DECLARE_DO_FUN( do_remove );
  1255. DECLARE_DO_FUN( do_rent );
  1256. DECLARE_DO_FUN( do_reply );
  1257. DECLARE_DO_FUN( do_report );
  1258. DECLARE_DO_FUN( do_rescue );
  1259. DECLARE_DO_FUN( do_rest );
  1260. DECLARE_DO_FUN( do_restore );
  1261. DECLARE_DO_FUN( do_return );
  1262. DECLARE_DO_FUN( do_rset );
  1263. DECLARE_DO_FUN( do_rstat );
  1264. DECLARE_DO_FUN( do_sacrifice );
  1265. DECLARE_DO_FUN( do_save );
  1266. DECLARE_DO_FUN( do_say );
  1267. DECLARE_DO_FUN( do_score );
  1268. DECLARE_DO_FUN( do_sell );
  1269. DECLARE_DO_FUN( do_shoplist );
  1270. DECLARE_DO_FUN( do_shout );
  1271. DECLARE_DO_FUN( do_shutdow );
  1272. DECLARE_DO_FUN( do_shutdown );
  1273. DECLARE_DO_FUN( do_silence );
  1274. DECLARE_DO_FUN( do_sla );
  1275. DECLARE_DO_FUN( do_slay );
  1276. DECLARE_DO_FUN( do_sleep );
  1277. DECLARE_DO_FUN( do_slist        );
  1278. DECLARE_DO_FUN( do_slookup );
  1279. DECLARE_DO_FUN( do_sneak );
  1280. DECLARE_DO_FUN( do_snoop );
  1281. DECLARE_DO_FUN( do_socials );
  1282. DECLARE_DO_FUN( do_south );
  1283. DECLARE_DO_FUN( do_spells       );
  1284. DECLARE_DO_FUN( do_split );
  1285. DECLARE_DO_FUN( do_sset );
  1286. DECLARE_DO_FUN( do_stand );
  1287. DECLARE_DO_FUN( do_steal );
  1288. DECLARE_DO_FUN( do_switch );
  1289. DECLARE_DO_FUN( do_tell );
  1290. DECLARE_DO_FUN( do_time );
  1291. DECLARE_DO_FUN( do_title );
  1292. DECLARE_DO_FUN( do_train );
  1293. DECLARE_DO_FUN( do_transfer );
  1294. DECLARE_DO_FUN( do_trust );
  1295. DECLARE_DO_FUN( do_typo );
  1296. DECLARE_DO_FUN( do_unlock );
  1297. DECLARE_DO_FUN( do_up );
  1298. DECLARE_DO_FUN( do_users );
  1299. DECLARE_DO_FUN( do_value );
  1300. DECLARE_DO_FUN( do_visible );
  1301. DECLARE_DO_FUN( do_wake );
  1302. DECLARE_DO_FUN( do_wear );
  1303. DECLARE_DO_FUN( do_weather );
  1304. DECLARE_DO_FUN( do_west );
  1305. DECLARE_DO_FUN( do_where );
  1306. DECLARE_DO_FUN( do_who );
  1307. DECLARE_DO_FUN( do_wimpy );
  1308. DECLARE_DO_FUN( do_wizhelp );
  1309. DECLARE_DO_FUN( do_wizify       );
  1310. DECLARE_DO_FUN( do_wizlist      );
  1311. DECLARE_DO_FUN( do_wizlock );
  1312. DECLARE_DO_FUN( do_yell );
  1313. DECLARE_DO_FUN( do_zap );
  1314. /*
  1315.  * Spell functions.
  1316.  * Defined in magic.c.
  1317.  */
  1318. DECLARE_SPELL_FUN( spell_null );
  1319. DECLARE_SPELL_FUN( spell_acid_blast );
  1320. DECLARE_SPELL_FUN( spell_armor );
  1321. DECLARE_SPELL_FUN( spell_bless );
  1322. DECLARE_SPELL_FUN( spell_blindness );
  1323. DECLARE_SPELL_FUN( spell_burning_hands );
  1324. DECLARE_SPELL_FUN( spell_call_lightning );
  1325. DECLARE_SPELL_FUN( spell_cause_critical );
  1326. DECLARE_SPELL_FUN( spell_cause_light );
  1327. DECLARE_SPELL_FUN( spell_cause_serious );
  1328. DECLARE_SPELL_FUN( spell_change_sex );
  1329. DECLARE_SPELL_FUN( spell_charm_person );
  1330. DECLARE_SPELL_FUN( spell_chill_touch );
  1331. DECLARE_SPELL_FUN( spell_colour_spray );
  1332. DECLARE_SPELL_FUN( spell_continual_light );
  1333. DECLARE_SPELL_FUN( spell_control_weather );
  1334. DECLARE_SPELL_FUN( spell_create_food );
  1335. DECLARE_SPELL_FUN( spell_create_spring );
  1336. DECLARE_SPELL_FUN( spell_create_water );
  1337. DECLARE_SPELL_FUN( spell_cure_blindness );
  1338. DECLARE_SPELL_FUN( spell_cure_critical );
  1339. DECLARE_SPELL_FUN( spell_cure_light );
  1340. DECLARE_SPELL_FUN( spell_cure_poison );
  1341. DECLARE_SPELL_FUN( spell_cure_serious );
  1342. DECLARE_SPELL_FUN( spell_curse );
  1343. DECLARE_SPELL_FUN( spell_detect_evil );
  1344. DECLARE_SPELL_FUN( spell_detect_hidden );
  1345. DECLARE_SPELL_FUN( spell_detect_invis );
  1346. DECLARE_SPELL_FUN( spell_detect_magic );
  1347. DECLARE_SPELL_FUN( spell_detect_poison );
  1348. DECLARE_SPELL_FUN( spell_dispel_evil );
  1349. DECLARE_SPELL_FUN( spell_dispel_magic );
  1350. DECLARE_SPELL_FUN( spell_earthquake );
  1351. DECLARE_SPELL_FUN( spell_enchant_weapon );
  1352. DECLARE_SPELL_FUN( spell_energy_drain );
  1353. DECLARE_SPELL_FUN( spell_faerie_fire );
  1354. DECLARE_SPELL_FUN( spell_faerie_fog );
  1355. DECLARE_SPELL_FUN( spell_fireball );
  1356. DECLARE_SPELL_FUN( spell_flamestrike );
  1357. DECLARE_SPELL_FUN( spell_fly );
  1358. DECLARE_SPELL_FUN( spell_gate );
  1359. DECLARE_SPELL_FUN( spell_general_purpose );
  1360. DECLARE_SPELL_FUN( spell_giant_strength );
  1361. DECLARE_SPELL_FUN( spell_harm );
  1362. DECLARE_SPELL_FUN( spell_heal );
  1363. DECLARE_SPELL_FUN( spell_high_explosive );
  1364. DECLARE_SPELL_FUN( spell_identify );
  1365. DECLARE_SPELL_FUN( spell_infravision );
  1366. DECLARE_SPELL_FUN( spell_invis );
  1367. DECLARE_SPELL_FUN( spell_know_alignment );
  1368. DECLARE_SPELL_FUN( spell_lightning_bolt );
  1369. DECLARE_SPELL_FUN( spell_locate_object );
  1370. DECLARE_SPELL_FUN( spell_magic_missile );
  1371. DECLARE_SPELL_FUN( spell_make_purse );      // @@@
  1372. DECLARE_SPELL_FUN( spell_mass_invis );
  1373. DECLARE_SPELL_FUN( spell_pass_door );
  1374. DECLARE_SPELL_FUN( spell_poison );
  1375. DECLARE_SPELL_FUN( spell_protection );
  1376. DECLARE_SPELL_FUN( spell_refresh );
  1377. DECLARE_SPELL_FUN( spell_remove_curse );
  1378. DECLARE_SPELL_FUN( spell_sanctuary );
  1379. DECLARE_SPELL_FUN( spell_shocking_grasp );
  1380. DECLARE_SPELL_FUN( spell_shield );
  1381. DECLARE_SPELL_FUN( spell_sleep );
  1382. DECLARE_SPELL_FUN( spell_stone_skin );
  1383. DECLARE_SPELL_FUN( spell_summon );
  1384. DECLARE_SPELL_FUN( spell_teleport );
  1385. DECLARE_SPELL_FUN( spell_ventriloquate );
  1386. DECLARE_SPELL_FUN( spell_weaken );
  1387. DECLARE_SPELL_FUN( spell_word_of_recall );
  1388. DECLARE_SPELL_FUN( spell_acid_breath );
  1389. DECLARE_SPELL_FUN( spell_fire_breath );
  1390. DECLARE_SPELL_FUN( spell_frost_breath );
  1391. DECLARE_SPELL_FUN( spell_gas_breath );
  1392. DECLARE_SPELL_FUN( spell_lightning_breath );
  1393. // TFC spell functions
  1394. DECLARE_SPELL_FUN( spell_animate_dead );
  1395. /*
  1396.  * Psi spell_functions, in magic.c.
  1397.  */
  1398. DECLARE_SPELL_FUN(      spell_adrenaline_control);
  1399. DECLARE_SPELL_FUN(      spell_agitation         );
  1400. DECLARE_SPELL_FUN(      spell_aura_sight        );
  1401. DECLARE_SPELL_FUN(      spell_awe               );
  1402. DECLARE_SPELL_FUN(      spell_ballistic_attack  );
  1403. DECLARE_SPELL_FUN(      spell_biofeedback       );
  1404. DECLARE_SPELL_FUN(      spell_cell_adjustment   );
  1405. DECLARE_SPELL_FUN(      spell_combat_mind       );
  1406. DECLARE_SPELL_FUN(      spell_complete_healing  );
  1407. DECLARE_SPELL_FUN(      spell_control_flames    );
  1408. DECLARE_SPELL_FUN(      spell_create_sound      );
  1409. DECLARE_SPELL_FUN(      spell_death_field       );
  1410. DECLARE_SPELL_FUN(      spell_detonate          );
  1411. DECLARE_SPELL_FUN(      spell_disintegrate      );
  1412. DECLARE_SPELL_FUN(      spell_displacement      );
  1413. DECLARE_SPELL_FUN(      spell_domination        );
  1414. DECLARE_SPELL_FUN(      spell_ectoplasmic_form  );
  1415. DECLARE_SPELL_FUN(      spell_ego_whip          );
  1416. DECLARE_SPELL_FUN(      spell_energy_containment);
  1417. DECLARE_SPELL_FUN(      spell_enhance_armor     );
  1418. DECLARE_SPELL_FUN(      spell_enhanced_strength );
  1419. DECLARE_SPELL_FUN(      spell_flesh_armor       );
  1420. DECLARE_SPELL_FUN(      spell_inertial_barrier  );
  1421. DECLARE_SPELL_FUN(      spell_inflict_pain      );
  1422. DECLARE_SPELL_FUN(      spell_intellect_fortress);
  1423. DECLARE_SPELL_FUN(      spell_lend_health       );
  1424. DECLARE_SPELL_FUN(      spell_levitation        );
  1425. DECLARE_SPELL_FUN(      spell_mental_barrier    );
  1426. DECLARE_SPELL_FUN(      spell_mind_thrust       );
  1427. DECLARE_SPELL_FUN(      spell_project_force     );
  1428. DECLARE_SPELL_FUN(      spell_psionic_blast     );
  1429. DECLARE_SPELL_FUN(      spell_psychic_crush     );
  1430. DECLARE_SPELL_FUN(      spell_psychic_drain     );
  1431. DECLARE_SPELL_FUN(      spell_psychic_healing   );
  1432. DECLARE_SPELL_FUN(      spell_share_strength    );
  1433. DECLARE_SPELL_FUN(      spell_thought_shield    );
  1434. DECLARE_SPELL_FUN(      spell_ultrablast        );
  1435. /*
  1436.  * OS-dependent declarations.
  1437.  * These are all very standard library functions,
  1438.  *   but some systems have incomplete or non-ansi header files.
  1439.  */
  1440. #if defined(_AIX)
  1441. char * crypt args( ( const char *key, const char *salt ) );
  1442. #endif
  1443. #if defined(apollo)
  1444. int atoi args( ( const char *string ) );
  1445. void * calloc args( ( unsigned nelem, size_t size ) );
  1446. char * crypt args( ( const char *key, const char *salt ) );
  1447. #endif
  1448. #if defined(hpux)
  1449. char * crypt args( ( const char *key, const char *salt ) );
  1450. #endif
  1451. #if defined(linux)
  1452. char * crypt args( ( const char *key, const char *salt ) );
  1453. #endif
  1454. #if defined(macintosh)
  1455. #define NOCRYPT
  1456. #if defined(unix)
  1457. #undef unix
  1458. #endif
  1459. #endif
  1460. #if defined(MIPS_OS)
  1461. char * crypt args( ( const char *key, const char *salt ) );
  1462. #endif
  1463. #if defined(MSDOS)
  1464. #define NOCRYPT
  1465. #if defined(unix)
  1466. #undef unix
  1467. #endif
  1468. #endif
  1469. #if defined(NeXT)
  1470. char * crypt args( ( const char *key, const char *salt ) );
  1471. #endif
  1472. #if defined(sequent)
  1473. char * crypt args( ( const char *key, const char *salt ) );
  1474. int fclose args( ( FILE *stream ) );
  1475. int fprintf args( ( FILE *stream, const char *format, ... ) );
  1476. int fread args( ( void *ptr, int size, int n, FILE *stream ) );
  1477. int fseek args( ( FILE *stream, long offset, int ptrname ) );
  1478. void perror args( ( const char *s ) );
  1479. int ungetc args( ( int c, FILE *stream ) );
  1480. #endif
  1481. #if defined(sun)
  1482. char * crypt args( ( const char *key, const char *salt ) );
  1483. int fclose args( ( FILE *stream ) );
  1484. int fprintf args( ( FILE *stream, const char *format, ... ) );
  1485. int fread args( ( void *ptr, int size, int n, FILE *stream ) );
  1486. int fseek args( ( FILE *stream, long offset, int ptrname ) );
  1487. void perror args( ( const char *s ) );
  1488. int ungetc args( ( int c, FILE *stream ) );
  1489. #endif
  1490. #if defined(ultrix)
  1491. char * crypt args( ( const char *key, const char *salt ) );
  1492. #endif
  1493. /*
  1494.  * The crypt(3) function is not available on some operating systems.
  1495.  * In particular, the U.S. Government prohibits its export from the
  1496.  *   United States to foreign countries.
  1497.  * Turn on NOCRYPT to keep passwords in plain text.
  1498.  */
  1499. #if defined(NOCRYPT)
  1500. #define crypt(s1, s2) (s1)
  1501. #endif
  1502. /*
  1503.  * Data files used by the server.
  1504.  *
  1505.  * AREA_LIST contains a list of areas to boot.
  1506.  * All files are read in completely at bootup.
  1507.  * Most output files (bug, idea, typo, shutdown) are append-only.
  1508.  *
  1509.  * The NULL_FILE is held open so that we have a stream handle in reserve,
  1510.  *   so players can go ahead and telnet to all the other descriptors.
  1511.  * Then we close it whenever we need to open a file (e.g. a save file).
  1512.  */
  1513. //#if defined(macintosh)
  1514. //#define PLAYER_DIR "" /* Player files */
  1515. //#define NULL_FILE "proto.are" /* To reserve one stream */
  1516. //#define MOB_DIR         ""              /* MOBProg files                */
  1517. //#endif
  1518. //#if defined(MSDOS)
  1519. #define PLAYER_DIR "" /* Player files                 */
  1520. #define NULL_FILE "nul" /* To reserve one stream */
  1521. #define MOB_DIR         ""              /* MOBProg files                */
  1522. //#endif
  1523. //#if defined(unix)
  1524. //#define PLAYER_DIR "../player/" /* Player files */
  1525. //#define NULL_FILE "/dev/null" /* To reserve one stream */
  1526. //#define MOB_DIR         "MOBProgs/"     /* MOBProg files                */
  1527. //#endif
  1528. //#if defined(linux)
  1529. //#define PLAYER_DIR "../player/" /* Player files */
  1530. //#define NULL_FILE "/dev/null" /* To reserve one stream */
  1531. //#define MOB_DIR         "MOBProgs/"     /* MOBProg files                */
  1532. //#endif
  1533. #define AREA_LIST "area.lst" /* List of areas */
  1534. #define BUG_FILE "bugs.txt"      /* For 'bug' and bug( ) */
  1535. #define IDEA_FILE "ideas.txt" /* For 'idea' */
  1536. #define TYPO_FILE "typos.txt"     /* For 'typo' */
  1537. #define NOTE_FILE "notes.txt" /* For 'notes' */
  1538. #define SHUTDOWN_FILE "shutdown.txt" /* For 'shutdown' */
  1539. /*
  1540.  * Our function prototypes.
  1541.  * One big lump ... this is every function in Merc.
  1542.  */
  1543. #define CD CHAR_DATA
  1544. #define MID MOB_INDEX_DATA
  1545. #define OD OBJ_DATA
  1546. #define OID OBJ_INDEX_DATA
  1547. #define RID ROOM_INDEX_DATA
  1548. #define SF SPEC_FUN
  1549. /* act_comm.c */
  1550. void add_follower args( ( CHAR_DATA *ch, CHAR_DATA *master ) );
  1551. void stop_follower args( ( CHAR_DATA *ch ) );
  1552. void die_follower args( ( CHAR_DATA *ch ) );
  1553. bool is_same_group args( ( CHAR_DATA *ach, CHAR_DATA *bch ) );
  1554. bool is_note_to args( ( CHAR_DATA *ch, NOTE_DATA *pnote ) );
  1555. /* act_info.c */
  1556. void set_title args( ( CHAR_DATA *ch, char *title ) );
  1557. /* act_move.c */
  1558. void move_char args( ( CHAR_DATA *ch, int door ) );
  1559. /* act_obj.c */
  1560. /* act_wiz.c */
  1561. ROOM_INDEX_DATA * find_location args( ( CHAR_DATA *ch, char *arg ) );
  1562. /* comm.c */
  1563. void close_socket args( ( DESCRIPTOR_DATA *dclose ) );
  1564. void write_to_buffer args( ( DESCRIPTOR_DATA *d, const char *txt,
  1565.     int length ) );
  1566. void send_to_char args( ( const char *txt, CHAR_DATA *ch ) );
  1567. void    show_string     args( ( DESCRIPTOR_DATA *d, char *input ) );
  1568. void act         args( ( const char *format, CHAR_DATA *ch,
  1569.     const void *arg1, const void *arg2, int type ) );
  1570. /* db.c */
  1571. void boot_db args( ( void ) );
  1572. void area_update args( ( void ) );
  1573. CD * create_mobile args( ( MOB_INDEX_DATA *pMobIndex ) );
  1574. OD * create_object args( ( OBJ_INDEX_DATA *pObjIndex, int level ) );
  1575. void clear_char args( ( CHAR_DATA *ch ) );
  1576. void free_char args( ( CHAR_DATA *ch ) );
  1577. char * get_extra_descr args( ( const char *name, EXTRA_DESCR_DATA *ed ) );
  1578. MID * get_mob_index args( ( int vnum ) );
  1579. OID * get_obj_index args( ( int vnum ) );
  1580. RID * get_room_index args( ( int vnum ) );
  1581. char fread_letter args( ( FILE *fp ) );
  1582. int fread_number args( ( FILE *fp ) );
  1583. char * fread_string args( ( FILE *fp ) );
  1584. void fread_to_eol args( ( FILE *fp ) );
  1585. char * fread_word args( ( FILE *fp ) );
  1586. void * alloc_mem args( ( int sMem ) );
  1587. void * alloc_perm args( ( int sMem ) );
  1588. void free_mem args( ( void *pMem, int sMem ) );
  1589. char * str_dup args( ( const char *str ) );
  1590. void free_string args( ( char *pstr ) );
  1591. int number_fuzzy args( ( int number ) );
  1592. int number_range args( ( int from, int to ) );
  1593. int number_percent args( ( void ) );
  1594. int number_door args( ( void ) );
  1595. int number_bits args( ( int width ) );
  1596. int number_mm args( ( void ) );
  1597. int dice args( ( int number, int size ) );
  1598. int interpolate args( ( int level, int value_00, int value_32 ) );
  1599. void smash_tilde args( ( char *str ) );
  1600. bool str_cmp args( ( const char *astr, const char *bstr ) );
  1601. bool str_prefix args( ( const char *astr, const char *bstr ) );
  1602. bool str_infix args( ( const char *astr, const char *bstr ) );
  1603. bool str_suffix args( ( const char *astr, const char *bstr ) );
  1604. char * capitalize args( ( const char *str ) );
  1605. void append_file args( ( CHAR_DATA *ch, char *file, char *str ) );
  1606. void bug args( ( const char *str, int param ) );
  1607. void log_string args( ( const char *str ) );
  1608. void tail_chain args( ( void ) );
  1609. /* fight.c */
  1610. void violence_update args( ( void ) );
  1611. void multi_hit args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dt ) );
  1612. void damage args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dam,
  1613.     int dt ) );
  1614. void update_pos args( ( CHAR_DATA *victim ) );
  1615. void stop_fighting args( ( CHAR_DATA *ch, bool fBoth ) );
  1616. void death_cry args( ( CHAR_DATA *ch ) );
  1617. void raw_kill args( ( CHAR_DATA *victim ) );
  1618. /* handler.c */
  1619. int get_trust args( ( CHAR_DATA *ch ) );
  1620. int get_age args( ( CHAR_DATA *ch ) );
  1621. int get_curr_str args( ( CHAR_DATA *ch ) );
  1622. int get_curr_int args( ( CHAR_DATA *ch ) );
  1623. int get_curr_wis args( ( CHAR_DATA *ch ) );
  1624. int get_curr_dex args( ( CHAR_DATA *ch ) );
  1625. int get_curr_con args( ( CHAR_DATA *ch ) );
  1626. int can_carry_n args( ( CHAR_DATA *ch ) );
  1627. int can_carry_w args( ( CHAR_DATA *ch ) );
  1628. bool is_name args( ( const char *str, char *namelist ) );
  1629. void affect_to_char args( ( CHAR_DATA *ch, AFFECT_DATA *paf ) );
  1630. void affect_remove args( ( CHAR_DATA *ch, AFFECT_DATA *paf ) );
  1631. void affect_strip args( ( CHAR_DATA *ch, int sn ) );
  1632. bool is_affected args( ( CHAR_DATA *ch, int sn ) );
  1633. void affect_join args( ( CHAR_DATA *ch, AFFECT_DATA *paf ) );
  1634. void char_from_room args( ( CHAR_DATA *ch ) );
  1635. void char_to_room args( ( CHAR_DATA *ch, ROOM_INDEX_DATA *pRoomIndex ) );
  1636. void obj_to_char args( ( OBJ_DATA *obj, CHAR_DATA *ch ) );
  1637. void obj_from_char args( ( OBJ_DATA *obj ) );
  1638. int apply_ac args( ( OBJ_DATA *obj, int iWear ) );
  1639. OD * get_eq_char args( ( CHAR_DATA *ch, int iWear ) );
  1640. void equip_char args( ( CHAR_DATA *ch, OBJ_DATA *obj, int iWear ) );
  1641. void unequip_char args( ( CHAR_DATA *ch, OBJ_DATA *obj ) );
  1642. int count_obj_list args( ( OBJ_INDEX_DATA *obj, OBJ_DATA *list ) );
  1643. void obj_from_room args( ( OBJ_DATA *obj ) );
  1644. void obj_to_room args( ( OBJ_DATA *obj, ROOM_INDEX_DATA *pRoomIndex ) );
  1645. void obj_to_obj args( ( OBJ_DATA *obj, OBJ_DATA *obj_to ) );
  1646. void obj_from_obj args( ( OBJ_DATA *obj ) );
  1647. void extract_obj args( ( OBJ_DATA *obj ) );
  1648. void extract_char args( ( CHAR_DATA *ch, bool fPull ) );
  1649. CD * get_char_room args( ( CHAR_DATA *ch, char *argument ) );
  1650. CD * get_char_world args( ( CHAR_DATA *ch, char *argument ) );
  1651. OD * get_obj_type args( ( OBJ_INDEX_DATA *pObjIndexData ) );
  1652. OD * get_obj_list args( ( CHAR_DATA *ch, char *argument,
  1653.     OBJ_DATA *list ) );
  1654. OD * get_obj_carry args( ( CHAR_DATA *ch, char *argument ) );
  1655. OD * get_obj_wear args( ( CHAR_DATA *ch, char *argument ) );
  1656. OD * get_obj_here args( ( CHAR_DATA *ch, char *argument ) );
  1657. OD * get_obj_world args( ( CHAR_DATA *ch, char *argument ) );
  1658. OD * create_money args( ( int amount ) );
  1659. int get_obj_number args( ( OBJ_DATA *obj ) );
  1660. int get_obj_weight args( ( OBJ_DATA *obj ) );
  1661. bool room_is_dark args( ( ROOM_INDEX_DATA *pRoomIndex ) );
  1662. bool room_is_private args( ( ROOM_INDEX_DATA *pRoomIndex ) );
  1663. bool can_see args( ( CHAR_DATA *ch, CHAR_DATA *victim ) );
  1664. bool can_see_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj ) );
  1665. bool can_drop_obj args( ( CHAR_DATA *ch, OBJ_DATA *obj ) );
  1666. char * item_type_name args( ( OBJ_DATA *obj ) );
  1667. char * affect_loc_name args( ( int location ) );
  1668. char * affect_bit_name args( ( int vector ) );
  1669. char * extra_bit_name args( ( int extra_flags ) );
  1670. /* interp.c */
  1671. void interpret args( ( CHAR_DATA *ch, char *argument ) );
  1672. bool is_number args( ( char *arg ) );
  1673. int number_argument args( ( char *argument, char *arg ) );
  1674. char * one_argument args( ( char *argument, char *arg_first ) );
  1675. bool    IS_SWITCHED     args( ( CHAR_DATA *ch ) );
  1676. /* magic.c */
  1677. int skill_lookup args( ( const char *name ) );
  1678. int slot_lookup args( ( int slot ) );
  1679. bool saves_spell args( ( int level, CHAR_DATA *victim ) );
  1680. void obj_cast_spell args( ( int sn, int level, CHAR_DATA *ch,
  1681.     CHAR_DATA *victim, OBJ_DATA *obj ) );
  1682. /* mob_prog.c */
  1683. #ifdef DUNNO_STRSTR
  1684. char *  strstr                  args( (const char *s1, const char *s2 ) );
  1685. #endif
  1686. void    mprog_wordlist_check    args( ( char * arg, CHAR_DATA *mob,
  1687.                 CHAR_DATA* actor, OBJ_DATA* object, void* vo, int type ) );
  1688. void    mprog_percent_check     args( ( CHAR_DATA *mob,
  1689.                 CHAR_DATA* actor, OBJ_DATA* object, void* vo, int type ) );
  1690. void    mprog_act_trigger       args( ( char* buf, CHAR_DATA* mob,
  1691.                         CHAR_DATA* ch, OBJ_DATA* obj, void* vo ) );
  1692. void    mprog_bribe_trigger     args( ( CHAR_DATA* mob, CHAR_DATA* ch,
  1693.                         int amount ) );
  1694. void    mprog_entry_trigger     args( ( CHAR_DATA* mob ) );
  1695. void    mprog_give_trigger      args( ( CHAR_DATA* mob, CHAR_DATA* ch,
  1696.                         OBJ_DATA* obj ) );
  1697. void    mprog_greet_trigger     args( ( CHAR_DATA* mob ) );
  1698. void    mprog_fight_trigger     args( ( CHAR_DATA* mob, CHAR_DATA* ch ) );
  1699. void    mprog_hitprcnt_trigger  args( ( CHAR_DATA* mob, CHAR_DATA* ch ) );
  1700. void    mprog_death_trigger     args( ( CHAR_DATA* mob ) );
  1701. void    mprog_random_trigger    args( ( CHAR_DATA* mob ) );
  1702. void    mprog_speech_trigger    args( ( char* txt, CHAR_DATA* mob ) );
  1703. /* save.c */
  1704. void save_char_obj args( ( CHAR_DATA *ch ) );
  1705. bool load_char_obj args( ( DESCRIPTOR_DATA *d, char *name ) );
  1706. /* special.c */
  1707. SF * spec_lookup args( ( const char *name ) );
  1708. /* update.c */
  1709. void advance_level args( ( CHAR_DATA *ch ) );
  1710. void gain_exp args( ( CHAR_DATA *ch, int gain ) );
  1711. void gain_condition args( ( CHAR_DATA *ch, int iCond, int value ) );
  1712. void update_handler args( ( void ) );
  1713. #undef CD
  1714. #undef MID
  1715. #undef OD
  1716. #undef OID
  1717. #undef RID
  1718. #undef SF
  1719. // @@@
  1720. int SpinTheMessageLoop();