feat(magician): 시뮬 메커니즘 동기화 + 산출물 재생성

- poison 틱(행동 시작·사망 시 행동 생략·전멸 승리 체크)·aoe(개별 취약/방어)·heal 클램프·draw
- 테스트 4건 추가 — 전체 40건 통과

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-12 13:56:52 +09:00
parent e1d298f972
commit 7b6e181cb0
4 changed files with 219 additions and 356 deletions

View File

@@ -75219,11 +75219,11 @@
},
{
"id": "0e40000c-0000-4000-8000-00000e40000c",
"path": "/ui/DefaultGroup/JobSelectHud/Job_fighter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot1",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Job_fighter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_fighter",
"name": "Job_slot1",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot1",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -75407,11 +75407,11 @@
},
{
"id": "0e40000d-0000-4000-8000-00000e40000d",
"path": "/ui/DefaultGroup/JobSelectHud/Job_fighter/Name",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot1/Name",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Name",
"path": "/ui/DefaultGroup/JobSelectHud/Job_fighter/Name",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot1/Name",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -75585,7 +75585,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "파이터",
"Text": "",
"UseOutLine": true,
"Enable": true
}
@@ -75595,11 +75595,11 @@
},
{
"id": "0e40000e-0000-4000-8000-00000e40000e",
"path": "/ui/DefaultGroup/JobSelectHud/Job_fighter/Desc",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot1/Desc",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Desc",
"path": "/ui/DefaultGroup/JobSelectHud/Job_fighter/Desc",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot1/Desc",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -75773,7 +75773,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "공격 특화\n콤보 어택 · 버서크\n라이징 어택",
"Text": "",
"UseOutLine": true,
"Enable": true
}
@@ -75783,11 +75783,11 @@
},
{
"id": "0e40000f-0000-4000-8000-00000e40000f",
"path": "/ui/DefaultGroup/JobSelectHud/Job_fighter/Starter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot1/Starter",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Starter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_fighter/Starter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot1/Starter",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -75961,7 +75961,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "대표 카드: 콤보 어택",
"Text": "",
"UseOutLine": true,
"Enable": true
}
@@ -75971,11 +75971,11 @@
},
{
"id": "0e400010-0000-4000-8000-00000e400010",
"path": "/ui/DefaultGroup/JobSelectHud/Job_page",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot2",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Job_page",
"path": "/ui/DefaultGroup/JobSelectHud/Job_page",
"name": "Job_slot2",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot2",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -76159,11 +76159,11 @@
},
{
"id": "0e400011-0000-4000-8000-00000e400011",
"path": "/ui/DefaultGroup/JobSelectHud/Job_page/Name",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot2/Name",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Name",
"path": "/ui/DefaultGroup/JobSelectHud/Job_page/Name",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot2/Name",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -76337,7 +76337,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "페이지",
"Text": "",
"UseOutLine": true,
"Enable": true
}
@@ -76347,11 +76347,11 @@
},
{
"id": "0e400012-0000-4000-8000-00000e400012",
"path": "/ui/DefaultGroup/JobSelectHud/Job_page/Desc",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot2/Desc",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Desc",
"path": "/ui/DefaultGroup/JobSelectHud/Job_page/Desc",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot2/Desc",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -76525,7 +76525,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "속성 차지 특화\n썬더/블리자드 차지\n파워 가드",
"Text": "",
"UseOutLine": true,
"Enable": true
}
@@ -76535,11 +76535,11 @@
},
{
"id": "0e400013-0000-4000-8000-00000e400013",
"path": "/ui/DefaultGroup/JobSelectHud/Job_page/Starter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot2/Starter",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Starter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_page/Starter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot2/Starter",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -76713,7 +76713,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "대표 카드: 썬더 차지",
"Text": "",
"UseOutLine": true,
"Enable": true
}
@@ -76723,11 +76723,11 @@
},
{
"id": "0e400014-0000-4000-8000-00000e400014",
"path": "/ui/DefaultGroup/JobSelectHud/Job_spearman",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot3",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.ButtonComponent",
"jsonString": {
"name": "Job_spearman",
"path": "/ui/DefaultGroup/JobSelectHud/Job_spearman",
"name": "Job_slot3",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot3",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -76911,11 +76911,11 @@
},
{
"id": "0e400015-0000-4000-8000-00000e400015",
"path": "/ui/DefaultGroup/JobSelectHud/Job_spearman/Name",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot3/Name",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Name",
"path": "/ui/DefaultGroup/JobSelectHud/Job_spearman/Name",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot3/Name",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -77089,7 +77089,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "스피어맨",
"Text": "",
"UseOutLine": true,
"Enable": true
}
@@ -77099,11 +77099,11 @@
},
{
"id": "0e400016-0000-4000-8000-00000e400016",
"path": "/ui/DefaultGroup/JobSelectHud/Job_spearman/Desc",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot3/Desc",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Desc",
"path": "/ui/DefaultGroup/JobSelectHud/Job_spearman/Desc",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot3/Desc",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -77277,7 +77277,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "방어·관통 특화\n피어스 · 아이언 월\n하이퍼 바디",
"Text": "",
"UseOutLine": true,
"Enable": true
}
@@ -77287,11 +77287,11 @@
},
{
"id": "0e400017-0000-4000-8000-00000e400017",
"path": "/ui/DefaultGroup/JobSelectHud/Job_spearman/Starter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot3/Starter",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent,MOD.Core.TextComponent",
"jsonString": {
"name": "Starter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_spearman/Starter",
"path": "/ui/DefaultGroup/JobSelectHud/Job_slot3/Starter",
"nameEditable": true,
"enable": true,
"visible": true,
@@ -77465,7 +77465,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "대표 카드: 피어스",
"Text": "",
"UseOutLine": true,
"Enable": true
}
@@ -289904,9 +289904,9 @@
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.11,
"g": 0.12,
"b": 0.14,
"r": 0.16,
"g": 0.2,
"b": 0.26,
"a": 1
},
"DropShadow": false,
@@ -289936,7 +289936,7 @@
"a": 1
},
"OutlineWidth": 3,
"RaycastTarget": false,
"RaycastTarget": true,
"Type": 1,
"Enable": true
},
@@ -289985,7 +289985,7 @@
"KeyCode": 0,
"OverrideSorting": false,
"Transition": 1,
"Enable": false
"Enable": true
}
],
"@version": 1
@@ -290143,9 +290143,9 @@
"DropShadowDistance": 32,
"Font": 0,
"FontColor": {
"r": 0.55,
"g": 0.58,
"b": 0.62,
"r": 0.94,
"g": 0.74,
"b": 0.26,
"a": 1
},
"FontSize": 34,
@@ -290280,9 +290280,9 @@
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.18,
"g": 0.19,
"b": 0.21,
"r": 0.3,
"g": 0.4,
"b": 0.75,
"a": 1
},
"DropShadow": false,
@@ -290472,9 +290472,9 @@
"DropShadowDistance": 32,
"Font": 0,
"FontColor": {
"r": 0.52,
"g": 0.55,
"b": 0.59,
"r": 0.86,
"g": 0.9,
"b": 0.94,
"a": 1
},
"FontSize": 20,
@@ -290500,7 +290500,7 @@
"bottom": 0
},
"SizeFit": false,
"Text": "추후 열림",
"Text": "마법 원거리 딜러",
"UseOutLine": true,
"Enable": true
}
@@ -290508,288 +290508,6 @@
"@version": 1
}
},
{
"id": "0e000098-0000-4000-8000-00000e000098",
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton/LockBody",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "LockBody",
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton/LockBody",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 3,
"pathConstraints": "/////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 38,
"y": 33
},
"OffsetMin": {
"x": -38,
"y": -25
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 76,
"y": 58
},
"UIMode": 1,
"UIScale": {
"x": 1,
"y": 1,
"z": 1
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0,
"y": 4
},
"Position": {
"x": 0,
"y": 4,
"z": 0
},
"QuaternionRotation": {
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"Scale": {
"x": 1,
"y": 1,
"z": 1
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0,
"y": 0
},
"LocalScale": {
"x": 1,
"y": 1
},
"OverrideSorting": false,
"PlayRate": 1,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.78,
"g": 0.69,
"b": 0.42,
"a": 1
},
"DropShadow": false,
"DropShadowAngle": 30,
"DropShadowColor": {
"r": 0,
"g": 0,
"b": 0,
"a": 0.72
},
"DropShadowDistance": 32,
"FillAmount": 1,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0,
"g": 0,
"b": 0,
"a": 1
},
"OutlineWidth": 3,
"RaycastTarget": false,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0e0000a2-0000-4000-8000-00000e0000a2",
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton/LockShackle",
"componentNames": "MOD.Core.UITransformComponent,MOD.Core.SpriteGUIRendererComponent",
"jsonString": {
"name": "LockShackle",
"path": "/ui/DefaultGroup/CharacterSelectHud/MageButton/LockShackle",
"nameEditable": true,
"enable": true,
"visible": true,
"localize": true,
"displayOrder": 4,
"pathConstraints": "/////",
"revision": 1,
"origin": {
"type": "Model",
"entry_id": "UISprite",
"sub_entity_id": null,
"root_entity_id": null,
"replaced_model_id": null
},
"modelId": "uisprite",
"@components": [
{
"@type": "MOD.Core.UITransformComponent",
"ActivePlatform": 255,
"AlignmentOption": 0,
"AnchorsMax": {
"x": 0.5,
"y": 0.5
},
"AnchorsMin": {
"x": 0.5,
"y": 0.5
},
"MobileOnly": false,
"OffsetMax": {
"x": 27,
"y": 69
},
"OffsetMin": {
"x": -27,
"y": 27
},
"Pivot": {
"x": 0.5,
"y": 0.5
},
"RectSize": {
"x": 54,
"y": 42
},
"UIMode": 1,
"UIScale": {
"x": 1,
"y": 1,
"z": 1
},
"UIVersion": 2,
"anchoredPosition": {
"x": 0,
"y": 48
},
"Position": {
"x": 0,
"y": 48,
"z": 0
},
"QuaternionRotation": {
"x": 0,
"y": 0,
"z": 0,
"w": 1
},
"Scale": {
"x": 1,
"y": 1,
"z": 1
},
"Enable": true
},
{
"@type": "MOD.Core.SpriteGUIRendererComponent",
"AnimClipPlayType": 0,
"EndFrameIndex": 2147483647,
"ImageRUID": {
"DataId": ""
},
"LocalPosition": {
"x": 0,
"y": 0
},
"LocalScale": {
"x": 1,
"y": 1
},
"OverrideSorting": false,
"PlayRate": 1,
"PreserveSprite": 0,
"StartFrameIndex": 0,
"Color": {
"r": 0.78,
"g": 0.69,
"b": 0.42,
"a": 1
},
"DropShadow": false,
"DropShadowAngle": 30,
"DropShadowColor": {
"r": 0,
"g": 0,
"b": 0,
"a": 0.72
},
"DropShadowDistance": 32,
"FillAmount": 1,
"FillCenter": true,
"FillClockWise": true,
"FillMethod": 0,
"FillOrigin": 0,
"FlipX": false,
"FlipY": false,
"FrameColumn": 1,
"FrameRate": 0,
"FrameRow": 1,
"Outline": false,
"OutlineColor": {
"r": 0,
"g": 0,
"b": 0,
"a": 1
},
"OutlineWidth": 3,
"RaycastTarget": false,
"Type": 1,
"Enable": true
}
],
"@version": 1
}
},
{
"id": "0e0000b4-0000-4000-8000-00000e0000b4",
"path": "/ui/DefaultGroup/CharacterSelectHud/StartButton",