Boss_90107.cs 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using CommonAI.Zone.Helper;
  2. using CommonAI.Zone.Instance;
  3. using XmdsCommonServer.Plugin;
  4. using XmdsCommonServer.XLS.Data;
  5. using XmdsCommonSkill.Plugin.Buffs;
  6. using System;
  7. using static CommonAI.Zone.Instance.InstanceUnit;
  8. using XmdsCommon.Plugin;
  9. using CommonAI.Zone;
  10. using XmdsCommonServer.Plugin.Units;
  11. using CommonAI.Zone.Formula;
  12. using XmdsCommonSkill.Plugin.Skills;
  13. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  14. using CommonAI.Data;
  15. namespace XmdsCommonSkill.Plugin.PassiveSkills.Remedy
  16. {
  17. /// <summary>
  18. /// boss通用被动 - 重击(boss的普攻几率眩晕2s)
  19. /// </summary>
  20. class Boss_90107 : XmdsPassiveSkillBase
  21. {
  22. public static readonly int ID = 90107;
  23. private static readonly int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.YUN_XUAN;
  24. private int mUUID_1 = 0;
  25. public static XmdsSkillValue dmgValue; // 伤害系数
  26. public static XmdsSkillValue valueSet1; // 眩晕概率
  27. public static XmdsSkillValue valueSet2; // 眩晕时间
  28. public override int SkillID {get{return ID;}}
  29. protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
  30. {
  31. // Buff3修改
  32. var pack3 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  33. pack3.mBuffTemplate.LifeTimeMS = valueSet2.GetValue();
  34. var bt3 = pack3.mBuffTemplate;
  35. pack3.BindTemplateAndDispose();
  36. owner.RegistSendBuff(bt3);
  37. }
  38. protected override void OnInitOver(XmdsVirtual unit, GameSkill info)
  39. {
  40. int baseSkillID = unit.SkillHelper.GetBaseSkillID();
  41. if (baseSkillID > 0)
  42. {
  43. mUUID_1 = unit.RegistOnHitOther(OnHandleHitOther, new GameSkill(unit.SkillHelper.GetBaseSkillID()));
  44. }
  45. else
  46. {
  47. log.Error("Boss_90107没有普攻 : " + unit.mUnit.Info.ID);
  48. }
  49. }
  50. private float OnHandleHitOther(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
  51. ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
  52. {
  53. float extDamage = damage * XmdsUnitProp.PER * dmgValue.GetValue();
  54. if (attacker.mUnit.RandomN.Next(0, 10000) < valueSet1.GetValue())
  55. {
  56. hitted.mUnit.AddBuff(Buff_ID, attacker.mUnit);
  57. }
  58. return damage + extDamage;
  59. }
  60. protected override void OnInitSkillParam()
  61. {
  62. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  63. InitData(data, out dmgValue, XmdsSkillData.XmdsSkillDataKey.DmgRate);
  64. InitData(data, out valueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  65. InitData(data, out valueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  66. }
  67. protected override void OnDispose(XmdsVirtual owner)
  68. {
  69. if(mUUID_1 > 0)
  70. {
  71. owner.UnRegistOnHitOther(mUUID_1);
  72. }
  73. }
  74. }
  75. }