wet towel tweaks
When hitting with a wielded wet towel, use "you lash <mon>" like bullwhip. If you continue with the towel after it has dried out, message reverts to ordinary "you hit <mon>". Enhance damage slightly and double the wetness bonus when target is an iron golem. Damage was (tmp=rnd(1..7), max(tmp,6)); now it's rnd(1 + 1..7) for other monsters, rnd(1 + 2*(1..7)) for iron golem, with no cap of 6 for either. Sequencing: defer "your towel dries" until after the lash message.
This commit is contained in:
@@ -720,7 +720,8 @@ mark some messages as urgent ("You die*.", having equipment stolen, being
|
|||||||
if a leashed pet changed name (#name m) or an unnamed pet changed type
|
if a leashed pet changed name (#name m) or an unnamed pet changed type
|
||||||
(polymorph or grow-up) and perm_invent was On, persistent inventory
|
(polymorph or grow-up) and perm_invent was On, persistent inventory
|
||||||
display didn't get updated to show the leash's changed information
|
display didn't get updated to show the leash's changed information
|
||||||
attack feedback when using a bullwhip said "swing"; change to "lash"
|
attack feedback when using a bullwhip said "swing"; change to "lash";
|
||||||
|
use "lash" for hero hitting with wet towel too
|
||||||
attack feedback for monster using polearm when adjacent said "thrust"; change
|
attack feedback for monster using polearm when adjacent said "thrust"; change
|
||||||
to "bash"
|
to "bash"
|
||||||
apply runmode delay to multiturn actions, not just running
|
apply runmode delay to multiturn actions, not just running
|
||||||
@@ -753,6 +754,9 @@ change movement keys and some special keys into extended commands
|
|||||||
fix typo in message shown when hero sees a monster's wet towel become drier
|
fix typo in message shown when hero sees a monster's wet towel become drier
|
||||||
for hero with slippery fingers, enlightenment reports "slippery fingers" or
|
for hero with slippery fingers, enlightenment reports "slippery fingers" or
|
||||||
"slippery gloves" but self-probing described it as "slippery hands"
|
"slippery gloves" but self-probing described it as "slippery hands"
|
||||||
|
when hitting with wet towel causes it to lose some wetness, defer "your towel
|
||||||
|
dries" until after the hit message
|
||||||
|
do some extra damage when hitting an iron golem with a wet towel
|
||||||
|
|
||||||
|
|
||||||
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
Fixes to 3.7.0-x Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
49
src/uhitm.c
49
src/uhitm.c
@@ -744,7 +744,7 @@ hmon_hitmon(struct monst *mon,
|
|||||||
boolean ispoisoned = FALSE, needpoismsg = FALSE, poiskilled = FALSE,
|
boolean ispoisoned = FALSE, needpoismsg = FALSE, poiskilled = FALSE,
|
||||||
unpoisonmsg = FALSE;
|
unpoisonmsg = FALSE;
|
||||||
boolean silvermsg = FALSE, silverobj = FALSE;
|
boolean silvermsg = FALSE, silverobj = FALSE;
|
||||||
boolean lightobj = FALSE;
|
boolean lightobj = FALSE, dryit = FALSE;
|
||||||
boolean use_weapon_skill = FALSE, train_weapon_skill = FALSE;
|
boolean use_weapon_skill = FALSE, train_weapon_skill = FALSE;
|
||||||
boolean unarmed = !uwep && !uarm && !uarms;
|
boolean unarmed = !uwep && !uarm && !uarms;
|
||||||
boolean hand_to_hand = (thrown == HMON_MELEE
|
boolean hand_to_hand = (thrown == HMON_MELEE
|
||||||
@@ -1146,30 +1146,32 @@ hmon_hitmon(struct monst *mon,
|
|||||||
default:
|
default:
|
||||||
/* 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 + 99) / 100;
|
||||||
if (is_wet_towel(obj)) {
|
tmp = (tmp <= 1) ? 1 : rnd(tmp);
|
||||||
/* wielded wet towel should probably use whip skill
|
|
||||||
(but not by setting objects[TOWEL].oc_skill==P_WHIP
|
|
||||||
because that would turn towel into a weptool) */
|
|
||||||
tmp += obj->spe;
|
|
||||||
if (rn2(obj->spe + 1)) /* usually lose some wetness */
|
|
||||||
dry_a_towel(obj, -1, TRUE);
|
|
||||||
}
|
|
||||||
if (tmp < 1)
|
|
||||||
tmp = 1;
|
|
||||||
else
|
|
||||||
tmp = rnd(tmp);
|
|
||||||
if (tmp > 6)
|
if (tmp > 6)
|
||||||
tmp = 6;
|
tmp = 6;
|
||||||
/*
|
/* wet towel has modest damage bonus beyond its weight,
|
||||||
* Things like silver wands can arrive here so
|
based on its wetness */
|
||||||
* so we need another silver check.
|
if (is_wet_towel(obj)) {
|
||||||
*/
|
boolean doubld = (mon->data == &mons[PM_IRON_GOLEM]);
|
||||||
|
|
||||||
|
/* wielded wet towel should probably use whip skill
|
||||||
|
(but not by setting objects[TOWEL].oc_skill==P_WHIP
|
||||||
|
because that would turn towel into a weptool);
|
||||||
|
due to low weight, tmp always starts at 1 here, and
|
||||||
|
due to wet towel's definition, obj->spe is 1..7 */
|
||||||
|
tmp += obj->spe * (doubld ? 2 : 1);
|
||||||
|
tmp = rnd(tmp); /* wet towel damage not capped at 6 */
|
||||||
|
/* usually lose some wetness but defer doing so
|
||||||
|
until after hit message */
|
||||||
|
dryit = (rn2(obj->spe + 1) > 0);
|
||||||
|
}
|
||||||
|
/* things like silver wands can arrive here so
|
||||||
|
so we need another silver check */
|
||||||
if (objects[obj->otyp].oc_material == SILVER
|
if (objects[obj->otyp].oc_material == SILVER
|
||||||
&& mon_hates_silver(mon)) {
|
&& mon_hates_silver(mon)) {
|
||||||
tmp += rnd(20);
|
tmp += rnd(20);
|
||||||
silvermsg = TRUE;
|
silvermsg = silverobj = TRUE;
|
||||||
silverobj = TRUE;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1358,15 +1360,18 @@ hmon_hitmon(struct monst *mon,
|
|||||||
hit(mshot_xname(obj), mon, exclam(tmp));
|
hit(mshot_xname(obj), mon, exclam(tmp));
|
||||||
else if (!flags.verbose)
|
else if (!flags.verbose)
|
||||||
You("hit it.");
|
You("hit it.");
|
||||||
else
|
else /* hand_to_hand */
|
||||||
You("%s %s%s",
|
You("%s %s%s",
|
||||||
(obj && (is_shield(obj)
|
(obj && (is_shield(obj)
|
||||||
|| obj->otyp == HEAVY_IRON_BALL)) ? "bash"
|
|| obj->otyp == HEAVY_IRON_BALL)) ? "bash"
|
||||||
: (obj && obj->otyp == BULLWHIP) ? "lash" /* hand_to_hand */
|
: (obj && (obj->otyp == BULLWHIP
|
||||||
|
|| is_wet_towel(obj))) ? "lash"
|
||||||
: Role_if(PM_BARBARIAN) ? "smite"
|
: Role_if(PM_BARBARIAN) ? "smite"
|
||||||
: "hit",
|
: "hit",
|
||||||
mon_nam(mon), canseemon(mon) ? exclam(tmp) : ".");
|
mon_nam(mon), canseemon(mon) ? exclam(tmp) : ".");
|
||||||
}
|
}
|
||||||
|
if (dryit) /* dryit implies wet towel, so 'obj' is still intact */
|
||||||
|
dry_a_towel(obj, -1, TRUE);
|
||||||
|
|
||||||
if (silvermsg) {
|
if (silvermsg) {
|
||||||
const char *fmt;
|
const char *fmt;
|
||||||
|
|||||||
Reference in New Issue
Block a user