12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- 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 CommonAI.Data;
- using CommonLang;
- using XmdsCommonSkill.Plugin.PassiveSkills.Pet20200515;
- namespace XmdsCommonSkill.Plugin.PassiveSkills.Remedy
- {
-
-
-
- class Pet_80013 : PetPassiveBase
- {
- public static readonly int ID = 80013;
- private static XmdsSkillValue triggerRate;
- private static XmdsSkillValue triggerRateExt;
- private static XmdsSkillValue triggerInterval;
- private static XmdsSkillValue absorbRate;
-
- private int mUUID_1 = 0;
- private XmdsVirtual mPetMaster = null;
- private XmdsVirtual mPet = null;
- private long mNextTriggerTime = 0;
- public override int SkillID { get { return ID; } }
- protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
- {
- if(owner is XmdsVirtual_Pet)
- {
- this.mPet = owner;
- InstancePet pet = owner.mUnit as InstancePet;
- mPetMaster = pet.Master.Virtual as XmdsVirtual;
- if(mPetMaster != null && mPet.GetUnitFateType() != UnitFateType.None)
- {
- mUUID_1 = mPetMaster.RegistOnHitDamage(OnHandleHitDmage, skillInfo, true);
- }
- this.mNextTriggerTime = CommonLang.CUtils.localTimeMS + triggerInterval.GetValue();
- }
- }
- private float OnHandleHitDmage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
- ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
- {
- int absorbDamage = 0;
- if (damageType == DamageType.Damage && this.mNextTriggerTime < CommonLang.CUtils.localTimeMS && !attacker.IsPlayerUnit()
- && IsTrigger(hitted, triggerRate, triggerRateExt, skill, mPet.GetUnitFateType()))
- {
- absorbDamage = CUtils.CastInt(damage * XmdsUnitProp.PER * absorbRate.GetValue(skill.SkillLevel));
-
- if(absorbDamage > 0)
- {
- this.mPet.mUnit.ReduceHP(absorbDamage, attacker.mUnit);
- }
- this.mNextTriggerTime = CommonLang.CUtils.localTimeMS + triggerInterval.GetValue();
- base.NotifyTriggerAblity(mPet.mUnit, this.SkillID);
- }
- return damage - absorbDamage;
- }
- protected override void OnInitSkillParam()
- {
- XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
- InitData(data, out triggerRate, XmdsSkillData.XmdsSkillDataKey.ValueSet);
- InitData(data, out triggerRateExt, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
- InitData(data, out triggerInterval, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
- InitData(data, out absorbRate, XmdsSkillData.XmdsSkillDataKey.ValueSet4);
- }
- protected override void OnDispose(XmdsVirtual owner)
- {
- if (mPetMaster != null)
- {
- mPetMaster.UnRegistOnHitDamage(mUUID_1);
- }
- }
- }
- }
|