Kaynağa Gözat

Merge branch 'master' of http://192.168.123.2:3000/ck/XiuXianGame

# Conflicts:
#	UserSettings/Layouts/default-2022.dwlt   resolved by origin/master(远端) version
李桃 6 gün önce
ebeveyn
işleme
8590f2b6e6
96 değiştirilmiş dosya ile 2822 ekleme ve 608 silme
  1. 9 9
      Assets/Res/Config/EventConditionConfig.json
  2. 76 66
      Assets/Res/Config/EventConfig.json
  3. 66 2
      Assets/Res/Config/EventLinkConfig.json
  4. 6 0
      Assets/Res/Config/EventNPC.json
  5. 55 55
      Assets/Res/Config/LanguageChineseConfig.json
  6. 5 0
      Assets/Res/UI/XianTuLogPanel/XianTuLogInfoPanel.prefab
  7. 2 2
      Assets/Scenes/testCombat.scene
  8. 1 1
      Assets/Scripts/GameData/ExcelConfig/EventConfig.cs
  9. 9 0
      Assets/Scripts/GameLogic/Combat/Buff/b_1015.cs
  10. 3 0
      Assets/Scripts/GameLogic/Combat/Buff/b_1015.cs.meta
  11. 48 0
      Assets/Scripts/GameLogic/Combat/Buff/b_1016.cs
  12. 3 0
      Assets/Scripts/GameLogic/Combat/Buff/b_1016.cs.meta
  13. 50 0
      Assets/Scripts/GameLogic/Combat/Buff/b_1017.cs
  14. 3 0
      Assets/Scripts/GameLogic/Combat/Buff/b_1017.cs.meta
  15. 28 0
      Assets/Scripts/GameLogic/Combat/Buff/b_1018.cs
  16. 3 0
      Assets/Scripts/GameLogic/Combat/Buff/b_1018.cs.meta
  17. 4 0
      Assets/Scripts/GameLogic/Combat/CombatTool/AttType.cs
  18. 13 6
      Assets/Scripts/GameLogic/Combat/CombatTool/CombatCalculateTool.cs
  19. 8 0
      Assets/Scripts/GameLogic/Combat/CombatTool/HarmReturnInfo.cs
  20. 14 1
      Assets/Scripts/GameLogic/Combat/Hero/CombatHeroSkillControlBasic.cs
  21. 7 2
      Assets/Scripts/GameLogic/Combat/Hero/Turntable/SkillSlots.cs
  22. 6 3
      Assets/Scripts/GameLogic/Combat/Skill/S9011.cs
  23. 39 0
      Assets/Scripts/GameLogic/Combat/Skill/S9012.cs
  24. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9012.cs.meta
  25. 110 0
      Assets/Scripts/GameLogic/Combat/Skill/S9013.cs
  26. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9013.cs.meta
  27. 67 0
      Assets/Scripts/GameLogic/Combat/Skill/S9014.cs
  28. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9014.cs.meta
  29. 42 0
      Assets/Scripts/GameLogic/Combat/Skill/S9015.cs
  30. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9015.cs.meta
  31. 45 0
      Assets/Scripts/GameLogic/Combat/Skill/S9016.cs
  32. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9016.cs.meta
  33. 48 0
      Assets/Scripts/GameLogic/Combat/Skill/S9021.cs
  34. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9021.cs.meta
  35. 95 0
      Assets/Scripts/GameLogic/Combat/Skill/S9022.cs
  36. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9022.cs.meta
  37. 47 0
      Assets/Scripts/GameLogic/Combat/Skill/S9023.cs
  38. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9023.cs.meta
  39. 63 0
      Assets/Scripts/GameLogic/Combat/Skill/S9024.cs
  40. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9024.cs.meta
  41. 55 0
      Assets/Scripts/GameLogic/Combat/Skill/S9031.cs
  42. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9031.cs.meta
  43. 46 0
      Assets/Scripts/GameLogic/Combat/Skill/S9032.cs
  44. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9032.cs.meta
  45. 45 0
      Assets/Scripts/GameLogic/Combat/Skill/S9033.cs
  46. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9033.cs.meta
  47. 50 0
      Assets/Scripts/GameLogic/Combat/Skill/S9041.cs
  48. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9041.cs.meta
  49. 45 0
      Assets/Scripts/GameLogic/Combat/Skill/S9042.cs
  50. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9042.cs.meta
  51. 51 0
      Assets/Scripts/GameLogic/Combat/Skill/S9043.cs
  52. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9043.cs.meta
  53. 50 0
      Assets/Scripts/GameLogic/Combat/Skill/S9044.cs
  54. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9044.cs.meta
  55. 46 0
      Assets/Scripts/GameLogic/Combat/Skill/S9051.cs
  56. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9051.cs.meta
  57. 51 0
      Assets/Scripts/GameLogic/Combat/Skill/S9052.cs
  58. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9052.cs.meta
  59. 79 0
      Assets/Scripts/GameLogic/Combat/Skill/S9053.cs
  60. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9053.cs.meta
  61. 50 0
      Assets/Scripts/GameLogic/Combat/Skill/S9054.cs
  62. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9054.cs.meta
  63. 56 0
      Assets/Scripts/GameLogic/Combat/Skill/S9061.cs
  64. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9061.cs.meta
  65. 90 0
      Assets/Scripts/GameLogic/Combat/Skill/S9062.cs
  66. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9062.cs.meta
  67. 51 0
      Assets/Scripts/GameLogic/Combat/Skill/S9063.cs
  68. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9063.cs.meta
  69. 62 0
      Assets/Scripts/GameLogic/Combat/Skill/S9064.cs
  70. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9064.cs.meta
  71. 46 0
      Assets/Scripts/GameLogic/Combat/Skill/S9071.cs
  72. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9071.cs.meta
  73. 52 0
      Assets/Scripts/GameLogic/Combat/Skill/S9081.cs
  74. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9081.cs.meta
  75. 28 0
      Assets/Scripts/GameLogic/Combat/Skill/S9082.cs
  76. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9082.cs.meta
  77. 46 0
      Assets/Scripts/GameLogic/Combat/Skill/S9083.cs
  78. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9083.cs.meta
  79. 46 0
      Assets/Scripts/GameLogic/Combat/Skill/S9084.cs
  80. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9084.cs.meta
  81. 34 0
      Assets/Scripts/GameLogic/Combat/Skill/S9085.cs
  82. 3 0
      Assets/Scripts/GameLogic/Combat/Skill/S9085.cs.meta
  83. 6 17
      Assets/Scripts/GameLogic/Combat/Skill/SkillBasic.cs
  84. 15 2
      Assets/Scripts/GameUI/EventManager/EventSystemManager.cs
  85. 1 1
      Assets/Scripts/GameUI/GameApplction.cs
  86. 9 2
      Assets/Scripts/GameUI/ScorolList/ScrollList.cs
  87. 9 0
      Assets/Scripts/GameUI/UI/XianTuLogPanel/EventLogInfoWidget.cs
  88. 15 0
      Assets/Scripts/GameUI/UI/XianTuLogPanel/EventLogMessageWidget.cs
  89. 9 0
      Assets/Scripts/GameUI/UI/XianTuLogPanel/EventLogTitleWidget.cs
  90. 82 27
      Assets/Scripts/GameUI/UI/XianTuLogPanel/XianTuLogInfoPanel.cs
  91. 11 0
      Assets/Scripts/GameUI/UI/XianTuLogPanel/XianTuLogInfoPanelData.cs
  92. BIN
      Excel2Json/Excel/Buff.xlsx
  93. BIN
      Excel2Json/Excel/EventConfig.xlsx
  94. BIN
      Excel2Json/Excel/Language.xlsx
  95. BIN
      Excel2Json/Excel/Maps.xlsx
  96. 521 412
      UserSettings/Layouts/default-2022.dwlt

+ 9 - 9
Assets/Res/Config/EventConditionConfig.json

@@ -56,7 +56,7 @@
     },
     },
     {
     {
       "ID": 7,
       "ID": 7,
-      "message": null,
+      "message": 2843,
       "Operation": null,
       "Operation": null,
       "ConditionType": 5,
       "ConditionType": 5,
       "ConditionPara": [
       "ConditionPara": [
@@ -66,7 +66,7 @@
     },
     },
     {
     {
       "ID": 8,
       "ID": 8,
-      "message": null,
+      "message": 2844,
       "Operation": null,
       "Operation": null,
       "ConditionType": 3,
       "ConditionType": 3,
       "ConditionPara": [
       "ConditionPara": [
@@ -76,7 +76,7 @@
     },
     },
     {
     {
       "ID": 9,
       "ID": 9,
-      "message": null,
+      "message": 2845,
       "Operation": null,
       "Operation": null,
       "ConditionType": 5,
       "ConditionType": 5,
       "ConditionPara": [
       "ConditionPara": [
@@ -86,7 +86,7 @@
     },
     },
     {
     {
       "ID": 10,
       "ID": 10,
-      "message": null,
+      "message": 2846,
       "Operation": null,
       "Operation": null,
       "ConditionType": 5,
       "ConditionType": 5,
       "ConditionPara": [
       "ConditionPara": [
@@ -96,7 +96,7 @@
     },
     },
     {
     {
       "ID": 11,
       "ID": 11,
-      "message": null,
+      "message": 2847,
       "Operation": null,
       "Operation": null,
       "ConditionType": 6,
       "ConditionType": 6,
       "ConditionPara": [
       "ConditionPara": [
@@ -106,7 +106,7 @@
     },
     },
     {
     {
       "ID": 12,
       "ID": 12,
-      "message": null,
+      "message": 2848,
       "Operation": null,
       "Operation": null,
       "ConditionType": 5,
       "ConditionType": 5,
       "ConditionPara": [
       "ConditionPara": [
@@ -116,7 +116,7 @@
     },
     },
     {
     {
       "ID": 13,
       "ID": 13,
-      "message": null,
+      "message": 2849,
       "Operation": null,
       "Operation": null,
       "ConditionType": 5,
       "ConditionType": 5,
       "ConditionPara": [
       "ConditionPara": [
@@ -126,7 +126,7 @@
     },
     },
     {
     {
       "ID": 14,
       "ID": 14,
-      "message": null,
+      "message": 2850,
       "Operation": null,
       "Operation": null,
       "ConditionType": 3,
       "ConditionType": 3,
       "ConditionPara": [
       "ConditionPara": [
@@ -136,7 +136,7 @@
     },
     },
     {
     {
       "ID": 15,
       "ID": 15,
-      "message": null,
+      "message": 2851,
       "Operation": null,
       "Operation": null,
       "ConditionType": 5,
       "ConditionType": 5,
       "ConditionPara": [
       "ConditionPara": [

+ 76 - 66
Assets/Res/Config/EventConfig.json

@@ -543,8 +543,8 @@
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2801,
+      "Description": 2822
     },
     },
     {
     {
       "ID": 10008,
       "ID": 10008,
@@ -581,8 +581,8 @@
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2802,
+      "Description": 2823
     },
     },
     {
     {
       "ID": 10009,
       "ID": 10009,
@@ -608,8 +608,8 @@
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2803,
+      "Description": 2824
     },
     },
     {
     {
       "ID": 10010,
       "ID": 10010,
@@ -633,8 +633,8 @@
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2804,
+      "Description": 2825
     },
     },
     {
     {
       "ID": 10011,
       "ID": 10011,
@@ -658,8 +658,8 @@
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2805,
+      "Description": 2826
     },
     },
     {
     {
       "ID": 10012,
       "ID": 10012,
@@ -690,12 +690,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 2,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2806,
+      "Description": 2827
     },
     },
     {
     {
       "ID": 10013,
       "ID": 10013,
@@ -730,12 +730,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 2,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2807,
+      "Description": 2828
     },
     },
     {
     {
       "ID": 10014,
       "ID": 10014,
@@ -762,12 +762,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 2,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2808,
+      "Description": 2829
     },
     },
     {
     {
       "ID": 10015,
       "ID": 10015,
@@ -794,12 +794,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 2,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2809,
+      "Description": 2830
     },
     },
     {
     {
       "ID": 10016,
       "ID": 10016,
@@ -831,12 +831,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 2,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2810,
+      "Description": 2831
     },
     },
     {
     {
       "ID": 10017,
       "ID": 10017,
@@ -865,12 +865,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 2,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2811,
+      "Description": 2832
     },
     },
     {
     {
       "ID": 10018,
       "ID": 10018,
@@ -890,7 +890,11 @@
         1001813,
         1001813,
         1001814,
         1001814,
         1001815,
         1001815,
-        1001816
+        1001816,
+        1001817,
+        1001818,
+        1001819,
+        1001820
       ],
       ],
       "EventTriggerType": 4,
       "EventTriggerType": 4,
       "EventTag": 1,
       "EventTag": 1,
@@ -905,12 +909,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 2,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2812,
+      "Description": 2833
     },
     },
     {
     {
       "ID": 10019,
       "ID": 10019,
@@ -931,12 +935,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 2,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2813,
+      "Description": 2834
     },
     },
     {
     {
       "ID": 10020,
       "ID": 10020,
@@ -959,12 +963,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 2,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2814,
+      "Description": 2835
     },
     },
     {
     {
       "ID": 10021,
       "ID": 10021,
@@ -995,18 +999,19 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 2,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2815,
+      "Description": 2836
     },
     },
     {
     {
       "ID": 10022,
       "ID": 10022,
       "EventLinksId": [
       "EventLinksId": [
         1002201,
         1002201,
-        1002202
+        1002202,
+        1002203
       ],
       ],
       "EventTriggerType": 4,
       "EventTriggerType": 4,
       "EventTag": 1,
       "EventTag": 1,
@@ -1021,15 +1026,20 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 3,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2816,
+      "Description": 2837
     },
     },
     {
     {
       "ID": 10023,
       "ID": 10023,
+      "EventLinksId": [
+        1002301,
+        1002302,
+        1002303
+      ],
       "EventTriggerType": 4,
       "EventTriggerType": 4,
       "EventTag": 1,
       "EventTag": 1,
       "EventType": 1,
       "EventType": 1,
@@ -1043,12 +1053,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 3,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2817,
+      "Description": 2838
     },
     },
     {
     {
       "ID": 10024,
       "ID": 10024,
@@ -1065,12 +1075,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 3,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2818,
+      "Description": 2839
     },
     },
     {
     {
       "ID": 10025,
       "ID": 10025,
@@ -1087,12 +1097,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 3,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2819,
+      "Description": 2840
     },
     },
     {
     {
       "ID": 10026,
       "ID": 10026,
@@ -1109,12 +1119,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 3,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2820,
+      "Description": 2841
     },
     },
     {
     {
       "ID": 10027,
       "ID": 10027,
@@ -1131,12 +1141,12 @@
       ],
       ],
       "RefreshProbability": null,
       "RefreshProbability": null,
       "RefreshCount": null,
       "RefreshCount": null,
-      "placeID": 1,
+      "placeID": 3,
       "XiantuID": 1,
       "XiantuID": 1,
       "EventConditionId": null,
       "EventConditionId": null,
       "EventCount": null,
       "EventCount": null,
-      "EventName": null,
-      "Description": null
+      "EventName": 2821,
+      "Description": 2842
     },
     },
     {
     {
       "ID": 1001,
       "ID": 1001,
@@ -1265,7 +1275,7 @@
         1004,
         1004,
         1005
         1005
       ],
       ],
-      "EventTriggerType": 99,
+      "EventTriggerType": 6,
       "EventTag": 3,
       "EventTag": 3,
       "EventType": 1,
       "EventType": 1,
       "Score": 0,
       "Score": 0,
@@ -1296,7 +1306,7 @@
         1015,
         1015,
         1016
         1016
       ],
       ],
-      "EventTriggerType": 99,
+      "EventTriggerType": 6,
       "EventTag": 3,
       "EventTag": 3,
       "EventType": 1,
       "EventType": 1,
       "Score": 0,
       "Score": 0,
@@ -1326,7 +1336,7 @@
         9007,
         9007,
         9008
         9008
       ],
       ],
-      "EventTriggerType": 99,
+      "EventTriggerType": 6,
       "EventTag": 5,
       "EventTag": 5,
       "EventType": 1,
       "EventType": 1,
       "Score": 0,
       "Score": 0,
@@ -1352,7 +1362,7 @@
         9025,
         9025,
         9026
         9026
       ],
       ],
-      "EventTriggerType": 1,
+      "EventTriggerType": 6,
       "EventTag": 3,
       "EventTag": 3,
       "EventType": 1,
       "EventType": 1,
       "Score": 0,
       "Score": 0,
@@ -1377,7 +1387,7 @@
       "EventLinksId": [
       "EventLinksId": [
         9014
         9014
       ],
       ],
-      "EventTriggerType": 99,
+      "EventTriggerType": 6,
       "EventTag": 3,
       "EventTag": 3,
       "EventType": 1,
       "EventType": 1,
       "Score": 0,
       "Score": 0,
@@ -1405,7 +1415,7 @@
       "EventLinksId": [
       "EventLinksId": [
         9031
         9031
       ],
       ],
-      "EventTriggerType": 99,
+      "EventTriggerType": 6,
       "EventTag": 3,
       "EventTag": 3,
       "EventType": 1,
       "EventType": 1,
       "Score": 0,
       "Score": 0,

+ 66 - 2
Assets/Res/Config/EventLinkConfig.json

@@ -1432,8 +1432,8 @@
       "EventID": 10006,
       "EventID": 10006,
       "optionType": 1,
       "optionType": 1,
       "optionPara1": [
       "optionPara1": [
-        100603,
-        100602
+        1000603,
+        1000602
       ],
       ],
       "optionPara2": [
       "optionPara2": [
         2140,
         2140,
@@ -1455,6 +1455,9 @@
       "optionPara1": [
       "optionPara1": [
         1000603
         1000603
       ],
       ],
+      "optionPara2": [
+        2140
+      ],
       "ResultType": null
       "ResultType": null
     },
     },
     {
     {
@@ -3717,10 +3720,71 @@
         15
         15
       ],
       ],
       "optionType": null,
       "optionType": null,
+      "ResultType": 1,
+      "ResultOptions": [
+        1002203
+      ]
+    },
+    {
+      "ID": 1002203,
+      "conciseEventMessage": 2315,
+      "EventConditionMessage": null,
+      "NPCID": null,
+      "DialogueType": null,
+      "EventID": 10022,
+      "optionType": null,
       "ResultType": 3,
       "ResultType": 3,
       "ResultOptions": [
       "ResultOptions": [
         10023
         10023
       ]
       ]
+    },
+    {
+      "ID": 1002301,
+      "conciseEventMessage": 2318,
+      "EventConditionMessage": null,
+      "NPCID": 111,
+      "LanID": [
+        2319
+      ],
+      "DialogueType": null,
+      "EventID": 10023,
+      "optionType": null,
+      "ResultType": 1,
+      "ResultOptions": [
+        1002302
+      ]
+    },
+    {
+      "ID": 1002302,
+      "conciseEventMessage": 2318,
+      "EventConditionMessage": null,
+      "NPCID": 111,
+      "LanID": [
+        2320
+      ],
+      "DialogueType": null,
+      "EventID": 10023,
+      "optionType": null,
+      "ResultType": 1,
+      "ResultOptions": [
+        1002303
+      ]
+    },
+    {
+      "ID": 1002303,
+      "conciseEventMessage": 2318,
+      "EventConditionMessage": null,
+      "NPCID": 100,
+      "LanID": [
+        2321
+      ],
+      "DialogueType": null,
+      "EventID": 10023,
+      "optionType": null,
+      "ResultType": 3,
+      "ResultOptions": [
+        10024
+      ]
     }
     }
   ]
   ]
 }
 }

+ 6 - 0
Assets/Res/Config/EventNPC.json

@@ -131,6 +131,12 @@
       "name": 3010,
       "name": 3010,
       "ID_1": null,
       "ID_1": null,
       "DaoyouID": null
       "DaoyouID": null
+    },
+    {
+      "ID": 111,
+      "name": null,
+      "ID_1": null,
+      "DaoyouID": null
     }
     }
   ]
   ]
 }
 }

+ 55 - 55
Assets/Res/Config/LanguageChineseConfig.json

@@ -9270,19 +9270,19 @@
     },
     },
     {
     {
       "ID": 2318,
       "ID": 2318,
-      "txt": ""
+      "txt": "听惠子吹嘘种子来历,并答应帮他种葫芦"
     },
     },
     {
     {
       "ID": 2319,
       "ID": 2319,
-      "txt": ""
+      "txt": "(惠子手持一颗七彩流光的种子,满脸得意)\n“小友!来得正好!瞧我这宝贝——”"
     },
     },
     {
     {
       "ID": 2320,
       "ID": 2320,
-      "txt": ""
+      "txt": "(惠子举起一颗种子,阳光照射下熠熠生辉)\n“此乃‘五石葫芦’之种!虽然我也不知道能种出来什么,但绝非凡品,一定大有用处!”"
     },
     },
     {
     {
       "ID": 2321,
       "ID": 2321,
-      "txt": ""
+      "txt": "这么厉害?哪来的?"
     },
     },
     {
     {
       "ID": 2322,
       "ID": 2322,
@@ -11202,207 +11202,207 @@
     },
     },
     {
     {
       "ID": 2801,
       "ID": 2801,
-      "txt": ""
+      "txt": "风中洞府1"
     },
     },
     {
     {
       "ID": 2802,
       "ID": 2802,
-      "txt": ""
+      "txt": "风中洞府2"
     },
     },
     {
     {
       "ID": 2803,
       "ID": 2803,
-      "txt": ""
+      "txt": "风灵之力"
     },
     },
     {
     {
       "ID": 2804,
       "ID": 2804,
-      "txt": ""
+      "txt": "北海深处1"
     },
     },
     {
     {
       "ID": 2805,
       "ID": 2805,
-      "txt": ""
+      "txt": "北海深处2"
     },
     },
     {
     {
       "ID": 2806,
       "ID": 2806,
-      "txt": ""
+      "txt": "尧之都"
     },
     },
     {
     {
       "ID": 2807,
       "ID": 2807,
-      "txt": ""
+      "txt": "山林清音"
     },
     },
     {
     {
       "ID": 2808,
       "ID": 2808,
-      "txt": ""
+      "txt": "山中劳作"
     },
     },
     {
     {
       "ID": 2809,
       "ID": 2809,
-      "txt": ""
+      "txt": "风起夜战"
     },
     },
     {
     {
       "ID": 2810,
       "ID": 2810,
-      "txt": ""
+      "txt": "吃茶三问"
     },
     },
     {
     {
       "ID": 2811,
       "ID": 2811,
-      "txt": ""
+      "txt": "尧让天下"
     },
     },
     {
     {
       "ID": 2812,
       "ID": 2812,
-      "txt": ""
+      "txt": "无用之树"
     },
     },
     {
     {
       "ID": 2813,
       "ID": 2813,
-      "txt": ""
+      "txt": "樗木之灵"
     },
     },
     {
     {
       "ID": 2814,
       "ID": 2814,
-      "txt": ""
+      "txt": "游尧都"
     },
     },
     {
     {
       "ID": 2815,
       "ID": 2815,
-      "txt": ""
+      "txt": "再见尧帝"
     },
     },
     {
     {
       "ID": 2816,
       "ID": 2816,
-      "txt": ""
+      "txt": "云海漫行"
     },
     },
     {
     {
       "ID": 2817,
       "ID": 2817,
-      "txt": ""
+      "txt": "初见惠子"
     },
     },
     {
     {
       "ID": 2818,
       "ID": 2818,
-      "txt": ""
+      "txt": "葫芦肥料"
     },
     },
     {
     {
       "ID": 2819,
       "ID": 2819,
-      "txt": ""
+      "txt": "藐姑射山"
     },
     },
     {
     {
       "ID": 2820,
       "ID": 2820,
-      "txt": ""
+      "txt": "炼器师"
     },
     },
     {
     {
       "ID": 2821,
       "ID": 2821,
-      "txt": ""
+      "txt": "忘火剑"
     },
     },
     {
     {
       "ID": 2822,
       "ID": 2822,
-      "txt": ""
+      "txt": "击败痴道人"
     },
     },
     {
     {
       "ID": 2823,
       "ID": 2823,
-      "txt": ""
+      "txt": "疯痴相聚"
     },
     },
     {
     {
       "ID": 2824,
       "ID": 2824,
-      "txt": ""
+      "txt": "筑基后期"
     },
     },
     {
     {
       "ID": 2825,
       "ID": 2825,
-      "txt": ""
+      "txt": "妖兽横行"
     },
     },
     {
     {
       "ID": 2826,
       "ID": 2826,
-      "txt": ""
+      "txt": "遇见鲲鹏"
     },
     },
     {
     {
       "ID": 2827,
       "ID": 2827,
-      "txt": ""
+      "txt": "尧让天下"
     },
     },
     {
     {
       "ID": 2828,
       "ID": 2828,
-      "txt": ""
+      "txt": "访贤许由"
     },
     },
     {
     {
       "ID": 2829,
       "ID": 2829,
-      "txt": ""
+      "txt": "割草喝茶"
     },
     },
     {
     {
       "ID": 2830,
       "ID": 2830,
-      "txt": ""
+      "txt": "再来一杯"
     },
     },
     {
     {
       "ID": 2831,
       "ID": 2831,
-      "txt": ""
+      "txt": "战胜妖王"
     },
     },
     {
     {
       "ID": 2832,
       "ID": 2832,
-      "txt": ""
+      "txt": "复命尧帝"
     },
     },
     {
     {
       "ID": 2833,
       "ID": 2833,
-      "txt": ""
+      "txt": "树下闲话"
     },
     },
     {
     {
       "ID": 2834,
       "ID": 2834,
-      "txt": ""
+      "txt": "切磋切磋"
     },
     },
     {
     {
       "ID": 2835,
       "ID": 2835,
-      "txt": ""
+      "txt": "金丹前期"
     },
     },
     {
     {
       "ID": 2836,
       "ID": 2836,
-      "txt": ""
+      "txt": "仙山传说"
     },
     },
     {
     {
       "ID": 2837,
       "ID": 2837,
-      "txt": ""
+      "txt": "入山幻阵"
     },
     },
     {
     {
       "ID": 2838,
       "ID": 2838,
-      "txt": ""
+      "txt": "葫芦种子"
     },
     },
     {
     {
       "ID": 2839,
       "ID": 2839,
-      "txt": ""
+      "txt": "天肥地肥"
     },
     },
     {
     {
       "ID": 2840,
       "ID": 2840,
-      "txt": ""
+      "txt": "登山"
     },
     },
     {
     {
       "ID": 2841,
       "ID": 2841,
-      "txt": ""
+      "txt": "重铸忘火剑"
     },
     },
     {
     {
       "ID": 2842,
       "ID": 2842,
-      "txt": ""
+      "txt": "护法"
     },
     },
     {
     {
       "ID": 2843,
       "ID": 2843,
-      "txt": ""
+      "txt": "- 击败结界兽{0}/{1}"
     },
     },
     {
     {
       "ID": 2844,
       "ID": 2844,
-      "txt": ""
+      "txt": "- 达到境界:筑基-后期{0}/{1}"
     },
     },
     {
     {
       "ID": 2845,
       "ID": 2845,
-      "txt": ""
+      "txt": "- 击杀妖兽{0}/{1}"
     },
     },
     {
     {
       "ID": 2846,
       "ID": 2846,
-      "txt": ""
+      "txt": "- 击败后山小妖{0}/{1}"
     },
     },
     {
     {
       "ID": 2847,
       "ID": 2847,
-      "txt": ""
+      "txt": "- 收集灵草种子{0}/{1}"
     },
     },
     {
     {
       "ID": 2848,
       "ID": 2848,
-      "txt": ""
+      "txt": "- 击败夜袭的妖兽{0}/{1}"
     },
     },
     {
     {
       "ID": 2849,
       "ID": 2849,
-      "txt": ""
+      "txt": "- 击败峰顶的妖王{0}/{1}"
     },
     },
     {
     {
       "ID": 2850,
       "ID": 2850,
-      "txt": ""
+      "txt": "- 境界达到[金丹-前期]{0}/{1}"
     },
     },
     {
     {
       "ID": 2851,
       "ID": 2851,
-      "txt": ""
+      "txt": "- 击败仙山的阵眼妖兽{0}/{1}"
     },
     },
     {
     {
       "ID": 2852,
       "ID": 2852,

+ 5 - 0
Assets/Res/UI/XianTuLogPanel/XianTuLogInfoPanel.prefab

@@ -97,6 +97,11 @@ MonoBehaviour:
     isAssetBundle: 0
     isAssetBundle: 0
     isList: 0
     isList: 0
     ListCollectorDatas: []
     ListCollectorDatas: []
+  - key: Sr
+    gameObject: {fileID: 7883865494936010614}
+    isAssetBundle: 0
+    isList: 0
+    ListCollectorDatas: []
   isAssetBundle: 1
   isAssetBundle: 1
 --- !u!1 &1850343213030836377
 --- !u!1 &1850343213030836377
 GameObject:
 GameObject:

+ 2 - 2
Assets/Scenes/testCombat.scene

@@ -2241,7 +2241,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
       objectReference: {fileID: 0}
     - target: {fileID: 6090200664286961698, guid: 1076536f8fdf47942aa287592c6a8b19, type: 3}
     - target: {fileID: 6090200664286961698, guid: 1076536f8fdf47942aa287592c6a8b19, type: 3}
       propertyPath: enemyHeroInfo.Array.data[0].level
       propertyPath: enemyHeroInfo.Array.data[0].level
-      value: 150
+      value: 352
       objectReference: {fileID: 0}
       objectReference: {fileID: 0}
     - target: {fileID: 6090200664286961698, guid: 1076536f8fdf47942aa287592c6a8b19, type: 3}
     - target: {fileID: 6090200664286961698, guid: 1076536f8fdf47942aa287592c6a8b19, type: 3}
       propertyPath: enemyHeroInfo.Array.data[1].level
       propertyPath: enemyHeroInfo.Array.data[1].level
@@ -2317,7 +2317,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
       objectReference: {fileID: 0}
     - target: {fileID: 9214784224709271120, guid: 1076536f8fdf47942aa287592c6a8b19, type: 3}
     - target: {fileID: 9214784224709271120, guid: 1076536f8fdf47942aa287592c6a8b19, type: 3}
       propertyPath: m_IsActive
       propertyPath: m_IsActive
-      value: 0
+      value: 1
       objectReference: {fileID: 0}
       objectReference: {fileID: 0}
     m_RemovedComponents: []
     m_RemovedComponents: []
     m_RemovedGameObjects: []
     m_RemovedGameObjects: []

+ 1 - 1
Assets/Scripts/GameData/ExcelConfig/EventConfig.cs

@@ -27,7 +27,7 @@ public int[] EventLinksId;
 
 
 
 
 		/// <summary>
 		/// <summary>
-		///事件类型: 1.通用事件 2.挂机事件 4.主线任务 5.仙山探险 99.无标记 
+		///事件类型: 1.通用事件 2.挂机事件 4.主线任务 5.仙山探险 6.支线事件 99.无标记 
 		/// </summary>
 		/// </summary>
 public int EventTriggerType;
 public int EventTriggerType;
 
 

+ 9 - 0
Assets/Scripts/GameLogic/Combat/Buff/b_1015.cs

@@ -0,0 +1,9 @@
+namespace GameLogic.Combat.Buff
+{
+    /// <summary>
+    /// 无敌,不受控制
+    /// </summary>
+    public class b_1015 : BuffBasic
+    {
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Buff/b_1015.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d0de25616e144283b32c6f50045a48b2
+timeCreated: 1750316423

+ 48 - 0
Assets/Scripts/GameLogic/Combat/Buff/b_1016.cs

@@ -0,0 +1,48 @@
+using Common.Utility.CombatEvent;
+using Fort23.Core;
+using GameLogic.Combat.CombatTool;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
+
+namespace GameLogic.Combat.Buff
+{
+    /// <summary>
+    /// 冰魄牢域
+    /// 乌龟的技能,神龟的所有主动伤害型技能命中目标后都会施加一层寒气,
+    ///寒气每叠到{0}层时,消耗所有层寒气对敌人照成{0}秒的冰冻效果
+    /// </summary>
+    public class b_1016 : BuffBasic
+    {
+        protected override void ProInit()
+        {
+            CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured);
+        }
+
+        private void HeroInjured(IEventData ieveEventData)
+        {
+            HeroInjuredEventData heroInjuredEventData = ieveEventData as HeroInjuredEventData;
+            if (heroInjuredEventData.HarmReturnInfo.source == combatHeroEntity)
+            {
+                if (heroInjuredEventData.HarmReturnInfo.attType.HasFlag(AttType.Skill) &&
+                    !heroInjuredEventData.HarmReturnInfo.attType.HasFlag(AttType.FanJi))
+                {
+                    BuffInfo buffInfo = BuffInfo.GetBuffInfo(10011, 1);
+                    BuffBasic buffBasic =
+                        heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity.BuffControl.AddBuff(
+                            combatHeroEntity, buffInfo);
+                    if (buffBasic.buffCount >= buffInfo.BuffConfig.effectValue[0])
+                    {
+                        heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity.BuffControl.RemoveBuff(buffBasic);
+                        BuffInfo buffInfo2 = BuffInfo.GetBuffInfo(10021, buffInfo.BuffConfig.effectValue[1], 1);
+                        heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity.BuffControl.AddBuff(
+                            combatHeroEntity, buffInfo2);
+                    }
+                }
+            }
+        }
+
+        protected override void ProDormancyObj()
+        {
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroInjured, HeroInjured);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Buff/b_1016.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 8831b82ddcf347f1a200350c0fa54acb
+timeCreated: 1750326009

+ 50 - 0
Assets/Scripts/GameLogic/Combat/Buff/b_1017.cs

@@ -0,0 +1,50 @@
+using Common.Utility.CombatEvent;
+using Fort23.Core;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Player;
+using UnityEngine;
+
+namespace GameLogic.Combat.Buff
+{
+    /// <summary>
+    /// 鼠疫
+    /// 敌人受到每秒受到{0}*层数的伤害,持续期间攻击力降低{1}*层数
+    /// </summary>
+    public class b_1017 : BuffBasic
+    {
+        /// <summary>
+        /// 添加的攻击力
+        /// </summary>
+        private long addAtt;
+
+        protected override void ProInit()
+        {
+            _jianGe = 1;
+        }
+
+        protected override void UpdateJumping()
+        {
+            float harmbl = buffCount * buffInf.BuffConfig.effectValue[0];
+            long harm = CombatCalculateTool.Instance.GetVlaueRatioForLong(
+                source.CurrCombatHeroInfo.attack.Value, harmbl);
+            CombatCalculateTool.Instance.Harm(source, combatHeroEntity, harm, AttType.Buff, _triggerData,
+                WuXingType.Null, null, HarmType.Buff);
+        }
+
+        protected override void ProUpdateEffect()
+        {
+            source.CurrCombatHeroInfo.attack += addAtt;
+            addAtt = 0;
+            float addAttbl = buffCount * buffInf.BuffConfig.effectValue[1];
+            addAtt = CombatCalculateTool.Instance.GetVlaueRatioForLong(source.CurrCombatHeroInfo.attack.Value,
+                addAttbl);
+            source.CurrCombatHeroInfo.attack -= addAtt;
+        }
+
+        protected override void ProDormancyObj()
+        {
+            source.CurrCombatHeroInfo.attack += addAtt;
+            addAtt = 0;
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Buff/b_1017.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 69554cd7b96b4f1497db01304b14ce6b
+timeCreated: 1750387376

+ 28 - 0
Assets/Scripts/GameLogic/Combat/Buff/b_1018.cs

@@ -0,0 +1,28 @@
+using GameLogic.Combat.CombatTool;
+using GameLogic.Player;
+
+namespace GameLogic.Combat.Buff
+{
+    /// <summary>
+    /// 感电
+    /// 麻痹敌人,敌人的身体受到麻痹,有{0}%*层数的概率是功法无法进入释放状态,没触发一次,消耗一半感电
+    /// </summary>
+    public class b_1018 : BuffBasic
+    {
+        protected override void ProInit()
+        {
+        }
+
+        protected override void UpdateJumping()
+        {
+        }
+
+        protected override void ProUpdateEffect()
+        {
+        }
+
+        protected override void ProDormancyObj()
+        {
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Buff/b_1018.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 53032a7761a345108f57d22e9e4c773b
+timeCreated: 1750399757

+ 4 - 0
Assets/Scripts/GameLogic/Combat/CombatTool/AttType.cs

@@ -9,5 +9,9 @@ namespace GameLogic.Combat.CombatTool
         Skill = 1,
         Skill = 1,
         Buff=2,
         Buff=2,
         FaBao=4,
         FaBao=4,
+        /// <summary>
+        /// 反击伤害
+        /// </summary>
+        FanJi=8,
     }
     }
 }
 }

+ 13 - 6
Assets/Scripts/GameLogic/Combat/CombatTool/CombatCalculateTool.cs

@@ -90,9 +90,13 @@ namespace GameLogic.Combat.CombatTool
         /// <param name="att">伤害值</param>
         /// <param name="att">伤害值</param>
         public HarmReturnInfo Harm(CombatHeroEntity source, CombatHeroHitPoint target, long att,
         public HarmReturnInfo Harm(CombatHeroEntity source, CombatHeroHitPoint target, long att,
             AttType attType, TriggerData triggerData, WuXingType WuXingType, ISkillFeatures skillFeatures,
             AttType attType, TriggerData triggerData, WuXingType WuXingType, ISkillFeatures skillFeatures,
-            HarmType harmType = HarmType.Default)
+            HarmType harmType = HarmType.Default, HarmReturnInfo harmReturnInfo = null)
         {
         {
-            HarmReturnInfo harmReturnInfo = CObjectPool.Instance.Fetch<HarmReturnInfo>();
+            if (harmReturnInfo == null)
+            {
+                harmReturnInfo = CObjectPool.Instance.Fetch<HarmReturnInfo>();
+            }
+
             harmReturnInfo.yuanShiAtt = att;
             harmReturnInfo.yuanShiAtt = att;
             harmReturnInfo.source = source;
             harmReturnInfo.source = source;
             harmReturnInfo.target = target;
             harmReturnInfo.target = target;
@@ -128,8 +132,11 @@ namespace GameLogic.Combat.CombatTool
 
 
 
 
             att = GetVlaueRatioForLong(att, wuxing);
             att = GetVlaueRatioForLong(att, wuxing);
+            long targetDef = target.combatHeroEntity.CurrCombatHeroInfo.defense.Value;
+            targetDef -= GetVlaueRatioForLong(targetDef, harmReturnInfo.ArmorPiercing);
+
             float def =
             float def =
-                (target.combatHeroEntity.CurrCombatHeroInfo.defense.Value * 100.0f / source.CurrCombatHeroInfo.k);
+                (targetDef * 100.0f / source.CurrCombatHeroInfo.k);
 
 
 
 
             int p1_id = (int)def;
             int p1_id = (int)def;
@@ -371,8 +378,8 @@ namespace GameLogic.Combat.CombatTool
             int c = myRestrained - targetRestrained;
             int c = myRestrained - targetRestrained;
             long myHp = (long)(a.hp);
             long myHp = (long)(a.hp);
             long targetHp = (long)(b.hp);
             long targetHp = (long)(b.hp);
-            a.pengZhuangHp=myHp;
-            b.pengZhuangHp=targetHp;
+            a.pengZhuangHp = myHp;
+            b.pengZhuangHp = targetHp;
 
 
             float p2 = 100;
             float p2 = 100;
             if (c < 0) //a被压制
             if (c < 0) //a被压制
@@ -408,7 +415,7 @@ namespace GameLogic.Combat.CombatTool
             GongFaPengZhuangFinishEventData gongFaPengZhu = GongFaPengZhuangFinishEventData.Create();
             GongFaPengZhuangFinishEventData gongFaPengZhu = GongFaPengZhuangFinishEventData.Create();
             gongFaPengZhu.a = a;
             gongFaPengZhu.a = a;
             gongFaPengZhu.b = b;
             gongFaPengZhu.b = b;
-            CombatEventManager.Instance.Dispatch(CombatEventType.GongFaPengZhuangFinish, gongFaPengZhu,false);
+            CombatEventManager.Instance.Dispatch(CombatEventType.GongFaPengZhuangFinish, gongFaPengZhu, false);
             CombatEventManager.Instance.Dispatch(CombatEventType.GongFaPengZhuangFinish2, gongFaPengZhu);
             CombatEventManager.Instance.Dispatch(CombatEventType.GongFaPengZhuangFinish2, gongFaPengZhu);
         }
         }
 
 

+ 8 - 0
Assets/Scripts/GameLogic/Combat/CombatTool/HarmReturnInfo.cs

@@ -24,10 +24,17 @@ namespace GameLogic.Combat.CombatTool
         public WuXingType WuXingType;
         public WuXingType WuXingType;
 
 
         public float QiangDu;
         public float QiangDu;
+
         /// <summary>
         /// <summary>
         /// 是否命中英雄
         /// 是否命中英雄
         /// </summary>
         /// </summary>
         public bool isHitHero;
         public bool isHitHero;
+
+        /// <summary>
+        /// 破甲 忽略多少防御
+        /// </summary>
+        public float ArmorPiercing;
+
         public override void Dispose()
         public override void Dispose()
         {
         {
             Debug.Log("回收了伤害信息类");
             Debug.Log("回收了伤害信息类");
@@ -52,6 +59,7 @@ namespace GameLogic.Combat.CombatTool
             isMiss = false;
             isMiss = false;
             yuanShiAtt = 0;
             yuanShiAtt = 0;
             att = 0;
             att = 0;
+            ArmorPiercing = 0;
         }
         }
     }
     }
 }
 }

+ 14 - 1
Assets/Scripts/GameLogic/Combat/Hero/CombatHeroSkillControlBasic.cs

@@ -40,6 +40,19 @@ namespace GameLogic.Combat.Hero
         {
         {
         }
         }
 
 
+        public T GetSkillBasic<T>() where T : SkillBasic
+        {
+            for (int i = 0; i < allSkill.Count; i++)
+            {
+                if (allSkill[i] is T)
+                {
+                    return (T)allSkill[i];
+                }
+            }
+
+            return null;
+        }
+
 
 
         public SkillBasic GetSkillBasic(int skillGroupId)
         public SkillBasic GetSkillBasic(int skillGroupId)
         {
         {
@@ -72,7 +85,7 @@ namespace GameLogic.Combat.Hero
             }
             }
 
 
 
 
-            skillBasic.InitSkillConfig(_combatHeroEntity,skillInfo);
+            skillBasic.InitSkillConfig(_combatHeroEntity, skillInfo);
             // skillBasic.InitSkill(_combatHeroEntity);
             // skillBasic.InitSkill(_combatHeroEntity);
             allSkill.Add(skillBasic);
             allSkill.Add(skillBasic);
             return skillBasic;
             return skillBasic;

+ 7 - 2
Assets/Scripts/GameLogic/Combat/Hero/Turntable/SkillSlots.cs

@@ -94,6 +94,11 @@ namespace GameLogic.Combat.Hero.Turntable
 
 
         public float GetFinishBl()
         public float GetFinishBl()
         {
         {
+            if (!SkillBasic.isActive)
+            {
+                return 0;
+            }
+
             float v = angle % 360;
             float v = angle % 360;
             int targetAngle = triggerAngle[currTriggerTypeIndex];
             int targetAngle = triggerAngle[currTriggerTypeIndex];
             float jd = v;
             float jd = v;
@@ -117,7 +122,7 @@ namespace GameLogic.Combat.Hero.Turntable
 
 
         public float GetFinishAngle()
         public float GetFinishAngle()
         {
         {
-            if (SkillBasic == null)
+            if (SkillBasic == null||!SkillBasic.isActive)
             {
             {
                 return int.MaxValue;
                 return int.MaxValue;
             }
             }
@@ -175,7 +180,7 @@ namespace GameLogic.Combat.Hero.Turntable
 
 
         private void Trigger(int triggerType)
         private void Trigger(int triggerType)
         {
         {
-            if (SkillBasic != null)
+            if (SkillBasic != null&&SkillBasic.isActive)
             {
             {
                 TriggerSkillSlotsEventData triggerSkillSlotsEventData = TriggerSkillSlotsEventData.Create();
                 TriggerSkillSlotsEventData triggerSkillSlotsEventData = TriggerSkillSlotsEventData.Create();
                 triggerSkillSlotsEventData.SkillBasic = SkillBasic;
                 triggerSkillSlotsEventData.SkillBasic = SkillBasic;

+ 6 - 3
Assets/Scripts/GameLogic/Combat/Skill/S9011.cs

@@ -1,4 +1,5 @@
 using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
 using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
 using GameLogic.Combat.CombatTool;
 using GameLogic.Combat.CombatTool;
 using GameLogic.Combat.Hero;
 using GameLogic.Combat.Hero;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
 using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
@@ -33,8 +34,6 @@ namespace GameLogic.Combat.Skill
             TriggerData triggerData, ISkillFeatures skillFeatures)
             TriggerData triggerData, ISkillFeatures skillFeatures)
         {
         {
             float harmBl = effectValue[1];
             float harmBl = effectValue[1];
-
-
             long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
             long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
                 harmBl);
                 harmBl);
 
 
@@ -42,7 +41,11 @@ namespace GameLogic.Combat.Skill
                 AttType.Skill, triggerData,
                 AttType.Skill, triggerData,
                 wuXingType, skillFeatures,
                 wuXingType, skillFeatures,
                 HarmType.Default);
                 HarmType.Default);
-            // if(harmReturnInfo.isInvalid)
+            if (harmReturnInfo.isHitHero)
+            {
+                BuffInfo buffInfo = BuffInfo.GetBuffInfo(10011, 1);
+                targetEntity.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+            }
         }
         }
     }
     }
 }
 }

+ 39 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9012.cs

@@ -0,0 +1,39 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 凤凰张口喷吐出一股极寒霜息,形成远程席卷的寒潮波涛。直线飞行,只会有一个,对敌人造成{0}伤害,并额外造成寒气层数*{1}的伤害
+    /// </summary>
+    public class S9012 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[0];
+            b_1001 b1001 = targetEntity.combatHeroEntity.BuffControl.GetBuffBasicForType<b_1001>();
+            if (b1001 != null)
+            {
+                harmBl += b1001.buffCount * effectValue[1];
+            }
+
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9012.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 06118d9a971b41d8aa8a3876d7cb4c17
+timeCreated: 1750314887

+ 110 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9013.cs

@@ -0,0 +1,110 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using Common.Utility.CombatEvent;
+using Fort23.Core;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 霜域新生(被动,只会生效一次) 凤凰在伤害还剩10%的时候会触发此技能,
+    /// 凤凰身体冰冻住并有一层寒气笼罩,期间凤凰不在受到任何伤害,并慢慢回血,
+    /// 直到恢复满,持续5秒左右吧,恢复满后凤凰所有灵根增加{0}。冰块爆开,
+    /// 生成一个冲击波,对当前场上所有的弹道照成当前强度的强度攻击(强度不够的弹道会被摧毁),生成{1}枚冰锥冲向玩家,对玩家照成{2}伤害
+    /// </summary>
+    public class S9013 : SkillBasic
+    {
+        protected BuffBasic BuffBasic;
+
+        private bool isActiveFuHuo;
+        private int count;
+        private float _currTime;
+        protected long addHp;
+
+        protected override void ProActiveSkill()
+        {
+            count = 0;
+            isActiveFuHuo = false;
+            CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured);
+        }
+
+        private void HeroInjured(IEventData data)
+        {
+            if (count > 0)
+            {
+                return;
+            }
+
+            HeroInjuredEventData heroInjuredEventData = data as HeroInjuredEventData;
+            if (heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity == CombatHeroEntity)
+            {
+                float bl = CombatHeroEntity.CurrCombatHeroInfo.hp.Value * 1.0f /
+                           CombatHeroEntity.MaxCombatHeroInfo.hp.Value;
+                if (bl * 100 < effectValue[0])
+                {
+                    addHp = CombatCalculateTool.Instance.GetVlaueRatioForLong(
+                        CombatHeroEntity.MaxCombatHeroInfo.hp.Value, 10);
+                    BuffInfo buffInfo = BuffInfo.GetBuffInfo(10151, -1, 1);
+                    BuffBasic = CombatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+                    isActiveFuHuo = true;
+                    count++;
+                }
+            }
+        }
+
+        protected override void ProUseSkill()
+        {
+        }
+
+        protected override void ProCombatUpdate(float time)
+        {
+            if (!isActiveFuHuo)
+            {
+                return;
+            }
+
+            _currTime += time;
+            if (_currTime > 0.2f)
+            {
+                Recover(CombatHeroEntity, CombatHeroEntity.GetMainHotPoin<CombatHeroHitPoint>(), addHp, AttType.Skill);
+                if (CombatHeroEntity.CurrCombatHeroInfo.hp.Value >= CombatHeroEntity.MaxCombatHeroInfo.hp.Value)
+                {
+                    isActiveFuHuo = false;
+                    float v = effectValue[1];
+                    CombatHeroEntity.CurrCombatHeroInfo.Metal += v;
+                    CombatHeroEntity.CurrCombatHeroInfo.Wood += v;
+                    CombatHeroEntity.CurrCombatHeroInfo.Water += v;
+                    CombatHeroEntity.CurrCombatHeroInfo.Fire += v;
+                    CombatHeroEntity.CurrCombatHeroInfo.Earth += v;
+
+                    S9014 s9014 = CombatHeroEntity.CombatHeroSkillControl.GetSkillBasic<S9014>();
+                    if (s9014 != null)
+                    {
+                        s9014.isActive = true;
+                    }
+                    //完成
+                }
+            }
+        }
+
+        protected void ProDefaultTimeLineTrigger_BaoZa(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[0];
+
+
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9013.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 6e24c8d7174b43c988a98c0fca3c61ca
+timeCreated: 1750315059

+ 67 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9014.cs

@@ -0,0 +1,67 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 冰星坠地(二阶段技能,一场触发1到2次即可)
+    /// 天空中出现多道冰球,只会有{0}枚砸向玩家,其他的冰球主要是为了好看和为了拦截玩家的弹道,照成{1}伤害,并施加一层寒气
+    /// </summary>
+    public class S9014 : SkillBasic
+    {
+        private float currTime;
+        private int currCount;
+        private bool isUpdate;
+
+        protected override void ProActiveSkill()
+        {
+            isActive = false;
+        }
+
+        protected override void ProUseSkill()
+        {
+            isUpdate = true;
+            currCount = 0;
+            currTime = 0;
+        }
+
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+
+
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+            
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+            if (harmReturnInfo.isHitHero)
+            {
+                BuffInfo buffInfo = BuffInfo.GetBuffInfo(10011, 1);
+                targetEntity.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+            }
+        }
+
+        protected override void ProCombatUpdate(float time)
+        {
+            if (!isUpdate)
+            {
+                return;
+            }
+
+            currTime += time;
+            if (currTime > 0.2f)
+            {
+                //生成一个冰星 3个后生成砸中玩家的哪一个
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9014.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 13996e1bb7dc4bd7b9b3420dabca44e5
+timeCreated: 1750318813

+ 42 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9015.cs

@@ -0,0 +1,42 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    public class S9015 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9015.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d038a989810143b3b71fce3b4f4b9a30
+timeCreated: 1750320888

+ 45 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9016.cs

@@ -0,0 +1,45 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 羽箭(普通,右翅膀挥动)
+    /// 挥动翅膀发射{0}枚冰箭,对敌人照成{1}伤害
+    /// </summary>
+    public class S9016 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9016.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 108ab7a4c2474e398590f1af76052927
+timeCreated: 1750320936

+ 48 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9021.cs

@@ -0,0 +1,48 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using Fort23.Core;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 冰魄飞甲
+    /// 神龟龟甲一个虚影快速连续收缩,然后爆开,形成多个如同龟甲碎片的弹道,被命中的敌人受到{0}伤害,碎片无视敌人{1}%防御
+    /// </summary>
+    public class S9021 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            HarmReturnInfo harmReturnInfo = CObjectPool.Instance.Fetch<HarmReturnInfo>();
+            harmReturnInfo.ArmorPiercing = effectValue[2];
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default, harmReturnInfo: harmReturnInfo);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9021.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 6bfa409f7f824a8084adfbb6a630fb28
+timeCreated: 1750320987

+ 95 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9022.cs

@@ -0,0 +1,95 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using Common.Utility.CombatEvent;
+using Fort23.Core;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 玄甲护体(防御型技能)
+    /// 从四周飞来类似龟甲的碎片,乌龟龟甲上形成一个新的龟甲,防御+{0}%,敌人对其照成伤害时会收到{1}%反伤,
+    /// 反伤为真实伤害。持续{2}秒
+    /// </summary>
+    public class S9022 : SkillBasic
+    {
+        private long currAddV;
+
+        private bool isUpdate;
+        private float currTime;
+
+        protected override void ProActiveSkill()
+        {
+            CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured);
+        }
+
+        private void HeroInjured(IEventData data)
+        {
+            if (!isUpdate)
+            {
+                return;
+            }
+
+            HeroInjuredEventData heroInjuredEventData = data as HeroInjuredEventData;
+            if (heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity == CombatHeroEntity)
+            {
+                long harm = heroInjuredEventData.HarmReturnInfo.att;
+                long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(harm, effectValue[1]);
+
+
+                HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity,
+                    heroInjuredEventData.HarmReturnInfo.source, v,
+                    AttType.Skill | AttType.FanJi, triggerData,
+                    wuXingType, null,
+                    HarmType.Default);
+            }
+        }
+
+        protected override void ProUseSkill()
+        {
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            long def = CombatHeroEntity.MaxCombatHeroInfo.defense.Value;
+            currAddV = CombatCalculateTool.Instance.GetVlaueRatioForLong(def, effectValue[0]);
+            CombatHeroEntity.CurrCombatHeroInfo.defense += currAddV;
+            isUpdate = true;
+            currTime = 0;
+
+            // HarmReturnInfo harmReturnInfo = CObjectPool.Instance.Fetch<HarmReturnInfo>();
+            // harmReturnInfo.ArmorPiercing = effectValue[2];
+            // float harmBl = effectValue[1];
+            // long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+            //     harmBl);
+            //
+            // harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+            //     AttType.Skill, triggerData,
+            //     wuXingType, skillFeatures,
+            //     HarmType.Default, harmReturnInfo: harmReturnInfo);
+        }
+
+        protected override void ProCombatUpdate(float time)
+        {
+            if (!isUpdate)
+            {
+                return;
+            }
+
+            currTime += time;
+            if (currTime > effectValue[2])
+            {
+                isUpdate = false;
+            }
+        }
+
+        protected override void ProDispose()
+        {
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroInjured, HeroInjured);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9022.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 124cf46d68154600b64f8bb36c0ba508
+timeCreated: 1750321775

+ 47 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9023.cs

@@ -0,0 +1,47 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 水球
+    /// 乌龟从嘴里连续吐出多个水球,对敌人照成{0}伤害
+    /// </summary>
+    public class S9023: SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+          
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9023.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: c258d2719f4f40738743697652beb162
+timeCreated: 1750324890

+ 63 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9024.cs

@@ -0,0 +1,63 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using Common.Utility.CombatEvent;
+using Fort23.Core;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 冰魄牢域(生命值低于50%释放,一局释放一次)
+    /// 神龟仰天长吼,跺脚几下,整个战场出现寒气特效,神龟的所有主动伤害型技能命中目标后都会施加一层寒气,
+    /// 寒气每叠到{0}层时,消耗所有层寒气对敌人照成{0}秒的冰冻效果
+    /// </summary>
+    public class S9024 : SkillBasic
+    {
+        private bool isUse;
+
+        protected override void ProActiveSkill()
+        {
+            isUse = false;
+            CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured);
+        }
+
+        protected override void ProDispose()
+        {
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroInjured, HeroInjured);
+            // base.ProDispose();
+        }
+
+        private void HeroInjured(IEventData data)
+        {
+            if (isUse)
+            {
+                return;
+            }
+
+            HeroInjuredEventData heroInjuredEventData = data as HeroInjuredEventData;
+            if (heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity == CombatHeroEntity)
+            {
+                float bl = CombatHeroEntity.CurrCombatHeroInfo.hp.Value * 1.0f /
+                           CombatHeroEntity.MaxCombatHeroInfo.hp.Value;
+                if (bl * 100 < effectValue[0])
+                {
+                    isUse = true;
+                    //触发技能
+                    
+                }
+            }
+        }
+
+        protected override void ProUseSkill()
+        {
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9024.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: af0ba7e73b9247cfa8372ae6d7aa4b40
+timeCreated: 1750325104

+ 55 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9031.cs

@@ -0,0 +1,55 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 毒刺
+    /// 蜘蛛从嘴里连续射击出{0}没毒刺,对敌人照成{1}伤害,命中敌人时有{2}%概率中毒1层
+    /// </summary>
+    public class S9031 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+            if (harmReturnInfo.isHitHero)
+            {
+                int odds = CombatCalculateTool.Instance.GetOdd(0, 100);
+                if (odds <= effectValue[2])
+                {
+                    BuffInfo buffInfo = BuffInfo.GetBuffInfo(10031, 1);
+                    targetEntity.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+                }
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9031.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 2564669c8e3847be9b3ce81bfa5c7b0d
+timeCreated: 1750386432

+ 46 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9032.cs

@@ -0,0 +1,46 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 千蛛潮
+    /// 蜘蛛身体抖动出现{0}个小蜘蛛飞向敌人,对敌人照成{1}伤害
+    /// </summary>
+    public class S9032: SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+           
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9032.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: ac13fa9b06a14ac9843ee139c121fdff
+timeCreated: 1750386887

+ 45 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9033.cs

@@ -0,0 +1,45 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 吐丝
+    /// 嘴里吐出{0}个蜘蛛丝对敌人照成{1}伤害
+    /// </summary>
+    public class S9033 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9033.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 03607de68cf94b878796d66698758987
+timeCreated: 1750386948

+ 50 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9041.cs

@@ -0,0 +1,50 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    ///幻骨 老鼠甩动尾巴,生成一排黑色的骨刺{0}个,每个骨刺对敌人照成{1}伤害,命中敌人时对敌人施加一层鼠疫
+    /// </summary>
+    public class S9041 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+            if (harmReturnInfo.isHitHero)
+            {
+                BuffInfo buffInfo = BuffInfo.GetBuffInfo(10171, 1);
+                targetEntity.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9041.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d80fbcbb20054a9ba3310e0378b1b420
+timeCreated: 1750387928

+ 45 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9042.cs

@@ -0,0 +1,45 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 鼠角 将变异出来的羊角发射出去,对敌人造成{0}伤害
+    /// </summary>
+    public class S9042 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9042.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a3af401476a8450e902840b2e862f978
+timeCreated: 1750388063

+ 51 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9043.cs

@@ -0,0 +1,51 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 幽爪灭魂指
+    ///老鼠挥动鼠爪,将尖锐的指尖射出。指甲上带有老鼠的病菌。生成{0}枚指甲,对敌人造成{1}伤害,并对敌人施加已成鼠疫 
+    /// </summary>
+    public class S9043 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+            if (harmReturnInfo.isHitHero)
+            {
+                BuffInfo buffInfo = BuffInfo.GetBuffInfo(10171, 1);
+                targetEntity.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9043.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 331e8898ffac4367a608536d1c1ca652
+timeCreated: 1750388113

+ 50 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9044.cs

@@ -0,0 +1,50 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 噬魂瘴弹 老鼠将体内的浊气凝聚成一颗弹丸,快速射向对手。命中目标后爆炸浊气散开对敌人造成{0}伤害,给敌人施加一层鼠疫。
+    /// </summary>
+    public class S9044 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+            if (harmReturnInfo.isHitHero)
+            {
+                BuffInfo buffInfo = BuffInfo.GetBuffInfo(10171, 1);
+                targetEntity.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9044.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 69d074c23fc74a96836434825624ae90
+timeCreated: 1750388187

+ 46 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9051.cs

@@ -0,0 +1,46 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 风刃 穷奇煽动翅膀,空中行程{0}枚风刃,对敌人造成{1}伤害
+    /// </summary>
+    public class S9051 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+           
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9051.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 6a3a81c2ff114d99ae9a9e2bc468a953
+timeCreated: 1750388871

+ 51 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9052.cs

@@ -0,0 +1,51 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 雷罡波
+    /// 穷奇自身引雷而下,快速的从嘴上吐出{0}个光波,对敌人造成{1}伤害,每个光被带有雷电之力,对敌人施加一层感电
+    /// </summary>
+    public class S9052 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+            if (harmReturnInfo.isHitHero)
+            {
+                BuffInfo buffInfo = BuffInfo.GetBuffInfo(10181, 1);
+                targetEntity.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9052.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 7548bbb4b7f14656aea89678cd1bc072
+timeCreated: 1750389177

+ 79 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9053.cs

@@ -0,0 +1,79 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 引雷
+    /// 请求仰天施法,引导天雷,天雷在战场上随机落下,{0}%概率击中目标,每层感电额外+{1}%概率
+    /// ,最多被击中{2}次,每次击中消耗一层感电额外照成{3}伤害。引雷可以击中弹道.持续{4}秒
+    /// </summary>
+    public class S9053 : SkillBasic
+    {
+        private float _currTime;
+        private int _hitCount;
+        private bool _isUpdate;
+        private float _jianGe;
+
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            b_1018 b1018 = targetEntity.combatHeroEntity.BuffControl.GetBuffBasicForType<b_1018>();
+            if (b1018 != null)//消耗一层感电,额外照成伤害
+            {
+                b1018.ReduceCount(1);
+                harmBl += effectValue[3];
+            }
+
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+            // if (harmReturnInfo.isHitHero)
+            // {
+            //     BuffInfo buffInfo = BuffInfo.GetBuffInfo(10181, 1);
+            //     targetEntity.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+            // }
+        }
+
+        private void SetJianGe()
+        {
+            _jianGe = CombatCalculateTool.Instance.GetOdd(20, 100) / 100f;
+        }
+
+        protected override void ProCombatUpdate(float time)
+        {
+            if (!_isUpdate)
+            {
+                return;
+            }
+
+            _currTime += time;
+            if (_currTime >= _jianGe)
+            {
+                _currTime = 0;
+                SetJianGe();
+                //发射一道闪电
+                int odds = CombatCalculateTool.Instance.GetOdd(0, 100);
+                if (odds <= effectValue[0])
+                {
+                    //击中目标
+                }
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9053.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 8278cf886081430aa2f07520b259b7a0
+timeCreated: 1750399216

+ 50 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9054.cs

@@ -0,0 +1,50 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 导电(被动)
+    /// 每隔{0},敌人受到感电层数*{1}%的伤害
+    /// </summary>
+    public class S9054 : SkillBasic
+    {
+        protected float _currTime;
+
+        protected override void ProUseSkill()
+        {
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = 0;
+            b_1018 b1018 = targetEntity.combatHeroEntity.BuffControl.GetBuffBasicForType<b_1018>();
+            if (b1018 != null) //消耗一层感电,额外照成伤害
+            {
+                harmBl += b1018.buffCount * effectValue[1];
+            }
+
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+        }
+
+        protected override void ProCombatUpdate(float time)
+        {
+            _currTime += time;
+            if (_currTime >= effectValue[0])
+            {
+                _currTime = 0;
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9054.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 40c188d5999a40dd9c8fa037535c6a4b
+timeCreated: 1750400031

+ 56 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9061.cs

@@ -0,0 +1,56 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 幻花迷雾(当场上有木灵分身时触发)
+    /// 身体摇动,天空散发出小小的花朵。木灵隐藏其中防御+{0}%,期间不在攻击,持续{1}秒
+    /// </summary>
+    public class S9061 : SkillBasic
+    {
+        protected float _currTime;
+        private bool _isUpdate;
+
+        protected override void ProUseSkill()
+        {
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            // float harmBl = 0;
+            // b_1018 b1018 = targetEntity.combatHeroEntity.BuffControl.GetBuffBasicForType<b_1018>();
+            // if (b1018 != null) //消耗一层感电,额外照成伤害
+            // {
+            //     harmBl += b1018.buffCount * effectValue[1];
+            // }
+            //
+            // long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+            //     harmBl);
+            //
+            // HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+            //     AttType.Skill, triggerData,
+            //     wuXingType, skillFeatures,
+            //     HarmType.Default);
+        }
+
+        protected override void ProCombatUpdate(float time)
+        {
+            if (!_isUpdate)
+            {
+                return;
+            }
+
+            _currTime += time;
+            if (_currTime >= effectValue[1])
+            {
+                _isUpdate = false;
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9061.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: d3b8db1f87a448e3919fbc6a076885d3
+timeCreated: 1750401656

+ 90 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9062.cs

@@ -0,0 +1,90 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using Common.Utility.CombatEvent;
+using Fort23.Core;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 木灵分身
+    /// 生命低于{0}%时触发,木灵的根须快速在自身周围生出2个木灵之子,木灵之子之有普通攻击,木灵之子拥有boss的{1}最大生命值的生命
+    ///(等级跟随boss的等级走)
+    /// </summary>
+    public class S9062 : SkillBasic
+    {
+        private bool _isTrigger;
+
+        protected override void ProUseSkill()
+        {
+        }
+
+        protected override void ProActiveSkill()
+        {
+            CombatEventManager.Instance.AddEventListener(CombatEventType.HeroInjured, HeroInjured);
+        }
+
+        protected override void ProDispose()
+        {
+            CombatEventManager.Instance.RemoveEventListener(CombatEventType.HeroInjured, HeroInjured);
+        }
+
+        private void HeroInjured(IEventData data)
+        {
+            if (_isTrigger)
+            {
+                return;
+            }
+
+            HeroInjuredEventData heroInjuredEventData = data as HeroInjuredEventData;
+            if (heroInjuredEventData.HarmReturnInfo.target.combatHeroEntity == CombatHeroEntity)
+            {
+                if (CombatHeroEntity.HpBl < effectValue[0])
+                {
+                    _isTrigger = true;
+                    ZhaoHuan();
+                }
+            }
+        }
+
+        private void ZhaoHuan()
+        {
+            for (int i = 0; i < 2; i++)
+            {
+                CombatHeroEntity heroEntity = new CombatHeroEntity();
+                heroEntity.IsEnemy = true;
+                CombatHeroInfo combatHeroInfo = new CombatHeroInfo();
+                combatHeroInfo.InitMonster(1000, 1);
+                // testHeroInfoConfig.CopyToCombatHeroInfo((combatHeroInfo));
+                Vector3 pos = Vector3.forward;
+                heroEntity.Init(new CombatHeroAi(), combatHeroInfo, pos,
+                    delegate(CombatHeroEntity entity)
+                    {
+                        CombatController.currActiveCombat.CombatHeroController.AddHero(entity);
+                    });
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            // float harmBl = 0;
+            // b_1018 b1018 = targetEntity.combatHeroEntity.BuffControl.GetBuffBasicForType<b_1018>();
+            // if (b1018 != null) //消耗一层感电,额外照成伤害
+            // {
+            //     harmBl += b1018.buffCount * effectValue[1];
+            // }
+            //
+            // long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+            //     harmBl);
+            //
+            // HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+            //     AttType.Skill, triggerData,
+            //     wuXingType, skillFeatures,
+            //     HarmType.Default);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9062.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: b12636fc231e4a1da42c498346559f50
+timeCreated: 1750401921

+ 51 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9063.cs

@@ -0,0 +1,51 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 木桩
+    /// 木灵挥手,从手中挥舞出一个木头,直线飞向敌人,对敌人造成{0}伤害
+    /// </summary>
+    public class S9063 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+            // if (harmReturnInfo.isHitHero)
+            // {
+            //     BuffInfo buffInfo = BuffInfo.GetBuffInfo(10011, 1);
+            //     targetEntity.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+            // }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9063.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: eeaf50b31d694dfd975653e15509e93c
+timeCreated: 1750402718

+ 62 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9064.cs

@@ -0,0 +1,62 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using Common.Utility.CombatEvent;
+using Fort23.Core;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 缠绕
+    /// 敌人脚下生长出藤蔓,将敌人捆住。{0}秒内不能行动(功法不在释放和填充),受到木灵之子的攻击伤害+{1}%
+    /// </summary>
+    public class S9064 : SkillBasic
+    {
+        private float _currTime;
+        private bool _isUpdate;
+
+        protected override void ProUseSkill()
+        {
+            _currTime = 0;
+            _isUpdate = true;
+        }
+
+        protected override void ProActiveSkill()
+        {
+            CombatEventManager.Instance.AddEventListener(CombatEventType.StartInjured, StartInjured);
+        }
+
+        private void StartInjured(IEventData data)
+        {
+            if (!_isUpdate)
+            {
+                return;
+            }
+
+            StartInjuredEventData startInjuredEventData = data as StartInjuredEventData;
+            //如果是木桩 伤害增加
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+        }
+
+        protected override void ProCombatUpdate(float time)
+        {
+            if (!_isUpdate)
+            {
+                return;
+            }
+
+            _currTime += time;
+            if (_currTime > effectValue[0])
+            {
+                _isUpdate = false;
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9064.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 20cff3df6d8a4498b6cf91ae8e20d429
+timeCreated: 1750403540

+ 46 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9071.cs

@@ -0,0 +1,46 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 木刺
+    /// 挥手发射{0}枚木刺,对敌人造成{1}上
+    /// </summary>
+    public class S9071 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9071.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 181669ffd32a4d899ba381f8d4c3d588
+timeCreated: 1750403975

+ 52 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9081.cs

@@ -0,0 +1,52 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using OfficeOpenXml.FormulaParsing.Excel.Functions.Logical;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 焚天之怒
+    /// 妖兽激发体内的火灵根,从身体里爆发出{0}枚火焰球,对敌人造成{1}伤害,并对敌人施加1层灼烧
+    /// </summary>
+    public class S9081 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+            if (harmReturnInfo.isHitHero)
+            {
+                BuffInfo buffInfo = BuffInfo.GetBuffInfo(10051, 1);
+                targetEntity.combatHeroEntity.BuffControl.AddBuff(CombatHeroEntity, buffInfo);
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9081.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 8fb0d513cb6649da8b76ae7546c8cdcb
+timeCreated: 1750404498

+ 28 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9082.cs

@@ -0,0 +1,28 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 焰轮决(当妖兽拥有2个焰轮法宝,并且没有释放出去的时候触发)
+    /// 2个焰轮围绕妖兽快速旋转形成一道火焰墙,火墙拥有{0}妖兽的最大生命。当金属性功法打在上面时,伤害削弱{1}%
+    /// </summary>
+    public class S9082 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+           
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9082.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 3021fba5beae40058bc790228de4b68a
+timeCreated: 1750404559

+ 46 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9083.cs

@@ -0,0 +1,46 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 风炎
+    /// 妖兽煽动翅膀,在空中行程形成{0}个小龙卷风形式的火焰向敌人席卷而去。对敌人照成{0}伤害
+    /// </summary>
+    public class S9083 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9083.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: f449f820346f4371ab73a001f8788d88
+timeCreated: 1750404771

+ 46 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9084.cs

@@ -0,0 +1,46 @@
+using CombatLibrary.CombatLibrary.CombatCore.CustomizeTimeLogic.FxLogic;
+using GameLogic.Combat.Buff;
+using GameLogic.Combat.CombatTool;
+using GameLogic.Combat.Hero;
+using UnityEngine;
+using UTool.CustomizeTimeLogic.FxLogic.TimeLineEventinterface;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 焰羽流星
+    /// 妖兽轻轻挥动翅膀,从翅膀出生成{0}枚火焰形式的羽毛,对敌人照成{1}伤害
+    /// </summary>
+    public class S9084 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+            ballisticsCount = (int)effectValue[0];
+            for (int i = 0; i < effectValue[0]; i++)
+            {
+                CombatHeroHitPoint combatHeroHitPoint = CombatHeroEntity.CombatAIBasic.currFocusTarget
+                    .GetThis<CombatHeroEntity>()
+                    .GetMainHotPoin<CombatHeroHitPoint>();
+                BetterList<ILifetCycleHitPoint> currTarget = new BetterList<ILifetCycleHitPoint>();
+                currTarget.Add(combatHeroHitPoint);
+                SpecialDotInfo specialDotInfo = CombatHeroEntity.GetSpecialDotInfo("zdpos" + (i + 2));
+                ActivationTimeLineData("1101", currTarget: currTarget,
+                    customizePos: new Vector3[] { specialDotInfo.GetWorlPos() }, indexCount: i);
+            }
+        }
+
+        protected override void ProDefaultTimeLineTrigger(string groupName, CombatHeroHitPoint targetEntity,
+            ITimelineFxLogic timelineFxLogic,
+            TriggerData triggerData, ISkillFeatures skillFeatures)
+        {
+            float harmBl = effectValue[1];
+            long v = CombatCalculateTool.Instance.GetVlaueRatioForLong(CombatHeroEntity.CurrCombatHeroInfo.attack.Value,
+                harmBl);
+
+            HarmReturnInfo harmReturnInfo = CombatCalculateTool.Instance.Harm(CombatHeroEntity, targetEntity, v,
+                AttType.Skill, triggerData,
+                wuXingType, skillFeatures,
+                HarmType.Default);
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9084.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: efb45e8b6c4344458341b4d8deba190e
+timeCreated: 1750405293

+ 34 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9085.cs

@@ -0,0 +1,34 @@
+using Common.Utility.CombatEvent;
+using Fort23.Core;
+using GameLogic.Combat.Hero;
+
+namespace GameLogic.Combat.Skill
+{
+    /// <summary>
+    /// 焰轮爆发(被动,焰轮的二阶段)
+    /// 当焰轮被摧毁{0}次后,焰轮会激怒到第二阶段,(焰轮表现上做点却别)碰撞强度提升{1}%,并且伤害提升{2}%
+    /// </summary>
+    public class S9085 : SkillBasic
+    {
+        protected override void ProUseSkill()
+        {
+        }
+
+        protected override void ProActiveSkill()
+        {
+            CombatEventManager.Instance.AddEventListener(CombatEventType.MagicWeaponDie, MagicWeaponDie);
+        }
+
+        private void MagicWeaponDie(IEventData iEventData)
+        {
+            HeroDieEventData heroDieEventData = iEventData as HeroDieEventData;
+            CombatMagicWeaponEntity combatMagicWeaponEntity =
+                heroDieEventData.combatHeroEntity as CombatMagicWeaponEntity;
+            if (combatMagicWeaponEntity != null &&
+                combatMagicWeaponEntity.RootMagicWeaponControl.combatHeroEntity == CombatHeroEntity)
+            {
+                
+            }
+        }
+    }
+}

+ 3 - 0
Assets/Scripts/GameLogic/Combat/Skill/S9085.cs.meta

@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 0bfb7e9fd7ba4636b9b8838d8f48b51d
+timeCreated: 1750405368

+ 6 - 17
Assets/Scripts/GameLogic/Combat/Skill/SkillBasic.cs

@@ -140,6 +140,8 @@ namespace GameLogic.Combat.Skill
         protected SkillInfo skillInfo;
         protected SkillInfo skillInfo;
 
 
         protected int ballisticsCount=1;
         protected int ballisticsCount=1;
+
+    
         public T This<T>()
         public T This<T>()
         {
         {
             return (T)(object)this;
             return (T)(object)this;
@@ -191,6 +193,7 @@ namespace GameLogic.Combat.Skill
         /// </summary>
         /// </summary>
         public void ActiveSkill()
         public void ActiveSkill()
         {
         {
+            isActive = true;
             ProActiveSkill();
             ProActiveSkill();
         }
         }
 
 
@@ -244,10 +247,7 @@ namespace GameLogic.Combat.Skill
             _isDis = false;
             _isDis = false;
         }
         }
 
 
-        public virtual void ActiveLimitSkill()
-        {
-            isActive = true;
-        }
+       
 
 
         /// <summary>
         /// <summary>
         /// 开始游戏
         /// 开始游戏
@@ -383,20 +383,9 @@ namespace GameLogic.Combat.Skill
             _combatHeroEntity = null;
             _combatHeroEntity = null;
         }
         }
 
 
-        public void ReduceCd(float time)
-        {
-            if (!isActive || !IsCanReduceCd())
-            {
-                return;
-            }
-
-            _skillCd -= time;
-        }
+    
 
 
-        protected virtual bool IsCanReduceCd()
-        {
-            return true;
-        }
+    
 
 
         public SpecialDotInfo GetSpecialDotInfo(string specialDotName)
         public SpecialDotInfo GetSpecialDotInfo(string specialDotName)
         {
         {

+ 15 - 2
Assets/Scripts/GameUI/EventManager/EventSystemManager.cs

@@ -236,6 +236,12 @@ public class EventSystemManager : Singleton<EventSystemManager>
         return count;
         return count;
     }
     }
 
 
+    // public bool IsRefenceEvent(int eventID)
+    // {
+    //     EventConfig eventConfig = ConfigComponent.Instance.Get<EventConfig>(eventID);
+    // }
+
+
     public bool IsEventTrigger(int eventID)
     public bool IsEventTrigger(int eventID)
     {
     {
         foreach (var eventList in AccountFileInfo.Instance.playerData.completeEvents)
         foreach (var eventList in AccountFileInfo.Instance.playerData.completeEvents)
@@ -339,12 +345,19 @@ public class EventSystemManager : Singleton<EventSystemManager>
             int quality = UtilTools.GetRandomByWeight(qualitys, divineSenseConfig.QualityBonusChance);
             int quality = UtilTools.GetRandomByWeight(qualitys, divineSenseConfig.QualityBonusChance);
 
 
 
 
+            // // 获取通用事件
+            // List<EventConfig> globalEvents = eventConfigs.Where(e => e.EventTriggerType == 1 && CanTriggerEvent(e.ID) && e.EventQuality == quality && !BagIsEvent(e.ID) && eventLists.FirstOrDefault(el => el.eventID == e.ID) == null).ToList();
+            //
+            //
+            // //场景特定事件
+            // List<EventConfig> candidateEvents = eventConfigs.Where(e => bigMap.SpecialTaskID.Contains(e.ID) && CanTriggerEvent(e.ID) && e.EventQuality == quality && !BagIsEvent(e.ID) && eventLists.FirstOrDefault(el => el.eventID == e.ID) == null).ToList();
+
             // 获取通用事件
             // 获取通用事件
-            List<EventConfig> globalEvents = eventConfigs.Where(e => e.EventTriggerType == 1 && CanTriggerEvent(e.ID) && e.EventQuality == quality && !BagIsEvent(e.ID) && eventLists.FirstOrDefault(el => el.eventID == e.ID) == null).ToList();
+            List<EventConfig> globalEvents = eventConfigs.Where(e => e.EventTriggerType == 1 && e.EventQuality == quality && eventLists.FirstOrDefault(el => el.eventID == e.ID) == null).ToList();
 
 
 
 
             //场景特定事件
             //场景特定事件
-            List<EventConfig> candidateEvents = eventConfigs.Where(e => bigMap.SpecialTaskID.Contains(e.ID) && CanTriggerEvent(e.ID) && e.EventQuality == quality && !BagIsEvent(e.ID) && eventLists.FirstOrDefault(el => el.eventID == e.ID) == null).ToList();
+            List<EventConfig> candidateEvents = eventConfigs.Where(e => bigMap.SpecialTaskID.Contains(e.ID) && e.EventQuality == quality && eventLists.FirstOrDefault(el => el.eventID == e.ID) == null).ToList();
 
 
             if (candidateEvents.Count == 0 && globalEvents.Count == 0)
             if (candidateEvents.Count == 0 && globalEvents.Count == 0)
             {
             {

+ 1 - 1
Assets/Scripts/GameUI/GameApplction.cs

@@ -161,7 +161,7 @@ public class GameApplction : IGameStart
         CombatDrive.Instance.AddCombatController(new CombatController());
         CombatDrive.Instance.AddCombatController(new CombatController());
         gameStartUIPanel.ShowMassge("loadCombat");
         gameStartUIPanel.ShowMassge("loadCombat");
         gameStartUIPanel.SetSlider(0.95f);
         gameStartUIPanel.SetSlider(0.95f);
-        var eventList = EventSystemManager.Instance.AddEvent(10001);
+        var eventList = EventSystemManager.Instance.AddEvent(10018);
       
       
         if (eventList != null)
         if (eventList != null)
         {
         {

+ 9 - 2
Assets/Scripts/GameUI/ScorolList/ScrollList.cs

@@ -665,8 +665,15 @@ public class ScrollList : MonoBehaviour, IScrollListContent
                     isShow = true;
                     isShow = true;
                 }
                 }
 
 
-                if (p.y > miny - size.y - 100 &&
-                    p.y < maxy + size.y + 100)
+                // if (p.y > miny - size.y - 100 &&
+                //     p.y < maxy + size.y + 100)
+                // {
+                //     isHind = true;
+                // }
+                
+                //不依赖widget尺寸大小
+                if (p.y > miny  - 200 &&
+                    p.y < maxy  + 200)
                 {
                 {
                     isHind = true;
                     isHind = true;
                 }
                 }

+ 9 - 0
Assets/Scripts/GameUI/UI/XianTuLogPanel/EventLogInfoWidget.cs

@@ -6,6 +6,7 @@ namespace Fort23.Mono
 	[UIBinding(prefab = "EventLogInfoWidget"  )]
 	[UIBinding(prefab = "EventLogInfoWidget"  )]
 	public partial class EventLogInfoWidget : ItemWidgetBasic
 	public partial class EventLogInfoWidget : ItemWidgetBasic
 	{
 	{
+		public XianTuLogInfoData data;
 		private void Init()
 		private void Init()
 		{
 		{
 
 
@@ -29,6 +30,14 @@ namespace Fort23.Mono
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.GetComponent<RectTransform>());
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.GetComponent<RectTransform>());
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.transform.parent.GetComponent<RectTransform>());
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.transform.parent.GetComponent<RectTransform>());
 		}
 		}
+		
+		public void CustomInit(XianTuLogInfoData data)
+		{
+			this.data = data;
+			Text_Name.text = data.message;
+			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.GetComponent<RectTransform>());
+			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.transform.parent.GetComponent<RectTransform>());
+		}
 
 
 	}
 	}
 }
 }

+ 15 - 0
Assets/Scripts/GameUI/UI/XianTuLogPanel/EventLogMessageWidget.cs

@@ -6,6 +6,7 @@ namespace Fort23.Mono
 	[UIBinding(prefab = "EventLogMessageWidget"  )]
 	[UIBinding(prefab = "EventLogMessageWidget"  )]
 	public partial class EventLogMessageWidget : ItemWidgetBasic
 	public partial class EventLogMessageWidget : ItemWidgetBasic
 	{
 	{
+		public XianTuLogInfoData data;
 		private void Init()
 		private void Init()
 		{
 		{
 
 
@@ -28,5 +29,19 @@ namespace Fort23.Mono
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.GetComponent<RectTransform>());
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.GetComponent<RectTransform>());
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.transform.parent.GetComponent<RectTransform>());
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.transform.parent.GetComponent<RectTransform>());
 		}
 		}
+		
+		public void CustomInit(XianTuLogInfoData data)
+		{
+			this.data = data;
+			Text_Name.text = data.message;
+			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.GetComponent<RectTransform>());
+			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.transform.parent.GetComponent<RectTransform>());
+		}
+
+		public override void DormancyObj()
+		{
+			data = null;
+			base.DormancyObj();
+		}
 	}
 	}
 }
 }

+ 9 - 0
Assets/Scripts/GameUI/UI/XianTuLogPanel/EventLogTitleWidget.cs

@@ -6,6 +6,7 @@ namespace Fort23.Mono
 	[UIBinding(prefab = "EventLogTitleWidget"  )]
 	[UIBinding(prefab = "EventLogTitleWidget"  )]
 	public partial class EventLogTitleWidget : ItemWidgetBasic
 	public partial class EventLogTitleWidget : ItemWidgetBasic
 	{
 	{
+		public XianTuLogInfoData data;
 		private void Init()
 		private void Init()
 		{
 		{
 
 
@@ -29,6 +30,14 @@ namespace Fort23.Mono
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.GetComponent<RectTransform>());
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.GetComponent<RectTransform>());
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.transform.parent.GetComponent<RectTransform>());
 			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.transform.parent.GetComponent<RectTransform>());
 		}
 		}
+		
+		public void CustomInit(XianTuLogInfoData data)
+		{
+			this.data = data;
+			Text_Name.text = data.message;
+			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.GetComponent<RectTransform>());
+			LayoutRebuilder.ForceRebuildLayoutImmediate(Text_Name.transform.parent.GetComponent<RectTransform>());
+		}
 
 
 	}
 	}
 }
 }

+ 82 - 27
Assets/Scripts/GameUI/UI/XianTuLogPanel/XianTuLogInfoPanel.cs

@@ -17,6 +17,8 @@ namespace Fort23.Mono
         public int type;
         public int type;
 
 
         public string message;
         public string message;
+
+        public int id;
     }
     }
 
 
 
 
