#include <sys/types.h> #include <ctype.h> #include <math.h> #include <stdio.h> #include <string.h> #include <time.h> #include "mud.h" void do_eliminate( CHAR_DATA * ch, char *argument ) { char buf[MAX_STRING_LENGTH]; char arg[MAX_INPUT_LENGTH]; CHAR_DATA *victim; one_argument( argument, arg ); if( arg[0] == '\0' ) { send_to_char( "Spar whom?\n\r", ch ); return; } if( ( victim = get_char_room( ch, arg ) ) == NULL ) { send_to_char( "They aren't here.\n\r", ch ); return; } if( !IS_NPC( victim ) && !victim->desc ) { send_to_char( "They are link dead, it wouldn't be right.", ch ); return; } if( IS_NPC( victim ) ) { send_to_char( "You can only spar other players.", ch ); return; } if( victim == ch ) { send_to_char( "You can't spar your self.\n\r", ch ); return; } if( !IS_IMMORTAL( ch ) && !IS_NPC( ch ) && !IS_NPC( victim ) ) { if( !xIS_SET( ch->act, PLR_QUESTING ) && xIS_SET( victim->act, PLR_QUESTING ) ) { send_to_char( "You can't spar a player involved in a role playing event.\n\r", ch ); return; } if( xIS_SET( ch->act, PLR_QUESTING ) && !xIS_SET( victim->act, PLR_QUESTING ) ) { send_to_char( "You can't spar a player not involved in a role playing event.\n\r", ch ); return; } } if( !xIS_SET( ch->act, PLR_SPAR ) ) xSET_BIT( ch->act, PLR_SPAR ); if( !xIS_SET( victim->act, PLR_SPAR ) ) xSET_BIT( victim->act, PLR_SPAR ); if( is_safe( ch, victim, TRUE ) ) return; if( ch->position == POS_RESTING || ch->position == POS_SLEEPING || ch->position == POS_SITTING ) { send_to_char( "How do you propose to do that in your current state?\n\r", ch ); return; } if( ch->position == POS_FIGHTING || ch->position == POS_EVASIVE || ch->position == POS_DEFENSIVE || ch->position == POS_AGGRESSIVE || ch->position == POS_BERSERK ) { send_to_char( "You do the best you can!\n\r", ch ); return; } if( !xIS_SET( ch->in_room->room_flags, ROOM_ARENA ) ) { send_to_char( "You must be in an arena to spar someone.\n\r", ch ); return; } if( !IS_NPC( ch ) && !IS_NPC( victim ) && ch->exp <= 5000 ) { send_to_char( "You can not fight other players while you are in training.\n\r", ch ); return; } if( !IS_NPC( ch ) && !IS_NPC( victim ) && victim->exp <= 5000 ) { send_to_char( "You can not fight other players while they are in training.\n\r", ch ); return; } if( who_fighting( victim ) != NULL ) { send_to_char( "It would not be honorable to interfere with some one else's battle.\n\r", ch ); return; } if( !IS_NPC( ch ) && !IS_NPC( victim ) && victim->hit < 2 ) { send_to_char( "They are too hurt to fight anymore.\n\r", ch ); return; } if( !IS_NPC( ch ) && !IS_NPC( victim ) && ch->hit < 2 ) { send_to_char( "You are too hurt to fight anymore.\n\r", ch ); return; } if( !IS_NPC( ch ) && !IS_NPC( victim ) && !IS_HC( ch ) && !IS_HC( victim ) && xIS_SET( ch->act, PLR_SPAR ) && xIS_SET( victim->act, PLR_SPAR ) && ( ( IS_GOOD( ch ) && !IS_GOOD( victim ) ) || ( IS_EVIL( ch ) && !IS_EVIL( victim ) ) || ( IS_NEUTRAL( ch ) && !IS_NEUTRAL( victim ) ) ) ) { send_to_char( "You would not spar someone who is aligned that way.\n\r", ch ); return; } /* if( !victim->pcdata->HBTCPartner ) { send_to_char( "They are not accepting sparring partners at this time.\n\r", ch ); return; } if( strcasecmp( ch->name, victim->pcdata->HBTCPartner ) ) { send_to_char( "They do not want to spar with you.\n\r", ch ); return; }*/ WAIT_STATE( ch, 1 * PULSE_VIOLENCE ); if( !xIS_SET( ch->act, PLR_SPAR ) ) { sprintf( buf, "Help! I am being attacked by %s!", IS_NPC( ch ) ? ch->short_descr : ch->name ); if( IS_PKILL( victim ) ) { do_wartalk( victim, buf ); } else { do_yell( victim, buf ); } } check_illegal_pk( ch, victim ); ch->spar_start = ch->exp; victim->spar_start = victim->exp; ch->delay = 0; check_attacker( ch, victim ); multi_hit( ch, victim, TYPE_UNDEFINED ); return; }