diff --git a/assets/bundles/battleGame/prefab/BattleGame.prefab b/assets/bundles/battleGame/prefab/BattleGame.prefab
index 5bbe23d..78d3661 100644
--- a/assets/bundles/battleGame/prefab/BattleGame.prefab
+++ b/assets/bundles/battleGame/prefab/BattleGame.prefab
@@ -34,53 +34,53 @@
"__id__": 171
},
{
- "__id__": 670
+ "__id__": 679
},
{
- "__id__": 746
+ "__id__": 755
},
{
- "__id__": 752
+ "__id__": 761
},
{
- "__id__": 756
+ "__id__": 765
},
{
- "__id__": 770
+ "__id__": 779
},
{
- "__id__": 798
+ "__id__": 807
},
{
- "__id__": 826
+ "__id__": 835
},
{
- "__id__": 854
+ "__id__": 863
}
],
"_active": true,
"_components": [
{
- "__id__": 886
+ "__id__": 895
},
{
- "__id__": 888
+ "__id__": 897
},
{
- "__id__": 890
+ "__id__": 899
},
{
- "__id__": 892
+ "__id__": 901
},
{
- "__id__": 894
+ "__id__": 903
},
{
- "__id__": 896
+ "__id__": 905
}
],
"_prefab": {
- "__id__": 898
+ "__id__": 907
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -3559,14 +3559,14 @@
"_active": true,
"_components": [
{
- "__id__": 665
+ "__id__": 674
},
{
- "__id__": 667
+ "__id__": 676
}
],
"_prefab": {
- "__id__": 669
+ "__id__": 678
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -3631,29 +3631,29 @@
"__id__": 499
},
{
- "__id__": 529
+ "__id__": 538
},
{
- "__id__": 575
+ "__id__": 584
},
{
- "__id__": 595
+ "__id__": 604
},
{
- "__id__": 614
+ "__id__": 623
},
{
- "__id__": 620
+ "__id__": 629
}
],
"_active": true,
"_components": [
{
- "__id__": 662
+ "__id__": 671
}
],
"_prefab": {
- "__id__": 664
+ "__id__": 673
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -9668,22 +9668,22 @@
"__id__": 500
},
{
- "__id__": 518
+ "__id__": 527
}
],
"_active": true,
"_components": [
{
- "__id__": 526
+ "__id__": 535
}
],
"_prefab": {
- "__id__": 528
+ "__id__": 537
},
"_lpos": {
"__type__": "cc.Vec3",
"x": 0,
- "y": 231.475,
+ "y": 326.155,
"z": 0
},
"_lrot": {
@@ -9732,8 +9732,7 @@
"fileId": "1aMAzMzc5NTribLGuHEoWV",
"instance": {
"__id__": 502
- },
- "targetOverrides": null
+ }
},
{
"__type__": "cc.PrefabInstance",
@@ -9751,34 +9750,34 @@
"__id__": 505
},
{
- "__id__": 506
+ "__id__": 507
},
{
- "__id__": 507
+ "__id__": 509
},
{
- "__id__": 508
+ "__id__": 511
},
{
- "__id__": 510
+ "__id__": 513
},
{
- "__id__": 512
+ "__id__": 515
},
{
- "__id__": 513
+ "__id__": 517
},
{
- "__id__": 514
+ "__id__": 519
},
{
- "__id__": 515
+ "__id__": 521
},
{
- "__id__": 516
+ "__id__": 523
},
{
- "__id__": 517
+ "__id__": 525
}
],
"removedComponents": []
@@ -9802,22 +9801,28 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 504
+ "__id__": 506
},
"propertyPath": [
"_lpos"
],
"value": {
"__type__": "cc.Vec3",
- "x": -250,
+ "x": -68.401,
"y": 0,
"z": 0
}
},
+ {
+ "__type__": "cc.TargetInfo",
+ "localID": [
+ "1aMAzMzc5NTribLGuHEoWV"
+ ]
+ },
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 504
+ "__id__": 508
},
"propertyPath": [
"_lrot"
@@ -9830,10 +9835,16 @@
"w": 1
}
},
+ {
+ "__type__": "cc.TargetInfo",
+ "localID": [
+ "1aMAzMzc5NTribLGuHEoWV"
+ ]
+ },
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 504
+ "__id__": 510
},
"propertyPath": [
"_euler"
@@ -9845,10 +9856,16 @@
"z": 0
}
},
+ {
+ "__type__": "cc.TargetInfo",
+ "localID": [
+ "1aMAzMzc5NTribLGuHEoWV"
+ ]
+ },
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 509
+ "__id__": 512
},
"propertyPath": [
"_active"
@@ -9864,7 +9881,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 511
+ "__id__": 514
},
"propertyPath": [
"_fillStart"
@@ -9880,17 +9897,23 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 511
+ "__id__": 516
},
"propertyPath": [
"_fillRange"
],
"value": 1
},
+ {
+ "__type__": "cc.TargetInfo",
+ "localID": [
+ "0biHPUDyNCvq5xhE97po1Q"
+ ]
+ },
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 509
+ "__id__": 518
},
"propertyPath": [
"_lrot"
@@ -9903,10 +9926,16 @@
"w": 1
}
},
+ {
+ "__type__": "cc.TargetInfo",
+ "localID": [
+ "83dRLp6vJPr5YW/AdrqClc"
+ ]
+ },
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 509
+ "__id__": 520
},
"propertyPath": [
"_euler"
@@ -9918,10 +9947,16 @@
"z": 0
}
},
+ {
+ "__type__": "cc.TargetInfo",
+ "localID": [
+ "83dRLp6vJPr5YW/AdrqClc"
+ ]
+ },
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 509
+ "__id__": 522
},
"propertyPath": [
"_lscale"
@@ -9933,10 +9968,16 @@
"z": 1
}
},
+ {
+ "__type__": "cc.TargetInfo",
+ "localID": [
+ "83dRLp6vJPr5YW/AdrqClc"
+ ]
+ },
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 511
+ "__id__": 524
},
"propertyPath": [
"_fillCenter"
@@ -9947,16 +9988,28 @@
"y": 0.5
}
},
+ {
+ "__type__": "cc.TargetInfo",
+ "localID": [
+ "0biHPUDyNCvq5xhE97po1Q"
+ ]
+ },
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 511
+ "__id__": 526
},
"propertyPath": [
"_fillType"
],
"value": 2
},
+ {
+ "__type__": "cc.TargetInfo",
+ "localID": [
+ "0biHPUDyNCvq5xhE97po1Q"
+ ]
+ },
{
"__type__": "cc.Node",
"_objFlags": 0,
@@ -9964,14 +10017,14 @@
"__id__": 499
},
"_prefab": {
- "__id__": 519
+ "__id__": 528
},
"__editorExtras__": {}
},
{
"__type__": "cc.PrefabInfo",
"root": {
- "__id__": 518
+ "__id__": 527
},
"asset": {
"__uuid__": "af9aa6b3-9c54-4fa4-b599-0c91f7442ed2",
@@ -9979,7 +10032,7 @@
},
"fileId": "1aMAzMzc5NTribLGuHEoWV",
"instance": {
- "__id__": 520
+ "__id__": 529
},
"targetOverrides": null
},
@@ -9993,16 +10046,16 @@
"mountedComponents": [],
"propertyOverrides": [
{
- "__id__": 521
+ "__id__": 530
},
{
- "__id__": 523
+ "__id__": 532
},
{
- "__id__": 524
+ "__id__": 533
},
{
- "__id__": 525
+ "__id__": 534
}
],
"removedComponents": []
@@ -10010,7 +10063,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 522
+ "__id__": 531
},
"propertyPath": [
"_name"
@@ -10026,14 +10079,14 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 522
+ "__id__": 531
},
"propertyPath": [
"_lpos"
],
"value": {
"__type__": "cc.Vec3",
- "x": 250,
+ "x": 51.327,
"y": 0,
"z": 0
}
@@ -10041,7 +10094,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 522
+ "__id__": 531
},
"propertyPath": [
"_lrot"
@@ -10057,7 +10110,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 522
+ "__id__": 531
},
"propertyPath": [
"_euler"
@@ -10079,7 +10132,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 527
+ "__id__": 536
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10120,29 +10173,29 @@
},
"_children": [
{
- "__id__": 530
+ "__id__": 539
},
{
- "__id__": 536
+ "__id__": 545
},
{
- "__id__": 548
+ "__id__": 557
}
],
"_active": false,
"_components": [
{
- "__id__": 568
+ "__id__": 577
},
{
- "__id__": 570
+ "__id__": 579
},
{
- "__id__": 572
+ "__id__": 581
}
],
"_prefab": {
- "__id__": 574
+ "__id__": 583
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10179,20 +10232,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 529
+ "__id__": 538
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 531
+ "__id__": 540
},
{
- "__id__": 533
+ "__id__": 542
}
],
"_prefab": {
- "__id__": 535
+ "__id__": 544
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10229,11 +10282,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 530
+ "__id__": 539
},
"_enabled": true,
"__prefab": {
- "__id__": 532
+ "__id__": 541
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10257,11 +10310,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 530
+ "__id__": 539
},
"_enabled": true,
"__prefab": {
- "__id__": 534
+ "__id__": 543
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -10315,24 +10368,24 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 529
+ "__id__": 538
},
"_children": [
{
- "__id__": 537
+ "__id__": 546
}
],
"_active": true,
"_components": [
{
- "__id__": 543
+ "__id__": 552
},
{
- "__id__": 545
+ "__id__": 554
}
],
"_prefab": {
- "__id__": 547
+ "__id__": 556
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10369,20 +10422,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 536
+ "__id__": 545
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 538
+ "__id__": 547
},
{
- "__id__": 540
+ "__id__": 549
}
],
"_prefab": {
- "__id__": 542
+ "__id__": 551
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -10419,11 +10472,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 537
+ "__id__": 546
},
"_enabled": true,
"__prefab": {
- "__id__": 539
+ "__id__": 548
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10447,11 +10500,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 537
+ "__id__": 546
},
"_enabled": true,
"__prefab": {
- "__id__": 541
+ "__id__": 550
},
"_lineHeight": 40,
"_string": "",
@@ -10498,11 +10551,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 536
+ "__id__": 545
},
"_enabled": true,
"__prefab": {
- "__id__": 544
+ "__id__": 553
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10526,11 +10579,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 536
+ "__id__": 545
},
"_enabled": true,
"__prefab": {
- "__id__": 546
+ "__id__": 555
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -10582,17 +10635,17 @@
"__type__": "cc.Node",
"_objFlags": 0,
"_parent": {
- "__id__": 529
+ "__id__": 538
},
"_prefab": {
- "__id__": 549
+ "__id__": 558
},
"__editorExtras__": {}
},
{
"__type__": "cc.PrefabInfo",
"root": {
- "__id__": 548
+ "__id__": 557
},
"asset": {
"__uuid__": "834225e5-0107-4dc8-98b5-e203873774ae",
@@ -10600,7 +10653,7 @@
},
"fileId": "50SV7PXetCj5ArE9+5F3+9",
"instance": {
- "__id__": 550
+ "__id__": 559
},
"targetOverrides": null
},
@@ -10614,43 +10667,43 @@
"mountedComponents": [],
"propertyOverrides": [
{
- "__id__": 551
+ "__id__": 560
},
{
- "__id__": 553
+ "__id__": 562
},
{
- "__id__": 554
+ "__id__": 563
},
{
- "__id__": 555
+ "__id__": 564
},
{
- "__id__": 556
+ "__id__": 565
},
{
- "__id__": 558
+ "__id__": 567
},
{
- "__id__": 560
+ "__id__": 569
},
{
- "__id__": 561
+ "__id__": 570
},
{
- "__id__": 562
+ "__id__": 571
},
{
- "__id__": 563
+ "__id__": 572
},
{
- "__id__": 564
+ "__id__": 573
},
{
- "__id__": 566
+ "__id__": 575
},
{
- "__id__": 567
+ "__id__": 576
}
],
"removedComponents": []
@@ -10658,7 +10711,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 552
+ "__id__": 561
},
"propertyPath": [
"_name"
@@ -10674,7 +10727,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 552
+ "__id__": 561
},
"propertyPath": [
"_lpos"
@@ -10689,7 +10742,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 552
+ "__id__": 561
},
"propertyPath": [
"_lrot"
@@ -10705,7 +10758,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 552
+ "__id__": 561
},
"propertyPath": [
"_euler"
@@ -10720,7 +10773,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 557
+ "__id__": 566
},
"propertyPath": [
"_string"
@@ -10736,7 +10789,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 559
+ "__id__": 568
},
"propertyPath": [
"_contentSize"
@@ -10756,7 +10809,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 557
+ "__id__": 566
},
"propertyPath": [
"_color"
@@ -10772,7 +10825,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 557
+ "__id__": 566
},
"propertyPath": [
"_outlineColor"
@@ -10788,7 +10841,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 557
+ "__id__": 566
},
"propertyPath": [
"_fontSize"
@@ -10798,7 +10851,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 557
+ "__id__": 566
},
"propertyPath": [
"_actualFontSize"
@@ -10808,7 +10861,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 565
+ "__id__": 574
},
"propertyPath": [
"key"
@@ -10824,7 +10877,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 557
+ "__id__": 566
},
"propertyPath": [
"_outlineWidth"
@@ -10834,7 +10887,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 557
+ "__id__": 566
},
"propertyPath": [
"_isItalic"
@@ -10847,11 +10900,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 529
+ "__id__": 538
},
"_enabled": true,
"__prefab": {
- "__id__": 569
+ "__id__": 578
},
"_contentSize": {
"__type__": "cc.Size",
@@ -10875,11 +10928,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 529
+ "__id__": 538
},
"_enabled": true,
"__prefab": {
- "__id__": 571
+ "__id__": 580
},
"clickEvents": [],
"_interactable": true,
@@ -10931,11 +10984,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 529
+ "__id__": 538
},
"_enabled": true,
"__prefab": {
- "__id__": 573
+ "__id__": 582
},
"_id": ""
},
@@ -10966,26 +11019,26 @@
},
"_children": [
{
- "__id__": 576
+ "__id__": 585
},
{
- "__id__": 582
+ "__id__": 591
}
],
"_active": false,
"_components": [
{
- "__id__": 588
+ "__id__": 597
},
{
- "__id__": 590
+ "__id__": 599
},
{
- "__id__": 592
+ "__id__": 601
}
],
"_prefab": {
- "__id__": 594
+ "__id__": 603
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -11022,20 +11075,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 575
+ "__id__": 584
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 577
+ "__id__": 586
},
{
- "__id__": 579
+ "__id__": 588
}
],
"_prefab": {
- "__id__": 581
+ "__id__": 590
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -11072,11 +11125,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 576
+ "__id__": 585
},
"_enabled": true,
"__prefab": {
- "__id__": 578
+ "__id__": 587
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11100,11 +11153,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 576
+ "__id__": 585
},
"_enabled": true,
"__prefab": {
- "__id__": 580
+ "__id__": 589
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -11158,20 +11211,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 575
+ "__id__": 584
},
"_children": [],
"_active": false,
"_components": [
{
- "__id__": 583
+ "__id__": 592
},
{
- "__id__": 585
+ "__id__": 594
}
],
"_prefab": {
- "__id__": 587
+ "__id__": 596
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -11208,11 +11261,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 582
+ "__id__": 591
},
"_enabled": true,
"__prefab": {
- "__id__": 584
+ "__id__": 593
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11236,11 +11289,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 582
+ "__id__": 591
},
"_enabled": true,
"__prefab": {
- "__id__": 586
+ "__id__": 595
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -11294,11 +11347,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 575
+ "__id__": 584
},
"_enabled": true,
"__prefab": {
- "__id__": 589
+ "__id__": 598
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11322,11 +11375,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 575
+ "__id__": 584
},
"_enabled": true,
"__prefab": {
- "__id__": 591
+ "__id__": 600
},
"clickEvents": [],
"_interactable": true,
@@ -11366,7 +11419,7 @@
"_duration": 0.1,
"_zoomScale": 1.2,
"_target": {
- "__id__": 575
+ "__id__": 584
},
"_id": ""
},
@@ -11380,11 +11433,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 575
+ "__id__": 584
},
"_enabled": true,
"__prefab": {
- "__id__": 593
+ "__id__": 602
},
"_id": ""
},
@@ -11415,25 +11468,25 @@
},
"_children": [
{
- "__id__": 596
+ "__id__": 605
}
],
"_active": true,
"_components": [
{
- "__id__": 609
+ "__id__": 618
},
{
- "__id__": 611
+ "__id__": 620
}
],
"_prefab": {
- "__id__": 613
+ "__id__": 622
},
"_lpos": {
"__type__": "cc.Vec3",
- "x": -320.136,
- "y": 81.673,
+ "x": 150.159,
+ "y": 312.94,
"z": 0
},
"_lrot": {
@@ -11463,17 +11516,17 @@
"__type__": "cc.Node",
"_objFlags": 0,
"_parent": {
- "__id__": 595
+ "__id__": 604
},
"_prefab": {
- "__id__": 597
+ "__id__": 606
},
"__editorExtras__": {}
},
{
"__type__": "cc.PrefabInfo",
"root": {
- "__id__": 596
+ "__id__": 605
},
"asset": {
"__uuid__": "8c3b6798-7d6f-413a-8294-42d192319365",
@@ -11481,7 +11534,7 @@
},
"fileId": "72a/87Jc9HLoBBUpzMZMyg",
"instance": {
- "__id__": 598
+ "__id__": 607
},
"targetOverrides": null
},
@@ -11495,25 +11548,25 @@
"mountedComponents": [],
"propertyOverrides": [
{
- "__id__": 599
+ "__id__": 608
},
{
- "__id__": 601
+ "__id__": 610
},
{
- "__id__": 602
+ "__id__": 611
},
{
- "__id__": 603
+ "__id__": 612
},
{
- "__id__": 604
+ "__id__": 613
},
{
- "__id__": 605
+ "__id__": 614
},
{
- "__id__": 607
+ "__id__": 616
}
],
"removedComponents": []
@@ -11521,7 +11574,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 600
+ "__id__": 609
},
"propertyPath": [
"_name"
@@ -11537,7 +11590,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 600
+ "__id__": 609
},
"propertyPath": [
"_lpos"
@@ -11552,7 +11605,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 600
+ "__id__": 609
},
"propertyPath": [
"_lrot"
@@ -11568,7 +11621,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 600
+ "__id__": 609
},
"propertyPath": [
"_euler"
@@ -11583,7 +11636,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 600
+ "__id__": 609
},
"propertyPath": [
"_active"
@@ -11593,7 +11646,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 606
+ "__id__": 615
},
"propertyPath": [
"_active"
@@ -11609,7 +11662,7 @@
{
"__type__": "CCPropertyOverrideInfo",
"targetInfo": {
- "__id__": 608
+ "__id__": 617
},
"propertyPath": [
"_lscale"
@@ -11633,11 +11686,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 595
+ "__id__": 604
},
"_enabled": true,
"__prefab": {
- "__id__": 610
+ "__id__": 619
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11661,11 +11714,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 595
+ "__id__": 604
},
"_enabled": true,
"__prefab": {
- "__id__": 612
+ "__id__": 621
},
"_resizeMode": 1,
"_layoutType": 1,
@@ -11718,14 +11771,14 @@
"_active": false,
"_components": [
{
- "__id__": 615
+ "__id__": 624
},
{
- "__id__": 617
+ "__id__": 626
}
],
"_prefab": {
- "__id__": 619
+ "__id__": 628
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -11762,11 +11815,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 614
+ "__id__": 623
},
"_enabled": true,
"__prefab": {
- "__id__": 616
+ "__id__": 625
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11790,11 +11843,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 614
+ "__id__": 623
},
"_enabled": true,
"__prefab": {
- "__id__": 618
+ "__id__": 627
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -11852,35 +11905,35 @@
},
"_children": [
{
- "__id__": 621
+ "__id__": 630
},
{
- "__id__": 627
+ "__id__": 636
},
{
- "__id__": 633
+ "__id__": 642
},
{
- "__id__": 639
+ "__id__": 648
},
{
- "__id__": 645
+ "__id__": 654
},
{
- "__id__": 651
+ "__id__": 660
}
],
"_active": false,
"_components": [
{
- "__id__": 657
+ "__id__": 666
},
{
- "__id__": 659
+ "__id__": 668
}
],
"_prefab": {
- "__id__": 661
+ "__id__": 670
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -11917,20 +11970,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 620
+ "__id__": 629
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 622
+ "__id__": 631
},
{
- "__id__": 624
+ "__id__": 633
}
],
"_prefab": {
- "__id__": 626
+ "__id__": 635
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -11967,11 +12020,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 621
+ "__id__": 630
},
"_enabled": true,
"__prefab": {
- "__id__": 623
+ "__id__": 632
},
"_contentSize": {
"__type__": "cc.Size",
@@ -11995,11 +12048,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 621
+ "__id__": 630
},
"_enabled": true,
"__prefab": {
- "__id__": 625
+ "__id__": 634
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -12053,20 +12106,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 620
+ "__id__": 629
},
"_children": [],
"_active": false,
"_components": [
{
- "__id__": 628
+ "__id__": 637
},
{
- "__id__": 630
+ "__id__": 639
}
],
"_prefab": {
- "__id__": 632
+ "__id__": 641
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -12103,11 +12156,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 627
+ "__id__": 636
},
"_enabled": true,
"__prefab": {
- "__id__": 629
+ "__id__": 638
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12131,11 +12184,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 627
+ "__id__": 636
},
"_enabled": true,
"__prefab": {
- "__id__": 631
+ "__id__": 640
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -12189,20 +12242,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 620
+ "__id__": 629
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 634
+ "__id__": 643
},
{
- "__id__": 636
+ "__id__": 645
}
],
"_prefab": {
- "__id__": 638
+ "__id__": 647
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -12239,11 +12292,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 633
+ "__id__": 642
},
"_enabled": true,
"__prefab": {
- "__id__": 635
+ "__id__": 644
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12267,11 +12320,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 633
+ "__id__": 642
},
"_enabled": true,
"__prefab": {
- "__id__": 637
+ "__id__": 646
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -12325,20 +12378,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 620
+ "__id__": 629
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 640
+ "__id__": 649
},
{
- "__id__": 642
+ "__id__": 651
}
],
"_prefab": {
- "__id__": 644
+ "__id__": 653
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -12375,11 +12428,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 639
+ "__id__": 648
},
"_enabled": true,
"__prefab": {
- "__id__": 641
+ "__id__": 650
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12403,11 +12456,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 639
+ "__id__": 648
},
"_enabled": true,
"__prefab": {
- "__id__": 643
+ "__id__": 652
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -12461,20 +12514,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 620
+ "__id__": 629
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 646
+ "__id__": 655
},
{
- "__id__": 648
+ "__id__": 657
}
],
"_prefab": {
- "__id__": 650
+ "__id__": 659
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -12511,11 +12564,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 645
+ "__id__": 654
},
"_enabled": true,
"__prefab": {
- "__id__": 647
+ "__id__": 656
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12539,11 +12592,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 645
+ "__id__": 654
},
"_enabled": true,
"__prefab": {
- "__id__": 649
+ "__id__": 658
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -12597,20 +12650,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 620
+ "__id__": 629
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 652
+ "__id__": 661
},
{
- "__id__": 654
+ "__id__": 663
}
],
"_prefab": {
- "__id__": 656
+ "__id__": 665
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -12647,11 +12700,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 651
+ "__id__": 660
},
"_enabled": true,
"__prefab": {
- "__id__": 653
+ "__id__": 662
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12675,11 +12728,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 651
+ "__id__": 660
},
"_enabled": true,
"__prefab": {
- "__id__": 655
+ "__id__": 664
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -12756,11 +12809,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 620
+ "__id__": 629
},
"_enabled": true,
"__prefab": {
- "__id__": 658
+ "__id__": 667
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12784,11 +12837,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 620
+ "__id__": 629
},
"_enabled": true,
"__prefab": {
- "__id__": 660
+ "__id__": 669
},
"clickEvents": [],
"_interactable": true,
@@ -12857,7 +12910,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 663
+ "__id__": 672
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12898,7 +12951,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 666
+ "__id__": 675
},
"_contentSize": {
"__type__": "cc.Size",
@@ -12926,7 +12979,7 @@
},
"_enabled": false,
"__prefab": {
- "__id__": 668
+ "__id__": 677
},
"_alignFlags": 4,
"_target": null,
@@ -12975,56 +13028,56 @@
},
"_children": [
{
- "__id__": 671
+ "__id__": 680
},
{
- "__id__": 677
+ "__id__": 686
},
{
- "__id__": 683
+ "__id__": 692
},
{
- "__id__": 689
+ "__id__": 698
},
{
- "__id__": 695
+ "__id__": 704
},
{
- "__id__": 701
+ "__id__": 710
},
{
- "__id__": 707
+ "__id__": 716
},
{
- "__id__": 713
+ "__id__": 722
},
{
- "__id__": 719
+ "__id__": 728
},
{
- "__id__": 725
+ "__id__": 734
},
{
- "__id__": 731
+ "__id__": 740
}
],
"_active": false,
"_components": [
{
- "__id__": 737
+ "__id__": 746
},
{
- "__id__": 739
+ "__id__": 748
},
{
- "__id__": 741
+ "__id__": 750
},
{
- "__id__": 743
+ "__id__": 752
}
],
"_prefab": {
- "__id__": 745
+ "__id__": 754
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -13061,20 +13114,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 672
+ "__id__": 681
},
{
- "__id__": 674
+ "__id__": 683
}
],
"_prefab": {
- "__id__": 676
+ "__id__": 685
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -13111,11 +13164,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 671
+ "__id__": 680
},
"_enabled": true,
"__prefab": {
- "__id__": 673
+ "__id__": 682
},
"_contentSize": {
"__type__": "cc.Size",
@@ -13139,11 +13192,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 671
+ "__id__": 680
},
"_enabled": true,
"__prefab": {
- "__id__": 675
+ "__id__": 684
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -13197,20 +13250,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 678
+ "__id__": 687
},
{
- "__id__": 680
+ "__id__": 689
}
],
"_prefab": {
- "__id__": 682
+ "__id__": 691
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -13247,11 +13300,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 677
+ "__id__": 686
},
"_enabled": true,
"__prefab": {
- "__id__": 679
+ "__id__": 688
},
"_contentSize": {
"__type__": "cc.Size",
@@ -13275,11 +13328,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 677
+ "__id__": 686
},
"_enabled": true,
"__prefab": {
- "__id__": 681
+ "__id__": 690
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -13333,20 +13386,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 684
+ "__id__": 693
},
{
- "__id__": 686
+ "__id__": 695
}
],
"_prefab": {
- "__id__": 688
+ "__id__": 697
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -13383,11 +13436,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 683
+ "__id__": 692
},
"_enabled": true,
"__prefab": {
- "__id__": 685
+ "__id__": 694
},
"_contentSize": {
"__type__": "cc.Size",
@@ -13411,11 +13464,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 683
+ "__id__": 692
},
"_enabled": true,
"__prefab": {
- "__id__": 687
+ "__id__": 696
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -13469,20 +13522,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 690
+ "__id__": 699
},
{
- "__id__": 692
+ "__id__": 701
}
],
"_prefab": {
- "__id__": 694
+ "__id__": 703
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -13519,11 +13572,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 689
+ "__id__": 698
},
"_enabled": true,
"__prefab": {
- "__id__": 691
+ "__id__": 700
},
"_contentSize": {
"__type__": "cc.Size",
@@ -13547,11 +13600,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 689
+ "__id__": 698
},
"_enabled": true,
"__prefab": {
- "__id__": 693
+ "__id__": 702
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -13605,20 +13658,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 696
+ "__id__": 705
},
{
- "__id__": 698
+ "__id__": 707
}
],
"_prefab": {
- "__id__": 700
+ "__id__": 709
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -13655,11 +13708,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 695
+ "__id__": 704
},
"_enabled": true,
"__prefab": {
- "__id__": 697
+ "__id__": 706
},
"_contentSize": {
"__type__": "cc.Size",
@@ -13683,11 +13736,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 695
+ "__id__": 704
},
"_enabled": true,
"__prefab": {
- "__id__": 699
+ "__id__": 708
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -13741,20 +13794,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 702
+ "__id__": 711
},
{
- "__id__": 704
+ "__id__": 713
}
],
"_prefab": {
- "__id__": 706
+ "__id__": 715
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -13791,11 +13844,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 701
+ "__id__": 710
},
"_enabled": true,
"__prefab": {
- "__id__": 703
+ "__id__": 712
},
"_contentSize": {
"__type__": "cc.Size",
@@ -13819,11 +13872,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 701
+ "__id__": 710
},
"_enabled": true,
"__prefab": {
- "__id__": 705
+ "__id__": 714
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -13877,20 +13930,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 708
+ "__id__": 717
},
{
- "__id__": 710
+ "__id__": 719
}
],
"_prefab": {
- "__id__": 712
+ "__id__": 721
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -13927,11 +13980,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 707
+ "__id__": 716
},
"_enabled": true,
"__prefab": {
- "__id__": 709
+ "__id__": 718
},
"_contentSize": {
"__type__": "cc.Size",
@@ -13955,11 +14008,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 707
+ "__id__": 716
},
"_enabled": true,
"__prefab": {
- "__id__": 711
+ "__id__": 720
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -14013,20 +14066,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 714
+ "__id__": 723
},
{
- "__id__": 716
+ "__id__": 725
}
],
"_prefab": {
- "__id__": 718
+ "__id__": 727
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -14063,11 +14116,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 713
+ "__id__": 722
},
"_enabled": true,
"__prefab": {
- "__id__": 715
+ "__id__": 724
},
"_contentSize": {
"__type__": "cc.Size",
@@ -14091,11 +14144,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 713
+ "__id__": 722
},
"_enabled": true,
"__prefab": {
- "__id__": 717
+ "__id__": 726
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -14149,20 +14202,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 720
+ "__id__": 729
},
{
- "__id__": 722
+ "__id__": 731
}
],
"_prefab": {
- "__id__": 724
+ "__id__": 733
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -14199,11 +14252,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 719
+ "__id__": 728
},
"_enabled": true,
"__prefab": {
- "__id__": 721
+ "__id__": 730
},
"_contentSize": {
"__type__": "cc.Size",
@@ -14227,11 +14280,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 719
+ "__id__": 728
},
"_enabled": true,
"__prefab": {
- "__id__": 723
+ "__id__": 732
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -14285,20 +14338,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 726
+ "__id__": 735
},
{
- "__id__": 728
+ "__id__": 737
}
],
"_prefab": {
- "__id__": 730
+ "__id__": 739
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -14335,11 +14388,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 725
+ "__id__": 734
},
"_enabled": true,
"__prefab": {
- "__id__": 727
+ "__id__": 736
},
"_contentSize": {
"__type__": "cc.Size",
@@ -14363,11 +14416,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 725
+ "__id__": 734
},
"_enabled": true,
"__prefab": {
- "__id__": 729
+ "__id__": 738
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -14421,20 +14474,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 670
+ "__id__": 679
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 732
+ "__id__": 741
},
{
- "__id__": 734
+ "__id__": 743
}
],
"_prefab": {
- "__id__": 736
+ "__id__": 745
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -14471,11 +14524,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 731
+ "__id__": 740
},
"_enabled": true,
"__prefab": {
- "__id__": 733
+ "__id__": 742
},
"_contentSize": {
"__type__": "cc.Size",
@@ -14499,11 +14552,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 731
+ "__id__": 740
},
"_enabled": true,
"__prefab": {
- "__id__": 735
+ "__id__": 744
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -14557,11 +14610,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 670
+ "__id__": 679
},
"_enabled": true,
"__prefab": {
- "__id__": 738
+ "__id__": 747
},
"_contentSize": {
"__type__": "cc.Size",
@@ -14585,11 +14638,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 670
+ "__id__": 679
},
"_enabled": true,
"__prefab": {
- "__id__": 740
+ "__id__": 749
},
"_type": 0,
"_inverted": false,
@@ -14607,11 +14660,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 670
+ "__id__": 679
},
"_enabled": true,
"__prefab": {
- "__id__": 742
+ "__id__": 751
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -14653,11 +14706,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 670
+ "__id__": 679
},
"_enabled": false,
"__prefab": {
- "__id__": 744
+ "__id__": 753
},
"_resizeMode": 0,
"_layoutType": 1,
@@ -14710,14 +14763,14 @@
"_active": false,
"_components": [
{
- "__id__": 747
+ "__id__": 756
},
{
- "__id__": 749
+ "__id__": 758
}
],
"_prefab": {
- "__id__": 751
+ "__id__": 760
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -14754,11 +14807,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 746
+ "__id__": 755
},
"_enabled": true,
"__prefab": {
- "__id__": 748
+ "__id__": 757
},
"_contentSize": {
"__type__": "cc.Size",
@@ -14782,11 +14835,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 746
+ "__id__": 755
},
"_enabled": true,
"__prefab": {
- "__id__": 750
+ "__id__": 759
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -14846,11 +14899,11 @@
"_active": false,
"_components": [
{
- "__id__": 753
+ "__id__": 762
}
],
"_prefab": {
- "__id__": 755
+ "__id__": 764
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -14887,11 +14940,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 752
+ "__id__": 761
},
"_enabled": true,
"__prefab": {
- "__id__": 754
+ "__id__": 763
},
"_contentSize": {
"__type__": "cc.Size",
@@ -14932,23 +14985,23 @@
},
"_children": [
{
- "__id__": 757
+ "__id__": 766
}
],
"_active": false,
"_components": [
{
- "__id__": 763
+ "__id__": 772
},
{
- "__id__": 765
+ "__id__": 774
},
{
- "__id__": 767
+ "__id__": 776
}
],
"_prefab": {
- "__id__": 769
+ "__id__": 778
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -14985,20 +15038,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 756
+ "__id__": 765
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 758
+ "__id__": 767
},
{
- "__id__": 760
+ "__id__": 769
}
],
"_prefab": {
- "__id__": 762
+ "__id__": 771
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -15035,11 +15088,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 757
+ "__id__": 766
},
"_enabled": true,
"__prefab": {
- "__id__": 759
+ "__id__": 768
},
"_contentSize": {
"__type__": "cc.Size",
@@ -15063,11 +15116,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 757
+ "__id__": 766
},
"_enabled": true,
"__prefab": {
- "__id__": 761
+ "__id__": 770
},
"_lineHeight": 40,
"_string": "Rich",
@@ -15114,11 +15167,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 756
+ "__id__": 765
},
"_enabled": true,
"__prefab": {
- "__id__": 764
+ "__id__": 773
},
"_contentSize": {
"__type__": "cc.Size",
@@ -15142,11 +15195,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 756
+ "__id__": 765
},
"_enabled": true,
"__prefab": {
- "__id__": 766
+ "__id__": 775
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -15187,11 +15240,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 756
+ "__id__": 765
},
"_enabled": true,
"__prefab": {
- "__id__": 768
+ "__id__": 777
},
"_resizeMode": 1,
"_layoutType": 1,
@@ -15242,23 +15295,23 @@
},
"_children": [
{
- "__id__": 771
+ "__id__": 780
}
],
"_active": false,
"_components": [
{
- "__id__": 791
+ "__id__": 800
},
{
- "__id__": 793
+ "__id__": 802
},
{
- "__id__": 795
+ "__id__": 804
}
],
"_prefab": {
- "__id__": 797
+ "__id__": 806
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -15295,30 +15348,30 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 770
+ "__id__": 779
},
"_children": [
{
- "__id__": 772
+ "__id__": 781
},
{
- "__id__": 778
+ "__id__": 787
}
],
"_active": true,
"_components": [
{
- "__id__": 784
+ "__id__": 793
},
{
- "__id__": 786
+ "__id__": 795
},
{
- "__id__": 788
+ "__id__": 797
}
],
"_prefab": {
- "__id__": 790
+ "__id__": 799
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -15355,20 +15408,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 771
+ "__id__": 780
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 773
+ "__id__": 782
},
{
- "__id__": 775
+ "__id__": 784
}
],
"_prefab": {
- "__id__": 777
+ "__id__": 786
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -15405,11 +15458,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 772
+ "__id__": 781
},
"_enabled": true,
"__prefab": {
- "__id__": 774
+ "__id__": 783
},
"_contentSize": {
"__type__": "cc.Size",
@@ -15433,11 +15486,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 772
+ "__id__": 781
},
"_enabled": true,
"__prefab": {
- "__id__": 776
+ "__id__": 785
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -15514,20 +15567,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 771
+ "__id__": 780
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 779
+ "__id__": 788
},
{
- "__id__": 781
+ "__id__": 790
}
],
"_prefab": {
- "__id__": 783
+ "__id__": 792
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -15564,11 +15617,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 778
+ "__id__": 787
},
"_enabled": true,
"__prefab": {
- "__id__": 780
+ "__id__": 789
},
"_contentSize": {
"__type__": "cc.Size",
@@ -15592,11 +15645,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 778
+ "__id__": 787
},
"_enabled": true,
"__prefab": {
- "__id__": 782
+ "__id__": 791
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -15673,11 +15726,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 771
+ "__id__": 780
},
"_enabled": true,
"__prefab": {
- "__id__": 785
+ "__id__": 794
},
"_contentSize": {
"__type__": "cc.Size",
@@ -15701,11 +15754,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 771
+ "__id__": 780
},
"_enabled": true,
"__prefab": {
- "__id__": 787
+ "__id__": 796
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -15746,11 +15799,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 771
+ "__id__": 780
},
"_enabled": true,
"__prefab": {
- "__id__": 789
+ "__id__": 798
},
"_id": ""
},
@@ -15777,11 +15830,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 770
+ "__id__": 779
},
"_enabled": true,
"__prefab": {
- "__id__": 792
+ "__id__": 801
},
"_contentSize": {
"__type__": "cc.Size",
@@ -15805,11 +15858,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 770
+ "__id__": 779
},
"_enabled": true,
"__prefab": {
- "__id__": 794
+ "__id__": 803
},
"_alignFlags": 45,
"_target": null,
@@ -15841,11 +15894,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 770
+ "__id__": 779
},
"_enabled": true,
"__prefab": {
- "__id__": 796
+ "__id__": 805
},
"_id": ""
},
@@ -15876,23 +15929,23 @@
},
"_children": [
{
- "__id__": 799
+ "__id__": 808
}
],
"_active": false,
"_components": [
{
- "__id__": 819
+ "__id__": 828
},
{
- "__id__": 821
+ "__id__": 830
},
{
- "__id__": 823
+ "__id__": 832
}
],
"_prefab": {
- "__id__": 825
+ "__id__": 834
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -15929,30 +15982,30 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 798
+ "__id__": 807
},
"_children": [
{
- "__id__": 800
+ "__id__": 809
},
{
- "__id__": 806
+ "__id__": 815
}
],
"_active": true,
"_components": [
{
- "__id__": 812
+ "__id__": 821
},
{
- "__id__": 814
+ "__id__": 823
},
{
- "__id__": 816
+ "__id__": 825
}
],
"_prefab": {
- "__id__": 818
+ "__id__": 827
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -15989,20 +16042,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 799
+ "__id__": 808
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 801
+ "__id__": 810
},
{
- "__id__": 803
+ "__id__": 812
}
],
"_prefab": {
- "__id__": 805
+ "__id__": 814
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -16039,11 +16092,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 800
+ "__id__": 809
},
"_enabled": true,
"__prefab": {
- "__id__": 802
+ "__id__": 811
},
"_contentSize": {
"__type__": "cc.Size",
@@ -16067,11 +16120,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 800
+ "__id__": 809
},
"_enabled": true,
"__prefab": {
- "__id__": 804
+ "__id__": 813
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -16148,20 +16201,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 799
+ "__id__": 808
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 807
+ "__id__": 816
},
{
- "__id__": 809
+ "__id__": 818
}
],
"_prefab": {
- "__id__": 811
+ "__id__": 820
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -16198,11 +16251,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 806
+ "__id__": 815
},
"_enabled": true,
"__prefab": {
- "__id__": 808
+ "__id__": 817
},
"_contentSize": {
"__type__": "cc.Size",
@@ -16226,11 +16279,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 806
+ "__id__": 815
},
"_enabled": true,
"__prefab": {
- "__id__": 810
+ "__id__": 819
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -16307,11 +16360,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 799
+ "__id__": 808
},
"_enabled": true,
"__prefab": {
- "__id__": 813
+ "__id__": 822
},
"_contentSize": {
"__type__": "cc.Size",
@@ -16335,11 +16388,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 799
+ "__id__": 808
},
"_enabled": true,
"__prefab": {
- "__id__": 815
+ "__id__": 824
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -16380,11 +16433,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 799
+ "__id__": 808
},
"_enabled": true,
"__prefab": {
- "__id__": 817
+ "__id__": 826
},
"_id": ""
},
@@ -16411,11 +16464,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 798
+ "__id__": 807
},
"_enabled": true,
"__prefab": {
- "__id__": 820
+ "__id__": 829
},
"_contentSize": {
"__type__": "cc.Size",
@@ -16439,11 +16492,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 798
+ "__id__": 807
},
"_enabled": true,
"__prefab": {
- "__id__": 822
+ "__id__": 831
},
"_alignFlags": 45,
"_target": null,
@@ -16475,11 +16528,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 798
+ "__id__": 807
},
"_enabled": true,
"__prefab": {
- "__id__": 824
+ "__id__": 833
},
"_id": ""
},
@@ -16510,23 +16563,23 @@
},
"_children": [
{
- "__id__": 827
+ "__id__": 836
}
],
"_active": false,
"_components": [
{
- "__id__": 847
+ "__id__": 856
},
{
- "__id__": 849
+ "__id__": 858
},
{
- "__id__": 851
+ "__id__": 860
}
],
"_prefab": {
- "__id__": 853
+ "__id__": 862
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -16563,30 +16616,30 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 826
+ "__id__": 835
},
"_children": [
{
- "__id__": 828
+ "__id__": 837
},
{
- "__id__": 834
+ "__id__": 843
}
],
"_active": true,
"_components": [
{
- "__id__": 840
+ "__id__": 849
},
{
- "__id__": 842
+ "__id__": 851
},
{
- "__id__": 844
+ "__id__": 853
}
],
"_prefab": {
- "__id__": 846
+ "__id__": 855
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -16623,20 +16676,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 827
+ "__id__": 836
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 829
+ "__id__": 838
},
{
- "__id__": 831
+ "__id__": 840
}
],
"_prefab": {
- "__id__": 833
+ "__id__": 842
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -16673,11 +16726,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 828
+ "__id__": 837
},
"_enabled": true,
"__prefab": {
- "__id__": 830
+ "__id__": 839
},
"_contentSize": {
"__type__": "cc.Size",
@@ -16701,11 +16754,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 828
+ "__id__": 837
},
"_enabled": true,
"__prefab": {
- "__id__": 832
+ "__id__": 841
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -16782,20 +16835,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 827
+ "__id__": 836
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 835
+ "__id__": 844
},
{
- "__id__": 837
+ "__id__": 846
}
],
"_prefab": {
- "__id__": 839
+ "__id__": 848
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -16832,11 +16885,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 834
+ "__id__": 843
},
"_enabled": true,
"__prefab": {
- "__id__": 836
+ "__id__": 845
},
"_contentSize": {
"__type__": "cc.Size",
@@ -16860,11 +16913,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 834
+ "__id__": 843
},
"_enabled": true,
"__prefab": {
- "__id__": 838
+ "__id__": 847
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -16941,11 +16994,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 827
+ "__id__": 836
},
"_enabled": true,
"__prefab": {
- "__id__": 841
+ "__id__": 850
},
"_contentSize": {
"__type__": "cc.Size",
@@ -16969,11 +17022,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 827
+ "__id__": 836
},
"_enabled": true,
"__prefab": {
- "__id__": 843
+ "__id__": 852
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -17014,11 +17067,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 827
+ "__id__": 836
},
"_enabled": true,
"__prefab": {
- "__id__": 845
+ "__id__": 854
},
"_id": ""
},
@@ -17045,11 +17098,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 826
+ "__id__": 835
},
"_enabled": true,
"__prefab": {
- "__id__": 848
+ "__id__": 857
},
"_contentSize": {
"__type__": "cc.Size",
@@ -17073,11 +17126,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 826
+ "__id__": 835
},
"_enabled": true,
"__prefab": {
- "__id__": 850
+ "__id__": 859
},
"_alignFlags": 45,
"_target": null,
@@ -17109,11 +17162,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 826
+ "__id__": 835
},
"_enabled": true,
"__prefab": {
- "__id__": 852
+ "__id__": 861
},
"_id": ""
},
@@ -17144,23 +17197,23 @@
},
"_children": [
{
- "__id__": 855
+ "__id__": 864
},
{
- "__id__": 861
+ "__id__": 870
},
{
- "__id__": 877
+ "__id__": 886
}
],
"_active": false,
"_components": [
{
- "__id__": 883
+ "__id__": 892
}
],
"_prefab": {
- "__id__": 885
+ "__id__": 894
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -17197,20 +17250,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 854
+ "__id__": 863
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 856
+ "__id__": 865
},
{
- "__id__": 858
+ "__id__": 867
}
],
"_prefab": {
- "__id__": 860
+ "__id__": 869
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -17247,11 +17300,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 855
+ "__id__": 864
},
"_enabled": true,
"__prefab": {
- "__id__": 857
+ "__id__": 866
},
"_contentSize": {
"__type__": "cc.Size",
@@ -17275,11 +17328,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 855
+ "__id__": 864
},
"_enabled": true,
"__prefab": {
- "__id__": 859
+ "__id__": 868
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -17333,24 +17386,24 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 854
+ "__id__": 863
},
"_children": [
{
- "__id__": 862
+ "__id__": 871
},
{
- "__id__": 868
+ "__id__": 877
}
],
"_active": true,
"_components": [
{
- "__id__": 874
+ "__id__": 883
}
],
"_prefab": {
- "__id__": 876
+ "__id__": 885
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -17387,20 +17440,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 861
+ "__id__": 870
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 863
+ "__id__": 872
},
{
- "__id__": 865
+ "__id__": 874
}
],
"_prefab": {
- "__id__": 867
+ "__id__": 876
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -17437,11 +17490,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 862
+ "__id__": 871
},
"_enabled": true,
"__prefab": {
- "__id__": 864
+ "__id__": 873
},
"_contentSize": {
"__type__": "cc.Size",
@@ -17465,11 +17518,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 862
+ "__id__": 871
},
"_enabled": true,
"__prefab": {
- "__id__": 866
+ "__id__": 875
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -17523,20 +17576,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 861
+ "__id__": 870
},
"_children": [],
"_active": false,
"_components": [
{
- "__id__": 869
+ "__id__": 878
},
{
- "__id__": 871
+ "__id__": 880
}
],
"_prefab": {
- "__id__": 873
+ "__id__": 882
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -17573,11 +17626,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 868
+ "__id__": 877
},
"_enabled": true,
"__prefab": {
- "__id__": 870
+ "__id__": 879
},
"_contentSize": {
"__type__": "cc.Size",
@@ -17601,11 +17654,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 868
+ "__id__": 877
},
"_enabled": true,
"__prefab": {
- "__id__": 872
+ "__id__": 881
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -17659,11 +17712,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 861
+ "__id__": 870
},
"_enabled": true,
"__prefab": {
- "__id__": 875
+ "__id__": 884
},
"_contentSize": {
"__type__": "cc.Size",
@@ -17700,20 +17753,20 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
- "__id__": 854
+ "__id__": 863
},
"_children": [],
"_active": true,
"_components": [
{
- "__id__": 878
+ "__id__": 887
},
{
- "__id__": 880
+ "__id__": 889
}
],
"_prefab": {
- "__id__": 882
+ "__id__": 891
},
"_lpos": {
"__type__": "cc.Vec3",
@@ -17750,11 +17803,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 877
+ "__id__": 886
},
"_enabled": true,
"__prefab": {
- "__id__": 879
+ "__id__": 888
},
"_contentSize": {
"__type__": "cc.Size",
@@ -17778,11 +17831,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 877
+ "__id__": 886
},
"_enabled": true,
"__prefab": {
- "__id__": 881
+ "__id__": 890
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -17836,11 +17889,11 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
- "__id__": 854
+ "__id__": 863
},
"_enabled": true,
"__prefab": {
- "__id__": 884
+ "__id__": 893
},
"_contentSize": {
"__type__": "cc.Size",
@@ -17881,7 +17934,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 887
+ "__id__": 896
},
"_contentSize": {
"__type__": "cc.Size",
@@ -17909,7 +17962,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 889
+ "__id__": 898
},
"_alignFlags": 45,
"_target": null,
@@ -17945,7 +17998,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 891
+ "__id__": 900
},
"_id": ""
},
@@ -17963,7 +18016,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 893
+ "__id__": 902
},
"_type": 0,
"_inverted": false,
@@ -17985,7 +18038,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 895
+ "__id__": 904
},
"_id": ""
},
@@ -18003,7 +18056,7 @@
},
"_enabled": true,
"__prefab": {
- "__id__": 897
+ "__id__": 906
},
"_customMaterial": null,
"_srcBlendFactor": 2,
@@ -18052,13 +18105,13 @@
"targetOverrides": null,
"nestedPrefabInstanceRoots": [
{
- "__id__": 596
+ "__id__": 605
},
{
- "__id__": 548
+ "__id__": 557
},
{
- "__id__": 518
+ "__id__": 527
},
{
"__id__": 500
diff --git a/assets/bundles/battleGame/prefab/格子锁.prefab b/assets/bundles/battleGame/prefab/格子锁.prefab
index 2f43a53..eb31893 100644
--- a/assets/bundles/battleGame/prefab/格子锁.prefab
+++ b/assets/bundles/battleGame/prefab/格子锁.prefab
@@ -92,7 +92,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
- "x": -17.1845703125,
+ "x": -16.1845703125,
"y": 0,
"z": 0
},
@@ -228,7 +228,7 @@
},
"_lpos": {
"__type__": "cc.Vec3",
- "x": 12.5,
+ "x": 13.5,
"y": 0,
"z": 0
},
@@ -378,7 +378,7 @@
},
"_contentSize": {
"__type__": "cc.Size",
- "width": 82.369140625,
+ "width": 84.369140625,
"height": 68
},
"_anchorPoint": {
@@ -457,7 +457,7 @@
"height": 40
},
"_startAxis": 0,
- "_paddingLeft": 3,
+ "_paddingLeft": 5,
"_paddingRight": 10,
"_paddingTop": 0,
"_paddingBottom": 0,
@@ -473,7 +473,7 @@
},
{
"__type__": "cc.CompPrefabInfo",
- "fileId": "acA5MrJQNI66W+fTtjgwyu"
+ "fileId": "70ZyhmoIhBg4ERUGYZrVVb"
},
{
"__type__": "cc.PrefabInfo",
@@ -484,7 +484,6 @@
"__id__": 0
},
"fileId": "a01BJWthhKbr3LbCXP7YXR",
- "instance": null,
- "targetOverrides": null
+ "instance": null
}
]
\ No newline at end of file
diff --git a/assets/bundles/battleHero/prefab/skill/剑阵.prefab b/assets/bundles/battleHero/prefab/skill/剑阵.prefab
index aa5552a..d0dfd55 100644
--- a/assets/bundles/battleHero/prefab/skill/剑阵.prefab
+++ b/assets/bundles/battleHero/prefab/skill/剑阵.prefab
@@ -164,11 +164,11 @@
"a": 255
},
"_skeletonData": {
- "__uuid__": "b08da8a5-db6f-422d-8058-f2ae8c8dc279",
+ "__uuid__": "7b03a26d-8a9f-4312-a397-d414e1ef4574",
"__expectedType__": "sp.SkeletonData"
},
- "defaultSkin": "轩辕剑",
- "defaultAnimation": "诛仙剑技能",
+ "defaultSkin": "default",
+ "defaultAnimation": "剑阵",
"_premultipliedAlpha": true,
"_timeScale": 1,
"_preCacheMode": 0,
diff --git a/assets/bundles/battleHero/prefab/skill/水弹.prefab b/assets/bundles/battleHero/prefab/skill/水弹.prefab
new file mode 100644
index 0000000..8cdd929
--- /dev/null
+++ b/assets/bundles/battleHero/prefab/skill/水弹.prefab
@@ -0,0 +1,239 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "水弹",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "_native": "",
+ "data": {
+ "__id__": 1
+ },
+ "optimizationPolicy": 0,
+ "persistent": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "水弹",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "_parent": null,
+ "_children": [
+ {
+ "__id__": 2
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 8
+ }
+ ],
+ "_prefab": {
+ "__id__": 10
+ },
+ "_lpos": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_lrot": {
+ "__type__": "cc.Quat",
+ "x": 0,
+ "y": 0,
+ "z": 0,
+ "w": 1
+ },
+ "_lscale": {
+ "__type__": "cc.Vec3",
+ "x": 1,
+ "y": 1,
+ "z": 1
+ },
+ "_mobility": 0,
+ "_layer": 33554432,
+ "_euler": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "飞行水弹",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 3
+ },
+ {
+ "__id__": 5
+ }
+ ],
+ "_prefab": {
+ "__id__": 7
+ },
+ "_lpos": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_lrot": {
+ "__type__": "cc.Quat",
+ "x": 0,
+ "y": 0,
+ "z": 1,
+ "w": 6.123233995736766e-17
+ },
+ "_lscale": {
+ "__type__": "cc.Vec3",
+ "x": 1,
+ "y": 1,
+ "z": 1
+ },
+ "_mobility": 0,
+ "_layer": 33554432,
+ "_euler": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 180
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.UITransform",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 4
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 322,
+ "height": 122
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "fdzTh+tYZEhI11kKqjFBe7"
+ },
+ {
+ "__type__": "cc.Sprite",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 6
+ },
+ "_customMaterial": null,
+ "_srcBlendFactor": 2,
+ "_dstBlendFactor": 4,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_spriteFrame": {
+ "__uuid__": "d0abd767-3ed4-49ca-b7dd-e295c41cd319@f9941",
+ "__expectedType__": "cc.SpriteFrame"
+ },
+ "_type": 0,
+ "_fillType": 0,
+ "_sizeMode": 1,
+ "_fillCenter": {
+ "__type__": "cc.Vec2",
+ "x": 0,
+ "y": 0
+ },
+ "_fillStart": 0,
+ "_fillRange": 0,
+ "_isTrimmedMode": true,
+ "_useGrayscale": false,
+ "_atlas": null,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "cfciGdRx1ORZesbsRtCqtj"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "41giWeE6BPxKcxypzVJSnI",
+ "instance": null,
+ "targetOverrides": null,
+ "nestedPrefabInstanceRoots": null
+ },
+ {
+ "__type__": "cc.UITransform",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 9
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 200,
+ "height": 200
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "451RzMpQpFLalWlPKOafD2"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "38JEit66ZI+Y7iGQ+17T7W",
+ "instance": null,
+ "targetOverrides": null
+ }
+]
\ No newline at end of file
diff --git a/assets/bundles/battleHero/prefab/skill/水弹.prefab.meta b/assets/bundles/battleHero/prefab/skill/水弹.prefab.meta
new file mode 100644
index 0000000..f381fb1
--- /dev/null
+++ b/assets/bundles/battleHero/prefab/skill/水弹.prefab.meta
@@ -0,0 +1,13 @@
+{
+ "ver": "1.1.50",
+ "importer": "prefab",
+ "imported": true,
+ "uuid": "4148572e-42b7-48ae-9ef7-df2889a4e162",
+ "files": [
+ ".json"
+ ],
+ "subMetas": {},
+ "userData": {
+ "syncNodeName": "水弹"
+ }
+}
diff --git a/assets/bundles/battleHero/prefab/skill/玉帝飞剑.prefab b/assets/bundles/battleHero/prefab/skill/飞剑.prefab
similarity index 91%
rename from assets/bundles/battleHero/prefab/skill/玉帝飞剑.prefab
rename to assets/bundles/battleHero/prefab/skill/飞剑.prefab
index e710d54..ca856f9 100644
--- a/assets/bundles/battleHero/prefab/skill/玉帝飞剑.prefab
+++ b/assets/bundles/battleHero/prefab/skill/飞剑.prefab
@@ -1,7 +1,7 @@
[
{
"__type__": "cc.Prefab",
- "_name": "玉帝飞剑",
+ "_name": "飞剑",
"_objFlags": 0,
"__editorExtras__": {},
"_native": "",
@@ -13,7 +13,7 @@
},
{
"__type__": "cc.Node",
- "_name": "玉帝飞剑",
+ "_name": "飞剑",
"_objFlags": 0,
"__editorExtras__": {},
"_parent": null,
@@ -94,8 +94,8 @@
"__type__": "cc.Quat",
"x": 0,
"y": 0,
- "z": 1,
- "w": 6.123233995736766e-17
+ "z": -0.7071067811865475,
+ "w": 0.7071067811865476
},
"_lscale": {
"__type__": "cc.Vec3",
@@ -109,7 +109,7 @@
"__type__": "cc.Vec3",
"x": 0,
"y": 0,
- "z": 180
+ "z": -90
},
"_id": ""
},
@@ -127,13 +127,13 @@
},
"_contentSize": {
"__type__": "cc.Size",
- "width": 29.399999618530273,
- "height": 52.79999923706055
+ "width": 38.47999954223633,
+ "height": 79.19999694824219
},
"_anchorPoint": {
"__type__": "cc.Vec2",
- "x": 0.8789115812199337,
- "y": 0.6850378540073432
+ "x": 0.47193347358227933,
+ "y": 0.3867424285481165
},
"_id": ""
},
@@ -164,12 +164,12 @@
"a": 255
},
"_skeletonData": {
- "__uuid__": "b08da8a5-db6f-422d-8058-f2ae8c8dc279",
+ "__uuid__": "dcce3833-3da9-44f4-ba04-72175d2ae9db",
"__expectedType__": "sp.SkeletonData"
},
- "defaultSkin": "诛仙剑",
- "defaultAnimation": "玉帝普攻",
- "_premultipliedAlpha": true,
+ "defaultSkin": "default",
+ "defaultAnimation": "飞剑",
+ "_premultipliedAlpha": false,
"_timeScale": 1,
"_preCacheMode": 0,
"_cacheMode": 0,
diff --git a/assets/bundles/battleHero/prefab/skill/玉帝飞剑.prefab.meta b/assets/bundles/battleHero/prefab/skill/飞剑.prefab.meta
similarity index 84%
rename from assets/bundles/battleHero/prefab/skill/玉帝飞剑.prefab.meta
rename to assets/bundles/battleHero/prefab/skill/飞剑.prefab.meta
index 95ff0ee..f1d1ec7 100644
--- a/assets/bundles/battleHero/prefab/skill/玉帝飞剑.prefab.meta
+++ b/assets/bundles/battleHero/prefab/skill/飞剑.prefab.meta
@@ -8,6 +8,6 @@
],
"subMetas": {},
"userData": {
- "syncNodeName": "玉帝飞剑"
+ "syncNodeName": "飞剑"
}
}
diff --git a/assets/bundles/battleHero/prefab/weapon/weaponType1.prefab b/assets/bundles/battleHero/prefab/weapon/weaponType1.prefab
index a8a5d62..d12f174 100644
--- a/assets/bundles/battleHero/prefab/weapon/weaponType1.prefab
+++ b/assets/bundles/battleHero/prefab/weapon/weaponType1.prefab
@@ -178,13 +178,13 @@
},
"_contentSize": {
"__type__": "cc.Size",
- "width": 29.399999618530273,
- "height": 52.79999923706055
+ "width": 38.47999954223633,
+ "height": 79.19999694824219
},
"_anchorPoint": {
"__type__": "cc.Vec2",
- "x": 0.8789115812199337,
- "y": 0.6850378540073432
+ "x": 0.47193347358227933,
+ "y": 0.3867424285481165
},
"_id": ""
},
@@ -215,12 +215,12 @@
"a": 255
},
"_skeletonData": {
- "__uuid__": "b08da8a5-db6f-422d-8058-f2ae8c8dc279",
+ "__uuid__": "dcce3833-3da9-44f4-ba04-72175d2ae9db",
"__expectedType__": "sp.SkeletonData"
},
- "defaultSkin": "诛仙剑",
- "defaultAnimation": "攻击",
- "_premultipliedAlpha": true,
+ "defaultSkin": "default",
+ "defaultAnimation": "待机",
+ "_premultipliedAlpha": false,
"_timeScale": 1,
"_preCacheMode": 0,
"_cacheMode": 0,
diff --git a/assets/bundles/battleHero/prefab/weapon/weaponType2.prefab b/assets/bundles/battleHero/prefab/weapon/weaponType2.prefab
index 7fc6280..8914c7a 100644
--- a/assets/bundles/battleHero/prefab/weapon/weaponType2.prefab
+++ b/assets/bundles/battleHero/prefab/weapon/weaponType2.prefab
@@ -146,7 +146,7 @@
"x": 0,
"y": 0,
"z": 1,
- "w": -6.123233995736766e-17
+ "w": 6.123233995736766e-17
},
"_lscale": {
"__type__": "cc.Vec3",
@@ -158,9 +158,9 @@
"_layer": 33554432,
"_euler": {
"__type__": "cc.Vec3",
- "x": -180,
- "y": -180,
- "z": -7.016709298534876e-15
+ "x": 0,
+ "y": 0,
+ "z": 180
},
"_id": ""
},
@@ -178,13 +178,13 @@
},
"_contentSize": {
"__type__": "cc.Size",
- "width": 58,
- "height": 92
+ "width": 94.87000274658203,
+ "height": 108.30000305175781
},
"_anchorPoint": {
"__type__": "cc.Vec2",
- "x": 0.5594827717748182,
- "y": 0.39749999668287195
+ "x": 0.48223883920619237,
+ "y": 0.39464451037956905
},
"_id": ""
},
@@ -215,12 +215,12 @@
"a": 255
},
"_skeletonData": {
- "__uuid__": "16b7dfbc-1936-4d60-a737-52963d4b85b9",
+ "__uuid__": "35c3ad81-2132-4358-8e17-a1063d1b12d7",
"__expectedType__": "sp.SkeletonData"
},
- "defaultSkin": "木枪",
+ "defaultSkin": "default",
"defaultAnimation": "待机",
- "_premultipliedAlpha": true,
+ "_premultipliedAlpha": false,
"_timeScale": 1,
"_preCacheMode": 0,
"_cacheMode": 0,
diff --git a/assets/bundles/battleHero/prefab/weapon/weaponType3.prefab b/assets/bundles/battleHero/prefab/weapon/weaponType3.prefab
index 5601789..4b12880 100644
--- a/assets/bundles/battleHero/prefab/weapon/weaponType3.prefab
+++ b/assets/bundles/battleHero/prefab/weapon/weaponType3.prefab
@@ -178,13 +178,13 @@
},
"_contentSize": {
"__type__": "cc.Size",
- "width": 58.5,
- "height": 91.5
+ "width": 36.45000076293945,
+ "height": 83.4800033569336
},
"_anchorPoint": {
"__type__": "cc.Vec2",
- "x": 0.6201709193042201,
- "y": 0.4168305944223873
+ "x": 0.49026064376390155,
+ "y": 0.39758022630640355
},
"_id": ""
},
@@ -215,12 +215,12 @@
"a": 255
},
"_skeletonData": {
- "__uuid__": "5537a63c-69d8-40db-ae9a-dec12ffb9d73",
+ "__uuid__": "c9a6d736-aeee-4865-a852-c4998d8827d1",
"__expectedType__": "sp.SkeletonData"
},
- "defaultSkin": "木棍",
+ "defaultSkin": "default",
"defaultAnimation": "待机",
- "_premultipliedAlpha": true,
+ "_premultipliedAlpha": false,
"_timeScale": 1,
"_preCacheMode": 0,
"_cacheMode": 0,
diff --git a/assets/bundles/battleHero/prefab/weapon/weaponType4.prefab b/assets/bundles/battleHero/prefab/weapon/weaponType4.prefab
index 5fe46ea..7869b67 100644
--- a/assets/bundles/battleHero/prefab/weapon/weaponType4.prefab
+++ b/assets/bundles/battleHero/prefab/weapon/weaponType4.prefab
@@ -181,13 +181,13 @@
},
"_contentSize": {
"__type__": "cc.Size",
- "width": 62.04999923706055,
- "height": 63.150001525878906
+ "width": 75.98999786376953,
+ "height": 95.4800033569336
},
"_anchorPoint": {
"__type__": "cc.Vec2",
- "x": 0.7932312945349005,
- "y": 0.47474265744792593
+ "x": 0.8398473679290928,
+ "y": 0.48324254050518767
},
"_id": ""
},
@@ -218,12 +218,12 @@
"a": 255
},
"_skeletonData": {
- "__uuid__": "9a08eed3-aab7-42cf-8174-f8a06045dce3",
+ "__uuid__": "2cfd40d1-8308-45e0-9d48-fc9918263deb",
"__expectedType__": "sp.SkeletonData"
},
- "defaultSkin": "木弓",
- "defaultAnimation": "攻击",
- "_premultipliedAlpha": true,
+ "defaultSkin": "default",
+ "defaultAnimation": "待机",
+ "_premultipliedAlpha": false,
"_timeScale": 1,
"_preCacheMode": 0,
"_cacheMode": 0,
@@ -350,8 +350,8 @@
},
"_lpos": {
"__type__": "cc.Vec3",
- "x": -8.486,
- "y": 0,
+ "x": 0,
+ "y": 4.903,
"z": 0
},
"_lrot": {
@@ -391,13 +391,13 @@
},
"_contentSize": {
"__type__": "cc.Size",
- "width": 62.04999923706055,
- "height": 63.150001525878906
+ "width": 75.98999786376953,
+ "height": 95.4800033569336
},
"_anchorPoint": {
"__type__": "cc.Vec2",
- "x": 0.7932312945349005,
- "y": 0.47474265744792593
+ "x": 0.8398473679290928,
+ "y": 0.48324254050518767
},
"_id": ""
},
@@ -428,12 +428,12 @@
"a": 255
},
"_skeletonData": {
- "__uuid__": "9a08eed3-aab7-42cf-8174-f8a06045dce3",
+ "__uuid__": "2cfd40d1-8308-45e0-9d48-fc9918263deb",
"__expectedType__": "sp.SkeletonData"
},
- "defaultSkin": "木弓",
+ "defaultSkin": "default",
"defaultAnimation": "飞行箭矢",
- "_premultipliedAlpha": true,
+ "_premultipliedAlpha": false,
"_timeScale": 1,
"_preCacheMode": 0,
"_cacheMode": 0,
diff --git a/assets/bundles/battleHero/prefab/weapon/weaponType5.prefab b/assets/bundles/battleHero/prefab/weapon/weaponType5.prefab
new file mode 100644
index 0000000..84f961c
--- /dev/null
+++ b/assets/bundles/battleHero/prefab/weapon/weaponType5.prefab
@@ -0,0 +1,354 @@
+[
+ {
+ "__type__": "cc.Prefab",
+ "_name": "weaponType5",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "_native": "",
+ "data": {
+ "__id__": 1
+ },
+ "optimizationPolicy": 0,
+ "persistent": false
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "weaponType5",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "_parent": null,
+ "_children": [
+ {
+ "__id__": 2
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 14
+ }
+ ],
+ "_prefab": {
+ "__id__": 16
+ },
+ "_lpos": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_lrot": {
+ "__type__": "cc.Quat",
+ "x": 0,
+ "y": 0,
+ "z": 0,
+ "w": 1
+ },
+ "_lscale": {
+ "__type__": "cc.Vec3",
+ "x": 1,
+ "y": 1,
+ "z": 1
+ },
+ "_mobility": 0,
+ "_layer": 33554432,
+ "_euler": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "weapon",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "_parent": {
+ "__id__": 1
+ },
+ "_children": [
+ {
+ "__id__": 3
+ }
+ ],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 11
+ }
+ ],
+ "_prefab": {
+ "__id__": 13
+ },
+ "_lpos": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_lrot": {
+ "__type__": "cc.Quat",
+ "x": 0,
+ "y": 0,
+ "z": 1,
+ "w": 6.123233995736766e-17
+ },
+ "_lscale": {
+ "__type__": "cc.Vec3",
+ "x": 1,
+ "y": 1,
+ "z": 1
+ },
+ "_mobility": 0,
+ "_layer": 33554432,
+ "_euler": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 180
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.Node",
+ "_name": "skin",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "_parent": {
+ "__id__": 2
+ },
+ "_children": [],
+ "_active": true,
+ "_components": [
+ {
+ "__id__": 4
+ },
+ {
+ "__id__": 6
+ },
+ {
+ "__id__": 8
+ }
+ ],
+ "_prefab": {
+ "__id__": 10
+ },
+ "_lpos": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 0
+ },
+ "_lrot": {
+ "__type__": "cc.Quat",
+ "x": 0,
+ "y": 0,
+ "z": 1,
+ "w": 6.123233995736766e-17
+ },
+ "_lscale": {
+ "__type__": "cc.Vec3",
+ "x": 1,
+ "y": 1,
+ "z": 1
+ },
+ "_mobility": 0,
+ "_layer": 33554432,
+ "_euler": {
+ "__type__": "cc.Vec3",
+ "x": 0,
+ "y": 0,
+ "z": 180
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.UITransform",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 3
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 5
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 73.52999877929688,
+ "height": 96.18000030517578
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5167958742126253,
+ "y": 0.46049075457472155
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "10Ma4aWlBFk6tBs31iA9DF"
+ },
+ {
+ "__type__": "sp.Skeleton",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 3
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 7
+ },
+ "_customMaterial": null,
+ "_srcBlendFactor": 2,
+ "_dstBlendFactor": 4,
+ "_color": {
+ "__type__": "cc.Color",
+ "r": 255,
+ "g": 255,
+ "b": 255,
+ "a": 255
+ },
+ "_skeletonData": {
+ "__uuid__": "542e1bba-b475-48e1-93b2-89480d605a79",
+ "__expectedType__": "sp.SkeletonData"
+ },
+ "defaultSkin": "红缨枪",
+ "defaultAnimation": "待机",
+ "_premultipliedAlpha": false,
+ "_timeScale": 1,
+ "_preCacheMode": 0,
+ "_cacheMode": 0,
+ "_sockets": [],
+ "_useTint": false,
+ "_debugMesh": false,
+ "_debugBones": false,
+ "_debugSlots": false,
+ "_enableBatch": false,
+ "loop": true,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "53Oqvwb2JMo7/t619sZApZ"
+ },
+ {
+ "__type__": "cc.Sorting2D",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 3
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 9
+ },
+ "_sortingLayer": 3,
+ "_sortingOrder": 3,
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "c5Vivgz8hNoqVvdPwfRfMe"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "5eJtTesAhFjKJGfAwMDj8P",
+ "instance": null,
+ "targetOverrides": null,
+ "nestedPrefabInstanceRoots": null
+ },
+ {
+ "__type__": "cc.UITransform",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 2
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 12
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 100,
+ "height": 100
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "859ErfVzpFGosE8chK2XD9"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "12h5zzJolI66bNtwPs5kJw",
+ "instance": null,
+ "targetOverrides": null,
+ "nestedPrefabInstanceRoots": null
+ },
+ {
+ "__type__": "cc.UITransform",
+ "_name": "",
+ "_objFlags": 0,
+ "__editorExtras__": {},
+ "node": {
+ "__id__": 1
+ },
+ "_enabled": true,
+ "__prefab": {
+ "__id__": 15
+ },
+ "_contentSize": {
+ "__type__": "cc.Size",
+ "width": 83,
+ "height": 83
+ },
+ "_anchorPoint": {
+ "__type__": "cc.Vec2",
+ "x": 0.5,
+ "y": 0.5
+ },
+ "_id": ""
+ },
+ {
+ "__type__": "cc.CompPrefabInfo",
+ "fileId": "d9phYN8o1N0pHVkixsNcQj"
+ },
+ {
+ "__type__": "cc.PrefabInfo",
+ "root": {
+ "__id__": 1
+ },
+ "asset": {
+ "__id__": 0
+ },
+ "fileId": "15uJpnkDNKApBLkoqMhhsr",
+ "instance": null,
+ "targetOverrides": null
+ }
+]
\ No newline at end of file
diff --git a/assets/bundles/battleHero/prefab/weapon/weaponType5.prefab.meta b/assets/bundles/battleHero/prefab/weapon/weaponType5.prefab.meta
new file mode 100644
index 0000000..075e181
--- /dev/null
+++ b/assets/bundles/battleHero/prefab/weapon/weaponType5.prefab.meta
@@ -0,0 +1,13 @@
+{
+ "ver": "1.1.50",
+ "importer": "prefab",
+ "imported": true,
+ "uuid": "f9ea9d9f-0c4b-4bbd-ae53-0f953ad77b53",
+ "files": [
+ ".json"
+ ],
+ "subMetas": {},
+ "userData": {
+ "syncNodeName": "weaponType5"
+ }
+}
diff --git a/assets/bundles/first/config/Skill.json b/assets/bundles/first/config/Skill.json
index bd9ce94..e365c5b 100644
--- a/assets/bundles/first/config/Skill.json
+++ b/assets/bundles/first/config/Skill.json
@@ -8,7 +8,7 @@
"level": 0,
"cd": 0.8,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -30,7 +30,7 @@
"level": 0,
"cd": 0.8,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -52,7 +52,7 @@
"level": 0,
"cd": 0.8,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -74,7 +74,7 @@
"level": 0,
"cd": 0.8,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -96,7 +96,7 @@
"level": 0,
"cd": 0.8,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -118,7 +118,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -140,7 +140,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 260,
@@ -162,7 +162,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 260,
@@ -184,7 +184,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 300,
@@ -206,7 +206,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 300,
@@ -228,7 +228,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -250,7 +250,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -272,7 +272,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -294,7 +294,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -316,7 +316,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -338,7 +338,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -360,7 +360,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -382,7 +382,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -404,7 +404,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -426,7 +426,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -448,7 +448,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -470,7 +470,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -492,7 +492,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -514,7 +514,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -536,7 +536,7 @@
"level": 0,
"cd": 1,
"priority": 0,
- "animation": "攻击",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -558,7 +558,7 @@
"level": 0,
"cd": 2.4,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -580,7 +580,7 @@
"level": 0,
"cd": 1.6,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -602,7 +602,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -624,7 +624,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -646,7 +646,7 @@
"level": 0,
"cd": 1.6,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -668,7 +668,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -690,7 +690,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -712,7 +712,7 @@
"level": 0,
"cd": 1.6,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -734,7 +734,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -756,7 +756,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -778,7 +778,7 @@
"level": 0,
"cd": 1.6,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -800,7 +800,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -822,7 +822,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -844,7 +844,7 @@
"level": 0,
"cd": 16,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -866,7 +866,7 @@
"level": 0,
"cd": 12,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -888,7 +888,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "悟空专属技能效果",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -910,7 +910,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -932,7 +932,7 @@
"level": 0,
"cd": 12,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -954,7 +954,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "悟空专属技能效果",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -976,7 +976,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -998,7 +998,7 @@
"level": 0,
"cd": 12,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1020,7 +1020,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "悟空专属技能效果",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1042,7 +1042,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1064,7 +1064,7 @@
"level": 0,
"cd": 12,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1086,7 +1086,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "悟空专属技能效果",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1108,7 +1108,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1130,7 +1130,7 @@
"level": 0,
"cd": 2,
"priority": 100,
- "animation": "",
+ "animation": "水弹攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1152,7 +1152,7 @@
"level": 0,
"cd": 2,
"priority": 100,
- "animation": "",
+ "animation": "水弹攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1174,7 +1174,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "暴风雪技能",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1196,7 +1196,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "水弹攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1218,7 +1218,7 @@
"level": 0,
"cd": 2,
"priority": 100,
- "animation": "",
+ "animation": "水弹攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1240,7 +1240,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "暴风雪技能",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1262,7 +1262,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "水弹攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1284,7 +1284,7 @@
"level": 0,
"cd": 2,
"priority": 100,
- "animation": "",
+ "animation": "水弹攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1306,7 +1306,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "暴风雪技能",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1328,7 +1328,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "水弹攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1350,7 +1350,7 @@
"level": 0,
"cd": 2,
"priority": 100,
- "animation": "",
+ "animation": "水弹攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1372,7 +1372,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "暴风雪技能",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1394,7 +1394,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "水弹攻击1",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1416,7 +1416,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1438,7 +1438,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1460,7 +1460,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1482,7 +1482,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1504,7 +1504,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1526,7 +1526,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1548,7 +1548,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1570,7 +1570,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1592,7 +1592,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1614,7 +1614,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1636,7 +1636,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 0,
"range": 0,
@@ -1658,7 +1658,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1680,7 +1680,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1702,7 +1702,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 3,
"range": 0,
@@ -1724,7 +1724,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击",
"showeffect": "",
"target_stage": 3,
"range": 0,
@@ -1746,7 +1746,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1768,7 +1768,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1790,7 +1790,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 3,
"range": 0,
@@ -1812,7 +1812,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1834,7 +1834,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1856,7 +1856,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 3,
"range": 0,
@@ -1878,7 +1878,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1900,7 +1900,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1922,7 +1922,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 3,
"range": 0,
@@ -1944,7 +1944,7 @@
"level": 0,
"cd": 20,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
@@ -1966,7 +1966,7 @@
"level": 0,
"cd": 0,
"priority": 100,
- "animation": "",
+ "animation": "攻击1",
"showeffect": "",
"target_stage": 1,
"range": 0,
diff --git a/assets/mx/module/merge/config/IComposeConfigProvider.ts b/assets/mx/module/merge/config/IComposeConfigProvider.ts
index 0e4dad4..6fe482a 100644
--- a/assets/mx/module/merge/config/IComposeConfigProvider.ts
+++ b/assets/mx/module/merge/config/IComposeConfigProvider.ts
@@ -12,6 +12,12 @@ export interface IComposeConfigProvider {
passiveSpawnKeepsDigCell(weapon2Id: number): boolean;
/** 保持 Dig 格的字块(蟠桃树)可合成等级上限 */
getKeepDigTileMaxLevel(weapon2Id: number): number;
- /** 五行 Text.type 可合成到的最高显示等级(Hero.level 最大值) */
+ /** 五行显示等级上限:同 herotype 的 Hero.level 最大值 */
getElementMaxLevel(textType: number): number;
+ /**
+ * 五行 Hero.id:herotype=Text.type 且 level=显示等级。
+ * @param textType Text.type(1–5)
+ * @param level 显示等级
+ */
+ getElementHeroId(textType: number, level: number): number | null;
}
diff --git a/assets/mx/module/merge/core/MergeSession.ts b/assets/mx/module/merge/core/MergeSession.ts
index b5e14ce..1491ec7 100644
--- a/assets/mx/module/merge/core/MergeSession.ts
+++ b/assets/mx/module/merge/core/MergeSession.ts
@@ -1358,6 +1358,7 @@ export class MergeSession {
if (!used.has(gridIndex)) restLayout.set(gridIndex, weapon2Id);
});
const found = this._matcher.findCompositions(restLayout, this._coordOf);
+ this._appendElementCompositions(restLayout, found);
this._compositions = preserved.concat(this._filterUniqueMultiHeroes(preserved, found));
const activeKeys = createMembershipSet();
@@ -1382,6 +1383,35 @@ export class MergeSession {
this.emit(MergeEventFactory.composeChanged(this._compositions));
}
+ /**
+ * 五行单格:按 Text.type + 显示等级解析 Hero.id,作为可部署攻击单位。
+ * @param restLayout 未被多格组合占用的字块
+ * @param found 匹配结果(就地追加)
+ */
+ private _appendElementCompositions(restLayout: Map, found: ComposedUnit[]): void {
+ const occupied = createMembershipSet();
+ for (let i = 0; i < found.length; i++) {
+ const indices = found[i].gridIndices;
+ for (let j = 0; j < indices.length; j++) membershipAdd(occupied, indices[j]);
+ }
+ restLayout.forEach((weapon2Id, gridIndex) => {
+ if (occupied.has(gridIndex)) return;
+ const type = Math.floor(this._config.getWeapon2Type(weapon2Id));
+ if (!isElementGlyphType(type)) return;
+ const tile = this.map.getTile(gridIndex);
+ const level = Math.max(1, Math.floor(tile?.level ?? 1));
+ const heroId = this._config.getElementHeroId(type, level);
+ if (!(heroId > 0)) return;
+ membershipAdd(occupied, gridIndex);
+ found.push({
+ weapon1Id: heroId,
+ level,
+ gridIndices: [gridIndex],
+ direction: 'horizontal',
+ });
+ });
+ }
+
/**
* 多格神将:同 weapon1Id(Hero.id)本方最多 1 个;已有则新匹配保持散字不成第二将。
* @param preserved 已保留组合
diff --git a/assets/script/battle/ai/bridge/AiBattleBridge.ts b/assets/script/battle/ai/bridge/AiBattleBridge.ts
index b6ed255..938f949 100644
--- a/assets/script/battle/ai/bridge/AiBattleBridge.ts
+++ b/assets/script/battle/ai/bridge/AiBattleBridge.ts
@@ -242,7 +242,7 @@ export class AiBattleBridge {
this._map = map;
this._profile = resolved;
if (skillParent) {
- this._skillHost.bind(battle, map, skillParent);
+ this._skillHost.bind(battle, map, skillParent, this._mapText.getMapGrids());
} else {
aiLog('[AiBattleBridge] skillParent missing: AI towers may not attack');
}
@@ -283,7 +283,7 @@ export class AiBattleBridge {
if (!map || !bag || !battle) return;
const aiPlayer = battle.getPlayer(AiHeadlessBagHost.AI_PLAYER_ID) ?? null;
this._mapText.requestSync(bag, map, aiPlayer);
- this._skillHost.refresh(map);
+ this._skillHost.refresh(map, this._mapText.getMapGrids());
};
/** 刷新拍:乾坤袋回收背包多余字 */
diff --git a/assets/script/battle/ai/runtime/AiMapTextHost.ts b/assets/script/battle/ai/runtime/AiMapTextHost.ts
index c8842e6..7114088 100644
--- a/assets/script/battle/ai/runtime/AiMapTextHost.ts
+++ b/assets/script/battle/ai/runtime/AiMapTextHost.ts
@@ -852,4 +852,14 @@ export class AiMapTextHost {
if (rec.grid?.isValid) visitor(rec.grid, rec.gridIndex);
}
}
+
+ /** SkillController 用的格 → TextGrid */
+ getMapGrids(): ReadonlyMap {
+ const out = new Map();
+ for (let i = 0; i < this._recs.length; i++) {
+ const rec = this._recs[i];
+ if (rec.grid?.isValid) out.set(rec.gridIndex, rec.grid);
+ }
+ return out;
+ }
}
diff --git a/assets/script/battle/ai/runtime/AiSkillHost.ts b/assets/script/battle/ai/runtime/AiSkillHost.ts
index 89e0c78..7c97ede 100644
--- a/assets/script/battle/ai/runtime/AiSkillHost.ts
+++ b/assets/script/battle/ai/runtime/AiSkillHost.ts
@@ -4,6 +4,7 @@ import type { ProjectBattleHandle } from '../../runtime/BattleRuntime';
import type { MapManager } from '../../map/legacy/MapManager';
import { SkillController } from '../../skill/SkillController';
import { AiHeadlessBagHost } from './AiHeadlessBagHost';
+import type { TextGrid } from '../../view/TextGrid';
/**
* AI 技能表现宿主:独立 SkillController,承接 AI 塔 PresentationCue。
@@ -18,8 +19,9 @@ export class AiSkillHost {
* @param battle 战斗
* @param map 地图
* @param parent UI 节点(挂载组件)
+ * @param mapGrids AI 地图 TextGrid
*/
- bind(battle: ProjectBattleHandle, map: MapManager, parent: Node): boolean {
+ bind(battle: ProjectBattleHandle, map: MapManager, parent: Node, mapGrids?: ReadonlyMap): boolean {
this.dispose();
const aiPlayer = battle.getPlayer(AiHeadlessBagHost.AI_PLAYER_ID);
if (!aiPlayer) {
@@ -38,7 +40,7 @@ export class AiSkillHost {
let sc = host.getComponent(SkillController);
if (!sc) sc = host.addComponent(SkillController);
sc.bind(aiPlayer, battle);
- sc.refreshEntitySkillBindings(map);
+ sc.refreshEntitySkillBindings(map, mapGrids);
aiPlayer.skillController = sc;
this._hostNode = host;
this._controller = sc;
@@ -49,9 +51,10 @@ export class AiSkillHost {
/**
* 部署变化后刷新 entity→Skill 映射。
* @param map 地图
+ * @param mapGrids AI 地图 TextGrid
*/
- refresh(map: MapManager): void {
- this._controller?.refreshEntitySkillBindings(map);
+ refresh(map: MapManager, mapGrids?: ReadonlyMap): void {
+ this._controller?.refreshEntitySkillBindings(map, mapGrids);
}
/** 解除绑定 */
diff --git a/assets/script/battle/bag/BattleBagSession.ts b/assets/script/battle/bag/BattleBagSession.ts
index 00d74b3..3d58a07 100644
--- a/assets/script/battle/bag/BattleBagSession.ts
+++ b/assets/script/battle/bag/BattleBagSession.ts
@@ -901,6 +901,21 @@ export class BattleBagSession {
this._map.areaUnlock.setLevel(levelId, levelValue);
}
+ /**
+ * 拖字是否满足当前解锁区域:Text.type 对齐 unlockland 类型(0 为任意),显示等级达到需求。
+ * @param gridIndex 落点
+ * @param weapon2Id 文字 id
+ * @param level 字块显示等级
+ */
+ canUnlockArea(gridIndex: number, weapon2Id: number, level?: number): boolean {
+ const grid = this.validator.getGridByIndex(gridIndex);
+ if (!grid?.isAreaUnlock) return false;
+ const lv = Math.floor(Number(level));
+ if (!(lv > 0)) return false;
+ WeaponComposeConfigProvider.instance.load();
+ return this._map.areaUnlock.canDrag(grid, this._heroOfGlyph({ weapon2Id, level: lv }));
+ }
+
/**
* 五行字拖到当前解锁区域:类型/显示等级符合则整区可放置并播 openSpine,随后字落在当前格。
* @param source 拖拽源
diff --git a/assets/script/battle/bag/WeaponComposeConfigProvider.ts b/assets/script/battle/bag/WeaponComposeConfigProvider.ts
index 2ee16ef..9a9cf45 100644
--- a/assets/script/battle/bag/WeaponComposeConfigProvider.ts
+++ b/assets/script/battle/bag/WeaponComposeConfigProvider.ts
@@ -159,9 +159,15 @@ export class WeaponComposeConfigProvider implements IComposeConfigProvider {
const row = this._weapon1List.find((w) => Number(w.id) === id);
if (!row) {
console.log('[WeaponCompose] Hero 缺失,等级上限按 1', id);
- } else {
- console.log('[WeaponCompose] Hero.level_limit 未配置,等级上限按 1', id);
+ return 1;
+ }
+ const ht = Math.floor(Number(row.herotype));
+ if (ht >= 1 && ht <= 5) {
+ const max = this.getElementMaxLevel(ht);
+ this._maxLevel.set(id, max);
+ return max;
}
+ console.log('[WeaponCompose] Hero.level_limit 未配置,等级上限按 1', id);
return 1;
}
@@ -205,6 +211,26 @@ export class WeaponComposeConfigProvider implements IComposeConfigProvider {
return max;
}
+ /**
+ * 五行 Hero.id:herotype 与显示等级对齐。
+ * @param textType Text.type(1–5)
+ * @param level 显示等级
+ */
+ getElementHeroId(textType: number, level: number): number | null {
+ this.load();
+ const type = Math.floor(Number(textType));
+ const lv = Math.floor(Number(level));
+ if (type < 1 || type > 5 || !(lv > 0)) return null;
+ for (let i = 0; i < this._weapon1List.length; i++) {
+ const hero = this._weapon1List[i];
+ if (Math.floor(Number(hero.herotype)) !== type) continue;
+ if (Math.floor(Number(hero.level)) !== lv) continue;
+ return Number(hero.id);
+ }
+ console.log('[WeaponCompose] 无五行英雄', type, lv);
+ return null;
+ }
+
/** 蟠桃树合成等级上限(读 Hero.level_limit);其它 weapon2 返回 1 */
getKeepDigTileMaxLevel(weapon2Id: number): number {
this.load();
diff --git a/assets/script/battle/combat/TowerLoadoutService.ts b/assets/script/battle/combat/TowerLoadoutService.ts
index 227618f..4b7c033 100644
--- a/assets/script/battle/combat/TowerLoadoutService.ts
+++ b/assets/script/battle/combat/TowerLoadoutService.ts
@@ -19,7 +19,7 @@ import type { TowerLoadout } from './TowerQueryTypes';
export type { TowerLoadout };
import { SkillAbilityBuilder } from '../config/baseAtk/SkillAbilityBuilder';
-import { heroNormalSkillId, heroUltSkillId } from '../config/BattleHeroTable';
+import { heroNormalSkillId, heroUltSkillId, isElementHero } from '../config/BattleHeroTable';
import { dumpKnifeFinalAttack, logKnifeBaseAttack } from '../debug/AtkDebugLogCore';
import { isAtkDebugWeapon } from '../debug/AtkDebugConstants';
import { getPassiveSkillHost } from './PassiveSkillRuntime';
@@ -38,21 +38,21 @@ export function setAiHeroWeaponResolver(resolver: ((heroId: number) => number |
_aiHeroWeaponResolver = resolver;
}
-/** 解析英雄当前战斗武器 id(本机走装备;AI 走匹配档案掷骰) */
+/** 解析英雄当前战斗武器 id(本机走装备;AI 走匹配档案掷骰)。五行数字只用 herotype 预制体,不查 Weapon 表。 */
export function resolveHeroBattleWeaponId(heroId: number, player?: Player | null): number {
+ const hero = gg.data.table.getTableData(TableNames.Hero, heroId);
+ if (isElementHero(hero)) return 0;
if (player && !player.isLocal) {
if (_aiHeroWeaponResolver) {
const aiId = _aiHeroWeaponResolver(heroId);
if (typeof aiId === 'number' && aiId > 0) return aiId;
}
- const hero = gg.data.table.getTableData(TableNames.Hero, heroId);
return Number(hero?.startweapon) || 0;
}
try {
const id = gg.equip?.getHeroDisplayWeaponId?.(heroId);
if (typeof id === 'number' && id > 0) return id;
} catch { /* equip 未就绪 */ }
- const hero = gg.data.table.getTableData(TableNames.Hero, heroId);
return Number(hero?.startweapon) || 0;
}
diff --git a/assets/script/battle/combat/TowerStatResolver.ts b/assets/script/battle/combat/TowerStatResolver.ts
index 9c305b9..87c3483 100644
--- a/assets/script/battle/combat/TowerStatResolver.ts
+++ b/assets/script/battle/combat/TowerStatResolver.ts
@@ -1,7 +1,8 @@
-import { heroNormalSkillId } from '../config/BattleHeroTable';
+import { heroNormalSkillId, isElementHero } from '../config/BattleHeroTable';
import { BattleMapSpec } from '../map/BattleMapSpec';
import { TableNames } from '../../game/ConfigTableData';
import type { TowerCombatStats } from './TowerQueryTypes';
+import { WeaponComposeConfigProvider } from '../bag/WeaponComposeConfigProvider';
/** 常量表「攻击力等级系数」id(对齐 ConstNumType.AtkLevelCoef) */
const CONST_ATK_LEVEL_COEF = 13;
@@ -130,11 +131,18 @@ function rangeAddFromAtkBuff(raw: string | undefined): number {
* @param battleWeaponId 战斗武器 id;AI/指定装载须传入,缺省才读本机 gg.equip
*/
export function deriveTowerSetupStats(w1: ITableHero, composeLevel: number, battleWeaponId?: number): TowerSetupStats {
- if (!(w1.level_limit > 0)) {
- console.log('[TowerStatResolver] Hero.level_limit 未配置', w1.id);
+ const compose = Math.max(1, Math.floor(composeLevel) || 1);
+ let effectiveLevel: number;
+ if (isElementHero(w1)) {
+ const cap = WeaponComposeConfigProvider.instance.getElementMaxLevel(Math.floor(Number(w1.herotype)));
+ effectiveLevel = Math.min(compose, cap);
+ } else {
+ if (!(w1.level_limit > 0)) {
+ console.log('[TowerStatResolver] Hero.level_limit 未配置', w1.id);
+ }
+ const levelLimit = w1.level_limit > 0 ? w1.level_limit : 1;
+ effectiveLevel = Math.min(compose, levelLimit);
}
- const levelLimit = w1.level_limit > 0 ? w1.level_limit : 1;
- const effectiveLevel = Math.max(1, Math.min(composeLevel, levelLimit));
const weaponId = resolveSetupWeaponId(w1, battleWeaponId);
const weaponRow = weaponId > 0
? gg.data.table.getTableData(TableNames.Weapon, weaponId)
diff --git a/assets/script/battle/config/BattleHeroTable.ts b/assets/script/battle/config/BattleHeroTable.ts
index 993694c..850d602 100644
--- a/assets/script/battle/config/BattleHeroTable.ts
+++ b/assets/script/battle/config/BattleHeroTable.ts
@@ -54,6 +54,25 @@ export function isComboHero(hero: ITableHero): boolean {
return Number(hero.herotype) === 2;
}
+/** 是否五行数字英雄(herotype 1–5) */
+export function isElementHero(hero: ITableHero | null | undefined): boolean {
+ if (!hero) return false;
+ const t = Math.floor(Number(hero.herotype));
+ return t >= 1 && t <= 5;
+}
+
+/**
+ * Hero.id 是否为五行战斗单位(有普攻)。
+ * @param heroId Hero.id
+ */
+export function isElementCombatHeroId(heroId: number): boolean {
+ const id = Math.floor(Number(heroId) || 0);
+ if (!(id > 0)) return false;
+ const hero = gg.data.table.getTableData(TableNames.Hero, id);
+ if (!isElementHero(hero) || isNonCombatWeapon1(id)) return false;
+ return heroNormalSkillId(hero!, 1) > 0;
+}
+
/**
* 从塔实体解析 Hero.id(unitDefId / weapon1_ 标签)。
* @param world 战斗世界
diff --git a/assets/script/battle/config/LevelWaveParser.ts b/assets/script/battle/config/LevelWaveParser.ts
index 7a5f0d9..2309a45 100644
--- a/assets/script/battle/config/LevelWaveParser.ts
+++ b/assets/script/battle/config/LevelWaveParser.ts
@@ -8,11 +8,11 @@ import {
makeMonsterUnitDefId,
} from './MonsterHpCalculator';
-/** 调试:双方出怪口不出小怪 */
-export const NO_SMALL_MONSTER = true;
+/** 调试:双方出怪口不出小怪(正式出怪须为 false) */
+export const NO_SMALL_MONSTER = false;
-/** 调试:双方出怪口不出 Boss */
-export const NO_BOSS = true;
+/** 调试:双方出怪口不出 Boss(正式出怪须为 false) */
+export const NO_BOSS = false;
/** Level.monster 单条:waveIndex,monsterId,count,spawnInterval */
export interface LevelMonsterWaveRow {
diff --git a/assets/script/battle/heros/HeroActor.ts b/assets/script/battle/heros/HeroActor.ts
index 4bbe4ea..add343d 100644
--- a/assets/script/battle/heros/HeroActor.ts
+++ b/assets/script/battle/heros/HeroActor.ts
@@ -1,6 +1,6 @@
import { _decorator, sp } from 'cc';
import type { EntityId } from 'db://assets/mx/module/ecs';
-import { isComboHero } from '../config/BattleHeroTable';
+import { isComboHero, isElementHero } from '../config/BattleHeroTable';
import { Skill } from '../skill/Skill';
import { HeroSkin } from '../view/HeroSkin';
import { TableNames } from '../../game/ConfigTableData';
@@ -71,7 +71,7 @@ export class HeroActor extends Skill {
this._heroSkin?.playIdleAnim();
}
- /** 绑定字形;组合英雄启用武器通道 */
+ /** 绑定字形;五行 / 组合英雄启用武器通道 */
protected _bindChannel(): void {
this._heroSkin = this.node.getComponent(HeroSkin);
const data = this._heroSkin?.Data
@@ -79,7 +79,7 @@ export class HeroActor extends Skill {
? gg.data.table.getTableData(TableNames.Hero, this._heroId)
: null);
this._heroId = Number(data?.id) || this._heroId;
- const useWeapon = !!data && isComboHero(data);
+ const useWeapon = isElementHero(data) || (!!data && isComboHero(data));
this.visualChannel.bind(this._heroSkin, this.node, this._heroId, useWeapon);
}
diff --git a/assets/script/battle/map/legacy/MapAreaUnlock.ts b/assets/script/battle/map/legacy/MapAreaUnlock.ts
index a2a682a..b230642 100644
--- a/assets/script/battle/map/legacy/MapAreaUnlock.ts
+++ b/assets/script/battle/map/legacy/MapAreaUnlock.ts
@@ -104,11 +104,31 @@ export class MapAreaUnlock {
}
/**
- * 把英雄拖到当前解锁区域。类型 0 表示任意 herotype,等级须达到配置等级加段位加值。
+ * 拖到当前解锁区域是否满足类型与等级(不改状态)。
+ * 类型 0 表示任意 herotype,等级须达到配置等级加段位加值。
+ */
+ canDrag(grid: MapGrid, hero: AreaUnlockHero | null): boolean {
+ return this._probe(grid, hero) === 'unlocked';
+ }
+
+ /**
+ * 把英雄拖到当前解锁区域。条件与 canDrag 相同,成功则整区解锁。
* @param grid 落点格
* @param hero 拖动的英雄;没有对应英雄时传 null
*/
tryDrag(grid: MapGrid, hero: AreaUnlockHero | null): AreaUnlockDrag {
+ const hit = this._probe(grid, hero);
+ if (hit !== 'unlocked') return hit;
+ const index = this._indexOf(this.currentId());
+ this._done[index] = true;
+ this._rollCurrent();
+ return 'unlocked';
+ }
+
+ /**
+ * 解锁落点探测:skip 非解锁格;blocked 未轮到或类型/等级不符;unlocked 条件满足。
+ */
+ private _probe(grid: MapGrid, hero: AreaUnlockHero | null): AreaUnlockDrag {
if (!grid?.isAreaUnlock) return 'skip';
const current = this.currentId();
if (current <= 0 || grid.unlockAreaId !== current) return 'blocked';
@@ -118,8 +138,6 @@ export class MapAreaUnlock {
const typeOk = this._heroTypes[index] === 0 || hero.heroType === this._heroTypes[index];
const levelOk = hero.level >= this._needLevels[index];
if (!typeOk || !levelOk) return 'blocked';
- this._done[index] = true;
- this._rollCurrent();
return 'unlocked';
}
diff --git a/assets/script/battle/presentation/SkillVisualChannel.ts b/assets/script/battle/presentation/SkillVisualChannel.ts
index 8ffb23f..c701aed 100644
--- a/assets/script/battle/presentation/SkillVisualChannel.ts
+++ b/assets/script/battle/presentation/SkillVisualChannel.ts
@@ -1,6 +1,6 @@
import type { EntityId } from 'db://assets/mx/module/ecs';
import { instantiate, Node, sp, UITransform, Vec3 } from 'cc';
-import { GBundle, GPath } from '../../game/ConfigRes';
+import { TableNames } from '../../game/ConfigTableData';
import { BattleMapSpec } from '../map/BattleMapSpec';
import { getTowerLoadoutService, resolveHeroBattleWeaponId } from '../combat/TowerLoadoutService';
import { SkillPresentationEnv } from '../skill/SkillPresentationEnv';
@@ -8,11 +8,12 @@ import { schedulePresentation } from '../skill/BattlePresentationClock';
import { SkillTransformDriver, computeAimAngleDeg } from '../skill/SkillTransformDriver';
import { worldPointAtAimAngle, computeArrowBowAimDeg, ARROW_BOW_OFFSET_DEG } from '../skill/SkillParentAim';
import { HeroSkin } from '../view/HeroSkin';
-import { HeroWeaponMount, WEAPON_REST_ANGLE, BOW_ATK_REST_ANGLE, BOW_RAIN_AIM_DEG } from '../view/HeroWeaponMount';
+import { HeroWeaponMount, WEAPON_REST_ANGLE, BOW_ATK_REST_ANGLE, BOW_RAIN_AIM_DEG, WEAPON_LEFT_OFFSET_PX } from '../view/HeroWeaponMount';
import { BattleSpinePlayback } from './BattleSpinePlayback';
import { glyphSpineHasSkin } from '../view/GlyphSpineSkin';
import { ensureSpineSkeletonDataRuntime } from 'db://assets/mx/module/lang/spineRuntimePatch';
import { BOW_ATK_ARROW_SPEED, SCATTER_RANGE_MUL, getBowAtkHost } from '../combat/BowAtkRuntime';
+import { GBundle, GPath } from '../../game/ConfigRes';
/** 默认命中相对攻击动画进度(@ timeScale=1) */
export const PRES_HIT_AT_BASE = 0.33;
@@ -21,8 +22,6 @@ const BOW_RELEASE_AT_BASE = 0.4333;
/** 拉弓表现上限(秒),与英雄弓一致 */
const BOW_ATTACK_MAX_SEC = 0.19;
-/** 武器相对组合首字格中心再向左偏移(约 0.35 格) */
-const WEAPON_LEFT_OFFSET_PX = BattleMapSpec.CELL_SIZE * 0.35;
/** 悟空主动武器动画:绕两字椭圆一圈 */
const WUKONG_SKILL_ANIM = '悟空技能';
/** 木吒主动武器动画 */
@@ -40,10 +39,16 @@ const JINGU_SKILL_HIT_AT = 0.8667;
const WUKONG_ORBIT_RADIUS_Y = BattleMapSpec.CELL_SIZE * 0.5;
/** 绕圈时长 = 动画时长减去该秒数 */
const WUKONG_ORBIT_TRIM_SEC = 0.3;
-/** Weapon.type 刀 */
+/** Weapon.type 刀 / herotype 金 */
const WEAPON_TYPE_SWORD = 1;
-/** Weapon.type 弓 */
+/** herotype 木 */
+const WEAPON_TYPE_WOOD = 2;
+/** herotype 水 */
+const WEAPON_TYPE_STAFF = 3;
+/** Weapon.type 弓 / herotype 火 */
const WEAPON_TYPE_BOW = 4;
+/** herotype 土(老项目枪) */
+const WEAPON_TYPE_SPEAR = 5;
/** 控制点沿出弓切线的路程比例(切线相对目标连线偏 ARROW_BOW_OFFSET_DEG) */
const BOW_ARROW_CTRL_T = 0.42;
/** 连发固定三弹道,发次对 3 取余循环 */
@@ -60,6 +65,10 @@ const WEAPON_AIM_SEC = 0.2;
const WEAPON_REST_HOLD_SEC = 1;
/** @deprecated 保留别名;请用 WEAPON_AIM_SEC */
const BOW_AIM_SEC = WEAPON_AIM_SEC;
+/** battleHero/prefab/skill/水弹 */
+const WATER_BALL_PREFAB = '水弹';
+/** 水弹飞行像素/秒(与弓箭同量级) */
+const WATER_BALL_SPEED = BOW_ATK_ARROW_SPEED;
/** battleHero/prefab/skill/玉帝飞剑 */
const YUDI_FLY_SWORD_PREFAB = '玉帝飞剑';
/** 飞剑预制体默认动画(带光效) */
@@ -106,6 +115,39 @@ class VolleyFlyRecycle {
}
}
+/**
+ * 水弹落地回池(类方法,避免函数内闭包)。
+ */
+class WaterBallRecycle {
+ private static readonly _pool: WaterBallRecycle[] = [];
+ private _channel: SkillVisualChannel | null = null;
+ private _node: Node | null = null;
+
+ /** 落地:回池水弹 */
+ readonly onLand = (): void => {
+ const channel = this._channel;
+ const node = this._node;
+ this._channel = null;
+ this._node = null;
+ WaterBallRecycle._pool.push(this);
+ if (channel && node) channel.recycleWaterBall(node);
+ };
+
+ /**
+ * 取得绑定。
+ * @param channel 表现通道
+ * @param node 水弹
+ */
+ static obtain(channel: SkillVisualChannel, node: Node): WaterBallRecycle {
+ const rec = WaterBallRecycle._pool.length > 0
+ ? WaterBallRecycle._pool.pop()!
+ : new WaterBallRecycle();
+ rec._channel = channel;
+ rec._node = node;
+ return rec;
+ }
+}
+
/** 待发射的弓箭 */
interface BowArrowLaunch {
/** 代数,过期则丢弃 */
@@ -231,6 +273,27 @@ export class SkillVisualChannel {
return this._lastThrowFlySec;
}
+ /** 当前武器表现类型(Hero.herotype / Weapon.type) */
+ private _visType(): number {
+ return this._weapon.weaponType;
+ }
+
+ /** 金/木:只左右翻转 */
+ private _isFlipWeapon(): boolean {
+ const t = this._visType();
+ return t === WEAPON_TYPE_SWORD || t === WEAPON_TYPE_WOOD;
+ }
+
+ /** 水:法杖不旋转 */
+ private _isStaffWeapon(): boolean {
+ return this._visType() === WEAPON_TYPE_STAFF;
+ }
+
+ /** 火:弓 */
+ private _isBowWeapon(): boolean {
+ return this._visType() === WEAPON_TYPE_BOW;
+ }
+
/**
* 释放动画倍速:hero/weapon/monster 固定 1;普攻跟攻速;显式 override 优先。
* @param caster 施法实体
@@ -258,9 +321,12 @@ export class SkillVisualChannel {
if (!this._useWeapon) this._weapon.setVisible(false);
}
- /** 按塔 loadout / 归属玩家装备 / startweapon 挂载武器 */
+ /** 按塔 loadout / 归属玩家装备 / startweapon 挂载武器;五行数字按 Hero.herotype */
ensureWeapon(): boolean {
if (!this._useWeapon || !this._parent?.isValid || this._heroId <= 0) return false;
+ const hero = gg.data.table.getTableData(TableNames.Hero, this._heroId);
+ const ht = Math.floor(Number(hero?.herotype) || 0);
+ if (ht >= 1 && ht <= 5) return this._weapon.ensureByHeroType(this._parent, ht);
let weaponId = 0;
if (this._caster != null) {
const loadout = getTowerLoadoutService().getLoadout(this._caster);
@@ -310,11 +376,8 @@ export class SkillVisualChannel {
this._weapon.setVisible(false);
return false;
}
- // 刀立刻复位;枪/棍由回正插值到位,此处 resetAim 会打断插值
- const wt = this._weapon.weaponType;
- if (wt === WEAPON_TYPE_SWORD || wt <= 0) {
- this._weapon.resetAim();
- }
+ // 刀/木立刻复位左右;法杖保持预制体;枪回正走插值
+ if (this._isFlipWeapon()) this._weapon.resetAim();
this._weapon.setVisible(this._weaponFlies.length === 0);
this._weapon.playIdle();
return !!this._weapon.root?.active;
@@ -380,7 +443,10 @@ export class SkillVisualChannel {
this._castAnimParams = params;
this._castAnimLeft = 0;
this._lastThrowFlySec = 0;
- const weaponAnim = String(params.animation ?? '').trim() || GLYPH_CAST_ANIM;
+ const weaponAnim = String(params.animation ?? '').trim();
+ if (!weaponAnim) {
+ console.warn('[SkillVisualChannel] Skill.animation 为空', params.caster);
+ }
const follow = params.followWeapon && this._useWeapon && this.ensureWeapon();
if (follow) {
this._cancelRestHold();
@@ -389,21 +455,23 @@ export class SkillVisualChannel {
this.syncWeaponPivot(params.caster);
if (params.throwWeapon) {
this._lastThrowFlySec = this._launchWeaponThrow(params.primaryTarget ?? 0);
- } else if (this._weapon.weaponType === WEAPON_TYPE_BOW) {
+ } else if (this._isBowWeapon()) {
this._weapon.showBowAtk();
} else if (this._weaponFlies.length === 0) {
this._weapon.setVisible(true);
}
this._weaponCasting = true;
- const bowAnimTs = this._weapon.weaponType === WEAPON_TYPE_BOW
+ const bowAnimTs = this._isBowWeapon()
? Math.max(animScale, BOW_RELEASE_AT_BASE / BOW_ATTACK_MAX_SEC)
: animScale;
const orbitStaff = this._isWukongSkillOrbit(params);
if (params.keepRestAim || orbitStaff) {
- this._weapon.resetAim();
- } else if (this._weapon.weaponType === WEAPON_TYPE_BOW) {
+ if (!this._isStaffWeapon()) this._weapon.resetAim();
+ } else if (this._isBowWeapon()) {
this._aimWeapon(params.primaryTarget, bowAnimTs, params.aimWorldX, params.aimWorldY, params.fixedAimDeg);
if (!params.skipBowArrow) this._armBowArrow(params.primaryTarget, bowAnimTs);
+ } else if (this._isStaffWeapon()) {
+ /* 法杖不朝向 */
} else if (!params.throwWeapon) {
this._aimWeapon(params.primaryTarget, animScale, params.aimWorldX, params.aimWorldY);
}
@@ -414,7 +482,7 @@ export class SkillVisualChannel {
this._onFollowCastAllComplete();
return animScale;
}
- const held = this._weapon.weaponType === WEAPON_TYPE_BOW
+ const held = this._isBowWeapon()
? this._weapon.playBowDraw(bowAnimTs, this._onFollowCastAllComplete, weaponAnim)
: this._weapon.playAttack(animScale, this._onFollowCastAllComplete, weaponAnim);
if (!held) {
@@ -432,7 +500,7 @@ export class SkillVisualChannel {
return animScale;
}
this._castAnimLeft++;
- const played = this._weapon.weaponType === WEAPON_TYPE_BOW
+ const played = this._isBowWeapon()
? this._weapon.playBowDraw(bowAnimTs, this._onCastAnimPartComplete, weaponAnim)
: this._weapon.playAttack(animScale, this._onCastAnimPartComplete, weaponAnim);
if (!played) {
@@ -462,11 +530,10 @@ export class SkillVisualChannel {
this.playIdle();
}
- /** 弓/枪/棍等旋转武器回待机须插值;刀左右翻转立刻复位 */
+ /** 弓/枪回待机须插值;刀/木立刻复位;法杖不转 */
private _shouldTweenRestAim(): boolean {
- const t = this._weapon.weaponType;
- if (t === WEAPON_TYPE_SWORD || t <= 0) return false;
- return true;
+ const t = this._visType();
+ return t === WEAPON_TYPE_BOW || t === WEAPON_TYPE_SPEAR;
}
/** 枪/棍:攻击2 定格末帧,1 秒内无下一刀再回待机(避免每刀闪回字形) */
@@ -536,7 +603,7 @@ export class SkillVisualChannel {
this._weaponCasting = false;
const aspd = Math.max(0.01, SkillPresentationEnv.getFinalAttackSpeed(params.caster));
const restScale = params.animTimeScale != null && params.animTimeScale > 0 ? params.animTimeScale : aspd;
- if (this._weapon.weaponType === WEAPON_TYPE_BOW && this._weapon.bowAtkShowing) {
+ if (this._isBowWeapon() && this._weapon.bowAtkShowing) {
this._weapon.freezeBowDraw();
this._restWeaponAim(restScale);
} else if (this._shouldTweenRestAim()) {
@@ -561,15 +628,20 @@ export class SkillVisualChannel {
if (!root?.isValid || !parent?.isValid) return false;
const id = caster ?? this._caster;
const world = this._resolveFirstGlyphWorld(id, quiet);
- if (!world) return false;
+ if (!world) {
+ if (this._weapon.weaponId <= 0) {
+ root.setPosition(-WEAPON_LEFT_OFFSET_PX, 0, 0);
+ return true;
+ }
+ return false;
+ }
this._weaponWorld.set(world.x - WEAPON_LEFT_OFFSET_PX, world.y, world.z);
parent.inverseTransformPoint(this._weaponWorld, this._weaponWorld);
root.setPosition(this._weaponWorld);
root.angle = 0;
if (this._weapon.bowAtkShowing) this._weapon.syncBowAtkPivot();
// 仅刀在非施法时立刻复位;枪/棍回正走插值,此处 resetAim 会硬切
- if (!this._weaponCasting
- && (this._weapon.weaponType === WEAPON_TYPE_SWORD || this._weapon.weaponType <= 0)) {
+ if (!this._weaponCasting && this._isFlipWeapon()) {
this._weapon.resetAim();
}
return true;
@@ -583,7 +655,7 @@ export class SkillVisualChannel {
if (String(params.skillKind ?? '') !== 'hero') return false;
if (String(params.animation ?? '').trim() !== WUKONG_SKILL_ANIM) return false;
if (params.throwWeapon) return false;
- return this._weapon.weaponType !== WEAPON_TYPE_BOW;
+ return !this._isBowWeapon();
}
/**
@@ -686,7 +758,7 @@ export class SkillVisualChannel {
landId: params?.projectileLandId ?? 0,
onLand: params?.onProjectileLand ?? null,
});
- const releaseAt = this._weapon.weaponType === WEAPON_TYPE_BOW ? BOW_RELEASE_AT_BASE : PRES_HIT_AT_BASE;
+ const releaseAt = this._isBowWeapon() ? BOW_RELEASE_AT_BASE : PRES_HIT_AT_BASE;
schedulePresentation(releaseAt / Math.max(0.01, aspd), this._onBowLaunchDue);
}
@@ -716,7 +788,7 @@ export class SkillVisualChannel {
if (job.onLand) job.onLand(job.target, job.landId);
return;
}
- if (this._weapon.weaponType === WEAPON_TYPE_BOW) {
+ if (this._isBowWeapon()) {
this._launchBowArrow(job.target, job.landId, job.onLand);
} else {
this._launchWeaponThrow(job.target);
@@ -823,7 +895,15 @@ export class SkillVisualChannel {
*/
resolveBowShapeLaunchDelay(animScale: number): number {
const scale = Math.max(0.01, animScale);
- if (this._weapon.weaponType === WEAPON_TYPE_BOW) {
+ if (this._isStaffWeapon()) {
+ const name = String(this._castAnimParams?.animation ?? '').trim();
+ const anim = this._weapon.skinAnim;
+ const dur = name && anim?.isValid ? BattleSpinePlayback.getAnimDuration(anim, name) : null;
+ if (dur != null && dur > 0) return dur / scale;
+ console.warn('[SkillVisualChannel] 水弹出手延迟无动画时长', name);
+ return PRES_HIT_AT_BASE / scale;
+ }
+ if (this._isBowWeapon()) {
const bowTs = Math.max(scale, BOW_RELEASE_AT_BASE / BOW_ATTACK_MAX_SEC);
return BOW_RELEASE_AT_BASE / bowTs;
}
@@ -843,7 +923,10 @@ export class SkillVisualChannel {
* @returns 是否发出
*/
launchVolleyShot(caster: EntityId, abilityId: string, target: EntityId, scale: number, buff1: string, buff2: string, shotIndex: number, aimWorld: Readonly): boolean {
- if (this._weapon.weaponType === WEAPON_TYPE_BOW && !this._weapon.bowAtkShowing) {
+ if (this._isStaffWeapon()) {
+ return this._launchWaterBall(caster, abilityId, target, scale, buff1, buff2, aimWorld);
+ }
+ if (this._isBowWeapon() && !this._weapon.bowAtkShowing) {
this._weapon.showBowAtk();
}
this._weaponCasting = true;
@@ -909,6 +992,14 @@ export class SkillVisualChannel {
this._recycleBowArrow(node);
}
+ /**
+ * 回收飞行水弹。
+ * @param node 水弹根
+ */
+ recycleWaterBall(node: Node): void {
+ this._recycleWeaponFly(node);
+ }
+
/**
* 克隆箭到飞行层。
* @param fromWorld 起点世界坐标
@@ -1028,6 +1119,92 @@ export class SkillVisualChannel {
if (onLand) onLand(target, landId);
}
+ /**
+ * 法杖普攻:实例化「水弹」直线飞向目标,落地结算。
+ * @param caster 施法者
+ * @param abilityId Ability id
+ * @param target 锁定目标
+ * @param scale 伤害倍率
+ * @param buff1 atk_buff1
+ * @param buff2 atk_buff2
+ * @param aimWorld 瞄准点
+ * @returns 是否发出
+ */
+ private _launchWaterBall(caster: EntityId, abilityId: string, target: EntityId, scale: number, buff1: string, buff2: string, aimWorld: Readonly): boolean {
+ this._weaponCasting = true;
+ const fromNode = this._weapon.skinAnim?.node ?? this._weapon.aim ?? this._weapon.root;
+ if (!fromNode?.isValid) {
+ console.log('[SkillVisualChannel] 水弹无起点');
+ return false;
+ }
+ const live = target > 0 ? SkillPresentationEnv.getTargetWorldPos(target) : null;
+ const to = live ?? aimWorld;
+ if (!to) {
+ console.log('[SkillVisualChannel] 水弹无目标坐标', target);
+ return false;
+ }
+ this._arrowFrom.set(fromNode.worldPosition);
+ this._arrowTo.set(to);
+ const dist = Vec3.distance(this._arrowFrom, this._arrowTo);
+ const duration = Math.max(0.12, dist / WATER_BALL_SPEED);
+ const node = this._spawnWaterBall(this._arrowFrom);
+ if (!node) return false;
+ SkillTransformDriver.animateParabola({
+ node,
+ duration,
+ fromWorld: this._arrowFrom,
+ toWorld: this._arrowTo,
+ arcHeight: 0,
+ easing: SkillTransformDriver.easeLinear,
+ faceTangent: true,
+ });
+ const land = WaterBallRecycle.obtain(this, node);
+ getBowAtkHost().spawnVolley({
+ caster,
+ target,
+ abilityId,
+ wait: duration,
+ scale,
+ buff1,
+ buff2,
+ onLand: land.onLand,
+ });
+ return true;
+ }
+
+ /**
+ * 取出「水弹」挂到飞行层。
+ * @param fromWorld 起点
+ */
+ private _spawnWaterBall(fromWorld: Readonly): Node | null {
+ const flyLayer = SkillPresentationEnv.flyLayer;
+ if (!flyLayer?.isValid) {
+ console.log('[SkillVisualChannel] 水弹无飞行层');
+ return null;
+ }
+ let node: Node | null = null;
+ try {
+ node = gg.res.getNode(GPath.HeroSkillPrefab(), WATER_BALL_PREFAB, GBundle.BattleHero);
+ } catch (e) {
+ console.log('[SkillVisualChannel] 水弹加载异常', String(e));
+ return null;
+ }
+ if (!node?.isValid) {
+ console.log('[SkillVisualChannel] 水弹预制体未加载');
+ return null;
+ }
+ flyLayer.active = true;
+ node.parent = flyLayer;
+ node.active = true;
+ node.layer = flyLayer.layer;
+ const flyUt = flyLayer.getComponent(UITransform);
+ if (flyUt) node.setPosition(flyUt.convertToNodeSpaceAR(fromWorld));
+ else node.setWorldPosition(fromWorld);
+ node.setSiblingIndex(flyLayer.children.length - 1);
+ this._weaponFlies.push(node);
+ return node;
+ }
+
/**
* 取出玉帝飞剑,根节点沿抛物线切线飞向目标。
* @param target 主目标
@@ -1303,11 +1480,12 @@ export class SkillVisualChannel {
* @param fixedAimDeg 固定朝向(优先)
*/
private _aimWeapon(primaryTarget: EntityId | null, aspd: number, aimWorldX?: number, aimWorldY?: number, fixedAimDeg?: number): void {
- if (this._weapon.weaponType === WEAPON_TYPE_BOW && this._weapon.bowAtkShowing && fixedAimDeg != null && Number.isFinite(fixedAimDeg)) {
+ if (this._isStaffWeapon()) return;
+ if (this._isBowWeapon() && this._weapon.bowAtkShowing && fixedAimDeg != null && Number.isFinite(fixedAimDeg)) {
this._tweenWeaponAim(fixedAimDeg, WEAPON_AIM_SEC / Math.max(0.01, aspd));
return;
}
- const aimNode = this._weapon.weaponType === WEAPON_TYPE_BOW && this._weapon.bowAtkShowing
+ const aimNode = this._isBowWeapon() && this._weapon.bowAtkShowing
? (this._weapon.bowAtkRoot ?? this._weapon.aim)
: this._weapon.aim;
if (!aimNode?.isValid) {
@@ -1325,18 +1503,18 @@ export class SkillVisualChannel {
if (!targetWorld) {
targetWorld = worldPointAtAimAngle(pivotWorld, WEAPON_REST_ANGLE, 200);
}
- if (this._weapon.weaponType === WEAPON_TYPE_SWORD) {
+ if (this._isFlipWeapon()) {
this._weapon.aimByTargetX(targetWorld.x);
return;
}
- const aim = this._weapon.weaponType === WEAPON_TYPE_BOW && !this._aimDirect
+ const aim = this._isBowWeapon() && !this._aimDirect
? computeArrowBowAimDeg(pivotWorld, targetWorld)
: computeAimAngleDeg(pivotWorld, targetWorld);
if (aim == null) {
console.log('[SkillVisualChannel] 武器朝向为零', this._weapon.weaponId);
return;
}
- // 弓转攻效根;枪/棍等转 weapon 节点,均插值,禁止硬切
+ // 弓转攻效根;枪转 weapon 节点,均插值,禁止硬切
this._tweenWeaponAim(aim, WEAPON_AIM_SEC / Math.max(0.01, aspd));
}
@@ -1349,7 +1527,7 @@ export class SkillVisualChannel {
*/
private _restWeaponAim(aspd: number): void {
const duration = WEAPON_AIM_SEC / Math.max(0.01, aspd);
- if (this._weapon.weaponType === WEAPON_TYPE_BOW) {
+ if (this._isBowWeapon()) {
if (this._weapon.bowAtkShowing) {
const fromDeg = this._weapon.bowAtkRoot?.angle ?? BOW_ATK_REST_ANGLE;
if (this._weapon.bowAtkRoot?.isValid) {
@@ -1363,11 +1541,11 @@ export class SkillVisualChannel {
this._tweenWeaponAim(WEAPON_REST_ANGLE, duration, this._onWeaponAimRestCompleteBound);
return;
}
- if (this._weapon.weaponType === WEAPON_TYPE_SWORD) {
+ if (this._isFlipWeapon() || this._isStaffWeapon()) {
this._weapon.resetAim();
return;
}
- // 枪/棍等:从当前瞄准角插值回待机角,到位后再播待机
+ // 枪:从当前瞄准角插值回待机角,到位后再播待机
this._tweenWeaponAim(WEAPON_REST_ANGLE, duration, this._onWeaponAimRestCompleteBound);
}
diff --git a/assets/script/battle/res/BattleHeroResCollector.ts b/assets/script/battle/res/BattleHeroResCollector.ts
index b6b359a..c416bfb 100644
--- a/assets/script/battle/res/BattleHeroResCollector.ts
+++ b/assets/script/battle/res/BattleHeroResCollector.ts
@@ -10,7 +10,7 @@ export const BATTLE_HERO_BODY_PATH = 'prefab/hero';
/** 攻效预制体目录(枪/棍/弓等独立攻击 prefab) */
export const BATTLE_HERO_SKILL_PATH = 'prefab/skill';
-/** 组合英雄武器类型预制体目录 */
+/** 武器类型预制体目录(weaponType1–5) */
export const BATTLE_HERO_WEAPON_PATH = 'prefab/weapon';
/** 局内 buff 预制体目录(缚仙网 / 乾坤袋 / 文昌笔等) */
@@ -19,7 +19,7 @@ export const BATTLE_HERO_BUFF_PATH = 'prefab/buff/';
/** battleGameMonster 怪物皮肤目录 */
export const BATTLE_MONSTER_SKIN_PATH = 'prefab/monster';
-/** 进战阻塞包:英雄体 + 攻效 + buff(武器目录进局后再静默补) */
+/** 进战阻塞包:英雄体 + 攻效 + buff + 武器类型预制体 */
export function appendBattleHeroDirLoads(resPkg: ResPakage): void {
if (!resPkg.dirs) {
resPkg.dirs = [];
@@ -28,6 +28,7 @@ export function appendBattleHeroDirLoads(resPkg: ResPakage): void {
{ bundle: BATTLE_HERO_BUNDLE, path: BATTLE_HERO_BODY_PATH, type: Prefab },
{ bundle: BATTLE_HERO_BUNDLE, path: BATTLE_HERO_SKILL_PATH, type: Prefab },
{ bundle: BATTLE_HERO_BUNDLE, path: BATTLE_HERO_BUFF_PATH, type: Prefab },
+ { bundle: BATTLE_HERO_BUNDLE, path: BATTLE_HERO_WEAPON_PATH, type: Prefab },
];
for (const dir of dirs) {
resPkg.dirs.push(dir);
diff --git a/assets/script/battle/skill/SkillController.ts b/assets/script/battle/skill/SkillController.ts
index ee1ac33..6f46fbb 100644
--- a/assets/script/battle/skill/SkillController.ts
+++ b/assets/script/battle/skill/SkillController.ts
@@ -22,6 +22,7 @@ import { BattleAudio } from '../audio/BattleAudio';
import { SkillNameFloater, ULT_SKILL_RELEASE_DELAY_SEC } from './SkillNameFloater';
import { HeroActorHost } from '../heros/HeroActorHost';
import { isHeroActorWeapon1 } from '../heros/HeroActorRes';
+import { isElementCombatHeroId } from '../config/BattleHeroTable';
import { ensureSpecialSkillPresenters } from '../presentation/SpecialSkillPresenters';
import { getNezhaChargeHost } from '../presentation/NezhaChargePresenter';
import { getPagodaSmashHost } from '../presentation/PagodaSmashPresenter';
@@ -394,13 +395,13 @@ export class SkillController extends Component {
*/
private _shouldRetrySkillBind(entityId: EntityId): boolean {
const loadout = getTowerLoadoutService().getLoadout(entityId);
- if (loadout && !isHeroActorWeapon1(loadout.weapon1Id)) return false;
+ if (loadout && !isHeroActorWeapon1(loadout.weapon1Id) && !isElementCombatHeroId(loadout.weapon1Id)) return false;
const session = this._match?.session;
const player = this._player;
const map = this._map;
if (!session || !player || !map) return true;
const comp = findCompositionForEntity(entityId, player, session, map);
- if (comp && !isHeroActorWeapon1(comp.weapon1Id)) return false;
+ if (comp && !isHeroActorWeapon1(comp.weapon1Id) && !isElementCombatHeroId(comp.weapon1Id)) return false;
return true;
}
@@ -418,7 +419,16 @@ export class SkillController extends Component {
if (!session || !player || !map) return null;
const comp = findCompositionForEntity(entityId, player, session, map);
- if (!comp || !isHeroActorWeapon1(comp.weapon1Id)) return null;
+ if (!comp) return null;
+ if (isElementCombatHeroId(comp.weapon1Id)) {
+ const gridIndex = this._resolveGridIndex(entityId);
+ const grid = gridIndex != null ? this._mapGrids?.get(gridIndex) : null;
+ const skill = grid?.ensureNumberSkill(comp.weapon1Id, entityId) ?? null;
+ if (!skill?.isValid) return null;
+ this.registerEntitySkill(entityId, skill.node);
+ return this._skills.get(entityId) ?? skill;
+ }
+ if (!isHeroActorWeapon1(comp.weapon1Id)) return null;
HeroActorHost.instance.syncFromMap(entityId, comp, map, !player.isLocal);
const created = HeroActorHost.instance.getActor(entityId);
diff --git a/assets/script/battle/view/HeroWeaponMount.ts b/assets/script/battle/view/HeroWeaponMount.ts
index 5218ea2..12408e6 100644
--- a/assets/script/battle/view/HeroWeaponMount.ts
+++ b/assets/script/battle/view/HeroWeaponMount.ts
@@ -3,15 +3,17 @@ import { ensureSpineSkeletonDataRuntime } from 'db://assets/mx/module/lang/spine
import { GBundle } from '../../game/ConfigRes';
import { TableNames } from '../../game/ConfigTableData';
import { BattleSpinePlayback } from '../presentation/BattleSpinePlayback';
+import { BattleMapSpec } from '../map/BattleMapSpec';
import { applyWeaponSpineSkin, spineSkinName } from './GlyphSpineSkin';
-/** 武器类型 → 预制体名(Weapon.type:1 刀 / 2 枪 / 3 棍 / 4 弓) */
+/** 武器类型 → 预制体名(Hero.herotype / Weapon.type:1–5) */
const WEAPON_TYPE_PREFAB: ReadonlyArray = [
'',
'weaponType1',
'weaponType2',
'weaponType3',
'weaponType4',
+ 'weaponType5',
];
const WEAPON_PREFAB_PATH = 'prefab/weapon/';
@@ -24,25 +26,32 @@ const NODE_PROJECTILE_ANIM = 'anim';
/** weapon 节点:刀左右翻转,其余旋转朝向 */
const AIM_NODE = 'weapon';
const SKIN_NODE = 'skin';
+/** 技能动画节点(优先于 skin) */
+const ANIM_NODE = 'anim';
/** 弓投掷物节点(weaponType4 / weapon 下) */
const ARROW_NODE = '箭';
-/** Weapon.type 刀 */
+/** Weapon.type / herotype 刀、金 */
const WEAPON_TYPE_SWORD = 1;
-/** Weapon.type 弓 */
+/** herotype 木:与刀相同只左右翻转 */
+const WEAPON_TYPE_WOOD = 2;
+/** herotype 水:法杖不旋转 */
+const WEAPON_TYPE_STAFF = 3;
+/** Weapon.type / herotype 弓、火 */
const WEAPON_TYPE_BOW = 4;
const SPINE_ATTACK_DEFAULT = '攻击';
const SPINE_IDLE = '待机';
-/** 四套 weaponType* 的 weapon 节点待机角(预制体 euler.z) */
+/** weaponType* 的 weapon 节点待机角(预制体 euler.z) */
export const WEAPON_REST_ANGLE = 180;
+/** 相对格心再向左(约 0.35 格,与老项目组合武器一致) */
+export const WEAPON_LEFT_OFFSET_PX = BattleMapSpec.CELL_SIZE * 0.35;
/** 「武器弓-攻击」根节点待机角(预制体 euler.z,拉弓动画本地角不动) */
export const BOW_ATK_REST_ANGLE = 0;
/** 万箭齐发:武器弓-攻击朝上 */
export const BOW_RAIN_AIM_DEG = 90;
/**
- * 组合英雄战斗武器挂载:按 Weapon.type 加载 weaponType*,按 Weapon.skin 切肤。
+ * 战斗武器挂载:Weapon.type 或 Hero.herotype 对应 weaponType*。
* 弓攻击藏 weaponType4,改显「武器弓-攻击」;朝向只转该根节点,不改拉弓动画本地角。
- * 拉弓动画与投掷物/anim 套当前 Weapon.skin。
*/
export class HeroWeaponMount {
private _root: Node | null = null;
@@ -94,11 +103,16 @@ export class HeroWeaponMount {
return this._weaponId;
}
- /** 当前武器类型(1–4) */
+ /** 当前武器类型(1–5);无武器表行时为 herotype */
get weaponType(): number {
return this._type;
}
+ /** Weapon 表类型;五行挂载(无 weaponId)为 0,避免当成刀/弓 */
+ get tableWeaponType(): number {
+ return this._weaponId > 0 ? this._type : 0;
+ }
+
/** 当前 Weapon.skin */
get skinName(): string {
return this._skinName;
@@ -163,9 +177,9 @@ export class HeroWeaponMount {
this.release();
return false;
}
- this._skinAnim = this._aim.getChildByName(SKIN_NODE)?.getComponent(sp.Skeleton) ?? null;
+ this._skinAnim = this._resolveAnimSpine(root);
if (!this._skinAnim?.isValid) {
- console.error('[HeroWeaponMount] 缺少 skin/Spine', prefabName);
+ console.error('[HeroWeaponMount] 缺少 anim/skin Spine', prefabName);
this.release();
return false;
}
@@ -177,11 +191,69 @@ export class HeroWeaponMount {
return true;
}
- /** 朝向节点转回预制体待机角;刀额外把 scale.x 复原为 1 */
+ /**
+ * 按 Hero.herotype 挂 weaponType*(五行数字,不查 Weapon 表、不套装备皮)。
+ * @param parent 挂点
+ * @param herotype Hero.herotype(1–5)
+ */
+ ensureByHeroType(parent: Node, herotype: number): boolean {
+ if (!parent?.isValid) {
+ console.error('[HeroWeaponMount] parent 无效');
+ return false;
+ }
+ const type = Math.floor(Number(herotype) || 0);
+ const prefabName = WEAPON_TYPE_PREFAB[type] ?? '';
+ if (!prefabName) {
+ console.error('[HeroWeaponMount] 不支持的 herotype', herotype);
+ return false;
+ }
+ if (this._root?.isValid && this._type === type && this._weaponId <= 0) {
+ if (this._root.parent !== parent) this._root.parent = parent;
+ this._root.setPosition(-WEAPON_LEFT_OFFSET_PX, 0, 0);
+ if (type === WEAPON_TYPE_BOW) {
+ if (!this._arrow?.isValid) this._bindArrow();
+ this._ensureBowAtkPrefab();
+ }
+ return !!this._skinAnim?.isValid;
+ }
+ this.release();
+ const root = gg.res.getNode(WEAPON_PREFAB_PATH, prefabName, GBundle.BattleHero);
+ if (!root?.isValid) {
+ console.error('[HeroWeaponMount] 预制体未加载', prefabName);
+ return false;
+ }
+ root.parent = parent;
+ root.setPosition(-WEAPON_LEFT_OFFSET_PX, 0, 0);
+ root.active = false;
+ this._root = root;
+ this._type = type;
+ this._weaponId = 0;
+ this._aim = root.getChildByName(AIM_NODE);
+ if (!this._aim?.isValid) {
+ console.error('[HeroWeaponMount] 缺少 weapon 朝向节点', prefabName);
+ this.release();
+ return false;
+ }
+ this._skinAnim = this._resolveAnimSpine(root);
+ if (!this._skinAnim?.isValid) {
+ console.error('[HeroWeaponMount] 缺少 anim/skin Spine', prefabName);
+ this.release();
+ return false;
+ }
+ const sd = this._skinAnim.skeletonData;
+ if (sd?.isValid) ensureSpineSkeletonDataRuntime(sd);
+ this._bindArrow();
+ if (type === WEAPON_TYPE_BOW) this._ensureBowAtkPrefab();
+ if (type !== WEAPON_TYPE_STAFF) this.resetAim();
+ return true;
+ }
+
+ /** 朝向节点转回待机角;刀/木复位左右缩放。水弹法杖不改预制体角 */
resetAim(): void {
if (!this._aim?.isValid) return;
+ if (this._type === WEAPON_TYPE_STAFF) return;
this._aim.angle = WEAPON_REST_ANGLE;
- if (this._type === WEAPON_TYPE_SWORD) this._setAimScaleX(1);
+ if (this._isFlipType()) this._setAimScaleX(1);
}
/**
@@ -193,13 +265,13 @@ export class HeroWeaponMount {
}
/**
- * 刀:保持待机角,按目标左右翻转 weapon.scale.x(左=1,右=-1)。
+ * 刀/木:保持待机角,按目标左右翻转 weapon.scale.x(左=1,右=-1)。
* @param targetWorldX 目标世界 X
*/
aimByTargetX(targetWorldX: number): void {
if (!this._aim?.isValid) return;
- if (this._type !== WEAPON_TYPE_SWORD) {
- console.log('[HeroWeaponMount] aimByTargetX 仅刀', this._type, 'weaponId=', this._weaponId);
+ if (!this._isFlipType()) {
+ console.log('[HeroWeaponMount] aimByTargetX 仅刀/木', this._type, 'weaponId=', this._weaponId);
return;
}
this._aim.angle = WEAPON_REST_ANGLE;
@@ -224,15 +296,21 @@ export class HeroWeaponMount {
return this._playNamed(name, false, timeScale, onComplete);
}
- /** 播放武器待机(无则停在 setup) */
+ /** 播放武器待机(无「待机」则播预制体 defaultAnimation) */
playIdle(timeScale: number = 1): void {
this.hideBowAtk(true);
this.setArrowVisible(false);
const anim = this._skinAnim;
if (!anim?.isValid) return;
if (BattleSpinePlayback.play(anim, SPINE_IDLE, { loop: true, timeScale, optional: true })) return;
- BattleSpinePlayback.clearPendingComplete(anim);
- BattleSpinePlayback.resetTracks(anim);
+ const fallback = String(anim.animation ?? '').trim();
+ if (fallback && BattleSpinePlayback.play(anim, fallback, { loop: true, timeScale, optional: true })) {
+ if (fallback !== SPINE_IDLE) {
+ console.warn('[HeroWeaponMount] 无待机,改播预制体默认动画', fallback, 'type=', this._type);
+ }
+ return;
+ }
+ console.warn('[HeroWeaponMount] 待机未起播', this._type, this._weaponId, fallback);
}
/**
@@ -502,6 +580,23 @@ export class HeroWeaponMount {
this._aim.setScale(x, this._aim.scale.y, this._aim.scale.z);
}
+ /** 刀、木:只左右翻转,不旋转 */
+ private _isFlipType(): boolean {
+ return this._type === WEAPON_TYPE_SWORD || this._type === WEAPON_TYPE_WOOD;
+ }
+
+ /**
+ * 技能动画 Spine:优先 weapon/anim 或根 anim,否则 weapon/skin。
+ * @param root 武器预制体根
+ */
+ private _resolveAnimSpine(root: Node): sp.Skeleton | null {
+ const aim = this._aim;
+ const node = (aim?.isValid ? aim.getChildByName(ANIM_NODE) : null)
+ ?? root.getChildByName(ANIM_NODE)
+ ?? (aim?.isValid ? aim.getChildByName(SKIN_NODE) : null);
+ return node?.getComponent(sp.Skeleton) ?? null;
+ }
+
private _playNamed(
name: string,
loop: boolean,
diff --git a/assets/script/battle/view/MapDragGuideHelper.ts b/assets/script/battle/view/MapDragGuideHelper.ts
index 32a4f7d..383c266 100644
--- a/assets/script/battle/view/MapDragGuideHelper.ts
+++ b/assets/script/battle/view/MapDragGuideHelper.ts
@@ -78,7 +78,7 @@ export class MapDragGuideHelper {
}
/**
- * 引导加号语义:普通字仅空 Put 为 valid;蟠桃树空 Dig/Put 为 valid。
+ * 引导加号语义:五行字空 Put 为 valid;待解锁格须类型(0 任意)与显示等级都达标。
* 已有字块的格不显示 +(升级目标由 isBagDropLineTarget / hover 单独放行)。
*/
static getMapDragDropState(
@@ -117,6 +117,9 @@ export class MapDragGuideHelper {
}
if (mg.waitingUnlock && !hasTile) {
if (!session.validator.isAllowedCampForPlace(gridIndex)) return 'blocked';
+ if (!source || !session.canUnlockArea(gridIndex, source.weapon2Id, source.level)) {
+ return 'none';
+ }
return 'valid';
}
if (mg.isCanWalk || mg.isCanBeDig) return 'blocked';
diff --git a/assets/script/battle/view/TextGrid.ts b/assets/script/battle/view/TextGrid.ts
index 6bf3a66..ffebdea 100644
--- a/assets/script/battle/view/TextGrid.ts
+++ b/assets/script/battle/view/TextGrid.ts
@@ -22,6 +22,7 @@ import { ensureSpineSkeletonDataRuntime } from 'db://assets/mx/module/lang/spine
import { HERO_GLYPH_RESOURCES, isHeroActorWeapon1, YING_WEAPON1_ID } from '../heros/HeroActorRes';
import { aiPlaceCampForPlayer } from '../ai/runtime/AiCampArea';
import { HeroActorHost } from '../heros/HeroActorHost';
+import { HeroActor } from '../heros/HeroActor';
import { ClientErrorReporter } from '../../../mx/tools/ClientErrorReporter';
import {
applyGlyphSpineSkin,
@@ -157,6 +158,7 @@ export interface TextGridData extends TileEntitySnapshot {
/**
* 背包/地图字块视图(textGrid 预制体)。
* 五行字:不显示 lv;按 Hero(herotype=Text.type, level=当前显示等级).number 打开同名节点,并切金/木/水/火/土皮。
+ * 地图激活后按当前 Hero.herotype 挂 weaponType*。
* 铲:显示「铲」节点;蟠桃树(102):显示「桃/桃树」Spine。
*/
@ccclass('TextGrid')
@@ -1105,6 +1107,7 @@ export class TextGrid extends Component {
this._shovelDigScheduleGen++;
this._shovelDigComplete = null;
this._releaseYingCampDisplay();
+ this.releaseNumberSkill();
this.clearPositiveBuffFx();
this.clearSleepFx();
this.clearConfusionFx();
@@ -1166,6 +1169,7 @@ export class TextGrid extends Component {
}
onDestroy(): void {
+ this.releaseNumberSkill();
this.clearPositiveBuffFx();
this.clearSleepFx();
this.clearConfusionFx();
@@ -2329,10 +2333,12 @@ export class TextGrid extends Component {
this._hideLevelLabel();
if (!this._isElementNumberTile()) {
this._hideNumberNodes();
+ this._syncNumberSkill();
return;
}
const yingCover = !!this._yingCampDisplay?.isValid && this._yingCampDisplay.active;
this._applyNumberGlyph(!this._shouldHideGridSkin() && !yingCover);
+ this._syncNumberSkill();
}
/** 显示等级:以 setData 写入的 level 为准(与 tile / 组合数据同步) */
@@ -2510,6 +2516,7 @@ export class TextGrid extends Component {
/** 地图字块已组合为攻击单位 → 激活;拆开或未组合 → 关闭;组合字切换 Spine 皮肤 */
private _syncSkillActiveState(): void {
this._syncShadow();
+ this._syncNumberSkill();
if (this._isPeachTreeTile()) return;
if (this._isShovelTile() && !this._isElementNumberTile()) return;
const composition = this._getComposition();
@@ -2689,6 +2696,59 @@ export class TextGrid extends Component {
this._applySkinSpineIcon(this._skinIconName);
}
+ /**
+ * 地图五行数字挂 HeroActor:普攻走 Skill 表,武器播 Skill.animation。
+ * @param heroId Hero.id
+ * @param entityId 塔实体
+ */
+ ensureNumberSkill(heroId: number, entityId: EntityId): Skill | null {
+ if (!this._isElementNumberTile() || this.location?.kind !== 'map') return null;
+ const hid = Math.floor(Number(heroId) || 0);
+ if (!(hid > 0)) return null;
+ let actor = this.getComponent(HeroActor);
+ if (!actor) actor = this.addComponent(HeroActor);
+ actor.setHeroId(hid);
+ actor.bindEntity(entityId);
+ if (!actor.isActive) {
+ actor.isActive = true;
+ actor.onUpdateActive(true);
+ } else if (!actor.isPresentationBusy()) {
+ actor.onIdle();
+ }
+ return actor;
+ }
+
+ /** 收回背包或换非五行字时拆掉数字 HeroActor */
+ releaseNumberSkill(): void {
+ const actor = this.getComponent(HeroActor);
+ if (!actor) return;
+ actor.isActive = false;
+ actor.onUpdateActive(false);
+ actor.visualChannel.release();
+ actor.destroy();
+ }
+
+ /** 地图激活数字:对账 HeroActor 与武器 */
+ private _syncNumberSkill(): void {
+ const onMap = this._isElementNumberTile() && this.location?.kind === 'map';
+ if (!onMap) {
+ this.releaseNumberSkill();
+ return;
+ }
+ const herotype = Math.floor(Number(this._entity?.tile?.type));
+ const hero = this._heroByTypeLevel(herotype, this._resolveDisplayLevel());
+ if (!hero) {
+ this.releaseNumberSkill();
+ return;
+ }
+ const loc = this.location;
+ const entityId = loc?.kind === 'map'
+ ? TowerQueryService.instance.getRuntimeByGridIndex(loc.gridIndex)?.entityId ?? null
+ : null;
+ if (entityId == null) return;
+ this.ensureNumberSkill(hero.id, entityId);
+ }
+
/** 当前字块在地图上且属于有效组合(含单格 Weapon1) */
private _isMapComposedAttackUnit(): boolean {
const loc = this.location;
diff --git a/assets/script/game/ResPkgBuilder.ts b/assets/script/game/ResPkgBuilder.ts
index 613dca3..30e88c3 100644
--- a/assets/script/game/ResPkgBuilder.ts
+++ b/assets/script/game/ResPkgBuilder.ts
@@ -5,8 +5,6 @@ import { ChapterLevelBuilder } from '../battle/config/ChapterLevelBuilder';
import {
appendBattleHeroDirLoads,
appendBattleMonsterDirLoad,
- BATTLE_HERO_BUNDLE,
- BATTLE_HERO_WEAPON_PATH,
} from '../battle/res/BattleHeroResCollector';
/** 战斗分包名(与 GBundle 一致,避免 ConfigRes 循环依赖) */
@@ -92,7 +90,6 @@ export class ResPkgBuilder {
{ bundle: B.BattleGame, path: PrefabPath, name: '受击特效' },
{ bundle: B.BattleGame, path: PrefabPath, name: '受击刀痕' },
{ bundle: B.BattleGame, path: PrefabPath, name: '死亡' },
- { bundle: BATTLE_HERO_BUNDLE, path: BATTLE_HERO_WEAPON_PATH },
];
}
diff --git a/assets/script/ui/BattleGame/UIBattleGame.ts b/assets/script/ui/BattleGame/UIBattleGame.ts
index 19240d6..3ca2047 100644
--- a/assets/script/ui/BattleGame/UIBattleGame.ts
+++ b/assets/script/ui/BattleGame/UIBattleGame.ts
@@ -69,6 +69,8 @@ import { BattleFirstGuidePresenter } from './BattleFirstGuidePresenter';
import { LangTxt } from 'db://assets/mx/module/lang/LangTxt';
import { ClientErrorReporter } from '../../../mx/tools/ClientErrorReporter';
import { PerfSampler } from '../../game/PerfSampler';
+import { isElementGlyphType, MergeEventType, type MergeEvent } from 'db://assets/mx/module/merge';
+import { WeaponComposeConfigProvider } from '../../battle/bag/WeaponComposeConfigProvider';
const { ccclass } = _decorator;
@@ -419,15 +421,41 @@ export class UIBattleGame extends Auto_BattleGame {
getBattleGameMonsterCrisisHintPresenter().bind(battle, map);
this._firstGuide.bind(this.ui_guide, battle.bagSession);
PerfSampler.beginBattle();
+ this._listenFirstPlaceCombat();
+ this._refreshWaveUi();
+ }
- if (!this._combatStarted) {
- this._combatStarted = true;
- gg.battle.startCombat();
- this._refreshWaveUi();
+ /** 开局不立刻出怪:等本机玩家第一次把数字放到地图后再 startCombat */
+ private _listenFirstPlaceCombat(): void {
+ this._unbindFirstPlaceCombat();
+ const bag = this._battle?.bagSession;
+ if (!bag) {
+ console.error('[UIBattleGame] 无背包会话,无法按首次放字开怪');
+ return;
}
- this._refreshWaveUi();
+ bag.on(MergeEventType.TilePlaced, this._onFirstPlayerNumberPlaced);
+ }
+
+ /** 卸掉首次放字开怪监听 */
+ private _unbindFirstPlaceCombat(): void {
+ this._battle?.bagSession?.off(MergeEventType.TilePlaced, this._onFirstPlayerNumberPlaced);
}
+ /**
+ * 本机首次放下五行数字后开波。
+ * @param event 地图落子事件
+ */
+ private readonly _onFirstPlayerNumberPlaced = (event: MergeEvent): void => {
+ if (this._combatStarted) return;
+ if (event.type !== MergeEventType.TilePlaced) return;
+ const tileType = Math.floor(Number(WeaponComposeConfigProvider.instance.getWeapon2Type(event.weapon2Id)));
+ if (!isElementGlyphType(tileType)) return;
+ this._unbindFirstPlaceCombat();
+ this._combatStarted = true;
+ gg.battle.startCombat();
+ this._refreshWaveUi();
+ };
+
/** 绑定 HitAfter/Buff/死亡等战斗事件(须在 monsterPresenter 之后) */
private _bindBattleEvents(battle: ProjectBattleHandle): void {
if (this._onBattleEventBound) {
@@ -1139,6 +1167,7 @@ export class UIBattleGame extends Auto_BattleGame {
this._passiveSkillView = null;
this._otherSkillView = null;
this._otherOwnedDesc = null;
+ this._unbindFirstPlaceCombat();
this._firstGuide.unbind();
this._bagView?.unbind();
this._bagView = null;
diff --git a/docs/方案-出怪逻辑实现.md b/docs/方案-出怪逻辑实现.md
index c36510b..ac7018e 100644
--- a/docs/方案-出怪逻辑实现.md
+++ b/docs/方案-出怪逻辑实现.md
@@ -103,7 +103,7 @@ UIPanelHome ← pickRandomBattleLevelId 进关
2. `GameController.enterBattle` → 预载 → `gg.battle.start`
3. `ChapterLevelBuilder.build` → `LevelWaveParser.toWaveDefs`
4. `UIBattleGame` → `loadMap` → `applyMapTopologyToSession(..., 'pvp')`
-5. `CocosBattleMonsterPresenter.bind` + `startCombat` → 双口出怪 + 寻路表现
+5. `CocosBattleMonsterPresenter.bind`;**本机玩家第一次把数字放到地图后** `startCombat` → 双口出怪 + 寻路表现
## 4. 默认参数
diff --git a/配置表/excelList/技能表.xlsx b/配置表/excelList/技能表.xlsx
index 0bb93d1..24855d4 100644
Binary files a/配置表/excelList/技能表.xlsx and b/配置表/excelList/技能表.xlsx differ