123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212 |
- using CommonAI.Zone;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.Plugin.Units;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
- using XmdsCommonSkill.Plugin.Buffs;
- using XmdsCommonServer.XLS.Data;
- namespace XmdsCommonSkill.Plugin.Skills.Priest
- {
- /// <summary>
- /// 恶魔之力:召唤一个死亡时带自爆的暗影魔(自爆参数见下方500031)
- /// </summary>
- public class Priest_502030 : Priest_500030
- {
- /// <summary>
- /// 技能ID.
- /// </summary>
- public static new int ID = 502030;
- /// <summary>
- /// 影魔ID.
- /// </summary>
- public static new int SummonUnit_ID = 502030;
- // 减速buff
- public static int BuffID = (int)XmdsBuffBase.XmdsBuffList.JIAN_SU;
- public static new XmdsSkillValue ThreatValue;
- // 自爆伤害
- public static XmdsSkillValue DP_1;
- public static XmdsSkillValue DP_up;
- public static XmdsSkillValue DM_1;
- // 减速buff
- public static XmdsSkillValue BuffLifeTime;
- public static XmdsSkillValue BuffValue;
- public static XmdsSkillValue BuffRate;
- public override int SkillID
- {
- get
- {
- return ID;
- }
- }
- protected override void OnThreatValueEvent(BattleParams param)
- {
- param.ThreatValue = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, ThreatValue);
- }
- protected override void OnSkillLogicEvent(BattleParams param)
- {
- if (param.AtkProp.DamagePerID == 1)
- {
- callMonster(param, SummonUnit_ID);
- }
- }
- protected override void OnInitSkillParam()
- {
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- AtkType_1 = data.GetAtkType();
- InitData(data, out DP_1, XmdsSkillData.XmdsSkillDataKey.DmgRate);
- InitData(data, out DP_up, XmdsSkillData.XmdsSkillDataKey.DmgRatePerLvl);
- InitData(data, out DM_1, XmdsSkillData.XmdsSkillDataKey.ExdDmgSet);
- InitData(data, out BuffValue, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- InitData(data, out BuffLifeTime, XmdsSkillData.XmdsSkillDataKey.BuffTime);
- InitData(data, out BuffRate, XmdsSkillData.XmdsSkillDataKey.Chance);
- InitData(data, out ThreatValue, XmdsSkillData.XmdsSkillDataKey.HateRate);
- }
- protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
- base.OnInit(info, unit, ref template);
- XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(BuffID);
- BuffTemplate bt = pack.mBuffTemplate;
- bt.IsHarmful = true;
- pack.BindTemplateAndDispose();
- unit.RegistSendBuff(bt);
- }
- }
- //-------------------------------------------------------------------------------------------
- /// <summary>
- /// 暗影魔技能(普攻 + 自爆).
- /// 自爆:死亡时发生爆炸,对身边敌人造成x倍魔攻伤害,附加y点魔法伤害。并减速敌人x%,持续x秒.
- /// </summary>
- public class Priest_500031 : XmdsSkillBase
- {
- public static int SrcSkillID = Priest_502030.ID;
- public static int ID = 500031;
- // 普攻伤害,不从表读,此处写死100%攻击
- public static int DP = 10000;
- public static int ThreatValue = 10000;
- public static XmdsVirtual.AttackType AtkType_1 = XmdsVirtual.AttackType.magAtk;
- public static XmdsVirtual.AttackType AtkType_2 = XmdsVirtual.AttackType.magAtk;
- public override int SkillID
- {
- get
- {
- return ID;
- }
- }
- protected override void OnSkillDamagePerEvent(BattleParams param)
- {
- if (param.AtkProp.DamagePerID == 1)
- {
- int ret = CalDamagePer(DP, 0, param.GameSkill.SkillLevel);
- param.SkillDamagePer = ret;
- }
- else if (param.AtkProp.DamagePerID == 2)
- {
- XmdsVirtual zv = XmdsBattleHelper.GetSummonMaster(param.Attacker);
- if (zv != null)
- {
- int lv = zv.SkillHelper.GetGameSkill(SrcSkillID).TalentSkillLevel;
- int ret = CalDamagePer(this.GetTargetFormulaValue(lv, Priest_502030.DP_1), this.GetTargetFormulaValue(lv, Priest_502030.DP_up), lv);
- param.SkillDamagePer = ret;
- }
- }
- }
- protected override void OnskillDamageModifyEvent(BattleParams param)
- {
- if (param.AtkProp.DamagePerID == 2)
- {
- XmdsVirtual zv = XmdsBattleHelper.GetSummonMaster(param.Attacker);
- if (zv != null)
- {
- int lv = zv.SkillHelper.GetGameSkill(SrcSkillID).TalentSkillLevel;
- int ret = GetTargetFormulaValue(lv, Priest_502030.DM_1);
- param.SkillDamageModify = ret;
- }
- }
- }
- protected override void OnAttackTypeEvent(BattleParams param)
- {
- //普攻.
- if (param.AtkProp.DamagePerID == 1)
- {
- param.AttackType = AtkType_1;
- }
- //自爆.
- else if (param.AtkProp.DamagePerID == 2)
- {
- param.AttackType = AtkType_2;
- }
- }
- protected override void OnThreatValueEvent(BattleParams param)
- {
- //普攻.
- if (param.AtkProp.DamagePerID == 1)
- {
- param.ThreatValue = ThreatValue;
- }
- //自爆.
- else if (param.AtkProp.DamagePerID == 2)
- {
- XmdsVirtual zv = XmdsBattleHelper.GetSummonMaster(param.Attacker);
- if (zv != null)
- {
- int lv = zv.SkillHelper.GetGameSkill(SrcSkillID).TalentSkillLevel;
- param.ThreatValue = GetTargetFormulaValue(lv, Priest_502030.ThreatValue);
- }
- }
- }
- protected override void OnSkillLogicEvent(BattleParams param)
- {
- // 自爆,+减速.
- if (param.AtkProp.DamagePerID == 2)
- {
- XmdsVirtual zv = XmdsBattleHelper.GetSummonMaster(param.Attacker);
- int lv = 0;
- if (zv != null)
- {
- lv = zv.SkillHelper.GetGameSkill(SrcSkillID).TalentSkillLevel;
- }
- //随机概率添加BUFF.
- if ((zv != null) && param.Attacker.RandomPercent(this.GetTargetFormulaValue(lv, Priest_502030.BuffRate)))
- {
- //更换攻击者.设置为宿主.
- param.Attacker = zv;
- XmdsBuff_MoveSpeedChange buff = (XmdsBuff_MoveSpeedChange)param.Attacker.GetRegisBuffVirtual(Priest_502030.BuffID);
- buff.ChangePercent = -this.GetTargetFormulaValue(lv, Priest_502030.BuffValue);
- BuffTemplate bt = param.Attacker.GetRegistBuff(Priest_502030.BuffID);
- bt.LifeTimeMS = this.GetTargetFormulaValue(lv, Priest_502030.BuffLifeTime);
- param.Hitter.mUnit.AddBuff(Priest_502030.BuffID, param.Attacker.mUnit);
- }
- }
- }
- }
- }
|