123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
-
- using CommonAI.Zone;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonSkill.Plugin.Buffs;
- using XmdsCommonServer.XLS.Data;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- using System.Collections.Generic;
- namespace XmdsCommonSkill.Plugin.Skills.Priest
- {
- /// <summary>
- ///圣光强化: (增加烙印效果,牧师使用其他技能时触发额外伤害).
- ///使神圣光球对目标造成伤害时,目标将被灌注神圣力量,牧师可施放其他技能来激活这股力量,对敌人造成额外x%魔攻伤害.
- /// </summary>
- public class Priest_501010 : Priest_500010
- {
- /// <summary>
- /// 技能ID.
- /// </summary>
- public static new int ID = 501010;
- /// <summary>
- /// BUFFID
- /// </summary>
- public static int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.SHENG_GUANG_QIANG_HUA;
- public static XmdsSkillValue buff_value;
- public static XmdsSkillValue BuffLifeTime;
- public static new XmdsSkillValue ThreatValue;
- //表现BUFF.
- public static int SpellID = 501012;
- /// <summary>
- /// 获取技能ID.
- /// </summary>
- public override int SkillID
- {
- get
- {
- return ID;
- }
- }
- protected override void OnThreatValueEvent(BattleParams param)
- {
- param.ThreatValue = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, ThreatValue);
- }
- protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
- XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
- BuffTemplate bt = pack.mBuffTemplate;
- bt.IsHarmful = true;
- pack.BindTemplateAndDispose();
- unit.RegistSendBuff(bt);
- }
- protected override void OnRegistEvent()
- {
- this.RegistEvent(EventType.SkillLogicAftercalDamage, OnSkillLogicAfterCalDamage);
- base.OnRegistEvent();
- }
- private void OnSkillLogicAfterCalDamage(BattleParams param)
- {
- XmdsBuff_Brand buff = (XmdsBuff_Brand)param.Attacker.GetRegisBuffVirtual(Buff_ID, 0);
- // buff伤害设置.
- int t = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, buff_value);
- int mag = (param.Attacker.MirrorProp.MaxMag + param.Attacker.MirrorProp.MinMag) / 2;
- t = (int)(t / XmdsDamageCalculator.PERER * mag);
- //算魔防伤害.
- t = XmdsDamageCalculator.GetDamage(t, XmdsVirtual.AttackType.magAtk,
- param.Attacker, param.Hitter);
- buff.BuffValue = t;
- // 指定职业牧师.
- buff.TargetPro = XmdsUnitData.XmdsUnitPro.Priest;
- ///设置使用类型.
- buff.BuffUseType = (int)XmdsBuffBase.XmdsBuffUseType.Times;
- // 生效次数1次.
- buff.BuffUseTime = 1;
- //普攻无效.
- //调用前先清理过滤技能列表!!!.
- buff.CleanIgnoreSkillList();
- buff.AddIgnoreSkill(Priest_501010.ID);
- buff.AddIgnoreSkill(Priest_502010.ID);
- buff.AddIgnoreSkill(Priest_500010.ID);
- buff.OnHandleBuffEndEvent += ((hitter, state) =>
- {
- //代码调用,烙印引爆效果.
- var list = state.Tag as List<XmdsBuffVirtual>;
- if (list != null && list.Count > 0)
- {
- buff = list[0] as XmdsBuff_Brand;
- if (buff != null && buff.Exploded)
- {
- LaunchSpell ls = new LaunchSpell();
- ls.SpellID = SpellID;
- hitter.mUnit.Parent.unitLaunchSpell(hitter.mUnit, ls, hitter.mUnit.X, hitter.mUnit.Y);
- hitter.mUnit.removeBuff(Buff_ID);
- }
- }
- });
- BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_ID);
- bt.LifeTimeMS = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel, BuffLifeTime);
- param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit);
- }
- protected override void OnInitSkillParam()
- {
- base.OnInitSkillParam();
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- InitData(data, out buff_value, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- InitData(data, out BuffLifeTime, XmdsSkillData.XmdsSkillDataKey.BuffTime);
- InitData(data, out ThreatValue, XmdsSkillData.XmdsSkillDataKey.HateRate);
- }
- }
- }
|