57 lines
1.9 KiB
C#
57 lines
1.9 KiB
C#
/*
|
|
* @Author: 白哉
|
|
* @Description:
|
|
* @Date: 2025年04月23日 星期三 21:04:18
|
|
* @Modify:
|
|
*/
|
|
|
|
|
|
using RuntimeData;
|
|
using System;
|
|
using UnityEngine;
|
|
using MemoryPack;
|
|
|
|
|
|
namespace Logic.Skill
|
|
{
|
|
public partial class KaguyaFrenchSynergySkill : SkillBase
|
|
{
|
|
public KaguyaFrenchSynergySkill()
|
|
{
|
|
IsPermanent = true;
|
|
TurnsLimit = 0;
|
|
}
|
|
|
|
public override SkillType GetSkillType()
|
|
{
|
|
return SkillType.KAGUYAFRENCHSYNERGY;
|
|
}
|
|
|
|
public override void OnDamageOther(MapData mapData, SettlementInfo info)
|
|
{
|
|
if (info.DamageOrigin == null || info.DamageTarget == null) return;
|
|
if (info.DamageType != DamageType.ActiveAttack) return;
|
|
if (info.IsKill) return;
|
|
|
|
info.DamageTarget.AddSkill(SkillType.KAGUYAFRENCHSYNERGYDEBUFF);
|
|
info.DamageTarget.GetSkill(SkillType.KAGUYAFRENCHSYNERGYDEBUFF, out var skill);
|
|
if (skill == null) return;
|
|
|
|
skill.AddLevel(mapData, info.DamageOrigin, info.DamageTarget, 1);
|
|
if (info.DamageOrigin.GetSkill(SkillType.REISENILLUSION, out var _) ||
|
|
info.DamageOrigin.GetSkill(SkillType.REISENILLUSIONPRO, out var _))
|
|
{
|
|
var player = info.DamageOrigin.Player(mapData);
|
|
if(player != null && player.PlayerHeroData.GetHeroTask(GiantType.FrenchReisen, out var task))
|
|
task.OnAddSkillLevels(mapData,SkillType.KAGUYAFRENCHSYNERGYDEBUFF,1);
|
|
}
|
|
}
|
|
|
|
public override float GetAttackAdditionParam(MapData mapData, UnitData self, UnitData target = null)
|
|
{
|
|
if (target == null) return 0;
|
|
if (!target.GetSkill(SkillType.KAGUYAFRENCHSYNERGYDEBUFF, out var skill)) return 0;
|
|
return skill.Level * 0.5f * self.GetSpecialSkillBonus(mapData, GetSkillType());
|
|
}
|
|
}
|
|
} |