/***************************************************************************

Star Wars Life 3.0a
Dragon Skills and other Racial Shit

For credits please see 'help credits' in game.

(c) FRPG Ltd; 2001, 2002
All rights reserved
****************************************************************************/

#include <math.h> 
#include <sys/types.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <time.h>
#include "mud.h"

ch_ret  one_hit             args( ( CHAR_DATA *ch, CHAR_DATA *victim, int dt ) );

void do_dbreath( CHAR_DATA *ch, char *argument )
{
	CHAR_DATA *victim;
    char arg1 [MAX_INPUT_LENGTH];
    int dam;
    
    if ( ch->race != RACE_DUINUOGWUIN )
    {
      send_to_char( "Only dragons can breathe fire Moron!!\n\r" , ch );
      return;
    }
        if ( get_age(ch) <= 40)
    {
      send_to_char( "You can't breathe deep enough yet\n\r" , ch );
      return;
    }

    argument = one_argument( argument, arg1 );

    if ( arg1[0] == '\0' )
    {
   send_to_char( "Breathe on whom?\n\r", ch );
	return;
    }

    if ( ( victim = get_char_room( ch, arg1 ) ) == NULL )
    {
      send_to_char( "They aren't here.\n\r", ch );
      return;
    }

    if ( victim == ch )
    {
      send_to_char( "That's pointless.\n\r", ch );
      return;
    }

    if ( IS_SET( ch->in_room->room_flags, ROOM_SAFE ) )
    {
      set_char_color( AT_MAGIC, ch );
      send_to_char( "This isn't a good place to do that.\n\r", ch );
      return;
    }

    if ( ch->position <= POS_SLEEPING )
    {
      send_to_char( "In your dreams or what?\n\r" , ch );
      return;
    }

    
    if ( ch->move < ( ( ch->max_move / 10 ) + 1) )
    {
      send_to_char( "You're too tired to breathe hard enough!\n\r" , ch );
      return;
    }

    WAIT_STATE( ch,( skill_table[gsn_kick]->beats *3 ));
    dam = (ch->hit / 2.5) ;
    dam = ( dam * ( ( number_percent() * 2 ) / 100 ) ) - ( ch->hit / 8 );
    ch->move = ch->move - ( ch->max_move / 10 );
    act( AT_RED, "You take a deep breath, and breathe fire all over $N!!!\n\r", ch, NULL, victim, TO_CHAR );
    act( AT_RED, "$n takes a deep breath, and breathe fire all over you!!!\n\r", ch, NULL, victim, TO_VICT    );
    act( AT_RED, "$n takes a deep breath and spews forth intense flames at $N!!!\n\r",  ch, NULL, victim, TO_NOTVICT );
    noparry_damage( ch, victim, dam, gsn_fireball );
    return;
}


void do_slash( CHAR_DATA *ch, char *argument )
{
	CHAR_DATA *victim;
    char arg1 [MAX_INPUT_LENGTH];
    int dam;

    if ( ch->race != RACE_DUINUOGWUIN )
    {
      send_to_char( "Only dragons can slash with claws Moron!!\n\r" , ch );
      return;
    }
    
    if (get_age(ch) <= 30 )
    {
      send_to_char( "Your claws haven't hardened enough yet\n\r" , ch );
      return;
    }


    argument = one_argument( argument, arg1 );

    if ( arg1[0] == '\0' )
    {
   send_to_char( "Slash whom?\n\r", ch );
	return;
    }

    if ( ( victim = get_char_room( ch, arg1 ) ) == NULL )
    {
      send_to_char( "They aren't here.\n\r", ch );
      return;
    }

    if ( victim == ch )
    {
      send_to_char( "That's pointless.\n\r", ch );
      return;
    }

    if ( IS_SET( ch->in_room->room_flags, ROOM_SAFE ) )
    {
      set_char_color( AT_MAGIC, ch );
      send_to_char( "This isn't a good place to do that.\n\r", ch );
      return;
    }

    if ( ch->position <= POS_SLEEPING )
    {
      send_to_char( "In your dreams or what?\n\r" , ch );
      return;
    }

    
    if ( ch->move < ( ( ch->max_move / 30 ) + 1) )
    {
      send_to_char( "You're too tired to swing hard enough!\n\r" , ch );
      return;
    }

    WAIT_STATE( ch,( skill_table[gsn_kick]->beats));

    dam = ( ch->hit / 4);
    dam = ( dam * ( ( number_percent() * 2 ) / 100 ) ) - ( ch->hit / 8 );
    ch->move = ch->move - ( ch->max_move / 30 );
    act( AT_CYAN, "You rake $N with your claws!!!!\n\r", ch, NULL, victim, TO_CHAR );
    act( AT_CYAN,"$n slashes you with their claws!!!!!\n\r", ch, NULL, victim, TO_VICT    );
    act( AT_CYAN,"$n rakes $N with their claws!!!!!\n\r",  ch, NULL, victim, TO_NOTVICT );
    noparry_damage( ch, victim, dam, TYPE_UNDEFINED );
    return;
}