diff --git a/Assets/Graphics/Animation/ChainLightningOrb.anim b/Assets/Graphics/Animation/ChainLightningOrb.anim
new file mode 100644
index 00000000..167adfc1
--- /dev/null
+++ b/Assets/Graphics/Animation/ChainLightningOrb.anim
@@ -0,0 +1,138 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!74 &7400000
+AnimationClip:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChainLightningOrb
+ serializedVersion: 7
+ m_Legacy: 0
+ m_Compressed: 0
+ m_UseHighQualityCurve: 1
+ m_RotationCurves: []
+ m_CompressedRotationCurves: []
+ m_EulerCurves: []
+ m_PositionCurves: []
+ m_ScaleCurves: []
+ m_FloatCurves: []
+ m_PPtrCurves:
+ - serializedVersion: 2
+ curve:
+ - time: 0
+ value: {fileID: 3112027180600672057, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.083333336
+ value: {fileID: -3658826879486719873, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.16666667
+ value: {fileID: 231708683369588047, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.25
+ value: {fileID: -1208587394263326236, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.33333334
+ value: {fileID: 236422566541920856, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.41666669
+ value: {fileID: -3508679888957169061, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.5
+ value: {fileID: -6094687489715682315, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.58333337
+ value: {fileID: 2883065883746469608, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.6666667
+ value: {fileID: -8982159857408402294, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.75
+ value: {fileID: -799279947985030534, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.83333337
+ value: {fileID: 4510625927976728850, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 0.9166667
+ value: {fileID: 2113366754050510075, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1
+ value: {fileID: 4369064337180826890, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1.0833334
+ value: {fileID: -1969633779704712751, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1.1666667
+ value: {fileID: -3899788003005307118, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1.25
+ value: {fileID: -4962171180683232601, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1.3333334
+ value: {fileID: -2370864095218513919, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1.4166667
+ value: {fileID: 1049491602104027953, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1.5
+ value: {fileID: -4183983715464417217, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1.5833334
+ value: {fileID: -4233451866447810493, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1.6666667
+ value: {fileID: -2414805374548436684, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1.75
+ value: {fileID: -1628643192592974098, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - time: 1.8333334
+ value: {fileID: 3935560846184996004, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ attribute: m_Sprite
+ path:
+ classID: 212
+ script: {fileID: 0}
+ flags: 2
+ m_SampleRate: 12
+ m_WrapMode: 0
+ m_Bounds:
+ m_Center: {x: 0, y: 0, z: 0}
+ m_Extent: {x: 0, y: 0, z: 0}
+ m_ClipBindingConstant:
+ genericBindings:
+ - serializedVersion: 2
+ path: 0
+ attribute: 0
+ script: {fileID: 0}
+ typeID: 212
+ customType: 23
+ isPPtrCurve: 1
+ isIntCurve: 0
+ isSerializeReferenceCurve: 0
+ pptrCurveMapping:
+ - {fileID: 3112027180600672057, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -3658826879486719873, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: 231708683369588047, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -1208587394263326236, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: 236422566541920856, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -3508679888957169061, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -6094687489715682315, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: 2883065883746469608, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -8982159857408402294, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -799279947985030534, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: 4510625927976728850, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: 2113366754050510075, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: 4369064337180826890, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -1969633779704712751, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -3899788003005307118, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -4962171180683232601, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -2370864095218513919, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: 1049491602104027953, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -4183983715464417217, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -4233451866447810493, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -2414805374548436684, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: -1628643192592974098, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ - {fileID: 3935560846184996004, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ m_AnimationClipSettings:
+ serializedVersion: 2
+ m_AdditiveReferencePoseClip: {fileID: 0}
+ m_AdditiveReferencePoseTime: 0
+ m_StartTime: 0
+ m_StopTime: 1.9166667
+ m_OrientationOffsetY: 0
+ m_Level: 0
+ m_CycleOffset: 0
+ m_HasAdditiveReferencePose: 0
+ m_LoopTime: 1
+ m_LoopBlend: 0
+ m_LoopBlendOrientation: 0
+ m_LoopBlendPositionY: 0
+ m_LoopBlendPositionXZ: 0
+ m_KeepOriginalOrientation: 0
+ m_KeepOriginalPositionY: 1
+ m_KeepOriginalPositionXZ: 0
+ m_HeightFromFeet: 0
+ m_Mirror: 0
+ m_EditorCurves: []
+ m_EulerEditorCurves: []
+ m_HasGenericRootTransform: 0
+ m_HasMotionFloatCurves: 0
+ m_Events: []
diff --git a/Assets/Graphics/Animation/ChainLightningOrb.anim.meta b/Assets/Graphics/Animation/ChainLightningOrb.anim.meta
new file mode 100644
index 00000000..23bc940a
--- /dev/null
+++ b/Assets/Graphics/Animation/ChainLightningOrb.anim.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: f6078190a2b3c4d5e6f70891a3b4c5d6
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 7400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Graphics/Animation/ChainLightningOrb.controller b/Assets/Graphics/Animation/ChainLightningOrb.controller
new file mode 100644
index 00000000..9a9ac976
--- /dev/null
+++ b/Assets/Graphics/Animation/ChainLightningOrb.controller
@@ -0,0 +1,72 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1102 &-7001001
+AnimatorState:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChainLightningOrb
+ m_Speed: 1
+ m_CycleOffset: 0
+ m_Transitions: []
+ m_StateMachineBehaviours: []
+ m_Position: {x: 50, y: 50, z: 0}
+ m_IKOnFeet: 0
+ m_WriteDefaultValues: 1
+ m_Mirror: 0
+ m_SpeedParameterActive: 0
+ m_MirrorParameterActive: 0
+ m_CycleOffsetParameterActive: 0
+ m_TimeParameterActive: 0
+ m_Motion: {fileID: 7400000, guid: f6078190a2b3c4d5e6f70891a3b4c5d6, type: 2}
+ m_Tag:
+ m_SpeedParameter:
+ m_MirrorParameter:
+ m_CycleOffsetParameter:
+ m_TimeParameter:
+--- !u!1107 &-7001002
+AnimatorStateMachine:
+ serializedVersion: 6
+ m_ObjectHideFlags: 1
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Base Layer
+ m_ChildStates:
+ - serializedVersion: 1
+ m_State: {fileID: -7001001}
+ m_Position: {x: 250, y: 110, z: 0}
+ m_ChildStateMachines: []
+ m_AnyStateTransitions: []
+ m_EntryTransitions: []
+ m_StateMachineTransitions: {}
+ m_StateMachineBehaviours: []
+ m_AnyStatePosition: {x: 50, y: 20, z: 0}
+ m_EntryPosition: {x: 50, y: 120, z: 0}
+ m_ExitPosition: {x: 800, y: 120, z: 0}
+ m_ParentStateMachinePosition: {x: 800, y: 20, z: 0}
+ m_DefaultState: {fileID: -7001001}
+--- !u!91 &9100000
+AnimatorController:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: ChainLightningOrb
+ serializedVersion: 5
+ m_AnimatorParameters: []
+ m_AnimatorLayers:
+ - serializedVersion: 5
+ m_Name: Base Layer
+ m_StateMachine: {fileID: -7001002}
+ m_Mask: {fileID: 0}
+ m_Motions: []
+ m_Behaviours: []
+ m_BlendingMode: 0
+ m_SyncedLayerIndex: -1
+ m_DefaultWeight: 0
+ m_IKPass: 0
+ m_SyncedLayerAffectsTiming: 0
+ m_Controller: {fileID: 9100000}
diff --git a/Assets/Graphics/Animation/ChainLightningOrb.controller.meta b/Assets/Graphics/Animation/ChainLightningOrb.controller.meta
new file mode 100644
index 00000000..9c3d706e
--- /dev/null
+++ b/Assets/Graphics/Animation/ChainLightningOrb.controller.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 08190a2b3c4d5e6f70891a3b4c5d6e7f
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 9100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Graphics/Materials/LightningLine.mat b/Assets/Graphics/Materials/LightningLine.mat
new file mode 100644
index 00000000..4b4c5757
--- /dev/null
+++ b/Assets/Graphics/Materials/LightningLine.mat
@@ -0,0 +1,34 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: LightningLine
+ m_Shader: {fileID: 10101, guid: 0000000000000000e000000000000000, type: 0}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _MainTex:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats: []
+ m_Colors:
+ - _Color: {r: 0.6, g: 0.8, b: 1, a: 0.9}
+ - _RendererColor: {r: 1, g: 1, b: 1, a: 1}
+ m_BuildTextureStacks: []
diff --git a/Assets/Graphics/Materials/LightningLine.mat.meta b/Assets/Graphics/Materials/LightningLine.mat.meta
new file mode 100644
index 00000000..91e8ddeb
--- /dev/null
+++ b/Assets/Graphics/Materials/LightningLine.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: a3b4c5d6e7f8091a2b3c4d5e6f70891a
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Graphics/Sprites/Pickups/Seer_blink.png b/Assets/Graphics/Sprites/Pickups/Seer_blink.png
new file mode 100644
index 00000000..a49e0ef1
Binary files /dev/null and b/Assets/Graphics/Sprites/Pickups/Seer_blink.png differ
diff --git a/Assets/Graphics/Sprites/Pickups/Seer_blink.png.meta b/Assets/Graphics/Sprites/Pickups/Seer_blink.png.meta
new file mode 100644
index 00000000..2aa842a3
--- /dev/null
+++ b/Assets/Graphics/Sprites/Pickups/Seer_blink.png.meta
@@ -0,0 +1,728 @@
+fileFormatVersion: 2
+guid: fc169414b3a5341e9a0b1241daa48455
+TextureImporter:
+ internalIDToNameTable:
+ - first:
+ 213: 3112027180600672057
+ second: Seer_blink_0
+ - first:
+ 213: -3658826879486719873
+ second: Seer_blink_1
+ - first:
+ 213: 231708683369588047
+ second: Seer_blink_2
+ - first:
+ 213: -1208587394263326236
+ second: Seer_blink_3
+ - first:
+ 213: 236422566541920856
+ second: Seer_blink_4
+ - first:
+ 213: -3508679888957169061
+ second: Seer_blink_5
+ - first:
+ 213: -6094687489715682315
+ second: Seer_blink_6
+ - first:
+ 213: 2883065883746469608
+ second: Seer_blink_7
+ - first:
+ 213: -8982159857408402294
+ second: Seer_blink_8
+ - first:
+ 213: -799279947985030534
+ second: Seer_blink_9
+ - first:
+ 213: 4510625927976728850
+ second: Seer_blink_10
+ - first:
+ 213: 2113366754050510075
+ second: Seer_blink_11
+ - first:
+ 213: 4369064337180826890
+ second: Seer_blink_12
+ - first:
+ 213: -1969633779704712751
+ second: Seer_blink_13
+ - first:
+ 213: -3899788003005307118
+ second: Seer_blink_14
+ - first:
+ 213: -4962171180683232601
+ second: Seer_blink_15
+ - first:
+ 213: -2370864095218513919
+ second: Seer_blink_16
+ - first:
+ 213: 1049491602104027953
+ second: Seer_blink_17
+ - first:
+ 213: -4183983715464417217
+ second: Seer_blink_18
+ - first:
+ 213: -4233451866447810493
+ second: Seer_blink_19
+ - first:
+ 213: -2414805374548436684
+ second: Seer_blink_20
+ - first:
+ 213: -1628643192592974098
+ second: Seer_blink_21
+ - first:
+ 213: 3935560846184996004
+ second: Seer_blink_22
+ externalObjects: {}
+ serializedVersion: 13
+ mipmaps:
+ mipMapMode: 0
+ enableMipMap: 0
+ sRGBTexture: 1
+ linearTexture: 0
+ fadeOut: 0
+ borderMipMap: 0
+ mipMapsPreserveCoverage: 0
+ alphaTestReferenceValue: 0.5
+ mipMapFadeDistanceStart: 1
+ mipMapFadeDistanceEnd: 3
+ bumpmap:
+ convertToNormalMap: 0
+ externalNormalMap: 0
+ heightScale: 0.25
+ normalMapFilter: 0
+ flipGreenChannel: 0
+ isReadable: 0
+ streamingMipmaps: 0
+ streamingMipmapsPriority: 0
+ vTOnly: 0
+ ignoreMipmapLimit: 0
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: 1
+ aniso: 1
+ mipBias: 0
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 2
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 32
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ flipbookRows: 1
+ flipbookColumns: 1
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ ignorePngGamma: 0
+ applyGammaDecoding: 0
+ swizzle: 50462976
+ cookieLightType: 0
+ platformSettings:
+ - serializedVersion: 4
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Standalone
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ - serializedVersion: 4
+ buildTarget: Android
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ ignorePlatformSupport: 0
+ androidETC2FallbackOverride: 0
+ forceMaximumCompressionQuality_BC6H_BC7: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites:
+ - serializedVersion: 2
+ name: Seer_blink_0
+ rect:
+ serializedVersion: 2
+ x: 3
+ y: 135
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 93f30178b34203b20800000000000000
+ internalID: 3112027180600672057
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_1
+ rect:
+ serializedVersion: 2
+ x: 35
+ y: 135
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: f780b81a65c393dc0800000000000000
+ internalID: -3658826879486719873
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_2
+ rect:
+ serializedVersion: 2
+ x: 67
+ y: 135
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: f452e93e1d1373300800000000000000
+ internalID: 231708683369588047
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_3
+ rect:
+ serializedVersion: 2
+ x: 99
+ y: 135
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 4e16be41b2c3a3fe0800000000000000
+ internalID: -1208587394263326236
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_4
+ rect:
+ serializedVersion: 2
+ x: 131
+ y: 135
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 85a0e975211f74300800000000000000
+ internalID: 236422566541920856
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_5
+ rect:
+ serializedVersion: 2
+ x: 3
+ y: 103
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: b52a6241b3aae4fc0800000000000000
+ internalID: -3508679888957169061
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_6
+ rect:
+ serializedVersion: 2
+ x: 35
+ y: 103
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 5f3ca76e4025b6ba0800000000000000
+ internalID: -6094687489715682315
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_7
+ rect:
+ serializedVersion: 2
+ x: 67
+ y: 103
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 8e681c86525b20820800000000000000
+ internalID: 2883065883746469608
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_8
+ rect:
+ serializedVersion: 2
+ x: 99
+ y: 103
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: a8c166ff235f85380800000000000000
+ internalID: -8982159857408402294
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_9
+ rect:
+ serializedVersion: 2
+ x: 131
+ y: 103
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: a7272404f1368e4f0800000000000000
+ internalID: -799279947985030534
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_10
+ rect:
+ serializedVersion: 2
+ x: 3
+ y: 71
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 21938b71266f89e30800000000000000
+ internalID: 4510625927976728850
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_11
+ rect:
+ serializedVersion: 2
+ x: 35
+ y: 71
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: bfc0d4f9ddf245d10800000000000000
+ internalID: 2113366754050510075
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_12
+ rect:
+ serializedVersion: 2
+ x: 67
+ y: 71
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: a0d9d7acdd802ac30800000000000000
+ internalID: 4369064337180826890
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_13
+ rect:
+ serializedVersion: 2
+ x: 99
+ y: 71
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 1d1371f43847aa4e0800000000000000
+ internalID: -1969633779704712751
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_14
+ rect:
+ serializedVersion: 2
+ x: 131
+ y: 71
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 217e985297b21e9c0800000000000000
+ internalID: -3899788003005307118
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_15
+ rect:
+ serializedVersion: 2
+ x: 3
+ y: 39
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 7aaf1b41a93d22bb0800000000000000
+ internalID: -4962171180683232601
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_16
+ rect:
+ serializedVersion: 2
+ x: 35
+ y: 39
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 108c5c1baaff81fd0800000000000000
+ internalID: -2370864095218513919
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_17
+ rect:
+ serializedVersion: 2
+ x: 67
+ y: 39
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 13b8a2a3d0b809e00800000000000000
+ internalID: 1049491602104027953
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_18
+ rect:
+ serializedVersion: 2
+ x: 99
+ y: 39
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: f3079bd7af08fe5c0800000000000000
+ internalID: -4183983715464417217
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_19
+ rect:
+ serializedVersion: 2
+ x: 131
+ y: 39
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 340f9ae05f1cf35c0800000000000000
+ internalID: -4233451866447810493
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_20
+ rect:
+ serializedVersion: 2
+ x: 3
+ y: 7
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 43916585e43ec7ed0800000000000000
+ internalID: -2414805374548436684
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_21
+ rect:
+ serializedVersion: 2
+ x: 35
+ y: 7
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: eee33af25a5e569e0800000000000000
+ internalID: -1628643192592974098
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ - serializedVersion: 2
+ name: Seer_blink_22
+ rect:
+ serializedVersion: 2
+ x: 67
+ y: 7
+ width: 27
+ height: 18
+ alignment: 0
+ pivot: {x: 0, y: 0}
+ border: {x: 0, y: 0, z: 0, w: 0}
+ customData:
+ outline: []
+ physicsShape: []
+ tessellationDetail: -1
+ bones: []
+ spriteID: 4acdac4fcbbed9630800000000000000
+ internalID: 3935560846184996004
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ outline: []
+ customData:
+ physicsShape: []
+ bones: []
+ spriteID:
+ internalID: 0
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ secondaryTextures: []
+ spriteCustomMetadata:
+ entries: []
+ nameFileIdTable:
+ Seer_blink_0: 3112027180600672057
+ Seer_blink_1: -3658826879486719873
+ Seer_blink_10: 4510625927976728850
+ Seer_blink_11: 2113366754050510075
+ Seer_blink_12: 4369064337180826890
+ Seer_blink_13: -1969633779704712751
+ Seer_blink_14: -3899788003005307118
+ Seer_blink_15: -4962171180683232601
+ Seer_blink_16: -2370864095218513919
+ Seer_blink_17: 1049491602104027953
+ Seer_blink_18: -4183983715464417217
+ Seer_blink_19: -4233451866447810493
+ Seer_blink_2: 231708683369588047
+ Seer_blink_20: -2414805374548436684
+ Seer_blink_21: -1628643192592974098
+ Seer_blink_22: 3935560846184996004
+ Seer_blink_3: -1208587394263326236
+ Seer_blink_4: 236422566541920856
+ Seer_blink_5: -3508679888957169061
+ Seer_blink_6: -6094687489715682315
+ Seer_blink_7: 2883065883746469608
+ Seer_blink_8: -8982159857408402294
+ Seer_blink_9: -799279947985030534
+ mipmapLimitGroupName:
+ pSDRemoveMatte: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Pickups/ChainLightningEffect.prefab b/Assets/Prefabs/Pickups/ChainLightningEffect.prefab
new file mode 100644
index 00000000..2d3b6fc9
--- /dev/null
+++ b/Assets/Prefabs/Pickups/ChainLightningEffect.prefab
@@ -0,0 +1,269 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &6000001
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6000002}
+ - component: {fileID: 6000003}
+ - component: {fileID: 6000004}
+ - component: {fileID: 6000005}
+ m_Layer: 0
+ m_Name: ChainLightningEffect
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6000002
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6000001}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 1.2, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 6000011}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &6000003
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6000001}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: b2c3d4e5f6078190a2b3c4d5e6f70891, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _lineRenderer: {fileID: 6000012}
+ _lightningDisplayDuration: 0.15
+ _bobAmplitude: 0.08
+ _bobFrequency: 0.5
+--- !u!212 &6000004
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6000001}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 23827671
+ m_SortingLayer: -1
+ m_SortingOrder: 1
+ m_Sprite: {fileID: 3112027180600672057, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!95 &6000005
+Animator:
+ serializedVersion: 7
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6000001}
+ m_Enabled: 1
+ m_Avatar: {fileID: 0}
+ m_Controller: {fileID: 9100000, guid: 08190a2b3c4d5e6f70891a3b4c5d6e7f, type: 2}
+ m_CullingMode: 0
+ m_UpdateMode: 0
+ m_ApplyRootMotion: 0
+ m_LinearVelocityBlending: 0
+ m_StabilizeFeet: 0
+ m_AnimatePhysics: 0
+ m_WarningMessage:
+ m_HasTransformHierarchy: 1
+ m_AllowConstantClipSamplingOptimization: 1
+ m_KeepAnimatorStateOnDisable: 0
+ m_WriteDefaultValuesOnDisable: 0
+--- !u!1 &6000010
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6000011}
+ - component: {fileID: 6000012}
+ m_Layer: 0
+ m_Name: LightningLine
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &6000011
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6000010}
+ serializedVersion: 2
+ 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: []
+ m_Father: {fileID: 6000002}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!120 &6000012
+LineRenderer:
+ serializedVersion: 2
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6000010}
+ m_Enabled: 0
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 0
+ m_ReflectionProbeUsage: 0
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 740904935
+ m_SortingLayer: 2
+ m_SortingOrder: 10
+ m_Positions:
+ - {x: 0, y: 0, z: 0}
+ - {x: 1, y: 0, z: 0}
+ m_Parameters:
+ serializedVersion: 3
+ widthMultiplier: 0.1
+ widthCurve:
+ serializedVersion: 2
+ m_Curve:
+ - serializedVersion: 3
+ time: 0
+ value: 1
+ inSlope: 0
+ outSlope: 0
+ tangentMode: 0
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.33333334
+ m_PreInfinity: 2
+ m_PostInfinity: 2
+ m_RotationOrder: 4
+ colorGradient:
+ serializedVersion: 2
+ key0: {r: 0.29019608, g: 0.98039216, b: 0.21568628, a: 1}
+ key1: {r: 0.29019608, g: 0.98039216, b: 0.21568628, a: 1}
+ key2: {r: 0, g: 0, b: 0, a: 0}
+ key3: {r: 0, g: 0, b: 0, a: 0}
+ key4: {r: 0, g: 0, b: 0, a: 0}
+ key5: {r: 0, g: 0, b: 0, a: 0}
+ key6: {r: 0, g: 0, b: 0, a: 0}
+ key7: {r: 0, g: 0, b: 0, a: 0}
+ ctime0: 0
+ ctime1: 65535
+ ctime2: 0
+ ctime3: 0
+ ctime4: 0
+ ctime5: 0
+ ctime6: 0
+ ctime7: 0
+ atime0: 0
+ atime1: 65535
+ atime2: 0
+ atime3: 0
+ atime4: 0
+ atime5: 0
+ atime6: 0
+ atime7: 0
+ m_Mode: 0
+ m_ColorSpace: -1
+ m_NumColorKeys: 2
+ m_NumAlphaKeys: 2
+ numCornerVertices: 0
+ numCapVertices: 0
+ alignment: 0
+ textureMode: 0
+ textureScale: {x: 1, y: 1}
+ shadowBias: 0.5
+ generateLightingData: 0
+ m_MaskInteraction: 0
+ m_UseWorldSpace: 1
+ m_Loop: 0
+ m_ApplyActiveColorSpace: 0
diff --git a/Assets/Prefabs/Pickups/ChainLightningEffect.prefab.meta b/Assets/Prefabs/Pickups/ChainLightningEffect.prefab.meta
new file mode 100644
index 00000000..07ad57e7
--- /dev/null
+++ b/Assets/Prefabs/Pickups/ChainLightningEffect.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: d4e5f6078190a2b3c4d5e6f70891a3b4
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Prefabs/Pickups/ChainLightningPickup.prefab b/Assets/Prefabs/Pickups/ChainLightningPickup.prefab
new file mode 100644
index 00000000..84c74705
--- /dev/null
+++ b/Assets/Prefabs/Pickups/ChainLightningPickup.prefab
@@ -0,0 +1,159 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &7000001
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7000002}
+ - component: {fileID: 7000003}
+ - component: {fileID: 7000004}
+ - component: {fileID: 7000005}
+ m_Layer: 0
+ m_Name: ChainLightningPickup
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7000002
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7000001}
+ serializedVersion: 2
+ 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: []
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &7000003
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7000001}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c3d4e5f6078190a2b3c4d5e6f70891a3, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ _pickupSound: {fileID: 8300000, guid: 9f38fc745c8b64043b4a6a8d9ab8deab, type: 3}
+ _scoreValue: 100
+ _effectDuration: 10
+ _effectText: Chain lightning!
+ _effectPrefab: {fileID: 6000001, guid: d4e5f6078190a2b3c4d5e6f70891a3b4, type: 3}
+ _damage: 15
+ _fireInterval: 1.5
+ _chainCount: 4
+ _detectRadius: 12
+ _chainJumpRange: 5
+--- !u!212 &7000004
+SpriteRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7000001}
+ m_Enabled: 1
+ m_CastShadows: 0
+ m_ReceiveShadows: 0
+ m_DynamicOccludee: 1
+ m_StaticShadowCaster: 0
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RayTracingMode: 0
+ m_RayTraceProcedural: 0
+ m_RayTracingAccelStructBuildFlagsOverride: 0
+ m_RayTracingAccelStructBuildFlags: 1
+ m_SmallMeshCulling: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, 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: 1
+ m_SelectedEditorRenderState: 0
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 23827671
+ m_SortingLayer: -1
+ m_SortingOrder: 0
+ m_Sprite: {fileID: 3112027180600672057, guid: fc169414b3a5341e9a0b1241daa48455, type: 3}
+ m_Color: {r: 1, g: 1, b: 1, a: 1}
+ m_FlipX: 0
+ m_FlipY: 0
+ m_DrawMode: 0
+ m_Size: {x: 1, y: 1}
+ m_AdaptiveModeThreshold: 0.5
+ m_SpriteTileMode: 0
+ m_WasSpriteAssigned: 1
+ m_MaskInteraction: 0
+ m_SpriteSortPoint: 0
+--- !u!61 &7000005
+BoxCollider2D:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7000001}
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Density: 1
+ m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
+ m_ForceSendLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_ForceReceiveLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_ContactCaptureLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_CallbackLayers:
+ serializedVersion: 2
+ m_Bits: 4294967295
+ m_IsTrigger: 1
+ m_UsedByEffector: 0
+ m_CompositeOperation: 0
+ m_CompositeOrder: 0
+ m_Offset: {x: 0, y: 0}
+ m_SpriteTilingProperty:
+ border: {x: 0, y: 0, z: 0, w: 0}
+ pivot: {x: 0.5, y: 0.5}
+ oldSize: {x: 0.84375, y: 0.5625}
+ newSize: {x: 1, y: 1}
+ adaptiveTilingThreshold: 0.5
+ drawMode: 0
+ adaptiveTiling: 0
+ m_AutoTiling: 0
+ m_Size: {x: 1, y: 1}
+ m_EdgeRadius: 0
diff --git a/Assets/Prefabs/Pickups/ChainLightningPickup.prefab.meta b/Assets/Prefabs/Pickups/ChainLightningPickup.prefab.meta
new file mode 100644
index 00000000..3da199ea
--- /dev/null
+++ b/Assets/Prefabs/Pickups/ChainLightningPickup.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: e5f6078190a2b3c4d5e6f70891a3b4c5
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scenes/BattleScene.unity b/Assets/Scenes/BattleScene.unity
index 3ffd5afb..a19f6d0d 100644
--- a/Assets/Scenes/BattleScene.unity
+++ b/Assets/Scenes/BattleScene.unity
@@ -10524,6 +10524,63 @@ PrefabInstance:
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 6cde6a2c228dc40d0b42ba0b19ca2fc3, type: 3}
+--- !u!1001 &928173568
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2050277062}
+ m_Modifications:
+ - target: {fileID: 7000001, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_Name
+ value: ChainLightningPickup
+ objectReference: {fileID: 0}
+ - target: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 2
+ objectReference: {fileID: 0}
+ - target: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
--- !u!1 &943254750
GameObject:
m_ObjectHideFlags: 0
@@ -11451,6 +11508,9 @@ MonoBehaviour:
- {fileID: 3306419623360918530, guid: c62e469089fde4fc98d1c3363f2ea177, type: 3}
- {fileID: 3306419623360918530, guid: d109130e8f6de4b86a470d567292aa28, type: 3}
- {fileID: 3306419623360918530, guid: 6cde6a2c228dc40d0b42ba0b19ca2fc3, type: 3}
+ - {fileID: 7000001, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ _startingPickupPrefab: {fileID: 0}
+ _startingPickupOffset: {x: 2, y: 0, z: 0}
_levelUpUI: {fileID: 3736684284675310825}
_activePickupsUI: {fileID: 1213143406}
_activeUpgradesContainer: {fileID: 2111087225}
@@ -34726,8 +34786,14 @@ Transform:
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 2045264205}
+ - {fileID: 2045264206}
m_Father: {fileID: 1577739326}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!4 &2045264206 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 7000002, guid: e5f6078190a2b3c4d5e6f70891a3b4c5, type: 3}
+ m_PrefabInstance: {fileID: 928173568}
+ m_PrefabAsset: {fileID: 0}
--- !u!1 &2111087225
GameObject:
m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/Pickups/ChainLightningEffect.cs b/Assets/Scripts/Pickups/ChainLightningEffect.cs
new file mode 100644
index 00000000..bdc1cb70
--- /dev/null
+++ b/Assets/Scripts/Pickups/ChainLightningEffect.cs
@@ -0,0 +1,249 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ChainLightningEffect : MonoBehaviour
+{
+ private float _duration;
+ private int _damage;
+ private float _fireInterval;
+ private int _chainCount;
+ private float _detectRadius;
+ private float _chainJumpRange;
+
+ private float _expirationTime;
+ private Coroutine _effectCoroutine;
+
+ [SerializeField]
+ [Tooltip("Optional LineRenderer to show lightning bolt (child object).")]
+ private LineRenderer _lineRenderer;
+
+ [SerializeField]
+ [Tooltip("How long the lightning line is visible in seconds.")]
+ private float _lightningDisplayDuration = 0.5f;
+
+ [SerializeField]
+ [Tooltip("Vertical bobbing amplitude above the player (world units).")]
+ private float _bobAmplitude = 0.08f;
+
+ [SerializeField]
+ [Tooltip("Bobbing speed (cycles per second).")]
+ private float _bobFrequency = 0.5f;
+
+ private float _baseLocalY;
+
+ ///
+ /// Configure the effect. Call after instantiating, before the effect runs.
+ ///
+ public void Initialize(
+ float duration,
+ int damage,
+ float fireInterval,
+ int chainCount,
+ float detectRadius,
+ float chainJumpRange)
+ {
+ _duration = duration;
+ _damage = damage;
+ _fireInterval = fireInterval;
+ _chainCount = chainCount;
+ _detectRadius = detectRadius;
+ _chainJumpRange = chainJumpRange;
+ }
+
+ ///
+ /// Add more time to the effect (e.g. when same pickup is collected again).
+ ///
+ public void ExtendDuration(float extraSeconds)
+ {
+ _expirationTime += extraSeconds;
+ }
+
+ private void Start()
+ {
+ _baseLocalY = transform.localPosition.y;
+ _expirationTime = Time.time + _duration;
+ _effectCoroutine = StartCoroutine(EffectLoop());
+ }
+
+ private void Update()
+ {
+ // Frequency in Hz (cycles per second); 2*PI converts to radians per second
+ float radiansPerSecond = _bobFrequency * 2f * Mathf.PI;
+ float bob = _bobAmplitude * Mathf.Sin(Time.time * radiansPerSecond);
+ var pos = transform.localPosition;
+ pos.y = _baseLocalY + bob;
+ transform.localPosition = pos;
+ }
+
+ private void OnDisable()
+ {
+ if (_effectCoroutine != null)
+ {
+ StopCoroutine(_effectCoroutine);
+ }
+ }
+
+ private IEnumerator EffectLoop()
+ {
+ // Wait for first strike after one interval (or strike immediately - plan says "each fireInterval")
+ yield return new WaitForSeconds(_fireInterval);
+
+ while (Time.time < _expirationTime)
+ {
+ StrikeChainLightning();
+ yield return new WaitForSeconds(_fireInterval);
+ }
+
+ Destroy(gameObject);
+ }
+
+ private void StrikeChainLightning()
+ {
+ // Lightning originates from the Seer sprite (this effect's position above the player)
+ Vector3 origin = transform.position;
+
+ List chain = BuildChain(origin);
+ if (chain.Count == 0)
+ return;
+
+ foreach (Enemy enemy in chain)
+ {
+ if (enemy != null && enemy.gameObject.activeInHierarchy)
+ {
+ enemy.TakeDamage(_damage);
+ enemy.Flash();
+ if (SoundManager.Instance != null)
+ SoundManager.Instance.PlayHitSound();
+ }
+ }
+
+ ShowLightningBolt(origin, chain);
+ }
+
+ private List BuildChain(Vector3 origin)
+ {
+ List chain = new List();
+ List inRange = GetEnemiesInRange(origin, _detectRadius);
+ Enemy current = GetClosestEnemy(inRange, origin);
+
+ if (current == null)
+ return chain;
+
+ chain.Add(current);
+ Vector3 currentPos = current.transform.position;
+
+ while (chain.Count < _chainCount)
+ {
+ inRange = GetEnemiesInRange(currentPos, _chainJumpRange);
+ Enemy next = GetClosestEnemyExcluding(inRange, currentPos, chain);
+ if (next == null)
+ break;
+ chain.Add(next);
+ currentPos = next.transform.position;
+ }
+
+ return chain;
+ }
+
+ private List GetEnemiesInRange(Vector3 position, float range)
+ {
+ List result = new List();
+ RaycastHit2D[] hits = Physics2D.CircleCastAll(position, range, Vector2.zero);
+
+ foreach (RaycastHit2D hit in hits)
+ {
+ if (hit.collider == null || !hit.collider.gameObject.CompareTag("Enemy"))
+ continue;
+
+ var enemy = hit.collider.gameObject.GetComponent();
+ if (enemy != null && enemy.gameObject.activeInHierarchy)
+ result.Add(enemy);
+ }
+
+ return result;
+ }
+
+ private Enemy GetClosestEnemy(List enemies, Vector3 fromPosition)
+ {
+ if (enemies == null || enemies.Count == 0)
+ return null;
+
+ Enemy closest = null;
+ float minSqrDist = float.MaxValue;
+
+ foreach (Enemy e in enemies)
+ {
+ if (e == null || !e.gameObject.activeInHierarchy)
+ continue;
+
+ float sqrDist = (e.transform.position - fromPosition).sqrMagnitude;
+ if (sqrDist < minSqrDist)
+ {
+ minSqrDist = sqrDist;
+ closest = e;
+ }
+ }
+
+ return closest;
+ }
+
+ private Enemy GetClosestEnemyExcluding(List enemies, Vector3 fromPosition, List exclude)
+ {
+ if (enemies == null || enemies.Count == 0)
+ return null;
+
+ var excludeSet = new HashSet(exclude);
+ Enemy closest = null;
+ float minSqrDist = float.MaxValue;
+
+ foreach (Enemy e in enemies)
+ {
+ if (e == null || !e.gameObject.activeInHierarchy || excludeSet.Contains(e))
+ continue;
+
+ float sqrDist = (e.transform.position - fromPosition).sqrMagnitude;
+ if (sqrDist < minSqrDist)
+ {
+ minSqrDist = sqrDist;
+ closest = e;
+ }
+ }
+
+ return closest;
+ }
+
+ private void ShowLightningBolt(Vector3 origin, List chain)
+ {
+ if (_lineRenderer == null || chain.Count == 0)
+ return;
+
+ StartCoroutine(ShowLightningCoroutine(origin, chain));
+ }
+
+ private IEnumerator ShowLightningCoroutine(Vector3 origin, List chain)
+ {
+ _lineRenderer.positionCount = chain.Count + 1;
+ Vector3[] targetPositions = new Vector3[chain.Count];
+ for (int i = 0; i < chain.Count; i++)
+ {
+ if (chain[i] != null && chain[i].gameObject.activeInHierarchy)
+ targetPositions[i] = chain[i].transform.position;
+ else
+ targetPositions[i] = i > 0 ? targetPositions[i - 1] : origin;
+ }
+
+ _lineRenderer.enabled = true;
+ float elapsed = 0f;
+ while (elapsed < _lightningDisplayDuration)
+ {
+ _lineRenderer.SetPosition(0, transform.position);
+ for (int i = 0; i < targetPositions.Length; i++)
+ _lineRenderer.SetPosition(i + 1, targetPositions[i]);
+ elapsed += Time.deltaTime;
+ yield return null;
+ }
+ if (_lineRenderer != null)
+ _lineRenderer.enabled = false;
+ }
+}
diff --git a/Assets/Scripts/Pickups/ChainLightningEffect.cs.meta b/Assets/Scripts/Pickups/ChainLightningEffect.cs.meta
new file mode 100644
index 00000000..38ea8bc6
--- /dev/null
+++ b/Assets/Scripts/Pickups/ChainLightningEffect.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: b2c3d4e5f6078190a2b3c4d5e6f70891
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/Pickups/ChainLightningPickup.cs b/Assets/Scripts/Pickups/ChainLightningPickup.cs
new file mode 100644
index 00000000..bdf1ffe7
--- /dev/null
+++ b/Assets/Scripts/Pickups/ChainLightningPickup.cs
@@ -0,0 +1,62 @@
+using UnityEngine;
+
+public class ChainLightningPickup : PickupBase
+{
+ [SerializeField]
+ [Tooltip("Prefab of the hovering effect (ChainLightningEffect).")]
+ private GameObject _effectPrefab;
+
+ [SerializeField]
+ [Tooltip("Damage per lightning strike per enemy.")]
+ private int _damage = 15;
+
+ [SerializeField]
+ [Tooltip("Seconds between each chain lightning strike.")]
+ private float _fireInterval = 1.5f;
+
+ [SerializeField]
+ [Tooltip("Max number of enemies hit per strike (chain length).")]
+ private int _chainCount = 4;
+
+ [SerializeField]
+ [Tooltip("Radius to detect closest enemy from player.")]
+ private float _detectRadius = 12f;
+
+ [SerializeField]
+ [Tooltip("Radius for lightning to jump to next enemy from last struck.")]
+ private float _chainJumpRange = 5f;
+
+ protected override void OnCollect(Player player)
+ {
+ var existing = player.GetComponentInChildren();
+ if (existing != null)
+ {
+ existing.ExtendDuration(_effectDuration);
+ return;
+ }
+
+ if (_effectPrefab == null)
+ return;
+
+ GameObject effectInstance = Instantiate(_effectPrefab, player.transform);
+ effectInstance.transform.localPosition = new Vector3(0, 1.2f, 0);
+
+ var effect = effectInstance.GetComponent();
+ if (effect != null)
+ {
+ effect.Initialize(
+ _effectDuration,
+ _damage,
+ _fireInterval,
+ _chainCount,
+ _detectRadius,
+ _chainJumpRange
+ );
+ }
+ }
+
+ protected override string GetEffectText()
+ {
+ return "Seer sees all!";
+ }
+}
diff --git a/Assets/Scripts/Pickups/ChainLightningPickup.cs.meta b/Assets/Scripts/Pickups/ChainLightningPickup.cs.meta
new file mode 100644
index 00000000..7f5d8fe3
--- /dev/null
+++ b/Assets/Scripts/Pickups/ChainLightningPickup.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: c3d4e5f6078190a2b3c4d5e6f70891a3
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/SceneManagers/BattleSceneManager.cs b/Assets/Scripts/SceneManagers/BattleSceneManager.cs
index 15b6628b..6cc9a702 100644
--- a/Assets/Scripts/SceneManagers/BattleSceneManager.cs
+++ b/Assets/Scripts/SceneManagers/BattleSceneManager.cs
@@ -91,6 +91,14 @@ public class BattleSceneManager : MonoBehaviour
[Tooltip("List of pickup prefabs to randomly spawn")]
private GameObject[] _pickupPrefabs;
+ [SerializeField]
+ [Tooltip("Optional pickup to spawn once at game start next to the player (e.g. Chain Lightning)")]
+ private GameObject _startingPickupPrefab;
+
+ [SerializeField]
+ [Tooltip("Offset from player position for the starting pickup spawn")]
+ private Vector3 _startingPickupOffset = new Vector3(2f, 0f, 0f);
+
[SerializeField]
[Tooltip("The level up UI prefab to spawn")]
private GameObject _levelUpUI;
@@ -242,12 +250,20 @@ void Start()
_lastEnemySpawnTime = Time.time;
_lastWaveSpawnTime = Time.time;
_lastPickupSpawnTime = Time.time;
- _pickupsOnScreen = 1;
+ // Count pickups already in scene (e.g. under Level/Pickups) so spawn limit is correct
+ _pickupsOnScreen = _pickupParentTransform != null ? _pickupParentTransform.childCount : 0;
_gameStartTime = Time.time;
SetCurrentLevel(_currentLevel);
+ if (_startingPickupPrefab != null && Player.Instance != null)
+ {
+ var startingPickup = Instantiate(_startingPickupPrefab, _pickupParentTransform, true);
+ startingPickup.transform.position = Player.Instance.transform.position + _startingPickupOffset;
+ _pickupsOnScreen++;
+ }
+
EventManager.AddListener(
"EnemyDestroyed",
(eventData) =>
@@ -827,13 +843,31 @@ private void SpawnDeath()
private void SpawnPickup()
{
+ if (_pickupPrefabs == null || _pickupPrefabs.Length == 0)
+ {
+ return;
+ }
+
if (_pickupsOnScreen >= _maxPickupsOnScreen)
{
return;
}
- var index = random.Next(_pickupPrefabs.Length);
- var pickup = Instantiate(_pickupPrefabs[index], _pickupParentTransform, true);
+ // Filter out missing/broken prefab references
+ var validPrefabs = new List();
+ foreach (var prefab in _pickupPrefabs)
+ {
+ if (prefab != null)
+ validPrefabs.Add(prefab);
+ }
+
+ if (validPrefabs.Count == 0)
+ {
+ return;
+ }
+
+ var index = random.Next(validPrefabs.Count);
+ var pickup = Instantiate(validPrefabs[index], _pickupParentTransform, true);
pickup.transform.position = GetRandomSpawnPoint();
_pickupsOnScreen++;
diff --git a/Assets/Scripts/SceneManagers/BattleSceneManager.cs.meta b/Assets/Scripts/SceneManagers/BattleSceneManager.cs.meta
index c8eb932c..54aa3b70 100644
--- a/Assets/Scripts/SceneManagers/BattleSceneManager.cs.meta
+++ b/Assets/Scripts/SceneManagers/BattleSceneManager.cs.meta
@@ -3,7 +3,20 @@ guid: 84e681e7688644d2ba29ad98a6fe47a5
MonoImporter:
externalObjects: {}
serializedVersion: 2
- defaultReferences: []
+ defaultReferences:
+ - _spawnPlane: {instanceID: 0}
+ - _sentaurEnemyPrefab: {instanceID: 0}
+ - _antEnemyPrefab: {instanceID: 0}
+ - _headEnemyPrefab: {instanceID: 0}
+ - _mantisEnemyPrefab: {instanceID: 0}
+ - _deathEnemyPrefab: {instanceID: 0}
+ - _linearEnemyPrefab: {instanceID: 0}
+ - _randomEnemyPrefab: {instanceID: 0}
+ - _startingPickupPrefab: {fileID: 6000001, guid: d4e5f6078190a2b3c4d5e6f70891a3b4, type: 3}
+ - _levelUpUI: {instanceID: 0}
+ - _activePickupsUI: {instanceID: 0}
+ - _activeUpgradesContainer: {instanceID: 0}
+ - _backgroundMusic: {instanceID: 0}
executionOrder: 0
icon: {instanceID: 0}
userData: