using CommonAI.Zone; using CommonAI.Zone.Helper; using CommonAI.Zone.Instance; using System; using System.Diagnostics; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.Buffs; namespace XmdsCommonSkill.Plugin.Skills.Remedy { /// /// 治疗, 三技能 3- 4(此技能打中敌人后的第一下普攻会造成一个等范围的飞花伤害,飞花伤害为此技能伤害的X%+基础普攻(不暴击)) /// public class Remedy_510340 : Remedy_510300 { public static readonly int ID = 510340; public static readonly int Buff_ID_3_4 = (int)XmdsBuffBase.XmdsBuffList.REMEDY_3_4_TAG; public override int SkillID { get { return ID; } } protected XmdsSkillValue valueSet2; //扩展,飞花标记时间 protected XmdsSkillValue valueSet5; // 数值 public int normalAtkDmgAddition; //用于区别父类与子类的,不算玩家独有数据 protected bool firstHitAddBuf = true; private bool isFirstHitPlayer = true; protected override void OnSkillDamagePerEvent(BattleParams param) { if(param.AtkProp.DamagePerID == 1) { base.OnSkillDamagePerEvent(param); } else { param.SkillDamagePer = CalDamagePer(valueSet2, param.GameSkill.TalentSkillLevel1); } } protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { base.OnInit(info, unit, ref template); XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID_3_4); BuffTemplate bt = pack.mBuffTemplate; bt.IsHarmful = false; bt.LifeTimeMS = valueSet5.GetValue(info.TalentSkillLevel1); pack.BindTemplateAndDispose(); unit.RegistSendBuff(bt); unit.RegistLaunchSkillOver(OnLaunchSkillOver, info); this.normalAtkDmgAddition = valueSet2.GetValue(info.TalentSkillLevel1); } public override int GetSkillValue(AbstractSkillType type) { return this.normalAtkDmgAddition; } protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit) { base.OnSkillDataChange(gs, unit); this.normalAtkDmgAddition = valueSet2.GetValue(gs.TalentSkillLevel1); var bt = unit.GetRegistBuff(Buff_ID_3_4); bt.LifeTimeMS = valueSet5.GetValue(gs.TalentSkillLevel1); } private int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState state) { this.isFirstHitPlayer = true; return 0; } protected override void OnSkillLogicEvent(BattleParams param) { base.OnSkillLogicEvent(param); if (this.isFirstHitPlayer && firstHitAddBuf) { this.isFirstHitPlayer = false; //自己给自己加一个标记buff param.Attacker.mUnit.AddBuff(Buff_ID_3_4, param.Attacker.mUnit); } } protected override void OnInitOver(XmdsVirtual unit, GameSkill info) { unit.ReInitOverBaseSkill(info); } protected override void OnInitConfig() { XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID); base.InitBaseConfig(data); InitData(data, out valueSet, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out valueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2); // 扩展配置 InitData(data, out valueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5); } } }