eldhamud/boards/
eldhamud/clans/
eldhamud/classes/
eldhamud/councils/
eldhamud/deity/
eldhamud/doc/
eldhamud/doc/DIKU/
eldhamud/doc/MERC/
eldhamud/doc/mudprogs/
eldhamud/houses/
eldhamud/src/o/CVS/
//
// C Implementation: commands.c
//
// Description: This c file will comtain any commands that dont realy have a permant home
//
//
// Author: robo <powell123@yahoo.com>, (C) 2005
//
//
//


#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "mud.h"
#include "commands.h"

void do_pk_toggle( CHAR_DATA *ch, char *argument )
{
    int cost=500000; /* Cost to change */
    CHAR_DATA *mob;
//    char arg[MAX_INPUT_LENGTH];
  //  cost = 100000;

 //   argument = one_argument( argument, arg );
    if ( argument[0] == '\0' )
    {
        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];

    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] == '\0' || !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, 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] == '\0')
        {
            sprintf(buf, "%s You must tell me where you wish to travel to.\n\r", ch->name);
            send_to_char(buf, travel_mage);
            return;
        }

        int j;

        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, 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,sn;
    SPELL_FUN *spell;
    char *words;	

    /* 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( "You can't do that here.\n\r", ch );
        return;
    }

    one_argument(argument,arg);

    if (arg[0] == '\0')
    {
        /* display price list */
	act(AT_PLAIN,"$N says 'I offer the following spells:'",ch,NULL,mob,TO_CHAR);
	send_to_char("  light: cure light wounds          1000 gold\n\r",ch);
	send_to_char("  serious: cure serious wounds      1500 gold\n\r",ch);
	send_to_char("  critical: cure critical wounds    2500 gold\n\r",ch);
	send_to_char("  heal: healing spell               5000 gold\n\r",ch);
	send_to_char("  blind: cure blindness             2000 gold\n\r",ch);
	send_to_char("  poison:  cure poison              2500 gold\n\r",ch); 
	send_to_char("  curse: remove curse               5000 gold\n\r",ch);
	send_to_char("  refresh: restore movement          500 gold\n\r",ch);
	send_to_char("  mana:  restore mana	          1000 gold\n\r",ch);
	send_to_char(" Type heal <type> to be healed.\n\r",ch);
	return;
    }

    if (!str_cmp(arg,"light"))
    {
        spell = spell_smaug;      
	sn    = skill_lookup("cure light");
	words = "judicandus dies";
	 cost  = 1000;
    }

    else if (!str_cmp(arg,"serious"))
    {
	spell = spell_smaug;       
	sn    = skill_lookup("cure serious");
	words = "judicandus gzfuajg";
	cost  = 1600;
    }

    else if (!str_cmp(arg,"critical"))
    {
	spell = spell_smaug;         
	sn    = skill_lookup("cure critical");
	words = "judicandus qfuhuqar";
	cost  = 2500;
    }

    else if (!str_cmp(arg,"heal"))
    {
	spell = spell_smaug;
	sn = skill_lookup("heal");
	words = "pzar";
	cost  = 5000;
    }

    else if (!str_cmp(arg,"blind"))
    {
	spell = spell_cure_blindness;
	sn    = skill_lookup("cure blindness");
      	words = "judicandus noselacri";		
        cost  = 2000;
    }

    else if (!str_cmp(arg,"poison"))
    {
	spell = spell_cure_poison;    
	sn    = skill_lookup("cure poison");
	words = "judicandus sausabru";
	cost  = 2500;
    }
	
    else if (!str_cmp(arg,"curse")) 
    {
	spell = spell_remove_curse; 
	sn    = skill_lookup("remove curse");
	words = "candussido judifgz";
	cost  = 5000;
    }

      else if (!str_cmp(arg,"mana")) 
     {
         spell = NULL;
         sn = -1;
         words = "energizer";
         cost = 1000;
     }
  
	
    else if (!str_cmp(arg,"refresh") )
    {
	spell =  spell_smaug;   
	sn    = skill_lookup("refresh");
	words = "candusima"; 
	cost  = 500;
    }

    else 
    {
	act(AT_PLAIN,"$N says ' Type 'heal' for a list of spells.'",
	    ch,NULL,mob,TO_CHAR);
	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;
    }

    WAIT_STATE(ch, PULSE_VIOLENCE);
    ch->gold -= cost;
act(AT_PLAIN,"$n utters the words '$T'.",mob,NULL,words,TO_ROOM);
  
    if (spell == NULL)  
   {
  	ch->mana += dice(2,8) +  ch->level / 3;  
	ch->mana += UMIN(ch->level,ch->max_mana - ch->mana);
	send_to_char("A warm glow passes through you.\n\r",ch);
	return;
    }

    if (sn == -1)
	return;
 
     spell(sn,ch->level,mob,ch);
}