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: