Assassin_201070.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. 
  2. using CommonAI.Zone;
  3. using XmdsCommon.Plugin;
  4. using CommonAI.Zone.Instance;
  5. using XmdsCommonServer.Plugin;
  6. using XmdsCommonServer.XLS.Data;
  7. namespace XmdsCommonSkill.Plugin.Skills.Assassin
  8. {
  9. /// <summary>
  10. /// 暗器精通:使刺客可同时扔出x把暗影之刃,同时攻击多个敌人(后续备注:扇形).
  11. /// </summary>
  12. public class Assassin_201070 : Assassin_200020
  13. {
  14. public static new int ID = 201070;
  15. /// 武器数量.
  16. public static XmdsSkillValue Count;
  17. public override int SkillID { get { return ID; } }
  18. protected override void OnInit(GameSkill info, XmdsVirtual unit, ref SkillTemplate template)
  19. {
  20. base.OnInit(info, unit, ref template);
  21. unit.RegistTryLaunchSkillEvent(OnTryLaunchSkillEventHandle, info);
  22. }
  23. private bool OnTryLaunchSkillEventHandle(GameSkill skillInfo, ref InstanceUnit.SkillState skill, XmdsVirtual launcher, ref InstanceUnit.LaunchSkillParam param)
  24. {
  25. if (skill.ID == SkillID)
  26. {
  27. //注意该技能和编辑器配置高度耦合,数据变更很容易出错!!!.
  28. UnitActionData uad = skill.Data.ActionQueue[0];
  29. if (uad != null)
  30. {
  31. UnitActionData.KeyFrame kf = uad.KeyFrames[0];
  32. if (kf != null)
  33. {
  34. LaunchSpell ls = kf.Spell;
  35. ls.Count = this.GetTargetFormulaValue(launcher.SkillHelper.GetGameSkill(SkillID).TalentSkillLevel1, Count);
  36. // 其它数量按编辑器配置的角度释放.
  37. if (ls.Count > 0 && ls.Count <= 10)
  38. {
  39. ls.Angle = (float)(ls.Count * 0.2);
  40. }
  41. }
  42. }
  43. }
  44. return true;
  45. }
  46. protected override void OnInitSkillParam()
  47. {
  48. XmdsSkillData data = XmdsDataMgr.GetInstance().GetXmdsSkillData(ID);
  49. InitData(data, out Count, XmdsSkillData.XmdsSkillDataKey.ValueSet);
  50. }
  51. }
  52. }