PennMUSH Community

Changeset 493

Show
Ignore:
Timestamp:
08/16/06 02:22:20 (2 years ago)
Author:
pennmush
Message:

PennMUSH 1.8.0p5 Archival

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • 1.8.0/CHANGES.180

    r491 r493  
    1212 
    1313========================================================================== 
     14 
     15Version 1.8.0 patchlevel 5                      May 30, 2005 
     16 
     17Minor changes: 
     18  * help substitutions{2,3,4} aliased to help %{2,3,4} respectively 
     19    for convenience. Suggested by Tokeli@M*U*S*H. 
     20  * help for ulocal() clarified. Suggested by Dahan@M*U*S*H. 
     21  * help fixes by Sketch@M*U*S*H. 
     22Fixes: 
     23  * next() on a thing or player behaved improperly. Reported by 
     24    Sketch@M*U*S*H. 
     25  * ancestor_* config options allow dbref specified with #<n> as 
     26    well as just <n>. Suggested by Nathan Baum. 
     27  * New MSVC6 project files. [EEH] 
     28  * NUMVERSION no longer starts with a 0, which made some compilers 
     29    think it might be an octal constant. Suggested by Shane DeRidder. 
     30  * @attribute did not check for validity of attribute names before 
     31    adding them. Report by Dahan@M*U*S*H. 
     32  * #<dbref> <action> forces ignored @hooks. Report by Mike Griffiths. 
     33  * access.cnf checks attempt to check against ipv6-ized versions 
     34    of ip addresses listed in sitelocks as well. 
     35  * Sort of dbrefs in @oemit was broken, which could lead to   
     36    multiple messages to same target. Report by Cheetah@M*U*S*H. [TAP] 
     37  * Setting a password ending in % is now feasible. Report by Marc  
     38    DVer [TAP]. 
     39 
    1440 
    1541Version 1.8.0 patchlevel 4                      March 20, 2005 
  • 1.8.0/Patchlevel

    r491 r493  
    11Do not edit this file. It is maintained by the official PennMUSH patches. 
    2 This is PennMUSH 1.8.0p4 
     2This is PennMUSH 1.8.0p5 
  • 1.8.0/game/txt/hlp/pennfunc.hlp

    r485 r493  
    37373737  strmatch(Foo bar baz,*o*a*) will return 1. 
    37383738& STRREPLACE() 
    3739   strreplace(string, start, length, text
     3739  strreplace(<string>, <start>, <length>, <text>
    37403740 
    37413741  Returns string with the <length> characters starting at <start> replaced 
     
    41754175  'me' refers to the object that supplied the attribute. 
    41764176  
    4177   However, unlike the u() function, the global registers r(0)-r(9) and 
    4178   r(A)-r(Z) (%q0-%q9, %qa-%qz) are preserved in their initial state. This 
    4179   means that functions "below" the level of the u() can reset global 
    4180   registers for temporary calculations, without needing to worry about 
    4181   "clobbering" the original values. 
     4177  However, unlike the u() function, the evaluated attribute receives 
     4178  only a temporary copy of the global registers r(0)-r(9) and 
     4179  r(A)-r(Z) (%q0-%q9, %qa-%qz).  This means that functions "below" the 
     4180  level of the ulocal() can reset global registers for temporary 
     4181  calculations, without needing to worry about "clobbering" the original 
     4182  values (which are restored when ulocal() returns). 
    41824183 
    41834184  This makes ulocal() particularly useful for global or shared code which 
  • 1.8.0/game/txt/hlp/penntop.hlp

    r479 r493  
    15751575(continued in help SUBSTITUTIONS2) 
    15761576& SUBSTITUTIONS2 
     1577& %2 
    15771578  If the ENACTOR's gender is set, you can use these substitutions to get the 
    15781579  right pronoun for him/her: 
     
    15911592(continued in help substitutions3) 
    15921593& SUBSTITUTIONS3 
     1594& %3 
    15931595  Other substitutions: 
    15941596     %0-%9   = the contents of the REGISTERS 0-9, respectively 
     
    16031605(continued in help substitutions4) 
    16041606& SUBSTITUTIONS4 
     1607& %4 
    16051608  Example:  
    16061609 
  • 1.8.0/game/txt/hlp/pennv180.hlp

    r491 r493  
    1 & 1.8.0p4 
     1& 1.8.0p5 
    22& changes 
    33This is a list of changes in this patchlevel which are probably of 
     
    1212be read in 'help patchlevels'. 
    1313 
     14Version 1.8.0 patchlevel 5                      May 30, 2005 
     15 
     16Minor changes: 
     17  * help substitutions{2,3,4} aliased to help %{2,3,4} respectively 
     18    for convenience. Suggested by Tokeli@M*U*S*H. 
     19  * help for ulocal() clarified. Suggested by Dahan@M*U*S*H. 
     20  * help fixes by Sketch@M*U*S*H. 
     21Fixes: 
     22  * next() on a thing or player behaved improperly. Reported by 
     23    Sketch@M*U*S*H. 
     24  * ancestor_* config options allow dbref specified with #<n> as 
     25    well as just <n>. Suggested by Nathan Baum. 
     26  * New MSVC6 project files. [EEH] 
     27  * NUMVERSION no longer starts with a 0, which made some compilers 
     28    think it might be an octal constant. Suggested by Shane DeRidder. 
     29  * @attribute did not check for validity of attribute names before 
     30    adding them. Report by Dahan@M*U*S*H. 
     31  * #<dbref> <action> forces ignored @hooks. Report by Mike Griffiths. 
     32  * access.cnf checks attempt to check against ipv6-ized versions 
     33    of ip addresses listed in sitelocks as well. 
     34  * Sort of dbrefs in @oemit was broken, which could lead to   
     35    multiple messages to same target. Report by Cheetah@M*U*S*H. [TAP] 
     36  * Setting a password ending in % is now feasible. Report by Marc  
     37    DVer [TAP]. 
     38 
     39 
     40& 1.8.0p4 
    1441Version 1.8.0 patchlevel 4                      March 20, 2005 
    1542 
  • 1.8.0/game/txt/hlp/pennvOLD.hlp

    r491 r493  
    44184418type 'help <version>p<patchlevel>'. For example, 'help 1.7.2p3' 
    44194419 
    4420 1.8.0: 0, 1, 2, 3, 4 
     44201.8.0: 0, 1, 2, 3, 4, 5 
    442144211.7.7: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 
    44224422       19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
  • 1.8.0/hdrs/game.h

    r477 r493  
    8585 
    8686/* From player.c */ 
    87 extern void do_password(dbref player, const char *old, const char *newobj); 
     87extern void do_password(dbref player, dbref cause, 
     88            const char *old, const char *newobj); 
    8889 
    8990/* From predicat.c */ 
     
    162163extern void do_stats(dbref player, const char *name); 
    163164extern void do_newpassword 
    164   (dbref player, const char *name, const char *password); 
     165  (dbref player, dbref cause, const char *name, const char *password); 
    165166enum boot_type { BOOT_NAME, BOOT_DESC, BOOT_SELF, BOOT_SILENT }; 
    166167extern void do_boot(dbref player, const char *name, enum boot_type flag); 
    167168extern void do_chzoneall(dbref player, const char *name, const char *target); 
    168 extern int force_by_number(dbref player, char *command); 
     169extern int parse_force(char *command); 
    169170extern void do_power(dbref player, const char *name, const char *power); 
    170171enum sitelock_type { SITELOCK_ADD, SITELOCK_REMOVE, SITELOCK_BAN, 
  • 1.8.0/hdrs/version.h

    r491 r493  
    11#define VERSION "1.8.0" 
    2 #define PATCHLEVEL "4
    3 #define PATCHDATE "[03/20/2005]" 
    4 #define NUMVERSION 001008000004 
     2#define PATCHLEVEL "5
     3#define PATCHDATE "[05/30/2005]" 
     4#define NUMVERSION 1008000005 
  • 1.8.0/src/access.c

    r469 r493  
    282282} 
    283283 
     284static char * 
     285ip4_to_ip6(const char *addr) 
     286{ 
     287  static char tbuf1[BUFFER_LEN]; 
     288  char *bp; 
     289  bp = tbuf1; 
     290  safe_format(tbuf1, &bp, "::ffff:%s", addr); 
     291  *bp = '\0'; 
     292  return tbuf1; 
     293} 
     294 
     295 
    284296/** Decide if a host can access someway. 
    285297 * \param hname a host or user+host pattern. 
     
    318330    && ((ap->can & ACS_REGEXP) 
    319331        ? (regexp_match_case(ap->host, hname, 0) 
    320            || (p && regexp_match_case(ap->host, p, 0))) 
     332           || (p && regexp_match_case(ap->host, p, 0)) 
     333#ifdef FORCE_IPV4 
     334           || regexp_match_case(ip4_to_ip6(ap->host), hname, 0) 
     335           || (p && regexp_match_case(ip4_to_ip6(ap->host), p, 0)) 
     336#endif 
     337        ) 
    321338        : (quick_wild(ap->host, hname) 
    322            || (p && quick_wild(ap->host, p)))) 
     339           || (p && quick_wild(ap->host, p)) 
     340#ifdef FORCE_IPV4 
     341           || quick_wild(ip4_to_ip6(ap->host), hname) 
     342           || (p && quick_wild(ip4_to_ip6(ap->host), p)) 
     343#endif 
     344        )) 
    323345    && (ap->who == AMBIGUOUS || ap->who == who)) { 
    324346      /* Got one */ 
     
    378400    && ((ap->can & ACS_REGEXP) 
    379401        ? (regexp_match_case(ap->host, hname, 0) 
    380            || (p && regexp_match_case(ap->host, p, 0))) 
     402           || (p && regexp_match_case(ap->host, p, 0)) 
     403#ifdef FORCE_IPV4 
     404           || regexp_match_case(ip4_to_ip6(ap->host), hname, 0) 
     405           || (p && regexp_match_case(ip4_to_ip6(ap->host), p, 0)) 
     406#endif 
     407        ) 
    381408        : (quick_wild(ap->host, hname) 
    382            || (p && quick_wild(ap->host, p)))) 
     409           || (p && quick_wild(ap->host, p)) 
     410#ifdef FORCE_IPV4 
     411           || quick_wild(ip4_to_ip6(ap->host), hname) 
     412           || (p && quick_wild(ip4_to_ip6(ap->host), p)) 
     413#endif 
     414        )) 
    383415    && (ap->who == AMBIGUOUS || ap->who == who)) { 
    384416      /* Got one */ 
  • 1.8.0/src/atr_tab.c

    r491 r493  
    172172    } 
    173173  } else { 
    174     /* Create fresh */ 
     174    /* Create fresh if the name is ok */ 
     175    if (!good_atr_name(name)) { 
     176      notify(player, T("Invalid attribute name.")); 
     177      return; 
     178    } 
    175179    insert = 1; 
    176180    ap = (ATTR *) mush_malloc(sizeof(ATTR), "ATTR"); 
     
    259263  upcasestr(old); 
    260264  upcasestr(newname); 
     265  /* Is the new name valid? */ 
     266  if (!good_atr_name(newname)) { 
     267    notify(player, T("Invalid attribute name.")); 
     268    return; 
     269  } 
    261270  /* Is the new name already in use? */ 
    262271  ap = (ATTR *) ptab_find_exact(&ptab_attrib, newname); 
  • 1.8.0/src/cmds.c

    r489 r493  
    626626 
    627627COMMAND (cmd_newpassword) { 
    628   do_newpassword(player, arg_left, arg_right); 
     628  do_newpassword(player, cause, arg_left, arg_right); 
    629629} 
    630630 
     
    648648 
    649649COMMAND (cmd_password) { 
    650   do_password(player, arg_left, arg_right); 
     650  do_password(player, cause, arg_left, arg_right); 
    651651} 
    652652 
  • 1.8.0/src/command.c

    r489 r493  
    185185  {"@NAME", NULL, cmd_name, CMD_T_ANY | CMD_T_EQSPLIT | CMD_T_NOGAGGED 
    186186   | CMD_T_NOGUEST, 0, 0}, 
    187   {"@NEWPASSWORD", NULL, cmd_newpassword, CMD_T_ANY | CMD_T_EQSPLIT, "WIZARD", 
    188    0}, 
     187  {"@NEWPASSWORD", NULL, cmd_newpassword, CMD_T_ANY | CMD_T_EQSPLIT 
     188   | CMD_T_RS_NOPARSE, "WIZARD", 0}, 
    189189  {"@NOTIFY", "ALL ANY", cmd_notify_drain, CMD_T_ANY | CMD_T_EQSPLIT, 0, 0}, 
    190190  {"@NSCEMIT", "NOEVAL NOISY SPOOF", cmd_cemit, 
     
    210210  {"@PARENT", NULL, cmd_parent, CMD_T_ANY | CMD_T_EQSPLIT, 0, 0}, 
    211211  {"@PASSWORD", NULL, cmd_password, CMD_T_PLAYER | CMD_T_EQSPLIT 
    212    | CMD_T_NOGUEST, 0, 0}, 
     212   | CMD_T_NOPARSE | CMD_T_RS_NOPARSE | CMD_T_NOGUEST, 0, 0}, 
    213213  {"@PCREATE", NULL, cmd_pcreate, CMD_T_ANY | CMD_T_EQSPLIT, 0, 0}, 
    214214 
     
    928928      noevtoken = 1; 
    929929    } 
     930  case NUMBER_TOKEN: 
     931    /* parse_force() destructively modifies the command to replace 
     932     * the first space with a '=' if the command is an actual 
     933     * chat command */ 
     934    if (Mobile(player) && parse_force(p)) { 
     935      /* This is a "#obj foo" force style 
     936       * We set noevtoken to keep its noeval way, and 
     937       * set the cmd to allow @hook. */ 
     938      replacer = "@FORCE"; 
     939      noevtoken = 1; 
     940    } 
    930941  } 
    931942 
    932943  if (replacer) { 
    933944    cmd = command_find(replacer); 
    934     p++; 
     945    if (*p != NUMBER_TOKEN) 
     946      p++; 
    935947  } else { 
    936     /* A few other options, where we might want to fall through 
    937      * to the default parsing if the syntax we're given doesn't 
    938      * quite match. 
    939      */ 
    940     if (*p == '#') { 
    941       if (!Gagged(player) && Mobile(player) 
    942       && force_by_number(player, string)) { 
    943     command_parse_free_args; 
    944     return NULL; 
    945       } 
    946     } 
    947     /* At this point, we have not done a replacer, and neither chat nor 
    948      * force by number applies, so we continue with the usual 
    949      * processing. Exits have next priority.  We still pass them through 
    950      * the parser so @hook on GOTO can work on them. 
     948    /* At this point, we have not done a replacer, so we continue with the  
     949     * usual processing. Exits have next priority.  We still pass them  
     950     * through the parser so @hook on GOTO can work on them. 
    951951     */ 
    952952    if (can_move(player, p)) { 
  • 1.8.0/src/conf.c

    r479 r493  
    692692 
    693693  int n; 
    694  
    695   n = atoi(val); 
     694  int offset = 0; 
     695 
     696  if (val && val[0] == '#') 
     697    offset = 1; 
     698  n = parse_integer(val + offset); 
    696699 
    697700  /* enforce limits */ 
  • 1.8.0/src/cque.c

    r477 r493  
    507507        global_eval_context.renv[a][0] = '\0'; 
    508508    } 
     509    global_eval_context.process_command_port = 0; 
    509510    s = entry->comm; 
    510511    global_eval_context.break_called = 0; 
  • 1.8.0/src/fundb.c

    r477 r493  
    754754  dbref loc = match_thing(executor, args[0]); 
    755755  safe_dbref(dbwalk 
    756          (NULL, NULL, executor, enactor, TYPE_THING, loc, NOTHING, 0, 0, 0
    757           NULL), buff, bp); 
     756         (NULL, NULL, executor, enactor, TYPE_THING | TYPE_PLAYER, loc
     757          NOTHING, 0, 0, 0, NULL), buff, bp); 
    758758} 
    759759 
     
    782782    case TYPE_PLAYER: 
    783783      safe_dbref(dbwalk 
    784          (NULL, NULL, executor, enactor, TYPE_THING, Location(it), it
    785           0, 0, 0, NULL), buff, bp); 
     784         (NULL, NULL, executor, enactor, TYPE_THING | TYPE_PLAYER
     785          Location(it), it, 0, 0, 0, NULL), buff, bp); 
    786786      break; 
    787787    default: 
  • 1.8.0/src/funlist.c

    r477 r493  
    3434               int type_pos, char **ptrs, int nptrs); 
    3535static char *get_list_type_noauto(char **args, int nargs, int type_pos); 
    36 int i_comp(const void *s1, const void *s2); 
     36static int i_comp(const void *s1, const void *s2); 
    3737static int f_comp(const void *s1, const void *s2); 
    3838static int u_comp(const void *s1, const void *s2); 
     
    768768} 
    769769 
    770 int 
     770static int 
    771771i_comp(const void *s1, const void *s2) 
    772772{ 
  • 1.8.0/src/funmath.c

    r473 r493  
    14211421  *pnumber = args[0], *pnum1, *pnum2 = NULL;    /* part 1 and 2 of the number respectively */ 
    14221422  unsigned int len, m, minus = 0,   /* is the number negative? */ 
    1423    dot = 0, len1, len2;       /* length of part 1 and 2 respectively */ 
     1423    dot = 0, len1, len2;  /* length of part 1 and 2 respectively */ 
    14241424 
    14251425  pnumber = trim_space_sep(args[0], ' '); 
  • 1.8.0/src/player.c

    r477 r493  
    3535#include "flags.h" 
    3636#include "lock.h" 
     37#include "parse.h" 
    3738 
    3839#ifdef HAS_CRYPT 
     
    5152static dbref make_player 
    5253  (const char *name, const char *password, const char *host, const char *ip); 
    53 void do_password(dbref player, const char *old, const char *newobj); 
     54void do_password 
     55  (dbref player, dbref cause, const char *old, const char *newobj); 
    5456 
    5557static const char pword_attr[] = "XYXXY"; 
     
    411413 * This function implements @password. 
    412414 * \endverbatim 
    413  * \param player the enactor. 
     415 * \param player the executor. 
     416 * \param cause the enactor. 
    414417 * \param old player's current password. 
    415418 * \param newobj player's desired new password. 
    416419 */ 
    417420void 
    418 do_password(dbref player, const char *old, const char *newobj) 
    419 
     421do_password(dbref player, dbref cause, const char *old, const char *newobj) 
     422
     423  if (!global_eval_context.process_command_port) { 
     424    char old_eval[BUFFER_LEN]; 
     425    char new_eval[BUFFER_LEN]; 
     426    char const *sp; 
     427    char *bp; 
     428 
     429    sp = old; 
     430    bp = old_eval; 
     431    process_expression(old_eval, &bp, &sp, player, player, cause, 
     432               PE_DEFAULT, PT_DEFAULT, NULL); 
     433    *bp = '\0'; 
     434    old = old_eval; 
     435 
     436    sp = newobj; 
     437    bp = new_eval; 
     438    process_expression(new_eval, &bp, &sp, player, player, cause, 
     439               PE_DEFAULT, PT_DEFAULT, NULL); 
     440    *bp = '\0'; 
     441    newobj = new_eval; 
     442  } 
     443 
    420444  if (!password_check(player, old)) { 
    421445    notify(player, T("The old password that you entered was incorrect.")); 
  • 1.8.0/src/speech.c

    r491 r493  
    3636             int flags); 
    3737dbref na_zemit(dbref current, void *data); 
    38 extern int i_comp(const void *s1, const void *s2); 
    3938 
    4039const char * 
     
    165164        tprintf(T("%s says, \"%s\""), spname(player), tbuf1), 
    166165        NA_INTER_HEAR); 
     166} 
     167 
     168/** A comparator for raw dbrefs. 
     169 * This exists because the i_comp function in funlist.c got hairy some time ago. 
     170 * \param a the first element to compare. 
     171 * \param b the second element to compare. 
     172 */ 
     173static int 
     174dbref_comp(const void *a, const void *b) 
     175{ 
     176  const dbref *x = (const dbref *) a; 
     177  const dbref *y = (const dbref *) b; 
     178  return (int) *x - (int) *y; 
    167179} 
    168180 
     
    255267  /* Sort the list of rooms to oemit to so we don't oemit to the same            
    256268   * room twice */ 
    257   qsort((void *) locs, pass[0], sizeof(locs[0]), i_comp); 
     269  qsort((void *) locs, pass[0], sizeof(locs[0]), dbref_comp); 
    258270 
    259271  if (flags & PEMIT_SPOOF) 
  • 1.8.0/src/wiz.c

    r489 r493  
    593593} 
    594594 
    595 /** Parse a command of the format "#dbref command". 
    596  * Split it up and pass it to force handler. 
    597  * We can't hack it up in-place, since we may need the input again. 
    598  * \param player the enactor. 
    599  * \param command command string to parse and pass on. 
    600  * \retval 0 failed to successfully parse. 
    601  * \retval 1 parsed and ran. 
     595/** Parse a force token command, but don't force with it. 
     596 * \verbatim 
     597 * This function hacks up something of the form "#<dbref> <action>", 
     598 * finding the two args, and returns 1 if it's a sensible force, 
     599 * otherwise 0. We know only that the command starts with #. 
     600 * \endverbatim 
     601 * \param command the command to parse. 
     602 * \retval 1 sensible force command 
     603 * \retval 0 command failed (no action given, etc.) 
    602604 */ 
    603605int 
    604 force_by_number(dbref player, char *command) 
     606parse_force(char *command) 
    605607{ 
    606608  char *s; 
    607   char *copy; 
    608   /* It's as easy to learn as your A, B, C's... */ 
    609  
    610   copy = mush_strdup(command, "force_by_number"); 
    611   for (s = copy; *s && !isspace((unsigned char) *s); s++) ; 
    612   if (!*s) { 
    613     mush_free(copy, "force_by_number"); 
    614     return (0); 
    615   } 
    616   *s++ = '\0'; 
    617  
    618   do_force(player, copy, s); 
    619   mush_free(copy, "force_by_number"); 
    620   return (1); 
    621 
     609 
     610  s = command + 1; 
     611  while (*s && !isspace((unsigned char) *s)) { 
     612    if (!isdigit((unsigned char) *s)) 
     613      return 0;         /* #1a is no good */ 
     614    s++; 
     615  } 
     616  if (!*s) 
     617    return 0;           /* dbref with no action is no good */ 
     618  *s = '=';         /* Replace the first space with = so we have #3= <action> */ 
     619  return 1; 
     620
     621 
    622622 
    623623extern struct db_stat_info current_state; 
     
    722722 * This implements @newpassword. 
    723723 * \endverbatim 
    724  * \param player the enactor. 
     724 * \param player the executor. 
     725 * \param cause the enactor. 
    725726 * \param name the name of the player whose password is to be reset. 
    726727 * \param password the new password for the player. 
    727728 */ 
    728729void 
    729 do_newpassword(dbref player, const char *name, const char *password) 
     730do_newpassword(dbref player, dbref cause, 
     731           const char *name, const char *password) 
    730732{ 
    731733  dbref victim; 
     734 
     735  if (!global_eval_context.process_command_port) { 
     736    char pass_eval[BUFFER_LEN]; 
     737    char const *sp; 
     738    char *bp; 
     739 
     740    sp = password; 
     741    bp = pass_eval; 
     742    process_expression(pass_eval, &bp, &sp, player, player, cause, 
     743               PE_DEFAULT, PT_DEFAULT, NULL); 
     744    *bp = '\0'; 
     745    password = pass_eval; 
     746  } 
     747 
    732748  if ((victim = lookup_player(name)) == NOTHING) { 
    733749    notify(player, T("No such player.")); 
  • 1.8.0/win32/msvc6/pennmush.dsp

    r479 r493  
    6666SOURCE="$(InputPath)" 
    6767 
    68 BuildCmds= \ 
    69     IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c \ 
    70     IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c \ 
    71     IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c \ 
    72     IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c \ 
    73     IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf! \ 
    74     IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf \ 
    75     copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h \ 
    76     copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h \ 
    77     echo If any *local.c files failed to build, run build again. \ 
     68"$(ProjDir)\win32-build" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
     69    IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c  
     70    IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c  
     71    IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c  
     72    IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c  
     73    IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf!  
     74    IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf  
     75    IF NOT EXIST $(ProjDir)\game\alias.cnf copy $(ProjDir)\game\aliascnf.dst $(ProjDir)\game\alias.cnf  
     76    IF NOT EXIST $(ProjDir)\game\names.cnf copy $(ProjDir)\game\namescnf.dst $(ProjDir)\game\names.cnf  
     77    IF NOT EXIST $(ProjDir)\game\restrict.cnf copy $(ProjDir)\game\restrictcnf.dst $(ProjDir)\game\restrict.cnf  
     78    IF NOT EXIST $(ProjDir)\hdrs\cmds.h copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h  
     79    IF NOT EXIST $(ProjDir)\\hdrs\funs.h copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h  
     80    echo If any *local.c files failed to build, run build again.  
    7881     
    79  
    80 "$(ProjDir)\src\cmdlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    81    $(BuildCmds) 
    82  
    83 "$(ProjDir)\src\flaglocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    84    $(BuildCmds) 
    85  
    86 "$(ProjDir)\src\funlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    87    $(BuildCmds) 
    88  
    89 "$(ProjDir)\src\local.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    90    $(BuildCmds) 
    91  
    92 "$(ProjDir)\game\mush.cnf" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    93    $(BuildCmds) 
    94  
    95 "$(ProjDir)\hdrs\cmds.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    96    $(BuildCmds) 
    97  
    98 "$(ProjDir)\hdrs\funs.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    99    $(BuildCmds) 
    10082# End Custom Build 
    10183 
     
    131113SOURCE="$(InputPath)" 
    132114 
    133 BuildCmds= \ 
    134     IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c \ 
    135     IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c \ 
    136     IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c \ 
    137     IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c \ 
    138     IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf! \ 
    139     IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf \ 
    140     copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h \ 
    141     copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h \ 
    142     echo If any *local.c files failed to build, run build again. \ 
     115"$(ProjDir)\win32-build" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
     116    IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c  
     117    IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c  
     118    IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c  
     119    IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c  
     120    IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf!  
     121    IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf  
     122    IF NOT EXIST $(ProjDir)\game\alias.cnf copy $(ProjDir)\game\aliascnf.dst $(ProjDir)\game\alias.cnf  
     123    IF NOT EXIST $(ProjDir)\game\names.cnf copy $(ProjDir)\game\namescnf.dst $(ProjDir)\game\names.cnf  
     124    IF NOT EXIST $(ProjDir)\game\restrict.cnf copy $(ProjDir)\game\restrictcnf.dst $(ProjDir)\game\restrict.cnf  
     125    IF NOT EXIST $(ProjDir)\hdrs\cmds.h copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h  
     126    IF NOT EXIST $(ProjDir)\\hdrs\funs.h copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h  
     127    echo If any *local.c files failed to build, run build again.  
    143128     
    144  
    145 "$(ProjDir)\src\cmdlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    146    $(BuildCmds) 
    147  
    148 "$(ProjDir)\src\flaglocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    149    $(BuildCmds) 
    150  
    151 "$(ProjDir)\src\funlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    152    $(BuildCmds) 
    153  
    154 "$(ProjDir)\src\local.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    155    $(BuildCmds) 
    156  
    157 "$(ProjDir)\game\mush.cnf" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    158    $(BuildCmds) 
    159  
    160 "$(ProjDir)\hdrs\cmds.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    161    $(BuildCmds) 
    162  
    163 "$(ProjDir)\hdrs\funs.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    164    $(BuildCmds) 
    165129# End Custom Build 
    166130 
     
    196160SOURCE="$(InputPath)" 
    197161 
    198 BuildCmds= \ 
    199     IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c \ 
    200     IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c \ 
    201     IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c \ 
    202     IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c \ 
    203     IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf! \ 
    204     IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf \ 
    205     copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h \ 
    206     copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h \ 
    207     echo If any *local.c files failed to build, run build again. \ 
     162"$(ProjDir)\win32-build" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
     163    IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c  
     164    IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c  
     165    IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c  
     166    IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c  
     167    IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf!  
     168    IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf  
     169    IF NOT EXIST $(ProjDir)\game\alias.cnf copy $(ProjDir)\game\aliascnf.dst $(ProjDir)\game\alias.cnf  
     170    IF NOT EXIST $(ProjDir)\game\names.cnf copy $(ProjDir)\game\namescnf.dst $(ProjDir)\game\names.cnf  
     171    IF NOT EXIST $(ProjDir)\game\restrict.cnf copy $(ProjDir)\game\restrictcnf.dst $(ProjDir)\game\restrict.cnf  
     172    IF NOT EXIST $(ProjDir)\hdrs\cmds.h copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h  
     173    IF NOT EXIST $(ProjDir)\\hdrs\funs.h copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h  
     174    echo If any *local.c files failed to build, run build again.  
    208175     
    209  
    210 "$(ProjDir)\src\cmdlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    211    $(BuildCmds) 
    212  
    213 "$(ProjDir)\src\flaglocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    214    $(BuildCmds) 
    215  
    216 "$(ProjDir)\src\funlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    217    $(BuildCmds) 
    218  
    219 "$(ProjDir)\src\local.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    220    $(BuildCmds) 
    221  
    222 "$(ProjDir)\game\mush.cnf" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    223    $(BuildCmds) 
    224  
    225 "$(ProjDir)\hdrs\cmds.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    226    $(BuildCmds) 
    227  
    228 "$(ProjDir)\hdrs\funs.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    229    $(BuildCmds) 
    230176# End Custom Build 
    231177 
     
    259205SOURCE="$(InputPath)" 
    260206 
    261 BuildCmds= \ 
    262     IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c \ 
    263     IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c \ 
    264     IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c \ 
    265     IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c \ 
    266     IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf! \ 
    267     IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf \ 
    268     copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h \ 
    269     copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h \ 
    270     echo If any *local.c files failed to build, run build again. \ 
     207"$(ProjDir)\win32-build" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
     208    IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c  
     209    IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c  
     210    IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c  
     211    IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c  
     212    IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf!  
     213    IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf  
     214    IF NOT EXIST $(ProjDir)\game\alias.cnf copy $(ProjDir)\game\aliascnf.dst $(ProjDir)\game\alias.cnf  
     215    IF NOT EXIST $(ProjDir)\game\names.cnf copy $(ProjDir)\game\namescnf.dst $(ProjDir)\game\names.cnf  
     216    IF NOT EXIST $(ProjDir)\game\restrict.cnf copy $(ProjDir)\game\restrictcnf.dst $(ProjDir)\game\restrict.cnf  
     217    IF NOT EXIST $(ProjDir)\hdrs\cmds.h copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h  
     218    IF NOT EXIST $(ProjDir)\\hdrs\funs.h copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h  
     219    echo If any *local.c files failed to build, run build again.  
    271220     
    272  
    273 "$(ProjDir)\src\cmdlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    274    $(BuildCmds) 
    275  
    276 "$(ProjDir)\src\flaglocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    277    $(BuildCmds) 
    278  
    279 "$(ProjDir)\src\funlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    280    $(BuildCmds) 
    281  
    282 "$(ProjDir)\src\local.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    283    $(BuildCmds) 
    284  
    285 "$(ProjDir)\game\mush.cnf" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    286    $(BuildCmds) 
    287  
    288 "$(ProjDir)\hdrs\cmds.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    289    $(BuildCmds) 
    290  
    291 "$(ProjDir)\hdrs\funs.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    292    $(BuildCmds) 
    293221# End Custom Build 
    294222 
     
    324252SOURCE="$(InputPath)" 
    325253 
    326 BuildCmds= \ 
    327     IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c \ 
    328     IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c \ 
    329     IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c \ 
    330     IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c \ 
    331     IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf! \ 
    332     IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf \ 
    333     copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h \ 
    334     copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h \ 
    335     echo If any *local.c files failed to build, run build again. \ 
     254"$(ProjDir)\win32-build" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
     255    IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c  
     256    IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c  
     257    IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c  
     258    IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c  
     259    IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf!  
     260    IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf  
     261    IF NOT EXIST $(ProjDir)\game\alias.cnf copy $(ProjDir)\game\aliascnf.dst $(ProjDir)\game\alias.cnf  
     262    IF NOT EXIST $(ProjDir)\game\names.cnf copy $(ProjDir)\game\namescnf.dst $(ProjDir)\game\names.cnf  
     263    IF NOT EXIST $(ProjDir)\game\restrict.cnf copy $(ProjDir)\game\restrictcnf.dst $(ProjDir)\game\restrict.cnf  
     264    IF NOT EXIST $(ProjDir)\hdrs\cmds.h copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h  
     265    IF NOT EXIST $(ProjDir)\\hdrs\funs.h copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h  
     266    echo If any *local.c files failed to build, run build again.  
    336267     
    337  
    338 "$(ProjDir)\src\cmdlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    339    $(BuildCmds) 
    340  
    341 "$(ProjDir)\src\flaglocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    342    $(BuildCmds) 
    343  
    344 "$(ProjDir)\src\funlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    345    $(BuildCmds) 
    346  
    347 "$(ProjDir)\src\local.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    348    $(BuildCmds) 
    349  
    350 "$(ProjDir)\game\mush.cnf" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    351    $(BuildCmds) 
    352  
    353 "$(ProjDir)\hdrs\cmds.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    354    $(BuildCmds) 
    355  
    356 "$(ProjDir)\hdrs\funs.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    357    $(BuildCmds) 
    358268# End Custom Build 
    359269 
     
    388298SOURCE="$(InputPath)" 
    389299 
    390 BuildCmds= \ 
    391     IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c \ 
    392     IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c \ 
    393     IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c \ 
    394     IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c \ 
    395     IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf! \ 
    396     IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf \ 
    397     copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h \ 
    398     copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h \ 
    399     echo If any *local.c files failed to build, run build again. \ 
     300"$(ProjDir)\win32-build" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
     301    IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c  
     302    IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c  
     303    IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c  
     304    IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c  
     305    IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf!  
     306    IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf  
     307    IF NOT EXIST $(ProjDir)\game\alias.cnf copy $(ProjDir)\game\aliascnf.dst $(ProjDir)\game\alias.cnf  
     308    IF NOT EXIST $(ProjDir)\game\names.cnf copy $(ProjDir)\game\namescnf.dst $(ProjDir)\game\names.cnf  
     309    IF NOT EXIST $(ProjDir)\game\restrict.cnf copy $(ProjDir)\game\restrictcnf.dst $(ProjDir)\game\restrict.cnf  
     310    IF NOT EXIST $(ProjDir)\hdrs\cmds.h copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h  
     311    IF NOT EXIST $(ProjDir)\\hdrs\funs.h copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h  
     312    echo If any *local.c files failed to build, run build again.  
    400313     
    401  
    402 "$(ProjDir)\src\cmdlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    403    $(BuildCmds) 
    404  
    405 "$(ProjDir)\src\flaglocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    406    $(BuildCmds) 
    407  
    408 "$(ProjDir)\src\funlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    409    $(BuildCmds) 
    410  
    411 "$(ProjDir)\src\local.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    412    $(BuildCmds) 
    413  
    414 "$(ProjDir)\game\mush.cnf" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    415    $(BuildCmds) 
    416  
    417 "$(ProjDir)\hdrs\cmds.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    418    $(BuildCmds) 
    419  
    420 "$(ProjDir)\hdrs\funs.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    421    $(BuildCmds) 
    422314# End Custom Build 
    423315 
     
    451343SOURCE="$(InputPath)" 
    452344 
    453 BuildCmds= \ 
    454     IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c \ 
    455     IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c \ 
    456     IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c \ 
    457     IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c \ 
    458     IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf! \ 
    459     IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf \ 
    460     copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h \ 
    461     copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h \ 
    462     echo If any *local.c files failed to build, run build again. \ 
     345"$(ProjDir)\win32-build" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
     346    IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c  
     347    IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c  
     348    IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c  
     349    IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c  
     350    IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf!  
     351    IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf  
     352    IF NOT EXIST $(ProjDir)\game\alias.cnf copy $(ProjDir)\game\aliascnf.dst $(ProjDir)\game\alias.cnf  
     353    IF NOT EXIST $(ProjDir)\game\names.cnf copy $(ProjDir)\game\namescnf.dst $(ProjDir)\game\names.cnf  
     354    IF NOT EXIST $(ProjDir)\game\restrict.cnf copy $(ProjDir)\game\restrictcnf.dst $(ProjDir)\game\restrict.cnf  
     355    IF NOT EXIST $(ProjDir)\hdrs\cmds.h copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h  
     356    IF NOT EXIST $(ProjDir)\\hdrs\funs.h copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h  
     357    echo If any *local.c files failed to build, run build again.  
    463358     
    464  
    465 "$(ProjDir)\src\cmdlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    466    $(BuildCmds) 
    467  
    468 "$(ProjDir)\src\flaglocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    469    $(BuildCmds) 
    470  
    471 "$(ProjDir)\src\funlocal.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    472    $(BuildCmds) 
    473  
    474 "$(ProjDir)\src\local.c" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    475    $(BuildCmds) 
    476  
    477 "$(ProjDir)\game\mush.cnf" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    478    $(BuildCmds) 
    479  
    480 "$(ProjDir)\hdrs\cmds.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    481    $(BuildCmds) 
    482  
    483 "$(ProjDir)\hdrs\funs.h" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
    484    $(BuildCmds) 
    485359# End Custom Build 
    486360 
     
    513387SOURCE="$(InputPath)" 
    514388 
    515 BuildCmds= \ 
    516     IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c \ 
    517     IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c \ 
    518     IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlocal.c \ 
    519     IF NOT EXIST $(ProjDir)\src\local.c copy $(ProjDir)\src\local.dst $(ProjDir)\src\local.c \ 
    520     IF NOT EXIST $(ProjDir)\game\mush.cnf echo Don't forget to customize mush.cnf! \ 
    521     IF NOT EXIST $(ProjDir)\game\mush.cnf copy $(ProjDir)\game\mushcnf.dst $(ProjDir)\game\mush.cnf \ 
    522     copy $(ProjDir)\win32\cmds.h $(ProjDir)\hdrs\cmds.h \ 
    523     copy $(ProjDir)\win32\funs.h $(ProjDir)\hdrs\funs.h \ 
    524     echo If any *local.c files failed to build, run build again. \ 
     389"$(ProjDir)\win32-build" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)" 
     390    IF NOT EXIST $(ProjDir)\src\cmdlocal.c copy $(ProjDir)\src\cmdlocal.dst $(ProjDir)\src\cmdlocal.c  
     391    IF NOT EXIST $(ProjDir)\src\flaglocal.c copy $(ProjDir)\src\flaglocal.dst $(ProjDir)\src\flaglocal.c  
     392    IF NOT EXIST $(ProjDir)\src\funlocal.c copy $(ProjDir)\src\funlocal.dst $(ProjDir)\src\funlo