技能开发中,修复IO报错问题

This commit is contained in:
wuwenbo 2026-03-06 14:34:29 +08:00
parent 03b7afb17b
commit e1040c7579
151 changed files with 2072 additions and 300 deletions

View File

@ -55,7 +55,7 @@ namespace NodeCanvas.Tasks.Actions
#if !CHECK_ACTIONDEFFERENCE
if (sw.Elapsed.TotalMilliseconds > 40)
{
LogSystem.LogError($"duration out, duration{sw.Elapsed.TotalMilliseconds} ms, " +
LogSystem.LogInfo($"duration out, duration{sw.Elapsed.TotalMilliseconds} ms, " +
$"NodeId: {NodeId}, {CalculateTypes[0]} Action 数量:{data.value.AIActions.Count} " +
$"是否成功: {data.value.MaxAiAction != null} \n " +
$" {str}");

View File

@ -51,7 +51,7 @@ namespace NodeCanvas.Tasks.Actions
sw.Stop();
if (sw.Elapsed.TotalMilliseconds > 50)
{
LogSystem.LogError($"duration out, duration{sw.Elapsed.TotalMilliseconds} ms, NodeId: {NodeId} {ActionTypes[0]}");
LogSystem.LogInfo($"duration out, duration{sw.Elapsed.TotalMilliseconds} ms, NodeId: {NodeId} {ActionTypes[0]}");
}
if (data.value.AIActions.Count == 0)
{

View File

@ -637,7 +637,7 @@ namespace RuntimeData
//如果是remiliaGrid且是斯卡雷特帝国的单位给当前的unit填加skill
if (type == GridSpType.RemiliaGrid && Unit(map,out var unit) && unit.Player(map,out var player) && player.PlayerCivId == 0)
{
unit.AddSkill_Legacy(SkillType.ScarletMistRealTimeVampire, map,true,-1,false,-1,false,AddSkillType.Force,0);
unit.AddSkill_Legacy(SkillType.ScarletMistRealTimeVampire, map,true,-1,false,-1,false,SpecialAddSkillType.Force,0);
}
return true;
}

View File

@ -1122,7 +1122,7 @@ namespace RuntimeData
if(!Table.Instance.TechDataAssets.GetTechAtomInfo(atom,out var info))continue;
if (!info.IsAddSkill) continue;
if (!info.CheckCondition(unit.UnitFullType)) continue;
unit.AddInitSkill(info.AddSkillType, this);
unit.AddInitSkill(info.SpecialAddSkillType, this);
}
}

View File

@ -43,37 +43,54 @@ namespace RuntimeData
return _skillDict.TryGetValue(skillType, out skill);
}
public enum AddSkillType
// 添加技能的常规方法 (这里默认了添加和覆盖都走统一接口)
public virtual void AddOrOverrideSkill(SkillType skillType, MapData mapData)
{
Normal, // 普通添加,如果已经有了这个技能了就不添加了
Force, // 强制添加,如果已经有了这个技能了就覆盖掉原来的
AddTurnLimit, // 如果已经有了这个技能了,就增加回合限制,否则正常添加
AddLevel,// 如果已经有了这个技能了,就增加叠层数
RefreshSkillDict();
var skill = SkillFactory.GetSkillBySkillType(skillType);
if (skill == null) return;
Skills.Add(skill);
_skillDict[skillType] = skill;
}
public virtual void AddOrOverrideSkill(SkillBase skill)
{
if (_skillDict.ContainsKey(skill.GetSkillType())) return;
Skills.Add(skill);
_skillDict[skill.GetSkillType()] = skill;
}
// 添加技能的特殊方法 (这里默认了添加和覆盖都走统一接口)
public virtual void SpecialAddOrOverrideSkill(SkillType skillType, MapData mapData, SkillOverrideInfo overrideInfo)
{
}
//TODO Legacy 这是一个耦合方法,会被拆解
public virtual void AddSkill_Legacy(SkillType skillType, MapData mapData,bool IsPermanent,int turnLimit,bool IsLevel,int level,bool autoDisappear, AddSkillType addType, uint originId)
public virtual void AddSkill_Legacy(SkillType skillType, MapData mapData, bool IsPermanent, int turnLimit,
bool IsLevel, int level, bool autoDisappear, SpecialAddSkillType addType, uint originId)
{
RefreshSkillDict();
//如果技能已经存在
if (_skillDict.ContainsKey(skillType))
{
if (addType == AddSkillType.Normal) return;
if (addType == AddSkillType.AddTurnLimit)
if (addType == SpecialAddSkillType.Normal) return;
if (addType == SpecialAddSkillType.AddTurnLimit)
{
var skill = _skillDict[skillType];
//如果对方本来就是永久直接return
if(!skill.HasTimeLimit) return;
if (!skill.HasTimeLimit) return;
//否则让对方的limit增加
if(!IsPermanent)
if (!IsPermanent)
skill.AddTurnLimit((uint)turnLimit + 1);
return;
}
if (addType == AddSkillType.Force)
if (addType == SpecialAddSkillType.Force)
{
var skill = _skillDict[skillType];
skill.SetPermanent(IsPermanent);
if(!IsPermanent)
if (!IsPermanent)
skill.SetTurnsLimit((uint)turnLimit);
skill.SetIsLevel(IsLevel);
skill.SetAutoDisappear(autoDisappear);
@ -81,17 +98,19 @@ namespace RuntimeData
{
skill.SetLevel(0);
mapData.UnitMap.GetUnitDataByUnitId(originId, out var unitData);
skill.AddLevel(mapData,unitData,this as UnitData,level);
skill.AddLevel(mapData, unitData, this as UnitData, level);
}
return;
}
if (addType == AddSkillType.AddLevel)
if (addType == SpecialAddSkillType.AddLevel)
{
var skill = _skillDict[skillType];
//如果对方不是叠层技能直接return
if(!skill.HasLevel) return;
if (!skill.HasLevel) return;
mapData.UnitMap.GetUnitDataByUnitId(originId, out var unitData);
skill.AddLevel(mapData,unitData,this as UnitData,level);
skill.AddLevel(mapData, unitData, this as UnitData, level);
return;
}
}
@ -99,34 +118,18 @@ namespace RuntimeData
{
var skill = SkillFactory.GetSkillBySkillType(skillType);
if (skill == null) return;
Skills.Add(skill);
_skillDict[skillType] = skill;
if(!IsPermanent)skill.SetTurnsLimit((uint)turnLimit);
if (!IsPermanent) skill.SetTurnsLimit((uint)turnLimit);
if (IsLevel && mapData.UnitMap.GetUnitDataByUnitId(originId, out var unitData))
skill.AddLevel(mapData,unitData,this as UnitData,level);
skill.AddLevel(mapData, unitData, this as UnitData, level);
skill.OnSkillAdd(mapData, originId);
}
}
public virtual void AddSkill_Legacy(SkillType skillType, MapData mapData)
{
RefreshSkillDict();
var skill = SkillFactory.GetSkillBySkillType(skillType);
if (skill == null) return;
Skills.Add(skill);
_skillDict[skillType] = skill;
}
public virtual void AddSkill_Legacy(SkillBase skill)
{
if (_skillDict.ContainsKey(skill.GetSkillType())) return;
Skills.Add(skill);
_skillDict[skill.GetSkillType()] = skill;
}
//初始一个小兵,填加初始技能/国家科技标准的时候,使用这个
public virtual void AddInitSkill(SkillType skillType, MapData mapData)
{

View File

@ -1000,7 +1000,7 @@ namespace RuntimeData
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,AddSkillType.Force,0);
AddSkill_Legacy(SkillType.ScarletMistRealTimeVampire, map,true,-1,false,-1,false,SpecialAddSkillType.Force,0);
else
if(GetSkill(SkillType.ScarletMistRealTimeVampire,out var _))
RemoveSkill(SkillType.ScarletMistRealTimeVampire,map);

