Original report: --- 8< --- 8< --- From: ejg3@cornell.edu (Eric Green) If you are fighting a mob which flees, you can still bash or kick it until the next pulse_violence rolls around, even though its in another room. You can fix this by adding a check (IN_ROOM(FIGHTING(ch)) == IN_ROOM(ch)) before setting vict to FIGHTING(ch). --- 8< --- 8< --- The IN_ROOM() problem is fixed by: diff -upr stk/act.offensive.c 171/act.offensive.c --- stk/act.offensive.c Sat Jun 6 16:00:59 1998 +++ 171/act.offensive.c Sat Jun 6 18:34:06 1998 @@ -288,7 +288,7 @@ ACMD(do_bash) return; } if (!(vict = get_char_room_vis(ch, arg))) { - if (FIGHTING(ch)) { + if (FIGHTING(ch) && IN_ROOM(ch) == IN_ROOM(FIGHTING(ch))) { vict = FIGHTING(ch); } else { send_to_char("Bash who?\r\n", ch); @@ -314,6 +314,9 @@ ACMD(do_bash) GET_POS(ch) = POS_SITTING; } else { damage(ch, vict, 1, SKILL_BASH); + /* + * There's a bug in the two lines below. We could fail bash and they sit. + */ GET_POS(vict) = POS_SITTING; WAIT_STATE(vict, PULSE_VIOLENCE); } Should that be "Bash who?" or "Bash whom?" -- George Greer, greerga@circlemud.org | Genius may have its limitations, but http://patches.van.ml.org/ | stupidity is not thus handicapped. http://www.van.ml.org/CircleMUD/ | -- Elbert Hubbard +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://democracy.queensu.ca/~fletcher/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST