ComSpellTemplate.cs 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. using CommonAI.Zone;
  2. using CommonLang;
  3. using CommonLang.Property;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using XmdsCommonServer.Plugin.XmdsSkillTemplate.Skills;
  9. namespace XmdsCommonSkill.Plugin.Interface
  10. {
  11. public class ComSpellTemplate
  12. {
  13. //法术类型魔板信息
  14. public enum XmdsSpellID : int
  15. {
  16. [Desc("治疗1-3,分裂扇")]
  17. SPLIT_FAN = 510131,
  18. [Desc("战士4-6,气血冲击")]
  19. WARRIOR_4_6 = 110461,
  20. [Desc("战士2-6,护盾破碎")]
  21. WARRIOR_2_6_DunBreak = 110261,
  22. [Desc("宠物Give-冰冻射线")]
  23. ROUND_FROZENLINE = 100000,
  24. [Desc("治疗普攻强化-飞花")]
  25. REMEDY_NORMALATK_1 = 510002,
  26. [Desc("治疗普攻强化-弹射")]
  27. REMEDY_NORMALATK_2 = 510003,
  28. [Desc("宠物Give-溅射")]
  29. PETGIVE_SPUTTER = 100001,
  30. [Desc("宠物Give-范围伤害")]
  31. PETGIVE_ROUNDDAMAGE = 100002,
  32. [Desc("法师,闪现后回原地范围伤害")]
  33. FS_MOVE_BACK = 310008,
  34. [Desc("周本boss五行特效-金")]
  35. BOSS_ZB_EFFECT_GOLD = 91301,
  36. [Desc("周本boss五行特效-木")]
  37. BOSS_ZB_EFFECT_WOOD = 91302,
  38. [Desc("周本boss五行特效-水")]
  39. BOSS_ZB_EFFECT_WATER = 91303,
  40. [Desc("周本boss五行特效-火")]
  41. BOSS_ZB_EFFECT_FIRE = 91304,
  42. [Desc("周本boss五行特效-土")]
  43. BOSS_ZB_EFFECT_SOIL = 91305,
  44. [Desc("周本boss五行-冲击波")]
  45. BOSS_ZB_EFFECT_DAMAGE = 91306,
  46. //斩妖技-法术
  47. [Desc("斩妖技-战士1")]
  48. ZHANYAO_ZS_1 = 70010,
  49. [Desc("斩妖技-战士2")]
  50. ZHANYAO_ZS_2 = 70011,
  51. [Desc("斩妖技-法师1")]
  52. ZHANYAO_FS_1 = 70020,
  53. [Desc("斩妖技-法师2")]
  54. ZHANYAO_FS_2 = 70021,
  55. [Desc("斩妖技-治疗1")]
  56. ZHANYAO_NM_1 = 70030,
  57. [Desc("斩妖技-治疗2")]
  58. ZHANYAO_NM_2 = 70031,
  59. // 天书特效
  60. [Desc("天书-天火")]
  61. TIANSHU_1 = 100101,
  62. [Desc("天书-地火")]
  63. TIANSHU_2 = 100102,
  64. [Desc("天书-阳雷")]
  65. TIANSHU_3 = 100103,
  66. [Desc("天书-阴雷")]
  67. TIANSHU_4 = 100104,
  68. [Desc("天书-天火-敌")]
  69. TIANSHU_1_ENEMY = 100105,
  70. [Desc("天书-地火-敌")]
  71. TIANSHU_2_ENEMY = 100106,
  72. [Desc("天书-阳雷-敌")]
  73. TIANSHU_3_ENEMY = 100107,
  74. [Desc("天书-阴雷-敌")]
  75. TIANSHU_4_ENEMY = 100108,
  76. [Desc("天书-敌人")]
  77. TIANSHU_5 = 100109,
  78. [Desc("天书-")]
  79. TIANSHU_5_ENEMY = 100110,
  80. //boss特殊法术
  81. DUNGEON_DEADSPELL = 910190, //副本,小怪死亡,boss释放
  82. //宠物装备802XX-803XX
  83. }
  84. private static ComSpellTemplate instance;
  85. private static readonly int BuffTemplateId = 123456; // 职业&默认法术模板
  86. private static readonly int BuffTemplateId_PET = 123458; // 宠物装备的法术,比较多,单独弄一个
  87. private static readonly int BuffTemplateId_CARDSKILL = 1999999; // 卡牌模块法术模板
  88. // 通用法术模板
  89. private static HashMap<int, LaunchSpell> mCacheSpell = new HashMap<int, LaunchSpell>();
  90. // 卡牌法术模板
  91. private static HashMap<int, LaunchSpell> mCardSpell = new HashMap<int, LaunchSpell>();
  92. public static ComSpellTemplate Instance()
  93. {
  94. if (instance == null)
  95. {
  96. instance = new ComSpellTemplate();
  97. instance.Init();
  98. }
  99. return instance;
  100. }
  101. private ComSpellTemplate() { }
  102. private void Init()
  103. {
  104. SpellTemplate mSpellInfo = XmdsBattleSkill.GetSpellTemplate(BuffTemplateId);
  105. for (int i = 0; i < mSpellInfo.KeyFrames.Count; i++)
  106. {
  107. mCacheSpell.Put(mSpellInfo.KeyFrames[i].Spell.SpellID, mSpellInfo.KeyFrames[i].Spell);
  108. }
  109. mSpellInfo = XmdsBattleSkill.GetSpellTemplate(BuffTemplateId_PET);
  110. for (int i = 0; i < mSpellInfo.KeyFrames.Count; i++)
  111. {
  112. mCacheSpell.Put(mSpellInfo.KeyFrames[i].Spell.SpellID, mSpellInfo.KeyFrames[i].Spell);
  113. }
  114. //卡牌法术
  115. mSpellInfo = XmdsBattleSkill.GetSpellTemplate(BuffTemplateId_CARDSKILL);
  116. if(mSpellInfo != null)
  117. {
  118. for (int i = 0; i < mSpellInfo.KeyFrames.Count; i++)
  119. {
  120. mCardSpell.Put(mSpellInfo.KeyFrames[i].Spell.SpellID, mSpellInfo.KeyFrames[i].Spell);
  121. }
  122. }
  123. }
  124. public LaunchSpell GetSpellByID(XmdsSpellID spellID)
  125. {
  126. return mCacheSpell.Get((int)spellID);
  127. }
  128. public LaunchSpell GetSpellBySpellID(int spellID)
  129. {
  130. return mCacheSpell.Get(spellID);
  131. }
  132. public LaunchSpell GetCardSpell(int spellID)
  133. {
  134. LaunchSpell launchSpll = mCardSpell.Get(spellID);
  135. if(launchSpll == null)
  136. {
  137. launchSpll = CommonAI.ZoneServer.JSGModule.JSGGlobalData.GetUnConfigSpellByID(spellID);
  138. }
  139. return launchSpll;
  140. }
  141. }
  142. }