using CommonAI.Zone; using CommonAI.Zone.Helper; using CommonAI.Zone.Instance; using CommonLang; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.Buffs; namespace XmdsCommonSkill.Plugin.Skills.Warrior { /// 三技能:3-5(产生一条火焰路径(同样会随着蓄力状态增长),存在T秒,在路径上敌人移动速度降低更多并受到持续伤害(防御力系数),离开路径立刻消失(9.5*3.5) 额外:自己在此路径上移速提升n%) public class Warrior_110350 : Warrior_110340 { private static readonly int ID = 110350; public override int SkillID { get { return ID; } } private static readonly int Buff_SpeedUp = (int)XmdsBuffBase.XmdsBuffList.ZS_SPEEDUP_3_5; //伤害-防御系数, 自己加速时间,自己加速效果,替换基础的减速比例,替换基础的减速时间 protected XmdsSkillValue mValueSet3; protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { base.OnInit(info, unit, ref template); //自己额外意思提升 XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_SpeedUp); var buff = pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.PropChange) as XmdsBuff_PropChange; buff.CurentChangeType = XmdsVirtual.UnitAttributeType.MoveSpeed; buff.IsPercent = true; buff.CurrentValue = mValueSet3.GetValue(info.TalentSkillLevel2, 2); BuffTemplate bt = pack.mBuffTemplate; bt.IsHarmful = false; bt.LifeTimeMS = mValueSet3.GetValue(info.TalentSkillLevel2, 3); pack.BindTemplateAndDispose(); unit.RegistSendBuff(bt); } //获取基础减速效果-减速值 public override int GetBaseSpeedDownValue(GameSkill info) { return mValueSet3.GetValue(info.TalentSkillLevel2, 4); } //获取基础减速效果-减速时间 public override int GetBaseSpeedDownTime(GameSkill info) { return mValueSet3.GetValue(info.TalentSkillLevel2, 5); } protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit) { base.OnSkillDataChange(gs, unit); var bt = unit.GetRegistBuff(Buff_SpeedUp); bt.LifeTimeMS = mValueSet3.GetValue(gs.TalentSkillLevel2, 3); var buff = unit.GetRegisBuffVirtual(Buff_SpeedUp) as XmdsBuff_PropChange; buff.CurrentValue = mValueSet3.GetValue(gs.TalentSkillLevel2, 2); } protected override bool OnSkillFinalDamageModifyEvent(BattleParams param) { if (param.Attacker == param.Hitter) { if (param.AtkProp.DamagePerID == 2) { //给自己加个加速buff param.Attacker.mUnit.AddBuff(Buff_SpeedUp); } return true; } // 花式玩法,特殊的法术,又是根据防御来算伤害的 if (param.AtkProp.DamagePerID == 2) { int hpValue = CUtils.CastInt(param.Attacker.MirrorProp.Defence * XmdsUnitProp.PER * mValueSet3.GetValue(param.GameSkill.TalentSkillLevel2, 1)); param.HitDamge = XmdsDamageCalculator.GetDamage(hpValue, param.Attacker, param.Hitter, param.Source); return true; } return false; } protected override void OnInitConfig() { XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID); InitData(data, out mValueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out mValueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2); InitData(data, out mValueSet3, XmdsSkillData.XmdsSkillDataKey.ValueSet3); // 基础-减速数值 InitData(data, out mValueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5); //蓄力技能规则 InitData(data, out mValueSet8, XmdsSkillData.XmdsSkillDataKey.ValueSet8); } } }