using CommonAI.Zone; using CommonAI.Zone.Formula; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.Buffs; using XmdsCommonSkill.Plugin.Skills; namespace XmdsCommonSkill.Plugin.CardSkill { /// /// /// public class CardSkill_1430010 : CardSkill_XuanWuBase { private static readonly int ID = 1430010; public override int SkillID { get { return ID; } } // 移速 + 防御 public static readonly int CARD_XW_ALLIES_SPEED_DEFENCE = (int)XmdsBuffBase.XmdsBuffList.CARD_XW_ALLIES_SPEED_DEFENCE; //多种不同形态法术id protected static XmdsSkillValue s_TalentData; //伤害系数 protected static XmdsSkillValue s_ValueSet1; //击飞扣定力法术id protected static XmdsSkillValue s_ValueSet2; // 对boss扣除定力值 protected static XmdsSkillValue s_ValueSet3; //冰霜法术ID protected static XmdsSkillValue s_ValueSet4; // 路径队友移动,防御增益,时间 protected static XmdsSkillValue s_ValueSet5; protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { base.OnInit(info, unit, ref template); var pack1 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(CARD_XW_ALLIES_SPEED_DEFENCE); var buff1 = pack1.GetXmdsBuff(0) as XmdsBuff_PropChange; buff1.CurentChangeType = XmdsVirtual.UnitAttributeType.MoveSpeed; var buff2 = pack1.GetXmdsBuff(1) as XmdsBuff_PropChange; buff2.CurentChangeType = XmdsVirtual.UnitAttributeType.Defence; var bt1 = pack1.mBuffTemplate; pack1.BindTemplateAndDispose(); unit.RegistSendBuff(bt1); } protected override void OnGetCardSkillDamage(BattleParams param) { if(param.AtkProp.DamageModiferID <= 3) { param.SkillDamagePer = s_ValueSet1.GetValue(param.GameSkill.SkillLevel, param.AtkProp.DamagePerID); // boss,扣定力逻辑 if (param.Hitter.IsBoss() && param.Hitter.mUnit.MaxMP > 0) { int reduceMP = Math.Max(1, s_ValueSet3.GetValue(param.GameSkill.SkillLevel, base.GetTriggerSameCards() - 1)); param.Hitter.mUnit.AddMP(-reduceMP, param.Attacker.mUnit); } } else { param.UseDamageType = CommonAI.Data.DamageType.None; param.Hitter.mUnit.AddBuff(CARD_XW_ALLIES_SPEED_DEFENCE, param.Attacker.mUnit); } } public override int GetEffectID(int skillLv, int sameNums) { return s_TalentData.GetValue(skillLv, sameNums - 1); } //触发卡牌技能 public override void OnTriggerCardSkill(XmdsVirtual player, XmdsVirtual hitter, AttackSource source, CardSkillData skillData, int sameNums) { base.unitLaunchSpell(player, hitter, this.GetEffectID(skillData.skilLv, sameNums)); base.unitLaunchSpell(player, hitter, s_ValueSet4.GetValue(skillData.skilLv, sameNums - 1)); var bt = player.GetRegistBuff(CARD_XW_ALLIES_SPEED_DEFENCE); bt.LifeTimeMS = s_ValueSet5.GetValue(skillData.skilLv, base.GetIndex3(3)); var buff1 = player.GetRegisBuffVirtual(CARD_XW_ALLIES_SPEED_DEFENCE, 0) as XmdsBuff_PropChange; buff1.CurrentValue = s_ValueSet5.GetValue(skillData.skilLv, base.GetIndex3(1)); var buff2 = player.GetRegisBuffVirtual(CARD_XW_ALLIES_SPEED_DEFENCE,1) as XmdsBuff_PropChange; buff2.CurrentValue = s_ValueSet5.GetValue(skillData.skilLv, base.GetIndex3(2)); } protected override void OnInitSkillParam() { XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(this.SkillID); InitData(data, out s_TalentData, XmdsSkillData.XmdsSkillDataKey.TalentData); InitData(data, out s_ValueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out s_ValueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2); InitData(data, out s_ValueSet3, XmdsSkillData.XmdsSkillDataKey.ValueSet3); InitData(data, out s_ValueSet4, XmdsSkillData.XmdsSkillDataKey.ValueSet4); InitData(data, out s_ValueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5); } } }