diff -u rogue24b3/src/.depend rogue24b4/src/.depend --- rogue24b3/src/.depend Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/.depend Sat Jul 14 15:27:37 2001 @@ -59,8 +59,10 @@ tables.h olc.h recycle.h staffcmds.h olc_save.o: olc_save.cpp merc.h types.h conf.h sysdep.h board.h \ tables.h olc.h staffcmds.h -pueblo.o: pueblo.cpp merc.h types.h conf.h sysdep.h board.h interp.h \ - recycle.h tables.h pueblo.h +pedit.o: pedit.cpp merc.h types.h conf.h sysdep.h board.h db.h \ + tables.h lookup.h +pueblo.o: pueblo.cpp merc.h types.h conf.h sysdep.h board.h db.h \ + interp.h recycle.h tables.h pueblo.h quest.o: quest.cpp merc.h types.h conf.h sysdep.h board.h interp.h recycle.o: recycle.cpp merc.h types.h conf.h sysdep.h board.h \ recycle.h @@ -72,6 +74,7 @@ skills.o: skills.cpp merc.h types.h conf.h sysdep.h board.h interp.h \ magic.h lookup.h recycle.h songs.o: songs.cpp merc.h types.h conf.h sysdep.h board.h songs.h +space.o: space.cpp merc.h types.h conf.h sysdep.h board.h space.h special.o: special.cpp merc.h types.h conf.h sysdep.h board.h interp.h \ magic.h string.o: string.cpp merc.h types.h conf.h sysdep.h board.h tables.h \ diff -u rogue24b3/src/Makefile rogue24b4/src/Makefile --- rogue24b3/src/Makefile Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/Makefile Sat Jul 14 15:27:36 2001 @@ -1,35 +1,27 @@ CC = c++ MYFLAGS = -g3 -Wall -Wno-unused -Wno-sign-compare -fno-inline - -PROFILE = - +PROFILE = #-DNOCRYPT -DNOWEBUTILS -DGCC BINDIR = ../src - CFLAGS = -O $(MYFLAGS) $(PROFILE) +PROC = -lcrypt OBJFILES = act_comm.o act_enter.o act_info.o act_move.o act_obj.o act_wiz.o \ alias.o ban.o bit.o board.o characters.o comm.o const.o db.o db2.o \ drunk.o effects.o fight.o flags.o guild.o handler.o healer.o interp.o \ jukebox.o lookup.o magic.o magic2.o mapper.o mem.o mob_cmds.o \ mob_prog.o music.o olc.o olc_act.o olc_mpcode.o olc_save.o pueblo.o \ - quest.o recycle.o save.o scan.o sedit.o skills.o special.o \ - songs.o string.o system.o tables.o update.o vehicles.o webutils.o \ - wizutils.o + pedit.o quest.o recycle.o save.o scan.o sedit.o skills.o special.o \ + space.o songs.o string.o system.o tables.o update.o vehicles.o \ + webutils.o wizutils.o default: $(MAKE) ../src/rogue -all: - $(MAKE) ../src/rogue - rogue: $(MAKE) $(BINDIR)/rogue ../src/rogue : $(OBJFILES) - $(CC) -o $(BINDIR)/rogue $(PROFILE) $(OBJFILES) - -../src/rogue++ :$(OBJFILES) - $(CC) -o $(BINDIR)/rogue++ $(PROFILE) $(OBJFILES) + $(CC) -o $(BINDIR)/rogue $(PROFILE) $(OBJFILES) $(PROC) clean: rm -f *.o diff -u rogue24b3/src/act_comm.cpp rogue24b4/src/act_comm.cpp --- rogue24b3/src/act_comm.cpp Sun Jun 24 14:25:38 2001 +++ rogue24b4/src/act_comm.cpp Sat Jul 14 15:27:37 2001 @@ -84,7 +84,10 @@ break; } - ch->desc->snoop_by = NULL; + if (ch->desc->snoop_by) { + send_to_desc("Your victim has entered privacy mode.\n\r",ch->desc->snoop_by); + ch->desc->snoop_by = NULL; + } act("$n enters privacy mode.", ch, 0, 0, TO_ROOM); STATE(ch->desc) = CON_MENU; ch->Send(MENU); @@ -193,13 +196,14 @@ buf1[0] = '\0'; buf2[0] = '\0'; buf3[0] = '\0'; + argument = one_argument(argument, command); if (command[0] == '\0') { send_to_char("What do you wish to gocial?\n\r", ch); return; } - if ((cmd = social_lookup(command)) == -1) { + if ((cmd = social_lookup_sh(command)) == -1) { send_to_char("What kind of social is that?!?!\n\r",ch); return; } @@ -296,44 +300,44 @@ { "You cannot chat!!\n\r", "chat", "You aren't even on the channel!\n\r", - "`y[`bCHAT`y] $n`y: %s`n", - "`y[`bCHAT`y] -> %s`n" + "`y[`bCHAT`y] $n`y: $t`n", + "`y[`bCHAT`y] -> $t`n" }, { "You cannot sing!!\n\r", "sing", "You aren't even on the channel!\n\r", - "`y[`mMUSIC by $n`y] `m%s`n", - "`y[`mMUSIC`y] -> `w%s`n" + "`y[`mMUSIC by $n`y] `m$t`n", + "`y[`mMUSIC`y] -> `w$t`n" }, { "You cannot congratulate!!\n\r", "congrat", "You aren't even on the channel!\n\r", - "`y[`bCONGRATS`y] $n`g: %s`n", - "`y[`bCONGRATS`y] -> `g%s`n" + "`y[`bCONGRATS`y] $n`g: $t`n", + "`y[`bCONGRATS`y] -> `g$t`n" }, { "You cannot shout!!\n\r", "shout", "Turn off your noshout flag first!\n\r", - "$n `yshouts '%s`y'`n", - "`yYou shout '%s`y'`n" + "$n `yshouts '$t`y'`n", + "`yYou shout '$t`y'`n" }, { "You cannot quest talk!!\n\r", "quest talk", "You aren't even on the channel!\n\r", - "`y[`bQUEST`y] $n`r: %s`n", - "`y[`bQUEST`y] -> `r%s`n" + "`y[`bQUEST`y] $n`r: $t`n", + "`y[`bQUEST`y] -> `r$t`n" }, { "You cannot converse with your clan!\n\r", "clan chat", "You aren't even on the channel!\n\r", - "`y[`bCLAN`y] $n`c: %s`n", - "`y[`bCLAN`y] -> `c%s`n" + "`y[`bCLAN`y] $n`c: $t`n", + "`y[`bCLAN`y] -> `c$t`n" }, { "You cannot broadcast info!\n\r", "broadcast", "", - "`y[`bINFO`y] $n`w: %s`n", - "`y[`bINFO`y] -> `w%s`n" + "`y[`bINFO`y] $n`w: $t`n", + "`y[`bINFO`y] -> `w$t`n" } }; @@ -349,17 +353,18 @@ send_to_char("You aren't even a clan member!\n\r", ch); return; } + if ((subcmd != SCMD_BROADCAST) && (GET_COND(ch, COND_DRUNK) > 10)) argument = makedrunk(argument, ch); + if (!*argument) { ch->Send("Yes, %s, fine, %s we must, but WHAT???\n\r", com_msgs[subcmd][1], com_msgs[subcmd][1]); return; } check_color_string(argument); - sprintf(buf, com_msgs[subcmd][4], argument); - act2(buf, ch, NULL, NULL, TO_CHAR, POS_DEAD); - sprintf(buf, com_msgs[subcmd][3], argument); + + act2(com_msgs[subcmd][4], ch, argument, NULL, TO_CHAR, POS_DEAD); for (d = descriptor_list; d != NULL; d = d->next) { CHAR_DATA *vch = Original(d); @@ -375,7 +380,7 @@ if ((subcmd == SCMD_CLAN) && !is_same_clan(ch, vch)) continue; - act2(buf, ch, NULL, vch, TO_VICT, POS_DEAD); + act2(com_msgs[subcmd][3], ch, argument, vch, TO_VICT, POS_DEAD); } } } @@ -1110,14 +1115,14 @@ ch->max_hit = ch->hit = 5000; ch->max_mana = ch->mana = 5000; ch->max_move = ch->move = 82; - ch->pcdata->security = 9; - ch->staff_level = CAT_CODER; + ch->pcdata->security = 9; + ch->staff_level = CAT_CODER; update_wizlist(ch, ch->level); SET_BIT(STF_FLAGS(ch), 0xFFFFFFFF); - SET_BIT(PLR_FLAGS(ch), PLR_LOADROOM); + ch->exp = exp_per_level(ch,ch->pcdata->points) * ch->level; + SET_BIT(PLR_FLAGS(ch), PLR_LOADROOM | PLR_NOHASSLE | PLR_HOLYLIGHT); GET_LOADROOM(ch) = 1210; save_char_obj(ch); - build_player_index(); } sprintf(buf, "the %s", diff -u rogue24b3/src/act_info.cpp rogue24b4/src/act_info.cpp --- rogue24b3/src/act_info.cpp Sun Jun 24 14:25:36 2001 +++ rogue24b4/src/act_info.cpp Sat Jul 14 15:27:35 2001 @@ -1092,11 +1092,6 @@ if (found_char) { show_char_to_char_1(found_char, ch); - if (ch != found_char) { - if (can_see(found_char, ch)) - act("$n looks at you.", ch, 0, found_char, TO_VICT); - act("$n looks at $N.", ch, 0, found_char, TO_NOTVICT); - } return; } @@ -1104,12 +1099,14 @@ page_to_char(desc, ch); return; } + for (obj = ch->carrying; obj != NULL; obj = obj->next_content) { if ((desc = get_extra_descr(arg, obj->extra_descr)) != NULL) { page_to_char(desc, ch); found = TRUE; } } + for (obj = IN_ROOM(ch)->contents; obj != NULL; obj = obj->next_content) { if (found) break; @@ -1526,8 +1523,10 @@ vict->move, vict->max_move); ch->Send( - "You have %ld gold coins, %ld silver coins (0 gold in bank).\n\r", - vict->gold, vict->silver); + "You have %ld gold coin%s, %ld silver coin%s, %d quest point%s.\n\r", + vict->gold, vict->gold == 1 ? "" : "s", + vict->silver, vict->silver == 1 ? "" : "s", + vict->questpoints, vict->questpoints == 1 ? "" : "s"); sprintf(buf, "You have %d practices and %d training sessions.\n\r", @@ -2740,7 +2739,7 @@ return; } - if ( strcmp( crypt( arg1, ch->pcdata->pwd ), ch->pcdata->pwd ) ) + if (strcmp(CRYPT(arg1, ch->pcdata->pwd), ch->pcdata->pwd)) { WAIT_STATE( ch, 40 ); send_to_char( "Wrong password. Wait 10 seconds.\n\r", ch ); @@ -2757,7 +2756,7 @@ /* * No tilde allowed because of player file format. */ - pwdnew = crypt( arg2, ch->name ); + pwdnew = CRYPT(arg2, ch->name); for ( p = pwdnew; *p != '\0'; p++ ) { if ( *p == '~' ) diff -u rogue24b3/src/act_wiz.cpp rogue24b4/src/act_wiz.cpp --- rogue24b3/src/act_wiz.cpp Sun Jun 24 14:25:36 2001 +++ rogue24b4/src/act_wiz.cpp Sat Jul 14 15:27:36 2001 @@ -1318,6 +1318,7 @@ { "olc", STAFF_OLC }, { "olcadmin", STAFF_OLCADMIN }, { "script", STAFF_SCRIPT }, + { "pmusic", STAFF_PMUSIC }, { "security", STAFF_SECURITY }, { "socials", STAFF_SOCIALS }, { "coder", STAFF_CODER }, @@ -3708,7 +3709,7 @@ vict->perm_stat[STAT_CHA] = value; break; case 6: - if (!(i = class_lookup(val_arg))) { + if ((i = class_lookup(val_arg)) == -1) { send_to_char("That is not a class.\n\r",ch); return FALSE; } @@ -3851,7 +3852,7 @@ } else { char *pwdnew; smash_tilde(val_arg); - pwdnew = crypt(val_arg, vict->name); + pwdnew = CRYPT(val_arg, vict->name); free_string(vict->pcdata->pwd); vict->pcdata->pwd = str_dup(pwdnew); sprintf(output, "Password changed to '%s'.", val_arg); @@ -4531,15 +4532,17 @@ send_to_char("Not at your level!\n\r",ch); return; } + mudlogf(NRM, LVL_STAFF, TRUE, "(GC) %s forced all to %s", RealName(ch), argument); + for ( vch = char_list; vch != NULL; vch = vch_next ) { vch_next = vch->next; - if ( !IS_NPC(vch) && get_trust( vch ) < get_trust( ch ) ) + if (!IS_NPC(vch) && get_trust(vch) < get_trust(ch)) { - act( buf, ch, NULL, vch, TO_VICT ); - interpret( vch, argument ); + act(buf, ch, NULL, vch, TO_VICT); + interpret(vch, argument); } } } diff -u rogue24b3/src/board.cpp rogue24b4/src/board.cpp --- rogue24b3/src/board.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/board.cpp Sat Jul 14 15:27:36 2001 @@ -669,6 +669,80 @@ } } +ACMD(do_nprint) { + NOTE_DATA *note; + OBJ_DATA *obj = NULL; + char buf[4*MAX_STRING_LENGTH]; + + if (IS_NPC(ch)) + return; + + if (!is_number(argument)) { + ch->Send("Print which note?\n\r"); + return; + } + + if (!(note = find_note(ch, ch->pcdata->board, atoi(argument)))) { + ch->Send("There is no such note on this board.\n\r"); + return; + } + + if (str_cmp(ch->name, note->to_list) && (get_trust(ch) < MAX_LEVEL)) { + ch->Send("You are not authorised to print that note.\n\r"); + return; + } + + obj = create_object(get_obj_index(OBJ_VNUM_PROTOPLASM), 0); + obj->cost = 0; + obj->weight = 0; + obj->item_type = ITEM_NOTE; + obj->wear_flags = ITEM_TAKE | ITEM_HOLD; + + free_string(obj->name); + obj->name = str_dup("printout email mail paper letter note"); + + free_string(obj->short_descr); + sprintf(buf, "a printed e-mail from %s", note->sender); + obj->short_descr = str_dup(buf); + + free_string(obj->description); + obj->description = str_dup("someone has left a printout here."); + + free_string(obj->note_descr); + sprintf(buf, + "Date: %s\n\r" + " To: %s\n\r" + "From: %s\n\r\n\r%s", + note->date, note->to_list, + note->sender, note->text); + obj->note_descr = str_dup(buf); + + obj_to_char(obj, ch); + unlink_note(ch->pcdata->board, note); + free_note(note); + ch->Send("Note has been printed and removed from the board.\n\r"); + save_board(ch->pcdata->board); +} + +ACMD(do_nreply) { + NOTE_DATA *note; + + if (IS_NPC(ch)) + return; + + if (!is_number(argument)) { + ch->Send("Reply to which note?\n\r"); + return; + } + + if (!(note = find_note(ch, ch->pcdata->board, atoi(argument)))) { + ch->Send("There is no such note on this board.\n\r"); + return; + } + ch->Send("This is still being worked on.\n\r"); + return; +} + /* Dispatch function for backwards compatibility */ ACMD(do_note) { char arg[MAX_INPUT_LENGTH]; @@ -686,12 +760,12 @@ do_nwrite(ch, argument, 0); else if (!str_prefix(arg, "remove")) do_nremove(ch, argument, 0); - else if (!str_prefix(arg, "purge")) - send_to_char("Obsolete.\n\r",ch); - else if (!str_prefix(arg, "archive")) - send_to_char("Obsolete.\n\r",ch); else if (!str_prefix(arg, "catchup")) do_ncatchup(ch, argument, 0); + else if (!str_prefix(arg, "print")) + do_nprint(ch, argument, 0); + else if (!str_prefix(arg, "reply")) + do_nreply(ch, argument, 0); else do_help(ch, "note", 0); } diff -u rogue24b3/src/characters.cpp rogue24b4/src/characters.cpp --- rogue24b3/src/characters.cpp Sun Jun 24 14:25:43 2001 +++ rogue24b4/src/characters.cpp Sat Jul 14 15:27:40 2001 @@ -23,7 +23,7 @@ if (MOB_FLAGGED(ch, ACT_PET) && ch->master) load_room = StartRoom(ch->master); - if ((load_room == NULL && PLR_FLAGGED(ch, PLR_NEWBIE)) || !ch->level) + if ((load_room == NULL) && !ch->level) load_room = get_room_index(newbie_start_rooms[GET_RACE(ch)]); if ((load_room == NULL) && PLR_FLAGGED(ch, PLR_LOADROOM)) diff -u rogue24b3/src/comm.cpp rogue24b4/src/comm.cpp --- rogue24b3/src/comm.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/comm.cpp Sat Jul 14 15:27:36 2001 @@ -1666,6 +1666,9 @@ int iClass,race,i,weapon; bool fOld; + int get_player_database(); + void set_player_database(int num); + /* Delete leading spaces UNLESS character is writing a note */ if (d->connected != CON_NOTE_TEXT) { @@ -1781,7 +1784,7 @@ write_to_buffer( d, "\n\r", 2 ); #endif - if ( strcmp( crypt( argument, ch->pcdata->pwd ), ch->pcdata->pwd )) + if (strcmp(CRYPT(argument, ch->pcdata->pwd), ch->pcdata->pwd)) { write_to_buffer( d, "Wrong password.\n\r", 0 ); mudlogf(NRM, LVL_STAFF, TRUE, "Bad PW: %s [%s]", RealName(d->character), d->host); @@ -1891,7 +1894,7 @@ return; } - pwdnew = crypt( argument, ch->name ); + pwdnew = CRYPT(argument, ch->name); for ( p = pwdnew; *p != '\0'; p++ ) { if ( *p == '~' ) @@ -1915,7 +1918,7 @@ write_to_buffer( d, "\n\r", 2 ); #endif - if ( strcmp( crypt( argument, ch->pcdata->pwd ), ch->pcdata->pwd ) ) + if (strcmp(CRYPT(argument, ch->pcdata->pwd), ch->pcdata->pwd)) { write_to_buffer( d, "Passwords don't match.\n\rRetype password: ", 0 ); @@ -2125,7 +2128,6 @@ group_add(ch, class_table[ch->Class].default_group, TRUE); group_add(ch, class_table[ch->Class].base_group, TRUE); write_to_buffer(d, - "\n\r" "Please pick a weapon from the following choices:\n\r",0); buf[0] = '\0'; for (i = 0; weapon_table[i].name != NULL; i++) @@ -2304,11 +2306,12 @@ send_to_char("\n\r",ch); STATE(d) = CON_PLAYING; + char_to_room(ch, StartRoom(ch)); if (ch->level == 0) { do_start(ch); do_function(ch, &do_help, "newbie info", 0); + set_player_database(get_player_database()+1); } - char_to_room(ch, StartRoom(ch)); act("$n has entered the game.", ch, NULL, NULL, TO_ROOM); look_at_room(ch, 0); info(ch, 0, "`y[`bINFO`y] %s has entered the game!`n\n\r",ch->name); @@ -2379,7 +2382,7 @@ } break; case CON_CHPWD_GETOLD: - if (strcmp(crypt(argument, ch->pcdata->pwd), ch->pcdata->pwd)) { + if (strcmp(CRYPT(argument, ch->pcdata->pwd), ch->pcdata->pwd)) { send_to_desc(echo_on_str, d); send_to_desc("\n\rIncorrect password.\n\r", d); send_to_desc(MENU, d); @@ -2391,7 +2394,7 @@ break; case CON_DELETE_CONF1: send_to_desc(echo_on_str, d); - if (strcmp(crypt(argument, ch->pcdata->pwd), ch->pcdata->pwd)) { + if (strcmp(CRYPT(argument, ch->pcdata->pwd), ch->pcdata->pwd)) { send_to_desc("\n\rIncorrect password.\n\r", d); send_to_desc(MENU, d); STATE(d) = CON_MENU; @@ -2437,6 +2440,7 @@ bool check_parse_name( char *name ) { int clan; + DESCRIPTOR_DATA *d, *dnext; /* * Reserved words. @@ -2454,6 +2458,15 @@ && !str_cmp(name,clan_table[clan].name)) return FALSE; } + + /* Duped Fags */ + for (d = descriptor_list; d != NULL; d = dnext) { + dnext = d->next; + + if (d->character != CON_PLAYING && d->character != NULL && + d->character->name[0] != '\0' && !str_cmp(d->character->name,name)) + return FALSE; + } /* * Length restrictions. @@ -2489,7 +2502,7 @@ if ( !isalpha(*pc) ) return FALSE; - if ( isupper(*pc)) /* ugly anti-caps hack */ + if (isupper(*pc)) /* ugly anti-caps hack */ { if (adjcaps) cleancaps = TRUE; @@ -2567,7 +2580,7 @@ REMOVE_BIT(PLR_FLAGS(ch), PLR_WRITING); d->connected = CON_PLAYING; if (ch->pcdata->in_progress) - send_to_char ("You have a note in progress. Type NWRITE to continue it.\n\r",ch); + send_to_char ("You have a note in progress. Type 'note write' to continue it.\n\r",ch); } return TRUE; } @@ -2972,6 +2985,7 @@ return "(NULL)"; } + void perform_act(const char *orig, CHAR_DATA *ch, const void *arg1, const void *arg2, CHAR_DATA *to, bool Relation, bool RName) { @@ -3062,8 +3076,10 @@ } ++str; - while ((*point = *i) != '\0') - point++, i++; +// while ((*point = *i) != '\0') +// point++, i++; + while ((*point = *(i++))) + point++; if (relation != RELATION_NONE) { *point++ = '`'; diff -u rogue24b3/src/conf.h rogue24b4/src/conf.h --- rogue24b3/src/conf.h Sun Jun 24 14:25:38 2001 +++ rogue24b4/src/conf.h Sat Jul 14 15:27:37 2001 @@ -3,6 +3,7 @@ #define STDC_HEADERS 1 #define TIME_WITH_SYS_TIME 1 #define HAVE_CRYPT 1 +#define HAVE_CRYPT_H 1 #define HAVE_RANDOM 1 #define HAVE_ARPA_TELNET_H 1 #define HAVE_ASSERT_H 1 @@ -17,4 +18,3 @@ #define HAVE_UNISTD_H 1 #define HAVE_SYS_ERRNO_H 1 #define HAVE_SIGNAL_H 1 -#define NOCRYPT diff -u rogue24b3/src/const.cpp rogue24b4/src/const.cpp --- rogue24b3/src/const.cpp Sun Jun 24 14:27:14 2001 +++ rogue24b4/src/const.cpp Sat Jul 14 15:27:37 2001 @@ -30,7 +30,7 @@ #include "interp.h" char roguemud_version[] = { - "Rogue MUD: Version 2.4b3\n\r" + "Rogue MUD: Version 2.4b4\n\r" "Compiled on " __DATE__ " at " __TIME__ ".\n\r" }; diff -u rogue24b3/src/db.cpp rogue24b4/src/db.cpp --- rogue24b3/src/db.cpp Sun Jun 24 14:25:36 2001 +++ rogue24b4/src/db.cpp Sat Jul 14 15:27:36 2001 @@ -419,6 +419,8 @@ load_bans(); log("Reading music list."); load_songs(); + log("Reading pmusic table."); + load_pmusic_table(); log("Reading wizlist system."); load_wizlist(); log("Reading system data."); @@ -1559,8 +1561,6 @@ } } } - -#define PLR_INDEX_FILE DATA_DIR "plr_index" void build_player_index( void ) { diff -u rogue24b3/src/db.h rogue24b4/src/db.h --- rogue24b3/src/db.h Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/db.h Sat Jul 14 15:27:36 2001 @@ -40,6 +40,7 @@ /* from db2.c */ extern int maxSocial; +extern int maxPSong; /* conversion from db.h */ void convert_mob(MOB_INDEX_DATA *mob); diff -u rogue24b3/src/fight.cpp rogue24b4/src/fight.cpp --- rogue24b3/src/fight.cpp Sun Jun 24 14:25:36 2001 +++ rogue24b4/src/fight.cpp Sat Jul 14 15:27:36 2001 @@ -2067,14 +2067,16 @@ { if (ch == victim) { - sprintf( buf1, "$n %s $melf%c",vp,punct); - sprintf( buf2, "You %s yourself%c",vs,punct); + sprintf(buf1, "$n %s $melf%c",vp,punct); + sprintf(buf2, "You %s yourself%c",vs,punct); } else { - sprintf( buf1, "$n %s $N%c", vp, punct ); - sprintf( buf2, "You %s $N%c", vs, punct ); - sprintf( buf3, "$n %s you%c", vp, punct ); + sprintf(buf1, "$n %s $N%c", vp, punct); + sprintf(buf2, "%sYou %s $N%c", + PLR_FLAGGED(ch, PLR_AUTODAMAGE) ? mesg : "", vs, punct); + sprintf(buf3, "%s$n %s you%c", + PLR_FLAGGED(victim, PLR_AUTODAMAGE) ? mesg : "", vp, punct); } } else @@ -2110,31 +2112,29 @@ if (ch == victim) { sprintf(buf1, "$n's %s %s $m%c",attack,vp,punct); - sprintf(buf2, "Your %s %s you%c",attack,vp,punct); + sprintf(buf2, "%sYour %s %s you%c", + PLR_FLAGGED(ch, PLR_AUTODAMAGE) ? mesg : "", + attack,vp,punct); } else { sprintf(buf1, "$n's %s %s $N%c", attack, vp, punct); sprintf(buf2, "%sYour %s %s $N%c", - PLR_FLAGGED(ch, PLR_AUTODAMAGE) ? mesg : "", - attack, vp, punct); + PLR_FLAGGED(ch, PLR_AUTODAMAGE) ? mesg : "", + attack, vp, punct); sprintf(buf3, "%s$n's %s %s you%c", - PLR_FLAGGED(victim, PLR_AUTODAMAGE) ? mesg : "", - attack, vp, punct); + PLR_FLAGGED(victim, PLR_AUTODAMAGE) ? mesg : "", + attack, vp, punct); } } } - if (ch == victim) - { - act(buf1,ch,NULL,NULL,TO_ROOM); - act(buf2,ch,NULL,NULL,TO_CHAR); + if (ch == victim) { + act(buf1, ch, NULL, NULL, TO_ROOM); + act(buf2, ch, NULL, NULL, TO_CHAR); + } else { + act(buf1, ch, NULL, victim, TO_NOTVICT); + act(buf2, ch, NULL, victim, TO_CHAR); + act(buf3, ch, NULL, victim, TO_VICT); } - else - { - act( buf1, ch, NULL, victim, TO_NOTVICT ); - act( buf2, ch, NULL, victim, TO_CHAR ); - act( buf3, ch, NULL, victim, TO_VICT ); - } - return; } diff -u rogue24b3/src/handler.cpp rogue24b4/src/handler.cpp --- rogue24b3/src/handler.cpp Sun Jun 24 14:25:38 2001 +++ rogue24b4/src/handler.cpp Sat Jul 14 15:27:37 2001 @@ -216,7 +216,7 @@ { int pclass; - for ( pclass = 0; pclass < MAX_CLASS; pclass++) + for (pclass = 0; pclass < MAX_CLASS; pclass++) { if (LOWER(name[0]) == LOWER(class_table[pclass].name[0]) && !str_prefix( name,class_table[pclass].name)) @@ -1249,7 +1249,7 @@ *paf_new = *paf; - VALIDATE(paf); /* in case we missed it when we set up paf */ + VALIDATE(paf_new); /* in case we missed it when we set up paf */ paf_new->next = ch->affected; ch->affected = paf_new; @@ -1266,7 +1266,7 @@ *paf_new = *paf; - VALIDATE(paf); /* in case we missed it when we set up paf */ + VALIDATE(paf_new); /* in case we missed it when we set up paf */ paf_new->next = obj->affected; obj->affected = paf_new; @@ -3000,6 +3000,7 @@ if (staff_flags & STAFF_CODER ) strcat(buf, " CODER"); if (staff_flags & STAFF_ASSOCIATE)strcat(buf, " ASSOCIATE"); if (staff_flags & STAFF_TRAINEE ) strcat(buf, " TRAINEE"); + if (staff_flags & STAFF_PMUSIC ) strcat(buf, " PMUSIC"); return ( buf[0] != '\0' ) ? buf+1 : str_dup("none"); } diff -u rogue24b3/src/interp.cpp rogue24b4/src/interp.cpp --- rogue24b3/src/interp.cpp Sun Jun 24 14:25:38 2001 +++ rogue24b4/src/interp.cpp Sat Jul 14 15:27:37 2001 @@ -155,7 +155,7 @@ { "combine", do_gen_tog, POS_DEAD, 0, 1, 0, SCMD_COMBINE }, { "compact", do_gen_tog, POS_DEAD, 0, 1, 0, SCMD_COMPACT }, { "description", do_gen_menu, POS_DEAD, 0, 1 }, - { "delete", do_olc_delete, POS_DEAD, -1, 1, STAFF_OLCADMIN }, + { "delete", do_gen_menu, POS_DEAD, 0, 1 }, { "donate", do_donate, POS_RESTING, 0, 1 }, { "nofollow", do_gen_tog, POS_DEAD, 0, 1, 0, SCMD_NOFOLLOW }, { "nopueblo", do_gen_tog, POS_DEAD, 0, 1, 0, SCMD_NOPUEBLO }, @@ -347,7 +347,7 @@ { "rmessage", do_rmsg, POS_DEAD, -1, 1, STAFF_CHAR }, { "gecho", do_echo, POS_DEAD, -1, 1, STAFF_GAME }, { "holylight", do_gen_tog, POS_DEAD, -1, 1, STAFF_GEN | STAFF_ASSOCIATE | STAFF_TRAINEE, SCMD_HOLYLIGHT }, - { "nohassle", do_gen_tog, POS_DEAD, -1, 1, STAFF_GEN, SCMD_NOHASSLE }, + { "nohassle", do_gen_tog, POS_DEAD, -1, 1, STAFF_GEN | STAFF_ASSOCIATE | STAFF_TRAINEE, SCMD_NOHASSLE }, { "incognito", do_incognito, POS_DEAD, -1, 1, STAFF_GEN }, { "invis", do_invis, POS_DEAD, -1, 0, STAFF_GEN | STAFF_ASSOCIATE | STAFF_TRAINEE }, { "log", do_log, POS_DEAD, -1, 1, STAFF_SECADMIN }, @@ -371,7 +371,7 @@ { "clone", do_clone, POS_DEAD, -1, 1, STAFF_GEN }, { "immtalk", do_immtalk, POS_DEAD, -1, 1, STAFF_GEN | STAFF_ASSOCIATE | STAFF_TRAINEE}, - { "imotd", do_gen_ps, POS_DEAD, -1, 1, STAFF_GEN, SCMD_IMOTD }, + { "imotd", do_gen_ps, POS_DEAD, -1, 1, STAFF_GEN, SCMD_IMOTD }, { ";", do_immtalk, POS_DEAD, -1, 0, STAFF_GEN | STAFF_TRAINEE | STAFF_ASSOCIATE}, { "smote", do_smote, POS_DEAD, -1, 1, STAFF_GEN }, { "prefix", do_prefix, POS_DEAD, -1, 1, STAFF_GEN }, @@ -383,6 +383,7 @@ * OLC */ { "olc", do_olclist, POS_DEAD, -1, 1, STAFF_OLC }, + { "olcdelete", do_olc_delete, POS_DEAD, -1, 1, STAFF_OLCADMIN }, { "path", do_path, POS_DEAD, -1, 1, STAFF_GAME }, { "immtitle", do_immtitle, POS_DEAD, -1, 1, STAFF_ADMIN }, { "immcurse", do_immcurse, POS_DEAD, -1, 1, STAFF_ADMIN }, @@ -402,6 +403,7 @@ { "hedit", do_hedit, POS_DEAD, -1, 1, STAFF_HELP }, { "gedit", do_gedit, POS_DEAD, -1, 1, STAFF_CLANS }, { "sedit", do_sedit, POS_DEAD, -1, 1, STAFF_SOCIALS }, + { "pedit", do_pedit, POS_DEAD, -1, 1, STAFF_PMUSIC }, /* * End of list. */ diff -u rogue24b3/src/interp.h rogue24b4/src/interp.h --- rogue24b3/src/interp.h Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/interp.h Sat Jul 14 15:27:36 2001 @@ -35,11 +35,11 @@ bool is_abbrev(const char *arg1, const char *arg2); // EGCS Does not like this, GCC requires it. -/* +#if defined(GCC) inline void skip_spaces(char *&string) { return skip_spaces(const_cast(string)); } -*/ +#endif /* for command types */ #define ML MAX_LEVEL /* implementor */ @@ -425,6 +425,7 @@ DECLARE_DO_FUN( do_hedit ); DECLARE_DO_FUN( do_gedit ); DECLARE_DO_FUN( do_sedit ); +DECLARE_DO_FUN( do_pedit ); DECLARE_DO_FUN( save_guilds ); // Pueblo DECLARE_DO_FUN( do_pstop ); diff -u rogue24b3/src/merc.h rogue24b4/src/merc.h --- rogue24b3/src/merc.h Sun Jun 24 14:26:25 2001 +++ rogue24b4/src/merc.h Sat Jul 14 15:28:10 2001 @@ -118,6 +118,7 @@ typedef struct social_type SOCIAL_DATA; typedef struct wizlist_data WIZLIST_DATA; typedef struct race_type RACE_DATA; +typedef struct pmusic_type PMUSIC_DATA; /* * Function types. @@ -1464,7 +1465,7 @@ #define PLR_MSP (1 << 18) #define PLR_PERMIT (1 << 19) #define PLR_LOG (1 << 20) -#define PLR_NEWBIE (1 << 21) +#define PLR_UNUSED21 (1 << 21) #define PLR_FREEZE (1 << 22) #define PLR_THIEF (1 << 23) #define PLR_KILLER (1 << 24) @@ -2273,6 +2274,16 @@ #define CHAR_WATCHING(ch) ((ch)->watching) /* + * Structure for a song in the pmusic table. + */ +struct pmusic_type +{ + char * name; + char * fname; + char * locurl; +}; + +/* * Structure for a social in the socials table. */ struct social_type @@ -2314,6 +2325,7 @@ extern const struct song_type song_table [MAX_SONGS]; extern const struct group_type group_table [MAX_GROUP]; extern struct social_type *social_table; +extern struct pmusic_type *pmusic_table; extern struct clan_type clan_table [MAX_CLAN]; extern char * const title_table [MAX_CLASS] [MAX_LEVEL+1] @@ -2353,22 +2365,9 @@ * These are all very standard library functions, * but some systems have incomplete or non-ansi header files. */ -#if defined(_AIX) -char * crypt args( ( const char *key, const char *salt ) ); -#endif - #if defined(apollo) int atoi args( ( const char *string ) ); void * calloc args( ( unsigned nelem, size_t size ) ); -char * crypt args( ( const char *key, const char *salt ) ); -#endif - -#if defined(hpux) -char * crypt args( ( const char *key, const char *salt ) ); -#endif - -#if defined(linux) -char * crypt args( ( const char *key, const char *salt ) ); #endif #if defined(macintosh) @@ -2378,10 +2377,6 @@ #endif #endif -#if defined(MIPS_OS) -char * crypt args( ( const char *key, const char *salt ) ); -#endif - #if defined(MSDOS) #define NOCRYPT #if defined(unix) @@ -2389,12 +2384,7 @@ #endif #endif -#if defined(NeXT) -char * crypt args( ( const char *key, const char *salt ) ); -#endif - #if defined(sequent) -char * crypt args( ( const char *key, const char *salt ) ); int fclose args( ( FILE *stream ) ); int fprintf args( ( FILE *stream, const char *format, ... ) ); int fread args( ( void *ptr, int size, int n, FILE *stream ) ); @@ -2404,7 +2394,6 @@ #endif #if defined(sun) -char * crypt args( ( const char *key, const char *salt ) ); int fclose args( ( FILE *stream ) ); int fprintf args( ( FILE *stream, const char *format, ... ) ); #if defined(SYSV) @@ -2418,10 +2407,6 @@ int ungetc args( ( int c, FILE *stream ) ); #endif -#if defined(ultrix) -char * crypt args( ( const char *key, const char *salt ) ); -#endif - /* @@ -2431,8 +2416,10 @@ * Turn on NOCRYPT to keep passwords in plain text. */ -#if defined(NOCRYPT) -#define crypt(s1, s2) (s1) +#if defined(NOCRYPT) || !defined(HAVE_CRYPT) +#define CRYPT(a,b) (a) +#else +#define CRYPT(a,b) ((char *) crypt((a),(b))) #endif @@ -2467,8 +2454,8 @@ #define NULL_FILE "/dev/null" /* To reserve one stream */ #endif +#define AREA_LIST "area.lst" #define DATA_DIR "../data/" -#define AREA_LIST "area.lst" /* List of areas */ #define IDEA_FILE "../log/ideas.txt" /* idea logs */ #define BUG_FILE "../log/bugs.txt" /* For 'bug' and bug() */ #define TYPO_FILE "../log/typos.txt" /* For 'typo' */ @@ -2476,13 +2463,16 @@ #define BAN_FILE DATA_DIR "ban.txt" #define MUSIC_FILE DATA_DIR "music.txt" #define SOCIAL_FILE DATA_DIR "social.txt" +#define PMUSIC_FILE DATA_DIR "pmusic.txt" // Pueblo Music stuff.. #define WIZ_FILE DATA_DIR "wizlist.txt" #define RACE_FILE DATA_DIR "races.txt" +#define PLR_INDEX_FILE DATA_DIR "pfiles.txt" /* * Our function prototypes. * One big lump ... this is every function in Merc. */ +#define PMD PMUSIC_DATA #define SD SOCIAL_DATA #define CD CHAR_DATA #define MID MOB_INDEX_DATA @@ -2729,6 +2719,7 @@ CD * get_char_world args( (CHAR_DATA *ch, char *argument) ); CD * get_pc_world args( (CHAR_DATA *ch, char *argument) ); SD * get_social_data args( (char *argument) ); +PMD * get_pmusic_data args( (char *argument) ); OD * get_obj_list_type args( (int type, OBJ_DATA *list) ); OD * get_obj_type args( (OBJ_INDEX_DATA *pObjIndexData) ); OD * get_obj_list args( (CHAR_DATA *ch, char *argument, @@ -2847,6 +2838,10 @@ void load_social_table(); void save_social_table(); +/* pedit.cpp */ +void load_pmusic_table(); +void save_pmusic_table(); + /* olc.c */ bool run_olc_editor args( ( DESCRIPTOR_DATA *d ) ); char *olc_ed_name args( ( CHAR_DATA *ch ) ); @@ -2863,6 +2858,7 @@ int item_lookup args( ( const char *name ) ); int liq_lookup args( ( const char *name ) ); +#undef PMD #undef SD #undef CD #undef MID diff -u rogue24b3/src/olc.cpp rogue24b4/src/olc.cpp --- rogue24b3/src/olc.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/olc.cpp Sat Jul 14 15:27:36 2001 @@ -23,6 +23,7 @@ */ AREA_DATA *get_area_data args( ( int vnum ) ); bool SOCIAL_CHANGED = FALSE; +bool PMUSIC_CHANGED = FALSE; /* Executed from comm.c. Minimizes compiling when changes are made. */ bool run_olc_editor( DESCRIPTOR_DATA *d ) @@ -53,6 +54,9 @@ case ED_SOCIAL: sedit( d->character, d->incomm ); break; + case ED_PMUSIC: + pedit( d->character, d->incomm ); + break; default: return FALSE; } @@ -92,6 +96,9 @@ case ED_SOCIAL: sprintf( buf, "SEdit" ); break; + case ED_PMUSIC: + sprintf( buf, "PEdit" ); + break; default: sprintf( buf, " " ); break; @@ -106,6 +113,12 @@ buf[0] = '\0'; switch (ch->desc->editor) { + case ED_PMUSIC: { + PMUSIC_DATA *pMusic; + pMusic = (PMUSIC_DATA *)ch->desc->pEdit; + sprintf(buf, "%s", pMusic->name); + break; + } case ED_SOCIAL: { SOCIAL_DATA *pSocial; pSocial = (SOCIAL_DATA *)ch->desc->pEdit; @@ -154,11 +167,6 @@ sprintf(buf, "%s", pMprog->name); break; } - case ED_RACE: { - RACE_DATA *pRace = (RACE_DATA *)ch->desc->pEdit; - sprintf(buf, "%s", pRace->name); - break; - } default: sprintf(buf, "ERROR"); break; @@ -173,6 +181,12 @@ buf[0] = '\0'; switch (ch->desc->editor) { + case ED_PMUSIC: { + PMUSIC_DATA *pMusic; + pMusic = (PMUSIC_DATA *)ch->desc->pEdit; + sprintf(buf, "%d", pmusic_lookup(pMusic->name)); + break; + } case ED_SOCIAL: { SOCIAL_DATA *pSocial; pSocial = (SOCIAL_DATA *)ch->desc->pEdit; @@ -221,11 +235,6 @@ sprintf(buf, "%d", pMprog ? pMprog->vnum : 0); break; } - case ED_RACE: { - RACE_DATA *pRace = (RACE_DATA *)ch->desc->pEdit; - sprintf(buf, "%d", race_lookup(pRace->name)); - break; - } default: sprintf(buf, " "); break; @@ -300,6 +309,9 @@ case ED_SOCIAL: show_olc_cmds( ch, sedit_table ); break; + case ED_PMUSIC: + show_olc_cmds( ch, pedit_table ); + break; } return FALSE; @@ -474,6 +486,20 @@ { NULL, 0, } }; +// PMusic stuff... +const struct olc_cmd_type pedit_table[] = +{ + { "commands", show_commands }, + { "create", pedit_create }, + { "delete", pedit_delete }, + { "file", pedit_file }, + { "name", pedit_name }, + { "url", pedit_locurl }, + { "show", pedit_show }, + { "?", show_help }, + { NULL, 0 } +}; + /* Social Editor - Mendanbar */ const struct olc_cmd_type sedit_table[] = { @@ -853,6 +879,42 @@ return; } +/* PMusic Editor - Mendanbar */ +void pedit(CHAR_DATA *ch, char *argument) +{ + int cmd = 0; + char arg[MAX_INPUT_LENGTH], command[MAX_INPUT_LENGTH]; + + smash_tilde(argument); + strcpy(arg, argument); + argument = one_argument(argument, command); + + if (!STF_FLAGGED(ch, STAFF_PMUSIC)) { + ch->Send("PEdit: Insufficient security to modify pueblo music.\n\r"); + edit_done(ch); + } + + if (!str_cmp(command, "done")) { + edit_done(ch); + return; + } + + if (!*command) { + pedit_show(ch, argument); + return; + } + + for (cmd = 0; pedit_table[cmd].name != NULL; cmd++) { + if (!str_prefix(command, pedit_table[cmd].name)) { + if ((*pedit_table[cmd].olc_fun) (ch, argument)) + PMUSIC_CHANGED = TRUE; + return; + } + } + interpret(ch, arg); + return; +} + /* Social Editor - Mendanbar */ void sedit(CHAR_DATA *ch, char *argument) { @@ -944,6 +1006,7 @@ { "mpcode", do_mpedit }, { "help", do_hedit }, { "social", do_sedit }, + { "pmusic", do_pedit }, { NULL, 0, } }; @@ -1164,6 +1227,10 @@ strcat(buf, " - Socials\n\r"); count++; } + if (PMUSIC_CHANGED) { + strcat(buf, " - Pueblo Music\n\r"); + count++; + } if (!count) send_to_char("The database is up to date.\r\n", ch); else { @@ -1179,6 +1246,11 @@ char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; + if (!STF_FLAGGED(ch, STAFF_OLCADMIN)) { + ch->Send("You do not have permission to use olc delete.\n\r"); + return; + } + argument = one_argument(argument, arg1); argument = one_argument(argument, arg2); @@ -1612,6 +1684,67 @@ } send_to_char( "MEdit: There is no default mobile to edit.\n\r", ch ); + return; +} + +/* PMusic Editor - Mendanbar */ +ACMD(do_pedit) { + PMUSIC_DATA *pMusic; + char arg1[MAX_INPUT_LENGTH]; + + argument = one_argument(argument, arg1); + + if (IS_NPC(ch)) + return; + + if (!STF_FLAGGED(ch, STAFF_PMUSIC)) { + ch->Send("Insuficient security to edit socials.\n\r"); + return; + } + + if (!str_cmp(arg1, "show")) { + if (argument[0] == '\0') { + ch->Send("Syntax: pedit show [song]\n\r"); + return; + } + pedit_show(ch, argument); + return; + } + + if (!str_cmp(arg1, "create")) { + if (!*argument) { + ch->Send("Syntax: pedit create [song]\n\r"); + return; + } + if (pedit_create(ch, argument)) { + PMUSIC_CHANGED = TRUE; + ch->desc->editor = ED_PMUSIC; + } + return; + } + + if (!str_cmp(arg1, "delete")) { + if (!*argument) { + ch->Send("Syntax: pedit delete [song]\n\r"); + return; + } + if (pedit_delete(ch, argument)) + PMUSIC_CHANGED = TRUE; + return; + } + + if ((pMusic = get_pmusic_data(arg1)) != NULL) { + ch->desc->pEdit = (void *)pMusic; + ch->desc->editor= ED_PMUSIC; + return; + } + + if (pMusic == NULL && arg1[0] != '\0') { + ch->Send("That song does not exist!\n\r"); + return; + } + + ch->Send("PEdit: There is no default song to edit.\n\r"); return; } diff -u rogue24b3/src/olc.h rogue24b4/src/olc.h --- rogue24b3/src/olc.h Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/olc.h Sat Jul 14 15:27:36 2001 @@ -48,7 +48,9 @@ DECLARE_SPELL_FUN( spell_null ); -int social_lookup (const char *name); +int social_lookup (const char *name); +int social_lookup_sh (const char *name); +int pmusic_lookup (const char *name); /* * Connected states for editor. @@ -62,7 +64,7 @@ #define ED_HELP 6 #define ED_GUILD 7 #define ED_SOCIAL 8 -#define ED_RACE 9 +#define ED_PMUSIC 9 /* * Interpreter Prototypes @@ -75,6 +77,7 @@ void mpedit args( ( CHAR_DATA *ch, char *argument ) ); void hedit args( ( CHAR_DATA *ch, char *argument ) ); void sedit args( ( CHAR_DATA *ch, char *argument ) ); +void pedit args( ( CHAR_DATA *ch, char *argument ) ); /* * OLC Constants @@ -130,6 +133,7 @@ extern const struct olc_cmd_type hedit_table[]; extern const struct olc_cmd_type sedit_table[]; extern const struct olc_cmd_type mpedit_table[]; +extern const struct olc_cmd_type pedit_table[]; /* * Editor Commands. @@ -142,6 +146,7 @@ DECLARE_DO_FUN( do_mpedit ); DECLARE_DO_FUN( do_hedit ); DECLARE_DO_FUN( do_sedit ); +DECLARE_DO_FUN( do_pedit ); /* @@ -304,6 +309,14 @@ DECLARE_OLC_FUN( hedit_delete ); DECLARE_OLC_FUN( hedit_copy ); +/* PMusic Editor - Mendanbar */ +DECLARE_OLC_FUN( pedit_show ); +DECLARE_OLC_FUN( pedit_create ); +DECLARE_OLC_FUN( pedit_delete ); +DECLARE_OLC_FUN( pedit_file ); +DECLARE_OLC_FUN( pedit_name ); +DECLARE_OLC_FUN( pedit_locurl ); + /* Social Editor - Mendanbar */ DECLARE_OLC_FUN( sedit_show ); DECLARE_OLC_FUN( sedit_create ); @@ -329,6 +342,7 @@ #define EDIT_HELP(ch, Help) (Help = (HELP_DATA *)ch->desc->pEdit) #define EDIT_SOCIAL(ch, iSoc) (iSoc = (SOCIAL_DATA *)ch->desc->pEdit) #define EDIT_GUILD(ch, Clan) (Clan = (CLAN_DATA *)ch->desc->pEdit) +#define EDIT_PMUSIC(ch, pMus) (pMus = (PMUSIC_DATA *)ch->desc->pEdit) /* * Prototypes diff -u rogue24b3/src/olc_act.cpp rogue24b4/src/olc_act.cpp --- rogue24b3/src/olc_act.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/olc_act.cpp Sat Jul 14 15:27:36 2001 @@ -29,6 +29,7 @@ #define HEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) #define GEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) #define SEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) +#define PEDIT( fun ) bool fun( CHAR_DATA *ch, char *argument ) struct olc_help_type { @@ -5229,6 +5230,160 @@ return TRUE; } +#define ISNULL(str) (*(str) ? (str) : "") + +PEDIT(pedit_show) +{ + PMUSIC_DATA *pMusic; + char arg[MAX_STRING_LENGTH]; + + argument = one_argument(argument, arg); + + if (!*arg) + EDIT_PMUSIC(ch, pMusic); + else + pMusic = get_pmusic_data(arg); + + if (pMusic == NULL) { + ch->Send("That song does not exist.\n\r"); + return FALSE; + } + + ch->Send( +#if defined(CLEAR_SCREEN) + "\x1B[H\x1B[J" +#endif + "Name : %s\n\r" + "File Name : %s\n\r" + "Location : %s\n\r", + ISNULL(pMusic->name), + ISNULL(pMusic->fname), + ISNULL(pMusic->locurl)); + + return TRUE; +} + +PEDIT(pedit_delete) +{ + int i, j; + PMUSIC_DATA *pMusic; + PMUSIC_DATA *new_table = (PMUSIC_DATA *)malloc(sizeof(struct pmusic_type) * maxPSong); + + if (!new_table) { + ch->Send("Memory allocation failed. Brace for impact...\n\r"); + return FALSE; + } + + if (*argument) + EDIT_PMUSIC(ch, pMusic); + else + pMusic = get_pmusic_data(argument); + + if (pMusic == NULL) { + ch->Send("No such song exists.\n\r"); + return FALSE; + } + + for (i=0, j=0; i < maxPSong; i++) { + if (&pmusic_table[i] != pMusic) { + new_table[j] = pmusic_table[i]; + j++; + } + } + + free(pmusic_table); + pmusic_table = new_table; + maxPSong--; + ch->desc->pEdit = NULL; + ch->desc->editor = 0; + ch->Send("Song deleted.\n\r"); + return TRUE; +} + +PEDIT(pedit_create) +{ + int iMusic; + PMUSIC_DATA *pMusic; + char arg[MAX_INPUT_LENGTH]; + struct pmusic_type *new_table; + + argument = one_argument(argument, arg); + + if (!*arg) { + ch->Send("Syntax: pedit create [song]\n\r"); + return FALSE; + } + if ((iMusic = pmusic_lookup(arg)) != -1) { + ch->Send("A song with that name already exists.\n\r"); + return FALSE; + } + maxPSong++; + new_table = (PMUSIC_DATA *)realloc(pmusic_table, sizeof(struct pmusic_type) * (maxPSong+1)); + + if (!new_table) { + ch->Send("Memory allocation failed. Brace for impact...\n\r"); + return FALSE; + } + + pmusic_table = new_table; + pmusic_table[maxPSong].name = str_dup(""); + pmusic_table[maxPSong-1].name = str_dup(arg); + pmusic_table[maxPSong-1].fname = str_dup(""); + pmusic_table[maxPSong-1].locurl = str_dup(""); + + pMusic = get_pmusic_data(arg); + ch->desc->pEdit = (void *)pMusic; + ch->Send("Song created.\n\r"); + return TRUE; +} + +PEDIT(pedit_name) +{ + PMUSIC_DATA *pMusic; + EDIT_PMUSIC(ch, pMusic); + + if (pMusic == NULL) { + ch->Send("No song to edit.\n\r"); + return FALSE; + } + + free_string(pMusic->name); + pMusic->name = str_dup(argument); + ch->Send("Name changed.\n\r"); + return TRUE; +} + +PEDIT(pedit_file) +{ + PMUSIC_DATA *pMusic; + EDIT_PMUSIC(ch, pMusic); + + if (pMusic == NULL) { + ch->Send("No song to edit.\n\r"); + return FALSE; + } + free_string(pMusic->fname); + pMusic->fname = str_dup(argument); + ch->Send("File name changed.\n\r"); + return TRUE; +} + +PEDIT(pedit_locurl) +{ + PMUSIC_DATA *pMusic; + EDIT_PMUSIC(ch, pMusic); + + if (pMusic == NULL) { + ch->Send("No song to edit.\n\r"); + return FALSE; + } + + free_string(pMusic->locurl); + pMusic->locurl = str_dup(argument); + ch->Send("Location changed.\n\r"); + return TRUE; +} + SEDIT(sedit_show) { SOCIAL_DATA *pSocial; @@ -5243,7 +5398,7 @@ send_to_char("That social does not exist.\n\r", ch); return FALSE; } - #define ISNULL(str) (*(str) ? (str) : "") + ch->Send( #if defined(CLEAR_SCREEN) "\x1B[H\x1B[J" diff -u rogue24b3/src/olc_save.cpp rogue24b4/src/olc_save.cpp --- rogue24b3/src/olc_save.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/olc_save.cpp Sat Jul 14 15:27:36 2001 @@ -26,6 +26,7 @@ #define DIF(a,b) (~((~a)|(b))) extern bool SOCIAL_CHANGED; +extern bool PMUSIC_CHANGED; /* * Verbose writes reset data in plain english into the comments @@ -1225,6 +1226,14 @@ save_social_table(); SOCIAL_CHANGED = FALSE; send_to_char("Socials Saved.\n\r", ch); + return; + } + + if (!str_prefix(arg1, "pmusic")) + { + save_pmusic_table(); + PMUSIC_CHANGED = FALSE; + ch->Send("Songs Saved.\n\r"); return; } Only in rogue24b4/src/: pedit.cpp diff -u rogue24b3/src/pueblo.cpp rogue24b4/src/pueblo.cpp --- rogue24b3/src/pueblo.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/pueblo.cpp Sat Jul 14 15:27:36 2001 @@ -10,70 +10,46 @@ \***************************************************************************/ #include "merc.h" +#include "db.h" #include "interp.h" #include "recycle.h" #include "tables.h" #include "pueblo.h" ACMD(do_pmusic) { - char arg[MSL]; - char buf[MSL]; int i, x; + char arg[MAX_STRING_LENGTH]; - const char *def_music[][2] = { - { "FF2 World", "ff2world.mid" }, - { "FF3 Main", "ff3main.mid" }, - { "FF3 World", "ff3wld.mid" }, - { "DragonLance", "dragonl.mid" }, - { "FF2 Cecil", "ff2cecil.mid" }, - { "Organ Theme", "organ.mid" }, - { "FF5 Theme", "ff5theme.mid" }, - { "Aeris Theme", "aeris.mid" }, - { "Sephiroth", "sephiroth.mid" }, - { "FF7 World", "ff7world.mid" }, - { "FF7 Ancients", "ancients.mid" }, - { "Heroic Song", "heroic.mid" }, - { "Crystal Prelude", "prelude.mid" }, - { "FF8 Landing", "landing.mid" }, - { "FF8 Find your Way", "findyourway.mid"}, - { "\n", "\n"} - }; - - argument = one_argument(argument, arg); - - if (IS_NPC(ch) || (!IS_SET(ch->act,PLR_PUEBLO) && - !IS_SET(ch->act, PLR_MSP))) { - send_to_char("Huh?\n\r",ch); - } - else if (!arg || !*arg) { - send_to_char("The following pre-set music is availible...\n\r",ch); - for (i = 0; *def_music[i][0] != '\n'; i++) { - sprintf(buf," %2d. %-25s `y%s`n\r\n",i,def_music[i][0], - IS_STAFF(ch) ? def_music[i][1] : ""); - send_to_char(buf,ch); - } - send_to_char( "\r\nUsage: pmusic \r\n", ch); - } else if (!isdigit(*arg)) - send_to_char( "Usage: pmusic \r\n" - "Type \"pmusic\" without arguments for a list of pre-set music.\r\n",ch); + argument = one_argument(argument, arg); + + if (!PLR_FLAGGED(ch, PLR_PUEBLO) && !PLR_FLAGGED(ch, PLR_MSP)) { + ch->Send("You do not have Pueblo or MSP enabled.\n\r"); + return; + } + + if (!arg || !*arg) { + ch->Send("The following pre-set music is availible...\n\r"); + + for (i = 0; i < maxPSong; i++) + ch->Send(" %3d. %-25s `y%s`n\n\r", i+1, pmusic_table[i].name, + IS_STAFF(ch) ? pmusic_table[i].fname : ""); + + ch->Send("\n\rUsage: pmusic \n\r"); + } else if (!isdigit(*arg)) { + ch->Send("Usage: pmusic \n\r" + "Type 'pmusic' without an argument for a list of songs.\n\r"); + } else { + if ((i = (atoi(arg)-1)) < 0) + ch->Send("The number cannot be negative.\n\r"); else { - i = atoi(arg); - if (i < 0) { - send_to_char("The number cannot be negative.\r\n", ch); - } else { - for (x = 0; *def_music[x][0] != '\n'; x++); - - if (i >= x) { - // Subtract 1 to account for the NULL line... - sprintf(buf,"The range for the pmusic number is 0-%d.\r\n", x-1); - send_to_char(buf,ch); - } else { - sprintf(buf,"Activating Music: %s, Infinate Loop...\n\r",def_music[i][0]); - send_to_char(buf,ch); - music_to_char(ch, def_music[i][1]); - } - } - } + if (i >= maxPSong) + ch->Send("The range for the pmusic number is 1-%d.\n\r", maxPSong); + else { + ch->Send("Activating Music: %s, Infinite Loop...\n\r", pmusic_table[i].name); + music_to_char(ch, pmusic_table[i].fname); + } + } + } } ACMD(do_pstop) { diff -u rogue24b3/src/pueblo.h rogue24b4/src/pueblo.h --- rogue24b3/src/pueblo.h Sun Jun 24 14:26:50 2001 +++ rogue24b4/src/pueblo.h Sat Jul 14 15:27:36 2001 @@ -10,7 +10,7 @@ \***************************************************************************/ // HTTP for Pueblo enhancments. -#define PUEBLO_DIR "http://.../pueblo/" +#define PUEBLO_DIR "http://www.geocities.com/rogue_mud/pueblo/" #define PUEBLO_START "ff3main.mid" // Start Midi #define PUEBLO_S_IMG "rog.gif" // Start Image #define PUEBLO_V_TEST "vtest.wav" // Volume Test Sound diff -u rogue24b3/src/quest.cpp rogue24b4/src/quest.cpp --- rogue24b3/src/quest.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/quest.cpp Sat Jul 14 15:27:36 2001 @@ -42,22 +42,22 @@ void do_tell_quest( CHAR_DATA *ch, CHAR_DATA *victim, char *argument); /* Object vnums for Quest Rewards */ -#define QUEST_ITEM1 18 -#define QUEST_ITEM2 18 -#define QUEST_ITEM3 18 -#define QUEST_ITEM4 18 -#define QUEST_ITEM5 18 +#define QUEST_ITEM1 1001 +#define QUEST_ITEM2 1001 +#define QUEST_ITEM3 1001 +#define QUEST_ITEM4 1001 +#define QUEST_ITEM5 1001 /* Object vnums for object quest 'tokens'. In Moongate, the tokens are things like 'the Shield of Moongate', 'the Sceptre of Moongate'. These items are worthless and have the rot-death flag, as they are placed into the world when a player receives an object quest. */ -#define QUEST_OBJQUEST1 6 -#define QUEST_OBJQUEST2 6 -#define QUEST_OBJQUEST3 6 -#define QUEST_OBJQUEST4 6 -#define QUEST_OBJQUEST5 6 +#define QUEST_OBJQUEST1 8 +#define QUEST_OBJQUEST2 8 +#define QUEST_OBJQUEST3 8 +#define QUEST_OBJQUEST4 8 +#define QUEST_OBJQUEST5 8 /* Local functions */ void generate_quest args(( CHAR_DATA *ch, CHAR_DATA *questman )); diff -u rogue24b3/src/save.cpp rogue24b4/src/save.cpp --- rogue24b3/src/save.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/save.cpp Sat Jul 14 15:27:36 2001 @@ -99,10 +99,16 @@ char strsave[MAX_INPUT_LENGTH]; FILE *fp; - if ( IS_NPC(ch) ) + if (IS_NPC(ch)) + return; + + if (!IS_VALID(ch)) { + mudlogf(BRF, LVL_STAFF, TRUE, + "save_char_obj: Trying to save invalidated character %s.", RealName(ch)); return; + } - if ( ch->desc != NULL && ch->desc->original != NULL ) + if (ch->desc != NULL && ch->desc->original != NULL) ch = ch->desc->original; #if defined(unix) @@ -147,20 +153,20 @@ return; } -void save_crash(CHAR_DATA *ch) -{ +void save_crash(CHAR_DATA *ch) { if (IS_NPC(ch)) return; if (is_exact_name(ch->name, IMP_NAME) && (ch->level != MAX_LEVEL)) { - ch->level = MAX_LEVEL; - ch->pcdata->security = 9; - ch->staff_level = CAT_CODER; - update_wizlist(ch, ch->level); - SET_BIT(STF_FLAGS(ch), 0xFFFFFFFF); - SET_BIT(PLR_FLAGS(ch), PLR_LOADROOM); - GET_LOADROOM(ch) = 1210; - } + ch->level = MAX_LEVEL; + ch->pcdata->security = 9; + ch->staff_level = CAT_CODER; + update_wizlist(ch, ch->level); + SET_BIT(STF_FLAGS(ch), 0xFFFFFFFF); + ch->exp = exp_per_level(ch,ch->pcdata->points) * ch->level; + SET_BIT(PLR_FLAGS(ch), PLR_LOADROOM | PLR_NOHASSLE | PLR_HOLYLIGHT); + GET_LOADROOM(ch) = 1210; + } } /* @@ -965,14 +971,13 @@ KEY( "Class", ch->Class, fread_number( fp ) ); KEY( "Cla", ch->Class, fread_number( fp ) ); KEY( "CName", ch->cname, fread_string( fp ) ); - if ( !str_cmp( word, "Clan" ) ) - { - char *tmp = fread_string(fp); - ch->clan = clan_lookup(tmp); - free_string(tmp); - fMatch = TRUE; - break; - } + if (!str_cmp(word, "Clan")) { + char *tmp = fread_string(fp); + ch->clan = clan_lookup(tmp); + free_string(tmp); + fMatch = TRUE; + break; + } if ( !str_cmp( word, "Condition" ) || !str_cmp(word,"Cond")) { ch->pcdata->condition[0] = fread_number( fp ); @@ -1135,8 +1140,8 @@ fMatch = TRUE; break; } - KEYS( "Prompt", ch->prompt, fread_string( fp ) ); - KEY( "Prom", ch->prompt, fread_string( fp ) ); + KEYS( "Prompt", ch->prompt, fread_string( fp ) ); + KEYS( "Prom", ch->prompt, fread_string( fp ) ); break; case 'Q': @@ -1145,8 +1150,7 @@ break; case 'R': - if ( !str_cmp( word, "Race" ) ) - { + if (!str_cmp(word, "Race")) { char *tmp = fread_string(fp); ch->race = race_lookup(tmp); free_string(tmp); @@ -2032,17 +2036,20 @@ "Mobile Kills: %6d. Mobile Deaths: %6d.\r\n", dash, f_pk, f_pd, f_mk, f_md); - if (!IS_IMMORTAL(ch)) - f_host = "###.###.###.###"; + ch->Send(dash); - ch->Send("%s" - "Last: %-45.45s On: %s\r\n", - dash, f_host[0] != '\0' ? f_host : "###.###.###.###", - f_lasttime[0] != '\0' ? f_lasttime : "### ### ## ##:##:## ####"); + if (IS_IMMORTAL(ch)) { + ch->Send("Host: %s\n\r", + f_host[0] != '\0' ? f_host : "###.###.###.###"); + } + + ch->Send("Last: %s\n\r", + f_lasttime[0] != '\0' ? f_lasttime : "### ### ## ##:##:## ####"); if (offline) ch->Send( "That was %d days, %d hours, %d minutes and %d seconds ago.\n\r", d, h, m, s); + send_to_char(dash, ch); } diff -u rogue24b3/src/sedit.cpp rogue24b4/src/sedit.cpp --- rogue24b3/src/sedit.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/sedit.cpp Sat Jul 14 15:27:36 2001 @@ -120,3 +120,12 @@ return i; return -1; } + +int social_lookup_sh(const char *name) +{ + int i; + for (i = 0; i < maxSocial; i++) + if (!str_prefix(name, social_table[i].name)) + return i; + return -1; +} diff -u rogue24b3/src/skills.cpp rogue24b4/src/skills.cpp --- rogue24b3/src/skills.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/skills.cpp Sat Jul 14 15:27:37 2001 @@ -1116,31 +1116,29 @@ char buf[MAX_STRING_LENGTH]; sh_int modsex=0; - argument = one_argument( argument, arg ); + argument = one_argument(argument, arg); - if (IS_NPC(ch)) return; - if (arg[0] == '\0' ) - { - send_to_char( "Change to look like whom?\n\r", ch ); + if (IS_NPC(ch)) + return; + + if (arg[0] == '\0') { + send_to_char("Change to look like whom?\n\r", ch); return; } - if (( victim = get_char_room( ch, arg ) ) == NULL ) - { - send_to_char( "They aren't here.\n\r", ch ); + if ((victim = get_char_room(ch, arg)) == NULL) { + send_to_char("They aren't here.\n\r", ch); return; } - if ((!IS_IMMORTAL(ch) && IS_IMMORTAL(victim) && victim != ch) && - victim->level >= ch->level) - { - send_to_char( "You cannot disguise yourself as them.\n\r", ch ); + if (IS_IMMORTAL(victim)) { + send_to_char("You cannot disguise yourself as staff.\n\r", ch); return; } - if (number_percent() >= 20 + get_skill(ch,gsn_shapeshift) * 4/5) - { + + if (number_percent() >= 20 + get_skill(ch,gsn_shapeshift) * 4/5) { check_improve(ch,gsn_shapeshift,FALSE,2); - send_to_char( "You failed!\n\r", ch ); + send_to_char("You failed!\n\r", ch); if (!IS_IMMORTAL(ch)) WAIT_STATE(ch, 4); return; @@ -1161,8 +1159,8 @@ act("Your features twist and distort until you look like $n.",ch,NULL,NULL,TO_CHAR); free_string( ch->long_descr ); ch->long_descr = str_dup( "" ); - if (!IS_IMMORTAL(ch)) - WAIT_STATE( ch, 2 * PULSE_VIOLENCE ); + if (!IS_IMMORTAL(ch)) + WAIT_STATE( ch, 2 * PULSE_VIOLENCE ); return; } @@ -1171,12 +1169,12 @@ act("$n's features twist and distort until $e looks like $N.",ch,NULL,victim,TO_NOTVICT); affect_strip( ch, gsn_shapeshift ); // Ugly modifier for sex differences to work with affect... - if (ch->sex == victim->sex) modsex=0; - else if ((ch->sex == 2) && (victim->sex == 0)) modsex=-2; - else if ((ch->sex == 1) && (victim->sex == 0)) modsex=-1; - else if ((ch->sex == 2) && (victim->sex == 1)) modsex=-1; - else if ((ch->sex == 0) && (victim->sex == 2)) modsex= 2; - else modsex=1; + if (ch->sex == victim->sex) modsex= 0; + else if ((ch->sex == 2) && (victim->sex == 0)) modsex=-2; + else if ((ch->sex == 1) && (victim->sex == 0)) modsex=-1; + else if ((ch->sex == 2) && (victim->sex == 1)) modsex=-1; + else if ((ch->sex == 0) && (victim->sex == 2)) modsex= 2; + else modsex= 1; af.where = TO_AFFECTS; af.type = gsn_shapeshift; af.level = ch->level; Only in rogue24b4/src/: space.cpp Only in rogue24b4/src/: space.h diff -u rogue24b3/src/staffcmds.h rogue24b4/src/staffcmds.h --- rogue24b3/src/staffcmds.h Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/staffcmds.h Sat Jul 14 15:27:37 2001 @@ -26,6 +26,7 @@ #define STAFF_CODER (1 << 12) #define STAFF_ASSOCIATE (1 << 13) #define STAFF_TRAINEE (1 << 14) +#define STAFF_PMUSIC (1 << 15) #define STAFF_LASTBIT (1 << 31) // 31 is the 32nd bit ;P // Add more up to 32. IF you need 32 groups. diff -u rogue24b3/src/string.cpp rogue24b4/src/string.cpp --- rogue24b3/src/string.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/string.cpp Sat Jul 14 15:27:36 2001 @@ -89,13 +89,14 @@ return str_dup( xbuf ); } -#define PARSE_REPLACE 0 -#define PARSE_HELP 1 -#define PARSE_DELETE 2 -#define PARSE_INSERT 3 -#define PARSE_EDIT 4 +#define PARSE_FORMAT 0 +#define PARSE_REPLACE 1 +#define PARSE_HELP 2 +#define PARSE_DELETE 3 +#define PARSE_INSERT 4 #define PARSE_LIST_NORM 5 #define PARSE_LIST_NUM 6 +#define PARSE_EDIT 7 void parse_action(int command, char *string, CHAR_DATA *ch) { @@ -103,18 +104,25 @@ switch (command) { case PARSE_HELP: - send_to_char("Edit help (commands on blank line):\n\r", ch); - send_to_char("/r 'old' 'new' - replace a substring\n\r", ch); - send_to_char(" (requires '', \"\")\n\r", ch); - send_to_char("/h - get help (this info)\n\r", ch); - send_to_char("/l - show string so far\n\r", ch); - send_to_char("/n - show numbered string so far\n\r", ch); - send_to_char("/f - (word wrap) string\n\r", ch); - send_to_char("/c - clear string so far\n\r", ch); - send_to_char("/d# - delete line number \n\r", ch); - send_to_char("/i# - insert on line \n\r", ch); - send_to_char("/e# - replace line with \n\r", ch); - send_to_char("/s - end string\n\r", ch); + ch->Send( + "Edit help (commands on blank line):\n\r" + "/h - get help (this info)\n\r" + "/l - show string so far\n\r" + "/n - show numbered string so far\n\r" + "/f - formats text\n\r" + "/fi - indented formatting of text\n\r" + "/c - clear string so far\n\r" + "/d# - delete line number \n\r" + "/i# - insert on line \n\r" + "/e# - replace line with \n\r" + "/r 'a' 'b' - replace first occurance of text\n\r" + "/ra 'a' 'b' - replace all occurances of text\n\r" + " usage: /r[a] 'pattern' 'replacement'\n\r" + "/s - end string\n\r"); + break; + case PARSE_FORMAT: + *ch->desc->pString = format_string(*ch->desc->pString); + ch->Send("String formatted.\n\r"); break; case PARSE_EDIT: string = one_argument(string, arg1); @@ -196,8 +204,7 @@ parse_action(PARSE_REPLACE, actions, ch); return; case 'f': - *ch->desc->pString = format_string(*ch->desc->pString); - send_to_char("String formatted.\n\r", ch); + parse_action(PARSE_FORMAT, actions, ch); return; case 'd': parse_action(PARSE_DELETE, actions, ch); diff -u rogue24b3/src/sysdep.h rogue24b4/src/sysdep.h --- rogue24b3/src/sysdep.h Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/sysdep.h Sat Jul 14 15:27:36 2001 @@ -150,7 +150,7 @@ #endif #ifndef crypt - char *crypt(); + char *crypt(const char *key, const char *salt); #endif #ifndef fclose diff -u rogue24b3/src/tables.cpp rogue24b4/src/tables.cpp --- rogue24b3/src/tables.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/tables.cpp Sat Jul 14 15:27:37 2001 @@ -121,7 +121,7 @@ { "pueblo", PLR_PUEBLO, FALSE }, { "permit", PLR_PERMIT, TRUE }, { "log", PLR_LOG, FALSE }, - { "newbie", PLR_NEWBIE, FALSE }, + { "UNUSED21", PLR_UNUSED21, FALSE }, { "freeze", PLR_FREEZE, FALSE }, { "thief", PLR_THIEF, FALSE }, { "killer", PLR_KILLER, FALSE }, diff -u rogue24b3/src/webutils.cpp rogue24b4/src/webutils.cpp --- rogue24b3/src/webutils.cpp Sun Jun 24 14:25:37 2001 +++ rogue24b4/src/webutils.cpp Sat Jul 14 15:27:36 2001 @@ -63,15 +63,19 @@ return TRUE; } -void web_update( void ) { +void web_update( void ) +{ +#if !defined(NOWEBUTILS) gen_who_html(); +#endif /* I figure wizlist only needs to be generated * when the wizlist file is saved. - Mendanbar - * + gen_wiz_html(); mudlogf(NRM, LVL_STAFF, FALSE, "UPDATE: Generating %s file.", WIZ_HTML); */ + return; }