[Scummvm-git-logs] scummvm master -> 627d2c5b964eaad57c9defd47217bf84b2d65521

aquadran noreply at scummvm.org
Fri Sep 5 11:30:33 UTC 2025


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

Summary:
627d2c5b96 WINTERMUTE: Synced with original code


Commit: 627d2c5b964eaad57c9defd47217bf84b2d65521
    https://github.com/scummvm/scummvm/commit/627d2c5b964eaad57c9defd47217bf84b2d65521
Author: Paweł Kołodziejski (aquadran at gmail.com)
Date: 2025-09-05T13:30:26+02:00

Commit Message:
WINTERMUTE: Synced with original code

Changed paths:
    engines/wintermute/ad/ad_actor.cpp
    engines/wintermute/ad/ad_actor.h
    engines/wintermute/ad/ad_actor_3dx.cpp
    engines/wintermute/ad/ad_actor_3dx.h
    engines/wintermute/ad/ad_attach_3dx.cpp
    engines/wintermute/ad/ad_attach_3dx.h
    engines/wintermute/ad/ad_entity.cpp
    engines/wintermute/ad/ad_entity.h
    engines/wintermute/ad/ad_game.cpp
    engines/wintermute/ad/ad_game.h
    engines/wintermute/ad/ad_item.cpp
    engines/wintermute/ad/ad_item.h
    engines/wintermute/ad/ad_layer.cpp
    engines/wintermute/ad/ad_layer.h
    engines/wintermute/ad/ad_object.cpp
    engines/wintermute/ad/ad_object.h
    engines/wintermute/ad/ad_object_3d.cpp
    engines/wintermute/ad/ad_object_3d.h
    engines/wintermute/ad/ad_region.cpp
    engines/wintermute/ad/ad_region.h
    engines/wintermute/ad/ad_scene.cpp
    engines/wintermute/ad/ad_scene.h
    engines/wintermute/ad/ad_talk_holder.cpp
    engines/wintermute/ad/ad_talk_holder.h
    engines/wintermute/ad/ad_waypoint_group.cpp
    engines/wintermute/ad/ad_waypoint_group.h
    engines/wintermute/base/base_frame.cpp
    engines/wintermute/base/base_frame.h
    engines/wintermute/base/base_game.cpp
    engines/wintermute/base/base_game.h
    engines/wintermute/base/base_keyboard_state.cpp
    engines/wintermute/base/base_keyboard_state.h
    engines/wintermute/base/base_object.cpp
    engines/wintermute/base/base_object.h
    engines/wintermute/base/base_region.cpp
    engines/wintermute/base/base_region.h
    engines/wintermute/base/base_script_holder.cpp
    engines/wintermute/base/base_script_holder.h
    engines/wintermute/base/base_scriptable.cpp
    engines/wintermute/base/base_scriptable.h
    engines/wintermute/base/base_sprite.cpp
    engines/wintermute/base/base_sprite.h
    engines/wintermute/base/base_sub_frame.cpp
    engines/wintermute/base/base_sub_frame.h
    engines/wintermute/base/particles/part_emitter.cpp
    engines/wintermute/base/particles/part_emitter.h
    engines/wintermute/base/scriptables/script_ext_array.cpp
    engines/wintermute/base/scriptables/script_ext_array.h
    engines/wintermute/base/scriptables/script_ext_date.cpp
    engines/wintermute/base/scriptables/script_ext_date.h
    engines/wintermute/base/scriptables/script_ext_directory.cpp
    engines/wintermute/base/scriptables/script_ext_directory.h
    engines/wintermute/base/scriptables/script_ext_file.cpp
    engines/wintermute/base/scriptables/script_ext_file.h
    engines/wintermute/base/scriptables/script_ext_math.cpp
    engines/wintermute/base/scriptables/script_ext_math.h
    engines/wintermute/base/scriptables/script_ext_mem_buffer.cpp
    engines/wintermute/base/scriptables/script_ext_mem_buffer.h
    engines/wintermute/base/scriptables/script_ext_string.cpp
    engines/wintermute/base/scriptables/script_ext_string.h
    engines/wintermute/ext/wme_3fstatistics.cpp
    engines/wintermute/ext/wme_3fstatistics.h
    engines/wintermute/ext/wme_blackandwhite.cpp
    engines/wintermute/ext/wme_blackandwhite.h
    engines/wintermute/ext/wme_commandlinehelper.cpp
    engines/wintermute/ext/wme_commandlinehelper.h
    engines/wintermute/ext/wme_displacement.cpp
    engines/wintermute/ext/wme_displacement.h
    engines/wintermute/ext/wme_galaxy.cpp
    engines/wintermute/ext/wme_galaxy.h
    engines/wintermute/ext/wme_shadowmanager.cpp
    engines/wintermute/ext/wme_shadowmanager.h
    engines/wintermute/ext/wme_steam.cpp
    engines/wintermute/ext/wme_steam.h
    engines/wintermute/ext/wme_vlink.cpp
    engines/wintermute/ext/wme_vlink.h
    engines/wintermute/ext/wme_windowmode.cpp
    engines/wintermute/ext/wme_windowmode.h
    engines/wintermute/ui/ui_button.cpp
    engines/wintermute/ui/ui_button.h
    engines/wintermute/ui/ui_edit.cpp
    engines/wintermute/ui/ui_edit.h
    engines/wintermute/ui/ui_entity.cpp
    engines/wintermute/ui/ui_entity.h
    engines/wintermute/ui/ui_object.cpp
    engines/wintermute/ui/ui_object.h
    engines/wintermute/ui/ui_text.cpp
    engines/wintermute/ui/ui_text.h
    engines/wintermute/ui/ui_window.cpp
    engines/wintermute/ui/ui_window.h


