Compare commits

...

1 Commits

Author SHA1 Message Date
04d188cc52 oss反序列化专用版本 2026-03-11 15:12:27 +08:00
128 changed files with 792 additions and 1682 deletions

View File

@ -472,148 +472,3 @@ MonoBehaviour:
Desc: "\u7D2F\u8BA1\u6B7B\u4EA1**<{param}/{param}>**\u540D**<\u5F02\u7AEF>**"
UnitFullTypes: []
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:

View File

@ -192,61 +192,6 @@ 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
<br> **<[\u80FD\u529B:\u767D\u72FC\u7684\u6700\u540E\u901A\u7252]>**\u5168\u573A\u6700\u591A\u540C\u65F6\u5B58\u57283\u4E2A**<\u5F02\u7AEF\u70D9\u5370>**
<br>"
- GiantType: 16
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:
OutsideMultiplayTitleGuest:

View File

@ -4073,7 +4073,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4095,7 +4095,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4117,7 +4117,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4139,7 +4139,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 08db2adc08231e842ba71741b9f3fb3b, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4161,7 +4161,7 @@ MonoBehaviour:
MoveRange: 3
AttackRange: 2
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4183,7 +4183,7 @@ MonoBehaviour:
MoveRange: 3
AttackRange: 2
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4205,7 +4205,7 @@ MonoBehaviour:
MoveRange: 3
AttackRange: 2
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4227,7 +4227,7 @@ MonoBehaviour:
MoveRange: 3
AttackRange: 2
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: f3c529d92a9946745825639f7bf74554, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4249,7 +4249,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 2
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4271,7 +4271,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 2
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4293,7 +4293,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 2
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4315,7 +4315,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 2
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 2402fd4a0df809349bab2260b42a3d5b, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4337,7 +4337,7 @@ MonoBehaviour:
MoveRange: 2
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4359,7 +4359,7 @@ MonoBehaviour:
MoveRange: 2
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4381,7 +4381,7 @@ MonoBehaviour:
MoveRange: 3
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4403,7 +4403,7 @@ MonoBehaviour:
MoveRange: 3
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 73ae037f4b5dab74caa7b0457186a8a6, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4425,7 +4425,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4447,7 +4447,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4469,7 +4469,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
IsSpriteVarient: 0
SpriteList: []
@ -4491,7 +4491,7 @@ MonoBehaviour:
MoveRange: 1
AttackRange: 1
Cost: 0
Skills: 20000000
Skills:
Sprite: {fileID: 21300000, guid: 91b74550ff01e84408d84d19f41f0855, type: 3}
IsSpriteVarient: 0
SpriteList: []

View File

@ -12,7 +12,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c659b850b20e460f866ed3f696be406b, type: 3}
m_Name: VersionConfig
m_EditorClassIdentifier:
CurVersionId: 608
CurVersionId: 610
Versions:
- MajorVersion: 0
MinorVersion: 6

View File

@ -1326,13 +1326,13 @@ namespace RuntimeData
}
// 当场上有小兵死亡时
public void OnAnyUnitDie(MapData map, UnitData dieUnit)
public void OnAnyUnitDie(MapData map)
{
foreach (var unit in UnitMap.UnitList)
{
//避免在遍历的时候直接改到了skillsList
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;
// 改为二进制文件扩展名
string path = Application.persistentDataPath + "/../Config/match_config.dat";
string path = Application.persistentDataPath + "/match_config.dat";
int retryCount = 3;
while (retryCount > 0)
@ -1376,7 +1376,7 @@ namespace RuntimeData
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;
int retryCount = 3;
@ -1419,7 +1419,7 @@ namespace RuntimeData
if (map == null) return;
// 改为二进制文件扩展名
string path = Application.persistentDataPath + "/../Config/map_archive";
string path = Application.persistentDataPath + "/map_archive";
if (isBegin) path += "_begin";
else if (isEnd) path += "_end";
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)
{
string directory = Application.persistentDataPath + "/../Config/";
string directory = Application.persistentDataPath;
// 构建文件名模式
string pattern = "map_archive";

View File

@ -49,7 +49,7 @@ namespace RuntimeData
RefreshSkillDict();
if (_skillDict.ContainsKey(skillType))
{
_skillDict[skillType].OnSkillOverride(mapData, originId, Id);
_skillDict[skillType].OnSkillOverride(mapData, originId);
}
else
{
@ -219,7 +219,7 @@ namespace RuntimeData
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);
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);
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);
foreach (var skill in copy) skill.OnTurnEnd(this, map);

View File