View File

@ -269,7 +269,7 @@ public class TechAtomInfo
//是否是生产unit的时候AddSkill的技能
public bool IsAddSkill;
public List<UnitFullType> AddSkillCondition;
public SkillType AddSkillType;
public SkillType SpecialAddSkillType;
public bool EnableAction;
public List<CommonActionId> TechActions;
public bool UseActionSprite;

View File

@ -1924,11 +1924,11 @@ namespace Logic.Action
var before = unit2.Health;
Main.UnitLogic.RecoverHealth(mapData, unit1, unit2, recover);
unit2.AddSkill_Legacy(SkillType.KAGUYAFRENCHSYNERGY, mapData,false,1,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
unit2.AddSkill_Legacy(SkillType.KAGUYAFRENCHSYNERGY, mapData,false,1,false,-1,false, SpecialAddSkillType.AddTurnLimit,0);
//如果溢出
if (unit2.Health - before < recover)
{
unit2.AddSkill_Legacy(SkillType.MOVERANGEUP,mapData,false,1,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
unit2.AddSkill_Legacy(SkillType.MOVERANGEUP,mapData,false,1,false,-1,false, SpecialAddSkillType.AddTurnLimit,0);
}
//Step #2 处理所有skill的 OnHealOther生命周期
@ -1941,7 +1941,7 @@ namespace Logic.Action
animSkillData = SkillType.KAGUYAFRENCHATTACK;
var lv = unit1.GetSkill(SkillType.KAGUYAFRENCHATTACKPRO, out var _) ? 9 : 1;
unit1.ClearAPMPCP();
unit2.AddSkill_Legacy(SkillType.KAGUYAFRENCHFOREVERBUFF, mapData,false,1,true,lv,false,IdentifierBase.AddSkillType.AddLevel,unit1.Id);
unit2.AddSkill_Legacy(SkillType.KAGUYAFRENCHFOREVERBUFF, mapData,false,1,true,lv,false, SpecialAddSkillType.AddLevel,unit1.Id);
//if (unit2.GetSkill(SkillType.KAGUYAFRENCHFOREVERBUFF, out var skill))
//skill.AddLevel(mapData, unit1, unit2, lv);

View File

@ -12,6 +12,7 @@ using System.Linq;
using Logic.AI;
using Logic.Audio;
using Logic.CrashSight;
using Logic.Skill;
using RuntimeData;
using TH1_Logic.Core;
using UnityEngine;
@ -174,7 +175,7 @@ namespace Logic.Action
newUnit.SetFullAPCPMP();
//TODO 这里是hard code
if(newUnit.UnitType == UnitType.MoriyaRider)
newUnit.AddSkill_Legacy(SkillType.SNEAK,actionParams.MapData,false,0,false,-1,false,IdentifierBase.AddSkillType.Force,newUnit.Id);
newUnit.AddSkill_Legacy(SkillType.SNEAK,actionParams.MapData,false,0,false,-1,false,SpecialAddSkillType.Force,newUnit.Id);
//判断是否要更新视觉
if (newUnit.InMainSight())
newUnit.Renderer(actionParams.MapData)?.RenderUpdateUnitGlow();

View File

@ -13,6 +13,7 @@ using System.Net;
using Logic.AI;
using Logic.Audio;
using Logic.CrashSight;
using Logic.Skill;
using RuntimeData;
using Steamworks;
using TH1_Core.Events;
@ -295,7 +296,7 @@ namespace Logic.Action
if (actionParams.MapData.AddUnitData(gridData.Id, capital.Id,
new UnitFullType(UnitType.RammerShip, GiantType.None, 0), out var unit))
{
unit.AddSkill_Legacy(SkillType.OFFICER,actionParams.MapData,true,-1,false,-1,false,IdentifierBase.AddSkillType.Normal,0);
unit.AddSkill_Legacy(SkillType.OFFICER,actionParams.MapData,true,-1,false,-1,false,SpecialAddSkillType.Normal,0);
unit.SetOfficer();
unit.Health = unit.GetMaxHealth();
//Main.UnitLogic.UnitTypeTransform(actionParams.MapData,unit,new UnitFullType(UnitType.RammerShip,GiantType.None,0));
@ -787,8 +788,8 @@ namespace Logic.Action
if(!actionParams.MapData.GetUnitDataByGid(grid.Id,out var targetUnit))continue;
if(!actionParams.MapData.GetPlayerDataByUnitId(targetUnit.Id, out var targetPlayer)) continue;
if(!actionParams.MapData.SameUnion(targetPlayer.Id,selfPlayer.Id)) continue;
targetUnit.AddSkill_Legacy(SkillType.MOVERANGEUP,actionParams.MapData,false,1,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
targetUnit.AddSkill_Legacy(SkillType.KAGUYAFRENCHSYNERGY,actionParams.MapData,false,1,false, -1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
targetUnit.AddSkill_Legacy(SkillType.MOVERANGEUP,actionParams.MapData,false,1,false,-1,false,SpecialAddSkillType.AddTurnLimit,0);
targetUnit.AddSkill_Legacy(SkillType.KAGUYAFRENCHSYNERGY,actionParams.MapData,false,1,false, -1,false,SpecialAddSkillType.AddTurnLimit,0);
if(targetUnit.Renderer(actionParams.MapData)?.InstantUpdateUnit(true)??false)
grid.Renderer(actionParams.MapData)?.PlayVFXInSight(new GridVFXParams(GridVFXType.TewiFrenchBuff));
}
@ -912,7 +913,7 @@ namespace Logic.Action
if(!actionParams.MapData.GetUnitDataByGid(grid.Id,out var targetUnit))continue;
if(!actionParams.MapData.GetPlayerDataByUnitId(targetUnit.Id, out var targetPlayer)) continue;
if(!actionParams.MapData.SameUnion(targetPlayer.Id,selfPlayer.Id)) continue;
targetUnit.AddSkill_Legacy(SkillType.KAGUYAFRENCHFOREVERBUFF, actionParams.MapData,false,1,true,1,true,IdentifierBase.AddSkillType.AddLevel, selfUnit.Id);
targetUnit.AddSkill_Legacy(SkillType.KAGUYAFRENCHFOREVERBUFF, actionParams.MapData,false,1,true,1,true,SpecialAddSkillType.AddLevel, selfUnit.Id);
//if (targetUnit.GetSkill(SkillType.KAGUYAFRENCHFOREVERBUFF, out var skill))
//skill.AddLevel(actionParams.MapData, selfUnit, targetUnit, 1);
@ -1214,7 +1215,7 @@ namespace Logic.Action
//Step #3 赋予buff
unit.AddSkill_Legacy(SkillType.REMILIABUFF3, actionParams.MapData,false,0,true,count,true,IdentifierBase.AddSkillType.AddLevel,unit.Id);
unit.AddSkill_Legacy(SkillType.REMILIABUFF3, actionParams.MapData,false,0,true,count,true,SpecialAddSkillType.AddLevel,unit.Id);
//if (unit.GetSkill(SkillType.REMILIABUFF3, out var skill))
//skill.AddLevel(actionParams.MapData, unit, unit, count);
@ -1274,7 +1275,7 @@ namespace Logic.Action
if (unit == null || !unit.Grid(actionParams.MapData,out var grid)) return false;
//Step #2 赋予buff
unit.AddSkill_Legacy(SkillType.KANAKOSITTING, actionParams.MapData,true,-1,false,-1,false,IdentifierBase.AddSkillType.Force,0);
unit.AddSkill_Legacy(SkillType.KANAKOSITTING, actionParams.MapData,true,-1,false,-1,false,SpecialAddSkillType.Force,0);
//Step #3 消耗CP(不需要消耗)
//unit.ClearAPMPCP();

View File

@ -155,12 +155,28 @@ namespace TH1_Logic.Config
}
}
private float _lastSaveTime;
private const float SaveInterval = 1f; // 最少间隔1秒写一次
public void Update()
{
if (Config == null || !Config.IsChanged) return;
string json = JsonUtility.ToJson(Config);
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(json);
FileTools.SafeWriteFile(Application.persistentDataPath + "/game_cfg.json", bytes);
if (Time.time - _lastSaveTime < SaveInterval) return;
try
{
string json = JsonUtility.ToJson(Config);
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(json);
string path = Application.persistentDataPath + "/game_cfg.json";
FileTools.SafeWriteFile(path, bytes);
Config.MarkSaved();
_lastSaveTime = Time.time;
}
catch (Exception e)
{
LogSystem.LogError($"[ConfigManager] 保存配置失败: {e.Message}");
}
}
}
@ -180,6 +196,11 @@ namespace TH1_Logic.Config
private bool _keyMomentEnabled;
private bool _isChanged;
public bool IsChanged => _isChanged;
public void MarkSaved()
{
_isChanged = false;
}
public MultilingualType MultilingualType

View File

@ -1048,12 +1048,12 @@ namespace Logic
//---------------------------------------------- tech相关操作 ------------------------------------
public void ResearchTech(MapData mapData, PlayerData playerData, TechType techType,int cost)
public void ResearchTech(MapData mapData, PlayerData playerData, TechType techType, int cost)
{
//如果已经有了这个科技,直接退出
if (playerData.TechTree.CheckIfHasTech(techType)) return;
if (playerData.PlayerTechPoint >= cost)
{
playerData.SpendTechPoint(cost);
@ -1061,27 +1061,27 @@ namespace Logic
}
else
{
playerData.SpendCoin( cost - playerData.PlayerTechPoint);
playerData.SpendCoin(cost - playerData.PlayerTechPoint);
playerData.SpendTechPoint(playerData.PlayerTechPoint);
//playerData.PlayerTechPoint = 0;
}
playerData.TechTree.LearnTech(techType, playerData);
// Collect 调用
CollectManager.Instance.LearnTechsCollect(mapData, playerData, techType);
//diplomacy科技特殊处理外交情况
if (techType == TechType.Diplomacy)
UpdateDiplomacySight(mapData, playerData);
foreach (var girdData in mapData.GridMap.GridList)
if(mapData.PlayerMap.SelfPlayerData.Sight.CheckIsInSight(girdData.Id))
if (mapData.PlayerMap.SelfPlayerData.Sight.CheckIsInSight(girdData.Id))
girdData.Renderer(mapData)?.InstantUpdateGrid(true);
//竹林驿站科技特殊处理城市联通情况 TODO 临时写法
if (techType == TechType.KaguyaRoad || techType == TechType.KanakoRoads)
Main.PlayerLogic.UpdateAllPlayerConnected(mapData);
var techInfo = Table.Instance.TechDataAssets.GetTechInfo(techType);
foreach (var techAtom in techInfo.TechAtomList)
{
@ -1094,9 +1094,11 @@ namespace Logic
{
if (!mapData.CheckUnitIdBelongPlayerId(unit.Id, playerData.Id)) continue;
if (!forAll && !condition.Contains(unit.UnitFullType)) continue;
unit.AddSkill_Legacy(atomInfo.AddSkillType, mapData,true,-1,false,-1,false,IdentifierBase.AddSkillType.Force,0);
unit.AddSkill_Legacy(atomInfo.SpecialAddSkillType, mapData, true, -1, false, -1, false,
SpecialAddSkillType.Force, 0);
//TODO 森林防御刷新视觉的临时写法
if(atomInfo.AddSkillType is SkillType.FORESTDEFENSE or SkillType.WATERDEFENSE or SkillType.OCEANDEFENSE or SkillType.MOUNTAINDEFENSE)
if (atomInfo.SpecialAddSkillType is SkillType.FORESTDEFENSE or SkillType.WATERDEFENSE
or SkillType.OCEANDEFENSE or SkillType.MOUNTAINDEFENSE)
unit.Renderer(mapData)?.RenderUpdateUnitDefense();
}
}

View File

@ -40,7 +40,7 @@ namespace Logic.Skill
//周围1格内的盟友
if(targetGrid.Unit(mapData,out var targetUnit) && targetUnit.Player(mapData,out var targetPlayer) && mapData.SameUnion(targetPlayer.Id,player.Id))
{
targetUnit.AddSkill_Legacy(SkillType.MOVERANGEUP,mapData,false,0,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
targetUnit.AddSkill_Legacy(SkillType.MOVERANGEUP,mapData,false,0,false,-1,false,SpecialAddSkillType.AddTurnLimit,0);
/*if (targetUnit.GetSkill(SkillType.MOVERANGEUP, out var moveSkill))
{
moveSkill.SetTurnsLimit(0);

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

@ -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 BonePileSkill : SkillBase
{
public BonePileSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.BONEPILE;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 7ad8196d60d74f85928e7793fc38cb99
timeCreated: 1772778237

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 CanHideSkill : SkillBase
{
public CanHideSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.CANHIDE;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: edc60fc8e6b54e98a9d98457843b928a
timeCreated: 1772778250

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 CorpseBuffSkill : SkillBase
{
public CorpseBuffSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.CORPSEBUFF;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 8eff4a21746446709434a1ad3c966ff2
timeCreated: 1772778241

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 CorpseBurnSkill : SkillBase
{
public CorpseBurnSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
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

@ -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 CorpseEffectSkill : SkillBase
{
public CorpseEffectSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.CORPSEEFFECT;
}
}
}

View File

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

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 CorpseFireSkill : SkillBase
{
public CorpseFireSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.CORPSEFIRE;
}
}
}

View File

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

View File

@ -61,7 +61,7 @@ namespace Logic.Skill
if (unit.UnitFullType.GiantType == GiantType.EgyptianFlandre &&
!unit.GetSkill(SkillType.FLANDREBUFF, out _))
{
unit.AddSkill_Legacy(SkillType.FLANDREBUFF, map,false,0,true,0,false,IdentifierBase.AddSkillType.Normal,0);
unit.AddSkill_Legacy(SkillType.FLANDREBUFF, map,false,0,true,0,false,SpecialAddSkillType.Normal,0);
}
}
_staticLevel += add;

View File

@ -30,7 +30,7 @@ namespace Logic.Skill
public override void OnDamageOther(MapData mapData, SettlementInfo info)
{
if (!info.IsKill || !info.DamageOrigin.IsAlive()) return;
info.DamageOrigin.AddSkill_Legacy(SkillType.FLANDREBUFF, mapData,false,0,true,1,true,IdentifierBase.AddSkillType.AddLevel,info.DamageOrigin.Id);
info.DamageOrigin.AddSkill_Legacy(SkillType.FLANDREBUFF, mapData,false,0,true,1,true,SpecialAddSkillType.AddLevel,info.DamageOrigin.Id);
//info.DamageOrigin.GetSkill(SkillType.FLANDREBUFF, out var skill);
//skill?.AddLevel(mapData, info.DamageOrigin, info.DamageOrigin, 1);
}

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 HideStateSkill : SkillBase
{
public HideStateSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.HIDESTATE;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 505514e228c8489db444e8fda2a34a23
timeCreated: 1772778246

View File

@ -32,7 +32,7 @@ namespace Logic.Skill
if (info.DamageOrigin == null || info.DamageTarget == null) return;
if (info.DamageType != DamageType.ActiveAttack && info.DamageType != DamageType.Splash) return;
info.DamageTarget.AddSkill_Legacy(SkillType.KAGUYAFRENCHSYNERGYDEBUFF, mapData,false,0,true,1,true,IdentifierBase.AddSkillType.AddTurnLimit,info.DamageOrigin.Id);
info.DamageTarget.AddSkill_Legacy(SkillType.KAGUYAFRENCHSYNERGYDEBUFF, mapData,false,0,true,1,true,SpecialAddSkillType.AddTurnLimit,info.DamageOrigin.Id);
//info.DamageTarget.GetSkill(SkillType.KAGUYAFRENCHSYNERGYDEBUFF, out var skill);
//if (skill == null) return;
//skill.AddLevel(mapData, info.DamageOrigin, info.DamageTarget, 1);

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 KoishiAutoSkill : SkillBase
{
public KoishiAutoSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.KOISHIAUTO;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: dcac74c6cc8d4e7f9d23f42e9b537d93
timeCreated: 1772778261

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

@ -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 KoishiDeathFearSkill : SkillBase
{
public KoishiDeathFearSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.KOISHIDEATHFEAR;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 38eb4188dc8b4cbcb7dddb19278b492b
timeCreated: 1772778270

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 KoishiFreeSkill : SkillBase
{
public KoishiFreeSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.KOISHIFREE;
}
}
}

View File

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

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 KoishiRespawnSkill : SkillBase
{
public KoishiRespawnSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.KOISHIRESPAWN;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 99303b0111264862beb589bc91139b07
timeCreated: 1772778254

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 KomeijiFearSkill : SkillBase
{
public KomeijiFearSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.KOMEIJIFEAR;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: e5f6dc59679946a99be146eaa07ef9ca
timeCreated: 1772778214

View File

@ -30,7 +30,7 @@ namespace Logic.Skill
public override void AfterActiveAttacked(MapData mapData, UnitData origin, UnitData target)
{
target.AddSkill_Legacy(SkillType.ATTACKUP, mapData,false,1,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
target.AddSkill_Legacy(SkillType.ATTACKUP, mapData,false,1,false,-1,false,SpecialAddSkillType.AddTurnLimit,0);
}
}
}

View File

@ -65,7 +65,7 @@ namespace Logic.Skill
}
if (!aroundHero) return;
info.DamageTarget.AddSkill_Legacy(SkillType.CANTMOVE, mapData,false,1,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0
info.DamageTarget.AddSkill_Legacy(SkillType.CANTMOVE, mapData,false,1,false,-1,false,SpecialAddSkillType.AddTurnLimit,0
);
}
}

View File

@ -49,9 +49,9 @@ namespace Logic.Skill
if (!mapData.AddUnitData(grid.Id, city.Id, FullType, out var newUnit)) return;
if (FullType.UnitLevel > 1)
{
newUnit.AddSkill_Legacy(SkillType.MOVERANGEUP, mapData,true,-1,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
newUnit.AddSkill_Legacy(SkillType.ATTACKRANGEUP, mapData,true,-1,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
newUnit.AddSkill_Legacy(SkillType.ATTACKAFTERKILL, mapData,true,-1,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
newUnit.AddSkill_Legacy(SkillType.MOVERANGEUP, mapData,true,-1,false,-1,false,SpecialAddSkillType.AddTurnLimit,0);
newUnit.AddSkill_Legacy(SkillType.ATTACKRANGEUP, mapData,true,-1,false,-1,false,SpecialAddSkillType.AddTurnLimit,0);
newUnit.AddSkill_Legacy(SkillType.ATTACKAFTERKILL, mapData,true,-1,false,-1,false,SpecialAddSkillType.AddTurnLimit,0);
}
newUnit.SetFullAPCPMP();

View File

@ -41,7 +41,7 @@ namespace Logic.Skill
if (!unit.Player(mapData, out var targetPlayer)) continue;
if (!mapData.SameUnion(targetPlayer.Id, player.Id)) continue;
unit.AddSkill_Legacy(SkillType.MOMIJIHUNTER, mapData, false, 0, false, -1, false,
IdentifierBase.AddSkillType.AddTurnLimit, 0);
SpecialAddSkillType.AddTurnLimit, 0);
//unit.GetSkill(SkillType.MOMIJIHUNTER, out var skill);
//skill?.SetTurnsLimit(0);
}

View File

@ -75,7 +75,7 @@ namespace Logic.Skill
}
//Step #4 填加标记,时间戳rank设置为最大+1
target.AddSkill_Legacy(SkillType.MOMIJIPREY,mapData,false,1,false,-1,false,IdentifierBase.AddSkillType.Force,0);
target.AddSkill_Legacy(SkillType.MOMIJIPREY,mapData,false,1,false,-1,false,SpecialAddSkillType.Force,0);
target.GetSkill(SkillType.MOMIJIPREY,out var targetSkill);
//targetSkill?.SetTurnsLimit(1);
var tp = targetSkill as MomijiPreySkill;

View File

@ -43,7 +43,7 @@ namespace Logic.Skill
if (grid == null) return;
foreach (var around in mapData.GridMap.GetAroundGridData(1, 1, grid))
{
around.AddSkill_Legacy(SkillType.GRIDMOMIJIPREY, mapData, false,1,false,-1,false,IdentifierBase.AddSkillType.Force,originId);
around.AddSkill_Legacy(SkillType.GRIDMOMIJIPREY, mapData, false,1,false,-1,false,SpecialAddSkillType.Force,originId);
}
}
}

View File

@ -35,7 +35,7 @@ namespace Logic.Skill
var grid = self.Grid(mapData);
if (grid == null) return;
if (grid.Feature != TerrainFeature.Mountain) return;
self.AddSkill_Legacy(SkillType.SNEAK, mapData,false,0,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
self.AddSkill_Legacy(SkillType.SNEAK, mapData,false,0,false,-1,false,SpecialAddSkillType.AddTurnLimit,0);
//self.GetSkill(SkillType.SNEAK, out var sneakSkill);
//if (sneakSkill == null) return;
//sneakSkill.SetTurnsLimit(0);

View File

@ -44,7 +44,7 @@ namespace Logic.Skill
return;
}
self.AddSkill_Legacy(SkillType.PATCHOULIREST, mapData,true,-1,true,1,false,IdentifierBase.AddSkillType.AddLevel,self.Id);
self.AddSkill_Legacy(SkillType.PATCHOULIREST, mapData,true,-1,true,1,false,SpecialAddSkillType.AddLevel,self.Id);
//self.GetSkill(SkillType.PATCHOULIREST, out var skill);
//if (skill == null) return;
//skill.AddLevel(mapData, self, self, 1);

View File

@ -44,7 +44,7 @@ namespace Logic.Skill
_moveFlag = false;
return;
}
self.AddSkill_Legacy(SkillType.PATCHOULIREST, mapData,true,-1,true,1,false,IdentifierBase.AddSkillType.AddLevel,self.Id);
self.AddSkill_Legacy(SkillType.PATCHOULIREST, mapData,true,-1,true,1,false,SpecialAddSkillType.AddLevel,self.Id);
//self.GetSkill(SkillType.PATCHOULIREST, out var skill);
//if (skill == null) return;
//skill.AddLevel(mapData, self, self, 1);

View File

@ -40,7 +40,7 @@ namespace Logic.Skill
}
if (grid.Terrain != TerrainType.Land) return;
self.AddSkill_Legacy(SkillType.PATCHOULIEARTH, mapData,true,-1,true,1,true,IdentifierBase.AddSkillType.AddLevel,self.Id);
self.AddSkill_Legacy(SkillType.PATCHOULIEARTH, mapData,true,-1,true,1,true,SpecialAddSkillType.AddLevel,self.Id);
//self.GetSkill(SkillType.PATCHOULIEARTH, out var earth);
//earth?.AddLevel(mapData, self, self, 1);
@ -48,14 +48,14 @@ namespace Logic.Skill
foreach (var gridData in roundGrid)
{
if (gridData.Terrain == TerrainType.Land) continue;
self.AddSkill_Legacy(SkillType.PATCHOULIWATER, mapData,true,-1,true,1,true,IdentifierBase.AddSkillType.AddLevel,self.Id);
self.AddSkill_Legacy(SkillType.PATCHOULIWATER, mapData,true,-1,true,1,true,SpecialAddSkillType.AddLevel,self.Id);
//self.GetSkill(SkillType.PATCHOULIWATER, out var water);
//water?.AddLevel(mapData, self, self, 1);
}
if (grid.Feature == TerrainFeature.Mountain)
{
self.AddSkill_Legacy(SkillType.PATCHOULIMETAL, mapData,true,-1,true,1,true,IdentifierBase.AddSkillType.AddLevel,self.Id);
self.AddSkill_Legacy(SkillType.PATCHOULIMETAL, mapData,true,-1,true,1,true,SpecialAddSkillType.AddLevel,self.Id);
//self.GetSkill(SkillType.PATCHOULIMETAL, out var metal);
//metal?.AddLevel(mapData, self, self, 1);
}
@ -67,7 +67,7 @@ namespace Logic.Skill
if (mapData.SameUnion(player.Id,selfPlayer.Id)) continue;
if (!city.Territory.CheckIsInTerritory(grid.Id)) continue;
self.AddSkill_Legacy(SkillType.PATCHOULIFIRE, mapData,true,-1,true,1,true,IdentifierBase.AddSkillType.AddLevel,self.Id);
self.AddSkill_Legacy(SkillType.PATCHOULIFIRE, mapData,true,-1,true,1,true,SpecialAddSkillType.AddLevel,self.Id);
//self.GetSkill(SkillType.PATCHOULIFIRE, out var fire);
//fire?.AddLevel(mapData, self, self, 1);
break;
@ -75,7 +75,7 @@ namespace Logic.Skill
if (grid.Vegetation == Vegetation.Trees)
{
self.AddSkill_Legacy(SkillType.PATCHOULIWOOD, mapData,true,-1,true,1,true,IdentifierBase.AddSkillType.AddLevel,self.Id);
self.AddSkill_Legacy(SkillType.PATCHOULIWOOD, mapData,true,-1,true,1,true,SpecialAddSkillType.AddLevel,self.Id);
//self.GetSkill(SkillType.PATCHOULIWOOD, out var wood);
//wood?.AddLevel(mapData, self, self, 1);
}

View File

@ -41,7 +41,7 @@ namespace Logic.Skill
if (grid.Terrain != TerrainType.Land) return;
self.AddSkill_Legacy(SkillType.PATCHOULIEARTH, mapData,true,-1,true,1,true,IdentifierBase.AddSkillType.AddLevel,self.Id);
self.AddSkill_Legacy(SkillType.PATCHOULIEARTH, mapData,true,-1,true,1,true,SpecialAddSkillType.AddLevel,self.Id);
//self.GetSkill(SkillType.PATCHOULIEARTH, out var earth);
//earth?.AddLevel(mapData, self, self, 1);
@ -49,14 +49,14 @@ namespace Logic.Skill
foreach (var gridData in roundGrid)
{
if (gridData.Terrain == TerrainType.Land) continue;
self.AddSkill_Legacy(SkillType.PATCHOULIWATER, mapData,true,-1,true,1,true,IdentifierBase.AddSkillType.AddLevel,self.Id);
self.AddSkill_Legacy(SkillType.PATCHOULIWATER, mapData,true,-1,true,1,true,SpecialAddSkillType.AddLevel,self.Id);
//self.GetSkill(SkillType.PATCHOULIWATER, out var water);
//water?.AddLevel(mapData, self, self, 1);
}
if (grid.Feature == TerrainFeature.Mountain)
{
self.AddSkill_Legacy(SkillType.PATCHOULIMETAL, mapData,true,-1,true,1,true,IdentifierBase.AddSkillType.AddLevel,self.Id);
self.AddSkill_Legacy(SkillType.PATCHOULIMETAL, mapData,true,-1,true,1,true,SpecialAddSkillType.AddLevel,self.Id);
//self.GetSkill(SkillType.PATCHOULIMETAL, out var metal);
//metal?.AddLevel(mapData, self, self, 1);
}

View File

@ -44,7 +44,7 @@ namespace Logic.Skill
MapRenderer.Instance.ProjectileManager.CreateProjectile(unit.GetPosition(mapData),target.GetPosition(mapData),ProjectileType.ReisenAttack);
count++;
}
target.AddSkill_Legacy(SkillType.KAGUYAFRENCHSYNERGYDEBUFF, mapData,false,0,true,count,true,IdentifierBase.AddSkillType.AddLevel,origin.Id);
target.AddSkill_Legacy(SkillType.KAGUYAFRENCHSYNERGYDEBUFF, mapData,false,0,true,count,true,SpecialAddSkillType.AddLevel,origin.Id);
//target.GetSkill(SkillType.KAGUYAFRENCHSYNERGYDEBUFF, out var debuffSkill);
//debuffSkill.AddLevel(mapData, origin, target, count);
if (origin.UnitLevel >= 3)

View File

@ -66,7 +66,7 @@ namespace Logic.Skill
if (unit == null || unit == self) continue;
if (!unit.TreatedAsHero(mapData,self)) continue;
if (!selfUnitList.Contains(unit)) continue;
unit.AddSkill_Legacy(SkillType.SAKUYAGUARD, mapData,false,1,false,-1,false,IdentifierBase.AddSkillType.Force,0);
unit.AddSkill_Legacy(SkillType.SAKUYAGUARD, mapData,false,1,false,-1,false,SpecialAddSkillType.Force,0);
isExcute = true;
if (!_heroSet.Contains(unit.Id))
{

View File

@ -56,7 +56,7 @@ namespace Logic.Skill
if (unit == null || unit == self) continue;
if (!unit.TreatedAsHero(mapData,self)) continue;
if (!selfUnitList.Contains(unit)) continue;
unit.AddSkill_Legacy(SkillType.SAKUYAGUARD, mapData,false,1,false, -1,false,IdentifierBase.AddSkillType.Force,0);
unit.AddSkill_Legacy(SkillType.SAKUYAGUARD, mapData,false,1,false, -1,false,SpecialAddSkillType.Force,0);
isExcute = true;
}

View File

@ -73,7 +73,7 @@ namespace Logic.Skill
}
else
{
target.AddSkill_Legacy(skill,mapData,false,1,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,origin.Id);
target.AddSkill_Legacy(skill,mapData,false,1,false,-1,false,SpecialAddSkillType.AddTurnLimit,origin.Id);
if (divine == SanaeDivineType.BigLucky)
{
BigLucky(mapData, origin,target.Grid(mapData),1.1f * i);
@ -99,7 +99,7 @@ namespace Logic.Skill
}
else
{
target.AddSkill_Legacy(skill,mapData,false,1,false, -1,false,IdentifierBase.AddSkillType.AddTurnLimit,origin.Id);
target.AddSkill_Legacy(skill,mapData,false,1,false, -1,false,SpecialAddSkillType.AddTurnLimit,origin.Id);
if (divine == SanaeDivineType.BigLucky)
{
origin.SetFullAPCPMP_AllSkillRefresh();
@ -137,7 +137,7 @@ namespace Logic.Skill
else
{
//skill = SkillType.DIVINE_E4_KILL;
info.DamageTarget.AddSkill_Legacy(skill,mapData,false,1,false, -1,false, IdentifierBase.AddSkillType.AddTurnLimit,info.DamageOrigin.Id);
info.DamageTarget.AddSkill_Legacy(skill,mapData,false,1,false, -1,false, SpecialAddSkillType.AddTurnLimit,info.DamageOrigin.Id);
if (divine == SanaeDivineType.BigLucky)
{
BigLucky(mapData, info.DamageOrigin,info.DamageTargetGrid,1.1f * i);
@ -165,7 +165,7 @@ namespace Logic.Skill
else
{
//skill = SkillType.DIVINE_E4_KILL;
info.DamageTarget.AddSkill_Legacy(skill,mapData,false,1,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,info.DamageOrigin.Id);
info.DamageTarget.AddSkill_Legacy(skill,mapData,false,1,false,-1,false,SpecialAddSkillType.AddTurnLimit,info.DamageOrigin.Id);
if (divine == SanaeDivineType.BigLucky)
{
info.DamageOrigin.SetFullAPCPMP_AllSkillRefresh();

View File

@ -39,7 +39,7 @@ namespace Logic.Skill
var unit = around.Unit(mapData);
if (unit == null || !unit.IsAlive()) continue;
if (!mapData.IsLeagueUnitByUnit(unit.Id, self.Id)) continue;
unit.AddSkill_Legacy(SkillType.SANAEWINDX, mapData,false,0,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
unit.AddSkill_Legacy(SkillType.SANAEWINDX, mapData,false,0,false,-1,false,SpecialAddSkillType.AddTurnLimit,0);
if(self.Player(mapData).PlayerHeroData.GetHeroTask(GiantType.GermanySanae, out var task))
task.OnAddSkillLevels(mapData,SkillType.SANAEWINDX,1);

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 SatoriBanSkill : SkillBase
{
public SatoriBanSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.SATORIBAN;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 263b3615f4a54f3ba5f824b165fb23d2
timeCreated: 1772778223

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 SatoriSeeSkill : SkillBase
{
public SatoriSeeSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.SATORISEE;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 775cd3d481574e78b27ba1949e13fd21
timeCreated: 1772778219

View File

@ -33,7 +33,7 @@ namespace Logic.Skill
public override void OnDamageOther(MapData mapData, SettlementInfo info)
{
if (info.DamageType != DamageType.ActiveAttack) return;
info.DamageOrigin.AddSkill_Legacy(SkillType.ScarletMistRealTimeVampireDebuff,mapData,false,0,false,-1,false, IdentifierBase.AddSkillType.Force,0);
info.DamageOrigin.AddSkill_Legacy(SkillType.ScarletMistRealTimeVampireDebuff,mapData,false,0,false,-1,false, SpecialAddSkillType.Force,0);
}
// public override void OnDamageOther(MapData mapData, SettlementInfo info)

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 SkillBanBombSkill : SkillBase
{
public SkillBanBombSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.SKILLBANBOMB;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 442ff135915a42c78059e623b6c61001
timeCreated: 1772778233

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 SkillBanSkill : SkillBase
{
public SkillBanSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.SKILLBAN;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 84cc5c6711f14b1d8678b1cfb744db97
timeCreated: 1772778228

View File

@ -33,7 +33,7 @@ namespace Logic.Skill
if (self == null) return;
var grid = self.Grid(mapData);
if (grid.Feature != TerrainFeature.Mountain) return;
self.AddSkill_Legacy(SkillType.MOVERANGEUP, mapData,false,0,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
self.AddSkill_Legacy(SkillType.MOVERANGEUP, mapData,false,0,false,-1,false,SpecialAddSkillType.AddTurnLimit,0);
}
public override bool ReservedOnTransform(UnitData self, UnitFullType fullType)

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

@ -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 UtsuhoBoneMakerSkill : SkillBase
{
public UtsuhoBoneMakerSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.UTSUHOBONEMAKER;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: db55021f01b24becb81ad2b420dfe8dc
timeCreated: 1772778350

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 UtsuhoDelayActSkill : SkillBase
{
public UtsuhoDelayActSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.UTSUHODELAYACT;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: a537917b23414f10af07524eefa1c6ef
timeCreated: 1772778333

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

@ -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 UtsuhoRadiationSkill : SkillBase
{
public UtsuhoRadiationSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.UTSUHORADIATION;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 463ec7403b94474781479d7bee38c583
timeCreated: 1772778345

View File

@ -37,7 +37,7 @@ namespace Logic.Skill
foreach (var grid in roundGrid)
{
if (!mapData.GetUnitDataByGid(grid.Id, out var unit)) continue;
unit.AddSkill(SkillType.SPEEDUP, mapData,false,0,false,-1,false,IdentifierBase.AddSkillType.AddTurnLimit,0);
unit.AddSkill(SkillType.SPEEDUP, mapData,false,0,false,-1,false,SpecialAddSkillType.AddTurnLimit,0);
}
}*/
}

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

@ -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 YuugiDashProSkill : SkillBase
{
public YuugiDashProSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.YUUGIDASHPRO;
}
}
}

View File

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

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 YuugiPushSkill : SkillBase
{
public YuugiPushSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 4;
}
public override SkillType GetSkillType()
{
return SkillType.YUUGIPUSH;
}
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 6d2b9100e4ab45dba709f1d993928499
timeCreated: 1772778359

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Some files were not shown because too many files have changed in this diff Show More