Warrior_110600.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  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. using CommonLang;
  16. namespace XmdsCommonSkill.Plugin.PassiveSkills.Warrior
  17. {
  18. /// <summary>
  19. /// 战士被动
  20. /// 嗜血神力:每过15秒,攻击回复自身+n%攻击加成点生命值
  21. /// </summary>
  22. public class Warrior_110600 : XmdsPassiveSkillBase
  23. {
  24. /// 技能ID.
  25. public static readonly int ID = 110600;
  26. public override int SkillID { get { return ID; } }
  27. // 怒气最大值
  28. protected static XmdsSkillValue mAngerMax;
  29. // 怒气变化规则
  30. protected static XmdsSkillValue mAngerRule;
  31. // 脱战X时间后,怒气开始掉
  32. protected static XmdsSkillValue mAngerReduceTime;
  33. // 怒气每增加XX, 妖兽增伤增加Y
  34. protected static XmdsSkillValue mAngerToDmg;
  35. // 普攻增加的怒气值
  36. protected static XmdsSkillValue mNormalAtkAnger;
  37. //
  38. private int m_UUID1;
  39. private XmdsVirtual mOwner;
  40. protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
  41. {
  42. this.mOwner = owner;
  43. //无等级概念,为适应客户端偷懒这么写的
  44. IntIntIntData refreshRule = new IntIntIntData(mAngerReduceTime.GetValue(), mAngerRule.GetValue(1,1), mAngerRule.GetValue(1,2));
  45. var playerCache = XmdsPlayerCache.PlayerTalnetInit(XmdsUnitPro.Sword, owner.mUnit, mAngerMax.GetValue(), refreshRule) as PlayerCache_Warrior;
  46. this.mOwner.SetPlayerCache(playerCache);
  47. if (playerCache != null)
  48. {
  49. playerCache.SetNormalAtakAnger(mNormalAtkAnger.GetValue(skillInfo.GetPassiveLevel()));
  50. }
  51. m_UUID1 = owner.RegistOnHitOther(OnHitOther, skillInfo, true);
  52. }
  53. protected virtual float OnHitOther(float damage, XmdsVirtual hitted, XmdsVirtual attacker, AttackSource source,
  54. ref XmdsVirtual.AtkResult result, DamageType damageType, GameSkill skill, ref bool isEndDispatch)
  55. {
  56. if(skill != null && mAngerToDmg.GetValue(skill.GetPassiveLevel(), 1) > 0)
  57. {
  58. int layer = attacker.Talent_Value() / mAngerToDmg.GetValue(skill.GetPassiveLevel(), 1) * mAngerToDmg.GetValue(skill.GetPassiveLevel(), 2);
  59. damage = damage * (1.0f + layer / XmdsDamageCalculator.PERER);
  60. }
  61. return damage;
  62. }
  63. protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
  64. {
  65. var cache = unit.GetPlayerCache() as PlayerCache_Warrior;
  66. if(cache != null)
  67. {
  68. cache.SetNormalAtakAnger(mNormalAtkAnger.GetValue(gs.GetPassiveLevel()));
  69. }
  70. }
  71. protected override void OnUpdate(int intervalMS, bool slowRefresh)
  72. {
  73. base.OnUpdate(intervalMS, slowRefresh);
  74. if (slowRefresh)
  75. {
  76. this.mOwner.Talent_Refresh();
  77. }
  78. }
  79. protected override void OnDispose(XmdsVirtual owner)
  80. {
  81. owner.UnRegistOnHitOther(m_UUID1);
  82. XmdsPlayerCache.PlayerTalnetDestory(owner.mUnit);
  83. }
  84. protected override void OnInitSkillParam()
  85. {
  86. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  87. InitData(data, out mAngerMax, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  88. InitData(data, out mAngerRule, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  89. InitData(data, out mAngerReduceTime, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
  90. InitData(data, out mAngerToDmg, XmdsSkillData.XmdsSkillDataKey.ValueSet4);
  91. InitData(data, out mNormalAtkAnger, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
  92. }
  93. public void ResetTriggerTime()
  94. {
  95. //this.BuffNextTriggerTime = 0;
  96. }
  97. }
  98. }