123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- 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
- {
- /// <summary>
- /// boss赞球逻辑,单独放到一个技能里面处理
- /// </summary>
- 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;
- }
- }
- }
|