Mimics created by #wizgenesis blocked vision incorrectly
This commit is contained in:
@@ -115,6 +115,7 @@ for hilite_status of string status fields (title, dungeon-level, alignment),
|
|||||||
the types value-goes-up and -down aren't meaningful; treat them as
|
the types value-goes-up and -down aren't meaningful; treat them as
|
||||||
value-changed if from config file and don't offer as choices with 'O'
|
value-changed if from config file and don't offer as choices with 'O'
|
||||||
jumping into or over a Sokoban pit, or over a fire trap, triggers trap twice
|
jumping into or over a Sokoban pit, or over a fire trap, triggers trap twice
|
||||||
|
mimics created by #wizgenesis could block or not block vision incorrectly
|
||||||
|
|
||||||
|
|
||||||
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
|
Fixes to Post-3.6.1 Problems that Were Exposed Via git Repository
|
||||||
|
|||||||
@@ -2126,16 +2126,12 @@ register struct monst *mtmp;
|
|||||||
appear = Is_rogue_level(&u.uz) ? S_hwall : S_hcdoor;
|
appear = Is_rogue_level(&u.uz) ? S_hwall : S_hcdoor;
|
||||||
else
|
else
|
||||||
appear = Is_rogue_level(&u.uz) ? S_vwall : S_vcdoor;
|
appear = Is_rogue_level(&u.uz) ? S_vwall : S_vcdoor;
|
||||||
if (!mtmp->minvis || See_invisible)
|
|
||||||
block_point(mx, my); /* vision */
|
|
||||||
} else if (level.flags.is_maze_lev && !In_sokoban(&u.uz) && rn2(2)) {
|
} else if (level.flags.is_maze_lev && !In_sokoban(&u.uz) && rn2(2)) {
|
||||||
ap_type = M_AP_OBJECT;
|
ap_type = M_AP_OBJECT;
|
||||||
appear = STATUE;
|
appear = STATUE;
|
||||||
} else if (roomno < 0 && !t_at(mx, my)) {
|
} else if (roomno < 0 && !t_at(mx, my)) {
|
||||||
ap_type = M_AP_OBJECT;
|
ap_type = M_AP_OBJECT;
|
||||||
appear = BOULDER;
|
appear = BOULDER;
|
||||||
if (!mtmp->minvis || See_invisible)
|
|
||||||
block_point(mx, my); /* vision */
|
|
||||||
} else if (rt == ZOO || rt == VAULT) {
|
} else if (rt == ZOO || rt == VAULT) {
|
||||||
ap_type = M_AP_OBJECT;
|
ap_type = M_AP_OBJECT;
|
||||||
appear = GOLD_PIECE;
|
appear = GOLD_PIECE;
|
||||||
@@ -2193,6 +2189,9 @@ register struct monst *mtmp;
|
|||||||
if (appear == EGG && !can_be_hatched(MCORPSENM(mtmp)))
|
if (appear == EGG && !can_be_hatched(MCORPSENM(mtmp)))
|
||||||
MCORPSENM(mtmp) = NON_PM; /* revert to generic egg */
|
MCORPSENM(mtmp) = NON_PM; /* revert to generic egg */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (does_block(mx, my, &levl[mx][my]))
|
||||||
|
block_point(mx, my);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* release monster from bag of tricks; return number of monsters created */
|
/* release monster from bag of tricks; return number of monsters created */
|
||||||
|
|||||||
@@ -2550,8 +2550,14 @@ struct _create_particular_data *d;
|
|||||||
|
|
||||||
put_saddle_on_mon(otmp, mtmp);
|
put_saddle_on_mon(otmp, mtmp);
|
||||||
}
|
}
|
||||||
if (d->invisible)
|
if (d->invisible) {
|
||||||
|
int mx = mtmp->mx, my = mtmp->my;
|
||||||
mon_set_minvis(mtmp);
|
mon_set_minvis(mtmp);
|
||||||
|
if (does_block(mx, my, &levl[mx][my]))
|
||||||
|
block_point(mx, my);
|
||||||
|
else
|
||||||
|
unblock_point(mx, my);
|
||||||
|
}
|
||||||
if (d->sleeping)
|
if (d->sleeping)
|
||||||
mtmp->msleeping = 1;
|
mtmp->msleeping = 1;
|
||||||
madeany = TRUE;
|
madeany = TRUE;
|
||||||
|
|||||||
Reference in New Issue
Block a user