@ -500,19 +500,17 @@ namespace RuntimeData
// 全局通知调用
public void OnTurnStart(MapData map)
{
if (IsFrozen()) return;
OnSkillsTurnStart(map);
}
public void OnAfterTurnStart(MapData map)
{
if (IsFrozen()) return;
OnSkillsAfterTurnStart(map);
}
public void OnTurnEnd(MapData map)
{
if (!IsFrozen()) OnSkillsTurnEnd(map);
OnSkillsTurnEnd(map);
AP = 0;
CP = 0;
MP = 0;
@ -523,10 +521,7 @@ namespace RuntimeData
{
int v = 1;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
v += skill.GetExtraSight(this,map);
}
if (map.GetGridDataByUnitId(this.Id, out var grid) && grid.Feature == TerrainFeature.Mountain)
v = Mathf.Max(v, 2);
return v;
@ -537,10 +532,7 @@ namespace RuntimeData
{
int v = 1;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
v += skill.GetExtraSight(this,map);
}
if (grid.Feature == TerrainFeature.Mountain)
v = Mathf.Max(v, 2);
return v;
@ -551,7 +543,6 @@ namespace RuntimeData
var attackRange = 0;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
attackRange += skill.GetExtraAttackRange(mapData,this);
}
@ -568,7 +559,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (!skill.GetFinalMoveRange(this, out var finalMoveRange)) continue;
return finalMoveRange;
}
@ -585,7 +575,6 @@ namespace RuntimeData
var moveRange = info.MoveRange;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
moveRange += skill.GetExtraMoveRange(mapData,this);
}
@ -598,7 +587,6 @@ namespace RuntimeData
var isStaticExp = false;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsLimitSelfExp(this, map)) isStaticExp = true;
}
@ -624,11 +612,7 @@ namespace RuntimeData
public float GetSpecialSkillBonus(MapData mapData, SkillType skillType)
{
var value = 1f;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
value *= skill.GetSpecialSkillBonus(mapData, this, skillType);
}
foreach (var skill in Skills) value *= skill.GetSpecialSkillBonus(mapData, this, skillType);
return value;
}
@ -667,11 +651,7 @@ namespace RuntimeData
public float GetAttackAdditionParam(MapData map, UnitData target = null)
{
var value = 0f;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
value += skill.GetAttackAdditionParam(map, this, target);
}
foreach (var skill in Skills) value += skill.GetAttackAdditionParam(map, this, target);
return value;
}
@ -679,11 +659,7 @@ namespace RuntimeData
public float GetAttackMultiplicationParam(MapData map, UnitData target = null)
{
var value = 1f;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
value *= skill.GetAttackMultiplicationParam(map, this, target);
}
foreach (var skill in Skills) value *= skill.GetAttackMultiplicationParam(map, this, target);
return value;
}
@ -708,7 +684,6 @@ namespace RuntimeData
var add = 0;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
add += skill.GetExtraMoveRange(mapData,this);
}
//var mul = GetDefenseMultiplicationParam(map);
@ -734,7 +709,6 @@ namespace RuntimeData
var add = 0;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
add += skill.GetExtraAttackRange(mapData,this);
}
//var mul = GetDefenseMultiplicationParam(map);
@ -766,11 +740,7 @@ namespace RuntimeData
public float GetDefenseAdditionParam(MapData map, UnitData target = null)
{
var value = 0f;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
value += skill.GetDefenseAdditionParam(map, this, target);
}
foreach (var skill in Skills) value += skill.GetDefenseAdditionParam(map, this, target);
return value;
}
@ -781,7 +751,6 @@ namespace RuntimeData
var isZero = 1f;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
var t = skill.GetDefenseMultiplicationParam(map, this, target);
value = Mathf.Max(t,value);
isZero *= t;
@ -815,11 +784,7 @@ namespace RuntimeData
public float GetCriticalHitRate(MapData map)
{
var criticalHitRate = 0f;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
criticalHitRate += skill.GetCriticalHitRate(this, map);
}
foreach (var skill in Skills) criticalHitRate += skill.GetCriticalHitRate(this, map);
return criticalHitRate;
}
@ -831,10 +796,7 @@ namespace RuntimeData
{
int ret = 0;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
ret += skill.GetOfficerHealth();
}
return ret;
}
@ -842,20 +804,14 @@ namespace RuntimeData
public bool IsOfficer()
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsOfficer()) return true;
}
return false;
}
public bool IsPrepareOfficer()
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsPrepareOfficer()) return true;
}
return false;
}
@ -863,10 +819,7 @@ namespace RuntimeData
public bool IsCanBeOfficer()
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsCanBeOfficer()) return true;
}
return false;
}
@ -875,7 +828,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsCanMoveGiantNearbyGrid(this, map)) return true;
}
return false;
@ -900,18 +852,15 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsCanMoveToNoUnitSelfCity(this, map)) return true;
}
return false;
}
// 是否可以死亡
public bool CanBeKilled(MapData map)
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (!skill.IsCanBeKill(this, map)) return false;
}
return true;
@ -922,7 +871,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsCanBeDamaged(this, map, dmg)) return true;
}
return false;
@ -933,7 +881,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsLimitSelfExp(this, map)) return true;
}
return false;
@ -950,7 +897,6 @@ namespace RuntimeData
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsCanMoveOnTerrain(this, map, terrainType)) return true;
}
return false;
@ -963,7 +909,6 @@ namespace RuntimeData
return true;
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsCanMoveOnFeature(this, map,featureType)) return true;
}
return false;
@ -974,7 +919,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.CanAttackAll(this, map)) return true;
}
return false;
@ -985,7 +929,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsLimitSelfAttack(this, map)) return true;
}
return false;
@ -996,7 +939,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsCanAttackTargetGrid(map,this,target)) return true;
}
return false;
@ -1007,7 +949,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsCanAttackAlly()) return true;
}
return false;
@ -1018,7 +959,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (!skill.IsCanAttackTargetAlly(map,this,target)) return false;
}
return true;
@ -1029,7 +969,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsLimitSelfCounterAttack(this, map)) return true;
}
return false;
@ -1040,7 +979,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsLimitTargetCounterAttack(this, map)) return true;
}
return false;
@ -1050,7 +988,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsCanTransport()) return true;
}
return false;
@ -1060,11 +997,7 @@ namespace RuntimeData
public void OnMove(MapData map, GridData target, MoveType moveType, List<Vector2Int> path = null)
{
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.OnMove(this, target, map,moveType, path);
}
foreach (var skill in copy) 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)
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)
{
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.BeforeDamagedSupportStage(map, info);
}
foreach (var skill in copy) skill.BeforeDamagedSupportStage(map, info);
}
// 伤害结算前
public void BeforeDamagedTransformStage(MapData map, SettlementInfo info)
{
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.BeforeDamagedTransformStage(map, info);
}
foreach (var skill in copy) skill.BeforeDamagedTransformStage(map, info);
}
// 对他人攻击前
@ -1102,7 +1027,6 @@ namespace RuntimeData
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.BeforeActiveAttackOther(mapData, origin, target, out var tmpAddDmg);
addDmg += tmpAddDmg;
}
@ -1112,77 +1036,49 @@ namespace RuntimeData
public void AfterActiveAttackOther(MapData mapData, UnitData origin, UnitData target)
{
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.AfterActiveAttackOther(mapData, origin, target);
}
foreach (var skill in copy) skill.AfterActiveAttackOther(mapData, origin, target);
}
// 受他人攻击后
public void AfterActiveAttacked(MapData mapData, UnitData origin, UnitData target)
{
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.AfterActiveAttacked(mapData, origin, target);
}
foreach (var skill in copy) skill.AfterActiveAttacked(mapData, origin, target);
}
// 对他人伤害结算前
public void BeforeDamageOther(MapData map, SettlementInfo info)
{
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.BeforeDamageOther(map, info);
}
foreach (var skill in copy) skill.BeforeDamageOther(map, info);
}
// 伤害结算时
public void OnDamaged(MapData mapData, SettlementInfo info)
{
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.OnDamaged(mapData, info);
}
foreach (var skill in copy) skill.OnDamaged(mapData, info);
}
// 对他人伤害结算时
public void OnDamageOther(MapData mapData, SettlementInfo info)
{
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.OnDamageOther(mapData, info);
}
foreach (var skill in copy) skill.OnDamageOther(mapData, info);
}
// 对他人伤害结算后
public void AfterDamageOther(MapData mapData, SettlementInfo info)
{
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.AfterDamageOther(mapData, info);
}
foreach (var skill in copy) skill.AfterDamageOther(mapData, info);
}
// 对他人治疗结算时
public void OnHealOther(MapData mapData, UnitData target,HealType healType)
{
var copy = new List<SkillBase>(Skills);
foreach (var skill in copy)
{
if (IsFrozen()) continue;
skill.OnHealOther(mapData,this,target, healType);
}
foreach (var skill in copy) skill.OnHealOther(mapData,this,target, healType);
//HeroTask(mapData)?.OnDamageOther(mapData, info);
//for (int i = Skills.Count - 1; i >= 0; i--) Skills[i].OnHealOther(mapData, info);
//HeroTask(mapData)?.OnDamageOther(mapData, info);
@ -1195,10 +1091,7 @@ namespace RuntimeData
var copy = new List<SkillBase>(Skills);
float ret = 0f;
foreach (var skill in copy)
{
if (IsFrozen()) continue;
ret = Mathf.Max(ret,skill.GetGridMoveFloor(mapData,originUnit,targetGrid));
}
return ret;
}
@ -1214,10 +1107,7 @@ namespace RuntimeData
{
int ret = 0;
foreach(var skill in Skills)
{
if (IsFrozen()) continue;
ret += skill.GetKillCount();
}
return ret;
}
@ -1235,7 +1125,6 @@ namespace RuntimeData
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsTreatAsHero(map, this,unit)) return true;
}
return false;
@ -1246,7 +1135,6 @@ namespace RuntimeData
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
if (skill.IsLimitMoveToSelfTerrain(this, map)) return true;
}
return false;
@ -1273,11 +1161,8 @@ namespace RuntimeData
{
SetFullAPCPMP();
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
skill.OnRefresh();
}
}
public int AddHealth(int hp)
{
@ -1289,21 +1174,8 @@ namespace RuntimeData
public void SetOfficer()
{
foreach (var skill in Skills)
{
if (IsFrozen()) continue;
skill.SetOfficer();
}
}
public bool IsFrozen()
{
foreach (var skill in Skills)
{
if (skill.IsAllSkillBan()) return true;
}
return false;
}
}
}

View File

@ -82,7 +82,6 @@ namespace Logic.Achievement
public abstract bool CheckCondition(AchievementItem item, MapData map);
public abstract void GetProgress(out int current, out int target);
public abstract bool CheckChanged(AchievementConditionBase condition);
public abstract void CopyChange(AchievementConditionBase condition);
// 用于记录回退,所以期望一定是返回 false 从而回退成就所以默认返回true
public virtual bool ReCheckCondition()
@ -175,15 +174,6 @@ namespace Logic.Achievement
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()
{
return TrainCount >= TargetCount;
@ -254,15 +244,6 @@ namespace Logic.Achievement
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)
{
var cond = condition as BuildWonderConditionCondition;
@ -320,13 +301,6 @@ namespace Logic.Achievement
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)
{
var cond = condition as WonderInCityConditionCondition;
@ -411,13 +385,6 @@ namespace Logic.Achievement
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)
{
var cond = condition as UnitOnWonderConditionCondition;
@ -500,12 +467,6 @@ namespace Logic.Achievement
target = TargetCount;
}
public override void CopyChange(AchievementConditionBase condition)
{
var cond = condition as AroundBuildingsConditionCondition;
if (cond == null) return;
}
public override bool CheckChanged(AchievementConditionBase condition)
{
var cond = condition as AroundBuildingsConditionCondition;
@ -583,12 +544,6 @@ namespace Logic.Achievement
target = TargetCount;
}
public override void CopyChange(AchievementConditionBase condition)
{
var cond = condition as AroundWondersConditionCondition;
if (cond == null) return;
}
public override bool CheckChanged(AchievementConditionBase condition)
{
var cond = condition as AroundWondersConditionCondition;
@ -667,12 +622,6 @@ namespace Logic.Achievement
target = TargetCount;
}
public override void CopyChange(AchievementConditionBase condition)
{
var cond = condition as AroundEnemyUnitsConditionCondition;
if (cond == null) return;
}
public override bool CheckChanged(AchievementConditionBase condition)
{
var cond = condition as AroundEnemyUnitsConditionCondition;
@ -750,12 +699,6 @@ namespace Logic.Achievement
target = TargetCount;
}
public override void CopyChange(AchievementConditionBase condition)
{
var cond = condition as AroundSelfUnitsConditionCondition;
if (cond == null) return;
}
public override bool CheckChanged(AchievementConditionBase condition)
{
var cond = condition as AroundSelfUnitsConditionCondition;
@ -831,12 +774,6 @@ namespace Logic.Achievement
target = TargetCount;
}
public override void CopyChange(AchievementConditionBase condition)
{
var cond = condition as AroundSelfUnitsConditionCondition;
if (cond == null) return;
}
public override bool CheckChanged(AchievementConditionBase condition)
{
var cond = condition as AroundCityGridsConditionCondition;

View File

@ -11,7 +11,6 @@ using System.Collections.Generic;
using System.IO;
using Logic.Achievement;
using Logic.CrashSight;
using TH1_Logic.Config;
using TH1_Logic.Tools;
using UnityEngine;
@ -41,43 +40,11 @@ namespace RuntimeData
public void LoadAchievement()
{
var asset = Resources.Load<AchievementAsset>("Export/Achievement");
string path = Application.persistentDataPath + "/../Config/achievement.json";
string path = Application.persistentDataPath + "/achievement.json";
string backupPath = path + ".bak";
// 临时代码,如果找不到新路径下的成就存档,就从旧的存档里进行恢复操作,默认读最近五个档
if (!File.Exists(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))
@ -176,7 +143,7 @@ namespace RuntimeData
if (Achievement == null) return;
string json = JsonUtility.ToJson(Achievement);
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)

View File

@ -164,17 +164,6 @@ namespace Logic.Achievement
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;
}
//-------------- 序列化相关 -------------------//
// 辅助序列化字段
[SerializeField]

View File

@ -42,7 +42,7 @@ namespace TH1_Logic.Config
{
if (Config == null)
{
string path = Application.persistentDataPath + "/../Config/game_cfg.json";
string path = Application.persistentDataPath + "/game_cfg.json";
string backupPath = path + ".bak";
// 尝试读取主文件
@ -167,7 +167,7 @@ namespace TH1_Logic.Config
{
string json = JsonUtility.ToJson(Config);
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);
Config.MarkSaved();

View File

@ -20,15 +20,19 @@ namespace Logic.Config
public List<VersionInfo> Versions = new List<VersionInfo>();
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
{
MajorVersion = major,
MinorVersion = minor,
PatchVersion = patch,
FourthVersion = fourth,
PatchVersion = patch
};
Versions.Add(newVersion);
}
@ -40,7 +44,7 @@ namespace Logic.Config
{
if (version.VersionId == versionId) return version;
}
return Versions[0];
return null;
}
@ -54,24 +58,8 @@ namespace Logic.Config
public uint PatchVersion; // 补丁号
[MultilingualField]
public string Description; // 版本描述
public uint FourthVersion; // 第四版本号,预留字段
// 版本ID格式为 Major.Minor.Patch.Fourth
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();
}
public uint VersionId => MajorVersion * 10000 + MinorVersion * 100 + PatchVersion; // 版本ID格式为 Major.Minor.Patch
public string FullVersion => $"{MajorVersion}.{MinorVersion}.{PatchVersion}";
}
}

