99 lines
2.1 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
|