Advertisement
mephis

KrEX - Skill Fusion

Jan 20th, 2012
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 7.50 KB | None | 0 0
  1. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  2. #  ▼ Skill Fusion (Смешивание навыков)
  3. #  Автор: Kread-EX
  4. #  Версия: 1.03
  5. #  Дата выхода: 10/12/2011
  6. #
  7. #  Перевод: mephis
  8. #:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
  9.  
  10. #-------------------------------------------------------------------------------------------------
  11. #  ▼ ОБНОВЛЕНИЯ
  12. #-------------------------------------------------------------------------------------------------
  13. # # 02/01/2012. Fixed compatibility with Lunatic Objects and Cast Animations.
  14. # # 13/12/2011. Added permanent detection to ensure compat. with Glimmer.
  15. # # 12/12/2011. Fixed a bug preventing to use a skill for multiple fusions
  16. # # (thanks to infamous bon bon)
  17. #-------------------------------------------------------------------------------------------------
  18. #  ▼ УСЛОВИЯ ИСПОЛЬЗОВАНИЯ
  19. #-------------------------------------------------------------------------------------------------
  20. # Вы можете изменять код этого скрипта под ваши нужды.
  21. # Вы можете использовать этот скрипт в коммерческих целях.
  22. # Обязательно указывайте автора.
  23. #
  24. # # По поддержке можно со мной связаться здесь:
  25. # # grimoirecastle.wordpress.com
  26. # # или здесь
  27. # # rpgmakervxace.net
  28. # # или здесь
  29. # # rpgrevolution.com
  30. #-------------------------------------------------------------------------------------------------
  31. #  ▼ ВВЕДЕНИЕ
  32. #-------------------------------------------------------------------------------------------------
  33. # Этот скрипт позволяет персонажам объединять их навыки в другой навык.
  34. #-------------------------------------------------------------------------------------------------
  35. #  ▼ ИНСТРУКЦИЯ
  36. #-------------------------------------------------------------------------------------------------
  37. # Добавьте в окошко Заметки нужного вам навыка этот тег:
  38. # <skill_fusion: x, y>
  39. # x = ID навыка, который будет участвовать в смешивании
  40. # y = ID объединённого навыка
  41. #-------------------------------------------------------------------------------------------------
  42. #  ▼ СОВМЕСТИМОСТЬ
  43. #-------------------------------------------------------------------------------------------------
  44. # Совместим с DBS и Ace Battle Engine. Обязательно размещайте этот скрипт ниже ABE!
  45. #
  46. # Список псевдонимов и перекрытий:
  47. #
  48. #  DataManager
  49. #   load_database (alias)
  50. #   load_skillfusion_notetags (new method)
  51. #
  52. #  RPG::Skill
  53. #   loadskillfusion_notetags (new method)
  54. #
  55. #  Scene_Battle
  56. #   use_item (overwrite)
  57. #   fusion_check (new method)
  58. #-------------------------------------------------------------------------------------------------
  59.  
  60. $imported = {} if $imported.nil?
  61. $imported['KRX-SkillFusion'] = true
  62.  
  63. puts 'Load: Skill Fusion v1.03 by Kread-EX'
  64.  
  65. module KRX
  66.  
  67.   FUSION_PARTY_CHECK = true
  68.  
  69.   module REGEXP
  70.     SKILL_FUSION =  /<skill_fusion:[ ]*(\d+(?:\s*,\s*\d+)*)>/i
  71.   end
  72.  
  73.   module VOCAB
  74.     FUSION_TEXT = "Совместный навык!"
  75.   end
  76.  
  77. end
  78.  
  79. #===========================================================================
  80. # ■ DataManager
  81. #===========================================================================
  82.  
  83. module DataManager  
  84.   #--------------------------------------------------------------------------
  85.   # ● Loads the database
  86.   #--------------------------------------------------------------------------
  87.   class << self
  88.     alias_method(:krx_skillfusion_dm_load_database, :load_database) unless $@
  89.   end
  90.   def self.load_database
  91.     krx_skillfusion_dm_load_database
  92.     load_skillfusion_notetags
  93.   end  
  94.   #--------------------------------------------------------------------------
  95.   # ● Loads the note tags
  96.   #--------------------------------------------------------------------------
  97.   def self.load_skillfusion_notetags
  98.     groups = [$data_skills]
  99.     for group in groups
  100.       for obj in group
  101.         next if obj.nil?
  102.         obj.load_skillfusion_notetags
  103.       end
  104.     end
  105.     puts "Read: Skill Fusion Notetags"
  106.   end
  107. end
  108.  
  109. #===========================================================================
  110. # ■ RPG::Skill
  111. #===========================================================================
  112.  
  113. class RPG::Skill < RPG::UsableItem
  114.   #--------------------------------------------------------------------------
  115.   # ● Public instance variables
  116.   #--------------------------------------------------------------------------
  117.   attr_reader    :fusions
  118.   #--------------------------------------------------------------------------
  119.   # ● Loads the note tags
  120.   #--------------------------------------------------------------------------
  121.   def load_skillfusion_notetags
  122.     @fusions = []
  123.     @note.split(/[\r\n]+/).each do |line|
  124.       case line
  125.       when KRX::REGEXP::SKILL_FUSION
  126.         $1.scan(/\d+/).each {|i| @fusions.push(i.to_i)}
  127.       end
  128.     end
  129.   end
  130. end
  131.  
  132. #===========================================================================
  133. # ■ Scene_Battle
  134. #===========================================================================
  135.  
  136. class Scene_Battle < Scene_Base
  137.   #--------------------------------------------------------------------------
  138.   # ● Uses a skill or item
  139.   #--------------------------------------------------------------------------
  140.   def use_item
  141.     item = fusion_check(@subject.current_action.item)
  142.     @log_window.display_use_item(@subject, item)
  143.     @subject.use_item(item)
  144.    
  145.     # YEA compatibility
  146.     if $imported["YEA-BattleEngine"]
  147.       status_redraw_target(@subject)
  148.       if $imported["YEA-LunaticObjects"]
  149.         lunatic_object_effect(:before, item, @subject, @subject)
  150.       end
  151.       process_casting_animation if $imported["YEA-CastAnimations"]
  152.     else
  153.       refresh_status
  154.     end
  155.     # End of YEA compatibility
  156.    
  157.     targets = @subject.current_action.make_targets.compact
  158.     show_animation(targets, item.animation_id)
  159.     targets.each {|target| item.repeats.times { invoke_item(target, item) } }
  160.     if $imported["YEA-LunaticObjects"]
  161.       lunatic_object_effect(:after, item, @subject, @subject)
  162.     end
  163.   end
  164.   #--------------------------------------------------------------------------
  165.   # ● Determine if the fusion prerequisites are met
  166.   #--------------------------------------------------------------------------
  167.   def fusion_check(item)
  168.     @fs_class = NilClass if @fs_class.nil?
  169.     if (item.is_a?(RPG::Skill) && !item.fusions.empty?) &&
  170.     ((KRX::FUSION_PARTY_CHECK && @subject.is_a?(@fs_class)) ||
  171.     !KRX::FUSION_PARTY_CHECK)
  172.       item.fusions.each_index do |i|
  173.         next if i % 2 !=0
  174.         if @fs_last != nil && @fs_last.id == item.fusions[i]
  175.           if @subject.usable?($data_skills[item.fusions[i+1]])
  176.             comb = " (#{@fs_last.name} + #{item.name})"
  177.             item = $data_skills[item.fusions[i+1]]
  178.             @subject.current_action.set_skill(item.id)
  179.             @log_window.add_text(KRX::VOCAB::FUSION_TEXT + comb)
  180.           end
  181.         end
  182.       end
  183.     end
  184.     @fs_last = item
  185.     @fs_class = @subject.is_a?(Game_Actor) ? Game_Actor : Game_Enemy
  186.     return item
  187.   end
  188. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement