Half_physical_damage 05
- [fixed in trunk] Jumping/Newton's-Thirding into something solid - [fixed in trunk] Being hit by Mjollnir on the return - [fixed in trunk] Contaminated or boiling water from a sink - [fixed in trunk] Falling on a sink while levitating - [fixed in trunk, fire only] Any passive attack - [fixed in trunk] Zapping yourself with a wand, horn or spell - [fixed in trunk] Burning (un)holy water - [fixed in trunk] Thrown potion (bottle) - [fixed in trunk] Bumping head on ceiling by cursed levitation - [fixed in trunk] Exploding rings and wands (under all circumstances) - [fixed in trunk] Stinking cloud damage - [fixed in trunk] Sitting in a spiked pit, in lava - [fixed in trunk] Exploding spellbooks - [fixed in trunk] Falling off or failing to mount a steed - [fixed in trunk] Falling into a (spiked) pit - [fixed in trunk] Land mine explosion - [fixed in trunk] Fire traps
This commit is contained in:
+2
-1
@@ -1310,7 +1310,8 @@ int magic; /* 0=Physical, otherwise skill level */
|
|||||||
case TT_BEARTRAP: {
|
case TT_BEARTRAP: {
|
||||||
register long side = rn2(3) ? LEFT_SIDE : RIGHT_SIDE;
|
register long side = rn2(3) ? LEFT_SIDE : RIGHT_SIDE;
|
||||||
You("rip yourself free of the bear trap! Ouch!");
|
You("rip yourself free of the bear trap! Ouch!");
|
||||||
losehp(rnd(10), "jumping out of a bear trap", KILLED_BY);
|
losehp(Maybe_Half_Phys(rnd(10)),
|
||||||
|
"jumping out of a bear trap", KILLED_BY);
|
||||||
set_wounded_legs(side, rn1(1000,500));
|
set_wounded_legs(side, rn1(1000,500));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,10 +97,12 @@ boolean pushing;
|
|||||||
vision_full_recalc = 1;
|
vision_full_recalc = 1;
|
||||||
You("find yourself on dry land again!");
|
You("find yourself on dry land again!");
|
||||||
} else if (lava && distu(rx,ry) <= 2) {
|
} else if (lava && distu(rx,ry) <= 2) {
|
||||||
|
int dmg;
|
||||||
You("are hit by molten lava%c",
|
You("are hit by molten lava%c",
|
||||||
Fire_resistance ? '.' : '!');
|
Fire_resistance ? '.' : '!');
|
||||||
burn_away_slime();
|
burn_away_slime();
|
||||||
losehp(d((Fire_resistance ? 1 : 3), 6),
|
dmg = d((Fire_resistance ? 1 : 3), 6);
|
||||||
|
losehp(Maybe_Half_Phys(dmg),
|
||||||
"molten lava", KILLED_BY);
|
"molten lava", KILLED_BY);
|
||||||
} else if (!fills_up && flags.verbose &&
|
} else if (!fills_up && flags.verbose &&
|
||||||
(pushing ? !Blind : cansee(rx,ry)))
|
(pushing ? !Blind : cansee(rx,ry)))
|
||||||
@@ -1158,7 +1160,8 @@ boolean at_stairs, falling, portal;
|
|||||||
dismount_steed(DISMOUNT_FELL);
|
dismount_steed(DISMOUNT_FELL);
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
losehp(rnd(3), "falling downstairs", KILLED_BY);
|
losehp(Maybe_Half_Phys(rnd(3)),
|
||||||
|
"falling downstairs", KILLED_BY);
|
||||||
selftouch("Falling, you");
|
selftouch("Falling, you");
|
||||||
} else if (u.dz && at_ladder)
|
} else if (u.dz && at_ladder)
|
||||||
You("climb down the ladder.");
|
You("climb down the ladder.");
|
||||||
|
|||||||
+14
-6
@@ -453,6 +453,7 @@ hurtle_step(arg, x, y)
|
|||||||
struct monst *mon;
|
struct monst *mon;
|
||||||
boolean may_pass = TRUE;
|
boolean may_pass = TRUE;
|
||||||
struct trap *ttmp;
|
struct trap *ttmp;
|
||||||
|
int dmg = 0;
|
||||||
|
|
||||||
if (!isok(x,y)) {
|
if (!isok(x,y)) {
|
||||||
You_feel("the spirits holding you back.");
|
You_feel("the spirits holding you back.");
|
||||||
@@ -474,23 +475,28 @@ hurtle_step(arg, x, y)
|
|||||||
s = "bumping into a wall";
|
s = "bumping into a wall";
|
||||||
else
|
else
|
||||||
s = "bumping into a door";
|
s = "bumping into a door";
|
||||||
losehp(rnd(2+*range), s, KILLED_BY);
|
dmg = rnd(2+*range);
|
||||||
|
losehp(Maybe_Half_Phys(dmg), s, KILLED_BY);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (levl[x][y].typ == IRONBARS) {
|
if (levl[x][y].typ == IRONBARS) {
|
||||||
You("crash into some iron bars. Ouch!");
|
You("crash into some iron bars. Ouch!");
|
||||||
losehp(rnd(2+*range), "crashing into iron bars", KILLED_BY);
|
dmg = rnd(2+*range);
|
||||||
|
losehp(Maybe_Half_Phys(dmg), "crashing into iron bars", KILLED_BY);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if ((obj = sobj_at(BOULDER,x,y)) != 0) {
|
if ((obj = sobj_at(BOULDER,x,y)) != 0) {
|
||||||
You("bump into a %s. Ouch!", xname(obj));
|
You("bump into a %s. Ouch!", xname(obj));
|
||||||
losehp(rnd(2+*range), "bumping into a boulder", KILLED_BY);
|
dmg = rnd(2+*range);
|
||||||
|
losehp(Maybe_Half_Phys(dmg), "bumping into a boulder", KILLED_BY);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (!may_pass) {
|
if (!may_pass) {
|
||||||
/* did we hit a no-dig non-wall position? */
|
/* did we hit a no-dig non-wall position? */
|
||||||
You("smack into something!");
|
You("smack into something!");
|
||||||
losehp(rnd(2+*range), "touching the edge of the universe", KILLED_BY);
|
dmg = rnd(2+*range);
|
||||||
|
losehp(Maybe_Half_Phys(dmg), "touching the edge of the universe",
|
||||||
|
KILLED_BY);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if ((u.ux - x) && (u.uy - y) &&
|
if ((u.ux - x) && (u.uy - y) &&
|
||||||
@@ -500,7 +506,9 @@ hurtle_step(arg, x, y)
|
|||||||
if (bigmonst(youmonst.data) || too_much) {
|
if (bigmonst(youmonst.data) || too_much) {
|
||||||
You("%sget forcefully wedged into a crevice.",
|
You("%sget forcefully wedged into a crevice.",
|
||||||
too_much ? "and all your belongings " : "");
|
too_much ? "and all your belongings " : "");
|
||||||
losehp(rnd(2+*range), "wedging into a narrow crevice", KILLED_BY);
|
dmg = rnd(2+*range);
|
||||||
|
losehp(Maybe_Half_Phys(dmg), "wedging into a narrow crevice",
|
||||||
|
KILLED_BY);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1048,7 +1056,7 @@ boolean twoweap; /* used to restore twoweapon mode if wielded weapon returns */
|
|||||||
body_part(ARM));
|
body_part(ARM));
|
||||||
(void) artifact_hit((struct monst *)0,
|
(void) artifact_hit((struct monst *)0,
|
||||||
&youmonst, obj, &dmg, 0);
|
&youmonst, obj, &dmg, 0);
|
||||||
losehp(dmg, xname(obj),
|
losehp(Maybe_Half_Phys(dmg), xname(obj),
|
||||||
obj_is_pname(obj) ? KILLED_BY : KILLED_BY_AN);
|
obj_is_pname(obj) ? KILLED_BY : KILLED_BY_AN);
|
||||||
}
|
}
|
||||||
if (ship_object(obj, u.ux, u.uy, FALSE)) {
|
if (ship_object(obj, u.ux, u.uy, FALSE)) {
|
||||||
|
|||||||
+4
-2
@@ -446,6 +446,7 @@ STATIC_OVL void
|
|||||||
dosinkfall()
|
dosinkfall()
|
||||||
{
|
{
|
||||||
register struct obj *obj;
|
register struct obj *obj;
|
||||||
|
int dmg;
|
||||||
|
|
||||||
if (is_floater(youmonst.data) || (HLevitation & FROMOUTSIDE)) {
|
if (is_floater(youmonst.data) || (HLevitation & FROMOUTSIDE)) {
|
||||||
You("wobble unsteadily for a moment.");
|
You("wobble unsteadily for a moment.");
|
||||||
@@ -458,14 +459,15 @@ dosinkfall()
|
|||||||
are really still worn has no effect on bones data */
|
are really still worn has no effect on bones data */
|
||||||
ELevitation = HLevitation = 0L;
|
ELevitation = HLevitation = 0L;
|
||||||
You("crash to the floor!");
|
You("crash to the floor!");
|
||||||
losehp(rn1(8, 25 - (int)ACURR(A_CON)),
|
dmg = rn1(8, 25 - (int)ACURR(A_CON));
|
||||||
|
losehp(Maybe_Half_Phys(dmg),
|
||||||
fell_on_sink, NO_KILLER_PREFIX);
|
fell_on_sink, NO_KILLER_PREFIX);
|
||||||
exercise(A_DEX, FALSE);
|
exercise(A_DEX, FALSE);
|
||||||
selftouch("Falling, you");
|
selftouch("Falling, you");
|
||||||
for (obj = level.objects[u.ux][u.uy]; obj; obj = obj->nexthere)
|
for (obj = level.objects[u.ux][u.uy]; obj; obj = obj->nexthere)
|
||||||
if (obj->oclass == WEAPON_CLASS || is_weptool(obj)) {
|
if (obj->oclass == WEAPON_CLASS || is_weptool(obj)) {
|
||||||
You("fell on %s.", doname(obj));
|
You("fell on %s.", doname(obj));
|
||||||
losehp(rnd(3), fell_on_sink, NO_KILLER_PREFIX);
|
losehp(Maybe_Half_Phys(rnd(3)), fell_on_sink, NO_KILLER_PREFIX);
|
||||||
exercise(A_CON, FALSE);
|
exercise(A_CON, FALSE);
|
||||||
}
|
}
|
||||||
ELevitation = save_ELev;
|
ELevitation = save_ELev;
|
||||||
|
|||||||
+7
-2
@@ -325,7 +325,8 @@ do_pit: chasm = maketrap(x,y,PIT);
|
|||||||
You("fall into a chasm!");
|
You("fall into a chasm!");
|
||||||
u.utrap = rn1(6,2);
|
u.utrap = rn1(6,2);
|
||||||
u.utraptype = TT_PIT;
|
u.utraptype = TT_PIT;
|
||||||
losehp(rnd(6),"fell into a chasm",
|
losehp(Maybe_Half_Phys(rnd(6)),
|
||||||
|
"fell into a chasm",
|
||||||
NO_KILLER_PREFIX);
|
NO_KILLER_PREFIX);
|
||||||
selftouch("Falling, you");
|
selftouch("Falling, you");
|
||||||
}
|
}
|
||||||
@@ -354,6 +355,7 @@ do_improvisation(instr)
|
|||||||
struct obj *instr;
|
struct obj *instr;
|
||||||
{
|
{
|
||||||
int damage, do_spec = !Confusion;
|
int damage, do_spec = !Confusion;
|
||||||
|
boolean physical_damage = FALSE;
|
||||||
#if defined(MAC) || defined(AMIGA) || defined(VPIX_MUSIC) || defined (PCMUSIC)
|
#if defined(MAC) || defined(AMIGA) || defined(VPIX_MUSIC) || defined (PCMUSIC)
|
||||||
struct obj itmp;
|
struct obj itmp;
|
||||||
|
|
||||||
@@ -397,8 +399,10 @@ struct obj *instr;
|
|||||||
if (do_spec) charm_snakes(u.ulevel * 3);
|
if (do_spec) charm_snakes(u.ulevel * 3);
|
||||||
exercise(A_DEX, TRUE);
|
exercise(A_DEX, TRUE);
|
||||||
break;
|
break;
|
||||||
case FROST_HORN: /* Idem wand of cold */
|
|
||||||
case FIRE_HORN: /* Idem wand of fire */
|
case FIRE_HORN: /* Idem wand of fire */
|
||||||
|
physical_damage = TRUE;
|
||||||
|
/* fall through */
|
||||||
|
case FROST_HORN: /* Idem wand of cold */
|
||||||
if (do_spec && instr->spe > 0) {
|
if (do_spec && instr->spe > 0) {
|
||||||
consume_obj_charge(instr, TRUE);
|
consume_obj_charge(instr, TRUE);
|
||||||
|
|
||||||
@@ -409,6 +413,7 @@ struct obj *instr;
|
|||||||
if ((damage = zapyourself(instr, TRUE)) != 0) {
|
if ((damage = zapyourself(instr, TRUE)) != 0) {
|
||||||
char buf[BUFSZ];
|
char buf[BUFSZ];
|
||||||
Sprintf(buf, "using a magical horn on %sself", uhim());
|
Sprintf(buf, "using a magical horn on %sself", uhim());
|
||||||
|
if (physical_damage) damage = Maybe_Half_Phys(damage);
|
||||||
losehp(damage, buf, KILLED_BY);
|
losehp(damage, buf, KILLED_BY);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
+7
-4
@@ -474,7 +474,8 @@ peffects(otmp)
|
|||||||
you_unwere(FALSE);
|
you_unwere(FALSE);
|
||||||
u.ulycn = NON_PM; /* cure lycanthropy */
|
u.ulycn = NON_PM; /* cure lycanthropy */
|
||||||
}
|
}
|
||||||
losehp(d(2,6), "potion of holy water", KILLED_BY_AN);
|
losehp(Maybe_Half_Phys(d(2,6)),
|
||||||
|
"potion of holy water", KILLED_BY_AN);
|
||||||
} else if(otmp->cursed) {
|
} else if(otmp->cursed) {
|
||||||
You_feel("quite proud of yourself.");
|
You_feel("quite proud of yourself.");
|
||||||
healup(d(2,6),0,0,0);
|
healup(d(2,6),0,0,0);
|
||||||
@@ -493,7 +494,8 @@ peffects(otmp)
|
|||||||
} else {
|
} else {
|
||||||
if(u.ualign.type == A_LAWFUL) {
|
if(u.ualign.type == A_LAWFUL) {
|
||||||
pline("This burns like acid!");
|
pline("This burns like acid!");
|
||||||
losehp(d(2,6), "potion of unholy water",
|
losehp(Maybe_Half_Phys(d(2,6)),
|
||||||
|
"potion of unholy water",
|
||||||
KILLED_BY_AN);
|
KILLED_BY_AN);
|
||||||
} else
|
} else
|
||||||
You_feel("full of dread.");
|
You_feel("full of dread.");
|
||||||
@@ -835,10 +837,11 @@ peffects(otmp)
|
|||||||
&& (u.ux != sstairs.sx || u.uy != sstairs.sy || !sstairs.up)
|
&& (u.ux != sstairs.sx || u.uy != sstairs.sy || !sstairs.up)
|
||||||
&& (!xupladder || u.ux != xupladder || u.uy != yupladder)
|
&& (!xupladder || u.ux != xupladder || u.uy != yupladder)
|
||||||
) {
|
) {
|
||||||
|
int dmg = uarmh ? 1 : rnd(10);
|
||||||
You("hit your %s on the %s.",
|
You("hit your %s on the %s.",
|
||||||
body_part(HEAD),
|
body_part(HEAD),
|
||||||
ceiling(u.ux,u.uy));
|
ceiling(u.ux,u.uy));
|
||||||
losehp(uarmh ? 1 : rnd(10),
|
losehp(Maybe_Half_Phys(dmg),
|
||||||
"colliding with the ceiling",
|
"colliding with the ceiling",
|
||||||
KILLED_BY);
|
KILLED_BY);
|
||||||
} else (void) doup();
|
} else (void) doup();
|
||||||
@@ -976,7 +979,7 @@ boolean your_fault;
|
|||||||
distance = 0;
|
distance = 0;
|
||||||
pline_The("%s crashes on your %s and breaks into shards.",
|
pline_The("%s crashes on your %s and breaks into shards.",
|
||||||
botlnam, body_part(HEAD));
|
botlnam, body_part(HEAD));
|
||||||
losehp(rnd(2), "thrown potion", KILLED_BY_AN);
|
losehp(Maybe_Half_Phys(rnd(2)), "thrown potion", KILLED_BY_AN);
|
||||||
} else {
|
} else {
|
||||||
distance = distu(mon->mx,mon->my);
|
distance = distu(mon->mx,mon->my);
|
||||||
if (!cansee(mon->mx,mon->my)) pline("Crash!");
|
if (!cansee(mon->mx,mon->my)) pline("Crash!");
|
||||||
|
|||||||
+1
-1
@@ -912,7 +912,7 @@ genericptr_t p2;
|
|||||||
if (!Poison_resistance) {
|
if (!Poison_resistance) {
|
||||||
pline("%s is burning your %s!", Something, makeplural(body_part(LUNG)));
|
pline("%s is burning your %s!", Something, makeplural(body_part(LUNG)));
|
||||||
You("cough and spit blood!");
|
You("cough and spit blood!");
|
||||||
losehp(rnd(dam) + 5, "gas cloud", KILLED_BY_AN);
|
losehp(Maybe_Half_Phys(rnd(dam) + 5), "gas cloud", KILLED_BY_AN);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
} else {
|
} else {
|
||||||
You("cough!");
|
You("cough!");
|
||||||
|
|||||||
@@ -79,7 +79,8 @@ dosit()
|
|||||||
} else if(u.utraptype == TT_PIT) {
|
} else if(u.utraptype == TT_PIT) {
|
||||||
if(trap->ttyp == SPIKED_PIT) {
|
if(trap->ttyp == SPIKED_PIT) {
|
||||||
You("sit down on a spike. Ouch!");
|
You("sit down on a spike. Ouch!");
|
||||||
losehp(1, "sitting on an iron spike", KILLED_BY);
|
losehp(Half_physical_damage ? rn2(2) : 1,
|
||||||
|
"sitting on an iron spike", KILLED_BY);
|
||||||
exercise(A_STR, FALSE);
|
exercise(A_STR, FALSE);
|
||||||
} else
|
} else
|
||||||
You("sit down in the pit.");
|
You("sit down in the pit.");
|
||||||
|
|||||||
+12
-2
@@ -107,6 +107,7 @@ cursed_book(bp)
|
|||||||
struct obj *bp;
|
struct obj *bp;
|
||||||
{
|
{
|
||||||
int lev = objects[bp->otyp].oc_level;
|
int lev = objects[bp->otyp].oc_level;
|
||||||
|
int dmg = 0;
|
||||||
|
|
||||||
switch(rn2(lev)) {
|
switch(rn2(lev)) {
|
||||||
case 0:
|
case 0:
|
||||||
@@ -161,7 +162,8 @@ cursed_book(bp)
|
|||||||
} else {
|
} else {
|
||||||
pline("As you read the book, it %s in your %s!",
|
pline("As you read the book, it %s in your %s!",
|
||||||
explodes, body_part(FACE));
|
explodes, body_part(FACE));
|
||||||
losehp(2*rnd(10)+5, "exploding rune", KILLED_BY_AN);
|
dmg = 2*rnd(10)+5;
|
||||||
|
losehp(Maybe_Half_Phys(dmg), "exploding rune", KILLED_BY_AN);
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
default:
|
default:
|
||||||
@@ -726,6 +728,7 @@ boolean atme;
|
|||||||
int energy, damage, chance, n, intell;
|
int energy, damage, chance, n, intell;
|
||||||
int skill, role_skill;
|
int skill, role_skill;
|
||||||
boolean confused = (Confusion != 0);
|
boolean confused = (Confusion != 0);
|
||||||
|
boolean physical_damage = FALSE;
|
||||||
struct obj *pseudo;
|
struct obj *pseudo;
|
||||||
coord cc;
|
coord cc;
|
||||||
|
|
||||||
@@ -833,8 +836,10 @@ boolean atme;
|
|||||||
* effects, e.g. more damage, further distance, and so on, without
|
* effects, e.g. more damage, further distance, and so on, without
|
||||||
* additional cost to the spellcaster.
|
* additional cost to the spellcaster.
|
||||||
*/
|
*/
|
||||||
case SPE_CONE_OF_COLD:
|
|
||||||
case SPE_FIREBALL:
|
case SPE_FIREBALL:
|
||||||
|
physical_damage = TRUE;
|
||||||
|
/* fall through */
|
||||||
|
case SPE_CONE_OF_COLD:
|
||||||
if (role_skill >= P_SKILLED) {
|
if (role_skill >= P_SKILLED) {
|
||||||
if (throwspell()) {
|
if (throwspell()) {
|
||||||
cc.x=u.dx;cc.y=u.dy;
|
cc.x=u.dx;cc.y=u.dy;
|
||||||
@@ -844,6 +849,8 @@ boolean atme;
|
|||||||
if ((damage = zapyourself(pseudo, TRUE)) != 0) {
|
if ((damage = zapyourself(pseudo, TRUE)) != 0) {
|
||||||
char buf[BUFSZ];
|
char buf[BUFSZ];
|
||||||
Sprintf(buf, "zapped %sself with a spell", uhim());
|
Sprintf(buf, "zapped %sself with a spell", uhim());
|
||||||
|
if (physical_damage)
|
||||||
|
damage = Maybe_Half_Phys(damage);
|
||||||
losehp(damage, buf, NO_KILLER_PREFIX);
|
losehp(damage, buf, NO_KILLER_PREFIX);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -867,6 +874,8 @@ boolean atme;
|
|||||||
|
|
||||||
/* these spells are all duplicates of wand effects */
|
/* these spells are all duplicates of wand effects */
|
||||||
case SPE_FORCE_BOLT:
|
case SPE_FORCE_BOLT:
|
||||||
|
physical_damage = TRUE;
|
||||||
|
/* fall through */
|
||||||
case SPE_SLEEP:
|
case SPE_SLEEP:
|
||||||
case SPE_MAGIC_MISSILE:
|
case SPE_MAGIC_MISSILE:
|
||||||
case SPE_KNOCK:
|
case SPE_KNOCK:
|
||||||
@@ -894,6 +903,7 @@ boolean atme;
|
|||||||
if ((damage = zapyourself(pseudo, TRUE)) != 0) {
|
if ((damage = zapyourself(pseudo, TRUE)) != 0) {
|
||||||
char buf[BUFSZ];
|
char buf[BUFSZ];
|
||||||
Sprintf(buf, "zapped %sself with a spell", uhim());
|
Sprintf(buf, "zapped %sself with a spell", uhim());
|
||||||
|
if (physical_damage) damage = Maybe_Half_Phys(damage);
|
||||||
losehp(damage, buf, NO_KILLER_PREFIX);
|
losehp(damage, buf, NO_KILLER_PREFIX);
|
||||||
}
|
}
|
||||||
} else weffects(pseudo);
|
} else weffects(pseudo);
|
||||||
|
|||||||
+2
-2
@@ -324,7 +324,7 @@ mount_steed(mtmp, force)
|
|||||||
x_monnam(mtmp, ARTICLE_A, (char *)0,
|
x_monnam(mtmp, ARTICLE_A, (char *)0,
|
||||||
SUPPRESS_IT|SUPPRESS_INVISIBLE|SUPPRESS_HALLUCINATION,
|
SUPPRESS_IT|SUPPRESS_INVISIBLE|SUPPRESS_HALLUCINATION,
|
||||||
TRUE));
|
TRUE));
|
||||||
losehp(rn1(5,10), buf, NO_KILLER_PREFIX);
|
losehp(Maybe_Half_Phys(rn1(5,10)), buf, NO_KILLER_PREFIX);
|
||||||
return (FALSE);
|
return (FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -483,7 +483,7 @@ dismount_steed(reason)
|
|||||||
case DISMOUNT_FELL:
|
case DISMOUNT_FELL:
|
||||||
You("%s off of %s!", verb, mon_nam(mtmp));
|
You("%s off of %s!", verb, mon_nam(mtmp));
|
||||||
if (!have_spot) have_spot = landing_spot(&cc,reason,1);
|
if (!have_spot) have_spot = landing_spot(&cc,reason,1);
|
||||||
losehp(rn1(10,10), "riding accident", KILLED_BY_AN);
|
losehp(Maybe_Half_Phys(rn1(10,10)), "riding accident", KILLED_BY_AN);
|
||||||
set_wounded_legs(BOTH_SIDES, (int)HWounded_legs + rn1(5,5));
|
set_wounded_legs(BOTH_SIDES, (int)HWounded_legs + rn1(5,5));
|
||||||
repair_leg_damage = FALSE;
|
repair_leg_damage = FALSE;
|
||||||
break;
|
break;
|
||||||
|
|||||||
+1
-1
@@ -2443,7 +2443,7 @@ struct obj *box; /* null for floor trap */
|
|||||||
if (!num)
|
if (!num)
|
||||||
You("are uninjured.");
|
You("are uninjured.");
|
||||||
else
|
else
|
||||||
losehp(num, tower_of_flame, KILLED_BY_AN);
|
losehp(Maybe_Half_Phys(num), tower_of_flame, KILLED_BY_AN);
|
||||||
burn_away_slime();
|
burn_away_slime();
|
||||||
|
|
||||||
if (burnarmor(&youmonst) || rn2(3)) {
|
if (burnarmor(&youmonst) || rn2(3)) {
|
||||||
|
|||||||
+1
-1
@@ -2324,7 +2324,7 @@ uchar aatyp;
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
You("are suddenly very hot!");
|
You("are suddenly very hot!");
|
||||||
mdamageu(mon, tmp);
|
mdamageu(mon, Maybe_Half_Phys(tmp));
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case AD_ELEC:
|
case AD_ELEC:
|
||||||
|
|||||||
@@ -1789,9 +1789,11 @@ STATIC_OVL void
|
|||||||
backfire(otmp)
|
backfire(otmp)
|
||||||
struct obj *otmp;
|
struct obj *otmp;
|
||||||
{
|
{
|
||||||
|
int dmg;
|
||||||
otmp->in_use = TRUE; /* in case losehp() is fatal */
|
otmp->in_use = TRUE; /* in case losehp() is fatal */
|
||||||
pline("%s suddenly explodes!", The(xname(otmp)));
|
pline("%s suddenly explodes!", The(xname(otmp)));
|
||||||
losehp(d(otmp->spe+2,6), "exploding wand", KILLED_BY_AN);
|
dmg = d(otmp->spe+2,6);
|
||||||
|
losehp(Maybe_Half_Phys(dmg), "exploding wand", KILLED_BY_AN);
|
||||||
useup(otmp);
|
useup(otmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1823,7 +1825,7 @@ dozap()
|
|||||||
if ((damage = zapyourself(obj, TRUE)) != 0) {
|
if ((damage = zapyourself(obj, TRUE)) != 0) {
|
||||||
char buf[BUFSZ];
|
char buf[BUFSZ];
|
||||||
Sprintf(buf, "zapped %sself with a wand", uhim());
|
Sprintf(buf, "zapped %sself with a wand", uhim());
|
||||||
losehp(damage, buf, NO_KILLER_PREFIX);
|
losehp(Maybe_Half_Phys(damage), buf, NO_KILLER_PREFIX);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@@ -2313,10 +2315,12 @@ struct obj *obj; /* wand or spell */
|
|||||||
} else if (striking && u.dz < 0 && rn2(3) &&
|
} else if (striking && u.dz < 0 && rn2(3) &&
|
||||||
!Is_airlevel(&u.uz) && !Is_waterlevel(&u.uz) &&
|
!Is_airlevel(&u.uz) && !Is_waterlevel(&u.uz) &&
|
||||||
!Underwater && !Is_qstart(&u.uz)) {
|
!Underwater && !Is_qstart(&u.uz)) {
|
||||||
|
int dmg;
|
||||||
/* similar to zap_dig() */
|
/* similar to zap_dig() */
|
||||||
pline("A rock is dislodged from the %s and falls on your %s.",
|
pline("A rock is dislodged from the %s and falls on your %s.",
|
||||||
ceiling(x, y), body_part(HEAD));
|
ceiling(x, y), body_part(HEAD));
|
||||||
losehp(rnd((uarmh && is_metallic(uarmh)) ? 2 : 6),
|
dmg = rnd((uarmh && is_metallic(uarmh)) ? 2 : 6);
|
||||||
|
losehp(Maybe_Half_Phys(dmg),
|
||||||
"falling rock", KILLED_BY_AN);
|
"falling rock", KILLED_BY_AN);
|
||||||
if ((otmp = mksobj_at(ROCK, x, y, FALSE, FALSE)) != 0) {
|
if ((otmp = mksobj_at(ROCK, x, y, FALSE, FALSE)) != 0) {
|
||||||
(void)xname(otmp); /* set dknown, maybe bknown */
|
(void)xname(otmp); /* set dknown, maybe bknown */
|
||||||
@@ -3835,9 +3839,11 @@ register int osym, dmgtyp;
|
|||||||
register long i, cnt, quan;
|
register long i, cnt, quan;
|
||||||
register int dindx;
|
register int dindx;
|
||||||
const char *mult;
|
const char *mult;
|
||||||
|
boolean physical_damage;
|
||||||
|
|
||||||
for(obj = invent; obj; obj = obj2) {
|
for(obj = invent; obj; obj = obj2) {
|
||||||
obj2 = obj->nobj;
|
obj2 = obj->nobj;
|
||||||
|
physical_damage = FALSE;
|
||||||
if(obj->oclass != osym) continue; /* test only objs of type osym */
|
if(obj->oclass != osym) continue; /* test only objs of type osym */
|
||||||
if(obj->oartifact) continue; /* don't destroy artifacts */
|
if(obj->oartifact) continue; /* don't destroy artifacts */
|
||||||
if(obj->in_use && obj->quan == 1) continue; /* not available */
|
if(obj->in_use && obj->quan == 1) continue; /* not available */
|
||||||
@@ -3856,6 +3862,7 @@ register int osym, dmgtyp;
|
|||||||
break;
|
break;
|
||||||
case AD_FIRE:
|
case AD_FIRE:
|
||||||
xresist = (Fire_resistance && obj->oclass != POTION_CLASS);
|
xresist = (Fire_resistance && obj->oclass != POTION_CLASS);
|
||||||
|
physical_damage = TRUE;
|
||||||
|
|
||||||
if (obj->otyp == SCR_FIRE || obj->otyp == SPE_FIREBALL)
|
if (obj->otyp == SCR_FIRE || obj->otyp == SPE_FIREBALL)
|
||||||
skip++;
|
skip++;
|
||||||
@@ -3941,6 +3948,7 @@ register int osym, dmgtyp;
|
|||||||
const char *how = destroy_strings[dindx * 3 + 2];
|
const char *how = destroy_strings[dindx * 3 + 2];
|
||||||
boolean one = (cnt == 1L);
|
boolean one = (cnt == 1L);
|
||||||
|
|
||||||
|
if (physical_damage) dmg = Maybe_Half_Phys(dmg);
|
||||||
losehp(dmg, one ? how : (const char *)makeplural(how),
|
losehp(dmg, one ? how : (const char *)makeplural(how),
|
||||||
one ? KILLED_BY_AN : KILLED_BY);
|
one ? KILLED_BY_AN : KILLED_BY);
|
||||||
exercise(A_STR, FALSE);
|
exercise(A_STR, FALSE);
|
||||||
|
|||||||
Reference in New Issue
Block a user