123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197 |
-
- using CommonAI.Zone;
- using CommonAI.Zone.Instance;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- using XmdsCommonSkill.Plugin.Buffs;
- using XmdsCommonServer.XLS.Data;
- namespace XmdsCommonSkill.Plugin.Skills.Priest
- {
- /// <summary>
- /// 暗影形态: 进入暗影形态,物防提高x%,移动速度提高x%,每秒消耗x%法力对身边的所有敌人造成x倍魔攻伤害,附加x点魔法伤害.
- /// </summary>
- public class Priest_501050 : XmdsSkillBase
- {
- /// <summary>
- /// 技能ID.
- /// </summary>
- public static int ID = 501050;
- /// <summary>
- /// 伤害类型.
- /// </summary>
- public static XmdsVirtual.AttackType AtkType_1 = XmdsVirtual.AttackType.magAtk;
- /// <summary>
- /// 伤害倍数.
- /// </summary>
- public static XmdsSkillValue DP_1;
- /// <summary>
- /// 伤害倍数每级成长.
- /// </summary>
- public static XmdsSkillValue DP_up;
- /// <summary>
- /// 附加伤害.
- /// </summary>
- public static XmdsSkillValue DM_1;
- /// <summary>
- /// BUFF.
- /// </summary>
- public static int Buff_1 = (int)XmdsBuffBase.XmdsBuffList.AN_YIN_XING_TAI;
- /// <summary>
- /// BUFF时长.
- /// </summary>
- public static XmdsSkillValue BuffLifeTime;
- /// <summary>
- /// 蓝消耗.
- /// </summary>
- public static XmdsSkillValue MPCost;
- /// <summary>
- /// 护甲上升.
- /// </summary>
- public static XmdsSkillValue DefUp;
- /// <summary>
- /// 速度上升.
- /// </summary>
- public static XmdsSkillValue SpeedUp;
- /// <summary>
- /// 仇恨系数.
- /// </summary>
- public static XmdsSkillValue ThreatValue;
- /// <summary>
- /// 获取技能ID.
- /// </summary>
- public override int SkillID
- {
- get
- {
- return ID;
- }
- }
- protected override void OnSkillDamagePerEvent(BattleParams param)
- {
- int ret = CalDamagePer(DP_1, DP_up, param.GameSkill.SkillLevel);
- param.SkillDamagePer = ret;
- }
- protected override void OnskillDamageModifyEvent(BattleParams param)
- {
- int ret = 0;
- ret = GetTargetFormulaValue(param.GameSkill.SkillLevel, DM_1);
- param.SkillDamageModify = ret;
- }
- protected override void OnAttackTypeEvent(BattleParams param)
- {
- param.AttackType = AtkType_1;
- }
- protected override void OnThreatValueEvent(BattleParams param)
- {
- param.ThreatValue = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, ThreatValue);
- }
- protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
- //注册技能结束监听.
- unit.RegistStateSkillEndEvent(OnStateEndEvent, info, false);
- //标记效果实现.
- XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_1);
- BuffTemplate bt = pack.mBuffTemplate;
- bt.FirstTimeEnable = false;
- pack.BindTemplateAndDispose();
- bt.IsHarmful = false;
- unit.RegistSendBuff(bt);
- }
- protected override void OnSkillLogicEvent(BattleParams param)
- {
- //打自己加BUFF.
- if ( param.AtkProp.DamagePerID == 1)
- {
- param.UseFormulaType = BattleParams.FormulaType.None;
- //物防.
- XmdsBuff_PropChange b1 = (XmdsBuff_PropChange)param.Attacker.GetRegisBuffVirtual(Buff_1, 0);
- b1.IsPercent = true;
- b1.CurentChangeType = (int)XmdsBuff_PropChange.PropChangeType.AC;
- b1.CurrentValue = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, DefUp);
- //速度.
- XmdsBuff_MoveSpeedChange b2 = (XmdsBuff_MoveSpeedChange)param.Attacker.GetRegisBuffVirtual(Buff_1, 1);
- b2.ChangePercent = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, SpeedUp);
- XmdsBuffBase b3 = (XmdsBuffBase)param.Attacker.GetRegisBuffVirtual(Buff_1, 2);
- //设置伤害回调.
- b3.SetOnHitCallBack(param.GameSkill, OnXmdsBuffHitEvent);
- BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_1);
- bt.LifeTimeMS = GetTargetFormulaValue(param.GameSkill.SkillLevel, BuffLifeTime);
- param.Attacker.mUnit.AddBuff(Buff_1);
- }
- //打敌人
- else if (param.AtkProp.DamagePerID == 2)
- {
- //donothing.
- }
- }
- private void OnXmdsBuffHitEvent(BattleParams param)
- {
- //计算每秒蓝消耗量.
- float p = 1.0f * this.GetTargetFormulaValue(param.GameSkill.SkillLevel, MPCost) / XmdsDamageCalculator.PERER;
- int mpChange = (int)(param.Hitter.mUnit.MaxMP * p);
- param.Hitter.AddMP(-mpChange,false);
- //蓝<=0.中断当前技能状态.
- if (param.Hitter.mUnit.CurrentMP <= 0)
- {
- var sk = param.Hitter.mUnit.CurrentState as InstanceUnit.StateSkill;
- if (sk != null)
- {
- sk.block();
- }
- }
- }
- private void OnStateEndEvent(XmdsVirtual owner, InstanceUnit.StateSkill state, GameSkill gs)
- {
- //技能结束,BUFF结束.
- if (state.SkillData.ID == ID)
- {
- owner.mUnit.removeBuff(Buff_1, InstanceUnit.BuffState.EndResult_ByCode);
- }
- }
- 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 MPCost, XmdsSkillData.XmdsSkillDataKey.ValueSet); // 耗蓝.
- InitData(data, out DefUp, XmdsSkillData.XmdsSkillDataKey.ValueSet2); // 物防.
- InitData(data, out SpeedUp, XmdsSkillData.XmdsSkillDataKey.ValueSet3); // 速度.
- InitData(data, out BuffLifeTime, XmdsSkillData.XmdsSkillDataKey.BuffTime);
- InitData(data, out ThreatValue, XmdsSkillData.XmdsSkillDataKey.HateRate);
- }
- }
- }
|