/************************************************************************
* *
* 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;
}