using CommonAI.Zone; using CommonAI.Zone.Helper; using CommonAI.Zone.Instance; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.Buffs; namespace XmdsCommonSkill.Plugin.Skills.Remedy { /// /// 治疗:二技能: 2-1 (技能释放时获得一个护盾) /// public class Remedy_510210 : Remedy_510200 { private static readonly int ID = 510210; private static readonly int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.REMEDY_2_1_DEFENCEUP; public override int SkillID { get { return ID; } } // 防御提升 protected XmdsSkillValue valueSet2; protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { base.OnInit(info, unit, ref template); XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID); var buff = (XmdsBuff_PropChange)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.PropChange); buff.CurentChangeType = XmdsVirtual.UnitAttributeType.Defence; buff.IsPercent = true; buff.CurrentValue = valueSet2.GetValue(info.TalentSkillLevel1, 1); BuffTemplate bt = pack.mBuffTemplate; bt.IsHarmful = false; bt.LifeTimeMS = valueSet2.GetValue(info.TalentSkillLevel1, 2); pack.BindTemplateAndDispose(); unit.RegistSendBuff(bt); } protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit) { base.OnSkillDataChange(gs, unit); var buff = unit.GetRegisBuffVirtual(Buff_ID) as XmdsBuff_PropChange; buff.CurrentValue = valueSet2.GetValue(gs.TalentSkillLevel1, 1); var bt = unit.GetRegistBuff(Buff_ID); bt.LifeTimeMS = valueSet2.GetValue(gs.TalentSkillLevel1, 2); } protected void AddDefenceBuff(BattleParams param) { param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit); } protected override void OnSkillLogicEvent(BattleParams param) { if (param.Attacker.IsAllies(param.Hitter, true, true) && !param.GameSkill.mHitUnits.ContainsKey(param.Hitter.mUnit.ID)) { AddHpBuff(param); AddDefenceBuff(param); } } protected override void OnInitConfig() { XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID); base.InitBaseConfig(data); InitData(data, out buffTime, XmdsSkillData.XmdsSkillDataKey.DmgRate); InitData(data, out valueSet, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out valueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2); } } }