Advertisement
dsiver144

Card Battle Systen Add-on: DSI Dark Card

Aug 10th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.82 KB | None | 0 0
  1. #==============================================================================
  2. # Card Battle Systen Add-on: DSI Dark Card
  3. # -- Last Updated: 2017.08.10
  4. # -- Author: dsiver144
  5. # -- Level: Easy
  6. # -- Requires: n/a
  7. #==============================================================================
  8. $imported = {} if $imported.nil?
  9. $imported["DSI-DarkCard"] = true
  10. #==============================================================================
  11. # + Updates
  12. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  13. # 2017.08.10 - Finish first version.
  14. #==============================================================================
  15. # + Instructions
  16. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  17. # To install this script, open up your script editor and copy/paste this script
  18. # to an open slot below ▼Materials but above ▼Main. Remember to save.
  19. # * You should put this script below all of battle related script.
  20. # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
  21. # Skill Notetag Guide:
  22. # ----------------------------------------------------------------------------
  23. # <Dark Card>
  24. # se: name, volume, pitch, loop_time
  25. # tint: red, green, blue, gray
  26. # </Dark Card>
  27. # ----------------------------------------------------------------------------
  28. # Example:
  29. # ----------------------------------------------------------------------------
  30. # <Dark Card>
  31. # se: Heal3, 70, 100, 30
  32. # tint: -40, -40, -40, 0
  33. # </Dark Card>
  34. # ----------------------------------------------------------------------------
  35. # NOTE!
  36. # If you just put <Dark Card> in notebox then the skill will use default setting
  37. # of SE and Tint that configured below.
  38. #==============================================================================
  39. module DSIVER144
  40. module DARK_CARD
  41. #-------------------------------------------------------------------------
  42. DEFAULT_SE = ["Heal3", 100, 100, 60] #[file_name, volume, pitch, loop_time]
  43. DEFAULT_TINT = [-40,-40,-40, 0] # [Red, Green, Blue, Gray]
  44. BGM_VOLUME_WHEN_HOVER = 50
  45. TONE_CHANGE_TIME = 30 # In Frames
  46. #-------------------------------------------------------------------------
  47. DARK_CARD_ON = /<dark card>/i
  48. DARK_CARD_OFF = /<\/dark card>/i
  49. DARK_CARD_SE = /se:\s*(.+)/i
  50. DARK_CARD_TINT = /tint:\s*(.+)/i
  51. end # DARK_CARD
  52. end # DSIVER144
  53.  
  54. #===============================================================================
  55. # Window_BattleSkill
  56. #===============================================================================
  57.  
  58. class Window_BattleSkill < Window_SkillList
  59. include DSIVER144::DARK_CARD
  60. #--------------------------------------------------------------------------
  61. # * Frame Update
  62. #--------------------------------------------------------------------------
  63. alias_method(:dsi_dark_card_update_wndBtleSkill, :update)
  64. alias_method(:dsi_dark_card_update_help_wndBtleSkill, :update_help)
  65. def update
  66. dsi_dark_card_update_wndBtleSkill
  67. if @hover_darkCard && !@hover_darkCard_stage2
  68. lower_bgm_volume
  69. @hover_se_delay = 0
  70. @hover_se = @darkCard_settings[:se][0..2]
  71. @hover_tone = [Tone.new(*@darkCard_settings[:tint]), TONE_CHANGE_TIME]
  72. @hover_darkCard_stage2 = true
  73. $game_troop.screen.start_tone_change(*@hover_tone)
  74. end
  75. if @hover_darkCard_stage2
  76. if @hover_se_delay > 0
  77. @hover_se_delay -= 1
  78. else
  79. RPG::SE.new(*@hover_se).play
  80. @hover_se_delay = @darkCard_settings[:se][3]
  81. end
  82. end
  83. if @hover_darkCard_stage2 && (!@hover_darkCard || !self.active)
  84. reset_bgm_volume
  85. default_tone = Tone.new(0,0,0,0)
  86. $game_troop.screen.start_tone_change(default_tone, TONE_CHANGE_TIME)
  87. @hover_darkCard_stage2 = false
  88. @hover_darkCard = false # Delete this will lead to BGM issue.
  89. end
  90. end
  91. #--------------------------------------------------------------------------
  92. # * new method: lower_bgm_volume
  93. #--------------------------------------------------------------------------
  94. def lower_bgm_volume
  95. @darkCard_last_volume = RPG::BGM.last.volume
  96. RPG::BGM.last.volume = BGM_VOLUME_WHEN_HOVER
  97. Audio.bgm_play("Audio/BGM/#{RPG::BGM.last.name}", RPG::BGM.last.volume, RPG::BGM.last.pitch, RPG::BGM.last.pos)
  98. end
  99. #--------------------------------------------------------------------------
  100. # * new method: reset_bgm_volume
  101. #--------------------------------------------------------------------------
  102. def reset_bgm_volume
  103. RPG::SE.stop
  104. RPG::BGM.last.volume = @darkCard_last_volume
  105. Audio.bgm_play("Audio/BGM/#{RPG::BGM.last.name}", RPG::BGM.last.volume, RPG::BGM.last.pitch, RPG::BGM.last.pos)
  106. end
  107. #--------------------------------------------------------------------------
  108. # * Update Help Text
  109. #--------------------------------------------------------------------------
  110. def update_help
  111. dsi_dark_card_update_help_wndBtleSkill
  112. if item && item.is_darkCard?
  113. if @hover_darkCard
  114. @hover_darkCard_stage2 = false
  115. reset_bgm_volume
  116. end
  117. @hover_darkCard = true
  118. @darkCard_settings = item.dark_card_settings
  119. else
  120. @hover_darkCard = false
  121. end
  122. end
  123. end # Window_BattleSkill
  124.  
  125. #==============================================================================
  126. # DataManager
  127. #==============================================================================
  128. module DataManager
  129. include DSIVER144::DARK_CARD
  130. #--------------------------------------------------------------------------
  131. # alias method: load_database
  132. #--------------------------------------------------------------------------
  133. class <<self; alias load_database_dark_card load_database; end
  134. def self.load_database
  135. load_database_dark_card
  136. load_dark_card_notetags
  137. end
  138. #--------------------------------------------------------------------------
  139. # new method: load_database_dark_card
  140. #--------------------------------------------------------------------------
  141. def self.load_dark_card_notetags
  142. $data_skills.each do |skill|
  143. next if skill.nil?
  144. skill.load_dark_card_notetags
  145. end
  146. end
  147. end # DataManager
  148.  
  149. class RPG::Skill
  150. include DSIVER144::DARK_CARD
  151. attr_accessor :dark_card_settings
  152. #--------------------------------------------------------------------------
  153. # new method: load_dark_card_notetags
  154. #--------------------------------------------------------------------------
  155. def load_dark_card_notetags
  156. @dark_card_on = false
  157. @dark_card_settings = nil
  158. self.note.split(/[\r\n]+/).each do |line|
  159. if line =~ DARK_CARD_ON
  160. @dark_card_on = true
  161. end
  162. if line =~ DARK_CARD_OFF
  163. @dark_card_on = false
  164. end
  165. if @dark_card_on
  166. @dark_card_settings ||= {}
  167. case line
  168. when DARK_CARD_SE
  169. setting_array = $1.split(",")
  170. se_name = setting_array[0]
  171. se_volume = setting_array[1].to_i
  172. se_pitch = setting_array[2].to_i
  173. se_delay = setting_array[3].to_i
  174. @dark_card_settings[:se] = [se_name,se_volume,se_pitch,se_delay]
  175. when DARK_CARD_TINT
  176. $1.split(",").each do |arg|
  177. setting_array ||= []
  178. setting_array << arg.to_i
  179. end
  180. @dark_card_settings[:tint] = setting_array
  181. end
  182. end
  183. end
  184. if @dark_card_settings
  185. @dark_card_settings[:se] = DEFAULT_SE if !@dark_card_settings.has_key?(:se)
  186. @dark_card_settings[:tint] = DEFAULT_TINT if !@dark_card_settings.has_key?(:tint)
  187. end
  188. end
  189. #--------------------------------------------------------------------------
  190. # new method: is_darkCard?
  191. #--------------------------------------------------------------------------
  192. def is_darkCard?
  193. return !@dark_card_settings.nil?
  194. end
  195. end # RPG::Skill
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement