[Scummvm-git-logs] scummvm master -> 61d97898dac25985c63c9a5c01e8936428b2f444
mduggan
mgithub at guarana.org
Sun May 2 14:50:09 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:
61d97898da ULTIMA8: Set fixed RAND_MAX to avoid platform differences
Commit: 61d97898dac25985c63c9a5c01e8936428b2f444
https://github.com/scummvm/scummvm/commit/61d97898dac25985c63c9a5c01e8936428b2f444
Author: Matthew Duggan (mgithub at guarana.org)
Date: 2021-05-02T23:48:41+09:00
Commit Message:
ULTIMA8: Set fixed RAND_MAX to avoid platform differences
This should fix bug #12182 which seems to be caused by a difference in the MSVC
RAND_MAX compared to posix systems.
Changed paths:
engines/ultima/ultima8/kernel/kernel.cpp
engines/ultima/ultima8/kernel/kernel.h
engines/ultima/ultima8/world/actors/actor.cpp
engines/ultima/ultima8/world/gravity_process.cpp
diff --git a/engines/ultima/ultima8/kernel/kernel.cpp b/engines/ultima/ultima8/kernel/kernel.cpp
index fd42493528..3632ca17ec 100644
--- a/engines/ultima/ultima8/kernel/kernel.cpp
+++ b/engines/ultima/ultima8/kernel/kernel.cpp
@@ -396,8 +396,10 @@ uint32 Kernel::I_resetRef(const uint8 *args, unsigned int /*argsize*/) {
return 0;
}
+const uint U8_RAND_MAX = 0x7fffffff;
+
uint getRandom() {
- return Ultima8Engine::get_instance()->getRandomNumber(0x7fffffff);
+ return Ultima8Engine::get_instance()->getRandomNumber(U8_RAND_MAX);
}
} // End of namespace Ultima8
diff --git a/engines/ultima/ultima8/kernel/kernel.h b/engines/ultima/ultima8/kernel/kernel.h
index 82c6d0a2ae..658d9c6233 100644
--- a/engines/ultima/ultima8/kernel/kernel.h
+++ b/engines/ultima/ultima8/kernel/kernel.h
@@ -157,8 +157,11 @@ private:
static Kernel *_kernel;
};
+
+extern const uint U8_RAND_MAX;
extern uint getRandom();
+
} // End of namespace Ultima8
} // End of namespace Ultima
diff --git a/engines/ultima/ultima8/world/actors/actor.cpp b/engines/ultima/ultima8/world/actors/actor.cpp
index ba2823c557..4bc643e39c 100644
--- a/engines/ultima/ultima8/world/actors/actor.cpp
+++ b/engines/ultima/ultima8/world/actors/actor.cpp
@@ -177,7 +177,7 @@ bool Actor::giveTreasure() {
// check chance
if (ti._chance < 0.999 &&
- (static_cast<double>(getRandom()) / RAND_MAX) > ti._chance) {
+ (static_cast<double>(getRandom()) / U8_RAND_MAX) > ti._chance) {
continue;
}
@@ -897,6 +897,8 @@ void Actor::receiveHitCru(uint16 other, Direction dir, int damage, uint16 damage
doAnim(Animation::teleportOutReplacement, dir_current);
doAnim(Animation::teleportInReplacement, dir_current);
_hitPoints -= damage;
+ //if (_hitPoints < 0)
+ // _hitPoints = 0;
return;
}
diff --git a/engines/ultima/ultima8/world/gravity_process.cpp b/engines/ultima/ultima8/world/gravity_process.cpp
index 7e28898f55..56c69ad49d 100644
--- a/engines/ultima/ultima8/world/gravity_process.cpp
+++ b/engines/ultima/ultima8/world/gravity_process.cpp
@@ -169,7 +169,7 @@ void GravityProcess::run() {
// in a 180 degree pie around the orginal vector in x/y
double heading_r = atan2((double)_ySpeed, (double)_xSpeed);
double deltah_r = static_cast<double>(getRandom())
- * M_PI / RAND_MAX - M_PI / 2;
+ * M_PI / U8_RAND_MAX - M_PI / 2;
#ifdef BOUNCE_DIAG
double headingold_r = heading_r;
#endif
More information about the Scummvm-git-logs
mailing list