diff --git a/Assets/Script/Character/Projectile/Skill/Skill_DarkAmbush.cs b/Assets/Script/Character/Projectile/Skill/Skill_DarkAmbush.cs
index 70555c234..55e3a3a8c 100644
--- a/Assets/Script/Character/Projectile/Skill/Skill_DarkAmbush.cs
+++ b/Assets/Script/Character/Projectile/Skill/Skill_DarkAmbush.cs
@@ -19,7 +19,7 @@ public class Skill_DarkAmbush : ProjectileBase
{
colliderControl.gameObject.SetActive(false);
colliderControl.Set(m_ProjecTileData);
- m_ProjecTileData.shooter.Set_Invisible(1.5f, null);
+ m_ProjecTileData.shooter.Set_Invisible(WL.Combat.Weapon.WLGhostStrike.InvisibleSeconds(this, 1.5f), null); // WL #965 숨김 = 이펙트가 끝나는 시각(WLGhostStrike.json invisibleMatchFx · 끄면 원본 1.5 s)
bool keepCam = WL.Combat.Weapon.WLGhostStrike.KeepCamera(this); // WL #953 PD 「카메라 각도를 바꾸지 말고 현재 상태로 착지」 — 규칙(WLGhostStrike.json keepCamera)이면 탑뷰 전환 생략
if (MyValue.m_RealCamera != null && !keepCam) MyValue.m_RealCamera.Set_TopView(m_ProjecTileData.shooter); // WL #881 섬 RealCamera 없음 가드
yield return new WaitForSeconds(0.25f);
diff --git a/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json b/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json
index 9755e75e5..5b3cd91ff 100644
--- a/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json
+++ b/Assets/WL/Combat/Impact/Resources/WL/WLImpactFx.json
@@ -159,12 +159,13 @@
"massLocal": [ 0, 0, 0 ],
"fixedDir": false,
"lockFacing": false,
- "blinkDistance": 0.5,
- "blinkGhosts": 4,
+ "blinkDistance": 0.0,
+ "blinkGhosts": 0,
"camHoldSeconds": 0.7,
"camZoomOut": 0.6,
"keepTrail": true,
- "blinkTrailSeconds": 0.3,
+ "_note_965": "#965 PD 「비수 마지막 시 전진하지 않고 제자리에서 내려치기 공격으로 바꾸고, 잔상은 없애줘」 — 순간이동 0.5 → 0 · 순간이동 길 잔상 4 → 0 · 따라오는 잔상 0.3 → 0 s · 돌진(공격 전진 표 Attack4_S_102 · 약 1.13 m)은 표 이름을 Attack4_S_10201 로 좁혀 10202 4타에서 뺌 · 동작(머리 위 → 바닥 내려찍기)·검기·카메라 고정은 그대로",
+ "blinkTrailSeconds": 0.0,
"blinkTrailInterval": 0.0,
"blinkTrailMinStep": 0.25,
"_note_964": "#964 PD ① 「4타 이펙트를 1, 2타와 같은 검기로」 — keepTrail: 초승달(WL_Impact_DaggerSpin)은 안 띄우고 검기 호(녹색) · 순간이동 0.5 m · 카메라 고정·줌아웃은 유지 · 4타 동작 = 머리 위 → 정면 바닥 내려찍기(칼끝 실측 f7~f12)라 호가 세로로 서서 위 카메라에서 안 보임 → SlashTrailSettings arcTilts(10202 · Effect_Slash_10202_4 · 카메라 쪽 기울기) · 크기 30 % 축소 = arcSizeMulStages[3](지금 4타 폭 4.97 m × 0.7 목표) · 범위 30 % 축소 = WLHitboxFit 4타 frontReach 1.89 → 1.32 ② 「4타 잔상이 플레이어를 따라가지 않음 → 빠르게 이동한 것처럼 따라 생성」 — 1차 Play 실측: 4타 돌진 = 공격 전진 표 Attack4_S_102(프레임 5~8 · 약 1.13 m 를 0.07 s)가 순간이동 뒤에 와서 잔상(순간이동 길 4개)이 뒤에 남음 → 순간이동 뒤 0.3 s 동안 매 프레임 지나온 길에 0.25 m 간격으로 잔상(blinkTrail · BlinkGhosts 보간)",
diff --git a/Assets/WL/Combat/Weapon/Resources/WL/Fx/WL_Fx_DaggerMulti.prefab b/Assets/WL/Combat/Weapon/Resources/WL/Fx/WL_Fx_DaggerMulti.prefab
index eb0d6edfc..0fa15bb2c 100644
--- a/Assets/WL/Combat/Weapon/Resources/WL/Fx/WL_Fx_DaggerMulti.prefab
+++ b/Assets/WL/Combat/Weapon/Resources/WL/Fx/WL_Fx_DaggerMulti.prefab
@@ -289,8 +289,8 @@ ParticleSystem:
startSize:
serializedVersion: 2
minMaxState: 3
- scalar: 8
- minScalar: 5
+ scalar: 1.8506427
+ minScalar: 1.1566517
maxCurve:
serializedVersion: 2
m_Curve:
@@ -1476,7 +1476,7 @@ ParticleSystem:
m_RotationOrder: 4
separateAxes: 1
ColorModule:
- enabled: 1
+ enabled: 0
gradient:
serializedVersion: 2
minMaxState: 1
@@ -4363,8 +4363,8 @@ ParticleSystem:
m_NumColorKeys: 2
m_NumAlphaKeys: 2
CustomDataModule:
- enabled: 0
- mode0: 0
+ enabled: 1
+ mode0: 1
vectorComponentCount0: 4
color0:
serializedVersion: 2
@@ -4434,27 +4434,36 @@ ParticleSystem:
colorLabel0: Color
vector0_0:
serializedVersion: 2
- minMaxState: 0
- scalar: 0
+ minMaxState: 1
+ scalar: 0.98
minScalar: 0
maxCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
+ value: 1
+ inSlope: -10.117915
+ outSlope: -5.435413
+ tangentMode: 65
weightedMode: 0
inWeight: 0.33333334
- outWeight: 0.33333334
+ outWeight: 0.16439223
+ - serializedVersion: 3
+ time: 0.18040706
+ value: 0.019413143
+ inSlope: -5.435413
+ outSlope: -0.09187784
+ tangentMode: 69
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.50618774
- serializedVersion: 3
time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
+ value: -0.055889286
+ inSlope: -0.09187784
+ outSlope: -0.25530308
+ tangentMode: 69
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
@@ -4648,17 +4657,17 @@ ParticleSystem:
m_PostInfinity: 2
m_RotationOrder: 4
vectorLabel0_3: W
- mode1: 0
+ mode1: 2
vectorComponentCount1: 4
color1:
serializedVersion: 2
- minMaxState: 0
+ minMaxState: 1
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient:
serializedVersion: 2
- key0: {r: 1, g: 1, b: 1, a: 1}
- key1: {r: 1, g: 1, b: 1, a: 1}
+ key0: {r: 0, g: 1.582193, b: 0.12657532, a: 1}
+ key1: {r: 0.015663957, g: 0.3018868, b: 0.03856176, a: 0}
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}
@@ -4666,14 +4675,14 @@ ParticleSystem:
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
- ctime1: 65535
+ ctime1: 38864
ctime2: 0
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
- atime0: 0
+ atime0: 33911
atime1: 65535
atime2: 0
atime3: 0
@@ -4958,7 +4967,7 @@ ParticleSystemRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- - {fileID: 2100000, guid: bf638850d6c4d8342b4b030c82944736, type: 2}
+ - {fileID: 2100000, guid: 62a88a8d105d99c4c89fdced84335769, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -5001,10 +5010,10 @@ ParticleSystemRenderer:
m_FreeformStretching: 0
m_RotateWithStretchDirection: 1
m_UseCustomVertexStreams: 1
- m_VertexStreams: 00030409
+ m_VertexStreams: 00010304052226
m_UseCustomTrailVertexStreams: 0
m_TrailVertexStreams: 00010304
- m_Mesh: {fileID: -4907317404281051548, guid: 9b070b1b446bd0f45b356f1bf631f2fe, type: 3}
+ m_Mesh: {fileID: -9132845362894151416, guid: f8e288e5376a9cd4e93754a36d204c40, type: 3}
m_Mesh1: {fileID: 0}
m_Mesh2: {fileID: 0}
m_Mesh3: {fileID: 0}
@@ -5235,7 +5244,7 @@ ParticleSystem:
serializedVersion: 2
minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
- maxColor: {r: 0.21102285, g: 0.8018868, b: 0.59086394, a: 1}
+ maxColor: {r: 0.2216981, g: 1, b: 0.2839622, a: 1}
maxGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
@@ -10309,8 +10318,8 @@ ParticleSystem:
startSize:
serializedVersion: 2
minMaxState: 3
- scalar: 8
- minScalar: 5
+ scalar: 1.8506427
+ minScalar: 1.1566517
maxCurve:
serializedVersion: 2
m_Curve:
@@ -11496,7 +11505,7 @@ ParticleSystem:
m_RotationOrder: 4
separateAxes: 1
ColorModule:
- enabled: 1
+ enabled: 0
gradient:
serializedVersion: 2
minMaxState: 1
@@ -14383,8 +14392,8 @@ ParticleSystem:
m_NumColorKeys: 2
m_NumAlphaKeys: 2
CustomDataModule:
- enabled: 0
- mode0: 0
+ enabled: 1
+ mode0: 1
vectorComponentCount0: 4
color0:
serializedVersion: 2
@@ -14454,27 +14463,36 @@ ParticleSystem:
colorLabel0: Color
vector0_0:
serializedVersion: 2
- minMaxState: 0
- scalar: 0
+ minMaxState: 1
+ scalar: 0.98
minScalar: 0
maxCurve:
serializedVersion: 2
m_Curve:
- serializedVersion: 3
time: 0
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
+ value: 1
+ inSlope: -10.117915
+ outSlope: -5.435413
+ tangentMode: 65
weightedMode: 0
inWeight: 0.33333334
- outWeight: 0.33333334
+ outWeight: 0.16439223
+ - serializedVersion: 3
+ time: 0.18040706
+ value: 0.019413143
+ inSlope: -5.435413
+ outSlope: -0.09187784
+ tangentMode: 69
+ weightedMode: 0
+ inWeight: 0.33333334
+ outWeight: 0.50618774
- serializedVersion: 3
time: 1
- value: 0
- inSlope: 0
- outSlope: 0
- tangentMode: 0
+ value: -0.055889286
+ inSlope: -0.09187784
+ outSlope: -0.25530308
+ tangentMode: 69
weightedMode: 0
inWeight: 0.33333334
outWeight: 0.33333334
@@ -14668,17 +14686,17 @@ ParticleSystem:
m_PostInfinity: 2
m_RotationOrder: 4
vectorLabel0_3: W
- mode1: 0
+ mode1: 2
vectorComponentCount1: 4
color1:
serializedVersion: 2
- minMaxState: 0
+ minMaxState: 1
minColor: {r: 1, g: 1, b: 1, a: 1}
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient:
serializedVersion: 2
- key0: {r: 1, g: 1, b: 1, a: 1}
- key1: {r: 1, g: 1, b: 1, a: 1}
+ key0: {r: 0, g: 1.582193, b: 0.12657532, a: 1}
+ key1: {r: 0.015663957, g: 0.3018868, b: 0.03856176, a: 0}
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}
@@ -14686,14 +14704,14 @@ ParticleSystem:
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
- ctime1: 65535
+ ctime1: 38864
ctime2: 0
ctime3: 0
ctime4: 0
ctime5: 0
ctime6: 0
ctime7: 0
- atime0: 0
+ atime0: 33911
atime1: 65535
atime2: 0
atime3: 0
@@ -14978,7 +14996,7 @@ ParticleSystemRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- - {fileID: 2100000, guid: 57549874941670b4aadfdbda77559b5c, type: 2}
+ - {fileID: 2100000, guid: 62a88a8d105d99c4c89fdced84335769, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -15021,10 +15039,10 @@ ParticleSystemRenderer:
m_FreeformStretching: 0
m_RotateWithStretchDirection: 1
m_UseCustomVertexStreams: 1
- m_VertexStreams: 00030409
+ m_VertexStreams: 00010304052226
m_UseCustomTrailVertexStreams: 0
m_TrailVertexStreams: 00010304
- m_Mesh: {fileID: -4907317404281051548, guid: 9b070b1b446bd0f45b356f1bf631f2fe, type: 3}
+ m_Mesh: {fileID: -9132845362894151416, guid: f8e288e5376a9cd4e93754a36d204c40, type: 3}
m_Mesh1: {fileID: 0}
m_Mesh2: {fileID: 0}
m_Mesh3: {fileID: 0}
diff --git a/Assets/WL/Combat/Weapon/Resources/WL/Fx/WL_Fx_Meteor01.prefab b/Assets/WL/Combat/Weapon/Resources/WL/Fx/WL_Fx_Meteor01.prefab
index cfce1e18e..f0b2ba9b0 100644
--- a/Assets/WL/Combat/Weapon/Resources/WL/Fx/WL_Fx_Meteor01.prefab
+++ b/Assets/WL/Combat/Weapon/Resources/WL/Fx/WL_Fx_Meteor01.prefab
@@ -5210,7 +5210,7 @@ ParticleSystem:
serializedVersion: 2
minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
- maxColor: {r: 1, g: 1, b: 1, a: 1}
+ maxColor: {r: 1, g: 0.94375, b: 0.90999997, a: 0.36}
maxGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
@@ -6362,8 +6362,8 @@ ParticleSystem:
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient:
serializedVersion: 2
- key0: {r: 0.41509432, g: 0, b: 0, a: 1}
- key1: {r: 0.20161195, g: 0.17319329, b: 0.26415092, a: 1}
+ key0: {r: 1, g: 1, b: 1, a: 0}
+ key1: {r: 1, g: 1, b: 1, 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}
@@ -6371,7 +6371,7 @@ ParticleSystem:
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
- ctime1: 42409
+ ctime1: 65535
ctime2: 0
ctime3: 0
ctime4: 0
@@ -6379,8 +6379,8 @@ ParticleSystem:
ctime6: 0
ctime7: 0
atime0: 0
- atime1: 65535
- atime2: 0
+ atime1: 9830
+ atime2: 65535
atime3: 0
atime4: 0
atime5: 0
@@ -6389,7 +6389,7 @@ ParticleSystem:
m_Mode: 0
m_ColorSpace: -1
m_NumColorKeys: 2
- m_NumAlphaKeys: 2
+ m_NumAlphaKeys: 3
minGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
@@ -6428,8 +6428,8 @@ ParticleSystem:
fps: 30
frameOverTime:
serializedVersion: 2
- minMaxState: 3
- scalar: 0.6859375
+ minMaxState: 1
+ scalar: 0.9999
minScalar: 0.65625
maxCurve:
serializedVersion: 2
@@ -6533,8 +6533,8 @@ ParticleSystem:
m_PostInfinity: 2
m_RotationOrder: 4
speedRange: {x: 0, y: 1}
- tilesX: 8
- tilesY: 8
+ tilesX: 4
+ tilesY: 4
animationType: 0
rowIndex: 0
cycles: 1
@@ -9253,7 +9253,7 @@ ParticleSystem:
m_NumColorKeys: 2
m_NumAlphaKeys: 2
CustomDataModule:
- enabled: 1
+ enabled: 0
mode0: 1
vectorComponentCount0: 4
color0:
@@ -9848,7 +9848,7 @@ ParticleSystemRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- - {fileID: 2100000, guid: 940497618fb910c429d06829a874836b, type: 2}
+ - {fileID: 2100000, guid: 41d5ce8e9756a244dbdd4af1c8604aa2, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -9891,7 +9891,7 @@ ParticleSystemRenderer:
m_FreeformStretching: 0
m_RotateWithStretchDirection: 1
m_UseCustomVertexStreams: 1
- m_VertexStreams: 00010304052226
+ m_VertexStreams: 00010304
m_UseCustomTrailVertexStreams: 0
m_TrailVertexStreams: 00010304
m_Mesh: {fileID: 0}
@@ -15043,7 +15043,7 @@ ParticleSystem:
serializedVersion: 2
minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
- maxColor: {r: 0, g: 0, b: 0, a: 1}
+ maxColor: {r: 1, g: 0.94375, b: 0.90999997, a: 0.36}
maxGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
@@ -16261,8 +16261,8 @@ ParticleSystem:
fps: 30
frameOverTime:
serializedVersion: 2
- minMaxState: 0
- scalar: 0.828125
+ minMaxState: 1
+ scalar: 0.9999
minScalar: 0.28125
maxCurve:
serializedVersion: 2
@@ -16366,8 +16366,8 @@ ParticleSystem:
m_PostInfinity: 2
m_RotationOrder: 4
speedRange: {x: 0, y: 1}
- tilesX: 8
- tilesY: 8
+ tilesX: 4
+ tilesY: 4
animationType: 0
rowIndex: 0
cycles: 1
@@ -19086,7 +19086,7 @@ ParticleSystem:
m_NumColorKeys: 2
m_NumAlphaKeys: 2
CustomDataModule:
- enabled: 1
+ enabled: 0
mode0: 1
vectorComponentCount0: 4
color0:
@@ -19681,7 +19681,7 @@ ParticleSystemRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- - {fileID: 2100000, guid: 940497618fb910c429d06829a874836b, type: 2}
+ - {fileID: 2100000, guid: 41d5ce8e9756a244dbdd4af1c8604aa2, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -19724,7 +19724,7 @@ ParticleSystemRenderer:
m_FreeformStretching: 0
m_RotateWithStretchDirection: 1
m_UseCustomVertexStreams: 1
- m_VertexStreams: 00010304052226
+ m_VertexStreams: 00010304
m_UseCustomTrailVertexStreams: 0
m_TrailVertexStreams: 00010304
m_Mesh: {fileID: 0}
@@ -29932,7 +29932,7 @@ ParticleSystem:
serializedVersion: 2
minMaxState: 0
minColor: {r: 1, g: 1, b: 1, a: 1}
- maxColor: {r: 1, g: 1, b: 1, a: 1}
+ maxColor: {r: 1, g: 0.94375, b: 0.90999997, a: 0.36}
maxGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
@@ -31084,8 +31084,8 @@ ParticleSystem:
maxColor: {r: 1, g: 1, b: 1, a: 1}
maxGradient:
serializedVersion: 2
- key0: {r: 0.41509432, g: 0, b: 0, a: 1}
- key1: {r: 0.1662049, g: 0.12335349, b: 0.26415092, a: 1}
+ key0: {r: 1, g: 1, b: 1, a: 0}
+ key1: {r: 1, g: 1, b: 1, 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}
@@ -31093,7 +31093,7 @@ ParticleSystem:
key6: {r: 0, g: 0, b: 0, a: 0}
key7: {r: 0, g: 0, b: 0, a: 0}
ctime0: 0
- ctime1: 42409
+ ctime1: 65535
ctime2: 0
ctime3: 0
ctime4: 0
@@ -31101,8 +31101,8 @@ ParticleSystem:
ctime6: 0
ctime7: 0
atime0: 0
- atime1: 65535
- atime2: 0
+ atime1: 9830
+ atime2: 65535
atime3: 0
atime4: 0
atime5: 0
@@ -31111,7 +31111,7 @@ ParticleSystem:
m_Mode: 0
m_ColorSpace: -1
m_NumColorKeys: 2
- m_NumAlphaKeys: 2
+ m_NumAlphaKeys: 3
minGradient:
serializedVersion: 2
key0: {r: 1, g: 1, b: 1, a: 1}
@@ -31150,8 +31150,8 @@ ParticleSystem:
fps: 30
frameOverTime:
serializedVersion: 2
- minMaxState: 3
- scalar: 0.0453125
+ minMaxState: 1
+ scalar: 0.9999
minScalar: 0
maxCurve:
serializedVersion: 2
@@ -31255,8 +31255,8 @@ ParticleSystem:
m_PostInfinity: 2
m_RotationOrder: 4
speedRange: {x: 0, y: 1}
- tilesX: 8
- tilesY: 8
+ tilesX: 4
+ tilesY: 4
animationType: 0
rowIndex: 0
cycles: 1
@@ -33975,7 +33975,7 @@ ParticleSystem:
m_NumColorKeys: 2
m_NumAlphaKeys: 2
CustomDataModule:
- enabled: 1
+ enabled: 0
mode0: 1
vectorComponentCount0: 4
color0:
@@ -34570,7 +34570,7 @@ ParticleSystemRenderer:
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- - {fileID: 2100000, guid: 940497618fb910c429d06829a874836b, type: 2}
+ - {fileID: 2100000, guid: 41d5ce8e9756a244dbdd4af1c8604aa2, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
@@ -34613,7 +34613,7 @@ ParticleSystemRenderer:
m_FreeformStretching: 0
m_RotateWithStretchDirection: 1
m_UseCustomVertexStreams: 1
- m_VertexStreams: 00010304052226
+ m_VertexStreams: 00010304
m_UseCustomTrailVertexStreams: 0
m_TrailVertexStreams: 00010304
m_Mesh: {fileID: 0}
diff --git a/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json b/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json
index 78b0df571..ecb0f5b5f 100644
--- a/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json
+++ b/Assets/WL/Combat/Weapon/Resources/WL/WLGhostStrike.json
@@ -56,6 +56,9 @@
"landTotalSeconds": 0.5,
"_note_959": "#959 PD 「각성 시전 후 공중에 떨어지지 말고 옆에서 튀어나와 정지하는 것처럼」 — 시전 잔상은 위(1.0) 대신 오른쪽 1.0 m 로 빠지고(jumpSide · 위 0.15 · 앞 0.1) · 다시 보이는 순간 최종 자리의 오른쪽 1.2 m(entrySide)에서 0.2 s 동안 감속하며 미끄러져 들어와(그동안 반투명 착지 자세 캐릭터 · 수직 이동 0 = landHeight 0) 정지(앞 미끄러짐 0.45 → 0.1 m) → 모델 + 잔상 3 + 먼지",
"landAtSeconds": 3.4,
+ "invisibleMatchFx": 1,
+ "invisibleExtra": 0.0,
+ "_note_965": "#965 PD 「비수 각성 스킬 끝나고 캐릭터 등장까지 딜레이가 너무 길어 — 이펙트 종료와 동시에 캐릭터가 등장」 — 원본 Skill_DarkAmbush 의 숨김 Set_Invisible(1.5 s)를 이 시전 이펙트 끝(폭발 Exp_01~ 시작 지연 0~1.0 s + 분출 + 수명 · 켜진 렌더러 입자계만)으로(원본 훅 1줄 · WLGhostStrike.InvisibleSeconds) · 다시 보이는 순간 = 착지 시작 · 0 이면 원본 1.5 s",
"airClip": "Skill8_Air",
"landGhosts": 0,
"dustPrefab": "WL/Fx/WL_Fx_LandDust",
diff --git a/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json b/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json
index c924fc0ec..c15525143 100644
--- a/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json
+++ b/Assets/WL/Combat/Weapon/Resources/WL/WLShadowSlash.json
@@ -4,6 +4,9 @@
"freezeAnim": 0,
"slashScale": 0.5,
"smokeScale": 0.5,
+ "smokeHide": 1,
+ "_note_965_smoke": "#965 PD 「비수 주력스킬 사용 때 캐릭터 주위에 생기는 독 연기 이펙트는 제거해」 — 원본 go_invisibleEffect(FX_DarkSkill_SmokeExplosion · 시작 · 끝 순간이동 자리) 렌더러 끔(smokeHide 1 · WLShadowSlash.OnSet) · 0 이면 다시 보임",
+ "_note_965_fx": "#965 PD 「비수 주력스킬 이펙트도 기본 공격 이펙트와 같은 궤적 이펙트로(형태는 지금과 동일 · 디자인만)」 — 사본 WL_Fx_DaggerMulti 의 초승달 2층(분출 시각 0/0.3/0.6 · 0.15/0.45/0.75 · 수명 0.3 · 회전 · 눕힘 · 자리 그대로)의 메시 · 재질 · 정점 스트림 · 사용자 데이터만 기본 공격 검기(Slash_B slash_alp · M_slashB_Alp)로 · 색 = 직업 10202 궤적 색조(녹색 · WLArcTint 와 같은 셈) · 크기 = 메시 반지름 비 ×0.231 · 반짝이 = 검기 먼지 녹색(scripts/wl/probes/965_apply.cs · 백업 공유/개발팀_백업/WL/Fx965_*)",
"keepHitBox": 1,
"fxPrefab": "WL/Fx/WL_Fx_DaggerMulti",
"fxScale": 0.85,
diff --git a/Assets/WL/Combat/Weapon/WLGhostStrike.cs b/Assets/WL/Combat/Weapon/WLGhostStrike.cs
index 864c16523..2ab751b2c 100644
--- a/Assets/WL/Combat/Weapon/WLGhostStrike.cs
+++ b/Assets/WL/Combat/Weapon/WLGhostStrike.cs
@@ -46,6 +46,8 @@ namespace WL.Combat.Weapon
public string landState = ""; // 착지 애니메이터 상태 이름(비우면 착지 연출 없음)
public float landHeight = 1.2f, landFallSeconds = 0.25f, slideDistance = 0.5f, slideSeconds = 0.3f, landTotalSeconds = 1f;
public float landAtSeconds = 0f; // 공중 클립 종료를 못 잡았을 때 이 시각(시전 뒤 초)에 착지 시작(0 = 클립 감지만)
+ public int invisibleMatchFx; // #965 1 = 원본 숨김 시간(Set_Invisible)을 이 시전 이펙트가 끝나는 시각(켜진 렌더러 입자계의 시작 지연 + 마지막 분출 + 수명 최댓값)으로
+ public float invisibleExtra; // #965 위 시각에 더할 초(0 = 이펙트 끝과 동시에 등장)
public string airClip = ""; // 원본 스킬의 공중 클립 이름 조각(예 Skill8_Air) — 이 클립이 보였다가 다른 클립으로 바뀌는 순간 = 공격 끝 → 착지 시작
public int landGhosts = 2; // 떨어지는 동안 잔상 수
public string dustPrefab = ""; public float dustScale = 1f;
@@ -196,6 +198,36 @@ namespace WL.Combat.Weapon
catch (System.Exception) { return false; }
}
+ public static string InvisibleLog = "";
+ /// #965 PD 「비수 각성 스킬 끝나고 캐릭터 등장까지 딜레이가 너무 길어 — 이펙트 종료와 동시에 등장」 — 원본 Skill_DarkAmbush.Co_Update 의 Set_Invisible(1.5 s) 인자 훅(1줄):
+ /// 규칙 invisibleMatchFx 면 이 시전 인스턴스의 켜진 렌더러 입자계(반복 · 렌더러 꺼진 보조 입자계 제외)마다 (시작 지연 + 마지막 분출 + 수명 최댓값)의 최댓값 = 마지막 폭발이 사라지는 시각 + invisibleExtra.
+ /// 다시 보이는 순간 = 착지 시작(LateTick 「보이는 순간」)이라 등장도 그 시각.
+ public static float InvisibleSeconds(ProjectileBase skill, float orig)
+ {
+ try
+ {
+ var c = Cfg; if (skill == null || c.enabled == 0) return orig;
+ WLGhostStrikeRule r; if (!s_rules.TryGetValue(skill.GetType().Name, out r) || r == null || r.invisibleMatchFx == 0) return orig;
+ float v = 0f;
+ foreach (var ps in skill.GetComponentsInChildren(true))
+ {
+ var rd = ps.GetComponent(); if (rd == null || !rd.enabled) continue;
+ var m = ps.main; if (m.loop) continue;
+ float delay = m.startDelay.mode == ParticleSystemCurveMode.Constant ? m.startDelay.constant : m.startDelay.constantMax;
+ float life = m.startLifetime.mode == ParticleSystemCurveMode.Constant ? m.startLifetime.constant : (m.startLifetime.mode == ParticleSystemCurveMode.TwoConstants ? m.startLifetime.constantMax : m.startLifetime.curveMultiplier);
+ var em = ps.emission; float last = -1f;
+ for (int i = 0; i < em.burstCount; i++) { var b = em.GetBurst(i); if (b.cycleCount <= 0) continue; last = Mathf.Max(last, b.time + (b.cycleCount - 1) * b.repeatInterval); }
+ if (em.rateOverTime.constantMax > 0f) last = Mathf.Max(last, m.duration);
+ if (last < 0f) continue;
+ v = Mathf.Max(v, delay + last + life);
+ }
+ if (v < 0.2f) { InvisibleLog = "이펙트 시간 못 셈 → 원본 " + orig; return orig; }
+ float sec = Mathf.Max(0.2f, v + r.invisibleExtra);
+ InvisibleLog = "숨김 " + orig.ToString("F2") + " → " + sec.ToString("F2") + " s(이펙트 끝 " + v.ToString("F2") + ")"; return sec;
+ }
+ catch (System.Exception) { return orig; }
+ }
+
public static void OnSet(ProjectileBase skill)
{
try
diff --git a/Assets/WL/Combat/Weapon/WLShadowSlash.cs b/Assets/WL/Combat/Weapon/WLShadowSlash.cs
index 60e4f68df..8219fd0de 100644
--- a/Assets/WL/Combat/Weapon/WLShadowSlash.cs
+++ b/Assets/WL/Combat/Weapon/WLShadowSlash.cs
@@ -29,6 +29,7 @@ namespace WL.Combat.Weapon
public int freezeAnim = 0; // 1 = 원본처럼 애니메이터 배속 0 유지(보이면 2.1 초 정지 자세) · 0 = 원본 상태 사슬 재생
public float slashScale = 1f; // 베기(go_effect) 보이는 크기 배율
public float smokeScale = 1f; // 연기(go_invisibleEffect) 크기 배율
+ public int smokeHide; // #965 PD 「비수 주력스킬 사용 때 캐릭터 주위에 생기는 독 연기 이펙트는 제거」 — 1 = 연기(시작 · 끝 순간이동 자리) 렌더러를 끈다(풀 인스턴스라 매 시전 값대로 맞춤)
public int keepHitBox = 1; // 1 = 베기 판정 상자 월드 크기 유지(보이는 크기만 바꿈)
// #954 PD 「비수 주력 = Slash Effects FREE 의 녹색 난사(Multiple Slash 2)로」 — 원본 베기 렌더러를 끄고(판정 상자 그대로) WL 사본을 같은 자리·시각에 띄운다
public string fxPrefab = ""; // Resources 경로(비우면 원본 베기 그대로)
@@ -117,7 +118,11 @@ namespace WL.Combat.Weapon
if (c.freezeAnim == 0 && shooter.m_animation != null) shooter.m_animation.speed = 1f;
}
if (skill.go_effect != null) Scale(skill.go_effect.transform, c.slashScale, c.keepHitBox != 0);
- if (skill.go_invisibleEffect != null) Scale(skill.go_invisibleEffect.transform, c.smokeScale, false);
+ if (skill.go_invisibleEffect != null)
+ {
+ Scale(skill.go_invisibleEffect.transform, c.smokeScale, false);
+ foreach (var rd in skill.go_invisibleEffect.GetComponentsInChildren(true)) rd.enabled = c.smokeHide == 0; // #965 독 연기 끄기(원본이 끝에 다시 켜도 렌더러는 꺼진 채)
+ }
int seq = ++s_castSeq; s_liveFx.Clear(); s_castShooter = shooter; // #961 이번 시전 번호(구르기 캔슬 때 반복 · 잔상을 멈추는 표지)
if (!string.IsNullOrEmpty(c.fxPrefab) && !DSUtil.CheckNull(shooter)) // #954
{
diff --git a/Assets/WL/Settings/Resources/WL/WLCombatMotionSettings.asset b/Assets/WL/Settings/Resources/WL/WLCombatMotionSettings.asset
index 3595e8779..0abb380aa 100644
--- a/Assets/WL/Settings/Resources/WL/WLCombatMotionSettings.asset
+++ b/Assets/WL/Settings/Resources/WL/WLCombatMotionSettings.asset
@@ -217,7 +217,7 @@ MonoBehaviour:
- 1
- 0.4
passThrough: 0
- - clipContains: Attack4_S_102
+ - clipContains: Attack4_S_10201
frames: 0100000005000000060000000700000008000000090000000a0000000b0000002000000021000000
cm:
- 1.5