123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- using CommonAI.Zone;
- using CommonAI.Zone.Helper;
- using CommonAI.Zone.Instance;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.XLS.Data;
- using XmdsCommonSkill.Plugin.Buffs;
- namespace XmdsCommonSkill.Plugin.Skills.Remedy
- {
- /// <summary>
- /// 治疗, 五技能 :基类
- /// 跃起对自己注入强力的咒语(算是施法动作时间,但是霸体),然后原地砸下气浪,造成一定伤害,并使自己强化6S,
- /// 金咒缠身,模型变大,增加n%暴击率,m%攻击速度,X%移动速度
- /// </summary>
- public class Remedy_510500 : RemedySkillBase
- {
- private static readonly int ID = 510500;
- public static readonly int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.GOLDEN_BODY_5;
- private static readonly int Buff_ID1 = (int)XmdsBuffBase.XmdsBuffList.IGNORE_DAMAGE_5;
- public override int SkillID { get { return ID; } }
- // 伤害倍数:固定值_百分比
- public XmdsSkillValue valueSet;
- // 扩展配置
- public XmdsSkillValue valueSet5; // 强化效果
- protected XmdsSkillValue valueSet7; // 释放过程中免伤
- protected override void OnSkillDamagePerEvent(BattleParams param)
- {
- param.SkillDamageAdd = valueSet.GetValue(param.GameSkill.SkillLevel);
- param.SkillDamagePer = valueSet.GetValueExt(param.GameSkill.SkillLevel);
- }
- private void BuffInit(GameSkill info, XmdsVirtual unit)
- {
- var pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
- var buff1 = pack.GetXmdsBuff(0) as XmdsBuff_PropChange;
- buff1.CurentChangeType = XmdsVirtual.UnitAttributeType.CritRate;
- buff1.IsPercent = true;
- buff1.CurrentValue = valueSet5.GetValue(info.SkillLevel, 1);
- var buff2 = pack.GetXmdsBuff(1) as XmdsBuff_PropChange;
- buff2.CurentChangeType = XmdsVirtual.UnitAttributeType.AttackSpeed;
- buff2.IsPercent = true;
- buff2.CurrentValue = valueSet5.GetValue(info.SkillLevel, 2);
- var buff3 = pack.GetXmdsBuff(2) as XmdsBuff_PropChange;
- buff3.CurentChangeType = XmdsVirtual.UnitAttributeType.MoveSpeed;
- buff3.IsPercent = true;
- buff3.CurrentValue = valueSet5.GetValue(info.SkillLevel, 3);
- var bt = pack.mBuffTemplate;
- bt.IsHarmful = false;
- bt.LifeTimeMS = valueSet5.GetValue(info.SkillLevel, 4);
- pack.BindTemplateAndDispose();
- unit.RegistSendBuff(bt);
- }
- protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
- {
- base.OnSkillDataChange(gs, unit);
- //金身效果
- var buff1 = unit.GetRegisBuffVirtual(Buff_ID, 0) as XmdsBuff_PropChange;
- buff1.CurrentValue = valueSet5.GetValue(gs.SkillLevel, 1);
- var buff2 = unit.GetRegisBuffVirtual(Buff_ID, 1) as XmdsBuff_PropChange;
- buff2.CurrentValue = valueSet5.GetValue(gs.SkillLevel, 2);
- var buff3 = unit.GetRegisBuffVirtual(Buff_ID, 2) as XmdsBuff_PropChange;
- buff3.CurrentValue = valueSet5.GetValue(gs.SkillLevel, 3);
- var bt = unit.GetRegistBuff(Buff_ID);
- bt.LifeTimeMS = valueSet5.GetValue(gs.SkillLevel, 4);
- //释放过程中免伤
- var buff_ignoreDmg = unit.GetRegisBuffVirtual(Buff_ID1) as XmdsBuff_PropChange;
- buff_ignoreDmg.CurrentValue = valueSet7.GetValue(gs.SkillLevel, 2);
- var bt_ignoreDmg = unit.GetRegistBuff(Buff_ID1);
- bt_ignoreDmg.LifeTimeMS = valueSet7.GetValue(gs.SkillLevel, 1);
- }
- protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
- base.OnInit(info, unit, ref template);
- //注册免伤buff
- XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID1);
- XmdsBuff_PropChange buff = (XmdsBuff_PropChange)pack.GetXmdsBuff(0);
- buff.CurentChangeType = XmdsVirtual.UnitAttributeType.AllDmgReduce;
- buff.CurrentValue = valueSet7.GetValue(info.SkillLevel, 2); // 免伤比例
- buff.IsPercent = true;
- BuffTemplate bt = pack.mBuffTemplate;
- bt.IsHarmful = true;
- bt.LifeTimeMS = valueSet7.GetValue(info.SkillLevel, 1);
- pack.BindTemplateAndDispose();
- unit.RegistSendBuff(bt);
- BuffInit(info, unit);
- this.RegistEvent(EventType.UseFormluaType, OnUseFormluaTypeEvent);
- unit.RegistLaunchSkillOver(OnLaunchSkillOver, info);
- }
- private void OnUseFormluaTypeEvent(BattleParams param)
- {
- param.UseDamageType = base.AutoGetDamageType(param);
- }
- protected virtual int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState state)
- {
- this.TriggerBaseBuff(info, launcher, state);
- return 0;
- }
- protected void TriggerBaseBuff(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState state)
- {
- launcher.mUnit.AddBuff(Buff_ID);
- launcher.mUnit.AddBuff(Buff_ID1);
- }
- protected override void OnInitConfig()
- {
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- base.InitBaseConfig(data);
- InitData(data, out valueSet, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- // 扩展配置
- InitData(data, out valueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
- InitData(data, out valueSet7, XmdsSkillData.XmdsSkillDataKey.ValueSet7);
- }
- }
- }
|