View File

@ -113,7 +113,7 @@ namespace Logic.Editor
}*/
if (InspectorUtils.InspectorButtonWithTextWidth("清空成就完成情况"))
{
string path = Application.persistentDataPath + "/../Config/achievement.json";
string path = Application.persistentDataPath + "/achievement.json";
if (File.Exists(path))File.Delete(path);
}
if (_bigID != 0 && _smallID != 0)

View File

@ -29,7 +29,6 @@ namespace Logic.Editor
private uint _major;
private uint _minor;
private uint _patch;
private uint _fourth;
private int _index;
// 背景
private GUIStyle _redBoxStyle;
@ -97,20 +96,20 @@ namespace Logic.Editor
EditorGUILayout.BeginHorizontal();
InspectorUtils.InspectorTextWidthRich($"<b>版本号: </b>");
_major = (uint)EditorGUILayout.IntField((int)_major, GUILayout.Width(20));
//_major = (uint)Mathf.Max(0, _major);
_minor = (uint)EditorGUILayout.IntField((int)_minor, GUILayout.Width(20));
_patch = (uint)EditorGUILayout.IntField((int)_patch, GUILayout.Width(20));
_fourth = (uint)EditorGUILayout.IntField((int)_fourth, GUILayout.Width(20));
var versionId = _major * 1000000 + _minor * 10000 + _patch * 100 + _fourth;
var desc = $"{_major}.{_minor}.{_patch}.{_fourth}";
var versionId = _major * 10000 + _minor * 100 + _patch;
var desc = $"{_major}.{_minor}.{_patch}";
if (_asset.GetVersionInfo(versionId) != null)
{
InspectorUtils.InspectorTextWidthRich($"<b>已存在版本号{_major}.{_minor}.{_patch}.{_fourth}</b>");
InspectorUtils.InspectorTextWidthRich($"<b>已存在版本号{_major}.{_minor}.{_patch}</b>");
}
else
{
if (InspectorUtils.InspectorButtonWithTextWidth($"创建版本号{desc}"))
{
_asset.CreateNewVersion(_major, _minor, _patch, _fourth);
_asset.CreateNewVersion(_major, _minor, _patch);
_asset.Versions = _asset.Versions.OrderByDescending(v => v.VersionId).ToList();
}
}

View File

@ -244,8 +244,7 @@ namespace Logic.Editor
foreach (var filePath in datFiles)
{
string fileName = Path.GetFileName(filePath);
try
{
byte[] data = File.ReadAllBytes(filePath);
Debug.Log($"读取文件: {fileName}, 大小: {data.Length} bytes");
@ -262,12 +261,6 @@ namespace Logic.Editor
failCount++;
}
}
catch (Exception ex)
{
Debug.LogError($"<color=red>[异常] {fileName} 反序列化失败: {ex.Message}</color>");
failCount++;
}
}
Debug.Log($"=== 反序列化完成: 成功 {successCount} / 失败 {failCount} / 共 {datFiles.Length} 个文件 ===");
}

View File

