[Scummvm-git-logs] scummvm master -> 626ec3fef54b9a79bc6d5c7fcbc04757b307fa8c
athrxx
noreply at scummvm.org
Fri Nov 14 22:09:25 UTC 2025
This automated email contains information about 6 new commits which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .
Summary:
e0f6daed0b KYRA: (EOB) - enhanced thrown weapon reload
a3d85f81af KYRA: (EOB) - comment unreachable original code
805ee7952d KYRA: (EOB) - add launcher check boxes for certain options
88ab563a69 KYRA: (EOB) - make PR code use new checkbox
12d66b4ba1 KYRA: (EOB) - changed text of launcher checkboxes
626ec3fef5 KYRA: (EOB) - changed text of launcher checkbox
Commit: e0f6daed0baa94d0c1cf3e94c7318e2a5ec43ebc
https://github.com/scummvm/scummvm/commit/e0f6daed0baa94d0c1cf3e94c7318e2a5ec43ebc
Author: Vladimir VrziÄ (vvrzic at gmail.com)
Date: 2025-11-14T23:09:19+01:00
Commit Message:
KYRA: (EOB) - enhanced thrown weapon reload
Changed paths:
NEWS.md
engines/kyra/engine/eobcommon.h
engines/kyra/engine/items_eob.cpp
diff --git a/NEWS.md b/NEWS.md
index 9568c172ac1..36b1128ca3e 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -2504,6 +2504,8 @@ For a more comprehensive changelog of the latest experimental code, see:
added to the NEWS file).
- Fixed missing voice reactions when hitting enemies in CD version of
Lands of Lore.
+ - In Eye of the Beholder 1 and 2, when "Faithful AD&D Rules" option is
+ enabled, thrown weapons are auto-replaced from backpack slots.
Lab:
- Fixed lock-up during ending sequence.
diff --git a/engines/kyra/engine/eobcommon.h b/engines/kyra/engine/eobcommon.h
index 1bade515075..7165d33f505 100644
--- a/engines/kyra/engine/eobcommon.h
+++ b/engines/kyra/engine/eobcommon.h
@@ -491,6 +491,8 @@ protected:
void checkFlyingObjects();
void reloadWeaponSlot(int charIndex, int slotIndex, int itemType, int arrowOrDagger);
+ bool isThrownWeaponItemType(int itemType);
+ void reloadWeaponSlotEnhanced(int charIndex, int slotIndex);
Common::Array<EoBItem> _items;
uint16 _numItems;
diff --git a/engines/kyra/engine/items_eob.cpp b/engines/kyra/engine/items_eob.cpp
index 7c726e2255b..fa3a03f6622 100644
--- a/engines/kyra/engine/items_eob.cpp
+++ b/engines/kyra/engine/items_eob.cpp
@@ -818,6 +818,10 @@ void EoBCoreEngine::checkFlyingObjects() {
}
void EoBCoreEngine::reloadWeaponSlot(int charIndex, int slotIndex, int itemType, int arrowOrDagger) {
+ if (_configADDRuleEnhancements) {
+ return reloadWeaponSlotEnhanced(charIndex, slotIndex);
+ }
+
if (arrowOrDagger && _characters[charIndex].inventory[16]) {
_characters[charIndex].inventory[slotIndex] = getQueuedItem(&_characters[charIndex].inventory[16], 0, -1);
} else {
@@ -833,6 +837,26 @@ void EoBCoreEngine::reloadWeaponSlot(int charIndex, int slotIndex, int itemType,
}
}
+bool EoBCoreEngine::isThrownWeaponItemType(int itemType) {
+ return (_itemTypes[itemType].extraProperties & 0x7F) == 2;
+}
+
+void EoBCoreEngine::reloadWeaponSlotEnhanced(int charIndex, int slotIndex) {
+ const uint8 kThrownWeaponSlotCount = 17;
+ const uint8 kThrownWeaponSlots[kThrownWeaponSlotCount] = {
+ 24, 23, 22, // belt, bottom to top
+ 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 // backpack
+ };
+
+ for (int i = 0; i < kThrownWeaponSlotCount; i++) {
+ uint8 candidateSlotIndex = kThrownWeaponSlots[i];
+ if (_characters[charIndex].inventory[candidateSlotIndex] && isThrownWeaponItemType(_items[_characters[charIndex].inventory[candidateSlotIndex]].type)) {
+ SWAP(_characters[charIndex].inventory[slotIndex], _characters[charIndex].inventory[candidateSlotIndex]);
+ break;
+ }
+ }
+}
+
} // End of namespace Kyra
#endif // ENABLE_EOB
Commit: a3d85f81afc6cf541cdbecd390b5d7c6a230b535
https://github.com/scummvm/scummvm/commit/a3d85f81afc6cf541cdbecd390b5d7c6a230b535
Author: Vladimir VrziÄ (vvrzic at gmail.com)
Date: 2025-11-14T23:09:19+01:00
Commit Message:
KYRA: (EOB) - comment unreachable original code
Changed paths:
engines/kyra/engine/items_eob.cpp
diff --git a/engines/kyra/engine/items_eob.cpp b/engines/kyra/engine/items_eob.cpp
index fa3a03f6622..662c10dffee 100644
--- a/engines/kyra/engine/items_eob.cpp
+++ b/engines/kyra/engine/items_eob.cpp
@@ -823,12 +823,14 @@ void EoBCoreEngine::reloadWeaponSlot(int charIndex, int slotIndex, int itemType,
}
if (arrowOrDagger && _characters[charIndex].inventory[16]) {
+ // this branch is never taken because arrowOrDagger = 0 is passed by the only caller
_characters[charIndex].inventory[slotIndex] = getQueuedItem(&_characters[charIndex].inventory[16], 0, -1);
} else {
for (int i = 24; i >= 22; i--) {
if (!_characters[charIndex].inventory[i])
continue;
if (_items[_characters[charIndex].inventory[i]].type == itemType && itemType != -1)
+ // this branch is never taken because itemType = -1 is passed by the only caller
continue;
_characters[charIndex].inventory[slotIndex] = _characters[charIndex].inventory[i];
_characters[charIndex].inventory[i] = 0;
Commit: 805ee7952d0c0d7722b496ba86f1e852c3a82da7
https://github.com/scummvm/scummvm/commit/805ee7952d0c0d7722b496ba86f1e852c3a82da7
Author: athrxx (athrxx at scummvm.org)
Date: 2025-11-14T23:09:19+01:00
Commit Message:
KYRA: (EOB) - add launcher check boxes for certain options
- add separate check box for the Beohram/Ileria NPC patches,
since this is not about AD&D rules but about fixing (probably
wrong) character stats.
- add check box for the new improved missile weapn reloading
feature.
As per usual, the new check boxes will only appear in the launcher
for each target after running it once.
Changed paths:
engines/kyra/detection.h
engines/kyra/detection_tables.h
engines/kyra/engine/eobcommon.cpp
engines/kyra/engine/eobcommon.h
engines/kyra/metaengine.cpp
diff --git a/engines/kyra/detection.h b/engines/kyra/detection.h
index 21e4e2d7e4a..b55e531c634 100644
--- a/engines/kyra/detection.h
+++ b/engines/kyra/detection.h
@@ -83,6 +83,8 @@ struct KYRAGameDescription {
#define GAMEOPTION_EOB_HPGRAPHS GUIO_GAMEOPTIONS6
#define GAMEOPTION_EOB_MOUSESWAP GUIO_GAMEOPTIONS7
#define GAMEOPTION_EOB_ADDRULES GUIO_GAMEOPTIONS9
+#define GAMEOPTION_EOB_RELOAD GUIO_GAMEOPTIONS10
+#define GAMEOPTION_EOB_NPCPATCH GUIO_GAMEOPTIONS11
} // End of anonymous namespace
diff --git a/engines/kyra/detection_tables.h b/engines/kyra/detection_tables.h
index 74e4e05ab66..ce17c343824 100644
--- a/engines/kyra/detection_tables.h
+++ b/engines/kyra/detection_tables.h
@@ -1954,7 +1954,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
- GUIO10(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_MIDIPCJR, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO12(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_MIDIPCJR, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD, GAMEOPTION_EOB_NPCPATCH)
},
EOB_FLAGS
},
@@ -1967,7 +1967,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::DE_DEU,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
- GUIO10(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_MIDIPCJR, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO12(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_MIDIPCJR, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD, GAMEOPTION_EOB_NPCPATCH)
},
EOB_FLAGS
},
@@ -1980,7 +1980,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::IT_ITA,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
- GUIO10(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_MIDIPCJR, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO12(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_MIDIPCJR, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD, GAMEOPTION_EOB_NPCPATCH)
},
EOB_FLAGS
},
@@ -1993,7 +1993,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::ES_ESP,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
- GUIO10(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_MIDIPCJR, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO12(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_MIDIPCJR, GUIO_RENDERVGA, GUIO_RENDEREGA, GUIO_RENDERCGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD, GAMEOPTION_EOB_NPCPATCH)
},
EOB_SPANISH_FLAGS
},
@@ -2006,7 +2006,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_NO_FLAGS,
- GUIO6(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_RENDERAMIGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO8(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_RENDERAMIGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD, GAMEOPTION_EOB_NPCPATCH)
},
EOB_FLAGS
},
@@ -2019,7 +2019,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::DE_DEU,
Common::kPlatformAmiga,
ADGF_NO_FLAGS,
- GUIO6(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_RENDERAMIGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO8(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_RENDERAMIGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD, GAMEOPTION_EOB_NPCPATCH)
},
EOB_FLAGS
},
@@ -2032,7 +2032,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::JA_JPN,
Common::kPlatformPC98,
ADGF_NO_FLAGS,
- GUIO6(GUIO_NOSPEECH, GUIO_MIDIPC98, GUIO_RENDERPC98_16C, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO8(GUIO_NOSPEECH, GUIO_MIDIPC98, GUIO_RENDERPC98_16C, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD, GAMEOPTION_EOB_NPCPATCH)
},
EOB_PC98_FLAGS
},
@@ -2046,7 +2046,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::EN_ANY,
Common::kPlatformSegaCD,
ADGF_NO_FLAGS,
- GUIO4(GUIO_NOSPEECH, GUIO_MIDISEGACD, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO6(GUIO_NOSPEECH, GUIO_MIDISEGACD, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD, GAMEOPTION_EOB_NPCPATCH)
},
EOB_FLAGS
},
@@ -2060,7 +2060,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::JA_JPN,
Common::kPlatformSegaCD,
ADGF_NO_FLAGS,
- GUIO4(GUIO_NOSPEECH, GUIO_MIDISEGACD, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO6(GUIO_NOSPEECH, GUIO_MIDISEGACD, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD, GAMEOPTION_EOB_NPCPATCH)
},
EOB_FLAGS
},
@@ -2073,7 +2073,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::EN_ANY,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
- GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO9(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD)
},
EOB2_FLAGS
},
@@ -2086,7 +2086,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::DE_DEU,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
- GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO9(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD)
},
EOB2_FLAGS
},
@@ -2099,7 +2099,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::ES_ESP,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
- GUIO8(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO9(GUIO_NOSPEECH, GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD)
},
EOB2_FLAGS
},
@@ -2125,7 +2125,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::ZH_TWN,
Common::kPlatformDOS,
ADGF_NO_FLAGS,
- GUIO7(GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO8(GUIO_MIDIADLIB, GUIO_MIDIPCSPK, GUIO_RENDERVGA, GUIO_RENDEREGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD)
},
EOB2_TALKIE_FLAGS
},
@@ -2138,7 +2138,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::JA_JPN,
Common::kPlatformFMTowns,
ADGF_NO_FLAGS,
- GUIO6(GUIO_NOSPEECH, GUIO_MIDITOWNS, GUIO_RENDERFMTOWNS, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO7(GUIO_NOSPEECH, GUIO_MIDITOWNS, GUIO_RENDERFMTOWNS, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD)
},
EOB2_FMTOWNS_FLAGS
},
@@ -2151,7 +2151,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::EN_ANY,
Common::kPlatformAmiga,
ADGF_NO_FLAGS,
- GUIO6(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_RENDERAMIGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO7(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_RENDERAMIGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD)
},
EOB2_FLAGS
},
@@ -2164,7 +2164,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::DE_DEU,
Common::kPlatformAmiga,
ADGF_NO_FLAGS,
- GUIO6(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_RENDERAMIGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO7(GUIO_NOSPEECH, GUIO_MIDIAMIGA, GUIO_RENDERAMIGA, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD)
},
EOB2_FLAGS
},
@@ -2180,7 +2180,7 @@ const KYRAGameDescription adGameDescs[] = {
Common::JA_JPN,
Common::kPlatformPC98,
ADGF_NO_FLAGS,
- GUIO9(GUIO_NOSPEECH, GUIO_MIDIPC98, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_RENDERPC98_256C, GUIO_RENDERPC98_16C, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES)
+ GUIO10(GUIO_NOSPEECH, GUIO_MIDIPC98, GUIO_MIDIMT32, GUIO_MIDIGM, GUIO_RENDERPC98_256C, GUIO_RENDERPC98_16C, GAMEOPTION_EOB_HPGRAPHS, GAMEOPTION_EOB_MOUSESWAP, GAMEOPTION_EOB_ADDRULES, GAMEOPTION_EOB_RELOAD)
},
EOB2_PC98_FLAGS
},
diff --git a/engines/kyra/engine/eobcommon.cpp b/engines/kyra/engine/eobcommon.cpp
index 8b06f93953f..c3ff17a93ef 100644
--- a/engines/kyra/engine/eobcommon.cpp
+++ b/engines/kyra/engine/eobcommon.cpp
@@ -138,6 +138,8 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags) : KyraRpgE
_configHpBarGraphs = true;
_configMouseBtSwap = false;
_configADDRuleEnhancements = false;
+ _configEnhancedReload = false;
+ _configNPCPatch = false;
_npcSequenceSub = 0;
_moveCounter = 0;
@@ -686,13 +688,18 @@ void EoBCoreEngine::registerDefaultSettings() {
ConfMan.registerDefault("hpbargraphs", true);
ConfMan.registerDefault("mousebtswap", false);
ConfMan.registerDefault("addrules", false);
+ ConfMan.registerDefault("mreload", false);
ConfMan.registerDefault("importOrigSaves", true);
+ if (_flags.gameID == GI_EOB1)
+ ConfMan.registerDefault("npcpatch", false);
}
void EoBCoreEngine::readSettings() {
_configHpBarGraphs = ConfMan.getBool("hpbargraphs");
_configMouseBtSwap = ConfMan.getBool("mousebtswap");
_configADDRuleEnhancements = ConfMan.getBool("addrules");
+ _configEnhancedReload = ConfMan.getBool("mreload");
+ _configNPCPatch = (_flags.gameID == GI_EOB1) ? ConfMan.getBool("npcpatch") : false;
_configSounds = ConfMan.getBool("sfx_mute") ? 0 : 1;
_configMusic = (_flags.platform == Common::kPlatformPC98 || _flags.platform == Common::kPlatformSegaCD) ? (ConfMan.getBool("music_mute") ? 0 : 1) : (_configSounds ? 1 : 0);
@@ -706,6 +713,9 @@ void EoBCoreEngine::writeSettings() {
ConfMan.setBool("hpbargraphs", _configHpBarGraphs);
ConfMan.setBool("mousebtswap", _configMouseBtSwap);
ConfMan.setBool("addrules", _configADDRuleEnhancements);
+ ConfMan.setBool("mreload", _configEnhancedReload);
+ if (_flags.gameID == GI_EOB1)
+ ConfMan.setBool("npcpatch", _configNPCPatch);
ConfMan.setBool("sfx_mute", _configSounds == 0);
if (_flags.platform == Common::kPlatformPC98 || _flags.platform == Common::kPlatformSegaCD)
ConfMan.setBool("music_mute", _configMusic == 0);
@@ -1432,7 +1442,7 @@ void EoBCoreEngine::initNpc(int npcIndex) {
* "sister"), by the portrait and by the character sheet in the
* official Clue Book.
*/
- if (_configADDRuleEnhancements) {
+ if (_configNPCPatch) {
if (_flags.gameID == GI_EOB1) {
if (npcIndex == 1) {
debugC(1, kDebugLevelMain, "Patching Beohram to be a paladin");
diff --git a/engines/kyra/engine/eobcommon.h b/engines/kyra/engine/eobcommon.h
index 7165d33f505..7df78fd2be8 100644
--- a/engines/kyra/engine/eobcommon.h
+++ b/engines/kyra/engine/eobcommon.h
@@ -855,6 +855,8 @@ protected:
bool _configHpBarGraphs;
bool _configMouseBtSwap;
bool _configADDRuleEnhancements;
+ bool _configEnhancedReload;
+ bool _configNPCPatch;
Graphics::Surface _thumbNail;
diff --git a/engines/kyra/metaengine.cpp b/engines/kyra/metaengine.cpp
index dbcba8aa617..df45062d71f 100644
--- a/engines/kyra/metaengine.cpp
+++ b/engines/kyra/metaengine.cpp
@@ -165,6 +165,30 @@ const ADExtraGuiOptionsMap gameGuiOptions[] = {
}
},
+ {
+ GAMEOPTION_EOB_NPCPATCH,
+ {
+ _s("Fix NPC stats"),
+ _s("Fix stats of Ileria and Beohram NPCs (Ileria should be female and Beohram a paladin)"),
+ "npcpatch",
+ false,
+ 0,
+ 0
+ }
+ },
+
+ {
+ GAMEOPTION_EOB_RELOAD,
+ {
+ _s("Enhanced missile reload"),
+ _s("Daggers, darts, stones and similar weapons get reloaded from all inventory slots, not just the belt"),
+ "mreload",
+ false,
+ 0,
+ 0
+ }
+ },
+
AD_EXTRA_GUI_OPTIONS_TERMINATOR
};
Commit: 88ab563a6966f88de603b68a9bb8a52532d2e06a
https://github.com/scummvm/scummvm/commit/88ab563a6966f88de603b68a9bb8a52532d2e06a
Author: athrxx (athrxx at scummvm.org)
Date: 2025-11-14T23:09:19+01:00
Commit Message:
KYRA: (EOB) - make PR code use new checkbox
Changed paths:
engines/kyra/engine/items_eob.cpp
diff --git a/engines/kyra/engine/items_eob.cpp b/engines/kyra/engine/items_eob.cpp
index 662c10dffee..9795558822c 100644
--- a/engines/kyra/engine/items_eob.cpp
+++ b/engines/kyra/engine/items_eob.cpp
@@ -818,7 +818,7 @@ void EoBCoreEngine::checkFlyingObjects() {
}
void EoBCoreEngine::reloadWeaponSlot(int charIndex, int slotIndex, int itemType, int arrowOrDagger) {
- if (_configADDRuleEnhancements) {
+ if (_configEnhancedReload) {
return reloadWeaponSlotEnhanced(charIndex, slotIndex);
}
Commit: 12d66b4ba1efbb8365f1eaa44e45006d19699b68
https://github.com/scummvm/scummvm/commit/12d66b4ba1efbb8365f1eaa44e45006d19699b68
Author: Vladimir VrziÄ (vvrzic at gmail.com)
Date: 2025-11-14T23:09:19+01:00
Commit Message:
KYRA: (EOB) - changed text of launcher checkboxes
Changed paths:
NEWS.md
engines/kyra/metaengine.cpp
diff --git a/NEWS.md b/NEWS.md
index 36b1128ca3e..03be1b8ae80 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -2504,8 +2504,10 @@ For a more comprehensive changelog of the latest experimental code, see:
added to the NEWS file).
- Fixed missing voice reactions when hitting enemies in CD version of
Lands of Lore.
- - In Eye of the Beholder 1 and 2, when "Faithful AD&D Rules" option is
- enabled, thrown weapons are auto-replaced from backpack slots.
+ - In Eye of the Beholder 1 and 2, new launcher checkbox is introducted,
+ to enable smarter replacing of thrown weapons from inventory.
+ - In Eye of the Beholder 1, Ileria and Beohram NPC data fix is now behind
+ a separate feature flag and launcher checkbox.
Lab:
- Fixed lock-up during ending sequence.
diff --git a/engines/kyra/metaengine.cpp b/engines/kyra/metaengine.cpp
index df45062d71f..d8786d42c63 100644
--- a/engines/kyra/metaengine.cpp
+++ b/engines/kyra/metaengine.cpp
@@ -157,7 +157,11 @@ const ADExtraGuiOptionsMap gameGuiOptions[] = {
GAMEOPTION_EOB_ADDRULES,
{
_s("Faithful AD&D rules"),
- _s("Make implementation of AD&D rules more compliant with the AD&D 2nd edition handbook"),
+ _s(
+ "- Eliminate HP gain round-off errors\n"
+ "- Correct projectile weapon damage (per AD&D 2nd Edition rules)\n"
+ "- Elves get +1 to hit with swords and bows (per official game manual)"
+ ),
"addrules",
false,
0,
@@ -168,8 +172,8 @@ const ADExtraGuiOptionsMap gameGuiOptions[] = {
{
GAMEOPTION_EOB_NPCPATCH,
{
- _s("Fix NPC stats"),
- _s("Fix stats of Ileria and Beohram NPCs (Ileria should be female and Beohram a paladin)"),
+ _s("Fix Ileria and Beohram NPCs"),
+ _s("Make Ileria a female and Beohram a paladin"),
"npcpatch",
false,
0,
@@ -180,8 +184,8 @@ const ADExtraGuiOptionsMap gameGuiOptions[] = {
{
GAMEOPTION_EOB_RELOAD,
{
- _s("Enhanced missile reload"),
- _s("Daggers, darts, stones and similar weapons get reloaded from all inventory slots, not just the belt"),
+ _s("Enhanced thrown weapon reload"),
+ _s("Thrown weapons (daggers, darts, spears...) get replaced from belt and backpack inventory slots, by thrown weapons only"),
"mreload",
false,
0,
Commit: 626ec3fef54b9a79bc6d5c7fcbc04757b307fa8c
https://github.com/scummvm/scummvm/commit/626ec3fef54b9a79bc6d5c7fcbc04757b307fa8c
Author: Vladimir VrziÄ (vvrzic at gmail.com)
Date: 2025-11-14T23:09:19+01:00
Commit Message:
KYRA: (EOB) - changed text of launcher checkbox
Changed paths:
engines/kyra/metaengine.cpp
diff --git a/engines/kyra/metaengine.cpp b/engines/kyra/metaengine.cpp
index d8786d42c63..8683a144f08 100644
--- a/engines/kyra/metaengine.cpp
+++ b/engines/kyra/metaengine.cpp
@@ -185,7 +185,7 @@ const ADExtraGuiOptionsMap gameGuiOptions[] = {
GAMEOPTION_EOB_RELOAD,
{
_s("Enhanced thrown weapon reload"),
- _s("Thrown weapons (daggers, darts, spears...) get replaced from belt and backpack inventory slots, by thrown weapons only"),
+ _s("Thrown weapons (daggers, darts, spears...) get replaced from belt and backpack inventory slots, with thrown weapons only"),
"mreload",
false,
0,
More information about the Scummvm-git-logs
mailing list