From 99d5bc6c7c7ef115e4a3e80152399dde713776a3 Mon Sep 17 00:00:00 2001
From: MaZiFAU <63099053+MaZiFAU@users.noreply.github.com>
Date: Thu, 11 Jan 2024 20:13:34 +0100
Subject: [PATCH] Added SlingShot for RiverScroll

---
 Assets/Scenes/Worlds/RiverWorld.unity         | 411 +++++++++++++++++-
 .../FactHandling/Facts/Fact.cs                |  13 +-
 .../Scripts/InventoryStuff/ScrollDetails.cs   |   7 +
 Assets/StreamingAssets/scrolls.json           |  46 ++
 Assets/Terrain/New Terrain 1.asset            | Bin 1983508 -> 1958528 bytes
 5 files changed, 468 insertions(+), 9 deletions(-)

diff --git a/Assets/Scenes/Worlds/RiverWorld.unity b/Assets/Scenes/Worlds/RiverWorld.unity
index db57f12c..bd8bb3eb 100644
--- a/Assets/Scenes/Worlds/RiverWorld.unity
+++ b/Assets/Scenes/Worlds/RiverWorld.unity
@@ -2199,6 +2199,7 @@ Transform:
   - {fileID: 1022641573}
   - {fileID: 1738359117}
   - {fileID: 224606876}
+  - {fileID: 1772126845}
   - {fileID: 1961703113}
   - {fileID: 1403024657}
   - {fileID: 778909919}
@@ -3870,7 +3871,7 @@ Mesh:
   m_CorrespondingSourceObject: {fileID: 0}
   m_PrefabInstance: {fileID: 0}
   m_PrefabAsset: {fileID: 0}
-  m_Name: pb_Mesh272762
+  m_Name: pb_Mesh30446
   serializedVersion: 10
   m_SubMeshes:
   - serializedVersion: 2
@@ -8407,7 +8408,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 117995034}
-  m_RootOrder: 7
+  m_RootOrder: 8
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!64 &387397069
 MeshCollider:
@@ -14851,6 +14852,120 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 609533837}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &609957610
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 609957611}
+  - component: {fileID: 609957615}
+  - component: {fileID: 609957614}
+  - component: {fileID: 609957613}
+  - component: {fileID: 609957612}
+  m_Layer: 20
+  m_Name: TopSnapZone (1)
+  m_TagString: SnapZone
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &609957611
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 609957610}
+  m_LocalRotation: {x: 0.84378076, y: -0.03475872, z: 0.53532517, w: 0.015902298}
+  m_LocalPosition: {x: -0.384, y: -0.861, z: 0.151}
+  m_LocalScale: {x: 0.27480695, y: 0.42518657, z: 0.30265692}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 1489740373}
+  m_RootOrder: 0
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &609957612
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 609957610}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 03387d215a8db5c47985ef548da953d8, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  ColliderRadius: 0
+  Collidersize_ID: 1
+  use_ColliderRadius: 0
+  myCollider: {fileID: 609957615}
+--- !u!23 &609957613
+MeshRenderer:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 609957610}
+  m_Enabled: 0
+  m_CastShadows: 1
+  m_ReceiveShadows: 1
+  m_DynamicOccludee: 1
+  m_StaticShadowCaster: 0
+  m_MotionVectors: 1
+  m_LightProbeUsage: 1
+  m_ReflectionProbeUsage: 1
+  m_RayTracingMode: 2
+  m_RayTraceProcedural: 0
+  m_RenderingLayerMask: 1
+  m_RendererPriority: 0
+  m_Materials:
+  - {fileID: 2100000, guid: e3750cc498409144f8fd06ac559355b8, type: 2}
+  m_StaticBatchInfo:
+    firstSubMesh: 0
+    subMeshCount: 0
+  m_StaticBatchRoot: {fileID: 0}
+  m_ProbeAnchor: {fileID: 0}
+  m_LightProbeVolumeOverride: {fileID: 0}
+  m_ScaleInLightmap: 1
+  m_ReceiveGI: 1
+  m_PreserveUVs: 0
+  m_IgnoreNormalsForChartDetection: 0
+  m_ImportantGI: 0
+  m_StitchLightmapSeams: 0
+  m_SelectedEditorRenderState: 3
+  m_MinimumChartSize: 4
+  m_AutoUVMaxDistance: 0.5
+  m_AutoUVMaxAngle: 89
+  m_LightmapParameters: {fileID: 0}
+  m_SortingLayerID: 0
+  m_SortingLayer: 0
+  m_SortingOrder: 0
+  m_AdditionalVertexStreams: {fileID: 0}
+--- !u!33 &609957614
+MeshFilter:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 609957610}
+  m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!135 &609957615
+SphereCollider:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 609957610}
+  m_Material: {fileID: 0}
+  m_IsTrigger: 0
+  m_Enabled: 1
+  serializedVersion: 2
+  m_Radius: 0.5
+  m_Center: {x: 0, y: 0, z: 0}
 --- !u!1001 &610861512
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -17865,7 +17980,7 @@ Transform:
   - {fileID: 804378692}
   - {fileID: 2141872373}
   m_Father: {fileID: 117995034}
