fix vision bug - moving a subset of boulders from a location
From a bug report. Pushing one boulder from a location which had more than one would open up line of sight at that spot as if all boulders there were gone.
This commit is contained in:
@@ -143,6 +143,8 @@ fix grammar for graveyard sounds when polymorphed
|
||||
avoid divide by zero crash if Luck drops below -1 while a prayer is in progress
|
||||
make hero inflicted with lycanthropy immune to level drain just like monsters
|
||||
describe locomotion method accurately when flyers traverse ladders or holes
|
||||
when there were multiple boulders at a location, moving one of them sometimes
|
||||
resulted in line-of-sight anomalies
|
||||
|
||||
|
||||
Platform- and/or Interface-Specific Fixes
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* SCCS Id: @(#)mkobj.c 3.5 2005/03/26 */
|
||||
/* SCCS Id: @(#)mkobj.c 3.5 2005/09/03 */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
@@ -1198,6 +1198,7 @@ int x, y;
|
||||
panic("place_object: obj not free");
|
||||
|
||||
obj_no_longer_held(otmp);
|
||||
/* (could bypass this vision update if there is already a boulder here) */
|
||||
if (otmp->otyp == BOULDER) block_point(x,y); /* vision */
|
||||
|
||||
/* obj goes under boulders */
|
||||
@@ -1349,9 +1350,11 @@ register struct obj *otmp;
|
||||
|
||||
if (otmp->where != OBJ_FLOOR)
|
||||
panic("remove_object: obj not on floor");
|
||||
if (otmp->otyp == BOULDER) unblock_point(x,y); /* vision */
|
||||
extract_nexthere(otmp, &level.objects[x][y]);
|
||||
extract_nobj(otmp, &fobj);
|
||||
/* update vision iff this was the only boulder at its spot */
|
||||
if (otmp->otyp == BOULDER && !sobj_at(BOULDER, x, y))
|
||||
unblock_point(x,y); /* vision */
|
||||
if (otmp->timed) obj_timer_checks(otmp,x,y,0);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user