feat: 패시브 트리 레이아웃 자동화 및 UI 정리
- 패시브 트리 노드 배치를 삼각형 기반 자동 배치 구조로 전환하고 축 및 브릿지 반경을 재정리\n- 패시브 UI 프리팹과 런타임 렌더링을 수정해 노드 겹침, 링크 관통, 상태별 간격 변화, 하단 여백 문제를 정리\n- 프로토타입 패시브 노드, 트리, 프리셋 자산을 재생성해 최신 레이아웃과 확장 노드 구성을 반영
This commit is contained in:
@@ -6053,6 +6053,7 @@ MonoBehaviour:
|
||||
manaBar: {fileID: 1237841695}
|
||||
abnormalitySummaryText: {fileID: 0}
|
||||
autoCreateAbnormalitySummary: 1
|
||||
autoCreatePassiveTreeUi: 1
|
||||
autoFindPlayer: 1
|
||||
--- !u!4 &1171449866 stripped
|
||||
Transform:
|
||||
@@ -10868,15 +10869,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4724035329832922458, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.2
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4724035329832922458, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4724035329832922458, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.2
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5468776293638745500, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: m_sharedMaterial
|
||||
@@ -10884,15 +10885,15 @@ PrefabInstance:
|
||||
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
|
||||
- target: {fileID: 5704451173235104889, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.2
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5704451173235104889, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5704451173235104889, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.2
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6042451605894433948, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
@@ -10914,6 +10915,14 @@ PrefabInstance:
|
||||
propertyPath: m_sharedMaterial
|
||||
value:
|
||||
objectReference: {fileID: 2399985188671511309, guid: ef44cbe516f6f9f418375e5b2b73ad8d, type: 2}
|
||||
- target: {fileID: 7013584622031137981, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: graphCenterYOffset
|
||||
value: -76
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7013584622031137981, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: openOnStartInPlayMode
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8128918834687467434, guid: 6a6d1b384d7c82f49802f1650bb34b40, type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0
|
||||
|
||||
@@ -14,19 +14,28 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveTreeData
|
||||
treeId: player_prototype_tree
|
||||
treeName: "\uD50C\uB808\uC774\uC5B4 \uD328\uC2DC\uBE0C \uD504\uB85C\uD1A0\uD0C0\uC785"
|
||||
description: "\uACF5\uACA9 / \uBC29\uC5B4 / \uC9C0\uC6D0 3\uCD95\uACFC \uBE0C\uB9BF\uC9C0
|
||||
\uB178\uB4DC\uB85C \uAD6C\uC131\uB41C \uB4DC\uB85C\uADF8\uC804 \uBC38\uB7F0\uC2F1
|
||||
\uAC80\uC99D\uC6A9 \uD2B8\uB9AC\uC785\uB2C8\uB2E4."
|
||||
initialPoints: 8
|
||||
description: "\uACF5\uACA9 / \uBC29\uC5B4 / \uC9C0\uC6D0 3\uCD95\uC5D0 \uB2E4\uC218\uC758
|
||||
\uC2A4\uD0EF \uB178\uB4DC\uC640 \uC5F0\uACB0 \uB178\uB4DC\uB97C \uBC30\uCE58\uD55C
|
||||
\uB4DC\uB85C\uADF8\uC804 \uBC38\uB7F0\uC2F1 \uAC80\uC99D\uC6A9 \uD2B8\uB9AC\uC785\uB2C8\uB2E4."
|
||||
initialPoints: 12
|
||||
nodes:
|
||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||
- {fileID: 11400000, guid: 7d28864e0cf3bf5468aafce96b69dd92, type: 2}
|
||||
- {fileID: 11400000, guid: 3c450c4008727964b828b2677a7c43ee, type: 2}
|
||||
- {fileID: 11400000, guid: f46931d762ecda34b95a94fcdfdaec24, type: 2}
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
- {fileID: 11400000, guid: 95f84aa662f1c3e4d92c1371d6bfcf17, type: 2}
|
||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||
- {fileID: 11400000, guid: 6721e28dab9025343b4c7ed2b1f847b3, type: 2}
|
||||
- {fileID: 11400000, guid: d27dc2a5f86f772408a3ef0e115af79b, type: 2}
|
||||
- {fileID: 11400000, guid: a661c34923e6e534daaa263641e73d6e, type: 2}
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
- {fileID: 11400000, guid: 4bde7b3376f2b7d429e5a9dc90d1cf3c, type: 2}
|
||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||
- {fileID: 11400000, guid: 291c1539d7ff6f7409fea7e6b1537916, type: 2}
|
||||
- {fileID: 11400000, guid: c82a0153c8de0644e808edfd55ab6b10, type: 2}
|
||||
- {fileID: 11400000, guid: 5eb74fef73fbd88418bb4dd6150c46b9, type: 2}
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
- {fileID: 11400000, guid: daf27733a031c2f46906ebb801428f34, type: 2}
|
||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||
|
||||
@@ -15,28 +15,26 @@ MonoBehaviour:
|
||||
nodeId: attack_defense_bridge
|
||||
displayName: "\uC555\uBC15 \uBC29\uBCBD"
|
||||
description: "\uACF5\uACA9\uACFC \uBC29\uC5B4\uB97C \uC5F0\uACB0\uD558\uB294 \uBE0C\uB9BF\uC9C0\uB85C,
|
||||
\uC555\uBC15 \uC720\uC9C0\uB825\uACFC \uC804\uD22C \uC548\uC815\uC131\uC744 \uD568\uAED8
|
||||
\uCC59\uAE41\uB2C8\uB2E4."
|
||||
\uD798\uACFC \uD65C\uB825\uC744 \uD568\uAED8 \uBCF4\uAC15\uD569\uB2C8\uB2E4."
|
||||
branch: 4
|
||||
nodeKind: 2
|
||||
axisMask: 3
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: -0.24, y: 0.14}
|
||||
layoutPosition: {x: -0.6062178, y: 0.34999996}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
effects:
|
||||
- effectType: 1
|
||||
statType: 3
|
||||
- effectType: 0
|
||||
statType: 0
|
||||
modType: 0
|
||||
value: 1.06
|
||||
skillRoleMask: 1
|
||||
- effectType: 6
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 0.95
|
||||
value: 3
|
||||
skillRoleMask: 7
|
||||
- effectType: 0
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 3
|
||||
skillRoleMask: 7
|
||||
|
||||
@@ -15,27 +15,26 @@ MonoBehaviour:
|
||||
nodeId: defense_support_bridge
|
||||
displayName: "\uC218\uD638 \uC21C\uD658"
|
||||
description: "\uBC29\uC5B4\uC640 \uC9C0\uC6D0\uC744 \uC5F0\uACB0\uD558\uB294 \uBE0C\uB9BF\uC9C0\uB85C,
|
||||
\uBCF4\uD638\uB9C9\uACFC \uD68C\uBCF5 \uAE30\uC5EC\uB97C \uD568\uAED8 \uB04C\uC5B4\uC62C\uB9BD\uB2C8\uB2E4."
|
||||
\uD65C\uB825\uACFC \uC9C0\uD61C\uB97C \uD568\uAED8 \uB04C\uC5B4\uC62C\uB9BD\uB2C8\uB2E4."
|
||||
branch: 4
|
||||
nodeKind: 2
|
||||
axisMask: 6
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: 0, y: -0.28}
|
||||
layoutPosition: {x: 0.00000006119594, y: -0.7}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
effects:
|
||||
- effectType: 4
|
||||
- effectType: 0
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 1.1
|
||||
value: 3
|
||||
skillRoleMask: 7
|
||||
- effectType: 2
|
||||
statType: 3
|
||||
- effectType: 0
|
||||
statType: 4
|
||||
modType: 0
|
||||
value: 1.08
|
||||
skillRoleMask: 4
|
||||
value: 3
|
||||
skillRoleMask: 7
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||
m_Name: Data_PassiveNode_Player_Dps_Arcana
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||
nodeId: attack_arcana
|
||||
displayName: "\uC9C0\uB2A5 \uC608\uC5F4"
|
||||
description: "\uACF5\uC138 \uCD95\uC5D0\uC11C\uB3C4 \uC8FC\uBB38 \uACC4\uC5F4 \uD654\uB825\uC744
|
||||
\uD3EC\uAE30\uD558\uC9C0 \uC54A\uB3C4\uB85D \uC9C0\uB2A5 \uAE30\uBC18\uC744 \uBCF4\uAC15\uD569\uB2C8\uB2E4."
|
||||
branch: 1
|
||||
nodeKind: 1
|
||||
axisMask: 1
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: 0.32, y: 0.88}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 2
|
||||
modType: 0
|
||||
value: 4
|
||||
skillRoleMask: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f46931d762ecda34b95a94fcdfdaec24
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -19,9 +19,9 @@ MonoBehaviour:
|
||||
branch: 1
|
||||
nodeKind: 3
|
||||
axisMask: 1
|
||||
tier: 3
|
||||
tier: 4
|
||||
cost: 2
|
||||
layoutPosition: {x: 0, y: 0.84}
|
||||
layoutPosition: {x: 0, y: 1}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
connectedNodes:
|
||||
@@ -30,10 +30,10 @@ MonoBehaviour:
|
||||
- effectType: 1
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 1.1
|
||||
value: 1.08
|
||||
skillRoleMask: 1
|
||||
- effectType: 7
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 0.9
|
||||
value: 0.92
|
||||
skillRoleMask: 1
|
||||
|
||||
@@ -19,17 +19,22 @@ MonoBehaviour:
|
||||
branch: 1
|
||||
nodeKind: 1
|
||||
axisMask: 1
|
||||
tier: 2
|
||||
tier: 3
|
||||
cost: 1
|
||||
layoutPosition: {x: 0, y: 0.6}
|
||||
layoutPosition: {x: 0, y: 0.56}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||
- {fileID: 11400000, guid: 7d28864e0cf3bf5468aafce96b69dd92, type: 2}
|
||||
- {fileID: 11400000, guid: 3c450c4008727964b828b2677a7c43ee, type: 2}
|
||||
- {fileID: 11400000, guid: f46931d762ecda34b95a94fcdfdaec24, type: 2}
|
||||
- {fileID: 11400000, guid: 95f84aa662f1c3e4d92c1371d6bfcf17, type: 2}
|
||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
||||
effects:
|
||||
- effectType: 1
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 1.12
|
||||
value: 1.1
|
||||
skillRoleMask: 1
|
||||
|
||||
@@ -21,27 +21,25 @@ MonoBehaviour:
|
||||
axisMask: 1
|
||||
tier: 1
|
||||
cost: 1
|
||||
layoutPosition: {x: 0, y: 0.34}
|
||||
layoutPosition: {x: 0, y: 0.24}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 0
|
||||
modType: 1
|
||||
value: 0.1
|
||||
value: 0.05
|
||||
skillRoleMask: 7
|
||||
- effectType: 0
|
||||
statType: 1
|
||||
modType: 1
|
||||
value: 0.1
|
||||
value: 0.05
|
||||
skillRoleMask: 7
|
||||
- effectType: 0
|
||||
statType: 2
|
||||
modType: 1
|
||||
value: 0.1
|
||||
value: 0.05
|
||||
skillRoleMask: 7
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||
m_Name: Data_PassiveNode_Player_Dps_Precision
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||
nodeId: attack_precision
|
||||
displayName: "\uBBFC\uCCA9 \uC5F0\uB9C8"
|
||||
description: "\uC815\uD655\uD55C \uC6C0\uC9C1\uC784\uACFC \uD0C0\uACA9 \uBE48\uB3C4\uB97C
|
||||
\uC704\uD574 \uBBFC\uCCA9\uC744 \uB04C\uC5B4\uC62C\uB9BD\uB2C8\uB2E4."
|
||||
branch: 1
|
||||
nodeKind: 1
|
||||
axisMask: 1
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: 0, y: 0.78}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 1
|
||||
modType: 0
|
||||
value: 4
|
||||
skillRoleMask: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3c450c4008727964b828b2677a7c43ee
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,34 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||
m_Name: Data_PassiveNode_Player_Dps_Strength
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||
nodeId: attack_strength
|
||||
displayName: "\uADFC\uB825 \uB2E8\uB828"
|
||||
description: "\uC9C1\uC811\uC801\uC778 \uBB34\uAE30 \uD654\uB825\uC744 \uB192\uC774\uAE30
|
||||
\uC704\uD55C \uD798\uC758 \uAE30\uBC18\uC744 \uB2E4\uC9D1\uB2C8\uB2E4."
|
||||
branch: 1
|
||||
nodeKind: 1
|
||||
axisMask: 1
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: -0.32, y: 0.88}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 0
|
||||
modType: 0
|
||||
value: 4
|
||||
skillRoleMask: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7d28864e0cf3bf5468aafce96b69dd92
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -13,8 +13,8 @@ MonoBehaviour:
|
||||
m_Name: Data_PassiveNode_Player_Hub
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||
nodeId: hub
|
||||
displayName: "\uC911\uC2EC \uD5C8\uBE0C"
|
||||
description: "\uD328\uC2DC\uBE0C \uD2B8\uB9AC\uC758 \uC2DC\uC791\uC810\uC785\uB2C8\uB2E4."
|
||||
displayName:
|
||||
description:
|
||||
branch: 0
|
||||
nodeKind: 0
|
||||
axisMask: 0
|
||||
|
||||
@@ -15,27 +15,26 @@ MonoBehaviour:
|
||||
nodeId: support_attack_bridge
|
||||
displayName: "\uC804\uC220 \uC99D\uD3ED"
|
||||
description: "\uC9C0\uC6D0\uACFC \uACF5\uACA9\uC744 \uC5F0\uACB0\uD558\uB294 \uBE0C\uB9BF\uC9C0\uB85C,
|
||||
\uD654\uB825\uACFC \uC720\uC9C0 \uD6A8\uC728\uC744 \uD568\uAED8 \uBCF4\uC870\uD569\uB2C8\uB2E4."
|
||||
\uC9C0\uD61C\uC640 \uC9C0\uB2A5 \uAE30\uBC18\uC744 \uD568\uAED8 \uB192\uC785\uB2C8\uB2E4."
|
||||
branch: 4
|
||||
nodeKind: 2
|
||||
axisMask: 5
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: 0.24, y: 0.14}
|
||||
layoutPosition: {x: 0.6062178, y: 0.34999996}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
effects:
|
||||
- effectType: 1
|
||||
statType: 3
|
||||
- effectType: 0
|
||||
statType: 4
|
||||
modType: 0
|
||||
value: 1.06
|
||||
skillRoleMask: 1
|
||||
- effectType: 7
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 0.95
|
||||
value: 3
|
||||
skillRoleMask: 7
|
||||
- effectType: 0
|
||||
statType: 2
|
||||
modType: 0
|
||||
value: 3
|
||||
skillRoleMask: 7
|
||||
|
||||
@@ -19,21 +19,21 @@ MonoBehaviour:
|
||||
branch: 3
|
||||
nodeKind: 3
|
||||
axisMask: 4
|
||||
tier: 3
|
||||
tier: 4
|
||||
cost: 2
|
||||
layoutPosition: {x: 0.82, y: -0.58}
|
||||
layoutPosition: {x: 0.8660254, y: -0.50000006}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 5
|
||||
modType: 1
|
||||
value: 0.2
|
||||
skillRoleMask: 7
|
||||
- effectType: 7
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 0.85
|
||||
value: 0.88
|
||||
skillRoleMask: 4
|
||||
- effectType: 3
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 1.08
|
||||
skillRoleMask: 4
|
||||
|
||||
@@ -19,22 +19,27 @@ MonoBehaviour:
|
||||
branch: 3
|
||||
nodeKind: 1
|
||||
axisMask: 4
|
||||
tier: 2
|
||||
tier: 3
|
||||
cost: 1
|
||||
layoutPosition: {x: 0.58, y: -0.34}
|
||||
layoutPosition: {x: 0.4849742, y: -0.28000003}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||
- {fileID: 11400000, guid: 291c1539d7ff6f7409fea7e6b1537916, type: 2}
|
||||
- {fileID: 11400000, guid: c82a0153c8de0644e808edfd55ab6b10, type: 2}
|
||||
- {fileID: 11400000, guid: 5eb74fef73fbd88418bb4dd6150c46b9, type: 2}
|
||||
- {fileID: 11400000, guid: daf27733a031c2f46906ebb801428f34, type: 2}
|
||||
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
||||
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
||||
effects:
|
||||
- effectType: 2
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 1.15
|
||||
value: 1.12
|
||||
skillRoleMask: 4
|
||||
- effectType: 3
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 1.15
|
||||
value: 1.12
|
||||
skillRoleMask: 4
|
||||
|
||||
@@ -21,17 +21,15 @@ MonoBehaviour:
|
||||
axisMask: 4
|
||||
tier: 1
|
||||
cost: 1
|
||||
layoutPosition: {x: 0.34, y: -0.1}
|
||||
layoutPosition: {x: 0.20784609, y: -0.12000001}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
||||
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 4
|
||||
modType: 1
|
||||
value: 0.2
|
||||
value: 0.1
|
||||
skillRoleMask: 7
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||
m_Name: Data_PassiveNode_Player_Support_Focus
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||
nodeId: support_focus
|
||||
displayName: "\uC9D1\uC911 \uC21C\uD658"
|
||||
description: "\uC9C0\uC18D\uC801\uC778 \uBCF4\uC870\uB97C \uC704\uD574 \uC815\uC2E0\uC744
|
||||
\uBE44\uC728\uB85C \uD655\uC7A5\uD569\uB2C8\uB2E4."
|
||||
branch: 3
|
||||
nodeKind: 1
|
||||
axisMask: 4
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: 0.60210234, y: -0.71712816}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 5
|
||||
modType: 1
|
||||
value: 0.12
|
||||
skillRoleMask: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5eb74fef73fbd88418bb4dd6150c46b9
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,34 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||
m_Name: Data_PassiveNode_Player_Support_Insight
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||
nodeId: support_insight
|
||||
displayName: "\uC9C0\uD61C \uC751\uCD95"
|
||||
description: "\uD68C\uBCF5\uB7C9\uC758 \uAE30\uCD08\uAC00 \uB418\uB294 \uC9C0\uD61C\uB97C
|
||||
\uC9C1\uC811 \uBCF4\uAC15\uD569\uB2C8\uB2E4."
|
||||
branch: 3
|
||||
nodeKind: 1
|
||||
axisMask: 4
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: 0.9221024, y: -0.16287193}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 4
|
||||
modType: 0
|
||||
value: 4
|
||||
skillRoleMask: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 291c1539d7ff6f7409fea7e6b1537916
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,34 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||
m_Name: Data_PassiveNode_Player_Support_Well
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||
nodeId: support_well
|
||||
displayName: "\uC815\uC2E0 \uC0D8"
|
||||
description: "\uC9C0\uC6D0 \uCD95 \uC6B4\uC6A9\uC744 \uC704\uD574 \uB9C8\uB098
|
||||
\uAE30\uBC18\uC744 \uB2E8\uB2E8\uD788 \uD569\uB2C8\uB2E4."
|
||||
branch: 3
|
||||
nodeKind: 1
|
||||
axisMask: 4
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: 0.6754998, y: -0.39000005}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 5
|
||||
modType: 0
|
||||
value: 6
|
||||
skillRoleMask: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c82a0153c8de0644e808edfd55ab6b10
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -19,9 +19,9 @@ MonoBehaviour:
|
||||
branch: 2
|
||||
nodeKind: 3
|
||||
axisMask: 2
|
||||
tier: 3
|
||||
tier: 4
|
||||
cost: 2
|
||||
layoutPosition: {x: -0.82, y: -0.58}
|
||||
layoutPosition: {x: -0.8660254, y: -0.50000006}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
connectedNodes:
|
||||
@@ -30,5 +30,5 @@ MonoBehaviour:
|
||||
- effectType: 6
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 0.88
|
||||
value: 0.9
|
||||
skillRoleMask: 7
|
||||
|
||||
@@ -19,22 +19,27 @@ MonoBehaviour:
|
||||
branch: 2
|
||||
nodeKind: 1
|
||||
axisMask: 2
|
||||
tier: 2
|
||||
tier: 3
|
||||
cost: 1
|
||||
layoutPosition: {x: -0.58, y: -0.34}
|
||||
layoutPosition: {x: -0.4849742, y: -0.28000003}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||
- {fileID: 11400000, guid: 6721e28dab9025343b4c7ed2b1f847b3, type: 2}
|
||||
- {fileID: 11400000, guid: d27dc2a5f86f772408a3ef0e115af79b, type: 2}
|
||||
- {fileID: 11400000, guid: a661c34923e6e534daaa263641e73d6e, type: 2}
|
||||
- {fileID: 11400000, guid: 4bde7b3376f2b7d429e5a9dc90d1cf3c, type: 2}
|
||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
||||
effects:
|
||||
- effectType: 5
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 1.3
|
||||
value: 1.25
|
||||
skillRoleMask: 7
|
||||
- effectType: 4
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 1.15
|
||||
value: 1.1
|
||||
skillRoleMask: 7
|
||||
|
||||
@@ -21,17 +21,15 @@ MonoBehaviour:
|
||||
axisMask: 2
|
||||
tier: 1
|
||||
cost: 1
|
||||
layoutPosition: {x: -0.34, y: -0.1}
|
||||
layoutPosition: {x: -0.20784609, y: -0.12000001}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 3
|
||||
modType: 1
|
||||
value: 0.2
|
||||
value: 0.1
|
||||
skillRoleMask: 7
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||
m_Name: Data_PassiveNode_Player_Tank_Frame
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||
nodeId: defense_frame
|
||||
displayName: "\uD65C\uB825 \uCD95\uC801"
|
||||
description: "\uBC29\uC5B4 \uCD95\uC758 \uAE30\uBCF8 \uCCB4\uB825\uC744 \uB450\uD141\uAC8C
|
||||
\uD655\uBCF4\uD569\uB2C8\uB2E4."
|
||||
branch: 2
|
||||
nodeKind: 1
|
||||
axisMask: 2
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: -0.60210234, y: -0.71712816}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 3
|
||||
modType: 0
|
||||
value: 6
|
||||
skillRoleMask: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6721e28dab9025343b4c7ed2b1f847b3
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,34 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||
m_Name: Data_PassiveNode_Player_Tank_Guard
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||
nodeId: defense_guard
|
||||
displayName: "\uAD73\uC13C \uC721\uCCB4"
|
||||
description: "\uAE30\uBCF8 \uD65C\uB825\uC744 \uBE44\uC728\uB85C \uC99D\uD3ED\uD574
|
||||
\uC804\uD22C \uC9C0\uC18D\uB825\uC744 \uB192\uC785\uB2C8\uB2E4."
|
||||
branch: 2
|
||||
nodeKind: 1
|
||||
axisMask: 2
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: -0.9221024, y: -0.16287193}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 3
|
||||
modType: 1
|
||||
value: 0.12
|
||||
skillRoleMask: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d27dc2a5f86f772408a3ef0e115af79b
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,34 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c72b2635385ed49498483636164bac87, type: 3}
|
||||
m_Name: Data_PassiveNode_Player_Tank_Resolve
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassiveNodeData
|
||||
nodeId: defense_resolve
|
||||
displayName: "\uC804\uD22C \uD638\uD761"
|
||||
description: "\uC804\uC5F4\uC5D0\uC11C \uC2A4\uD0AC\uC744 \uAD74\uB9B4 \uC5EC\uC720\uB97C
|
||||
\uC704\uD574 \uC815\uC2E0\uC744 \uD568\uAED8 \uBCF4\uAC15\uD569\uB2C8\uB2E4."
|
||||
branch: 2
|
||||
nodeKind: 1
|
||||
axisMask: 2
|
||||
tier: 2
|
||||
cost: 1
|
||||
layoutPosition: {x: -0.6754998, y: -0.39000005}
|
||||
prerequisiteNodes:
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
connectedNodes:
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
effects:
|
||||
- effectType: 0
|
||||
statType: 5
|
||||
modType: 0
|
||||
value: 4
|
||||
skillRoleMask: 7
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a661c34923e6e534daaa263641e73d6e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -13,15 +13,19 @@ MonoBehaviour:
|
||||
m_Name: Data_PassivePreset_Player_Dps
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassivePresetData
|
||||
presetName: "\uACF5\uACA9\uD615 \uD328\uC2DC\uBE0C"
|
||||
description: "\uACF5\uACA9 \uCD95 \uC644\uC131\uACFC \uD568\uAED8 \uBC29\uC5B4/\uC9C0\uC6D0
|
||||
\uBE0C\uB9BF\uC9C0\uB97C \uAC00\uBCCD\uAC8C \uC5EC\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
||||
description: "\uACF5\uACA9 \uCD95\uC758 \uC2A4\uD0EF \uB178\uB4DC\uC640 \uD654\uB825
|
||||
\uB178\uB4DC\uB97C \uC6B0\uC120 \uD655\uBCF4\uD558\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
||||
tree: {fileID: 11400000, guid: 33ad68732732b6a4589e24da88253f8d, type: 2}
|
||||
selectedNodes:
|
||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
- {fileID: 11400000, guid: 7d28864e0cf3bf5468aafce96b69dd92, type: 2}
|
||||
- {fileID: 11400000, guid: 3c450c4008727964b828b2677a7c43ee, type: 2}
|
||||
- {fileID: 11400000, guid: f46931d762ecda34b95a94fcdfdaec24, type: 2}
|
||||
- {fileID: 11400000, guid: 95f84aa662f1c3e4d92c1371d6bfcf17, type: 2}
|
||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
|
||||
@@ -13,15 +13,19 @@ MonoBehaviour:
|
||||
m_Name: Data_PassivePreset_Player_Support
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassivePresetData
|
||||
presetName: "\uC9C0\uC6D0\uD615 \uD328\uC2DC\uBE0C"
|
||||
description: "\uC9C0\uC6D0 \uCD95 \uC644\uC131\uACFC \uD568\uAED8 \uACF5\uACA9/\uBC29\uC5B4
|
||||
\uBE0C\uB9BF\uC9C0\uB97C \uAC00\uBCCD\uAC8C \uC5EC\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
||||
description: "\uC9C0\uC6D0 \uCD95\uC758 \uC2A4\uD0EF \uB178\uB4DC\uC640 \uC720\uC9C0
|
||||
\uD6A8\uC728 \uB178\uB4DC\uB97C \uC6B0\uC120 \uD655\uBCF4\uD558\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
||||
tree: {fileID: 11400000, guid: 33ad68732732b6a4589e24da88253f8d, type: 2}
|
||||
selectedNodes:
|
||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
- {fileID: 11400000, guid: 291c1539d7ff6f7409fea7e6b1537916, type: 2}
|
||||
- {fileID: 11400000, guid: c82a0153c8de0644e808edfd55ab6b10, type: 2}
|
||||
- {fileID: 11400000, guid: 5eb74fef73fbd88418bb4dd6150c46b9, type: 2}
|
||||
- {fileID: 11400000, guid: daf27733a031c2f46906ebb801428f34, type: 2}
|
||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
||||
- {fileID: 11400000, guid: b654aea2451ac2b4c8feca4baa733c7f, type: 2}
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
|
||||
@@ -13,15 +13,19 @@ MonoBehaviour:
|
||||
m_Name: Data_PassivePreset_Player_Tank
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.Passives.PassivePresetData
|
||||
presetName: "\uBC29\uC5B4\uD615 \uD328\uC2DC\uBE0C"
|
||||
description: "\uBC29\uC5B4 \uCD95 \uC644\uC131\uACFC \uD568\uAED8 \uACF5\uACA9/\uC9C0\uC6D0
|
||||
\uBE0C\uB9BF\uC9C0\uB97C \uAC00\uBCCD\uAC8C \uC5EC\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
||||
description: "\uBC29\uC5B4 \uCD95\uC758 \uC2A4\uD0EF \uB178\uB4DC\uC640 \uD575\uC2EC
|
||||
\uC720\uC9C0 \uB178\uB4DC\uB97C \uC6B0\uC120 \uD655\uBCF4\uD558\uB294 \uD504\uB9AC\uC14B\uC785\uB2C8\uB2E4."
|
||||
tree: {fileID: 11400000, guid: 33ad68732732b6a4589e24da88253f8d, type: 2}
|
||||
selectedNodes:
|
||||
- {fileID: 11400000, guid: a94fab25cea2ef040a684ad03a9515aa, type: 2}
|
||||
- {fileID: 11400000, guid: 7651af69dcffc174eb8baa9a822d8188, type: 2}
|
||||
- {fileID: 11400000, guid: bb00ad8c4601d3a4fb1e30a153faca38, type: 2}
|
||||
- {fileID: 11400000, guid: 6721e28dab9025343b4c7ed2b1f847b3, type: 2}
|
||||
- {fileID: 11400000, guid: d27dc2a5f86f772408a3ef0e115af79b, type: 2}
|
||||
- {fileID: 11400000, guid: a661c34923e6e534daaa263641e73d6e, type: 2}
|
||||
- {fileID: 11400000, guid: 4bde7b3376f2b7d429e5a9dc90d1cf3c, type: 2}
|
||||
- {fileID: 11400000, guid: 608b595113bc12e4dbf618f93ab41aaa, type: 2}
|
||||
- {fileID: 11400000, guid: 8b6865d1ccdfbc24a956e50ced20da87, type: 2}
|
||||
- {fileID: 11400000, guid: c5e1fee00b45d7643ae1b51b749d8d57, type: 2}
|
||||
- {fileID: 11400000, guid: 1fe3777d83675364187bfd8134b859d5, type: 2}
|
||||
- {fileID: 11400000, guid: 5535fa758a366ad409df12010f661378, type: 2}
|
||||
- {fileID: 11400000, guid: 21150da8ec1314242ada62509025a417, type: 2}
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -33,13 +33,14 @@ RectTransform:
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 2962551817550131226}
|
||||
- {fileID: 3875000767313047181}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 70, y: 70}
|
||||
m_SizeDelta: {x: 62, y: 62}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8268640799320570731
|
||||
CanvasRenderer:
|
||||
@@ -152,6 +153,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Colosseum.Game::Colosseum.UI.PassiveTreeNodeView
|
||||
rootRect: {fileID: 6261231552513207993}
|
||||
backgroundImage: {fileID: 448894188463328570}
|
||||
fillImage: {fileID: 1375332608636340320}
|
||||
innerImage: {fileID: 3476538439727275718}
|
||||
button: {fileID: 2832153398621926819}
|
||||
outline: {fileID: 7672961496650835067}
|
||||
@@ -190,7 +192,7 @@ RectTransform:
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: -20, y: -20}
|
||||
m_SizeDelta: {x: -18, y: -18}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6261820943415329823
|
||||
CanvasRenderer:
|
||||
@@ -230,3 +232,78 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &7621270954760017220
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2962551817550131226}
|
||||
- component: {fileID: 4702726639153553071}
|
||||
- component: {fileID: 1375332608636340320}
|
||||
m_Layer: 0
|
||||
m_Name: Fill
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2962551817550131226
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7621270954760017220}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 6261231552513207993}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: -34, y: -34}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &4702726639153553071
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7621270954760017220}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1375332608636340320
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7621270954760017220}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0.08, g: 0.08, b: 0.1, a: 0.98}
|
||||
m_RaycastTarget: 0
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Type: 1
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1343,6 +1343,7 @@ MonoBehaviour:
|
||||
statusErrorColor: {r: 1, g: 0.52, b: 0.45, a: 1}
|
||||
lineColor: {r: 0.72, g: 0.67, b: 0.53, a: 0.4}
|
||||
activeLineColor: {r: 0.98, g: 0.9, b: 0.7, a: 0.92}
|
||||
graphCenterYOffset: -76
|
||||
--- !u!1 &7094235100059026060
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -35,6 +35,7 @@ namespace Colosseum.Editor
|
||||
private static readonly Color ButtonColor = new(0.20f, 0.20f, 0.24f, 0.96f);
|
||||
private static readonly Color TextColor = new(0.90f, 0.88f, 0.82f, 1f);
|
||||
private static readonly Color NodeColor = new(0.16f, 0.16f, 0.18f, 0.98f);
|
||||
private static readonly Color NodeFillColor = new(0.08f, 0.08f, 0.10f, 0.98f);
|
||||
private static readonly Color NodeOutlineColor = new(0f, 0f, 0f, 0.45f);
|
||||
|
||||
[MenuItem("Tools/Colosseum/Passives/Rebuild Passive UI Prefabs")]
|
||||
@@ -71,7 +72,7 @@ namespace Colosseum.Editor
|
||||
try
|
||||
{
|
||||
RectTransform rect = root.GetComponent<RectTransform>();
|
||||
rect.sizeDelta = new Vector2(70f, 70f);
|
||||
rect.sizeDelta = new Vector2(62f, 62f);
|
||||
|
||||
Image background = root.GetComponent<Image>();
|
||||
background.sprite = LoadPassiveNodeSprite(false);
|
||||
@@ -86,11 +87,23 @@ namespace Colosseum.Editor
|
||||
Button button = root.GetComponent<Button>();
|
||||
button.targetGraphic = background;
|
||||
|
||||
GameObject fillObject = CreateUiObject("Fill", root.transform, typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
|
||||
RectTransform fillRect = fillObject.GetComponent<RectTransform>();
|
||||
StretchRect(fillRect);
|
||||
fillRect.offsetMin = new Vector2(17f, 17f);
|
||||
fillRect.offsetMax = new Vector2(-17f, -17f);
|
||||
|
||||
Image fillImage = fillObject.GetComponent<Image>();
|
||||
fillImage.sprite = GetBuiltinSprite();
|
||||
fillImage.type = Image.Type.Sliced;
|
||||
fillImage.color = NodeFillColor;
|
||||
fillImage.raycastTarget = false;
|
||||
|
||||
GameObject innerObject = CreateUiObject("InnerIcon", root.transform, typeof(RectTransform), typeof(CanvasRenderer), typeof(Image));
|
||||
RectTransform innerRect = innerObject.GetComponent<RectTransform>();
|
||||
StretchRect(innerRect);
|
||||
innerRect.offsetMin = new Vector2(10f, 10f);
|
||||
innerRect.offsetMax = new Vector2(-10f, -10f);
|
||||
innerRect.offsetMin = new Vector2(9f, 9f);
|
||||
innerRect.offsetMax = new Vector2(-9f, -9f);
|
||||
|
||||
Image innerImage = innerObject.GetComponent<Image>();
|
||||
innerImage.sprite = LoadPassiveNodeSprite(false);
|
||||
@@ -102,6 +115,7 @@ namespace Colosseum.Editor
|
||||
PassiveTreeNodeView references = root.GetComponent<PassiveTreeNodeView>();
|
||||
SetSerializedReference(references, "rootRect", rect);
|
||||
SetSerializedReference(references, "backgroundImage", background);
|
||||
SetSerializedReference(references, "fillImage", fillImage);
|
||||
SetSerializedReference(references, "innerImage", innerImage);
|
||||
SetSerializedReference(references, "button", button);
|
||||
SetSerializedReference(references, "outline", outline);
|
||||
@@ -143,7 +157,7 @@ namespace Colosseum.Editor
|
||||
panelRect.anchorMin = new Vector2(0.5f, 0.5f);
|
||||
panelRect.anchorMax = new Vector2(0.5f, 0.5f);
|
||||
panelRect.pivot = new Vector2(0.5f, 0.5f);
|
||||
panelRect.sizeDelta = new Vector2(1380f, 820f);
|
||||
panelRect.sizeDelta = new Vector2(1440f, 900f);
|
||||
|
||||
Image panelImage = panelObject.GetComponent<Image>();
|
||||
panelImage.sprite = GetBuiltinSprite();
|
||||
@@ -308,14 +322,14 @@ namespace Colosseum.Editor
|
||||
|
||||
RectTransform graphSection = CreateSectionRoot(bodyObject.transform, "Section_Graph", 0f);
|
||||
graphSection.GetComponent<LayoutElement>().flexibleWidth = 1f;
|
||||
graphSection.GetComponent<LayoutElement>().minWidth = 760f;
|
||||
graphSection.GetComponent<LayoutElement>().minWidth = 820f;
|
||||
CreateSectionTitle(graphSection, "트리 그래프");
|
||||
|
||||
GameObject graphSurface = CreateUiObject("GraphSurface", graphSection, typeof(RectTransform), typeof(LayoutElement), typeof(Image));
|
||||
graphRect = graphSurface.GetComponent<RectTransform>();
|
||||
LayoutElement graphLayout = graphSurface.GetComponent<LayoutElement>();
|
||||
graphLayout.flexibleHeight = 1f;
|
||||
graphLayout.minHeight = 560f;
|
||||
graphLayout.minHeight = 640f;
|
||||
|
||||
Image graphImage = graphSurface.GetComponent<Image>();
|
||||
graphImage.sprite = GetBuiltinSprite();
|
||||
@@ -385,7 +399,7 @@ namespace Colosseum.Editor
|
||||
statusText.text = string.Empty;
|
||||
statusText.textWrappingMode = TextWrappingModes.NoWrap;
|
||||
statusText.overflowMode = TextOverflowModes.Ellipsis;
|
||||
footerObject.SetActive(false);
|
||||
footerObject.SetActive(true);
|
||||
}
|
||||
|
||||
private static RectTransform CreateSectionRoot(Transform parent, string name, float preferredWidth)
|
||||
|
||||
@@ -32,18 +32,35 @@ namespace Colosseum.Editor
|
||||
|
||||
private const string HubNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Hub.asset";
|
||||
private const string DefenseEntryNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Entry.asset";
|
||||
private const string DefenseFrameNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Frame.asset";
|
||||
private const string DefenseGuardNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Guard.asset";
|
||||
private const string DefenseResolveNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Resolve.asset";
|
||||
private const string DefenseCoreNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Core.asset";
|
||||
private const string DefenseCapstoneNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Tank_Capstone.asset";
|
||||
private const string SupportEntryNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Entry.asset";
|
||||
private const string SupportInsightNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Insight.asset";
|
||||
private const string SupportWellNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Well.asset";
|
||||
private const string SupportFocusNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Focus.asset";
|
||||
private const string SupportCoreNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Core.asset";
|
||||
private const string SupportCapstoneNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Support_Capstone.asset";
|
||||
private const string AttackEntryNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Entry.asset";
|
||||
private const string AttackStrengthNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Strength.asset";
|
||||
private const string AttackPrecisionNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Precision.asset";
|
||||
private const string AttackArcanaNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Arcana.asset";
|
||||
private const string AttackCoreNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Core.asset";
|
||||
private const string AttackCapstoneNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_Dps_Capstone.asset";
|
||||
private const string AttackDefenseBridgeNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_AttackDefense_Bridge.asset";
|
||||
private const string DefenseSupportBridgeNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_DefenseSupport_Bridge.asset";
|
||||
private const string SupportAttackBridgeNodeAssetPath = PassiveNodeFolderPath + "/Data_PassiveNode_Player_SupportAttack_Bridge.asset";
|
||||
|
||||
private const float AxisEntryRadius = 0.24f;
|
||||
private const float AxisCoreRadius = 0.56f;
|
||||
private const float AxisOuterStatRadius = 0.88f;
|
||||
private const float AxisCenterStatRadius = 0.78f;
|
||||
private const float AxisCapstoneRadius = 1.0f;
|
||||
private const float AxisStatSideOffset = 0.32f;
|
||||
private const float BridgeRadius = 0.70f;
|
||||
|
||||
[MenuItem("Tools/Colosseum/Debug/Passive/Bootstrap Prototype Assets")]
|
||||
private static void BootstrapPrototypeAssets()
|
||||
{
|
||||
@@ -54,23 +71,61 @@ namespace Colosseum.Editor
|
||||
|
||||
PassiveNodeData hubNode = CreateOrLoadNode(HubNodeAssetPath);
|
||||
PassiveNodeData defenseEntryNode = CreateOrLoadNode(DefenseEntryNodeAssetPath);
|
||||
PassiveNodeData defenseFrameNode = CreateOrLoadNode(DefenseFrameNodeAssetPath);
|
||||
PassiveNodeData defenseGuardNode = CreateOrLoadNode(DefenseGuardNodeAssetPath);
|
||||
PassiveNodeData defenseResolveNode = CreateOrLoadNode(DefenseResolveNodeAssetPath);
|
||||
PassiveNodeData defenseCoreNode = CreateOrLoadNode(DefenseCoreNodeAssetPath);
|
||||
PassiveNodeData defenseCapstoneNode = CreateOrLoadNode(DefenseCapstoneNodeAssetPath);
|
||||
PassiveNodeData supportEntryNode = CreateOrLoadNode(SupportEntryNodeAssetPath);
|
||||
PassiveNodeData supportInsightNode = CreateOrLoadNode(SupportInsightNodeAssetPath);
|
||||
PassiveNodeData supportWellNode = CreateOrLoadNode(SupportWellNodeAssetPath);
|
||||
PassiveNodeData supportFocusNode = CreateOrLoadNode(SupportFocusNodeAssetPath);
|
||||
PassiveNodeData supportCoreNode = CreateOrLoadNode(SupportCoreNodeAssetPath);
|
||||
PassiveNodeData supportCapstoneNode = CreateOrLoadNode(SupportCapstoneNodeAssetPath);
|
||||
PassiveNodeData attackEntryNode = CreateOrLoadNode(AttackEntryNodeAssetPath);
|
||||
PassiveNodeData attackStrengthNode = CreateOrLoadNode(AttackStrengthNodeAssetPath);
|
||||
PassiveNodeData attackPrecisionNode = CreateOrLoadNode(AttackPrecisionNodeAssetPath);
|
||||
PassiveNodeData attackArcanaNode = CreateOrLoadNode(AttackArcanaNodeAssetPath);
|
||||
PassiveNodeData attackCoreNode = CreateOrLoadNode(AttackCoreNodeAssetPath);
|
||||
PassiveNodeData attackCapstoneNode = CreateOrLoadNode(AttackCapstoneNodeAssetPath);
|
||||
PassiveNodeData attackDefenseBridgeNode = CreateOrLoadNode(AttackDefenseBridgeNodeAssetPath);
|
||||
PassiveNodeData defenseSupportBridgeNode = CreateOrLoadNode(DefenseSupportBridgeNodeAssetPath);
|
||||
PassiveNodeData supportAttackBridgeNode = CreateOrLoadNode(SupportAttackBridgeNodeAssetPath);
|
||||
|
||||
Vector2 attackDirection = Vector2.up;
|
||||
Vector2 defenseDirection = RotateLayout(Vector2.up, 120f);
|
||||
Vector2 supportDirection = RotateLayout(Vector2.up, -120f);
|
||||
|
||||
Vector2 attackEntryPosition = BuildAxisLayoutPosition(attackDirection, AxisEntryRadius);
|
||||
Vector2 attackCorePosition = BuildAxisLayoutPosition(attackDirection, AxisCoreRadius);
|
||||
Vector2 attackStrengthPosition = BuildAxisLayoutPosition(attackDirection, AxisOuterStatRadius, AxisStatSideOffset);
|
||||
Vector2 attackPrecisionPosition = BuildAxisLayoutPosition(attackDirection, AxisCenterStatRadius);
|
||||
Vector2 attackArcanaPosition = BuildAxisLayoutPosition(attackDirection, AxisOuterStatRadius, -AxisStatSideOffset);
|
||||
Vector2 attackCapstonePosition = BuildAxisLayoutPosition(attackDirection, AxisCapstoneRadius);
|
||||
|
||||
Vector2 defenseEntryPosition = BuildAxisLayoutPosition(defenseDirection, AxisEntryRadius);
|
||||
Vector2 defenseCorePosition = BuildAxisLayoutPosition(defenseDirection, AxisCoreRadius);
|
||||
Vector2 defenseFramePosition = BuildAxisLayoutPosition(defenseDirection, AxisOuterStatRadius, AxisStatSideOffset);
|
||||
Vector2 defenseResolvePosition = BuildAxisLayoutPosition(defenseDirection, AxisCenterStatRadius);
|
||||
Vector2 defenseGuardPosition = BuildAxisLayoutPosition(defenseDirection, AxisOuterStatRadius, -AxisStatSideOffset);
|
||||
Vector2 defenseCapstonePosition = BuildAxisLayoutPosition(defenseDirection, AxisCapstoneRadius);
|
||||
|
||||
Vector2 supportEntryPosition = BuildAxisLayoutPosition(supportDirection, AxisEntryRadius);
|
||||
Vector2 supportCorePosition = BuildAxisLayoutPosition(supportDirection, AxisCoreRadius);
|
||||
Vector2 supportInsightPosition = BuildAxisLayoutPosition(supportDirection, AxisOuterStatRadius, AxisStatSideOffset);
|
||||
Vector2 supportWellPosition = BuildAxisLayoutPosition(supportDirection, AxisCenterStatRadius);
|
||||
Vector2 supportFocusPosition = BuildAxisLayoutPosition(supportDirection, AxisOuterStatRadius, -AxisStatSideOffset);
|
||||
Vector2 supportCapstonePosition = BuildAxisLayoutPosition(supportDirection, AxisCapstoneRadius);
|
||||
|
||||
Vector2 attackDefenseBridgePosition = RotateLayout(Vector2.up * BridgeRadius, 60f);
|
||||
Vector2 defenseSupportBridgePosition = RotateLayout(Vector2.up * BridgeRadius, 180f);
|
||||
Vector2 supportAttackBridgePosition = RotateLayout(Vector2.up * BridgeRadius, -60f);
|
||||
|
||||
ConfigureNode(
|
||||
hubNode,
|
||||
"hub",
|
||||
"중심 허브",
|
||||
"패시브 트리의 시작점입니다.",
|
||||
string.Empty,
|
||||
string.Empty,
|
||||
PassiveNodeBranch.Common,
|
||||
PassiveNodeKind.Hub,
|
||||
PassiveAxisMask.None,
|
||||
@@ -91,14 +146,68 @@ namespace Colosseum.Editor
|
||||
PassiveAxisMask.Attack,
|
||||
1,
|
||||
1,
|
||||
new Vector2(0f, 0.34f),
|
||||
attackEntryPosition,
|
||||
new[] { hubNode },
|
||||
new[] { hubNode, attackCoreNode, attackDefenseBridgeNode, supportAttackBridgeNode },
|
||||
new[] { hubNode, attackCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Strength, StatModType.PercentAdd, 0.1f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Dexterity, StatModType.PercentAdd, 0.1f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Intelligence, StatModType.PercentAdd, 0.1f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Strength, StatModType.PercentAdd, 0.05f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Dexterity, StatModType.PercentAdd, 0.05f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Intelligence, StatModType.PercentAdd, 0.05f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
attackStrengthNode,
|
||||
"attack_strength",
|
||||
"근력 단련",
|
||||
"직접적인 무기 화력을 높이기 위한 힘의 기반을 다집니다.",
|
||||
PassiveNodeBranch.Attack,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Attack,
|
||||
2,
|
||||
1,
|
||||
attackStrengthPosition,
|
||||
new[] { attackCoreNode },
|
||||
new[] { attackCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Strength, StatModType.Flat, 4f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
attackPrecisionNode,
|
||||
"attack_precision",
|
||||
"민첩 연마",
|
||||
"정확한 움직임과 타격 빈도를 위해 민첩을 끌어올립니다.",
|
||||
PassiveNodeBranch.Attack,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Attack,
|
||||
2,
|
||||
1,
|
||||
attackPrecisionPosition,
|
||||
new[] { attackCoreNode },
|
||||
new[] { attackCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Dexterity, StatModType.Flat, 4f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
attackArcanaNode,
|
||||
"attack_arcana",
|
||||
"지능 예열",
|
||||
"공세 축에서도 주문 계열 화력을 포기하지 않도록 지능 기반을 보강합니다.",
|
||||
PassiveNodeBranch.Attack,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Attack,
|
||||
2,
|
||||
1,
|
||||
attackArcanaPosition,
|
||||
new[] { attackCoreNode },
|
||||
new[] { attackCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Intelligence, StatModType.Flat, 4f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
@@ -109,14 +218,14 @@ namespace Colosseum.Editor
|
||||
PassiveNodeBranch.Attack,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Attack,
|
||||
2,
|
||||
3,
|
||||
1,
|
||||
new Vector2(0f, 0.6f),
|
||||
attackCorePosition,
|
||||
new[] { attackEntryNode },
|
||||
new[] { attackEntryNode, attackCapstoneNode },
|
||||
new[] { attackEntryNode, attackStrengthNode, attackPrecisionNode, attackArcanaNode, attackCapstoneNode, attackDefenseBridgeNode, supportAttackBridgeNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.12f, SkillRoleType.Attack),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.10f, SkillRoleType.Attack),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
@@ -127,15 +236,15 @@ namespace Colosseum.Editor
|
||||
PassiveNodeBranch.Attack,
|
||||
PassiveNodeKind.Capstone,
|
||||
PassiveAxisMask.Attack,
|
||||
3,
|
||||
4,
|
||||
2,
|
||||
new Vector2(0f, 0.84f),
|
||||
attackCapstonePosition,
|
||||
new[] { attackCoreNode },
|
||||
new[] { attackCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.10f, SkillRoleType.Attack),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ManaCostMultiplier, 0.90f, SkillRoleType.Attack),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.08f, SkillRoleType.Attack),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ManaCostMultiplier, 0.92f, SkillRoleType.Attack),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
@@ -148,12 +257,66 @@ namespace Colosseum.Editor
|
||||
PassiveAxisMask.Defense,
|
||||
1,
|
||||
1,
|
||||
new Vector2(-0.34f, -0.1f),
|
||||
defenseEntryPosition,
|
||||
new[] { hubNode },
|
||||
new[] { hubNode, defenseCoreNode, attackDefenseBridgeNode, defenseSupportBridgeNode },
|
||||
new[] { hubNode, defenseCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.PercentAdd, 0.2f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.PercentAdd, 0.10f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
defenseFrameNode,
|
||||
"defense_frame",
|
||||
"활력 축적",
|
||||
"방어 축의 기본 체력을 두텁게 확보합니다.",
|
||||
PassiveNodeBranch.Defense,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Defense,
|
||||
2,
|
||||
1,
|
||||
defenseFramePosition,
|
||||
new[] { defenseCoreNode },
|
||||
new[] { defenseCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.Flat, 6f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
defenseGuardNode,
|
||||
"defense_guard",
|
||||
"굳센 육체",
|
||||
"기본 활력을 비율로 증폭해 전투 지속력을 높입니다.",
|
||||
PassiveNodeBranch.Defense,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Defense,
|
||||
2,
|
||||
1,
|
||||
defenseGuardPosition,
|
||||
new[] { defenseCoreNode },
|
||||
new[] { defenseCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.PercentAdd, 0.12f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
defenseResolveNode,
|
||||
"defense_resolve",
|
||||
"전투 호흡",
|
||||
"전열에서 스킬을 굴릴 여유를 위해 정신을 함께 보강합니다.",
|
||||
PassiveNodeBranch.Defense,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Defense,
|
||||
2,
|
||||
1,
|
||||
defenseResolvePosition,
|
||||
new[] { defenseCoreNode },
|
||||
new[] { defenseCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Spirit, StatModType.Flat, 4f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
@@ -164,15 +327,15 @@ namespace Colosseum.Editor
|
||||
PassiveNodeBranch.Defense,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Defense,
|
||||
2,
|
||||
3,
|
||||
1,
|
||||
new Vector2(-0.58f, -0.34f),
|
||||
defenseCorePosition,
|
||||
new[] { defenseEntryNode },
|
||||
new[] { defenseEntryNode, defenseCapstoneNode },
|
||||
new[] { defenseEntryNode, defenseFrameNode, defenseGuardNode, defenseResolveNode, defenseCapstoneNode, attackDefenseBridgeNode, defenseSupportBridgeNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ThreatGeneratedMultiplier, 1.30f),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldReceivedMultiplier, 1.15f),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ThreatGeneratedMultiplier, 1.25f),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldReceivedMultiplier, 1.10f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
@@ -183,14 +346,14 @@ namespace Colosseum.Editor
|
||||
PassiveNodeBranch.Defense,
|
||||
PassiveNodeKind.Capstone,
|
||||
PassiveAxisMask.Defense,
|
||||
3,
|
||||
4,
|
||||
2,
|
||||
new Vector2(-0.82f, -0.58f),
|
||||
defenseCapstonePosition,
|
||||
new[] { defenseCoreNode },
|
||||
new[] { defenseCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.IncomingDamageMultiplier, 0.88f),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.IncomingDamageMultiplier, 0.90f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
@@ -203,12 +366,66 @@ namespace Colosseum.Editor
|
||||
PassiveAxisMask.Support,
|
||||
1,
|
||||
1,
|
||||
new Vector2(0.34f, -0.1f),
|
||||
supportEntryPosition,
|
||||
new[] { hubNode },
|
||||
new[] { hubNode, supportCoreNode, defenseSupportBridgeNode, supportAttackBridgeNode },
|
||||
new[] { hubNode, supportCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Wisdom, StatModType.PercentAdd, 0.2f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Wisdom, StatModType.PercentAdd, 0.10f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
supportInsightNode,
|
||||
"support_insight",
|
||||
"지혜 응축",
|
||||
"회복량의 기초가 되는 지혜를 직접 보강합니다.",
|
||||
PassiveNodeBranch.Support,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Support,
|
||||
2,
|
||||
1,
|
||||
supportInsightPosition,
|
||||
new[] { supportCoreNode },
|
||||
new[] { supportCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Wisdom, StatModType.Flat, 4f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
supportWellNode,
|
||||
"support_well",
|
||||
"정신 샘",
|
||||
"지원 축 운용을 위해 마나 기반을 단단히 합니다.",
|
||||
PassiveNodeBranch.Support,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Support,
|
||||
2,
|
||||
1,
|
||||
supportWellPosition,
|
||||
new[] { supportCoreNode },
|
||||
new[] { supportCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Spirit, StatModType.Flat, 6f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
supportFocusNode,
|
||||
"support_focus",
|
||||
"집중 순환",
|
||||
"지속적인 보조를 위해 정신을 비율로 확장합니다.",
|
||||
PassiveNodeBranch.Support,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Support,
|
||||
2,
|
||||
1,
|
||||
supportFocusPosition,
|
||||
new[] { supportCoreNode },
|
||||
new[] { supportCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Spirit, StatModType.PercentAdd, 0.12f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
@@ -219,15 +436,15 @@ namespace Colosseum.Editor
|
||||
PassiveNodeBranch.Support,
|
||||
PassiveNodeKind.Axis,
|
||||
PassiveAxisMask.Support,
|
||||
2,
|
||||
3,
|
||||
1,
|
||||
new Vector2(0.58f, -0.34f),
|
||||
supportCorePosition,
|
||||
new[] { supportEntryNode },
|
||||
new[] { supportEntryNode, supportCapstoneNode },
|
||||
new[] { supportEntryNode, supportInsightNode, supportWellNode, supportFocusNode, supportCapstoneNode, defenseSupportBridgeNode, supportAttackBridgeNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.HealMultiplier, 1.15f, SkillRoleType.Support),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldDoneMultiplier, 1.15f, SkillRoleType.Support),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.HealMultiplier, 1.12f, SkillRoleType.Support),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldDoneMultiplier, 1.12f, SkillRoleType.Support),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
@@ -238,72 +455,72 @@ namespace Colosseum.Editor
|
||||
PassiveNodeBranch.Support,
|
||||
PassiveNodeKind.Capstone,
|
||||
PassiveAxisMask.Support,
|
||||
3,
|
||||
4,
|
||||
2,
|
||||
new Vector2(0.82f, -0.58f),
|
||||
supportCapstonePosition,
|
||||
new[] { supportCoreNode },
|
||||
new[] { supportCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateStat(StatType.Spirit, StatModType.PercentAdd, 0.2f),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ManaCostMultiplier, 0.85f, SkillRoleType.Support),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ManaCostMultiplier, 0.88f, SkillRoleType.Support),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldDoneMultiplier, 1.08f, SkillRoleType.Support),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
attackDefenseBridgeNode,
|
||||
"attack_defense_bridge",
|
||||
"압박 방벽",
|
||||
"공격과 방어를 연결하는 브릿지로, 압박 유지력과 전투 안정성을 함께 챙깁니다.",
|
||||
"공격과 방어를 연결하는 브릿지로, 힘과 활력을 함께 보강합니다.",
|
||||
PassiveNodeBranch.Bridge,
|
||||
PassiveNodeKind.Bridge,
|
||||
PassiveAxisMask.Attack | PassiveAxisMask.Defense,
|
||||
2,
|
||||
1,
|
||||
new Vector2(-0.24f, 0.14f),
|
||||
new[] { attackEntryNode, defenseEntryNode },
|
||||
new[] { attackEntryNode, defenseEntryNode },
|
||||
attackDefenseBridgePosition,
|
||||
new[] { attackCoreNode },
|
||||
new[] { attackCoreNode, defenseCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.06f, SkillRoleType.Attack),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.IncomingDamageMultiplier, 0.95f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Strength, StatModType.Flat, 3f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.Flat, 3f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
defenseSupportBridgeNode,
|
||||
"defense_support_bridge",
|
||||
"수호 순환",
|
||||
"방어와 지원을 연결하는 브릿지로, 보호막과 회복 기여를 함께 끌어올립니다.",
|
||||
"방어와 지원을 연결하는 브릿지로, 활력과 지혜를 함께 끌어올립니다.",
|
||||
PassiveNodeBranch.Bridge,
|
||||
PassiveNodeKind.Bridge,
|
||||
PassiveAxisMask.Defense | PassiveAxisMask.Support,
|
||||
2,
|
||||
1,
|
||||
new Vector2(0f, -0.28f),
|
||||
new[] { defenseEntryNode, supportEntryNode },
|
||||
new[] { defenseEntryNode, supportEntryNode },
|
||||
defenseSupportBridgePosition,
|
||||
new[] { defenseCoreNode },
|
||||
new[] { defenseCoreNode, supportCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ShieldReceivedMultiplier, 1.10f),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.HealMultiplier, 1.08f, SkillRoleType.Support),
|
||||
PassiveEffectConfig.CreateStat(StatType.Vitality, StatModType.Flat, 3f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Wisdom, StatModType.Flat, 3f),
|
||||
});
|
||||
|
||||
ConfigureNode(
|
||||
supportAttackBridgeNode,
|
||||
"support_attack_bridge",
|
||||
"전술 증폭",
|
||||
"지원과 공격을 연결하는 브릿지로, 화력과 유지 효율을 함께 보조합니다.",
|
||||
"지원과 공격을 연결하는 브릿지로, 지혜와 지능 기반을 함께 높입니다.",
|
||||
PassiveNodeBranch.Bridge,
|
||||
PassiveNodeKind.Bridge,
|
||||
PassiveAxisMask.Support | PassiveAxisMask.Attack,
|
||||
2,
|
||||
1,
|
||||
new Vector2(0.24f, 0.14f),
|
||||
new[] { supportEntryNode, attackEntryNode },
|
||||
new[] { supportEntryNode, attackEntryNode },
|
||||
supportAttackBridgePosition,
|
||||
new[] { supportCoreNode },
|
||||
new[] { supportCoreNode, attackCoreNode },
|
||||
new[]
|
||||
{
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.DamageMultiplier, 1.06f, SkillRoleType.Attack),
|
||||
PassiveEffectConfig.CreateScalar(PassiveEffectType.ManaCostMultiplier, 0.95f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Wisdom, StatModType.Flat, 3f),
|
||||
PassiveEffectConfig.CreateStat(StatType.Intelligence, StatModType.Flat, 3f),
|
||||
});
|
||||
|
||||
PassiveTreeData tree = CreateOrLoadTree();
|
||||
@@ -311,18 +528,27 @@ namespace Colosseum.Editor
|
||||
tree,
|
||||
"player_prototype_tree",
|
||||
"플레이어 패시브 프로토타입",
|
||||
"공격 / 방어 / 지원 3축과 브릿지 노드로 구성된 드로그전 밸런싱 검증용 트리입니다.",
|
||||
8,
|
||||
"공격 / 방어 / 지원 3축에 다수의 스탯 노드와 연결 노드를 배치한 드로그전 밸런싱 검증용 트리입니다.",
|
||||
12,
|
||||
new[]
|
||||
{
|
||||
hubNode,
|
||||
attackEntryNode,
|
||||
attackStrengthNode,
|
||||
attackPrecisionNode,
|
||||
attackArcanaNode,
|
||||
attackCoreNode,
|
||||
attackCapstoneNode,
|
||||
defenseEntryNode,
|
||||
defenseFrameNode,
|
||||
defenseGuardNode,
|
||||
defenseResolveNode,
|
||||
defenseCoreNode,
|
||||
defenseCapstoneNode,
|
||||
supportEntryNode,
|
||||
supportInsightNode,
|
||||
supportWellNode,
|
||||
supportFocusNode,
|
||||
supportCoreNode,
|
||||
supportCapstoneNode,
|
||||
attackDefenseBridgeNode,
|
||||
@@ -340,52 +566,64 @@ namespace Colosseum.Editor
|
||||
CreateOrUpdatePreset(
|
||||
DefensePresetAssetPath,
|
||||
"방어형 패시브",
|
||||
"방어 축 완성과 함께 공격/지원 브릿지를 가볍게 여는 프리셋입니다.",
|
||||
"방어 축의 스탯 노드와 핵심 유지 노드를 우선 확보하는 프리셋입니다.",
|
||||
tree,
|
||||
new[]
|
||||
{
|
||||
hubNode,
|
||||
defenseEntryNode,
|
||||
defenseCoreNode,
|
||||
defenseFrameNode,
|
||||
defenseGuardNode,
|
||||
defenseResolveNode,
|
||||
defenseCapstoneNode,
|
||||
attackEntryNode,
|
||||
attackCoreNode,
|
||||
supportEntryNode,
|
||||
attackDefenseBridgeNode,
|
||||
defenseSupportBridgeNode,
|
||||
supportCoreNode,
|
||||
});
|
||||
|
||||
CreateOrUpdatePreset(
|
||||
SupportPresetAssetPath,
|
||||
"지원형 패시브",
|
||||
"지원 축 완성과 함께 공격/방어 브릿지를 가볍게 여는 프리셋입니다.",
|
||||
"지원 축의 스탯 노드와 유지 효율 노드를 우선 확보하는 프리셋입니다.",
|
||||
tree,
|
||||
new[]
|
||||
{
|
||||
hubNode,
|
||||
supportEntryNode,
|
||||
supportCoreNode,
|
||||
supportInsightNode,
|
||||
supportWellNode,
|
||||
supportFocusNode,
|
||||
supportCapstoneNode,
|
||||
defenseEntryNode,
|
||||
defenseCoreNode,
|
||||
attackEntryNode,
|
||||
defenseSupportBridgeNode,
|
||||
supportAttackBridgeNode,
|
||||
attackCoreNode,
|
||||
});
|
||||
|
||||
CreateOrUpdatePreset(
|
||||
AttackPresetAssetPath,
|
||||
"공격형 패시브",
|
||||
"공격 축 완성과 함께 방어/지원 브릿지를 가볍게 여는 프리셋입니다.",
|
||||
"공격 축의 스탯 노드와 화력 노드를 우선 확보하는 프리셋입니다.",
|
||||
tree,
|
||||
new[]
|
||||
{
|
||||
hubNode,
|
||||
attackEntryNode,
|
||||
attackCoreNode,
|
||||
attackStrengthNode,
|
||||
attackPrecisionNode,
|
||||
attackArcanaNode,
|
||||
attackCapstoneNode,
|
||||
defenseEntryNode,
|
||||
defenseCoreNode,
|
||||
supportEntryNode,
|
||||
attackDefenseBridgeNode,
|
||||
supportAttackBridgeNode,
|
||||
supportCoreNode,
|
||||
});
|
||||
|
||||
PassivePrototypeCatalogData catalog = CreateOrLoadCatalog();
|
||||
@@ -643,6 +881,29 @@ namespace Colosseum.Editor
|
||||
EditorUtility.SetDirty(node);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 기준 축 템플릿 좌표를 실제 축 방향으로 회전합니다.
|
||||
/// </summary>
|
||||
private static Vector2 BuildAxisLayoutPosition(Vector2 axisDirection, float radialDistance, float lateralOffset = 0f)
|
||||
{
|
||||
Vector2 normalizedDirection = axisDirection.normalized;
|
||||
Vector2 perpendicularDirection = new Vector2(-normalizedDirection.y, normalizedDirection.x);
|
||||
return normalizedDirection * radialDistance + perpendicularDirection * lateralOffset;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 2D 평면 좌표를 각도 기준으로 회전합니다.
|
||||
/// </summary>
|
||||
private static Vector2 RotateLayout(Vector2 value, float degrees)
|
||||
{
|
||||
float radians = degrees * Mathf.Deg2Rad;
|
||||
float cosine = Mathf.Cos(radians);
|
||||
float sine = Mathf.Sin(radians);
|
||||
return new Vector2(
|
||||
value.x * cosine - value.y * sine,
|
||||
value.x * sine + value.y * cosine);
|
||||
}
|
||||
|
||||
private static void CreateOrUpdatePreset(
|
||||
string assetPath,
|
||||
string presetName,
|
||||
|
||||
@@ -10,12 +10,14 @@ namespace Colosseum.UI
|
||||
{
|
||||
[SerializeField] private RectTransform rootRect;
|
||||
[SerializeField] private Image backgroundImage;
|
||||
[SerializeField] private Image fillImage;
|
||||
[SerializeField] private Image innerImage;
|
||||
[SerializeField] private Button button;
|
||||
[SerializeField] private Outline outline;
|
||||
|
||||
public RectTransform RootRect => rootRect;
|
||||
public Image BackgroundImage => backgroundImage;
|
||||
public Image FillImage => fillImage;
|
||||
public Image InnerImage => innerImage;
|
||||
public Button Button => button;
|
||||
public Outline Outline => outline;
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace Colosseum.UI
|
||||
public RectTransform RectTransform;
|
||||
public Button Button;
|
||||
public Image Image;
|
||||
public Image FillImage;
|
||||
public Image InnerImage;
|
||||
public Outline Outline;
|
||||
}
|
||||
@@ -69,9 +70,10 @@ namespace Colosseum.UI
|
||||
[SerializeField] private Color statusErrorColor = new Color(1f, 0.52f, 0.45f, 1f);
|
||||
[SerializeField] private Color lineColor = new Color(0.72f, 0.67f, 0.53f, 0.4f);
|
||||
[SerializeField] private Color activeLineColor = new Color(0.98f, 0.9f, 0.7f, 0.92f);
|
||||
[SerializeField] private float graphCenterYOffset = -118f;
|
||||
private const float LeftPanelWidth = 292f;
|
||||
private const float RightPanelWidth = 308f;
|
||||
private const float GraphPadding = 52f;
|
||||
private const float GraphPadding = 24f;
|
||||
private const float ConnectionThickness = 7f;
|
||||
|
||||
private readonly Dictionary<PassiveNodeData, NodeVisual> nodeVisuals = new();
|
||||
@@ -399,8 +401,8 @@ namespace Colosseum.UI
|
||||
|
||||
Rect canvasRect = canvasRectTransform.rect;
|
||||
panelRectTransform.sizeDelta = new Vector2(
|
||||
Mathf.Max(1120f, canvasRect.width - 48f),
|
||||
Mathf.Max(680f, canvasRect.height - 48f));
|
||||
Mathf.Max(1160f, canvasRect.width - 24f),
|
||||
Mathf.Max(720f, canvasRect.height - 24f));
|
||||
}
|
||||
|
||||
private void CreateToggleButton()
|
||||
@@ -884,6 +886,11 @@ namespace Colosseum.UI
|
||||
image.sprite = GetNodeSprite(node);
|
||||
image.type = Image.Type.Simple;
|
||||
image.preserveAspect = true;
|
||||
Image fillImage = nodeView.FillImage;
|
||||
if (fillImage != null)
|
||||
{
|
||||
fillImage.type = Image.Type.Sliced;
|
||||
}
|
||||
Image innerImage = nodeView.InnerImage;
|
||||
if (innerImage != null)
|
||||
{
|
||||
@@ -913,6 +920,7 @@ namespace Colosseum.UI
|
||||
RectTransform = rectTransform,
|
||||
Button = button,
|
||||
Image = image,
|
||||
FillImage = fillImage,
|
||||
InnerImage = innerImage,
|
||||
Outline = nodeView.Outline != null ? nodeView.Outline : button.GetComponent<Outline>(),
|
||||
};
|
||||
@@ -943,7 +951,11 @@ namespace Colosseum.UI
|
||||
}
|
||||
|
||||
StringBuilder builder = new StringBuilder();
|
||||
if (!string.IsNullOrWhiteSpace(focusedNode.DisplayName))
|
||||
{
|
||||
builder.AppendLine($"<size=30><b>{focusedNode.DisplayName}</b></size>");
|
||||
}
|
||||
|
||||
builder.AppendLine($"<size=18>{PassivePresentationUtility.GetBranchLabel(focusedNode.Branch)} | {PassivePresentationUtility.GetNodeKindLabel(focusedNode.NodeKind)} | 축 {PassivePresentationUtility.GetAxisSummary(focusedNode.AxisMask)}</size>");
|
||||
builder.AppendLine($"<size=18>비용 {focusedNode.Cost}</size>");
|
||||
|
||||
@@ -1091,12 +1103,16 @@ namespace Colosseum.UI
|
||||
visual.Button.interactable = true;
|
||||
visual.Image.sprite = GetNodeSprite(node);
|
||||
visual.Image.color = fillColor;
|
||||
if (visual.FillImage != null)
|
||||
{
|
||||
visual.FillImage.color = GetNodeFillColor(selected, selectable, focused);
|
||||
}
|
||||
if (visual.InnerImage != null)
|
||||
{
|
||||
visual.InnerImage.sprite = GetInnerNodeSprite();
|
||||
visual.InnerImage.color = GetInnerNodeColor(selected, selectable, focused);
|
||||
}
|
||||
visual.RectTransform.localScale = selected ? new Vector3(1.05f, 1.05f, 1f) : focused ? new Vector3(1.03f, 1.03f, 1f) : Vector3.one;
|
||||
visual.RectTransform.localScale = Vector3.one;
|
||||
|
||||
Outline outline = visual.Outline != null ? visual.Outline : visual.Button.GetComponent<Outline>();
|
||||
if (outline == null)
|
||||
@@ -1125,12 +1141,11 @@ namespace Colosseum.UI
|
||||
private Vector2 GetGraphAnchoredPosition(Vector2 layoutPosition)
|
||||
{
|
||||
Rect rect = graphRectTransform != null ? graphRectTransform.rect : new Rect(0f, 0f, 640f, 480f);
|
||||
float halfWidth = Mathf.Max(0f, rect.width * 0.5f - GraphPadding);
|
||||
float halfHeight = Mathf.Max(0f, rect.height * 0.5f - GraphPadding);
|
||||
float halfExtent = Mathf.Max(0f, Mathf.Min(rect.width, rect.height) * 0.5f - GraphPadding);
|
||||
|
||||
return new Vector2(
|
||||
Mathf.Clamp(layoutPosition.x, -1f, 1f) * halfWidth,
|
||||
Mathf.Clamp(layoutPosition.y, -1f, 1f) * halfHeight);
|
||||
Mathf.Clamp(layoutPosition.x, -1f, 1f) * halfExtent,
|
||||
Mathf.Clamp(layoutPosition.y, -1f, 1f) * halfExtent + graphCenterYOffset);
|
||||
}
|
||||
|
||||
private static string BuildConnectionKey(PassiveNodeData leftNode, PassiveNodeData rightNode)
|
||||
@@ -1142,7 +1157,7 @@ namespace Colosseum.UI
|
||||
|
||||
private Sprite GetNodeSprite(PassiveNodeData node)
|
||||
{
|
||||
bool useSpecialSprite = node != null && (node.NodeKind == PassiveNodeKind.Hub || node.NodeKind == PassiveNodeKind.Bridge || node.NodeKind == PassiveNodeKind.Capstone);
|
||||
bool useSpecialSprite = node != null && (node.NodeKind == PassiveNodeKind.Bridge || node.NodeKind == PassiveNodeKind.Capstone);
|
||||
Sprite fallbackSprite = useSpecialSprite ? normalNodeSprite : specialNodeSprite;
|
||||
Sprite preferredSprite = useSpecialSprite ? specialNodeSprite : normalNodeSprite;
|
||||
return preferredSprite != null ? preferredSprite : fallbackSprite;
|
||||
@@ -1170,6 +1185,20 @@ namespace Colosseum.UI
|
||||
return new Color(0.3f, 0.3f, 0.32f, 0.34f);
|
||||
}
|
||||
|
||||
private static Color GetNodeFillColor(bool selected, bool selectable, bool focused)
|
||||
{
|
||||
if (selected)
|
||||
return new Color(0.09f, 0.09f, 0.11f, 0.96f);
|
||||
|
||||
if (focused)
|
||||
return new Color(0.08f, 0.08f, 0.10f, 0.94f);
|
||||
|
||||
if (selectable)
|
||||
return new Color(0.07f, 0.07f, 0.09f, 0.92f);
|
||||
|
||||
return new Color(0.06f, 0.06f, 0.08f, 0.90f);
|
||||
}
|
||||
|
||||
private Color GetNodeBaseColor(PassiveNodeData node)
|
||||
{
|
||||
if (node.Branch == PassiveNodeBranch.Bridge)
|
||||
@@ -1198,19 +1227,21 @@ namespace Colosseum.UI
|
||||
{
|
||||
return node.NodeKind switch
|
||||
{
|
||||
PassiveNodeKind.Hub => new Vector2(88f, 88f),
|
||||
PassiveNodeKind.Capstone => new Vector2(78f, 78f),
|
||||
PassiveNodeKind.Bridge => new Vector2(64f, 64f),
|
||||
_ => new Vector2(70f, 70f),
|
||||
PassiveNodeKind.Hub => new Vector2(78f, 78f),
|
||||
PassiveNodeKind.Capstone => new Vector2(70f, 70f),
|
||||
PassiveNodeKind.Bridge => new Vector2(56f, 56f),
|
||||
_ => new Vector2(62f, 62f),
|
||||
};
|
||||
}
|
||||
|
||||
private static float GetConnectionInset(PassiveNodeData node)
|
||||
{
|
||||
Vector2 size = GetNodeSize(node);
|
||||
float radius = Mathf.Min(size.x, size.y) * 0.42f;
|
||||
float radius = Mathf.Min(size.x, size.y) * 0.5f + ConnectionThickness * 0.5f + 2f;
|
||||
if (node != null && node.NodeKind == PassiveNodeKind.Bridge)
|
||||
radius += 3f;
|
||||
radius += 4f;
|
||||
else if (node != null && (node.NodeKind == PassiveNodeKind.Hub || node.NodeKind == PassiveNodeKind.Capstone))
|
||||
radius += 2f;
|
||||
|
||||
return radius;
|
||||
}
|
||||
@@ -1380,7 +1411,13 @@ namespace Colosseum.UI
|
||||
Transform footerTransform = statusText.transform.parent;
|
||||
if (footerTransform != null)
|
||||
{
|
||||
footerTransform.gameObject.SetActive(hasMessage);
|
||||
Image footerImage = footerTransform.GetComponent<Image>();
|
||||
if (footerImage != null)
|
||||
{
|
||||
Color color = sectionBackgroundColor;
|
||||
color.a = hasMessage ? sectionBackgroundColor.a : 0f;
|
||||
footerImage.color = color;
|
||||
}
|
||||
}
|
||||
|
||||
statusText.text = hasMessage ? lastStatusMessage : string.Empty;
|
||||
|
||||
Reference in New Issue
Block a user