Warrior_110310.cs 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using CommonAI.Zone;
  2. using CommonAI.Zone.Helper;
  3. using CommonAI.Zone.Instance;
  4. using System;
  5. using XmdsCommon.Plugin;
  6. using XmdsCommonServer.Plugin;
  7. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  8. using XmdsCommonServer.XLS.Data;
  9. using XmdsCommonSkill.Plugin.Buffs;
  10. namespace XmdsCommonSkill.Plugin.Skills.Warrior
  11. {
  12. /// <summary>
  13. /// 三技能 3- 1
  14. /// (根据命中人数提升攻击力,x秒(每层n%.上限5))
  15. /// </summary>
  16. public class Warrior_110310 : Warrior_110300
  17. {
  18. private static readonly int ID = 110310;
  19. public override int SkillID { get { return ID; } }
  20. protected static readonly int Buff_ID_3_1 = (int)XmdsBuffBase.XmdsBuffList.ZS_ATTACKUP_3_1;
  21. //命中多人,提升伤害
  22. protected XmdsSkillValue mValueSet2;
  23. //本次命中人数
  24. protected int mHitPlayers = 0;
  25. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  26. {
  27. base.OnInit(info, unit, ref template);
  28. unit.RegistLaunchSkillOver(OnLaunchSkillOver, info);
  29. // Buff修改
  30. var pack2 = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID_3_1);
  31. var buff2 = pack2.GetXmdsBuff(XmdsBuffProperties.XmdsBuffAbility.PropChange) as XmdsBuff_PropChange;
  32. buff2.CurentChangeType = XmdsVirtual.UnitAttributeType.Attack;
  33. buff2.IsPercent = true;
  34. buff2.CurrentValue = mValueSet2.GetValue(info.TalentSkillLevel1, 1);
  35. var bt2 = pack2.mBuffTemplate;
  36. bt2.LifeTimeMS = mValueSet2.GetValue(info.TalentSkillLevel1, 2);
  37. bt2.IsHarmful = true;
  38. pack2.BindTemplateAndDispose();
  39. unit.RegistSendBuff(bt2);
  40. }
  41. protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
  42. {
  43. base.OnSkillDataChange(gs, unit);
  44. var buff = unit.GetRegisBuffVirtual(Buff_ID_3_1) as XmdsBuff_PropChange;
  45. buff.CurrentValue = mValueSet2.GetValue(gs.TalentSkillLevel1, 1);
  46. var bt = unit.GetRegistBuff(Buff_ID);
  47. bt.LifeTimeMS = mValueSet2.GetValue(gs.TalentSkillLevel1, 2);
  48. }
  49. protected override void OnSkillLogicAftercalDamage(BattleParams param)
  50. {
  51. param.GameSkill.mHitUnits.Put(param.Hitter.mUnit.ID, 1);
  52. base.OnSkillDamagePerEvent(param);
  53. int layers = GetBufEffect(param.GameSkill.mHitUnits.Count);
  54. if(layers != this.mHitPlayers)
  55. {
  56. this.mHitPlayers = layers;
  57. param.Attacker.mUnit.AddBuff(Buff_ID_3_1);
  58. }
  59. }
  60. private int OnLaunchSkillOver(GameSkill info, XmdsCommonServer.Plugin.XmdsVirtual launcher, CommonAI.Zone.Instance.InstanceUnit.SkillState state)
  61. {
  62. info.mHitUnits.Clear();
  63. this.mHitPlayers = 0;
  64. return 0;
  65. }
  66. protected override void OnInitConfig()
  67. {
  68. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  69. InitData(data, out mValueSet1, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  70. InitData(data, out mValueSet2, XmdsSkillData.XmdsSkillDataKey.ValueSet2);
  71. // 基础-减速数值
  72. InitData(data, out mValueSet5, XmdsSkillData.XmdsSkillDataKey.ValueSet5);
  73. //蓄力技能规则
  74. InitData(data, out mValueSet8, XmdsSkillData.XmdsSkillDataKey.ValueSet8);
  75. }
  76. }
  77. }