[Scummvm-git-logs] scummvm master -> 4221134e9f35efa09c94cd882f65585b4380dc86
OMGPizzaGuy
noreply at scummvm.org
Fri Oct 13 20:48:56 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
4221134e9f ULTIMA8: Always mark position supported at or below zero Z coordinate.
Commit: 4221134e9f35efa09c94cd882f65585b4380dc86
https://github.com/scummvm/scummvm/commit/4221134e9f35efa09c94cd882f65585b4380dc86
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2023-10-13T15:48:31-05:00
Commit Message:
ULTIMA8: Always mark position supported at or below zero Z coordinate.
This eliminates the need to check starting off land in movement process and fixes some freezing that could occur when moving outside map bounds
Changed paths:
engines/ultima/ultima8/world/actors/animation_tracker.cpp
engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
engines/ultima/ultima8/world/current_map.cpp
diff --git a/engines/ultima/ultima8/world/actors/animation_tracker.cpp b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
index 818b3375bc9..63d8a45316f 100644
--- a/engines/ultima/ultima8/world/actors/animation_tracker.cpp
+++ b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
@@ -311,7 +311,7 @@ bool AnimationTracker::step() {
Box start(_startX, _startY, _startZ, xd, yd, zd);
PositionInfo info = cm->getPositionInfo(target, start, a->getShapeInfo()->_flags, _actor);
- if (is_u8 && info.valid && info.supported) {
+ if (is_u8 && info.valid && info.supported && info.land) {
// Might need to check for bridge traversal adjustments
uint32 supportshape = info.land->getShape();
if (supportshape >= 675 && supportshape <= 681) {
diff --git a/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
index 3e96a13eb8c..5beb7e097e4 100644
--- a/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
@@ -640,14 +640,6 @@ void U8AvatarMoverProcess::step(Animation::Sequence action, Direction direction,
Animation::Result res = avatar->tryAnim(action, direction);
Direction stepdir = direction;
- // Ignore end off land if starting off land
- if (res == Animation::END_OFF_LAND) {
- int32 ax, ay, az;
- avatar->getLocation(ax, ay, az);
- if (!avatar->canExistAt(ax, ay, az, true))
- res = Animation::SUCCESS;
- }
-
if (res == Animation::FAILURE ||
(action == Animation::step && res == Animation::END_OFF_LAND)) {
debug(6, "Step: end off land dir %d, try other dir", stepdir);
diff --git a/engines/ultima/ultima8/world/current_map.cpp b/engines/ultima/ultima8/world/current_map.cpp
index 6491c499320..29341dc7f2e 100644
--- a/engines/ultima/ultima8/world/current_map.cpp
+++ b/engines/ultima/ultima8/world/current_map.cpp
@@ -817,7 +817,13 @@ PositionInfo CurrentMap::getPositionInfo(const Box &target, const Box &start, ui
info.valid = info.blocker == nullptr;
// Partial support allowed if land is close
- info.supported = supportz == target._z && landz + 8 >= target._z;
+ if (supportz == target._z && landz + 8 >= target._z)
+ info.supported = true;
+
+ // Mark supported at minimum z
+ if (target._z <= 0)
+ info.supported = true;
+
return info;
}
More information about the Scummvm-git-logs
mailing list