wolfpaw4.0-release/area/
wolfpaw4.0-release/backup/
wolfpaw4.0-release/bin/
wolfpaw4.0-release/boards/
wolfpaw4.0-release/clans/
wolfpaw4.0-release/councils/
wolfpaw4.0-release/deity/
wolfpaw4.0-release/finger/
wolfpaw4.0-release/gods/
wolfpaw4.0-release/guilds/
wolfpaw4.0-release/lockers/
wolfpaw4.0-release/log/
wolfpaw4.0-release/log/Clean/
wolfpaw4.0-release/maps/
wolfpaw4.0-release/offline_data/
wolfpaw4.0-release/player-obj/
wolfpaw4.0-release/player-obj/a/
wolfpaw4.0-release/player/
wolfpaw4.0-release/player/a/
wolfpaw4.0-release/plog/
wolfpaw4.0-release/save-rooms/
wolfpaw4.0-release/secure/
wolfpaw4.0-release/source/
wolfpaw4.0-release/source/betasrc/system/
wolfpaw4.0-release/source/betasrc/util/
wolfpaw4.0-release/system/clean-source/
wolfpaw4.0-release/system/clean-source/grux/
/*--------------------------------------------------------------------------*
 *                         ** WolfPaw 1.0 **                                *
 *--------------------------------------------------------------------------*
 *               WolfPaw 1.0 (c) 1997,1998 by Dale Corse                    *
 *--------------------------------------------------------------------------*
 *            The WolfPaw Coding Team is headed by: Greywolf                *
 *  With the Assitance from: Callinon, Dhamon, Sentra, Wyverns, Altrag      *
 *  Scryn, Thoric, Justice, Tricops and Mask.                               *
 *--------------------------------------------------------------------------*
 *               Wolfpaw Custom Menu-Driven OLC Module                      *
 *--------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
#include "mud.h"

#define version "1.0"

/* local function declarations and prototypes */
void display_main_redit_page  args( ( CHAR_DATA *ch ) );
int find_exit  args( ( ROOM_INDEX_DATA *room, int dir ) );
void gredit_engine args( ( DESCRIPTOR_DATA *d, char *argument ) );
void gredit_cleanup args( ( CHAR_DATA *ch ) );
void add_char args( ( CHAR_DATA *ch ) );
void remove_char args( ( CHAR_DATA *ch ) );

/*
 * Begin REDIT Functions. --GW
 */

/*
 * Command to start up Room Editor, takes them from game, into Editor,
 */
void do_gredit( CHAR_DATA *ch, char *argument )
{
DESCRIPTOR_DATA *d;
record_call("<do_gredit>");

d = ch->desc;

/* Get Going, remove char from the world, stick em in the editor!*/
act( AT_MAGIC, "$n begins changing the world.",ch,NULL,NULL,TO_ROOM);
/* start up the editor engine */
display_main_redit_page(ch);
remove_char(ch);
ch->substate = SUB_REDIT_MAIN;
ch->desc->connected = CON_GREDITING;
return;
}

/*
 * Cleans up the char.. and puts them back in the game.
 */
void gredit_cleanup( CHAR_DATA *ch )
{ 
record_call("<gredit_cleanup>");

/* finish up, put the char back in the world and exit */
ch->substate = SUB_NONE;
ch->desc->connected = CON_PLAYING;
add_char(ch);
act( AT_MAGIC, "$n has returned from changing the world.",ch,NULL,NULL,TO_ROOM);
return;
}

/*
 * Main GRedit Engine .. handles all the character interface command entry.
 */
