[Scummvm-git-logs] scummvm master -> bf9c6a813640879b5656d8fbf8c6626c72f6df33
mgerhardy
noreply at scummvm.org
Tue Feb 11 16:55:19 UTC 2025
This automated email contains information about 5 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
ba7069292b TWINE: fixed invalid lastJoyFlag triggers in processBehaviourExecution
43a41ed429 TWINE: LBA1: flag the preview version
d8ec24f831 TWINE: use constants
736b5b385f TWINE: use enhancementEnabled from Engine class
bf9c6a8136 TWINE: only enable the engine fixes for lba1
Commit: ba7069292b60b01f23d8b8426a5658b9d269b3af
https://github.com/scummvm/scummvm/commit/ba7069292b60b01f23d8b8426a5658b9d269b3af
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2025-02-11T17:55:00+01:00
Commit Message:
TWINE: fixed invalid lastJoyFlag triggers in processBehaviourExecution
Changed paths:
engines/twine/scene/actor.cpp
engines/twine/scene/movements.cpp
diff --git a/engines/twine/scene/actor.cpp b/engines/twine/scene/actor.cpp
index 8c92373bc2c..2c1598dc3d3 100644
--- a/engines/twine/scene/actor.cpp
+++ b/engines/twine/scene/actor.cpp
@@ -401,11 +401,13 @@ void Actor::hitObj(int32 actorIdx, int32 actorIdxAttacked, int32 hitforce, int32
_engine->_extra->initSpecial(actor->_posObj.x, actor->_posObj.y + 1000, actor->_posObj.z, ExtraSpecialType::kHitStars);
- if (!actorIdxAttacked) {
+ if (IS_HERO(actorIdxAttacked)) {
_engine->_movements->_lastJoyFlag = true;
}
-
+ // TODO: in the original sources this in an else block - dotemu release doesn't have this (so we are going after dotmeu here)
+ // else {
actor->_lifePoint -= hitforce;
+ // }
if (actor->_lifePoint < 0) {
actor->_lifePoint = 0;
}
diff --git a/engines/twine/scene/movements.cpp b/engines/twine/scene/movements.cpp
index cfb8412e397..da117bb440a 100644
--- a/engines/twine/scene/movements.cpp
+++ b/engines/twine/scene/movements.cpp
@@ -273,13 +273,10 @@ void Movements::processBehaviourExecution(int actorIdx) {
} else {
if (_engine->_input->isActionActive(TwinEActionType::TurnLeft)) {
_engine->_animations->initAnim(AnimationTypes::kLeftPunch, AnimType::kAnimationThen, AnimationTypes::kStanding, actorIdx);
- _lastJoyFlag = true;
} else if (_engine->_input->isActionActive(TwinEActionType::TurnRight)) {
_engine->_animations->initAnim(AnimationTypes::kRightPunch, AnimType::kAnimationThen, AnimationTypes::kStanding, actorIdx);
- _lastJoyFlag = true;
} else if (_engine->_input->isActionActive(TwinEActionType::MoveForward)) {
_engine->_animations->initAnim(AnimationTypes::kKick, AnimType::kAnimationThen, AnimationTypes::kStanding, actorIdx);
- _lastJoyFlag = true;
}
}
break;
Commit: 43a41ed429b9c35eedcef606dc9c3e600c788afe
https://github.com/scummvm/scummvm/commit/43a41ed429b9c35eedcef606dc9c3e600c788afe
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2025-02-11T17:55:00+01:00
Commit Message:
TWINE: LBA1: flag the preview version
Changed paths:
engines/twine/detection.cpp
engines/twine/detection.h
engines/twine/resources/hqr.cpp
engines/twine/resources/resources.cpp
engines/twine/twine.h
diff --git a/engines/twine/detection.cpp b/engines/twine/detection.cpp
index 37e0f80db60..45b47fa9c5e 100644
--- a/engines/twine/detection.cpp
+++ b/engines/twine/detection.cpp
@@ -105,7 +105,7 @@ static const ADGameDescription twineGameDescriptions[] = {
AD_ENTRY1s("LBA.EXE", "c1a887e38283d43f271249ad9f2a73ef", 294025),
Common::EN_ANY,
Common::kPlatformDOS,
- ADGF_NO_FLAGS,
+ ADGF_NO_FLAGS | TwinE::TF_PREVIEW,
GUIO1(GUIO_NONE)
},
{
@@ -114,7 +114,7 @@ static const ADGameDescription twineGameDescriptions[] = {
AD_ENTRY1s("LBA.EXE", "c1a887e38283d43f271249ad9f2a73ef", 294025),
Common::FR_FRA,
Common::kPlatformDOS,
- ADGF_NO_FLAGS,
+ ADGF_NO_FLAGS | TwinE::TF_PREVIEW,
GUIO1(GUIO_NONE)
},
@@ -127,7 +127,7 @@ static const ADGameDescription twineGameDescriptions[] = {
AD_ENTRY1s("LBA.EXE", "c1a887e38283d43f271249ad9f2a73ef", 298697),
Common::EN_ANY,
Common::kPlatformDOS,
- ADGF_UNSTABLE,
+ ADGF_UNSTABLE | TwinE::TF_PREVIEW,
GUIO1(GUIO_NONE)
},
{
@@ -136,7 +136,7 @@ static const ADGameDescription twineGameDescriptions[] = {
AD_ENTRY1s("LBA.EXE", "c1a887e38283d43f271249ad9f2a73ef", 298697),
Common::FR_FRA,
Common::kPlatformDOS,
- ADGF_UNSTABLE,
+ ADGF_UNSTABLE | TwinE::TF_PREVIEW,
GUIO1(GUIO_NONE)
},
diff --git a/engines/twine/detection.h b/engines/twine/detection.h
index d9388f9e938..4c37c27af3f 100644
--- a/engines/twine/detection.h
+++ b/engines/twine/detection.h
@@ -38,7 +38,8 @@ enum TwineFeatureFlags {
TF_USE_GIF = (1 << 3),
TF_DOTEMU_ENHANCED = (1 << 4),
TF_LBA1_CLASSIC = (1 << 5),
- TF_MOD = (1 << 6)
+ TF_MOD = (1 << 6),
+ TF_PREVIEW = (1 << 7)
};
#define GAMEOPTION_WALL_COLLISION GUIO_GAMEOPTIONS1
diff --git a/engines/twine/resources/hqr.cpp b/engines/twine/resources/hqr.cpp
index 538062732cd..7314ebc4f03 100644
--- a/engines/twine/resources/hqr.cpp
+++ b/engines/twine/resources/hqr.cpp
@@ -202,6 +202,7 @@ Common::SeekableReadStream *makeReadStream(const char *filename, int index) {
Common::File *file = new Common::File();
if (!file->open(filename)) {
delete file;
+ warning("HQR: Could not open %s", filename);
return nullptr;
}
diff --git a/engines/twine/resources/resources.cpp b/engines/twine/resources/resources.cpp
index 0c6659089a0..545fa757b0e 100644
--- a/engines/twine/resources/resources.cpp
+++ b/engines/twine/resources/resources.cpp
@@ -155,9 +155,17 @@ void Resources::preloadInventoryItems() {
// lba2 has this data in code
return;
}
- const int32 numEntries = HQR::numEntries(Resources::HQR_INVOBJ_FILE);
- if (numEntries > NUM_INVENTORY_ITEMS) {
- error("Max allowed inventory items exceeded: %i/%i", numEntries, NUM_INVENTORY_ITEMS);
+ int32 numEntries = HQR::numEntries(Resources::HQR_INVOBJ_FILE);
+ if (_engine->isPreview()) {
+ if (numEntries != 32) {
+ error("Unexpected inventory items for lba1 preview version: %i/32", numEntries);
+ }
+ // TODO: this is obviously a hack
+ numEntries = NUM_INVENTORY_ITEMS;
+ } else {
+ if (numEntries > NUM_INVENTORY_ITEMS) {
+ error("Max allowed inventory items exceeded: %i/%i", numEntries, NUM_INVENTORY_ITEMS);
+ }
}
debugC(1, TwinE::kDebugResources, "preload %i inventory items", numEntries);
for (int32 i = 0; i < numEntries; i++) {
@@ -200,7 +208,9 @@ void Resources::initResources() {
}
if (!_holomapPointModelPtr.loadFromHQR(TwineResource(Resources::HQR_RESS_FILE, RESSHQR_HOLOPOINTMDL), _engine->isLBA1())) {
- error("Failed to load holomap point model");
+ if (!_engine->isPreview()) {
+ error("Failed to load holomap point model");
+ }
}
if (!_holomapArrowPtr.loadFromHQR(TwineResource(Resources::HQR_RESS_FILE, RESSHQR_HOLOARROWMDL), _engine->isLBA1())) {
@@ -212,7 +222,9 @@ void Resources::initResources() {
}
if (!_trajectories.loadFromHQR(TwineResource(Resources::HQR_RESS_FILE, RESSHQR_HOLOPOINTANIM), _engine->isLBA1())) {
- error("Failed to parse trajectory data");
+ if (!_engine->isPreview()) {
+ error("Failed to parse trajectory data");
+ }
}
debugC(1, TwinE::kDebugResources, "preload %i trajectories", (int)_trajectories.getTrajectories().size());
} else if (_engine->isLBA2()) {
@@ -226,13 +238,16 @@ void Resources::initResources() {
loadMovieInfo();
- const int32 textEntryCount = _engine->isLBA1() ? 28 : 30;
- for (int32 i = 0; i < textEntryCount / 2; ++i) {
- if (!_textData.loadFromHQR(Resources::HQR_TEXT_FILE, (TextBankId)i, _engine->_cfgfile._languageId, _engine->isLBA1(), textEntryCount)) {
- error("HQR ERROR: Parsing textbank %i failed", i);
+ if (!_engine->isPreview()) {
+ // TODO: where is the text in the preview version?
+ const int32 textEntryCount = _engine->isLBA1() ? 28 : 30;
+ for (int32 i = 0; i < textEntryCount / 2; ++i) {
+ if (!_textData.loadFromHQR(Resources::HQR_TEXT_FILE, (TextBankId)i, _engine->_cfgfile._languageId, _engine->isLBA1(), textEntryCount)) {
+ error("HQR ERROR: Parsing textbank %i failed for language %i (%i entries)", i, _engine->_cfgfile._languageId, textEntryCount);
+ }
}
+ debugC(1, TwinE::kDebugResources, "Loaded %i text banks", textEntryCount / 2);
}
- debugC(1, TwinE::kDebugResources, "Loaded %i text banks", textEntryCount / 2);
}
const TextEntry *Resources::getText(TextBankId textBankId, TextId index) const {
@@ -254,7 +269,11 @@ void Resources::loadMovieInfo() {
uint8 *content = nullptr;
int32 size;
if (_engine->isLBA1()) {
- size = HQR::getAllocEntry(&content, Resources::HQR_RESS_FILE, RESSHQR_FLAINFO);
+ if (_engine->isPreview()) {
+ size = 0;
+ } else {
+ size = HQR::getAllocEntry(&content, Resources::HQR_RESS_FILE, RESSHQR_FLAINFO);
+ }
} else {
size = HQR::getAllocEntry(&content, Resources::HQR_RESS_FILE, 48);
}
diff --git a/engines/twine/twine.h b/engines/twine/twine.h
index 46133777824..f7fc088a182 100644
--- a/engines/twine/twine.h
+++ b/engines/twine/twine.h
@@ -261,6 +261,7 @@ public:
bool isLBA1() const { return _gameType == TwineGameType::GType_LBA; }
bool isLBA2() const { return _gameType == TwineGameType::GType_LBA2; }
bool isLBASlideShow() const { return _gameType == TwineGameType::GType_LBASHOW; }
+ bool isPreview() const { return (_gameFlags & TwinE::TF_PREVIEW) != 0; }
bool isMod() const { return (_gameFlags & TwinE::TF_MOD) != 0; }
bool isDotEmuEnhanced() const { return (_gameFlags & TwinE::TF_DOTEMU_ENHANCED) != 0; }
bool isLba1Classic() const { return (_gameFlags & TwinE::TF_LBA1_CLASSIC) != 0; }
Commit: d8ec24f831632862d294bbd31aed425b1d227782
https://github.com/scummvm/scummvm/commit/d8ec24f831632862d294bbd31aed425b1d227782
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2025-02-11T17:55:00+01:00
Commit Message:
TWINE: use constants
Changed paths:
engines/twine/parser/body.cpp
diff --git a/engines/twine/parser/body.cpp b/engines/twine/parser/body.cpp
index c4d54dc3a66..cee214d5558 100644
--- a/engines/twine/parser/body.cpp
+++ b/engines/twine/parser/body.cpp
@@ -23,6 +23,9 @@
#include "twine/renderer/renderer.h"
#include "common/memstream.h"
+#define INFO_TRI 1
+#define INFO_ANIM 2
+
namespace TwinE {
void BodyData::reset() {
@@ -181,7 +184,7 @@ bool BodyData::loadFromStream(Common::SeekableReadStream &stream, bool lba1) {
reset();
if (lba1) {
const uint16 flags = stream.readUint16LE();
- animated = (flags & 2) != 0;
+ animated = (flags & INFO_ANIM) != 0;
bbox.mins.x = stream.readSint16LE();
bbox.maxs.x = stream.readSint16LE();
bbox.mins.y = stream.readSint16LE();
@@ -203,7 +206,7 @@ bool BodyData::loadFromStream(Common::SeekableReadStream &stream, bool lba1) {
} else {
// T_BODY_HEADER (lba2)
const uint32 flags = stream.readUint32LE();
- animated = (flags & 2) != 0;
+ animated = (flags & INFO_ANIM) != 0;
stream.skip(4); // int16 size of header and int16 dummy
bbox.mins.x = stream.readSint32LE();
bbox.maxs.x = stream.readSint32LE();
Commit: 736b5b385f6b473b8d602621a2d14b20b23a0769
https://github.com/scummvm/scummvm/commit/736b5b385f6b473b8d602621a2d14b20b23a0769
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2025-02-11T17:55:00+01:00
Commit Message:
TWINE: use enhancementEnabled from Engine class
also activate the funfrock door fix by default
see ticket https://bugs.scummvm.org/ticket/13818
Changed paths:
engines/twine/debugger/console.cpp
engines/twine/debugger/console.h
engines/twine/debugger/debugtools.cpp
engines/twine/scene/scene.cpp
engines/twine/scene/scene.h
engines/twine/script/script_life.cpp
diff --git a/engines/twine/debugger/console.cpp b/engines/twine/debugger/console.cpp
index 43db25a809c..59368d27e2a 100644
--- a/engines/twine/debugger/console.cpp
+++ b/engines/twine/debugger/console.cpp
@@ -68,7 +68,6 @@ TwinEConsole::TwinEConsole(TwinEEngine *engine) : _engine(engine), GUI::Debugger
registerCmd("set_holomap_flag", WRAP_METHOD(TwinEConsole, doSetHolomapFlag));
registerCmd("set_holomap_trajectory", WRAP_METHOD(TwinEConsole, doSetHolomapTrajectory));
registerCmd("show_holomap_flag", WRAP_METHOD(TwinEConsole, doPrintHolomapFlag));
- registerCmd("toggle_enhancements", WRAP_METHOD(TwinEConsole, doToggleEnhancements));
}
TwinEConsole::~TwinEConsole() {
@@ -113,11 +112,6 @@ bool TwinEConsole::doToggleGodMode(int argc, const char **argv) {
return true;
}
-bool TwinEConsole::doToggleEnhancements(int argc, const char **argv) {
- TOGGLE_DEBUG(_engine->_scene->_enableEnhancements, "enable enhancements\n")
- return true;
-}
-
bool TwinEConsole::doToggleClipRendering(int argc, const char **argv) {
TOGGLE_DEBUG(_engine->_debugState->_showingClips, "clip rendering\n")
return true;
diff --git a/engines/twine/debugger/console.h b/engines/twine/debugger/console.h
index bdbffdab621..4b32d34bea0 100644
--- a/engines/twine/debugger/console.h
+++ b/engines/twine/debugger/console.h
@@ -55,7 +55,6 @@ private:
bool doToggleActorRendering(int argc, const char **argv);
bool doToggleTrackRendering(int argc, const char **argv);
bool doToggleGodMode(int argc, const char **argv);
- bool doToggleEnhancements(int argc, const char **argv);
bool doToggleFreeCamera(int argc, const char **argv);
bool doToggleSceneRendering(int argc, const char **argv);
bool doSetTrackObject(int argc, const char **argv);
diff --git a/engines/twine/debugger/debugtools.cpp b/engines/twine/debugger/debugtools.cpp
index e9098222a54..3db98a5108d 100644
--- a/engines/twine/debugger/debugtools.cpp
+++ b/engines/twine/debugger/debugtools.cpp
@@ -467,7 +467,6 @@ static void sceneDetailsWindows(TwinEEngine *engine) {
ImGuiEx::InputInt("Currently followed actor", &scene->_numObjFollow);
- ImGui::Checkbox("Enable enhancements", &scene->_enableEnhancements);
ImGui::Checkbox("Render grid tiles", &scene->_flagRenderGrid);
ImGuiEx::InputInt("Current script value", &scene->_currentScriptValue);
ImGuiEx::InputInt("Talking actor", &scene->_talkingActor);
diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index 018888eccc9..bfe9deeacf1 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -24,6 +24,7 @@
#include "common/file.h"
#include "common/memstream.h"
#include "common/util.h"
+#include "engines/enhancements.h"
#include "twine/audio/music.h"
#include "twine/audio/sound.h"
#include "twine/debugger/debug_state.h"
@@ -440,14 +441,22 @@ bool Scene::loadSceneLBA1() {
point->z = stream.readSint16LE();
}
- if (_enableEnhancements) {
- switch (_numCube) {
- case LBA1SceneId::Hamalayi_Mountains_landing_place:
+ if (_engine->enhancementEnabled(kEnhMinorBugFixes)) {
+ if (_numCube == LBA1SceneId::Hamalayi_Mountains_landing_place) {
// move the mine a little bit, as it's too close to the change cube zone
_sceneActors[21]._posObj.x = _sceneActors[21]._oldPos.x = 6656 + 256;
_sceneActors[21]._posObj.z = _sceneActors[21]._oldPos.z = 768;
- break;
- case LBA1SceneId::Principal_Island_outside_the_fortress:
+ }
+#if 0
+ else if (_numCube == LBA1SceneId::Tippet_Island_Secret_passage_scene_1) {
+ _sceneZones[6].maxs.z = 3616;
+ } else if (_numCube == LBA1SceneId::Principal_Island_inside_the_fortress) {
+ _sceneZones[11].type = (ZoneType)50;
+ }
+#endif
+ }
+ if (_engine->enhancementEnabled(kEnhGameBreakingBugFixes)) {
+ if (_numCube == LBA1SceneId::Principal_Island_outside_the_fortress) {
// https://bugs.scummvm.org/ticket/13818
_sceneActors[29]._posObj.z = _sceneActors[29]._oldPos.z = 1795;
@@ -471,13 +480,6 @@ bool Scene::loadSceneLBA1() {
_sceneZones[22].maxs.x = 8865;
_sceneZones[22].maxs.z = 6881;
#endif
- break;
- case LBA1SceneId::Tippet_Island_Secret_passage_scene_1:
- _sceneZones[6].maxs.z = 3616;
- break;
- case LBA1SceneId::Principal_Island_inside_the_fortress:
- _sceneZones[11].type = (ZoneType)50;
- break;
}
}
@@ -544,7 +546,7 @@ void Scene::dumpSceneScripts() const {
void Scene::changeCube() {
if (_engine->isLBA1()) {
- if (_enableEnhancements) {
+ if (_engine->enhancementEnabled(kEnhMinorBugFixes)) {
if (_numCube == LBA1SceneId::Citadel_Island_Harbor && _newCube == LBA1SceneId::Principal_Island_Harbor) {
if (_sceneNumZones >= 15 && _sceneNumTracks >= 8) {
const ZoneStruct *zone = &_sceneZones[15];
diff --git a/engines/twine/scene/scene.h b/engines/twine/scene/scene.h
index 13bddf574a0..401b450557a 100644
--- a/engines/twine/scene/scene.h
+++ b/engines/twine/scene/scene.h
@@ -199,7 +199,6 @@ public:
int16 _numObjFollow = OWN_ACTOR_SCENE_INDEX;
/** Current actor in zone - climbing a ladder */
bool _flagClimbing = false;
- bool _enableEnhancements = false;
/** Current actor manipulated in scripts */
int16 _currentScriptValue = 0;
diff --git a/engines/twine/script/script_life.cpp b/engines/twine/script/script_life.cpp
index d07d2a49ee3..d52bcd89958 100644
--- a/engines/twine/script/script_life.cpp
+++ b/engines/twine/script/script_life.cpp
@@ -21,6 +21,7 @@
#include "twine/script/script_life.h"
#include "common/memstream.h"
+#include "engines/enhancements.h"
#include "twine/audio/music.h"
#include "twine/audio/sound.h"
#include "twine/debugger/debug_state.h"
@@ -1425,7 +1426,7 @@ int32 ScriptLife::lZOOM(TwinEEngine *engine, LifeScriptContext &ctx) {
int32 ScriptLife::lPOS_POINT(TwinEEngine *engine, LifeScriptContext &ctx) {
const int32 trackIdx = ctx.stream.readByte();
debugC(3, kDebugLevels::kDebugScriptsLife, "LIFE::POS_POINT(%i)", (int)trackIdx);
- if (engine->_scene->_enableEnhancements) {
+ if (engine->enhancementEnabled(kEnhMinorBugFixes)) {
if (IS_HERO(ctx.actorIdx) && engine->_scene->_numCube == LBA1SceneId::Citadel_Island_Harbor && trackIdx == 8) {
ctx.stream.rewind(2);
ctx.stream.writeByte(0x34); // CHANGE_CUBE
Commit: bf9c6a813640879b5656d8fbf8c6626c72f6df33
https://github.com/scummvm/scummvm/commit/bf9c6a813640879b5656d8fbf8c6626c72f6df33
Author: Martin Gerhardy (martin.gerhardy at gmail.com)
Date: 2025-02-11T17:55:00+01:00
Commit Message:
TWINE: only enable the engine fixes for lba1
added a few comments
Changed paths:
engines/twine/scene/buggy.cpp
engines/twine/scene/scene.cpp
engines/twine/shared.h
diff --git a/engines/twine/scene/buggy.cpp b/engines/twine/scene/buggy.cpp
index 74d24519618..d12262fcc41 100644
--- a/engines/twine/scene/buggy.cpp
+++ b/engines/twine/scene/buggy.cpp
@@ -531,7 +531,7 @@ void Buggy::moveBuggy(ActorStruct *ptrobj) {
_engine->_actor->initBody(BodyType::btMageTir, OWN_ACTOR_SCENE_INDEX);
}
- _engine->_animations->initAnim(GEN_ANIM_LANCE, AnimType::kAnimationTypeRepeat, OWN_ACTOR_SCENE_INDEX);
+ _engine->_animations->initAnim(AnimationTypes::kThrowBall, AnimType::kAnimationTypeRepeat, OWN_ACTOR_SCENE_INDEX);
/* control direction pendant Aiming */
if (!ptrobj->_workFlags.bIsRotationByAnim) {
diff --git a/engines/twine/scene/scene.cpp b/engines/twine/scene/scene.cpp
index bfe9deeacf1..98e3d0f5ee7 100644
--- a/engines/twine/scene/scene.cpp
+++ b/engines/twine/scene/scene.cpp
@@ -441,46 +441,29 @@ bool Scene::loadSceneLBA1() {
point->z = stream.readSint16LE();
}
- if (_engine->enhancementEnabled(kEnhMinorBugFixes)) {
- if (_numCube == LBA1SceneId::Hamalayi_Mountains_landing_place) {
- // move the mine a little bit, as it's too close to the change cube zone
- _sceneActors[21]._posObj.x = _sceneActors[21]._oldPos.x = 6656 + 256;
- _sceneActors[21]._posObj.z = _sceneActors[21]._oldPos.z = 768;
- }
-#if 0
- else if (_numCube == LBA1SceneId::Tippet_Island_Secret_passage_scene_1) {
- _sceneZones[6].maxs.z = 3616;
- } else if (_numCube == LBA1SceneId::Principal_Island_inside_the_fortress) {
- _sceneZones[11].type = (ZoneType)50;
- }
-#endif
- }
- if (_engine->enhancementEnabled(kEnhGameBreakingBugFixes)) {
- if (_numCube == LBA1SceneId::Principal_Island_outside_the_fortress) {
- // https://bugs.scummvm.org/ticket/13818
- _sceneActors[29]._posObj.z = _sceneActors[29]._oldPos.z = 1795;
-
+ if (_engine->isLBA1()) {
+ if (_engine->enhancementEnabled(kEnhMinorBugFixes)) {
+ if (_numCube == LBA1SceneId::Hamalayi_Mountains_landing_place) {
+ // move the mine a little bit, as it's too close to the change cube zone
+ _sceneActors[21]._posObj.x = _sceneActors[21]._oldPos.x = 6656 + 256;
+ _sceneActors[21]._posObj.z = _sceneActors[21]._oldPos.z = 768;
+ }
#if 0
- // increase the zones for opening the doors
- // red card door
- _sceneZones[15].mins.x = 1104;
- _sceneZones[15].mins.z = 8448;
- _sceneZones[15].maxs.x = 4336;
- _sceneZones[15].maxs.z = 11488;
-
- // red card door
- _sceneZones[16].mins.x = 21104;
- _sceneZones[16].mins.z = 4608;
- _sceneZones[16].maxs.x = 23824;
- _sceneZones[16].maxs.z = 8080;
-
- // blue card door
- _sceneZones[22].mins.x = 6144;
- _sceneZones[22].mins.z = 6144;
- _sceneZones[22].maxs.x = 8865;
- _sceneZones[22].maxs.z = 6881;
+ else if (_numCube == LBA1SceneId::Tippet_Island_Secret_passage_scene_1) {
+ _sceneZones[6].maxs.z = 3616;
+ }
#endif
}
+ if (_engine->enhancementEnabled(kEnhGameBreakingBugFixes)) {
+ if (_numCube == LBA1SceneId::Principal_Island_outside_the_fortress) {
+ // https://bugs.scummvm.org/ticket/13818
+ _sceneActors[29]._posObj.z = _sceneActors[29]._oldPos.z = 1795;
+ } else if (_numCube == LBA1SceneId::Principal_Island_inside_the_fortress) {
+ // Set this zone to something invalid to fix a getting-stuck-bug
+ // the original value was ZoneType::kGrid (3)
+ _sceneZones[11].type = (ZoneType)50;
+ }
+ }
}
return true;
diff --git a/engines/twine/shared.h b/engines/twine/shared.h
index ce4b5e7cf77..a1636c8f89e 100644
--- a/engines/twine/shared.h
+++ b/engines/twine/shared.h
@@ -38,16 +38,16 @@
/**
* This gameflag indicates that the inventory items are taken from Twinson because he went to jail
*/
-#define GAMEFLAG_INVENTORY_DISABLED 70
+#define GAMEFLAG_INVENTORY_DISABLED 70 // Any prison FLAG_CONSIGNE
// Hit
#define GAMEFLAG_VIDEO_BAFFE 200
// Hit, band-aid
#define GAMEFLAG_VIDEO_BAFFE2 201
// Hit, black eye
#define GAMEFLAG_VIDEO_BAFFE3 202
-// Ferry #1
+// Ferry #1 Citadel Island <-> Principal Island
#define GAMEFLAG_VIDEO_BATEAU 203
-// Temple of Bu
+// White Leaf Desert, Temple of Bu
#define GAMEFLAG_VIDEO_TEMPLE 204
// White Leaf Desert, flute
#define GAMEFLAG_VIDEO_FLUTE2 205
@@ -57,7 +57,7 @@
#define GAMEFLAG_VIDEO_NEIGE2 207
// Hamalayi Mountains, ski lift
#define GAMEFLAG_VIDEO_SURF 208
-// Ferry #2
+// Ferry #2 Citadel Island <-> Principal Island
#define GAMEFLAG_VIDEO_BATEAU2 209
// Fortress, Zoe Clone
#define GAMEFLAG_VIDEO_CAPTURE 210
More information about the Scummvm-git-logs
mailing list