WL #975 PD 지시 6건 — ① 한손검 주력 검기 분출 다리 따라 돌리기(WLSkillYaw legFollow · 정규화 0.36 부터 허벅지를 제 관절 둘레로 돌려 두 발이 골반을 따라감 · 실측 쏘는 순간 발 −107 → −17° · 어깨−발 꼬임 약 110 → 20°) ② 검기 명중 경직 0.5 s · 밀림 0.2 → 0.35 m(WLSkillHitFeel · 실측 명중 4회 경직 0.50 · 밀림 0.34 m) ③ 짙은 푸른색 · 군청 → 기본 공격 궤적 하늘색(SlashTrailSettings 10101 가산색 색조 195° · 본체 · 섬광 사본 재착색 + 시전 이펙트 WL 사본 WL_Effect_Casting_EnergySlash · HCFX 그늘색 · 연출 행 charge 교체 · 실측 군청 쪽 픽셀 748 → 74) ④ 해머 기본 스킬 대지 솟음(운석 소환 703305 직업 맞춤 복사본 + WLStaffEarth 직업별 행 classId 10501 = 지팡이 옛 각성 대지 줄기 · 동작 = 템플릿 skill2 들어 내려찍기 → skill2_end · 실측 더미 2 m 띄움) ⑤ 활 공속 1.0 → 0.7(공격표 · 실측 애니메이터 1.10 → 0.77 · 화살 14 m/s 그대로) ⑥ 활 기본 스킬 멀티샷(원본 703404 Set 훅 → WLRapidShot multi · 주력과 같은 모으기 → 부채꼴 60° 화살 10발 × 3회 · 실측 간격 0.50 · 0.52 s · SkillList 703404 대상 적 · 사거리 10 · archer_skill1 = skill2_attack 클립)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
깃 관리자 2026-10-24 00:51:48 +09:00
parent 209b4f3192
commit 29a45e22d9
23 changed files with 599 additions and 120 deletions

File diff suppressed because one or more lines are too long

View File

