DS60103.cs 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using Common.Utility.CombatEvent;
  2. using Fort23.Core;
  3. using GameLogic.Combat.CombatTool;
  4. using GameLogic.Player;
  5. using Utility;
  6. namespace GameLogic.Combat.Skill
  7. {
  8. /// <summary>
  9. /// 玄黄道 :每次使用功法时在当前位置留下一道属性印记,下一个放上来的功法如果和以前功法相生则功法效果提升50%,每次使用功法时都会治疗对应相生属性的伤势。(均衡性功法搭配,转盘改变,变为金、水、木、火、土)
  10. /// </summary>
  11. public class DS60103 : SkillBasic
  12. {
  13. protected Map<int, WuXingType> WuXingTypeMap = new Map<int, WuXingType>();
  14. protected override void ProUseSkill()
  15. {
  16. }
  17. protected override void ProInitSkill()
  18. {
  19. CombatEventManager.Instance.AddEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  20. CombatEventManager.Instance.AddEventListener(CombatEventType.SkillSlotsAlter, SkillSlotsAlter);
  21. }
  22. private void AddUseGongFa(IEventData iEventData)
  23. {
  24. AddUseGongFaEventData addUseGongFaEventData = iEventData as AddUseGongFaEventData;
  25. if (addUseGongFaEventData.SkillBasic.CombatHeroEntity == CombatHeroEntity &&
  26. addUseGongFaEventData.SkillBasic.SelfSkillConfig.SkillType == 1)
  27. {
  28. WuXingTypeMap.Add(addUseGongFaEventData.SkillSlots.index, addUseGongFaEventData.SkillBasic.wuXingType);
  29. float v = SelfSkillConfig.effectValue[1];
  30. switch (addUseGongFaEventData.SkillBasic.wuXingType)
  31. {
  32. case WuXingType.Gold:
  33. CombatHeroEntity.CurrCombatHeroInfo.Metal_Injury -= v;
  34. break;
  35. case WuXingType.Wood:
  36. CombatHeroEntity.CurrCombatHeroInfo.Wood_Injury -= v;
  37. break;
  38. case WuXingType.Water:
  39. CombatHeroEntity.CurrCombatHeroInfo.Water_Injury -= v;
  40. break;
  41. case WuXingType.Fire:
  42. CombatHeroEntity.CurrCombatHeroInfo.Fire_Injury -= v;
  43. break;
  44. case WuXingType.Earth:
  45. CombatHeroEntity.CurrCombatHeroInfo.Earth_Injury -= v;
  46. break;
  47. }
  48. }
  49. }
  50. private void SkillSlotsAlter(IEventData iEventData)
  51. {
  52. SkillSlotsAlterEventData skillSlotsAlterEventData = iEventData as SkillSlotsAlterEventData;
  53. if (skillSlotsAlterEventData.SkillBasic != null &&
  54. skillSlotsAlterEventData.SkillBasic.CombatHeroEntity == CombatHeroEntity &&
  55. skillSlotsAlterEventData.SkillBasic.SelfSkillConfig.SkillType == 1)
  56. {
  57. if (WuXingTypeMap.TryGetValue(skillSlotsAlterEventData.SkillSlots.index, out WuXingType wuXingType))
  58. {
  59. WuXingTypeMap.Remove(skillSlotsAlterEventData.SkillSlots.index);
  60. bool isSymbiosis = CombatCalculateTool.Instance.IsSymbiosis(
  61. skillSlotsAlterEventData.SkillBasic.wuXingType,
  62. wuXingType);
  63. if (isSymbiosis)
  64. {
  65. skillSlotsAlterEventData.SkillBasic.IntensifyingEffect(SelfSkillConfig.effectValue[0]);
  66. }
  67. }
  68. }
  69. }
  70. private void Finish()
  71. {
  72. }
  73. protected override void ProCombatUpdate(float time)
  74. {
  75. }
  76. protected override void ProDispose()
  77. {
  78. WuXingTypeMap.Clear();
  79. CombatEventManager.Instance.RemoveEventListener(CombatEventType.AddUseGongFa, AddUseGongFa);
  80. CombatEventManager.Instance.RemoveEventListener(CombatEventType.SkillSlotsAlter, SkillSlotsAlter);
  81. }
  82. }
  83. }