[Scummvm-git-logs] scummvm master -> 8dc45d78578c56ea81f8e753fb6dbc9a5824d542

bluegr noreply at scummvm.org
Sat May 2 02:46:59 UTC 2026


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:
6a7a25d9d6 NANCY: JANITORIAL: Remove superfluous namespace prefixes
5faa374ae3 NANCY: Make the CIF export console commands more usable
d688a1a803 NANCY: Use the correct mouse cursor when dragging in MultiBuildPuzzle
dcf1b99c13 NANCY: Use the correct mouse cursors in RotatingLockPuzzle
c797b8dcdc NANCY: Limit text input length in PasswordPuzzle in Nancy8+
8dc45d7857 NANCY: Add game IDs for all potential supported games


Commit: 6a7a25d9d66af5646914e27e9dee8033244b3f83
    https://github.com/scummvm/scummvm/commit/6a7a25d9d66af5646914e27e9dee8033244b3f83
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-02T05:46:08+03:00

Commit Message:
NANCY: JANITORIAL: Remove superfluous namespace prefixes

Changed paths:
    engines/nancy/action/actionmanager.h
    engines/nancy/action/actionrecord.cpp
    engines/nancy/action/actionrecord.h
    engines/nancy/action/autotext.cpp
    engines/nancy/action/datarecords.cpp
    engines/nancy/action/overlay.h
    engines/nancy/action/puzzle/orderingpuzzle.h
    engines/nancy/action/puzzle/raycastpuzzle.cpp
    engines/nancy/action/puzzle/rotatinglockpuzzle.h
    engines/nancy/action/puzzle/setplayerclock.cpp
    engines/nancy/console.cpp
    engines/nancy/console.h
    engines/nancy/cursor.cpp
    engines/nancy/detection_tables.h
    engines/nancy/misc/hypertext.cpp
    engines/nancy/sound.cpp
    engines/nancy/state/credits.h
    engines/nancy/state/help.h
    engines/nancy/state/loadsave.cpp
    engines/nancy/state/logo.h
    engines/nancy/state/mainmenu.cpp
    engines/nancy/state/map.h
    engines/nancy/state/scene.h
    engines/nancy/ui/inventorybox.h
    engines/nancy/ui/ornaments.h
    engines/nancy/ui/textbox.h
    engines/nancy/ui/viewport.cpp
    engines/nancy/ui/viewport.h


