fallen/
fallen/new_stuff/
fallen/player/
fallen/player/backup/
fallen/player/store/
/************************************************************************
 *									*
 *	Djinn Class made for FE v2					*
 *	copyright(c) 2003 Matt "Eterared" Fox				*
 *	for more information, contact fallenempires2@hotmail.com	*
 * 									*
 ************************************************************************/

#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "player.h"

void do_dreamgain( CHAR_DATA *ch, char *argument )
{
    CHAR_DATA *victim;
    char      arg1 [MAX_INPUT_LENGTH];
    char      arg2 [MAX_INPUT_LENGTH];
    int       inpart = 0;
    int       cost = 0;

    smash_tilde(argument);
    argument = one_argument( argument, arg1 );
    argument = one_argument( argument, arg2 );

    if (IS_NPC(ch)) return;

	if ( !IS_CLASS(ch, CLASS_DJINN))
	{
	send_to_char("Huh?\n\r", ch);
	return;
	}
	

    if ( arg1[0] == '\0' || arg2[0] == '\0' )
    {
	send_to_char( "       ***** Djinn Dreams *****       \n\r\n\r", ch );
	send_to_char( "#pFangs       #y(2000)#n #r| #pShadowplane     #y   (0)#n\n\r", ch );
	send_to_char( "#pClaws       #y(2000)#n #r| #pDreamStrength   #y(7000)#n\n\r", ch );
	send_to_char( "#pTail        #y(5000)#n #r| #pDreamEndurance  #y(7000)#n\n\r", ch );
	send_to_char( "#pHorns       #y(2000)#n #r| #pDreamSpeed      #y(7000)#n\n\r", ch );
	send_to_char( "#pDragonWings #y(1000)#n #r| #pTransmute       #y(2000)#n\n\r", ch );
	send_to_char( "#pTruesight   #y(1000)#n #r| #pWish	     #y(2000)#n\n\r", ch );
	return;
    }

    if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
    {
	send_to_char( "Nobody by that name.\n\r", ch );
	return;
    }

    if ( IS_NPC(victim) )
    {
	send_to_char( "Not on NPC's.\n\r", ch );
	return;
    }
/* use demonic inpart instead of djinn gain because of laziness on my part  --Eterared */
    if (!str_cmp(arg2,"fangs")) 
	{inpart  = DJINN_FANGS; cost = 2500;}
    else if (!str_cmp(arg2,"claws")) 
	{inpart = DJINN_CLAWS; cost = 2500;}
    else if (!str_cmp(arg2,"horns")) 
	{inpart = DJINN_HORNS; cost = 2500;}
    else if (!str_cmp(arg2,"tail")) 
	{inpart = DJINN_TAIL; cost = 5000;}
    else if (!str_cmp(arg2,"dragonwings")) 
	{inpart = DEM_WINGS; cost = 1000;}
    else if (!str_cmp(arg2,"dreamstrength")) 
	{inpart = DJINN_STRENGTH; cost = 7000;}
    else if (!str_cmp(arg2,"dreamendurance")) 
	{inpart = DJINN_ENDUR; cost = 7000;}
    else if (!str_cmp(arg2,"dreamspeed"))
	{inpart = DJINN_SPEED; cost = 7500;}
    else if (!str_cmp(arg2,"transmute")) 
	{inpart = DJINN_TRAVEL; cost = 2000;}
    else if (!str_cmp(arg2,"shadowplane"))
	{inpart = DJINN_SHADOWPLANE; cost = 0;}
    else if (!str_cmp(arg2,"truesight")) 
	{inpart = DJINN_SHADOWSIGHT; cost = 1000;}
 
       else 
      {
       send_to_char( "       ***** Djinn Dreams *****       \n\r\n\r", ch );
       send_to_char( "#pFangs       #y(2000)#n #r| #pShadowplane     #y   (0)#n\n\r", ch );
       send_to_char( "#pClaws       #y(2000)#n #r| #pDreamStrength   #y(7000)#n\n\r", ch );
       send_to_char( "#pTail        #y(5000)#n #r| #pDreamEndurance  #y(7000)#n\n\r", ch );
       send_to_char( "#pHorns       #y(2000)#n #r| #pDreamSpeed      #y(7000)#n\n\r", ch );
       send_to_char( "#pDragonWings #y(1000)#n #r| #pTransmute       #y(2000)#n\n\r", ch );
       send_to_char( "#pTruesight   #y(1000)#n #r| #pWish           #y(2000)#n\n\r", ch );
        return;
    }

    if (IS_DREAMPOWER(victim, inpart))
    {
	send_to_char("They have already got that dream.\n\r",ch);
	return;
    }
    if (ch->pcdata->stats[DJINN_TOTAL] < cost || 
	ch->pcdata->stats[DJINN_CURRENT] < cost)
    {
	send_to_char("You have insufficient power to dream about that gift.\n\r",ch);
	return;
    }
    SET_BIT(victim->pcdata->powers[DREAMPOWER_FLAGS], inpart);
    ch->pcdata->stats[DJINN_CURRENT] -= cost;
    if (victim != ch) send_to_char("You have been granted a dream power by your master.\n\r",victim);
    send_to_char("Ok.\n\r",ch);
    if (victim != ch) save_char_obj(ch);
    save_char_obj(victim);
    return;
}
void do_transmute( CHAR_DATA *ch, char *argument )
{
    char      arg [MAX_INPUT_LENGTH];
    CHAR_DATA *victim;

    argument = one_argument( argument, arg );

    if (IS_NPC(ch)) return;

    if (IS_CLASS(ch, CLASS_DJINN))
    {
	if (!IS_DEMPOWER( ch, DJINN_TRAVEL))
	{
	    send_to_char("You haven't dreamt about transmuting yet.\n\r",ch);
	    return;
	}
    }
    else
    {
	send_to_char("Huh?\n\r",ch);
	return;
    }

    if ( ( victim = get_char_world( ch, arg ) ) == NULL )
    {
	send_to_char( "Nobody by that name.\n\r", ch );
	return;
    }
/*
    if ( IS_NPC(victim) )
    {
	send_to_char( "Not on NPC's.\n\r", ch );
	return;
    }
*/
    if ( victim == ch ) {
		send_to_char( "Nothing happens.\n\r", ch);
		return; }

/*
    if ( victim->level != LEVEL_AVATAR)
    {
	send_to_char( "Nothing happens.\n\r", ch );
	return;
    }
*/  
  if (victim->in_room == NULL)
    {
	send_to_char( "Nothing happens.\n\r", ch );
	return;
    }
    send_to_char("You wave your hand and dissapear.\n\r",ch);
    act("$n waves their hand and dissapears..",ch,NULL,NULL,TO_ROOM);
    char_from_room(ch);
    char_to_room(ch,victim->in_room);
    do_look(ch,"");
    send_to_char("You re-appear..\n\r",ch);
    act("$n pops in to existance in from of you.",ch,NULL,NULL,TO_ROOM);
    return;
}