Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
91816c6
fix: Allow main menu music again (lower disable threshold)
JaXt0r Jun 6, 2026
a69c652
fix: Move main menu background behind menu, disable floor, and change…
JaXt0r Jun 6, 2026
efdb27f
fix: VrIntroduceChapter now injects Services.
JaXt0r Jun 6, 2026
11430f9
fix: Broken font by removing sprite with initial race condition (not …
JaXt0r Jun 9, 2026
649bfc7
fix: Restore VRMouth food detection — add VobItem/VobItemNoWorldColli…
BoroBongo Jun 9, 2026
2218d63
feat: player -> NPC melee combat
BoroBongo Jun 9, 2026
df877d1
NPC -> Player attack foundation
BoroBongo Jun 9, 2026
b5477f3
fix: guard remote grabbers and restrict draw sounds and mouth detecti…
BoroBongo Jun 10, 2026
a153929
catching null references
BoroBongo Jun 10, 2026
f3977a2
added NpcAttackAdapter through the prefab
BoroBongo Jun 10, 2026
ffbf5d6
feat: NPC loot panel — grab dead NPCs to open inventory
BoroBongo Jun 10, 2026
b833c9c
fix: VobMeshCullingDomain — guard dynamically-spawned items against c…
BoroBongo Jun 10, 2026
da2b7ee
null-check destroyed renderers to prevent stuck ghost shader
BoroBongo Jun 10, 2026
d6a1eff
fix: loot item texture corruption and VRSocket destroy-time re-parent…
BoroBongo Jun 10, 2026
c17aa93
swapped Debug.Log to our own Logger service, using LogCat.Npc
BoroBongo Jun 11, 2026
ecde8d8
feat: Move config to NPC-WIP section.
JaXt0r Jun 13, 2026
a96a179
refactor: Remove NpcAttackAdapter for now and changed logging of othe…
JaXt0r Jun 13, 2026
b10b80b
refactor: Move WeaponAttackAdapter to VR module.
JaXt0r Jun 13, 2026
2cb2a49
refactor: Remove reflections.
JaXt0r Jun 13, 2026
27f90a1
requested cleanup: moved populate sockets logic into its own method
BoroBongo Jun 13, 2026
e9fbe57
Merge pull request #365 from Gothic-Unity-Project/borobongo/stabilizi…
BoroBongo Jun 13, 2026
28b2730
fix: restore GlobalOther/GlobalVictim correctly after perception call…
BoroBongo Jun 12, 2026
2e4feff
fix: NpcHelperService aiState filter compared wrong NPC's state index
BoroBongo Jun 12, 2026
aa507e7
fix: death/hit animation bypasses queue, guard double-hit on dead NPC…
BoroBongo Jun 12, 2026
4412909
fix: release FreePoint when NPC switches routine, remove stale commen…
BoroBongo Jun 12, 2026
9145046
fix: GoToNpc stops 1.5m before target, GoToWp guards null path from F…
BoroBongo Jun 12, 2026
af38def
fix: FormatException when parsing animation event slots with trailing…
BoroBongo Jun 12, 2026
d172a4f
fix: NpcHeadMeshBuilder null-safe NpcLoader/Npc access during async h…
BoroBongo Jun 12, 2026
181d2c6
feat: pre-warm TMP font atlas from Daedalus VM string symbols on startup
BoroBongo Jun 12, 2026
bb6a9cc
rollback font
BoroBongo Jun 12, 2026
5941ca5
fix for hp bar - they appeared empty in actual VR
BoroBongo Jun 12, 2026
80e70c2
fix: set LiberationSans SDF empty to Static mode so Gothic bitmap cha…
BoroBongo Jun 12, 2026
5ac25ed
fix: Npc_HasItems now reads packed inventory; world item pickup amoun…
BoroBongo Jun 12, 2026
cdff9e9
fix: prevent InitVobCoroutine crash on broken VOBs; fix null GetFirst…
BoroBongo Jun 12, 2026
9717be1
fix: release HVR grab and restore kinematic when opening dead NPC loot
BoroBongo Jun 12, 2026
e0f805d
fix: null guards in VobMeshCullingDomain, VRBackpack, AiHandler
BoroBongo Jun 12, 2026
3bfcc9c
oops typo
BoroBongo Jun 12, 2026
8682f60
fix: Npc_IsDead now checks BodyState instead of returning false
BoroBongo Jun 13, 2026
3c57992
fix: set GlobalOther=hero before ZS_* loops and dialog condition eval…
BoroBongo Jun 13, 2026
fb8f50f
simplest fix is usually the best.... turns out to fix healthbar on PC…
BoroBongo Jun 13, 2026
08c88a7
Merge pull request #367 from Gothic-Unity-Project/borobongo/stabilizi…
BoroBongo Jun 13, 2026
acb37f2
Merge branch 'main' into releases/stabilizing-for-2026-07
JaXt0r Jun 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -51,13 +51,15 @@ MonoBehaviour:
ShowVOBMeshCullingGizmos: 0
ShowCapsuleOverlapGizmos: 0
EnableNpcs: 1
EnableCombatSystem: 1
EnableNpcMeshCulling: 1
NpcCullingDistance: 50
SpawnNpcInstances:
Value:
SpawnMonsterInstances:
Value: 00000000
EnableNpcEyeBlinking: 0
EnableNpcLooting: 1
ShowNpcColliders: 0
ShowFreePoints: 0
ShowWayPoints: 0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,25 @@ MonoBehaviour:
m_TabWidth: 29
m_Material: {fileID: 5152873236376385906}
m_SourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75
m_CreationSettings:
sourceFontFileName:
sourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75
faceIndex: 0
pointSizeSamplingMode: 0
pointSize: 104
padding: 8
paddingMode: 1
packingMode: 0
atlasWidth: 512
atlasHeight: 256
characterSetSelectionMode: 5
characterSequence:
referencedFontAssetGUID:
referencedTextAssetGUID:
fontStyle: 0
fontStyleModifier: 0
renderMode: 4165
includeFontFeatures: 0
m_SourceFontFile: {fileID: 0}
m_SourceFontFilePath:
m_AtlasPopulationMode: 0
Expand Down Expand Up @@ -67,25 +86,6 @@ MonoBehaviour:
m_MarkToMarkAdjustmentRecords: []
m_ShouldReimportFontFeatures: 0
m_FallbackFontAssetTable: []
m_CreationSettings:
sourceFontFileName:
sourceFontFileGUID: e3265ab4bf004d28a9537516768c1c75
faceIndex: 0
pointSizeSamplingMode: 0
pointSize: 104
padding: 8
paddingMode: 1
packingMode: 0
atlasWidth: 512
atlasHeight: 256
characterSetSelectionMode: 5
characterSequence:
referencedFontAssetGUID:
referencedTextAssetGUID:
fontStyle: 0
fontStyleModifier: 0
renderMode: 4165
includeFontFeatures: 0
m_FontWeightTable:
- regularTypeface: {fileID: 0}
italicTypeface: {fileID: 0}
Expand Down Expand Up @@ -151,17 +151,15 @@ Texture2D:
m_ImageContentsHash:
serializedVersion: 2
Hash: 00000000000000000000000000000000
m_ForcedFallbackFormat: 4
m_DownscaleFallback: 0
m_IsAlphaChannelOptional: 0
serializedVersion: 2
serializedVersion: 4
m_Width: 512
m_Height: 256
m_CompleteImageSize: 131072
m_MipsStripped: 0
m_TextureFormat: 1
m_MipCount: 1
m_IsReadable: 0
m_IsReadable: 1
m_IsPreProcessed: 0
m_IgnoreMipmapLimit: 0
m_MipmapLimitGroupName:
Expand Down Expand Up @@ -297,3 +295,4 @@ Material:
- _SpecularColor: {r: 1, g: 1, b: 1, a: 1}
- _UnderlayColor: {r: 0, g: 0, b: 0, a: 0.5}
m_BuildTextureStacks: []
m_AllowLocking: 1
Original file line number Diff line number Diff line change
Expand Up @@ -225,7 +225,7 @@ Canvas:
m_OverridePixelPerfect: 0
m_SortingBucketNormalizedSize: 0
m_VertexColorAlwaysGammaSpace: 1
m_AdditionalShaderChannelsFlag: 0
m_AdditionalShaderChannelsFlag: 25
m_UpdateRectTransformForStandalone: 0
m_SortingLayerID: 0
m_SortingOrder: 0
Expand Down
130 changes: 114 additions & 16 deletions Assets/Gothic-Core/Scenes/MainMenu.unity
Original file line number Diff line number Diff line change
Expand Up @@ -287,7 +287,7 @@ MeshRenderer:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 775636288}
m_Enabled: 1
m_Enabled: 0
m_CastShadows: 1
m_ReceiveShadows: 1
m_DynamicOccludee: 1
Expand All @@ -300,6 +300,8 @@ MeshRenderer:
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
Expand All @@ -321,9 +323,11 @@ MeshRenderer:
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &775636291
MeshFilter:
Expand Down Expand Up @@ -388,7 +392,7 @@ Transform:
m_GameObject: {fileID: 783007466}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: -15.407947, y: 2.073237, z: -29.998268}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
Expand Down Expand Up @@ -467,6 +471,8 @@ MeshRenderer:
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
Expand All @@ -488,9 +494,11 @@ MeshRenderer:
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &791865609
MeshFilter:
Expand Down Expand Up @@ -565,17 +573,23 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 3
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_LightLayerMask: 1
m_RenderingLayers: 1
m_CustomShadowLayers: 0
m_ShadowLayerMask: 1
m_ShadowRenderingLayers: 1
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 0
m_RenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_ShadowRenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_Version: 4
m_LightLayerMask: 1
m_ShadowLayerMask: 1
m_RenderingLayers: 1
m_ShadowRenderingLayers: 1
--- !u!108 &1308095012
Light:
m_ObjectHideFlags: 0
Expand All @@ -584,14 +598,14 @@ Light:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1308095009}
m_Enabled: 1
serializedVersion: 11
serializedVersion: 12
m_Type: 1
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_Intensity: 1
m_Range: 10
m_SpotAngle: 30
m_InnerSpotAngle: 21.80208
m_CookieSize: 10
m_CookieSize2D: {x: 10, y: 10}
m_Shadows:
m_Type: 0
m_Resolution: -1
Expand Down Expand Up @@ -667,13 +681,13 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2031667426}
m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 0, z: 0.02}
m_LocalScale: {x: -40, y: 8, z: 32}
m_LocalRotation: {x: 0, y: 0.7071068, z: 0.7071068, w: 0}
m_LocalPosition: {x: 0, y: 0, z: 10}
m_LocalScale: {x: 2, y: 1, z: 2}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 783007468}
m_LocalEulerAnglesHint: {x: -90, y: 0, z: 0}
m_LocalEulerAnglesHint: {x: -90, y: 180, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
Expand Down Expand Up @@ -721,6 +735,8 @@ MeshRenderer:
m_RayTracingAccelStructBuildFlagsOverride: 0
m_RayTracingAccelStructBuildFlags: 1
m_SmallMeshCulling: 1
m_ForceMeshLod: -1
m_MeshLodSelectionBias: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials: []
Expand All @@ -741,9 +757,11 @@ MeshRenderer:
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_GlobalIlluminationMeshLod: 0
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
m_MaskInteraction: 0
m_AdditionalVertexStreams: {fileID: 0}
--- !u!33 &2031667430
MeshFilter:
Expand All @@ -761,10 +779,38 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 505140342}
m_Modifications:
- target: {fileID: 514510020229674838, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 819469628458212509, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 1099075632631060353, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 1395391690268023265, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 1684002802907956876, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 1879303798920566507, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_Name
value: Tutorials
objectReference: {fileID: 0}
- target: {fileID: 1894576811620697740, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 1988018937390540162, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 22.9
objectReference: {fileID: 0}
- target: {fileID: 2283093842980008316, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_LocalPosition.x
value: 0
Expand Down Expand Up @@ -805,6 +851,58 @@ PrefabInstance:
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 3406562529197016604, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 3521149265392391147, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 22.35
objectReference: {fileID: 0}
- target: {fileID: 4641005291164401446, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 6503434739734083609, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 6916374624597502023, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 36.75
objectReference: {fileID: 0}
- target: {fileID: 6924097052499452501, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 7063008752886569165, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 7255685370734901281, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 7407273248831804694, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 22.35
objectReference: {fileID: 0}
- target: {fileID: 8256774338473347927, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 8591534907977924294, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 9011431278706922558, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
- target: {fileID: 9118953017428058395, guid: a0af29d97abd24d4c8382b6da4017660, type: 3}
propertyPath: m_fontSize
value: 44.75
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
Expand All @@ -828,19 +926,19 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7389606469834037353, guid: 962bda2b335a56f48a6f7159a9e824d8, type: 3}
propertyPath: m_LocalScale.x
value: 0.7
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7389606469834037353, guid: 962bda2b335a56f48a6f7159a9e824d8, type: 3}
propertyPath: m_LocalScale.y
value: 0.7
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7389606469834037353, guid: 962bda2b335a56f48a6f7159a9e824d8, type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 7389606469834037353, guid: 962bda2b335a56f48a6f7159a9e824d8, type: 3}
propertyPath: m_LocalPosition.y
value: 1.6
value: 1.5
objectReference: {fileID: 0}
- target: {fileID: 7389606469834037353, guid: 962bda2b335a56f48a6f7159a9e824d8, type: 3}
propertyPath: m_LocalPosition.z
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -565,13 +565,13 @@ private void ApplyEventTags(AnimationTrackInstance trackInstance)
AttackAnimation = trackInstance.AnimationName;
break;
case EventType.OptimalFrame:
AttackOptFrame = eventTag.Slots.Item1.Split(' ').Select(i => Convert.ToInt32(i)).ToList();
AttackOptFrame = eventTag.Slots.Item1.Split(' ').Where(s => !string.IsNullOrEmpty(s)).Select(i => Convert.ToInt32(i)).ToList();
break;
case EventType.HitEnd:
AttackHitEnd = eventTag.Slots.Item1.Split(' ').Select(i => Convert.ToInt32(i)).ToList();
AttackHitEnd = eventTag.Slots.Item1.Split(' ').Where(s => !string.IsNullOrEmpty(s)).Select(i => Convert.ToInt32(i)).ToList();
break;
case EventType.ComboWindow:
AttackWindowFrames = eventTag.Slots.Item1.Split(' ').Select(i => Convert.ToInt32(i)).ToList();
AttackWindowFrames = eventTag.Slots.Item1.Split(' ').Where(s => !string.IsNullOrEmpty(s)).Select(i => Convert.ToInt32(i)).ToList();
break;
// Unused. @see: https://gothic-modding-community.github.io/gmc/zengin/anims/events/#def_dir
case EventType.HitDirection:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,12 @@ protected void StartAnimation(string morphMeshName, [CanBeNull] string animation
var newMorph = new MorphAnimationData();

newMorph.MeshMetadata = _resourceCacheService.TryGetMorphMesh(morphMeshName);
if (newMorph.MeshMetadata == null)
{
Logger.LogWarning($"MorphMesh not found: {morphMeshName}", LogCat.Mesh);
return;
}

newMorph.AnimationMetadata = animationName == null
? newMorph.MeshMetadata.Animations.First()
: newMorph.MeshMetadata.Animations.First(anim => anim.Name.EqualsIgnoreCase(animationName));
Expand Down
Loading