2026-04-11 23:53:18 +08:00

99 lines
2.1 KiB
C#

/*
* @Author: 白哉
* @Description:
* @Date: 2025年11月15日 星期五
* @Modify:
*/
using System;
using MemoryPack;
using RuntimeData;
namespace Logic.Skill
{
public partial class OfficerSkill : SkillBase
{
public int _kill = 0;
public bool _isOfficer;
public OfficerSkill()
{
IsPermanent = true;
TurnsLimit = 0;
Score = 2;
_kill = 0;
_isOfficer = false;
}
public override SkillType GetSkillType()
{
return SkillType.OFFICER;
}
public override bool ReservedOnTransformBoat(UnitData self, UnitFullType fullType)
{
return true;
}
public override void GetSkillCopy(SkillBase skill)
{
base.GetSkillCopy(skill);
if (skill is OfficerSkill officer)
{
officer._kill = _kill;
officer._isOfficer = _isOfficer;
}
}
public override void DeepCopy(SkillBase copySkill)
{
base.DeepCopy(copySkill);
if (copySkill is OfficerSkill officer)
{
_kill = officer._kill;
_isOfficer = officer._isOfficer;
}
}
public override void OnDamageOther(MapData mapData, SettlementInfo info)
{
if (info.DamageOrigin == null || info.DamageTarget == null|| !info.IsKill) return;
if (info.DamageOrigin.IsOnCarry()) return;
_kill++;
}
public override bool IsCanBeOfficer()
{
return !_isOfficer && _kill >= 3;
}
public override int GetKillCount()
{
return _kill;
}
public override int GetOfficerHealth()
{
return _isOfficer ? 5 : 0;
}
public override void SetOfficer()
{
_kill = 3;
_isOfficer = true;
}
public override bool IsPrepareOfficer()
{
return true;
}
public override bool IsOfficer()
{
return _isOfficer;
}
}
}