@@ -31,7 +33,7 @@ namespace Fort23.Mono
 
 
         List<UIComponent> components = new List<UIComponent>();
         List<UIComponent> components = new List<UIComponent>();
 
 
-        List<EventLogTitleWidget> titleWidgets = new List<EventLogTitleWidget>();
+        // List<EventLogTitleWidget> titleWidgets = new List<EventLogTitleWidget>();
 
 
         private int type;
         private int type;
 
 
@@ -50,9 +52,21 @@ namespace Fort23.Mono
         public override void AddButtonEvent()
         public override void AddButtonEvent()
         {
         {
             Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
             Btn_Close.onClick.AddListener(() => { UIManager.Instance.HideUIUIPanel(this); });
+            Sr.onValueChanged.AddListener(OnValueChanged);
+        }
+
+        private void OnValueChanged(Vector2 arg0)
+        {
+            UpdateTitleWidget();
+        }
+
+        public async override CTask<bool> AsyncInit(object[] uiData)
+        {
+            await CustomInit((int)uiData[0], (int)uiData[1]);
+            return await base.AsyncInit(uiData);
         }
         }
 
 
-        public async void CustomInit(int type, int id)
+        public async CTask CustomInit(int type, int id)
         {
         {
             this.type = type;
             this.type = type;
             eventLogTitleWidget = await UIManager.Instance.CreateGComponentForObject<EventLogTitleWidget>(EventLogTitleWidget, null);
             eventLogTitleWidget = await UIManager.Instance.CreateGComponentForObject<EventLogTitleWidget>(EventLogTitleWidget, null);
@@ -82,6 +96,7 @@ namespace Fort23.Mono
                     PlacesConfig placesConfig = ConfigComponent.Instance.Get<PlacesConfig>(keyValuePair.Key);
                     PlacesConfig placesConfig = ConfigComponent.Instance.Get<PlacesConfig>(keyValuePair.Key);
                     XianTuLogInfoData xianTuLogInfoData3 = new XianTuLogInfoData();
                     XianTuLogInfoData xianTuLogInfoData3 = new XianTuLogInfoData();
                     xianTuLogInfoData3.type = 1;
                     xianTuLogInfoData3.type = 1;
+                    xianTuLogInfoData3.id = keyValuePair.Value[0].ID;
                     xianTuLogInfoData3.message = LanguageManager.Instance.Text(placesConfig.placeName);
                     xianTuLogInfoData3.message = LanguageManager.Instance.Text(placesConfig.placeName);
                     showXianTuLogInfoData.Add(xianTuLogInfoData3);
                     showXianTuLogInfoData.Add(xianTuLogInfoData3);
                 }
                 }
