Compare commits
1 Commits
main
...
wuwenbo/ol
| Author | SHA1 | Date | |
|---|---|---|---|
| 04d188cc52 |
@ -467,153 +467,8 @@ MonoBehaviour:
|
|||||||
Param: 10
|
Param: 10
|
||||||
SkillParam: 171
|
SkillParam: 171
|
||||||
SpType: 0
|
SpType: 0
|
||||||
SkillList:
|
SkillList:
|
||||||
SkillName:
|
SkillName:
|
||||||
Desc: "\u7D2F\u8BA1\u6B7B\u4EA1**<{param}/{param}>**\u540D**<\u5F02\u7AEF>**"
|
Desc: "\u7D2F\u8BA1\u6B7B\u4EA1**<{param}/{param}>**\u540D**<\u5F02\u7AEF>**"
|
||||||
UnitFullTypes: []
|
UnitFullTypes: []
|
||||||
TargetBuff:
|
TargetBuff:
|
||||||
- GiantType: 16
|
|
||||||
TaskList:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 20
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 50
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 100
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- GiantType: 17
|
|
||||||
TaskList:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 20
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 50
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 100
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- GiantType: 18
|
|
||||||
TaskList:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 20
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 50
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 100
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- GiantType: 19
|
|
||||||
TaskList:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 20
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 50
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 100
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- GiantType: 20
|
|
||||||
TaskList:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 20
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 50
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
- taskContentType: 1
|
|
||||||
Param: 100
|
|
||||||
SkillParam: 0
|
|
||||||
SpType: 0
|
|
||||||
SkillList:
|
|
||||||
SkillName:
|
|
||||||
Desc: "\u7D2F\u8BA1\u9020\u6210**<{param}/{param}>**\u70B9\u4F24\u5BB3"
|
|
||||||
UnitFullTypes: []
|
|
||||||
TargetBuff:
|
|
||||||
|
|||||||
@ -192,62 +192,7 @@ MonoBehaviour:
|
|||||||
\uFF0C\u6301\u7EED0\u56DE\u5408<br> **<------- Lv.4 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**50HP/5\u653B/4\u9632/1\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
\uFF0C\u6301\u7EED0\u56DE\u5408<br> **<------- Lv.4 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**50HP/5\u653B/4\u9632/1\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
||||||
<br> **<[\u80FD\u529B:\u767D\u72FC\u7684\u6700\u540E\u901A\u7252]>**\u5168\u573A\u6700\u591A\u540C\u65F6\u5B58\u57283\u4E2A**<\u5F02\u7AEF\u70D9\u5370>**
|
<br> **<[\u80FD\u529B:\u767D\u72FC\u7684\u6700\u540E\u901A\u7252]>**\u5168\u573A\u6700\u591A\u540C\u65F6\u5B58\u57283\u4E2A**<\u5F02\u7AEF\u70D9\u5370>**
|
||||||
<br>"
|
<br>"
|
||||||
- GiantType: 16
|
OutsideMultiplayTitleAIPlayer:
|
||||||
UpgradeText: "**<\u53E4\u660E\u5730\u5E1D\u56FD\u7684\u8BFB\u5FC3\u5996\u602A\uFF1A\u53E4\u660E\u5730\u89C9>**
|
|
||||||
<br> **<-------- Lv.1 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**20HP/2\u653B/2\u9632/1\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<-------- Lv.2 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**30HP/2.5\u653B/2\u9632/1\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<-------- Lv.3 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**40HP/3\u653B/3\u9632/1\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<------- Lv.4 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**50HP/4\u653B/3\u9632/1\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br>"
|
|
||||||
- GiantType: 17
|
|
||||||
UpgradeText: "**<\u53E4\u660E\u5730\u5E1D\u56FD\u7684\u65E0\u610F\u8BC6\u64CD\u7EB5\u8005\uFF1A\u53E4\u660E\u5730\u604B>**
|
|
||||||
<br> **<-------- Lv.1 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**10HP/0\u653B/3\u9632/3\u79FB\u52A8\u529B/2\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<-------- Lv.2 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**20HP/0\u653B/3\u9632/3\u79FB\u52A8\u529B/2\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<-------- Lv.3 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**25HP/0\u653B/3\u9632/3\u79FB\u52A8\u529B/2\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<------- Lv.4 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**35HP/0\u653B/3\u9632/3\u79FB\u52A8\u529B/2\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br>"
|
|
||||||
- GiantType: 18
|
|
||||||
UpgradeText: "**<\u53E4\u660E\u5730\u5E1D\u56FD\u7684\u5730\u72F1\u9E26\uFF1A\u7075\u4E4C\u8DEF\u7A7A>**
|
|
||||||
<br> **<-------- Lv.1 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**10HP/1\u653B/2\u9632/1\u79FB\u52A8\u529B/2\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<-------- Lv.2 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**20HP/2\u653B/2\u9632/1\u79FB\u52A8\u529B/2\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<-------- Lv.3 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**30HP/2\u653B/3\u9632/1\u79FB\u52A8\u529B/2\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<------- Lv.4 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**40HP/3\u653B/3\u9632/1\u79FB\u52A8\u529B/2\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br>"
|
|
||||||
- GiantType: 19
|
|
||||||
UpgradeText: "**<\u53E4\u660E\u5730\u5E1D\u56FD\u7684\u9B3C\u65CF\u8C6A\u6770\uFF1A\u661F\u718A\u52C7\u4EEA>**
|
|
||||||
<br> **<-------- Lv.1 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**10HP/2.5\u653B/1\u9632/2\u79FB\u52A8\u529B/1\u5C04\u7A0B/\u98DE\u884C
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<-------- Lv.2 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**15HP/2.5\u653B/2\u9632/2\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<-------- Lv.3 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**20HP/3\u653B/2\u9632/3\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<------- Lv.4 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**30HP/4\u653B/3\u9632/3\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br>"
|
|
||||||
- GiantType: 20
|
|
||||||
UpgradeText: "**<\u53E4\u660E\u5730\u5E1D\u56FD\u7684\u706B\u8F66\u732B\uFF1A\u706B\u7130\u732B\u71D0>**
|
|
||||||
<br> **<-------- Lv.1 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**20HP/3\u653B/3\u9632/1\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<-------- Lv.2 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**30HP/3.5\u653B/3\u9632/1\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<-------- Lv.3 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**40HP/4\u653B/3\u9632/1\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br> **<------- Lv.4 -------->** <br> **<[\u57FA\u7840\u5C5E\u6027]>**50HP/5\u653B/4\u9632/1\u79FB\u52A8\u529B/1\u5C04\u7A0B
|
|
||||||
<br> **<[\u80FD\u529B:\u5F85\u5B9A]>**\u5360\u4F4D\u6587\u672C
|
|
||||||
<br>"
|
|
||||||
OutsideMultiplayTitleAIPlayer:
|
|
||||||
OutsideMultiplayTitleHost:
|
OutsideMultiplayTitleHost:
|
||||||
OutsideMultiplayTitleGuest:
|
OutsideMultiplayTitleGuest:
|
||||||
OutsideMultiplayCantStartForce: "\u5B58\u5728\u76F8\u540C\u7684\u9635\u8425\uFF0C\u65E0\u6CD5\u5F00\u59CB"
|
OutsideMultiplayCantStartForce: "\u5B58\u5728\u76F8\u540C\u7684\u9635\u8425\uFF0C\u65E0\u6CD5\u5F00\u59CB"
|
||||||
|
|||||||
@ -4073,7 +4073,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
|
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4095,7 +4095,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
|
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4117,7 +4117,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
|
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4139,7 +4139,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
|
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4161,7 +4161,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 3
|
MoveRange: 3
|
||||||
AttackRange: 2
|
AttackRange: 2
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
|
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4183,7 +4183,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 3
|
MoveRange: 3
|
||||||
AttackRange: 2
|
AttackRange: 2
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
|
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4205,7 +4205,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 3
|
MoveRange: 3
|
||||||
AttackRange: 2
|
AttackRange: 2
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
|
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4227,7 +4227,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 3
|
MoveRange: 3
|
||||||
AttackRange: 2
|
AttackRange: 2
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
|
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4249,7 +4249,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 2
|
AttackRange: 2
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
|
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4271,7 +4271,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 2
|
AttackRange: 2
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
|
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4293,7 +4293,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 2
|
AttackRange: 2
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
|
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4315,7 +4315,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 2
|
AttackRange: 2
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
|
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4337,7 +4337,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 2
|
MoveRange: 2
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
|
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4359,7 +4359,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 2
|
MoveRange: 2
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
|
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4381,7 +4381,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 3
|
MoveRange: 3
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
|
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4403,7 +4403,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 3
|
MoveRange: 3
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
|
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4425,7 +4425,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
|
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4447,7 +4447,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
|
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4469,7 +4469,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
|
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
@ -4491,7 +4491,7 @@ MonoBehaviour:
|
|||||||
MoveRange: 1
|
MoveRange: 1
|
||||||
AttackRange: 1
|
AttackRange: 1
|
||||||
Cost: 0
|
Cost: 0
|
||||||
Skills: 20000000
|
Skills:
|
||||||
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
|
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
|
||||||
IsSpriteVarient: 0
|
IsSpriteVarient: 0
|
||||||
SpriteList: []
|
SpriteList: []
|
||||||
|
|||||||
@ -12,7 +12,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: c659b850b20e460f866ed3f696be406b, type: 3}
|
m_Script: {fileID: 11500000, guid: c659b850b20e460f866ed3f696be406b, type: 3}
|
||||||
m_Name: VersionConfig
|
m_Name: VersionConfig
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
CurVersionId: 608
|
CurVersionId: 610
|
||||||
Versions:
|
Versions:
|
||||||
- MajorVersion: 0
|
- MajorVersion: 0
|
||||||
MinorVersion: 6
|
MinorVersion: 6
|
||||||
|
|||||||
@ -1326,13 +1326,13 @@ namespace RuntimeData
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 当场上有小兵死亡时
|
// 当场上有小兵死亡时
|
||||||
public void OnAnyUnitDie(MapData map, UnitData dieUnit)
|
public void OnAnyUnitDie(MapData map)
|
||||||
{
|
{
|
||||||
foreach (var unit in UnitMap.UnitList)
|
foreach (var unit in UnitMap.UnitList)
|
||||||
{
|
{
|
||||||
//避免在遍历的时候,直接改到了skillsList
|
//避免在遍历的时候,直接改到了skillsList
|
||||||
var copy = new List<SkillBase>(unit.Skills);
|
var copy = new List<SkillBase>(unit.Skills);
|
||||||
foreach (var skill in copy) skill.OnAnyUnitDie(map, unit, dieUnit);
|
foreach (var skill in copy) skill.OnAnyUnitDie(map, unit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1352,7 +1352,7 @@ namespace RuntimeData
|
|||||||
if (config == null) return;
|
if (config == null) return;
|
||||||
|
|
||||||
// 改为二进制文件扩展名
|
// 改为二进制文件扩展名
|
||||||
string path = Application.persistentDataPath + "/../Config/match_config.dat";
|
string path = Application.persistentDataPath + "/match_config.dat";
|
||||||
int retryCount = 3;
|
int retryCount = 3;
|
||||||
|
|
||||||
while (retryCount > 0)
|
while (retryCount > 0)
|
||||||
@ -1376,7 +1376,7 @@ namespace RuntimeData
|
|||||||
|
|
||||||
public static MapConfig GetMatchConfig()
|
public static MapConfig GetMatchConfig()
|
||||||
{
|
{
|
||||||
string path = Application.persistentDataPath + "/../Config/match_config.dat";
|
string path = Application.persistentDataPath + "/match_config.dat";
|
||||||
if (!File.Exists(path)) return null;
|
if (!File.Exists(path)) return null;
|
||||||
|
|
||||||
int retryCount = 3;
|
int retryCount = 3;
|
||||||
@ -1419,7 +1419,7 @@ namespace RuntimeData
|
|||||||
if (map == null) return;
|
if (map == null) return;
|
||||||
|
|
||||||
// 改为二进制文件扩展名
|
// 改为二进制文件扩展名
|
||||||
string path = Application.persistentDataPath + "/../Config/map_archive";
|
string path = Application.persistentDataPath + "/map_archive";
|
||||||
if (isBegin) path += "_begin";
|
if (isBegin) path += "_begin";
|
||||||
else if (isEnd) path += "_end";
|
else if (isEnd) path += "_end";
|
||||||
else path += "_continue";
|
else path += "_continue";
|
||||||
@ -1448,7 +1448,7 @@ namespace RuntimeData
|
|||||||
|
|
||||||
public static MapData GetMapData(bool isMulti = false, bool isBegin = false, bool isEnd = false, uint mapId = 0)
|
public static MapData GetMapData(bool isMulti = false, bool isBegin = false, bool isEnd = false, uint mapId = 0)
|
||||||
{
|
{
|
||||||
string directory = Application.persistentDataPath + "/../Config/";
|
string directory = Application.persistentDataPath;
|
||||||
|
|
||||||
// 构建文件名模式
|
// 构建文件名模式
|
||||||
string pattern = "map_archive";
|
string pattern = "map_archive";
|
||||||
|
|||||||
@ -49,7 +49,7 @@ namespace RuntimeData
|
|||||||
RefreshSkillDict();
|
RefreshSkillDict();
|
||||||
if (_skillDict.ContainsKey(skillType))
|
if (_skillDict.ContainsKey(skillType))
|
||||||
{
|
{
|
||||||
_skillDict[skillType].OnSkillOverride(mapData, originId, Id);
|
_skillDict[skillType].OnSkillOverride(mapData, originId);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -219,7 +219,7 @@ namespace RuntimeData
|
|||||||
foreach (var skill in Skills) _skillDict[skill.GetSkillType()] = skill;
|
foreach (var skill in Skills) _skillDict[skill.GetSkillType()] = skill;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnSkillsTurnStart(MapData map)
|
protected void OnSkillsTurnStart(MapData map)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy)
|
||||||
@ -235,7 +235,7 @@ namespace RuntimeData
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnSkillsAfterTurnStart(MapData map)
|
protected void OnSkillsAfterTurnStart(MapData map)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy)
|
||||||
@ -244,7 +244,7 @@ namespace RuntimeData
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void OnSkillsTurnEnd(MapData map)
|
protected void OnSkillsTurnEnd(MapData map)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy) skill.OnTurnEnd(this, map);
|
foreach (var skill in copy) skill.OnTurnEnd(this, map);
|
||||||
|
|||||||
@ -500,19 +500,17 @@ namespace RuntimeData
|
|||||||
// 全局通知调用
|
// 全局通知调用
|
||||||
public void OnTurnStart(MapData map)
|
public void OnTurnStart(MapData map)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) return;
|
|
||||||
OnSkillsTurnStart(map);
|
OnSkillsTurnStart(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnAfterTurnStart(MapData map)
|
public void OnAfterTurnStart(MapData map)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) return;
|
|
||||||
OnSkillsAfterTurnStart(map);
|
OnSkillsAfterTurnStart(map);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void OnTurnEnd(MapData map)
|
public void OnTurnEnd(MapData map)
|
||||||
{
|
{
|
||||||
if (!IsFrozen()) OnSkillsTurnEnd(map);
|
OnSkillsTurnEnd(map);
|
||||||
AP = 0;
|
AP = 0;
|
||||||
CP = 0;
|
CP = 0;
|
||||||
MP = 0;
|
MP = 0;
|
||||||
@ -523,10 +521,7 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
int v = 1;
|
int v = 1;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
v += skill.GetExtraSight(this,map);
|
v += skill.GetExtraSight(this,map);
|
||||||
}
|
|
||||||
if (map.GetGridDataByUnitId(this.Id, out var grid) && grid.Feature == TerrainFeature.Mountain)
|
if (map.GetGridDataByUnitId(this.Id, out var grid) && grid.Feature == TerrainFeature.Mountain)
|
||||||
v = Mathf.Max(v, 2);
|
v = Mathf.Max(v, 2);
|
||||||
return v;
|
return v;
|
||||||
@ -537,10 +532,7 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
int v = 1;
|
int v = 1;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
v += skill.GetExtraSight(this,map);
|
v += skill.GetExtraSight(this,map);
|
||||||
}
|
|
||||||
if (grid.Feature == TerrainFeature.Mountain)
|
if (grid.Feature == TerrainFeature.Mountain)
|
||||||
v = Mathf.Max(v, 2);
|
v = Mathf.Max(v, 2);
|
||||||
return v;
|
return v;
|
||||||
@ -551,7 +543,6 @@ namespace RuntimeData
|
|||||||
var attackRange = 0;
|
var attackRange = 0;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
attackRange += skill.GetExtraAttackRange(mapData,this);
|
attackRange += skill.GetExtraAttackRange(mapData,this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -568,7 +559,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (!skill.GetFinalMoveRange(this, out var finalMoveRange)) continue;
|
if (!skill.GetFinalMoveRange(this, out var finalMoveRange)) continue;
|
||||||
return finalMoveRange;
|
return finalMoveRange;
|
||||||
}
|
}
|
||||||
@ -585,7 +575,6 @@ namespace RuntimeData
|
|||||||
var moveRange = info.MoveRange;
|
var moveRange = info.MoveRange;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
moveRange += skill.GetExtraMoveRange(mapData,this);
|
moveRange += skill.GetExtraMoveRange(mapData,this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -598,7 +587,6 @@ namespace RuntimeData
|
|||||||
var isStaticExp = false;
|
var isStaticExp = false;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsLimitSelfExp(this, map)) isStaticExp = true;
|
if (skill.IsLimitSelfExp(this, map)) isStaticExp = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -624,11 +612,7 @@ namespace RuntimeData
|
|||||||
public float GetSpecialSkillBonus(MapData mapData, SkillType skillType)
|
public float GetSpecialSkillBonus(MapData mapData, SkillType skillType)
|
||||||
{
|
{
|
||||||
var value = 1f;
|
var value = 1f;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills) value *= skill.GetSpecialSkillBonus(mapData, this, skillType);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
value *= skill.GetSpecialSkillBonus(mapData, this, skillType);
|
|
||||||
}
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -667,11 +651,7 @@ namespace RuntimeData
|
|||||||
public float GetAttackAdditionParam(MapData map, UnitData target = null)
|
public float GetAttackAdditionParam(MapData map, UnitData target = null)
|
||||||
{
|
{
|
||||||
var value = 0f;
|
var value = 0f;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills) value += skill.GetAttackAdditionParam(map, this, target);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
value += skill.GetAttackAdditionParam(map, this, target);
|
|
||||||
}
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -679,11 +659,7 @@ namespace RuntimeData
|
|||||||
public float GetAttackMultiplicationParam(MapData map, UnitData target = null)
|
public float GetAttackMultiplicationParam(MapData map, UnitData target = null)
|
||||||
{
|
{
|
||||||
var value = 1f;
|
var value = 1f;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills) value *= skill.GetAttackMultiplicationParam(map, this, target);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
value *= skill.GetAttackMultiplicationParam(map, this, target);
|
|
||||||
}
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -708,7 +684,6 @@ namespace RuntimeData
|
|||||||
var add = 0;
|
var add = 0;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
add += skill.GetExtraMoveRange(mapData,this);
|
add += skill.GetExtraMoveRange(mapData,this);
|
||||||
}
|
}
|
||||||
//var mul = GetDefenseMultiplicationParam(map);
|
//var mul = GetDefenseMultiplicationParam(map);
|
||||||
@ -734,7 +709,6 @@ namespace RuntimeData
|
|||||||
var add = 0;
|
var add = 0;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
add += skill.GetExtraAttackRange(mapData,this);
|
add += skill.GetExtraAttackRange(mapData,this);
|
||||||
}
|
}
|
||||||
//var mul = GetDefenseMultiplicationParam(map);
|
//var mul = GetDefenseMultiplicationParam(map);
|
||||||
@ -766,11 +740,7 @@ namespace RuntimeData
|
|||||||
public float GetDefenseAdditionParam(MapData map, UnitData target = null)
|
public float GetDefenseAdditionParam(MapData map, UnitData target = null)
|
||||||
{
|
{
|
||||||
var value = 0f;
|
var value = 0f;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills) value += skill.GetDefenseAdditionParam(map, this, target);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
value += skill.GetDefenseAdditionParam(map, this, target);
|
|
||||||
}
|
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -780,8 +750,7 @@ namespace RuntimeData
|
|||||||
var value = 1f;
|
var value = 1f;
|
||||||
var isZero = 1f;
|
var isZero = 1f;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
var t = skill.GetDefenseMultiplicationParam(map, this, target);
|
var t = skill.GetDefenseMultiplicationParam(map, this, target);
|
||||||
value = Mathf.Max(t,value);
|
value = Mathf.Max(t,value);
|
||||||
isZero *= t;
|
isZero *= t;
|
||||||
@ -815,11 +784,7 @@ namespace RuntimeData
|
|||||||
public float GetCriticalHitRate(MapData map)
|
public float GetCriticalHitRate(MapData map)
|
||||||
{
|
{
|
||||||
var criticalHitRate = 0f;
|
var criticalHitRate = 0f;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills) criticalHitRate += skill.GetCriticalHitRate(this, map);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
criticalHitRate += skill.GetCriticalHitRate(this, map);
|
|
||||||
}
|
|
||||||
return criticalHitRate;
|
return criticalHitRate;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -831,10 +796,7 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
ret += skill.GetOfficerHealth();
|
ret += skill.GetOfficerHealth();
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -842,20 +804,14 @@ namespace RuntimeData
|
|||||||
public bool IsOfficer()
|
public bool IsOfficer()
|
||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsOfficer()) return true;
|
if (skill.IsOfficer()) return true;
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsPrepareOfficer()
|
public bool IsPrepareOfficer()
|
||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsPrepareOfficer()) return true;
|
if (skill.IsPrepareOfficer()) return true;
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -863,10 +819,7 @@ namespace RuntimeData
|
|||||||
public bool IsCanBeOfficer()
|
public bool IsCanBeOfficer()
|
||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
if (skill.IsCanBeOfficer()) return true;
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsCanBeOfficer()) return true;
|
|
||||||
}
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -875,7 +828,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsCanMoveGiantNearbyGrid(this, map)) return true;
|
if (skill.IsCanMoveGiantNearbyGrid(this, map)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -900,18 +852,15 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsCanMoveToNoUnitSelfCity(this, map)) return true;
|
if (skill.IsCanMoveToNoUnitSelfCity(this, map)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 是否可以死亡
|
// 是否可以死亡
|
||||||
public bool CanBeKilled(MapData map)
|
public bool CanBeKilled(MapData map)
|
||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (!skill.IsCanBeKill(this, map)) return false;
|
if (!skill.IsCanBeKill(this, map)) return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -922,7 +871,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsCanBeDamaged(this, map, dmg)) return true;
|
if (skill.IsCanBeDamaged(this, map, dmg)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -933,7 +881,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsLimitSelfExp(this, map)) return true;
|
if (skill.IsLimitSelfExp(this, map)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -950,7 +897,6 @@ namespace RuntimeData
|
|||||||
|
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsCanMoveOnTerrain(this, map, terrainType)) return true;
|
if (skill.IsCanMoveOnTerrain(this, map, terrainType)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -963,7 +909,6 @@ namespace RuntimeData
|
|||||||
return true;
|
return true;
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsCanMoveOnFeature(this, map,featureType)) return true;
|
if (skill.IsCanMoveOnFeature(this, map,featureType)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -974,7 +919,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.CanAttackAll(this, map)) return true;
|
if (skill.CanAttackAll(this, map)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -985,7 +929,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsLimitSelfAttack(this, map)) return true;
|
if (skill.IsLimitSelfAttack(this, map)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -996,7 +939,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsCanAttackTargetGrid(map,this,target)) return true;
|
if (skill.IsCanAttackTargetGrid(map,this,target)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -1007,7 +949,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsCanAttackAlly()) return true;
|
if (skill.IsCanAttackAlly()) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -1018,7 +959,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (!skill.IsCanAttackTargetAlly(map,this,target)) return false;
|
if (!skill.IsCanAttackTargetAlly(map,this,target)) return false;
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@ -1029,7 +969,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsLimitSelfCounterAttack(this, map)) return true;
|
if (skill.IsLimitSelfCounterAttack(this, map)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -1040,7 +979,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsLimitTargetCounterAttack(this, map)) return true;
|
if (skill.IsLimitTargetCounterAttack(this, map)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -1050,7 +988,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsCanTransport()) return true;
|
if (skill.IsCanTransport()) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -1060,11 +997,7 @@ namespace RuntimeData
|
|||||||
public void OnMove(MapData map, GridData target, MoveType moveType, List<Vector2Int> path = null)
|
public void OnMove(MapData map, GridData target, MoveType moveType, List<Vector2Int> path = null)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy) skill.OnMove(this, target, map,moveType, path);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.OnMove(this, target, map,moveType, path);
|
|
||||||
}
|
|
||||||
//赋予格子特殊效果
|
//赋予格子特殊效果
|
||||||
if(target.HasSpType(GridSpType.RemiliaGrid) && target.Unit(map,out var unit) && unit.Player(map,out var player) && player.PlayerCivId == 0)
|
if(target.HasSpType(GridSpType.RemiliaGrid) && target.Unit(map,out var unit) && unit.Player(map,out var player) && player.PlayerCivId == 0)
|
||||||
AddSkill_Legacy(SkillType.ScarletMistRealTimeVampire, map,true,-1,false,-1,false,SpecialAddSkillType.Force,0);
|
AddSkill_Legacy(SkillType.ScarletMistRealTimeVampire, map,true,-1,false,-1,false,SpecialAddSkillType.Force,0);
|
||||||
@ -1077,22 +1010,14 @@ namespace RuntimeData
|
|||||||
public void BeforeDamagedSupportStage(MapData map, SettlementInfo info)
|
public void BeforeDamagedSupportStage(MapData map, SettlementInfo info)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy) skill.BeforeDamagedSupportStage(map, info);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.BeforeDamagedSupportStage(map, info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 伤害结算前
|
// 伤害结算前
|
||||||
public void BeforeDamagedTransformStage(MapData map, SettlementInfo info)
|
public void BeforeDamagedTransformStage(MapData map, SettlementInfo info)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy) skill.BeforeDamagedTransformStage(map, info);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.BeforeDamagedTransformStage(map, info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对他人攻击前
|
// 对他人攻击前
|
||||||
@ -1102,7 +1027,6 @@ namespace RuntimeData
|
|||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.BeforeActiveAttackOther(mapData, origin, target, out var tmpAddDmg);
|
skill.BeforeActiveAttackOther(mapData, origin, target, out var tmpAddDmg);
|
||||||
addDmg += tmpAddDmg;
|
addDmg += tmpAddDmg;
|
||||||
}
|
}
|
||||||
@ -1112,77 +1036,49 @@ namespace RuntimeData
|
|||||||
public void AfterActiveAttackOther(MapData mapData, UnitData origin, UnitData target)
|
public void AfterActiveAttackOther(MapData mapData, UnitData origin, UnitData target)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy) skill.AfterActiveAttackOther(mapData, origin, target);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.AfterActiveAttackOther(mapData, origin, target);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 受他人攻击后
|
// 受他人攻击后
|
||||||
public void AfterActiveAttacked(MapData mapData, UnitData origin, UnitData target)
|
public void AfterActiveAttacked(MapData mapData, UnitData origin, UnitData target)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy) skill.AfterActiveAttacked(mapData, origin, target);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.AfterActiveAttacked(mapData, origin, target);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对他人伤害结算前
|
// 对他人伤害结算前
|
||||||
public void BeforeDamageOther(MapData map, SettlementInfo info)
|
public void BeforeDamageOther(MapData map, SettlementInfo info)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy) skill.BeforeDamageOther(map, info);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.BeforeDamageOther(map, info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 伤害结算时
|
// 伤害结算时
|
||||||
public void OnDamaged(MapData mapData, SettlementInfo info)
|
public void OnDamaged(MapData mapData, SettlementInfo info)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy) skill.OnDamaged(mapData, info);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.OnDamaged(mapData, info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对他人伤害结算时
|
// 对他人伤害结算时
|
||||||
public void OnDamageOther(MapData mapData, SettlementInfo info)
|
public void OnDamageOther(MapData mapData, SettlementInfo info)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy) skill.OnDamageOther(mapData, info);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.OnDamageOther(mapData, info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对他人伤害结算后
|
// 对他人伤害结算后
|
||||||
public void AfterDamageOther(MapData mapData, SettlementInfo info)
|
public void AfterDamageOther(MapData mapData, SettlementInfo info)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy) skill.AfterDamageOther(mapData, info);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.AfterDamageOther(mapData, info);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 对他人治疗结算时
|
// 对他人治疗结算时
|
||||||
public void OnHealOther(MapData mapData, UnitData target,HealType healType)
|
public void OnHealOther(MapData mapData, UnitData target,HealType healType)
|
||||||
{
|
{
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy) skill.OnHealOther(mapData,this,target, healType);
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.OnHealOther(mapData,this,target, healType);
|
|
||||||
}
|
|
||||||
//HeroTask(mapData)?.OnDamageOther(mapData, info);
|
//HeroTask(mapData)?.OnDamageOther(mapData, info);
|
||||||
//for (int i = Skills.Count - 1; i >= 0; i--) Skills[i].OnHealOther(mapData, info);
|
//for (int i = Skills.Count - 1; i >= 0; i--) Skills[i].OnHealOther(mapData, info);
|
||||||
//HeroTask(mapData)?.OnDamageOther(mapData, info);
|
//HeroTask(mapData)?.OnDamageOther(mapData, info);
|
||||||
@ -1194,11 +1090,8 @@ namespace RuntimeData
|
|||||||
|
|
||||||
var copy = new List<SkillBase>(Skills);
|
var copy = new List<SkillBase>(Skills);
|
||||||
float ret = 0f;
|
float ret = 0f;
|
||||||
foreach (var skill in copy)
|
foreach (var skill in copy)
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
ret = Mathf.Max(ret,skill.GetGridMoveFloor(mapData,originUnit,targetGrid));
|
ret = Mathf.Max(ret,skill.GetGridMoveFloor(mapData,originUnit,targetGrid));
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1213,11 +1106,8 @@ namespace RuntimeData
|
|||||||
public int GetKillCount()
|
public int GetKillCount()
|
||||||
{
|
{
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
foreach (var skill in Skills)
|
foreach(var skill in Skills)
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
ret += skill.GetKillCount();
|
ret += skill.GetKillCount();
|
||||||
}
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1235,7 +1125,6 @@ namespace RuntimeData
|
|||||||
|
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsTreatAsHero(map, this,unit)) return true;
|
if (skill.IsTreatAsHero(map, this,unit)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -1246,7 +1135,6 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
{
|
||||||
if (IsFrozen()) continue;
|
|
||||||
if (skill.IsLimitMoveToSelfTerrain(this, map)) return true;
|
if (skill.IsLimitMoveToSelfTerrain(this, map)) return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
@ -1273,10 +1161,7 @@ namespace RuntimeData
|
|||||||
{
|
{
|
||||||
SetFullAPCPMP();
|
SetFullAPCPMP();
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.OnRefresh();
|
skill.OnRefresh();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int AddHealth(int hp)
|
public int AddHealth(int hp)
|
||||||
@ -1289,20 +1174,7 @@ namespace RuntimeData
|
|||||||
public void SetOfficer()
|
public void SetOfficer()
|
||||||
{
|
{
|
||||||
foreach (var skill in Skills)
|
foreach (var skill in Skills)
|
||||||
{
|
|
||||||
if (IsFrozen()) continue;
|
|
||||||
skill.SetOfficer();
|
skill.SetOfficer();
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool IsFrozen()
|
|
||||||
{
|
|
||||||
foreach (var skill in Skills)
|
|
||||||
{
|
|
||||||
if (skill.IsAllSkillBan()) return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -82,7 +82,6 @@ namespace Logic.Achievement
|
|||||||
public abstract bool CheckCondition(AchievementItem item, MapData map);
|
public abstract bool CheckCondition(AchievementItem item, MapData map);
|
||||||
public abstract void GetProgress(out int current, out int target);
|
public abstract void GetProgress(out int current, out int target);
|
||||||
public abstract bool CheckChanged(AchievementConditionBase condition);
|
public abstract bool CheckChanged(AchievementConditionBase condition);
|
||||||
public abstract void CopyChange(AchievementConditionBase condition);
|
|
||||||
|
|
||||||
// 用于记录回退,所以期望一定是返回 false 从而回退成就,所以默认返回true
|
// 用于记录回退,所以期望一定是返回 false 从而回退成就,所以默认返回true
|
||||||
public virtual bool ReCheckCondition()
|
public virtual bool ReCheckCondition()
|
||||||
@ -175,15 +174,6 @@ namespace Logic.Achievement
|
|||||||
target = TargetCount;
|
target = TargetCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CopyChange(AchievementConditionBase condition)
|
|
||||||
{
|
|
||||||
var cond = condition as TrainGiantCondition;
|
|
||||||
if (cond == null) return;
|
|
||||||
if (TargetGiant != cond.TargetGiant) return;
|
|
||||||
|
|
||||||
TrainCount += cond.TrainCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool ReCheckCondition()
|
public override bool ReCheckCondition()
|
||||||
{
|
{
|
||||||
return TrainCount >= TargetCount;
|
return TrainCount >= TargetCount;
|
||||||
@ -254,15 +244,6 @@ namespace Logic.Achievement
|
|||||||
target = TargetCount;
|
target = TargetCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CopyChange(AchievementConditionBase condition)
|
|
||||||
{
|
|
||||||
var cond = condition as BuildWonderConditionCondition;
|
|
||||||
if (cond == null) return;
|
|
||||||
if (Wonder != cond.Wonder) return;
|
|
||||||
|
|
||||||
BuildCount += cond.BuildCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CheckChanged(AchievementConditionBase condition)
|
public override bool CheckChanged(AchievementConditionBase condition)
|
||||||
{
|
{
|
||||||
var cond = condition as BuildWonderConditionCondition;
|
var cond = condition as BuildWonderConditionCondition;
|
||||||
@ -320,13 +301,6 @@ namespace Logic.Achievement
|
|||||||
target = 1;
|
target = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CopyChange(AchievementConditionBase condition)
|
|
||||||
{
|
|
||||||
var cond = condition as WonderInCityConditionCondition;
|
|
||||||
if (cond == null) return;
|
|
||||||
if (Wonder != cond.Wonder) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CheckChanged(AchievementConditionBase condition)
|
public override bool CheckChanged(AchievementConditionBase condition)
|
||||||
{
|
{
|
||||||
var cond = condition as WonderInCityConditionCondition;
|
var cond = condition as WonderInCityConditionCondition;
|
||||||
@ -411,13 +385,6 @@ namespace Logic.Achievement
|
|||||||
target = TargetTurns;
|
target = TargetTurns;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CopyChange(AchievementConditionBase condition)
|
|
||||||
{
|
|
||||||
var cond = condition as UnitOnWonderConditionCondition;
|
|
||||||
if (cond == null) return;
|
|
||||||
if (Wonder != cond.Wonder) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CheckChanged(AchievementConditionBase condition)
|
public override bool CheckChanged(AchievementConditionBase condition)
|
||||||
{
|
{
|
||||||
var cond = condition as UnitOnWonderConditionCondition;
|
var cond = condition as UnitOnWonderConditionCondition;
|
||||||
@ -500,12 +467,6 @@ namespace Logic.Achievement
|
|||||||
target = TargetCount;
|
target = TargetCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CopyChange(AchievementConditionBase condition)
|
|
||||||
{
|
|
||||||
var cond = condition as AroundBuildingsConditionCondition;
|
|
||||||
if (cond == null) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CheckChanged(AchievementConditionBase condition)
|
public override bool CheckChanged(AchievementConditionBase condition)
|
||||||
{
|
{
|
||||||
var cond = condition as AroundBuildingsConditionCondition;
|
var cond = condition as AroundBuildingsConditionCondition;
|
||||||
@ -583,12 +544,6 @@ namespace Logic.Achievement
|
|||||||
target = TargetCount;
|
target = TargetCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CopyChange(AchievementConditionBase condition)
|
|
||||||
{
|
|
||||||
var cond = condition as AroundWondersConditionCondition;
|
|
||||||
if (cond == null) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CheckChanged(AchievementConditionBase condition)
|
public override bool CheckChanged(AchievementConditionBase condition)
|
||||||
{
|
{
|
||||||
var cond = condition as AroundWondersConditionCondition;
|
var cond = condition as AroundWondersConditionCondition;
|
||||||
@ -667,12 +622,6 @@ namespace Logic.Achievement
|
|||||||
target = TargetCount;
|
target = TargetCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CopyChange(AchievementConditionBase condition)
|
|
||||||
{
|
|
||||||
var cond = condition as AroundEnemyUnitsConditionCondition;
|
|
||||||
if (cond == null) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CheckChanged(AchievementConditionBase condition)
|
public override bool CheckChanged(AchievementConditionBase condition)
|
||||||
{
|
{
|
||||||
var cond = condition as AroundEnemyUnitsConditionCondition;
|
var cond = condition as AroundEnemyUnitsConditionCondition;
|
||||||
@ -750,12 +699,6 @@ namespace Logic.Achievement
|
|||||||
target = TargetCount;
|
target = TargetCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CopyChange(AchievementConditionBase condition)
|
|
||||||
{
|
|
||||||
var cond = condition as AroundSelfUnitsConditionCondition;
|
|
||||||
if (cond == null) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CheckChanged(AchievementConditionBase condition)
|
public override bool CheckChanged(AchievementConditionBase condition)
|
||||||
{
|
{
|
||||||
var cond = condition as AroundSelfUnitsConditionCondition;
|
var cond = condition as AroundSelfUnitsConditionCondition;
|
||||||
@ -831,12 +774,6 @@ namespace Logic.Achievement
|
|||||||
target = TargetCount;
|
target = TargetCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void CopyChange(AchievementConditionBase condition)
|
|
||||||
{
|
|
||||||
var cond = condition as AroundSelfUnitsConditionCondition;
|
|
||||||
if (cond == null) return;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool CheckChanged(AchievementConditionBase condition)
|
public override bool CheckChanged(AchievementConditionBase condition)
|
||||||
{
|
{
|
||||||
var cond = condition as AroundCityGridsConditionCondition;
|
var cond = condition as AroundCityGridsConditionCondition;
|
||||||
|
|||||||
@ -11,7 +11,6 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using Logic.Achievement;
|
using Logic.Achievement;
|
||||||
using Logic.CrashSight;
|
using Logic.CrashSight;
|
||||||
using TH1_Logic.Config;
|
|
||||||
using TH1_Logic.Tools;
|
using TH1_Logic.Tools;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -41,43 +40,11 @@ namespace RuntimeData
|
|||||||
public void LoadAchievement()
|
public void LoadAchievement()
|
||||||
{
|
{
|
||||||
var asset = Resources.Load<AchievementAsset>("Export/Achievement");
|
var asset = Resources.Load<AchievementAsset>("Export/Achievement");
|
||||||
string path = Application.persistentDataPath + "/../Config/achievement.json";
|
string path = Application.persistentDataPath + "/achievement.json";
|
||||||
string backupPath = path + ".bak";
|
string backupPath = path + ".bak";
|
||||||
|
|
||||||
// 临时代码,如果找不到新路径下的成就存档,就从旧的存档里进行恢复操作,默认读最近五个档
|
// 尝试读取主文件
|
||||||
if (!File.Exists(path))
|
Achievement = TryReadAchievementData(path);
|
||||||
{
|
|
||||||
Achievement = asset.Data;
|
|
||||||
Achievement.ClearAchievementFinishedInfo();
|
|
||||||
|
|
||||||
var achievements = new List<AchievementData>();
|
|
||||||
foreach (var version in ConfigManager.Instance.VersionCfg.Versions)
|
|
||||||
{
|
|
||||||
var oldPath = Application.persistentDataPath + $"/../TOHOTOPIA Demo v{version.Version}/achievement.json";
|
|
||||||
achievements.Add(TryReadAchievementData(oldPath));
|
|
||||||
oldPath = Application.persistentDataPath + $"/../TOHOTOPIA Demo v{version.WindowsVersion}/achievement.json";
|
|
||||||
achievements.Add(TryReadAchievementData(oldPath));
|
|
||||||
oldPath = Application.persistentDataPath + $"/../TOHOTOPIA Demo v{version.OldFullVersion}/achievement.json";
|
|
||||||
achievements.Add(TryReadAchievementData(oldPath));
|
|
||||||
oldPath = Application.persistentDataPath + $"/../TOHOTOPIA Demo v{version.OldWindowsFullVersion}/achievement.json";
|
|
||||||
achievements.Add(TryReadAchievementData(oldPath));
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var item in Achievement.AchievementList)
|
|
||||||
{
|
|
||||||
foreach (var old in achievements)
|
|
||||||
{
|
|
||||||
if (old == null) continue;
|
|
||||||
var target = old.GetAchievementItem(item.BigID, item.SmallID, item.InternalID);
|
|
||||||
item.CopyChange(target);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 尝试读取主文件
|
|
||||||
Achievement = TryReadAchievementData(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 主文件损坏,尝试从备份恢复
|
// 主文件损坏,尝试从备份恢复
|
||||||
if (Achievement == null && File.Exists(backupPath))
|
if (Achievement == null && File.Exists(backupPath))
|
||||||
@ -176,7 +143,7 @@ namespace RuntimeData
|
|||||||
if (Achievement == null) return;
|
if (Achievement == null) return;
|
||||||
string json = JsonUtility.ToJson(Achievement);
|
string json = JsonUtility.ToJson(Achievement);
|
||||||
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(json);
|
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(json);
|
||||||
FileTools.SafeWriteFile(Application.persistentDataPath + "/../Config/achievement.json", bytes);
|
FileTools.SafeWriteFile(Application.persistentDataPath + "/achievement.json", bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void BindMapData(MapData mapData)
|
public void BindMapData(MapData mapData)
|
||||||
|
|||||||
@ -163,17 +163,6 @@ namespace Logic.Achievement
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CopyChange(AchievementItem target)
|
|
||||||
{
|
|
||||||
if (target == null) return;
|
|
||||||
if (target.Conditions.Count != Conditions.Count) return;
|
|
||||||
for (int i = 0; i < Conditions.Count; i++)
|
|
||||||
{
|
|
||||||
Conditions[i].CopyChange(target.Conditions[i]);
|
|
||||||
}
|
|
||||||
if (target.IsFinished) IsFinished = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//-------------- 序列化相关 -------------------//
|
//-------------- 序列化相关 -------------------//
|
||||||
// 辅助序列化字段
|
// 辅助序列化字段
|
||||||
|
|||||||
@ -42,7 +42,7 @@ namespace TH1_Logic.Config
|
|||||||
{
|
{
|
||||||
if (Config == null)
|
if (Config == null)
|
||||||
{
|
{
|
||||||
string path = Application.persistentDataPath + "/../Config/game_cfg.json";
|
string path = Application.persistentDataPath + "/game_cfg.json";
|
||||||
string backupPath = path + ".bak";
|
string backupPath = path + ".bak";
|
||||||
|
|
||||||
// 尝试读取主文件
|
// 尝试读取主文件
|
||||||
@ -167,7 +167,7 @@ namespace TH1_Logic.Config
|
|||||||
{
|
{
|
||||||
string json = JsonUtility.ToJson(Config);
|
string json = JsonUtility.ToJson(Config);
|
||||||
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(json);
|
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(json);
|
||||||
string path = Application.persistentDataPath + "/../Config/game_cfg.json";
|
string path = Application.persistentDataPath + "/game_cfg.json";
|
||||||
FileTools.SafeWriteFile(path, bytes);
|
FileTools.SafeWriteFile(path, bytes);
|
||||||
|
|
||||||
Config.MarkSaved();
|
Config.MarkSaved();
|
||||||
|
|||||||
@ -19,16 +19,20 @@ namespace Logic.Config
|
|||||||
public uint CurVersionId; // 当前版本ID
|
public uint CurVersionId; // 当前版本ID
|
||||||
public List<VersionInfo> Versions = new List<VersionInfo>();
|
public List<VersionInfo> Versions = new List<VersionInfo>();
|
||||||
public VersionInfo CurVersionInfo => GetVersionInfo(CurVersionId);
|
public VersionInfo CurVersionInfo => GetVersionInfo(CurVersionId);
|
||||||
|
|
||||||
|
public uint CurVersionMajorId => CurVersionId / 10000;
|
||||||
|
public uint CurVersionMinorId => CurVersionId % 10000 / 100;
|
||||||
|
public uint CurVersionPatchId => CurVersionId % 100;
|
||||||
|
|
||||||
|
|
||||||
public void CreateNewVersion(uint major, uint minor, uint patch, uint fourth)
|
|
||||||
|
public void CreateNewVersion(uint major, uint minor, uint patch)
|
||||||
{
|
{
|
||||||
var newVersion = new VersionInfo
|
var newVersion = new VersionInfo
|
||||||
{
|
{
|
||||||
MajorVersion = major,
|
MajorVersion = major,
|
||||||
MinorVersion = minor,
|
MinorVersion = minor,
|
||||||
PatchVersion = patch,
|
PatchVersion = patch
|
||||||
FourthVersion = fourth,
|
|
||||||
};
|
};
|
||||||
Versions.Add(newVersion);
|
Versions.Add(newVersion);
|
||||||
}
|
}
|
||||||
@ -40,7 +44,7 @@ namespace Logic.Config
|
|||||||
{
|
{
|
||||||
if (version.VersionId == versionId) return version;
|
if (version.VersionId == versionId) return version;
|
||||||
}
|
}
|
||||||
return Versions[0];
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -54,24 +58,8 @@ namespace Logic.Config
|
|||||||
public uint PatchVersion; // 补丁号
|
public uint PatchVersion; // 补丁号
|
||||||
[MultilingualField]
|
[MultilingualField]
|
||||||
public string Description; // 版本描述
|
public string Description; // 版本描述
|
||||||
public uint FourthVersion; // 第四版本号,预留字段
|
|
||||||
|
|
||||||
|
public uint VersionId => MajorVersion * 10000 + MinorVersion * 100 + PatchVersion; // 版本ID,格式为 Major.Minor.Patch
|
||||||
// 版本ID,格式为 Major.Minor.Patch.Fourth
|
public string FullVersion => $"{MajorVersion}.{MinorVersion}.{PatchVersion}";
|
||||||
public uint VersionId => MajorVersion * 1000000 + MinorVersion * 10000 + PatchVersion * 100 + FourthVersion;
|
|
||||||
public string FullVersion => $"{MajorVersion}.{MinorVersion}.{PatchVersion}{GetFourthVersionLetter()}";
|
|
||||||
public string WindowsFullVersion => $"{MajorVersion}_{MinorVersion}_{PatchVersion}{GetFourthVersionLetter()}";
|
|
||||||
public string Version => $"{MajorVersion}.{MinorVersion}.{PatchVersion}";
|
|
||||||
public string WindowsVersion => $"{MajorVersion}_{MinorVersion}_{PatchVersion}";
|
|
||||||
public string OldFullVersion => $"1.{MinorVersion}.{PatchVersion}";
|
|
||||||
public string OldWindowsFullVersion => $"1_{MinorVersion}_{PatchVersion}";
|
|
||||||
|
|
||||||
|
|
||||||
// 将 FourthVersion 转成小写英文字母, 0 对应 a
|
|
||||||
public string GetFourthVersionLetter()
|
|
||||||
{
|
|
||||||
return ((char)('a' + FourthVersion)).ToString();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -113,7 +113,7 @@ namespace Logic.Editor
|
|||||||
}*/
|
}*/
|
||||||
if (InspectorUtils.InspectorButtonWithTextWidth("清空成就完成情况"))
|
if (InspectorUtils.InspectorButtonWithTextWidth("清空成就完成情况"))
|
||||||
{
|
{
|
||||||
string path = Application.persistentDataPath + "/../Config/achievement.json";
|
string path = Application.persistentDataPath + "/achievement.json";
|
||||||
if (File.Exists(path))File.Delete(path);
|
if (File.Exists(path))File.Delete(path);
|
||||||
}
|
}
|
||||||
if (_bigID != 0 && _smallID != 0)
|
if (_bigID != 0 && _smallID != 0)
|
||||||
|
|||||||
@ -29,7 +29,6 @@ namespace Logic.Editor
|
|||||||
private uint _major;
|
private uint _major;
|
||||||
private uint _minor;
|
private uint _minor;
|
||||||
private uint _patch;
|
private uint _patch;
|
||||||
private uint _fourth;
|
|
||||||
private int _index;
|
private int _index;
|
||||||
// 背景
|
// 背景
|
||||||
private GUIStyle _redBoxStyle;
|
private GUIStyle _redBoxStyle;
|
||||||
@ -97,20 +96,20 @@ namespace Logic.Editor
|
|||||||
EditorGUILayout.BeginHorizontal();
|
EditorGUILayout.BeginHorizontal();
|
||||||
InspectorUtils.InspectorTextWidthRich($"<b>版本号: </b>");
|
InspectorUtils.InspectorTextWidthRich($"<b>版本号: </b>");
|
||||||
_major = (uint)EditorGUILayout.IntField((int)_major, GUILayout.Width(20));
|
_major = (uint)EditorGUILayout.IntField((int)_major, GUILayout.Width(20));
|
||||||
|
//_major = (uint)Mathf.Max(0, _major);
|
||||||
_minor = (uint)EditorGUILayout.IntField((int)_minor, GUILayout.Width(20));
|
_minor = (uint)EditorGUILayout.IntField((int)_minor, GUILayout.Width(20));
|
||||||
_patch = (uint)EditorGUILayout.IntField((int)_patch, GUILayout.Width(20));
|
_patch = (uint)EditorGUILayout.IntField((int)_patch, GUILayout.Width(20));
|
||||||
_fourth = (uint)EditorGUILayout.IntField((int)_fourth, GUILayout.Width(20));
|
var versionId = _major * 10000 + _minor * 100 + _patch;
|
||||||
var versionId = _major * 1000000 + _minor * 10000 + _patch * 100 + _fourth;
|
var desc = $"{_major}.{_minor}.{_patch}";
|
||||||
var desc = $"{_major}.{_minor}.{_patch}.{_fourth}";
|
|
||||||
if (_asset.GetVersionInfo(versionId) != null)
|
if (_asset.GetVersionInfo(versionId) != null)
|
||||||
{
|
{
|
||||||
InspectorUtils.InspectorTextWidthRich($"<b>已存在版本号{_major}.{_minor}.{_patch}.{_fourth}</b>");
|
InspectorUtils.InspectorTextWidthRich($"<b>已存在版本号{_major}.{_minor}.{_patch}</b>");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (InspectorUtils.InspectorButtonWithTextWidth($"创建版本号{desc}"))
|
if (InspectorUtils.InspectorButtonWithTextWidth($"创建版本号{desc}"))
|
||||||
{
|
{
|
||||||
_asset.CreateNewVersion(_major, _minor, _patch, _fourth);
|
_asset.CreateNewVersion(_major, _minor, _patch);
|
||||||
_asset.Versions = _asset.Versions.OrderByDescending(v => v.VersionId).ToList();
|
_asset.Versions = _asset.Versions.OrderByDescending(v => v.VersionId).ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -244,27 +244,20 @@ namespace Logic.Editor
|
|||||||
foreach (var filePath in datFiles)
|
foreach (var filePath in datFiles)
|
||||||
{
|
{
|
||||||
string fileName = Path.GetFileName(filePath);
|
string fileName = Path.GetFileName(filePath);
|
||||||
try
|
|
||||||
|
byte[] data = File.ReadAllBytes(filePath);
|
||||||
|
Debug.Log($"读取文件: {fileName}, 大小: {data.Length} bytes");
|
||||||
|
|
||||||
|
var ossData = MemoryPackSerializer.Deserialize<OssData>(data);
|
||||||
|
|
||||||
|
if (ossData != null)
|
||||||
{
|
{
|
||||||
byte[] data = File.ReadAllBytes(filePath);
|
Debug.Log($"<color=green>[成功] {fileName} 反序列化成功</color>");
|
||||||
Debug.Log($"读取文件: {fileName}, 大小: {data.Length} bytes");
|
successCount++;
|
||||||
|
|
||||||
var ossData = MemoryPackSerializer.Deserialize<OssData>(data);
|
|
||||||
|
|
||||||
if (ossData != null)
|
|
||||||
{
|
|
||||||
Debug.Log($"<color=green>[成功] {fileName} 反序列化成功</color>");
|
|
||||||
successCount++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Debug.LogError($"<color=red>[失败] {fileName} 反序列化结果为 null</color>");
|
|
||||||
failCount++;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
else
|
||||||
{
|
{
|
||||||
Debug.LogError($"<color=red>[异常] {fileName} 反序列化失败: {ex.Message}</color>");
|
Debug.LogError($"<color=red>[失败] {fileName} 反序列化结果为 null</color>");
|
||||||
failCount++;
|
failCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -96,7 +96,7 @@ namespace Logic.Editor
|
|||||||
{
|
{
|
||||||
_mapPairs.Clear();
|
_mapPairs.Clear();
|
||||||
|
|
||||||
string directory = Application.persistentDataPath + "/../Config/";
|
string directory = Application.persistentDataPath;
|
||||||
if (!Directory.Exists(directory))
|
if (!Directory.Exists(directory))
|
||||||
{
|
{
|
||||||
Debug.LogWarning($"存档目录不存在: {directory}");
|
Debug.LogWarning($"存档目录不存在: {directory}");
|
||||||
|
|||||||
@ -12,7 +12,6 @@ using System.IO;
|
|||||||
using Logic.AI;
|
using Logic.AI;
|
||||||
using Logic.CrashSight;
|
using Logic.CrashSight;
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
using TH1_Logic.Config;
|
|
||||||
using TH1_Logic.Tools;
|
using TH1_Logic.Tools;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@ -111,47 +110,18 @@ namespace RuntimeData
|
|||||||
RefreshGameRecord();
|
RefreshGameRecord();
|
||||||
_gameRecord.Records.Add(record);
|
_gameRecord.Records.Add(record);
|
||||||
byte[] bytes = MemoryPackSerializer.Serialize(_gameRecord);
|
byte[] bytes = MemoryPackSerializer.Serialize(_gameRecord);
|
||||||
FileTools.SafeWriteFile(Application.persistentDataPath + "/../Config/game_record.dat", bytes);
|
FileTools.SafeWriteFile(Application.persistentDataPath + "/game_record.dat", bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void RefreshGameRecord()
|
public void RefreshGameRecord()
|
||||||
{
|
{
|
||||||
if (_gameRecord != null) return;
|
if (_gameRecord != null) return;
|
||||||
|
|
||||||
string path = Application.persistentDataPath + "/../Config/game_record.dat";
|
string path = Application.persistentDataPath + "/game_record.dat";
|
||||||
string backupPath = path + ".bak";
|
string backupPath = path + ".bak";
|
||||||
|
|
||||||
// 临时代码,如果找不到新路径下的成就存档,就从旧的存档里进行恢复操作,默认读最近五个档
|
// 尝试读取主文件
|
||||||
if (!File.Exists(path))
|
_gameRecord = FileTools.TryDeserializeFile<GameRecordData>(path);
|
||||||
{
|
|
||||||
_gameRecord = new GameRecordData();
|
|
||||||
var records = new List<GameRecordData>();
|
|
||||||
foreach (var version in ConfigManager.Instance.VersionCfg.Versions)
|
|
||||||
{
|
|
||||||
var oldPath = Application.persistentDataPath + $"/../TOHOTOPIA Demo v{version.Version}/game_record.dat";
|
|
||||||
records.Add(FileTools.TryDeserializeFile<GameRecordData>(oldPath));
|
|
||||||
oldPath = Application.persistentDataPath + $"/../TOHOTOPIA Demo v{version.WindowsVersion}/game_record.dat";
|
|
||||||
records.Add(FileTools.TryDeserializeFile<GameRecordData>(oldPath));
|
|
||||||
oldPath = Application.persistentDataPath + $"/../TOHOTOPIA Demo v{version.OldFullVersion}/game_record.dat";
|
|
||||||
records.Add(FileTools.TryDeserializeFile<GameRecordData>(oldPath));
|
|
||||||
oldPath = Application.persistentDataPath + $"/../TOHOTOPIA Demo v{version.OldWindowsFullVersion}/game_record.dat";
|
|
||||||
records.Add(FileTools.TryDeserializeFile<GameRecordData>(oldPath));
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach (var record in records)
|
|
||||||
{
|
|
||||||
if (record == null) continue;
|
|
||||||
foreach (var item in record.Records)
|
|
||||||
{
|
|
||||||
_gameRecord.Records.Add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// 尝试读取主文件
|
|
||||||
_gameRecord = FileTools.TryDeserializeFile<GameRecordData>(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
// 主文件损坏,尝试从备份恢复
|
// 主文件损坏,尝试从备份恢复
|
||||||
if (_gameRecord == null && File.Exists(backupPath))
|
if (_gameRecord == null && File.Exists(backupPath))
|
||||||
|
|||||||
@ -70,7 +70,7 @@ namespace Logic
|
|||||||
{
|
{
|
||||||
if (_config != null) return;
|
if (_config != null) return;
|
||||||
|
|
||||||
string path = Application.persistentDataPath + "/../Config/input_config.dat";
|
string path = Application.persistentDataPath + "/input_config.dat";
|
||||||
string backupPath = path + ".bak";
|
string backupPath = path + ".bak";
|
||||||
|
|
||||||
// 尝试读取主文件
|
// 尝试读取主文件
|
||||||
@ -109,7 +109,7 @@ namespace Logic
|
|||||||
{
|
{
|
||||||
if (_config == null) return;
|
if (_config == null) return;
|
||||||
byte[] bytes = MemoryPackSerializer.Serialize(_config);
|
byte[] bytes = MemoryPackSerializer.Serialize(_config);
|
||||||
FileTools.SafeWriteFile(Application.persistentDataPath + "/../Config/input_config.dat", bytes);
|
FileTools.SafeWriteFile(Application.persistentDataPath + "/input_config.dat", bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 每帧调用,返回绑定结果(null表示还在监听中)
|
// 每帧调用,返回绑定结果(null表示还在监听中)
|
||||||
|
|||||||
@ -37,7 +37,6 @@ namespace TH1_Logic.Oss
|
|||||||
{
|
{
|
||||||
steamId = steamId,
|
steamId = steamId,
|
||||||
authTicket = authTicket,
|
authTicket = authTicket,
|
||||||
version = ConfigManager.Instance.VersionCfg.CurVersionInfo.Version,
|
|
||||||
});
|
});
|
||||||
var bodyBytes = Encoding.UTF8.GetBytes(requestBody);
|
var bodyBytes = Encoding.UTF8.GetBytes(requestBody);
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 26eec140673c4347a8122fa599692cc0
|
|
||||||
timeCreated: 1773043793
|
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* @Author: 白哉
|
||||||
|
* @Description: 骨堆攻击技能
|
||||||
|
* @Date: 2026年03月06日
|
||||||
|
* @Modify:
|
||||||
|
*/
|
||||||
|
|
||||||
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Logic.Skill
|
||||||
|
{
|
||||||
|
public partial class BonePileAttackSkill : SkillBase
|
||||||
|
{
|
||||||
|
public BonePileAttackSkill()
|
||||||
|
{
|
||||||
|
IsPermanent = true;
|
||||||
|
TurnsLimit = 0;
|
||||||
|
Score = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override SkillType GetSkillType()
|
||||||
|
{
|
||||||
|
return SkillType.BONEPILEATTACK;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f6ec1803b84b4c938da710c9b7eb5756
|
||||||
|
timeCreated: 1772778294
|
||||||
@ -25,10 +25,8 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.BonePile;
|
return SkillType.BONEPILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: edad0dcfc6d1493cb95a0dc4bdbecbc7
|
|
||||||
timeCreated: 1773043710
|
|
||||||
@ -25,12 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.CanHide;
|
return SkillType.CANHIDE;
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnMove(UnitData self, GridData grid, MapData mapData, MoveType moveType, List<Vector2Int> path = null)
|
|
||||||
{
|
|
||||||
self.AddOrOverrideSkill(SkillType.CanHide, mapData, self.Id);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,28 +21,11 @@ namespace Logic.Skill
|
|||||||
IsPermanent = true;
|
IsPermanent = true;
|
||||||
TurnsLimit = 0;
|
TurnsLimit = 0;
|
||||||
Score = 4;
|
Score = 4;
|
||||||
IsLevelSkill = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.CorpseBuff;
|
return SkillType.CORPSEBUFF;
|
||||||
}
|
|
||||||
|
|
||||||
public override int GetExtraMoveRange(MapData mapData, UnitData self)
|
|
||||||
{
|
|
||||||
return _level;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnDamaged(MapData mapData, SettlementInfo info)
|
|
||||||
{
|
|
||||||
if (info.DamageTarget == null) return;
|
|
||||||
if (info.DamageType == DamageType.ActiveAttack || info.DamageType == DamageType.CounterAttack ||
|
|
||||||
info.DamageType == DamageType.Splash)
|
|
||||||
{
|
|
||||||
if (_level >= 2) info.DamageValue = 0;
|
|
||||||
ReduceLevel(mapData, info.DamageTarget, 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,18 +1,22 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: 白哉
|
* @Author: 白哉
|
||||||
* @Description: 燐火焰技能
|
* @Description: 尸体燃烧技能
|
||||||
* @Date: 2026年03月09日
|
* @Date: 2026年03月06日
|
||||||
* @Modify:
|
* @Modify:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using RuntimeData;
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
public partial class RinFireSkill : SkillBase
|
public partial class CorpseBurnSkill : SkillBase
|
||||||
{
|
{
|
||||||
public RinFireSkill()
|
public CorpseBurnSkill()
|
||||||
{
|
{
|
||||||
IsPermanent = true;
|
IsPermanent = true;
|
||||||
TurnsLimit = 0;
|
TurnsLimit = 0;
|
||||||
@ -21,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.RinFire;
|
return SkillType.CORPSEBURN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1057017c9de840f798ceda726bcd2f22
|
||||||
|
timeCreated: 1772778289
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* @Author: 白哉
|
||||||
|
* @Description: 尸体收集技能
|
||||||
|
* @Date: 2026年03月06日
|
||||||
|
* @Modify:
|
||||||
|
*/
|
||||||
|
|
||||||
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Logic.Skill
|
||||||
|
{
|
||||||
|
public partial class CorpseCollectSkill : SkillBase
|
||||||
|
{
|
||||||
|
public CorpseCollectSkill()
|
||||||
|
{
|
||||||
|
IsPermanent = true;
|
||||||
|
TurnsLimit = 0;
|
||||||
|
Score = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override SkillType GetSkillType()
|
||||||
|
{
|
||||||
|
return SkillType.CORPSECOLLECT;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3f0830937e64478e8214d15b0e57338b
|
||||||
|
timeCreated: 1772778279
|
||||||
@ -1,18 +1,22 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: 白哉
|
* @Author: 白哉
|
||||||
* @Description: 格子辐射技能
|
* @Description: 尸体效果技能
|
||||||
* @Date: 2026年03月09日
|
* @Date: 2026年03月06日
|
||||||
* @Modify:
|
* @Modify:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using RuntimeData;
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
public partial class GridRadiationSkill : SkillBase
|
public partial class CorpseEffectSkill : SkillBase
|
||||||
{
|
{
|
||||||
public GridRadiationSkill()
|
public CorpseEffectSkill()
|
||||||
{
|
{
|
||||||
IsPermanent = true;
|
IsPermanent = true;
|
||||||
TurnsLimit = 0;
|
TurnsLimit = 0;
|
||||||
@ -21,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.GridRadiation;
|
return SkillType.CORPSEEFFECT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 104b286d300d4c839615dc1946bf4864
|
||||||
|
timeCreated: 1772778283
|
||||||
@ -1,18 +1,22 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: 白哉
|
* @Author: 白哉
|
||||||
* @Description: 骨堆献祭技能
|
* @Description: 尸体火焰技能
|
||||||
* @Date: 2026年03月09日
|
* @Date: 2026年03月06日
|
||||||
* @Modify:
|
* @Modify:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using RuntimeData;
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
public partial class BoneSacrificeSkill : SkillBase
|
public partial class CorpseFireSkill : SkillBase
|
||||||
{
|
{
|
||||||
public BoneSacrificeSkill()
|
public CorpseFireSkill()
|
||||||
{
|
{
|
||||||
IsPermanent = true;
|
IsPermanent = true;
|
||||||
TurnsLimit = 0;
|
TurnsLimit = 0;
|
||||||
@ -21,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.BoneSacrifice;
|
return SkillType.CORPSEFIRE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: aa6c9dc589a244aa9be3f2b1b52db166
|
||||||
|
timeCreated: 1772778328
|
||||||
@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: 白哉
|
|
||||||
* @Description: 恐惧制造者技能
|
|
||||||
* @Date: 2026年03月09日
|
|
||||||
* @Modify:
|
|
||||||
*/
|
|
||||||
|
|
||||||
using RuntimeData;
|
|
||||||
using MemoryPack;
|
|
||||||
|
|
||||||
namespace Logic.Skill
|
|
||||||
{
|
|
||||||
public partial class FearMakerSkill : SkillBase
|
|
||||||
{
|
|
||||||
public FearMakerSkill()
|
|
||||||
{
|
|
||||||
IsPermanent = true;
|
|
||||||
TurnsLimit = 0;
|
|
||||||
Score = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
|
||||||
{
|
|
||||||
return SkillType.FearMaker;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnDamageOther(MapData mapData, SettlementInfo info)
|
|
||||||
{
|
|
||||||
if (info.DamageTarget == null || info.DamageOrigin == null) return;
|
|
||||||
if (info.DamageType != DamageType.ActiveAttack && info.DamageType != DamageType.CounterAttack) return;
|
|
||||||
|
|
||||||
info.DamageTarget.AddOrOverrideSkill(SkillType.KomeijiFear, mapData, info.DamageOrigin.Id);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 74ee72e3a37b4be0867b71435856d9cd
|
|
||||||
timeCreated: 1773043718
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: e5dc0734b45d40489601af748c87e97f
|
|
||||||
timeCreated: 1773043763
|
|
||||||
@ -25,12 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.HideState;
|
return SkillType.HIDESTATE;
|
||||||
}
|
|
||||||
|
|
||||||
public override void AfterActiveAttacked(MapData mapData, UnitData origin, UnitData target)
|
|
||||||
{
|
|
||||||
origin.RemoveSkill(SkillType.HideState, mapData);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,52 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: 白哉
|
|
||||||
* @Description: 恋自动移动技能
|
|
||||||
* @Date: 2026年03月09日
|
|
||||||
* @Modify:
|
|
||||||
*/
|
|
||||||
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Logic.Action;
|
|
||||||
using Logic.AI;
|
|
||||||
using RuntimeData;
|
|
||||||
using MemoryPack;
|
|
||||||
|
|
||||||
namespace Logic.Skill
|
|
||||||
{
|
|
||||||
public partial class KoishiAutoMoveSkill : SkillBase
|
|
||||||
{
|
|
||||||
public KoishiAutoMoveSkill()
|
|
||||||
{
|
|
||||||
IsPermanent = true;
|
|
||||||
TurnsLimit = 0;
|
|
||||||
Score = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
|
||||||
{
|
|
||||||
return SkillType.KoishiAutoMove;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnTurnEnd(IdentifierBase self, MapData mapData)
|
|
||||||
{
|
|
||||||
var unit = self as UnitData;
|
|
||||||
mapData.GetPlayerDataByUnitId(self.Id, out var player);
|
|
||||||
if (unit == null || player == null) return;
|
|
||||||
|
|
||||||
var data = new AICalculatorData();
|
|
||||||
data.Map = mapData;
|
|
||||||
data.Player = player;
|
|
||||||
data.TargetParam.MapData = mapData;
|
|
||||||
data.TargetParam.PlayerData = player;
|
|
||||||
data.TargetParam.UnitData = unit;
|
|
||||||
data.TargetParam.OnParamChanged();
|
|
||||||
AIActionGenerator.GeneratorActionIds(data, CommonActionType.UnitMove);
|
|
||||||
if (data.AIActions.Count == 0) return;
|
|
||||||
|
|
||||||
data.TargetParam.RefreshParams();
|
|
||||||
var index = mapData.Net.GetRandom(mapData).Next(0, data.AIActions.Count - 1); // 生成 index
|
|
||||||
data.AIActions[index].ActionLogic.CompleteExecute(data.AIActions[index].Param);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: dee0a882ca5c4c4983156a3f39fbe598
|
|
||||||
timeCreated: 1773043703
|
|
||||||
@ -25,17 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.KoishiAuto;
|
return SkillType.KOISHIAUTO;
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnMove(UnitData self, GridData grid, MapData mapData, MoveType moveType, List<Vector2Int> path = null)
|
|
||||||
{
|
|
||||||
base.OnMove(self, grid, mapData, moveType, path);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void AfterAction()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* @Author: 白哉
|
||||||
|
* @Description: 恋骨堆治愈技能
|
||||||
|
* @Date: 2026年03月06日
|
||||||
|
* @Modify:
|
||||||
|
*/
|
||||||
|
|
||||||
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Logic.Skill
|
||||||
|
{
|
||||||
|
public partial class KoishiBoneHealSkill : SkillBase
|
||||||
|
{
|
||||||
|
public KoishiBoneHealSkill()
|
||||||
|
{
|
||||||
|
IsPermanent = true;
|
||||||
|
TurnsLimit = 0;
|
||||||
|
Score = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override SkillType GetSkillType()
|
||||||
|
{
|
||||||
|
return SkillType.KOISHIBONEHEAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 7ec5bcc5f01348f4a4ed2e13ac8d96da
|
||||||
|
timeCreated: 1772778266
|
||||||
@ -25,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.KoishiDeathFear;
|
return SkillType.KOISHIDEATHFEAR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,18 +1,22 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: 白哉
|
* @Author: 白哉
|
||||||
* @Description: 骨堆攻击增强技能
|
* @Description: 恋自由技能
|
||||||
* @Date: 2026年03月09日
|
* @Date: 2026年03月06日
|
||||||
* @Modify:
|
* @Modify:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using RuntimeData;
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
public partial class BoneAttackUpSkill : SkillBase
|
public partial class KoishiFreeSkill : SkillBase
|
||||||
{
|
{
|
||||||
public BoneAttackUpSkill()
|
public KoishiFreeSkill()
|
||||||
{
|
{
|
||||||
IsPermanent = true;
|
IsPermanent = true;
|
||||||
TurnsLimit = 0;
|
TurnsLimit = 0;
|
||||||
@ -21,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.BoneAttackUp;
|
return SkillType.KOISHIFREE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 810580e3ac0f4cc29741b59a18ff9ac4
|
||||||
|
timeCreated: 1772778275
|
||||||
@ -25,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.KoishiRespawn;
|
return SkillType.KOISHIRESPAWN;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,40 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: 白哉
|
|
||||||
* @Description: 恋不死技能
|
|
||||||
* @Date: 2026年03月09日
|
|
||||||
* @Modify:
|
|
||||||
*/
|
|
||||||
|
|
||||||
using RuntimeData;
|
|
||||||
using MemoryPack;
|
|
||||||
using TH1_Logic.Core;
|
|
||||||
|
|
||||||
namespace Logic.Skill
|
|
||||||
{
|
|
||||||
public partial class KoishiUndeadSkill : SkillBase
|
|
||||||
{
|
|
||||||
public KoishiUndeadSkill()
|
|
||||||
{
|
|
||||||
IsPermanent = true;
|
|
||||||
TurnsLimit = 0;
|
|
||||||
Score = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
|
||||||
{
|
|
||||||
return SkillType.KoishiUndead;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool IsCanBeKill(UnitData self, MapData mapData)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnDamaged(MapData mapData, SettlementInfo info)
|
|
||||||
{
|
|
||||||
if (info.DamageTarget == null || info.DamageTarget.Health > 0) return;
|
|
||||||
Main.UnitLogic.UnitUnnaturalDie(mapData, info.DamageTarget);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a5d31aa0b9a84a41badb88930ad101b4
|
|
||||||
timeCreated: 1773043725
|
|
||||||
@ -27,7 +27,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.KomeijiFear;
|
return SkillType.KOMEIJIFEAR;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override float GetDefenseMultiplicationParam(MapData mapData, UnitData self, UnitData target = null)
|
public override float GetDefenseMultiplicationParam(MapData mapData, UnitData self, UnitData target = null)
|
||||||
@ -63,7 +63,7 @@ namespace Logic.Skill
|
|||||||
if (map.IsLeagueUnitByUnit(self.Id, target.Id)) continue;
|
if (map.IsLeagueUnitByUnit(self.Id, target.Id)) continue;
|
||||||
|
|
||||||
Main.UnitLogic.DamageSettlement(map, self, target, 2, DamageType.Splash);
|
Main.UnitLogic.DamageSettlement(map, self, target, 2, DamageType.Splash);
|
||||||
target.AddOrOverrideSkill(SkillType.KomeijiFear, map, self.Id);
|
target.AddOrOverrideSkill(SkillType.KOMEIJIFEAR, map, self.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (_level == 1)
|
else if (_level == 1)
|
||||||
|
|||||||
@ -50,7 +50,7 @@ namespace Logic.Skill
|
|||||||
RefreshAroundGiant(map, self);
|
RefreshAroundGiant(map, self);
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnAnyUnitDie(MapData map, UnitData self, UnitData dieUnit)
|
public override void OnAnyUnitDie(MapData map, UnitData self)
|
||||||
{
|
{
|
||||||
RefreshAroundGiant(map, self);
|
RefreshAroundGiant(map, self);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,33 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: 白哉
|
|
||||||
* @Description: 燐尸体收集技能
|
|
||||||
* @Date: 2026年03月09日
|
|
||||||
* @Modify:
|
|
||||||
*/
|
|
||||||
|
|
||||||
using RuntimeData;
|
|
||||||
using MemoryPack;
|
|
||||||
|
|
||||||
namespace Logic.Skill
|
|
||||||
{
|
|
||||||
public partial class RinCorpseColletSkill : SkillBase
|
|
||||||
{
|
|
||||||
public RinCorpseColletSkill()
|
|
||||||
{
|
|
||||||
IsPermanent = true;
|
|
||||||
TurnsLimit = 0;
|
|
||||||
Score = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
|
||||||
{
|
|
||||||
return SkillType.RinCorpseCollet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnAnyUnitDie(MapData map, UnitData self, UnitData dieUnit)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 35c966679cdc4a90ad6add26bba6ccf1
|
|
||||||
timeCreated: 1773043735
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 82ba0d7d7a32486db4aa11db62372165
|
|
||||||
timeCreated: 1773043743
|
|
||||||
@ -25,14 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.SatoriBan;
|
return SkillType.SATORIBAN;
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnDamageOther(MapData mapData, SettlementInfo info)
|
|
||||||
{
|
|
||||||
if (info.DamageType != DamageType.ActiveAttack || info.DamageOrigin == null || info.DamageTarget == null) return;
|
|
||||||
|
|
||||||
info.DamageOrigin.AddOrOverrideSkill(SkillType.SkillBan, mapData, info.DamageOrigin.Id);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,7 +26,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.SatoriSee;
|
return SkillType.SATORISEE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void BeforeUnitDamaged(UnitData self, MapData mapData, SettlementInfo info)
|
public override void BeforeUnitDamaged(UnitData self, MapData mapData, SettlementInfo info)
|
||||||
@ -44,7 +44,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
var dis = mapData.GridMap.CalcDistance(selfGrid, targetGrid);
|
var dis = mapData.GridMap.CalcDistance(selfGrid, targetGrid);
|
||||||
if (dis > 2) return;
|
if (dis > 2) return;
|
||||||
info.DamageOrigin.AddOrOverrideSkill(SkillType.KomeijiFear, mapData, self.Id);
|
info.DamageOrigin.AddOrOverrideSkill(SkillType.KOMEIJIFEAR, mapData, self.Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,10 +5,12 @@
|
|||||||
* @Modify:
|
* @Modify:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
using RuntimeData;
|
using RuntimeData;
|
||||||
using Logic.CrashSight;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
@ -23,27 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.SkillBanBoom;
|
return SkillType.SKILLBANBOMB;
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnDamaged(MapData mapData, SettlementInfo info)
|
|
||||||
{
|
|
||||||
if (!info.IsKill || info.DamageTarget == null) return;
|
|
||||||
var grid = info.DamageTarget.Grid(mapData);
|
|
||||||
if (grid == null)
|
|
||||||
{
|
|
||||||
LogSystem.LogError($"Explode Error grid is null");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var arounds = mapData.GridMap.GetAroundGridData(1, 1, grid);
|
|
||||||
foreach (var around in arounds)
|
|
||||||
{
|
|
||||||
if (around == grid) continue;
|
|
||||||
var target = around.Unit(mapData);
|
|
||||||
if (target == null) continue;
|
|
||||||
target.AddOrOverrideSkill(SkillType.SkillBan, mapData, info.DamageTarget.Id);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,19 +18,14 @@ namespace Logic.Skill
|
|||||||
{
|
{
|
||||||
public SkillBanSkill()
|
public SkillBanSkill()
|
||||||
{
|
{
|
||||||
IsPermanent = false;
|
IsPermanent = true;
|
||||||
TurnsLimit = 1;
|
TurnsLimit = 0;
|
||||||
Score = 4;
|
Score = 4;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.SkillBan;
|
return SkillType.SKILLBAN;
|
||||||
}
|
|
||||||
|
|
||||||
public override bool IsAllSkillBan()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,42 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: 白哉
|
|
||||||
* @Description: 不死技能
|
|
||||||
* @Date: 2026年03月09日
|
|
||||||
* @Modify:
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
using RuntimeData;
|
|
||||||
using MemoryPack;
|
|
||||||
using TH1_Logic.Core;
|
|
||||||
|
|
||||||
|
|
||||||
namespace Logic.Skill
|
|
||||||
{
|
|
||||||
public partial class UndeadSkill : SkillBase
|
|
||||||
{
|
|
||||||
public UndeadSkill()
|
|
||||||
{
|
|
||||||
IsPermanent = true;
|
|
||||||
TurnsLimit = 0;
|
|
||||||
Score = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
|
||||||
{
|
|
||||||
return SkillType.Undead;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override bool IsCanBeKill(UnitData self, MapData mapData)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void OnDamaged(MapData mapData, SettlementInfo info)
|
|
||||||
{
|
|
||||||
if (info.DamageTarget == null || info.DamageTarget.Health > 0) return;
|
|
||||||
Main.UnitLogic.UnitUnnaturalDie(mapData, info.DamageTarget);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 16f6a875ce184a35821ee1f354dbbb0b
|
|
||||||
timeCreated: 1773043696
|
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* @Author: 白哉
|
||||||
|
* @Description: 空AOE移动技能
|
||||||
|
* @Date: 2026年03月06日
|
||||||
|
* @Modify:
|
||||||
|
*/
|
||||||
|
|
||||||
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Logic.Skill
|
||||||
|
{
|
||||||
|
public partial class UtsuhoAoeMoveSkill : SkillBase
|
||||||
|
{
|
||||||
|
public UtsuhoAoeMoveSkill()
|
||||||
|
{
|
||||||
|
IsPermanent = true;
|
||||||
|
TurnsLimit = 0;
|
||||||
|
Score = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override SkillType GetSkillType()
|
||||||
|
{
|
||||||
|
return SkillType.UTSUHOAOEMOVE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4b6a32be4a814be7bb94d841ed0849a1
|
||||||
|
timeCreated: 1772778339
|
||||||
@ -25,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.UtsuhoBoneMaker;
|
return SkillType.UTSUHOBONEMAKER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.UtsuhoDelayAct;
|
return SkillType.UTSUHODELAYACT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* @Author: 白哉
|
||||||
|
* @Description: 空任务技能
|
||||||
|
* @Date: 2026年03月06日
|
||||||
|
* @Modify:
|
||||||
|
*/
|
||||||
|
|
||||||
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Logic.Skill
|
||||||
|
{
|
||||||
|
public partial class UtsuhoMissionSkill : SkillBase
|
||||||
|
{
|
||||||
|
public UtsuhoMissionSkill()
|
||||||
|
{
|
||||||
|
IsPermanent = true;
|
||||||
|
TurnsLimit = 0;
|
||||||
|
Score = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override SkillType GetSkillType()
|
||||||
|
{
|
||||||
|
return SkillType.UTSUHOMISSION;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4461bc9684a248e1b72b92927d309b16
|
||||||
|
timeCreated: 1772778355
|
||||||
@ -25,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.UtsuhoRadiation;
|
return SkillType.UTSUHORADIATION;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: 白哉
|
|
||||||
* @Description: 空准备移动技能
|
|
||||||
* @Date: 2026年03月09日
|
|
||||||
* @Modify:
|
|
||||||
*/
|
|
||||||
|
|
||||||
using RuntimeData;
|
|
||||||
using MemoryPack;
|
|
||||||
|
|
||||||
namespace Logic.Skill
|
|
||||||
{
|
|
||||||
public partial class UtsuhoReadyMoveSkill : SkillBase
|
|
||||||
{
|
|
||||||
public UtsuhoReadyMoveSkill()
|
|
||||||
{
|
|
||||||
IsPermanent = true;
|
|
||||||
TurnsLimit = 0;
|
|
||||||
Score = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
|
||||||
{
|
|
||||||
return SkillType.UtsuhoReadyMove;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ec8e682cfdc6428ca9412e30a684fb18
|
|
||||||
timeCreated: 1773043756
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: 白哉
|
|
||||||
* @Description: 空准备移动强化技能
|
|
||||||
* @Date: 2026年03月09日
|
|
||||||
* @Modify:
|
|
||||||
*/
|
|
||||||
|
|
||||||
using RuntimeData;
|
|
||||||
using MemoryPack;
|
|
||||||
|
|
||||||
namespace Logic.Skill
|
|
||||||
{
|
|
||||||
public partial class UtsuhoReadyMoveSuperSkill : SkillBase
|
|
||||||
{
|
|
||||||
public UtsuhoReadyMoveSuperSkill()
|
|
||||||
{
|
|
||||||
IsPermanent = true;
|
|
||||||
TurnsLimit = 0;
|
|
||||||
Score = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
|
||||||
{
|
|
||||||
return SkillType.UtsuhoReadyMoveSuper;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: a935dbc697ff40b2b4115cd4c3b2d387
|
|
||||||
timeCreated: 1773043771
|
|
||||||
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
* @Author: 白哉
|
||||||
|
* @Description: 勇仪三格突进技能
|
||||||
|
* @Date: 2026年03月06日
|
||||||
|
* @Modify:
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Logic.Skill
|
||||||
|
{
|
||||||
|
public partial class YuugiDash3Skill : SkillBase
|
||||||
|
{
|
||||||
|
public YuugiDash3Skill()
|
||||||
|
{
|
||||||
|
IsPermanent = true;
|
||||||
|
TurnsLimit = 0;
|
||||||
|
Score = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override SkillType GetSkillType()
|
||||||
|
{
|
||||||
|
return SkillType.YUUGIDASH3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4eb913b1cd2d48b1b62a8d623648700c
|
||||||
|
timeCreated: 1772778364
|
||||||
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* @Author: 白哉
|
||||||
|
* @Description: 勇仪突进极限技能
|
||||||
|
* @Date: 2026年03月06日
|
||||||
|
* @Modify:
|
||||||
|
*/
|
||||||
|
|
||||||
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Logic.Skill
|
||||||
|
{
|
||||||
|
public partial class YuugiDashMaxSkill : SkillBase
|
||||||
|
{
|
||||||
|
public YuugiDashMaxSkill()
|
||||||
|
{
|
||||||
|
IsPermanent = true;
|
||||||
|
TurnsLimit = 0;
|
||||||
|
Score = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override SkillType GetSkillType()
|
||||||
|
{
|
||||||
|
return SkillType.YUUGIDASHMAX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bf45a4f21ce241b8b67e5977bcd33ee0
|
||||||
|
timeCreated: 1772778373
|
||||||
@ -1,12 +1,16 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: 白哉
|
* @Author: 白哉
|
||||||
* @Description: 勇仪突进进阶技能
|
* @Description: 勇仪突进进阶技能
|
||||||
* @Date: 2026年03月09日
|
* @Date: 2026年03月06日
|
||||||
* @Modify:
|
* @Modify:
|
||||||
*/
|
*/
|
||||||
|
|
||||||
using RuntimeData;
|
using RuntimeData;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
@ -21,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.YuugiDashPro;
|
return SkillType.YUUGIDASHPRO;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,3 +1,3 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: b60b23dafbb742ee911979d004fdcf68
|
guid: deb421f51aad462bbfdf7464d238fec7
|
||||||
timeCreated: 1773043785
|
timeCreated: 1772778369
|
||||||
@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: 白哉
|
|
||||||
* @Description: 勇仪突进技能
|
|
||||||
* @Date: 2026年03月09日
|
|
||||||
* @Modify:
|
|
||||||
*/
|
|
||||||
|
|
||||||
using RuntimeData;
|
|
||||||
using MemoryPack;
|
|
||||||
|
|
||||||
namespace Logic.Skill
|
|
||||||
{
|
|
||||||
public partial class YuugiDashSkill : SkillBase
|
|
||||||
{
|
|
||||||
public YuugiDashSkill()
|
|
||||||
{
|
|
||||||
IsPermanent = true;
|
|
||||||
TurnsLimit = 0;
|
|
||||||
Score = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
|
||||||
{
|
|
||||||
return SkillType.YuugiDash;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 2a46bd86f07b46f3b43f9e744393ca35
|
|
||||||
timeCreated: 1773043777
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: 白哉
|
|
||||||
* @Description: 勇仪移动增强技能
|
|
||||||
* @Date: 2026年03月09日
|
|
||||||
* @Modify:
|
|
||||||
*/
|
|
||||||
|
|
||||||
using RuntimeData;
|
|
||||||
using MemoryPack;
|
|
||||||
|
|
||||||
namespace Logic.Skill
|
|
||||||
{
|
|
||||||
public partial class YuugiMovePlusSkill : SkillBase
|
|
||||||
{
|
|
||||||
public YuugiMovePlusSkill()
|
|
||||||
{
|
|
||||||
IsPermanent = true;
|
|
||||||
TurnsLimit = 0;
|
|
||||||
Score = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
|
||||||
{
|
|
||||||
return SkillType.YuugiMovePlus;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ac059b63b6c043e982fa1ec2b312ef6f
|
|
||||||
timeCreated: 1773043807
|
|
||||||
@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
* @Author: 白哉
|
|
||||||
* @Description: 勇仪移动技能
|
|
||||||
* @Date: 2026年03月09日
|
|
||||||
* @Modify:
|
|
||||||
*/
|
|
||||||
|
|
||||||
using RuntimeData;
|
|
||||||
using MemoryPack;
|
|
||||||
|
|
||||||
namespace Logic.Skill
|
|
||||||
{
|
|
||||||
public partial class YuugiMoveSkill : SkillBase
|
|
||||||
{
|
|
||||||
public YuugiMoveSkill()
|
|
||||||
{
|
|
||||||
IsPermanent = true;
|
|
||||||
TurnsLimit = 0;
|
|
||||||
Score = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
public override SkillType GetSkillType()
|
|
||||||
{
|
|
||||||
return SkillType.YuugiMove;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: bd32fa53f5ea44f9b07dab1942317815
|
|
||||||
timeCreated: 1773043799
|
|
||||||
@ -25,7 +25,7 @@ namespace Logic.Skill
|
|||||||
|
|
||||||
public override SkillType GetSkillType()
|
public override SkillType GetSkillType()
|
||||||
{
|
{
|
||||||
return SkillType.YuugiPush;
|
return SkillType.YUUGIPUSH;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
// Auto-generated KoishiAutoMoveSkill partial class with MemoryPackable attribute
|
// Auto-generated BonePileAttackSkill partial class with MemoryPackable attribute
|
||||||
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
||||||
|
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
@ -7,7 +7,7 @@ using Logic.Skill;
|
|||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
[MemoryPackable]
|
[MemoryPackable]
|
||||||
public partial class KoishiAutoMoveSkill
|
public partial class BonePileAttackSkill
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 31e31c3b301e2bc4bb39a217c2985c7b
|
guid: bf8b16293b8c9c246b55c7e44d6800ad
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@ -1,4 +1,4 @@
|
|||||||
// Auto-generated UndeadSkill partial class with MemoryPackable attribute
|
// Auto-generated CorpseBurnSkill partial class with MemoryPackable attribute
|
||||||
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
||||||
|
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
@ -7,7 +7,7 @@ using Logic.Skill;
|
|||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
[MemoryPackable]
|
[MemoryPackable]
|
||||||
public partial class UndeadSkill
|
public partial class CorpseBurnSkill
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: e6db9551f40eb6943b5cc39aab4603e0
|
guid: 896f1d164dd0b7c42acd8319c2ec232b
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@ -1,4 +1,4 @@
|
|||||||
// Auto-generated BoneSacrificeSkill partial class with MemoryPackable attribute
|
// Auto-generated CorpseCollectSkill partial class with MemoryPackable attribute
|
||||||
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
||||||
|
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
@ -7,7 +7,7 @@ using Logic.Skill;
|
|||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
[MemoryPackable]
|
[MemoryPackable]
|
||||||
public partial class BoneSacrificeSkill
|
public partial class CorpseCollectSkill
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 85b3a8f79bb50944c9ae466c12c3f570
|
guid: 5541ecf1368e42f4b967cd6cee8aacdc
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@ -1,4 +1,4 @@
|
|||||||
// Auto-generated KoishiUndeadSkill partial class with MemoryPackable attribute
|
// Auto-generated CorpseEffectSkill partial class with MemoryPackable attribute
|
||||||
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
||||||
|
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
@ -7,7 +7,7 @@ using Logic.Skill;
|
|||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
[MemoryPackable]
|
[MemoryPackable]
|
||||||
public partial class KoishiUndeadSkill
|
public partial class CorpseEffectSkill
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 534b99977e35fc0418cb571531f6f924
|
guid: 11db9b4189709ec41958e11aab8e7f9e
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@ -1,4 +1,4 @@
|
|||||||
// Auto-generated FearMakerSkill partial class with MemoryPackable attribute
|
// Auto-generated CorpseFireSkill partial class with MemoryPackable attribute
|
||||||
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
||||||
|
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
@ -7,7 +7,7 @@ using Logic.Skill;
|
|||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
[MemoryPackable]
|
[MemoryPackable]
|
||||||
public partial class FearMakerSkill
|
public partial class CorpseFireSkill
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 024a53f169cb9744a9000d32c9fc3052
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: c74ac71107d26194ebc34bbb5873ac31
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@ -0,0 +1,13 @@
|
|||||||
|
// Auto-generated KoishiBoneHealSkill partial class with MemoryPackable attribute
|
||||||
|
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
||||||
|
|
||||||
|
using MemoryPack;
|
||||||
|
using Logic.Skill;
|
||||||
|
|
||||||
|
namespace Logic.Skill
|
||||||
|
{
|
||||||
|
[MemoryPackable]
|
||||||
|
public partial class KoishiBoneHealSkill
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 59ff114c60ea3f04cad25625b889f735
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -1,4 +1,4 @@
|
|||||||
// Auto-generated YuugiDashSkill partial class with MemoryPackable attribute
|
// Auto-generated KoishiFreeSkill partial class with MemoryPackable attribute
|
||||||
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
|
||||||
|
|
||||||
using MemoryPack;
|
using MemoryPack;
|
||||||
@ -7,7 +7,7 @@ using Logic.Skill;
|
|||||||
namespace Logic.Skill
|
namespace Logic.Skill
|
||||||
{
|
{
|
||||||
[MemoryPackable]
|
[MemoryPackable]
|
||||||
public partial class YuugiDashSkill
|
public partial class KoishiFreeSkill
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 6dc5a6f853cb4564aa0acbd875c927c2
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: ce5945e62b63e4e4ba9ad182c1cea4fe
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user