CTT/Server/Hotfix/Game/SkillSystem/NewSkill/Component/SkillOptions/SkillOptionLogic_护盾.cs

48 lines
2.5 KiB
C#
Raw Normal View History

2021-04-11 19:50:39 +08:00
using System.Collections.Generic;
using Cal;
2021-04-08 20:09:59 +08:00
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;
2021-04-11 19:50:39 +08:00
ModifierLogic modifierLogic = modifierSkillSender.modifierLogic;
2021-04-08 20:09:59 +08:00
if (modifierLogic == null)
return;
2021-04-11 19:50:39 +08:00
BattleHelper.Calculate(SkillDamageType., skillSender, target, skillOption.treatCalculate_Self, skillOption.treatCalculate_Target, out BallisticData data);
2021-04-08 20:09:59 +08:00
modifierLogic.shield = MathHelper.RoundToInt(data.value);
if (data.isCrit && skillOption.isCritEvent)
{
2021-04-11 19:50:39 +08:00
Dictionary<ModifierEventCondition, SkillOptionBase[]> dic = modifierLogic.modifierConfig.modifierEventDic;
2021-04-08 20:09:59 +08:00
if (dic != null &&
2021-04-11 19:50:39 +08:00
dic.TryGetValue(ModifierEventCondition.modifier, out SkillOptionBase[] optionBaseList1))
foreach (SkillOptionBase item in optionBaseList1)
2021-04-08 20:09:59 +08:00
{
2021-04-11 19:50:39 +08:00
SkillOptionLogicBase skillOptionLogicBase = SkillOptionFactory.AcquireSkillOptionLogic(item);
2021-04-08 20:09:59 +08:00
modifierLogic.skillLogic.skillOptionLogics.Add(skillOptionLogicBase);
skillOptionLogicBase.HandleEvent(modifierSkillSender);
}
if (dic != null &&
2021-04-11 19:50:39 +08:00
dic.TryGetValue(ModifierEventCondition.modifier, out SkillOptionBase[] optionBaseList2))
foreach (SkillOptionBase item in optionBaseList2)
2021-04-08 20:09:59 +08:00
{
2021-04-11 19:50:39 +08:00
SkillOptionLogicBase skillOptionLogicBase = SkillOptionFactory.AcquireSkillOptionLogic(item);
2021-04-08 20:09:59 +08:00
modifierLogic.skillLogic.skillOptionLogics.Add(skillOptionLogicBase);
skillOptionLogicBase.HandleEvent(modifierSkillSender);
}
}
});
}
}
}