@@ -96,10 +111,12 @@ namespace Fort23.Mono
                         {
                         {
                             XianTuLogInfoData xianTuLogInfoData = new XianTuLogInfoData();
                             XianTuLogInfoData xianTuLogInfoData = new XianTuLogInfoData();
                             xianTuLogInfoData.type = 2;
                             xianTuLogInfoData.type = 2;
+                            xianTuLogInfoData.id = eventConfig.ID;
                             xianTuLogInfoData.message = "????????";
                             xianTuLogInfoData.message = "????????";
 
 
                             XianTuLogInfoData xianTuLogInfoData1 = new XianTuLogInfoData();
                             XianTuLogInfoData xianTuLogInfoData1 = new XianTuLogInfoData();
                             xianTuLogInfoData1.type = 3;
                             xianTuLogInfoData1.type = 3;
+                            xianTuLogInfoData1.id = eventConfig.ID;
                             xianTuLogInfoData1.message = "?????????????????????????????????";
                             xianTuLogInfoData1.message = "?????????????????????????????????";
 
 
                             showXianTuLogInfoData.Add(xianTuLogInfoData);
                             showXianTuLogInfoData.Add(xianTuLogInfoData);
@@ -110,6 +127,7 @@ namespace Fort23.Mono
                     {
                     {
                         XianTuLogInfoData xianTuLogInfoData = new XianTuLogInfoData();
                         XianTuLogInfoData xianTuLogInfoData = new XianTuLogInfoData();
                         xianTuLogInfoData.type = 2;
                         xianTuLogInfoData.type = 2;
+                        xianTuLogInfoData.id = eventConfig.ID;
                         xianTuLogInfoData.message = LanguageManager.Instance.Text(eventConfig.EventName);
                         xianTuLogInfoData.message = LanguageManager.Instance.Text(eventConfig.EventName);
                         showXianTuLogInfoData.Add(xianTuLogInfoData);
                         showXianTuLogInfoData.Add(xianTuLogInfoData);
                         foreach (var eventListSelectEventLinkId in eventList.selectEventLinkIds)
                         foreach (var eventListSelectEventLinkId in eventList.selectEventLinkIds)
@@ -121,6 +139,7 @@ namespace Fort23.Mono
                                 {
                                 {
                                     XianTuLogInfoData xianTuLogInfoData1 = new XianTuLogInfoData();
                                     XianTuLogInfoData xianTuLogInfoData1 = new XianTuLogInfoData();
                                     xianTuLogInfoData1.type = 3;
                                     xianTuLogInfoData1.type = 3;
+                                    xianTuLogInfoData1.id = eventConfig.ID;
                                     if (eventLinkConfig.NPCID != 0)
                                     if (eventLinkConfig.NPCID != 0)
                                     {
                                     {
                                         xianTuLogInfoData1.message = $"<color=#A6A6A6>{LanguageManager.Instance.Text(i)}</color>";
                                         xianTuLogInfoData1.message = $"<color=#A6A6A6>{LanguageManager.Instance.Text(i)}</color>";
@@ -129,8 +148,8 @@ namespace Fort23.Mono
                                     {
                                     {
                                         xianTuLogInfoData1.message = $"<color=#867169>{LanguageManager.Instance.Text(i)}</color>";
                                         xianTuLogInfoData1.message = $"<color=#867169>{LanguageManager.Instance.Text(i)}</color>";
                                     }
                                     }
-                                  
-                                  
+
+
                                     showXianTuLogInfoData.Add(xianTuLogInfoData1);
                                     showXianTuLogInfoData.Add(xianTuLogInfoData1);
                                 }
                                 }
                             }
                             }
@@ -142,17 +161,17 @@ namespace Fort23.Mono
             if (type == 1)
             if (type == 1)
             {
             {
                 // eventLogTitleWidget.SetActive(true);
                 // eventLogTitleWidget.SetActive(true);
-                Sv.SetParent(Marsk1,false);
+                Sv.SetParent(Marsk1, false);
                 eventLogTitleWidget.CustomInit(showXianTuLogInfoData[0].message);
                 eventLogTitleWidget.CustomInit(showXianTuLogInfoData[0].message);
                 eventLogTitleWidget.own.SetActive(true);
                 eventLogTitleWidget.own.SetActive(true);
             }
             }
             else if (type == 2)
             else if (type == 2)
             {
             {
-                Sv.SetParent(Marsk2,false);
+                Sv.SetParent(Marsk2, false);
                 eventLogTitleWidget.own.SetActive(false);
                 eventLogTitleWidget.own.SetActive(false);
             }
             }
 
 
-            Content.Init(this, showXianTuLogInfoData.Count);
+            await Content.Init(this, showXianTuLogInfoData.Count);
         }
         }
 
 
         public async CTask<IScorllListWidget> GetIScorllListWidget(int index, RectTransform root)
         public async CTask<IScorllListWidget> GetIScorllListWidget(int index, RectTransform root)
@@ -167,22 +186,22 @@ namespace Fort23.Mono
             if (xianTuLogInfoData.type == 1)
             if (xianTuLogInfoData.type == 1)
             {
             {
                 EventLogTitleWidget eventLogTitleWidget = await UIManager.Instance.CreateGComponent<EventLogTitleWidget>(null, ContentRoot);
                 EventLogTitleWidget eventLogTitleWidget = await UIManager.Instance.CreateGComponent<EventLogTitleWidget>(null, ContentRoot);
-                eventLogTitleWidget.CustomInit(xianTuLogInfoData.message);
-                titleWidgets.Add(eventLogTitleWidget);
+                eventLogTitleWidget.CustomInit(xianTuLogInfoData);
+                // titleWidgets.Add(eventLogTitleWidget);
                 components.Add(eventLogTitleWidget);
                 components.Add(eventLogTitleWidget);
                 return eventLogTitleWidget;
                 return eventLogTitleWidget;
             }
             }
             else if (xianTuLogInfoData.type == 2)
             else if (xianTuLogInfoData.type == 2)
             {
             {
                 EventLogInfoWidget eventLogInfoWidget = await UIManager.Instance.CreateGComponent<EventLogInfoWidget>(null, ContentRoot);
                 EventLogInfoWidget eventLogInfoWidget = await UIManager.Instance.CreateGComponent<EventLogInfoWidget>(null, ContentRoot);
-                eventLogInfoWidget.CustomInit(xianTuLogInfoData.message);
+                eventLogInfoWidget.CustomInit(xianTuLogInfoData);
                 components.Add(eventLogInfoWidget);
                 components.Add(eventLogInfoWidget);
                 return eventLogInfoWidget;
                 return eventLogInfoWidget;
             }
             }
             else if (xianTuLogInfoData.type == 3)
             else if (xianTuLogInfoData.type == 3)
             {
             {
                 EventLogMessageWidget eventLogInfoWidget = await UIManager.Instance.CreateGComponent<EventLogMessageWidget>(null, ContentRoot);
                 EventLogMessageWidget eventLogInfoWidget = await UIManager.Instance.CreateGComponent<EventLogMessageWidget>(null, ContentRoot);
-                eventLogInfoWidget.CustomInit(xianTuLogInfoData.message);
+                eventLogInfoWidget.CustomInit(xianTuLogInfoData);
                 components.Add(eventLogInfoWidget);
                 components.Add(eventLogInfoWidget);
                 return eventLogInfoWidget;
                 return eventLogInfoWidget;
             }
             }
@@ -198,10 +217,10 @@ namespace Fort23.Mono
                 components.Remove(widget as UIComponent);
                 components.Remove(widget as UIComponent);
             }
             }
 
 
