From 1438bb5e801a32cf749077dc4a90f7b7ded5500d Mon Sep 17 00:00:00 2001 From: Mitchell Richters Date: Fri, 6 Jan 2023 17:08:56 +1100 Subject: [PATCH] - Blood: Ensure actor's XY pos is updated before calling Z slope utils. * Originates from efc832ca5cef77c7057830558bb90297bbaeef3d. * Fixes #833. --- source/games/blood/src/warp.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/games/blood/src/warp.cpp b/source/games/blood/src/warp.cpp index 94c5b3726..9add1b881 100644 --- a/source/games/blood/src/warp.cpp +++ b/source/games/blood/src/warp.cpp @@ -211,12 +211,13 @@ int CheckLink(DBloodActor* actor) assert(aLower); assert(aLower->insector()); ChangeActorSect(actor, aLower->sector()); + actor->spr.pos.XY() += aLower->spr.pos.XY() - aUpper->spr.pos.XY(); double z2; if (aLower->spr.type == kMarkerLowLink) z2 = aLower->spr.pos.Z; else z2 = getceilzofslopeptr(actor->sector(), actor->spr.pos); - actor->spr.pos += DVector3(aLower->spr.pos.XY() - aUpper->spr.pos.XY(), z2 - z); + actor->spr.pos.Z += z2 - z; actor->interpolated = false; return aUpper->spr.type; } @@ -234,12 +235,13 @@ int CheckLink(DBloodActor* actor) assert(aUpper); assert(aUpper->insector()); ChangeActorSect(actor, aUpper->sector()); + actor->spr.pos.XY() += aUpper->spr.pos.XY() - aLower->spr.pos.XY(); double z2; if (aUpper->spr.type == kMarkerUpLink) z2 = aUpper->spr.pos.Z; else z2 = getflorzofslopeptr(actor->sector(), actor->spr.pos); - actor->spr.pos += DVector3(aUpper->spr.pos.XY() - aLower->spr.pos.XY(), z2 - z); + actor->spr.pos.Z += z2 - z; actor->interpolated = false; return aLower->spr.type; }