/*************************************************************************** * OBLIVION 1.2 is copyright by Wes Wagner August, 1996 * * by using this code you have agreed to the terms of the Oblivion License* **************************************************************************/ #if defined(macintosh) #include <types.h> #include <time.h> #else #include <sys/types.h> #include <sys/time.h> #endif #include <stdio.h> #include <string.h> #include <stdlib.h> #include "merc.h" #include "magic.h" void do_channel(CHAR_DATA *ch, char *argument) { char arg1 [MAX_INPUT_LENGTH]; char arg2 [MAX_INPUT_LENGTH]; CHAR_DATA *victim; int roll, roll2; argument = one_argument( argument, arg1 ); argument = one_argument( argument, arg2 ); if (get_skill(ch,gsn_channel) < 1) { send_to_char("You have not the power in your soul.\n\r",ch); return; } if ( arg1[0] == '\0' ) { send_to_char("Channel how much?\n\r", ch); return ; } if (is_number(arg1) ) { int amount; amount = atoi(arg1); if (amount<1) { send_to_char("Yeah right!\n\r",ch); return ; } if(amount>ch->hit) { send_to_char("You can not channel more power then you have.\n\r",ch); return ; } if(arg2[0] == '\0' ) { ch->hit-=amount; update_pos(ch); roll=number_percent(); if(roll<get_skill(ch,gsn_channel)) { ch->mana+=amount; send_to_char("You feel physically exhausted.\n\r",ch); if(amount>99) check_improve(ch,gsn_channel,TRUE,14); return ; } else { send_to_char("You feel no gain from your rigorous attempts at power.\n\r",ch); if(amount>99) check_improve(ch,gsn_channel,FALSE,14); return ; } } else { roll=number_percent(); roll2=number_percent(); if( ( victim = get_char_world(ch, arg2)) == NULL ) { send_to_char("You send your power to nobody.\n\r",ch); return ; } if(amount>ch->mana) { send_to_char("You have not enough mana.\n\r", ch); return ; } if(roll<get_skill(ch,gsn_channel)) { if(get_skill(victim,gsn_channel)<1) { send_to_char("Your target had not the skill to recieve your power.\n\r",ch); ch->mana-=amount; return ; } if(roll2<get_skill(victim,gsn_channel)) { ch->mana-=amount; victim->mana+= amount*roll2/90; send_to_char("You send your power to him.\n\r",ch); send_to_char("You recieve magical power from an outer source.\n\r",victim); if(amount>99) check_improve(ch,gsn_channel,TRUE,14); if(amount>99) check_improve(victim,gsn_channel,TRUE,14); return ; } else { ch->mana-=amount; send_to_char("Your power is recieved by the inept who can not harnass it.\n\r",ch); if(amount>99) check_improve(ch,gsn_channel,FALSE,14); return ; } } else { send_to_char("You failed to send any power.\n\r",ch); if(amount>99) check_improve(ch,gsn_channel,TRUE,14); return ; } } } else { send_to_char("You must specify how much to channel in hit points or mana.\n\r",ch); return ; } return ; } void do_awareness(CHAR_DATA *ch, char *argument) { if(IS_NPC(ch)) return ; if (get_skill(ch,gsn_awareness) < 1) { send_to_char("Your sense are not that acute.\n\r",ch); return; } if(ch->pcdata->is_trying_aware) { ch->pcdata->is_trying_aware=FALSE; send_to_char("You let your guard down.\n\r",ch); } else { ch->pcdata->is_trying_aware=TRUE; send_to_char("You make yourself more paranoid.\n\r",ch); } return ; }