-            if (titleWidgets.Contains(widget as EventLogTitleWidget))
-            {
-                titleWidgets.Remove(widget as EventLogTitleWidget);
-            }
+            // if (titleWidgets.Contains(widget as EventLogTitleWidget))
+            // {
+            //     titleWidgets.Remove(widget as EventLogTitleWidget);
+            // }
         }
         }
 
 
         public override void Close()
         public override void Close()
@@ -213,44 +232,80 @@ namespace Fort23.Mono
             }
             }
 
 
             components.Clear();
             components.Clear();
-            titleWidgets.Clear();
+            // titleWidgets.Clear();
 
 
             base.Close();
             base.Close();
         }
         }
 
 
-        [CustomMethod(CustomMethodType.Update)]
-        public void Update()
+        List<UIComponent> _components = new List<UIComponent>();
+        private float maxY;
+        private float minY;
+
+
+        public void UpdateTitleWidget()
         {
         {
             if (type != 1)
             if (type != 1)
                 return;
                 return;
-            EventLogTitleWidget highestItem = null;
-            float maxY = float.MinValue;
+            UIComponent highestItem = null;
+            maxY = float.MinValue;
+            minY = float.MaxValue;
+            _components.Clear();
 
 
 
 
-            foreach (var xianTuTitleWidget in titleWidgets)
+            foreach (var xianTuTitleWidget in components)
             {
             {
                 float itemY = xianTuTitleWidget.own.transform.position.y; // 使用世界坐标的 Y 值
                 float itemY = xianTuTitleWidget.own.transform.position.y; // 使用世界坐标的 Y 值
-                if (itemY > maxY)
+                if (itemY > eventLogTitleWidget.own.transform.position.y)
                 {
                 {
                     maxY = itemY;
                     maxY = itemY;
-                    highestItem = xianTuTitleWidget;
+                    // highestItem = xianTuTitleWidget;
+                    _components.Add(xianTuTitleWidget);
                 }
                 }
             }
             }
 
 
+            foreach (var uiComponent in _components)
+            {
+                float itemY = uiComponent.own.transform.position.y; // 使用世界坐标的 Y 值
+                if (itemY < minY)
+                {
+                    minY = itemY;
+                    highestItem = uiComponent;
+                }
+            }
+
+
             if (highestItem != null)
             if (highestItem != null)
             {
             {
                 float outsideY = eventLogTitleWidget.own.transform.position.y;
                 float outsideY = eventLogTitleWidget.own.transform.position.y;
-                if (maxY > outsideY )
+                if (maxY > outsideY)
                 {
                 {
-                    eventLogTitleWidget.CustomInit(highestItem.Text_Name.text);
+                    EventConfig eventConfig = default;
+                    if (highestItem is EventLogTitleWidget)
+                    {
+                        EventLogTitleWidget eventLogTitleWidget = highestItem as EventLogTitleWidget;
+                        eventConfig = ConfigComponent.Instance.Get<EventConfig>(eventLogTitleWidget.data.id);
+                    }
+                    else if (highestItem is EventLogInfoWidget)
+                    {
+                        EventLogInfoWidget eventLogTitleWidget = highestItem as EventLogInfoWidget;
+                        eventConfig = ConfigComponent.Instance.Get<EventConfig>(eventLogTitleWidget.data.id);
+                    }
+                    else if (highestItem is EventLogMessageWidget)
+                    {
+                        EventLogMessageWidget eventLogTitleWidget = highestItem as EventLogMessageWidget;
+                        eventConfig = ConfigComponent.Instance.Get<EventConfig>(eventLogTitleWidget.data.id);
+                    }
+
+                    PlacesConfig placesConfig = ConfigComponent.Instance.Get<PlacesConfig>(eventConfig.placeID);
+                    eventLogTitleWidget.CustomInit(LanguageManager.Instance.Text(placesConfig.placeName));
                 }
                 }
             }
             }
         }
         }
 
 
         public async static CTask OpenPanel(int type, int id)
         public async static CTask OpenPanel(int type, int id)
         {
         {
-            XianTuLogInfoPanel xianTuLogInfoPanel = await UIManager.Instance.LoadAndOpenPanel<XianTuLogInfoPanel>(null);
-            xianTuLogInfoPanel.CustomInit(type, id);
+            XianTuLogInfoPanel xianTuLogInfoPanel = await UIManager.Instance.LoadAndOpenPanel<XianTuLogInfoPanel>(null, uiData: new object[] { type, id });
+            // xianTuLogInfoPanel.CustomInit(type, id);
         }
         }
     }
     }
 }
 }

+ 11 - 0
Assets/Scripts/GameUI/UI/XianTuLogPanel/XianTuLogInfoPanelData.cs

@@ -96,6 +96,17 @@ namespace Fort23.Mono
 	      return _Sv;
 	      return _Sv;
 	     }
 	     }
 	   }
 	   }
+	  private ScrollRect _Sr;
+	  public ScrollRect Sr
+	   {
+	   get{
+	      if (_Sr == null)
+	       {
+	         _Sr  = GetUIUnit<ScrollRect>("Sr"); 
+	       }
+	      return _Sr;
+	     }
+	   }
 	  #endregion 自定义数据结束 
 	  #endregion 自定义数据结束 
 	 public override async CTask SetUIGameObject(GameObject gObjectPoolInterface)
 	 public override async CTask SetUIGameObject(GameObject gObjectPoolInterface)
 	{
 	{

BIN
Excel2Json/Excel/Buff.xlsx


BIN
Excel2Json/Excel/EventConfig.xlsx


BIN
Excel2Json/Excel/Language.xlsx


BIN
Excel2Json/Excel/Maps.xlsx


Dosya farkı çok büyük olduğundan ihmal edildi
+ 521 - 412
UserSettings/Layouts/default-2022.dwlt


Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor