diff --git a/Assets/Res_Addr/Animations/Animation/Paladin/skill_spinslash.FBX.meta b/Assets/Res_Addr/Animations/Animation/Paladin/skill_spinslash.FBX.meta
index e48cbd4fb..f528c1ea5 100644
--- a/Assets/Res_Addr/Animations/Animation/Paladin/skill_spinslash.FBX.meta
+++ b/Assets/Res_Addr/Animations/Animation/Paladin/skill_spinslash.FBX.meta
@@ -1,7 +1,7 @@
fileFormatVersion: 2
guid: 34e3b510c7557a34e9575335e96d0d13
ModelImporter:
- serializedVersion: 22200
+ serializedVersion: 24300
internalIDToNameTable:
- first:
74: 1827226128182048838
@@ -12,6 +12,7 @@ ModelImporter:
materialName: 0
materialSearch: 1
materialLocation: 1
+ searchTexturesGlobally: 1
animations:
legacyGenerateAnimations: 4
bakeSimulation: 0
@@ -19,8 +20,6 @@ ModelImporter:
optimizeGameObjects: 0
removeConstantScaleCurves: 0
motionNodeName:
- rigImportErrors:
- rigImportWarnings:
animationImportErrors:
animationImportWarnings:
animationRetargetingWarnings:
@@ -71,6 +70,63 @@ ModelImporter:
maskType: 3
maskSource: {instanceID: 0}
additiveReferencePoseFrame: 0
+ - serializedVersion: 16
+ name: Attack3_S_10202
+ takeName: Take 001
+ internalID: -998496362607748373
+ firstFrame: 0
+ lastFrame: 40
+ wrapMode: 0
+ orientationOffsetY: 0
+ level: 0
+ cycleOffset: 0
+ loop: 0
+ hasAdditiveReferencePose: 0
+ loopTime: 0
+ loopBlend: 0
+ loopBlendOrientation: 1
+ loopBlendPositionY: 1
+ loopBlendPositionXZ: 0
+ keepOriginalOrientation: 1
+ keepOriginalPositionY: 1
+ keepOriginalPositionXZ: 1
+ heightFromFeet: 0
+ mirror: 0
+ bodyMask: 01000000010000000100000001000000010000000100000001000000010000000100000001000000010000000100000001000000
+ curves: []
+ events:
+ - time: 0
+ functionName: LookAtTarget
+ data:
+ objectReferenceParameter: {instanceID: 0}
+ floatParameter: 0
+ intParameter: 0
+ messageOptions: 0
+ - time: 0.12
+ functionName: ShowEffect
+ data: Effect_Slash_10202_3
+ objectReferenceParameter: {instanceID: 0}
+ floatParameter: 0
+ intParameter: 1
+ messageOptions: 0
+ - time: 0.15
+ functionName: Move
+ data:
+ objectReferenceParameter: {instanceID: 0}
+ floatParameter: 0.2
+ intParameter: 0
+ messageOptions: 0
+ - time: 0.3
+ functionName: Projectile
+ data: Projectile_10202
+ objectReferenceParameter: {instanceID: 0}
+ floatParameter: 0
+ intParameter: 0
+ messageOptions: 0
+ transformMask: []
+ maskType: 3
+ maskSource: {instanceID: 0}
+ additiveReferencePoseFrame: 0
isReadable: 0
meshes:
lODScreenPercentages: []
@@ -97,6 +153,9 @@ ModelImporter:
maxBonesPerVertex: 4
minBoneWeight: 0.001
optimizeBones: 1
+ generateMeshLods: 0
+ meshLodGenerationFlags: 0
+ maximumMeshLod: -1
meshOptimizationFlags: -1
indexFormat: 0
secondaryUVAngleDistortion: 8
diff --git a/Assets/Res_Addr/Animations/pcanim_assassin.controller b/Assets/Res_Addr/Animations/pcanim_assassin.controller
index e3d1e90a5..cb246fe8a 100644
--- a/Assets/Res_Addr/Animations/pcanim_assassin.controller
+++ b/Assets/Res_Addr/Animations/pcanim_assassin.controller
@@ -369,7 +369,7 @@ AnimatorState:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: DualBlades_Attack3
- m_Speed: 1.2
+ m_Speed: 1.3
m_CycleOffset: 0
m_Transitions:
- {fileID: 2757370606414768772}
@@ -382,7 +382,7 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
- m_Motion: {fileID: 1827226128182048838, guid: afbbfbe54e2f6d242983469698b3aac3,
+ m_Motion: {fileID: -998496362607748373, guid: 34e3b510c7557a34e9575335e96d0d13,
type: 3}
m_Tag:
m_SpeedParameter:
diff --git a/Assets/WL/Combat/CombatAnimMapping.asset b/Assets/WL/Combat/CombatAnimMapping.asset
index 78e1ae61f..12b715b30 100644
--- a/Assets/WL/Combat/CombatAnimMapping.asset
+++ b/Assets/WL/Combat/CombatAnimMapping.asset
@@ -570,14 +570,14 @@ MonoBehaviour:
intParameter: 0
floatParameter: 0
- stateName: DualBlades_Attack3
- sourceFbxPath: Assets/Res_Addr/Animations/Animation/Assassin/Stander@DualBlades_Attack3.FBX
+ sourceFbxPath: Assets/Res_Addr/Animations/Animation/Paladin/skill_spinslash.FBX
subClipName: Attack3_S_{CID}
sourceClipName:
incomingExitTime: 0.5
createIfMissing: 0
firstFrame: -1
lastFrame: -1
- speed: 1.2
+ speed: 1.3
events:
- functionName: LookAtTarget
time: 0
@@ -589,21 +589,21 @@ MonoBehaviour:
- functionName: ShowEffect
time: 0
useNormalized: 1
- normalizedTime: 0.1
+ normalizedTime: 0.12
stringParameter: Effect_Slash_{CID}_3
intParameter: 1
floatParameter: 0
- functionName: Move
time: 0
useNormalized: 1
- normalizedTime: 0.14
+ normalizedTime: 0.15
stringParameter:
intParameter: 0
floatParameter: 0.2
- functionName: Projectile
time: 0
useNormalized: 1
- normalizedTime: 0.25
+ normalizedTime: 0.3
stringParameter: Projectile_{CID}
intParameter: 0
floatParameter: 0
diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat
new file mode 100644
index 000000000..3c778458b
--- /dev/null
+++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat
@@ -0,0 +1,111 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword
+ m_Shader: {fileID: 4800000, guid: bd6af5d577c618947b73aa60db554e51, type: 3}
+ 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:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Flow:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: 58701f16fe38a64478100c8e67203091, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Mask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Noise:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _texcoord:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _Blend2: 1
+ - _BumpScale: 1
+ - _CullMode: 0
+ - _Cutoff: 0.5
+ - _Depthpower: 1
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _Emission: 1
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _InvFade: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _Usecenterglow: 0
+ - _Usecustomrandom: 0
+ - _Usedepth: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1.2, g: 1.2, b: 1.2, a: 1}
+ - _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _SpeedMainTexUVNoiseZW: {r: 0, g: 0, b: 0, a: 0}
+ - _TintColor: {r: 0.5, g: 0.5, b: 0.5, a: 0.5}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat.meta b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat.meta
new file mode 100644
index 000000000..a8c0bf9bf
--- /dev/null
+++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_FX_Whirling_Sword.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 46da5fd6cc529e045befd6d96b0f5be1
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat
new file mode 100644
index 000000000..92ed9a61a
--- /dev/null
+++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat
@@ -0,0 +1,61 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: WL_Mat_Impact_DaggerWhirl_alpha_point_8
+ m_Shader: {fileID: 4800000, guid: b68b99c2e57cef4419465c63c527201b, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 5
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _Flow:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: 92de6f65b757cf64fbfdc94f0c25cd7f, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Mask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Noise:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _texcoord:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _CullMode: 0
+ - _Depthpower: 1
+ - _Emission: 2
+ - _InvFade: 1
+ - _Opacity: 1
+ - _Usecenterglow: 0
+ - _Usedepth: 0
+ m_Colors:
+ - _Color: {r: 0.40075463, g: 0.5622628, b: 1.2, a: 1}
+ - _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0}
+ - _SpeedMainTexUVNoiseZW: {r: 0, g: 0, b: 0, a: 0}
+ - _TintColor: {r: 0, g: 0.22352941, b: 0.69411767, a: 0.49803922}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat.meta b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat.meta
new file mode 100644
index 000000000..71c3e74c1
--- /dev/null
+++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_alpha_point_8.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 2507dd0e881f50c4ea2a6fd7674b6c65
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat
new file mode 100644
index 000000000..24f4699cd
--- /dev/null
+++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat
@@ -0,0 +1,62 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: WL_Mat_Impact_DaggerWhirl_eye_lwy_6
+ m_Shader: {fileID: 4800000, guid: bd6af5d577c618947b73aa60db554e51, type: 3}
+ m_Parent: {fileID: 0}
+ m_ModifiedSerializedProperties: 0
+ m_ValidKeywords: []
+ m_InvalidKeywords: []
+ m_LightmapFlags: 5
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_LockedProperties:
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _Flow:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: 9c053586353147d4dbef229caec7d912, type: 3}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Mask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Noise:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _texcoord:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _Blend2: 1
+ - _CullMode: 0
+ - _Depthpower: 1
+ - _Emission: 1
+ - _InvFade: 1
+ - _Usecenterglow: 0
+ - _Usecustomrandom: 0
+ - _Usedepth: 0
+ m_Colors:
+ - _Color: {r: 1.2, g: 1.2, b: 1.2, a: 1}
+ - _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0}
+ - _SpeedMainTexUVNoiseZW: {r: 0, g: 0, b: 0, a: 0}
+ - _TintColor: {r: 0.7941176, g: 0.7941176, b: 0.7941176, a: 0.5}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat.meta b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat.meta
new file mode 100644
index 000000000..8c87eaf98
--- /dev/null
+++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_eye_lwy_6.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: d9f113ca270506c4d97b00966f102759
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat
new file mode 100644
index 000000000..f095db566
--- /dev/null
+++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat
@@ -0,0 +1,111 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 8
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: WL_Mat_Impact_DaggerWhirl_pd_65
+ m_Shader: {fileID: 4800000, guid: bd6af5d577c618947b73aa60db554e51, type: 3}
+ 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:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Flow:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 2800000, guid: f9f336bc22710de4680eb466608331a4, type: 3}
+ m_Scale: {x: 0.5, y: 0.5}
+ m_Offset: {x: 0, y: 0}
+ - _Mask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _Noise:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _texcoord:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Ints: []
+ m_Floats:
+ - _Blend2: 1
+ - _BumpScale: 1
+ - _CullMode: 0
+ - _Cutoff: 0.5
+ - _Depthpower: 1
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _Emission: 2
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _InvFade: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _Usecenterglow: 0
+ - _Usecustomrandom: 0
+ - _Usedepth: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1.2, g: 1.2, b: 1.2, a: 1}
+ - _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _SpeedMainTexUVNoiseZW: {r: 0, g: 0, b: 0, a: 0}
+ - _TintColor: {r: 0.2822232, g: 0.4733028, b: 0.66176474, a: 0.491}
+ m_BuildTextureStacks: []
+ m_AllowLocking: 1
diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat.meta b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat.meta
new file mode 100644
index 000000000..9ac26e963
--- /dev/null
+++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/Mat/WL_Mat_Impact_DaggerWhirl_pd_65.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 771d1aa4bff20ba48bbad90321f07a72
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab b/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab
new file mode 100644
index 000000000..68e923f60
--- /dev/null
+++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab
@@ -0,0 +1,418 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!1 &1636426650955946934
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 7223320257394428647}
+ m_Layer: 0
+ m_Name: WL_Impact_DaggerWhirl
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &7223320257394428647
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1636426650955946934}
+ 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:
+ - {fileID: 4888484849053366934}
+ m_Father: {fileID: 0}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1001 &6982654839739323285
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 7223320257394428647}
+ m_Modifications:
+ - target: {fileID: 121669209962561257, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 771d1aa4bff20ba48bbad90321f07a72, type: 2}
+ - target: {fileID: 268999229439030574, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 268999229439030574, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.4551083
+ objectReference: {fileID: 0}
+ - target: {fileID: 268999229439030574, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.g
+ value: 0.61764705
+ objectReference: {fileID: 0}
+ - target: {fileID: 268999229439030574, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.1625387
+ objectReference: {fileID: 0}
+ - target: {fileID: 1005117965977653079, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1005117965977653079, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.67724454
+ objectReference: {fileID: 0}
+ - target: {fileID: 1005117965977653079, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.g
+ value: 0.9191176
+ objectReference: {fileID: 0}
+ - target: {fileID: 1005117965977653079, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.24187307
+ objectReference: {fileID: 0}
+ - target: {fileID: 1751918735221628297, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2}
+ - target: {fileID: 2314942123887552311, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2314942123887552311, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.5309597
+ objectReference: {fileID: 0}
+ - target: {fileID: 2314942123887552311, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.g
+ value: 0.7205882
+ objectReference: {fileID: 0}
+ - target: {fileID: 2314942123887552311, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.18962848
+ objectReference: {fileID: 0}
+ - target: {fileID: 2401369271521844934, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: d9f113ca270506c4d97b00966f102759, type: 2}
+ - target: {fileID: 2481186199516121484, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2481186199516121484, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.72600615
+ objectReference: {fileID: 0}
+ - target: {fileID: 2481186199516121484, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.g
+ value: 0.9852941
+ objectReference: {fileID: 0}
+ - target: {fileID: 2481186199516121484, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.25928792
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalScale.x
+ value: 0.35
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalScale.y
+ value: 0.35
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalScale.z
+ value: 0.35
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalRotation.x
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalRotation.y
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalRotation.z
+ value: -0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2862961277274440328, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2}
+ - target: {fileID: 2872150984727259044, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2}
+ - target: {fileID: 3635310049755337268, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2}
+ - target: {fileID: 3795761376887037933, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3863002517998969737, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3863002517998969737, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.617647
+ objectReference: {fileID: 0}
+ - target: {fileID: 3863002517998969737, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.g
+ value: 0.83823526
+ objectReference: {fileID: 0}
+ - target: {fileID: 3863002517998969737, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.22058824
+ objectReference: {fileID: 0}
+ - target: {fileID: 3966090300889708928, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4297842659697493505, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_Name
+ value: FX_Whirling Sword
+ objectReference: {fileID: 0}
+ - target: {fileID: 4328270712253275437, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2}
+ - target: {fileID: 4777387061487619922, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2}
+ - target: {fileID: 4963428307614964137, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: m_IsActive
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 5224354734014303404, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2}
+ - target: {fileID: 5246652782678005074, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5246652782678005074, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.67724454
+ objectReference: {fileID: 0}
+ - target: {fileID: 5246652782678005074, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.g
+ value: 0.9191176
+ objectReference: {fileID: 0}
+ - target: {fileID: 5246652782678005074, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.24187307
+ objectReference: {fileID: 0}
+ - target: {fileID: 5404398278750731529, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5404398278750731529, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.67724454
+ objectReference: {fileID: 0}
+ - target: {fileID: 5404398278750731529, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.g
+ value: 0.9191176
+ objectReference: {fileID: 0}
+ - target: {fileID: 5404398278750731529, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.24187307
+ objectReference: {fileID: 0}
+ - target: {fileID: 5552495198583343871, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5552495198583343871, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.67724454
+ objectReference: {fileID: 0}
+ - target: {fileID: 5552495198583343871, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.g
+ value: 0.9191176
+ objectReference: {fileID: 0}
+ - target: {fileID: 5552495198583343871, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.24187307
+ objectReference: {fileID: 0}
+ - target: {fileID: 6394494345914764372, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2}
+ - target: {fileID: 6653844421058593838, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 2507dd0e881f50c4ea2a6fd7674b6c65, type: 2}
+ - target: {fileID: 7329443287245057185, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7329443287245057185, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: scalingMode
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7329443287245057185, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.73684204
+ objectReference: {fileID: 0}
+ - target: {fileID: 7329443287245057185, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.2631579
+ objectReference: {fileID: 0}
+ - target: {fileID: 8078091376226718113, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8078091376226718113, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.49303406
+ objectReference: {fileID: 0}
+ - target: {fileID: 8078091376226718113, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.g
+ value: 0.6691177
+ objectReference: {fileID: 0}
+ - target: {fileID: 8078091376226718113, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.17608361
+ objectReference: {fileID: 0}
+ - target: {fileID: 9145100594371461009, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: 'm_Materials.Array.data[0]'
+ value:
+ objectReference: {fileID: 2100000, guid: 46da5fd6cc529e045befd6d96b0f5be1, type: 2}
+ - target: {fileID: 9170745574917042194, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: looping
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9170745574917042194, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.b
+ value: 0.5743034
+ objectReference: {fileID: 0}
+ - target: {fileID: 9170745574917042194, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.g
+ value: 0.7794118
+ objectReference: {fileID: 0}
+ - target: {fileID: 9170745574917042194, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ propertyPath: InitialModule.startColor.maxColor.r
+ value: 0.20510837
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: 01d7f969ea087264999d466695415a99, type: 3}
+--- !u!4 &4888484849053366934 stripped
+Transform:
+ m_CorrespondingSourceObject: {fileID: 2535593133654632707, guid: 01d7f969ea087264999d466695415a99,
+ type: 3}
+ m_PrefabInstance: {fileID: 6982654839739323285}
+ m_PrefabAsset: {fileID: 0}
diff --git a/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab.meta b/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab.meta
new file mode 100644
index 000000000..08a6be8d6
--- /dev/null
+++ b/Assets/WL/Combat/Impact/Resources/WL/Impact/WL_Impact_DaggerWhirl.prefab.meta
@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 40956bfe8b9e8644aa7764d8900af40b
+PrefabImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json b/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json
index 20c30f0fe..1db8023a0 100644
--- a/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json
+++ b/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json
@@ -105,21 +105,49 @@
{
"classIds": [ 10202 ],
"stages": [ 3 ],
- "prefab": "WL_Impact_DaggerSpin",
- "scale": 1.75,
+ "prefab": "WL_Impact_DaggerWhirl",
+ "scale": 1.0,
"euler": [ 0, 0, 0 ],
- "yOffset": -0.2,
+ "yOffset": -0.25,
"calibrated": false,
"follow": true,
"forward": 0.0,
"side": 0.0,
- "life": 0.9,
+ "life": 1.0,
"minInterval": 0.3,
"alignWeapon": false,
"alignFraction": 0.3,
"massLocal": [ 0, 0, 0 ],
"fixedDir": false,
"lockFacing": false,
+ "spinDegrees": 360,
+ "spinSeconds": 0.9,
+ "_note_955b": "Play 실측: 팔라딘 Around 클립은 모델 yaw 36° 만 돌아(회전이 포즈에 안 구워짐) → 코드 회전 360°/0.9 s(클립 1.33 s ÷ 1.3)",
+ "_note_955": "#955 PD 「3타 이펙트 범위가 단검 리치보다 과하고 회전 이펙트가 아님 → 실제로 한바퀴 회전하며 공격 + 회전하는 녹색 이펙트」 — 동작 = 매핑 3타를 Paladin skill_spinslash.FBX(Sword&Shield_Skill7_Around 1.33 s · 속도 1.3)로 · 이펙트 = 원본 Skill_SpinSlash(회전 칼날 고리 · 편집 모드 대조표 955_fx_sheet) 사본 WL_Impact_DaggerWhirl(스크립트·충돌체 제거 · 녹색 tint 재질 사본) PC 에 붙어 함께 돎 · 배율 1.0(실제 0.64 · 고리 반지름 ≈ 0.8 m 추정 = 단검 리치) · spinDegrees 0 = 클립 자체 회전(실측 뒤 안 돌면 360)",
+ },
+ {
+ "classIds": [ 10202 ],
+ "stages": [ 4 ],
+ "prefab": "WL_Impact_DaggerSpin",
+ "scale": 0.7,
+ "euler": [ 0, 0, 0 ],
+ "yOffset": 0.0,
+ "calibrated": false,
+ "follow": true,
+ "forward": 0.0,
+ "side": 0.0,
+ "life": 0.5,
+ "minInterval": 0.3,
+ "alignWeapon": true,
+ "alignFraction": 0.5,
+ "massLocal": [ 0, 0, 0 ],
+ "fixedDir": false,
+ "lockFacing": false,
+ "blinkDistance": 0.5,
+ "blinkGhosts": 4,
+ "camHoldSeconds": 0.7,
+ "camZoomOut": 0.6,
+ "_note_955": "#955 PD 4타 3건 — ① 이펙트가 궤적과 안 맞고 작음(원본 Effect_Slash_10202_4 가 발 위치에) → Shiny Slash 사본을 날(손잡이→날 끝) 방향·위치에 맞춰 작게(실제 0.45) ② 적을 뚫고 가도 카메라 회전 금지 · 살짝 줌아웃 뒤 복귀(camHold 0.7 s · 0.6 m sin) ③ 잔상 남기며 0.5 m 순간이동하듯 나타나 베기(blink 0.5 m · 잔상 4 = WLGhostStrike 살아 있는 자세)",
"_note_954": "#954 PD 「비수 3타 이펙트가 기존과 다른 컨셉 → Slash Effects FREE 의 회전 이펙트(스크린샷)로」 — 사본 WL_Impact_DaggerSpin(= Shiny Slash · 편집 모드 대조표 954_fx_sheet: 큰 초승달 + 반짝이 · 위에서 보면 수평 고리(954_fx_orient) · 시작색 teal (0.38,0.84,0.83)) · PC 중심에 따라붙음(alignWeapon 끔 · 수평 고리라 euler 0) · 배율 0.95(실제 0.95×0.55×1.16 ≈ 0.6 · 고리 반지름 약 0.8 m 추정) · 이전 DaggerSlash3 규칙(euler Z 90 · massLocal 0.5)은 #952 기록",
"_note_951": "#951 PD 「비수 3타 이펙트가 공격한 검 위치를 기준으로 호 형태로 펼쳐지도록」 — 원본 Effect_Slash_10202_3 의 WL 사본을 매 프레임 무기(손잡이 → 날 끝) 방향·위치에 맞춰 따라가게(창 2타 alignWeapon 과 같은 방식) · 수치는 Play 실측 뒤 조정",
"_note_952": "#952 PD 「이펙트 위치가 실제 검 위치와 너무 동떨어져 있고 크기가 너무 작아 어색」 — 편집 모드 실측(952_slash.cs): 보이는 호 = HighPolySwordRing 메시 입자(지름 1.98 × 크기 2.92 × 0.5 = 프리팹 단위 2.9 m 고리 · 중심 로컬 (0, 0.5, 0))가 Z 85° 로 기울어 세로 평면(YZ)에 서 있어 위 카메라에서는 모서리(두께 0.43)만 보이고 주변 별 입자만 보였다 → euler Z 90 으로 고리를 수평(XZ)으로 눕히고 massLocal 로 고리 중심을 손잡이 앞 alignFraction 자리에 맞춤(그 전 = 고리 중심이 피벗 위 0.5 × 배율 · 별이 피벗에서 1 m 밖). 배율은 1.0(실제 0.637 = 0.55 × 1.16) 그대로 두고 PD 판정"
diff --git a/Assets/WL/Combat/Impact/WLImpactFx.cs b/Assets/WL/Combat/Impact/WLImpactFx.cs
index 0891ded21..f714c6e22 100644
--- a/Assets/WL/Combat/Impact/WLImpactFx.cs
+++ b/Assets/WL/Combat/Impact/WLImpactFx.cs
@@ -33,6 +33,8 @@ namespace WL.Combat.Impact
public bool follow; public float forward; public float side; public float life; public float minInterval; // side = PC 오른쪽 거리(m)
// #941 PD 「창 공격 시 이펙트와 캐릭터 방향이 일치하게」 — alignWeapon = 매 프레임 무기 소켓(손잡이 → 무기 끝) 방향에 맞춰 돌리고 손잡이에서 alignFraction 만큼 간 자리에 둔다(forward/side 는 안 씀) · massLocal = 프리팹 로컬 단위의 보이는 묶음 중심(원점 보정 · Play 실측)
public bool alignWeapon; public float alignFraction = 0.5f; public float[] massLocal;
+ // #955 PD 비수 4타·3타 부가 연출 — blinkDistance: 띄우는 순간 PC 를 정면으로 순간이동(m · 잔상 blinkGhosts 개를 길에) · camHoldSeconds: 그동안 카메라 회전·추적 고정 + camZoomOut(m) 만큼 줌아웃했다 복귀 · spinDegrees/spinSeconds: PC 를 코드로 회전(클립에 회전이 없을 때 · 0 = 안 함)
+ public float blinkDistance; public int blinkGhosts = 4; public float camHoldSeconds; public float camZoomOut; public float spinDegrees; public float spinSeconds = 0.6f;
// #943-⑤ PD 「타격하려는 방향을 고정한 채 이펙트가 재생되는 동안 타격 판정 … 이펙트가 캐릭터 방향에 따라 마구 바뀌면 안 됨」 — fixedDir = 띄우는 순간 PC 정면(LookAtTarget 뒤 = 표적 방향)을 잡아 두고 life 동안 이펙트 방향 고정 + PC 회전도 그 방향으로 잠금(공격 상태인 동안) · 자리 = PC 중심 + 정면 alignForward + 오른쪽 alignSide + 위 yOffset − R × massLocal × 배율(PC 위치는 따라감)
public bool fixedDir; public float alignForward = 0.5f; public float alignSide; public bool lockFacing = true; }
/// 지면 충격파. tipContact = 칼끝이 지면(contactHeight 이내)에 닿는 프레임·자리에서 재생(단계 안에서 minDrop 이상 올라갔다 내려올 때) · 못 잡으면 timeout 뒤 최저점(fallbackHeight 이내)에.
@@ -334,6 +336,7 @@ namespace WL.Combat.Impact
if ((r.alignWeapon || r.fixedDir) && !cal_used) { if (fw == null) fw = inst.AddComponent(); if (fw.Arm(pc, r, scale)) how += r.fixedDir ? " fixedDir" : " alignWeapon"; else how += " alignWeapon(no-socket)"; }
else if (fw != null) fw.Disarm();
SwingShown++; LastSwing = "swing " + r.prefab + " stage " + stage + " " + how + " scale=" + scale.ToString("F3"); LastLog = LastSwing;
+ if (r.blinkDistance > 0f || r.camHoldSeconds > 0f || r.spinDegrees != 0f) WLSwingExtras.Begin(pc, r, inst); // #955
return true;
}
return false;
@@ -648,6 +651,62 @@ namespace WL.Combat.Impact
}
}
+ /// #955 PD 비수 4타 「잔상을 남기며 0.5 m 쯤 순간이동하듯 나타나 베기 · 적을 뚫고 가도 카메라를 돌리지 말고 살짝 줌아웃했다 복귀」 · 3타 「한바퀴 회전」 —
+ /// 띄우는 순간: 정면 blinkDistance 로 워프(NavMesh 위) + 길에 잔상(WLGhostStrike 살아 있는 자세) · camHoldSeconds 동안 카메라 회전·PC 기준 오프셋 고정 + sin 곡선 줌아웃 · spinDegrees 를 spinSeconds 에 걸쳐 회전(이펙트는 PC 에 붙어 함께 돈다).
+ public sealed class WLSwingExtras : MonoBehaviour
+ {
+ PCActor _pc; float _spinLeft, _spinRate; bool _spinning;
+ public static int Blinks, Spins, CamHolds; public static string LastLog = "";
+ public static void Begin(PCActor pc, WLSwingFxRule r, GameObject fx)
+ {
+ if (pc == null) return;
+ var ex = pc.GetComponent(); if (ex == null) ex = pc.gameObject.AddComponent();
+ ex._pc = pc;
+ if (r.blinkDistance > 0f)
+ {
+ var fwd = pc.transform.forward; fwd.y = 0f; if (fwd.sqrMagnitude < 1e-4f) fwd = Vector3.forward; fwd.Normalize();
+ Vector3 from = pc.Get_position(), to = from + fwd * r.blinkDistance;
+ UnityEngine.AI.NavMeshHit hit; if (UnityEngine.AI.NavMesh.SamplePosition(to, out hit, 1.0f, UnityEngine.AI.NavMesh.AllAreas)) to = hit.position;
+ int ghosts = r.blinkGhosts > 0 ? WL.Combat.Weapon.WLGhostStrike.BlinkGhosts(pc, from, to, r.blinkGhosts) : 0;
+ try { pc.Set_Warp(to); } catch (System.Exception) { pc.transform.position = to; }
+ Blinks++; LastLog = "blink " + Vector3.Distance(from, to).ToString("F2") + " m · 잔상 " + ghosts;
+ }
+ if (r.camHoldSeconds > 0f) { WLCamHold.Begin(pc, r.camHoldSeconds, r.camZoomOut); CamHolds++; }
+ if (r.spinDegrees != 0f) { ex._spinLeft = r.spinDegrees; ex._spinRate = r.spinDegrees / Mathf.Max(0.05f, r.spinSeconds); ex._spinning = true; Spins++; }
+ }
+ void LateUpdate()
+ {
+ if (!_spinning || _pc == null) return;
+ var model = _pc.m_animation != null ? _pc.m_animation.transform : null; if (model == null) { _spinning = false; return; }
+ float step = _spinRate * Time.deltaTime; if (Mathf.Abs(step) > Mathf.Abs(_spinLeft)) step = _spinLeft;
+ model.Rotate(0f, step, 0f, Space.Self); _spinLeft -= step; // 루트가 아니라 모델 자식을 돌린다(루트는 원본이 매 프레임 표적 쪽으로 되돌려 211°/2회 실측) · 끝에 로컬 yaw 원상
+ if (Mathf.Approximately(_spinLeft, 0f)) { _spinning = false; var e = model.localEulerAngles; model.localEulerAngles = new Vector3(e.x, 0f, e.z); }
+ }
+ }
+
+ /// #955 카메라 고정 + 줌아웃 펄스 — RealCamera 의 LateUpdate 뒤(실행 순서 1000)에 회전은 고정값 · 위치 = PC + 고정 오프셋 − 앞 × 줌아웃(sin 0→1→0). 끝나면 RealCamera 가 보간으로 복귀.
+ [DefaultExecutionOrder(1000)]
+ public sealed class WLCamHold : MonoBehaviour
+ {
+ PCActor _pc; Quaternion _rot; Vector3 _offset; float _t0, _seconds, _zoom; bool _on;
+ public static string LastLog = "";
+ public static void Begin(PCActor pc, float seconds, float zoomOut)
+ {
+ var cam = Camera.main; if (cam == null || pc == null) return;
+ var h = cam.GetComponent(); if (h == null) h = cam.gameObject.AddComponent();
+ h._pc = pc; h._rot = cam.transform.rotation; h._offset = cam.transform.position - pc.Get_position(); h._t0 = Time.time; h._seconds = seconds; h._zoom = zoomOut; h._on = true;
+ LastLog = "hold " + seconds + " s · zoom " + zoomOut + " · euler " + h._rot.eulerAngles.ToString("F0");
+ }
+ void LateUpdate()
+ {
+ if (!_on) return;
+ float t = Time.time - _t0; if (t >= _seconds || _pc == null) { _on = false; return; }
+ float k = Mathf.Sin(Mathf.Clamp01(t / _seconds) * Mathf.PI);
+ transform.rotation = _rot;
+ transform.position = _pc.Get_position() + _offset - _rot * Vector3.forward * (_zoom * k);
+ }
+ }
+
/// #941 궤적 교체 이펙트를 매 프레임 무기 소켓 방향(손잡이 → 무기 끝 · 수평)에 맞춘다 — 창 2타 기계총 가림처럼 PC 정면이 아니라 무기가 향한 쪽으로 쏘게. 자리 = 손잡이 + 방향 × 길이 × alignFraction + 위 yOffset − R × massLocal × 배율.
public sealed class WLWeaponFollowFx : MonoBehaviour
{
diff --git a/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json b/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json
index c24cbdfd8..d019d9212 100644
--- a/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json
+++ b/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json
@@ -42,10 +42,10 @@
"jumpForward": 0.4,
"jumpSeconds": 0.25,
"landState": "ghost_land",
- "landHeight": 0.5,
- "landFallSeconds": 0.15,
- "slideDistance": 0.3,
- "slideSeconds": 0.25,
+ "landHeight": 0.2,
+ "landFallSeconds": 0.06,
+ "slideDistance": 0.45,
+ "slideSeconds": 0.3,
"landTotalSeconds": 0.45,
"landAtSeconds": 3.4,
"airClip": "Skill8_Air",
@@ -53,13 +53,14 @@
"dustPrefab": "WL/Fx/WL_Fx_LandDust",
"dustScale": 0.15,
"keepCamera": 1,
- "fallForward": 0.2,
+ "fallForward": 0.08,
"landPose": "ghost_land@0.25",
"landHideModel": 1,
"landGhostColor": [ 0.55, 0.95, 0.85, 0.45 ],
- "landGhostHold": 0.02,
- "landGhostFade": 0.08,
- "popGhosts": 2,
+ "landGhostHold": 0.03,
+ "landGhostFade": 0.1,
+ "popGhosts": 3,
+ "_note_955": "#955 PD 「너무 높은 데서 떨어짐 → 공중 낙하가 아니라 0.5 m 쯤 살짝 낮은 공간에서 순간이동하듯 등장하며 착지 · 수직 랜딩 뒤 미끄러짐이 아니라 전진하듯 살짝 미끄러지는 연출」 — 높이 0.5 → 0.2 · 낙하 0.15 → 0.06 s(거의 즉시 등장) · 등장 뒤 전진 미끄러짐 0.45 m / 0.3 s 감속 · 잔상 3",
"_note_954": "#954 PD 「각성 뒤 너무 높은 위치에서 튀어나옴 → 0.5 m 정도 낮은 높이에서 반투명 상태로 갑자기 이펙트와 함께 튀어나오며 랜딩 · 랜딩 시간 짧게 · 랜딩 중 공격 불가」 — 높이 1.2 → 0.5 · 낙하 0.25 → 0.15 s · 전체 1.0 → 0.45 s · 미끄러짐 0.4/0.35 → 0.3/0.25 · 낙하 중 실제 모델 숨김 + 착지 자세(ghost_land@0.25)의 반투명 teal 캐릭터를 매 프레임(유지 0.02 · 소멸 0.08) · 착지 순간 모델 보임 + 잔상 2 + 먼지 · 공격 금지 = IsLanding(하네스 공격 키) + IsStop(자동 전투)",
"_note_953": "#953 PD 「비수 공격 시 카메라 각도가 달라짐 — 바꾸지 말고 현재 상태 유지한 채 착지(탑뷰가 아니라 대각선에서 미끄러지며 낙하하듯)」 — 원인 = 원본 Skill_DarkAmbush 가 시전 때 RealCamera.Set_TopView(PC) · 2.0 s 뒤 해제 → keepCamera 1 로 둘 다 건너뜀(원본 훅 2줄) · fallForward 0.35 m = 낙하 0.25 s 동안 앞으로(대각선) → 착지 뒤 slide 0.4 m 감속 · 값은 PM 추정(원장 40)",
"_note_952": "#952 PD 「이펙트가 끝나는 시점에 즉시 착지(서 있는 모습 없이) · 떨어진 후 미끄러지듯 살짝 전진하다 멈춤 · 흙먼지는 캐릭터 등신에 맞게」 — 착지 시작 = 원본이 모델을 다시 켜는 그 프레임(WLGhostStrike.LateTick · 그 프레임은 숨김 · 섞임 0) · 미끄러짐 = 감속(2D/T → 0 · 0.4 m / 0.35 s) · 먼지 = HCFX Dust_Dash 사본의 긴 줄기(3D 크기 1.7 × 5.0 × lengthScale 1 = 프리팹 단위 5 m) × 0.15 ≈ 0.75 m(PC 키 1.13 m 실측 · Bounds952.Model)",
diff --git a/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json b/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json
index cc6f6dd28..8e916b244 100644
--- a/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json
+++ b/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json
@@ -12,5 +12,10 @@
"fxYOffset": 0.1,
"fxLife": 2.5,
"hideOriginalFx": 1,
+ "slashStates": [ "attack", "DualBlades_Attack2" ],
+ "slashInterval": 0.28,
+ "slashSpeed": 1.8,
+ "slashSeconds": 2.0,
+ "_note_955": "#955 PD 「주력 쓸 때 캐릭터가 공중에 뜬 채 행동 → 제자리에서 단검 난사」 — 원본 상태 사슬 DualBlades_Jump_Start → JumpAttack1·2·3(공중 자세)을 대신해 2.0 s 동안 1·2타 상태를 0.28 s 마다 번갈아(배속 1.8 · 애니메이션 이벤트 끔 = 추가 타격·궤적 없음 · 이동은 원본대로 금지) · 2.1 s 뒤 원본 순간이동·Play_Idle 그대로",
"_note_954": "#954 PD 「비수 주력 = Slash Effects FREE 의 녹색 난사(스크린샷)로」 — 사본 WL_Fx_DaggerMulti(= Multiple Slash 2 · 초승달 2개가 시차로 · 시작색 teal) · 원본 베기(go_effect · 판정 상자 그대로) 렌더러 끔 · 원본이 베기를 켜는 0.5 s 에 PC 정면 1.2 m · 높이 +0.1 · 배율 0.6 · 2.5 s 뒤 파괴 · 연기(smoke)는 그대로"
}
diff --git a/Assets/WL/Combat/Weapon/WLGhostStrike.cs b/Assets/WL/Combat/Weapon/WLGhostStrike.cs
index 5de592b30..deafb1810 100644
--- a/Assets/WL/Combat/Weapon/WLGhostStrike.cs
+++ b/Assets/WL/Combat/Weapon/WLGhostStrike.cs
@@ -271,6 +271,25 @@ namespace WL.Combat.Weapon
// ───────────────────────────────────────── #951 도약 잔상 · 착지 연출
public static int JumpSpawned, Landings, LandGhostFrames; public static string LandLog = "";
+ /// #955 비수 4타 순간이동 잔상 — 지금 자세(살아 있는 메시)를 한 번 굽고 from→to 사이에 n 개(잔상 색 · 기본 유지·소멸).
+ public static int BlinkGhosts(Actor pc, Vector3 from, Vector3 to, int n)
+ {
+ try
+ {
+ var c = Cfg; if (c.enabled == 0 || pc == null || n <= 0) return 0;
+ var cast = new Cast { shooter = pc, rule = new WLGhostStrikeRule(), t0 = Time.time, groundY = pc.Get_position().y, poseCursor = 0 };
+ Capture(cast, c);
+ var pose = BakePose(pc.transform, cast.smrs, cast.weapons); if (pose == null) return 0;
+ var face = to - from; face.y = 0f; if (face.sqrMagnitude < 1e-4f) face = pc.transform.forward;
+ int made = 0;
+ for (int i = 0; i < n; i++) if (Spawn(c, cast, Vector3.Lerp(from, to, (i + 0.5f) / n), face, pose)) made++;
+ if (pose.body != null) Object.Destroy(pose.body, c.hold + c.fade + 0.5f);
+ foreach (var m in pose.extraMesh) if (m != null) Object.Destroy(m, c.hold + c.fade + 0.5f);
+ BlinkGhostCount += made; return made;
+ }
+ catch (System.Exception ex) { Errors++; LastLog = "잔상 실패 — " + ex.Message; return 0; }
+ }
+ public static int BlinkGhostCount;
/// #954 「랜딩 중 공격할 수 없어야」 — 이 시전자가 착지 연출 중인가(자동 전투는 IsStop 으로 이미 멈춤 · 수동 공격 키는 이걸로 막는다).
public static bool IsLanding(Actor a) { var cast = s_cast; return cast != null && cast.landing && a != null && ReferenceEquals(cast.shooter, a); }
static System.Reflection.PropertyInfo s_isStop;
diff --git a/Assets/WL/Combat/Weapon/WLShadowSlash.cs b/Assets/WL/Combat/Weapon/WLShadowSlash.cs
index 914171a55..e0507bbaf 100644
--- a/Assets/WL/Combat/Weapon/WLShadowSlash.cs
+++ b/Assets/WL/Combat/Weapon/WLShadowSlash.cs
@@ -34,6 +34,9 @@ namespace WL.Combat.Weapon
public string fxPrefab = ""; // Resources 경로(비우면 원본 베기 그대로)
public float fxScale = 1f, fxDelay = 0.5f, fxForward = 1.5f, fxYOffset = 0f, fxLife = 2.5f; // 배율 · 시전 뒤 시각(원본 go_effect 0.5 s) · PC 정면 거리(원본 1.5) · 높이 · 수명
public int hideOriginalFx = 0; // 1 = 원본 베기(go_effect) 렌더러 끔
+ // #955 PD 「주력 쓸 때 왜 캐릭터가 공중에 뜬 채 행동하나 — 제자리에서 단검을 난사하도록」 — 원본 상태 사슬(DualBlades_Jump_Start → JumpAttack1·2·3 = 공중 자세)을 쓰지 않고 slashSeconds 동안 slashStates 를 slashInterval 마다 번갈아 재생(배속 slashSpeed · 애니메이션 이벤트 끔 = 추가 타격·궤적 없음)
+ public string[] slashStates = new string[0];
+ public float slashInterval = 0.28f, slashSpeed = 1.8f, slashSeconds = 2.0f;
}
public static class WLShadowSlash
@@ -87,6 +90,7 @@ namespace WL.Combat.Weapon
if (c.hideOriginalFx != 0 && skill.go_effect != null) foreach (var rd in skill.go_effect.GetComponentsInChildren(true)) rd.enabled = false; // 풀 인스턴스라 한 번 끄면 유지
Runner.StartCoroutine(CoFx(shooter, c));
}
+ if (c.slashStates != null && c.slashStates.Length > 0 && !DSUtil.CheckNull(shooter) && shooter.m_animation != null) Runner.StartCoroutine(CoSlash(shooter, c)); // #955
LastLog = "cast " + Casts + " · shown " + Shown + " · scaled " + Scaled;
}
catch (System.Exception ex) { Errors++; LastLog = "실패 — " + ex.Message; }
@@ -108,6 +112,28 @@ namespace WL.Combat.Weapon
Object.Destroy(go, Mathf.Max(0.5f, c.fxLife)); FxShown++; LastLog = "fx " + c.fxPrefab + " @" + pos.ToString("F2") + " ×" + c.fxScale;
}
+ public static int SlashLoops; public static string SlashLog = "";
+ /// #955 제자리 난사 — slashSeconds 동안 slashStates 를 번갈아 CrossFade(이벤트 끔 · 배속) · 스킬 상태를 벗어나면 중단 · 끝에 이벤트·배속 원상.
+ static System.Collections.IEnumerator CoSlash(Actor shooter, WLShadowSlashJson c)
+ {
+ var an = shooter.m_animation; if (an == null) yield break;
+ bool prevEvents = an.fireEvents; an.fireEvents = false; float t0 = Time.time; int i = 0;
+ try
+ {
+ while (Time.time - t0 < c.slashSeconds)
+ {
+ if (DSUtil.CheckNull(shooter) || shooter.IsDead()) break; // CurAnim 조건은 뺀다(실측: 3회 만에 끊겨 원본 콤보 전이 Attack3→4(회전)·Jump 사슬이 이어졌다) · 0.28 s 마다 다시 시작하므로 상태 exit 전이에 안 걸린다
+ string st = c.slashStates[i % c.slashStates.Length]; int h = Animator.StringToHash(st);
+ if (an.HasState(0, h)) { an.CrossFadeInFixedTime(h, 0.05f, 0, 0f); an.speed = Mathf.Max(0.1f, c.slashSpeed); SlashLoops++; }
+ else SlashLog = "상태 없음 " + st;
+ i++;
+ yield return new WaitForSeconds(Mathf.Max(0.05f, c.slashInterval));
+ }
+ }
+ finally { if (!DSUtil.CheckNull(shooter) && shooter.m_animation != null) { shooter.m_animation.fireEvents = prevEvents; shooter.m_animation.speed = 1f; } }
+ SlashLog = "난사 " + i + "회 · " + (Time.time - t0).ToString("F2") + " s";
+ }
+
/// Actor 의 protected 켜기 함수(Model_OnOff · Weapon_OnOff(bool))를 true 로 부른다 — 원본 Co_Invisible 끝과 같은 호출(가상 함수는 PCActor 쪽이 불린다).
static bool Call(ref MethodInfo m, string name, Actor a)
{