[Scummvm-git-logs] scummvm master -> 727d0745544ab6dca65d2a641b96841eb12426dc
mduggan
mgithub at guarana.org
Fri Apr 30 07:56:38 UTC 2021
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:
727d074554 ULTIMA8: Don't stand when casting a spell
Commit: 727d0745544ab6dca65d2a641b96841eb12426dc
https://github.com/scummvm/scummvm/commit/727d0745544ab6dca65d2a641b96841eb12426dc
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-04-30T16:47:48+09:00
Commit Message:
ULTIMA8: Don't stand when casting a spell
Fixes #12093, the avatar keeps standing when casting a spell. This is because
there are breaks between the animations, and the mover kept resetting to
standing. Don't reset if the last animation was a cast.
Changed paths:
engines/ultima/ultima8/world/actors/animation.cpp
engines/ultima/ultima8/world/actors/animation.h
engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
diff --git a/engines/ultima/ultima8/world/actors/animation.cpp b/engines/ultima/ultima8/world/actors/animation.cpp
index 77e7a8ac20..dc153407d3 100644
--- a/engines/ultima/ultima8/world/actors/animation.cpp
+++ b/engines/ultima/ultima8/world/actors/animation.cpp
@@ -51,6 +51,19 @@ bool isCombatAnimU8(const Sequence anim) {
}
}
+bool isCastAnimU8(const Sequence anim) {
+ switch (anim) {
+ case cast1:
+ case cast2:
+ case cast3:
+ case cast4:
+ case cast5:
+ return true;
+ default:
+ return false;
+ }
+}
+
bool isCombatAnimCru(const Sequence anim) {
switch (anim) {
case combatStand:
diff --git a/engines/ultima/ultima8/world/actors/animation.h b/engines/ultima/ultima8/world/actors/animation.h
index b36a136cd1..3a5add382f 100644
--- a/engines/ultima/ultima8/world/actors/animation.h
+++ b/engines/ultima/ultima8/world/actors/animation.h
@@ -167,6 +167,7 @@ enum Result {
bool isCombatAnim(const Sequence anim);
bool isCombatAnimU8(const Sequence anim);
bool isCombatAnimCru(const Sequence anim);
+bool isCastAnimU8(const Sequence anim);
Sequence checkWeapon(const Sequence nextanim, const Sequence lastanim);
} // End of namespace Animation
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 9d15308ba2..b80cb95fa4 100644
--- a/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/u8_avatar_mover_process.cpp
@@ -581,7 +581,7 @@ void U8AvatarMoverProcess::handleNormalMode() {
return;
// doing another animation?
- if (Kernel::get_instance()->getNumProcesses(1, ActorAnimProcess::ACTOR_ANIM_PROC_TYPE))
+ if (avatar->isBusy())
return;
// if we were running, slow to a walk before stopping
@@ -591,7 +591,9 @@ void U8AvatarMoverProcess::handleNormalMode() {
}
// not doing anything in particular? stand
- if (lastanim != Animation::stand && currentIdleTime == 0) {
+ // don't interrupt spells though.
+ if (lastanim != Animation::stand && !Animation::isCastAnimU8(lastanim)
+ && currentIdleTime == 0) {
waitFor(avatar->doAnim(Animation::stand, direction));
return;
}
More information about the Scummvm-git-logs
mailing list