diff --git a/engines/nancy/action/actionmanager.h b/engines/nancy/action/actionmanager.h
index 20c8018928c..cc4b541a495 100644
--- a/engines/nancy/action/actionmanager.h
+++ b/engines/nancy/action/actionmanager.h
@@ -46,8 +46,8 @@ struct DependencyRecord;
 
 // The class that handles ActionRecords and their execution
 class ActionManager {
-	friend class Nancy::State::Scene;
-	friend class Nancy::NancyConsole;
+	friend class State::Scene;
+	friend class NancyConsole;
 
 public:
 	static const byte kCursInvHolding			= 0;
diff --git a/engines/nancy/action/actionrecord.cpp b/engines/nancy/action/actionrecord.cpp
index 763bb517538..ad22f588222 100644
--- a/engines/nancy/action/actionrecord.cpp
+++ b/engines/nancy/action/actionrecord.cpp
@@ -55,7 +55,7 @@ void ActionRecord::finishExecution() {
 }
 
 void Unimplemented::execute() {
-	debugC(Nancy::kDebugActionRecord, "Unimplemented or changed ActionRecord type %u", _type);
+	debugC(kDebugActionRecord, "Unimplemented or changed ActionRecord type %u", _type);
 	_isDone = true;
 }
 
diff --git a/engines/nancy/action/actionrecord.h b/engines/nancy/action/actionrecord.h
index 18c71a1e77a..8bcd965ce0b 100644
--- a/engines/nancy/action/actionrecord.h
+++ b/engines/nancy/action/actionrecord.h
@@ -96,7 +96,7 @@ struct DependencyRecord {
 // will have to subclass RenderActionRecord.
 class ActionRecord {
 	friend class ActionManager;
-	friend class Nancy::NancyConsole;
+	friend class NancyConsole;
 
 public:
 	enum ExecutionState { kBegin, kRun, kActionTrigger };
diff --git a/engines/nancy/action/autotext.cpp b/engines/nancy/action/autotext.cpp
index 0839dc20e5d..5ab834dc298 100644
--- a/engines/nancy/action/autotext.cpp
+++ b/engines/nancy/action/autotext.cpp
@@ -79,7 +79,7 @@ void Autotext::execute() {
 	if (_surfaceID > 2) {
 		// Surfaces 3+ are journal surfaces, and their text contents are saved. Texts MUST be in CONVO chunk,
 		// so we do not check _useAutotextChunk
-		Nancy::JournalData *journalData = (Nancy::JournalData *)NancySceneState.getPuzzleData(Nancy::JournalData::getTag());
+		JournalData *journalData = (JournalData *)NancySceneState.getPuzzleData(JournalData::getTag());
 		assert(journalData);
 		const CVTX *autotext = (const CVTX *)g_nancy->getEngineData("AUTOTEXT");
 		assert(autotext);
diff --git a/engines/nancy/action/datarecords.cpp b/engines/nancy/action/datarecords.cpp
index a5d73526343..5b77b6ae19a 100644
--- a/engines/nancy/action/datarecords.cpp
+++ b/engines/nancy/action/datarecords.cpp
@@ -413,7 +413,7 @@ void ModifyListEntry::readData(Common::SeekableReadStream &stream) {
 }
 
 void ModifyListEntry::execute() {
-	JournalData *journalData = (Nancy::JournalData *)NancySceneState.getPuzzleData(Nancy::JournalData::getTag());
+	JournalData *journalData = (JournalData *)NancySceneState.getPuzzleData(JournalData::getTag());
 	assert(journalData);
 
 	Common::Array<JournalData::Entry> &array = journalData->journalEntries[_surfaceID];
diff --git a/engines/nancy/action/overlay.h b/engines/nancy/action/overlay.h
index ccfb27aca3f..b953f315edb 100644
--- a/engines/nancy/action/overlay.h
+++ b/engines/nancy/action/overlay.h
@@ -68,7 +68,7 @@ public:
 	SceneChangeDescription _sceneChange;
 	MultiEventFlagDescription _flagsOnTrigger;
 
-	Nancy::SoundDescription _sound;
+	SoundDescription _sound;
 
 	// Describes a single frame in this animation
 	Common::Array<Common::Rect> _srcRects;
diff --git a/engines/nancy/action/puzzle/orderingpuzzle.h b/engines/nancy/action/puzzle/orderingpuzzle.h
index 7a44b51303a..ab957711f24 100644
--- a/engines/nancy/action/puzzle/orderingpuzzle.h
+++ b/engines/nancy/action/puzzle/orderingpuzzle.h
@@ -83,13 +83,13 @@ protected:
 	Common::Array<Common::Rect> _overlaySrcs;
 	Common::Array<Common::Rect> _overlayDests;
 
-	Nancy::SoundDescription _pushDownSound;
-	Nancy::SoundDescription _itemSound;
-	Nancy::SoundDescription _popUpSound;
+	SoundDescription _pushDownSound;
+	SoundDescription _itemSound;
+	SoundDescription _popUpSound;
 
 	SceneChangeWithFlag _solveExitScene;
 	uint16 _solveSoundDelay = 0;
-	Nancy::SoundDescription _solveSound;
+	SoundDescription _solveSound;
 	SceneChangeWithFlag _exitScene;
 	Common::Rect _exitHotspot;
 
diff --git a/engines/nancy/action/puzzle/raycastpuzzle.cpp b/engines/nancy/action/puzzle/raycastpuzzle.cpp
index 83420fd7ff8..08f37765634 100644
--- a/engines/nancy/action/puzzle/raycastpuzzle.cpp
+++ b/engines/nancy/action/puzzle/raycastpuzzle.cpp
@@ -1064,7 +1064,7 @@ bool RaycastDeferredLoader::loadInner() {
 }
 
 RaycastPuzzle::~RaycastPuzzle() {
-	g_nancy->_input->setKeymapEnabled(Nancy::InputManager::_mazeKeymapID, false);
+	g_nancy->_input->setKeymapEnabled(InputManager::_mazeKeymapID, false);
 }
 
 void RaycastPuzzle::init() {
@@ -1111,7 +1111,7 @@ void RaycastPuzzle::execute() {
 	switch (_state) {
 	case kBegin:
 		init();
-		g_nancy->_input->setKeymapEnabled(Nancy::InputManager::_mazeKeymapID, true);
+		g_nancy->_input->setKeymapEnabled(InputManager::_mazeKeymapID, true);
 		break;
 	case kRun:
 		checkSwitch();
@@ -1133,7 +1133,7 @@ void RaycastPuzzle::execute() {
 
 void RaycastPuzzle::onPause(bool pause) {
 	RenderActionRecord::onPause(pause);
-	g_nancy->_input->setKeymapEnabled(Nancy::InputManager::_mazeKeymapID, !pause);
+	g_nancy->_input->setKeymapEnabled(InputManager::_mazeKeymapID, !pause);
 }
 
 void RaycastPuzzle::handleInput(NancyInput &input) {
diff --git a/engines/nancy/action/puzzle/rotatinglockpuzzle.h b/engines/nancy/action/puzzle/rotatinglockpuzzle.h
index 0365a452101..4b7c9fea395 100644
--- a/engines/nancy/action/puzzle/rotatinglockpuzzle.h
+++ b/engines/nancy/action/puzzle/rotatinglockpuzzle.h
@@ -45,10 +45,10 @@ public:
 	Common::Array<Common::Rect> _upHotspots;
 	Common::Array<Common::Rect> _downHotspots;
 	Common::Array<byte> _correctSequence;
-	Nancy::SoundDescription _clickSound;
+	SoundDescription _clickSound;
 	SceneChangeWithFlag _solveExitScene;
 	uint16 _solveSoundDelay = 0;
-	Nancy::SoundDescription _solveSound;
+	SoundDescription _solveSound;
 	SceneChangeWithFlag _exitScene;
 	Common::Rect _exitHotspot;
 
diff --git a/engines/nancy/action/puzzle/setplayerclock.cpp b/engines/nancy/action/puzzle/setplayerclock.cpp
index e57f2fe92c9..8d921f85cca 100644
--- a/engines/nancy/action/puzzle/setplayerclock.cpp
+++ b/engines/nancy/action/puzzle/setplayerclock.cpp
@@ -34,7 +34,7 @@ namespace Nancy {
 namespace Action {
 
 SetPlayerClock::~SetPlayerClock() {
-	Nancy::UI::Clock *clock = NancySceneState.getClock();
+	UI::Clock *clock = NancySceneState.getClock();
 	if (clock) {
 		clock->lockClock(false);
 	}
@@ -99,7 +99,7 @@ void SetPlayerClock::execute() {
 
 		_alarmHours = NancySceneState.getPlayerTime().getHours();
 
-		Nancy::UI::Clock *clock = NancySceneState.getClock();
+		UI::Clock *clock = NancySceneState.getClock();
 		if (clock) {
 			clock->lockClock(true);
 		}
diff --git a/engines/nancy/console.cpp b/engines/nancy/console.cpp
index 9f92d134c36..4724fb8cc0e 100644
--- a/engines/nancy/console.cpp
+++ b/engines/nancy/console.cpp
@@ -103,7 +103,7 @@ void NancyConsole::postEnter() {
 			while (!g_nancy->shouldQuit() && !dec->endOfVideo()) {
 				Common::Event event;
 				if (ev->pollEvent(event)) {
-					if (event.type == Common::EVENT_CUSTOM_ENGINE_ACTION_END && event.customType == Nancy::InputManager::kNancyActionLeftClick) {
+					if (event.type == Common::EVENT_CUSTOM_ENGINE_ACTION_END && event.customType == InputManager::kNancyActionLeftClick) {
 						break;
 					}
 				}
@@ -140,7 +140,7 @@ void NancyConsole::postEnter() {
 			while (!g_nancy->shouldQuit()) {
 				Common::Event event;
 				if (ev->pollEvent(event)) {
-					if (event.type == Common::EVENT_CUSTOM_ENGINE_ACTION_END && event.customType == Nancy::InputManager::kNancyActionLeftClick) {
+					if (event.type == Common::EVENT_CUSTOM_ENGINE_ACTION_END && event.customType == InputManager::kNancyActionLeftClick) {
 						break;
 					}
 
@@ -481,12 +481,12 @@ bool NancyConsole::Cmd_sceneID(int argc, const char **argv) {
 	return true;
 }
 
-void NancyConsole::printActionRecord(const Nancy::Action::ActionRecord *record, bool noDependencies) {
+void NancyConsole::printActionRecord(const Action::ActionRecord *record, bool noDependencies) {
 	debugPrintf("\n%s\n\ttype: %i, %s\n\texecType: %s",
 		record->_description.c_str(),
 		record->_type,
 		record->getRecordTypeName().c_str(),
-		record->_execType == Nancy::Action::ActionRecord::kRepeating ? "kRepeating" : "kOneShot");
+		record->_execType == Action::ActionRecord::kRepeating ? "kRepeating" : "kOneShot");
 
 	if (!noDependencies && record->_dependencies.children.size()) {
 		debugPrintf("\n\tDependencies:");
@@ -495,8 +495,8 @@ void NancyConsole::printActionRecord(const Nancy::Action::ActionRecord *record,
 	}
 }
 
-void NancyConsole::recursePrintDependencies(const Nancy::Action::DependencyRecord &record) {
-	using namespace Nancy::Action;
+void NancyConsole::recursePrintDependencies(const Action::DependencyRecord &record) {
+	using namespace Action;
 
 	auto *inventoryData = GetEngineData(INV);
 	assert(inventoryData);
@@ -597,7 +597,7 @@ void NancyConsole::recursePrintDependencies(const Nancy::Action::DependencyRecor
 }
 
 bool NancyConsole::Cmd_listActionRecords(int argc, const char **argv) {
-	using namespace Nancy::Action;
+	using namespace Action;
 
 	if (argc == 1) {
 		// Print the current scene
diff --git a/engines/nancy/console.h b/engines/nancy/console.h
index 8a283f7d6ec..849f8430d72 100644
--- a/engines/nancy/console.h
+++ b/engines/nancy/console.h
@@ -68,8 +68,8 @@ private:
 	bool Cmd_soundInfo(int argc, const char **argv);
 	bool Cmd_showHotspots(int argc, const char **argv);
 
-	void printActionRecord(const Nancy::Action::ActionRecord *record, bool noDependencies = false);
-	void recursePrintDependencies(const Nancy::Action::DependencyRecord &record);
+	void printActionRecord(const Action::ActionRecord *record, bool noDependencies = false);
+	void recursePrintDependencies(const Action::DependencyRecord &record);
 
 	Common::Path _videoFile;
 	Common::Path _imageFile;
diff --git a/engines/nancy/cursor.cpp b/engines/nancy/cursor.cpp
index 263832ef519..73c4bb41eb6 100644
--- a/engines/nancy/cursor.cpp
+++ b/engines/nancy/cursor.cpp
@@ -117,7 +117,7 @@ void CursorManager::setCursor(CursorType type, int16 itemID) {
 		return;
 	}
 
-	Nancy::GameType gameType = g_nancy->getGameType();
+	GameType gameType = g_nancy->getGameType();
 
 	if (type == _curCursorType && itemID == _curItemID) {
 		return;
diff --git a/engines/nancy/detection_tables.h b/engines/nancy/detection_tables.h
index ce0dbce1738..b1baf1273ec 100644
--- a/engines/nancy/detection_tables.h
+++ b/engines/nancy/detection_tables.h
@@ -47,7 +47,7 @@ static const PlainGameDescriptor nancyGames[] = {
 #define NANCY6_7_GUIOPTIONS GUIO3(GAMEOPTION_AUTO_MOVE, GAMEOPTION_FIX_SOFTLOCKS, GAMEOPTION_ORIGINAL_SAVELOAD)
 #define NANCY8_GUIOPTIONS GUIO2(GAMEOPTION_AUTO_MOVE, GAMEOPTION_ORIGINAL_SAVELOAD)
 
-static const Nancy::NancyGameDescription gameDescriptions[] = {
+static const NancyGameDescription gameDescriptions[] = {
 
 	{ // MD5 by fracturehill
 		{
@@ -58,7 +58,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPLANGUAGE | ADGF_DROPPLATFORM,
 			VAMPIRE_GUIOPTIONS
 		},
-		Nancy::kGameTypeVampire
+		kGameTypeVampire
 	},
 	{ // MD5 by waltervn
 		{
@@ -69,7 +69,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy1
+		kGameTypeNancy1
 	},
 	{ // MD5 by fracturehill
 		{
@@ -80,7 +80,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy1
+		kGameTypeNancy1
 	},
 	{ // MD5 by fracturehill
 		{
@@ -95,10 +95,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy1
+		kGameTypeNancy1
 	},
 	{ // MD5 by waltervn
 		{
@@ -109,7 +109,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY2_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy2
+		kGameTypeNancy2
 	},
 	{ // MD5 by fracturehill
 		{
@@ -120,7 +120,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY2_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy2
+		kGameTypeNancy2
 	},
 	{ // MD5 by fracturehill
 		{
@@ -134,10 +134,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY2_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy2
+		kGameTypeNancy2
 	},
 	{ // MD5 by waltervn
 		{
@@ -148,7 +148,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy3
+		kGameTypeNancy3
 	},
 	{ // Steam version
 		{
@@ -159,7 +159,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy3
+		kGameTypeNancy3
 	},
 	{ // MD5 by fracturehill
 		{
@@ -173,10 +173,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy3
+		kGameTypeNancy3
 	},
 	{ // MD5 by waltervn
 		{
@@ -190,10 +190,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy3
+		kGameTypeNancy3
 	},
 	{ // MD5 by fracturehill
 		{
@@ -204,7 +204,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy3
+		kGameTypeNancy3
 	},
 	{ // MD5 by fracturehill
 		{
@@ -218,10 +218,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy3
+		kGameTypeNancy3
 	},
 	{ // MD5 by waltervn
 		{
@@ -232,7 +232,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy4
+		kGameTypeNancy4
 	},
 	{ // Steam version
 		{
@@ -243,7 +243,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy4
+		kGameTypeNancy4
 	},
 	{ // MD5 by fracturehill
 		{
@@ -257,10 +257,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy4
+		kGameTypeNancy4
 	},
 	{ // MD5 by waltervn
 		{
@@ -274,10 +274,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy4
+		kGameTypeNancy4
 	},
 	{ // MD5 by eriktorbjorn
 		{
@@ -291,10 +291,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy4
+		kGameTypeNancy4
 	},
 	{ // MD5 by fracturehill
 		{
@@ -305,7 +305,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy4
+		kGameTypeNancy4
 	},
 	{ // MD5 by fracturehill
 		{
@@ -320,10 +320,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy4
+		kGameTypeNancy4
 	},
 	{ // MD5 by waltervn
 		{
@@ -334,7 +334,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY5_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy5
+		kGameTypeNancy5
 	},
 	{ // MD5 by waltervn
 		{
@@ -348,10 +348,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY5_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy5
+		kGameTypeNancy5
 	},
 	{ // MD5 by fracturehill
 		{
@@ -365,10 +365,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY5_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy5
+		kGameTypeNancy5
 	},
 	/* Temporarily disabled; needs ciftree.dat
 	{ // MD5 by clone2727
@@ -382,10 +382,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY5_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy5
+		kGameTypeNancy5
 	},*/
 	{ // MD5 by fracturehill
 		{
@@ -396,7 +396,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY5_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy5
+		kGameTypeNancy5
 	},
 	{ // MD5 by fracturehill
 		{
@@ -411,10 +411,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY5_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy5
+		kGameTypeNancy5
 	},
 	{ // MD5 by Strangerke
 		{
@@ -429,7 +429,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy6
+		kGameTypeNancy6
 	},
 	{ // MD5 by eriktorbjorn
 		{
@@ -443,10 +443,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy6
+		kGameTypeNancy6
 	},
 	{
 		{
@@ -460,10 +460,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy6
+		kGameTypeNancy6
 	},
 	{ // MD5 by fracturehill
 		{
@@ -477,10 +477,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy6
+		kGameTypeNancy6
 	},
 	{ // MD5 by fracturehill
 		{
@@ -491,7 +491,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy6
+		kGameTypeNancy6
 	},
 	{ // MD5 by fracturehill
 		{
@@ -505,10 +505,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy6
+		kGameTypeNancy6
 	},
 	{ // MD5 by fracturehill
 		{
@@ -519,7 +519,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy7
+		kGameTypeNancy7
 	},
 	{ // MD5 by eriktorbjorn
 		{
@@ -533,10 +533,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy7
+		kGameTypeNancy7
 	},
 	{
 		{
@@ -550,10 +550,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy7
+		kGameTypeNancy7
 	},
 	{ // MD5 by fracturehill
 		{
@@ -564,7 +564,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_DROPPLATFORM,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy7
+		kGameTypeNancy7
 	},
 	{ // MD5 by fracturehill
 		{
@@ -578,10 +578,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY6_7_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy7
+		kGameTypeNancy7
 	},
 	{ // MD5 by fracturehill
 		{
@@ -592,7 +592,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_TESTING | ADGF_DROPPLATFORM,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy8
+		kGameTypeNancy8
 	},
 	{ // MD5 by fracturehill
 		{
@@ -606,10 +606,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy8
+		kGameTypeNancy8
 	},
 	{ // MD5 by fracturehill
 		{
@@ -620,7 +620,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_TESTING | ADGF_DROPPLATFORM,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy8
+		kGameTypeNancy8
 	},
 	{ // MD5 by fracturehill
 		{
@@ -634,10 +634,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::RU_RUS,
 			Common::kPlatformWindows,
-			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy8
+		kGameTypeNancy8
 	},
 	{ // MD5 by fracturehill
 		{
@@ -652,7 +652,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_TESTING | ADGF_DROPPLATFORM,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy9
+		kGameTypeNancy9
 	},
 	{ // MD5 by fracturehill
 		{
@@ -666,10 +666,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_TESTING | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_TESTING | ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy9
+		kGameTypeNancy9
 	},
 	{
 		{
@@ -684,7 +684,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy10
+		kGameTypeNancy10
 	},
 	{
 		{
@@ -698,10 +698,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_UNSTABLE | ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy10
+		kGameTypeNancy10
 	},
 	{
 		{
@@ -716,7 +716,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy11
+		kGameTypeNancy11
 	},
 	{
 		{
@@ -730,10 +730,10 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			},
 			Common::EN_ANY,
 			Common::kPlatformWindows,
-			ADGF_UNSTABLE | ADGF_DROPPLATFORM | Nancy::GF_COMPRESSED,
+			ADGF_UNSTABLE | ADGF_DROPPLATFORM | GF_COMPRESSED,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy11
+		kGameTypeNancy11
 	},
 	{ // MD5 by bluegr
 		{
@@ -744,7 +744,7 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy12
+		kGameTypeNancy12
 	},
 	{ // MD5 by bluegr
 		{
@@ -755,11 +755,11 @@ static const Nancy::NancyGameDescription gameDescriptions[] = {
 			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
 			NANCY8_GUIOPTIONS
 		},
-		Nancy::kGameTypeNancy13
+		kGameTypeNancy13
 	},
 
 	// Do not delete
-	{ AD_TABLE_END_MARKER, Nancy::kGameTypeNone }
+	{ AD_TABLE_END_MARKER, kGameTypeNone }
 };
 
 } // End of namespace Nancy
diff --git a/engines/nancy/misc/hypertext.cpp b/engines/nancy/misc/hypertext.cpp
index 7f1c8daf24c..504d0fe62ed 100644
--- a/engines/nancy/misc/hypertext.cpp
+++ b/engines/nancy/misc/hypertext.cpp
@@ -199,7 +199,7 @@ void HypertextParser::drawAllText(const Common::Rect &textBounds, uint leftOffse
 
 				// Ignore non-tokens when they're between braces. This fixes nancy6 scenes 1953 & 1954,
 				// where some sound names slipped through into the text data.
-				debugC(Nancy::kDebugHypertext, "Unrecognized hypertext tag <%s>", curToken.c_str());
+				debugC(kDebugHypertext, "Unrecognized hypertext tag <%s>", curToken.c_str());
 				continue;
 			}
 
diff --git a/engines/nancy/sound.cpp b/engines/nancy/sound.cpp
index da2f5fc13ff..00db42190dc 100644
--- a/engines/nancy/sound.cpp
+++ b/engines/nancy/sound.cpp
@@ -613,7 +613,7 @@ void SoundManager::recalculateSoundEffects() {
 	_positionLerp = 0;
 
 	if (g_nancy->getGameType() >= kGameTypeNancy3) {
-		const Nancy::State::Scene::SceneSummary &sceneSummary = NancySceneState.getSceneSummary();
+		const State::Scene::SceneSummary &sceneSummary = NancySceneState.getSceneSummary();
 		SceneChangeDescription &sceneInfo = NancySceneState.getSceneInfo();
 		Math::Vector3d rotatedFrontVector = NancySceneState.getSceneInfo().listenerFrontVector;
 		rotatedFrontVector.normalize();
@@ -638,7 +638,7 @@ void SoundManager::recalculateSoundEffects() {
 void SoundManager::stopAndUnloadSceneSpecificSounds() {
 	byte numSSChans = g_nancy->getStaticData().soundChannelInfo.numSceneSpecificChannels;
 
-	if (g_nancy->getGameType() == kGameTypeVampire && Nancy::State::Map::hasInstance()) {
+	if (g_nancy->getGameType() == kGameTypeVampire && State::Map::hasInstance()) {
 		// Don't stop the map sound in certain scenes
 		uint nextScene = NancySceneState.getNextSceneInfo().sceneID;
 		if (nextScene != 0 && (nextScene < 15 || nextScene > 27)) {
@@ -655,7 +655,7 @@ void SoundManager::stopAndUnloadSceneSpecificSounds() {
 
 void SoundManager::pauseSceneSpecificSounds(bool pause) {
 	byte numSSChans = g_nancy->getStaticData().soundChannelInfo.numSceneSpecificChannels;
-	if (g_nancy->getGameType() == kGameTypeVampire && Nancy::State::Map::hasInstance()) {
+	if (g_nancy->getGameType() == kGameTypeVampire && State::Map::hasInstance()) {
 		if (!pause || g_nancy->getState() != NancyState::kMap) {
 			// Stop the map sound in certain scenes
 			uint currentScene = NancySceneState.getSceneInfo().sceneID;
diff --git a/engines/nancy/state/credits.h b/engines/nancy/state/credits.h
index ae179a00ce5..4f70d99ca7c 100644
--- a/engines/nancy/state/credits.h
+++ b/engines/nancy/state/credits.h
@@ -61,7 +61,7 @@ protected:
 	uint _currentTextImage;
 };
 
-#define NancyCreditsState Nancy::State::Credits::instance()
+#define NancyCreditsState State::Credits::instance()
 
 } // End of namespace State
 } // End of namespace Nancy
diff --git a/engines/nancy/state/help.h b/engines/nancy/state/help.h
index a136dd9d0f7..5badb70b1d1 100644
--- a/engines/nancy/state/help.h
+++ b/engines/nancy/state/help.h
@@ -59,7 +59,7 @@ private:
 	Time _buttonPressActivationTime;
 };
 
-#define NancyHelpState Nancy::State::Help::instance()
+#define NancyHelpState State::Help::instance()
 
 } // End of namespace State
 } // End of namespace Nancy
diff --git a/engines/nancy/state/loadsave.cpp b/engines/nancy/state/loadsave.cpp
index 5ffde9de8ae..8cc51808b76 100644
--- a/engines/nancy/state/loadsave.cpp
+++ b/engines/nancy/state/loadsave.cpp
@@ -104,7 +104,7 @@ void LoadSaveMenu::onStateEnter(const NancyState::NancyState prevState) {
 
 		// Display the question dialog if we are in a scene, and if we are not
 		// in the middle of quitting the game, and a save has been requested
-		if (Nancy::State::Scene::hasInstance() && !saveAndQuit) {
+		if (Scene::hasInstance() && !saveAndQuit) {
 			GUI::MessageDialog saveOrLoad(_("Would you like to load or save a game?"), _("Load"), _("Save"));
 
 			int choice = saveOrLoad.runModal();
@@ -160,8 +160,8 @@ void LoadSaveMenu::scummVMLoad() {
 	_selectedSave = slot;
 
 	if (slot >= 0) {
-		if (Nancy::State::Scene::hasInstance())
-			Nancy::State::Scene::destroy();
+		if (Scene::hasInstance())
+			Scene::destroy();
 
 		ConfMan.setInt("save_slot", slot, Common::ConfigManager::kTransientDomain);
 
@@ -244,7 +244,7 @@ bool LoadSaveMenu::save() {
 void LoadSaveMenu::load() {
 	auto *sdlg = GetEngineData(SDLG);
 
-	if (sdlg && sdlg->dialogs.size() > 1 && Nancy::State::Scene::hasInstance() && !g_nancy->_hasJustSaved) {
+	if (sdlg && sdlg->dialogs.size() > 1 && Scene::hasInstance() && !g_nancy->_hasJustSaved) {
 		// nancy6 added a "Do you want load without saving" dialog.
 		if (!ConfMan.hasKey("sdlg_return", Common::ConfigManager::kTransientDomain)) {
 			// Request the dialog
@@ -274,8 +274,8 @@ void LoadSaveMenu::load() {
 		}
 	}
 
-	if (Nancy::State::Scene::hasInstance()) {
-		Nancy::State::Scene::destroy();
+	if (Scene::hasInstance()) {
+		Scene::destroy();
 	}
 
 	ConfMan.setInt("save_slot", scummVMSaveSlotToLoad(), Common::ConfigManager::kTransientDomain);
@@ -472,12 +472,12 @@ void LoadSaveMenu_V1::run() {
 	if (_enteringNewState) {
 		// State has changed, revert all relevant objects to an appropriate state
 		for (uint i = 0; i < _textboxes.size(); ++i) {
-			writeToTextbox(i, _filenameStrings[i], Nancy::State::Scene::hasInstance() ? _baseFont : _disabledFont);
+			writeToTextbox(i, _filenameStrings[i], Scene::hasInstance() ? _baseFont : _disabledFont);
 
 			// Set load button state depending on whether there exists a save in the corresponding slot
 			// Save buttons are always active
 			_loadButtons[i]->setDisabled(_saveExists[i] == false);
-			_saveButtons[i]->setDisabled(!Nancy::State::Scene::hasInstance());
+			_saveButtons[i]->setDisabled(!Scene::hasInstance());
 			_cancelButtonOverlays[i]->setVisible(false);
 
 			_loadButtons[i]->_isClicked = false;
@@ -526,7 +526,7 @@ void LoadSaveMenu_V1::run() {
 		_saveButtons[i]->handleInput(input);
 
 		if (_saveButtons[i]->_isClicked) {
-			if (Nancy::State::Scene::hasInstance()) {
+			if (Scene::hasInstance()) {
 				_state = kSave;
 				_enteringNewState = true;
 				_selectedSave = i;
@@ -546,7 +546,7 @@ void LoadSaveMenu_V1::run() {
 	bool hoversOverTextbox = false;
 	for (int i = 0; i < (int)_textboxes.size(); ++i) {
 		if (_textboxes[i]->getScreenPosition().contains(input.mousePos)) {
-			if (Nancy::State::Scene::hasInstance()) {
+			if (Scene::hasInstance()) {
 				hoversOverTextbox = true;
 				if (_selectedSave != i) {
 					if (_selectedSave != -1) {
@@ -899,11 +899,11 @@ void LoadSaveMenu_V2::run() {
 		// State has changed, revert all relevant objects to an appropriate state
 		goToPage(_currentPage);
 		for (uint i = 0; i < _textboxes.size(); ++i) {
-			writeToTextbox(i, _filenameStrings[i], Nancy::State::Scene::hasInstance() ? _baseFont : _disabledFont);
+			writeToTextbox(i, _filenameStrings[i], Scene::hasInstance() ? _baseFont : _disabledFont);
 		}
 
 		if (_currentPage == 0) {
-			_saveButton->setDisabled(!Nancy::State::Scene::hasInstance());
+			_saveButton->setDisabled(!Scene::hasInstance());
 			_saveButton->_isClicked = false;
 			_inputTextbox->setVisible(true);
 			_textboxes[0]->setVisible(false);
@@ -945,7 +945,7 @@ void LoadSaveMenu_V2::run() {
 	_saveButton->handleInput(input);
 
 	if (_saveButton->_isClicked) {
-		if (Nancy::State::Scene::hasInstance()) {
+		if (Scene::hasInstance()) {
 			_state = kSave;
 			_enteringNewState = true;
 			g_nancy->_sound->playSound("BULS");
@@ -1016,7 +1016,7 @@ void LoadSaveMenu_V2::run() {
 		}
 	}
 
-	if (Nancy::State::Scene::hasInstance() && _currentPage == 0 &&
+	if (Scene::hasInstance() && _currentPage == 0 &&
 			_inputTextbox && _inputTextbox->getScreenPosition().contains(input.mousePos)) {
 		hoversOverTextbox = true;
 
@@ -1338,7 +1338,7 @@ void LoadSaveMenu_V2::extractSaveNames(uint pageID) {
 	}
 
 	// Load the top textbox showing the name of the last save made
-	if (_enteredString.empty() && Nancy::State::Scene::hasInstance()) {
+	if (_enteredString.empty() && Scene::hasInstance()) {
 		bool textboxSet = false;
 
 		if (ConfMan.hasKey("display_slot", Common::ConfigManager::kTransientDomain)) {
diff --git a/engines/nancy/state/logo.h b/engines/nancy/state/logo.h
index cba948f85c7..255a358714a 100644
--- a/engines/nancy/state/logo.h
+++ b/engines/nancy/state/logo.h
@@ -66,7 +66,7 @@ private:
 	RenderObject _videoObj;
 };
 
-#define NancyLogoState Nancy::State::Logo::instance()
+#define NancyLogoState State::Logo::instance()
 
 } // end of namespace State
 } // End of namespace Nancy
diff --git a/engines/nancy/state/mainmenu.cpp b/engines/nancy/state/mainmenu.cpp
index e15b86a0260..79c6778b4ed 100644
--- a/engines/nancy/state/mainmenu.cpp
+++ b/engines/nancy/state/mainmenu.cpp
@@ -201,7 +201,7 @@ void MainMenu::stop() {
 		break;
 	case 6:
 		// Exit Game
-		if (g_nancy->getEngineData("SDLG") && Nancy::State::Scene::hasInstance() && !g_nancy->_hasJustSaved) {
+		if (g_nancy->getEngineData("SDLG") && Scene::hasInstance() && !g_nancy->_hasJustSaved) {
 			if (!ConfMan.hasKey("sdlg_return", Common::ConfigManager::kTransientDomain)) {
 				// Request the "Do you want to save before quitting" dialog
 				ConfMan.setInt("sdlg_id", 0, Common::ConfigManager::kTransientDomain);
diff --git a/engines/nancy/state/map.h b/engines/nancy/state/map.h
index 1a58924fee0..dc6725c99a8 100644
--- a/engines/nancy/state/map.h
+++ b/engines/nancy/state/map.h
@@ -56,7 +56,7 @@ public:
 	const SoundDescription &getSound();
 
 protected:
-	class MapViewport : public Nancy::RenderObject {
+	class MapViewport : public RenderObject {
 	public:
 		MapViewport() : RenderObject(6) {}
 		virtual ~MapViewport() = default;
@@ -101,7 +101,7 @@ public:
 	virtual ~TVDMap() = default;
 
 private:
-	class MapGlobe : public Nancy::UI::AnimatedButton {
+	class MapGlobe : public UI::AnimatedButton {
 	public:
 		MapGlobe(uint zOrder, TVDMap *owner) : AnimatedButton(zOrder), _gargoyleEyes(zOrder), _owner(owner) {}
 		virtual ~MapGlobe() = default;
@@ -139,7 +139,7 @@ private:
 	Common::ScopedPtr<UI::Button> _button;
 };
 
-#define NancyMapState Nancy::State::Map::instance()
+#define NancyMapState State::Map::instance()
 
 } // End of namespace State
 } // End of namespace Nancy
diff --git a/engines/nancy/state/scene.h b/engines/nancy/state/scene.h
index 13e01bc05aa..df6824a7579 100644
--- a/engines/nancy/state/scene.h
+++ b/engines/nancy/state/scene.h
@@ -73,10 +73,10 @@ namespace State {
 
 // The game state that handles all of the gameplay
 class Scene : public State, public Common::Singleton<Scene> {
-	friend class Nancy::Action::ActionRecord;
-	friend class Nancy::Action::ActionManager;
-	friend class Nancy::NancyConsole;
-	friend class Nancy::NancyEngine;
+	friend class Action::ActionRecord;
+	friend class Action::ActionManager;
+	friend class NancyConsole;
+	friend class NancyEngine;
 
 public:
 	struct SceneSummary {
diff --git a/engines/nancy/ui/inventorybox.h b/engines/nancy/ui/inventorybox.h
index 9e420d12e5c..b7c7f176a20 100644
--- a/engines/nancy/ui/inventorybox.h
+++ b/engines/nancy/ui/inventorybox.h
@@ -40,7 +40,7 @@ class Scene;
 namespace UI {
 
 class InventoryBox : public RenderObject {
-	friend class Nancy::State::Scene;
+	friend class State::Scene;
 
 public:
 	struct ItemDescription {
diff --git a/engines/nancy/ui/ornaments.h b/engines/nancy/ui/ornaments.h
index 53362fdf66d..842e3fd4520 100644
--- a/engines/nancy/ui/ornaments.h
+++ b/engines/nancy/ui/ornaments.h
@@ -27,7 +27,7 @@
 namespace Nancy {
 namespace UI {
 
-class ViewportOrnaments : public Nancy::RenderObject {
+class ViewportOrnaments : public RenderObject {
 public:
 	ViewportOrnaments(uint16 zOrder) : RenderObject(zOrder) {}
 	virtual ~ViewportOrnaments() {}
@@ -35,7 +35,7 @@ public:
 	void init() override;
 };
 
-class TextboxOrnaments : public Nancy::RenderObject {
+class TextboxOrnaments : public RenderObject {
 public:
 	TextboxOrnaments(uint16 zOrder) : RenderObject(zOrder) {}
 	virtual ~TextboxOrnaments() {}
@@ -43,7 +43,7 @@ public:
 	void init() override;
 };
 
-class InventoryBoxOrnaments : public Nancy::RenderObject {
+class InventoryBoxOrnaments : public RenderObject {
 public:
 	InventoryBoxOrnaments(uint16 zOrder) : RenderObject(zOrder) {}
 	virtual ~InventoryBoxOrnaments() {}
diff --git a/engines/nancy/ui/textbox.h b/engines/nancy/ui/textbox.h
index 5866f92455f..ed6b92417a2 100644
--- a/engines/nancy/ui/textbox.h
+++ b/engines/nancy/ui/textbox.h
@@ -35,7 +35,7 @@ namespace UI {
 
 class Scrollbar;
 
-class Textbox : public Nancy::RenderObject, public Misc::HypertextParser {
+class Textbox : public RenderObject, public Misc::HypertextParser {
 public:
 	Textbox();
 	virtual ~Textbox();
diff --git a/engines/nancy/ui/viewport.cpp b/engines/nancy/ui/viewport.cpp
index 61193cccaab..4cfcf386bec 100644
--- a/engines/nancy/ui/viewport.cpp
+++ b/engines/nancy/ui/viewport.cpp
@@ -56,7 +56,7 @@ void Viewport::init() {
 }
 
 void Viewport::handleInput(NancyInput &input) {
-	const Nancy::State::Scene::SceneSummary &summary = NancySceneState.getSceneSummary();
+	const State::Scene::SceneSummary &summary = NancySceneState.getSceneSummary();
 	Time systemTime = g_system->getMillis();
 	byte direction = 0;
 
diff --git a/engines/nancy/ui/viewport.h b/engines/nancy/ui/viewport.h
index c44b47210b4..6b2c5cb9367 100644
--- a/engines/nancy/ui/viewport.h
+++ b/engines/nancy/ui/viewport.h
@@ -38,7 +38,7 @@ struct NancyInput;
 
 namespace UI {
 
-class Viewport : public Nancy::RenderObject {
+class Viewport : public RenderObject {
 public:
 	Viewport() :
 		RenderObject(6),


Commit: 5faa374ae3f6b06d08c6b9e60a39d065e0e1dc68
    https://github.com/scummvm/scummvm/commit/5faa374ae3f6b06d08c6b9e60a39d065e0e1dc68
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-02T05:46:09+03:00

Commit Message:
NANCY: Make the CIF export console commands more usable

Stay in the console window when exporting CIF files. Also, don't
error out in the cif_info command when a CIF file isn't found,
but throw a warning instead

Changed paths:
    engines/nancy/console.cpp
    engines/nancy/resource.cpp


diff --git a/engines/nancy/console.cpp b/engines/nancy/console.cpp
index 4724fb8cc0e..e3157ca778a 100644
--- a/engines/nancy/console.cpp
+++ b/engines/nancy/console.cpp
@@ -174,7 +174,7 @@ bool NancyConsole::Cmd_cifExport(int argc, const char **argv) {
 	if (!g_nancy->_resource->exportCif((argc == 2 ? "" : argv[2]), argv[1]))
 		debugPrintf("Failed to export '%s'\n", argv[1]);
 
-	return cmdExit(0, nullptr);
+	return true;
 }
 
 bool NancyConsole::Cmd_ciftreeExport(int argc, const char **argv) {
@@ -193,7 +193,7 @@ bool NancyConsole::Cmd_ciftreeExport(int argc, const char **argv) {
 	if (!g_nancy->_resource->exportCifTree(argv[1], files))
 		debugPrintf("Failed to export '%s'\n", argv[1]);
 
-	return cmdExit(0, nullptr);
+	return true;
 }
 
 bool NancyConsole::Cmd_cifList(int argc, const char **argv) {
diff --git a/engines/nancy/resource.cpp b/engines/nancy/resource.cpp
index b99461d7555..0e9b7fe5361 100644
--- a/engines/nancy/resource.cpp
+++ b/engines/nancy/resource.cpp
@@ -264,6 +264,11 @@ Common::String ResourceManager::getCifDescription(const Common::String &treeName
 		error("Couldn't find CifInfo struct inside loaded CifTrees");
 	}
 
+	if (!tree->hasFile(name)) {
+		Common::String ret = Common::String::format("Couldn't find CIF %s\n", name.toString().c_str());
+		return ret;
+	}
+
 	const CifInfo &info = tree->getCifInfo(name);
 
 	Common::String desc;


Commit: d688a1a80316002512b60bb68121fffbdd57248a
    https://github.com/scummvm/scummvm/commit/d688a1a80316002512b60bb68121fffbdd57248a
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-02T05:46:10+03:00

Commit Message:
NANCY: Use the correct mouse cursor when dragging in MultiBuildPuzzle

Fix #16743

Changed paths:
    engines/nancy/action/puzzle/multibuildpuzzle.cpp


diff --git a/engines/nancy/action/puzzle/multibuildpuzzle.cpp b/engines/nancy/action/puzzle/multibuildpuzzle.cpp
index af1bd0d8c12..03d9d85177b 100644
--- a/engines/nancy/action/puzzle/multibuildpuzzle.cpp
+++ b/engines/nancy/action/puzzle/multibuildpuzzle.cpp
@@ -370,7 +370,7 @@ void MultiBuildPuzzle::handleInput(NancyInput &input) {
 	}
 
 	if (topmost != -1) {
-		g_nancy->_cursor->setCursorType(CursorManager::kHotspot);
+		g_nancy->_cursor->setCursorType(CursorManager::kCustom1);
 
 		if (input.input & NancyInput::kLeftMouseButtonUp) {
 			Piece &pp = _pieces[topmost];


Commit: dcf1b99c13c4d13868a842c9b49596e3224de801
    https://github.com/scummvm/scummvm/commit/dcf1b99c13c4d13868a842c9b49596e3224de801
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-02T05:46:11+03:00

Commit Message:
NANCY: Use the correct mouse cursors in RotatingLockPuzzle

Fix #16725

Changed paths:
    engines/nancy/action/puzzle/rotatinglockpuzzle.cpp


diff --git a/engines/nancy/action/puzzle/rotatinglockpuzzle.cpp b/engines/nancy/action/puzzle/rotatinglockpuzzle.cpp
index 4cb6628ebdc..5265088fa2c 100644
--- a/engines/nancy/action/puzzle/rotatinglockpuzzle.cpp
+++ b/engines/nancy/action/puzzle/rotatinglockpuzzle.cpp
@@ -178,7 +178,7 @@ void RotatingLockPuzzle::handleInput(NancyInput &input) {
 
 	for (uint i = 0; i < _upHotspots.size(); ++i) {
 		if (NancySceneState.getViewport().convertViewportToScreen(_upHotspots[i]).contains(input.mousePos)) {
-			g_nancy->_cursor->setCursorType(CursorManager::kHotspot);
+			g_nancy->_cursor->setCursorType(CursorManager::kMoveUp);
 
 			if (!g_nancy->_sound->isSoundPlaying(_clickSound) && input.input & NancyInput::kLeftMouseButtonUp) {
 				g_nancy->_sound->playSound(_clickSound);
@@ -193,7 +193,7 @@ void RotatingLockPuzzle::handleInput(NancyInput &input) {
 
 	for (uint i = 0; i < _downHotspots.size(); ++i) {
 		if (NancySceneState.getViewport().convertViewportToScreen(_downHotspots[i]).contains(input.mousePos)) {
-			g_nancy->_cursor->setCursorType(CursorManager::kHotspot);
+			g_nancy->_cursor->setCursorType(CursorManager::kMoveDown);
 
 			if (!g_nancy->_sound->isSoundPlaying(_clickSound) && input.input & NancyInput::kLeftMouseButtonUp) {
 				g_nancy->_sound->playSound(_clickSound);


Commit: c797b8dcdca3251fd98f312181c18c39a4a8bbdd
    https://github.com/scummvm/scummvm/commit/c797b8dcdca3251fd98f312181c18c39a4a8bbdd
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-02T05:46:11+03:00

Commit Message:
NANCY: Limit text input length in PasswordPuzzle in Nancy8+

Fix #16692

Changed paths:
    engines/nancy/action/puzzle/passwordpuzzle.cpp
    engines/nancy/action/puzzle/passwordpuzzle.h


diff --git a/engines/nancy/action/puzzle/passwordpuzzle.cpp b/engines/nancy/action/puzzle/passwordpuzzle.cpp
index d280f10c8c1..fe0f5aa5e50 100644
--- a/engines/nancy/action/puzzle/passwordpuzzle.cpp
+++ b/engines/nancy/action/puzzle/passwordpuzzle.cpp
@@ -66,6 +66,8 @@ void PasswordPuzzle::readData(Common::SeekableReadStream &stream) {
 		stream.read(buf, fieldSize);
 		buf[fieldSize - 1] = '\0';
 		_names[i] = buf;
+		if (strlen(buf) > _maxNameLength)
+			_maxNameLength = strlen(buf);
 	}
 	s.skip((5 - numNames) * fieldSize, kGameTypeNancy4);
 
@@ -75,6 +77,8 @@ void PasswordPuzzle::readData(Common::SeekableReadStream &stream) {
 		stream.read(buf, fieldSize);
 		buf[19] = '\0';
 		_passwords[i] = buf;
+		if (strlen(buf) > _maxPassLength)
+			_maxPassLength = strlen(buf);
 	}
 	s.skip((5 - numPasswords) * fieldSize, kGameTypeNancy4);
 
@@ -207,6 +211,10 @@ void PasswordPuzzle::handleInput(NancyInput &input) {
 	for (uint i = 0; i < input.otherKbdInput.size(); ++i) {
 		Common::KeyState &key = input.otherKbdInput[i];
 		Common::String &activeField = _passwordFieldIsActive ? _playerPasswordInput : _playerNameInput;
+		uint maxStringLength = _maxStringLength;
+		if (g_nancy->getGameType() >= kGameTypeNancy8)
+			maxStringLength = _passwordFieldIsActive ? _maxPassLength : _maxNameLength;
+
 		if (key.keycode == Common::KEYCODE_BACKSPACE) {
 			if (activeField.size() && activeField.lastChar() == '-' ? activeField.size() > 1 : true) {
 				if (activeField.lastChar() == '-') {
@@ -221,13 +229,13 @@ void PasswordPuzzle::handleInput(NancyInput &input) {
 			_playerHasHitReturn = true;
 		} else if (Common::isAlnum(key.ascii) || Common::isSpace(key.ascii)) {
 			if (activeField.size() && activeField.lastChar() == '-') {
-				if (activeField.size() <= _maxStringLength + 1) {
+				if (activeField.size() < maxStringLength + 1) {
 					activeField.deleteLastChar();
 					activeField += key.ascii;
 					activeField += '-';
 				}
 			} else {
-				if (activeField.size() <= _maxStringLength) {
+				if (activeField.size() < maxStringLength) {
 					activeField += key.ascii;
 				}
 			}
diff --git a/engines/nancy/action/puzzle/passwordpuzzle.h b/engines/nancy/action/puzzle/passwordpuzzle.h
index 049ceac4a6f..4713b0e0da1 100644
--- a/engines/nancy/action/puzzle/passwordpuzzle.h
+++ b/engines/nancy/action/puzzle/passwordpuzzle.h
@@ -62,6 +62,8 @@ public:
 	SolveState _solveState = kNotSolved;
 
 	uint _maxStringLength = 0;
+	uint _maxNameLength = 0;
+	uint _maxPassLength = 0;
 
 protected:
 	Common::String getRecordTypeName() const override { return "PasswordPuzzle"; }


Commit: 8dc45d78578c56ea81f8e753fb6dbc9a5824d542
    https://github.com/scummvm/scummvm/commit/8dc45d78578c56ea81f8e753fb6dbc9a5824d542
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-02T05:46:12+03:00

Commit Message:
NANCY: Add game IDs for all potential supported games

- Game IDs have been sorted by release date
- Add detection entries for all English versions up to Nancy 1
  remastered
- Add a hack for compressed resource flags to allow Nancy14 + 15
  resources to be loaded
- Mark Nancy16 and newer games as unsupported, as the COF files in
  these games use a newer unsupported version, so game resources
  can't be handled yet
- Still missing detection entries for Nancy23 - Nancy32
- Fix #16300

Changed paths:
    engines/nancy/cif.cpp
    engines/nancy/detection.h
    engines/nancy/detection_tables.h
    engines/nancy/nancy.cpp


diff --git a/engines/nancy/cif.cpp b/engines/nancy/cif.cpp
index 8097979921d..48294eea031 100644
--- a/engines/nancy/cif.cpp
+++ b/engines/nancy/cif.cpp
@@ -60,6 +60,12 @@ static void syncCifInfo(Common::Serializer &ser, CifInfo &info, bool tree) {
 	if (!tree) {
 		info.dataOffset = ser.bytesSynced();
 	}
+
+	// HACK: Since Nancy14, the compression flag isn't set
+	// in the header. Try to detect compressed files by the
+	// presence of a compressed size
+	if (g_nancy->getGameType() >= kGameTypeNancy14 && info.compressedSize > 0)
+		info.comp = CifInfo::kResCompression;
 }
 
 // Reads the data for ciftree cif files
@@ -303,6 +309,7 @@ bool CifTree::sync(Common::Serializer &ser) {
 	uint32 ver = (g_nancy->getGameType() <= kGameTypeNancy1) ? 0 : 1;
 	ser.syncAsUint16LE(ver);
 
+	// TODO: Nancy16 introduced version 3
 	if (ver != 0 && ver != 1 && ver != 2) {
 		warning("Unsupported version %d found in CifTree '%s'", ver, _name.toString().c_str());
 		return false;
diff --git a/engines/nancy/detection.h b/engines/nancy/detection.h
index 37d8d68de25..1f954665307 100644
--- a/engines/nancy/detection.h
+++ b/engines/nancy/detection.h
@@ -28,20 +28,42 @@ namespace Nancy {
 
 enum GameType {
 	kGameTypeNone 	 = 0,
-	kGameTypeVampire = 1,
-	kGameTypeNancy1  = 2,
-	kGameTypeNancy2  = 3,
-	kGameTypeNancy3  = 4,
-	kGameTypeNancy4  = 5,
-	kGameTypeNancy5  = 6,
-	kGameTypeNancy6  = 7,
-	kGameTypeNancy7  = 8,
-	kGameTypeNancy8  = 9,
-	kGameTypeNancy9  = 10,
-	kGameTypeNancy10 = 11,
-	kGameTypeNancy11 = 12,
-	kGameTypeNancy12 = 13,
-	kGameTypeNancy13 = 14,
+	kGameTypeVampire = 1,	// The Vampire Diaries - 1996-11-01
+	kGameTypeNancy1  = 2,	// Secrets Can Kill - 1998-11-05
+	kGameTypeNancy2  = 3,	// Stay Tuned for Danger - 1999-11-13
+	kGameTypeNancy3  = 4,	// Message in a Haunted Mansion - 2000-11-24
+	kGameTypeNancy4  = 5,	// Treasure in the Royal Tower - 2001-08-01
+	kGameTypeNancy5  = 6,	// The Final Scene - 2001-11-01
+	kGameTypeNancy6  = 7,	// Secret of the Scarlet Hand - 2002-08-12
+	kGameTypeNancy7  = 8,	// Ghost Dogs of Moon Lake - 2002-11-01
+	kGameTypeNancy8  = 9,	// The Haunted Carousel - 2003-08-22
+	kGameTypeNancy9  = 10,	// Danger on Deception Island - 2003-10-03
+	kGameTypeNancy10 = 11,	// The Secret of Shadow Ranch - 2004-08-30
+	kGameTypeNancy11 = 12,	// Curse of Blackmoor Manor - 2004-10-05
+	kGameTypeNancy12 = 13,	// Secret of the Old Clock - 2005-06-12
+	kGameTypeNancy13 = 14,	// Last Train to Blue Moon Canyon - 2005-09-15
+	kGameTypeNancy14 = 15,	// Danger by Design - 2006-07-24
+	kGameTypeNancy15 = 16,	// The Creature of Kapu Cave - 2006-10-01
+	kGameTypeNancy16 = 17,	// The White Wolf of Icicle Creek - 2007-06-07
+	kGameTypeNancy17 = 18,	// Legend of the Crystal Skull - 2007-10-08
+	kGameTypeNancy18 = 19,	// The Phantom of Venice - 2008-07-11
+	kGameTypeNancy19 = 20,	// The Haunting of Castle Malloy - 2008-10-16
+	kGameTypeNancy20 = 21,	// Ransom of the Seven Ships - 2009-07-14 (discontinued)
+	kGameTypeNancy21 = 22,	// Warnings at Waverly Academy - 2009-10-13
+	kGameTypeNancy22 = 23,	// Trail of the Twister - 2010-06-29
+	kGameTypeNancy1New = 24,// Secrets Can Kill Remastered - 2010-08-24
+	kGameTypeNancy23 = 25,	// Shadow at the Water's Edge - 2010-10-19
+	kGameTypeNancy24 = 26,	// The Captive Curse - 2011-06-28
+	kGameTypeNancy25 = 27,	// Alibi in Ashes - 2011-10-18
+	kGameTypeNancy26 = 28,	// Tomb of the Lost Queen - 2012-05-08
+	kGameTypeNancy27 = 29,	// The Deadly Device - 2012-10-23
+	kGameTypeNancy28 = 30,	// Ghost of Thornton Hall - 2013-05-14
+	kGameTypeNancy29 = 31,	// The Silent Spy - 2013-10-22
+	kGameTypeNancy30 = 32,	// The Shattered Medallion - 2014-05-20
+	kGameTypeNancy31 = 33,	// Labyrinth of Lies - 2014-10-14
+	kGameTypeNancy32 = 34,	// Sea of Darkness - 2015-05-19
+	// Midnight in Salem was made with Unity
+	// Mystery of the Seven Keys was made with Unity
 };
 
 enum NancyGameFlags {
diff --git a/engines/nancy/detection_tables.h b/engines/nancy/detection_tables.h
index b1baf1273ec..c03481c974d 100644
--- a/engines/nancy/detection_tables.h
+++ b/engines/nancy/detection_tables.h
@@ -19,6 +19,8 @@
  *
  */
 
+#include "detection.h"
+
 namespace Nancy {
 
 static const PlainGameDescriptor nancyGames[] = {
@@ -37,6 +39,28 @@ static const PlainGameDescriptor nancyGames[] = {
 	{ "nancy11", "Nancy Drew: Curse of Blackmoor Manor" },
 	{ "nancy12", "Nancy Drew: Secret of the Old Clock" },
 	{ "nancy13", "Nancy Drew: Last Train to Blue Moon Canyon" },
+	{ "nancy14", "Nancy Drew: Danger by Design" },
+	{ "nancy15", "Nancy Drew: The Creature of Kapu Cave" },
+	{ "nancy16", "Nancy Drew: The White Wolf of Icicle Creek" },
+	{ "nancy17", "Nancy Drew: Legend of the Crystal Skull" },
+	{ "nancy18", "Nancy Drew: The Phantom of Venice" },
+	{ "nancy19", "Nancy Drew: The Haunting of Castle Malloy" },
+	{ "nancy20", "Nancy Drew: Ransom of the Seven Ships" },		// Discontinued
+	{ "nancy21", "Nancy Drew: Warnings at Waverly Academy" },
+	{ "nancy22", "Nancy Drew: Trail of the Twister" },
+	{ "nancy1new", "Nancy Drew: Secrets Can Kill Remastered" },
+	{ "nancy23", "Nancy Drew: Shadow at the Water's Edge" },
+	{ "nancy24", "Nancy Drew: The Captive Curse" },
+	{ "nancy25", "Nancy Drew: Alibi in Ashes" },
+	{ "nancy26", "Nancy Drew: Tomb of the Lost Queen" },
+	{ "nancy27", "Nancy Drew: The Deadly Device" },
+	{ "nancy28", "Nancy Drew: Ghost of Thornton Hall" },
+	{ "nancy29", "Nancy Drew: The Silent Spy" },
+	{ "nancy30", "Nancy Drew: The Shattered Medallion" },
+	{ "nancy31", "Nancy Drew: Labyrinth of Lies" },
+	{ "nancy32", "Nancy Drew: Sea of Darkness" },
+	// Midnight in Salem was made with Unity
+	// Mystery of the Seven Keys was made with Unity
 	{ nullptr, nullptr }
 };
 
@@ -757,6 +781,105 @@ static const NancyGameDescription gameDescriptions[] = {
 		},
 		kGameTypeNancy13
 	},
+	{ // MD5 by bluegr
+		{
+			"nancy14", nullptr,
+			AD_ENTRY1s("ciftree.dat", "731ae1a9e194757c6d23fda799142bd7", 44679840),
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy14
+	},
+	{ // MD5 by bluegr
+		{
+			"nancy15", nullptr,
+			AD_ENTRY1s("ciftree.dat", "9c5af8a00225a528fe03f52d3664740d", 38659635),
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_UNSTABLE | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy15
+	},
+	{ // MD5 by bluegr
+		{
+			"nancy16", nullptr,
+			AD_ENTRY1s("ciftree.dat", "4014eba84276281456cdba1fa9c03389", 45713842),
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_UNSUPPORTED | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy16
+	},
+	{ // MD5 by bluegr
+		{
+			"nancy17", nullptr,
+			AD_ENTRY1s("ciftree.dat", "039950bfb8d1d614727ace5359ba6e20", 55775218),
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_UNSUPPORTED | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy17
+	},
+	{ // MD5 by bluegr
+		{
+			"nancy18", nullptr,
+			AD_ENTRY1s("ciftree.dat", "f414a802b64d3a9e28ba8e69e953a2b8", 50123969),
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_UNSUPPORTED | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy18
+	},
+	{ // MD5 by bluegr
+		{
+			"nancy19", nullptr,
+			AD_ENTRY1s("ciftree.dat", "e1d50b6fc3b72335863a45fdaf6f3da7", 53613856),
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_UNSUPPORTED | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy19
+	},
+	{ // MD5 by bluegr
+		{
+			"nancy21", nullptr,
+			AD_ENTRY1s("ciftree.dat", "25249fabe11f2b865203284e798b8c09", 58348182),
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_UNSUPPORTED | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy21
+	},
+	{ // MD5 by bluegr
+		{
+			"nancy22", nullptr,
+			AD_ENTRY1s("ciftree.dat", "2aa05fbc4f06f71ed98d092b60043c0e", 109670993),
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_UNSUPPORTED | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy22
+	},
+	{ // MD5 by bluegr
+		{
+			"nancy1new", nullptr,
+			AD_ENTRY1s("ciftree.dat", "27dc04f52f2022c7eae8028b0b0dd215", 15296357),
+			Common::EN_ANY,
+			Common::kPlatformWindows,
+			ADGF_UNSUPPORTED | ADGF_DROPPLATFORM,
+			NANCY8_GUIOPTIONS
+		},
+		kGameTypeNancy1New
+	},
 
 	// Do not delete
 	{ AD_TABLE_END_MARKER, kGameTypeNone }
diff --git a/engines/nancy/nancy.cpp b/engines/nancy/nancy.cpp
index 9958cf6b01d..9dd72a66352 100644
--- a/engines/nancy/nancy.cpp
+++ b/engines/nancy/nancy.cpp
@@ -101,7 +101,7 @@ NancyEngine::~NancyEngine() {
 }
 
 NancyEngine *NancyEngine::create(GameType type, OSystem *syst, const NancyGameDescription *gd) {
-	if (type >= kGameTypeVampire && type <= kGameTypeNancy13) {
+	if (type >= kGameTypeVampire && type <= kGameTypeNancy32) {
 		return new NancyEngine(syst, gd);
 	}
 




More information about the Scummvm-git-logs mailing list