void do_circle (CHAR_DATA * ch, char *argument)
{
char arg[MAX_INPUT_LENGTH];
CHAR_DATA *victim;
OBJ_DATA *obj;
OBJ_DATA *wield1;
OBJ_DATA *wield2;
OBJ_DATA *wield3;
OBJ_DATA *wield4;
OBJ_DATA *wield5;
OBJ_DATA *wield6;
one_argument (argument, arg);
if (!IS_NPC (ch))
{
if (!IS_NINJA (ch) && !IS_ASSASSIN (ch))
{
send_to_char ("#cCircle can only be mastered by Ninjas and Assassins.#n\n\r", ch);
return;
}
if (!IS_ASSASSIN (ch) && IS_NINJA (ch) && ch->pcdata->powers[NPOWER_NINGENNO] < 6)
{
send_to_char ("#cCircle is a Ninja level 6 Ningenno Command#n\n\r", ch);
return;
}
if ((victim = get_char_room (ch, arg)) == NULL)
{
if (ch->fighting == NULL)
{
send_to_char ("They aren't here.\n\r", ch);
return;
}
else
victim = ch->fighting;
}
if (victim == ch)
{
send_to_char ("How can you circle yourself?\n\r", ch);
return;
}
if (is_safe (ch, victim))
return;
wield1 = get_eq_char( ch, WEAR_WIELD );
wield2 = get_eq_char( ch, WEAR_HOLD );
wield3 = get_eq_char( ch, WEAR_THIRD );
wield4 = get_eq_char( ch, WEAR_FOURTH);
wield5 = get_eq_char(ch, WEAR_TWO_HANDED);
wield6 = get_eq_char(ch, WEAR_TWO_HANDED2);
if (wield1 != NULL && (wield1->value[3] == 11
|| wield1->value[3] == 6 || wield1->value[3] == 18))
{
one_hit(ch, victim, gsn_circle, 1,0);
check_improve(ch, gsn_circle,TRUE,1);
if (number_percent() <= ch->pcdata->learned[gsn_dual_circle])
one_hit(ch, victim, gsn_dual_circle, 1,0);
if (ch->pcdata->learned[gsn_dual_circle] > 0)
check_improve(ch,gsn_dual_circle,TRUE,1);
}
if (wield2 != NULL && (wield2->value[3] == 11
|| wield2->value[3] == 6 || wield2->value[3] == 18))
{
one_hit(ch, victim, gsn_circle, 1,0);
check_improve(ch, gsn_circle,TRUE,1);
if (number_percent() <= ch->pcdata->learned[gsn_dual_circle])
one_hit(ch, victim, gsn_dual_circle, 1,0);
if (ch->pcdata->learned[gsn_dual_circle] > 0)
check_improve(ch,gsn_dual_circle,TRUE,1);
}
if (wield3 != NULL && (wield3->value[3] == 11
|| wield3->value[3] == 6 || wield3->value[3] == 18))
{
one_hit(ch, victim, gsn_circle, 1,0);
check_improve(ch, gsn_circle,TRUE,1);
if (number_percent() <= ch->pcdata->learned[gsn_dual_circle])
one_hit(ch, victim, gsn_dual_circle, 1,0);
if (ch->pcdata->learned[gsn_dual_circle] > 0)
check_improve(ch,gsn_dual_circle,TRUE,1);
}
if (wield4 != NULL && (wield4->value[3] == 11
|| wield4->value[3] == 6 || wield4->value[3] == 18))
{
one_hit(ch, victim, gsn_circle, 1,0);
check_improve(ch, gsn_circle,TRUE,1);
if (number_percent() <= ch->pcdata->learned[gsn_dual_circle])
one_hit(ch, victim, gsn_dual_circle, 1,0);
if (ch->pcdata->learned[gsn_dual_circle] > 0)
check_improve(ch,gsn_dual_circle,TRUE,1);
}
if (wield5 != NULL && (wield5->value[3] == 11
|| wield5->value[3] == 6 || wield5->value[3] == 18))
{
one_hit(ch, victim, gsn_circle, 1,0);
check_improve(ch, gsn_circle,TRUE,1);
if (number_percent() <= ch->pcdata->learned[gsn_dual_circle])
one_hit(ch, victim, gsn_dual_circle, 1,0);
if (ch->pcdata->learned[gsn_dual_circle] > 0)
check_improve(ch,gsn_dual_circle,TRUE,1);
}
if (wield6 != NULL && (wield6->value[3] == 11
|| wield6->value[3] == 6 || wield6->value[3] == 18))
{
one_hit(ch, victim, gsn_circle, 1,0);
check_improve(ch, gsn_circle,TRUE,1);
if (number_percent() <= ch->pcdata->learned[gsn_dual_circle])
one_hit(ch, victim, gsn_dual_circle, 1,0);
if (ch->pcdata->learned[gsn_dual_circle] > 0)
check_improve(ch,gsn_dual_circle,TRUE,1);
}
}
else if (IS_NPC(ch))
{
one_hit(ch, victim, gsn_circle, 1,0);
one_hit(ch, victim, gsn_circle, 1,0);
one_hit(ch, victim, gsn_circle, 1,0);
one_hit(ch, victim, gsn_circle, 1,0);
one_hit(ch, victim, gsn_circle, 1,0);
}
WAIT_STATE (ch, 12);
return;
}