diff --git a/src/g_hexen/a_spike.cpp b/src/g_hexen/a_spike.cpp index 10444ecb9..3943bee30 100644 --- a/src/g_hexen/a_spike.cpp +++ b/src/g_hexen/a_spike.cpp @@ -161,7 +161,7 @@ DEFINE_ACTION_FUNCTION(AActor, A_ThrustImpale) while (it.Next(&cres)) { fixed_t blockdist = self->radius + cres.thing->radius; - if (abs(self->X() - cres.position.x) >= blockdist || abs(self->Y() - cres.position.y) >= blockdist) + if (abs(cres.thing->X() - cres.position.x) >= blockdist || abs(cres.thing->Y() - cres.position.y) >= blockdist) continue; // Q: Make this z-aware for everything? It never was before. diff --git a/src/p_map.cpp b/src/p_map.cpp index 8174d8e77..a277c7b77 100644 --- a/src/p_map.cpp +++ b/src/p_map.cpp @@ -5527,7 +5527,7 @@ void P_FindAboveIntersectors(AActor *actor) { AActor *thing = cres.thing; fixed_t blockdist = actor->radius + thing->radius; - if (abs(actor->X() - cres.position.x) >= blockdist || abs(actor->Y() - cres.position.y) >= blockdist) + if (abs(thing->X() - cres.position.x) >= blockdist || abs(thing->Y() - cres.position.y) >= blockdist) continue; if (!(thing->flags & MF_SOLID)) @@ -5583,7 +5583,7 @@ void P_FindBelowIntersectors(AActor *actor) { AActor *thing = cres.thing; fixed_t blockdist = actor->radius + thing->radius; - if (abs(actor->X() - cres.position.x) >= blockdist || abs(actor->Y() - cres.position.y) >= blockdist) + if (abs(thing->X() - cres.position.x) >= blockdist || abs(thing->Y() - cres.position.y) >= blockdist) continue; if (!(thing->flags & MF_SOLID)) diff --git a/src/p_maputl.cpp b/src/p_maputl.cpp index b9d682e6e..55ce03470 100644 --- a/src/p_maputl.cpp +++ b/src/p_maputl.cpp @@ -1677,9 +1677,10 @@ int FPathTraverse::PortalRelocate(intercept_t *in, int flags, fixedvec3 *optpos) P_TranslatePortalXY(in->d.line, optpos->x, optpos->y); P_TranslatePortalZ(in->d.line, optpos->z); } + line_t *saved = in->d.line; // this gets overwriitten by the init call. intercepts.Resize(intercept_index); init(hitx, hity, endx, endy, flags, in->frac); - return in->d.line->getPortal()->mType == PORTT_LINKED? 1:-1; + return saved->getPortal()->mType == PORTT_LINKED? 1:-1; } //=========================================================================== diff --git a/wadsrc/static/xlat/eternity.txt b/wadsrc/static/xlat/eternity.txt index 19e4d4f6d..6d136d887 100644 --- a/wadsrc/static/xlat/eternity.txt +++ b/wadsrc/static/xlat/eternity.txt @@ -112,11 +112,11 @@ enum 342 = 0, Stairs_BuildUpDoomSync(0) 343 = 0, Stairs_BuildDownDoomSync(0) -// Two-way portals are not supported yet either -344 = 0, Unsupported() // "Portal_TwowayCeiling" -345 = 0, Unsupported() // "Portal_TwowayFloor" -346 = 0, Unsupported() // "Portal_TwowayAnchorLine" -347 = 0, Unsupported() // "Portal_TwowayAnchorLineFloor" +// Two-way portals are just the same as the simple types. +344 = 0, Sector_SetPortal(tag, 0, 1, 1, 0) // "Portal_AnchoredCeiling" +345 = 0, Sector_SetPortal(tag, 0, 0, 1, 0) // "Portal_AnchoredFloor" +346 = 0, Sector_SetPortal(tag, 0, 1, 0, 0) // "Portal_AnchorLine" +347 = 0, Sector_SetPortal(tag, 0, 0, 0, 0) // "Portal_AnchorLineFloor" // More parameterized linedefs 348 = 0, Polyobj_StartLine(0) @@ -215,3 +215,8 @@ enum 428 = 0, Thing_Destroy(0) 429 = 0, Door_LockedRaise(0) 430 = 0, ACS_LockedExecute(0) +431 = 0, Floor_Donut(0) +432 = 0, Ceiling_CrushAndRaise(0) +433 = 0, Ceiling_CrushStop(0) +434 = 0, Ceiling_CrushRaiseAndStay(0) +435 = 0, Ceiling_LowerAndCrush(0)