@ -96,7 +96,7 @@ namespace Logic.Editor
{
_mapPairs.Clear();
string directory = Application.persistentDataPath + "/../Config/";
string directory = Application.persistentDataPath;
if (!Directory.Exists(directory))
{
Debug.LogWarning($"存档目录不存在: {directory}");

View File

@ -12,7 +12,6 @@ using System.IO;
using Logic.AI;
using Logic.CrashSight;
using MemoryPack;
using TH1_Logic.Config;
using TH1_Logic.Tools;
using UnityEngine;
@ -111,47 +110,18 @@ namespace RuntimeData
RefreshGameRecord();
_gameRecord.Records.Add(record);
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()
{
if (_gameRecord != null) return;
string path = Application.persistentDataPath + "/../Config/game_record.dat";
string path = Application.persistentDataPath + "/game_record.dat";
string backupPath = path + ".bak";
// 临时代码,如果找不到新路径下的成就存档,就从旧的存档里进行恢复操作,默认读最近五个档
if (!File.Exists(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))

View File

@ -70,7 +70,7 @@ namespace Logic
{
if (_config != null) return;
string path = Application.persistentDataPath + "/../Config/input_config.dat";
string path = Application.persistentDataPath + "/input_config.dat";
string backupPath = path + ".bak";
// 尝试读取主文件
@ -109,7 +109,7 @@ namespace Logic
{
if (_config == null) return;
byte[] bytes = MemoryPackSerializer.Serialize(_config);
FileTools.SafeWriteFile(Application.persistentDataPath + "/../Config/input_config.dat", bytes);
FileTools.SafeWriteFile(Application.persistentDataPath + "/input_config.dat", bytes);
}
// 每帧调用返回绑定结果null表示还在监听中

View File

@ -37,7 +37,6 @@ namespace TH1_Logic.Oss
{
steamId = steamId,
authTicket = authTicket,
version = ConfigManager.Instance.VersionCfg.CurVersionInfo.Version,
});
var bodyBytes = Encoding.UTF8.GetBytes(requestBody);

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 26eec140673c4347a8122fa599692cc0
timeCreated: 1773043793

View File

@ -0,0 +1,32 @@
/*
* @Author:
* @Description:
* @Date: 20260306
* @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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: f6ec1803b84b4c938da710c9b7eb5756
timeCreated: 1772778294

View File

@ -25,10 +25,8 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.BonePile;
return SkillType.BONEPILE;
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: edad0dcfc6d1493cb95a0dc4bdbecbc7
timeCreated: 1773043710

View File

@ -25,12 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
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);
return SkillType.CANHIDE;
}
}
}

View File

@ -21,28 +21,11 @@ namespace Logic.Skill
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
IsLevelSkill = true;
}
public override SkillType GetSkillType()
{
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);
}
return SkillType.CORPSEBUFF;
}
}
}

View File

@ -1,18 +1,22 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @Description:
* @Date: 20260306
* @Modify:
*/
using RuntimeData;
using System;
using System.Collections.Generic;
using System.Linq;
using MemoryPack;
using UnityEngine;
namespace Logic.Skill
{
public partial class RinFireSkill : SkillBase
public partial class CorpseBurnSkill : SkillBase
{
public RinFireSkill()
public CorpseBurnSkill()
{
IsPermanent = true;
TurnsLimit = 0;
@ -21,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.RinFire;
return SkillType.CORPSEBURN;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1057017c9de840f798ceda726bcd2f22
timeCreated: 1772778289

View File

@ -0,0 +1,32 @@
/*
* @Author:
* @Description:
* @Date: 20260306
* @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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 3f0830937e64478e8214d15b0e57338b
timeCreated: 1772778279

View File

@ -1,18 +1,22 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @Description:
* @Date: 20260306
* @Modify:
*/
using RuntimeData;
using System;
using System.Collections.Generic;
using System.Linq;
using MemoryPack;
using UnityEngine;
namespace Logic.Skill
{
public partial class GridRadiationSkill : SkillBase
public partial class CorpseEffectSkill : SkillBase
{
public GridRadiationSkill()
public CorpseEffectSkill()
{
IsPermanent = true;
TurnsLimit = 0;
@ -21,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.GridRadiation;
return SkillType.CORPSEEFFECT;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 104b286d300d4c839615dc1946bf4864
timeCreated: 1772778283

View File

@ -1,18 +1,22 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @Description:
* @Date: 20260306
* @Modify:
*/
using RuntimeData;
using System;
using System.Collections.Generic;
using System.Linq;
using MemoryPack;
using UnityEngine;
namespace Logic.Skill
{
public partial class BoneSacrificeSkill : SkillBase
public partial class CorpseFireSkill : SkillBase
{
public BoneSacrificeSkill()
public CorpseFireSkill()
{
IsPermanent = true;
TurnsLimit = 0;
@ -21,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.BoneSacrifice;
return SkillType.CORPSEFIRE;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: aa6c9dc589a244aa9be3f2b1b52db166
timeCreated: 1772778328

View File

@ -1,36 +0,0 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @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);
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 74ee72e3a37b4be0867b71435856d9cd
timeCreated: 1773043718

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: e5dc0734b45d40489601af748c87e97f
timeCreated: 1773043763

View File

@ -25,12 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.HideState;
}
public override void AfterActiveAttacked(MapData mapData, UnitData origin, UnitData target)
{
origin.RemoveSkill(SkillType.HideState, mapData);
return SkillType.HIDESTATE;
}
}
}

View File

@ -1,52 +0,0 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @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);
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: dee0a882ca5c4c4983156a3f39fbe598
timeCreated: 1773043703

View File

@ -25,17 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
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()
{
return SkillType.KOISHIAUTO;
}
}
}

View File

@ -0,0 +1,32 @@
/*
* @Author:
* @Description:
* @Date: 20260306
* @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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7ec5bcc5f01348f4a4ed2e13ac8d96da
timeCreated: 1772778266

View File

@ -25,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.KoishiDeathFear;
return SkillType.KOISHIDEATHFEAR;
}
}
}

View File

@ -1,18 +1,22 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @Description:
* @Date: 20260306
* @Modify:
*/
using RuntimeData;
using System;
using System.Collections.Generic;
using System.Linq;
using MemoryPack;
using UnityEngine;
namespace Logic.Skill
{
public partial class BoneAttackUpSkill : SkillBase
public partial class KoishiFreeSkill : SkillBase
{
public BoneAttackUpSkill()
public KoishiFreeSkill()
{
IsPermanent = true;
TurnsLimit = 0;
@ -21,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.BoneAttackUp;
return SkillType.KOISHIFREE;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 810580e3ac0f4cc29741b59a18ff9ac4
timeCreated: 1772778275

View File

@ -25,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.KoishiRespawn;
return SkillType.KOISHIRESPAWN;
}
}
}

View File

@ -1,40 +0,0 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @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);
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: a5d31aa0b9a84a41badb88930ad101b4
timeCreated: 1773043725

View File

@ -27,7 +27,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.KomeijiFear;
return SkillType.KOMEIJIFEAR;
}
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;
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)

View File

@ -50,7 +50,7 @@ namespace Logic.Skill
RefreshAroundGiant(map, self);
}
public override void OnAnyUnitDie(MapData map, UnitData self, UnitData dieUnit)
public override void OnAnyUnitDie(MapData map, UnitData self)
{
RefreshAroundGiant(map, self);
}

View File

@ -1,33 +0,0 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @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)
{
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 35c966679cdc4a90ad6add26bba6ccf1
timeCreated: 1773043735

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 82ba0d7d7a32486db4aa11db62372165
timeCreated: 1773043743

View File

@ -25,14 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
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);
return SkillType.SATORIBAN;
}
}
}

