calculate engulf time differently for non-digestion attacks than for digestion
preform autopickup and/or report on objects at the spot when a failed #untrap
attempt causes the hero to move onto a trap's location
+thrown silver weapon hitting silver-hating poly'd hero got double silver damage
+wielded silver weapon hitting silver-hating poly'd hero lacked silver message
Platform- and/or Interface-Specific Fixes
E void FDECL(miss, (const char *,struct monst *));
E struct monst *FDECL(bhit, (int,int,int,int,int (*)(MONST_P,OBJ_P),
int (*)(OBJ_P,OBJ_P),struct obj **));
-E struct monst *FDECL(boomhit, (int,int));
+E struct monst *FDECL(boomhit, (struct obj *,int,int));
E int FDECL(burn_floor_paper, (int,int,BOOLEAN_P,BOOLEAN_P));
E void FDECL(buzz, (int,int,XCHAR_P,XCHAR_P,int,int));
E void FDECL(melt_ice, (XCHAR_P,XCHAR_P,const char *));
-/* SCCS Id: @(#)dothrow.c 3.5 2005/12/02 */
+/* SCCS Id: @(#)dothrow.c 3.5 2006/04/05 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
} else if(obj->otyp == BOOMERANG && !Underwater) {
if(Is_airlevel(&u.uz) || Levitation)
hurtle(-u.dx, -u.dy, 1, TRUE);
- mon = boomhit(u.dx, u.dy);
+ mon = boomhit(obj, u.dx, u.dy);
if(mon == &youmonst) { /* the thing was caught */
exercise(A_DEX, TRUE);
obj = addinv(obj);
artifact_hit(mtmp, &youmonst, otmp, &dmg,dieroll)))
hitmsg(mtmp, mattk);
if (!dmg) break;
+ if (objects[otmp->otyp].oc_material == SILVER &&
+ hates_silver(youmonst.data))
+ pline_The("silver sears your flesh!");
if (u.mh > 1 && u.mh > ((u.uac>0) ? dmg : dmg+u.uac) &&
objects[otmp->otyp].oc_material == IRON &&
(u.umonnum==PM_BLACK_PUDDING
if (obj && objects[obj->otyp].oc_material == SILVER
&& hates_silver(youmonst.data)) {
- dam += rnd(20);
+ /* extra damage already applied by dmgval() */
pline_The("silver sears your flesh!");
exercise(A_CON, FALSE);
}
-/* SCCS Id: @(#)zap.c 3.5 2006/01/30 */
+/* SCCS Id: @(#)zap.c 3.5 2006/04/05 */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/* NetHack may be freely redistributed. See license for details. */
}
struct monst *
-boomhit(dx, dy)
+boomhit(obj, dx, dy)
+struct obj *obj;
int dx, dy;
{
register int i, ct;
if(bhitpos.x == u.ux && bhitpos.y == u.uy) { /* ct == 9 */
if(Fumbling || rn2(20) >= ACURR(A_DEX)) {
/* we hit ourselves */
- (void) thitu(10, rnd(10), (struct obj *)0,
- "boomerang");
+ (void) thitu(10 + obj->spe,
+ dmgval(obj, &youmonst),
+ obj, "boomerang");
break;
} else { /* we catch it */
tmp_at(DISP_END, 0);