[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