View File

@ -26,7 +26,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.SatoriSee;
return SkillType.SATORISEE;
}
public override void BeforeUnitDamaged(UnitData self, MapData mapData, SettlementInfo info)
@ -44,7 +44,7 @@ namespace Logic.Skill
var dis = mapData.GridMap.CalcDistance(selfGrid, targetGrid);
if (dis > 2) return;
info.DamageOrigin.AddOrOverrideSkill(SkillType.KomeijiFear, mapData, self.Id);
info.DamageOrigin.AddOrOverrideSkill(SkillType.KOMEIJIFEAR, mapData, self.Id);
}
}
}

View File

@ -5,10 +5,12 @@
* @Modify:
*/
using RuntimeData;
using Logic.CrashSight;
using System;
using System.Collections.Generic;
using System.Linq;
using MemoryPack;
using UnityEngine;
namespace Logic.Skill
{
@ -23,27 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.SkillBanBoom;
}
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);
}
return SkillType.SKILLBANBOMB;
}
}
}

View File

@ -18,19 +18,14 @@ namespace Logic.Skill
{
public SkillBanSkill()
{
IsPermanent = false;
TurnsLimit = 1;
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.SkillBan;
}
public override bool IsAllSkillBan()
{
return true;
return SkillType.SKILLBAN;
}
}
}

View File

@ -1,42 +0,0 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @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);
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 16f6a875ce184a35821ee1f354dbbb0b
timeCreated: 1773043696

View File

@ -0,0 +1,32 @@
/*
* @Author:
* @Description: AOE移动技能
* @Date: 20260306
* @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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4b6a32be4a814be7bb94d841ed0849a1
timeCreated: 1772778339

View File

@ -25,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.UtsuhoBoneMaker;
return SkillType.UTSUHOBONEMAKER;
}
}
}

View File

@ -25,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.UtsuhoDelayAct;
return SkillType.UTSUHODELAYACT;
}
}
}

View File

@ -0,0 +1,32 @@
/*
* @Author:
* @Description:
* @Date: 20260306
* @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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4461bc9684a248e1b72b92927d309b16
timeCreated: 1772778355

View File

@ -25,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.UtsuhoRadiation;
return SkillType.UTSUHORADIATION;
}
}
}

View File

@ -1,28 +0,0 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @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;
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: ec8e682cfdc6428ca9412e30a684fb18
timeCreated: 1773043756

View File

@ -1,28 +0,0 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @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;
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: a935dbc697ff40b2b4115cd4c3b2d387
timeCreated: 1773043771

View File

@ -0,0 +1,34 @@
/*
* @Author:
* @Description:
* @Date: 20260306
* @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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 4eb913b1cd2d48b1b62a8d623648700c
timeCreated: 1772778364

View File

@ -0,0 +1,32 @@
/*
* @Author:
* @Description:
* @Date: 20260306
* @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;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: bf45a4f21ce241b8b67e5977bcd33ee0
timeCreated: 1772778373

View File

@ -1,12 +1,16 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @Date: 20260306
* @Modify:
*/
using RuntimeData;
using System;
using System.Collections.Generic;
using System.Linq;
using MemoryPack;
using UnityEngine;
namespace Logic.Skill
{
@ -21,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.YuugiDashPro;
return SkillType.YUUGIDASHPRO;
}
}
}

