Magic_310601.cs 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  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 XmdsCommonSkill.Plugin.Skills.Magic;
  15. using static XmdsCommonSkill.Plugin.Buffs.XmdsBuff_SwordShadow;
  16. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  17. namespace XmdsCommonSkill.Plugin.PassiveSkills.Magic
  18. {
  19. /// <summary>
  20. /// 法师被动
  21. /// 2.每次使用技能,自身获得一层普通剑影,每普通攻击一次消耗一层,普通攻击弹道变成剑影从背后飞出,对攻击目标造成额外伤害(普攻+额外攻击系数加成),
  22. /// 剑影持续5秒,最多拥有5个剑影。5个剑影满了再获得时会清除第一个剑影,将最后一个剑影放在第5个。获得剑影刷新持续时间。
  23. /// 剑气一层时生成的剑影:单纯增伤n%
  24. /// 剑气二层生成的剑影:穿透增伤n2%
  25. /// 剑气三层生成的剑影:穿透+减速 增伤n3% (既原来的1-5 2-5 1-6,特效颜色法术等可直接用)
  26. /// </summary>
  27. public class Magic_310601 : XmdsPassiveSkillBase
  28. {
  29. /// 技能ID.
  30. public static readonly int ID = 310601;
  31. public override int SkillID { get { return ID; } }
  32. public static readonly int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.PASSIVE_FS_6_1; // 标记自己
  33. public static readonly int Buff_SPEED_DOWN = (int)XmdsBuffBase.XmdsBuffList.PASSIVE_FS_6_SPEEDDOWN;
  34. // 剑影额外伤害
  35. protected static XmdsSkillValue valueSet;
  36. // 剑影持续时间
  37. protected static XmdsSkillValue valueSet2;
  38. // 剑气一层效果:伤害增加n%
  39. protected static XmdsSkillValue valueSet3;
  40. // 剑气二层效果:穿透增加
  41. protected static XmdsSkillValue valueSet4;
  42. // 剑气三层效果:减速时间,比例
  43. protected static XmdsSkillValue valueSet5;
  44. private XmdsVirtual mOwner;
  45. private int mUUID_1 = 0;
  46. private int mSkillLv;
  47. protected override void OnInit(GameSkill skillInfo, XmdsVirtual owner)
  48. {
  49. this.mOwner = owner;
  50. this.mSkillLv = skillInfo.GetPassiveLevel();
  51. //收到攻击监听注册
  52. mUUID_1 = owner.RegistLaunchSkillOver(OnLaunchSkillOver, skillInfo, true);
  53. XmdsBuffPack pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  54. BuffTemplate bt = pack.mBuffTemplate;
  55. bt.IsHarmful = false;
  56. bt.LifeTimeMS = valueSet2.GetValue(skillInfo.GetPassiveLevel());
  57. pack.BindTemplateAndDispose();
  58. owner.RegistSendBuff(bt);
  59. // Buff修改
  60. var pack2 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_SPEED_DOWN);
  61. var buff2 = pack2.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.MoveSpeedDown) as XmdsBuff_MoveSpeedDown;
  62. buff2.ChangePercent = -valueSet5.GetValue(this.mSkillLv, 2);
  63. var bt2 = pack2.mBuffTemplate;
  64. bt2.LifeTimeMS = valueSet5.GetValue(this.mSkillLv, 1);
  65. bt2.IsHarmful = true;
  66. pack2.BindTemplateAndDispose();
  67. owner.RegistSendBuff(bt2);
  68. }
  69. protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
  70. {
  71. this.mSkillLv = gs.GetPassiveLevel();
  72. var bt = unit.GetRegistBuff(Buff_ID);
  73. bt.LifeTimeMS = valueSet2.GetValue(gs.GetPassiveLevel());
  74. var bt2 = unit.GetRegistBuff(Buff_SPEED_DOWN);
  75. bt2.LifeTimeMS = valueSet5.GetValue(this.mSkillLv, 1);
  76. var buff2 = unit.GetRegisBuffVirtual(Buff_SPEED_DOWN) as XmdsBuff_MoveSpeedDown;
  77. buff2.ChangePercent = -valueSet5.GetValue(this.mSkillLv, 2);
  78. }
  79. public override int GetSkillValue(AbstractSkillType type)
  80. {
  81. byte talentLv = this.mOwner.GetPlayerCache().GetTalentLv();
  82. if (type == AbstractSkillType.Value1)
  83. {
  84. // 剑气一层效果
  85. if(talentLv >= 1)
  86. {
  87. return valueSet3.GetValue(this.mSkillLv, talentLv);
  88. }
  89. }
  90. else if(type == AbstractSkillType.Value2)
  91. {
  92. // 剑气二层效果
  93. if(talentLv >= 2)
  94. {
  95. return valueSet4.GetValue(this.mSkillLv, talentLv);
  96. }
  97. }
  98. else if (type == AbstractSkillType.Value3)
  99. {
  100. // 剑气三层效果
  101. if (talentLv >= 3)
  102. {
  103. return 1;
  104. }
  105. }
  106. else if (type == AbstractSkillType.Value4) // 剑影伤害加成
  107. {
  108. return valueSet.GetValue(this.mSkillLv);
  109. }
  110. return 0;
  111. }
  112. //释放技能监听
  113. private int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher,
  114. CommonAI.Zone.Instance.InstanceUnit.SkillState skill)
  115. {
  116. XmdsSkillProperties skillProp = skill.Data.Properties as XmdsSkillProperties;
  117. if (skillProp != null && skillProp.SkillType == XmdsSkillType.active && skill.ID / 1000 == 310 && skill.ActionIndex <= 0)
  118. {
  119. XmdsBuff_SwordShadow.LauncherSkillAddSwordShadow(launcher);
  120. }
  121. return 0;
  122. }
  123. protected override void OnDispose(XmdsVirtual owner)
  124. {
  125. owner.UnRegistLaunchSkillOver(mUUID_1);
  126. }
  127. protected override void OnInitSkillParam()
  128. {
  129. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  130. InitData(data, out valueSet, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  131. InitData(data, out valueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  132. InitData(data, out valueSet3, XmdsSkillData.XmdsSkillDataKey.ValueSet3);
  133. InitData(data, out valueSet4, XmdsSkillData.XmdsSkillDataKey.ValueSet4);
  134. InitData(data, out valueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
  135. }
  136. }
  137. }