[Scummvm-git-logs] scummvm master -> 3594eb54a171f76d93ff71a935328059686b7b90

OMGPizzaGuy noreply at scummvm.org
Sun Apr 6 12:46:05 UTC 2025


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

Summary:
3594eb54a1 ULTIMA: Use C++ 11 range-based for loops


Commit: 3594eb54a171f76d93ff71a935328059686b7b90
    https://github.com/scummvm/scummvm/commit/3594eb54a171f76d93ff71a935328059686b7b90
Author: Matthew Jimenez (matthew.jimenez at outlook.com)
Date: 2025-04-06T07:31:52-05:00

Commit Message:
ULTIMA: Use C++ 11 range-based for loops

Changed paths:
    engines/ultima/nuvie/conf/configuration.cpp
    engines/ultima/nuvie/files/nuvie_file_list.cpp
    engines/ultima/nuvie/files/nuvie_io_file.cpp
    engines/ultima/nuvie/fonts/font_manager.cpp
    engines/ultima/nuvie/gui/widgets/msg_scroll.cpp
    engines/ultima/nuvie/misc/u6_misc.cpp
    engines/ultima/nuvie/sound/sound_manager.cpp
    engines/ultima/shared/conf/xml_node.cpp
    engines/ultima/shared/gfx/screen.cpp
    engines/ultima/ultima4/controllers/combat_controller.cpp
    engines/ultima/ultima4/controllers/game_controller.cpp
    engines/ultima/ultima4/conversation/conversation.cpp
    engines/ultima/ultima4/conversation/dialogueloader.cpp
    engines/ultima/ultima4/core/config.cpp
    engines/ultima/ultima4/core/debugger.cpp
    engines/ultima/ultima4/core/observable.h
    engines/ultima/ultima4/game/armor.cpp
    engines/ultima/ultima4/game/creature.cpp
    engines/ultima/ultima4/game/game.cpp
    engines/ultima/ultima4/game/person.cpp
    engines/ultima/ultima4/game/script.cpp
    engines/ultima/ultima4/game/spell.cpp
    engines/ultima/ultima4/game/weapon.cpp
    engines/ultima/ultima4/gfx/image.cpp
    engines/ultima/ultima4/gfx/imageloader_u4.cpp
    engines/ultima/ultima4/gfx/imagemgr.cpp
    engines/ultima/ultima4/gfx/screen.cpp
    engines/ultima/ultima4/map/city.cpp
    engines/ultima/ultima4/map/map.cpp
    engines/ultima/ultima4/map/mapmgr.cpp
    engines/ultima/ultima4/map/tileanim.cpp
    engines/ultima/ultima4/map/tilemap.cpp
    engines/ultima/ultima4/map/tileset.cpp
    engines/ultima/ultima4/sound/music.cpp
    engines/ultima/ultima4/sound/sound.cpp
    engines/ultima/ultima4/views/menu.cpp
    engines/ultima/ultima4/views/menu.h
    engines/ultima/ultima4/views/stats.cpp
    engines/ultima/ultima8/audio/audio_process.cpp
    engines/ultima/ultima8/audio/speech_flex.cpp
    engines/ultima/ultima8/conf/config_file_manager.cpp
    engines/ultima/ultima8/filesys/savegame.cpp
    engines/ultima/ultima8/filesys/u8_save_file.cpp
    engines/ultima/ultima8/games/game_data.cpp
    engines/ultima/ultima8/games/treasure_loader.cpp
    engines/ultima/ultima8/gfx/fonts/font.cpp
    engines/ultima/ultima8/gfx/fonts/font_manager.cpp
    engines/ultima/ultima8/gfx/fonts/font_shape_archive.cpp
    engines/ultima/ultima8/gfx/fonts/jp_rendered_text.cpp
    engines/ultima/ultima8/gfx/fonts/shape_rendered_text.cpp
    engines/ultima/ultima8/gfx/fonts/tt_font.cpp
    engines/ultima/ultima8/gfx/type_flags.cpp
    engines/ultima/ultima8/gumps/ask_gump.cpp
    engines/ultima/ultima8/gumps/container_gump.cpp
    engines/ultima/ultima8/gumps/cru_credits_gump.cpp
    engines/ultima/ultima8/gumps/cru_pickup_area_gump.cpp
    engines/ultima/ultima8/gumps/desktop_gump.cpp
    engines/ultima/ultima8/gumps/gump.cpp
    engines/ultima/ultima8/gumps/minimap_gump.cpp
    engines/ultima/ultima8/gumps/paged_gump.cpp
    engines/ultima/ultima8/gumps/paperdoll_gump.cpp
    engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
    engines/ultima/ultima8/gumps/weasel_dat.cpp
    engines/ultima/ultima8/gumps/weasel_gump.cpp
    engines/ultima/ultima8/kernel/kernel.cpp
    engines/ultima/ultima8/kernel/object_manager.cpp
    engines/ultima/ultima8/kernel/process.cpp
    engines/ultima/ultima8/misc/debugger.cpp
    engines/ultima/ultima8/usecode/uc_machine.cpp
    engines/ultima/ultima8/usecode/uc_process.cpp
    engines/ultima/ultima8/world/actors/actor.cpp
    engines/ultima/ultima8/world/actors/animation_tracker.cpp
    engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp
    engines/ultima/ultima8/world/actors/main_actor.cpp
    engines/ultima/ultima8/world/actors/pathfinder.cpp
    engines/ultima/ultima8/world/actors/rolling_thunder_process.cpp
    engines/ultima/ultima8/world/container.cpp
    engines/ultima/ultima8/world/current_map.cpp
    engines/ultima/ultima8/world/glob_egg.cpp
    engines/ultima/ultima8/world/item.cpp
    engines/ultima/ultima8/world/item_selection_process.cpp
    engines/ultima/ultima8/world/item_sorter.cpp
    engines/ultima/ultima8/world/map.cpp
    engines/ultima/ultima8/world/minimap.cpp
    engines/ultima/ultima8/world/missile_tracker.cpp
    engines/ultima/ultima8/world/snap_process.cpp


