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