123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- using CommonAI.Zone;
- using CommonAI.Zone.Helper;
- using CommonAI.Zone.Instance;
- using CommonLang;
- using XmdsCommon.Plugin;
- using XmdsCommonServer.Plugin;
- using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
- using XmdsCommonServer.XLS.Data;
- using XmdsCommonSkill.Plugin.Buffs;
- namespace XmdsCommonSkill.Plugin.Skills.Magic
- {
- /// <summary>
- /// 五技能 5-5(施放瞬间获得护盾,造成伤害随释放时间逐渐提升)
- /// </summary>
- public class Magic_310560 : Magic_310550
- {
- private static readonly int ID = 310560;
- private static readonly int Buff_ID_5_6 = (int)XmdsBuffBase.XmdsBuffList.FS_HUDUN_5_6;
- //护盾系数
- public XmdsSkillValue mValueSet4;
- //扩展配置
- public XmdsSkillValue mValueSet5;
- private long skillLaunchTime = 0;
- public override int SkillID { get { return ID; } }
- protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
- {
- base.OnInit(info, unit, ref template);
- XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID_5_6);
- XmdsBuff_Shield_AbsorbDamage buff = (XmdsBuff_Shield_AbsorbDamage)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.SHIELD_AbsorbDamage);
- buff.AbsorbDamageSum = CUtils.CastInt(unit.MirrorProp.MaxHP * XmdsUnitProp.PER * mValueSet4.GetValue(info.TalentSkillLevel3, 1));
- BuffTemplate bt = pack.mBuffTemplate;
- bt.IsHarmful = false;
- bt.LifeTimeMS = mValueSet4.GetValue(info.TalentSkillLevel3, 2);
- pack.BindTemplateAndDispose();
- unit.RegistSendBuff(bt);
- unit.RegistLaunchSkillOver(OnLaunchSkillOver, info);
- }
- protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
- {
- base.OnSkillDataChange(gs, unit);
- var buff = unit.GetRegisBuffVirtual(Buff_ID_5_6) as XmdsBuff_Shield_AbsorbDamage;
- buff.AbsorbDamageSum = CUtils.CastInt(unit.MirrorProp.MaxHP * XmdsUnitProp.PER * mValueSet4.GetValue(gs.TalentSkillLevel3, 1));
- var bt = unit.GetRegistBuff(Buff_ID_5_6);
- bt.LifeTimeMS = mValueSet4.GetValue(gs.TalentSkillLevel3, 2);
- }
- protected override void OnSkillDamagePerEvent(BattleParams param)
- {
- base.OnSkillDamagePerEvent(param);
- int level = 0;
- if (param.Source.FromSpellUnit != null)
- {
- level = param.Source.FromSpellUnit.GetHitTimes() - 1;
- }
- else
- {
- //避免配置错误
- level = CUtils.CastInt((CommonLang.CUtils.localTimeMS - this.skillLaunchTime) / base.mHitInterval);
- }
- if(level > 0)
- {
- param.SkillDamagePer += level * mValueSet5.GetValue(param.GameSkill.TalentSkillLevel3);
- }
- //System.Console.WriteLine("层数:" + level + ", 伤害系数:" + param.SkillDamagePer);
- }
- private int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState skill)
- {
- launcher.mUnit.AddBuff(Buff_ID_5_6, launcher.mUnit);
- //前4次伤害忽略
- this.skillLaunchTime = CommonLang.CUtils.localTimeMS + 4 * base.mHitInterval;
- return 0;
- }
- protected override void OnInitConfig()
- {
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- InitData(data, out mValueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- InitData(data, out mValueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
- InitData(data, out mValueSet3, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
- InitData(data, out mValueSet4, XmdsSkillData.XmdsSkillDataKey.ValueSet4);
- //扩展配置
- InitData(data, out mValueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
- InitData(data, out mValueSet8, XmdsSkillData.XmdsSkillDataKey.ValueSet8);
- }
- }
- }
|