[Scummvm-git-logs] scummvm master -> 6f483eb53b92dff863601f8177fc29e474f8708f

mduggan mgithub at guarana.org
Fri May 7 09:53:27 UTC 2021


This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
7338e7ab02 ULTIMA8: Fix animations used for Crusader combat rolls
6f483eb53b ULTIMA8: Don't reset FIRSTSTEP on non-step animations


Commit: 7338e7ab0237f8d47b33d3ea3bd380ac028b5d23
    https://github.com/scummvm/scummvm/commit/7338e7ab0237f8d47b33d3ea3bd380ac028b5d23
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-05-07T18:52:11+09:00

Commit Message:
ULTIMA8: Fix animations used for Crusader combat rolls

Changed paths:
    engines/ultima/ultima8/world/actors/actor.cpp
    engines/ultima/ultima8/world/actors/animation.cpp
    engines/ultima/ultima8/world/actors/animation.h
    engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp
    engines/ultima/ultima8/world/gravity_process.cpp


diff --git a/engines/ultima/ultima8/world/actors/actor.cpp b/engines/ultima/ultima8/world/actors/actor.cpp
index 244e253898..73ab86b87b 100644
--- a/engines/ultima/ultima8/world/actors/actor.cpp
+++ b/engines/ultima/ultima8/world/actors/actor.cpp
@@ -493,6 +493,8 @@ uint16 Actor::doAnim(Animation::Sequence anim, Direction dir, unsigned int steps
 		if (anim == Animation::kneelStartCru || anim == Animation::kneelAndFire ||
 				anim == Animation::kneelAndFireSmallWeapon ||
 				anim == Animation::kneelAndFireLargeWeapon ||
+				anim == Animation::kneelCombatRollLeft ||
+				anim == Animation::kneelCombatRollRight ||
 				anim == Animation::kneelingAdvance ||
 				anim == Animation::kneelingRetreat) {
 			setActorFlag(ACT_KNEELING);
@@ -509,14 +511,14 @@ uint16 Actor::doAnim(Animation::Sequence anim, Direction dir, unsigned int steps
 				_attackMoveDodgeFactor = 3;
 				break;
 			case Animation::run:
-			case Animation::combatRollLeft:
-			case Animation::combatRollRight:
+			case Animation::kneelCombatRollLeft:
+			case Animation::kneelCombatRollRight:
 			case Animation::stopRunningAndDrawLargeWeapon:
 			case Animation::stopRunningAndDrawSmallWeapon:
 			case Animation::jumpForward:
 			case Animation::jump:
-			case Animation::slowCombatRollLeft:
-			case Animation::slowCombatRollRight:
+			case Animation::combatRollLeft:
+			case Animation::combatRollRight:
 			//case Animation::startRunSmallWeapon:
 			//case Animation::startRunLargeWeapon:
 			case Animation::startRun:
@@ -1369,7 +1371,7 @@ ProcId Actor::dieCru(uint16 damageType, uint16 damagePts, Direction srcDir) {
 						lastanim = doAnimAfter(Animation::fallForwardsCru, dir_current, lastanim);
 					}
 
-					lastanim = doAnimAfter(Animation::combatRollLeft, dir_current, lastanim);
+					lastanim = doAnimAfter(Animation::kneelCombatRollLeft, dir_current, lastanim);
 					tookHitCru();
 				}
 			}
diff --git a/engines/ultima/ultima8/world/actors/animation.cpp b/engines/ultima/ultima8/world/actors/animation.cpp
index dc153407d3..b59b21bfdb 100644
--- a/engines/ultima/ultima8/world/actors/animation.cpp
+++ b/engines/ultima/ultima8/world/actors/animation.cpp
@@ -79,6 +79,8 @@ bool isCombatAnimCru(const Sequence anim) {
 	case kneelEndCru:
 	case kneelAndFire:
 	case brightFireLargeWpn:
+	case kneelCombatRollLeft:
+	case kneelCombatRollRight:
 	case combatRollLeft:
 	case combatRollRight:
 	case slideLeft:
diff --git a/engines/ultima/ultima8/world/actors/animation.h b/engines/ultima/ultima8/world/actors/animation.h
index 3a5add382f..44a6e1ec80 100644
--- a/engines/ultima/ultima8/world/actors/animation.h
+++ b/engines/ultima/ultima8/world/actors/animation.h
@@ -112,8 +112,8 @@ enum Sequence {
 	unreadyLargeWeapon = 16,
 	fallBackwardsCru = 18,
 	fallForwardsCru = 20,
-	combatRollLeft = 23,
-	combatRollRight = 24,
+	kneelCombatRollLeft = 23,
+	kneelCombatRollRight = 24,
 	stopRunningAndDrawLargeWeapon = 25,
 	kneelAndFire = 26,
 	slideLeft = 28,
@@ -149,8 +149,8 @@ enum Sequence {
 	quickJumpCru = 58,
 	jumpLanding = 59,
 	surrenderStand = 60,
-	slowCombatRollLeft = 61,
-	slowCombatRollRight = 62,
+	combatRollLeft = 61,
+	combatRollRight = 62,
 	finishFiring = 63,
 
 	crusaderAbsoluteAnimFlag = 0x1000, //!< Bit mask magic to say we want an exact number, don't do mapping from U8 animation numbers
diff --git a/engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp
index 3b36182d00..95648f774a 100644
--- a/engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp
@@ -198,13 +198,13 @@ void CruAvatarMoverProcess::handleCombatMode() {
 	} else if (hasMovementFlags(MOVE_JUMP)) {
 		if (hasMovementFlags(MOVE_TURN_LEFT)) {
 			if (avatar->isKneeling())
-				avatar->doAnim(Animation::slowCombatRollLeft, direction);
+				avatar->doAnim(Animation::kneelCombatRollLeft, direction);
 			else
 				avatar->doAnim(Animation::combatRollLeft, direction);
 			return;
 		} else if (hasMovementFlags(MOVE_TURN_RIGHT)) {
 			if (avatar->isKneeling())
-				avatar->doAnim(Animation::slowCombatRollRight, direction);
+				avatar->doAnim(Animation::kneelCombatRollRight, direction);
 			else
 				avatar->doAnim(Animation::combatRollRight, direction);
 			return;
diff --git a/engines/ultima/ultima8/world/gravity_process.cpp b/engines/ultima/ultima8/world/gravity_process.cpp
index 56c69ad49d..90625b6ee1 100644
--- a/engines/ultima/ultima8/world/gravity_process.cpp
+++ b/engines/ultima/ultima8/world/gravity_process.cpp
@@ -338,10 +338,10 @@ void GravityProcess::actorFallStoppedCru(Actor *actor, int height) {
 
 	if (height / 8 > 2 &&
 		(lastanim != Animation::quickJumpCru &&
-		 lastanim != Animation::slowCombatRollLeft &&
-		 lastanim != Animation::slowCombatRollRight &&
 		 lastanim != Animation::combatRollLeft &&
 		 lastanim != Animation::combatRollRight &&
+		 lastanim != Animation::kneelCombatRollLeft &&
+		 lastanim != Animation::kneelCombatRollRight &&
 		 lastanim != Animation::run &&
 		 lastanim != Animation::jumpForward &&
 		 lastanim != Animation::unknownAnim30 &&


Commit: 6f483eb53b92dff863601f8177fc29e474f8708f
    https://github.com/scummvm/scummvm/commit/6f483eb53b92dff863601f8177fc29e474f8708f
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-05-07T18:52:16+09:00

Commit Message:
ULTIMA8: Don't reset FIRSTSTEP on non-step animations

Confirmed in both U8 and Crusader, single steps should alternate left foot /
right foot, even when there is a stand animation in-between.

Changed paths:
    engines/ultima/ultima8/world/actors/animation_tracker.cpp


diff --git a/engines/ultima/ultima8/world/actors/animation_tracker.cpp b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
index 029b9337b7..b880a3ac3d 100644
--- a/engines/ultima/ultima8/world/actors/animation_tracker.cpp
+++ b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
@@ -171,11 +171,10 @@ bool AnimationTracker::step() {
 	if (_currentFrame == _endFrame) {
 		_done = true;
 
-		// toggle ACT_FIRSTSTEP flag if necessary
+		// toggle ACT_FIRSTSTEP flag if necessary. This is remembered
+		// between two-step animations.
 		if (_animAction->hasFlags(AnimAction::AAF_TWOSTEP))
 			_firstStep = !_firstStep;
-		else
-			_firstStep = true;
 
 		return false;
 	}




More information about the Scummvm-git-logs mailing list