@ -2675,7 +2675,8 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 17ad07147aaa90e468666b1451db8944, type: 3}
m_Motion: {fileID: 1827226128182048838, guid: 269d078efc0f2d44998168a7dad7ff59,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:

View File

@ -375,7 +375,7 @@ AnimatorState:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: casting
m_Speed: 1
m_Speed: 1.3333334
m_CycleOffset: 0
m_Transitions: []
m_StateMachineBehaviours: []
@ -387,7 +387,8 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: 1b2fe44648e75a04d9482baeaeeab102, type: 3}
m_Motion: {fileID: 1827226128182048838, guid: 06ffec36f3dadf449ad9ce7331628f7e,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -2689,7 +2690,8 @@ AnimatorState:
m_MirrorParameterActive: 0
m_CycleOffsetParameterActive: 0
m_TimeParameterActive: 0
m_Motion: {fileID: 7400000, guid: a9b647a73aef2fb4a83c157be5e4867c, type: 3}
m_Motion: {fileID: 1827226128182048838, guid: a117137f64b3e9f4c8d2ab361e2a1938,
type: 3}
m_Tag:
m_SpeedParameter:
m_MirrorParameter:
@ -2810,7 +2812,7 @@ AnimatorStateTransition:
serializedVersion: 3
m_TransitionDuration: 0.25
m_TransitionOffset: 0
m_ExitTime: 0.90625
m_ExitTime: 0.8
m_HasExitTime: 1
m_HasFixedDuration: 1
m_InterruptionSource: 0

View File

@ -0,0 +1,299 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &1057532553798376008
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 2694430436789627979}
- component: {fileID: 3696870012215389431}
m_Layer: 0
m_Name: WL_Effect_Casting_EnergySlash
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &2694430436789627979
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1057532553798376008}
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: 4518239871895540517}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &3696870012215389431
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1057532553798376008}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 456d2bd1c5c2e5e4b8b948836c4975a4, type: 3}
m_Name:
m_EditorClassIdentifier:
NoUseParticleTime: 1
OffTime: 4
e_EffectLocation: 2
--- !u!1001 &8920258391120528544
PrefabInstance:
m_ObjectHideFlags: 0
serializedVersion: 2
m_Modification:
serializedVersion: 3
m_TransformParent: {fileID: 2694430436789627979}
m_Modifications:
- target: {fileID: 5007752677220625826, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: CustomDataModule.color1.maxColor.b
value: 2
objectReference: {fileID: 0}
- target: {fileID: 5007752677220625826, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: CustomDataModule.color1.maxColor.g
value: 1.5345844
objectReference: {fileID: 0}
- target: {fileID: 5007752677220625826, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: CustomDataModule.color1.maxColor.r
value: 0.08498025
objectReference: {fileID: 0}
- target: {fileID: 5007752677220625826, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.8348231
objectReference: {fileID: 0}
- target: {fileID: 5007752677220625826, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.3203557
objectReference: {fileID: 0}
- target: {fileID: 5007752677278050401, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: CustomDataModule.color1.maxColor.g
value: 2.8974273
objectReference: {fileID: 0}
- target: {fileID: 5007752677278050401, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: CustomDataModule.color1.maxColor.r
value: 0.16045001
objectReference: {fileID: 0}
- target: {fileID: 5007752677278050401, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.b
value: 0.85
objectReference: {fileID: 0}
- target: {fileID: 5007752677278050401, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.6521984
objectReference: {fileID: 0}
- target: {fileID: 5007752677278050401, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.036116607
objectReference: {fileID: 0}
- target: {fileID: 5007752677541020788, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxGradient.key0.g
value: 0.8348231
objectReference: {fileID: 0}
- target: {fileID: 5007752677541020788, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxGradient.key0.r
value: 0.3203557
objectReference: {fileID: 0}
- target: {fileID: 5007752677541020788, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxGradient.key1.b
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5007752677541020788, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxGradient.key1.g
value: 0.8836461
objectReference: {fileID: 0}
- target: {fileID: 5007752677541020788, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxGradient.key1.r
value: 0.52124506
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014402, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_Name
value: HCFX_Energy_03
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014404, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: CustomDataModule.color1.maxColor.g
value: 2.8974273
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014404, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: CustomDataModule.color1.maxColor.r
value: 0.16045001
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014404, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.b
value: 0.85
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014404, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.6521984
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014404, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.036116607
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalScale.x
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalScale.y
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalScale.z
value: 0.5
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalPosition.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalPosition.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalRotation.w
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalRotation.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalRotation.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalRotation.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalEulerAnglesHint.x
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalEulerAnglesHint.y
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: m_LocalEulerAnglesHint.z
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678248857708, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.b
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5007752678248857708, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.856725
objectReference: {fileID: 0}
- target: {fileID: 5007752678248857708, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.4104743
objectReference: {fileID: 0}
- target: {fileID: 5007752678248857708, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.atime3
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678248857708, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.atime4
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678248857708, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key4.a
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678914422437, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.b
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5007752678914422437, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.856725
objectReference: {fileID: 0}
- target: {fileID: 5007752678914422437, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.4104743
objectReference: {fileID: 0}
- target: {fileID: 5007752678914422437, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.atime3
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678914422437, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.atime4
value: 0
objectReference: {fileID: 0}
- target: {fileID: 5007752678914422437, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key4.a
value: 0
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
m_AddedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 28771f4d18687d44ebcb95043bb6bb3e, type: 3}
--- !u!4 &4518239871895540517 stripped
Transform:
m_CorrespondingSourceObject: {fileID: 5007752678101014405, guid: 28771f4d18687d44ebcb95043bb6bb3e,
type: 3}
m_PrefabInstance: {fileID: 8920258391120528544}
m_PrefabAsset: {fileID: 0}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: d5210079cd21e3646948350f0a1c9fed
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -124,12 +124,12 @@ PrefabInstance:
- target: {fileID: 2581246081342383203, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.5317218
value: 0.77058524
objectReference: {fileID: 0}
- target: {fileID: 2581246081342383203, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.0141509175
value: 0.05603975
objectReference: {fileID: 0}
- target: {fileID: 2581246081342383203, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -139,12 +139,12 @@ PrefabInstance:
- target: {fileID: 2581246081342383203, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2581246081342383203, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2581246081342383203, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -154,12 +154,12 @@ PrefabInstance:
- target: {fileID: 2581246081342383203, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2581246081342383203, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2581246081342383203, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -179,12 +179,12 @@ PrefabInstance:
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.54549026
value: 0.739324
objectReference: {fileID: 0}
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.1254902
value: 0.1594823
objectReference: {fileID: 0}
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -199,12 +199,12 @@ PrefabInstance:
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.minColor.g
value: 0.5250001
value: 0.7672922
objectReference: {fileID: 0}
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.minColor.r
value: 0
value: 0.042490125
objectReference: {fileID: 0}
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -214,22 +214,22 @@ PrefabInstance:
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2977174918668865734, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -249,12 +249,12 @@ PrefabInstance:
- target: {fileID: 3176652519396064368, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.61294127
value: 0.77636963
objectReference: {fileID: 0}
- target: {fileID: 3176652519396064368, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.25882357
value: 0.28748354
objectReference: {fileID: 0}
- target: {fileID: 3176652519396064368, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -264,22 +264,22 @@ PrefabInstance:
- target: {fileID: 3176652519396064368, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3176652519396064368, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3176652519396064368, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3176652519396064368, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 3176652519396064368, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -304,12 +304,12 @@ PrefabInstance:
- target: {fileID: 5427077955898790933, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.5250001
value: 0.7672922
objectReference: {fileID: 0}
- target: {fileID: 5427077955898790933, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0
value: 0.042490125
objectReference: {fileID: 0}
- target: {fileID: 5427077955898790933, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -319,12 +319,12 @@ PrefabInstance:
- target: {fileID: 5427077955898790933, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5427077955898790933, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5427077955898790933, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -334,12 +334,12 @@ PrefabInstance:
- target: {fileID: 5427077955898790933, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5427077955898790933, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5427077955898790933, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -354,12 +354,12 @@ PrefabInstance:
- target: {fileID: 5709964409102896158, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.81000006
value: 0.8836461
objectReference: {fileID: 0}
- target: {fileID: 5709964409102896158, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.6
value: 0.52124506
objectReference: {fileID: 0}
- target: {fileID: 5709964409102896158, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -369,12 +369,12 @@ PrefabInstance:
- target: {fileID: 5709964409102896158, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5709964409102896158, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5709964409102896158, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -384,12 +384,12 @@ PrefabInstance:
- target: {fileID: 5709964409102896158, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5709964409102896158, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5709964409102896158, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -409,32 +409,37 @@ PrefabInstance:
- target: {fileID: 6232618474635037349, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.5250001
value: 0.7672922
objectReference: {fileID: 0}
- target: {fileID: 6232618474635037349, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0
value: 0.042490125
objectReference: {fileID: 0}
- target: {fileID: 6232618474635037349, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6232618474635037349, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6232618474635037349, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.b
value: 0.85
objectReference: {fileID: 0}
- target: {fileID: 6232618474635037349, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.35150945
value: 0.85
objectReference: {fileID: 0}
- target: {fileID: 6232618474635037349, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.26037738
value: 0.85
objectReference: {fileID: 0}
- target: {fileID: 6232618474635037349, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -454,32 +459,32 @@ PrefabInstance:
- target: {fileID: 7033682563711218389, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.5250001
value: 0.7672922
objectReference: {fileID: 0}
- target: {fileID: 7033682563711218389, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0
value: 0.042490125
objectReference: {fileID: 0}
- target: {fileID: 7033682563711218389, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7033682563711218389, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7033682563711218389, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7033682563711218389, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7033682563711218389, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -499,12 +504,12 @@ PrefabInstance:
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.6255883
value: 0.8165715
objectReference: {fileID: 0}
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.2117647
value: 0.2452569
objectReference: {fileID: 0}
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -519,12 +524,12 @@ PrefabInstance:
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.minColor.g
value: 0.5250001
value: 0.7672922
objectReference: {fileID: 0}
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: InitialModule.startColor.minColor.r
value: 0
value: 0.042490125
objectReference: {fileID: 0}
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
@ -534,22 +539,22 @@ PrefabInstance:
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7258884150435476659, guid: a769c9d2e74331246a300e6fba225910,
type: 3}

View File

@ -69,12 +69,12 @@ PrefabInstance:
- target: {fileID: 1999761296254745984, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.81000006
value: 0.8836461
objectReference: {fileID: 0}
- target: {fileID: 1999761296254745984, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.6
value: 0.52124506
objectReference: {fileID: 0}
- target: {fileID: 3804521779338254503, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
@ -159,12 +159,12 @@ PrefabInstance:
- target: {fileID: 4491838220540049458, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.81000006
value: 0.8836461
objectReference: {fileID: 0}
- target: {fileID: 4491838220540049458, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.6
value: 0.52124506
objectReference: {fileID: 0}
- target: {fileID: 4748004960685704186, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
@ -184,32 +184,32 @@ PrefabInstance:
- target: {fileID: 4820803202169937068, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.5250001
value: 0.7672922
objectReference: {fileID: 0}
- target: {fileID: 4820803202169937068, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0
value: 0.042490125
objectReference: {fileID: 0}
- target: {fileID: 4820803202169937068, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4820803202169937068, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4820803202169937068, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4820803202169937068, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5533637874220301288, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
@ -224,32 +224,32 @@ PrefabInstance:
- target: {fileID: 5533637874220301288, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.68915445
value: 0.8477133
objectReference: {fileID: 0}
- target: {fileID: 5533637874220301288, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.3455882
value: 0.37339425
objectReference: {fileID: 0}
- target: {fileID: 5533637874220301288, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5533637874220301288, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5533637874220301288, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 5533637874220301288, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6675810005810565097, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
@ -259,32 +259,32 @@ PrefabInstance:
- target: {fileID: 6675810005810565097, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.81000006
value: 0.8836461
objectReference: {fileID: 0}
- target: {fileID: 6675810005810565097, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0.6
value: 0.52124506
objectReference: {fileID: 0}
- target: {fileID: 6675810005810565097, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6675810005810565097, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6675810005810565097, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6675810005810565097, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7297201754924428435, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
@ -304,32 +304,32 @@ PrefabInstance:
- target: {fileID: 8579214359113483040, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.g
value: 0.5250001
value: 0.7672922
objectReference: {fileID: 0}
- target: {fileID: 8579214359113483040, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: InitialModule.startColor.maxColor.r
value: 0
value: 0.042490125
objectReference: {fileID: 0}
- target: {fileID: 8579214359113483040, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8579214359113483040, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key0.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8579214359113483040, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.g
value: 0.81000006
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8579214359113483040, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}
propertyPath: ColorModule.gradient.maxGradient.key1.r
value: 0.6
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8815199620263163061, guid: 66d619abe0c84054a8ccb20b2911d643,
type: 3}

View File

@ -15,6 +15,7 @@ public class Skill_MultiShot : ProjectileBase
public override void Set(ProjectileData _data)
{
base.Set(_data);
if (WL.Combat.Weapon.WLRapidShot.TakeMulti(this, _data)) return; // WL #975 훅(1줄) — 활 기본 스킬: 주력과 같은 모으기 → 앞쪽 부채꼴 화살 10발 × 3회(0.5 초 간격 · WLRapidShot.json multi) · 원본 버프(일반 공격 화살 추가) 건너뜀
m_LifeTime = lifetime;
_data.shooter.Buff_or_Debuff(eCC.MultiShot, m_LifeTime, reducedmg, addarrow, 0f, arrowprefab);
StartCoroutine(Co_Update());

View File

@ -9,7 +9,7 @@
"knockbackScale": 0.0,
"staggerSeconds": 0.4
},
{ "skill": "Skill_EnergySlash", "pushScale": 1.0, "pushMeters": 0.2, "knockbackScale": 0.0, "staggerSeconds": 0.0, "_note_974": "#974 PD 「한손검 주력 검기 — 0.2m 정도 넉백」 — 원본 넉백(AttackKnockBack) 끔 · 피격 밀기(MobStagger · PC → 적 방향) 0.2 m 고정 · 관통 다단(WLPierceProjectile 0.2 s)마다 밀림" },
{ "skill": "Skill_EnergySlash", "pushScale": 1.0, "pushMeters": 0.35, "knockbackScale": 0.0, "staggerSeconds": 0.5, "_note_975": "#975 PD 「한손검 주력 스킬의 검기에 명중 시 경직을 추가하고, 밀리는 거리도 0.15m 늘려줘」 — 밀기 0.2 → 0.35 m · 경직 0 (= 일반 몹 기본 0.25 s · WLHitFeelSettings mobStaggerSeconds) → 0.5 s(PM 값 · 피격 자세 굳힘 + 이동 · 공격 잠금 · 관통 다단 0.2 s 마다 다시 걸림)", "_note_974": "#974 PD 「한손검 주력 검기 — 0.2m 정도 넉백」 — 원본 넉백(AttackKnockBack) 끔 · 피격 밀기(MobStagger · PC → 적 방향) 0.2 m 고정 · 관통 다단(WLPierceProjectile 0.2 s)마다 밀림" },
{
"skill": "Skill_ArrowRain",
"pushScale": 0.05,

View File

@ -237,7 +237,7 @@ MonoBehaviour:
slot: 2
label: "\uAC80\uAE30 \uBD84\uCD9C"
charge:
prefab: Effect_Casting_Energyball
prefab: WL_Effect_Casting_EnergySlash
scale: 0.667
anchor: 2
forwardOffset: 0

View File

@ -126,10 +126,10 @@ Material:
- _UVSec: 0
- _ZWrite: 0
m_Colors:
- _BaseColor: {r: 1.0324773, g: 1.3938444, b: 1.7207954, a: 1}
- _BaseColor: {r: 1.7207954, g: 1.7207954, b: 1.7207954, a: 1}
- _BaseColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _CameraFadeParams: {r: 0, g: Infinity, b: 0, a: 0}
- _Color: {r: 1.0324773, g: 1.3938444, b: 1.7207954, a: 1}
- _Color: {r: 1.7207954, g: 1.7207954, b: 1.7207954, a: 1}
- _ColorAddSubDiff: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SoftParticleFadeParams: {r: 0, g: 0, b: 0, a: 0}

View File

@ -102,7 +102,7 @@ Material:
- _Usedepth: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.6, g: 0.81000006, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, 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}

View File

@ -134,7 +134,7 @@ Material:
- _Usedepth: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 0.6, g: 0.81000006, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _GroundColor: {r: 0.369, g: 0.349, b: 0.341, a: 1}

View File

@ -53,7 +53,7 @@ Material:
- _Usecenterglow: 0
- _Usedepth: 0
m_Colors:
- _Color: {r: 0.6, g: 0.81000006, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0}
- _SpeedMainTexUVNoiseZW: {r: 0, g: 0, b: 0, a: 0}
- _TintColor: {r: 0.6691177, g: 0.3026638, b: 0.13775954, a: 0.465}

View File

@ -54,7 +54,7 @@ Material:
- _Usecustomrandom: 0
- _Usedepth: 0
m_Colors:
- _Color: {r: 0.6, g: 0.81000006, b: 1, a: 1}
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _DistortionSpeedXYPowerZ: {r: 0, g: 0, b: 0, a: 0}
- _SpeedMainTexUVNoiseZW: {r: 0, g: 0, b: 0, a: 0}
- _TintColor: {r: 0.9117647, g: 0.6574693, b: 0.54303634, a: 0.534}

View File

@ -42,5 +42,17 @@
"aimBody": 1,
"chargeBlocksMove": 1,
"holdThroughShots": 1,
"holdMaxSeconds": 3.0
"holdMaxSeconds": 3.0,
"multi": {
"enabled": 1,
"projectile": "Projectile_ArcherSkill2Arrow",
"volleys": 3,
"interval": 0.5,
"arrows": 10,
"fanDegrees": 60,
"rangeMul": 1.0,
"pierce": 0,
"mark": 0,
"note": "#975 PD 「활 기본 스킬은 주력 스킬과 동일하게 모으기 이펙트 시전 후 전방으로 부채꼴 모양으로 퍼지는 화살 10발을 3회 연속으로 발사해줘. (멀티샷 형태이며, 0.5초 간격으로 3회 발사)」 — 원본 Skill_MultiShot(703404 · 일반 공격 화살 추가 버프)을 Set 훅(TakeMulti)으로 넘겨받음 · 모으기 = 위 주력 값 그대로(당기며 모으기 · 활 빛 · WL_Fx_BowCharge) · 화살 = 주력 속사 화살(겉모습 WLProjectileVisual) · 부채꼴 60° · 사거리 = 기본 공격 흰 원 × 1 · 관통 없음 · 과녁 없음(PM 값) · 스킬 표 703404 = 대상 적 · 사거리 10(SkillList.json 직접 수정 · 원본 Self · 0) · 동작 archer_skill1 = skill2_attack 클립(SkillEvent 0 = 누르자마자 모으기 · 원래 Sub_Spell4 0.33 s 뒤)"
}
}

View File

@ -7,6 +7,12 @@
"yaw": -76,
"blendIn": 0.08,
"blendOut": 0.15,
"legFollow": 1.0,
"legFrom": 0.36,
"legRamp": 0.06,
"legNeutral": -17,
"legMax": 130,
"note_975": "#975 PD 「회전 방향은 공격 대상을 보고 있는데 상체만 움직이고 다리 위치가 제대로 바뀌지 않아 몸이 너무 꼬인 느낌」 — 편집 모드 실측(scripts/wl/probes/975_legs.cs · energyslash = combo09_3 1.33 s): 대기 자세 골반 − 두 발 평균 = −17° · 한 바퀴 돈 뒤(0.36~) 골반만 더 돌아 쏘는 순간 0.44 = +73.5°(남는 꼬임 +90.5°) · 0.68 = +91°(+108°) · 1.0 = 대기로 복귀 → legFrom 0.36 부터 0.06 동안 서서히 legFollow 1(대기 자세 관계만 남기고 다리를 골반 쪽으로) · 0.36 전(돌기 중)은 발이 엇갈려 평균이 흔들려 끔",
"note": "#974 PD 「한손검 주력 스킬 시 회전할 때 공격 대상의 방향과 일치하도록 (현재는 공격 투사체 방향보다 더 회전)」 — 확인 Play(974_verify2): 보정 0° 에서 검기를 쏘는 순간(정규화 0.42~0.46) 어깨선 정면이 대상 · 검기 방향보다 +76 · +80° 더 돌아가 있음(= PD 「더 회전」) → −76° · 엉덩이 뼈 축은 기울어(#958) 정면 기준으로 쓰지 않음(엉덩이 −51° 와 어깨 +76° 는 축 차이 127° 로 일정)"
}
]

View File

@ -78,7 +78,9 @@
"endAfter": 0.6
},
{
"skill": "Skill_MeteoStorm_EarthBackup",
"skill": "Skill_MeteoStorm",
"classId": 10501,
"_note_975": "#975 PD 「현재는 망치 기본 공격이 없는데 기존에 구현했던 지팡이 각성 스킬(시전 시 캐릭터 주위로 전 방향으로 퍼지는 솟아나는 바위)로 구현해줘」 — #963 백업(이전 이름 Skill_MeteoStorm_EarthBackup) 값 그대로 · 해머(파괴자 1015 · 직업 10501) 기본 스킬 칸 3 = 운석 소환 703305 직업 맞춤 복사본(WLWeaponSkillTable) → 시전자가 10501 이면 이 행(대지 줄기) · 지팡이(10302)는 아래 메테오 행 · 동작 = pcanim_bluntshield casting ← skill2 클립 active_057(망치를 머리 위로 든 채 → 정규화 0.5 에 땅까지 내려찍음 · 속도 1.33 = 시전 0.5 s 끝에 땅) → casting_end ← skill2_end 클립 active_056(땅에서 일어남 · 시작 SkillEvent 0.01 = 바위 솟음) · 지팡이 모으기 빛 · 발밑 기둥은 castSkills 그대로(Skill_MeteoStorm)",
"center": "caster",
"fx": {
"prefab": "WL/Fx/WL_Fx_StaffPath",

View File

@ -5,9 +5,9 @@
1015,파괴자,Hammer,10501,pcanim_bluntshield,1,STR,1.0,1,attack,MeleeArc,1,1.2,1.5,120,0,0,0,0.3,Projectile_10501,Effect_Slash_10501_1,Effect_Hit_10501,guard_shield|703503,M:weapon_id;class_id;anim_controller;anim_state;range_m;move_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids
1015,파괴자,Hammer,10501,pcanim_bluntshield,1,STR,1.0,2,Attack2,MeleeArc,1,1.3,1.5,120,0,0,0,0.15,Projectile_10501,Effect_Slash_10501_2,Effect_Hit_10501,guard_shield|703503,M:weapon_id;class_id;anim_controller;anim_state;range_m;move_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids
1015,파괴자,Hammer,10501,pcanim_bluntshield,1,STR,1.0,3,Attack3,Area,1,2.2,1.5,0,2.0,0,0,0.31,Projectile_10501,Effect_Slash_10501_3,Effect_Hit_10501,guard_shield|703503,M:weapon_id;class_id;anim_controller;anim_state;range_m;move_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids
1029,바람쐐기,Bow,10402,pcanim_archer,1,DEX,1.0,1,attack,Projectile,1,0.9,6,0,0,18,0,0,Projectile_10402,,Effect_Hit_10402,703405|703406,M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids
1029,바람쐐기,Bow,10402,pcanim_archer,1,DEX,1.0,2,Bow_Attack2,Projectile,1,0.9,6,0,0,18,0,0,Projectile_10402,,Effect_Hit_10402,703405|703406,M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids
1029,바람쐐기,Bow,10402,pcanim_archer,1,DEX,1.0,3,Bow_Attack3,Projectile,3,0.5,6,30,0,18,1,0,Projectile_10402,,Effect_Hit_10402,703405|703406,M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids
1029,바람쐐기,Bow,10402,pcanim_archer,1,DEX,0.7,1,attack,Projectile,1,0.9,6,0,0,18,0,0,Projectile_10402,,Effect_Hit_10402,703405|703406,M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids · PD#975 공속 1.0 → 0.7(활 발사 공격 30 % 느리게 · 투사체 속도 그대로)
1029,바람쐐기,Bow,10402,pcanim_archer,1,DEX,0.7,2,Bow_Attack2,Projectile,1,0.9,6,0,0,18,0,0,Projectile_10402,,Effect_Hit_10402,703405|703406,M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids · PD#975 공속 1.0 → 0.7(활 발사 공격 30 % 느리게 · 투사체 속도 그대로)
1029,바람쐐기,Bow,10402,pcanim_archer,1,DEX,0.7,3,Bow_Attack3,Projectile,3,0.5,6,30,0,18,1,0,Projectile_10402,,Effect_Hit_10402,703405|703406,M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids · PD#975 공속 1.0 → 0.7(활 발사 공격 30 % 느리게 · 투사체 속도 그대로)
1071,현자의 지팡이,Staff,10302,pcanim_sorceress,1,INT,1.0,1,attack,Area,1,1.25,5,0,1.2,14,0,0,Projectile_10302,,Effect_Hit_10302,703306|703305,M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids
1001,월광,Sword,10102,pcanim_spellblade,2,STR,1.0,1,attack,MeleeArc,1,1.0,1.5,120,0,0,0,0.3,Projectile_10102,Effect_Slash_10102_1,Effect_Hit_10102,703106|703105,M:weapon_id;class_id;anim_controller;anim_state;range_m;move_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids
1001,월광,Sword,10102,pcanim_spellblade,2,STR,1.0,2,Attack2,MeleeArc,1,1.0,1.5,120,0,0,0,0.15,Projectile_10102,Effect_Slash_10102_2,Effect_Hit_10102,703106|703105,M:weapon_id;class_id;anim_controller;anim_state;range_m;move_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids

1 weapon_id weapon_name family class_id anim_controller unlock_phase main_stat attack_speed_mult step anim_state hit_type hits dmg_ratio_per_hit range_m arc_deg aoe_radius_m proj_speed pierce move_m hitbox_prefab slash_vfx hit_vfx ref_skill_ids src
5 1015 파괴자 Hammer 10501 pcanim_bluntshield 1 STR 1.0 1 attack MeleeArc 1 1.2 1.5 120 0 0 0 0.3 Projectile_10501 Effect_Slash_10501_1 Effect_Hit_10501 guard_shield|703503 M:weapon_id;class_id;anim_controller;anim_state;range_m;move_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids
6 1015 파괴자 Hammer 10501 pcanim_bluntshield 1 STR 1.0 2 Attack2 MeleeArc 1 1.3 1.5 120 0 0 0 0.15 Projectile_10501 Effect_Slash_10501_2 Effect_Hit_10501 guard_shield|703503 M:weapon_id;class_id;anim_controller;anim_state;range_m;move_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids
7 1015 파괴자 Hammer 10501 pcanim_bluntshield 1 STR 1.0 3 Attack3 Area 1 2.2 1.5 0 2.0 0 0 0.31 Projectile_10501 Effect_Slash_10501_3 Effect_Hit_10501 guard_shield|703503 M:weapon_id;class_id;anim_controller;anim_state;range_m;move_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids
8 1029 바람쐐기 Bow 10402 pcanim_archer 1 DEX 1.0 0.7 1 attack Projectile 1 0.9 6 0 0 18 0 0 Projectile_10402 Effect_Hit_10402 703405|703406 M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids · PD#975 공속 1.0 → 0.7(활 발사 공격 30 % 느리게 · 투사체 속도 그대로)
9 1029 바람쐐기 Bow 10402 pcanim_archer 1 DEX 1.0 0.7 2 Bow_Attack2 Projectile 1 0.9 6 0 0 18 0 0 Projectile_10402 Effect_Hit_10402 703405|703406 M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids · PD#975 공속 1.0 → 0.7(활 발사 공격 30 % 느리게 · 투사체 속도 그대로)
10 1029 바람쐐기 Bow 10402 pcanim_archer 1 DEX 1.0 0.7 3 Bow_Attack3 Projectile 3 0.5 6 30 0 18 1 0 Projectile_10402 Effect_Hit_10402 703405|703406 M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids · PD#975 공속 1.0 → 0.7(활 발사 공격 30 % 느리게 · 투사체 속도 그대로)
11 1071 현자의 지팡이 Staff 10302 pcanim_sorceress 1 INT 1.0 1 attack Area 1 1.25 5 0 1.2 14 0 0 Projectile_10302 Effect_Hit_10302 703306|703305 M:weapon_id;class_id;anim_controller;anim_state;range_m;hitbox_prefab;hit_vfx;ref_skill_ids
12 1001 월광 Sword 10102 pcanim_spellblade 2 STR 1.0 1 attack MeleeArc 1 1.0 1.5 120 0 0 0 0.3 Projectile_10102 Effect_Slash_10102_1 Effect_Hit_10102 703106|703105 M:weapon_id;class_id;anim_controller;anim_state;range_m;move_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids
13 1001 월광 Sword 10102 pcanim_spellblade 2 STR 1.0 2 Attack2 MeleeArc 1 1.0 1.5 120 0 0 0 0.15 Projectile_10102 Effect_Slash_10102_2 Effect_Hit_10102 703106|703105 M:weapon_id;class_id;anim_controller;anim_state;range_m;move_m;hitbox_prefab;slash_vfx;hit_vfx;ref_skill_ids

View File

@ -4,6 +4,8 @@ weapon_id,weapon_name,slot,skill_id,skill_name,skill_class,anim,next_anim,unlock
1435,한손검,2,703103,돌진 베기,Skill_DashSlash,dashslash,,7,16,0,2,6.0,Blood,WST:1007,Effect_Blood,12,PD#973 각성(원래 묵광 각성) · M:skill_id;skill_name;skill_class;anim;next_anim;range_m;awaken2_extra;vfx;src_cool_ref;weapon_id;weapon_name;fr_ref · PD#888 사거리 7→2(제자리 1·2타 연속 베기),,hit:Skill_ShieldAttack,,
1015,파괴자,1,703503,강력한 일격,Skill_JumpAttack,jump,,5,16,0,10,6.5,Stun,WST:1002,Effect_Stun,8,PD#899 주력으로 교체(원래 2번 각성) · M:skill_id;skill_name;skill_class;anim;next_anim;range_m;awaken2_extra;vfx;src_cool_ref;weapon_id;weapon_name;fr_ref,,,,1
1015,파괴자,2,0,대지 분쇄,WLPartSkill,,,7,,,,,,,,,PD#911 각성 변경(수호 보호막 → 대지 분쇄: 망치에 힘 모으기 0.5초 → 내려치기 3회 · 앞쪽 3갈래 충격파 · 맞으면 2 m 띄움 + 2초 기절 · WL 파츠 스킬 hammer_quake · 쿨 · 피해는 파츠 스킬 레벨표 900201),hammer_quake,,,
1015,파괴자,3,703305,대지 솟음,Skill_MeteoStorm,casting,casting_end,3,18,0,3.5,8.0,Burn,WST:1006,Effect_Burn,5,PD#975 기본 스킬(지팡이 옛 각성 #935 대지 줄기 = 시전자 중심 전 방향 바위 솟음 · 2 m 띄움 · 2초 기절 · 운석 소환 703305 직업 맞춤 복사본 + WLStaffEarth 10501 행 · 쿨 · 피해 = 지팡이 각성 값 그대로 · 사거리 10 → 3.5 = 바위 반경 · 이름 임시),,,,
1029,바람쐐기,3,703404,멀티샷,Skill_MultiShot,archer_skill1,,3,5,0,10,1.0,DefenceDecrease,WST:1003,Effect_Slow,5,PD#975 기본 스킬(원본 멀티샷 703404 = 일반 공격 화살 추가 버프 → WLRapidShot multi 가 넘겨받아 주력과 같은 모으기 → 앞쪽 부채꼴 화살 10발 × 3회 · 0.5초 간격 · 쿨 = 원본 5 s · 대상 = 적 · 사거리 10),,,,
1029,바람쐐기,1,703405,속사,Skill_RapidShot,skill2_start,skill2_attack,5,5,0,10,3.0,Slow,WST:1003,Effect_Slow,5,M:skill_id;skill_name;skill_class;anim;next_anim;range_m;awaken2_extra;vfx;src_cool_ref;weapon_id;weapon_name;fr_ref,,,,
1029,바람쐐기,2,703406,화살 비,Skill_ArrowRain,archer_skill3,,7,18,0,10,7.0,Slow,WST:1003,Effect_Slow,5,M:skill_id;skill_name;skill_class;anim;next_anim;range_m;awaken2_extra;vfx;src_cool_ref;weapon_id;weapon_name;fr_ref,,,,
1071,현자의 지팡이,1,703306,번개 소용 돌이,Skill_Hurricane,casting,skill_cast2,5,7,0,5,2.4,Burn,WST:1006,Effect_Burn,5,M:skill_id;skill_name;skill_class;anim;next_anim;range_m;awaken2_extra;vfx;src_cool_ref;weapon_id;weapon_name;fr_ref,,,,

1 weapon_id weapon_name slot skill_id skill_name skill_class anim next_anim unlock_tier cool_s mp range_m dmg_ratio_base awaken2_extra fr_ref vfx src_cool_ref src wl_skill trigger dash_cast first_cast
4 1435 한손검 2 703103 돌진 베기 Skill_DashSlash dashslash 7 16 0 2 6.0 Blood WST:1007 Effect_Blood 12 PD#973 각성(원래 묵광 각성) · M:skill_id;skill_name;skill_class;anim;next_anim;range_m;awaken2_extra;vfx;src_cool_ref;weapon_id;weapon_name;fr_ref · PD#888 사거리 7→2(제자리 1·2타 연속 베기) hit:Skill_ShieldAttack
5 1015 파괴자 1 703503 강력한 일격 Skill_JumpAttack jump 5 16 0 10 6.5 Stun WST:1002 Effect_Stun 8 PD#899 주력으로 교체(원래 2번 각성) · M:skill_id;skill_name;skill_class;anim;next_anim;range_m;awaken2_extra;vfx;src_cool_ref;weapon_id;weapon_name;fr_ref 1
6 1015 파괴자 2 0 대지 분쇄 WLPartSkill 7 PD#911 각성 변경(수호 보호막 → 대지 분쇄: 망치에 힘 모으기 0.5초 → 내려치기 3회 · 앞쪽 3갈래 충격파 · 맞으면 2 m 띄움 + 2초 기절 · WL 파츠 스킬 hammer_quake · 쿨 · 피해는 파츠 스킬 레벨표 900201) hammer_quake
7 1015 파괴자 3 703305 대지 솟음 Skill_MeteoStorm casting casting_end 3 18 0 3.5 8.0 Burn WST:1006 Effect_Burn 5 PD#975 기본 스킬(지팡이 옛 각성 #935 대지 줄기 = 시전자 중심 전 방향 바위 솟음 · 2 m 띄움 · 2초 기절 · 운석 소환 703305 직업 맞춤 복사본 + WLStaffEarth 10501 행 · 쿨 · 피해 = 지팡이 각성 값 그대로 · 사거리 10 → 3.5 = 바위 반경 · 이름 임시)
8 1029 바람쐐기 3 703404 멀티샷 Skill_MultiShot archer_skill1 3 5 0 10 1.0 DefenceDecrease WST:1003 Effect_Slow 5 PD#975 기본 스킬(원본 멀티샷 703404 = 일반 공격 화살 추가 버프 → WLRapidShot multi 가 넘겨받아 주력과 같은 모으기 → 앞쪽 부채꼴 화살 10발 × 3회 · 0.5초 간격 · 쿨 = 원본 5 s · 대상 = 적 · 사거리 10)
9 1029 바람쐐기 1 703405 속사 Skill_RapidShot skill2_start skill2_attack 5 5 0 10 3.0 Slow WST:1003 Effect_Slow 5 M:skill_id;skill_name;skill_class;anim;next_anim;range_m;awaken2_extra;vfx;src_cool_ref;weapon_id;weapon_name;fr_ref
10 1029 바람쐐기 2 703406 화살 비 Skill_ArrowRain archer_skill3 7 18 0 10 7.0 Slow WST:1003 Effect_Slow 5 M:skill_id;skill_name;skill_class;anim;next_anim;range_m;awaken2_extra;vfx;src_cool_ref;weapon_id;weapon_name;fr_ref
11 1071 현자의 지팡이 1 703306 번개 소용 돌이 Skill_Hurricane casting skill_cast2 5 7 0 5 2.4 Burn WST:1006 Effect_Burn 5 M:skill_id;skill_name;skill_class;anim;next_anim;range_m;awaken2_extra;vfx;src_cool_ref;weapon_id;weapon_name;fr_ref

View File

@ -13,6 +13,9 @@
// 원본 투사체 1 발(관통 · 원본과 같은 한 발 피해) · 대상을 본다 · 시전자 넉백 없음
// ④ 끝 — endNormalized 까지 재생 → 애니메이터 되돌림 · 대기 · 빛 glowFadeSeconds 동안 꺼짐 · 투사체 Off. 이동 · 구르기로 스킬 상태가 끊기면 즉시 끝(스킵).
// ■ noRecoil = 쏠 때 시전자를 뒤로 미는 다른 활 스킬(원본 Set 훅 1줄 · 속박의 화살 Skill_BindingArrow 0.05 초 × 속도 10)
// ■ #975 multi = 활 기본 스킬(원본 Skill_MultiShot 703404 = 일반 공격 화살 추가 버프) — PD 「주력 스킬과 동일하게 모으기 이펙트 시전 후 전방으로 부채꼴 모양으로
// 퍼지는 화살 10발을 3회 연속으로 발사(멀티샷 형태 · 0.5초 간격)」 — 원본 Set 훅 1줄(TakeMulti)이 넘겨받아 ②모으기는 주력과 같고 ③에서 volleys 번 ·
// interval 초마다(놓는 순간 기준) 대상 쪽(없으면 정면) 부채꼴 fanDegrees 에 arrows 발(화살 = multi.projectile · 겉모습 WLProjectileVisual · 사거리 = 흰 원 × rangeMul)
// ■ 값 = Resources/WL/WLRapidShot.json (C45) · 끄기 = enabled 0 → 원본 동작
// 🔴 Debug.LogError 금지(원본 팝업).
// ─────────────────────────────────────────────────────────────────────────────
@ -58,13 +61,30 @@ namespace WL.Combat.Weapon
public int chargeBlocksMove = 0; // #922 PD 「주력 스킬 모으기 이펙트 재생중에는 이동하지 못하게(구르기로 취소는 가능)」 — 1 = 모으기 동안 이동 입력 무시(WLSkillCancel.HoldMove · 구르기 = 스킵)
public int holdThroughShots = 0; // #922 1 = 막기를 마지막 발까지(모으기만 막으면 이동 키를 누른 채일 때 모으기 직후 이동이 들어와 한 발도 안 쏘고 끊겼다 · Play 실측)
public float holdMaxSeconds = 3f; // 막기 상한(초) — 끝나면 어떻게든 푼다
public WLRapidShotMulti multi = new WLRapidShotMulti(); // #975 활 기본 스킬(멀티샷)
public string note = "";
}
/// <summary>#975 활 기본 스킬 — 주력과 같은 모으기 뒤 volleys 번 · interval 초 간격(놓는 순간)으로 앞쪽 부채꼴 fanDegrees 에 화살 arrows 발.</summary>
[System.Serializable]
public class WLRapidShotMulti
{
public int enabled = 0;
public string projectile = "Projectile_ArcherSkill2Arrow"; // 화살(주력 속사와 같은 화살 · 겉모습 = WLProjectileVisual 표)
public int volleys = 3;
public float interval = 0.5f;
public int arrows = 10;
public float fanDegrees = 60f; // 부채꼴 전체 각(°) — 화살 사이 = fanDegrees / (arrows − 1)
public float rangeMul = 1f; // 나는 거리 = 기본 공격 사정거리(흰 원) × 이 값 · 0 = 투사체 원래 수명
public int pierce = 0; // 1 = 관통
public int mark = 0; // 1 = 과녁 표시(주력처럼)
public string note = "";
}
public static class WLRapidShot
{
public const string ResourcesPath = "WL/WLRapidShot";
public static int Taken, Shots, Aborted, RecoilSkipped, Errors, Lasers, LaserHits; public static string LastLog = "";
public static int Taken, Shots, Aborted, RecoilSkipped, Errors, Lasers, LaserHits, TakenMulti, MultiArrows; public static string LastLog = "";
static WLRapidShotJson s_cfg;
internal static WLRapidShotJson Cfg
@ -102,6 +122,30 @@ namespace WL.Combat.Weapon
catch (System.Exception ex) { Errors++; LastLog = "넘겨받기 실패 — " + ex.Message; return false; }
}
/// <summary>#975 원본 Skill_MultiShot.Set 훅 — true 면 WL 이 맡는다(원본 버프 건너뜀). 화살마다 스킬 투사체 데이터 복사본(시작 = 시전자 가운데).</summary>
public static bool TakeMulti(ProjectileBase pb, ProjectileData data)
{
try
{
var c = Cfg; var m = c.multi;
if (c.enabled == 0 || m == null || m.enabled == 0 || pb == null || data == null) return false;
var pc = data.shooter as PCActor;
if (pc == null || pc.m_animation == null) return false;
if (c.classes != null && c.classes.Length > 0 && System.Array.IndexOf(c.classes, ClassOf(pc)) < 0) return false;
int n = Mathf.Max(1, m.volleys) * Mathf.Max(1, m.arrows);
var list = new List<ProjectileData>(n);
for (int i = 0; i < n; i++) { var d = new ProjectileData(); data.Copy(d); d.eStartPos = eProjectileStartPos.ShooterCenter; list.Add(d); }
var target = data.target;
if (DSUtil.CheckNull(target) || target.IsDead()) target = pc.Get_Target();
var run = pb.GetComponent<WLRapidShotRunner>();
if (run == null) run = pb.gameObject.AddComponent<WLRapidShotRunner>();
run.BeginMulti(pb, pc, target, list, c);
TakenMulti++;
return true;
}
catch (System.Exception ex) { Errors++; LastLog = "멀티샷 넘겨받기 실패 — " + ex.Message; return false; }
}
/// <summary>원본 활 스킬 Set 훅 — true 면 시전자 넉백(쏠 때 뒤로 밀림)을 하지 않는다.</summary>
public static bool NoRecoil(Actor shooter, string skill)
{
@ -121,22 +165,32 @@ namespace WL.Combat.Weapon
Transform _socket; Vector3 _centerLocal; GameObject _charge;
static readonly Dictionary<string, GameObject> s_fx = new Dictionary<string, GameObject>();
bool _multi; // #975 활 기본 스킬(부채꼴 다발)
public void Begin(ProjectileBase pb, PCActor pc, Actor target, List<ProjectileData> shots, string proj, WLRapidShotJson c)
{
_pb = pb; _pc = pc; _target = target; _shots = shots; _proj = proj; _c = c; _an = pc.m_animation;
_pb = pb; _pc = pc; _target = target; _shots = shots; _proj = proj; _c = c; _an = pc.m_animation; _multi = false;
if (_co != null) StopCoroutine(_co);
_co = StartCoroutine(Run());
}
/// <summary>#975 활 기본 스킬 — shots = 화살마다 데이터(volleys × arrows).</summary>
public void BeginMulti(ProjectileBase pb, PCActor pc, Actor target, List<ProjectileData> shots, WLRapidShotJson c)
{
_pb = pb; _pc = pc; _target = target; _shots = shots; _proj = c.multi.projectile; _c = c; _an = pc.m_animation; _multi = true;
if (_co != null) StopCoroutine(_co);
_co = StartCoroutine(Run());
}
IEnumerator Run()
{
var c = _c; var an = _an;
var c = _c; var an = _an; var mc = c.multi;
float releaseN = c.releaseNormalized > 0f ? c.releaseNormalized : ReleaseNormalized(an, c.shotClip);
if (releaseN <= 0f) { WLRapidShot.LastLog = "놓는 이벤트 없음 " + c.shotClip; releaseN = 0.92f; }
int n = Mathf.Clamp(c.shots, 1, _shots.Count);
int n = _multi ? Mathf.Max(1, mc.volleys) : Mathf.Clamp(c.shots, 1, _shots.Count);
// ① 과녁 — 몹 크기에 맞춘 배율 · 카메라 쪽 앞(몸에 가려지지 않게)
ShowMark(c.chargeSeconds + n * 0.2f + c.markExtraLife);
// ① 과녁 — 몹 크기에 맞춘 배율 · 카메라 쪽 앞(몸에 가려지지 않게) · #975 기본 스킬(부채꼴)은 mark 1 일 때만
if (!_multi || mc.mark != 0) ShowMark(c.chargeSeconds + n * (_multi ? mc.interval : 0.2f) + c.markExtraLife);
// ② 모으기 — 활 당긴 자세 · 활 흰 빛 · 모으기 이펙트
an.fireEvents = false; _animOwned = true;
@ -170,22 +224,42 @@ namespace WL.Combat.Weapon
if (_charge != null) { Destroy(_charge); _charge = null; }
if (_holding && c.holdThroughShots == 0) { _holding = false; WLSkillCancel.EndHoldMove(_pc, true); } // #922 모으기 끝 — 그동안 미룬 이동 입력 적용(마지막 발까지 막을 때는 연사 뒤에)
// ③ 빠른 연사 n 발
// ③ 빠른 연사 n 발 · #975 기본 스킬 = n 번 부채꼴 다발(놓는 순간 사이 mc.interval 초)
float lastFire = -99f;
float shotSp = c.shotSpeed; // 발 재생 속도(애니메이터 속도를 직접 씀 = 기본 공격 공속 배율과 무관 · #975 실측 활 컨트롤러 재생 배수 파라미터 없음)
float drawDur = Mathf.Max(0f, (releaseN - c.fromNormalized) * ClipLen(an, c.shotClip) / Mathf.Max(0.1f, c.shotSpeed)); // 다시 당겨 놓기까지(초 · 어림 — 실제 놓는 순간은 아래에서 interval 에 맞춤)
for (int i = 0; i < n; i++)
{
if (_multi && i > 0) // #975 앞 다발을 놓은 뒤 자세를 이어 재생하다가 interval − 당기는 시간(− 몇 프레임 여유 · 첫 Play 실측 0.54 s = 2 프레임 늦음)에 다시 당긴다
while (Time.time < lastFire + mc.interval - drawDur - 3f * Time.smoothDeltaTime)
{
if (Broken()) { End(false); yield break; }
an.speed = an.GetCurrentAnimatorStateInfo(0).normalizedTime < c.endNormalized ? shotSp : 0f; // 다음 상태로 넘어가지 않게(공격 2타 전이 0.98)
yield return null;
}
Face();
float startN = i == 0 ? c.drawNormalized : c.fromNormalized, s0 = Time.time;
an.Play(c.shotState, 0, startN); an.speed = Mathf.Max(0.1f, c.shotSpeed);
an.Play(c.shotState, 0, startN); an.speed = Mathf.Max(0.1f, shotSp);
yield return null;
while (an.GetCurrentAnimatorStateInfo(0).normalizedTime < releaseN && Time.time - s0 < 1f)
{
if (Broken()) { End(false); yield break; }
if (an.speed != c.shotSpeed) an.speed = c.shotSpeed;
if (an.speed != shotSp) an.speed = shotSp;
if (!an.GetCurrentAnimatorStateInfo(0).IsName(c.shotState)) an.Play(c.shotState, 0, startN);
yield return null;
}
var data = _shots[i];
ProjectileInfo.Ins.Shoot_Projectile(_proj, data, p => { p.m_Pierce = true; WLProjectileVisual.ApplyTo(p, _proj); if (_c.laser != 0) Laser(p); }); // 원본과 같은 한 발 · 시전자 넉백 없음 · #917 겉모습 · 명중 이펙트(WLProjectileVisual 표) · #921 레이저 판정
if (_multi)
{
while (i > 0 && Time.time < lastFire + mc.interval) { if (Broken()) { End(false); yield break; } an.speed = 0f; yield return null; } // 놓는 순간을 interval 에 맞춤
an.speed = shotSp;
Fan(i, Mathf.Max(1, mc.arrows));
}
else
{
var data = _shots[i];
ProjectileInfo.Ins.Shoot_Projectile(_proj, data, p => { p.m_Pierce = true; WLProjectileVisual.ApplyTo(p, _proj); if (_c.laser != 0) Laser(p); }); // 원본과 같은 한 발 · 시전자 넉백 없음 · #917 겉모습 · 명중 이펙트(WLProjectileVisual 표) · #921 레이저 판정
}
lastFire = Time.time;
WLRapidShot.Shots++;
}
@ -251,6 +325,39 @@ namespace WL.Combat.Weapon
WLRapidShot.LastLog = "레이저 " + range.ToString("F2") + " m · 맞음 " + hits;
}
/// <summary>#975 부채꼴 다발 1번 — 대상 쪽(없으면 정면) 수평 방향을 가운데로 fanDegrees 에 count 발을 고르게 · 화살은 그 방향으로 곧게 · 사거리 = 흰 원 × rangeMul.</summary>
void Fan(int volley, int count)
{
var mc = _c.multi; var pc = _pc; if (pc == null || ProjectileInfo.Ins == null) return;
Vector3 dir = pc.transform.forward; dir.y = 0f;
if (!DSUtil.CheckNull(_target) && !_target.IsDead()) { var to = _target.Get_position() - pc.Get_position(); to.y = 0f; if (to.sqrMagnitude > 1e-4f) dir = to; }
if (dir.sqrMagnitude < 1e-6f) dir = Vector3.forward;
dir.Normalize();
float range = mc.rangeMul > 0f ? WL.Combat.RangeRing.WLRangeRing.AttackReach(pc) * mc.rangeMul : 0f;
float step = count > 1 ? mc.fanDegrees / (count - 1) : 0f, a0 = count > 1 ? -mc.fanDegrees * 0.5f : 0f;
for (int k = 0; k < count; k++)
{
int idx = volley * count + k; if (idx >= _shots.Count) break;
var look = Quaternion.AngleAxis(a0 + step * k, Vector3.up) * dir;
ProjectileInfo.Ins.Shoot_Projectile(_proj, _shots[idx], p =>
{
p.m_Pierce = mc.pierce != 0; WLProjectileVisual.ApplyTo(p, _proj);
p.transform.rotation = Quaternion.LookRotation(look);
var pd = p.Get_ProjectTileData();
if (range > 0f && pd != null && pd.Speed > 0f) pd.LifeTime = Mathf.Max(0.05f, range / pd.Speed);
});
WLRapidShot.MultiArrows++;
}
WLRapidShot.LastLog = "멀티샷 " + (volley + 1) + "번째 · " + count + "발 · 부채 " + mc.fanDegrees.ToString("0.#") + "° · 사거리 " + range.ToString("F1") + " m";
}
static float ClipLen(Animator an, string clipName)
{
if (an != null && an.runtimeAnimatorController != null)
foreach (var clip in an.runtimeAnimatorController.animationClips) if (clip != null && clip.name == clipName && clip.length > 0f) return clip.length;
return 1f;
}
bool Broken() { return _pc == null || _pc.IsDead() || _pc.Get_CurAnim() != eAnim.Skill; }
bool _holding;

View File

@ -7,6 +7,10 @@
// ■ 처리 = 규칙 상태(지금 상태 또는 넘어가는 중인 다음 상태)일 때 LateUpdate(애니메이션 평가 뒤)에서 엉덩이 뼈를 PC 루트 둘레 위 축으로 yaw° —
// 들어갈 때 blendIn · 나갈 때 blendOut 초에 걸쳐 · 애니메이터가 매 프레임 뼈를 다시 쓰므로 누적 없음 · 루트 · 판정 · 투사체 방향 · 카메라는 그대로(보이는 몸만)
// (WLImpactFx 비수 3타 회전 #956 과 같은 방식)
// ■ #975 PD 「회전 방향은 공격 대상을 보고 있는데 상체만 움직이고 다리 위치가 제대로 바뀌지 않아 몸이 너무 꼬인 느낌」 — 실측(편집 모드 975_legs):
// 클립은 한 바퀴 돈 뒤 골반 · 상체만 90~108° 더 돌고 발은 처음 자세 그대로(골반 − 발 = 대기 자세 −17° → 쏘는 순간 +73.5° · 0.68 에 +91°)
// → legFollow > 0 이면 정규화 legFrom 부터(legRamp 동안 서서히) 매 프레임 「골반 정면 − 두 발 정면 평균 − legNeutral」 만큼 두 다리(허벅지)를 제 관절 둘레 위 축으로 돌려
// 발이 골반을 따라가게 한다(상체 · 판정 · 투사체는 그대로 · 돌기 중(legFrom 전)은 발이 꼬여 엇갈려 계산하지 않음)
// ■ 값 = Resources/WL/WLSkillYaw.json (C45) · 끄기 = enabled 0
// 🔴 Debug.LogError 금지(원본 ErrorLogHook 팝업).
// ─────────────────────────────────────────────────────────────────────────────
@ -20,6 +24,8 @@ namespace WL.Combat.Weapon
public string state = ""; // 애니메이터 0층 상태 이름(예: energyslash)
public float yaw; // 보이는 몸을 돌릴 각(°) · + = 위에서 볼 때 시계 방향
public float blendIn = 0.08f, blendOut = 0.15f;
// #975 다리 따라 돌리기 — legFollow(0 = 끔 · 1 = 대기 자세만큼만 남기고 다 풂) · legFrom(정규화 시각) · legRamp(정규화 길이) · legNeutral(대기 자세 골반 − 발 각 °) · legMax(한 프레임 상한 °)
public float legFollow, legFrom, legRamp = 0.06f, legNeutral, legMax = 130f;
public string note = "";
}
@ -34,8 +40,8 @@ namespace WL.Combat.Weapon
public static class WLSkillYaw
{
public const string ResourcesPath = "WL/WLSkillYaw";
public static int Frames;
public static float LastYaw;
public static int Frames, LegFrames;
public static float LastYaw, LastLeg, LastLegExcess; // #975 마지막 다리 회전(°) · 그때 골반 − 발 − 대기 자세(°)
public static string LastLog = "";
static WLSkillYawJson s_cfg;
@ -77,7 +83,7 @@ namespace WL.Combat.Weapon
[DefaultExecutionOrder(-100)] // 손 · 무기를 따라가는 궤적 · 이펙트(LateUpdate)보다 먼저 몸을 돌린다
internal sealed class WLSkillYawRunner : MonoBehaviour
{
float _w;
float _w, _legW;
WLSkillYawRule _rule;
void LateUpdate()
@ -88,21 +94,48 @@ namespace WL.Combat.Weapon
var pc = MyValue.MyPC as PCActor;
if (pc == null || pc.m_animation == null || !pc.m_animation.isHuman) { _w = 0f; _rule = null; return; }
var an = pc.m_animation;
var hit = WLSkillYaw.Match(an.GetCurrentAnimatorStateInfo(0));
if (hit == null && an.IsInTransition(0)) hit = WLSkillYaw.Match(an.GetNextAnimatorStateInfo(0));
if (hit != null) _rule = hit;
var cur = an.GetCurrentAnimatorStateInfo(0);
var hit = WLSkillYaw.Match(cur); float n = cur.normalizedTime;
if (hit == null && an.IsInTransition(0)) { var nx = an.GetNextAnimatorStateInfo(0); hit = WLSkillYaw.Match(nx); n = nx.normalizedTime; }
if (hit != null) { _rule = hit; _legW = hit.legFollow > 0f ? Mathf.Clamp01((n - hit.legFrom) / Mathf.Max(0.001f, hit.legRamp)) : 0f; } // 나가는 중(hit 없음)엔 마지막 값 유지
if (_rule == null) return;
float target = hit != null ? 1f : 0f;
float dur = target > _w ? _rule.blendIn : _rule.blendOut;
_w = Mathf.MoveTowards(_w, target, Time.deltaTime / Mathf.Max(0.01f, dur));
if (_w <= 0f) { _rule = null; WLSkillYaw.LastYaw = 0f; return; }
if (_w <= 0f) { _rule = null; WLSkillYaw.LastYaw = 0f; WLSkillYaw.LastLeg = 0f; return; }
var hips = an.GetBoneTransform(HumanBodyBones.Hips);
if (hips == null) return;
float d = _rule.yaw * _w;
hips.RotateAround(pc.transform.position, pc.transform.up, d);
WLSkillYaw.Frames++; WLSkillYaw.LastYaw = d;
if (_rule.legFollow > 0f && _legW > 0f) Legs(an, pc.transform.up, _rule, _legW * _w);
}
catch (System.Exception ex) { WLSkillYaw.LastLog = "회전 실패 — " + ex.Message; _w = 0f; _rule = null; }
}
/// <summary>#975 두 허벅지를 제 관절 둘레 위 축으로 돌려 두 발 정면 평균이 「골반 정면 − legNeutral」 쪽을 보게(k = 진행 가중).</summary>
static void Legs(Animator an, Vector3 up, WLSkillYawRule r, float k)
{
var lul = an.GetBoneTransform(HumanBodyBones.LeftUpperLeg); var rul = an.GetBoneTransform(HumanBodyBones.RightUpperLeg);
var lf = an.GetBoneTransform(HumanBodyBones.LeftFoot); var rf = an.GetBoneTransform(HumanBodyBones.RightFoot);
if (lul == null || rul == null || lf == null || rf == null) return;
Vector3 pelvis = Vector3.ProjectOnPlane(Vector3.Cross(rul.position - lul.position, up), up);
Vector3 fl = Vector3.ProjectOnPlane(FootDir(an, HumanBodyBones.LeftToes, HumanBodyBones.LeftLowerLeg, lul, lf), up);
Vector3 fr = Vector3.ProjectOnPlane(FootDir(an, HumanBodyBones.RightToes, HumanBodyBones.RightLowerLeg, rul, rf), up);
if (pelvis.sqrMagnitude < 1e-8f || fl.sqrMagnitude < 1e-8f || fr.sqrMagnitude < 1e-8f) return;
Vector3 feet = fl.normalized + fr.normalized;
if (feet.sqrMagnitude < 1e-4f) return; // 두 발이 반대쪽(엇갈림) — 평균 없음
float excess = Mathf.Clamp(Mathf.DeltaAngle(0f, Vector3.SignedAngle(feet, pelvis, up) - r.legNeutral), -r.legMax, r.legMax);
float a = excess * r.legFollow * k;
lul.RotateAround(lul.position, up, a); rul.RotateAround(rul.position, up, a);
WLSkillYaw.LegFrames++; WLSkillYaw.LastLeg = a; WLSkillYaw.LastLegExcess = excess;
}
/// <summary>발 정면 = 발 → 발가락 · 발가락 뼈가 없으면 무릎이 향한 쪽(무릎 − 허벅지 · 발 가운데).</summary>
static Vector3 FootDir(Animator an, HumanBodyBones toes, HumanBodyBones knee, Transform hip, Transform foot)
{
var t = an.GetBoneTransform(toes); if (t != null) return t.position - foot.position;
var kn = an.GetBoneTransform(knee); return kn != null ? kn.position - (hip.position + foot.position) * 0.5f : Vector3.zero;
}
}
}

View File

@ -47,6 +47,7 @@ namespace WL.Combat.Weapon
public class WLStaffEarthSkill
{
public string skill = ""; // 원본 스킬 클래스 이름(Skill_Hurricane · Skill_MeteoStorm)
public int classId; // #975 0 = 모든 직업 · > 0 = 시전자 직업이 이 값일 때만(같은 스킬 클래스를 직업별로 다르게 — 해머 기본 = 운석 소환 복사본 → 대지 줄기) · 직업이 맞는 행이 0 행보다 먼저
public string center = "target"; // target = 대상 발밑 · caster = 시전자 발밑
public WLStaffEarthFx fx = new WLStaffEarthFx();
public float hitDelay = 0.4f; // fx 뒤 판정까지(초)
@ -218,10 +219,11 @@ namespace WL.Combat.Weapon
try
{
var c = Cfg; if (c.enabled == 0 || pb == null) return false;
WLStaffEarthSkill r = null;
if (c.skills != null) foreach (var x in c.skills) if (x != null && x.skill == pb.GetType().Name) { r = x; break; }
if (r == null) return false;
var pd = pb.Get_ProjectTileData(); if (pd == null || DSUtil.CheckNull(pd.shooter)) return false;
WLStaffEarthSkill r = null; int cls = pd.shooter.Get_ID(); // #975 직업이 맞는 행 먼저 · 없으면 classId 0 행
if (c.skills != null) foreach (var x in c.skills) if (x != null && x.skill == pb.GetType().Name && x.classId == cls) { r = x; break; }
if (r == null && c.skills != null) foreach (var x in c.skills) if (x != null && x.skill == pb.GetType().Name && x.classId == 0) { r = x; break; }
if (r == null) return false;
if (s_runner == null) { var go = new GameObject("[WL935] StaffEarth"); go.hideFlags = HideFlags.HideInHierarchy; Object.DontDestroyOnLoad(go); s_runner = go.AddComponent<WLStaffEarthRunner>(); }
s_runner.Begin(pb, pd, r);
TakeOvers++;