ZDaemon Forum Index ZDaemon
Client/Server DOOM
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Incomplete check for a closed wall in P_RecursiveSound

 
Post new topic   Reply to topic    ZDaemon Forum Index -> Fixed Bugs
View previous topic :: View next topic  
Author Message
rhinoduck
Potatoes


Joined: 22 Oct 2012

PostPosted: Mon Aug 31, 2015 2:20 am    Post subject: Incomplete check for a closed wall in P_RecursiveSound Reply with quote

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;
      }
Back to top
View user's profile Send private message
Kilgore
Air Cavalry


Joined: 17 Jun 2003
Location: Up the river

PostPosted: Wed Sep 09, 2015 11:38 am    Post subject: Reply with quote

Fixed; thanks a lot for the debugging rhinoduck.
Back to top
View user's profile Send private message Visit poster's website
Display posts from previous:   
Post new topic   Reply to topic    ZDaemon Forum Index -> Fixed Bugs All times are GMT + 1 Hour
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group