eldhamud_2.3.3/clans/
eldhamud_2.3.3/councils/
eldhamud_2.3.3/doc/
eldhamud_2.3.3/doc/DIKU/
eldhamud_2.3.3/doc/DIKU/.svn/
eldhamud_2.3.3/doc/DIKU/.svn/prop-base/
eldhamud_2.3.3/doc/DIKU/.svn/text-base/
eldhamud_2.3.3/doc/MERC/
eldhamud_2.3.3/doc/MERC/.svn/
eldhamud_2.3.3/doc/SMAUG/.svn/
eldhamud_2.3.3/doc/SMAUG/mudprogs/
eldhamud_2.3.3/doc/SMAUG/mudprogs/.svn/
eldhamud_2.3.3/doc/mudprogs/
eldhamud_2.3.3/gods/
eldhamud_2.3.3/houses/
eldhamud_2.3.3/player/a/
/****************************************************************************
 *			Eldhamud Codebase V2.2				    *
 * ------------------------------------------------------------------------ *
 *          EldhaMUD code (C) 2003-2008 by Robert Powell (Tommi)            *
 * ------------------------------------------------------------------------ *
 * Original SMAUG 1.4a written by Thoric (Derek Snider) with Altrag,        *
 * Blodkai, Haus, Narn, Scryn, Swordbearer, Tricops, Gorog, Rennard,        *
 * Grishnakh, Fireblade, and Nivek.                                         *
 *                                                                          *
 * Original MERC 2.1 code by Hatchet, Furey, and Kahn.                      *
 *                                                                          *
 * Original DikuMUD code by: Hans Staerfeldt, Katja Nyboe, Tom Madsen,      *
 * Michael Seifert, and Sebastian Hammer.                                   *
 ***************************************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "./Headers/mud.h"
#include "./Headers/commands.h"
void do_pk_toggle( CHAR_DATA * ch, char *argument )
{
   int cost = 500000;   /* Cost to change */
   CHAR_DATA *mob;
   if( argument[0] == STRING_NULL )
   {
      send_to_char( "&RSyntax: pk-toggle on\n\r", ch );
      send_to_char( "&RSyntax: pk-toggle off\n\r", ch );
      send_to_char( "&RSee &YHELP pk-toggle &Rfor more info.\n\r", ch );
      return;
   }
   /*
    * check for toggle mob 
    */
   for( mob = ch->in_room->first_person; mob; mob = mob->next_in_room )
   {
      if( IS_NPC( mob ) && xIS_SET( mob->act, ACT_PKTOGGLE ) )
      {
         break;
      }
      else
      {
         send_to_char( "&wThere doesn't seem to be anyone here who can help you with that!\n\r", ch );
         return;
      }
   }
   if( !str_cmp( argument, "on" ) )
   {
      if( get_age( ch ) < 18 )
      {
         send_to_char( "&rYou be 18 years of age to be a Player Killer.\n\r", ch );
      }
      else
      {
         if( CAN_PKILL( ch ) )
         {
            send_to_char( "&rYou are already a Player Killer!\n\r", ch );
         }
         else
         {
            send_to_char( "&rPK has been toggled on, you are now a Deadly Player!!!\n\r", ch );
            SET_BIT( ch->pcdata->flags, PCFLAG_DEADLY );
            xREMOVE_BIT( ch->act, PLR_NICE );
            save_char_obj( ch );
            saving_char = NULL;
         }
      }
      return;
   }
   if( !str_cmp( argument, "off" ) )
   {
      if( !CAN_PKILL( ch ) )
      {
         send_to_char( "&rYou are already peaceful!\n\r", ch );
         return;
      }
      else
      {
         if( ch->gold < cost )
         {
            send_to_char( "&rYou do not have enough money to toggle PK off!\n\r", ch );
            return;
         }
         else
         {
            ch->gold -= cost;
            REMOVE_BIT( ch->pcdata->flags, PCFLAG_DEADLY );
            xSET_BIT( ch->act, PLR_NICE );
            send_to_char( "&wPk has been toggled off. You are now a peacfull player.\n\r", ch );
            save_char_obj( ch );
            saving_char = NULL;
         }
      }
      return;
   }
}
void do_travel( CHAR_DATA * ch, char *argument )
{
   CHAR_DATA *travel_mage;
   CHAR_DATA *mount;
   char buf[MAX_STRING_LENGTH];
   char arg1[MAX_STRING_LENGTH];
   char arg2[MAX_STRING_LENGTH];
   int j;
   argument = one_argument( argument, arg1 );
   argument = one_argument( argument, arg2 );
   travel_mage = NULL;
   for( travel_mage = ch->in_room->first_person; travel_mage; travel_mage = travel_mage->next_in_room )
   {
      if( IS_NPC( travel_mage ) && xIS_SET( travel_mage->act, ACT_TRAVELMAGE ) )
         break;
   }
   if( !travel_mage )
   {
      ch_printf( ch, "There is no travel mage here.\n\r" );
      return;
   }
   if( arg1[0] == STRING_NULL || !strcmp( arg1, "list" ) )
   {
      int i;
      ch_printf( ch, "I offer the following locations...\n\r" );
      ch_printf( ch, " \n\r" );
      ch_printf( ch, "[Location Name                           ] [Price ]\n\r" );
      ch_printf( ch, "---------------------------------------------------\n\r" );
      for( i = 0; i < ( MAX_TRAVEL_LOCATION - 1 ); i++ )
      {
         sprintf( buf, "[%-40s] [%-6ld]\n\r", travel_table[i].long_desc, travel_table[i].cost );
         ch_printf( ch, "%s", buf );
      }
      ch_printf( ch, " \n\r" );
      ch_printf( ch, "Please type 'travel buy <location>' and have your gold ready!\n\r" );
      ch_printf( ch, "For more information type 'help travelmage' and read!\n\r" );
      return;
   }
   if( !strcmp( arg1, "buy" ) )
   {
      if( arg2[0] == STRING_NULL )
      {
         sprintf( buf, "%s You must tell me where you wish to travel to.\n\r", ch->name );
         send_to_char( buf, travel_mage );
         return;
      }
      for( j = 0; j < MAX_TRAVEL_LOCATION; j++ )
      {
         if( !str_cmp( arg2, travel_table[j].keyword ) )
         {
            if( ch->gold < travel_table[j].cost )
            {
               sprintf( buf, "%s Sorry you dont have enough gold to travel to %s\n\r", ch->name, travel_table[j].long_desc );
               send_to_char( buf, travel_mage );
               return;
            }
            ch->gold -= travel_table[j].cost;
            act( AT_PLAIN, "$n disappears in a violet fog.\n\r", ch, NULL, NULL, TO_ROOM );
            sprintf( buf, "You are surrounded by a violet fog.{x\n\r" );
            char_from_room( ch );
            char_to_room( ch, get_room_index( travel_table[j].vnum ) );
            ch_printf( ch, "%s", buf );
            mount = ch->mount;
            if( ch->mount != NULL && ch->mount->in_room == ch->in_room )
            {
               char_from_room( mount );
               char_to_room( mount, get_room_index( travel_table[j].vnum ) );
               act( AT_PLAIN, "&M$n disappears in a violet fog.&x\n\r", ch, NULL, NULL, TO_ROOM );
            }
            do_look( ch, "" );
            return;
         }
      }
      send_to_char( "Sorry, that location is not on the list.\n\r", ch );
      return;
   }
}
void do_heal( CHAR_DATA * ch, char *argument )
{
   CHAR_DATA *mob;
   char arg[MAX_INPUT_LENGTH];
   int cost = 100;
   /*
    * Search for an act_healer 
    */
   for( mob = ch->in_room->first_person; mob; mob = mob->next_in_room )
   {
      if( IS_NPC( mob ) && xIS_SET( mob->act, ACT_HEALER ) )
         break;
   }
   if( mob == NULL )
   {
      send_to_char( "&RYou can't do that here.\n\r", ch );
      return;
   }
   if( cost > ch->gold )
   {
      act( AT_PLAIN, "$N says 'You do not have enough gold for my services.'", ch, NULL, mob, TO_CHAR );
      return;
   }
   one_argument( argument, arg );
   if( arg[0] == STRING_NULL )
   {
      act( AT_PLAIN, "$N says 'I offer the following spells:'", ch, NULL, mob, TO_CHAR );
      set_char_color(AT_HEALER, ch);
      send_to_char( "&D--------------------------------------------------------------------------------\n\r", ch );
      send_to_char( "&c  Keyword               Heals                                          Cost     \n\r", ch );
      send_to_char( "&D--------------------------------------------------------------------------------\n\r", ch );
      send_to_char( "&w  heal:                 Hit Points                                     100 gold \n\r", ch );
      send_to_char( "&w  refresh:              Move Points                                    100 gold \n\r", ch );
      send_to_char( "&w  mana:                 Mana Points                                    100 gold \n\r", ch );
      send_to_char( "&D--------------------------------------------------------------------------------\n\r", ch );
      send_to_char( "&w  Type heal <keyword> to be healed.\n\r", ch );
      return;
   }
   else if( !str_cmp( arg, "heal" ) )
   {
      ch->gold -= cost;
      act( AT_PLAIN, "$n utters the words pzar.", mob, NULL, NULL, TO_ROOM );
      ch->hit = ch->max_hit;
      send_to_char( "&wA warm glow passes through you, as your hit points are restored.\n\r", ch );
   }
   else if( !str_cmp( arg, "mana" ) )
   {
      ch->gold -= cost;
      act( AT_PLAIN, "$n utters the words pzar.", mob, NULL, NULL, TO_ROOM );
      ch->mana = ch->max_mana;
      send_to_char( "&wA warm glow passes through you, as your mana points are restored.\n\r", ch );
      return;
   }
   else if( !str_cmp( arg, "refresh" ) )
   {
      ch->gold -= cost;
      act( AT_PLAIN, "$n utters the words candusima.", mob, NULL, NULL, TO_ROOM );
      ch->move = ch->max_mana;
      send_to_char( "&wA warm glow passes through you, as your move points are restored.\n\r", ch );
   }
   else
   {
      act( AT_PLAIN, "$N says ' Type 'heal' for a list of spells.'", ch, NULL, mob, TO_CHAR );
      return;
   }
}
void do_restring( CHAR_DATA * ch, char *argument )
{
   CHAR_DATA *mob = NULL;
   char arg[MAX_INPUT_LENGTH];
   char arg1[MAX_INPUT_LENGTH];
   char arg2[MAX_INPUT_LENGTH];
   OBJ_DATA *obj = NULL;
   int value;
   smash_tilde( argument );
   argument = one_argument( argument, arg );
   argument = one_argument( argument, arg1 );
   strcpy( arg2, argument );
   if( arg[0] == STRING_NULL || arg1[0] == STRING_NULL || arg2[0] == STRING_NULL )
   {
      send_to_char( "Syntax:\n\r", ch );
      send_to_char( "  restring <Obj-Name> <Field> <String>\n\r", ch );
      send_to_char( "    fields: name short long\n\r", ch );
      return;
   }
   if( ( obj = get_obj_world( ch, arg ) ) == NULL )
   {
      send_to_char( "There is nothing like that in all the realms.\n\r", ch );
      return;
   }
   for( mob = ch->in_room->first_person; mob; mob = ch->next_in_room )
   {
      if( IS_NPC( mob ) && xIS_SET( mob->act, ACT_RESTRING ) )
         break;
   }
   if( !mob )
   {
      send_to_char( "You need to be at a restringer to do that.\n\r", ch );
      return;
   }
   if( ch->gold < 2000 )
   {
      send_to_char( "&rYou do not have enough money to restring anything!\n\r", ch );
      return;
   }
   strcpy( arg, obj->name );
   separate_obj( obj );
   value = atoi( arg2 );
   if( !str_cmp( arg1, "name" ) )
   {
      STRFREE( obj->name );
      obj->name = STRALLOC( arg2 );
      send_to_char( "Ok.\n\r", ch );
      ch->gold -= 2000;
      return;
   }
   if( !str_cmp( arg1, "short" ) )
   {
      STRFREE( obj->short_descr );
      obj->short_descr = STRALLOC( arg2 );
      send_to_char( "Ok.\n\r", ch );
      ch->gold -= 2000;
      return;
   }
   if( !str_cmp( arg1, "long" ) )
   {
      STRFREE( obj->description );
      obj->description = STRALLOC( arg2 );
      send_to_char( "Ok.\n\r", ch );
      ch->gold -= 2000;
      return;
   }
}