123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- using CommonAI.Zone;
- using CommonAI.Zone.Formula;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonSkill.Plugin.Buffs;
- using XmdsCommonServer.XLS.Data;
- using CommonAI.Zone.Instance;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- using CommonAI.Data;
- using CommonLang;
- namespace XmdsCommonSkill.Plugin.Skills.Assassin
- {
- /// <summary>
- /// 自疗: 隐身状态下刺客每秒回复x%生命.
- /// </summary>
- public class Assassin_201050 : Assassin_200050
- {
- public static new int ID = 201050;
- public static int Buff_2 = (int)XmdsBuffBase.XmdsBuffList.YIN_SHEN_HUI_XUE;
- public static XmdsSkillValue Buff_2_Value;
- public override int SkillID { get { return ID; } }
- protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
- //施放技能监听.
- unit.RegistTryLaunchSkillEvent(OnTryLaunchSkillEventHandle, info, true);
- //被攻击监听.
- unit.RegistOnHitDamage(OnUnitHitEvent, info);
- //技能技能初始化,常用作为修改BUFF能力等等.
- XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_2);
- XmdsBuff_Stealth buff1 = (XmdsBuff_Stealth)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.Stealth);
- buff1.ChangePercent = -GetTargetFormulaValue(info.SkillLevel, Buff_Value);
- XmdsBuff_AddHP buff2 = (XmdsBuff_AddHP)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.AddHP);
- BuffTemplate bt = pack.mBuffTemplate;
- bt.IsHarmful = false;
- pack.BindTemplateAndDispose();
- unit.RegistSendBuff(bt);
- }
- //被打监听.
- protected override float OnUnitHitEvent(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
- ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
- {
- //大于0位伤害.
- if (damage > 0)
- {
- hitted.mUnit.removeBuff(Buff_2);
- }
- return damage;
- }
- protected override void OnSkillLogicEvent(BattleParams param)
- {
- // 隐身
- XmdsBuff_Stealth buff1 = (XmdsBuff_Stealth)param.Attacker.GetRegisBuffVirtual(Buff_2, 0);
- // 回血
- XmdsBuff_AddHP buff2 = (XmdsBuff_AddHP)param.Attacker.GetRegisBuffVirtual(Buff_2, 1);
- int t = this.GetTargetFormulaValue(param.GameSkill.TalentSkillLevel1, Buff_2_Value);
- buff2.ChangeValue = CUtils.CastInt(t / XmdsDamageCalculator.PERER * param.Attacker.MirrorProp.MaxHP);
- BuffTemplate bt = param.Attacker.GetRegistBuff(Buff_2);
- bt.LifeTimeMS = 5000;
- param.Hitter.mUnit.AddBuff(Buff_2, param.Attacker.mUnit);
- }
- protected override void OnInitSkillParam()
- {
- base.OnInitSkillParam();
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- InitData(data, out Buff_2_Value, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- }
- protected override bool OnTryLaunchSkillEventHandle(GameSkill skillInfo, ref InstanceUnit.SkillState skill, XmdsVirtual launcher,
- ref InstanceUnit.LaunchSkillParam param)
- {
- //只要施放的不是隐身和疾跑技能,其余全部消除.
- if (skill.Data.ID != SkillID
- && (skill.Data.ID != Assassin_200060.ID && skill.Data.ID != Assassin_201060.ID && skill.Data.ID != Assassin_202060.ID))
- {
- launcher.mUnit.removeBuff(Buff_2);
- }
- return base.OnTryLaunchSkillEventHandle(skillInfo, ref skill, launcher, ref param);
- }
- }
- }
|