diff -urwN ../nethack-3.4.1/src/dokick.c ./src/dokick.c --- ../nethack-3.4.1/src/dokick.c Sun Feb 23 11:43:26 2003 +++ ./src/dokick.c Fri Jun 20 19:32:07 2003 @@ -15,7 +15,7 @@ extern boolean notonhead; /* for long worms */ STATIC_DCL void FDECL(kickdmg, (struct monst *, BOOLEAN_P)); -STATIC_DCL void FDECL(kick_monster, (XCHAR_P, XCHAR_P)); +/* STATIC_DCL void FDECL(kick_monster, (XCHAR_P, XCHAR_P, BOOLEAN_P)); */ STATIC_DCL int FDECL(kick_object, (XCHAR_P, XCHAR_P)); STATIC_DCL char *FDECL(kickstr, (char *)); STATIC_DCL void FDECL(otransit_msg, (struct obj *, BOOLEAN_P, long)); @@ -114,9 +114,10 @@ use_skill(kick_skill, 1); } -STATIC_OVL void -kick_monster(x, y) +/*STATIC_OVL*/ void +kick_monster(x, y, check) register xchar x, y; +boolean check; { register boolean clumsy = FALSE; register struct monst *mon = m_at(x, y); @@ -124,7 +125,7 @@ bhitpos.x = x; bhitpos.y = y; - if (attack_checks(mon, (struct obj *)0)) return; + if (check && attack_checks(mon, (struct obj *)0)) return; setmangry(mon); /* Kick attacks by kicking monsters are normal attacks, not special. @@ -718,7 +719,7 @@ mdat = mtmp->data; if (!mtmp->mpeaceful || !canspotmon(mtmp)) flags.forcefight = TRUE; /* attack even if invisible */ - kick_monster(x, y); + kick_monster(x, y, TRUE); flags.forcefight = FALSE; /* see comment in attack_checks() */ if (!DEADMONSTER(mtmp) && diff -urwN ../nethack-3.4.1/src/dothrow.c ./src/dothrow.c --- ../nethack-3.4.1/src/dothrow.c Sun Feb 23 11:43:26 2003 +++ ./src/dothrow.c Fri Jun 20 19:32:15 2003 @@ -493,8 +493,13 @@ } if ((mon = m_at(x, y)) != 0) { - You("bump into %s.", a_monnam(mon)); + You("bump into %s.%s", a_monnam(mon), + (Role_if(PM_MONK)?" HIYAHH!":"")); wakeup(mon); + if Role_if(PM_MONK) { + kick_monster(x,y,FALSE); + mon->mstun = 1; + } return FALSE; } if ((u.ux - x) && (u.uy - y) &&