Pet_80260.cs 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. using CommonAI.Data;
  2. using CommonAI.Zone;
  3. using CommonAI.Zone.Formula;
  4. using CommonAI.Zone.Helper;
  5. using CommonAI.Zone.Instance;
  6. using CommonLang;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.Linq;
  10. using System.Text;
  11. using System.Threading.Tasks;
  12. using XmdsCommon.Plugin;
  13. using XmdsCommonServer.Plugin;
  14. using XmdsCommonServer.XLS.Data;
  15. using XmdsCommonSkill.Plugin.Buffs;
  16. using XmdsCommonSkill.Plugin.Interface;
  17. using XmdsCommonSkill.Plugin.Skills;
  18. namespace XmdsCommonSkill.Plugin.PassiveSkills.Pet20200515
  19. {
  20. /// <summary>
  21. /// 宠物装备被动:受击概率触发-》宠物获得护盾
  22. /// </summary>
  23. ///
  24. class Pet_80260 : PetEquipSkillBase
  25. {
  26. /// 技能ID.
  27. private static int ID = 80260;
  28. public override int SkillID { get { return ID; } }
  29. private static readonly int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.PET_EQUIPSKILL_HUDUN; //主人狂暴buff
  30. //最大生命,持续时间
  31. protected XmdsSkillValue mHuDun;
  32. //绑定法术
  33. LaunchSpell mBindSpell;
  34. //内部变量
  35. private int mUUID_1 = 0;
  36. protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
  37. {
  38. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  39. XmdsBuff_Shield_AbsorbDamage buff = (XmdsBuff_Shield_AbsorbDamage)pack.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.SHIELD_AbsorbDamage);
  40. buff.AbsorbDamageSum = CUtils.CastInt(owner.MirrorProp.MaxHP * XmdsUnitProp.PER * mHuDun.GetValue(skillInfo.SkillLevel, 1));
  41. BuffTemplate bt = pack.mBuffTemplate;
  42. bt.IsHarmful = false;
  43. bt.LifeTimeMS = mHuDun.GetValue(skillInfo.SkillLevel, 2);
  44. pack.BindTemplateAndDispose();
  45. owner.RegistSendBuff(bt);
  46. //mUUID_1 = owner.RegistOnHitDamage(OnHandleHitDamage, skillInfo, true);
  47. mUUID_1 = owner.RegistShareMasterDmgEvent(OnShareMasterDmgEvent, skillInfo);
  48. }
  49. protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
  50. {
  51. var buff = unit.GetRegisBuffVirtual(Buff_ID) as XmdsBuff_Shield_AbsorbDamage;
  52. buff.AbsorbDamageSum = CUtils.CastInt(unit.MirrorProp.MaxAttack * XmdsUnitProp.PER * mHuDun.GetValue(gs.SkillLevel, 1));
  53. var bt = unit.GetRegistBuff(Buff_ID);
  54. bt.LifeTimeMS = mHuDun.GetValue(gs.SkillLevel, 2);
  55. }
  56. protected override void OnDispose(XmdsVirtual owner)
  57. {
  58. //owner.UnRegistOnHitDamage(mUUID_1);
  59. owner.UnRegistShareMasterDmgEvent(mUUID_1);
  60. }
  61. //private float OnHandleHitDamage(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
  62. // ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
  63. //{
  64. // if (damage > 0 && base.IsTrigger(hitted, skill.SkillLevel))
  65. // {
  66. // hitted.mUnit.Parent.unitLaunchSpell(XmdsSkillType.none, hitted.mUnit, mBindSpell,
  67. // hitted.mUnit.X, hitted.mUnit.Y, hitted.mUnit.ID);
  68. // hitted.mUnit.AddBuff(Buff_ID);
  69. // }
  70. // return damage;
  71. //}
  72. private int OnShareMasterDmgEvent(int hp, InstanceUnit sender, InstanceUnit unit, GameSkill skill, ref bool isEndDispatch)
  73. {
  74. if (hp > 0 && base.IsTrigger((XmdsVirtual)unit.Virtual, skill.SkillLevel))
  75. {
  76. unit.Parent.unitLaunchSpell(XmdsSkillType.none, unit, mBindSpell, unit.X, unit.Y, unit.ID);
  77. unit.AddBuff(Buff_ID);
  78. }
  79. return hp;
  80. }
  81. protected override void OnInitConfig(GameSkill skillInfo)
  82. {
  83. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(this.SkillID);
  84. XmdsSkillValue triggerInterval, triggerRate, bindEffectSpell;
  85. InitData(data, out triggerInterval, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  86. InitData(data, out triggerRate, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  87. InitData(data, out mHuDun, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
  88. InitData(data, out bindEffectSpell, XmdsSkillData.XmdsSkillDataKey.ValueSet4);
  89. base.initEquipSkillBase(triggerInterval, triggerRate, skillInfo.SkillLevel);
  90. mBindSpell = ComSpellTemplate.Instance().GetSpellBySpellID(bindEffectSpell.GetValue());
  91. if (mBindSpell == null)
  92. {
  93. log.Error("Pet_80260找不到绑定特效法术ID:" + bindEffectSpell.GetValue());
  94. }
  95. }
  96. }
  97. }