Wet towels deal more damage
Dipping a towel into a potion, fountain, or some other water source makes the towel wet. Hitting with a wet towel deals up to 6 points of damage, but every hit reduces wetness, as does throwing or applying the towel. You can also wish for a moist or wet towel.
This commit is contained in:
@@ -1158,6 +1158,7 @@ stop travel or run when you get hungry
|
|||||||
debug-mode viewing of object weight
|
debug-mode viewing of object weight
|
||||||
prizes on various levels now protected by ?oSM scrolls as well as Elbereth
|
prizes on various levels now protected by ?oSM scrolls as well as Elbereth
|
||||||
regexes now use system libraries consistently for all pattern-matching systems
|
regexes now use system libraries consistently for all pattern-matching systems
|
||||||
|
wet towels deal more damage
|
||||||
|
|
||||||
|
|
||||||
Platform- and/or Interface-Specific New Features
|
Platform- and/or Interface-Specific New Features
|
||||||
|
|||||||
@@ -102,6 +102,7 @@ struct obj *obj;
|
|||||||
incr_itimeout(&Glib, rn1(10, 3));
|
incr_itimeout(&Glib, rn1(10, 3));
|
||||||
Your("%s %s!", makeplural(body_part(HAND)),
|
Your("%s %s!", makeplural(body_part(HAND)),
|
||||||
(old ? "are filthier than ever" : "get slimy"));
|
(old ? "are filthier than ever" : "get slimy"));
|
||||||
|
if (obj->spe > 0) obj->spe--;
|
||||||
return 1;
|
return 1;
|
||||||
case 1:
|
case 1:
|
||||||
if (!ublindf) {
|
if (!ublindf) {
|
||||||
@@ -127,6 +128,7 @@ struct obj *obj;
|
|||||||
dropx(saved_ublindf);
|
dropx(saved_ublindf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (obj->spe > 0) obj->spe--;
|
||||||
return 1;
|
return 1;
|
||||||
case 0:
|
case 0:
|
||||||
break;
|
break;
|
||||||
@@ -136,10 +138,12 @@ struct obj *obj;
|
|||||||
if (Glib) {
|
if (Glib) {
|
||||||
Glib = 0;
|
Glib = 0;
|
||||||
You("wipe off your %s.", makeplural(body_part(HAND)));
|
You("wipe off your %s.", makeplural(body_part(HAND)));
|
||||||
|
if (obj->spe > 0) obj->spe--;
|
||||||
return 1;
|
return 1;
|
||||||
} else if (u.ucreamed) {
|
} else if (u.ucreamed) {
|
||||||
Blinded -= u.ucreamed;
|
Blinded -= u.ucreamed;
|
||||||
u.ucreamed = 0;
|
u.ucreamed = 0;
|
||||||
|
if (obj->spe > 0) obj->spe--;
|
||||||
|
|
||||||
if (!Blinded) {
|
if (!Blinded) {
|
||||||
pline("You've got the glop off.");
|
pline("You've got the glop off.");
|
||||||
|
|||||||
@@ -87,6 +87,7 @@ int shotlimit;
|
|||||||
Sprintf(killer.name, "throwing %s bare-handed", killer_xname(obj));
|
Sprintf(killer.name, "throwing %s bare-handed", killer_xname(obj));
|
||||||
instapetrify(killer.name);
|
instapetrify(killer.name);
|
||||||
}
|
}
|
||||||
|
if (obj->otyp == TOWEL && obj->spe > 0) obj->spe--;
|
||||||
if (welded(obj)) {
|
if (welded(obj)) {
|
||||||
weldmsg(obj);
|
weldmsg(obj);
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@@ -308,6 +308,8 @@ unsigned cxn_flags; /* bitmask of CXN_xxx values */
|
|||||||
case TOOL_CLASS:
|
case TOOL_CLASS:
|
||||||
if (typ == LENSES)
|
if (typ == LENSES)
|
||||||
Strcpy(buf, "pair of ");
|
Strcpy(buf, "pair of ");
|
||||||
|
else if (typ == TOWEL && obj->spe > 0)
|
||||||
|
Strcpy(buf, (obj->spe < 3) ? "moist " : "wet ");
|
||||||
|
|
||||||
if (!dknown)
|
if (!dknown)
|
||||||
Strcat(buf, dn ? dn : actualn);
|
Strcat(buf, dn ? dn : actualn);
|
||||||
@@ -2399,6 +2401,7 @@ struct obj *no_wish;
|
|||||||
int halfeaten, mntmp, contents;
|
int halfeaten, mntmp, contents;
|
||||||
int islit, unlabeled, ishistoric, isdiluted, trapped;
|
int islit, unlabeled, ishistoric, isdiluted, trapped;
|
||||||
int tmp, tinv, tvariety;
|
int tmp, tinv, tvariety;
|
||||||
|
int wetness;
|
||||||
struct fruit *f;
|
struct fruit *f;
|
||||||
int ftype = context.current_fruit;
|
int ftype = context.current_fruit;
|
||||||
char fruitbuf[BUFSZ];
|
char fruitbuf[BUFSZ];
|
||||||
@@ -2432,6 +2435,7 @@ struct obj *no_wish;
|
|||||||
contents = UNDEFINED;
|
contents = UNDEFINED;
|
||||||
oclass = 0;
|
oclass = 0;
|
||||||
actualn = dn = un = 0;
|
actualn = dn = un = 0;
|
||||||
|
wetness = 0;
|
||||||
|
|
||||||
if (!bp)
|
if (!bp)
|
||||||
goto any;
|
goto any;
|
||||||
@@ -2472,6 +2476,12 @@ struct obj *no_wish;
|
|||||||
} else if (!strncmpi(bp, "blessed ", l = 8)
|
} else if (!strncmpi(bp, "blessed ", l = 8)
|
||||||
|| !strncmpi(bp, "holy ", l = 5)) {
|
|| !strncmpi(bp, "holy ", l = 5)) {
|
||||||
blessed = 1;
|
blessed = 1;
|
||||||
|
} else if (!strncmpi(bp, "moist ", l = 6)
|
||||||
|
|| !strncmpi(bp, "wet ", l = 4)) {
|
||||||
|
if (!strncmpi(bp, "wet ", 4))
|
||||||
|
wetness = rn2(3) + 3;
|
||||||
|
else
|
||||||
|
wetness = rnd(2);
|
||||||
} else if (!strncmpi(bp, "cursed ", l = 7)
|
} else if (!strncmpi(bp, "cursed ", l = 7)
|
||||||
|| !strncmpi(bp, "unholy ", l = 7)) {
|
|| !strncmpi(bp, "unholy ", l = 7)) {
|
||||||
iscursed = 1;
|
iscursed = 1;
|
||||||
@@ -3274,6 +3284,9 @@ typfnd:
|
|||||||
otmp->spe = 1;
|
otmp->spe = 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case TOWEL:
|
||||||
|
if (wetness) otmp->spe = wetness;
|
||||||
|
break;
|
||||||
case SLIME_MOLD:
|
case SLIME_MOLD:
|
||||||
otmp->spe = ftype;
|
otmp->spe = ftype;
|
||||||
/* Fall through */
|
/* Fall through */
|
||||||
|
|||||||
@@ -1933,6 +1933,12 @@ dodip()
|
|||||||
return (1);
|
return (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (potion->otyp == POT_WATER && obj->otyp == TOWEL) {
|
||||||
|
pline_The("towel soaks it up!");
|
||||||
|
/* wetting the towel already done via H2Opotion_dip */
|
||||||
|
goto poof;
|
||||||
|
}
|
||||||
|
|
||||||
if (is_poisonable(obj)) {
|
if (is_poisonable(obj)) {
|
||||||
if (potion->otyp == POT_SICKNESS && !obj->opoisoned) {
|
if (potion->otyp == POT_SICKNESS && !obj->opoisoned) {
|
||||||
char buf[BUFSZ];
|
char buf[BUFSZ];
|
||||||
|
|||||||
@@ -3307,6 +3307,9 @@ boolean force;
|
|||||||
|
|
||||||
if (obj->otyp == CAN_OF_GREASE && obj->spe > 0) {
|
if (obj->otyp == CAN_OF_GREASE && obj->spe > 0) {
|
||||||
return ER_NOTHING;
|
return ER_NOTHING;
|
||||||
|
} else if (obj->otyp == TOWEL && obj->spe < 7) {
|
||||||
|
obj->spe = max(obj->spe, rn2(8));
|
||||||
|
return ER_NOTHING;
|
||||||
} else if (obj->greased) {
|
} else if (obj->greased) {
|
||||||
if (!rn2(2))
|
if (!rn2(2))
|
||||||
obj->greased = 0;
|
obj->greased = 0;
|
||||||
|
|||||||
@@ -925,6 +925,10 @@ int thrown; /* HMON_xxx (0 => hand-to-hand, other => ranged) */
|
|||||||
/* non-weapons can damage because of their weight */
|
/* non-weapons can damage because of their weight */
|
||||||
/* (but not too much) */
|
/* (but not too much) */
|
||||||
tmp = obj->owt / 100;
|
tmp = obj->owt / 100;
|
||||||
|
if (obj->otyp == TOWEL && obj->spe > 0) { /* wet towel */
|
||||||
|
tmp += obj->spe;
|
||||||
|
obj->spe--;
|
||||||
|
}
|
||||||
if (tmp < 1)
|
if (tmp < 1)
|
||||||
tmp = 1;
|
tmp = 1;
|
||||||
else
|
else
|
||||||
|
|||||||
Reference in New Issue
Block a user