void gredit_engine( DESCRIPTOR_DATA *d, char *argument )
{
CHAR_DATA *ch;
char arg[MSL];

ch = d->character;

switch( ch->substate )
{

   case SUB_REDIT_MAIN:
      display_main_redit_page(ch);
      one_argument( argument, arg );
      switch( *arg )
      {
	default:
	  write_to_buffer(d,"Invalid Choice.\n\r",0);
	  return;
	case '1':
	  ch->substate = SUB_REDIT_RNAME;
	  break;
	case '2':
	  ch->substate = SUB_REDIT_ROOMDESC;
	  break;
	case '3':
	  ch->substate = SUB_REDIT_ROOMFLAGS;
	  break;
	case '4':
	  ch->substate = SUB_REDIT_SECTOR;
	  break;
	case '5':
	  ch->substate = SUB_REDIT_EXIT_N;
	  break;
	case '6':
	  ch->substate = SUB_REDIT_EXIT_E;
	  break;
	case '7':
	  ch->substate = SUB_REDIT_EXIT_S;
	  break;
	case '8':
	  ch->substate = SUB_REDIT_EXIT_W;
	  break;
	case '9':
	  ch->substate = SUB_REDIT_EXIT_U;
	  break;
	case 'A':
	case 'a':
	  ch->substate = SUB_REDIT_EXIT_D;
	  break;
	case 'B':
	case 'b':
	  ch->substate = SUB_REDIT_EXTRA_DESC;
	  break;
	case 'Q':
	case 'q':
	  gredit_cleanup(ch);
	  break;
      }
      break;

   case SUB_REDIT_RNAME:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;
   case SUB_REDIT_ROOMDESC:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;
   case SUB_REDIT_ROOMFLAGS:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;
   case SUB_REDIT_SECTOR:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;
   case SUB_REDIT_EXIT_N:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;
   case SUB_REDIT_EXIT_E:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;
   case SUB_REDIT_EXIT_S:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;
   case SUB_REDIT_EXIT_W:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;
   case SUB_REDIT_EXIT_U:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;
   case SUB_REDIT_EXIT_D:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;
   case SUB_REDIT_EXTRA_DESC:
      write_to_buffer( d, "Incomplete..press enter.\n\r",0);
      ch->substate = SUB_REDIT_MAIN;
      break;

   default:
	bug( "GRedit_Engine: bad substate %d.",ch->substate );
	bug( "Calling GRedit_Cleanup on %s",capitalize(ch->name)); 	
	gredit_cleanup( ch );
	return;
   
}

return;
}

/*
 * Display the Header Line
 */
void display_header( CHAR_DATA *ch )
{
record_call("<display_header>");
do_clear(ch,"");
send_to_char("DONT USE THIS: IT IS INCOMPLETE! --GW\n\r",ch);
send_to_char("\n\r*----------------------------------------------------*\n\r",ch);
ch_printf(ch,"*       WolfPaw Menu Driven OLC -- Version %s     *",version);
send_to_char("\n\r*----------------------------------------------------*\n\r",ch);
return;
}

/*
 * Returns what Vnum an exit direction leads to, -1 if none.
 */
int find_exit( ROOM_INDEX_DATA *room, int dir )
{
    EXIT_DATA *pexit;
    int cnt;

        for ( cnt = 0, pexit = room->first_exit; pexit; pexit = pexit->next )
	{
	  if ( pexit->vdir == dir && pexit->to_room )
	  {
	    return pexit->to_room->vnum;
	  }
        }

return -1;
}

/*
 * Displays the Mian menu for GRedit
 */
void display_main_redit_page( CHAR_DATA *ch )
{
ROOM_INDEX_DATA *room;
ZONE_DATA *zone;

room = ch->in_room;
if ( ch->in_room->area )
zone = ch->in_room->area->zone;
else
zone = find_zone(1);

display_header(ch);

ch_printf( ch, "Room Number: [%d] Zone #: [%d]\n\r",room->vnum,zone->number);
ch_printf( ch, "Area: [%s]\n\r",room->area ? room->area->name : "None!");
ch_printf( ch, "1) Name: [%s]\n\r",room->name);
send_to_char("2) Description\n\r",ch);
ch_printf( ch, "3) Room Flags: %s\n\r",flag_string(ch->in_room->room_flags,r_flags));
ch_printf( ch, "4) Sector Type: %s\n\r",sector_name(ch->in_room->sector_type));
ch_printf( ch, "5) Exit North: %d\n\r", find_exit( room, DIR_NORTH ) );
ch_printf( ch, "6) Exit East:  %d\n\r", find_exit( room, DIR_EAST ) );
ch_printf( ch, "7) Exit South: %d\n\r", find_exit( room, DIR_SOUTH ) );
ch_printf( ch, "8) Exit West:  %d\n\r", find_exit( room, DIR_WEST ) );
ch_printf( ch, "9) Exit Up:    %d\n\r", find_exit( room, DIR_UP ) );
ch_printf( ch, "A) Exit Down:  %d\n\r", find_exit( room, DIR_DOWN ) );
send_to_char("B) Extra Descriptions Menu\n\r",ch);
send_to_char("Q) Quit\n\r",ch);
send_to_char("Enter Choice: ",ch);
return;
}


/* 
 * Begin GOedit Functions --GW
 */

void do_goedit( CHAR_DATA *ch, char *argument )
{
record_call("<do_goedit>");
return;
}

/*
 * Begin GMedit Functions --GW
 */
void do_gmedit( CHAR_DATA *ch, char *argument )
{
record_call("<do_gmedit>");
return;
}