-  m_RootOrder: 5
+  m_RootOrder: 6
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &778909920
 MonoBehaviour:
@@ -24457,6 +24572,86 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 1089288796}
   m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1092756307
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 1772126845}
+    m_Modifications:
+    - target: {fileID: 1493958779012120596, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_Name
+      value: Branch_01 (1)
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_RootOrder
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalScale.x
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 11.724
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 7.978
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 39.854
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalRotation.w
+      value: -0.483636
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0.71233815
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0.38189718
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0.33589453
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: -25.624
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 250.124
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 105.47
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: b9de24523a11d714db3851b5f0f9d527, type: 3}
+--- !u!4 &1092756308 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+    type: 3}
+  m_PrefabInstance: {fileID: 1092756307}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1001 &1093963207
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -29968,7 +30163,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 117995034}
-  m_RootOrder: 4
+  m_RootOrder: 5
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!136 &1403024658
 CapsuleCollider:
@@ -31814,6 +32009,96 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 1488704536}
   m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1489740372
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 1772126845}
+    m_Modifications:
+    - target: {fileID: 7405846476849542632, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_Name
+      value: Sling Rock
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_RootOrder
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalScale.x
+      value: 2.4094193
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalScale.y
+      value: 1.7600998
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalScale.z
+      value: 2.8016531
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 11.41
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 7.2722
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 40.59
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 0.015902298
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalRotation.x
+      value: -0.84378076
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0.03475872
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0.53532517
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0.595
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 115.237
+      objectReference: {fileID: 0}
+    - target: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: -175.659
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: c6308cb7062fac34e8e50600086b12a1, type: 3}
+--- !u!4 &1489740373 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 7405846476849834440, guid: c6308cb7062fac34e8e50600086b12a1,
+    type: 3}
+  m_PrefabInstance: {fileID: 1489740372}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1001 &1494877857
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -33674,6 +33959,86 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 1594468538}
   m_PrefabAsset: {fileID: 0}
+--- !u!1001 &1606466864
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 1772126845}
+    m_Modifications:
+    - target: {fileID: 1493958779012120596, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_Name
+      value: Branch_01
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_RootOrder
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalScale.x
+      value: 2.2
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 11.211
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalPosition.y
+      value: 7.990138
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 39.65
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalRotation.w
+      value: -0.12834564
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalRotation.x
+      value: 0.52889407
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalRotation.y
+      value: 0.7336173
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0.40694487
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 27.472
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 224.22
+      objectReference: {fileID: 0}
+    - target: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+        type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 82.921
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: b9de24523a11d714db3851b5f0f9d527, type: 3}
+--- !u!4 &1606466865 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 1493958779012619316, guid: b9de24523a11d714db3851b5f0f9d527,
+    type: 3}
+  m_PrefabInstance: {fileID: 1606466864}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1001 &1606843714
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -36651,6 +37016,40 @@ Transform:
     type: 3}
   m_PrefabInstance: {fileID: 1770423821}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &1772126844
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 1772126845}
+  m_Layer: 0
+  m_Name: SlingShot
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!4 &1772126845
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 1772126844}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 0, y: 0, z: 0}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children:
+  - {fileID: 1606466865}
+  - {fileID: 1489740373}
+  - {fileID: 1092756308}
+  m_Father: {fileID: 117995034}
+  m_RootOrder: 3
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &1772391926
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -38536,7 +38935,7 @@ Transform:
   m_ConstrainProportionsScale: 0
   m_Children: []
   m_Father: {fileID: 117995034}
-  m_RootOrder: 6
+  m_RootOrder: 7
   m_LocalEulerAnglesHint: {x: 65.647, y: 6.9600005, z: -8.707001}
 --- !u!108 &1840687080
 Light:
@@ -55348,7 +55747,7 @@ Transform:
   - {fileID: 1932528655}
   - {fileID: 98795657}
   m_Father: {fileID: 117995034}
