Rdig Command Original author: Mark Mealman(Dracones) Port to SmaugWiz by Zanthoris Installation Instructions ------------------------- 1. In smaug.h look for: DECLARE_DO_FUN(do_rdelete); add this line after it: DECLARE_DO_FUN(do_rdig); 2. In skills.cpp look for: if (!str_cmp (name, "do_rdelete")) return do_rdelete; and after it add this line: if (!str_cmp( name, "do_rdig")) return do_rdig; also in skills.cpp look for: if (skill == do_rdelete) return "do_rdelete"; and add: if ( skill == do_rdig ) return "do_rdig"; 3. In build.cpp add this new function: /* rdig command by Dracones */ /* Ported to SmaugWiz by Zanthoris on 11/08/2000 */ void do_rdig( CCharacter *ch, char *argument ) { char arg [MAX_INPUT_LENGTH]; char buf [MAX_STRING_LENGTH]; CRoomIndexData *location, *ch_location; CAreaData *pArea; int vnum, edir; char tmpcmd[MAX_INPUT_LENGTH]; CExitData *xit; set_char_color( AT_PLAIN, ch ); ch_location = ch->GetInRoom(); argument = one_argument( argument, arg ); if ( !arg || arg[0] == '\0' ) { ch->SendText( "Dig out a new room or dig into an existing room.\n\r"); ch->SendText( "Usage: rdig <dir>\n\r"); return; } edir = get_dir( arg ); xit = get_exit( ch_location, edir ); if ( !xit ) { pArea = ch->GetArea(); vnum = pArea->low_r_vnum; while(vnum <= pArea->hi_r_vnum && RoomTable.GetRoom(vnum) != NULL) vnum++; if(vnum > pArea->hi_r_vnum) { ch->SendText("No empty upper rooms could be found.\r\n"); return; } sprintf( buf, "Digging out room %d to the %s.\r\n", vnum, arg); ch->SendText(buf); location = make_room(vnum); if ( !location ) { bug( "rdig: make_room failed", 0 ); return; } location->SetArea(ch->GetArea()); sprintf( tmpcmd, "bexit %s %d", arg, vnum ); do_redit( ch, tmpcmd ); } else { vnum = xit->vnum; location = RoomTable.GetRoom(vnum); sprintf( buf, "Digging into room %d to the %s.\r\n", vnum, arg); ch->SendText(buf); } location->SetName(ch_location->GetName()); location->SetDescription (ch_location->GetDescription()); location->sector_type = ch_location->sector_type; location->SetRoomFlags(ch_location->GetRoomFlags()); /* Move while rdigging -- Dracones */ sprintf(buf, "%d", vnum); do_goto( ch, buf); return; } 4. Make clean, then recompile. 5. Create an rdig command, setting it to the desired level or just put the following in your commands.dat file: #COMMAND Name rdig~ Code do_rdig Position 100 Level 60 Log 3 End command usage: rdig <dir> This code allows builders to quickly "dig" new rooms or room exits without having to use the goto command. New rooms are created using the current room's statistics for name, description, flags, and sector type. rdig can also "dig" into existing rooms, in which case the above statistics for the existing room are rewritten. WARNING: This command has _no_ checks in place for security. Also this command uses the character's assigned edit room range(pArea) when creating new rooms, so you should only use this command in your build-zone. *=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*= This snippet was written for and tested on SmaugWiz version 2.01, I cannot guarantee that it will work in previous versions without some modification (though I expect it will). If you have problems with this snippet let me know! -=Zanthoris=- zanthoris@hotmail.com telnet:\\zanthoris.dhs.org:4000 http:\\zanthoris.home.dhs.org