Im trying to add in a skill which changes the person youre fighting, but
only if its more than one person.
ex:
Player A and B both attack you. Player A is tanking for Player B. Redirect
Player B then makes them the tank.
Im missing something obviously because what happens is more or less you
get a cheap shot in on the victim you attempt to redirect to, but then go
back to the origional person. What am I missing here?
Here is the skill
ACMD(do_redirect)
{
struct char_data *vict;
int percent, prob;
one_argument(argument, arg);
if (IS_NPC(ch) || !GET_SKILL(ch, SKILL_REDIRECT)) {
send_to_char("You have no idea how to do that.\r\n", ch);
return;
} else if (!IS_NPC(ch) && !GET_SKILL(ch, SKILL_REDIRECT)) {
send_to_char("You don't know of that skill.\r\n", ch);
return;
}
if (!*arg)
send_to_char("Hit who?\r\n", ch);
else if (!(vict = get_char_room_vis(ch, arg)))
send_to_char("They don't seem to be here.\r\n", ch);
else if (vict == ch) {
send_to_char("You hit yourself...OUCH!.\r\n", ch);
act("$n hits $mself, and says OUCH!", FALSE, ch, 0, vict, TO_ROOM);
} else if (IS_AFFECTED(ch, AFF_CHARM) && (ch->master == vict))
act("$N is just such a good friend, you simply can't hit $M.", FALSE, ch, 0, vict, TO_CHAR);
else {
if (!pk_allowed) {
if (!IS_NPC(vict) && !IS_NPC(ch) && (subcmd != SCMD_MURDER)) {
send_to_char("Use 'murder' to hit another player.\r\n", ch);
return;
}
if (IS_AFFECTED(ch, AFF_CHARM) && !IS_NPC(ch->master) && !IS_NPC(vict))
return; /* you can't order a charmed pet to attack a
* player */
}
percent = number(1, 401); /* 101% is a complete failure */
if (IS_NPC(ch))
prob = 90;
else
prob = GET_SKILL(ch, SKILL_REDIRECT);
if (percent > prob) {
act("You try to change targets, but your current opponent keeps you busy!", FALSE, ch, 0, 0, TO_CHAR);
act("$n makes some desperate attempts to attack another opponent!", FALSE, ch, 0, 0, TO_ROOM );
WAIT_STATE (ch, PULSE_VIOLENCE * 2);
return;
}
act("You start fighting $N!", FALSE, ch, 0, vict, TO_CHAR);
act("$n starts fighting $N!", FALSE, ch, 0, vict, TO_NOTVICT);
act("$n starts fighting you!", FALSE, ch, 0, vict, TO_VICT);
hit(ch, vict, TYPE_UNDEFINED);
WAIT_STATE (ch, PULSE_VIOLENCE * 2);
}
}
--
+---------------------------------------------------------------+
| FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html |
| Archives: http://post.queensu.ca/listserv/wwwarch/circle.html |
+---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/06/01 PST