-  m_RootOrder: 3
+  m_RootOrder: 4
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!114 &1961703114
 MonoBehaviour:
diff --git a/Assets/Scripts/InteractionEngine/FactHandling/Facts/Fact.cs b/Assets/Scripts/InteractionEngine/FactHandling/Facts/Fact.cs
index 6799e7c7..64fa2c06 100644
--- a/Assets/Scripts/InteractionEngine/FactHandling/Facts/Fact.cs
+++ b/Assets/Scripts/InteractionEngine/FactHandling/Facts/Fact.cs
@@ -632,9 +632,16 @@ public static List<Fact> MMTFactory(MMTFact ingredient)
         List<Fact> ret = new();
 
         // First try static approach
-        ParsingDictionary.parseFactDictionary[ingredient.getType()]
-            .Invoke(ret, ingredient)
-            .FastForward();
+        try
+        {
+            ParsingDictionary.parseFactDictionary[ingredient.getType()]
+                .Invoke(ret, ingredient)
+                .FastForward();
+        }
+        catch 
+        {
+            Debug.Log($"Could not statically parse {nameof(MMTFact)} {nameof(ingredient)}. Using dynamic Fallback...");
+        }
 
         if (ret.Count != 0)
             return ret;
diff --git a/Assets/Scripts/InventoryStuff/ScrollDetails.cs b/Assets/Scripts/InventoryStuff/ScrollDetails.cs
index c9656d80..09de155b 100644
--- a/Assets/Scripts/InventoryStuff/ScrollDetails.cs
+++ b/Assets/Scripts/InventoryStuff/ScrollDetails.cs
@@ -456,6 +456,13 @@ void _processRenderedScroll(Scroll rendered, List<string> hintUris)
                 RenderedScrollFact RenderedScrollFact = ParameterDisplays
                     .Find(RSF => RSF.ScrollFactURI == rendered.requiredFacts[i].@ref.uri);
 
+                if (RenderedScrollFact == null)
+                {
+                    Debug.Log($"Descrapancy between requiredFacts and displayed facts:" +
+                        $"Could not find display with ref: {rendered.requiredFacts[i].@ref.uri}");
+                    continue;
+                }
+
                 if (DynamicScrollDescriptionsActive)
                     //Update ScrollParameter label
                     RenderedScrollFact.Scroll = rendered;
diff --git a/Assets/StreamingAssets/scrolls.json b/Assets/StreamingAssets/scrolls.json
index 8ee1e6e6..bc84faf6 100644
--- a/Assets/StreamingAssets/scrolls.json
+++ b/Assets/StreamingAssets/scrolls.json
@@ -22454,6 +22454,52 @@
 		],
 		"acquiredFacts": []
 	}, 
+	
+	{
+		"ref": "http://mathhub.info/FrameIT/frameworld?RiverScroll",
+		"label": "RiverScroll",
+		"description": "River.",
+		"requiredFacts": [
+		{
+				"ref": {
+					"uri": "http://mathhub.info/FrameIT/frameworld?RiverScroll/Problem?A"
+				},
+				"kind": "general"
+		},
+		{
+				"ref": {
+					"uri": "http://mathhub.info/FrameIT/frameworld?RiverScroll/Problem?B"
+				},
+				"kind": "general"
+		},
+		{
+				"ref": {
+					"uri": "http://mathhub.info/FrameIT/frameworld?RiverScroll/Problem?C"
+				},
+				"kind": "general"
+		},
+		{
+				"ref": {
+					"uri": "http://mathhub.info/FrameIT/frameworld?RiverScroll/Problem?D"
+				},
+				"kind": "general"
+		},
+		{
+				"ref": {
+					"uri": "http://mathhub.info/FrameIT/frameworld?RiverScroll/Problem?G"
+				},
+				"kind": "general"
+		},
+		{
+				"ref": {
+					"uri": "http://mathhub.info/FrameIT/frameworld?RiverScroll/Problem?angleA"
+				},
+				"kind": "general"
+		}
+		],
+		"acquiredFacts": []
+	},
+	
 	{
 		"ref": "http://mathhub.info/FrameIT/frameworld?CircleLineAngleScroll",
 		"label": "CircleLineAngleScroll",
diff --git a/Assets/Terrain/New Terrain 1.asset b/Assets/Terrain/New Terrain 1.asset
index 11f70c50795995cf355f709531e2a47052ded9da..21038801806d4a9e2c0fd08c25eaabae319585c6 100644
GIT binary patch
delta 7488
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

delta 39639
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
Lh`BI;X$A%WY}<e{

-- 
GitLab