[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