diff --git a/engines/ultima/nuvie/conf/configuration.cpp b/engines/ultima/nuvie/conf/configuration.cpp
index 369ff206a01..4ee12fc7ff7 100644
--- a/engines/ultima/nuvie/conf/configuration.cpp
+++ b/engines/ultima/nuvie/conf/configuration.cpp
@@ -266,12 +266,10 @@ ConfigNode *Configuration::getNode(const Std::string &key) {
 
 Std::set<Std::string> Configuration::listKeys(const Std::string &key, bool longformat) const {
 	Std::set<Std::string> keys;
-	for (Common::Array<Shared::XMLTree *>::const_iterator i = _trees.begin();
-	        i != _trees.end(); ++i) {
-		Common::Array<Common::String> k = (*i)->listKeys(key, longformat);
-		for (Common::Array<Common::String>::const_iterator iter = k.begin();
-		        iter != k.end(); ++iter) {
-			keys.insert(*iter);
+	for (auto *tree : _trees) {
+		Common::Array<Common::String> treeKeys = tree->listKeys(key, longformat);
+		for (const auto &k : treeKeys) {
+			keys.insert(k);
 		}
 	}
 	return keys;
@@ -282,20 +280,18 @@ void Configuration::getSubkeys(KeyTypeList &ktl, const Std::string &basekey) {
 		Shared::XMLTree::KeyTypeList l;
 		tree->getSubkeys(l, basekey);
 
-		for (Shared::XMLTree::KeyTypeList::iterator i = l.begin();
-		        i != l.end(); ++i) {
+		for (const auto &i : l) {
 			bool found = false;
-			for (KeyTypeList::iterator j = ktl.begin();
-			        j != ktl.end() && !found; ++j) {
-				if (j->first == i->first) {
+			for (auto &j : ktl) {
+				if (j.first == i.first) {
 					// already have this subkey, so just replace the value
-					j->second = i->second;
+					j.second = i.second;
 					found = true;
 				}
 			}
 			if (!found) {
 				// new subkey
-				ktl.push_back(*i);
+				ktl.push_back(i);
 			}
 		}
 	}
diff --git a/engines/ultima/nuvie/files/nuvie_file_list.cpp b/engines/ultima/nuvie/files/nuvie_file_list.cpp
index 463221b2f58..a79fe163645 100644
--- a/engines/ultima/nuvie/files/nuvie_file_list.cpp
+++ b/engines/ultima/nuvie/files/nuvie_file_list.cpp
@@ -96,13 +96,9 @@ void NuvieFileList::close() {
 
 Std::set<Std::string> NuvieFileList::get_filenames() const {
 	Std::set<Std::string> filenames;
-	Std::list<NuvieFileDesc>::const_iterator iter = file_list.begin();
-
-	while (iter != file_list.end()) {
-		filenames.insert((*iter).filename);
-		iter++;
+	for (const auto &desc : file_list) {
+		filenames.insert(desc.filename);
 	}
-
 	return filenames;
 }
 
diff --git a/engines/ultima/nuvie/files/nuvie_io_file.cpp b/engines/ultima/nuvie/files/nuvie_io_file.cpp
index 8e3ee9c255e..b66b55596b6 100644
--- a/engines/ultima/nuvie/files/nuvie_io_file.cpp
+++ b/engines/ultima/nuvie/files/nuvie_io_file.cpp
@@ -48,8 +48,8 @@ bool NuvieIOFileRead::open(const Common::Path &filename) {
 
 	if (components.size() >= 2) {
 		Common::FSNode node(ConfMan.getPath("path"));
-		for(Common::StringArray::const_iterator it = components.begin(); it != components.end(); it++) {
-			node = node.getChild(*it);
+		for(const auto &c : components) {
+			node = node.getChild(c);
 			if (!node.exists())
 				break;
 		}
diff --git a/engines/ultima/nuvie/fonts/font_manager.cpp b/engines/ultima/nuvie/fonts/font_manager.cpp
index fac7a352473..a38f1c082ec 100644
--- a/engines/ultima/nuvie/fonts/font_manager.cpp
+++ b/engines/ultima/nuvie/fonts/font_manager.cpp
@@ -41,11 +41,8 @@ FontManager::FontManager(const Configuration *cfg) : config(cfg), num_fonts(0),
 }
 
 FontManager::~FontManager() {
-	Std::vector<Font *>::iterator font;
-
-	for (font = fonts.begin(); font != fonts.end();) {
-		delete *font;
-		font++;
+	for (auto *font : fonts) {
+		delete font;
 	}
 	if (conv_font) {
 		delete conv_font;
diff --git a/engines/ultima/nuvie/gui/widgets/msg_scroll.cpp b/engines/ultima/nuvie/gui/widgets/msg_scroll.cpp
index c48fec35bcc..172e843be05 100644
--- a/engines/ultima/nuvie/gui/widgets/msg_scroll.cpp
+++ b/engines/ultima/nuvie/gui/widgets/msg_scroll.cpp
@@ -119,17 +119,16 @@ uint32 MsgLine::length() {
 
 // gets the MsgText object that contains the text at line position pos
 MsgText *MsgLine::get_text_at_pos(uint16 pos) {
-	uint16 i;
-	Std::list<MsgText *>::iterator iter;
+	uint16 i = 0;
 
 	if (pos > total_length)
 		return nullptr;
 
-	for (i = 0, iter = text.begin(); iter != text.end(); iter++) {
-		if (i + (*iter)->s.length() >= pos)
-			return (*iter);
+	for (auto *t : text) {
+		if (i + t->s.length() >= pos)
+			return t;
 
-		i += (*iter)->s.length();
+		i += t->s.length();
 	}
 
 	return nullptr;
diff --git a/engines/ultima/nuvie/misc/u6_misc.cpp b/engines/ultima/nuvie/misc/u6_misc.cpp
index 73d45038da5..9e98b7aa80c 100644
--- a/engines/ultima/nuvie/misc/u6_misc.cpp
+++ b/engines/ultima/nuvie/misc/u6_misc.cpp
@@ -97,14 +97,10 @@ int mkdir_recursive(const Common::Path &path, int mode) {
 
 	Tokenise(path, directories, U6PATH_DELIMITER);
 
-	Std::vector<string>::iterator dir_iter;
-
 	if (path.find(U6PATH_DELIMITER) == 0)
 		tmp_path += U6PATH_DELIMITER;
 
-	for (dir_iter = directories.begin(); dir_iter != directories.end();) {
-		string dir = *dir_iter;
-
+	for (const auto &dir : directories) {
 		debug("%s, ", dir.c_str());
 
 		tmp_path += dir;
@@ -118,7 +114,6 @@ int mkdir_recursive(const Common::Path &path, int mode) {
 			if (ret != 0)
 				return ret;
 		}
-		dir_iter++;
 	}
 
 	return 0;
@@ -703,8 +698,8 @@ sint8 get_wrapped_rel_dir(sint16 p1, sint16 p2, uint8 level) {
 Std::string encode_xml_entity(const Std::string &s) {
 	string  ret;
 
-	for (string::const_iterator it = s.begin(); it != s.end(); ++it) {
-		switch (*it) {
+	for (const auto &c : s) {
+		switch (c) {
 		case '<':
 			ret += "<";
 			break;
@@ -721,7 +716,7 @@ Std::string encode_xml_entity(const Std::string &s) {
 			ret += "&";
 			break;
 		default:
-			ret += *it;
+			ret += c;
 		}
 	}
 	return ret;
diff --git a/engines/ultima/nuvie/sound/sound_manager.cpp b/engines/ultima/nuvie/sound/sound_manager.cpp
index 764786de156..e8bc939a095 100644
--- a/engines/ultima/nuvie/sound/sound_manager.cpp
+++ b/engines/ultima/nuvie/sound/sound_manager.cpp
@@ -124,12 +124,12 @@ SoundManager::~SoundManager() {
 
 	delete opl;
 
-	for (IntCollectionMap::iterator it = m_ObjectSampleMap.begin(); it != m_ObjectSampleMap.end(); ++it)
-		delete it->_value;
-	for (IntCollectionMap::iterator it = m_TileSampleMap.begin(); it != m_TileSampleMap.end(); ++it)
-		delete it->_value;
-	for (StringCollectionMap::iterator it = m_MusicMap.begin(); it != m_MusicMap.end(); ++it)
-		delete it->_value;
+	for (auto &i : m_ObjectSampleMap)
+		delete i._value;
+	for (auto &i : m_TileSampleMap)
+		delete i._value;
+	for (auto &i : m_MusicMap)
+		delete i._value;
 
 	delete m_SfxManager;
 }
diff --git a/engines/ultima/shared/conf/xml_node.cpp b/engines/ultima/shared/conf/xml_node.cpp
index 92d898bc3f6..11daa461cbf 100644
--- a/engines/ultima/shared/conf/xml_node.cpp
+++ b/engines/ultima/shared/conf/xml_node.cpp
@@ -27,9 +27,8 @@ namespace Ultima {
 namespace Shared {
 
 XMLNode::~XMLNode() {
-	for (Common::Array<XMLNode *>::iterator i = _nodeList.begin();
-			i != _nodeList.end(); ++i) {
-		delete *i;
+	for (auto *node : _nodeList) {
+		delete node;
 	}
 }
 
@@ -48,10 +47,9 @@ const Common::String &XMLNode::reference(const Common::String &h, bool &exists)
 		Common::String k;
 		k = h.substr(h.find('/') + 1);
 		Common::String k2 = k.substr(0, k.find('/'));
-		for (Common::Array<XMLNode *>::iterator it = _nodeList.begin();
-		        it != _nodeList.end(); ++it) {
-			if ((*it)->_id == k2)
-				return (*it)->reference(k, exists);
+		for (auto *node : _nodeList) {
+			if (node->_id == k2)
+				return node->reference(k, exists);
 		}
 	}
 
@@ -73,10 +71,9 @@ const XMLNode *XMLNode::subtree(const Common::String &h) const {
 		Common::String k;
 		k = h.substr(h.find('/') + 1);
 		Common::String k2 = k.substr(0, k.find('/'));
-		for (Common::Array<XMLNode *>::const_iterator it = _nodeList.begin();
-		        it != _nodeList.end(); ++it) {
-			if ((*it)->_id.equalsIgnoreCase(k2)) {
-				return (*it)->subtree(k);
+		for (auto *node : _nodeList) {
+			if (node->_id.equalsIgnoreCase(k2)) {
+				return node->subtree(k);
 			}
 		}
 	}
@@ -96,9 +93,8 @@ Common::String XMLNode::dump(int depth) {
 	if (_id[_id.size() - 1] != '/') {
 		if (_nodeList.empty() == false)
 			s += "\n";
-		for (Common::Array<XMLNode *>::const_iterator it = _nodeList.begin();
-		        it != _nodeList.end(); ++it) {
-			s += (**it).dump(depth + 1);
+		for (auto *node : _nodeList) {
+			s += node->dump(depth + 1);
 		}
 
 		if (!_text.empty()) {
@@ -138,10 +134,9 @@ void XMLNode::xmlAssign(const Common::String &key, const Common::String &value)
 	Common::String k;
 	k = key.substr(key.find('/') + 1);
 	Common::String k2 = k.substr(0, k.find('/'));
-	for (Common::Array<XMLNode *>::iterator it = _nodeList.begin();
-	        it != _nodeList.end(); ++it) {
-		if ((*it)->_id == k2) {
-			(**it).xmlAssign(k, value);
+	for (auto *node : _nodeList) {
+		if (node->_id == k2) {
+			node->xmlAssign(k, value);
 			return;
 		}
 	}
@@ -160,20 +155,19 @@ void XMLNode::listKeys(const Common::String &key, Common::Array<Common::String>
 	Common::String s(key);
 	s += "/";
 
-	for (Common::Array<XMLNode *>::const_iterator it = _nodeList.begin();
-	        it != _nodeList.end(); ++it) {
+	for (auto *node : _nodeList) {
 		if (!longformat)
-			vs.push_back((*it)->_id);
+			vs.push_back(node->_id);
 		else
-			vs.push_back(s + (*it)->_id);
+			vs.push_back(s + node->_id);
 	}
 }
 
 Common::String XMLNode::encodeEntity(const Common::String &s) {
 	Common::String  ret;
 
-	for (Common::String::const_iterator it = s.begin(); it != s.end(); ++it) {
-		switch (*it) {
+	for (const auto &c : s) {
+		switch (c) {
 		case '<':
 			ret += "<";
 			break;
@@ -190,7 +184,7 @@ Common::String XMLNode::encodeEntity(const Common::String &s) {
 			ret += "&";
 			break;
 		default:
-			ret += *it;
+			ret += c;
 		}
 	}
 	return ret;
@@ -469,18 +463,19 @@ bool XMLNode::searchPairs(KeyTypeList &ktl, const Common::String &basekey,
 		/* If we've found it, return every key->value pair under this key,
 		    then return true, since we've found the key we were looking for.*/
 		if (basekey == currkey + _id) {
-			for (Common::Array<XMLNode *>::iterator i = _nodeList.begin();
-			        i != _nodeList.end(); ++i)
-				if ((*i)->_id[0] != '!')
-					(*i)->selectPairs(ktl, "");
+			for (auto *node : _nodeList) {
+				if (node->_id[0] != '!')
+					node->selectPairs(ktl, "");
+			}
 			return true;
 		}
 		/* Else, keep searching for the key under it's subnodes */
-		else
-			for (Common::Array<XMLNode *>::iterator i = _nodeList.begin();
-			        i != _nodeList.end(); ++i)
-				if ((*i)->searchPairs(ktl, basekey, currkey + _id + '/', pos))
+		else {
+			for (auto *node : _nodeList) {
+				if (node->searchPairs(ktl, basekey, currkey + _id + '/', pos))
 					return true;
+			}
+		}
 	}
 	return false;
 }
@@ -489,9 +484,8 @@ bool XMLNode::searchPairs(KeyTypeList &ktl, const Common::String &basekey,
 void XMLNode::selectPairs(KeyTypeList &ktl, const Common::String currkey) {
 	ktl.push_back(KeyType(currkey + _id, currkey));
 
-	for (Common::Array<XMLNode *>::iterator i = _nodeList.begin();
-	        i != _nodeList.end(); ++i) {
-		(*i)->selectPairs(ktl, currkey + _id + '/');
+	for (auto *node : _nodeList) {
+		node->selectPairs(ktl, currkey + _id + '/');
 	}
 }
 
diff --git a/engines/ultima/shared/gfx/screen.cpp b/engines/ultima/shared/gfx/screen.cpp
index 71b95ed1e5f..b56a0fcaeec 100644
--- a/engines/ultima/shared/gfx/screen.cpp
+++ b/engines/ultima/shared/gfx/screen.cpp
@@ -36,8 +36,7 @@ void Screen::update() {
 	if (_cursor) {
 		// Check whether the area the cursor occupies will be being updated
 		Common::Rect cursorBounds = _cursor->getBounds();
-		for (Common::List<Common::Rect>::iterator i = _dirtyRects.begin(); i != _dirtyRects.end(); ++i) {
-			const Common::Rect &r = *i;
+		for (const auto &r : _dirtyRects) {
 			if (r.intersects(cursorBounds)) {
 				addDirtyRect(cursorBounds);
 				_drawCursor = true;
diff --git a/engines/ultima/ultima4/controllers/combat_controller.cpp b/engines/ultima/ultima4/controllers/combat_controller.cpp
index 66f3c72559d..089b191f0db 100644
--- a/engines/ultima/ultima4/controllers/combat_controller.cpp
+++ b/engines/ultima/ultima4/controllers/combat_controller.cpp
@@ -269,10 +269,7 @@ void CombatController::initDungeonRoom(int room, Direction from) {
 
 void CombatController::applyCreatureTileEffects() {
 	CreatureVector creatures = _map->getCreatures();
-	CreatureVector::iterator i;
-
-	for (i = creatures.begin(); i != creatures.end(); i++) {
-		Creature *m = *i;
+	for (auto *m : creatures) {
 		TileEffect effect = _map->tileTypeAt(m->getCoords(), WITH_GROUND_OBJECTS)->getEffect();
 		m->applyTileEffect(effect);
 	}
@@ -921,11 +918,11 @@ void CombatController::attack(Direction dir, int distance) {
 		targetCoords = path.back();
 
 	distance = 1;
-	for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-		if (attackAt(*i, attacker, MASK_DIR(dir), range, distance)) {
+	for (const auto &coords : path) {
+		if (attackAt(coords, attacker, MASK_DIR(dir), range, distance)) {
 			foundTarget = true;
 			targetDistance = distance;
-			targetCoords = *i;
+			targetCoords = coords;
 			break;
 		}
 		distance++;
@@ -965,43 +962,37 @@ void CombatController::update(Party *party, PartyEvent &event) {
 CombatMap::CombatMap() : Map(), _dungeonRoom(false), _altarRoom(VIRT_NONE), _contextual(false) {}
 
 CreatureVector CombatMap::getCreatures() {
-	ObjectDeque::iterator i;
 	CreatureVector creatures;
-	for (i = _objects.begin(); i != _objects.end(); i++) {
-		if (isCreature(*i) && !isPartyMember(*i))
-			creatures.push_back(dynamic_cast<Creature *>(*i));
+	for (auto *obj : _objects) {
+		if (isCreature(obj) && !isPartyMember(obj))
+			creatures.push_back(dynamic_cast<Creature *>(obj));
 	}
 	return creatures;
 }
 
 PartyMemberVector CombatMap::getPartyMembers() {
-	ObjectDeque::iterator i;
 	PartyMemberVector party;
-	for (i = _objects.begin(); i != _objects.end(); i++) {
-		if (isPartyMember(*i))
-			party.push_back(dynamic_cast<PartyMember *>(*i));
+	for (auto *obj : _objects) {
+		if (isPartyMember(obj))
+			party.push_back(dynamic_cast<PartyMember *>(obj));
 	}
 	return party;
 }
 
 PartyMember *CombatMap::partyMemberAt(Coords coords) {
 	PartyMemberVector party = getPartyMembers();
-	PartyMemberVector::iterator i;
-
-	for (i = party.begin(); i != party.end(); i++) {
-		if ((*i)->getCoords() == coords)
-			return *i;
+	for (auto *member : party) {
+		if (member->getCoords() == coords)
+			return member;
 	}
 	return nullptr;
 }
 
 Creature *CombatMap::creatureAt(Coords coords) {
 	CreatureVector creatures = getCreatures();
-	CreatureVector::iterator i;
-
-	for (i = creatures.begin(); i != creatures.end(); i++) {
-		if ((*i)->getCoords() == coords)
-			return *i;
+	for (auto *c : creatures) {
+		if (c->getCoords() == coords)
+			return c;
 	}
 	return nullptr;
 }
diff --git a/engines/ultima/ultima4/controllers/game_controller.cpp b/engines/ultima/ultima4/controllers/game_controller.cpp
index 3fb9ff6248a..716789cd533 100644
--- a/engines/ultima/ultima4/controllers/game_controller.cpp
+++ b/engines/ultima/ultima4/controllers/game_controller.cpp
@@ -784,8 +784,7 @@ bool GameController::createBalloon(Map *map) {
 	ObjectDeque::iterator i;
 
 	/* see if the balloon has already been created (and not destroyed) */
-	for (i = map->_objects.begin(); i != map->_objects.end(); i++) {
-		Object *obj = *i;
+	for (auto *obj : map->_objects) {
 		if (obj->getTile().getTileType()->isBalloon())
 			return false;
 	}
@@ -814,8 +813,8 @@ void GameController::attack(Direction dir) {
 	Std::vector<Coords> path = gameGetDirectionalActionPath(
 		MASK_DIR(dir), MASK_DIR_ALL, g_context->_location->_coords,
 		1, 1, nullptr, true);
-	for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-		if (attackAt(*i))
+	for (const auto &coords : path) {
+		if (attackAt(coords))
 			return;
 	}
 
diff --git a/engines/ultima/ultima4/conversation/conversation.cpp b/engines/ultima/ultima4/conversation/conversation.cpp
index e81d363a570..e4cb67368cc 100644
--- a/engines/ultima/ultima4/conversation/conversation.cpp
+++ b/engines/ultima/ultima4/conversation/conversation.cpp
@@ -65,8 +65,8 @@ const Std::vector<ResponsePart> &Response::getParts() const {
 
 Response::operator Common::String() const {
 	Common::String result;
-	for (Std::vector<ResponsePart>::const_iterator i = _parts.begin(); i != _parts.end(); i++) {
-		result += *i;
+	for (const auto &i : _parts) {
+		result += i;
 	}
 	return result;
 }
@@ -178,8 +178,8 @@ Dialogue::Dialogue()
 }
 
 Dialogue::~Dialogue() {
-	for (KeywordMap::iterator i = _keywords.begin(); i != _keywords.end(); i++) {
-		delete i->_value;
+	for (auto &i : _keywords) {
+		delete i._value;
 	}
 }
 
@@ -224,8 +224,8 @@ Common::String Dialogue::dump(const Common::String &arg) {
 	Common::String result;
 	if (arg == "") {
 		result = "keywords:\n";
-		for (KeywordMap::iterator i = _keywords.begin(); i != _keywords.end(); i++) {
-			result += i->_key + "\n";
+		for (const auto &i : _keywords) {
+			result += i._key + "\n";
 		}
 	} else {
 		if (_keywords.find(arg) != _keywords.end())
diff --git a/engines/ultima/ultima4/conversation/dialogueloader.cpp b/engines/ultima/ultima4/conversation/dialogueloader.cpp
index e2cd7190df2..17c2b84cec8 100644
--- a/engines/ultima/ultima4/conversation/dialogueloader.cpp
+++ b/engines/ultima/ultima4/conversation/dialogueloader.cpp
@@ -38,9 +38,8 @@ DialogueLoaders::DialogueLoaders() {
 }
 
 DialogueLoaders::~DialogueLoaders() {
-	for (Common::HashMap<Common::String, DialogueLoader *>::iterator it = _loaders.begin();
-			it != _loaders.end(); ++it)
-		delete it->_value;
+	for (auto &l : _loaders)
+		delete l._value;
 	g_loaders = nullptr;
 }
 
diff --git a/engines/ultima/ultima4/core/config.cpp b/engines/ultima/ultima4/core/config.cpp
index 38c71f7ad54..c6e7e174051 100644
--- a/engines/ultima/ultima4/core/config.cpp
+++ b/engines/ultima/ultima4/core/config.cpp
@@ -116,9 +116,8 @@ Std::vector<ConfigElement> ConfigElement::getChildren() const {
 	const Common::Array<Shared::XMLNode *> &children = _node->children();
 	Std::vector<ConfigElement> result;
 
-	for (Common::Array<Shared::XMLNode *>::const_iterator it = children.begin();
-	        it != children.end(); ++it)
-		result.push_back(*it);
+	for (const auto &c : children)
+		result.push_back(c);
 
 	return result;
 }
diff --git a/engines/ultima/ultima4/core/debugger.cpp b/engines/ultima/ultima4/core/debugger.cpp
index 499508c1f93..82099c7716f 100644
--- a/engines/ultima/ultima4/core/debugger.cpp
+++ b/engines/ultima/ultima4/core/debugger.cpp
@@ -149,9 +149,9 @@ void Debugger::printN(const char *fmt, ...) {
 		// Strip off any color special characters that aren't
 		// relevant for showing the text in the debugger
 		Common::String s;
-		for (Common::String::iterator it = str.begin(); it != str.end(); ++it) {
-			if (*it >= ' ' || *it == '\n')
-				s += *it;
+		for (const auto &c : str) {
+			if (c >= ' ' || c == '\n')
+				s += c;
 		}
 
 		debugPrintf("%s", s.c_str());
@@ -586,8 +586,8 @@ bool Debugger::cmdFire(int argc, const char **argv) {
 	// nothing (not even mountains!) can block cannonballs
 	Std::vector<Coords> path = gameGetDirectionalActionPath(MASK_DIR(dir), broadsidesDirs, g_context->_location->_coords,
 		1, 3, nullptr, false);
-	for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-		if (fireAt(*i, true))
+	for (const auto &coords : path) {
+		if (fireAt(coords, true))
 			return isDebuggerActive();
 	}
 
@@ -746,8 +746,8 @@ bool Debugger::cmdJimmy(int argc, const char **argv) {
 
 	Std::vector<Coords> path = gameGetDirectionalActionPath(MASK_DIR(dir), MASK_DIR_ALL, g_context->_location->_coords,
 		1, 1, nullptr, true);
-	for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-		if (jimmyAt(*i))
+	for (const auto &coords : path) {
+		if (jimmyAt(coords))
 			return isDebuggerActive();
 	}
 
@@ -889,8 +889,8 @@ bool Debugger::cmdOpenDoor(int argc, const char **argv) {
 
 	Std::vector<Coords> path = gameGetDirectionalActionPath(MASK_DIR(dir), MASK_DIR_ALL, g_context->_location->_coords,
 		1, 1, nullptr, true);
-	for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-		if (openAt(*i))
+	for (const auto &coords : path) {
+		if (openAt(coords))
 			return isDebuggerActive();
 	}
 
@@ -1143,8 +1143,8 @@ bool Debugger::cmdTalk(int argc, const char **argv) {
 
 	Std::vector<Coords> path = gameGetDirectionalActionPath(MASK_DIR(dir), MASK_DIR_ALL, g_context->_location->_coords,
 		1, 2, &Tile::canTalkOverTile, true);
-	for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-		if (talkAt(*i))
+	for (const auto &coords : path) {
+		if (talkAt(coords))
 			return isDebuggerActive();
 	}
 
@@ -1300,8 +1300,8 @@ bool Debugger::cmdDestroy(int argc, const char **argv) {
 
 	Std::vector<Coords> path = gameGetDirectionalActionPath(MASK_DIR(dir),
 		MASK_DIR_ALL, g_context->_location->_coords, 1, 1, nullptr, true);
-	for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-		if (destroyAt(*i)) {
+	for (const auto &coords : path) {
+		if (destroyAt(coords)) {
 			return false;
 		}
 	}
diff --git a/engines/ultima/ultima4/core/observable.h b/engines/ultima/ultima4/core/observable.h
index 8f0a39b4bb4..c0edf471264 100644
--- a/engines/ultima/ultima4/core/observable.h
+++ b/engines/ultima/ultima4/core/observable.h
@@ -80,12 +80,10 @@ public:
 		// is used to prevent problems if the observer removes itself (or
 		// otherwise changes the observer list)
 		typename Std::vector< Observer<O, A> *> tmp = _observers;
-		typename Std::vector< Observer<O, A> *>::iterator i;
 
 		clearChanged();
 
-		for (i = tmp.begin(); i != tmp.end(); i++) {
-			Observer<O, A> *observer = *i;
+		for (auto *observer : tmp) {
 			observer->update(static_cast<O>(this), arg);
 		}
 	}
diff --git a/engines/ultima/ultima4/game/armor.cpp b/engines/ultima/ultima4/game/armor.cpp
index 703476d8a3a..791e68e6975 100644
--- a/engines/ultima/ultima4/game/armor.cpp
+++ b/engines/ultima/ultima4/game/armor.cpp
@@ -68,12 +68,12 @@ void Armors::loadConf() {
 	const Config *config = Config::getInstance();
 
 	Std::vector<ConfigElement> armorConfs = config->getElement("armors").getChildren();
-	for (Std::vector<ConfigElement>::iterator i = armorConfs.begin(); i != armorConfs.end(); i++) {
-		if (i->getName() != "armor")
+	for (const auto &i : armorConfs) {
+		if (i.getName() != "armor")
 			continue;
 
 		ArmorType armorType = static_cast<ArmorType>(size());
-		push_back(new Armor(armorType, *i));
+		push_back(new Armor(armorType, i));
 	}
 }
 
@@ -85,23 +85,23 @@ Armor::Armor(ArmorType armorType, const ConfigElement &conf) :
 	_defense = conf.getInt("defense");
 
 	Std::vector<ConfigElement> contraintConfs = conf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = contraintConfs.begin(); i != contraintConfs.end(); i++) {
+	for (const auto &i : contraintConfs) {
 		byte useMask = 0;
 
-		if (i->getName() != "constraint")
+		if (i.getName() != "constraint")
 			continue;
 
 		for (int cl = 0; cl < 8; cl++) {
-			if (scumm_stricmp(i->getString("class").c_str(), getClassName(static_cast<ClassType>(cl))) == 0)
+			if (scumm_stricmp(i.getString("class").c_str(), getClassName(static_cast<ClassType>(cl))) == 0)
 				useMask = (1 << cl);
 		}
-		if (useMask == 0 && scumm_stricmp(i->getString("class").c_str(), "all") == 0)
+		if (useMask == 0 && scumm_stricmp(i.getString("class").c_str(), "all") == 0)
 			useMask = 0xFF;
 		if (useMask == 0) {
 			error("malformed armor.xml file: constraint has unknown class %s",
-			           i->getString("class").c_str());
+			           i.getString("class").c_str());
 		}
-		if (i->getBool("canuse"))
+		if (i.getBool("canuse"))
 			_canUse |= useMask;
 		else
 			_canUse &= ~useMask;
diff --git a/engines/ultima/ultima4/game/creature.cpp b/engines/ultima/ultima4/game/creature.cpp
index 221d4bcb098..b612a68d597 100644
--- a/engines/ultima/ultima4/game/creature.cpp
+++ b/engines/ultima/ultima4/game/creature.cpp
@@ -335,8 +335,8 @@ bool Creature::specialAction() {
 		if (mapdist <= 3 && xu4_random(2) == 0 && (g_context->_location->_context & CTX_CITY) == 0) {
 			Std::vector<Coords> path = gameGetDirectionalActionPath(dir, MASK_DIR_ALL, _coords,
 			                           1, 3, nullptr, false);
-			for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-				if (creatureRangeAttack(*i, this))
+			for (const auto &coords : path) {
+				if (creatureRangeAttack(coords, this))
 					break;
 			}
 		}
@@ -356,8 +356,8 @@ bool Creature::specialAction() {
 			// nothing (not even mountains!) can block cannonballs
 			Std::vector<Coords> path = gameGetDirectionalActionPath(dir, broadsidesDirs, _coords,
 			                           1, 3, nullptr, false);
-			for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-				if (fireAt(*i, false))
+			for (const auto &coords : path) {
+				if (fireAt(coords, false))
 					break;
 			}
 		} else
@@ -547,11 +547,9 @@ void Creature::act(CombatController *controller) {
 		/* Apply the sleep spell to party members still in combat */
 		if (!isPartyMember(this)) {
 			PartyMemberVector party = controller->getMap()->getPartyMembers();
-			PartyMemberVector::iterator j;
-
-			for (j = party.begin(); j != party.end(); j++) {
+			for (auto *member : party) {
 				if (xu4_random(2) == 0)
-					(*j)->putToSleep();
+					member->putToSleep();
 			}
 		}
 		break;
@@ -600,8 +598,8 @@ void Creature::act(CombatController *controller) {
 		Std::vector<Coords> path = gameGetDirectionalActionPath(dir, MASK_DIR_ALL, m_coords,
 		                           1, 11, &Tile::canAttackOverTile, false);
 		bool hit = false;
-		for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-			if (controller->rangedAttack(*i, this)) {
+		for (const auto &coords : path) {
+			if (controller->rangedAttack(coords, this)) {
 				hit = true;
 				break;
 			}
@@ -757,22 +755,21 @@ bool Creature::hideOrShow() {
 Creature *Creature::nearestOpponent(int *dist, bool ranged) {
 	Creature *opponent = nullptr;
 	int d, leastDist = 0xFFFF;
-	ObjectDeque::iterator i;
 	bool jinx = (*g_context->_aura == Aura::JINX);
 	Map *map = getMap();
 
-	for (i = map->_objects.begin(); i != map->_objects.end(); ++i) {
-		if (!isCreature(*i))
+	for (auto *obj : map->_objects) {
+		if (!isCreature(obj))
 			continue;
 
 		bool amPlayer = isPartyMember(this);
-		bool fightingPlayer = isPartyMember(*i);
+		bool fightingPlayer = isPartyMember(obj);
 
 		/* if a party member, find a creature. If a creature, find a party member */
 		/* if jinxed is false, find anything that isn't self */
 		if ((amPlayer != fightingPlayer) ||
-		        (jinx && !amPlayer && *i != this)) {
-			MapCoords objCoords = (*i)->getCoords();
+		        (jinx && !amPlayer && obj != this)) {
+			MapCoords objCoords = obj->getCoords();
 
 			/* if ranged, get the distance using diagonals, otherwise get movement distance */
 			if (ranged)
@@ -781,7 +778,7 @@ Creature *Creature::nearestOpponent(int *dist, bool ranged) {
 
 			/* skip target 50% of time if same distance */
 			if (d < leastDist || (d == leastDist && xu4_random(2) == 0)) {
-				opponent = dynamic_cast<Creature *>(*i);
+				opponent = dynamic_cast<Creature *>(obj);
 				leastDist = d;
 			}
 		}
@@ -896,12 +893,12 @@ void CreatureMgr::loadAll() {
 	const Config *config = Config::getInstance();
 	Std::vector<ConfigElement> creatureConfs = config->getElement("creatures").getChildren();
 
-	for (Std::vector<ConfigElement>::iterator i = creatureConfs.begin(); i != creatureConfs.end(); i++) {
-		if (i->getName() != "creature")
+	for (const auto &i : creatureConfs) {
+		if (i.getName() != "creature")
 			continue;
 
 		Creature *m = new Creature(0);
-		m->load(*i);
+		m->load(i);
 
 		/* add the creature to the list */
 		_creatures[m->getId()] = m;
@@ -909,11 +906,9 @@ void CreatureMgr::loadAll() {
 }
 
 Creature *CreatureMgr::getByTile(MapTile tile) {
-	CreatureMap::const_iterator i;
-
-	for (i = _creatures.begin(); i != _creatures.end(); i++) {
-		if (i->_value->getTile() == tile)
-			return i->_value;
+	for (const auto &c : _creatures) {
+		if (c._value->getTile() == tile)
+			return c._value;
 	}
 
 //    if (tile.id)
@@ -930,10 +925,9 @@ Creature *CreatureMgr::getById(CreatureId id) {
 }
 
 Creature *CreatureMgr::getByName(Common::String name) {
-	CreatureMap::const_iterator i;
-	for (i = _creatures.begin(); i != _creatures.end(); i++) {
-		if (scumm_stricmp(i->_value->getName().c_str(), name.c_str()) == 0)
-			return i->_value;
+	for (const auto &c : _creatures) {
+		if (scumm_stricmp(c._value->getName().c_str(), name.c_str()) == 0)
+			return c._value;
 	}
 	return nullptr;
 }
@@ -984,13 +978,12 @@ Creature *CreatureMgr::randomForDungeon(int dngLevel) {
 }
 
 Creature *CreatureMgr::randomAmbushing() {
-	CreatureMap::const_iterator i;
 	int numAmbushingCreatures = 0,
 	    randCreature;
 
 	/* first, find out how many creatures exist that might ambush you */
-	for (i = _creatures.begin(); i != _creatures.end(); i++) {
-		if (i->_value->ambushes())
+	for (const auto &c : _creatures) {
+		if (c._value->ambushes())
 			numAmbushingCreatures++;
 	}
 
@@ -1000,11 +993,11 @@ Creature *CreatureMgr::randomAmbushing() {
 		numAmbushingCreatures = 0;
 
 		/* now, find the one we selected */
-		for (i = _creatures.begin(); i != _creatures.end(); i++) {
-			if (i->_value->ambushes()) {
+		for (const auto &c : _creatures) {
+			if (c._value->ambushes()) {
 				/* found the creature - return it! */
 				if (numAmbushingCreatures == randCreature)
-					return i->_value;
+					return c._value;
 				/* move on to the next creature */
 				else
 					numAmbushingCreatures++;
diff --git a/engines/ultima/ultima4/game/game.cpp b/engines/ultima/ultima4/game/game.cpp
index 04c272854bd..d94e4da287f 100644
--- a/engines/ultima/ultima4/game/game.cpp
+++ b/engines/ultima/ultima4/game/game.cpp
@@ -671,11 +671,9 @@ void gameDestroyAllCreatures(void) {
 		for (i = 0; i < AREA_CREATURES; i++) {
 			CombatMap *cm = getCombatMap();
 			CreatureVector creatures = cm->getCreatures();
-			CreatureVector::iterator obj;
-
-			for (obj = creatures.begin(); obj != creatures.end(); obj++) {
-				if ((*obj)->getId() != LORDBRITISH_ID)
-					cm->removeObject(*obj);
+			for (const auto *obj : creatures) {
+				if (obj->getId() != LORDBRITISH_ID)
+					cm->removeObject(obj);
 			}
 		}
 	} else {
diff --git a/engines/ultima/ultima4/game/person.cpp b/engines/ultima/ultima4/game/person.cpp
index 39aea72c0e1..6bcf68915e6 100644
--- a/engines/ultima/ultima4/game/person.cpp
+++ b/engines/ultima/ultima4/game/person.cpp
@@ -352,15 +352,15 @@ Common::String Person::getIntro(Conversation *cnv) {
 Common::String Person::processResponse(Conversation *cnv, Response *response) {
 	Common::String text;
 	const Std::vector<ResponsePart> &parts = response->getParts();
-	for (Std::vector<ResponsePart>::const_iterator i = parts.begin(); i != parts.end(); i++) {
+	for (const auto &i : parts) {
 
 		// check for command triggers
-		if (i->isCommand())
-			runCommand(cnv, *i);
+		if (i.isCommand())
+			runCommand(cnv, i);
 
 		// otherwise, append response part to reply
 		else
-			text += *i;
+			text += i;
 	}
 	return text;
 }
diff --git a/engines/ultima/ultima4/game/script.cpp b/engines/ultima/ultima4/game/script.cpp
index 89f2cbdf149..df39a2bb2eb 100644
--- a/engines/ultima/ultima4/game/script.cpp
+++ b/engines/ultima/ultima4/game/script.cpp
@@ -129,11 +129,8 @@ Script::~Script() {
 	// Smart pointers anyone?
 
 	// Clean variables
-	Common::HashMap<Common::String, Script::Variable *>::iterator variableItem = _variables.begin();
-	Common::HashMap<Common::String, Script::Variable *>::iterator variablesEnd = _variables.end();
-	while (variableItem != variablesEnd) {
-		delete variableItem->_value;
-		++variableItem;
+	for (auto &item : _variables) {
+		delete item._value;
 	}
 }
 
diff --git a/engines/ultima/ultima4/game/spell.cpp b/engines/ultima/ultima4/game/spell.cpp
index a4269cf5522..b0053b5c859 100644
--- a/engines/ultima/ultima4/game/spell.cpp
+++ b/engines/ultima/ultima4/game/spell.cpp
@@ -354,8 +354,8 @@ void Spells::spellMagicAttack(const Common::String &tilename, Direction dir, int
 
 	Std::vector<Coords> path = gameGetDirectionalActionPath(MASK_DIR(dir), MASK_DIR_ALL, (*party)[controller->getFocus()]->getCoords(),
 	                           1, 11, Tile::canAttackOverTile, false);
-	for (Std::vector<Coords>::iterator i = path.begin(); i != path.end(); i++) {
-		if (spellMagicAttackAt(*i, tile, attackDamage))
+	for (const auto &coords : path) {
+		if (spellMagicAttackAt(coords, tile, attackDamage))
 			return;
 	}
 }
@@ -480,16 +480,15 @@ int Spells::spellDispel(int dir) {
 	 */
 	Annotation::List a = g_context->_location->_map->_annotations->allAt(field);
 	if (a.size() > 0) {
-		Annotation::List::iterator i;
-		for (i = a.begin(); i != a.end(); i++) {
-			if (i->getTile().getTileType()->canDispel()) {
+		for (auto &i : a) {
+			if (i.getTile().getTileType()->canDispel()) {
 
 				/*
 				 * get a replacement tile for the field
 				 */
-				MapTile newTile(g_context->_location->getReplacementTile(field, i->getTile().getTileType()));
+				MapTile newTile(g_context->_location->getReplacementTile(field, i.getTile().getTileType()));
 
-				g_context->_location->_map->_annotations->remove(*i);
+				g_context->_location->_map->_annotations->remove(i);
 				g_context->_location->_map->_annotations->add(field, newTile, false, true);
 				return 1;
 			}
@@ -563,10 +562,9 @@ int Spells::spellEField(int param) {
 		/* Get rid of old field, if any */
 		Annotation::List a = g_context->_location->_map->_annotations->allAt(coords);
 		if (a.size() > 0) {
-			Annotation::List::iterator i;
-			for (i = a.begin(); i != a.end(); i++) {
-				if (i->getTile().getTileType()->canDispel())
-					g_context->_location->_map->_annotations->remove(*i);
+			for (auto &i : a) {
+				if (i.getTile().getTileType()->canDispel())
+					g_context->_location->_map->_annotations->remove(i);
 			}
 		}
 
@@ -655,12 +653,10 @@ int Spells::spellQuick(int unused) {
 int Spells::spellSleep(int unused) {
 	CombatMap *cm = getCombatMap();
 	CreatureVector creatures = cm->getCreatures();
-	CreatureVector::iterator i;
 
 	/* try to put each creature to sleep */
 
-	for (i = creatures.begin(); i != creatures.end(); i++) {
-		Creature *m = *i;
+	for (auto *m : creatures) {
 		Coords coords = m->getCoords();
 		GameController::flashTile(coords, "wisp", 1);
 		if ((m->getResists() != EFFECT_SLEEP) &&
@@ -678,12 +674,7 @@ int Spells::spellSleep(int unused) {
 int Spells::spellTremor(int unused) {
 	CombatController *ct = spellCombatController();
 	CreatureVector creatures = ct->getMap()->getCreatures();
-	CreatureVector::iterator i;
-
-	for (i = creatures.begin(); i != creatures.end(); i++) {
-		Creature *m = *i;
-
-
+	for (auto *m : creatures) {
 		Coords coords = m->getCoords();
 		//GameController::flashTile(coords, "rocks", 1);
 
@@ -716,10 +707,8 @@ int Spells::spellTremor(int unused) {
 int Spells::spellUndead(int unused) {
 	CombatController *ct = spellCombatController();
 	CreatureVector creatures = ct->getMap()->getCreatures();
-	CreatureVector::iterator i;
 
-	for (i = creatures.begin(); i != creatures.end(); i++) {
-		Creature *m = *i;
+	for (auto *m : creatures) {
 		if (m && m->isUndead() && xu4_random(2) == 0)
 			m->setHp(23);
 	}
diff --git a/engines/ultima/ultima4/game/weapon.cpp b/engines/ultima/ultima4/game/weapon.cpp
index 9a9aa0c0b6e..35d945cf60c 100644
--- a/engines/ultima/ultima4/game/weapon.cpp
+++ b/engines/ultima/ultima4/game/weapon.cpp
@@ -68,12 +68,12 @@ void Weapons::loadConf() {
 	const Config *config = Config::getInstance();
 
 	Std::vector<ConfigElement> weaponConfs = config->getElement("weapons").getChildren();
-	for (Std::vector<ConfigElement>::iterator i = weaponConfs.begin(); i != weaponConfs.end(); i++) {
-		if (i->getName() != "weapon")
+	for (const auto &i : weaponConfs) {
+		if (i.getName() != "weapon")
 			continue;
 
 		WeaponType weaponType = static_cast<WeaponType>(size());
-		push_back(new Weapon(weaponType, *i));
+		push_back(new Weapon(weaponType, i));
 	}
 }
 
@@ -137,23 +137,23 @@ Weapon::Weapon(WeaponType weaponType, const ConfigElement &conf)
 	}
 
 	Std::vector<ConfigElement> contraintConfs = conf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = contraintConfs.begin(); i != contraintConfs.end(); i++) {
+	for (const auto &i : contraintConfs) {
 		byte mask = 0;
 
-		if (i->getName() != "constraint")
+		if (i.getName() != "constraint")
 			continue;
 
 		for (int cl = 0; cl < 8; cl++) {
-			if (scumm_stricmp(i->getString("class").c_str(), getClassName(static_cast<ClassType>(cl))) == 0)
+			if (scumm_stricmp(i.getString("class").c_str(), getClassName(static_cast<ClassType>(cl))) == 0)
 				mask = (1 << cl);
 		}
-		if (mask == 0 && scumm_stricmp(i->getString("class").c_str(), "all") == 0)
+		if (mask == 0 && scumm_stricmp(i.getString("class").c_str(), "all") == 0)
 			mask = 0xFF;
 		if (mask == 0) {
 			error("malformed weapons.xml file: constraint has unknown class %s",
-			           i->getString("class").c_str());
+			           i.getString("class").c_str());
 		}
-		if (i->getBool("canuse"))
+		if (i.getBool("canuse"))
 			_canUse |= mask;
 		else
 			_canUse &= ~mask;
diff --git a/engines/ultima/ultima4/gfx/image.cpp b/engines/ultima/ultima4/gfx/image.cpp
index cfd73827440..b5155cd930f 100644
--- a/engines/ultima/ultima4/gfx/image.cpp
+++ b/engines/ultima/ultima4/gfx/image.cpp
@@ -294,11 +294,9 @@ void Image::performTransparencyHack(uint colorValue, uint numFrames,
 		}
 	}
 	int ox, oy;
-	for (Common::List<Common::Pair<uint, uint> >::iterator xy = opaqueXYs.begin();
-	        xy != opaqueXYs.end();
-	        ++xy) {
-		ox = xy->first;
-		oy = xy->second;
+	for (const auto &xy : opaqueXYs) {
+		ox = xy.first;
+		oy = xy.second;
 		int span = int(haloWidth);
 		int x_start = MAX(0, ox - span);
 		int x_finish = MIN(int(_surface->w), ox + span + 1);
diff --git a/engines/ultima/ultima4/gfx/imageloader_u4.cpp b/engines/ultima/ultima4/gfx/imageloader_u4.cpp
index 0bd569f0e16..932ecb8f219 100644
--- a/engines/ultima/ultima4/gfx/imageloader_u4.cpp
+++ b/engines/ultima/ultima4/gfx/imageloader_u4.cpp
@@ -192,14 +192,14 @@ const byte *U4PaletteLoader::loadEgaPalette() {
 		_egaPalette = new byte[16 * 3];
 
 		Std::vector<ConfigElement> paletteConf = config->getElement("egaPalette").getChildren();
-		for (Std::vector<ConfigElement>::iterator i = paletteConf.begin(); i != paletteConf.end(); i++) {
+		for (const auto &i : paletteConf) {
 
-			if (i->getName() != "color")
+			if (i.getName() != "color")
 				continue;
 
-			_egaPalette[index++] = i->getInt("red");
-			_egaPalette[index++] = i->getInt("green");
-			_egaPalette[index++] = i->getInt("blue");
+			_egaPalette[index++] = i.getInt("red");
+			_egaPalette[index++] = i.getInt("green");
+			_egaPalette[index++] = i.getInt("blue");
 		}
 	}
 	return _egaPalette;
diff --git a/engines/ultima/ultima4/gfx/imagemgr.cpp b/engines/ultima/ultima4/gfx/imagemgr.cpp
index f75ec104d95..2561fe89959 100644
--- a/engines/ultima/ultima4/gfx/imagemgr.cpp
+++ b/engines/ultima/ultima4/gfx/imagemgr.cpp
@@ -72,8 +72,8 @@ ImageMgr::ImageMgr() : _baseSet(nullptr), _abyssData(nullptr) {
 ImageMgr::~ImageMgr() {
 	settings.deleteObserver(this);
 
-	for (Common::HashMap<Common::String, ImageSet *>::iterator i = _imageSets.begin(); i != _imageSets.end(); i++)
-		delete i->_value;
+	for (auto &i : _imageSets)
+		delete i._value;
 
 	delete[] _abyssData;
 }
@@ -103,9 +103,9 @@ void ImageMgr::init() {
 	 */
 	const Config *config = Config::getInstance();
 	Std::vector<ConfigElement> graphicsConf = config->getElement("graphics").getChildren();
-	for (Std::vector<ConfigElement>::iterator conf = graphicsConf.begin(); conf != graphicsConf.end(); conf++) {
-		if (conf->getName() == "imageset") {
-			ImageSet *set = loadImageSetFromConf(*conf);
+	for (const auto &conf : graphicsConf) {
+		if (conf.getName() == "imageset") {
+			ImageSet *set = loadImageSetFromConf(conf);
 			_imageSets[set->_name] = set;
 
 			// all image sets include the "screen" image
@@ -114,8 +114,8 @@ void ImageMgr::init() {
 	}
 
 	_imageSetNames.clear();
-	for (Common::HashMap<Common::String, ImageSet *>::const_iterator set = _imageSets.begin(); set != _imageSets.end(); set++)
-		_imageSetNames.push_back(set->_key);
+	for (const auto &set : _imageSets)
+		_imageSetNames.push_back(set._key);
 
 	update(&settings);
 }
@@ -129,9 +129,9 @@ ImageSet *ImageMgr::loadImageSetFromConf(const ConfigElement &conf) {
 	set->_extends = conf.getString("extends");
 
 	Std::vector<ConfigElement> children = conf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-		if (i->getName() == "image") {
-			ImageInfo *info = loadImageInfoFromConf(*i);
+	for (const auto &i : children) {
+		if (i.getName() == "image") {
+			ImageInfo *info = loadImageInfoFromConf(i);
 			if (set->_info.contains(info->_name))
 				delete set->_info[info->_name];
 			set->_info[info->_name] = info;
@@ -162,9 +162,9 @@ ImageInfo *ImageMgr::loadImageInfoFromConf(const ConfigElement &conf) {
 	info->_image = nullptr;
 
 	Std::vector<ConfigElement> children = conf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-		if (i->getName() == "subimage") {
-			SubImage *subimage = loadSubImageFromConf(info, *i);
+	for (const auto &i : children) {
+		if (i.getName() == "subimage") {
+			SubImage *subimage = loadSubImageFromConf(info, i);
 			info->_subImages[subimage->_name] = subimage;
 		}
 	}
@@ -663,8 +663,8 @@ SubImage *ImageMgr::getSubImage(const Common::String &name) {
 	ImageSet *set = _baseSet;
 
 	while (set != nullptr) {
-		for (Common::HashMap<Common::String, ImageInfo *>::iterator i = set->_info.begin(); i != set->_info.end(); i++) {
-			ImageInfo *info = (ImageInfo *) i->_value;
+		for (auto &i : set->_info) {
+			ImageInfo *info = (ImageInfo *) i._value;
 			Common::HashMap<Common::String, SubImage *>::iterator j = info->_subImages.find(name);
 			if (j != info->_subImages.end())
 				return j->_value;
@@ -677,10 +677,10 @@ SubImage *ImageMgr::getSubImage(const Common::String &name) {
 }
 
 void ImageMgr::freeIntroBackgrounds() {
-	for (Common::HashMap<Common::String, ImageSet *>::iterator i = _imageSets.begin(); i != _imageSets.end(); i++) {
-		ImageSet *set = i->_value;
-		for (Common::HashMap<Common::String, ImageInfo *>::iterator j = set->_info.begin(); j != set->_info.end(); j++) {
-			ImageInfo *info = j->_value;
+	for (const auto &i : _imageSets) {
+		ImageSet *set = i._value;
+		for (auto &j : set->_info) {
+			ImageInfo *info = j._value;
 			if (info->_image != nullptr && info->_introOnly) {
 				delete info->_image;
 				info->_image = nullptr;
@@ -716,16 +716,16 @@ void ImageMgr::update(Settings *newSettings) {
 }
 
 ImageSet::~ImageSet() {
-	for (Common::HashMap<Common::String, ImageInfo *>::iterator i = _info.begin(); i != _info.end(); i++) {
-		ImageInfo *imageInfo = i->_value;
+	for (const auto &i : _info) {
+		ImageInfo *imageInfo = i._value;
 		if (imageInfo->_name != "screen")
 			delete imageInfo;
 	}
 }
 
 ImageInfo::~ImageInfo() {
-	for (Common::HashMap<Common::String, SubImage *>::iterator i = _subImages.begin(); i != _subImages.end(); i++)
-		delete i->_value;
+	for (auto &i : _subImages)
+		delete i._value;
 	if (_image != nullptr)
 		delete _image;
 }
diff --git a/engines/ultima/ultima4/gfx/screen.cpp b/engines/ultima/ultima4/gfx/screen.cpp
index 66eaf09d544..532e4bf3933 100644
--- a/engines/ultima/ultima4/gfx/screen.cpp
+++ b/engines/ultima/ultima4/gfx/screen.cpp
@@ -95,8 +95,7 @@ void Screen::init() {
 
 	/* find the tile animations for our tileset */
 	_tileAnims = nullptr;
-	for (Std::vector<TileAnimSet *>::const_iterator i = _tileAnimSets.begin(); i != _tileAnimSets.end(); i++) {
-		TileAnimSet *set = *i;
+	for (auto *set : _tileAnimSets) {
 		if (set->_name == settings._videoType)
 			_tileAnims = set;
 	}
@@ -131,9 +130,8 @@ void Screen::clear() {
 	// Clear any pending updates for the current screen
 	update();
 
-	Std::vector<Layout *>::const_iterator i;
-	for (i = _layouts.begin(); i != _layouts.end(); ++i)
-		delete (*i);
+	for (auto *layout : _layouts)
+		delete layout;
 	_layouts.clear();
 
 	ImageMgr::destroy();
@@ -345,18 +343,16 @@ void Screen::screenLoadGraphicsFromConf() {
 	const Config *config = Config::getInstance();
 
 	Std::vector<ConfigElement> graphicsConf = config->getElement("graphics").getChildren();
-	for (Std::vector<ConfigElement>::iterator conf = graphicsConf.begin(); conf != graphicsConf.end(); conf++) {
+	for (const auto &conf : graphicsConf) {
 
-		if (conf->getName() == "layout")
-			_layouts.push_back(screenLoadLayoutFromConf(*conf));
-		else if (conf->getName() == "tileanimset")
-			_tileAnimSets.push_back(new TileAnimSet(*conf));
+		if (conf.getName() == "layout")
+			_layouts.push_back(screenLoadLayoutFromConf(conf));
+		else if (conf.getName() == "tileanimset")
+			_tileAnimSets.push_back(new TileAnimSet(conf));
 	}
 
 	_gemLayoutNames.clear();
-	Std::vector<Layout *>::const_iterator i;
-	for (i = _layouts.begin(); i != _layouts.end(); i++) {
-		Layout *layout = *i;
+	for (const auto *layout : _layouts) {
 		if (layout->_type == LAYOUT_GEM) {
 			_gemLayoutNames.push_back(layout->_name);
 		}
@@ -365,9 +361,7 @@ void Screen::screenLoadGraphicsFromConf() {
 	/*
 	 * Find gem layout to use.
 	 */
-	for (i = _layouts.begin(); i != _layouts.end(); i++) {
-		Layout *layout = *i;
-
+	for (auto *layout : _layouts) {
 		if (layout->_type == LAYOUT_GEM && layout->_name == settings._gemLayout) {
 			_gemLayout = layout;
 			break;
@@ -386,15 +380,15 @@ Layout *Screen::screenLoadLayoutFromConf(const ConfigElement &conf) {
 	layout->_type = static_cast<LayoutType>(conf.getEnum("type", typeEnumStrings));
 
 	Std::vector<ConfigElement> children = conf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-		if (i->getName() == "tileshape") {
-			layout->_tileShape.x = i->getInt("width");
-			layout->_tileShape.y = i->getInt("height");
-		} else if (i->getName() == "viewport") {
-			layout->_viewport.left = i->getInt("x");
-			layout->_viewport.top = i->getInt("y");
-			layout->_viewport.setWidth(i->getInt("width"));
-			layout->_viewport.setHeight(i->getInt("height"));
+	for (const auto &i : children) {
+		if (i.getName() == "tileshape") {
+			layout->_tileShape.x = i.getInt("width");
+			layout->_tileShape.y = i.getInt("height");
+		} else if (i.getName() == "viewport") {
+			layout->_viewport.left = i.getInt("x");
+			layout->_viewport.top = i.getInt("y");
+			layout->_viewport.setWidth(i.getInt("width"));
+			layout->_viewport.setHeight(i.getInt("height"));
 		}
 	}
 
@@ -1191,10 +1185,7 @@ void Screen::screenShowGemTile(Layout *layout, Map *map, MapTile &t, bool focus,
 
 Layout *Screen::screenGetGemLayout(const Map *map) {
 	if (map->_type == Map::DUNGEON) {
-		Std::vector<Layout *>::const_iterator i;
-		for (i = _layouts.begin(); i != _layouts.end(); i++) {
-			Layout *layout = *i;
-
+		for (auto *layout : _layouts) {
 			if (layout->_type == LAYOUT_DUNGEONGEM)
 				return layout;
 		}
diff --git a/engines/ultima/ultima4/map/city.cpp b/engines/ultima/ultima4/map/city.cpp
index 1dc51215b46..3bdbe890451 100644
--- a/engines/ultima/ultima4/map/city.cpp
+++ b/engines/ultima/ultima4/map/city.cpp
@@ -34,12 +34,12 @@ City::City() : Map() {
 }
 
 City::~City() {
-	for (PersonList::iterator i = _persons.begin(); i != _persons.end(); i++)
-		delete *i;
-	for (PersonRoleList::iterator j = _personRoles.begin(); j != _personRoles.end(); j++)
-		delete *j;
-	for (Std::vector<Dialogue *>::iterator k = _extraDialogues.begin(); k != _extraDialogues.end(); k++)
-		delete *k;
+	for (auto *i : _persons)
+		delete i;
+	for (auto *j : _personRoles)
+		delete j;
+	for (auto *k : _extraDialogues)
+		delete k;
 }
 
 Common::String City::getName() {
diff --git a/engines/ultima/ultima4/map/map.cpp b/engines/ultima/ultima4/map/map.cpp
index 76d3c82b4bc..1d0baaf2a6d 100644
--- a/engines/ultima/ultima4/map/map.cpp
+++ b/engines/ultima/ultima4/map/map.cpp
@@ -237,8 +237,8 @@ Map::Map() : _id(0), _type(WORLD), _width(0), _height(0), _levels(1),
 }
 
 Map::~Map() {
-	for (PortalList::iterator i = _portals.begin(); i != _portals.end(); i++)
-		delete *i;
+	for (auto *i : _portals)
+		delete i;
 	delete _annotations;
 }
 
diff --git a/engines/ultima/ultima4/map/mapmgr.cpp b/engines/ultima/ultima4/map/mapmgr.cpp
index 96257e013c7..6756adda1ea 100644
--- a/engines/ultima/ultima4/map/mapmgr.cpp
+++ b/engines/ultima/ultima4/map/mapmgr.cpp
@@ -61,8 +61,8 @@ MapMgr::MapMgr() {
 	Map *map;
 
 	Std::vector<ConfigElement> maps = config->getElement("maps").getChildren();
-	for (Std::vector<ConfigElement>::iterator i = maps.begin(); i != maps.end(); i++) {
-		map = initMapFromConf(*i);
+	for (const auto &i : maps) {
+		map = initMapFromConf(i);
 
 		// Map actually gets loaded later, when it's needed
 		registerMap(map);
@@ -70,8 +70,8 @@ MapMgr::MapMgr() {
 }
 
 MapMgr::~MapMgr() {
-	for (Std::vector<Map *>::iterator i = _mapList.begin(); i != _mapList.end(); i++)
-		delete *i;
+	for (auto *i : _mapList)
+		delete i;
 }
 
 void MapMgr::unloadMap(MapId id) {
@@ -79,9 +79,9 @@ void MapMgr::unloadMap(MapId id) {
 	const Config *config = Config::getInstance();
 	Std::vector<ConfigElement> maps = config->getElement("maps").getChildren();
 
-	for (Std::vector<ConfigElement>::const_iterator i = maps.begin(); i != maps.end(); ++i) {
-		if (id == static_cast<MapId>((*i).getInt("id"))) {
-			Map *map = initMapFromConf(*i);
+	for (const auto &i : maps) {
+		if (id == static_cast<MapId>(i.getInt("id"))) {
+			Map *map = initMapFromConf(i);
 			_mapList[id] = map;
 			break;
 		}
@@ -188,29 +188,29 @@ Map *MapMgr::initMapFromConf(const ConfigElement &mapConf) {
 	map->_tileMap = g_tileMaps->get(mapConf.getString("tilemap"));
 
 	Std::vector<ConfigElement> children = mapConf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-		if (i->getName() == "city") {
+	for (const auto &i : children) {
+		if (i.getName() == "city") {
 			City *city = dynamic_cast<City *>(map);
 			assert(city);
-			initCityFromConf(*i, city);
-		} else if (i->getName() == "shrine") {
+			initCityFromConf(i, city);
+		} else if (i.getName() == "shrine") {
 			Shrine *shrine = dynamic_cast<Shrine *>(map);
 			assert(shrine);
-			initShrineFromConf(*i, shrine);
-		} else if (i->getName() == "dungeon") {
+			initShrineFromConf(i, shrine);
+		} else if (i.getName() == "dungeon") {
 			Dungeon *dungeon = dynamic_cast<Dungeon *>(map);
 			assert(dungeon);
-			initDungeonFromConf(*i, dungeon);
-		} else if (i->getName() == "portal")
-			map->_portals.push_back(initPortalFromConf(*i));
-		else if (i->getName() == "moongate")
-			createMoongateFromConf(*i);
-		else if (i->getName() == "compressedchunk")
-			map->_compressedChunks.push_back(initCompressedChunkFromConf(*i));
-		else if (i->getName() == "label")
-			map->_labels[i->getString("name")] = MapCoords(i->getInt("x"), i->getInt("y"), i->getInt("z", 0));
-		else if (i->getName() == "tiles" && map->_type == Map::XML)
-			static_cast<XMLMap *>(map)->_tilesText = i->getNode()->firstChild()->text();
+			initDungeonFromConf(i, dungeon);
+		} else if (i.getName() == "portal")
+			map->_portals.push_back(initPortalFromConf(i));
+		else if (i.getName() == "moongate")
+			createMoongateFromConf(i);
+		else if (i.getName() == "compressedchunk")
+			map->_compressedChunks.push_back(initCompressedChunkFromConf(i));
+		else if (i.getName() == "label")
+			map->_labels[i.getString("name")] = MapCoords(i.getInt("x"), i.getInt("y"), i.getInt("z", 0));
+		else if (i.getName() == "tiles" && map->_type == Map::XML)
+			static_cast<XMLMap *>(map)->_tilesText = i.getNode()->firstChild()->text();
 	}
 
 	return map;
@@ -222,9 +222,9 @@ void MapMgr::initCityFromConf(const ConfigElement &cityConf, City *city) {
 	city->_tlkFname = cityConf.getString("tlk_fname");
 
 	Std::vector<ConfigElement> children = cityConf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-		if (i->getName() == "personrole")
-			city->_personRoles.push_back(initPersonRoleFromConf(*i));
+	for (const auto &i : children) {
+		if (i.getName() == "personrole")
+			city->_personRoles.push_back(initPersonRoleFromConf(i));
 	}
 }
 
@@ -310,15 +310,15 @@ Portal *MapMgr::initPortalFromConf(const ConfigElement &portalConf) {
 	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") {
+	for (const auto &i : children) {
+		if (i.getName() == "retroActiveDest") {
 			portal->_retroActiveDest = new PortalDestination();
 
 			portal->_retroActiveDest->_coords = MapCoords(
-			                                        i->getInt("x"),
-			                                        i->getInt("y"),
-			                                        i->getInt("z", 0));
-			portal->_retroActiveDest->_mapid = static_cast<MapId>(i->getInt("mapid"));
+			                                        i.getInt("x"),
+			                                        i.getInt("y"),
+			                                        i.getInt("z", 0));
+			portal->_retroActiveDest->_mapid = static_cast<MapId>(i.getInt("mapid"));
 		}
 	}
 
diff --git a/engines/ultima/ultima4/map/tileanim.cpp b/engines/ultima/ultima4/map/tileanim.cpp
index 9657cc03c45..144fb142d66 100644
--- a/engines/ultima/ultima4/map/tileanim.cpp
+++ b/engines/ultima/ultima4/map/tileanim.cpp
@@ -49,9 +49,9 @@ TileAnimTransform *TileAnimTransform::create(const ConfigElement &conf) {
 			conf.getInt("x"), conf.getInt("y"));
 
 		Std::vector<ConfigElement> children = conf.getChildren();
-		for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-			if (i->getName() == "color") {
-				RGBA *rgba = loadColorFromConf(*i);
+		for (const auto &i : children) {
+			if (i.getName() == "color") {
+				RGBA *rgba = loadColorFromConf(i);
 				((TileAnimPixelTransform *)transform)->_colors.push_back(rgba);
 			}
 		}
@@ -240,9 +240,9 @@ TileAnimContext *TileAnimContext::create(const ConfigElement &conf) {
 	if (context) {
 		Std::vector<ConfigElement> children = conf.getChildren();
 
-		for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-			if (i->getName() == "transform") {
-				TileAnimTransform *transform = TileAnimTransform::create(*i);
+		for (const auto &i : children) {
+			if (i.getName() == "transform") {
+				TileAnimTransform *transform = TileAnimTransform::create(i);
 				context->add(transform);
 			}
 		}
@@ -273,17 +273,17 @@ TileAnimSet::TileAnimSet(const ConfigElement &conf) {
 	_name = conf.getString("name");
 
 	Std::vector<ConfigElement> children = conf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-		if (i->getName() == "tileanim") {
-			TileAnim *anim = new TileAnim(*i);
+	for (const auto &i : children) {
+		if (i.getName() == "tileanim") {
+			TileAnim *anim = new TileAnim(i);
 			_tileAnims[anim->_name] = anim;
 		}
 	}
 }
 
 TileAnimSet::~TileAnimSet() {
-	for (TileAnimMap::iterator it = _tileAnims.begin(); it != _tileAnims.end(); ++it)
-		delete it->_value;
+	for (auto &t : _tileAnims)
+		delete t._value;
 }
 
 TileAnim *TileAnimSet::getByName(const Common::String &name) {
@@ -301,13 +301,13 @@ TileAnim::TileAnim(const ConfigElement &conf) : _random(0) {
 		_random = conf.getInt("random");
 
 	Std::vector<ConfigElement> children = conf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-		if (i->getName() == "transform") {
-			TileAnimTransform *transform = TileAnimTransform::create(*i);
+	for (const auto &i : children) {
+		if (i.getName() == "transform") {
+			TileAnimTransform *transform = TileAnimTransform::create(i);
 
 			_transforms.push_back(transform);
-		} else if (i->getName() == "context") {
-			TileAnimContext *context = TileAnimContext::create(*i);
+		} else if (i.getName() == "context") {
+			TileAnimContext *context = TileAnimContext::create(i);
 
 			_contexts.push_back(context);
 		}
diff --git a/engines/ultima/ultima4/map/tilemap.cpp b/engines/ultima/ultima4/map/tilemap.cpp
index 55cd4a9f18a..426f20f9f43 100644
--- a/engines/ultima/ultima4/map/tilemap.cpp
+++ b/engines/ultima/ultima4/map/tilemap.cpp
@@ -50,11 +50,11 @@ void TileMaps::loadAll() {
 	conf = config->getElement("tilesets").getChildren();
 
 	// Load all of the tilemaps
-	for (Std::vector<ConfigElement>::iterator i = conf.begin(); i != conf.end(); i++) {
-		if (i->getName() == "tilemap") {
+	for (const auto &i : conf) {
+		if (i.getName() == "tilemap") {
 
 			// Load the tilemap !
-			load(*i);
+			load(i);
 		}
 	}
 }
@@ -77,24 +77,24 @@ void TileMaps::load(const ConfigElement &tilemapConf) {
 
 	int index = 0;
 	Std::vector<ConfigElement> children = tilemapConf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-		if (i->getName() != "mapping")
+	for (const auto &i : children) {
+		if (i.getName() != "mapping")
 			continue;
 
 		// We assume tiles have already been loaded at this point,
 		// so let's do some translations!
 		int frames = 1;
-		Common::String tile = i->getString("tile");
+		Common::String tile = i.getString("tile");
 
 		// Find the tile this references
 		Tile *t = g_tileSets->get(tileset)->getByName(tile);
 		if (!t)
 			error("Error: tile '%s' from '%s' was not found in tileset %s", tile.c_str(), name.c_str(), tileset.c_str());
 
-		if (i->exists("index"))
-			index = i->getInt("index");
-		if (i->exists("frames"))
-			frames = i->getInt("frames");
+		if (i.exists("index"))
+			index = i.getInt("index");
+		if (i.exists("frames"))
+			frames = i.getInt("frames");
 
 		// Insert the tile into the tile map
 		for (int idx = 0; idx < frames; idx++) {
@@ -128,9 +128,9 @@ MapTile TileMap::translate(uint index) {
 uint TileMap::untranslate(MapTile &tile) {
 	uint index = 0;
 
-	for (Common::HashMap<uint, MapTile>::iterator i = _tileMap.begin(); i != _tileMap.end(); i++) {
-		if (i->_value == tile) {
-			index = i->_key;
+	for (const auto &i : _tileMap) {
+		if (i._value == tile) {
+			index = i._key;
 			break;
 		}
 	}
diff --git a/engines/ultima/ultima4/map/tileset.cpp b/engines/ultima/ultima4/map/tileset.cpp
index 72ef636c6b6..d5b1e5208e9 100644
--- a/engines/ultima/ultima4/map/tileset.cpp
+++ b/engines/ultima/ultima4/map/tileset.cpp
@@ -48,9 +48,9 @@ void TileRules::load() {
 	const Config *config = Config::getInstance();
 	Std::vector<ConfigElement> rules = config->getElement("tileRules").getChildren();
 
-	for (Std::vector<ConfigElement>::iterator i = rules.begin(); i != rules.end(); i++) {
+	for (const auto &i : rules) {
 		TileRule *rule = new TileRule();
-		rule->initFromConf(*i);
+		rule->initFromConf(i);
 		(*this)[rule->_name] = rule;
 	}
 
@@ -91,11 +91,11 @@ void TileSets::loadAll() {
 		g_tileRules->load();
 
 	// Load all of the tilesets
-	for (Std::vector<ConfigElement>::iterator i = conf.begin(); i != conf.end(); i++) {
-		if (i->getName() == "tileset") {
+	for (const auto &i : conf) {
+		if (i.getName() == "tileset") {
 
 			Tileset *tileset = new Tileset();
-			tileset->load(*i);
+			tileset->load(i);
 
 			(*this)[tileset->_name] = tileset;
 		}
@@ -258,12 +258,12 @@ void Tileset::load(const ConfigElement &tilesetConf) {
 
 	int index = 0;
 	Std::vector<ConfigElement> children = tilesetConf.getChildren();
-	for (Std::vector<ConfigElement>::iterator i = children.begin(); i != children.end(); i++) {
-		if (i->getName() != "tile")
+	for (const auto &i : children) {
+		if (i.getName() != "tile")
 			continue;
 
 		Tile *tile = new Tile(this);
-		tile->loadProperties(*i);
+		tile->loadProperties(i);
 
 		// Add the tile to our tileset
 		_tiles[tile->getId()] = tile;
diff --git a/engines/ultima/ultima4/sound/music.cpp b/engines/ultima/ultima4/sound/music.cpp
index 86a0965395b..a61e0dee8c3 100644
--- a/engines/ultima/ultima4/sound/music.cpp
+++ b/engines/ultima/ultima4/sound/music.cpp
@@ -63,13 +63,11 @@ Music::Music(Audio::Mixer *mixer) :
 	const Config *config = Config::getInstance();
 
 	Std::vector<ConfigElement> musicConfs = config->getElement("music").getChildren();
-	Std::vector<ConfigElement>::const_iterator i = musicConfs.begin();
-	Std::vector<ConfigElement>::const_iterator theEnd = musicConfs.end();
-	for (; i != theEnd; ++i) {
-		if (i->getName() != "track")
+	for (const auto &m : musicConfs) {
+		if (m.getName() != "track")
 			continue;
 
-		_filenames.push_back(i->getString("file"));
+		_filenames.push_back(m.getString("file"));
 	}
 }
 
diff --git a/engines/ultima/ultima4/sound/sound.cpp b/engines/ultima/ultima4/sound/sound.cpp
index ed41f7556b9..48c485fb64b 100644
--- a/engines/ultima/ultima4/sound/sound.cpp
+++ b/engines/ultima/ultima4/sound/sound.cpp
@@ -56,13 +56,11 @@ SoundManager::SoundManager(Audio::Mixer *mixer) : _mixer(mixer) {
 	_sounds.resize(SOUND_MAX);
 
 	Std::vector<ConfigElement> soundConfs = config->getElement("sound").getChildren();
-	Std::vector<ConfigElement>::const_iterator i = soundConfs.begin();
-	Std::vector<ConfigElement>::const_iterator theEnd = soundConfs.end();
-	for (; i != theEnd; ++i) {
-		if (i->getName() != "track")
+	for (const auto &s : soundConfs) {
+		if (s.getName() != "track")
 			continue;
 
-		_soundFilenames.push_back(Common::Path(i->getString("file")));
+		_soundFilenames.push_back(Common::Path(s.getString("file")));
 	}
 }
 
diff --git a/engines/ultima/ultima4/views/menu.cpp b/engines/ultima/ultima4/views/menu.cpp
index 976ff857468..4e8017c53f0 100644
--- a/engines/ultima/ultima4/views/menu.cpp
+++ b/engines/ultima/ultima4/views/menu.cpp
@@ -34,8 +34,8 @@ Menu::Menu() :
 }
 
 Menu::~Menu() {
-	for (MenuItemList::iterator i = _items.begin(); i != _items.end(); i++)
-		delete *i;
+	for (auto *i : _items)
+		delete i;
 }
 
 void Menu::removeAll() {
@@ -55,18 +55,18 @@ MenuItem *Menu::add(int id, MenuItem *item) {
 }
 
 void Menu::addShortcutKey(int id, int shortcutKey) {
-	for (MenuItemList::iterator i = _items.begin(); i != _items.end(); i++) {
-		if ((*i)->getId() == id) {
-			(*i)->addShortcutKey(shortcutKey);
+	for (auto *i : _items) {
+		if (i->getId() == id) {
+			i->addShortcutKey(shortcutKey);
 			break;
 		}
 	}
 }
 
 void Menu::setClosesMenu(int id) {
-	for (MenuItemList::iterator i = _items.begin(); i != _items.end(); i++) {
-		if ((*i)->getId() == id) {
-			(*i)->setClosesMenu(true);
+	for (auto *i : _items) {
+		if (i->getId() == id) {
+			i->setClosesMenu(true);
 			break;
 		}
 	}
@@ -93,9 +93,7 @@ void Menu::show(TextView *view) {
 	if (_title.size() > 0)
 		view->textAt(_titleX, _titleY, "%s", _title.c_str());
 
-	for (_current = _items.begin(); _current != _items.end(); _current++) {
-		MenuItem *mi = *_current;
-
+	for (auto *mi : _items) {
 		if (mi->isVisible()) {
 			Common::String text(mi->getText());
 
@@ -119,8 +117,8 @@ void Menu::show(TextView *view) {
 bool Menu::isVisible() {
 	bool visible = false;
 
-	for (_current = _items.begin(); _current != _items.end(); _current++) {
-		if ((*_current)->isVisible())
+	for (const auto *mi : _items) {
+		if (mi->isVisible())
 			visible = true;
 	}
 
@@ -159,8 +157,9 @@ void Menu::prev() {
 
 void Menu::highlight(MenuItem *item) {
 	// unhighlight all menu items first
-	for (_current = _items.begin(); _current != _items.end(); _current++)
-		(*_current)->setHighlighted(false);
+	for (auto *mi : _items) {
+		mi->setHighlighted(false);
+	}
 	if (item)
 		item->setHighlighted(true);
 }
@@ -177,11 +176,12 @@ Menu::MenuItemList::iterator Menu::begin_visible() {
 	if (!isVisible())
 		return _items.end();
 
-	_current = _items.begin();
-	while (!(*_current)->isVisible() && _current != _items.end())
-		_current++;
+	for (Menu::MenuItemList::iterator it = _items.begin(); it != _items.end(); it++) {
+		if (!(*it)->isVisible())
+			return it;
+	}
 
-	return _current;
+	return _items.end();
 }
 
 void Menu::reset(bool highlightFirst) {
@@ -191,9 +191,9 @@ void Menu::reset(bool highlightFirst) {
 	_selected = begin_visible();
 
 	/* un-highlight and deselect each menu item */
-	for (_current = _items.begin(); _current != _items.end(); _current++) {
-		(*_current)->setHighlighted(false);
-		(*_current)->setSelected(false);
+	for (auto *mi : _items) {
+		mi->setHighlighted(false);
+		mi->setSelected(false);
 	}
 
 	/* highlight the first visible menu item */
@@ -209,17 +209,17 @@ Menu::MenuItemList::iterator Menu::getById(int id) {
 	if (id == -1)
 		return getCurrent();
 
-	for (_current = _items.begin(); _current != _items.end(); _current++) {
-		if ((*_current)->getId() == id)
-			return _current;
+	for (Menu::MenuItemList::iterator it = _items.begin(); it != _items.end(); it++) {
+		if ((*it)->getId() == id)
+			return it;
 	}
 	return _items.end();
 }
 
 MenuItem *Menu::getItemById(int id) {
-	_current = getById(id);
-	if (_current != _items.end())
-		return *_current;
+	Menu::MenuItemList::iterator it = getById(id);
+	if (it != _items.end())
+		return *it;
 
 	return nullptr;
 }
@@ -259,13 +259,13 @@ void Menu::activateItem(int id, MenuEvent::Type action) {
 }
 
 bool Menu::activateItemByShortcut(int key, MenuEvent::Type action) {
-	for (MenuItemList::iterator i = _items.begin(); i != _items.end(); ++i) {
-		const Std::set<int> &shortcuts = (*i)->getShortcutKeys();
+	for (auto *i : _items) {
+		const Std::set<int> &shortcuts = i->getShortcutKeys();
 		if (shortcuts.find(key) != shortcuts.end()) {
-			activateItem((*i)->getId(), action);
+			activateItem(i->getId(), action);
 			// if the selection doesn't close the menu, highlight the selection
-			if (!(*i)->getClosesMenu())
-				setCurrent((*i)->getId());
+			if (!i->getClosesMenu())
+				setCurrent(i->getId());
 			return true;
 		}
 	}
diff --git a/engines/ultima/ultima4/views/menu.h b/engines/ultima/ultima4/views/menu.h
index e57d94cbd9e..e64406abd0e 100644
--- a/engines/ultima/ultima4/views/menu.h
+++ b/engines/ultima/ultima4/views/menu.h
@@ -189,7 +189,6 @@ public:
 
 private:
 	MenuItemList _items;
-	MenuItemList::iterator _current;
 	MenuItemList::iterator _selected;
 	bool _closed;
 	Common::String _title;
diff --git a/engines/ultima/ultima4/views/stats.cpp b/engines/ultima/ultima4/views/stats.cpp
index 79f85455da1..694bd24f0b2 100644
--- a/engines/ultima/ultima4/views/stats.cpp
+++ b/engines/ultima/ultima4/views/stats.cpp
@@ -353,15 +353,14 @@ void StatsArea::showItems() {
 void StatsArea::showReagents(bool active) {
 	setTitle("Reagents");
 
-	Menu::MenuItemList::iterator i;
 	int line = 0,
 	    r = REAG_ASH;
 	Common::String shortcut("A");
 
 	_reagentsMixMenu.show(&_mainArea);
 
-	for (i = _reagentsMixMenu.begin(); i != _reagentsMixMenu.end(); i++, r++) {
-		if ((*i)->isVisible()) {
+	for (const auto *item : _reagentsMixMenu) {
+		if (item->isVisible()) {
 			// Insert the reagent menu item shortcut character
 			shortcut.setChar('A' + r, 0);
 			if (active)
@@ -369,6 +368,7 @@ void StatsArea::showReagents(bool active) {
 			else
 				_mainArea.textAt(0, line++, "%s", shortcut.c_str());
 		}
+		r++;
 	}
 }
 
@@ -394,15 +394,15 @@ void StatsArea::showMixtures() {
 }
 
 void StatsArea::resetReagentsMenu() {
-	Menu::MenuItemList::iterator current;
-	int i = 0,
-	    row = 0;
+	int i = 0, row = 0;
 
-	for (current = _reagentsMixMenu.begin(); current != _reagentsMixMenu.end(); current++) {
+	for (auto *item : _reagentsMixMenu) {
 		if (g_ultima->_saveGame->_reagents[i++] > 0) {
-			(*current)->setVisible(true);
-			(*current)->setY(row++);
-		} else (*current)->setVisible(false);
+			item->setVisible(true);
+			item->setY(row++);
+		} else {
+			item->setVisible(false);
+		}
 	}
 
 	_reagentsMixMenu.reset(false);
diff --git a/engines/ultima/ultima8/audio/audio_process.cpp b/engines/ultima/ultima8/audio/audio_process.cpp
index c29deb5e112..60349613132 100644
--- a/engines/ultima/ultima8/audio/audio_process.cpp
+++ b/engines/ultima/ultima8/audio/audio_process.cpp
@@ -154,18 +154,17 @@ void AudioProcess::saveData(Common::WriteStream *ws) {
 
 	ws->writeByte(static_cast<uint8>(_sampleInfo.size()));
 
-	Std::list<SampleInfo>::iterator it;
-	for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
-		ws->writeUint16LE(it->_sfxNum);
-		ws->writeUint16LE(it->_priority);
-		ws->writeUint16LE(it->_objId);
-		ws->writeUint16LE(it->_loops);
-		ws->writeUint32LE(it->_pitchShift);
-		ws->writeUint16LE(it->_volume);
-
-		if (it->_sfxNum == -1) { // Speech
-			ws->writeUint32LE(static_cast<uint32>(it->_barked.size()));
-			ws->write(it->_barked.c_str(), static_cast<uint32>(it->_barked.size()));
+	for (const auto &si : _sampleInfo) {
+		ws->writeUint16LE(si._sfxNum);
+		ws->writeUint16LE(si._priority);
+		ws->writeUint16LE(si._objId);
+		ws->writeUint16LE(si._loops);
+		ws->writeUint32LE(si._pitchShift);
+		ws->writeUint16LE(si._volume);
+
+		if (si._sfxNum == -1) { // Speech
+			ws->writeUint32LE(static_cast<uint32>(si._barked.size()));
+			ws->write(si._barked.c_str(), static_cast<uint32>(si._barked.size()));
 		}
 	}
 }
@@ -286,9 +285,8 @@ void AudioProcess::stopSFX(int sfxNum, ObjId objId) {
 
 bool AudioProcess::isSFXPlaying(int sfxNum) {
 	AudioMixer *mixer = AudioMixer::get_instance();
-	Std::list<SampleInfo>::iterator it;
-	for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
-		if (it->_sfxNum == sfxNum && mixer->isPlaying(it->_channel))
+	for (const auto &si : _sampleInfo) {
+		if (si._sfxNum == sfxNum && mixer->isPlaying(si._channel))
 			return true;
 	}
 
@@ -297,9 +295,8 @@ bool AudioProcess::isSFXPlaying(int sfxNum) {
 
 bool AudioProcess::isSFXPlayingForObject(int sfxNum, ObjId objId) {
 	AudioMixer *mixer = AudioMixer::get_instance();
-	Std::list<SampleInfo>::iterator it;
-	for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
-		if ((it->_sfxNum == sfxNum || sfxNum == -1) && (objId == it->_objId) && mixer->isPlaying(it->_channel))
+	for (const auto &si : _sampleInfo) {
+		if ((si._sfxNum == sfxNum || sfxNum == -1) && (objId == si._objId) && mixer->isPlaying(si._channel))
 			return true;
 	}
 
@@ -308,28 +305,24 @@ bool AudioProcess::isSFXPlayingForObject(int sfxNum, ObjId objId) {
 
 void AudioProcess::setVolumeSFX(int sfxNum, uint8 volume) {
 	AudioMixer *mixer = AudioMixer::get_instance();
+	for (auto &si : _sampleInfo) {
+		if (si._sfxNum == sfxNum && si._sfxNum != -1) {
+			si._volume = volume;
 
-	Std::list<SampleInfo>::iterator it;
-	for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
-		if (it->_sfxNum == sfxNum && it->_sfxNum != -1) {
-			it->_volume = volume;
-
-			calculateSoundVolume(it->_objId, it->_calcVol, it->_balance);
-			mixer->setVolume(it->_channel, (it->_calcVol * it->_volume) / 256, it->_balance);
+			calculateSoundVolume(si._objId, si._calcVol, si._balance);
+			mixer->setVolume(si._channel, (si._calcVol * si._volume) / 256, si._balance);
 		}
 	}
 }
 
 void AudioProcess::setVolumeForObjectSFX(ObjId objId, int sfxNum, uint8 volume) {
 	AudioMixer *mixer = AudioMixer::get_instance();
+	for (auto &si : _sampleInfo) {
+		if (si._sfxNum == sfxNum && si._sfxNum != -1 && objId == si._objId) {
+			si._volume = volume;
 
-	Std::list<SampleInfo>::iterator it;
-	for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
-		if (it->_sfxNum == sfxNum && it->_sfxNum != -1 && objId == it->_objId) {
-			it->_volume = volume;
-
-			calculateSoundVolume(it->_objId, it->_calcVol, it->_balance);
-			mixer->setVolume(it->_channel, (it->_calcVol * it->_volume) / 256, it->_balance);
+			calculateSoundVolume(si._objId, si._calcVol, si._balance);
+			mixer->setVolume(si._channel, (si._calcVol * si._volume) / 256, si._balance);
 		}
 	}
 }
@@ -408,9 +401,9 @@ void AudioProcess::stopSpeech(const Std::string &barked, int shapenum, ObjId obj
 
 bool AudioProcess::isSpeechPlaying(const Std::string &barked, int shapeNum) {
 	Std::list<SampleInfo>::iterator it;
-	for (it = _sampleInfo.begin(); it != _sampleInfo.end(); ++it) {
-		if (it->_sfxNum == -1 && it->_priority == shapeNum &&
-		        it->_barked == barked) {
+	for (auto &si : _sampleInfo) {
+		if (si._sfxNum == -1 && si._priority == shapeNum &&
+		        si._barked == barked) {
 			return true;
 		}
 	}
diff --git a/engines/ultima/ultima8/audio/speech_flex.cpp b/engines/ultima/ultima8/audio/speech_flex.cpp
index 017a2c00924..bda3384add7 100644
--- a/engines/ultima/ultima8/audio/speech_flex.cpp
+++ b/engines/ultima/ultima8/audio/speech_flex.cpp
@@ -65,7 +65,6 @@ SpeechFlex::~SpeechFlex(void) {
 
 int SpeechFlex::getIndexForPhrase(const Std::string &phrase,
 								  uint32 start, uint32 &end) const {
-	Std::vector<Std::string>::const_iterator it;
 	int i = 1;
 
 	Std::string text = phrase.substr(start);
@@ -80,10 +79,10 @@ int SpeechFlex::getIndexForPhrase(const Std::string &phrase,
 
 	debug(6, "Looking for string: \"%s\"", text.c_str());
 
-	for (it = _phrases.begin(); it != _phrases.end(); ++it) {
-		if (!it->empty() && text.hasPrefixIgnoreCase(*it)) {
+	for (const auto &p : _phrases) {
+		if (!p.empty() && text.hasPrefixIgnoreCase(p)) {
 			debug(6, "Found: %d", i);
-			end = (*it).size() + start + pos1;
+			end = p.size() + start + pos1;
 			if (end >= start + pos2)
 				end = phrase.size();
 			return i;
diff --git a/engines/ultima/ultima8/conf/config_file_manager.cpp b/engines/ultima/ultima8/conf/config_file_manager.cpp
index a375c65d3e6..74b0bf11a81 100644
--- a/engines/ultima/ultima8/conf/config_file_manager.cpp
+++ b/engines/ultima/ultima8/conf/config_file_manager.cpp
@@ -65,9 +65,8 @@ bool ConfigFileManager::readConfigFile(const Common::Path &fname, const Std::str
 }
 
 void ConfigFileManager::clear() {
-	Std::vector<ConfigFile*>::iterator i;
-	for (i = _configFiles.begin(); i != _configFiles.end(); ++i) {
-		delete(*i);
+	for (auto *i : _configFiles) {
+		delete i;
 	}
 	_configFiles.clear();
 }
@@ -119,14 +118,11 @@ bool ConfigFileManager::get(const Std::string &category, const Std::string &sect
 
 Std::vector<Std::string> ConfigFileManager::listSections(const Std::string &category) const {
 	Std::vector<Std::string> sections;
-	Std::vector<ConfigFile*>::const_iterator i;
-
-	for ( i = _configFiles.begin(); i != _configFiles.end(); ++i) {
-		if (category.equalsIgnoreCase((*i)->_category)) {
-			Common::INIFile::SectionList sectionList = (*i)->_iniFile.getSections();
-			Common::INIFile::SectionList::const_iterator j;
-			for (j = sectionList.begin(); j != sectionList.end(); ++j) {
-				sections.push_back(j->name);
+	for (const auto *i : _configFiles) {
+		if (category.equalsIgnoreCase(i->_category)) {
+			Common::INIFile::SectionList sectionList = i->_iniFile.getSections();
+			for (const auto &j : sectionList) {
+				sections.push_back(j.name);
 			}
 		}
 	}
@@ -136,15 +132,11 @@ Std::vector<Std::string> ConfigFileManager::listSections(const Std::string &cate
 
 KeyMap ConfigFileManager::listKeyValues(const Std::string &category, const Std::string &section) const {
 	KeyMap values;
-	Std::vector<ConfigFile*>::const_iterator i;
-
-	for (i = _configFiles.begin(); i != _configFiles.end(); ++i) {
-		const ConfigFile *c = *i;
-		if (category.equalsIgnoreCase((*i)->_category) && c->_iniFile.hasSection(section)) {
+	for (const auto *c : _configFiles) {
+		if (category.equalsIgnoreCase(c->_category) && c->_iniFile.hasSection(section)) {
 			Common::INIFile::SectionKeyList keys = c->_iniFile.getKeys(section);
-			Common::INIFile::SectionKeyList::const_iterator j;
-			for (j = keys.begin(); j != keys.end(); ++j) {
-				values[j->key] = j->value;
+			for (const auto &j : keys) {
+				values[j.key] = j.value;
 			}
 		}
 	}
diff --git a/engines/ultima/ultima8/filesys/savegame.cpp b/engines/ultima/ultima8/filesys/savegame.cpp
index 4a7b44e764a..3da16b4b1f3 100644
--- a/engines/ultima/ultima8/filesys/savegame.cpp
+++ b/engines/ultima/ultima8/filesys/savegame.cpp
@@ -80,8 +80,8 @@ bool FileEntryArchive::hasFile(const Common::Path &path) const {
 
 int FileEntryArchive::listMembers(Common::ArchiveMemberList &list) const {
 	list.clear();
-	for (IndexMap::const_iterator it = _index.begin(); it != _index.end(); ++it)
-		list.push_back(Common::ArchiveMemberPtr(new Common::GenericArchiveMember(it->_key, *this)));
+	for (const auto &member : _index)
+		list.push_back(Common::ArchiveMemberPtr(new Common::GenericArchiveMember(member._key, *this)));
 
 	return list.size();
 }
diff --git a/engines/ultima/ultima8/filesys/u8_save_file.cpp b/engines/ultima/ultima8/filesys/u8_save_file.cpp
index cf7c8816e70..1568259bd50 100644
--- a/engines/ultima/ultima8/filesys/u8_save_file.cpp
+++ b/engines/ultima/ultima8/filesys/u8_save_file.cpp
@@ -75,8 +75,8 @@ bool U8SaveFile::hasFile(const Common::Path &path) const {
 
 int U8SaveFile::listMembers(Common::ArchiveMemberList& list) const {
 	list.clear();
-	for (U8SaveFileMap::const_iterator it = _map.begin(); it != _map.end(); ++it) {
-		list.push_back(Common::ArchiveMemberPtr(new Common::GenericArchiveMember(it->_key, *this)));
+	for (const auto &member : _map) {
+		list.push_back(Common::ArchiveMemberPtr(new Common::GenericArchiveMember(member._key, *this)));
 	}
 
 	return list.size();
diff --git a/engines/ultima/ultima8/games/game_data.cpp b/engines/ultima/ultima8/games/game_data.cpp
index 6b65d8bc8c2..8245ded9bab 100644
--- a/engines/ultima/ultima8/games/game_data.cpp
+++ b/engines/ultima/ultima8/games/game_data.cpp
@@ -369,12 +369,11 @@ void GameData::setupJPOverrides() {
 	ConfigFileManager *config = ConfigFileManager::get_instance();
 	FontManager *fontmanager = FontManager::get_instance();
 	KeyMap jpkeyvals;
-	KeyMap::const_iterator iter;
 
 	jpkeyvals = config->listKeyValues("language", "jpfonts");
-	for (iter = jpkeyvals.begin(); iter != jpkeyvals.end(); ++iter) {
-		int fontnum = atoi(iter->_key.c_str());
-		const Std::string &fontdesc = iter->_value;
+	for (const auto &i : jpkeyvals) {
+		int fontnum = atoi(i._key.c_str());
+		const Std::string &fontdesc = i._value;
 
 		Std::vector<Std::string> vals;
 		SplitString(fontdesc, ',', vals);
@@ -398,15 +397,14 @@ void GameData::setupTTFOverrides(const char *category, bool SJIS) {
 	ConfigFileManager *config = ConfigFileManager::get_instance();
 	FontManager *fontmanager = FontManager::get_instance();
 	KeyMap ttfkeyvals;
-	KeyMap::const_iterator iter;
 
 	bool overridefonts = ConfMan.getBool("font_override");
 	if (!overridefonts) return;
 
 	ttfkeyvals = config->listKeyValues(category, "fontoverride");
-	for (iter = ttfkeyvals.begin(); iter != ttfkeyvals.end(); ++iter) {
-		int fontnum = atoi(iter->_key.c_str());
-		const Std::string &fontdesc = iter->_value;
+	for (const auto &i : ttfkeyvals) {
+		int fontnum = atoi(i._key.c_str());
+		const Std::string &fontdesc = i._value;
 
 		Std::vector<Std::string> vals;
 		SplitString(fontdesc, ',', vals);
@@ -464,10 +462,7 @@ const NPCDat *GameData::getNPCData(uint16 entry) const {
 }
 
 const NPCDat *GameData::getNPCDataForShape(uint16 shapeno) const {
-	for (Std::vector<NPCDat *>::const_iterator it = _npcTable.begin();
-		 it != _npcTable.end();
-		 it++) {
-		const NPCDat *npcdat = *it;
+	for (const auto *npcdat : _npcTable) {
 		if (npcdat->getShapeNo() == shapeno)
 			return npcdat;
 	}
diff --git a/engines/ultima/ultima8/games/treasure_loader.cpp b/engines/ultima/ultima8/games/treasure_loader.cpp
index 20d35e6d173..826a2497ebb 100644
--- a/engines/ultima/ultima8/games/treasure_loader.cpp
+++ b/engines/ultima/ultima8/games/treasure_loader.cpp
@@ -40,18 +40,13 @@ void TreasureLoader::loadDefaults() {
 
 	// load default treasure types
 	lootkeyvals = config->listKeyValues("game", "treasure");
-	KeyMap::const_iterator defaultiter;
-
-	for (defaultiter = lootkeyvals.begin();
-	        defaultiter != lootkeyvals.end(); ++defaultiter) {
+	for (const auto &i : lootkeyvals) {
 		TreasureInfo ti;
-		const Std::string &key = defaultiter->_key;
-		const Std::string &val = defaultiter->_value;
-		bool ok = internalParse(val, ti, true);
+		bool ok = internalParse(i._value, ti, true);
 		if (ok) {
-			_defaultTreasure[key] = ti;
+			_defaultTreasure[i._key] = ti;
 		} else {
-			warning("Failed to parse treasure type '%s': %s", key.c_str(), val.c_str());
+			warning("Failed to parse treasure type '%s': %s", i._key.c_str(), i._value.c_str());
 		}
 	}
 }
diff --git a/engines/ultima/ultima8/gfx/fonts/font.cpp b/engines/ultima/ultima8/gfx/fonts/font.cpp
index 96aaa231373..98d42530864 100644
--- a/engines/ultima/ultima8/gfx/fonts/font.cpp
+++ b/engines/ultima/ultima8/gfx/fonts/font.cpp
@@ -341,21 +341,20 @@ Std::list<PositionedText> typesetText(Font *font,
 	totalheight += font->getHeight();
 
 	// fixup x coordinates of lines
-	Std::list<PositionedText>::iterator lineiter;
-	for (lineiter = lines.begin(); lineiter != lines.end(); ++lineiter) {
+	for (auto &l : lines) {
 		switch (align) {
 		case Font::TEXT_LEFT:
 			break;
 		case Font::TEXT_RIGHT:
-			lineiter->_dims.moveTo(totalwidth - lineiter->_dims.width(), lineiter->_dims.top);
+			l._dims.moveTo(totalwidth - l._dims.width(), l._dims.top);
 			break;
 		case Font::TEXT_CENTER:
-			lineiter->_dims.moveTo((totalwidth - lineiter->_dims.width()) / 2, lineiter->_dims.top);
+			l._dims.moveTo((totalwidth - l._dims.width()) / 2, l._dims.top);
 			break;
 		}
 
-		debugC(kDebugGraphics, "%d, %d, %d, %d: %s", lineiter->_dims.left, lineiter->_dims.top,
-			lineiter->_dims.width(), lineiter->_dims.height(), lineiter->_text.c_str());
+		debugC(kDebugGraphics, "%d, %d, %d, %d: %s", l._dims.left, l._dims.top,
+			l._dims.width(), l._dims.height(), l._text.c_str());
 	}
 
 	resultwidth = totalwidth;
diff --git a/engines/ultima/ultima8/gfx/fonts/font_manager.cpp b/engines/ultima/ultima8/gfx/fonts/font_manager.cpp
index 263c5ad760e..e81e939ed33 100644
--- a/engines/ultima/ultima8/gfx/fonts/font_manager.cpp
+++ b/engines/ultima/ultima8/gfx/fonts/font_manager.cpp
@@ -69,9 +69,8 @@ void FontManager::resetGameFonts() {
 		delete _ttFonts[i];
 	_ttFonts.clear();
 
-	TTFFonts::iterator iter;
-	for (iter = _ttfFonts.begin(); iter != _ttfFonts.end(); ++iter)
-		delete iter->_value;
+	for (auto &i : _ttfFonts)
+		delete i._value;
 	_ttfFonts.clear();}
 
 Font *FontManager::getGameFont(unsigned int fontnum,
diff --git a/engines/ultima/ultima8/gfx/fonts/font_shape_archive.cpp b/engines/ultima/ultima8/gfx/fonts/font_shape_archive.cpp
index a3bce7eb843..99cd8152194 100644
--- a/engines/ultima/ultima8/gfx/fonts/font_shape_archive.cpp
+++ b/engines/ultima/ultima8/gfx/fonts/font_shape_archive.cpp
@@ -64,11 +64,9 @@ void FontShapeArchive::setHVLeads() {
 	ConfigFileManager *config = ConfigFileManager::get_instance();
 
 	KeyMap leadkeyvals = config->listKeyValues("game", "fontleads");
-	KeyMap::const_iterator iter;
-
-	for (iter = leadkeyvals.begin(); iter != leadkeyvals.end(); ++iter) {
-		int fontnum = atoi(iter->_key.c_str());
-		Std::string leaddesc = iter->_value;
+	for (const auto &i : leadkeyvals) {
+		int fontnum = atoi(i._key.c_str());
+		Std::string leaddesc = i._value;
 
 		Std::vector<Std::string> vals;
 		SplitString(leaddesc, ',', vals);
diff --git a/engines/ultima/ultima8/gfx/fonts/jp_rendered_text.cpp b/engines/ultima/ultima8/gfx/fonts/jp_rendered_text.cpp
index 3277d2d0227..432460c828f 100644
--- a/engines/ultima/ultima8/gfx/fonts/jp_rendered_text.cpp
+++ b/engines/ultima/ultima8/gfx/fonts/jp_rendered_text.cpp
@@ -53,34 +53,33 @@ void JPRenderedText::draw(RenderSurface *surface, int x, int y, bool /*destmaske
 	_font->setPalette(pal);
 
 	uint32 color = TEX32_PACK_RGB(0, 0, 0);
-	Std::list<PositionedText>::const_iterator iter;
 
-	for (iter = _lines.begin(); iter != _lines.end(); ++iter) {
-		int line_x = x + iter->_dims.left;
-		int line_y = y + iter->_dims.top;
+	for (const auto &line : _lines) {
+		int line_x = x + line._dims.left;
+		int line_y = y + line._dims.top;
 
-		size_t textsize = iter->_text.size();
+		size_t textsize = line._text.size();
 
 		for (size_t i = 0; i < textsize; ++i) {
-			uint16 sjis = iter->_text[i] & 0xFF;
+			uint16 sjis = line._text[i] & 0xFF;
 			if (sjis >= 0x80) {
-				uint16 t = iter->_text[++i] & 0xFF;
+				uint16 t = line._text[++i] & 0xFF;
 				sjis += (t << 8);
 			}
 			uint16 u8char = shiftjis_to_ultima8(sjis);
 			surface->Paint(_font, u8char, line_x, line_y);
 
-			if (i == iter->_cursor) {
+			if (i == line._cursor) {
 				surface->fill32(color, line_x, line_y - _font->getBaseline(),
-				                1, iter->_dims.height());
+				                1, line._dims.height());
 			}
 
 			line_x += (_font->getFrame(u8char))->_width - _font->getHlead();
 		}
 
-		if (iter->_cursor == textsize) {
+		if (line._cursor == textsize) {
 			surface->fill32(color, line_x, line_y - _font->getBaseline(),
-			                1, iter->_dims.height());
+			                1, line._dims.height());
 		}
 	}
 
@@ -100,16 +99,16 @@ void JPRenderedText::drawBlended(RenderSurface *surface, int x, int y,
 
 	Std::list<PositionedText>::const_iterator iter;
 
-	for (iter = _lines.begin(); iter != _lines.end(); ++iter) {
-		int line_x = x + iter->_dims.left;
-		int line_y = y + iter->_dims.top;
+	for (const auto &line : _lines) {
+		int line_x = x + line._dims.left;
+		int line_y = y + line._dims.top;
 
-		size_t textsize = iter->_text.size();
+		size_t textsize = line._text.size();
 
 		for (size_t i = 0; i < textsize; ++i) {
-			uint16 sjis = iter->_text[i] & 0xFF;
+			uint16 sjis = line._text[i] & 0xFF;
 			if (sjis >= 0x80) {
-				uint16 t = iter->_text[++i] & 0xFF;
+				uint16 t = line._text[++i] & 0xFF;
 				sjis += (t << 8);
 			}
 			uint16 u8char = shiftjis_to_ultima8(sjis);
diff --git a/engines/ultima/ultima8/gfx/fonts/shape_rendered_text.cpp b/engines/ultima/ultima8/gfx/fonts/shape_rendered_text.cpp
index 1a1fe4be3c2..c84aa1aa61e 100644
--- a/engines/ultima/ultima8/gfx/fonts/shape_rendered_text.cpp
+++ b/engines/ultima/ultima8/gfx/fonts/shape_rendered_text.cpp
@@ -49,27 +49,27 @@ void ShapeRenderedText::draw(RenderSurface *surface, int x, int y, bool /*destma
 
 	surface->BeginPainting();
 
-	for (iter = _lines.begin(); iter != _lines.end(); ++iter) {
-		int line_x = x + iter->_dims.left;
-		int line_y = y + iter->_dims.top;
+	for (const auto &line : _lines) {
+		int line_x = x + line._dims.left;
+		int line_y = y + line._dims.top;
 
-		size_t textsize = iter->_text.size();
+		size_t textsize = line._text.size();
 
 		for (size_t i = 0; i < textsize; ++i) {
-			surface->Paint(_font, _font->charToFrameNum(iter->_text[i]),
+			surface->Paint(_font, _font->charToFrameNum(line._text[i]),
 			               line_x, line_y);
 
-			if (i == iter->_cursor) {
+			if (i == line._cursor) {
 				surface->fill32(color, line_x, line_y - _font->getBaseline(),
-				                1, iter->_dims.height());
+				                1, line._dims.height());
 			}
 
-			line_x += _font->getWidth(iter->_text[i]) - _font->getHlead();
+			line_x += _font->getWidth(line._text[i]) - _font->getHlead();
 		}
 
-		if (iter->_cursor == textsize) {
+		if (line._cursor == textsize) {
 			surface->fill32(color, line_x, line_y - _font->getBaseline(),
-			                1, iter->_dims.height());
+			                1, line._dims.height());
 		}
 	}
 
@@ -82,17 +82,17 @@ void ShapeRenderedText::drawBlended(RenderSurface *surface, int x, int y,
 
 	Std::list<PositionedText>::const_iterator iter;
 
-	for (iter = _lines.begin(); iter != _lines.end(); ++iter) {
-		int line_x = x + iter->_dims.left;
-		int line_y = y + iter->_dims.top;
+	for (const auto &line : _lines) {
+		int line_x = x + line._dims.left;
+		int line_y = y + line._dims.top;
 
-		size_t textsize = iter->_text.size();
+		size_t textsize = line._text.size();
 
 		for (size_t i = 0; i < textsize; ++i) {
 			surface->PaintHighlight(_font,
-			                        static_cast<unsigned char>(iter->_text[i]),
+			                        static_cast<unsigned char>(line._text[i]),
 			                        line_x, line_y, false, false, col);
-			line_x += _font->getWidth(iter->_text[i]) - _font->getHlead();
+			line_x += _font->getWidth(line._text[i]) - _font->getHlead();
 		}
 
 	}
diff --git a/engines/ultima/ultima8/gfx/fonts/tt_font.cpp b/engines/ultima/ultima8/gfx/fonts/tt_font.cpp
index 51f193ce655..96a79786c7f 100644
--- a/engines/ultima/ultima8/gfx/fonts/tt_font.cpp
+++ b/engines/ultima/ultima8/gfx/fonts/tt_font.cpp
@@ -206,14 +206,13 @@ RenderedText *TTFont::renderText(const Std::string &text, unsigned int &remainin
 	Graphics::ManagedSurface *texture = new Graphics::ManagedSurface(resultWidth, resultHeight, _PF_RGBA);
 	uint32 *texBuf = (uint32 *)texture->getPixels();
 
-	Std::list<PositionedText>::const_iterator iter;
-	for (iter = lines.begin(); iter != lines.end(); ++iter) {
+	for (const auto &line : lines) {
 		// convert to unicode
 		Common::U32String unicodeText;
 		if (!_SJIS)
-			unicodeText = toUnicode<Traits>(iter->_text, _bullet);
+			unicodeText = toUnicode<Traits>(line._text, _bullet);
 		else
-			unicodeText = toUnicode<SJISTraits>(iter->_text, _bullet);
+			unicodeText = toUnicode<SJISTraits>(line._text, _bullet);
 
 		// Create a surface and render the text
 		Graphics::ManagedSurface textSurf;
@@ -231,16 +230,16 @@ RenderedText *TTFont::renderText(const Std::string &text, unsigned int &remainin
 
 		// Add border within radius. Pixels on the edge are alpha blended if antialiased
 		if (_borderSize > 0) {
-			addTextBorder(textSurf, texBuf, iter->_dims, resultWidth, resultHeight, borderColor);
+			addTextBorder(textSurf, texBuf, line._dims, resultWidth, resultHeight, borderColor);
 		}
 
 		// render the text surface into our texture buffer
 		for (int y = 0; y < textSurf.h; y++) {
 			const byte *surfrow = (const byte *)textSurf.getBasePtr(0, y);
 
-			int ty = iter->_dims.top + y + _borderSize;
+			int ty = line._dims.top + y + _borderSize;
 			for (int x = 0; x < textSurf.w; x++) {
-				int tx = iter->_dims.left + x + _borderSize;
+				int tx = line._dims.left + x + _borderSize;
 				if (_antiAliased) {
 					uint32 sColor = *((const uint32 *)(surfrow + x * 4));
 					uint8 sR, sG, sB, sA;
@@ -273,15 +272,15 @@ RenderedText *TTFont::renderText(const Std::string &text, unsigned int &remainin
 			}
 		}
 
-		if (iter->_cursor != Std::string::npos) {
-			assert(iter->_cursor <= iter->_text.size());
-			unicodeText = unicodeText.substr(0, iter->_cursor);
+		if (line._cursor != Std::string::npos) {
+			assert(line._cursor <= line._text.size());
+			unicodeText = unicodeText.substr(0, line._cursor);
 
 			int w = _ttfFont->getStringWidth(unicodeText);
 
-			for (int y = 0; y < iter->_dims.height(); y++) {
-				int tx = iter->_dims.left + w + _borderSize;
-				int ty = iter->_dims.top + y;
+			for (int y = 0; y < line._dims.height(); y++) {
+				int tx = line._dims.left + w + _borderSize;
+				int ty = line._dims.top + y;
 				texBuf[ty * resultWidth + tx] = borderColor;
 			}
 		}
diff --git a/engines/ultima/ultima8/gfx/type_flags.cpp b/engines/ultima/ultima8/gfx/type_flags.cpp
index ad68d09fe9f..e0d2ccf9db1 100644
--- a/engines/ultima/ultima8/gfx/type_flags.cpp
+++ b/engines/ultima/ultima8/gfx/type_flags.cpp
@@ -184,9 +184,7 @@ void TypeFlags::loadWeaponInfo() {
 	Std::vector<Std::string> weaponkeys;
 	Std::string category = "weapons";
 	weaponkeys = config->listSections(category);
-	for (Std::vector<Std::string>::const_iterator iter = weaponkeys.begin();
-	        iter != weaponkeys.end(); ++iter) {
-		const Std::string &section = *iter;
+	for (const auto &section : weaponkeys) {
 		WeaponInfo *wi = new WeaponInfo;
 
 		int val = 0;
@@ -306,9 +304,7 @@ void TypeFlags::loadArmourInfo() {
 	Std::vector<Std::string> armourkeys;
 	Std::string category = "armour";
 	armourkeys = config->listSections(category);
-	for (Std::vector<Std::string>::const_iterator iter = armourkeys.begin();
-	        iter != armourkeys.end(); ++iter) {
-		const Std::string &section = *iter;
+	for (const auto &section : armourkeys) {
 		ArmourInfo ai;
 
 		int val;
@@ -364,9 +360,7 @@ void TypeFlags::loadMonsterInfo() {
 	Std::vector<Std::string> monsterkeys;
 	Std::string category = "monsters";
 	monsterkeys = config->listSections(category);
-	for (Std::vector<Std::string>::const_iterator iter = monsterkeys.begin();
-	        iter != monsterkeys.end(); ++iter) {
-		const Std::string section = *iter;
+	for (const auto &section : monsterkeys) {
 		MonsterInfo *mi = new MonsterInfo;
 
 		int val;
diff --git a/engines/ultima/ultima8/gumps/ask_gump.cpp b/engines/ultima/ultima8/gumps/ask_gump.cpp
index 84c333d69e5..e90fe1b958f 100644
--- a/engines/ultima/ultima8/gumps/ask_gump.cpp
+++ b/engines/ultima/ultima8/gumps/ask_gump.cpp
@@ -124,11 +124,12 @@ bool AskGump::loadData(Common::ReadStream *rs, uint32 version) {
 
 		ButtonWidget *child = nullptr;
 
-		Std::list<Gump *>::iterator it;
-		for (it = _children.begin(); it != _children.end(); ++it) {
-			if ((*it)->GetIndex() != (int)i) continue;
-			child = dynamic_cast<ButtonWidget *>(*it);
-			if (!child) continue;
+		for (auto *g : _children) {
+			if (g->GetIndex() != (int)i)
+				continue;
+			child = dynamic_cast<ButtonWidget *>(g);
+			if (!child)
+				continue;
 		}
 
 		if (!child) return false;
diff --git a/engines/ultima/ultima8/gumps/container_gump.cpp b/engines/ultima/ultima8/gumps/container_gump.cpp
index 8b162d0083e..a60f0b3022b 100644
--- a/engines/ultima/ultima8/gumps/container_gump.cpp
+++ b/engines/ultima/ultima8/gumps/container_gump.cpp
@@ -72,10 +72,8 @@ void ContainerGump::InitGump(Gump *newparent, bool take_focus) {
 
 	if (!c) return; // Container gone!?
 
-	Std::list<Item *> &contents = c->_contents;
-	Std::list<Item *>::iterator iter;
-	for (iter = contents.begin(); iter != contents.end(); ++iter) {
-		(*iter)->enterFastArea();
+	for (auto *item : c->_contents) {
+		item->enterFastArea();
 	}
 
 
@@ -93,11 +91,7 @@ void ContainerGump::run() {
 		return;
 	}
 
-	Std::list<Item *> &contents = c->_contents;
-	Std::list<Item *>::iterator iter;
-	for (iter = contents.begin(); iter != contents.end(); ++iter) {
-		Item *item = *iter;
-
+	for (auto *item : c->_contents) {
 		int32 itemx, itemy;
 		item->getGumpLocation(itemx, itemy);
 
@@ -166,15 +160,12 @@ void ContainerGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scale
 		return;
 	}
 
-	Std::list<Item *> &contents = c->_contents;
 	int32 gameframeno = Kernel::get_instance()->getFrameNum();
 
 	//!! TODO: check these painting commands (flipped? translucent?)
 	bool paintEditorItems = Ultima8Engine::get_instance()->isPaintEditorItems();
 
-	Std::list<Item *>::iterator iter;
-	for (iter = contents.begin(); iter != contents.end(); ++iter) {
-		Item *item = *iter;
+	for (auto *item : c->_contents) {
 		item->setupLerp(gameframeno);
 
 		if (!paintEditorItems && item->getShapeInfo()->is_editor())
diff --git a/engines/ultima/ultima8/gumps/cru_credits_gump.cpp b/engines/ultima/ultima8/gumps/cru_credits_gump.cpp
index cf0a51c1f80..2ddc4c621bf 100644
--- a/engines/ultima/ultima8/gumps/cru_credits_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_credits_gump.cpp
@@ -110,8 +110,8 @@ CruCreditsGump::CruCreditsGump(Common::SeekableReadStream *txtrs,
 CruCreditsGump::~CruCreditsGump() {
 	delete _background;
 
-	for (Common::Array<RenderedText *>::iterator iter = _currentLines.begin(); iter != _currentLines.end(); iter++) {
-		delete *iter;
+	for (auto *line : _currentLines) {
+		delete line;
 	}
 }
 
@@ -154,9 +154,8 @@ void CruCreditsGump::run() {
 	}
 
 	_nextScreenStart += _screens[_screenNo]._delay;
-	for (Common::Array<RenderedText *>::iterator iter = _currentLines.begin();
-		 iter != _currentLines.end(); iter++) {
-		delete *iter;
+	for (auto *line : _currentLines) {
+		delete line;
 	}
 	_currentLines.clear();
 
@@ -173,17 +172,16 @@ void CruCreditsGump::run() {
 	if (pal && nameshapefont)
 		nameshapefont->setPalette(pal);
 
-	for (Common::Array<CredLine>::const_iterator iter = lines.begin();
-		 iter != lines.end(); iter++) {
-		Font *linefont = (iter->_lineType == kCredTitle) ? titlefont : namefont;
+	for (const auto &line : lines) {
+		Font *linefont = (line._lineType == kCredTitle) ? titlefont : namefont;
 		if (!linefont) {
 			// shouldn't happen.. just to be sure?
-			warning("can't render credits line type %d, font is null", iter->_lineType);
+			warning("can't render credits line type %d, font is null", line._lineType);
 			break;
 		}
 
 		unsigned int remaining;
-		RenderedText *rendered = linefont->renderText(iter->_text, remaining, 640, 0, Font::TEXT_CENTER);
+		RenderedText *rendered = linefont->renderText(line._text, remaining, 640, 0, Font::TEXT_CENTER);
 		_currentLines.push_back(rendered);
 	}
 }
@@ -203,9 +201,8 @@ void CruCreditsGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scal
 	int total = nlines * (height + vlead);
 	int yoffset = 240 - total / 2;
 
-	for (Common::Array<RenderedText *>::iterator iter = _currentLines.begin();
-		 iter != _currentLines.end(); iter++) {
-		(*iter)->draw(surf, 0, yoffset);
+	for (auto *line : _currentLines) {
+		line->draw(surf, 0, yoffset);
 		yoffset += (height + vlead);
 	}
 }
diff --git a/engines/ultima/ultima8/gumps/cru_pickup_area_gump.cpp b/engines/ultima/ultima8/gumps/cru_pickup_area_gump.cpp
index 9b63ed048ae..aa9cbbc9bbc 100644
--- a/engines/ultima/ultima8/gumps/cru_pickup_area_gump.cpp
+++ b/engines/ultima/ultima8/gumps/cru_pickup_area_gump.cpp
@@ -59,9 +59,8 @@ void CruPickupAreaGump::addPickup(const Item *item, bool showCount) {
 	// or an existing gump to recycle if we have one already
 	// for that shape
 	int32 maxy = PICKUP_GUMP_GAP;
-	Std::list<Gump *>::iterator it;
-	for (it = _children.begin(); it != _children.end(); it++) {
-		CruPickupGump *pug = dynamic_cast<CruPickupGump *>(*it);
+	for (auto *i : _children) {
+		CruPickupGump *pug = dynamic_cast<CruPickupGump *>(i);
 		if (!pug)
 			continue;
 		if (pug->getShapeNo() == shapeno) {
diff --git a/engines/ultima/ultima8/gumps/desktop_gump.cpp b/engines/ultima/ultima8/gumps/desktop_gump.cpp
index 421022ff531..b96b076df7a 100644
--- a/engines/ultima/ultima8/gumps/desktop_gump.cpp
+++ b/engines/ultima/ultima8/gumps/desktop_gump.cpp
@@ -48,13 +48,7 @@ void DesktopGump::PaintThis(RenderSurface *surf, int32 lerp_factor, bool scaled)
 }
 
 void DesktopGump::PaintChildren(RenderSurface *surf, int32 lerp_factor, bool scaled) {
-	// Iterate all children
-	Std::list<Gump *>::iterator it = _children.begin();
-	Std::list<Gump *>::iterator end = _children.end();
-
-	while (it != end) {
-		Gump *g = *it;
-
+	for (auto *g : _children) {
 		// Paint if not closing
 		if (!g->IsClosing()) {
 			// If background blanking on modal is enabled...
@@ -65,8 +59,6 @@ void DesktopGump::PaintChildren(RenderSurface *surf, int32 lerp_factor, bool sca
 
 			g->Paint(surf, lerp_factor, scaled);
 		}
-
-		++it;
 	}
 }
 
diff --git a/engines/ultima/ultima8/gumps/gump.cpp b/engines/ultima/ultima8/gumps/gump.cpp
index 7c7345b76de..c4391b9bc76 100644
--- a/engines/ultima/ultima8/gumps/gump.cpp
+++ b/engines/ultima/ultima8/gumps/gump.cpp
@@ -57,12 +57,7 @@ Gump::~Gump() {
 	_focusChild = nullptr;
 
 	// Delete all children
-	Std::list<Gump *>::iterator it = _children.begin();
-	Std::list<Gump *>::iterator end = _children.end();
-
-	while (it != end) {
-		Gump *g = *it;
-		it = _children.erase(it);
+	for (auto *g : _children) {
 		delete g;
 	}
 }
@@ -260,17 +255,10 @@ void Gump::PaintThis(RenderSurface *surf, int32 /*lerp_factor*/, bool /*scaled*/
 }
 
 void Gump::PaintChildren(RenderSurface *surf, int32 lerp_factor, bool scaled) {
-	// Iterate all children
-	Std::list<Gump *>::iterator it = _children.begin();
-	Std::list<Gump *>::iterator end = _children.end();
-
-	while (it != end) {
-		Gump *g = *it;
+	for (auto *g : _children) {
 		// Paint if not closing
 		if (!(g->_flags & FLAG_CLOSING))
 			g->Paint(surf, lerp_factor, scaled);
-
-		++it;
 	}
 }
 
@@ -531,13 +519,7 @@ Gump *Gump::FindGump(const FindGumpPredicate predicate, bool recursive) {
 	if (predicate(this))
 		return this;
 
-	// Iterate all children
-	Std::list<Gump *>::iterator  it = _children.begin();
-	Std::list<Gump *>::iterator  end = _children.end();
-
-	for (; it != end; ++it) {
-		Gump *g = *it;
-
+	for (auto *g : _children) {
 		// Not if closing
 		if (g->_flags & FLAG_CLOSING)
 			continue;
@@ -550,20 +532,15 @@ Gump *Gump::FindGump(const FindGumpPredicate predicate, bool recursive) {
 		return nullptr;
 
 	// Recursive Iterate all children
-	it = _children.begin();
-	end = _children.end();
-
-	for (; it != end; ++it) {
-		Gump *g = (*it);
-
+	for (auto *g : _children) {
 		// Not if closing
 		if (g->_flags & FLAG_CLOSING)
 			continue;
 
-		g = g->FindGump(predicate, recursive);
+		Gump *match = g->FindGump(predicate, recursive);
 
-		if (g)
-			return g;
+		if (match)
+			return match;
 	}
 
 	return nullptr;
@@ -814,18 +791,19 @@ void Gump::saveData(Common::WriteStream *ws) {
 	ws->writeUint32LE(_processResult);
 
 	unsigned int childcount = 0;
-	Std::list<Gump *>::iterator it;
-	for (it = _children.begin(); it != _children.end(); ++it) {
-		if (!(*it)->mustSave(false)) continue;
+	for (auto *g : _children) {
+		if (!g->mustSave(false))
+			continue;
 		childcount++;
 	}
 
 	// write children:
 	ws->writeUint32LE(childcount);
-	for (it = _children.begin(); it != _children.end(); ++it) {
-		if (!(*it)->mustSave(false)) continue;
+	for (auto *g : _children) {
+		if (!g->mustSave(false))
+			continue;
 
-		ObjectManager::get_instance()->saveObject(ws, *it);
+		ObjectManager::get_instance()->saveObject(ws, g);
 	}
 }
 
diff --git a/engines/ultima/ultima8/gumps/minimap_gump.cpp b/engines/ultima/ultima8/gumps/minimap_gump.cpp
index 931943f573c..2f94134a841 100644
--- a/engines/ultima/ultima8/gumps/minimap_gump.cpp
+++ b/engines/ultima/ultima8/gumps/minimap_gump.cpp
@@ -50,9 +50,8 @@ MiniMapGump::MiniMapGump() : ResizableGump(), _minimaps(), _ax(0), _ay(0) {
 }
 
 MiniMapGump::~MiniMapGump(void) {
-	Common::HashMap<uint32, MiniMap *>::iterator iter;
-	for (iter = _minimaps.begin(); iter != _minimaps.end(); ++iter) {
-		delete iter->_value;
+	for (auto &i : _minimaps) {
+		delete i._value;
 	}
 }
 
@@ -102,9 +101,8 @@ void MiniMapGump::generate() {
 }
 
 void MiniMapGump::clear() {
-	Common::HashMap<uint32, MiniMap *>::iterator iter;
-	for (iter = _minimaps.begin(); iter != _minimaps.end(); ++iter) {
-		delete iter->_value;
+	for (auto &i : _minimaps) {
+		delete i._value;
 	}
 	_minimaps.clear();
 }
@@ -208,10 +206,9 @@ void MiniMapGump::saveData(Common::WriteStream *ws) {
 	Gump::saveData(ws);
 
 	ws->writeUint32LE(static_cast<uint32>(_minimaps.size()));
-	Common::HashMap<uint32, MiniMap *>::const_iterator iter;
-	for (iter = _minimaps.begin(); iter != _minimaps.end(); ++iter) {
-		const MiniMap *minimap = iter->_value;
-		ws->writeUint32LE(iter->_key);
+	for (const auto &i : _minimaps) {
+		const MiniMap *minimap = i._value;
+		ws->writeUint32LE(i._key);
 		minimap->save(ws);
 	}
 }
diff --git a/engines/ultima/ultima8/gumps/paged_gump.cpp b/engines/ultima/ultima8/gumps/paged_gump.cpp
index 688a0813250..a28a2540b89 100644
--- a/engines/ultima/ultima8/gumps/paged_gump.cpp
+++ b/engines/ultima/ultima8/gumps/paged_gump.cpp
@@ -43,9 +43,8 @@ PagedGump::~PagedGump(void) {
 
 void PagedGump::Close(bool no_del) {
 	Mouse::get_instance()->popMouseCursor();
-	Std::vector<Gump *>::iterator iter;
-	for (iter = _gumps.begin(); iter != _gumps.end(); ++iter) {
-		(*iter)->Close(no_del); // CHECKME: no_del?
+	for (auto *g : _gumps) {
+		g->Close(no_del); // CHECKME: no_del?
 	}
 
 	ModalGump::Close(no_del);
diff --git a/engines/ultima/ultima8/gumps/paperdoll_gump.cpp b/engines/ultima/ultima8/gumps/paperdoll_gump.cpp
index 07d25b86c34..a003b82337b 100644
--- a/engines/ultima/ultima8/gumps/paperdoll_gump.cpp
+++ b/engines/ultima/ultima8/gumps/paperdoll_gump.cpp
@@ -122,11 +122,7 @@ void PaperdollGump::Close(bool no_del) {
 	Container *c = getContainer(_owner);
 	if (!c) return; // Container gone!?
 
-	Std::list<Item *> &contents = c->_contents;
-	Std::list<Item *>::iterator iter = contents.begin();
-	while (iter != contents.end()) {
-		Item *item = *iter;
-		++iter;
+	for (auto *item : c->_contents) {
 		item->leaveFastArea();  // Can destroy the item
 	}
 
diff --git a/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp b/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
index 959434d0f42..0401a3e9091 100644
--- a/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
+++ b/engines/ultima/ultima8/gumps/shape_viewer_gump.cpp
@@ -90,9 +90,9 @@ ShapeViewerGump::ShapeViewerGump(int x, int y, int width, int height,
 }
 
 ShapeViewerGump::~ShapeViewerGump() {
-	for (Common::Array<ShapeArchiveEntry>::iterator it = _archives.begin(); it != _archives.end(); it++) {
-		if (it->_disposeAfterUse == DisposeAfterUse::YES) {
-			delete it->_archive;
+	for (auto &entry : _archives) {
+		if (entry._disposeAfterUse == DisposeAfterUse::YES) {
+			delete entry._archive;
 		}
 	}
 }
diff --git a/engines/ultima/ultima8/gumps/weasel_dat.cpp b/engines/ultima/ultima8/gumps/weasel_dat.cpp
index 32eef699813..5e8c3fa8751 100644
--- a/engines/ultima/ultima8/gumps/weasel_dat.cpp
+++ b/engines/ultima/ultima8/gumps/weasel_dat.cpp
@@ -66,8 +66,8 @@ WeaselDat::WeaselDat(Common::ReadStream *rs) {
 
 uint16 WeaselDat::getNumOfType(WeaselType type) const {
 	int count = 0;
-	for (Std::vector<WeaselEntry>::const_iterator iter = _items.begin(); iter != _items.end(); iter++) {
-		if (iter->_type == type)
+	for (const auto &item : _items) {
+		if (item._type == type)
 			count++;
 	}
 	return count;
diff --git a/engines/ultima/ultima8/gumps/weasel_gump.cpp b/engines/ultima/ultima8/gumps/weasel_gump.cpp
index 7e8fb4bf11a..036f6265403 100644
--- a/engines/ultima/ultima8/gumps/weasel_gump.cpp
+++ b/engines/ultima/ultima8/gumps/weasel_gump.cpp
@@ -398,9 +398,8 @@ void WeaselGump::completePurchase() {
 	Item *item = av->getFirstItemWithShape(0x4ed, true);
 	if (item)
 		item->setQuality(_credits);
-	for (Std::vector<uint16>::const_iterator iter = _purchases.begin();
-		 iter != _purchases.end(); iter++) {
-		Item *newitem = ItemFactory::createItem(*iter, 0, 0, 0, 0, mapno, 0, true);
+	for (const auto &purchase : _purchases) {
+		Item *newitem = ItemFactory::createItem(purchase, 0, 0, 0, 0, mapno, 0, true);
 		av->addItemCru(newitem, false);
 	}
 	_state = kWeaselCompletedPurchase;
@@ -473,9 +472,8 @@ void WeaselGump::abortPurchase() {
 
 int WeaselGump::purchasedCount(uint16 shape) const {
 	int count = 0;
-	for (Std::vector<uint16>::const_iterator iter = _purchases.begin();
-		 iter != _purchases.end(); iter++) {
-		 if (*iter == shape)
+	for (const auto &purchase : _purchases) {
+		 if (purchase == shape)
 			 count++;
 	}
 	return count;
diff --git a/engines/ultima/ultima8/kernel/kernel.cpp b/engines/ultima/ultima8/kernel/kernel.cpp
index 749802dd880..f0cb37e0f3e 100644
--- a/engines/ultima/ultima8/kernel/kernel.cpp
+++ b/engines/ultima/ultima8/kernel/kernel.cpp
@@ -62,8 +62,7 @@ Kernel::~Kernel() {
 void Kernel::reset() {
 	debug(1, "Resetting Kernel...");
 
-	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		Process *p = *it;
+	for (auto *p : _processes) {
 		if (p->_flags & Process::PROC_TERM_DISPOSE && p != _runningProcess) {
 			delete p;
 		} else {
@@ -94,8 +93,8 @@ ProcId Kernel::assignPID(Process *proc) {
 
 ProcId Kernel::addProcess(Process *proc, bool dispose) {
 #if 0
-	for (ProcessIterator it = processes.begin(); it != processes.end(); ++it) {
-		if (*it == proc)
+	for (const auto *p : _processes) {
+		if (p == proc)
 			return 0;
 	}
 #endif
@@ -116,8 +115,8 @@ ProcId Kernel::addProcess(Process *proc, bool dispose) {
 
 ProcId Kernel::addProcessExec(Process *proc, bool dispose) {
 #if 0
-	for (ProcessIterator it = processes.begin(); it != processes.end(); ++it) {
-		if (*it == proc)
+	for (const auto *p : _processes) {
+		if (p == proc)
 			return 0;
 	}
 #endif
@@ -257,8 +256,7 @@ void Kernel::setNextProcess(Process *proc) {
 }
 
 Process *Kernel::getProcess(ProcId pid) {
-	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		Process *p = *it;
+	for (auto *p : _processes) {
 		if (p->_pid == pid)
 			return p;
 	}
@@ -273,22 +271,18 @@ void Kernel::kernelStats() {
 void Kernel::processTypes() {
 	g_debugger->debugPrintf("Current process types:\n");
 	Common::HashMap<Common::String, unsigned int> processtypes;
-	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		Process *p = *it;
+	for (const auto *p : _processes) {
 		processtypes[p->GetClassType()._className]++;
 	}
-	Common::HashMap<Common::String, unsigned int>::const_iterator iter;
-	for (iter = processtypes.begin(); iter != processtypes.end(); ++iter) {
-		g_debugger->debugPrintf("%s: %u\n", (*iter)._key.c_str(), (*iter)._value);
+	for (const auto &i : processtypes) {
+		g_debugger->debugPrintf("%s: %u\n", i._key.c_str(), i._value);
 	}
 }
 
 uint32 Kernel::getNumProcesses(ObjId objid, uint16 processtype) {
 	uint32 count = 0;
 
-	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		Process *p = *it;
-
+	for (const auto *p : _processes) {
 		// Don't count us, we are not really here
 		if (p->is_terminated()) continue;
 
@@ -301,9 +295,7 @@ uint32 Kernel::getNumProcesses(ObjId objid, uint16 processtype) {
 }
 
 Process *Kernel::findProcess(ObjId objid, uint16 processtype) {
-	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		Process *p = *it;
-
+	for (auto *p : _processes) {
 		// Don't count us, we are not really here
 		if (p->is_terminated()) continue;
 
@@ -318,9 +310,7 @@ Process *Kernel::findProcess(ObjId objid, uint16 processtype) {
 
 
 void Kernel::killProcesses(ObjId objid, uint16 processtype, bool fail) {
-	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		Process *p = *it;
-
+	for (auto *p : _processes) {
 		if (p->_itemNum != 0 && (objid == 0 || objid == p->_itemNum) &&
 		        (processtype == PROC_TYPE_ALL || processtype == p->_type) &&
 		        !(p->_flags & Process::PROC_TERMINATED) &&
@@ -334,9 +324,7 @@ void Kernel::killProcesses(ObjId objid, uint16 processtype, bool fail) {
 }
 
 void Kernel::killProcessesNotOfType(ObjId objid, uint16 processtype, bool fail) {
-	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		Process *p = *it;
-
+	for (auto *p : _processes) {
 		// * If objid is 0, terminate procs for all objects.
 		// * Never terminate procs with objid 0
 		if (p->_itemNum != 0 && (objid == 0 || objid == p->_itemNum) &&
@@ -371,9 +359,7 @@ void Kernel::killAllProcessesNotOfTypeExcludeCurrent(uint16 processtype, bool fa
 		}
 	}
 
-	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		Process *p = *it;
-
+	for (auto *p : _processes) {
 		// Don't kill the running process
 		if (procsToSave.contains(p->_pid))
 			continue;
@@ -390,9 +376,7 @@ void Kernel::killAllProcessesNotOfTypeExcludeCurrent(uint16 processtype, bool fa
 }
 
 bool Kernel::canSave() {
-	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		Process *p = *it;
-
+	for (const auto *p : _processes) {
 		if (!p->is_terminated() && p->_flags & Process::PROC_PREVENT_SAVE) {
 			return false;
 		}
@@ -405,8 +389,8 @@ void Kernel::save(Common::WriteStream *ws) {
 	ws->writeUint32LE(_tickNum);
 	_pIDs->save(ws);
 	ws->writeUint32LE(_processes.size());
-	for (ProcessIterator it = _processes.begin(); it != _processes.end(); ++it) {
-		const Std::string & classname = (*it)->GetClassType()._className; // virtual
+	for (auto *p : _processes) {
+		const Std::string & classname = p->GetClassType()._className; // virtual
 		assert(classname.size());
 
 		Common::HashMap<Common::String, ProcessLoadFunc>::iterator iter;
@@ -418,7 +402,7 @@ void Kernel::save(Common::WriteStream *ws) {
 
 		ws->writeUint16LE(classname.size());
 		ws->write(classname.c_str(), classname.size());
-		(*it)->saveData(ws);
+		p->saveData(ws);
 	}
 }
 
@@ -437,8 +421,7 @@ bool Kernel::load(Common::ReadStream *rs, uint32 version) {
 
 	// Integrity check for processes
 	Std::set<ProcId> procs;
-	for (Std::list<Process *>::const_iterator iter = _processes.begin(); iter != _processes.end(); iter++) {
-		const Process *p = *iter;
+	for (const auto *p : _processes) {
 		if (!_pIDs->isIDUsed(p->getPid())) {
 			warning("Process id %d exists but not marked used.  Corrupt save?", p->getPid());
 			return false;
diff --git a/engines/ultima/ultima8/kernel/object_manager.cpp b/engines/ultima/ultima8/kernel/object_manager.cpp
index 7493ed21577..933b4a360c6 100644
--- a/engines/ultima/ultima8/kernel/object_manager.cpp
+++ b/engines/ultima/ultima8/kernel/object_manager.cpp
@@ -141,9 +141,8 @@ void ObjectManager::objectTypes() {
 		objecttypes[o->GetClassType()._className]++;
 	}
 
-	Common::HashMap<Common::String, unsigned int>::const_iterator iter;
-	for (iter = objecttypes.begin(); iter != objecttypes.end(); ++iter) {
-		g_debugger->debugPrintf("%s: %u\n", (*iter)._key.c_str(), (*iter)._value);
+	for (const auto &i : objecttypes) {
+		g_debugger->debugPrintf("%s: %u\n", i._key.c_str(), i._value);
 	}
 }
 
diff --git a/engines/ultima/ultima8/kernel/process.cpp b/engines/ultima/ultima8/kernel/process.cpp
index e55141ad0ff..96d1999fffa 100644
--- a/engines/ultima/ultima8/kernel/process.cpp
+++ b/engines/ultima/ultima8/kernel/process.cpp
@@ -49,9 +49,8 @@ void Process::terminate() {
 	Kernel *kernel = Kernel::get_instance();
 
 	// wake up waiting processes
-	for (Std::vector<ProcId>::iterator i = _waiting.begin();
-	        i != _waiting.end(); ++i) {
-		Process *p = kernel->getProcess(*i);
+	for (const auto &pid : _waiting) {
+		Process *p = kernel->getProcess(pid);
 		if (p)
 			p->wakeUp(_result);
 	}
@@ -160,15 +159,14 @@ bool Process::loadData(Common::ReadStream *rs, uint32 version) {
 }
 
 bool Process::validateWaiters() const {
-	for (Std::vector<ProcId>::const_iterator i = _waiting.begin();
-			i != _waiting.end(); ++i) {
-		const Process *p = Kernel::get_instance()->getProcess(*i);
+	for (const auto &pid : _waiting) {
+		const Process *p = Kernel::get_instance()->getProcess(pid);
 		if (!p) {
 			// This can happen if a waiting process gets forcibly terminated.
-			warning("Invalid procid %d in waitlist for proc %d. Maybe a bug?", *i, _pid);
+			warning("Invalid procid %d in waitlist for proc %d. Maybe a bug?", pid, _pid);
 		} else if (!p->is_suspended()) {
 			// This should never happen.
-			warning("Procid %d in waitlist for proc %d but not marked suspended", *i, _pid);
+			warning("Procid %d in waitlist for proc %d but not marked suspended", pid, _pid);
 			return false;
 		}
 	}
diff --git a/engines/ultima/ultima8/misc/debugger.cpp b/engines/ultima/ultima8/misc/debugger.cpp
index c57af5f3322..460d17a98f3 100644
--- a/engines/ultima/ultima8/misc/debugger.cpp
+++ b/engines/ultima/ultima8/misc/debugger.cpp
@@ -304,13 +304,12 @@ bool Debugger::cmdListSFX(int argc, const char **argv) {
 		debugPrintf("Error: No AudioProcess\n");
 
 	} else {
-		Std::list<AudioProcess::SampleInfo>::const_iterator it;
-		for (it = ap->_sampleInfo.begin(); it != ap->_sampleInfo.end(); ++it) {
+		for (const auto &si : ap->_sampleInfo) {
 			debugPrintf("Sample: num %d, obj %d, loop %d, prio %d",
-				it->_sfxNum, it->_objId, it->_loops, it->_priority);
-			if (!it->_barked.empty()) {
+				si._sfxNum, si._objId, si._loops, si._priority);
+			if (!si._barked.empty()) {
 				debugPrintf(", speech: \"%s\"",
-					it->_barked.substr(it->_curSpeechStart, it->_curSpeechEnd - it->_curSpeechStart).c_str());
+					si._barked.substr(si._curSpeechStart, si._curSpeechEnd - si._curSpeechStart).c_str());
 			}
 			debugPrintf("\n");
 		}
@@ -838,9 +837,7 @@ bool Debugger::cmdListProcesses(int argc, const char **argv) {
 		} else {
 			debugPrintf("Processes:\n");
 		}
-		for (ProcessIterator it = kern->_processes.begin();
-			it != kern->_processes.end(); ++it) {
-			Process *p = *it;
+		for (const auto *p : kern->_processes) {
 			if (argc == 1 || p->_itemNum == item) {
 				debugPrintf("%s\n", p->dumpInfo().c_str());
 			}
@@ -993,9 +990,8 @@ bool Debugger::cmdListMarks(int argc, const char **argv) {
 	}
 
 	Common::sort(marks.begin(), marks.end());
-	Common::StringArray::const_iterator mit;
-	for (mit = marks.begin(); mit != marks.end(); ++mit) {
-		debugPrintf("%s\n", mit->c_str());
+	for (const auto &m : marks) {
+		debugPrintf("%s\n", m.c_str());
 	}
 
 	return true;
diff --git a/engines/ultima/ultima8/usecode/uc_machine.cpp b/engines/ultima/ultima8/usecode/uc_machine.cpp
index 2f0f7d591d0..cefd16c28b7 100644
--- a/engines/ultima/ultima8/usecode/uc_machine.cpp
+++ b/engines/ultima/ultima8/usecode/uc_machine.cpp
@@ -138,9 +138,8 @@ void UCMachine::reset() {
 	}
 
 	// clear strings, lists
-	Common::HashMap<uint16, UCList *>::iterator iter;
-	for (iter = _listHeap.begin(); iter != _listHeap.end(); ++iter)
-		delete(iter->_value);
+	for (auto &i : _listHeap)
+		delete i._value;
 	_listHeap.clear();
 	_stringHeap.clear();
 }
@@ -2263,29 +2262,27 @@ void UCMachine::usecodeStats() const {
 	g_debugger->debugPrintf("Usecode Machine memory stats:\n");
 	g_debugger->debugPrintf("Strings    : %u/65534\n", _stringHeap.size());
 #ifdef DUMPHEAP
-	Common::HashMap<uint16, Std::string>::const_iterator iter;
-	for (iter = _stringHeap.begin(); iter != _stringHeap.end(); ++iter)
-		g_debugger->debugPrintf("%d:%s\n", iter->_key << ":" << iter->_value.c_str());
+	for (const auto &i : _stringHeap)
+		g_debugger->debugPrintf("%d:%s\n", i._key << ":" << i._value.c_str());
 #endif
 	g_debugger->debugPrintf("Lists      : %u/65534\n", _listHeap.size());
 #ifdef DUMPHEAP
-	Common::HashMap<uint16, UCList *>::const_iterator iterl;
-	for (iterl = _listHeap.begin(); iterl != _listHeap.end(); ++iterl) {
-		if (!iterl->_value) {
-			g_debugger->debugPrintf("%d: <null>\n", iterl->_key);
+	for (const auto &l : _listHeap) {
+		if (!l._value) {
+			g_debugger->debugPrintf("%d: <null>\n", l._key);
 			continue;
 		}
-		if (iterl->_value->getElementSize() == 2) {
-			g_debugger->debugPrintf("%d:", iterl->_key);
+		if (l._value->getElementSize() == 2) {
+			g_debugger->debugPrintf("%d:", l._key);
 
-			for (unsigned int i = 0; i < iterl->_value->getSize(); ++i) {
+			for (unsigned int i = 0; i < l._value->getSize(); ++i) {
 				if (i > 0) g_debugger->debugPrintf(",");
-				g_debugger->debugPrintf("%d", iterl->_value->getuint16(i));
+				g_debugger->debugPrintf("%d", l._value->getuint16(i));
 			}
 			g_debugger->debugPrintf("\n");
 		} else {
 			g_debugger->debugPrintf("%d: %u elements of size %u\n",
-				iterl->_key, iterl->_value->getSize(), iterl->_value->getElementSize());
+				l._key, l._value->getSize(), l._value->getElementSize());
 		}
 	}
 #endif
@@ -2299,11 +2296,10 @@ void UCMachine::saveStrings(Common::WriteStream *ws) const {
 	_stringIDs->save(ws);
 	ws->writeUint32LE(static_cast<uint32>(_stringHeap.size()));
 
-	Common::HashMap<uint16, Std::string>::const_iterator iter;
-	for (iter = _stringHeap.begin(); iter != _stringHeap.end(); ++iter) {
-		ws->writeUint16LE((*iter)._key);
-		ws->writeUint32LE((*iter)._value.size());
-		ws->write((*iter)._value.c_str(), (*iter)._value.size());
+	for (const auto &i : _stringHeap) {
+		ws->writeUint16LE(i._key);
+		ws->writeUint32LE(i._value.size());
+		ws->write(i._value.c_str(), i._value.size());
 	}
 }
 
@@ -2311,10 +2307,9 @@ void UCMachine::saveLists(Common::WriteStream *ws) const {
 	_listIDs->save(ws);
 	ws->writeUint32LE(_listHeap.size());
 
-	Common::HashMap<uint16, UCList *>::const_iterator iter;
-	for (iter = _listHeap.begin(); iter != _listHeap.end(); ++iter) {
-		ws->writeUint16LE((*iter)._key);
-		(*iter)._value->save(ws);
+	for (const auto &i : _listHeap) {
+		ws->writeUint16LE(i._key);
+		i._value->save(ws);
 	}
 }
 
diff --git a/engines/ultima/ultima8/usecode/uc_process.cpp b/engines/ultima/ultima8/usecode/uc_process.cpp
index 04161043be4..8c06f75a7be 100644
--- a/engines/ultima/ultima8/usecode/uc_process.cpp
+++ b/engines/ultima/ultima8/usecode/uc_process.cpp
@@ -118,9 +118,9 @@ void UCProcess::freeOnTerminate(uint16 index, int type) {
 void UCProcess::terminate() {
 	Std::list<Common::Pair<uint16, int> >::iterator i;
 
-	for (i = _freeOnTerminate.begin(); i != _freeOnTerminate.end(); ++i) {
-		uint16 index = (*i).first;
-		int typeNum = (*i).second;
+	for (auto &i : _freeOnTerminate) {
+		uint16 index = i.first;
+		int typeNum = i.second;
 
 		switch (typeNum) {
 		case 1: // string
@@ -161,10 +161,9 @@ void UCProcess::saveData(Common::WriteStream *ws) {
 	ws->writeUint16LE(_ip);
 	ws->writeUint32LE(_temp32);
 	ws->writeUint32LE(static_cast<uint32>(_freeOnTerminate.size()));
-	Std::list<Common::Pair<uint16, int> >::iterator iter;
-	for (iter = _freeOnTerminate.begin(); iter != _freeOnTerminate.end(); ++iter) {
-		ws->writeUint16LE(iter->first);
-		ws->writeUint32LE(static_cast<uint32>(iter->second));
+	for (const auto &i : _freeOnTerminate) {
+		ws->writeUint16LE(i.first);
+		ws->writeUint32LE(static_cast<uint32>(i.second));
 	}
 	_stack.save(ws);
 }
diff --git a/engines/ultima/ultima8/world/actors/actor.cpp b/engines/ultima/ultima8/world/actors/actor.cpp
index a2a4ec8a03a..e64c97f8395 100644
--- a/engines/ultima/ultima8/world/actors/actor.cpp
+++ b/engines/ultima/ultima8/world/actors/actor.cpp
@@ -89,10 +89,9 @@ uint16 Actor::assignObjId() {
 	if (_objId == 0xFFFF)
 		_objId = ObjectManager::get_instance()->assignActorObjId(this);
 
-	Std::list<Item *>::iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		(*iter)->assignObjId();
-		(*iter)->setParent(_objId);
+	for (auto *i : _contents) {
+		i->assignObjId();
+		i->setParent(_objId);
 	}
 
 	return _objId;
@@ -403,11 +402,11 @@ bool Actor::setEquip(Item *item, bool checkwghtvol) {
 
 	// now check 'equipment slots'
 	// we can have one item of each equipment type, plus one backpack
-	for (Std::list<Item *>::const_iterator iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		if ((*iter)->getObjId() == item->getObjId()) continue;
+	for (const auto *i : _contents) {
+		if (i->getObjId() == item->getObjId()) continue;
 
-		uint32 cet = (*iter)->getShapeInfo()->_equipType;
-		bool cbackpack = ((*iter)->getShape() == BACKPACK_SHAPE);
+		uint32 cet = i->getShapeInfo()->_equipType;
+		bool cbackpack = (i->getShape() == BACKPACK_SHAPE);
 
 		// already have an item with the same equiptype
 		if (cet == equiptype || (cbackpack && backpack)) return false;
@@ -422,14 +421,13 @@ bool Actor::setEquip(Item *item, bool checkwghtvol) {
 }
 
 uint16 Actor::getEquip(uint32 type) const {
-	Std::list<Item *>::const_iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		uint32 cet = (*iter)->getShapeInfo()->_equipType;
-		bool cbackpack = ((*iter)->getShape() == BACKPACK_SHAPE);
+	for (const auto *i : _contents) {
+		uint32 cet = i->getShapeInfo()->_equipType;
+		bool cbackpack = (i->getShape() == BACKPACK_SHAPE);
 
-		if ((*iter)->hasFlags(FLG_EQUIPPED) &&
+		if (i->hasFlags(FLG_EQUIPPED) &&
 		        (cet == type || (cbackpack && type == 7))) { // !! constant
-			return (*iter)->getObjId();
+			return i->getObjId();
 		}
 	}
 
diff --git a/engines/ultima/ultima8/world/actors/animation_tracker.cpp b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
index 4b509474c26..e049d6bdeef 100644
--- a/engines/ultima/ultima8/world/actors/animation_tracker.cpp
+++ b/engines/ultima/ultima8/world/actors/animation_tracker.cpp
@@ -274,21 +274,19 @@ bool AnimationTracker::step() {
 
 		// Do the sweep test
 		Std::list<CurrentMap::SweepItem> collisions;
-		Std::list<CurrentMap::SweepItem>::const_iterator it;
 		cm->sweepTest(start, end, dims, a->getShapeInfo()->_flags, _actor,
 		              false, &collisions);
 
-
-		for (it = collisions.begin(); it != collisions.end(); it++) {
+		for (const auto &collision : collisions) {
 			// hit something, can't move
-			if (!it->_touching && it->_blocking) {
+			if (!collision._touching && collision._blocking) {
 #ifdef WATCHACTOR
 				if (a->getObjId() == watchactor) {
 					debugC(kDebugActor, "AnimationTracker: did sweepTest for large step; collision at time %d", it->_hitTime);
 				}
 #endif
 				_blocked = true;
-				_curr = it->GetInterpolatedCoords(end, start);
+				_curr = collision.GetInterpolatedCoords(end, start);
 				return false;
 			}
 		}
diff --git a/engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp b/engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp
index ad73445d0fc..952fc690e9e 100644
--- a/engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp
+++ b/engines/ultima/ultima8/world/actors/cru_avatar_mover_process.cpp
@@ -516,9 +516,8 @@ void CruAvatarMoverProcess::step(Animation::Sequence action, Direction direction
 			avatar->setLocation(origpt);
 			currentmap->sweepTest(origpt, end, dims, avatar->getShapeInfo()->_flags,
 								  avatar->getObjId(), true, &collisions);
-			for (Std::list<CurrentMap::SweepItem>::iterator it = collisions.begin();
-				 it != collisions.end(); it++) {
-				if (!it->_touching && it->_blocking) {
+			for (const auto &collision : collisions) {
+				if (!collision._touching && collision._blocking) {
 					startvalid = false;
 					break;
 				}
diff --git a/engines/ultima/ultima8/world/actors/main_actor.cpp b/engines/ultima/ultima8/world/actors/main_actor.cpp
index 0ddb0fb61f6..d4d6cc876c3 100644
--- a/engines/ultima/ultima8/world/actors/main_actor.cpp
+++ b/engines/ultima/ultima8/world/actors/main_actor.cpp
@@ -98,10 +98,9 @@ bool MainActor::CanAddItem(Item *item, bool checkwghtvol) {
 		// valid item type?
 		if (equiptype == ShapeInfo::SE_NONE && !backpack) return false;
 
-		Std::list<Item *>::iterator iter;
-		for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-			uint32 cet = (*iter)->getShapeInfo()->_equipType;
-			bool cbackpack = ((*iter)->getShape() == backpack_shape);
+		for (const auto *i : _contents) {
+			uint32 cet = i->getShapeInfo()->_equipType;
+			bool cbackpack = (i->getShape() == backpack_shape);
 
 			// already have an item with the same equiptype
 			if (cet == equiptype || (cbackpack && backpack)) return false;
@@ -433,10 +432,9 @@ void MainActor::teleport(int mapNum, int teleport_id) {
 uint16 MainActor::getDefenseType() const {
 	uint16 type = 0;
 
-	Std::list<Item *>::const_iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		uint32 frameNum = (*iter)->getFrame();
-		const ShapeInfo *si = (*iter)->getShapeInfo();
+	for (const auto *i : _contents) {
+		uint32 frameNum = i->getFrame();
+		const ShapeInfo *si = i->getShapeInfo();
 		if (si->_armourInfo) {
 			type |= si->_armourInfo[frameNum]._defenseType;
 		}
@@ -448,10 +446,9 @@ uint16 MainActor::getDefenseType() const {
 uint32 MainActor::getArmourClass() const {
 	uint32 armour = 0;
 
-	Std::list<Item *>::const_iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		uint32 frameNum = (*iter)->getFrame();
-		const ShapeInfo *si = (*iter)->getShapeInfo();
+	for (const auto *i : _contents) {
+		uint32 frameNum = i->getFrame();
+		const ShapeInfo *si = i->getShapeInfo();
 		if (si->_armourInfo) {
 			armour += si->_armourInfo[frameNum]._armourClass;
 		}
diff --git a/engines/ultima/ultima8/world/actors/pathfinder.cpp b/engines/ultima/ultima8/world/actors/pathfinder.cpp
index 5896850115f..fb255479878 100644
--- a/engines/ultima/ultima8/world/actors/pathfinder.cpp
+++ b/engines/ultima/ultima8/world/actors/pathfinder.cpp
@@ -125,9 +125,8 @@ Pathfinder::~Pathfinder() {
 		_cleanupNodes.size(), _visited.size(), expandednodes, _expandTime);
 
 	// clean up _nodes
-	Std::vector<PathNode *>::iterator iter;
-	for (iter = _cleanupNodes.begin(); iter != _cleanupNodes.end(); ++iter)
-		delete *iter;
+	for (auto *node : _cleanupNodes)
+		delete node;
 	_cleanupNodes.clear();
 }
 
@@ -179,9 +178,8 @@ bool Pathfinder::alreadyVisited(const Point3 &pt) const {
 	//
 	// Linear search of an array is just as fast, or slightly faster.
 	//
-	Common::Array<PathfindingState>::const_iterator iter;
-	for (iter = _visited.begin(); iter != _visited.end(); iter++) {
-		if (iter->checkPoint(pt, 8*8))
+	for (const auto &i : _visited) {
+		if (i.checkPoint(pt, 8*8))
 			return true;
 	}
 
diff --git a/engines/ultima/ultima8/world/actors/rolling_thunder_process.cpp b/engines/ultima/ultima8/world/actors/rolling_thunder_process.cpp
index dc9c65c1091..02feb43d3b7 100644
--- a/engines/ultima/ultima8/world/actors/rolling_thunder_process.cpp
+++ b/engines/ultima/ultima8/world/actors/rolling_thunder_process.cpp
@@ -269,15 +269,14 @@ bool RollingThunderProcess::fireDistance(Direction dir, int32 x, int32 y, int32
 			const int32 dims[3] = {2, 2, 2};
 
 			Std::list<CurrentMap::SweepItem> collisions;
-			Std::list<CurrentMap::SweepItem>::iterator it;
 			cm->sweepTest(start, end, dims, ShapeInfo::SI_SOLID,
 						 _itemNum, false, &collisions);
-			for (it = collisions.begin(); it != collisions.end(); it++) {
-				if (it->_item == _itemNum)
+			for (const auto &collision : collisions) {
+				if (collision._item == _itemNum)
 					continue;
-				if (it->_item != target->getObjId())
+				if (collision._item != target->getObjId())
 					break;
-				Point3 out = it->GetInterpolatedCoords(start, end);
+				Point3 out = collision.GetInterpolatedCoords(start, end);
 				dist = MAX(abs(x - out.x), abs(y - out.y));
 				break;
 			}
diff --git a/engines/ultima/ultima8/world/container.cpp b/engines/ultima/ultima8/world/container.cpp
index c9e82468c7b..822c1307f2c 100644
--- a/engines/ultima/ultima8/world/container.cpp
+++ b/engines/ultima/ultima8/world/container.cpp
@@ -47,9 +47,8 @@ Container::~Container() {
 
 	// if we don't have an _objId, we _must_ delete children
 	if (_objId == 0xFFFF) {
-		Std::list<Item *>::iterator iter;
-		for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-			delete(*iter);
+		for (auto *item : _contents) {
+			delete item;
 		}
 	}
 }
@@ -58,10 +57,9 @@ Container::~Container() {
 ObjId Container::assignObjId() {
 	ObjId id = Item::assignObjId();
 
-	Std::list<Item *>::iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		(*iter)->assignObjId();
-		(*iter)->setParent(id);
+	for (auto *item : _contents) {
+		item->assignObjId();
+		item->setParent(id);
 	}
 
 	return id;
@@ -70,12 +68,11 @@ ObjId Container::assignObjId() {
 void Container::clearObjId() {
 	Item::clearObjId();
 
-	Std::list<Item *>::iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
+	for (auto *item : _contents) {
 		// make sure we don't clear the ObjId of an Actor
-		assert((*iter)->getObjId() >= 256);
+		assert(item->getObjId() >= 256);
 
-		(*iter)->clearObjId();
+		item->clearObjId();
 	}
 }
 
@@ -208,10 +205,9 @@ void Container::destroyContents() {
 void Container::setFlagRecursively(uint32 mask) {
 	setFlag(mask);
 
-	Std::list<Item *>::iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		(*iter)->setFlag(mask);
-		Container *cont = dynamic_cast<Container *>(*iter);
+	for (auto *item : _contents) {
+		item->setFlag(mask);
+		Container *cont = dynamic_cast<Container *>(item);
 		if (cont) cont->setFlagRecursively(mask);
 	}
 }
@@ -240,10 +236,8 @@ uint32 Container::getTotalWeight() const {
 		weight = 300;
 	}
 
-	Std::list<Item *>::const_iterator iter;
-
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		weight += (*iter)->getTotalWeight();
+	for (const auto *item : _contents) {
+		weight += item->getTotalWeight();
 	}
 
 	return weight;
@@ -258,10 +252,8 @@ uint32 Container::getCapacity() const {
 uint32 Container::getContentVolume() const {
 	uint32 volume = 0;
 
-	Std::list<Item *>::const_iterator iter;
-
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		volume += (*iter)->getVolume();
+	for (const auto *item : _contents) {
+		volume += item->getVolume();
 	}
 
 	return volume;
@@ -269,18 +261,17 @@ uint32 Container::getContentVolume() const {
 
 void Container::containerSearch(UCList *itemlist, const uint8 *loopscript,
 								uint32 scriptsize, bool recurse) const {
-	Std::list<Item *>::const_iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
+	for (auto *item : _contents) {
 		// check item against loopscript
-		if ((*iter)->checkLoopScript(loopscript, scriptsize)) {
+		if (item->checkLoopScript(loopscript, scriptsize)) {
 			assert(itemlist->getElementSize() == 2);
-			uint16 oId = (*iter)->getObjId();
+			uint16 oId = item->getObjId();
 			itemlist->appenduint16(oId);
 		}
 
 		if (recurse) {
 			// recurse into child-containers
-			Container *container = dynamic_cast<Container *>(*iter);
+			Container *container = dynamic_cast<Container *>(item);
 			if (container)
 				container->containerSearch(itemlist, loopscript,
 				                           scriptsize, recurse);
@@ -289,14 +280,13 @@ void Container::containerSearch(UCList *itemlist, const uint8 *loopscript,
 }
 
 Item *Container::getFirstItemWithShape(uint16 shapeno, bool recurse) {
-	Std::list<Item *>::const_iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		if ((*iter)->getShape() == shapeno)
-			return *iter;
+	for (auto *item : _contents) {
+		if (item->getShape() == shapeno)
+			return item;
 
 		if (recurse) {
 			// recurse into child-containers
-			Container *container = dynamic_cast<Container *>(*iter);
+			Container *container = dynamic_cast<Container *>(item);
 			if (container) {
 				Item *result = container->getFirstItemWithShape(shapeno, recurse);
 				if (result)
@@ -309,14 +299,13 @@ Item *Container::getFirstItemWithShape(uint16 shapeno, bool recurse) {
 }
 
 void Container::getItemsWithShapeFamily(Std::vector<Item *> &itemlist, uint16 family, bool recurse) {
-	Std::list<Item *>::const_iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		if ((*iter)->getShapeInfo()->_family == family)
-			itemlist.push_back(*iter);
+	for (auto *item : _contents) {
+		if (item->getShapeInfo()->_family == family)
+			itemlist.push_back(item);
 
 		if (recurse) {
 			// recurse into child-containers
-			Container *container = dynamic_cast<Container *>(*iter);
+			Container *container = dynamic_cast<Container *>(item);
 			if (container) {
 				container->getItemsWithShapeFamily(itemlist, family, recurse);
 			}
@@ -334,9 +323,8 @@ Common::String Container::dumpInfo() const {
 void Container::saveData(Common::WriteStream *ws) {
 	Item::saveData(ws);
 	ws->writeUint32LE(static_cast<uint32>(_contents.size()));
-	Std::list<Item *>::iterator iter;
-	for (iter = _contents.begin(); iter != _contents.end(); ++iter) {
-		ObjectManager::get_instance()->saveObject(ws, *iter);
+	for (auto *item : _contents) {
+		ObjectManager::get_instance()->saveObject(ws, item);
 	}
 }
 
diff --git a/engines/ultima/ultima8/world/current_map.cpp b/engines/ultima/ultima8/world/current_map.cpp
index 7eb08a42db5..e1516155d30 100644
--- a/engines/ultima/ultima8/world/current_map.cpp
+++ b/engines/ultima/ultima8/world/current_map.cpp
@@ -78,9 +78,8 @@ CurrentMap::~CurrentMap() {
 void CurrentMap::clear() {
 	for (unsigned int i = 0; i < MAP_NUM_CHUNKS; i++) {
 		for (unsigned int j = 0; j < MAP_NUM_CHUNKS; j++) {
-			item_list::iterator iter;
-			for (iter = _items[i][j].begin(); iter != _items[i][j].end(); ++iter)
-				delete *iter;
+			for (auto *item : _items[i][j])
+				delete item;
 			_items[i][j].clear();
 		}
 		memset(_fast[i], false, sizeof(uint32)*MAP_NUM_CHUNKS / 32);
@@ -118,10 +117,7 @@ void CurrentMap::writeback() {
 
 	for (unsigned int i = 0; i < MAP_NUM_CHUNKS; i++) {
 		for (unsigned int j = 0; j < MAP_NUM_CHUNKS; j++) {
-			item_list::iterator iter;
-			for (iter = _items[i][j].begin(); iter != _items[i][j].end(); ++iter) {
-				Item *item = *iter;
-
+			for (auto *item : _items[i][j]) {
 				// item is being removed from the CurrentMap item lists
 				item->clearExtFlag(Item::EXT_INCURMAP);
 
@@ -161,10 +157,7 @@ void CurrentMap::writeback() {
 }
 
 void CurrentMap::loadItems(const Std::list<Item *> &itemlist, bool callCacheIn) {
-	item_list::const_iterator iter;
-	for (iter = itemlist.begin(); iter != itemlist.end(); ++iter) {
-		Item *item = *iter;
-
+	for (auto *item : itemlist) {
 		item->assignObjId();
 
 		// No fast area for you!
@@ -245,10 +238,8 @@ void CurrentMap::addItem(Item *item) {
 #ifdef VALIDATE_CHUNKS
 	for (int32 ccy = 0; ccy < MAP_NUM_CHUNKS; ccy++) {
 		for (int32 ccx = 0; ccx < MAP_NUM_CHUNKS; ccx++) {
-			item_list::const_iterator iter;
-			for (iter = _items[ccx][ccy].begin();
-					iter != _items[ccx][ccy].end(); ++iter) {
-				if (*iter == item) {
+			for (const auto *existing : _items[ccx][ccy])
+				if (existing == item) {
 					warning("item %d already exists in map chunk (%d, %d)", item->getObjId(), ccx, ccy);
 				}
 			}
@@ -282,10 +273,8 @@ void CurrentMap::addItemToEnd(Item *item) {
 #ifdef VALIDATE_CHUNKS
 	for (int32 ccy = 0; ccy < MAP_NUM_CHUNKS; ccy++) {
 		for (int32 ccx = 0; ccx < MAP_NUM_CHUNKS; ccx++) {
-			item_list::const_iterator iter;
-			for (iter = _items[ccx][ccy].begin();
-					iter != _items[ccx][ccy].end(); ++iter) {
-				if (*iter == item) {
+			for (const auto *existing : _items[ccx][ccy])
+				if (existing == item) {
 					warning("item %d already exists in map chunk (%d, %d)", item->getObjId(), ccx, ccy);
 				}
 			}
@@ -517,10 +506,8 @@ void CurrentMap::updateFastArea(const Point3 &from, const Point3 &to) {
 void CurrentMap::setChunkFast(int32 cx, int32 cy) {
 	_fast[cy][cx / 32] |= 1 << (cx & 31);
 
-	item_list::iterator iter;
-	for (iter = _items[cx][cy].begin();
-	        iter != _items[cx][cy].end(); ++iter) {
-		(*iter)->enterFastArea();
+	for (auto *item : _items[cx][cy]) {
+		item->enterFastArea();
 	}
 }
 
@@ -592,12 +579,7 @@ void CurrentMap::areaSearch(UCList *itemlist, const uint8 *loopscript,
 	//
 	for (int cy = miny; cy <= maxy; cy++) {
 		for (int cx = minx; cx <= maxx; cx++) {
-			item_list::const_iterator iter;
-			for (iter = _items[cx][cy].begin();
-			        iter != _items[cx][cy].end(); ++iter) {
-
-				const Item *item = *iter;
-
+			for (const auto *item : _items[cx][cy]) {
 				if (item->hasExtFlags(Item::EXT_SPRITE))
 					continue;
 
@@ -639,12 +621,7 @@ void CurrentMap::surfaceSearch(UCList *itemlist, const uint8 *loopscript,
 
 	for (int cy = miny; cy <= maxy; cy++) {
 		for (int cx = minx; cx <= maxx; cx++) {
-			item_list::const_iterator iter;
-			for (iter = _items[cx][cy].begin();
-			        iter != _items[cx][cy].end(); ++iter) {
-
-				const Item *item = *iter;
-
+			for (const auto *item : _items[cx][cy]) {
 				if (item->getObjId() == check->getObjId())
 					continue;
 				if (item->hasExtFlags(Item::EXT_SPRITE))
@@ -685,10 +662,8 @@ void CurrentMap::surfaceSearch(UCList *itemlist, const uint8 *loopscript,
 TeleportEgg *CurrentMap::findDestination(uint16 id) {
 	for (unsigned int i = 0; i < MAP_NUM_CHUNKS; i++) {
 		for (unsigned int j = 0; j < MAP_NUM_CHUNKS; j++) {
-			item_list::iterator iter;
-			for (iter = _items[i][j].begin();
-			        iter != _items[i][j].end(); ++iter) {
-				TeleportEgg *egg = dynamic_cast<TeleportEgg *>(*iter);
+			for (auto *item : _items[i][j]) {
+				TeleportEgg *egg = dynamic_cast<TeleportEgg *>(item);
 				if (egg) {
 					if (!egg->isTeleporter() && egg->getTeleportId() == id)
 						return egg;
@@ -738,10 +713,7 @@ PositionInfo CurrentMap::getPositionInfo(const Box &target, const Box &start, ui
 
 	for (int cx = minx; cx <= maxx; cx++) {
 		for (int cy = miny; cy <= maxy; cy++) {
-			item_list::const_iterator iter;
-			for (iter = _items[cx][cy].begin();
-				 iter != _items[cx][cy].end(); ++iter) {
-				const Item *item = *iter;
+			for (const auto *item : _items[cx][cy]) {
 				if (item->getObjId() == id)
 					continue;
 				if (item->hasExtFlags(Item::EXT_SPRITE))
@@ -852,9 +824,7 @@ bool CurrentMap::scanForValidPosition(int32 x, int32 y, int32 z, const Item *ite
 
 	for (int cx = minx; cx <= maxx; cx++) {
 		for (int cy = miny; cy <= maxy; cy++) {
-			for (item_list::const_iterator iter = _items[cx][cy].begin();
-			        iter != _items[cx][cy].end(); ++iter) {
-				const Item *citem = *iter;
+			for (const auto *citem : _items[cx][cy]) {
 				if (citem->getObjId() == item->getObjId())
 					continue;
 				if (citem->hasExtFlags(Item::EXT_SPRITE))
@@ -1036,10 +1006,7 @@ bool CurrentMap::sweepTest(const Point3 &start, const Point3 &end,
 
 	for (int cx = minx; cx <= maxx; cx++) {
 		for (int cy = miny; cy <= maxy; cy++) {
-			item_list::const_iterator iter;
-			for (iter = _items[cx][cy].begin();
-			        iter != _items[cx][cy].end(); ++iter) {
-				const Item *other_item = *iter;
+			for (const auto *other_item : _items[cx][cy]) {
 				if (other_item->getObjId() == item)
 					continue;
 				if (other_item->hasExtFlags(Item::EXT_SPRITE))
diff --git a/engines/ultima/ultima8/world/glob_egg.cpp b/engines/ultima/ultima8/world/glob_egg.cpp
index 576db896fbf..65faaa13189 100644
--- a/engines/ultima/ultima8/world/glob_egg.cpp
+++ b/engines/ultima/ultima8/world/glob_egg.cpp
@@ -55,8 +55,7 @@ uint32 GlobEgg::enterFastArea() {
 		if (!glob) return 0;
 
 		Std::vector<GlobItem>::const_iterator iter;
-		for (iter = glob->_contents.begin(); iter != glob->_contents.end(); ++iter) {
-			const GlobItem &globitem = *iter;
+		for (const auto &globitem : glob->_contents) {
 			Item *item = ItemFactory::createItem(globitem.shape, globitem.frame,
 			                                     0,
 			                                     FLG_DISPOSABLE | FLG_FAST_ONLY,
diff --git a/engines/ultima/ultima8/world/item.cpp b/engines/ultima/ultima8/world/item.cpp
index 5fe2f733b33..cb5e5870335 100644
--- a/engines/ultima/ultima8/world/item.cpp
+++ b/engines/ultima/ultima8/world/item.cpp
@@ -754,17 +754,13 @@ int Item::getRangeIfVisible(const Item &item2) const {
 
 	map->sweepTest(start, end, dims, getShapeInfo()->_flags, _objId, true, &hitItems);
 
-	if (hitItems.size() > 0) {
-		for (Std::list<CurrentMap::SweepItem>::const_iterator it = hitItems.begin();
-			 it != hitItems.end();
-			 it++) {
-			int objId = it->_item;
-			if (it->_blocking && objId != _objId && objId != item2.getObjId()) {
-				//int out[3];
-				//it->GetInterpolatedCoords(out, start, end);
-				//warning("found blocking item %d at %d %d %d.", objId, out[0], out[1], out[2]);
-				return 0;
-			}
+	for (const auto &hit : hitItems) {
+		int objId = hit._item;
+		if (hit._blocking && objId != _objId && objId != item2.getObjId()) {
+			//int out[3];
+			//hit.GetInterpolatedCoords(out, start, end);
+			//warning("found blocking item %d at %d %d %d.", objId, out[0], out[1], out[2]);
+			return 0;
 		}
 	}
 
@@ -1066,7 +1062,6 @@ int32 Item::collideMove(int32 dx, int32 dy, int32 dz, bool teleport, bool force,
 
 	// Do the sweep test
 	Std::list<CurrentMap::SweepItem> collisions;
-	Std::list<CurrentMap::SweepItem>::iterator it;
 	map->sweepTest(start, end, dims, getShapeInfo()->_flags, _objId, false, &collisions);
 
 	// Ok, now to work out what to do
@@ -1085,11 +1080,13 @@ int32 Item::collideMove(int32 dx, int32 dy, int32 dz, bool teleport, bool force,
 	if (teleport || _parent) {
 		// If teleporting and not force, work out if we can reach the end
 		if (!force) {
-			for (it = collisions.begin(); it != collisions.end(); it++) {
+			for (const auto &collision : collisions) {
 				// Uh oh, we hit something, can't move
-				if (it->_endTime == 0x4000 && !it->_touching && it->_blocking) {
-					if (hititem) *hititem = it->_item;
-					if (dirs) *dirs = it->_dirs;
+				if (collision._endTime == 0x4000 && !collision._touching && collision._blocking) {
+					if (hititem)
+						*hititem = collision._item;
+					if (dirs)
+						*dirs = collision._dirs;
 					return 0;
 				}
 			}
@@ -1097,18 +1094,18 @@ int32 Item::collideMove(int32 dx, int32 dy, int32 dz, bool teleport, bool force,
 
 		// Trigger all the required events
 		bool we_were_released = false;
-		for (it = collisions.begin(); it != collisions.end(); it++) {
-			Item *item = getItem(it->_item);
+		for (const auto &collision : collisions) {
+			Item *item = getItem(collision._item);
 			if (!item)
 				continue; // shouldn't happen..
 
 			// Hitting us at the start and end, don't do anything
-			if (!_parent && it->_hitTime == 0x0000 &&
-			        it->_endTime == 0x4000) {
+			if (!_parent && collision._hitTime == 0x0000 &&
+				collision._endTime == 0x4000) {
 				continue;
 			}
 			// Hitting us at the end (call hit on us, got hit on them)
-			else if (it->_endTime == 0x4000) {
+			else if (collision._endTime == 0x4000) {
 				if (_objId == kMainActorId && guiapp->isShowTouchingItems())
 					item->setExtFlag(Item::EXT_HIGHLIGHT);
 
@@ -1116,7 +1113,7 @@ int32 Item::collideMove(int32 dx, int32 dy, int32 dz, bool teleport, bool force,
 				callUsecodeEvent_hit(item->getObjId(), hitforce);
 			}
 			// Hitting us at the start (call release on us and them)
-			else if (!_parent && it->_hitTime == 0x0000) {
+			else if (!_parent && collision._hitTime == 0x0000) {
 				if (_objId == kMainActorId)
 					item->clearExtFlag(Item::EXT_HIGHLIGHT);
 				we_were_released = true;
@@ -1139,15 +1136,19 @@ int32 Item::collideMove(int32 dx, int32 dy, int32 dz, bool teleport, bool force,
 		// if not, need to do 'stuff'
 		// We don't care about items hitting us at the start
 		if (!force) {
+			Std::list<CurrentMap::SweepItem>::iterator it;
 			for (it = collisions.begin(); it != collisions.end(); it++) {
 				if (it->_blocking && !it->_touching) {
-					if (hititem) *hititem = it->_item;
-					if (dirs) *dirs = it->_dirs;
+					if (hititem)
+						*hititem = it->_item;
+					if (dirs)
+						*dirs = it->_dirs;
 					hit = it->_hitTime;
 					break;
 				}
 			}
-			if (hit < 0) hit = 0;
+			if (hit < 0)
+				hit = 0;
 
 			if (hit != 0x4000) {
 				debugC(kDebugCollision, "Hit time: %d; Start: %d, %d, %d; End: %d, %d, %d",
@@ -1161,12 +1162,12 @@ int32 Item::collideMove(int32 dx, int32 dy, int32 dz, bool teleport, bool force,
 
 		// Trigger all the required events
 		bool we_were_released = false;
-		for (it = collisions.begin(); it != collisions.end(); it++) {
-			Item *item = getItem(it->_item);
+		for (const auto &collision : collisions) {
+			Item *item = getItem(collision._item);
 			if (!item) continue;
 
 			// Did we go past the endpoint of the move?
-			if (it->_hitTime > hit) break;
+			if (collision._hitTime > hit) break;
 
 			uint16 proc_gothit = 0, proc_rel = 0;
 
@@ -1174,8 +1175,8 @@ int32 Item::collideMove(int32 dx, int32 dy, int32 dz, bool teleport, bool force,
 			// called gotHit and hit.  In Crusader we call
 			// hit for every hitting frame to make sickbays
 			// and teleporters work.
-			bool call_hit = it->_hitTime >= 0 || GAME_IS_CRUSADER;
-			if ((!it->_touching || it->_touchingFloor) && call_hit) {
+			bool call_hit = collision._hitTime >= 0 || GAME_IS_CRUSADER;
+			if ((!collision._touching || collision._touchingFloor) && call_hit) {
 				if (_objId == kMainActorId && guiapp->isShowTouchingItems())
 					item->setExtFlag(Item::EXT_HIGHLIGHT);
 
@@ -1184,7 +1185,7 @@ int32 Item::collideMove(int32 dx, int32 dy, int32 dz, bool teleport, bool force,
 			}
 
 			// If not hitting at end, we will need to call release
-			if (it->_endTime < hit) {
+			if (collision._endTime < hit) {
 				if (_objId == kMainActorId)
 					item->clearExtFlag(Item::EXT_HIGHLIGHT);
 				we_were_released = true;
@@ -1455,17 +1456,16 @@ uint16 Item::fireDistance(const Item *other, Direction dir, int16 xoff, int16 yo
 			const int32 dims[3] = {2, 2, 2};
 
 			Std::list<CurrentMap::SweepItem> collisions;
-			Std::list<CurrentMap::SweepItem>::iterator it;
 			cm->sweepTest(start, end, dims, ShapeInfo::SI_SOLID,
 						   _objId, true, &collisions);
-			for (it = collisions.begin(); it != collisions.end(); it++) {
-				if (it->_item == getObjId())
+			for (const auto &collision : collisions) {
+				if (collision._item == getObjId())
 					continue;
-				if (it->_touching)
+				if (collision._touching)
 					continue;
-				if (it->_item != other->getObjId())
+				if (collision._item != other->getObjId())
 					break;
-				Point3 out = it->GetInterpolatedCoords(start, end);
+				Point3 out = collision.GetInterpolatedCoords(start, end);
 				dist = MAX(abs(_x - out.x), abs(_y - out.y));
 				break;
 			}
@@ -2414,23 +2414,24 @@ int Item::getThrowRange() const {
 static bool checkLineOfSightCollisions(
 	const Std::list<CurrentMap::SweepItem> &collisions,
 	bool usingAlternatePos, ObjId item, ObjId other) {
-	Std::list<CurrentMap::SweepItem>::const_iterator it;
 	int32 other_hit_time = 0x4000;
 	int32 blocked_time = 0x4000;
-	for (it = collisions.begin(); it != collisions.end(); it++) {
+	for (const auto &collision : collisions) {
 		// ignore self and other
-		if (it->_item == item) continue;
-		if (it->_item == other && !usingAlternatePos) {
-			other_hit_time = it->_hitTime;
+		if (collision._item == item)
+			continue;
+		if (collision._item == other && !usingAlternatePos) {
+			other_hit_time = collision._hitTime;
 			continue;
 		}
 
 		// only touching?
-		if (it->_touching) continue;
+		if (collision._touching)
+			continue;
 
 		// hit something
-		if (it->_blocking && it->_hitTime < blocked_time) {
-			blocked_time = it->_hitTime;
+		if (collision._blocking && collision._hitTime < blocked_time) {
+			blocked_time = collision._hitTime;
 		}
 	}
 
@@ -3629,9 +3630,8 @@ uint32 Item::I_legalMoveToPoint(const uint8 *args, unsigned int argsize) {
 	CurrentMap *map = World::get_instance()->getCurrentMap();
 	map->sweepTest(start, end, dims, item->getShapeInfo()->_flags,
 				   item->getObjId(), true, &collisions);
-	for (Std::list<CurrentMap::SweepItem>::iterator it = collisions.begin();
-		 it != collisions.end(); it++) {
-		if (it->_blocking && !it->_touching && it->_endTime > 0) {
+	for (const auto &collision : collisions) {
+		if (collision._blocking && !collision._touching && collision._endTime > 0) {
 			if (abort_if_blocked)
 				return 0;
 			retval = 0;
diff --git a/engines/ultima/ultima8/world/item_selection_process.cpp b/engines/ultima/ultima8/world/item_selection_process.cpp
index 7a9b030a4b6..9bf8bac4883 100644
--- a/engines/ultima/ultima8/world/item_selection_process.cpp
+++ b/engines/ultima/ultima8/world/item_selection_process.cpp
@@ -130,10 +130,8 @@ bool ItemSelectionProcess::selectNextItem(bool grab) {
 	if (_selectedItem) {
 		// Pick the next item
 		int offset = 0;
-		for (Std::vector<Item *>::const_iterator iter = candidates.begin();
-			 iter != candidates.end();
-			 offset++, iter++) {
-			ObjId num = (*iter)->getObjId();
+		for (const auto *c : candidates) {
+			ObjId num = c->getObjId();
 			if (_selectedItem == num) {
 				offset++;
 				break;
diff --git a/engines/ultima/ultima8/world/item_sorter.cpp b/engines/ultima/ultima8/world/item_sorter.cpp
index 45fbbd9e30e..2ebc71a6327 100644
--- a/engines/ultima/ultima8/world/item_sorter.cpp
+++ b/engines/ultima/ultima8/world/item_sorter.cpp
@@ -408,21 +408,18 @@ bool ItemSorter::PaintSortItem(RenderSurface *surf, SortItem *si, bool showFootp
 	si->_order = -2;
 
 	// Iterate through our dependancies, and paint them, if possible
-	SortItem::DependsList::iterator it = si->_depends.begin();
-	SortItem::DependsList::iterator end = si->_depends.end();
-	while (it != end) {
-		if ((*it)->_order == -2) {
+	for (auto *d : si->_depends) {
+		if (d->_order == -2) {
 			if (!_sortLimit) {
 				debugC(kDebugObject, "Cycle in paint dependency graph %d -> %d -> ... -> %d",
-					   si->_shapeNum, (*it)->_shapeNum, si->_shapeNum);
+					   si->_shapeNum, d->_shapeNum, si->_shapeNum);
 			}
 			break;
 		}
-		else if ((*it)->_order == -1) {
-			if (PaintSortItem(surf, *it, showFootpad))
+		else if (d->_order == -1) {
+			if (PaintSortItem(surf, d, showFootpad))
 				return true;
 		}
-		++it;
 	}
 
 	// Now paint us!
diff --git a/engines/ultima/ultima8/world/map.cpp b/engines/ultima/ultima8/world/map.cpp
index f54f4047469..43a12e66a26 100644
--- a/engines/ultima/ultima8/world/map.cpp
+++ b/engines/ultima/ultima8/world/map.cpp
@@ -45,15 +45,13 @@ Map::~Map() {
 }
 
 void Map::clear() {
-	Std::list<Item *>::iterator iter;
-
-	for (iter = _fixedItems.begin(); iter != _fixedItems.end(); ++iter) {
-		delete *iter;
+	for (auto *item : _fixedItems) {
+		delete item;
 	}
 	_fixedItems.clear();
 
-	for (iter = _dynamicItems.begin(); iter != _dynamicItems.end(); ++iter) {
-		delete *iter;
+	for (auto *item : _dynamicItems) {
+		delete item;
 	}
 	_dynamicItems.clear();
 }
@@ -141,15 +139,13 @@ void Map::loadFixed(Common::SeekableReadStream *rs) {
 
 	if (GAME_IS_U8 && _mapNum == 49) {
 		// Map 49 has some water tiles at the wrong z
-		Std::list<Item *>::iterator iter;
-
-		for (iter = _fixedItems.begin(); iter != _fixedItems.end(); ++iter) {
-			if ((*iter)->getShape() == 347 && (*iter)->getZ() == 96) {
-				Point3 pt = (*iter)->getLocation();
+		for (auto *item : _fixedItems) {
+			if (item->getShape() == 347 && item->getZ() == 96) {
+				Point3 pt = item->getLocation();
 				if ((pt.x == 23007 && pt.y == 21343) || (pt.x == 23135 && pt.y == 21471) ||
 				        (pt.x == 23135 && pt.y == 21343)) {
 					shiftCoordsToZ(pt.x, pt.y, pt.z, 40);
-					(*iter)->setLocation(pt);
+					item->setLocation(pt);
 				}
 			}
 		}
@@ -157,16 +153,14 @@ void Map::loadFixed(Common::SeekableReadStream *rs) {
 
 	if (GAME_IS_U8 && _mapNum == 21) {
 		// Map 21 has some ground and wall tiles at the wrong z
-		Std::list<Item *>::iterator iter;
-
-		for (iter = _fixedItems.begin(); iter != _fixedItems.end(); ++iter) {
-			int32 z = (*iter)->getZ();
-			uint32 sh = (*iter)->getShape();
+		for (auto *item : _fixedItems) {
+			int32 z = item->getZ();
+			uint32 sh = item->getShape();
 			if (z == 8 && (sh == 301 || sh == 31 || sh == 32)) {
-				Point3 pt = (*iter)->getLocation();
+				Point3 pt = item->getLocation();
 				if ((pt.x == 6783 || pt.x == 6655) && (pt.y == 15743 || pt.y == 15615)) {
 					shiftCoordsToZ(pt.x, pt.y, pt.z, 16);
-					(*iter)->setLocation(pt);
+					item->setLocation(pt);
 				}
 			}
 		}
@@ -174,17 +168,15 @@ void Map::loadFixed(Common::SeekableReadStream *rs) {
 
 	if (GAME_IS_U8 && _mapNum == 5) {
 		// Map 5 has some ground tiles at the wrong z
-		Std::list<Item *>::iterator iter;
-
-		for (iter = _fixedItems.begin(); iter != _fixedItems.end(); ++iter) {
-			if ((*iter)->getShape() == 71 && (*iter)->getFrame() == 8 && (*iter)->getZ() == 0) {
-				Point3 pt = (*iter)->getLocation();
+		for (auto *item : _fixedItems) {
+			if (item->getShape() == 71 && item->getFrame() == 8 && item->getZ() == 0) {
+				Point3 pt = item->getLocation();
 				if ((pt.x == 9151 && pt.y == 24127) || (pt.x == 9279 && pt.y == 23999) ||
 				        (pt.x == 9535 && pt.y == 23615) || (pt.x == 9151 && pt.y == 23487) ||
 				        (pt.x == 10303 && pt.y == 23487) || (pt.x == 9919 && pt.y == 23487) ||
 				        (pt.x == 10559 && pt.y == 23487)) {
 					shiftCoordsToZ(pt.x, pt.y, pt.z, 48);
-					(*iter)->setLocation(pt);
+					item->setLocation(pt);
 				}
 			}
 		}
@@ -193,10 +185,8 @@ void Map::loadFixed(Common::SeekableReadStream *rs) {
 }
 
 void Map::unloadFixed() {
-	Std::list<Item *>::iterator iter;
-
-	for (iter = _fixedItems.begin(); iter != _fixedItems.end(); ++iter) {
-		delete *iter;
+	for (auto *item : _fixedItems) {
+		delete item;
 	}
 	_fixedItems.clear();
 }
@@ -277,9 +267,8 @@ void Map::loadFixedFormatObjects(Std::list<Item *> &itemlist,
 void Map::save(Common::WriteStream *ws) {
 	ws->writeUint32LE(static_cast<uint32>(_dynamicItems.size()));
 
-	Std::list<Item *>::iterator iter;
-	for (iter = _dynamicItems.begin(); iter != _dynamicItems.end(); ++iter) {
-		ObjectManager::get_instance()->saveObject(ws, *iter);
+	for (auto *item : _dynamicItems) {
+		ObjectManager::get_instance()->saveObject(ws, item);
 	}
 }
 
diff --git a/engines/ultima/ultima8/world/minimap.cpp b/engines/ultima/ultima8/world/minimap.cpp
index c293b793db7..99d3e047634 100644
--- a/engines/ultima/ultima8/world/minimap.cpp
+++ b/engines/ultima/ultima8/world/minimap.cpp
@@ -93,9 +93,8 @@ uint32 MiniMap::sampleAtPoint(const CurrentMap &map, int x, int y) {
 	uint32 shflags = ShapeInfo::SI_ROOF | ShapeInfo::SI_OCCL | ShapeInfo::SI_LAND | ShapeInfo::SI_SEA;
 	Std::list<CurrentMap::SweepItem> collisions;
 	if (map.sweepTest(start, end, dims, shflags, 0, false, &collisions)) {
-		Std::list<CurrentMap::SweepItem>::const_iterator it;
-		for (it = collisions.begin(); it != collisions.end(); it++) {
-			const Item *item = getItem(it->_item);
+		for (const auto &collision : collisions) {
+			const Item *item = getItem(collision._item);
 			if (item) {
 				const ShapeInfo *si = item->getShapeInfo();
 				if (!(si->_flags & shflags) || si->is_editor() || si->is_translucent())
diff --git a/engines/ultima/ultima8/world/missile_tracker.cpp b/engines/ultima/ultima8/world/missile_tracker.cpp
index 9a0503affa0..0ebd76df919 100644
--- a/engines/ultima/ultima8/world/missile_tracker.cpp
+++ b/engines/ultima/ultima8/world/missile_tracker.cpp
@@ -147,14 +147,13 @@ bool MissileTracker::isPathClear() const {
 
 		// Do the sweep test
 		Std::list<CurrentMap::SweepItem> collisions;
-		Std::list<CurrentMap::SweepItem>::iterator it;
 		map->sweepTest(start, end, dims, item->getShapeInfo()->_flags, _objId,
 		               false, &collisions);
 
 		int32 hit = 0x4000;
-		for (it = collisions.begin(); it != collisions.end(); it++) {
-			if (it->_blocking && !it->_touching && it->_item != _owner) {
-				hit = it->_hitTime;
+		for (const auto &collision : collisions) {
+			if (collision._blocking && !collision._touching && collision._item != _owner) {
+				hit = collision._hitTime;
 				break;
 			}
 		}
diff --git a/engines/ultima/ultima8/world/snap_process.cpp b/engines/ultima/ultima8/world/snap_process.cpp
index f3de73dccf9..b18fe94919c 100644
--- a/engines/ultima/ultima8/world/snap_process.cpp
+++ b/engines/ultima/ultima8/world/snap_process.cpp
@@ -73,9 +73,8 @@ void SnapProcess::run() {
 void SnapProcess::addEgg(Item *item) {
 	assert(item);
 	ObjId id = item->getObjId();
-	for (Std::list<ObjId>::const_iterator iter = _snapEggs.begin();
-		 iter != _snapEggs.end(); iter++) {
-		if (*iter == id)
+	for (const auto &eggId : _snapEggs) {
+		if (eggId == id)
 			return;
 	}
 	_snapEggs.push_back(id);
@@ -96,16 +95,15 @@ void SnapProcess::updateCurrentEgg() {
 	a->getFootpadWorld(axd, ayd, azd);
 	Rect arect(pta.x, pta.y, pta.x + axd, pta.y + ayd);
 
-	for (Std::list<ObjId>::const_iterator iter = _snapEggs.begin();
-		 iter != _snapEggs.end(); iter++) {
-		const Item *egg = getItem(*iter);
+	for (const auto &eggId : _snapEggs) {
+		const Item *egg = getItem(eggId);
 		if (!egg)
 			continue;
 		Rect r;
 		Point3 pte = egg->getLocation();
 		getSnapEggRange(egg, r);
 		if (r.intersects(arect) && (pta.z <= pte.z + 0x30 && pta.z >= pte.z - 0x30)) {
-			_currentSnapEgg = *iter;
+			_currentSnapEgg = eggId;
 			_currentSnapEggRange = r;
 			CameraProcess::SetCameraProcess(new CameraProcess(_currentSnapEgg));
 		}
@@ -181,9 +179,8 @@ void SnapProcess::saveData(Common::WriteStream *ws) {
 
 	ws->writeUint16LE(_currentSnapEgg);
 	ws->writeUint16LE(_snapEggs.size());
-	for (Std::list<ObjId>::const_iterator iter = _snapEggs.begin();
-		 iter != _snapEggs.end(); iter++) {
-		ws->writeUint16LE(*iter);
+	for (const auto &eggId : _snapEggs) {
+		ws->writeUint16LE(eggId);
 	}
 }
 




More information about the Scummvm-git-logs mailing list