Fix bz241, H4143: LoS still blocked after mimic hit by force bolt
This commit is contained in:
@@ -152,6 +152,8 @@ struct obj *otmp;
|
|||||||
/* fall through */
|
/* fall through */
|
||||||
case SPE_FORCE_BOLT:
|
case SPE_FORCE_BOLT:
|
||||||
reveal_invis = TRUE;
|
reveal_invis = TRUE;
|
||||||
|
if (disguised_mimic)
|
||||||
|
seemimic(mtmp);
|
||||||
if (resists_magm(mtmp)) { /* match effect on player */
|
if (resists_magm(mtmp)) { /* match effect on player */
|
||||||
shieldeff(mtmp->mx, mtmp->my);
|
shieldeff(mtmp->mx, mtmp->my);
|
||||||
pline("Boing!");
|
pline("Boing!");
|
||||||
@@ -171,6 +173,8 @@ struct obj *otmp;
|
|||||||
case WAN_SLOW_MONSTER:
|
case WAN_SLOW_MONSTER:
|
||||||
case SPE_SLOW_MONSTER:
|
case SPE_SLOW_MONSTER:
|
||||||
if (!resist(mtmp, otmp->oclass, 0, NOTELL)) {
|
if (!resist(mtmp, otmp->oclass, 0, NOTELL)) {
|
||||||
|
if (disguised_mimic)
|
||||||
|
seemimic(mtmp);
|
||||||
mon_adjust_speed(mtmp, -1, otmp);
|
mon_adjust_speed(mtmp, -1, otmp);
|
||||||
m_dowear(mtmp, FALSE); /* might want speed boots */
|
m_dowear(mtmp, FALSE); /* might want speed boots */
|
||||||
if (u.uswallow && (mtmp == u.ustuck) && is_whirly(mtmp->data)) {
|
if (u.uswallow && (mtmp == u.ustuck) && is_whirly(mtmp->data)) {
|
||||||
@@ -182,6 +186,8 @@ struct obj *otmp;
|
|||||||
break;
|
break;
|
||||||
case WAN_SPEED_MONSTER:
|
case WAN_SPEED_MONSTER:
|
||||||
if (!resist(mtmp, otmp->oclass, 0, NOTELL)) {
|
if (!resist(mtmp, otmp->oclass, 0, NOTELL)) {
|
||||||
|
if (disguised_mimic)
|
||||||
|
seemimic(mtmp);
|
||||||
mon_adjust_speed(mtmp, 1, otmp);
|
mon_adjust_speed(mtmp, 1, otmp);
|
||||||
m_dowear(mtmp, FALSE); /* might want speed boots */
|
m_dowear(mtmp, FALSE); /* might want speed boots */
|
||||||
}
|
}
|
||||||
@@ -239,16 +245,22 @@ struct obj *otmp;
|
|||||||
break;
|
break;
|
||||||
case WAN_CANCELLATION:
|
case WAN_CANCELLATION:
|
||||||
case SPE_CANCELLATION:
|
case SPE_CANCELLATION:
|
||||||
|
if (disguised_mimic)
|
||||||
|
seemimic(mtmp);
|
||||||
(void) cancel_monst(mtmp, otmp, TRUE, TRUE, FALSE);
|
(void) cancel_monst(mtmp, otmp, TRUE, TRUE, FALSE);
|
||||||
break;
|
break;
|
||||||
case WAN_TELEPORTATION:
|
case WAN_TELEPORTATION:
|
||||||
case SPE_TELEPORT_AWAY:
|
case SPE_TELEPORT_AWAY:
|
||||||
|
if (disguised_mimic)
|
||||||
|
seemimic(mtmp);
|
||||||
reveal_invis = !u_teleport_mon(mtmp, TRUE);
|
reveal_invis = !u_teleport_mon(mtmp, TRUE);
|
||||||
break;
|
break;
|
||||||
case WAN_MAKE_INVISIBLE: {
|
case WAN_MAKE_INVISIBLE: {
|
||||||
int oldinvis = mtmp->minvis;
|
int oldinvis = mtmp->minvis;
|
||||||
char nambuf[BUFSZ];
|
char nambuf[BUFSZ];
|
||||||
|
|
||||||
|
if (disguised_mimic)
|
||||||
|
seemimic(mtmp);
|
||||||
/* format monster's name before altering its visibility */
|
/* format monster's name before altering its visibility */
|
||||||
Strcpy(nambuf, Monnam(mtmp));
|
Strcpy(nambuf, Monnam(mtmp));
|
||||||
mon_set_minvis(mtmp);
|
mon_set_minvis(mtmp);
|
||||||
@@ -368,6 +380,8 @@ struct obj *otmp;
|
|||||||
wake = FALSE;
|
wake = FALSE;
|
||||||
break;
|
break;
|
||||||
case SPE_DRAIN_LIFE:
|
case SPE_DRAIN_LIFE:
|
||||||
|
if (disguised_mimic)
|
||||||
|
seemimic(mtmp);
|
||||||
dmg = monhp_per_lvl(mtmp);
|
dmg = monhp_per_lvl(mtmp);
|
||||||
if (dbldam)
|
if (dbldam)
|
||||||
dmg *= 2;
|
dmg *= 2;
|
||||||
|
|||||||
Reference in New Issue
Block a user