[Scummvm-git-logs] scummvm master -> 4748949ea6bd63a0eb4cddb61034681c6f02bec2

dreammaster paulfgilbert at gmail.com
Sun May 17 02:42:21 UTC 2020


This automated email contains information about 4 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .

Summary:
077967fee4 ULTIMA4: Add override destructors to map subclasses
683959ea2d ULTIMA4: Added support for XML-based maps
9cfc17c0e5 ULTIMA4: Searching on a map entrance now falls back on enter
4748949ea6 ULTIMA4: Regenerate ultima.dat


Commit: 077967fee4b43e1e5aec3cf0787f0d6b9f5404e6
    https://github.com/scummvm/scummvm/commit/077967fee4b43e1e5aec3cf0787f0d6b9f5404e6
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-05-16T19:27:39-07:00

Commit Message:
ULTIMA4: Add override destructors to map subclasses

Changed paths:
    engines/ultima/ultima4/controllers/combat_controller.h
    engines/ultima/ultima4/map/city.h
    engines/ultima/ultima4/map/dungeon.h
    engines/ultima/ultima4/map/shrine.h


diff --git a/engines/ultima/ultima4/controllers/combat_controller.h b/engines/ultima/ultima4/controllers/combat_controller.h
index 7206cdbb22..abbebb9d20 100644
--- a/engines/ultima/ultima4/controllers/combat_controller.h
+++ b/engines/ultima/ultima4/controllers/combat_controller.h
@@ -213,6 +213,7 @@ extern CombatController *g_combat;
 class CombatMap : public Map {
 public:
 	CombatMap();
+	~CombatMap() override {}
 
 	/**
 	 * Returns a vector containing all of the creatures on the map
diff --git a/engines/ultima/ultima4/map/city.h b/engines/ultima/ultima4/map/city.h
index f2a74542a5..d44d409578 100644
--- a/engines/ultima/ultima4/map/city.h
+++ b/engines/ultima/ultima4/map/city.h
@@ -43,7 +43,7 @@ typedef Common::List<PersonRole *> PersonRoleList;
 class City : public Map {
 public:
 	City();
-	~City();
+	~City() override;
 
 	// Members
 	/**
diff --git a/engines/ultima/ultima4/map/dungeon.h b/engines/ultima/ultima4/map/dungeon.h
index fb3863e9a6..c4b0dea3fa 100644
--- a/engines/ultima/ultima4/map/dungeon.h
+++ b/engines/ultima/ultima4/map/dungeon.h
@@ -121,6 +121,7 @@ enum DungeonToken {
 class Dungeon : public Map {
 public:
 	Dungeon();
+	~Dungeon() override {}
 
 	// Members
 	/**
diff --git a/engines/ultima/ultima4/map/shrine.h b/engines/ultima/ultima4/map/shrine.h
index 629e8bad71..b3af21913b 100644
--- a/engines/ultima/ultima4/map/shrine.h
+++ b/engines/ultima/ultima4/map/shrine.h
@@ -35,6 +35,7 @@ namespace Ultima4 {
 class Shrine : public Map {
 public:
 	Shrine();
+	~Shrine() override {}
 
 	// Methods
 	Common::String  getName() override;


Commit: 683959ea2d2f3149ecf6b39f35b0b2bde7c07ebd
    https://github.com/scummvm/scummvm/commit/683959ea2d2f3149ecf6b39f35b0b2bde7c07ebd
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-05-16T19:27:39-07:00

Commit Message:
ULTIMA4: Added support for XML-based maps

This includes the addition of a hidden ScummVM map, just as
an easter egg for anyone that stumbles across it

Changed paths:
  A devtools/create_ultima/files/ultima4/conf/scummvm_map.xml
  A engines/ultima/ultima4/map/xml_map.h
    devtools/create_ultima/files/ultima4/conf/dtd/maps.dtd
    devtools/create_ultima/files/ultima4/conf/maps.xml
    engines/ultima/ultima4/controllers/combat_controller.cpp
    engines/ultima/ultima4/core/debugger.cpp
    engines/ultima/ultima4/game/portal.h
    engines/ultima/ultima4/map/map.h
    engines/ultima/ultima4/map/maploader.cpp
    engines/ultima/ultima4/map/maploader.h
    engines/ultima/ultima4/map/mapmgr.cpp
    engines/ultima/ultima4/map/mapmgr.h


diff --git a/devtools/create_ultima/files/ultima4/conf/dtd/maps.dtd b/devtools/create_ultima/files/ultima4/conf/dtd/maps.dtd
index ba3842fcb3..4d402c9b40 100644
--- a/devtools/create_ultima/files/ultima4/conf/dtd/maps.dtd
+++ b/devtools/create_ultima/files/ultima4/conf/dtd/maps.dtd
@@ -7,7 +7,7 @@
 
 <!ELEMENT maps ( map+ ) >
 
-<!ELEMENT map ( city | compressedchunk | dungeon | moongate | portal | shrine | label )* >
+<!ELEMENT map ( city | compressedchunk | dungeon | moongate | portal | shrine | xml | label )* >
 <!ATTLIST map id                  NMTOKEN  #REQUIRED
               type                ( city | combat | dungeon | shrine | world | u3world ) #REQUIRED
               fname               NMTOKEN  #REQUIRED
diff --git a/devtools/create_ultima/files/ultima4/conf/maps.xml b/devtools/create_ultima/files/ultima4/conf/maps.xml
index 70240f95d3..c5064ea4e3 100644
--- a/devtools/create_ultima/files/ultima4/conf/maps.xml
+++ b/devtools/create_ultima/files/ultima4/conf/maps.xml
@@ -41,7 +41,9 @@
         <portal x="81"  y="207" destmapid="30" startx="0" starty="0" action="enter" condition="shrine" savelocation="true" transport="footorhorse"/>
         <portal x="231" y="216" destmapid="32" startx="0" starty="0" action="enter" condition="shrine" savelocation="true" transport="footorhorse"/>
 
-        <moongate phase="0" x="224" y="133"/>
+		<portal x="102" y="105" destmapid="101"  startx="1" starty="5" action="enter" savelocation="true" transport="footorhorse" tile="5"/>
+
+		<moongate phase="0" x="224" y="133"/>
         <moongate phase="1" x="96" y="102"/>
         <moongate phase="2" x="38" y="224"/>
         <moongate phase="3" x="50" y="37"/>
@@ -406,4 +408,6 @@
     <map id="55" type="combat" fname="camp.dng" width="11" height="11" levels="1"
      borderbehavior="fixed" nolineofsight="true" music="8" tileset="base" tilemap="base"/>
 
+	<!-- Custom maps introduced under ScummVM-->
+	<xi:include xmlns:xi="http://www.w3.org/2003/XInclude" href="scummvm_map.xml"/>
 </maps>
diff --git a/devtools/create_ultima/files/ultima4/conf/scummvm_map.xml b/devtools/create_ultima/files/ultima4/conf/scummvm_map.xml
new file mode 100644
index 0000000000..ae7a62b5e0
--- /dev/null
+++ b/devtools/create_ultima/files/ultima4/conf/scummvm_map.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<map id="101" type="xml" fname="scummvm.xml" width="57" height="11" levels="1"
+ borderbehavior="exit" showavatar="true" music="2" tileset="base" tilemap="base">
+	<tiles>
+		127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127
+		127,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,127
+		127,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,127
+		127,04,04,63,63,63,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,63,04,04,04,04,04,04,63,04,63,04,04,04,04,04,63,04,04,04,04,04,04,04,127
+		004,04,63,04,04,04,63,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,63,04,04,04,04,63,04,04,63,63,04,04,04,63,63,04,04,00,00,00,04,04,127
+		004,04,04,63,04,04,04,04,04,63,63,63,04,63,04,04,04,63,04,63,63,04,04,63,63,04,63,63,04,04,63,63,04,04,63,04,04,04,04,63,04,04,63,04,63,04,63,04,63,04,04,23,03,23,04,04,127
+		004,04,04,04,63,63,04,04,63,04,04,04,04,63,04,04,04,63,04,63,04,63,63,04,63,04,63,04,63,63,04,63,04,04,04,63,04,04,63,04,04,04,63,04,04,63,04,04,63,04,04,00,00,00,04,04,127
+		127,04,63,04,04,04,63,04,63,04,04,04,04,63,04,04,63,63,04,63,04,04,04,04,63,04,63,04,04,04,04,63,04,04,04,63,04,04,63,04,04,04,63,04,04,04,04,04,63,04,04,04,04,04,04,04,127
+		127,04,04,63,63,63,04,04,04,63,63,63,04,04,63,63,04,63,04,63,04,04,04,04,63,04,63,04,04,04,04,63,04,04,04,04,63,63,04,04,04,04,63,04,04,04,04,04,63,04,04,04,04,04,04,04,127
+		127,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,04,127
+		127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127
+	</tiles>
+</map>
diff --git a/engines/ultima/ultima4/controllers/combat_controller.cpp b/engines/ultima/ultima4/controllers/combat_controller.cpp
index 8acbeaacde..1c9b89bf05 100644
--- a/engines/ultima/ultima4/controllers/combat_controller.cpp
+++ b/engines/ultima/ultima4/controllers/combat_controller.cpp
@@ -208,7 +208,7 @@ void CombatController::initDungeonRoom(int room, Direction from) {
 	ASSERT(g_context->_location->_prev->_context & CTX_DUNGEON, "Error: called initDungeonRoom from non-dungeon context");
 	{
 		Dungeon *dng = dynamic_cast<Dungeon *>(g_context->_location->_prev->_map);
-		assert(dng);
+		assert(dng);  
 
 		DngRoom &dngRoom = dng->_rooms[room];
 
diff --git a/engines/ultima/ultima4/core/debugger.cpp b/engines/ultima/ultima4/core/debugger.cpp
index abef436e29..85f4ecebaa 100644
--- a/engines/ultima/ultima4/core/debugger.cpp
+++ b/engines/ultima/ultima4/core/debugger.cpp
@@ -1002,6 +1002,15 @@ bool Debugger::cmdSearch(int argc, const char **argv) {
 		dungeonSearch();
 	} else if (g_context->_party->isFlying()) {
 		print("Searching...\n%cDrift only!%c", FG_GREY, FG_WHITE);
+	} else if (g_context->_location->_map->_id == MAP_SCUMMVM &&
+			g_context->_location->_coords == Coords(52, 5, 0)) {
+		// Special hack for the ScummVM easter egg map. Searching on
+		// the given tile triggers the cheat to allow teleporting
+		print("Searching...\nFound teleport point!");
+		g_game->exitToParentMap();
+		g_music->playMapMusic();
+
+		return cmdGoto(argc, argv);
 	} else {
 		print("Searching...");
 
diff --git a/engines/ultima/ultima4/game/portal.h b/engines/ultima/ultima4/game/portal.h
index 0a6f372893..b2632e6eb2 100644
--- a/engines/ultima/ultima4/game/portal.h
+++ b/engines/ultima/ultima4/game/portal.h
@@ -62,6 +62,7 @@ struct Portal {
 	Common::String _message;
 	TransportContext _portalTransportRequisites;
 	bool _exitPortal;
+	int _tile;
 };
 
 /**
diff --git a/engines/ultima/ultima4/map/map.h b/engines/ultima/ultima4/map/map.h
index 5af07e0cad..95d8886ffc 100644
--- a/engines/ultima/ultima4/map/map.h
+++ b/engines/ultima/ultima4/map/map.h
@@ -140,7 +140,8 @@ public:
 		CITY,
 		SHRINE,
 		COMBAT,
-		DUNGEON
+		DUNGEON,
+		XML
 	};
 
 	enum BorderBehavior {
diff --git a/engines/ultima/ultima4/map/maploader.cpp b/engines/ultima/ultima4/map/maploader.cpp
index df157e2c6a..f825b3f20d 100644
--- a/engines/ultima/ultima4/map/maploader.cpp
+++ b/engines/ultima/ultima4/map/maploader.cpp
@@ -37,6 +37,7 @@
 #include "ultima/ultima4/game/portal.h"
 #include "ultima/ultima4/map/tilemap.h"
 #include "ultima/ultima4/map/tileset.h"
+#include "ultima/ultima4/map/xml_map.h"
 #include "ultima/ultima4/filesys/u4file.h"
 #include "ultima/ultima4/core/utils.h"
 #include "ultima/ultima4/gfx/image.h"
@@ -56,6 +57,7 @@ MapLoaders::MapLoaders() {
 	(*this)[Map::DUNGEON] = new DngMapLoader();
 	(*this)[Map::WORLD] = new WorldMapLoader();
 	(*this)[Map::COMBAT] = new ConMapLoader();
+	(*this)[Map::XML] = new XMLMapLoader();
 }
 
 MapLoaders::~MapLoaders() {
@@ -130,6 +132,8 @@ bool MapLoader::isChunkCompressed(Map *map, int chunk) {
 	return false;
 }
 
+/*-------------------------------------------------------------------*/
+
 bool CityMapLoader::load(Map *map) {
 	City *city = dynamic_cast<City *>(map);
 	assert(city);
@@ -249,6 +253,8 @@ bool CityMapLoader::load(Map *map) {
 	return true;
 }
 
+/*-------------------------------------------------------------------*/
+
 bool ConMapLoader::load(Map *map) {
 	int i;
 
@@ -286,6 +292,8 @@ bool ConMapLoader::load(Map *map) {
 	return true;
 }
 
+/*-------------------------------------------------------------------*/
+
 bool DngMapLoader::load(Map *map) {
 	Dungeon *dungeon = dynamic_cast<Dungeon *>(map);
 	assert(dungeon);
@@ -372,6 +380,8 @@ bool DngMapLoader::load(Map *map) {
 	return true;
 }
 
+/*-------------------------------------------------------------------*/
+
 void DngMapLoader::initDungeonRoom(Dungeon *dng, int room) {
 	dng->_roomMaps[room] = dynamic_cast<CombatMap *>(mapMgr->initMap(Map::COMBAT));
 
@@ -385,6 +395,8 @@ void DngMapLoader::initDungeonRoom(Dungeon *dng, int room) {
 	dng->_roomMaps[room]->_tileSet = g_tileSets->get("base");
 }
 
+/*-------------------------------------------------------------------*/
+
 bool WorldMapLoader::load(Map *map) {
 	Common::File *world = u4fopen(map->_fname);
 	if (!world)
@@ -395,8 +407,64 @@ bool WorldMapLoader::load(Map *map) {
 
 	u4fclose(world);
 
+	// Check for any tile overrides for the portals
+	for (uint idx = 0; idx < map->_portals.size(); ++idx) {
+		const Portal *p = map->_portals[idx];
+		if (p->_tile != -1) {
+			MapTile mt = map->translateFromRawTileIndex(p->_tile);
+			map->_data[p->_coords.x + p->_coords.y * map->_width] = mt;
+		}
+	}
+
 	return true;
 }
 
+/*-------------------------------------------------------------------*/
+
+bool XMLMapLoader::load(Map *map) {
+	XMLMap *xmlMap = dynamic_cast<XMLMap *>(map);
+	assert(xmlMap);
+	Common::String text = xmlMap->_tilesText;
+	text.trim();
+
+	// Allocate the space we need for the map data
+	map->_data.clear();
+	map->_data.resize(map->_width * map->_height);
+
+	// Split up the text lines
+	Common::StringArray lines, cols;	
+	split(text, lines, '\n');
+	assert(lines.size() == map->_height);
+
+	// Iterate through the lines
+	for (uint y = 0; y < map->_height; ++y) {
+		text = lines[y];
+		text.trim();
+		split(text, cols, ',');
+		assert(cols.size() == map->_width);
+
+		for (uint x = 0; x < map->_width; ++x) {
+			int id = atoi(cols[x].c_str());
+			MapTile mt = map->translateFromRawTileIndex(id);
+			map->_data[x + y * map->_width] = mt;
+		}
+	}
+
+	return true;
+}
+
+void XMLMapLoader::split(const Common::String &text, Common::StringArray &values, char c) {
+	values.clear();
+
+	Common::String str = text;
+	size_t pos;
+	while ((pos = str.findFirstOf(c)) != Common::String::npos) {
+		values.push_back(Common::String(str.c_str(), pos));
+		str = Common::String(str.c_str() + pos + 1);
+	}
+
+	values.push_back(str);
+}
+
 } // End of namespace Ultima4
 } // End of namespace Ultima
diff --git a/engines/ultima/ultima4/map/maploader.h b/engines/ultima/ultima4/map/maploader.h
index b5623c498d..3adc2182fc 100644
--- a/engines/ultima/ultima4/map/maploader.h
+++ b/engines/ultima/ultima4/map/maploader.h
@@ -113,6 +113,16 @@ public:
 	bool load(Map *map) override;
 };
 
+class XMLMapLoader : public MapLoader {
+private:
+	void split(const Common::String &text, Common::StringArray &values, char c);
+public:
+	/**
+	 * Loads the data for the map from the provided Xml
+	 */
+	bool load(Map *map) override;
+};
+
 class MapLoaders : public Std::map<Map::Type, MapLoader *, MapType_Hash> {
 public:
 	/**
diff --git a/engines/ultima/ultima4/map/mapmgr.cpp b/engines/ultima/ultima4/map/mapmgr.cpp
index e883017e71..6008f4a23c 100644
--- a/engines/ultima/ultima4/map/mapmgr.cpp
+++ b/engines/ultima/ultima4/map/mapmgr.cpp
@@ -35,6 +35,7 @@
 #include "ultima/ultima4/map/shrine.h"
 #include "ultima/ultima4/map/tilemap.h"
 #include "ultima/ultima4/map/tileset.h"
+#include "ultima/ultima4/map/xml_map.h"
 #include "ultima/ultima4/core/types.h"
 #include "ultima/ultima4/filesys/u4file.h"
 #include "ultima/ultima4/core/config.h"
@@ -116,6 +117,10 @@ Map *MapMgr::initMap(Map::Type type) {
 		map = new City();
 		break;
 
+	case Map::XML:
+		map = new XMLMap();
+		break;
+
 	default:
 		error("Error: invalid map type used");
 		break;
@@ -149,7 +154,7 @@ void MapMgr::registerMap(Map *map) {
 
 Map *MapMgr::initMapFromConf(const ConfigElement &mapConf) {
 	Map *map;
-	static const char *mapTypeEnumStrings[] = { "world", "city", "shrine", "combat", "dungeon", nullptr };
+	static const char *mapTypeEnumStrings[] = { "world", "city", "shrine", "combat", "dungeon", "xml", nullptr };
 	static const char *borderBehaviorEnumStrings[] = { "wrap", "exit", "fixed", nullptr };
 
 	map = initMap(static_cast<Map::Type>(mapConf.getEnum("type", mapTypeEnumStrings)));
@@ -208,6 +213,8 @@ Map *MapMgr::initMapFromConf(const ConfigElement &mapConf) {
 			map->_compressedChunks.push_back(initCompressedChunkFromConf(*i));
 		else if (i->getName() == "label")
 			map->_labels.insert(initLabelFromConf(*i));
+		else if (i->getName() == "tiles" && map->_type == Map::XML)
+			static_cast<XMLMap *>(map)->_tilesText = i->getNode()->firstChild()->text();
 	}
 
 	return map;
@@ -302,6 +309,10 @@ Portal *MapMgr::initPortalFromConf(const ConfigElement &portalConf) {
 
 	portal->_exitPortal = portalConf.getBool("exits");
 
+	// Used as a shortcut for specifying the display tile
+	// for new/fan maps being added to the overworld
+	portal->_tile = portalConf.exists("tile") ? portalConf.getInt("tile") : -1;
+
 	Std::vector<ConfigElement> children = portalConf.getChildren();
 	for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
 		if (i->getName() == "retroActiveDest") {
@@ -314,6 +325,7 @@ Portal *MapMgr::initPortalFromConf(const ConfigElement &portalConf) {
 			portal->_retroActiveDest->_mapid = static_cast<MapId>(i->getInt("mapid"));
 		}
 	}
+
 	return portal;
 }
 
diff --git a/engines/ultima/ultima4/map/mapmgr.h b/engines/ultima/ultima4/map/mapmgr.h
index c6c6430afd..39ef124f94 100644
--- a/engines/ultima/ultima4/map/mapmgr.h
+++ b/engines/ultima/ultima4/map/mapmgr.h
@@ -99,6 +99,8 @@ class Shrine;
 #define MAP_SHORE_CON 53
 #define MAP_SHORSHIP_CON 54
 #define MAP_CAMP_DNG 55
+#define MAP_CASTLE_OF_LORD_BRITISH2 100
+#define MAP_SCUMMVM 101
 
 /**
  * The map manager singleton that keeps track of all the maps.
diff --git a/engines/ultima/ultima4/map/xml_map.h b/engines/ultima/ultima4/map/xml_map.h
new file mode 100644
index 0000000000..2204e9dbbf
--- /dev/null
+++ b/engines/ultima/ultima4/map/xml_map.h
@@ -0,0 +1,43 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef ULTIMA4_MAP_XML_MAP_H
+#define ULTIMA4_MAP_XML_MAP_H
+
+#include "ultima/ultima4/map/city.h"
+#include "ultima/shared/std/containers.h"
+
+namespace Ultima {
+namespace Ultima4 {
+
+class XMLMap : public City {
+public:
+	Common::String _tilesText;
+public:
+	XMLMap() : City() {}
+	~XMLMap() override {};
+};
+
+} // End of namespace Ultima4
+} // End of namespace Ultima
+
+#endif


Commit: 9cfc17c0e53dac56fc926ec914a027596d4b6898
    https://github.com/scummvm/scummvm/commit/9cfc17c0e53dac56fc926ec914a027596d4b6898
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-05-16T19:27:39-07:00

Commit Message:
ULTIMA4: Searching on a map entrance now falls back on enter

Changed paths:
    engines/ultima/ultima4/core/debugger.cpp


diff --git a/engines/ultima/ultima4/core/debugger.cpp b/engines/ultima/ultima4/core/debugger.cpp
index 85f4ecebaa..c716bb04a7 100644
--- a/engines/ultima/ultima4/core/debugger.cpp
+++ b/engines/ultima/ultima4/core/debugger.cpp
@@ -1023,6 +1023,8 @@ bool Debugger::cmdSearch(int argc, const char **argv) {
 					print("You find...\n%s!", item->_name);
 				(g_items->*(item->_putItemInInventory))(item->_data);
 			}
+		} else if (usePortalAt(g_context->_location, g_context->_location->_coords, ACTION_ENTER)) {
+			print("");
 		} else {
 			print("%cNothing Here!%c", FG_GREY, FG_WHITE);
 		}


Commit: 4748949ea6bd63a0eb4cddb61034681c6f02bec2
    https://github.com/scummvm/scummvm/commit/4748949ea6bd63a0eb4cddb61034681c6f02bec2
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2020-05-16T19:27:41-07:00

Commit Message:
ULTIMA4: Regenerate ultima.dat

Changed paths:
    dists/engine-data/ultima.dat


diff --git a/dists/engine-data/ultima.dat b/dists/engine-data/ultima.dat
index 50d43cb5fe..cc2b37bcac 100644
Binary files a/dists/engine-data/ultima.dat and b/dists/engine-data/ultima.dat differ




More information about the Scummvm-git-logs mailing list