Magic_310400.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. using CommonAI.Zone;
  2. using CommonAI.Zone.Helper;
  3. using CommonAI.Zone.Instance;
  4. using XmdsCommon.Plugin;
  5. using XmdsCommonServer.Plugin;
  6. using XmdsCommonServer.Plugin.XmdsSkillTemplate.DamageCalculator;
  7. using XmdsCommonServer.XLS.Data;
  8. using XmdsCommonSkill.Plugin.Buffs;
  9. namespace XmdsCommonSkill.Plugin.Skills.Magic
  10. {
  11. /// <summary>
  12. /// 法师四技能 4 : 基类
  13. /// 短暂读条0.5s,可被打断,在指定区域召唤剑阵,读条施法动作结束后,
  14. /// 飞剑从天而降,对范围内敌人造成伤害并对其压制1.5秒并生成一个圆形结界,进出结界时会受到伤害(不重复),结界持续3秒
  15. /// </summary>
  16. public class Magic_310400 : XmdsSkillBase
  17. {
  18. /// 技能ID.
  19. private static readonly int ID = 310400;
  20. private static readonly int Buff_ID = (int)XmdsBuffBase.XmdsBuffList.FS_YAZHI_4;
  21. public override int SkillID { get { return ID; } }
  22. //压制时间
  23. public XmdsSkillValue mDmgValue;
  24. //砸地伤害,法阵伤害(固定值_基础值)
  25. public XmdsSkillValue mValueSet;
  26. protected override void OnSkillDamagePerEvent(BattleParams param)
  27. {
  28. if(param.AtkProp.DamagePerID == 1)
  29. {
  30. param.SkillDamageAdd = mValueSet.GetValue(param.GameSkill.SkillLevel, 1);
  31. param.SkillDamagePer = mValueSet.GetValueExt(param.GameSkill.SkillLevel, 1);
  32. }
  33. else if (param.AtkProp.DamagePerID == 2)
  34. {
  35. param.SkillDamageAdd = mValueSet.GetValue(param.GameSkill.SkillLevel, 2);
  36. param.SkillDamagePer = mValueSet.GetValueExt(param.GameSkill.SkillLevel, 2);
  37. }
  38. }
  39. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  40. {
  41. // Buff修改
  42. var pack = XmdsBuffFactory.GetInstance().GetXmdsBuffPack(Buff_ID);
  43. var bt = pack.mBuffTemplate;
  44. bt.LifeTimeMS = mDmgValue.GetValue(info.SkillLevel);
  45. bt.IsHarmful = true;
  46. pack.BindTemplateAndDispose();
  47. unit.RegistSendBuff(bt);
  48. }
  49. protected override void OnSkillDataChange(GameSkill gs, XmdsVirtual unit)
  50. {
  51. base.OnSkillDataChange(gs, unit);
  52. var bt = unit.GetRegistBuff(Buff_ID);
  53. bt.LifeTimeMS = mDmgValue.GetValue(gs.SkillLevel);
  54. }
  55. protected override void OnSkillLogicEvent(BattleParams param)
  56. {
  57. // 法阵创建之初f
  58. if(param.AtkProp.DamagePerID == 1)
  59. {
  60. var bt = param.Attacker.GetRegistBuff(Buff_ID);
  61. bt.LifeTimeMS = GetYaZiTime(param);
  62. param.Hitter.mUnit.AddBuff(Buff_ID, param.Attacker.mUnit);
  63. }
  64. }
  65. //获得压制时间
  66. protected virtual int GetYaZiTime(BattleParams param)
  67. {
  68. return mDmgValue.GetValue(param.GameSkill.SkillLevel);
  69. }
  70. protected override void OnInitConfig()
  71. {
  72. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  73. InitData(data, out mDmgValue, XmdsSkillData.XmdsSkillDataKey.DmgRate);
  74. InitData(data, out mValueSet, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  75. }
  76. }
  77. }