using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using CommonAI.Zone.Formula; using XmdsCommon.JSGModule.Interface; using XmdsCommonServer.Plugin; using XmdsCommonSkill.Plugin.CardSkill; using XmdsCommonServer.XLS.Data; using XmdsCommonSkill.Plugin.Buffs; using XmdsCommon.Plugin; using CommonAI.Zone; using CommonAI.Data; using CommonAI.Zone.Helper; using XmdsCommonSkill.Plugin.Interface; using CommonLang; namespace XmdsCommonSkill.Plugin.Skills.CardSkill { /// /// boss赞球逻辑,单独放到一个技能里面处理 /// public class CardSkill_Boss : XmdsSkillBase, IJSGCardSkill { public static readonly int ID = XmdsComSrvData.BOSS_CARD_SKILLID; public override int SkillID { get { return ID; } } private static readonly int Buff_2_1 = (int)XmdsBuffBase.XmdsBuffList.CARD_BOSS_DMG_DEEPER; private static readonly int Buff_4_1 = (int)XmdsBuffBase.XmdsBuffList.CARD_BOSS_SPEED_DMG_DOWN; //----两仪配置 private static XmdsSkillValue mValue0_1; //----青龙配置 private static XmdsSkillValue mValue1_1; //----朱雀配置 private static XmdsSkillValue mValue2_1; //伤害 private static XmdsSkillValue mValue2_2; //灼烧时间,受伤提高 //----白虎配置 private static XmdsSkillValue mValue3_1; //受伤系数 private static XmdsSkillValue mValue3_2; //扣除定力值 //----玄武配置 private static XmdsSkillValue mValue4_1; private static XmdsSkillValue mValue4_2; //虚弱时间,移速降低,伤害降低 //内部变量 private int mTriggerCards; protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template) { // Buff修改2-1 var pack2_1 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_2_1); var buff2_1 = (XmdsBuff_PropChange)pack2_1.GetXmdsBuff(0); var bt2_1 = pack2_1.mBuffTemplate; buff2_1.CurentChangeType = XmdsVirtual.UnitAttributeType.AllDmgReduce; pack2_1.BindTemplateAndDispose(); unit.RegistSendBuff(bt2_1); // Buff修改4-1 var pack4_1 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_4_1); var bt4_1 = pack4_1.mBuffTemplate; var buff4_1 = (XmdsBuff_PropChange)pack4_1.GetXmdsBuff(0); buff4_1.CurentChangeType = XmdsVirtual.UnitAttributeType.MoveSpeed; var buff4_1_1 = (XmdsBuff_PropChange)pack4_1.GetXmdsBuff(1); buff4_1_1.CurentChangeType = XmdsVirtual.UnitAttributeType.AllDmgAdd; pack4_1.BindTemplateAndDispose(); unit.RegistSendBuff(bt4_1); } protected override bool OnSkillFinalDamageModifyEvent(BattleParams param) { int dmgIndex = param.AtkProp.DamagePerID - 1; param.UseDamageType = DamageType.None; if (dmgIndex == (int)CardType.QingLong) { //param.UseDamageType = DamageType.Heal; param.HitDamge -= CUtils.CastInt(param.Hitter.MirrorProp.MaxHP * XmdsUnitProp.PER * mValue1_1.GetValue(this.mTriggerCards-1)); } else if (dmgIndex == (int)CardType.ZhuQue) { param.HitDamge = CUtils.CastInt(param.Attacker.MirrorProp.MaxHP * XmdsUnitProp.PER * mValue2_1.GetValue(this.mTriggerCards - 1)); param.Hitter.mUnit.AddBuff(Buff_2_1, param.Attacker.mUnit); } else if (dmgIndex == (int)CardType.BaiHu) { param.HitDamge = CUtils.CastInt(param.Attacker.MirrorProp.MaxHP * XmdsUnitProp.PER * mValue3_1.GetValue(this.mTriggerCards - 1)); param.Hitter.mUnit.AddMP(-mValue3_2.GetValue(this.mTriggerCards - 1), param.Attacker.mUnit); } else if (dmgIndex == (int)CardType.XuanWu) { param.HitDamge = CUtils.CastInt(param.Attacker.MirrorProp.MaxHP * XmdsUnitProp.PER * mValue4_1.GetValue(this.mTriggerCards - 1)); param.Hitter.mUnit.AddBuff(Buff_4_1, param.Attacker.mUnit); } else { param.HitDamge = CUtils.CastInt(param.Attacker.MirrorProp.MaxHP * XmdsUnitProp.PER * mValue0_1.GetValue(1)); } return true; } public int GetEffectID(CardType cardType, int sameNums) { if(cardType == CardType.Max) { return this.SkillID; } return this.SkillID + 100 * ((int)cardType + 1); } public void TriggerCardSkill(XmdsVirtual player, XmdsVirtual attacker, AttackSource source, CardSkillData skillData, int sameNums) { // 特殊赋值 if(skillData.type == CardType.ZhuQue) { var bt = player.GetRegistBuff(Buff_2_1); bt.LifeTimeMS = mValue2_2.GetValue(sameNums-1, 1); var buff = player.GetRegisBuffVirtual(Buff_2_1) as XmdsBuff_PropChange; buff.CurrentValue = -mValue2_2.GetValue(sameNums - 1, 2); } else if(skillData.type == CardType.XuanWu) { var bt = player.GetRegistBuff(Buff_4_1); bt.LifeTimeMS = mValue4_2.GetValue(sameNums - 1, 1); var buff1 = player.GetRegisBuffVirtual(Buff_4_1, 0) as XmdsBuff_PropChange; buff1.CurrentValue = -mValue4_2.GetValue(sameNums - 1, 2); var buff2 = player.GetRegisBuffVirtual(Buff_4_1, 1) as XmdsBuff_PropChange; buff2.CurrentValue = -mValue4_2.GetValue(sameNums - 1, 3); } this.mTriggerCards = sameNums; this.unitLaunchSpell(player, attacker, this.GetEffectID(skillData.type, sameNums)); } //释放法术 protected void unitLaunchSpell(XmdsVirtual launcher, XmdsVirtual attacker, int spellID, bool fromBody = true) { LaunchSpell launchSpll = ComSpellTemplate.Instance().GetCardSpell(spellID); XmdsVirtual fromUnit = (fromBody || attacker == null) ? launcher : attacker; launcher.mUnit.Parent.unitLaunchSpell(XmdsSkillType.cardSkill, launcher.mUnit, launchSpll, fromUnit.mUnit.X, fromUnit.mUnit.Y); } protected override void OnInitSkillParam() { //两仪配置 XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(this.SkillID); InitData(data, out mValue0_1, XmdsSkillData.XmdsSkillDataKey.ValueSet); //青龙配置 data = XmdsDataMgr.GetInstance().GetXmdsSkillData(this.SkillID + 100); InitData(data, out mValue1_1, XmdsSkillData.XmdsSkillDataKey.ValueSet); //朱雀配置 data = XmdsDataMgr.GetInstance().GetXmdsSkillData(this.SkillID + 200); InitData(data, out mValue2_1, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out mValue2_2, XmdsSkillData.XmdsSkillDataKey.ValueSet2); //白虎配置 data = XmdsDataMgr.GetInstance().GetXmdsSkillData(this.SkillID + 300); InitData(data, out mValue3_1, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out mValue3_2, XmdsSkillData.XmdsSkillDataKey.ValueSet2); //玄武配置 data = XmdsDataMgr.GetInstance().GetXmdsSkillData(this.SkillID + 400); InitData(data, out mValue4_1, XmdsSkillData.XmdsSkillDataKey.ValueSet); InitData(data, out mValue4_2, XmdsSkillData.XmdsSkillDataKey.ValueSet2); } public int GetEffectID(int skillLv, int sameNums) { return 0; } } }