123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using XmdsCommonServer.Plugin;
- using CommonAI.Zone;
- using CommonAI.Zone.Instance;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.XLS.Data;
- namespace XmdsCommonSkill.Plugin.Skills.Priest
- {
- /// <summary>
- /// 狐火攻击:抛出狐火攻击目标,狐火命中后继续弹跳攻击目标身边小范围的敌人,造成<x>倍魔攻伤害(作为魔法伤害)
- /// </summary>
- public class Priest_500010 : XmdsSkillBase
- {
- public static int ID = 500010;
- /// 伤害倍数.
- public static XmdsSkillValue DP_1;
- /// 传递个数.
- public static XmdsSkillValue Count;
- /// 伤害加成.
- public static XmdsSkillValue addValue;
- public override int SkillID { get { return ID; } }
- protected override void OnSkillDamagePerEvent(BattleParams param)
- {
- int ret = CalDamagePer(DP_1, param.GameSkill.SkillLevel);
- param.SkillDamagePer = ret;
- }
- protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
- unit.RegistTryLaunchSkillEvent(OnTryLaunchSkillEventHandle, info);
- }
- private bool OnTryLaunchSkillEventHandle(GameSkill info, ref InstanceUnit.SkillState skill, XmdsVirtual launcher, ref InstanceUnit.LaunchSkillParam param)
- {
- if (skill.ID == SkillID)
- {
- //注意该技能和编辑器配置高度耦合,数据变更很容易出错!!!.
- UnitActionData uad = skill.Data.ActionQueue[0];
- if (uad != null)
- {
- UnitActionData.KeyFrame kf = uad.KeyFrames[1];
- if (kf != null)
- {
- LaunchSpell ls = kf.Spell;
- //需要减1,因为第一次也是伤害,最多对X个敌人,传递次数需要减去第一次.
- ls.ChainLevel = this.GetTargetFormulaValue(launcher.SkillHelper.GetGameSkill(SkillID).SkillLevel, Count) - 1;
- }
- }
- }
- return true;
- }
- protected override void OnRegistEvent()
- {
- // 命中率.
- base.OnRegistEvent();
- this.RegistEvent(EventType.SkillDamageAdd, OnSkillDamageAddEvent);
- }
- protected virtual void OnSkillDamageAddEvent(BattleParams param)
- {
- InstanceSpell spell = param.Source.FromSpellUnit;
- if (spell != null)
- {
- //总传递次数.
- int ChainLevel = this.GetTargetFormulaValue(param.Attacker.SkillHelper.GetGameSkill(SkillID).SkillLevel, Count);
- //当前传递次数.
- int curChainLevel = spell.ChainLevel;
- //传递第几次.
- int dif = ChainLevel - curChainLevel;
- //伤害减少.
- int damageReduce = this.GetTargetFormulaValue(param.GameSkill.SkillLevel, addValue);
- //param.SkillDamageAdd = -(dif * damageReduce);
- }
- }
- protected override void OnInitSkillParam()
- {
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- InitData(data, out DP_1, XmdsSkillData.XmdsSkillDataKey.DmgRate);
- InitData(data, out Count, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- InitData(data, out addValue, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
- }
- }
- }
|