47 lines
2.3 KiB
C#
47 lines
2.3 KiB
C#
|
using Cal;
|
|||
|
namespace ET
|
|||
|
{
|
|||
|
public class SkillOptionLogic_护盾 : SkillOptionLogicBase
|
|||
|
{
|
|||
|
public override SkillOptionType skillOptionType => SkillOptionType.护盾;
|
|||
|
public override SkillOptionBase skillOptionBase { get; set; }
|
|||
|
|
|||
|
SkillOption_护盾 skillOption;
|
|||
|
public override void HandleEvent(ISkillSender skillSender)
|
|||
|
{
|
|||
|
skillOption = skillOptionBase.As<SkillOption_护盾>();
|
|||
|
SelectTargetHelper.GetTarget(skillOption.selectTarget, skillSender, (target, skillSender) =>
|
|||
|
{
|
|||
|
if (!(skillSender is ModifierSkillSender modifierSkillSender))
|
|||
|
return;
|
|||
|
var modifierLogic = modifierSkillSender.modifierLogic;
|
|||
|
if (modifierLogic == null)
|
|||
|
return;
|
|||
|
BattleHelper.Calculate(SkillDamageType.护盾治疗, skillSender, target, skillOption.treatCalculate_Self, skillOption.treatCalculate_Target, out var data);
|
|||
|
modifierLogic.shield = MathHelper.RoundToInt(data.value);
|
|||
|
|
|||
|
if (data.isCrit && skillOption.isCritEvent)
|
|||
|
{
|
|||
|
var dic = modifierLogic.modifierConfig.modifierEventDic;
|
|||
|
if (dic != null &&
|
|||
|
dic.TryGetValue(ModifierEventCondition.当拥有modifier的单位暴击时, out var optionBaseList1))
|
|||
|
foreach (var item in optionBaseList1)
|
|||
|
{
|
|||
|
var skillOptionLogicBase = SkillOptionFactory.AcquireSkillOptionLogic(item);
|
|||
|
modifierLogic.skillLogic.skillOptionLogics.Add(skillOptionLogicBase);
|
|||
|
skillOptionLogicBase.HandleEvent(modifierSkillSender);
|
|||
|
}
|
|||
|
if (dic != null &&
|
|||
|
dic.TryGetValue(ModifierEventCondition.当拥有modifier的单位被暴击时, out var optionBaseList2))
|
|||
|
foreach (var item in optionBaseList2)
|
|||
|
{
|
|||
|
var skillOptionLogicBase = SkillOptionFactory.AcquireSkillOptionLogic(item);
|
|||
|
modifierLogic.skillLogic.skillOptionLogics.Add(skillOptionLogicBase);
|
|||
|
skillOptionLogicBase.HandleEvent(modifierSkillSender);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
});
|
|||
|
}
|
|||
|
}
|
|||
|
}
|