View File

@ -1,3 +1,3 @@
fileFormatVersion: 2
guid: b60b23dafbb742ee911979d004fdcf68
timeCreated: 1773043785
guid: deb421f51aad462bbfdf7464d238fec7
timeCreated: 1772778369

View File

@ -1,28 +0,0 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @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;
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: 2a46bd86f07b46f3b43f9e744393ca35
timeCreated: 1773043777

View File

@ -1,28 +0,0 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @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;
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: ac059b63b6c043e982fa1ec2b312ef6f
timeCreated: 1773043807

View File

@ -1,28 +0,0 @@
/*
* @Author:
* @Description:
* @Date: 20260309
* @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;
}
}
}

View File

@ -1,3 +0,0 @@
fileFormatVersion: 2
guid: bd32fa53f5ea44f9b07dab1942317815
timeCreated: 1773043799

View File

@ -25,7 +25,7 @@ namespace Logic.Skill
public override SkillType GetSkillType()
{
return SkillType.YuugiPush;
return SkillType.YUUGIPUSH;
}
}
}

View File

@ -1,4 +1,4 @@
// Auto-generated KoishiAutoMoveSkill partial class with MemoryPackable attribute
// Auto-generated BonePileAttackSkill partial class with MemoryPackable attribute
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
using MemoryPack;
@ -7,7 +7,7 @@ using Logic.Skill;
namespace Logic.Skill
{
[MemoryPackable]
public partial class KoishiAutoMoveSkill
public partial class BonePileAttackSkill
{
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 31e31c3b301e2bc4bb39a217c2985c7b
guid: bf8b16293b8c9c246b55c7e44d6800ad
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -1,4 +1,4 @@
// Auto-generated UndeadSkill partial class with MemoryPackable attribute
// Auto-generated CorpseBurnSkill partial class with MemoryPackable attribute
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
using MemoryPack;
@ -7,7 +7,7 @@ using Logic.Skill;
namespace Logic.Skill
{
[MemoryPackable]
public partial class UndeadSkill
public partial class CorpseBurnSkill
{
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: e6db9551f40eb6943b5cc39aab4603e0
guid: 896f1d164dd0b7c42acd8319c2ec232b
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -1,4 +1,4 @@
// Auto-generated BoneSacrificeSkill partial class with MemoryPackable attribute
// Auto-generated CorpseCollectSkill partial class with MemoryPackable attribute
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
using MemoryPack;
@ -7,7 +7,7 @@ using Logic.Skill;
namespace Logic.Skill
{
[MemoryPackable]
public partial class BoneSacrificeSkill
public partial class CorpseCollectSkill
{
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 85b3a8f79bb50944c9ae466c12c3f570
guid: 5541ecf1368e42f4b967cd6cee8aacdc
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -1,4 +1,4 @@
// Auto-generated KoishiUndeadSkill partial class with MemoryPackable attribute
// Auto-generated CorpseEffectSkill partial class with MemoryPackable attribute
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
using MemoryPack;
@ -7,7 +7,7 @@ using Logic.Skill;
namespace Logic.Skill
{
[MemoryPackable]
public partial class KoishiUndeadSkill
public partial class CorpseEffectSkill
{
}
}

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 534b99977e35fc0418cb571531f6f924
guid: 11db9b4189709ec41958e11aab8e7f9e
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@ -1,4 +1,4 @@
// Auto-generated FearMakerSkill partial class with MemoryPackable attribute
// Auto-generated CorpseFireSkill partial class with MemoryPackable attribute
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
using MemoryPack;
@ -7,7 +7,7 @@ using Logic.Skill;
namespace Logic.Skill
{
[MemoryPackable]
public partial class FearMakerSkill
public partial class CorpseFireSkill
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 024a53f169cb9744a9000d32c9fc3052
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: c74ac71107d26194ebc34bbb5873ac31
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 59ff114c60ea3f04cad25625b889f735
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,4 +1,4 @@
// Auto-generated YuugiDashSkill partial class with MemoryPackable attribute
// Auto-generated KoishiFreeSkill partial class with MemoryPackable attribute
// 此文件由 MemoryPackUnionGenerator 自动生成,请勿手动修改
using MemoryPack;
@ -7,7 +7,7 @@ using Logic.Skill;
namespace Logic.Skill
{
[MemoryPackable]
public partial class YuugiDashSkill
public partial class KoishiFreeSkill
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6dc5a6f853cb4564aa0acbd875c927c2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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