diff --git a/engines/wintermute/ad/ad_actor.cpp b/engines/wintermute/ad/ad_actor.cpp
index 910ede33964..35b4330e22a 100644
--- a/engines/wintermute/ad/ad_actor.cpp
+++ b/engines/wintermute/ad/ad_actor.cpp
@@ -1149,27 +1149,27 @@ bool AdActor::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdActor::scGetProperty(const Common::String &name) {
+ScValue *AdActor::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Direction
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Direction") {
+	if (strcmp(name, "Direction") == 0) {
 		_scValue->setInt(_dir);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Type") {
+	else if (strcmp(name, "Type") == 0) {
 		_scValue->setString("actor");
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// TalkAnimName
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TalkAnimName") {
+	else if (strcmp(name, "TalkAnimName") == 0) {
 		_scValue->setString(_talkAnimName);
 		return _scValue;
 	}
@@ -1177,7 +1177,7 @@ ScValue *AdActor::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// WalkAnimName
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "WalkAnimName") {
+	else if (strcmp(name, "WalkAnimName") == 0) {
 		_scValue->setString(_walkAnimName);
 		return _scValue;
 	}
@@ -1185,7 +1185,7 @@ ScValue *AdActor::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// IdleAnimName
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "IdleAnimName") {
+	else if (strcmp(name, "IdleAnimName") == 0) {
 		_scValue->setString(_idleAnimName);
 		return _scValue;
 	}
@@ -1193,7 +1193,7 @@ ScValue *AdActor::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TurnLeftAnimName
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TurnLeftAnimName") {
+	else if (strcmp(name, "TurnLeftAnimName") == 0) {
 		_scValue->setString(_turnLeftAnimName);
 		return _scValue;
 	}
@@ -1201,7 +1201,7 @@ ScValue *AdActor::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TurnRightAnimName
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TurnRightAnimName") {
+	else if (strcmp(name, "TurnRightAnimName") == 0) {
 		_scValue->setString(_turnRightAnimName);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ad/ad_actor.h b/engines/wintermute/ad/ad_actor.h
index 5fdb40eddc4..f8b1672c18c 100644
--- a/engines/wintermute/ad/ad_actor.h
+++ b/engines/wintermute/ad/ad_actor.h
@@ -79,7 +79,7 @@ public:
 	AdSpriteSet *getAnimByName(const Common::String &animName);
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_actor_3dx.cpp b/engines/wintermute/ad/ad_actor_3dx.cpp
index 144c52aef73..1aa85b019ef 100644
--- a/engines/wintermute/ad/ad_actor_3dx.cpp
+++ b/engines/wintermute/ad/ad_actor_3dx.cpp
@@ -2022,13 +2022,13 @@ bool AdActor3DX::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
 }
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
+ScValue *AdActor3DX::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("actor3dx");
 		return _scValue;
 	}
@@ -2036,7 +2036,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TalkAnimName
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TalkAnimName") {
+	else if (strcmp(name, "TalkAnimName") == 0) {
 		_scValue->setString(_talkAnimName);
 		return _scValue;
 	}
@@ -2044,7 +2044,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TalkAnimChannel
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TalkAnimChannel") {
+	else if (strcmp(name, "TalkAnimChannel") == 0) {
 		_scValue->setInt(_talkAnimChannel);
 		return _scValue;
 	}
@@ -2052,7 +2052,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// WalkAnimName
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "WalkAnimName") {
+	else if (strcmp(name, "WalkAnimName") == 0) {
 		_scValue->setString(_talkAnimName);
 		return _scValue;
 	}
@@ -2060,7 +2060,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// IdleAnimName
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "IdleAnimName") {
+	else if (strcmp(name, "IdleAnimName") == 0) {
 		_scValue->setString(_idleAnimName);
 		return _scValue;
 	}
@@ -2068,7 +2068,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TurnLeftAnimName
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TurnLeftAnimName") {
+	else if (strcmp(name, "TurnLeftAnimName") == 0) {
 		_scValue->setString(_turnLeftAnimName);
 		return _scValue;
 	}
@@ -2076,7 +2076,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TurnRightAnimName
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TurnRightAnimName") {
+	else if (strcmp(name, "TurnRightAnimName") == 0) {
 		_scValue->setString(_turnRightAnimName);
 		return _scValue;
 	}
@@ -2084,7 +2084,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// DirectionAngle / DirAngle
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "DirectionAngle" || name == "DirAngle") {
+	else if (strcmp(name, "DirectionAngle") == 0 || strcmp(name, "DirAngle") == 0) {
 		_scValue->setFloat(_angle);
 		return _scValue;
 	}
@@ -2092,7 +2092,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Direction
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Direction") {
+	else if (strcmp(name, "Direction") == 0) {
 		_scValue->setInt(angleToDir(_angle));
 		return _scValue;
 	}
@@ -2100,7 +2100,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AnimTransitionTime
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AnimTransitionTime") {
+	else if (strcmp(name, "AnimTransitionTime") == 0) {
 		_scValue->setInt(_defaultTransTime);
 		return _scValue;
 	}
@@ -2108,7 +2108,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AnimStopTransitionTime
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AnimStopTransitionTime") {
+	else if (strcmp(name, "AnimStopTransitionTime") == 0) {
 		_scValue->setInt(_defaultStopTransTime);
 		return _scValue;
 	}
@@ -2116,7 +2116,7 @@ ScValue *AdActor3DX::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// GoToTolerance
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "GoToTolerance") {
+	else if (strcmp(name, "GoToTolerance") == 0) {
 		_scValue->setInt(_goToTolerance);
 		return _scValue;
 	}
diff --git a/engines/wintermute/ad/ad_actor_3dx.h b/engines/wintermute/ad/ad_actor_3dx.h
index 7071b60532e..6e07f922690 100644
--- a/engines/wintermute/ad/ad_actor_3dx.h
+++ b/engines/wintermute/ad/ad_actor_3dx.h
@@ -115,7 +115,7 @@ public:
 	bool displayAttachments(bool registerObjects);
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_attach_3dx.cpp b/engines/wintermute/ad/ad_attach_3dx.cpp
index 4d0b3611b59..a8147f3201b 100644
--- a/engines/wintermute/ad/ad_attach_3dx.cpp
+++ b/engines/wintermute/ad/ad_attach_3dx.cpp
@@ -198,13 +198,13 @@ bool AdAttach3DX::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSt
 }
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdAttach3DX::scGetProperty(const Common::String &name) {
+ScValue *AdAttach3DX::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("attachment");
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ad/ad_attach_3dx.h b/engines/wintermute/ad/ad_attach_3dx.h
index c58e27b025e..0613defef64 100644
--- a/engines/wintermute/ad/ad_attach_3dx.h
+++ b/engines/wintermute/ad/ad_attach_3dx.h
@@ -49,7 +49,7 @@ public:
 	Common::String getParentBone();
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_entity.cpp b/engines/wintermute/ad/ad_entity.cpp
index 4949ef1c244..58a0a21fd6d 100644
--- a/engines/wintermute/ad/ad_entity.cpp
+++ b/engines/wintermute/ad/ad_entity.cpp
@@ -945,13 +945,13 @@ bool AdEntity::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdEntity::scGetProperty(const Common::String &name) {
+ScValue *AdEntity::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("entity");
 		return _scValue;
 	}
@@ -959,7 +959,7 @@ ScValue *AdEntity::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Item
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Item") {
+	else if (strcmp(name, "Item") == 0) {
 		if (_item) {
 			_scValue->setString(_item);
 		} else {
@@ -972,7 +972,7 @@ ScValue *AdEntity::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Subtype (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Subtype") {
+	else if (strcmp(name, "Subtype") == 0) {
 		if (_subtype == ENTITY_SOUND) {
 			_scValue->setString("sound");
 		} else {
@@ -985,7 +985,7 @@ ScValue *AdEntity::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// WalkToX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "WalkToX") {
+	else if (strcmp(name, "WalkToX") == 0) {
 		_scValue->setInt(_walkToX);
 		return _scValue;
 	}
@@ -993,7 +993,7 @@ ScValue *AdEntity::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// WalkToY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "WalkToY") {
+	else if (strcmp(name, "WalkToY") == 0) {
 		_scValue->setInt(_walkToY);
 		return _scValue;
 	}
@@ -1002,7 +1002,7 @@ ScValue *AdEntity::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// [FoxTail] HintX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "HintX") {
+	else if (strcmp(name, "HintX") == 0) {
 		_scValue->setInt(_hintX);
 		return _scValue;
 	}
@@ -1010,7 +1010,7 @@ ScValue *AdEntity::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// [FoxTail] HintY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "HintY") {
+	else if (strcmp(name, "HintY") == 0) {
 		_scValue->setInt(_hintY);
 		return _scValue;
 	}
@@ -1019,7 +1019,7 @@ ScValue *AdEntity::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// WalkToDirection
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "WalkToDirection") {
+	else if (strcmp(name, "WalkToDirection") == 0) {
 		_scValue->setInt((int)_walkToDir);
 		return _scValue;
 	}
@@ -1027,7 +1027,7 @@ ScValue *AdEntity::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Region (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Region") {
+	else if (strcmp(name, "Region") == 0) {
 		if (_region) {
 			_scValue->setNative(_region, true);
 		} else {
diff --git a/engines/wintermute/ad/ad_entity.h b/engines/wintermute/ad/ad_entity.h
index b7148dcffd2..431370e5065 100644
--- a/engines/wintermute/ad/ad_entity.h
+++ b/engines/wintermute/ad/ad_entity.h
@@ -60,7 +60,7 @@ public:
 #endif
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_game.cpp b/engines/wintermute/ad/ad_game.cpp
index b2d5b28e5f2..9a984062889 100644
--- a/engines/wintermute/ad/ad_game.cpp
+++ b/engines/wintermute/ad/ad_game.cpp
@@ -935,20 +935,20 @@ bool AdGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdGame::scGetProperty(const Common::String &name) {
+ScValue *AdGame::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("game");
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Scene
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Scene") {
+	else if (strcmp(name, "Scene") == 0) {
 		if (_scene) {
 			_scValue->setNative(_scene, true);
 		} else {
@@ -960,7 +960,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SelectedItem
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SelectedItem") {
+	else if (strcmp(name, "SelectedItem") == 0) {
 		//if (_selectedItem) _scValue->setString(_selectedItem->_name);
 		if (_selectedItem) {
 			_scValue->setNative(_selectedItem, true);
@@ -973,14 +973,14 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumItems
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumItems") {
+	else if (strcmp(name, "NumItems") == 0) {
 		return _invObject->scGetProperty(name);
 	}
 
 	//////////////////////////////////////////////////////////////////////////
 	// SmartItemCursor
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SmartItemCursor") {
+	else if (strcmp(name, "SmartItemCursor") == 0) {
 		_scValue->setBool(_smartItemCursor);
 		return _scValue;
 	}
@@ -988,7 +988,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// InventoryVisible
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "InventoryVisible") {
+	else if (strcmp(name, "InventoryVisible") == 0) {
 		_scValue->setBool(_inventoryBox && _inventoryBox->_visible);
 		return _scValue;
 	}
@@ -996,7 +996,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// InventoryScrollOffset
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "InventoryScrollOffset") {
+	else if (strcmp(name, "InventoryScrollOffset") == 0) {
 		if (_inventoryBox) {
 			_scValue->setInt(_inventoryBox->_scrollOffset);
 		} else {
@@ -1009,7 +1009,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ResponsesVisible (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ResponsesVisible") {
+	else if (strcmp(name, "ResponsesVisible") == 0) {
 		_scValue->setBool(_stateEx == GAME_WAITING_RESPONSE);
 		return _scValue;
 	}
@@ -1017,7 +1017,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// PrevScene / PreviousScene (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PrevScene" || name == "PreviousScene") {
+	else if (strcmp(name, "PrevScene") == 0 || strcmp(name, "PreviousScene") == 0) {
 		if (!_prevSceneName) {
 			_scValue->setString("");
 		} else {
@@ -1029,7 +1029,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// PrevSceneFilename / PreviousSceneFilename (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PrevSceneFilename" || name == "PreviousSceneFilename") {
+	else if (strcmp(name, "PrevSceneFilename") == 0 || strcmp(name, "PreviousSceneFilename") == 0) {
 		if (!_prevSceneFilename) {
 			_scValue->setString("");
 		} else {
@@ -1041,7 +1041,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// LastResponse (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "LastResponse") {
+	else if (strcmp(name, "LastResponse") == 0) {
 		if (!_responseBox || !_responseBox->_lastResponseText) {
 			_scValue->setString("");
 		} else {
@@ -1053,7 +1053,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// LastResponseOrig (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "LastResponseOrig") {
+	else if (strcmp(name, "LastResponseOrig") == 0) {
 		if (!_responseBox || !_responseBox->_lastResponseTextOrig) {
 			_scValue->setString("");
 		} else {
@@ -1065,7 +1065,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// InventoryObject
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "InventoryObject") {
+	else if (strcmp(name, "InventoryObject") == 0) {
 		if (_inventoryOwner == _invObject) {
 			_scValue->setNative(this, true);
 		} else {
@@ -1078,7 +1078,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TotalNumItems
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TotalNumItems") {
+	else if (strcmp(name, "TotalNumItems") == 0) {
 		_scValue->setInt(_items.getSize());
 		return _scValue;
 	}
@@ -1086,7 +1086,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TalkSkipButton
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TalkSkipButton") {
+	else if (strcmp(name, "TalkSkipButton") == 0) {
 		_scValue->setInt(_talkSkipButton);
 		return _scValue;
 	}
@@ -1094,7 +1094,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// VideoSkipButton
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "VideoSkipButton") {
+	else if (strcmp(name, "VideoSkipButton") == 0) {
 		_scValue->setInt(_videoSkipButton);
 		return _scValue;
 	}
@@ -1102,7 +1102,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ChangingScene
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ChangingScene") {
+	else if (strcmp(name, "ChangingScene") == 0) {
 		_scValue->setBool(_scheduledScene != nullptr);
 		return _scValue;
 	}
@@ -1110,7 +1110,7 @@ ScValue *AdGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// StartupScene
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "StartupScene") {
+	else if (strcmp(name, "StartupScene") == 0) {
 		if (!_startupScene) {
 			_scValue->setNULL();
 		} else {
diff --git a/engines/wintermute/ad/ad_game.h b/engines/wintermute/ad/ad_game.h
index ab6235d2868..241b58edacb 100644
--- a/engines/wintermute/ad/ad_game.h
+++ b/engines/wintermute/ad/ad_game.h
@@ -156,7 +156,7 @@ public:
 	bool externalCall(ScScript *script, ScStack *stack, ScStack *thisStack, char *name) override;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	bool validMouse();
diff --git a/engines/wintermute/ad/ad_item.cpp b/engines/wintermute/ad/ad_item.cpp
index f8046779029..621fc2d0540 100644
--- a/engines/wintermute/ad/ad_item.cpp
+++ b/engines/wintermute/ad/ad_item.cpp
@@ -642,13 +642,13 @@ bool AdItem::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdItem::scGetProperty(const Common::String &name) {
+ScValue *AdItem::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("item");
 		return _scValue;
 	}
@@ -656,7 +656,7 @@ ScValue *AdItem::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Name
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Name") {
+	else if (strcmp(name, "Name") == 0) {
 		_scValue->setString(_name);
 		return _scValue;
 	}
@@ -664,7 +664,7 @@ ScValue *AdItem::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// DisplayAmount
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "DisplayAmount") {
+	else if (strcmp(name, "DisplayAmount") == 0) {
 		_scValue->setBool(_displayAmount);
 		return _scValue;
 	}
@@ -672,7 +672,7 @@ ScValue *AdItem::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Amount
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Amount") {
+	else if (strcmp(name, "Amount") == 0) {
 		_scValue->setInt(_amount);
 		return _scValue;
 	}
@@ -680,7 +680,7 @@ ScValue *AdItem::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AmountOffsetX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AmountOffsetX") {
+	else if (strcmp(name, "AmountOffsetX") == 0) {
 		_scValue->setInt(_amountOffsetX);
 		return _scValue;
 	}
@@ -688,7 +688,7 @@ ScValue *AdItem::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AmountOffsetY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AmountOffsetY") {
+	else if (strcmp(name, "AmountOffsetY") == 0) {
 		_scValue->setInt(_amountOffsetY);
 		return _scValue;
 	}
@@ -696,7 +696,7 @@ ScValue *AdItem::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AmountAlign
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AmountAlign") {
+	else if (strcmp(name, "AmountAlign") == 0) {
 		_scValue->setInt(_amountAlign);
 		return _scValue;
 	}
@@ -704,7 +704,7 @@ ScValue *AdItem::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AmountString
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AmountString") {
+	else if (strcmp(name, "AmountString") == 0) {
 		if (!_amountString) {
 			_scValue->setNULL();
 		} else {
@@ -716,7 +716,7 @@ ScValue *AdItem::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// CursorCombined
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "CursorCombined") {
+	else if (strcmp(name, "CursorCombined") == 0) {
 		_scValue->setBool(_cursorCombined);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ad/ad_item.h b/engines/wintermute/ad/ad_item.h
index 149b9470b73..5eebf85a974 100644
--- a/engines/wintermute/ad/ad_item.h
+++ b/engines/wintermute/ad/ad_item.h
@@ -59,7 +59,7 @@ public:
 	bool loadBuffer(char *buffer, bool complete = true);
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_layer.cpp b/engines/wintermute/ad/ad_layer.cpp
index 0c6387d6d0c..e7752362793 100644
--- a/engines/wintermute/ad/ad_layer.cpp
+++ b/engines/wintermute/ad/ad_layer.cpp
@@ -377,13 +377,13 @@ bool AdLayer::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdLayer::scGetProperty(const Common::String &name) {
+ScValue *AdLayer::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("layer");
 		return _scValue;
 	}
@@ -391,7 +391,7 @@ ScValue *AdLayer::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumNodes (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumNodes") {
+	else if (strcmp(name, "NumNodes") == 0) {
 		_scValue->setInt(_nodes.getSize());
 		return _scValue;
 	}
@@ -399,7 +399,7 @@ ScValue *AdLayer::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Width
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Width") {
+	else if (strcmp(name, "Width") == 0) {
 		_scValue->setInt(_width);
 		return _scValue;
 	}
@@ -407,7 +407,7 @@ ScValue *AdLayer::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Height
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Height") {
+	else if (strcmp(name, "Height") == 0) {
 		_scValue->setInt(_height);
 		return _scValue;
 	}
@@ -415,7 +415,7 @@ ScValue *AdLayer::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Main (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Main") {
+	else if (strcmp(name, "Main") == 0) {
 		_scValue->setBool(_main);
 		return _scValue;
 	}
@@ -423,7 +423,7 @@ ScValue *AdLayer::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// CloseUp
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "CloseUp") {
+	else if (strcmp(name, "CloseUp") == 0) {
 		_scValue->setBool(_closeUp);
 		return _scValue;
 	}
@@ -431,7 +431,7 @@ ScValue *AdLayer::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Active
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Active") {
+	else if (strcmp(name, "Active") == 0) {
 		_scValue->setBool(_active);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ad/ad_layer.h b/engines/wintermute/ad/ad_layer.h
index 716abdaf42a..9df2d988fce 100644
--- a/engines/wintermute/ad/ad_layer.h
+++ b/engines/wintermute/ad/ad_layer.h
@@ -46,7 +46,7 @@ public:
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_object.cpp b/engines/wintermute/ad/ad_object.cpp
index 72a46138df3..1311d138548 100644
--- a/engines/wintermute/ad/ad_object.cpp
+++ b/engines/wintermute/ad/ad_object.cpp
@@ -649,13 +649,13 @@ bool AdObject::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdObject::scGetProperty(const Common::String &name) {
+ScValue *AdObject::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("object");
 		return _scValue;
 	}
@@ -663,7 +663,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Active
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Active") {
+	else if (strcmp(name, "Active") == 0) {
 		_scValue->setBool(_active);
 		return _scValue;
 	}
@@ -671,7 +671,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// IgnoreItems
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "IgnoreItems") {
+	else if (strcmp(name, "IgnoreItems") == 0) {
 		_scValue->setBool(_ignoreItems);
 		return _scValue;
 	}
@@ -679,7 +679,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SceneIndependent
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SceneIndependent") {
+	else if (strcmp(name, "SceneIndependent") == 0) {
 		_scValue->setBool(_sceneIndependent);
 		return _scValue;
 	}
@@ -687,7 +687,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SubtitlesWidth
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SubtitlesWidth") {
+	else if (strcmp(name, "SubtitlesWidth") == 0) {
 		_scValue->setInt(_subtitlesWidth);
 		return _scValue;
 	}
@@ -695,7 +695,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SubtitlesPosRelative
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SubtitlesPosRelative") {
+	else if (strcmp(name, "SubtitlesPosRelative") == 0) {
 		_scValue->setBool(_subtitlesModRelative);
 		return _scValue;
 	}
@@ -703,7 +703,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SubtitlesPosX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SubtitlesPosX") {
+	else if (strcmp(name, "SubtitlesPosX") == 0) {
 		_scValue->setInt(_subtitlesModX);
 		return _scValue;
 	}
@@ -711,7 +711,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SubtitlesPosY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SubtitlesPosY") {
+	else if (strcmp(name, "SubtitlesPosY") == 0) {
 		_scValue->setInt(_subtitlesModY);
 		return _scValue;
 	}
@@ -719,7 +719,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SubtitlesPosXCenter
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SubtitlesPosXCenter") {
+	else if (strcmp(name, "SubtitlesPosXCenter") == 0) {
 		_scValue->setBool(_subtitlesModXCenter);
 		return _scValue;
 	}
@@ -727,7 +727,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumItems (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumItems") {
+	else if (strcmp(name, "NumItems") == 0) {
 		_scValue->setInt(getInventory()->_takenItems.getSize());
 		return _scValue;
 	}
@@ -735,7 +735,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ParticleEmitter (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ParticleEmitter") {
+	else if (strcmp(name, "ParticleEmitter") == 0) {
 		if (_partEmitter) {
 			_scValue->setNative(_partEmitter, true);
 		} else {
@@ -748,7 +748,7 @@ ScValue *AdObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumAttachments (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumAttachments") {
+	else if (strcmp(name, "NumAttachments") == 0) {
 		_scValue->setInt(_attachmentsPre.getSize() + _attachmentsPost.getSize());
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ad/ad_object.h b/engines/wintermute/ad/ad_object.h
index 2c4294f0eb1..aedb4f19428 100644
--- a/engines/wintermute/ad/ad_object.h
+++ b/engines/wintermute/ad/ad_object.h
@@ -99,7 +99,7 @@ public:
 	AdRegion *_currentRegions[MAX_NUM_REGIONS];
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_object_3d.cpp b/engines/wintermute/ad/ad_object_3d.cpp
index 16068c289d2..90032518c9e 100644
--- a/engines/wintermute/ad/ad_object_3d.cpp
+++ b/engines/wintermute/ad/ad_object_3d.cpp
@@ -250,55 +250,55 @@ bool AdObject3D::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
 }
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdObject3D::scGetProperty(const Common::String &name) {
+ScValue *AdObject3D::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Angle
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Angle") {
+	if (strcmp(name, "Angle") == 0) {
 		_scValue->setFloat(_angle);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// PosX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PosX") {
+	else if (strcmp(name, "PosX") == 0) {
 		_scValue->setFloat(_posVector._x);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// PosY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PosY") {
+	else if (strcmp(name, "PosY") == 0) {
 		_scValue->setFloat(_posVector._y);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// PosZ
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PosZ") {
+	else if (strcmp(name, "PosZ") == 0) {
 		_scValue->setFloat(_posVector._z);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Velocity
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Velocity") {
+	else if (strcmp(name, "Velocity") == 0) {
 		_scValue->setFloat(_velocity);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// AngularVelocity / AngVelocity
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AngularVelocity" || name == "AngVelocity") {
+	else if (strcmp(name, "AngularVelocity") == 0 || strcmp(name, "AngVelocity") == 0) {
 		_scValue->setFloat(_angVelocity);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// DropToFloor
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "DropToFloor") {
+	else if (strcmp(name, "DropToFloor") == 0) {
 		_scValue->setBool(_dropToFloor);
 		return _scValue;
 	}
@@ -306,7 +306,7 @@ ScValue *AdObject3D::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ShadowType
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ShadowType") {
+	else if (strcmp(name, "ShadowType") == 0) {
 		_scValue->setInt(_shadowType);
 		return _scValue;
 	}
@@ -314,7 +314,7 @@ ScValue *AdObject3D::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Shadow (obsolete)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Shadow") {
+	else if (strcmp(name, "Shadow") == 0) {
 		_scValue->setBool(_shadowType > SHADOW_NONE);
 		return _scValue;
 	}
@@ -322,7 +322,7 @@ ScValue *AdObject3D::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SimpleShadow (obsolete)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SimpleShadow") {
+	else if (strcmp(name, "SimpleShadow") == 0) {
 		_scValue->setBool(_shadowType == SHADOW_SIMPLE);
 		return _scValue;
 	}
@@ -330,7 +330,7 @@ ScValue *AdObject3D::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ShadowColor
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ShadowColor") {
+	else if (strcmp(name, "ShadowColor") == 0) {
 		_scValue->setInt(_shadowColor);
 		return _scValue;
 	}
@@ -338,7 +338,7 @@ ScValue *AdObject3D::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Scale
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Scale") {
+	else if (strcmp(name, "Scale") == 0) {
 		_scValue->setFloat(_scale3D * 100.0f);
 		return _scValue;
 	}
@@ -346,7 +346,7 @@ ScValue *AdObject3D::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// DrawBackfaces
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "DrawBackfaces") {
+	else if (strcmp(name, "DrawBackfaces") == 0) {
 		_scValue->setBool(_drawBackfaces);
 		return _scValue;
 	}
@@ -354,7 +354,7 @@ ScValue *AdObject3D::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AmbientLightColor
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AmbientLightColor") {
+	else if (strcmp(name, "AmbientLightColor") == 0) {
 		if (_hasAmbientLightColor) {
 			_scValue->setInt(_ambientLightColor);
 		} else {
diff --git a/engines/wintermute/ad/ad_object_3d.h b/engines/wintermute/ad/ad_object_3d.h
index eac39d2bdce..8746b9f9347 100644
--- a/engines/wintermute/ad/ad_object_3d.h
+++ b/engines/wintermute/ad/ad_object_3d.h
@@ -57,7 +57,7 @@ public:
 	bool _hasAmbientLightColor;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_region.cpp b/engines/wintermute/ad/ad_region.cpp
index 8c6072c1146..c7e9c929cf6 100644
--- a/engines/wintermute/ad/ad_region.cpp
+++ b/engines/wintermute/ad/ad_region.cpp
@@ -244,13 +244,13 @@ bool AdRegion::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdRegion::scGetProperty(const Common::String &name) {
+ScValue *AdRegion::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("ad region");
 		return _scValue;
 	}
@@ -258,7 +258,7 @@ ScValue *AdRegion::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Name
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Name") {
+	else if (strcmp(name, "Name") == 0) {
 		_scValue->setString(_name);
 		return _scValue;
 	}
@@ -266,7 +266,7 @@ ScValue *AdRegion::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Blocked
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Blocked") {
+	else if (strcmp(name, "Blocked") == 0) {
 		_scValue->setBool(_blocked);
 		return _scValue;
 	}
@@ -274,7 +274,7 @@ ScValue *AdRegion::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Decoration
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Decoration") {
+	else if (strcmp(name, "Decoration") == 0) {
 		_scValue->setBool(_decoration);
 		return _scValue;
 	}
@@ -282,7 +282,7 @@ ScValue *AdRegion::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Scale
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Scale") {
+	else if (strcmp(name, "Scale") == 0) {
 		_scValue->setFloat(_zoom);
 		return _scValue;
 	}
@@ -290,7 +290,7 @@ ScValue *AdRegion::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AlphaColor
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AlphaColor") {
+	else if (strcmp(name, "AlphaColor") == 0) {
 		_scValue->setInt((int)_alpha);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ad/ad_region.h b/engines/wintermute/ad/ad_region.h
index 18889080c39..e7c91233fa5 100644
--- a/engines/wintermute/ad/ad_region.h
+++ b/engines/wintermute/ad/ad_region.h
@@ -46,7 +46,7 @@ public:
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_scene.cpp b/engines/wintermute/ad/ad_scene.cpp
index 9c2c56c3b73..f5fc8b909e1 100644
--- a/engines/wintermute/ad/ad_scene.cpp
+++ b/engines/wintermute/ad/ad_scene.cpp
@@ -2366,13 +2366,13 @@ bool AdScene::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 }
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdScene::scGetProperty(const Common::String &name) {
+ScValue *AdScene::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("scene");
 		return _scValue;
 	}
@@ -2380,7 +2380,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumLayers (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumLayers") {
+	else if (strcmp(name, "NumLayers") == 0) {
 		_scValue->setInt(_layers.getSize());
 		return _scValue;
 	}
@@ -2388,7 +2388,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumWaypointGroups (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumWaypointGroups") {
+	else if (strcmp(name, "NumWaypointGroups") == 0) {
 		_scValue->setInt(_waypointGroups.getSize());
 		return _scValue;
 	}
@@ -2396,7 +2396,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MainLayer (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MainLayer") {
+	else if (strcmp(name, "MainLayer") == 0) {
 		if (_mainLayer) {
 			_scValue->setNative(_mainLayer, true);
 		} else {
@@ -2409,7 +2409,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumFreeNodes (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumFreeNodes") {
+	else if (strcmp(name, "NumFreeNodes") == 0) {
 		_scValue->setInt(_objects.getSize());
 		return _scValue;
 	}
@@ -2417,7 +2417,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MouseX (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MouseX") {
+	else if (strcmp(name, "MouseX") == 0) {
 		int32 viewportX;
 		getViewportOffset(&viewportX);
 
@@ -2428,7 +2428,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MouseY (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MouseY") {
+	else if (strcmp(name, "MouseY") == 0) {
 		int32 viewportY;
 		getViewportOffset(nullptr, &viewportY);
 
@@ -2439,7 +2439,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AutoScroll
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AutoScroll") {
+	else if (strcmp(name, "AutoScroll") == 0) {
 		_scValue->setBool(_autoScroll);
 		return _scValue;
 	}
@@ -2448,7 +2448,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ShowGeometry
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ShowGeometry") {
+	else if (strcmp(name, "ShowGeometry") == 0) {
 		_scValue->setBool(_showGeometry);
 		return _scValue;
 	}
@@ -2457,7 +2457,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// PersistentState
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PersistentState") {
+	else if (strcmp(name, "PersistentState") == 0) {
 		_scValue->setBool(_persistentState);
 		return _scValue;
 	}
@@ -2465,7 +2465,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// PersistentStateSprites
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PersistentStateSprites") {
+	else if (strcmp(name, "PersistentStateSprites") == 0) {
 		_scValue->setBool(_persistentStateSprites);
 		return _scValue;
 	}
@@ -2473,7 +2473,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ScrollPixelsX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ScrollPixelsX") {
+	else if (strcmp(name, "ScrollPixelsX") == 0) {
 		_scValue->setInt(_scrollPixelsH);
 		return _scValue;
 	}
@@ -2481,7 +2481,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ScrollPixelsY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ScrollPixelsY") {
+	else if (strcmp(name, "ScrollPixelsY") == 0) {
 		_scValue->setInt(_scrollPixelsV);
 		return _scValue;
 	}
@@ -2489,7 +2489,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ScrollSpeedX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ScrollSpeedX") {
+	else if (strcmp(name, "ScrollSpeedX") == 0) {
 		_scValue->setInt(_scrollTimeH);
 		return _scValue;
 	}
@@ -2497,7 +2497,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ScrollSpeedY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ScrollSpeedY") {
+	else if (strcmp(name, "ScrollSpeedY") == 0) {
 		_scValue->setInt(_scrollTimeV);
 		return _scValue;
 	}
@@ -2505,7 +2505,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// OffsetX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "OffsetX") {
+	else if (strcmp(name, "OffsetX") == 0) {
 		_scValue->setInt(_offsetLeft);
 		return _scValue;
 	}
@@ -2513,7 +2513,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// OffsetY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "OffsetY") {
+	else if (strcmp(name, "OffsetY") == 0) {
 		_scValue->setInt(_offsetTop);
 		return _scValue;
 	}
@@ -2522,7 +2522,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// GeometryFile
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "GeometryFile") {
+	else if (strcmp(name, "GeometryFile") == 0) {
 		if (_geom && _geom->getFilename()) {
 			_scValue->setString(_geom->getFilename());
 		} else {
@@ -2534,7 +2534,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// WaypointsHeight
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "WaypointsHeight") {
+	else if (strcmp(name, "WaypointsHeight") == 0) {
 		if (_geom) {
 			_scValue->setFloat(_geom->_waypointHeight);
 		} else {
@@ -2547,7 +2547,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Width (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Width") {
+	else if (strcmp(name, "Width") == 0) {
 		if (_mainLayer) {
 			_scValue->setInt(_mainLayer->_width);
 		} else {
@@ -2559,7 +2559,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Height (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Height") {
+	else if (strcmp(name, "Height") == 0) {
 		if (_mainLayer) {
 			_scValue->setInt(_mainLayer->_height);
 		} else {
@@ -2572,7 +2572,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MaxShadowType
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MaxShadowType") {
+	else if (strcmp(name, "MaxShadowType") == 0) {
 		_scValue->setInt(_maxShadowType);
 		return _scValue;
 	}
@@ -2580,7 +2580,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AmbientLightColor
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AmbientLightColor") {
+	else if (strcmp(name, "AmbientLightColor") == 0) {
 		_scValue->setInt(_ambientLightColor);
 		return _scValue;
 	}
@@ -2588,7 +2588,7 @@ ScValue *AdScene::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumLights
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumLights") {
+	else if (strcmp(name, "NumLights") == 0) {
 		if (!_geom) {
 			_scValue->setInt(0);
 		} else {
diff --git a/engines/wintermute/ad/ad_scene.h b/engines/wintermute/ad/ad_scene.h
index 333932d4e8c..c1b7709f4ca 100644
--- a/engines/wintermute/ad/ad_scene.h
+++ b/engines/wintermute/ad/ad_scene.h
@@ -189,7 +189,7 @@ public:
 	void onLayerResized(AdLayer *layer);
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_talk_holder.cpp b/engines/wintermute/ad/ad_talk_holder.cpp
index cb4eaae1916..c9699880126 100644
--- a/engines/wintermute/ad/ad_talk_holder.cpp
+++ b/engines/wintermute/ad/ad_talk_holder.cpp
@@ -356,13 +356,13 @@ bool AdTalkHolder::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisS
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdTalkHolder::scGetProperty(const Common::String &name) {
+ScValue *AdTalkHolder::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("talk-holder");
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ad/ad_talk_holder.h b/engines/wintermute/ad/ad_talk_holder.h
index e8b3443361b..c279cf89c16 100644
--- a/engines/wintermute/ad/ad_talk_holder.h
+++ b/engines/wintermute/ad/ad_talk_holder.h
@@ -44,7 +44,7 @@ public:
 	~AdTalkHolder() override;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ad/ad_waypoint_group.cpp b/engines/wintermute/ad/ad_waypoint_group.cpp
index da784556cdb..a92b6b395d9 100644
--- a/engines/wintermute/ad/ad_waypoint_group.cpp
+++ b/engines/wintermute/ad/ad_waypoint_group.cpp
@@ -208,13 +208,13 @@ bool AdWaypointGroup::persist(BasePersistenceManager *persistMgr) {
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *AdWaypointGroup::scGetProperty(const Common::String &name) {
+ScValue *AdWaypointGroup::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("waypoint-group");
 		return _scValue;
 	}
@@ -222,7 +222,7 @@ ScValue *AdWaypointGroup::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Active
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Active") {
+	else if (strcmp(name, "Active") == 0) {
 		_scValue->setBool(_active);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ad/ad_waypoint_group.h b/engines/wintermute/ad/ad_waypoint_group.h
index 4d6b13b4863..897f85dba31 100644
--- a/engines/wintermute/ad/ad_waypoint_group.h
+++ b/engines/wintermute/ad/ad_waypoint_group.h
@@ -48,7 +48,7 @@ public:
 	~AdWaypointGroup() override;
 	BaseArray<BasePoint *> _points;
 	int32 _editorSelectedPoint;
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 };
 
diff --git a/engines/wintermute/base/base_frame.cpp b/engines/wintermute/base/base_frame.cpp
index 3f906569105..4724e787f93 100644
--- a/engines/wintermute/base/base_frame.cpp
+++ b/engines/wintermute/base/base_frame.cpp
@@ -623,7 +623,7 @@ bool BaseFrame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStac
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *BaseFrame::scGetProperty(const Common::String &name) {
+ScValue *BaseFrame::scGetProperty(const char *name) {
 	if (!_scValue) {
 		_scValue = new ScValue(_game);
 	}
@@ -632,7 +632,7 @@ ScValue *BaseFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Type (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("frame");
 		return _scValue;
 	}
@@ -640,7 +640,7 @@ ScValue *BaseFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Delay
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Delay") {
+	else if (strcmp(name, "Delay") == 0) {
 		_scValue->setInt(_delay);
 		return _scValue;
 	}
@@ -648,7 +648,7 @@ ScValue *BaseFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Keyframe
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Keyframe") {
+	else if (strcmp(name, "Keyframe") == 0) {
 		_scValue->setBool(_keyframe);
 		return _scValue;
 	}
@@ -656,7 +656,7 @@ ScValue *BaseFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// KillSounds
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "KillSounds") {
+	else if (strcmp(name, "KillSounds") == 0) {
 		_scValue->setBool(_killSound);
 		return _scValue;
 	}
@@ -664,7 +664,7 @@ ScValue *BaseFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MoveX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MoveX") {
+	else if (strcmp(name, "MoveX") == 0) {
 		_scValue->setInt(_moveX);
 		return _scValue;
 	}
@@ -672,7 +672,7 @@ ScValue *BaseFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MoveY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MoveY") {
+	else if (strcmp(name, "MoveY") == 0) {
 		_scValue->setInt(_moveY);
 		return _scValue;
 	}
@@ -680,7 +680,7 @@ ScValue *BaseFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumSubframes (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumSubframes") {
+	else if (strcmp(name, "NumSubframes") == 0) {
 		_scValue->setInt(_subframes.getSize());
 		return _scValue;
 	}
@@ -688,7 +688,7 @@ ScValue *BaseFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumEvents (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumEvents") {
+	else if (strcmp(name, "NumEvents") == 0) {
 		_scValue->setInt(_applyEvent.getSize());
 		return _scValue;
 	}
diff --git a/engines/wintermute/base/base_frame.h b/engines/wintermute/base/base_frame.h
index 9792d291fcf..bfa3cb108dc 100644
--- a/engines/wintermute/base/base_frame.h
+++ b/engines/wintermute/base/base_frame.h
@@ -61,7 +61,7 @@ public:
 	BaseArray<const char *> _applyEvent;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/base_game.cpp b/engines/wintermute/base/base_game.cpp
index 6feb7a326cd..97a90521535 100644
--- a/engines/wintermute/base/base_game.cpp
+++ b/engines/wintermute/base/base_game.cpp
@@ -265,7 +265,8 @@ BaseGame::BaseGame(const Common::String &targetName) : BaseObject(this), _target
 	_editorResolutionHeight = 0;
 #endif
 
-	_localSaveDir = "saves";
+	_localSaveDir = nullptr;
+	BaseUtils::setString(&_localSaveDir, "saves");
 
 	_saveDirChecked = false;
 
@@ -2744,27 +2745,27 @@ bool BaseGame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *BaseGame::scGetProperty(const Common::String &name) {
+ScValue *BaseGame::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("game");
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Name
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Name") {
+	else if (strcmp(name, "Name") == 0) {
 		_scValue->setString(_name);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Hwnd (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Hwnd") {
+	else if (strcmp(name, "Hwnd") == 0) {
 		_scValue->setInt((int)_renderer->_window);
 		return _scValue;
 	}
@@ -2772,7 +2773,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// CurrentTime (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "CurrentTime") {
+	else if (strcmp(name, "CurrentTime") == 0) {
 		_scValue->setInt((int)_timer);
 		return _scValue;
 	}
@@ -2780,7 +2781,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// WindowsTime (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "WindowsTime") {
+	else if (strcmp(name, "WindowsTime") == 0) {
 		_scValue->setInt((int)g_system->getMillis());
 		return _scValue;
 	}
@@ -2788,7 +2789,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// WindowedMode (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "WindowedMode") {
+	else if (strcmp(name, "WindowedMode") == 0) {
 		_scValue->setBool(_renderer->isWindowed());
 		return _scValue;
 	}
@@ -2796,7 +2797,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MouseX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MouseX") {
+	else if (strcmp(name, "MouseX") == 0) {
 		_scValue->setInt(_mousePos.x);
 		return _scValue;
 	}
@@ -2804,7 +2805,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MouseY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MouseY") {
+	else if (strcmp(name, "MouseY") == 0) {
 		_scValue->setInt(_mousePos.y);
 		return _scValue;
 	}
@@ -2812,7 +2813,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MainObject
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MainObject") {
+	else if (strcmp(name, "MainObject") == 0) {
 		_scValue->setNative(_mainObject, true);
 		return _scValue;
 	}
@@ -2820,7 +2821,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ActiveObject (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ActiveObject") {
+	else if (strcmp(name, "ActiveObject") == 0) {
 		_scValue->setNative(_activeObject, true);
 		return _scValue;
 	}
@@ -2828,7 +2829,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ScreenWidth (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ScreenWidth") {
+	else if (strcmp(name, "ScreenWidth") == 0) {
 		_scValue->setInt(_renderer->getWidth());
 		return _scValue;
 	}
@@ -2836,7 +2837,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ScreenHeight (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ScreenHeight") {
+	else if (strcmp(name, "ScreenHeight") == 0) {
 		_scValue->setInt(_renderer->getHeight());
 		return _scValue;
 	}
@@ -2844,7 +2845,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Interactive
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Interactive") {
+	else if (strcmp(name, "Interactive") == 0) {
 		_scValue->setBool(_interactive);
 		return _scValue;
 	}
@@ -2852,7 +2853,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// DebugMode (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "DebugMode") {
+	else if (strcmp(name, "DebugMode") == 0) {
 		_scValue->setBool(_debugDebugMode);
 		return _scValue;
 	}
@@ -2860,7 +2861,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SoundAvailable (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SoundAvailable") {
+	else if (strcmp(name, "SoundAvailable") == 0) {
 		_scValue->setBool(_soundMgr->_soundAvailable);
 		return _scValue;
 	}
@@ -2868,7 +2869,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SFXVolume
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SFXVolume") {
+	else if (strcmp(name, "SFXVolume") == 0) {
 		_game->LOG(0, "**Warning** The SFXVolume attribute is obsolete");
 		_scValue->setInt(_soundMgr->getVolumePercent(Audio::Mixer::kSFXSoundType));
 		return _scValue;
@@ -2877,7 +2878,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SpeechVolume
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SpeechVolume") {
+	else if (strcmp(name, "SpeechVolume") == 0) {
 		_game->LOG(0, "**Warning** The SpeechVolume attribute is obsolete");
 		_scValue->setInt(_soundMgr->getVolumePercent(Audio::Mixer::kSpeechSoundType));
 		return _scValue;
@@ -2886,7 +2887,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MusicVolume
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MusicVolume") {
+	else if (strcmp(name, "MusicVolume") == 0) {
 		_game->LOG(0, "**Warning** The MusicVolume attribute is obsolete");
 		_scValue->setInt(_soundMgr->getVolumePercent(Audio::Mixer::kMusicSoundType));
 		return _scValue;
@@ -2895,7 +2896,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MasterVolume
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MasterVolume") {
+	else if (strcmp(name, "MasterVolume") == 0) {
 		_game->LOG(0, "**Warning** The MasterVolume attribute is obsolete");
 		_scValue->setInt(_soundMgr->getMasterVolumePercent());
 		return _scValue;
@@ -2904,7 +2905,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Keyboard (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Keyboard") {
+	else if (strcmp(name, "Keyboard") == 0) {
 		if (_keyboardState)
 			_scValue->setNative(_keyboardState, true);
 		else
@@ -2916,7 +2917,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Subtitles
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Subtitles") {
+	else if (strcmp(name, "Subtitles") == 0) {
 		_scValue->setBool(_subtitles);
 		return _scValue;
 	}
@@ -2924,14 +2925,14 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SubtitlesSpeed
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SubtitlesSpeed") {
+	else if (strcmp(name, "SubtitlesSpeed") == 0) {
 		_scValue->setInt(_subtitlesSpeed);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// VideoSubtitles
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "VideoSubtitles") {
+	else if (strcmp(name, "VideoSubtitles") == 0) {
 		_scValue->setBool(_videoSubtitles);
 		return _scValue;
 	}
@@ -2939,7 +2940,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// FPS (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "FPS") {
+	else if (strcmp(name, "FPS") == 0) {
 		_scValue->setInt(_fps);
 		return _scValue;
 	}
@@ -2948,7 +2949,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Shadows (obsolete)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Shadows") {
+	else if (strcmp(name, "Shadows") == 0) {
 		_scValue->setBool(_maxShadowType > SHADOW_NONE);
 		return _scValue;
 	}
@@ -2956,7 +2957,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SimpleShadows (obsolete)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SimpleShadows") {
+	else if (strcmp(name, "SimpleShadows") == 0) {
 		_scValue->setBool(_maxShadowType == SHADOW_SIMPLE);
 		return _scValue;
 	}
@@ -2964,7 +2965,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SupportsRealTimeShadows (obsolete)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SupportsRealTimeShadows") {
+	else if (strcmp(name, "SupportsRealTimeShadows") == 0) {
 		_renderer3D->enableShadows();
 		_scValue->setBool(_supportsRealTimeShadows);
 		return _scValue;
@@ -2973,7 +2974,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MaxShadowType
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MaxShadowType") {
+	else if (strcmp(name, "MaxShadowType") == 0) {
 		_scValue->setInt(_maxShadowType);
 		return _scValue;
 	}
@@ -2982,7 +2983,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AcceleratedMode / Accelerated (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AcceleratedMode" || name == "Accelerated") {
+	else if (strcmp(name, "AcceleratedMode") == 0 || strcmp(name, "Accelerated") == 0) {
 		_scValue->setBool(_useD3D);
 		return _scValue;
 	}
@@ -2990,7 +2991,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TextEncoding
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TextEncoding") {
+	else if (strcmp(name, "TextEncoding") == 0) {
 		_scValue->setInt(_textEncoding);
 		return _scValue;
 	}
@@ -2998,7 +2999,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TextRTL
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TextRTL") {
+	else if (strcmp(name, "TextRTL") == 0) {
 		_scValue->setBool(_textRTL);
 		return _scValue;
 	}
@@ -3006,7 +3007,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SoundBufferSize
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SoundBufferSize") {
+	else if (strcmp(name, "SoundBufferSize") == 0) {
 		_scValue->setInt(_soundBufferSizeSec);
 		return _scValue;
 	}
@@ -3014,7 +3015,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SuspendedRendering
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SuspendedRendering") {
+	else if (strcmp(name, "SuspendedRendering") == 0) {
 		_scValue->setBool(_suspendedRendering);
 		return _scValue;
 	}
@@ -3022,7 +3023,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SuppressScriptErrors
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SuppressScriptErrors") {
+	else if (strcmp(name, "SuppressScriptErrors") == 0) {
 		_scValue->setBool(_suppressScriptErrors);
 		return _scValue;
 	}
@@ -3030,7 +3031,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Frozen
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Frozen") {
+	else if (strcmp(name, "Frozen") == 0) {
 		_scValue->setBool(_state == GAME_FROZEN);
 		return _scValue;
 	}
@@ -3039,7 +3040,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Direct3DDevice
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Direct3DDevice") {
+	else if (strcmp(name, "Direct3DDevice") == 0) {
 		if (_game->_useD3D)
 			_scValue->setInt((int)('D3DH'));
 		else
@@ -3050,7 +3051,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// DirectDrawInterface
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "DirectDrawInterface") {
+	else if (strcmp(name, "DirectDrawInterface") == 0) {
 		if (!_game->_useD3D)
 			_scValue->setInt((int)('DDIH'));
 		else
@@ -3062,7 +3063,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AccTTSEnabled
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AccTTSEnabled") {
+	else if (strcmp(name, "AccTTSEnabled") == 0) {
 		//m_ScValue->SetBool(m_AccessTTSEnabled);
 		_scValue->setBool(false);
 		return _scValue;
@@ -3071,7 +3072,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AccTTSTalk
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AccTTSTalk") {
+	else if (strcmp(name, "AccTTSTalk") == 0) {
 		//m_ScValue->SetBool(m_AccessTTSTalk);
 		_scValue->setBool(false);
 		return _scValue;
@@ -3080,7 +3081,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AccTTSCaptions
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AccTTSCaptions") {
+	else if (strcmp(name, "AccTTSCaptions") == 0) {
 		_scValue->setBool(false);
 		return _scValue;
 	}
@@ -3088,7 +3089,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AccTTSKeypress
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AccTTSKeypress") {
+	else if (strcmp(name, "AccTTSKeypress") == 0) {
 		_scValue->setBool(false);
 		return _scValue;
 	}
@@ -3096,7 +3097,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AccKeyboardEnabled
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AccKeyboardEnabled") {
+	else if (strcmp(name, "AccKeyboardEnabled") == 0) {
 		_scValue->setBool(false);
 		return _scValue;
 	}
@@ -3104,7 +3105,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AccKeyboardCursorSkip
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AccKeyboardCursorSkip") {
+	else if (strcmp(name, "AccKeyboardCursorSkip") == 0) {
 		_scValue->setBool(false);
 		return _scValue;
 	}
@@ -3112,7 +3113,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AccKeyboardPause
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AccKeyboardPause") {
+	else if (strcmp(name, "AccKeyboardPause") == 0) {
 		_scValue->setBool(false);
 		return _scValue;
 	}
@@ -3121,7 +3122,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// UsedMemory
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "UsedMemory") {
+	else if (strcmp(name, "UsedMemory") == 0) {
 		// wme only returns a non-zero value in debug mode
 		_scValue->setInt(0);
 		return _scValue;
@@ -3130,7 +3131,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MaxActiveLights
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MaxActiveLights") {
+	else if (strcmp(name, "MaxActiveLights") == 0) {
 		if (_useD3D) {
 			BaseRenderer3D *renderer = _game->_renderer3D;
 			_scValue->setInt(renderer->getMaxActiveLights());
@@ -3144,7 +3145,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// HardwareTL
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "HardwareTL") {
+	else if (strcmp(name, "HardwareTL") == 0) {
 		// always support hardware transformations and lights
 		_scValue->setBool(true);
 		return _scValue;
@@ -3154,7 +3155,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AutorunDisabled
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AutorunDisabled") {
+	else if (strcmp(name, "AutorunDisabled") == 0) {
 		_scValue->setBool(_autorunDisabled);
 		return _scValue;
 	}
@@ -3162,7 +3163,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SaveDirectory (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SaveDirectory") {
+	else if (strcmp(name, "SaveDirectory") == 0) {
 		AnsiString dataDir = "saves"; // See also: SXDirectory::scGetProperty("TempDirectory")
 		_scValue->setString(dataDir.c_str());
 		return _scValue;
@@ -3171,7 +3172,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MostRecentSaveSlot (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MostRecentSaveSlot") {
+	else if (strcmp(name, "MostRecentSaveSlot") == 0) {
 		if (!ConfMan.hasKey("most_recent_saveslot")) {
 			_scValue->setInt(-1);
 		} else {
@@ -3183,7 +3184,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AutoSaveOnExit
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AutoSaveOnExit") {
+	else if (strcmp(name, "AutoSaveOnExit") == 0) {
 		_scValue->setBool(_autoSaveOnExit);
 		return _scValue;
 	}
@@ -3191,7 +3192,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AutoSaveSlot
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AutoSaveSlot") {
+	else if (strcmp(name, "AutoSaveSlot") == 0) {
 		_scValue->setInt(_autoSaveSlot);
 		return _scValue;
 	}
@@ -3199,7 +3200,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// CursorHidden
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "CursorHidden") {
+	else if (strcmp(name, "CursorHidden") == 0) {
 		_scValue->setBool(_cursorHidden);
 		return _scValue;
 	}
@@ -3209,7 +3210,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	// [FoxTail] SystemLanguage (RO)
 	// Returns Steam API language name string
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SystemLanguage") {
+	else if (strcmp(name, "SystemLanguage") == 0) {
 		switch (Common::parseLanguage(ConfMan.get("language"))) {
 		case Common::CS_CZE:
 			_scValue->setString("czech");
@@ -3286,7 +3287,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	// Used to display full game version at options.script in UpdateControls()
 	// Returns FoxTail engine version number as a dotted string
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "BuildVersion") {
+	else if (strcmp(name, "BuildVersion") == 0) {
 		if (BaseEngine::instance().getTargetExecutable() == FOXTAIL_1_2_227) {
 			_scValue->setString("1.2.227");
 		} else if (BaseEngine::instance().getTargetExecutable() == FOXTAIL_1_2_230) {
@@ -3312,7 +3313,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	// Used to display full game version at options.script in UpdateControls()
 	// Returns FoxTail version number as a string
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "GameVersion") {
+	else if (strcmp(name, "GameVersion") == 0) {
 		uint32 gameVersion = 0;
 		BaseFileManager *fileManager = BaseEngine::instance().getFileManager();
 		if (fileManager) {
@@ -3328,7 +3329,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Platform (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Platform") {
+	else if (strcmp(name, "Platform") == 0) {
 		_scValue->setString(BasePlatform::getPlatformName().c_str());
 		return _scValue;
 	}
@@ -3336,7 +3337,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// DeviceType (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "DeviceType") {
+	else if (strcmp(name, "DeviceType") == 0) {
 		_scValue->setString(getDeviceType().c_str());
 		return _scValue;
 	}
@@ -3344,7 +3345,7 @@ ScValue *BaseGame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Store (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Store") {
+	else if (strcmp(name, "Store") == 0) {
 		_scValue->setNULL();
 		error("Request for a SXStore-object, which is not supported by ScummVM");
 
diff --git a/engines/wintermute/base/base_game.h b/engines/wintermute/base/base_game.h
index 3def6e9b11d..49eb5f19812 100644
--- a/engines/wintermute/base/base_game.h
+++ b/engines/wintermute/base/base_game.h
@@ -132,7 +132,7 @@ public:
 	void DEBUG_DumpClassRegistry();
 	bool setWaitCursor(const char *filename);
 
-	Common::String _localSaveDir;
+	char *_localSaveDir;
 	bool _saveDirChecked;
 
 #ifdef ENABLE_WME3D
@@ -258,7 +258,7 @@ public:
 	virtual bool externalCall(ScScript *script, ScStack *stack, ScStack *thisStack, char *name);
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/base_keyboard_state.cpp b/engines/wintermute/base/base_keyboard_state.cpp
index 2d2e66ac8ea..39e4030bfd4 100644
--- a/engines/wintermute/base/base_keyboard_state.cpp
+++ b/engines/wintermute/base/base_keyboard_state.cpp
@@ -360,13 +360,13 @@ bool BaseKeyboardState::scCallMethod(ScScript *script, ScStack *stack, ScStack *
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *BaseKeyboardState::scGetProperty(const Common::String &name) {
+ScValue *BaseKeyboardState::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("keyboard");
 		return _scValue;
 	}
@@ -374,7 +374,7 @@ ScValue *BaseKeyboardState::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Key
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Key") {
+	else if (strcmp(name, "Key") == 0) {
 		if (_currentPrintable) {
 			char key[2];
 			key[0] = (char)_currentCharCode;
@@ -390,7 +390,7 @@ ScValue *BaseKeyboardState::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Printable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Printable") {
+	else if (strcmp(name, "Printable") == 0) {
 		_scValue->setBool(_currentPrintable);
 		return _scValue;
 	}
@@ -398,7 +398,7 @@ ScValue *BaseKeyboardState::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// KeyCode
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "KeyCode") {
+	else if (strcmp(name, "KeyCode") == 0) {
 		_scValue->setInt(_currentCharCode);
 		return _scValue;
 	}
@@ -406,7 +406,7 @@ ScValue *BaseKeyboardState::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// IsShift
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "IsShift") {
+	else if (strcmp(name, "IsShift") == 0) {
 		_scValue->setBool(_currentShift);
 		return _scValue;
 	}
@@ -414,7 +414,7 @@ ScValue *BaseKeyboardState::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// IsAlt
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "IsAlt") {
+	else if (strcmp(name, "IsAlt") == 0) {
 		_scValue->setBool(_currentAlt);
 		return _scValue;
 	}
@@ -422,7 +422,7 @@ ScValue *BaseKeyboardState::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// IsControl
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "IsControl") {
+	else if (strcmp(name, "IsControl") == 0) {
 		_scValue->setBool(_currentControl);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/base/base_keyboard_state.h b/engines/wintermute/base/base_keyboard_state.h
index 32527f1f181..8c46b2eb6d0 100644
--- a/engines/wintermute/base/base_keyboard_state.h
+++ b/engines/wintermute/base/base_keyboard_state.h
@@ -56,7 +56,7 @@ public:
 	bool readKey(Common::Event *event);
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/base_object.cpp b/engines/wintermute/base/base_object.cpp
index b99231dae95..cd58a000e0a 100644
--- a/engines/wintermute/base/base_object.cpp
+++ b/engines/wintermute/base/base_object.cpp
@@ -630,13 +630,13 @@ bool BaseObject::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *BaseObject::scGetProperty(const Common::String &name) {
+ScValue *BaseObject::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("object");
 		return _scValue;
 	}
@@ -644,7 +644,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Caption
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Caption") {
+	else if (strcmp(name, "Caption") == 0) {
 		_scValue->setString(getCaption(1));
 		return _scValue;
 	}
@@ -652,7 +652,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// X
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "X") {
+	else if (strcmp(name, "X") == 0) {
 		_scValue->setInt(_posX);
 		return _scValue;
 	}
@@ -660,7 +660,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Y
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Y") {
+	else if (strcmp(name, "Y") == 0) {
 		_scValue->setInt(_posY);
 		return _scValue;
 	}
@@ -668,7 +668,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Height (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Height") {
+	else if (strcmp(name, "Height") == 0) {
 		_scValue->setInt(getHeight());
 		return _scValue;
 	}
@@ -676,7 +676,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Ready (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Ready") {
+	else if (strcmp(name, "Ready") == 0) {
 		_scValue->setBool(_ready);
 		return _scValue;
 	}
@@ -684,7 +684,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Movable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Movable") {
+	else if (strcmp(name, "Movable") == 0) {
 		_scValue->setBool(_movable);
 		return _scValue;
 	}
@@ -692,7 +692,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Registrable/Interactive
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Registrable" || name == "Interactive") {
+	else if (strcmp(name, "Registrable") == 0 || strcmp(name, "Interactive") == 0) {
 		_scValue->setBool(_registrable);
 		return _scValue;
 	}
@@ -700,21 +700,21 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Zoomable/Scalable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Zoomable" || name == "Scalable") {
+	else if (strcmp(name, "Zoomable") == 0 || strcmp(name, "Scalable") == 0) {
 		_scValue->setBool(_zoomable);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Rotatable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Rotatable") {
+	else if (strcmp(name, "Rotatable") == 0) {
 		_scValue->setBool(_rotatable);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// AlphaColor
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AlphaColor") {
+	else if (strcmp(name, "AlphaColor") == 0) {
 		_scValue->setInt((int)_alphaColor);
 		return _scValue;
 	}
@@ -722,7 +722,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// BlendMode
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "BlendMode") {
+	else if (strcmp(name, "BlendMode") == 0) {
 		_scValue->setInt((int)_blendMode);
 		return _scValue;
 	}
@@ -730,7 +730,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Scale
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Scale") {
+	else if (strcmp(name, "Scale") == 0) {
 		if (_scale < 0) {
 			_scValue->setNULL();
 		} else {
@@ -742,7 +742,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ScaleX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ScaleX") {
+	else if (strcmp(name, "ScaleX") == 0) {
 		if (_scaleX < 0) {
 			_scValue->setNULL();
 		} else {
@@ -754,7 +754,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ScaleY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ScaleY") {
+	else if (strcmp(name, "ScaleY") == 0) {
 		if (_scaleY < 0) {
 			_scValue->setNULL();
 		} else {
@@ -766,7 +766,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// RelativeScale
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "RelativeScale") {
+	else if (strcmp(name, "RelativeScale") == 0) {
 		_scValue->setFloat((double)_relativeScale);
 		return _scValue;
 	}
@@ -774,7 +774,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Rotate
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Rotate") {
+	else if (strcmp(name, "Rotate") == 0) {
 		if (!_rotateValid) {
 			_scValue->setNULL();
 		} else {
@@ -786,7 +786,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// RelativeRotate
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "RelativeRotate") {
+	else if (strcmp(name, "RelativeRotate") == 0) {
 		_scValue->setFloat((double)_relativeRotate);
 		return _scValue;
 	}
@@ -794,14 +794,14 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Colorable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Colorable") {
+	else if (strcmp(name, "Colorable") == 0) {
 		_scValue->setBool(_shadowable);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// SoundPanning
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SoundPanning") {
+	else if (strcmp(name, "SoundPanning") == 0) {
 		_scValue->setBool(_autoSoundPanning);
 		return _scValue;
 	}
@@ -809,7 +809,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SaveState
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SaveState") {
+	else if (strcmp(name, "SaveState") == 0) {
 		_scValue->setBool(_saveState);
 		return _scValue;
 	}
@@ -817,7 +817,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NonIntMouseEvents
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NonIntMouseEvents") {
+	else if (strcmp(name, "NonIntMouseEvents") == 0) {
 		_scValue->setBool(_nonIntMouseEvents);
 		return _scValue;
 	}
@@ -825,7 +825,7 @@ ScValue *BaseObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AccCaption
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AccCaption") {
+	else if (strcmp(name, "AccCaption") == 0) {
 /*		if (m_AccessCaption)
 			m_ScValue->SetString(m_AccessCaption);
 		else*/
diff --git a/engines/wintermute/base/base_object.h b/engines/wintermute/base/base_object.h
index a4330e83027..cd0675d7cf9 100644
--- a/engines/wintermute/base/base_object.h
+++ b/engines/wintermute/base/base_object.h
@@ -160,7 +160,7 @@ public:
 
 public:
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/base_region.cpp b/engines/wintermute/base/base_region.cpp
index 1ebe4990668..00c5536664f 100644
--- a/engines/wintermute/base/base_region.cpp
+++ b/engines/wintermute/base/base_region.cpp
@@ -328,13 +328,13 @@ bool BaseRegion::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *BaseRegion::scGetProperty(const Common::String &name) {
+ScValue *BaseRegion::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("region");
 		return _scValue;
 	}
@@ -342,7 +342,7 @@ ScValue *BaseRegion::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Name
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Name") {
+	else if (strcmp(name, "Name") == 0) {
 		_scValue->setString(_name);
 		return _scValue;
 	}
@@ -350,7 +350,7 @@ ScValue *BaseRegion::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Active
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Active") {
+	else if (strcmp(name, "Active") == 0) {
 		_scValue->setBool(_active);
 		return _scValue;
 	}
@@ -358,7 +358,7 @@ ScValue *BaseRegion::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumPoints
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumPoints") {
+	else if (strcmp(name, "NumPoints") == 0) {
 		_scValue->setInt(_points.getSize());
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/base/base_region.h b/engines/wintermute/base/base_region.h
index 3b90b17c304..8dfcd366607 100644
--- a/engines/wintermute/base/base_region.h
+++ b/engines/wintermute/base/base_region.h
@@ -57,7 +57,7 @@ public:
 	virtual bool saveAsText(BaseDynamicBuffer *buffer, int indent, const char *nameOverride);
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/base_script_holder.cpp b/engines/wintermute/base/base_script_holder.cpp
index 81e461fb16f..bd5494a1c3a 100644
--- a/engines/wintermute/base/base_script_holder.cpp
+++ b/engines/wintermute/base/base_script_holder.cpp
@@ -218,13 +218,13 @@ bool BaseScriptHolder::scCallMethod(ScScript *script, ScStack *stack, ScStack *t
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *BaseScriptHolder::scGetProperty(const Common::String &name) {
+ScValue *BaseScriptHolder::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("script_holder");
 		return _scValue;
 	}
@@ -232,7 +232,7 @@ ScValue *BaseScriptHolder::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Name
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Name") {
+	else if (strcmp(name, "Name") == 0) {
 		_scValue->setString(_name);
 		return _scValue;
 	}
@@ -240,7 +240,7 @@ ScValue *BaseScriptHolder::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Filename (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Filename") {
+	else if (strcmp(name, "Filename") == 0) {
 		_scValue->setString(_filename);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/base/base_script_holder.h b/engines/wintermute/base/base_script_holder.h
index 1e401ac6d9b..444870ac1cc 100644
--- a/engines/wintermute/base/base_script_holder.h
+++ b/engines/wintermute/base/base_script_holder.h
@@ -61,7 +61,7 @@ public:
 	BaseArray<ScScript *> _scripts;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/base_scriptable.cpp b/engines/wintermute/base/base_scriptable.cpp
index e0d28e3ccbd..2fbc8e082e1 100644
--- a/engines/wintermute/base/base_scriptable.cpp
+++ b/engines/wintermute/base/base_scriptable.cpp
@@ -74,12 +74,12 @@ bool BaseScriptable::scCallMethod(ScScript *script, ScStack *stack, ScStack *thi
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *BaseScriptable::scGetProperty(const Common::String &name) {
+ScValue *BaseScriptable::scGetProperty(const char *name) {
 	if (!_scProp) {
 		_scProp = new ScValue(_game);
 	}
 	if (_scProp) {
-		return _scProp->getProp(name.c_str()); // TODO: Change to Common::String
+		return _scProp->getProp(name);
 	} else {
 		return nullptr;
 	}
diff --git a/engines/wintermute/base/base_scriptable.h b/engines/wintermute/base/base_scriptable.h
index 956a24f23d9..6a3a08259e7 100644
--- a/engines/wintermute/base/base_scriptable.h
+++ b/engines/wintermute/base/base_scriptable.h
@@ -49,7 +49,7 @@ public:
 	// high level scripting interface
 	virtual bool canHandleMethod(const char *eventMethod) const;
 	virtual bool scSetProperty(const char *name, ScValue *value);
-	virtual ScValue *scGetProperty(const Common::String &name);
+	virtual ScValue *scGetProperty(const char *name);
 	virtual bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name);
 	virtual const char *scToString();
 	virtual void *scToMemBuffer();
diff --git a/engines/wintermute/base/base_sprite.cpp b/engines/wintermute/base/base_sprite.cpp
index ea63a6919c2..2fff9802c09 100644
--- a/engines/wintermute/base/base_sprite.cpp
+++ b/engines/wintermute/base/base_sprite.cpp
@@ -692,13 +692,13 @@ bool BaseSprite::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *BaseSprite::scGetProperty(const Common::String &name) {
+ScValue *BaseSprite::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("sprite");
 		return _scValue;
 	}
@@ -706,7 +706,7 @@ ScValue *BaseSprite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumFrames (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumFrames") {
+	else if (strcmp(name, "NumFrames") == 0) {
 		_scValue->setInt(_frames.getSize());
 		return _scValue;
 	}
@@ -714,7 +714,7 @@ ScValue *BaseSprite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// CurrentFrame
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "CurrentFrame") {
+	else if (strcmp(name, "CurrentFrame") == 0) {
 		_scValue->setInt(_currentFrame);
 		return _scValue;
 	}
@@ -722,7 +722,7 @@ ScValue *BaseSprite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// PixelPerfect
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PixelPerfect") {
+	else if (strcmp(name, "PixelPerfect") == 0) {
 		_scValue->setBool(_precise);
 		return _scValue;
 	}
@@ -730,7 +730,7 @@ ScValue *BaseSprite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Looping
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Looping") {
+	else if (strcmp(name, "Looping") == 0) {
 		_scValue->setBool(_looping);
 		return _scValue;
 	}
@@ -738,7 +738,7 @@ ScValue *BaseSprite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Owner (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Owner") {
+	else if (strcmp(name, "Owner") == 0) {
 		if (_owner == nullptr) {
 			_scValue->setNULL();
 		} else {
@@ -750,7 +750,7 @@ ScValue *BaseSprite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Finished (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Finished") {
+	else if (strcmp(name, "Finished") == 0) {
 		_scValue->setBool(_finished);
 		return _scValue;
 	}
@@ -758,7 +758,7 @@ ScValue *BaseSprite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Paused (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Paused") {
+	else if (strcmp(name, "Paused") == 0) {
 		_scValue->setBool(_paused);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/base/base_sprite.h b/engines/wintermute/base/base_sprite.h
index f45447c6b7c..d7cb471fe00 100644
--- a/engines/wintermute/base/base_sprite.h
+++ b/engines/wintermute/base/base_sprite.h
@@ -79,7 +79,7 @@ public:
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/base_sub_frame.cpp b/engines/wintermute/base/base_sub_frame.cpp
index 2a44322b53e..639b3f5679e 100644
--- a/engines/wintermute/base/base_sub_frame.cpp
+++ b/engines/wintermute/base/base_sub_frame.cpp
@@ -511,7 +511,7 @@ bool BaseSubFrame::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisS
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
+ScValue *BaseSubFrame::scGetProperty(const char *name) {
 	if (!_scValue) {
 		_scValue = new ScValue(_game);
 	}
@@ -520,7 +520,7 @@ ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Type (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("subframe");
 		return _scValue;
 	}
@@ -528,7 +528,7 @@ ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AlphaColor
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AlphaColor") {
+	else if (strcmp(name, "AlphaColor") == 0) {
 
 		_scValue->setInt((int)_alpha);
 		return _scValue;
@@ -537,7 +537,7 @@ ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TransparentColor (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TransparentColor") {
+	else if (strcmp(name, "TransparentColor") == 0) {
 		_scValue->setInt((int)_transparent);
 		return _scValue;
 	}
@@ -545,7 +545,7 @@ ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Is2DOnly
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Is2DOnly") {
+	else if (strcmp(name, "Is2DOnly") == 0) {
 		_scValue->setBool(_2DOnly);
 		return _scValue;
 	}
@@ -553,7 +553,7 @@ ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Is3DOnly
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Is3DOnly") {
+	else if (strcmp(name, "Is3DOnly") == 0) {
 		_scValue->setBool(_3DOnly);
 		return _scValue;
 	}
@@ -561,7 +561,7 @@ ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MirrorX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MirrorX") {
+	else if (strcmp(name, "MirrorX") == 0) {
 		_scValue->setBool(_mirrorX);
 		return _scValue;
 	}
@@ -569,7 +569,7 @@ ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MirrorY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MirrorY") {
+	else if (strcmp(name, "MirrorY") == 0) {
 		_scValue->setBool(_mirrorY);
 		return _scValue;
 	}
@@ -577,7 +577,7 @@ ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Decoration
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Decoration") {
+	else if (strcmp(name, "Decoration") == 0) {
 		_scValue->setBool(_decoration);
 		return _scValue;
 	}
@@ -585,7 +585,7 @@ ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// HotspotX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "HotspotX") {
+	else if (strcmp(name, "HotspotX") == 0) {
 		_scValue->setInt(_hotspotX);
 		return _scValue;
 	}
@@ -593,7 +593,7 @@ ScValue *BaseSubFrame::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// HotspotY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "HotspotY") {
+	else if (strcmp(name, "HotspotY") == 0) {
 		_scValue->setInt(_hotspotY);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/base/base_sub_frame.h b/engines/wintermute/base/base_sub_frame.h
index 2e04cd96175..a5d3fcd9d81 100644
--- a/engines/wintermute/base/base_sub_frame.h
+++ b/engines/wintermute/base/base_sub_frame.h
@@ -80,7 +80,7 @@ public:
 	BaseSurface *_surface;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/particles/part_emitter.cpp b/engines/wintermute/base/particles/part_emitter.cpp
index 6e91ae7d55a..1038b51fb06 100644
--- a/engines/wintermute/base/particles/part_emitter.cpp
+++ b/engines/wintermute/base/particles/part_emitter.cpp
@@ -603,41 +603,41 @@ bool PartEmitter::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSt
 }
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *PartEmitter::scGetProperty(const Common::String &name) {
+ScValue *PartEmitter::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("particle-emitter");
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// X
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "X") {
+	else if (strcmp(name, "X") == 0) {
 		_scValue->setInt(_posX);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Y
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Y") {
+	else if (strcmp(name, "Y") == 0) {
 		_scValue->setInt(_posY);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Width
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Width") {
+	else if (strcmp(name, "Width") == 0) {
 		_scValue->setInt(_width);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Height
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Height") {
+	else if (strcmp(name, "Height") == 0) {
 		_scValue->setInt(_height);
 		return _scValue;
 	}
@@ -645,21 +645,21 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Scale1
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Scale1") {
+	else if (strcmp(name, "Scale1") == 0) {
 		_scValue->setFloat(_scale1);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Scale2
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Scale2") {
+	else if (strcmp(name, "Scale2") == 0) {
 		_scValue->setFloat(_scale2);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// ScaleZBased
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ScaleZBased") {
+	else if (strcmp(name, "ScaleZBased") == 0) {
 		_scValue->setBool(_scaleZBased);
 		return _scValue;
 	}
@@ -667,21 +667,21 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Velocity1
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Velocity1") {
+	else if (strcmp(name, "Velocity1") == 0) {
 		_scValue->setFloat(_velocity1);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Velocity2
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Velocity2") {
+	else if (strcmp(name, "Velocity2") == 0) {
 		_scValue->setFloat(_velocity2);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// VelocityZBased
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "VelocityZBased") {
+	else if (strcmp(name, "VelocityZBased") == 0) {
 		_scValue->setBool(_velocityZBased);
 		return _scValue;
 	}
@@ -689,21 +689,21 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// LifeTime1
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "LifeTime1") {
+	else if (strcmp(name, "LifeTime1") == 0) {
 		_scValue->setInt(_lifeTime1);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// LifeTime2
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "LifeTime2") {
+	else if (strcmp(name, "LifeTime2") == 0) {
 		_scValue->setInt(_lifeTime2);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// LifeTimeZBased
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "LifeTimeZBased") {
+	else if (strcmp(name, "LifeTimeZBased") == 0) {
 		_scValue->setBool(_lifeTimeZBased);
 		return _scValue;
 	}
@@ -711,14 +711,14 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Angle1
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Angle1") {
+	else if (strcmp(name, "Angle1") == 0) {
 		_scValue->setInt(_angle1);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Angle2
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Angle2") {
+	else if (strcmp(name, "Angle2") == 0) {
 		_scValue->setInt(_angle2);
 		return _scValue;
 	}
@@ -726,14 +726,14 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AngVelocity1
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AngVelocity1") {
+	else if (strcmp(name, "AngVelocity1") == 0) {
 		_scValue->setFloat(_angVelocity1);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// AngVelocity2
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AngVelocity2") {
+	else if (strcmp(name, "AngVelocity2") == 0) {
 		_scValue->setFloat(_angVelocity2);
 		return _scValue;
 	}
@@ -741,14 +741,14 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Rotation1
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Rotation1") {
+	else if (strcmp(name, "Rotation1") == 0) {
 		_scValue->setFloat(_rotation1);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Rotation2
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Rotation2") {
+	else if (strcmp(name, "Rotation2") == 0) {
 		_scValue->setFloat(_rotation2);
 		return _scValue;
 	}
@@ -756,21 +756,21 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Alpha1
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Alpha1") {
+	else if (strcmp(name, "Alpha1") == 0) {
 		_scValue->setInt(_alpha1);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Alpha2
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Alpha2") {
+	else if (strcmp(name, "Alpha2") == 0) {
 		_scValue->setInt(_alpha2);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// AlphaTimeBased
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AlphaTimeBased") {
+	else if (strcmp(name, "AlphaTimeBased") == 0) {
 		_scValue->setBool(_alphaTimeBased);
 		return _scValue;
 	}
@@ -778,14 +778,14 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MaxParticles
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MaxParticles") {
+	else if (strcmp(name, "MaxParticles") == 0) {
 		_scValue->setInt(_maxParticles);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// NumLiveParticles (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumLiveParticles") {
+	else if (strcmp(name, "NumLiveParticles") == 0) {
 		int numAlive = 0;
 		for (int32 i = 0; i < _particles.getSize(); i++) {
 			if (_particles[i] && !_particles[i]->_isDead) {
@@ -799,21 +799,21 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// GenerationInterval
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "GenerationInterval") {
+	else if (strcmp(name, "GenerationInterval") == 0) {
 		_scValue->setInt(_genInterval);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// GenerationAmount
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "GenerationAmount") {
+	else if (strcmp(name, "GenerationAmount") == 0) {
 		_scValue->setInt(_genAmount);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// MaxBatches
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MaxBatches") {
+	else if (strcmp(name, "MaxBatches") == 0) {
 		_scValue->setInt(_maxBatches);
 		return _scValue;
 	}
@@ -821,14 +821,14 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// FadeInTime
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "FadeInTime") {
+	else if (strcmp(name, "FadeInTime") == 0) {
 		_scValue->setInt(_fadeInTime);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// FadeOutTime
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "FadeOutTime") {
+	else if (strcmp(name, "FadeOutTime") == 0) {
 		_scValue->setInt(_fadeOutTime);
 		return _scValue;
 	}
@@ -836,21 +836,21 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// GrowthRate1
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "GrowthRate1") {
+	else if (strcmp(name, "GrowthRate1") == 0) {
 		_scValue->setFloat(_growthRate1);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// GrowthRate2
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "GrowthRate2") {
+	else if (strcmp(name, "GrowthRate2") == 0) {
 		_scValue->setFloat(_growthRate2);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// ExponentialGrowth
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ExponentialGrowth") {
+	else if (strcmp(name, "ExponentialGrowth") == 0) {
 		_scValue->setBool(_exponentialGrowth);
 		return _scValue;
 	}
@@ -858,7 +858,7 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// UseRegion
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "UseRegion") {
+	else if (strcmp(name, "UseRegion") == 0) {
 		_scValue->setBool(_useRegion);
 		return _scValue;
 	}
@@ -866,7 +866,7 @@ ScValue *PartEmitter::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// EmitEvent
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "EmitEvent") {
+	else if (strcmp(name, "EmitEvent") == 0) {
 		if (!_emitEvent) {
 			_scValue->setNULL();
 		} else {
diff --git a/engines/wintermute/base/particles/part_emitter.h b/engines/wintermute/base/particles/part_emitter.h
index ac811a3036d..17d3febcafd 100644
--- a/engines/wintermute/base/particles/part_emitter.h
+++ b/engines/wintermute/base/particles/part_emitter.h
@@ -117,7 +117,7 @@ public:
 	BaseArray<PartForce *> _forces;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/scriptables/script_ext_array.cpp b/engines/wintermute/base/scriptables/script_ext_array.cpp
index f93d42710d6..1075a23843e 100644
--- a/engines/wintermute/base/scriptables/script_ext_array.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_array.cpp
@@ -167,13 +167,13 @@ bool SXArray::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXArray::scGetProperty(const Common::String &name) {
+ScValue *SXArray::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("array");
 		return _scValue;
 	}
@@ -181,7 +181,7 @@ ScValue *SXArray::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Length
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Length") {
+	else if (strcmp(name, "Length") == 0) {
 		_scValue->setInt(_length);
 		return _scValue;
 	}
@@ -191,7 +191,7 @@ ScValue *SXArray::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	else {
 		char paramName[20];
-		if (validNumber(name.c_str(), paramName)) { // TODO: Change to Common::String
+		if (validNumber(name, paramName)) {
 			return _values->getProp(paramName);
 		} else {
 			return _scValue;
diff --git a/engines/wintermute/base/scriptables/script_ext_array.h b/engines/wintermute/base/scriptables/script_ext_array.h
index cd305a29787..8c7f917cd03 100644
--- a/engines/wintermute/base/scriptables/script_ext_array.h
+++ b/engines/wintermute/base/scriptables/script_ext_array.h
@@ -40,7 +40,7 @@ public:
 	SXArray(BaseGame *inGame, ScStack *stack);
 	SXArray(BaseGame *inGame);
 	~SXArray() override;
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/scriptables/script_ext_date.cpp b/engines/wintermute/base/scriptables/script_ext_date.cpp
index 8949b108a00..2f6f63e82b9 100644
--- a/engines/wintermute/base/scriptables/script_ext_date.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_date.cpp
@@ -213,13 +213,13 @@ bool SXDate::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXDate::scGetProperty(const Common::String &name) {
+ScValue *SXDate::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("date");
 		return _scValue;
 	} else {
@@ -234,7 +234,7 @@ bool SXDate::scSetProperty(const char *name, ScValue *value) {
 	//////////////////////////////////////////////////////////////////////////
 	// Name
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Name")==0) {
+	if (strcmp(name, "Name") == 0) {
 	    setName(value->getString());
 	    return STATUS_OK;
 	}
diff --git a/engines/wintermute/base/scriptables/script_ext_date.h b/engines/wintermute/base/scriptables/script_ext_date.h
index 905946167a7..bfed55aaf25 100644
--- a/engines/wintermute/base/scriptables/script_ext_date.h
+++ b/engines/wintermute/base/scriptables/script_ext_date.h
@@ -39,7 +39,7 @@ public:
 	DECLARE_PERSISTENT(SXDate, BaseScriptable)
 	SXDate(BaseGame *inGame, ScStack *Stack);
 	~SXDate() override;
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/scriptables/script_ext_directory.cpp b/engines/wintermute/base/scriptables/script_ext_directory.cpp
index 00a74c3c0fe..315b8d2b69b 100644
--- a/engines/wintermute/base/scriptables/script_ext_directory.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_directory.cpp
@@ -158,13 +158,13 @@ bool SXDirectory::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSt
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXDirectory::scGetProperty(const Common::String &name) {
+ScValue *SXDirectory::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("directory");
 		return _scValue;
 	}
@@ -172,7 +172,7 @@ ScValue *SXDirectory::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// PathSeparator
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PathSeparator") {
+	else if (strcmp(name, "PathSeparator") == 0) {
 		_scValue->setString("\\");
 		return _scValue;
 	}
@@ -180,7 +180,7 @@ ScValue *SXDirectory::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// CurrentDirectory
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "CurrentDirectory") {
+	else if (strcmp(name, "CurrentDirectory") == 0) {
 		_scValue->setString("."); // See also: BaseGame::scGetProperty("SaveDirectory")
 		return _scValue;
 	}
@@ -188,7 +188,7 @@ ScValue *SXDirectory::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TempDirectory
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TempDirectory") {
+	else if (strcmp(name, "TempDirectory") == 0) {
 		_scValue->setString("temp"); // See also: BaseGame::scGetProperty("SaveDirectory")
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/base/scriptables/script_ext_directory.h b/engines/wintermute/base/scriptables/script_ext_directory.h
index 8eeec097710..4b5812c54d0 100644
--- a/engines/wintermute/base/scriptables/script_ext_directory.h
+++ b/engines/wintermute/base/scriptables/script_ext_directory.h
@@ -36,7 +36,7 @@ namespace Wintermute {
 class SXDirectory : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SXDirectory, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	SXDirectory(BaseGame *inGame);
 	~SXDirectory() override;
diff --git a/engines/wintermute/base/scriptables/script_ext_file.cpp b/engines/wintermute/base/scriptables/script_ext_file.cpp
index 9d089514a7a..7f549dc2a87 100644
--- a/engines/wintermute/base/scriptables/script_ext_file.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_file.cpp
@@ -636,13 +636,13 @@ bool SXFile::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXFile::scGetProperty(const Common::String &name) {
+ScValue *SXFile::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("file");
 		return _scValue;
 	}
@@ -650,7 +650,7 @@ ScValue *SXFile::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Filename (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Filename") {
+	if (strcmp(name, "Filename") == 0) {
 		_scValue->setString(_filename);
 		return _scValue;
 	}
@@ -658,7 +658,7 @@ ScValue *SXFile::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Position (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Position") {
+	else if (strcmp(name, "Position") == 0) {
 		_scValue->setInt(getPos());
 		return _scValue;
 	}
@@ -666,7 +666,7 @@ ScValue *SXFile::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Length (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Length") {
+	else if (strcmp(name, "Length") == 0) {
 		_scValue->setInt(getLength());
 		return _scValue;
 	}
@@ -674,7 +674,7 @@ ScValue *SXFile::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TextMode (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TextMode") {
+	else if (strcmp(name, "TextMode") == 0) {
 		_scValue->setBool(_textMode);
 		return _scValue;
 	}
@@ -682,7 +682,7 @@ ScValue *SXFile::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AccessMode (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AccessMode") {
+	else if (strcmp(name, "AccessMode") == 0) {
 		_scValue->setInt(_mode);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/base/scriptables/script_ext_file.h b/engines/wintermute/base/scriptables/script_ext_file.h
index 1b74167d4cd..4232c9046f4 100644
--- a/engines/wintermute/base/scriptables/script_ext_file.h
+++ b/engines/wintermute/base/scriptables/script_ext_file.h
@@ -37,7 +37,7 @@ namespace Wintermute {
 class SXFile : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SXFile, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/scriptables/script_ext_math.cpp b/engines/wintermute/base/scriptables/script_ext_math.cpp
index a153a86ab56..e8e77e7ff73 100644
--- a/engines/wintermute/base/scriptables/script_ext_math.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_math.cpp
@@ -248,13 +248,13 @@ bool SXMath::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXMath::scGetProperty(const Common::String &name) {
+ScValue *SXMath::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("math");
 		return _scValue;
 	}
@@ -262,7 +262,7 @@ ScValue *SXMath::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// PI
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PI") {
+	else if (strcmp(name, "PI") == 0) {
 		_scValue->setFloat(M_PI);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/base/scriptables/script_ext_math.h b/engines/wintermute/base/scriptables/script_ext_math.h
index bbb03997778..2bc04c51747 100644
--- a/engines/wintermute/base/scriptables/script_ext_math.h
+++ b/engines/wintermute/base/scriptables/script_ext_math.h
@@ -38,7 +38,7 @@ public:
 	DECLARE_PERSISTENT(SXMath, BaseScriptable)
 	SXMath(BaseGame *inGame);
 	~SXMath() override;
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 
 private:
diff --git a/engines/wintermute/base/scriptables/script_ext_mem_buffer.cpp b/engines/wintermute/base/scriptables/script_ext_mem_buffer.cpp
index c4b054529c7..5205650e8ab 100644
--- a/engines/wintermute/base/scriptables/script_ext_mem_buffer.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_mem_buffer.cpp
@@ -447,13 +447,13 @@ bool SXMemBuffer::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSt
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXMemBuffer::scGetProperty(const Common::String &name) {
+ScValue *SXMemBuffer::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("membuffer");
 		return _scValue;
 	}
@@ -461,7 +461,7 @@ ScValue *SXMemBuffer::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Size (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Size") {
+	if (strcmp(name, "Size") == 0) {
 		_scValue->setInt(_size);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/base/scriptables/script_ext_mem_buffer.h b/engines/wintermute/base/scriptables/script_ext_mem_buffer.h
index e37377d8b2a..73460d5085f 100644
--- a/engines/wintermute/base/scriptables/script_ext_mem_buffer.h
+++ b/engines/wintermute/base/scriptables/script_ext_mem_buffer.h
@@ -37,7 +37,7 @@ class SXMemBuffer : public BaseScriptable {
 public:
 	int scCompare(BaseScriptable *Val) override;
 	DECLARE_PERSISTENT(SXMemBuffer, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/base/scriptables/script_ext_string.cpp b/engines/wintermute/base/scriptables/script_ext_string.cpp
index d62b67086f9..709e1c509b8 100644
--- a/engines/wintermute/base/scriptables/script_ext_string.cpp
+++ b/engines/wintermute/base/scriptables/script_ext_string.cpp
@@ -350,20 +350,20 @@ bool SXString::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXString::scGetProperty(const Common::String &name) {
+ScValue *SXString::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("string");
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Length (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Length") {
+	else if (strcmp(name, "Length") == 0) {
 		if (_game->_textEncoding == TEXT_UTF8) {
 			WideString wstr = StringUtil::utf8ToWide(_string);
 			_scValue->setInt(wstr.size());
@@ -376,7 +376,7 @@ ScValue *SXString::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Capacity
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Capacity") {
+	else if (strcmp(name, "Capacity") == 0) {
 		_scValue->setInt(_capacity);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/base/scriptables/script_ext_string.h b/engines/wintermute/base/scriptables/script_ext_string.h
index 86dd3d23f31..9f7800e7a45 100644
--- a/engines/wintermute/base/scriptables/script_ext_string.h
+++ b/engines/wintermute/base/scriptables/script_ext_string.h
@@ -37,7 +37,7 @@ class SXString : public BaseScriptable {
 public:
 	int scCompare(BaseScriptable *Val) override;
 	DECLARE_PERSISTENT(SXString, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	void scSetString(const char *val) override;
diff --git a/engines/wintermute/ext/wme_3fstatistics.cpp b/engines/wintermute/ext/wme_3fstatistics.cpp
index 442a9121f79..f801c65bd54 100644
--- a/engines/wintermute/ext/wme_3fstatistics.cpp
+++ b/engines/wintermute/ext/wme_3fstatistics.cpp
@@ -133,13 +133,13 @@ bool SX3fStatistics::scCallMethod(ScScript *script, ScStack *stack, ScStack *thi
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SX3fStatistics::scGetProperty(const Common::String &name) {
+ScValue *SX3fStatistics::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("statistics");
 		return _scValue;
 	}
diff --git a/engines/wintermute/ext/wme_3fstatistics.h b/engines/wintermute/ext/wme_3fstatistics.h
index f0e4d9d7436..4cb62af651b 100644
--- a/engines/wintermute/ext/wme_3fstatistics.h
+++ b/engines/wintermute/ext/wme_3fstatistics.h
@@ -36,7 +36,7 @@ namespace Wintermute {
 class SX3fStatistics : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SX3fStatistics, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ext/wme_blackandwhite.cpp b/engines/wintermute/ext/wme_blackandwhite.cpp
index 0f44c1cd7f4..b349390539c 100644
--- a/engines/wintermute/ext/wme_blackandwhite.cpp
+++ b/engines/wintermute/ext/wme_blackandwhite.cpp
@@ -158,13 +158,13 @@ bool SXBlackAndWhite::scCallMethod(ScScript *script, ScStack *stack, ScStack *th
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXBlackAndWhite::scGetProperty(const Common::String &name) {
+ScValue *SXBlackAndWhite::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Weight
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Weight") {
+	if (strcmp(name, "Weight") == 0) {
 		// nothing todo
 		return _scValue;
 	}
@@ -172,7 +172,7 @@ ScValue *SXBlackAndWhite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// AllShadersAvailable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AllShadersAvailable") {
+	else if (strcmp(name, "AllShadersAvailable") == 0) {
 		_scValue->setBool(false);
 		return _scValue;
 	}
@@ -180,7 +180,7 @@ ScValue *SXBlackAndWhite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// BlackAndWhiteAvailable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "BlackAndWhiteAvailable") {
+	else if (strcmp(name, "BlackAndWhiteAvailable") == 0) {
 		_scValue->setBool(true);
 		return _scValue;
 	}
@@ -188,7 +188,7 @@ ScValue *SXBlackAndWhite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SepiaAvailable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SepiaAvailable") {
+	else if (strcmp(name, "SepiaAvailable") == 0) {
 		_scValue->setBool(true);
 		return _scValue;
 	}
@@ -196,7 +196,7 @@ ScValue *SXBlackAndWhite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// WeightedBlackAndWhiteAvailable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "WeightedBlackAndWhiteAvailable") {
+	else if (strcmp(name, "WeightedBlackAndWhiteAvailable") == 0) {
 		_scValue->setBool(false);
 		return _scValue;
 	}
@@ -204,7 +204,7 @@ ScValue *SXBlackAndWhite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// WeightedSepiaAvailable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "WeightedSepiaAvailable") {
+	else if (strcmp(name, "WeightedSepiaAvailable") == 0) {
 		_scValue->setBool(false);
 		return _scValue;
 	}
@@ -212,7 +212,7 @@ ScValue *SXBlackAndWhite::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SepiaBlackAndWhiteAvailable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SepiaBlackAndWhiteAvailable") {
+	else if (strcmp(name, "SepiaBlackAndWhiteAvailable") == 0) {
 		_scValue->setBool(false);
 		return _scValue;
 	}
diff --git a/engines/wintermute/ext/wme_blackandwhite.h b/engines/wintermute/ext/wme_blackandwhite.h
index 9d187afeb13..9c2e99bd359 100644
--- a/engines/wintermute/ext/wme_blackandwhite.h
+++ b/engines/wintermute/ext/wme_blackandwhite.h
@@ -32,7 +32,7 @@ namespace Wintermute {
 class SXBlackAndWhite : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SXBlackAndWhite, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ext/wme_commandlinehelper.cpp b/engines/wintermute/ext/wme_commandlinehelper.cpp
index 47028f4e7fd..48d83d462ab 100644
--- a/engines/wintermute/ext/wme_commandlinehelper.cpp
+++ b/engines/wintermute/ext/wme_commandlinehelper.cpp
@@ -67,7 +67,7 @@ bool SXCommandLineHelper::scCallMethod(ScScript *script, ScStack *stack, ScStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXCommandLineHelper::scGetProperty(const Common::String &name) {
+ScValue *SXCommandLineHelper::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
@@ -75,7 +75,7 @@ ScValue *SXCommandLineHelper::scGetProperty(const Common::String &name) {
 	// Used to launch demo: "Pizza Morgana: Episode 1 - Monsters and Manipulations in the Magical Forest"
 	// 'DEMO', 'FULLDEMO'
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Parameters") {
+	if (strcmp(name, "Parameters") == 0) {
 		_scValue->setString("Pizza.exe DEMO");
 		return _scValue;
 	}
diff --git a/engines/wintermute/ext/wme_commandlinehelper.h b/engines/wintermute/ext/wme_commandlinehelper.h
index 4f5dd1d20aa..f9e639f99ef 100644
--- a/engines/wintermute/ext/wme_commandlinehelper.h
+++ b/engines/wintermute/ext/wme_commandlinehelper.h
@@ -36,7 +36,7 @@ namespace Wintermute {
 class SXCommandLineHelper : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SXCommandLineHelper, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ext/wme_displacement.cpp b/engines/wintermute/ext/wme_displacement.cpp
index 2ebd75686d9..d625064d5d4 100644
--- a/engines/wintermute/ext/wme_displacement.cpp
+++ b/engines/wintermute/ext/wme_displacement.cpp
@@ -158,13 +158,13 @@ bool SXDisplacement::scCallMethod(ScScript *script, ScStack *stack, ScStack *thi
 }
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXDisplacement::scGetProperty(const Common::String &name) {
+ScValue *SXDisplacement::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// ForceX
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "ForceX") {
+	if (strcmp(name, "ForceX") == 0) {
 		_scValue->setInt(_forceX);
 		return _scValue;
 	}
@@ -172,7 +172,7 @@ ScValue *SXDisplacement::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ForceY
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "ForceY") {
+	if (strcmp(name, "ForceY") == 0) {
 		_scValue->setInt(_forceY);
 		return _scValue;
 	}
@@ -180,7 +180,7 @@ ScValue *SXDisplacement::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Speed
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Speed") {
+	if (strcmp(name, "Speed") == 0) {
 		_scValue->setInt(_speed);
 		return _scValue;
 	}
diff --git a/engines/wintermute/ext/wme_displacement.h b/engines/wintermute/ext/wme_displacement.h
index a085612dda8..4d1f73e3622 100644
--- a/engines/wintermute/ext/wme_displacement.h
+++ b/engines/wintermute/ext/wme_displacement.h
@@ -31,7 +31,7 @@ namespace Wintermute {
 class SXDisplacement : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SXDisplacement, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ext/wme_galaxy.cpp b/engines/wintermute/ext/wme_galaxy.cpp
index a4734a2fd2b..6ac77eb9214 100644
--- a/engines/wintermute/ext/wme_galaxy.cpp
+++ b/engines/wintermute/ext/wme_galaxy.cpp
@@ -101,13 +101,13 @@ bool SXWMEGalaxyAPI::scCallMethod(ScScript *script, ScStack *stack, ScStack *thi
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXWMEGalaxyAPI::scGetProperty(const Common::String &name) {
+ScValue *SXWMEGalaxyAPI::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("wmegalaxyapi");
 		return _scValue;
 	}
diff --git a/engines/wintermute/ext/wme_galaxy.h b/engines/wintermute/ext/wme_galaxy.h
index ae2431e6120..42cce6af8cb 100644
--- a/engines/wintermute/ext/wme_galaxy.h
+++ b/engines/wintermute/ext/wme_galaxy.h
@@ -36,7 +36,7 @@ namespace Wintermute {
 class SXWMEGalaxyAPI : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SXWMEGalaxyAPI, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ext/wme_shadowmanager.cpp b/engines/wintermute/ext/wme_shadowmanager.cpp
index 31b450c7fd5..88fbd2f9117 100644
--- a/engines/wintermute/ext/wme_shadowmanager.cpp
+++ b/engines/wintermute/ext/wme_shadowmanager.cpp
@@ -206,13 +206,13 @@ bool SXShadowManager::scCallMethod(ScScript *script, ScStack *stack, ScStack *th
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXShadowManager::scGetProperty(const Common::String &name) {
+ScValue *SXShadowManager::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// DefaultLightPos
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "DefaultLightPos") {
+	if (strcmp(name, "DefaultLightPos") == 0) {
 		_scValue->setProperty("x", _defaultLightPos._x);
 		_scValue->setProperty("y", _defaultLightPos._y);
 		_scValue->setProperty("z", _defaultLightPos._z);
@@ -222,7 +222,7 @@ ScValue *SXShadowManager::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// DefaultLightPosX
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "DefaultLightPosX") {
+	else if (strcmp(name, "DefaultLightPosX") == 0) {
 		_scValue->setFloat(_defaultLightPos._x);
 		return _scValue;
 	}
@@ -230,7 +230,7 @@ ScValue *SXShadowManager::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// DefaultLightPosY
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "DefaultLightPosY") {
+	else if (strcmp(name, "DefaultLightPosY") == 0) {
 		_scValue->setFloat(_defaultLightPos._y);
 		return _scValue;
 	}
@@ -238,7 +238,7 @@ ScValue *SXShadowManager::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// DefaultLightPosZ
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "DefaultLightPosZ") {
+	else if (strcmp(name, "DefaultLightPosZ") == 0) {
 		_scValue->setFloat(_defaultLightPos._z);
 		return _scValue;
 	}
@@ -246,7 +246,7 @@ ScValue *SXShadowManager::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MinShadow
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MinShadow") {
+	else if (strcmp(name, "MinShadow") == 0) {
 		_scValue->setFloat(_minShadow);
 		return _scValue;
 	}
@@ -254,7 +254,7 @@ ScValue *SXShadowManager::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MaxShadow
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MaxShadow") {
+	else if (strcmp(name, "MaxShadow") == 0) {
 		_scValue->setFloat(_maxShadow);
 		return _scValue;
 	}
@@ -262,7 +262,7 @@ ScValue *SXShadowManager::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// UseSmartShadows
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "UseSmartShadows") {
+	else if (strcmp(name, "UseSmartShadows") == 0) {
 		_scValue->setBool(_useSmartShadows);
 		return _scValue;
 	}
diff --git a/engines/wintermute/ext/wme_shadowmanager.h b/engines/wintermute/ext/wme_shadowmanager.h
index 2c3055fd606..382c2b0a76f 100644
--- a/engines/wintermute/ext/wme_shadowmanager.h
+++ b/engines/wintermute/ext/wme_shadowmanager.h
@@ -34,7 +34,7 @@ class Light3D;
 class SXShadowManager : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SXShadowManager, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ext/wme_steam.cpp b/engines/wintermute/ext/wme_steam.cpp
index 16b0ec58042..bf8e1aa55ba 100644
--- a/engines/wintermute/ext/wme_steam.cpp
+++ b/engines/wintermute/ext/wme_steam.cpp
@@ -184,41 +184,41 @@ bool SXSteamAPI::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisSta
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXSteamAPI::scGetProperty(const Common::String &name) {
+ScValue *SXSteamAPI::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type (RO)
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("steamapi");
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// SteamAvailable (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SteamAvailable") {
+	else if (strcmp(name, "SteamAvailable") == 0) {
 		_scValue->setBool(AchMan.isReady());
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// StatsAvailable (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "StatsAvailable") {
+	else if (strcmp(name, "StatsAvailable") == 0) {
 		_scValue->setBool(AchMan.isReady());
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// NumAchievements (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumAchievements") {
+	else if (strcmp(name, "NumAchievements") == 0) {
 		_scValue->setInt(AchMan.getAchievementCount());
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// AppId (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "AppId") {
+	else if (strcmp(name, "AppId") == 0) {
 		_scValue->setInt(atoi(_achievementsInfo.appId.c_str()));
 		return _scValue;
 	}
diff --git a/engines/wintermute/ext/wme_steam.h b/engines/wintermute/ext/wme_steam.h
index a3b5e4906e2..8d0f8f363ec 100644
--- a/engines/wintermute/ext/wme_steam.h
+++ b/engines/wintermute/ext/wme_steam.h
@@ -36,7 +36,7 @@ namespace Wintermute {
 class SXSteamAPI : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SXSteamAPI, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ext/wme_vlink.cpp b/engines/wintermute/ext/wme_vlink.cpp
index 627c415a8c0..85c744e129a 100644
--- a/engines/wintermute/ext/wme_vlink.cpp
+++ b/engines/wintermute/ext/wme_vlink.cpp
@@ -188,7 +188,7 @@ bool SXVlink::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXVlink::scGetProperty(const Common::String &name) {
+ScValue *SXVlink::scGetProperty(const char *name) {
 	_scValue->setNULL();
 	return _scValue;
 }
diff --git a/engines/wintermute/ext/wme_vlink.h b/engines/wintermute/ext/wme_vlink.h
index cce477b3d64..9461bfb0744 100644
--- a/engines/wintermute/ext/wme_vlink.h
+++ b/engines/wintermute/ext/wme_vlink.h
@@ -35,7 +35,7 @@ namespace Wintermute {
 class SXVlink : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SXVlink, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ext/wme_windowmode.cpp b/engines/wintermute/ext/wme_windowmode.cpp
index 9008998771d..f7e45c58a8d 100644
--- a/engines/wintermute/ext/wme_windowmode.cpp
+++ b/engines/wintermute/ext/wme_windowmode.cpp
@@ -68,7 +68,7 @@ bool SXSample::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *SXSample::scGetProperty(const Common::String &name) {
+ScValue *SXSample::scGetProperty(const char *name) {
 	_scValue->setNULL();
 	return _scValue;
 }
diff --git a/engines/wintermute/ext/wme_windowmode.h b/engines/wintermute/ext/wme_windowmode.h
index 3af8c687139..681bf107d22 100644
--- a/engines/wintermute/ext/wme_windowmode.h
+++ b/engines/wintermute/ext/wme_windowmode.h
@@ -36,7 +36,7 @@ namespace Wintermute {
 class SXSample : public BaseScriptable {
 public:
 	DECLARE_PERSISTENT(SXSample, BaseScriptable)
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ui/ui_button.cpp b/engines/wintermute/ui/ui_button.cpp
index c4b7e3d9f22..1f33ed3a72f 100644
--- a/engines/wintermute/ui/ui_button.cpp
+++ b/engines/wintermute/ui/ui_button.cpp
@@ -1090,13 +1090,13 @@ bool UIButton::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *UIButton::scGetProperty(const Common::String &name) {
+ScValue *UIButton::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("button");
 		return _scValue;
 	}
@@ -1104,7 +1104,7 @@ ScValue *UIButton::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TextAlign
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TextAlign") {
+	else if (strcmp(name, "TextAlign") == 0) {
 		_scValue->setInt(_align);
 		return _scValue;
 	}
@@ -1112,21 +1112,21 @@ ScValue *UIButton::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Focusable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Focusable") {
+	else if (strcmp(name, "Focusable") == 0) {
 		_scValue->setBool(_canFocus);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// Pressed
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Pressed") {
+	else if (strcmp(name, "Pressed") == 0) {
 		_scValue->setBool(_stayPressed);
 		return _scValue;
 	}
 	//////////////////////////////////////////////////////////////////////////
 	// PixelPerfect
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PixelPerfect") {
+	else if (strcmp(name, "PixelPerfect") == 0) {
 		_scValue->setBool(_pixelPerfect);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ui/ui_button.h b/engines/wintermute/ui/ui_button.h
index 958b7ee84ec..865713b17ef 100644
--- a/engines/wintermute/ui/ui_button.h
+++ b/engines/wintermute/ui/ui_button.h
@@ -68,7 +68,7 @@ public:
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ui/ui_edit.cpp b/engines/wintermute/ui/ui_edit.cpp
index f84beeed611..fb781e1827a 100644
--- a/engines/wintermute/ui/ui_edit.cpp
+++ b/engines/wintermute/ui/ui_edit.cpp
@@ -398,13 +398,13 @@ bool UIEdit::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *UIEdit::scGetProperty(const Common::String &name) {
+ScValue *UIEdit::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("editor");
 		return _scValue;
 	}
@@ -412,7 +412,7 @@ ScValue *UIEdit::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SelStart
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SelStart") {
+	else if (strcmp(name, "SelStart") == 0) {
 		_scValue->setInt(_selStart);
 		return _scValue;
 	}
@@ -420,7 +420,7 @@ ScValue *UIEdit::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SelEnd
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SelEnd") {
+	else if (strcmp(name, "SelEnd") == 0) {
 		_scValue->setInt(_selEnd);
 		return _scValue;
 	}
@@ -428,7 +428,7 @@ ScValue *UIEdit::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// CursorBlinkRate
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "CursorBlinkRate") {
+	else if (strcmp(name, "CursorBlinkRate") == 0) {
 		_scValue->setInt(_cursorBlinkRate);
 		return _scValue;
 	}
@@ -436,7 +436,7 @@ ScValue *UIEdit::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// CursorChar
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "CursorChar") {
+	else if (strcmp(name, "CursorChar") == 0) {
 		_scValue->setString(_cursorChar);
 		return _scValue;
 	}
@@ -444,7 +444,7 @@ ScValue *UIEdit::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// FrameWidth
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "FrameWidth") {
+	else if (strcmp(name, "FrameWidth") == 0) {
 		_scValue->setInt(_frameWidth);
 		return _scValue;
 	}
@@ -452,7 +452,7 @@ ScValue *UIEdit::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// MaxLength
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "MaxLength") {
+	else if (strcmp(name, "MaxLength") == 0) {
 		_scValue->setInt(_maxLength);
 		return _scValue;
 	}
@@ -460,7 +460,7 @@ ScValue *UIEdit::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Text
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Text") {
+	else if (strcmp(name, "Text") == 0) {
 		if (_game->_textEncoding == TEXT_UTF8) {
 			WideString wstr = StringUtil::ansiToWide(_text);
 			_scValue->setString(StringUtil::wideToUtf8(wstr).c_str());
diff --git a/engines/wintermute/ui/ui_edit.h b/engines/wintermute/ui/ui_edit.h
index 8726fe25384..fe1529ef117 100644
--- a/engines/wintermute/ui/ui_edit.h
+++ b/engines/wintermute/ui/ui_edit.h
@@ -60,7 +60,7 @@ public:
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ui/ui_entity.cpp b/engines/wintermute/ui/ui_entity.cpp
index 95f5694558b..16141f7446e 100644
--- a/engines/wintermute/ui/ui_entity.cpp
+++ b/engines/wintermute/ui/ui_entity.cpp
@@ -307,13 +307,13 @@ bool UIEntity::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *UIEntity::scGetProperty(const Common::String &name) {
+ScValue *UIEntity::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("entity container");
 		return _scValue;
 	}
@@ -321,7 +321,7 @@ ScValue *UIEntity::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Freezable
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Freezable") {
+	else if (strcmp(name, "Freezable") == 0) {
 		if (_entity) {
 			_scValue->setBool(_entity->_freezable);
 		} else {
diff --git a/engines/wintermute/ui/ui_entity.h b/engines/wintermute/ui/ui_entity.h
index 6b84fff8677..ba5a5ab1d8e 100644
--- a/engines/wintermute/ui/ui_entity.h
+++ b/engines/wintermute/ui/ui_entity.h
@@ -47,7 +47,7 @@ public:
 	bool setEntity(const char *filename);
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ui/ui_object.cpp b/engines/wintermute/ui/ui_object.cpp
index c4d38b225d0..b69c359a462 100644
--- a/engines/wintermute/ui/ui_object.cpp
+++ b/engines/wintermute/ui/ui_object.cpp
@@ -355,13 +355,13 @@ bool UIObject::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *UIObject::scGetProperty(const Common::String &name) {
+ScValue *UIObject::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("ui_object");
 		return _scValue;
 	}
@@ -369,7 +369,7 @@ ScValue *UIObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Name
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Name") {
+	else if (strcmp(name, "Name") == 0) {
 		_scValue->setString(_name);
 		return _scValue;
 	}
@@ -377,7 +377,7 @@ ScValue *UIObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Parent (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Parent") {
+	else if (strcmp(name, "Parent") == 0) {
 		_scValue->setNative(_parent, true);
 		return _scValue;
 	}
@@ -385,7 +385,7 @@ ScValue *UIObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ParentNotify
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ParentNotify") {
+	else if (strcmp(name, "ParentNotify") == 0) {
 		_scValue->setBool(_parentNotify);
 		return _scValue;
 	}
@@ -393,7 +393,7 @@ ScValue *UIObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Width
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Width") {
+	else if (strcmp(name, "Width") == 0) {
 		_scValue->setInt(_width);
 		return _scValue;
 	}
@@ -401,7 +401,7 @@ ScValue *UIObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Height
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Height") {
+	else if (strcmp(name, "Height") == 0) {
 		_scValue->setInt(_height);
 		return _scValue;
 	}
@@ -409,7 +409,7 @@ ScValue *UIObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Visible
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Visible") {
+	else if (strcmp(name, "Visible") == 0) {
 		_scValue->setBool(_visible);
 		return _scValue;
 	}
@@ -417,7 +417,7 @@ ScValue *UIObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Disabled
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Disabled") {
+	else if (strcmp(name, "Disabled") == 0) {
 		_scValue->setBool(_disable);
 		return _scValue;
 	}
@@ -425,7 +425,7 @@ ScValue *UIObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Text
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Text") {
+	else if (strcmp(name, "Text") == 0) {
 		_scValue->setString(_text);
 		return _scValue;
 	}
@@ -433,13 +433,13 @@ ScValue *UIObject::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NextSibling (RO) / PrevSibling (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NextSibling" || name == "PrevSibling") {
+	else if (strcmp(name, "NextSibling") == 0 || strcmp(name, "PrevSibling") == 0) {
 		_scValue->setNULL();
 		if (_parent && _parent->_type == UI_WINDOW) {
 			UIWindow *win = (UIWindow *)_parent;
 			for (int32 i = 0; i < win->_widgets.getSize(); i++) {
 				if (win->_widgets[i] == this) {
-					if (name == "NextSibling") {
+					if (strcmp(name, "NextSibling") == 0) {
 						if (i < win->_widgets.getSize() - 1) {
 							_scValue->setNative(win->_widgets[i + 1], true);
 						}
diff --git a/engines/wintermute/ui/ui_object.h b/engines/wintermute/ui/ui_object.h
index 76bb5fe224a..6c482a5809a 100644
--- a/engines/wintermute/ui/ui_object.h
+++ b/engines/wintermute/ui/ui_object.h
@@ -74,7 +74,7 @@ public:
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ui/ui_text.cpp b/engines/wintermute/ui/ui_text.cpp
index 32c31f42db3..b82b25a47b1 100644
--- a/engines/wintermute/ui/ui_text.cpp
+++ b/engines/wintermute/ui/ui_text.cpp
@@ -431,13 +431,13 @@ bool UIText::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack,
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *UIText::scGetProperty(const Common::String &name) {
+ScValue *UIText::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("static");
 		return _scValue;
 	}
@@ -445,7 +445,7 @@ ScValue *UIText::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// TextAlign
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "TextAlign") {
+	else if (strcmp(name, "TextAlign") == 0) {
 		_scValue->setInt(_textAlign);
 		return _scValue;
 	}
@@ -453,7 +453,7 @@ ScValue *UIText::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// VerticalAlign
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "VerticalAlign") {
+	else if (strcmp(name, "VerticalAlign") == 0) {
 		_scValue->setInt(_verticalAlign);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ui/ui_text.h b/engines/wintermute/ui/ui_text.h
index 4a46ad04c97..406b099dcc2 100644
--- a/engines/wintermute/ui/ui_text.h
+++ b/engines/wintermute/ui/ui_text.h
@@ -47,7 +47,7 @@ public:
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;
diff --git a/engines/wintermute/ui/ui_window.cpp b/engines/wintermute/ui/ui_window.cpp
index e17cd482d22..290a092f8d4 100644
--- a/engines/wintermute/ui/ui_window.cpp
+++ b/engines/wintermute/ui/ui_window.cpp
@@ -1003,13 +1003,13 @@ bool UIWindow::scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack
 
 
 //////////////////////////////////////////////////////////////////////////
-ScValue *UIWindow::scGetProperty(const Common::String &name) {
+ScValue *UIWindow::scGetProperty(const char *name) {
 	_scValue->setNULL();
 
 	//////////////////////////////////////////////////////////////////////////
 	// Type
 	//////////////////////////////////////////////////////////////////////////
-	if (name == "Type") {
+	if (strcmp(name, "Type") == 0) {
 		_scValue->setString("window");
 		return _scValue;
 	}
@@ -1017,7 +1017,7 @@ ScValue *UIWindow::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// NumWidgets / NumControls (RO)
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "NumWidgets" || name == "NumControls") {
+	else if (strcmp(name, "NumWidgets") == 0 || strcmp(name, "NumControls") == 0) {
 		_scValue->setInt(_widgets.getSize());
 		return _scValue;
 	}
@@ -1025,7 +1025,7 @@ ScValue *UIWindow::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Exclusive
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Exclusive") {
+	else if (strcmp(name, "Exclusive") == 0) {
 		_scValue->setBool(_mode == WINDOW_EXCLUSIVE);
 		return _scValue;
 	}
@@ -1033,7 +1033,7 @@ ScValue *UIWindow::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// SystemExclusive
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "SystemExclusive") {
+	else if (strcmp(name, "SystemExclusive") == 0) {
 		_scValue->setBool(_mode == WINDOW_SYSTEM_EXCLUSIVE);
 		return _scValue;
 	}
@@ -1041,7 +1041,7 @@ ScValue *UIWindow::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Menu
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Menu") {
+	else if (strcmp(name, "Menu") == 0) {
 		_scValue->setBool(_isMenu);
 		return _scValue;
 	}
@@ -1049,7 +1049,7 @@ ScValue *UIWindow::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// InGame
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "InGame") {
+	else if (strcmp(name, "InGame") == 0) {
 		_scValue->setBool(_inGame);
 		return _scValue;
 	}
@@ -1057,7 +1057,7 @@ ScValue *UIWindow::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// PauseMusic
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "PauseMusic") {
+	else if (strcmp(name, "PauseMusic") == 0) {
 		_scValue->setBool(_pauseMusic);
 		return _scValue;
 	}
@@ -1065,7 +1065,7 @@ ScValue *UIWindow::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// ClipContents
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "ClipContents") {
+	else if (strcmp(name, "ClipContents") == 0) {
 		_scValue->setBool(_clipContents);
 		return _scValue;
 	}
@@ -1073,7 +1073,7 @@ ScValue *UIWindow::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// Transparent
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "Transparent") {
+	else if (strcmp(name, "Transparent") == 0) {
 		_scValue->setBool(_transparent);
 		return _scValue;
 	}
@@ -1081,7 +1081,7 @@ ScValue *UIWindow::scGetProperty(const Common::String &name) {
 	//////////////////////////////////////////////////////////////////////////
 	// FadeColor
 	//////////////////////////////////////////////////////////////////////////
-	else if (name == "FadeColor") {
+	else if (strcmp(name, "FadeColor") == 0) {
 		_scValue->setInt((int)_fadeColor);
 		return _scValue;
 	} else {
diff --git a/engines/wintermute/ui/ui_window.h b/engines/wintermute/ui/ui_window.h
index 1c2e123585a..a26e7c8d7b9 100644
--- a/engines/wintermute/ui/ui_window.h
+++ b/engines/wintermute/ui/ui_window.h
@@ -83,7 +83,7 @@ public:
 	bool saveAsText(BaseDynamicBuffer *buffer, int indent) override;
 
 	// scripting interface
-	ScValue *scGetProperty(const Common::String &name) override;
+	ScValue *scGetProperty(const char *name) override;
 	bool scSetProperty(const char *name, ScValue *value) override;
 	bool scCallMethod(ScScript *script, ScStack *stack, ScStack *thisStack, const char *name) override;
 	const char *scToString() override;




More information about the Scummvm-git-logs mailing list