123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- using CommonAI.Zone.Helper;
- using CommonAI.Zone.Instance;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.XLS.Data;
- using XmdsCommonSkill.Plugin.Buffs;
- using System;
- using static CommonAI.Zone.Instance.InstanceUnit;
- using XmdsCommon.Plugin;
- using CommonAI.Zone;
- using XmdsCommonServer.Plugin.Units;
- using CommonAI.Zone.Formula;
- using XmdsCommonSkill.Plugin.Skills;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- using XmdsCommonSkill.Plugin.Skills.Magic;
- using CommonAI.Data;
- using CommonLang;
- namespace XmdsCommonSkill.Plugin.PassiveSkills.Magic
- {
- /// <summary>
- /// 法师被动
- /// 剑气缠绕:剑影释放打中,会积攒n%剑气能量,当剑气能量满了的时候,突破期间消耗能量的技能不会使能量降低,增加能量的也不会延续时间。成功了,升一层,能量槽清空。如果没能成功,则能量槽内的能量会掉落回n3%。
- /// 每层剑气会维持n4秒,最多叠加到三层,维持期间没突破就会掉一层。 每层剑气提供额外攻击力n% 脱战开始按一定速率(n%/s)掉剑气能量
- /// </summary>
- public class Magic_310600 : XmdsPassiveSkillBase
- {
- /// 技能ID.
- public static int ID = 310600;
- public override int SkillID { get { return ID; } }
- //每层剑气上限,每层保持时间
- protected static XmdsSkillValue valueSet;
- // 每隔X毫秒降低Y
- protected static XmdsSkillValue valueSet2;
- // 脱离战斗XX毫秒开始降低剑气
- protected static XmdsSkillValue valueSet3;
- //剑气层额外增伤:
- protected static XmdsSkillValue valueSet4;
- //每次获得剑影,增加剑气值
- protected static XmdsSkillValue valueSet5;
- private int mUUID_1 = 0;
- private XmdsVirtual mOwner;
- protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
- {
- this.mOwner = owner;
- //无等级概念,为适应客户端偷懒这么写的
- IntIntIntData refreshRule = new IntIntIntData(valueSet3.GetValue(), valueSet2.GetValue(1, 1), valueSet2.GetValue(1, 2));
- IntIntData[] talnetData = new IntIntData[4];
- for(int i = 0; i < 4; i++)
- {
- talnetData[i] = new IntIntData(valueSet.GetValue(i+1, 1), valueSet.GetValue(i+1, 2));
- }
- var playerCache = XmdsPlayerCache.PlayerTalnetInit(XmdsUnitPro.Magic, owner.mUnit, 0, refreshRule, talnetData) as PlayerCache_Magic;
- playerCache.SetSwordAddTalentValue(valueSet5.GetValue(skillInfo.GetPassiveLevel()));
- this.mOwner.SetPlayerCache(playerCache);
-
- //单位攻击监听
- mUUID_1 = owner.RegistOnHitOther(OnHandleOnHit, skillInfo, true);
- }
- protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
- {
- var playerCache = unit.GetPlayerCache() as PlayerCache_Magic;
- if(playerCache != null)
- {
- playerCache.SetSwordAddTalentValue(valueSet5.GetValue(gs.GetPassiveLevel()));
- }
- }
- protected override void OnUpdate(int intervalMS, bool slowRefresh)
- {
- base.OnUpdate(intervalMS, slowRefresh);
- if (slowRefresh)
- {
- this.mOwner.Talent_Refresh();
- }
- }
- //单位攻击
- private float OnHandleOnHit(float damage, XmdsVirtual hitter, XmdsVirtual attacker, AttackSource source,
- ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
- {
- //如果释放的是该强化技能,伤害增加
- byte talentLv = this.mOwner.GetPlayerCache().GetTalentLv();
- if (talentLv > 0)
- {
- damage += (damage * XmdsUnitProp.PER * valueSet4.GetValue(skill.GetPassiveLevel(), talentLv));
- }
- return damage;
- }
- protected override void OnDispose(XmdsVirtual owner)
- {
- owner.UnRegistOnHitOther(mUUID_1);
- XmdsPlayerCache.PlayerTalnetDestory(owner.mUnit);
- }
- protected override void OnInitSkillParam()
- {
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- InitData(data, out valueSet, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- InitData(data, out valueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
- InitData(data, out valueSet3, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
- InitData(data, out valueSet4, XmdsSkillData.XmdsSkillDataKey.ValueSet4);
- InitData(data, out valueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
- }
- }
- }
|