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