rhinoduck Potatoes
Joined: 22 Oct 2012
|
Posted: Mon Aug 31, 2015 2:20 am Post subject: Incomplete check for a closed wall in P_RecursiveSound |
|
|
Keyboard_Doomer found out that the spawner and other monsters behind a wall get activated in ZDaemon when shooting in the archvile room of MAP30 of plutonia.wad even though they don't in any other port nor vanilla. I dug a bit and it turned out to be another leftover from 1.23, namely an incomplete check in P_RecursiveSound in p_enemy.cpp. Yay for a 13 year old bug!
ZDoom 1.23b33 and 2.0.x, and ZDaemon 1.06
Code: | // check for closed door
if ((sec->floorplane.ZatPoint (check->v1->x, check->v1->y) >=
other->ceilingplane.ZatPoint (check->v1->x, check->v1->y) &&
sec->floorplane.ZatPoint (check->v2->x, check->v2->y) >=
other->ceilingplane.ZatPoint (check->v2->x, check->v2->y))
|| (other->floorplane.ZatPoint (check->v1->x, check->v1->y) >=
sec->ceilingplane.ZatPoint (check->v1->x, check->v1->y) &&
other->floorplane.ZatPoint (check->v2->x, check->v2->y) >=
sec->ceilingplane.ZatPoint (check->v2->x, check->v2->y)))
{
continue;
}
|
ZDoom 2.1.1 and newer
Code: | // check for closed door
if ((sec->floorplane.ZatPoint (check->v1->x, check->v1->y) >=
other->ceilingplane.ZatPoint (check->v1->x, check->v1->y) &&
sec->floorplane.ZatPoint (check->v2->x, check->v2->y) >=
other->ceilingplane.ZatPoint (check->v2->x, check->v2->y))
|| (other->floorplane.ZatPoint (check->v1->x, check->v1->y) >=
sec->ceilingplane.ZatPoint (check->v1->x, check->v1->y) &&
other->floorplane.ZatPoint (check->v2->x, check->v2->y) >=
sec->ceilingplane.ZatPoint (check->v2->x, check->v2->y))
|| (other->floorplane.ZatPoint (check->v1->x, check->v1->y) >=
other->ceilingplane.ZatPoint (check->v1->x, check->v1->y) &&
other->floorplane.ZatPoint (check->v2->x, check->v2->y) >=
other->ceilingplane.ZatPoint (check->v2->x, check->v2->y)))
{
continue;
} |
|
|