123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- using CommonAI.Data;
- using CommonAI.Zone;
- using CommonAI.Zone.Formula;
- using CommonAI.Zone.Helper;
- using CommonAI.Zone.Instance;
- using System;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.XLS.Data;
- using XmdsCommonSkill.Plugin.Buffs;
- namespace XmdsCommonSkill.Plugin.Skills.Warrior
- {
- /// <summary>
- /// 二技能: 2 基类
- /// 向指定区域冲击,对路径上敌人造成N1%攻击加成伤害,位移终点落地造成一次范围N2%攻击加成伤害,减速N3%,减速持续T秒(身体圆半径1-1.5,终点圆,半径1.5-2,跳跃距离6.5),在整个技能动作帧期间
- /// 被打到能免伤N%(持续T秒)并触发怒气提升一次,提升N6 (动作会调整为前冲到指定位置的方式,动作变为二段式,现在的跳跃表现一般)
- /// </summary>
- public class Warrior_110200 : XmdsSkillBase
- {
- private static readonly int ID = 110200;
- public override int SkillID { get { return ID; } }
- protected static readonly int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.ZS_SPEEDDOWN_2;
- //释放动作期间免伤
- protected static readonly int Buff_INGORE_DAMAGE = (int)XmdsBuffBase.XmdsBuffList.ZS_INGORE_DAMAGE;
- /// 伤害倍数: 固定值_百分比
- protected XmdsSkillValue mValueSet1;
- // 基础-减速数值
- protected XmdsSkillValue mValueSet5;
- //释放过程中免伤
- protected XmdsSkillValue mValueSet8;
- //
- protected long mSkillAngerTime;
- protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
- // Buff修改
- var pack2 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
- var buff2 = pack2.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.MoveSpeedDown) as XmdsBuff_MoveSpeedDown;
- buff2.ChangePercent = -mValueSet5.GetValue(GetBaseSpeedDownLv(info), 1);
- var bt2 = pack2.mBuffTemplate;
- bt2.LifeTimeMS = mValueSet5.GetValue(GetBaseSpeedDownLv(info), 2);
- bt2.IsHarmful = true;
- pack2.BindTemplateAndDispose();
- unit.RegistSendBuff(bt2);
- //注册免伤buff
- XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_INGORE_DAMAGE);
- XmdsBuff_PropChange buff = (XmdsBuff_PropChange)pack.GetXmdsBuff(0);
- buff.CurentChangeType = XmdsVirtual.UnitAttributeType.AllDmgReduce;
- buff.CurrentValue = mValueSet8.GetValue(info.SkillLevel, 2); // 免伤比例
- buff.IsPercent = true;
- BuffTemplate bt = pack.mBuffTemplate;
- bt.IsHarmful = true;
- bt.LifeTimeMS = mValueSet8.GetValue(info.SkillLevel, 1);
- pack.BindTemplateAndDispose();
- unit.RegistSendBuff(bt);
- unit.RegistLaunchSkillOver(OnLaunchSkillOver, info);
- unit.RegistOnHitDamage(OnHandleOnHitDamage, info, true);
- }
- private int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState skill)
- {
- launcher.mUnit.AddBuff(Buff_INGORE_DAMAGE);
- mSkillAngerTime = CommonLang.CUtils.localTimeMS + mValueSet8.GetValue(info.SkillLevel, 1);
- return 0;
- }
- //单位受击
- private float OnHandleOnHitDamage(float damage, XmdsVirtual hitter, XmdsVirtual attacker, AttackSource source,
- ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
- {
- //被打到,增加怒气
- if(CommonLang.CUtils.localTimeMS < mSkillAngerTime && skill != null)
- {
- hitter.Talent__Add(mValueSet8.GetValue(skill.SkillLevel, 3));
- }
- return damage;// * (XmdsDamageCalculator.PERER - buff.CurrentValue) * XmdsUnitProp.PER;
- }
- protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
- {
- base.OnSkillDataChange(gs, unit);
- var buff = unit.GetRegisBuffVirtual(Buff_ID) as XmdsBuff_MoveSpeedDown;
- buff.ChangePercent = mValueSet5.GetValue(GetBaseSpeedDownLv(gs), 1);
- var bt = unit.GetRegistBuff(Buff_ID);
- bt.LifeTimeMS = mValueSet5.GetValue(GetBaseSpeedDownLv(gs), 2);
- }
- protected override void OnSkillDamagePerEvent(BattleParams param)
- {
- param.SkillDamageAdd = mValueSet1.GetValue(param.GameSkill.SkillLevel, param.AtkProp.DamagePerID);
- param.SkillDamagePer = mValueSet1.GetValueExt(param.GameSkill.SkillLevel, param.AtkProp.DamagePerID);
- }
- protected virtual int GetBaseSpeedDownLv(GameSkill info)
- {
- return info.SkillLevel;
- }
- protected override void OnSkillLogicEvent(BattleParams param)
- {
- //第二段落地,造成减速
- if(param.AtkProp.DamagePerID == 2)
- {
- //命中,加减速buff
- param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit);
- }
- }
- protected override void OnInitConfig()
- {
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- InitData(data, out mValueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- // 基础-减速数值
- InitData(data, out mValueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
- //释放过程中免伤
- InitData(data, out mValueSet8, XmdsSkillData.XmdsSkillDataKey.ValueSet8);
- }
- }
- }
|