Eldhamud_2.5.83/clans/
Eldhamud_2.5.83/classes/
Eldhamud_2.5.83/doc/
Eldhamud_2.5.83/doc/DIKU/
Eldhamud_2.5.83/doc/MERC/
Eldhamud_2.5.83/doc/mudprogs/
Eldhamud_2.5.83/houses/
/****************************************************************************
 *			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_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 );
	
	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.\r\n" );
		return;
	}
	if ( arg1[0] == STRING_NULL || !strcmp ( arg1, "list" ) )
	{
		send_to_char ( "--------------------------------------------------------------------------------\r\n", ch );
		send_to_char ( " Destination                                                          Price     \r\n", ch );
		send_to_char ( "--------------------------------------------------------------------------------\r\n", ch );
		send_to_char ( " Yagonza Provence                                                     100       \r\n", ch );
		send_to_char ( " Bangoin Provence                                                     100       \r\n", ch );
		send_to_char ( " Nyemo Provence                                                       100       \r\n", ch );
		send_to_char ( " Zogang Provence                                                      100       \r\n", ch );
		send_to_char ( " Sangang Provence                                                     100       \r\n", ch );
		send_to_char ( " Jaili Provence                                                       100       \r\n", ch );
		send_to_char ( " Konjo Provence                                                       100       \r\n", ch );
		send_to_char ( " Tangmai Provence                                                     100       \r\n", ch );
		send_to_char ( "--------------------------------------------------------------------------------\r\n", ch );
		ch_printf ( ch, "Please type 'travel buy <location>' and have your gold ready!\r\n" );
		ch_printf ( ch, "For more information type 'help travelmage' and read!\r\n" );
		return;
	}
	if ( !strcmp ( arg1, "buy" ) )
	{
		if ( arg2[0] == STRING_NULL )
		{
			sprintf ( buf, "%s You must tell me where you wish to travel to.\r\n", 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\r\n", ch->name, travel_table[j].keyword );
					send_to_char ( buf, travel_mage );
					return;
				}
				ch->gold -= travel_table[j].cost;
				act ( AT_PLAIN, "$n disappears in a violet fog.\r\n", ch, NULL, NULL, TO_ROOM );
				sprintf ( buf, "You are surrounded by a violet fog.{x\r\n" );
				ch_printf ( ch, "%s", buf );
				//char_from_room ( ch );
				enter_map ( ch, travel_table[j].x, travel_table[j].y, travel_table[j].map );
				mount = ch->mount;
				if ( ch->mount != NULL && ch->mount->in_room == ch->in_room )
				{
					char_from_room ( mount );
					enter_map ( mount, travel_table[j].x, travel_table[j].y, travel_table[j].map );
					act ( AT_PLAIN, "&M$n disappears in a violet fog.&x\r\n", ch, NULL, NULL, TO_ROOM );
				}
				do_look ( ch, "" );
				return;
			}
		}
		send_to_char ( "Sorry, that location is not on the list.\r\n", 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.\r\n", 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--------------------------------------------------------------------------------\r\n", ch );
		send_to_char ( "&c  Keyword               Heals                                          Cost     \r\n", ch );
		send_to_char ( "&D--------------------------------------------------------------------------------\r\n", ch );
		send_to_char ( "&w  heal:                 Hit Points                                     100 gold \r\n", ch );
		send_to_char ( "&w  refresh:              Move Points                                    100 gold \r\n", ch );
		send_to_char ( "&w  mana:                 Mana Points                                    100 gold \r\n", ch );
		send_to_char ( "&D--------------------------------------------------------------------------------\r\n", ch );
		send_to_char ( "&w  Type heal <keyword> to be healed.\r\n", 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.\r\n", 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.\r\n", 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.\r\n", 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:\r\n", ch );
		send_to_char ( "  restring <Obj-Name> <Field> <String>\r\n", ch );
		send_to_char ( "    fields: name short long\r\n", ch );
		return;
	}
	if ( ( obj = get_obj_world ( ch, arg ) ) == NULL )
	{
		send_to_char ( "There is nothing like that in all the realms.\r\n", 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.\r\n", ch );
		return;
	}
	if ( ch->gold < 2000 )
	{
		send_to_char ( "&rYou do not have enough money to restring anything!\r\n", 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.\r\n", ch );
		ch->gold -= 2000;
		return;
	}
	if ( !str_cmp ( arg1, "short" ) )
	{
		STRFREE ( obj->short_descr );
		obj->short_descr = STRALLOC ( arg2 );
		send_to_char ( "Ok.\r\n", ch );
		ch->gold -= 2000;
		return;
	}
	if ( !str_cmp ( arg1, "long" ) )
	{
		STRFREE ( obj->description );
		obj->description = STRALLOC ( arg2 );
		send_to_char ( "Ok.\r\n", ch );
		ch->gold -= 2000;
		return;
	}
}