[Scummvm-git-logs] scummvm master -> 4c0191c22d8ad19493b77a6282ec649f81b1059c
OMGPizzaGuy
noreply at scummvm.org
Wed Dec 21 04:42:56 UTC 2022
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:
4c0191c22d ULTIMA8: Fix attacking backwards by turning to direction first
Commit: 4c0191c22d8ad19493b77a6282ec649f81b1059c
https://github.com/scummvm/scummvm/commit/4c0191c22d8ad19493b77a6282ec649f81b1059c
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2022-12-20T22:42:15-06:00
Commit Message:
ULTIMA8: Fix attacking backwards by turning to direction first
Changed paths:
engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
diff --git a/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
index 0285039471e..5c90621dcab 100644
--- a/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/avatar_mover_process.cpp
@@ -81,34 +81,38 @@ void AvatarMoverProcess::run() {
bool AvatarMoverProcess::checkTurn(Direction direction, bool moving) {
Actor *avatar = getControlledActor();
Direction curdir = avatar->getDir();
+ if (direction == curdir)
+ return false;
+
+ if (!moving) {
+ turnToDirection(direction);
+ return true;
+ }
+
+ // Do not turn if moving backward in combat stance
bool combat = avatar->isInCombat() && !avatar->hasActorFlags(Actor::ACT_COMBATRUN);
+ if (combat && Direction_Invert(direction) == curdir)
+ return false;
- // Note: don't need to turn if moving backward in combat stance
- // CHECKME: currently, first turn in the right direction
- if (direction != curdir && !(combat && Direction_Invert(direction) == curdir)) {
- Animation::Sequence lastanim = avatar->getLastAnim();
-
- if (moving &&
- (lastanim == Animation::walk || lastanim == Animation::run ||
- lastanim == Animation::combatStand ||
- (GAME_IS_CRUSADER && (lastanim == Animation::startRunSmallWeapon ||
- lastanim == Animation::combatRunSmallWeapon))) &&
- (ABS(direction - curdir) + 2) % 16 <= 4) {
- // don't need to explicitly do a turn animation
- return false;
- }
+ Animation::Sequence lastanim = avatar->getLastAnim();
- if (moving && lastanim == Animation::run) {
- // slow down to a walk first
- waitFor(avatar->doAnim(Animation::walk, curdir));
- return true;
- }
+ // Check if we don't need to explicitly do a turn animation
+ if ((lastanim == Animation::walk || lastanim == Animation::run ||
+ lastanim == Animation::combatStand ||
+ (GAME_IS_CRUSADER && (lastanim == Animation::startRunSmallWeapon ||
+ lastanim == Animation::combatRunSmallWeapon))) &&
+ (ABS(direction - curdir) + 2) % 16 <= 4) {
+ return false;
+ }
- turnToDirection(direction);
+ if (lastanim == Animation::run) {
+ // slow down to a walk first
+ waitFor(avatar->doAnim(Animation::walk, curdir));
return true;
}
- return false;
+ turnToDirection(direction);
+ return true;
}
void AvatarMoverProcess::turnToDirection(Direction direction) {
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 f2902a62c1e..12ef395bddc 100644
--- a/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
@@ -150,7 +150,7 @@ void U8AvatarMoverProcess::handleCombatMode() {
// double left click = attack
// pout << "AvatarMover: combat attack" << Std::endl;
- if (checkTurn(mousedir, true))
+ if (checkTurn(mousedir, false))
return;
waitFor(avatar->doAnim(Animation::attack, mousedir));
More information about the Scummvm-git-logs
mailing list