From 2765f4d6c14bf4f963adbe86e657bb3f1c4ed8a8 Mon Sep 17 00:00:00 2001 From: Jucan Andrei Daniel Date: Sat, 13 Jun 2026 13:01:56 +0300 Subject: [PATCH 1/4] fix: resolve Windows path separators in ChangeWorld on Linux Path.GetFileName does not treat backslash as a separator on Linux, so G2 worlds like AddonWorld\NewWorld.zen kept their prefix. Normalise to forward slashes first. --- Assets/Gothic-Core/Scripts/Services/World/SaveGameService.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Assets/Gothic-Core/Scripts/Services/World/SaveGameService.cs b/Assets/Gothic-Core/Scripts/Services/World/SaveGameService.cs index 86822e2b9..b2ca74f72 100644 --- a/Assets/Gothic-Core/Scripts/Services/World/SaveGameService.cs +++ b/Assets/Gothic-Core/Scripts/Services/World/SaveGameService.cs @@ -139,7 +139,8 @@ public void LoadSavedGame(SlotId saveGameId, SaveGame save) public void ChangeWorld(string worldName) { // G2 has for example: AddonWorld\NewWorld.zen --> NewWorld.zen - CurrentWorldName = Path.GetFileName(worldName); + // Linux doesn't see \ as a directory separator, Windows sees both \ and / + CurrentWorldName = Path.GetFileName(worldName.Replace("\\","/")); // 1. World was already loaded. if (_worlds.ContainsKey(CurrentWorldName)) From f0d21a05af74ea93e049e0d80ffa10b6c8dbb6db Mon Sep 17 00:00:00 2001 From: Jucan Andrei Daniel Date: Sat, 13 Jun 2026 13:01:56 +0300 Subject: [PATCH 2/4] fix: enable IsTrigger on the ChangeLevel collider The box collider must be a trigger for OnTriggerEnter level changes to fire. --- .../Resources/Prefabs/Vobs/oCTriggerChangeLevel.prefab | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Gothic-Core/Resources/Prefabs/Vobs/oCTriggerChangeLevel.prefab b/Assets/Gothic-Core/Resources/Prefabs/Vobs/oCTriggerChangeLevel.prefab index 1d8614e99..ee5bee9d5 100644 --- a/Assets/Gothic-Core/Resources/Prefabs/Vobs/oCTriggerChangeLevel.prefab +++ b/Assets/Gothic-Core/Resources/Prefabs/Vobs/oCTriggerChangeLevel.prefab @@ -75,7 +75,7 @@ BoxCollider: serializedVersion: 2 m_Bits: 0 m_LayerOverridePriority: 0 - m_IsTrigger: 0 + m_IsTrigger: 1 m_ProvidesContacts: 0 m_Enabled: 1 serializedVersion: 3 From 76c6c02e7e72d881e05a830a8cc36d0504abb4b5 Mon Sep 17 00:00:00 2001 From: Jucan Andrei Daniel Date: Sat, 13 Jun 2026 13:01:56 +0300 Subject: [PATCH 3/4] fix: stop lockpick handler early on already-unlocked containers Return after deactivating the handler so StartDelayed() is not started on an unlocked container. --- .../Vob/LockPicking/VRContainerDoorPickingInteraction.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Assets/Gothic-VR/Scripts/Adapters/Vob/LockPicking/VRContainerDoorPickingInteraction.cs b/Assets/Gothic-VR/Scripts/Adapters/Vob/LockPicking/VRContainerDoorPickingInteraction.cs index b4b5710d0..528706556 100644 --- a/Assets/Gothic-VR/Scripts/Adapters/Vob/LockPicking/VRContainerDoorPickingInteraction.cs +++ b/Assets/Gothic-VR/Scripts/Adapters/Vob/LockPicking/VRContainerDoorPickingInteraction.cs @@ -67,7 +67,10 @@ private void Start() // Stop this handler if the object is already unlocked. if (!_isLocked) + { gameObject.SetActive(false); + return; + } StartCoroutine(StartDelayed()); } From d5162a49ffd17bec7d6cb25b3df98491404dbb74 Mon Sep 17 00:00:00 2001 From: Jucan Andrei Daniel Date: Sat, 13 Jun 2026 13:01:56 +0300 Subject: [PATCH 4/4] fix: correct Gothic 2 cutscene file suffix to LSC --- Assets/Gothic2/Scripts/Services/Context/G2ContextService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Gothic2/Scripts/Services/Context/G2ContextService.cs b/Assets/Gothic2/Scripts/Services/Context/G2ContextService.cs index 20f7ecd83..ec2208600 100644 --- a/Assets/Gothic2/Scripts/Services/Context/G2ContextService.cs +++ b/Assets/Gothic2/Scripts/Services/Context/G2ContextService.cs @@ -13,7 +13,7 @@ public class G2ContextService : IContextGameVersionService public GameVersion Version => GameVersion.Gothic2; string IContextGameVersionService.RootPath => _configService.Root.Gothic2Path; - public string CutsceneFileSuffix => "CSL"; + public string CutsceneFileSuffix => "LSC"; // FIXME - Load from GothicGame.ini public string InitialWorld => "newworld.zen";