SHARE
TWEET

RGSS3: Final Fantasy Style Battle Log v3.06 [RMVXA]

WCouillard Dec 5th, 2012 (edited) 7,209 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # ╔══════════════════════════════════════════════════════╤═══════╤════════════╗
  2. # ║ Final Fantasy Style Battle Log                       │ v3.06 │ (09/04/15) ║
  3. # ╠══════════════════════════════════════════════════════╧═══════╧════════════╣
  4. # ║ Author  : William Couillard                                               ║
  5. # ║ Thanks  : KilloZapIt, Swish, Daniel Babineau, AlliedG, Punisher667,       ║
  6. # ║           GreeNRM & Keith Brewer                                          ║
  7. # ║ E-Mail  : cooliebk18@yahoo.com                                            ║
  8. # ╠═══════════════════════════════════════════════════════════════════════════╣
  9. # ║ ABOUT                                                                     ║
  10. # ╠═══════════════════════════════════════════════════════════════════════════╣
  11. # ║ This script changes the behavior of the battle log window to act as the   ║
  12. # ║ Battle Log window in a Final Fantasy game would.                          ║
  13. # ╠═══════════════════════════════════════════════════════════════════════════╣
  14. # ║ TERMS OF USE (Applies retroactively to previous versions of this script)  ║
  15. # ╠═══════════════════════════════════════════════════════════════════════════╣
  16. # ║ ► Do not edit the script's header or comments.                            ║
  17. # ║ ► If the script code is modified for your own purposes, then it must      ║
  18. # ║   remain encrypted in your project upon release.                          ║
  19. # ║ ► NOT free to use in commercial projects.                                 ║
  20. # ║ ► Proper credit is to be given to the script author, in-game and in any   ║
  21. # ║   applicable documentation included with the game.                        ║
  22. # ╠═══════════════════════════════════════════════════════════════════════════╣
  23. # ║ FEATURES                                                                  ║
  24. # ╠═══════════════════════════════════════════════════════════════════════════╣
  25. # ║ ► Removes the black background behind the default Battle Log window.      ║
  26. # ║ ► Custom opacity for the Battle Log window.                               ║
  27. # ║ ► Text alignment settings for Battle Log custom messages.                 ║
  28. # ║ ► Text alignment settings for Battle Log default messages.                ║
  29. # ║ ► Restrict skills without any "use" message from showing up in the Battle ║
  30. # ║   Log window, such as normal attacks, defending, or hidden skills.        ║
  31. # ║ ► Width, offset and alignment settings for the Battle Log window.         ║
  32. # ║ ► Option to use different windowskins for skills/items used by actors or  ║
  33. # ║   enemies.                                                                ║
  34. # ║ ► Option to use a different font for skills/items used by actors or       ║
  35. # ║   enemies.                                                                ║
  36. # ║ ► Customize the message speed of the Battle Log window.                   ║
  37. # ║ ► Option to omit any default messages shown in the Battle Log window.     ║
  38. # ╠═══════════════════════════════════════════════════════════════════════════╣
  39. # ║ KNOWN ISSUES                                                              ║
  40. # ╠═══════════════════════════════════════════════════════════════════════════╣
  41. # ║ ► Possibility of unreported compatibility issues. Please report any bugs  ║
  42. # ║   you experience as soon as possible!                                     ║
  43. # ╠═══════════════════════════════════════════════════════════════════════════╣
  44. # ║ CHANGE LOG                                                                ║
  45. # ╠═════════════════════════════════════════════════════════════════╤═════════╣
  46. # ║ ■ September 04, 2015 : Streamlined ignored skills; any skill    │ (v3.06) ║
  47. # ║                        without a "use" message is now ignored   │         ║
  48. # ║                        by default and will not bring up the     │         ║
  49. # ║                        Battle Log to show the icon/name         │         ║
  50. # ║                                                                 │         ║
  51. # ║                        Font option for Actor/Enemy skills/items │         ║
  52. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  53. # ║ ■ September 02, 2015 : Aliased def use_item in order to improve │ (v3.05) ║
  54. # ║                        compatibility with other scripts         │         ║
  55. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  56. # ║ ■ September 01, 2015 : Streamlined compatibilities for scripts  │ (v3.04) ║
  57. # ║                        with import settings to make them plug   │         ║
  58. # ║                        and play / Bugfixes                      │         ║
  59. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  60. # ║ ■ September 01, 2015 : Just a bit of code cleanup to remove     │ (v3.03) ║
  61. # ║                        redundant lines                          │         ║
  62. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  63. # ║ ■ August 31, 2015    : Compatibility for CP Damage Popup 1.2a   │ (v3.02) ║
  64. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  65. # ║ ■ August 30, 2015    : Bugfixes (text width)                    │ (v3.01) ║
  66. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  67. # ║ ■ August 30, 2015    : Complete overhaul to provide more        │ (v3.00) ║
  68. # ║                        options and maximum compatibility with a │         ║
  69. # ║                        wide variety of popular battle scripts.  │         ║
  70. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  71. # ║ ■ August 28, 2015    : Bugfixes (enemy death animation)         │ (v2.04) ║
  72. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  73. # ║ ■ December 12, 2014  : Bugfixes (battle sounds playing again)   │ (v2.03) ║
  74. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  75. # ║ ■ December 11, 2014  : Bugfixes (y offset text positioning)     │ (v2.02) ║
  76. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  77. # ║ ■ December 11, 2014  : Bugfixes (blank window fix)              │ (v2.01) ║
  78. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  79. # ║ ■ December 10, 2014  : Almost a full rewrite. Needless features │ (v2.00) ║
  80. # ║                        removed. Some new ones added. Skill and  │         ║
  81. # ║                        Item icons displaying now. Option for    │         ║
  82. # ║                        different font for ally and enemy skills │         ║
  83. # ║                        added.                                   │         ║
  84. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  85. # ║ ■ October 31, 2014   : New option to use different windowskins  │ (v1.04) ║
  86. # ║                        for actor and enemy attacks              │         ║
  87. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  88. # ║ ■ August 15, 2013    : Bugfixes                                 │ (v1.03) ║
  89. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  90. # ║ ■ December 12, 2012  : Font options added                       │ (v1.02) ║
  91. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  92. # ║ ■ December 06, 2012  : Width and Window alignment options added │ (v1.01) ║
  93. # ║                        Show Name option added                   │         ║
  94. # ╟─────────────────────────────────────────────────────────────────┼─────────╢
  95. # ║ ■ December 05, 2012  : Initial release.                         │ (v1.00) ║
  96. # ╠═════════════════════════════════════════════════════════════════╧═════════╣
  97. # ║ NEXT VERSION                                                              ║
  98. # ╠═══════════════════════════════════════════════════════════════════════════╣
  99. # ║ ■ Compatibility Patches                                                   ║
  100. # ╠═══════════════════════════════════════════════════════════════════════════╣
  101. # ║ OVERWRITTEN METHODS                                                       ║
  102. # ╠═══════════════════════════════════════════════════════════════════════════╣
  103. # ║   This script overwrites almost every method in Window_BattleLog and also ║
  104. # ║   overwrites one method in Scene_Battle, for compatibility.               ║
  105. # ╟───────────────────────────────────────────────────────────────────────────╢
  106. # ║ ■ class Scene_Battle < Scene_Base                                         ║
  107. # ║    ► def use_item                                                         ║
  108. # ╠═══════════════════════════════════════════════════════════════════════════╣
  109. # ║ NEW METHODS                                                               ║
  110. # ╠═══════════════════════════════════════════════════════════════════════════╣
  111. # ║   There are several new methods added to Window_BattleLog.                ║
  112. # ╟───────────────────────────────────────────────────────────────────────────╢
  113. # ║ ■ class Window_BattleLog < Window_Selectable                              ║
  114. # ║    ► def show_log                                                         ║
  115. # ║    ► def window_left_position                                             ║
  116. # ║    ► def window_center_position                                           ║
  117. # ║    ► def window_right_position                                            ║
  118. # ║    ► def y_offset                                                         ║
  119. # ║    ► def item_name_width                                                  ║
  120. # ║    ► def skill_name_width                                                 ║
  121. # ║    ► def draw_skill_name                                                  ║
  122. # ║    ► def draw_items_name                                                  ║
  123. # ║    ► def v_align                                                          ║
  124. # ║    ► def c_align                                                          ║
  125. # ╠═══════════════════════════════════════════════════════════════════════════╣
  126. # ║ INSTRUCTIONS                                                              ║
  127. # ╠═══════════════════════════════════════════════════════════════════════════╣
  128. # ║ Simply paste this script anywhere above the Main Process script and below ║
  129. # ║ the "Materials" section. It's a good idea to place this script BELOW any  ║
  130. # ║ battle system scripts you are using, to ensure compatibility.             ║
  131. # ║                                                                           ║
  132. # ║ NOTE: When setting the "use" message in the database for a skill, it is   ║
  133. # ║       important to remember that the Actor name or Enemy name is OMITTED. ║
  134. # ║       It's usually a good idea to just input the skill's name in the      ║
  135. # ║       "use" message dialogue box. The skill/item icon is shown with the   ║
  136. # ║       skill/item name. This is what will determine the text displayed.    ║
  137. # ║       You can name the skill in the database whatever you want, and the   ║
  138. # ║       script will display the icon and whatever is in the message box.    ║
  139. # ║                                                                           ║
  140. # ║ i.e.: Just input "Fire" instead of "casts Fire!"                          ║
  141. # ║                                                                           ║
  142. # ║ NOTE: You can also show a CUSTOM message, by using the second message box ║
  143. # ║       in the database for skills. Simply write whatever you want in that  ║
  144. # ║       box, and the skill/item icon will not be shown. Your new custom     ║
  145. # ║       message will display instead.                                       ║
  146. # ║                                                                           ║
  147. # ║ i.e.: "Precious light, be our armor to protect us! Protect!"              ║
  148. # ╠═══════════════════════════════════════════════════════════════════════════╣
  149. # ║ IMPORT SETTING                                                            ║
  150. # ╚═══════════════════════════════════════════════════════════════════════════╝
  151. $imported = {} if $imported.nil?           # Do not edit!
  152. $imported[:wc_ff_style_battle_log] = true  # Do not edit!
  153. # ╔═══════════════════════════════════════════════════════════════════════════╗
  154. # ║ CUSTOMIZATION MODULE                                                      ║
  155. # ╚═══════════════════════════════════════════════════════════════════════════╝
  156. module COOLIE
  157.   module LOG
  158. # ╔═══════════════════════════════════════════════════════════════════════════╗
  159. # ║ Set window width (in pixels; 544 by default)                              ║
  160. # ╚═══════════════════════════════════════════════════════════════════════════╝
  161.     WINDOW_WIDTH            = 544
  162. # ╔═══════════════════════════════════════════════════════════════════════════╗
  163. # ║ Set window X offset (in pixels; can be negative)                          ║
  164. # ╚═══════════════════════════════════════════════════════════════════════════╝
  165.     WINDOW_X_OFFSET         = 0
  166. # ╔═══════════════════════════════════════════════════════════════════════════╗
  167. # ║ Set window Y offset (in pixels; can be negative)                          ║
  168. # ╚═══════════════════════════════════════════════════════════════════════════╝
  169.     WINDOW_Y_OFFSET         = 0
  170. # ╔═══════════════════════════════════════════════════════════════════════════╗
  171. # ║ Set window alignment (0 = Left, 1 = Center, 2 = Right)                    ║
  172. # ╚═══════════════════════════════════════════════════════════════════════════╝
  173.     WINDOW_ALIGN            = 1
  174. # ╔═══════════════════════════════════════════════════════════════════════════╗
  175. # ║ Window opacity (0-255; high numbers make the window more visible)         ║
  176. # ╚═══════════════════════════════════════════════════════════════════════════╝
  177.     WINDOWSKIN_OPACITY      = 255
  178. # ╔═══════════════════════════════════════════════════════════════════════════╗
  179. # ║ Window back opacity (0-255; high numbers make the window more visible)    ║
  180. # ╚═══════════════════════════════════════════════════════════════════════════╝
  181.     WINDOWSKIN_BACK_OPACITY = 255
  182. # ╔═══════════════════════════════════════════════════════════════════════════╗
  183. # ║ Windowskin used for actor skills/items (Graphics/System folder)           ║
  184. # ╚═══════════════════════════════════════════════════════════════════════════╝
  185.     WINDOWSKIN_ACTOR        = "Window"
  186. # ╔═══════════════════════════════════════════════════════════════════════════╗
  187. # ║ Windowskin used for enemy skills/items (Graphics/System folder)           ║
  188. # ╚═══════════════════════════════════════════════════════════════════════════╝
  189.     WINDOWSKIN_ENEMY        = "Window"
  190. # ╔═══════════════════════════════════════════════════════════════════════════╗
  191. # ║ Message speed of the Battle Log window (in frames)                        ║
  192. # ╚═══════════════════════════════════════════════════════════════════════════╝
  193.     MESSAGE_SPEED           = 20
  194. # ╔═══════════════════════════════════════════════════════════════════════════╗
  195. # ║ Set custom message alignment (0 = Left, 1 = Center, 2 = Right)            ║
  196. # ║ NOTE: Only applies to custom messages on skills!                          ║
  197. # ╚═══════════════════════════════════════════════════════════════════════════╝
  198.     CUSTOM_MESSAGE_ALIGN    = 1
  199. # ╔═══════════════════════════════════════════════════════════════════════════╗
  200. # ║ Set log message alignment (0 = Left, 1 = Center, 2 = Right)               ║
  201. # ║ NOTE: Only applies to default Battle Log messages (miss, etc.)            ║
  202. # ╚═══════════════════════════════════════════════════════════════════════════╝
  203.     LOG_MESSAGE_ALIGN       = 1
  204. # ╔═══════════════════════════════════════════════════════════════════════════╗
  205. # ║ Font setting for skills/items used by actors                              ║
  206. # ║ i.e. Font.default_name, "Arial", ["Arial", "Verdana"]                     ║
  207. # ╚═══════════════════════════════════════════════════════════════════════════╝
  208.     FONT_ACTOR              = Font.default_name
  209. # ╔═══════════════════════════════════════════════════════════════════════════╗
  210. # ║ Font settings for skills/items used by enemies                            ║
  211. # ║ i.e. Font.default_name, "Arial", ["Arial", "Verdana"]                     ║
  212. # ╚═══════════════════════════════════════════════════════════════════════════╝
  213.     FONT_ENEMY              = Font.default_name
  214. # ╔═══════════════════════════════════════════════════════════════════════════╗
  215. # ║ Set which Battle Log messages to omit (true shows as normal, false omits) ║
  216. # ╚═══════════════════════════════════════════════════════════════════════════╝
  217.     SHOW_MISS               = true
  218.     SHOW_CRIT               = true
  219.     SHOW_EVADE              = true
  220.     SHOW_DAMAGE             = true
  221.     SHOW_COUNTER            = true
  222.     SHOW_REFLECT            = true
  223.     SHOW_SUB                = true
  224.     SHOW_FAILURE            = true
  225.     SHOW_ADDED_STATE        = true
  226.     SHOW_CURRENT_STATE      = true
  227.     SHOW_REMOVED_STATE      = true
  228.     SHOW_AFFECTED_STATE     = true
  229.     SHOW_BUFFS              = true
  230. # ╔═══════════════════════════════════════════════════════════════════════════╗
  231. # ║ MODULE END                                                                ║
  232. # ╚═══════════════════════════════════════════════════════════════════════════╝
  233.   end # module LOG
  234. end # module COOLIE
  235.  
  236. #   [Do not edit anything below this line unless you know what you're doing!]
  237. #       [If you are having trouble with compatibility, please report it!]
  238.  
  239. # ╔═══════════════════════════════════════════════════════════════════════════╗
  240. # ║ WINDOW_BATTLELOG                                                          ║
  241. # ╚═══════════════════════════════════════════════════════════════════════════╝
  242. class Window_BattleLog < Window_Selectable
  243. # ╔═══════════════════════════════════════════════════════════════════════════╗
  244. # ║ Object Initialization                                                     ║
  245. # ╚═══════════════════════════════════════════════════════════════════════════╝
  246.   def initialize
  247.     case COOLIE::LOG::WINDOW_ALIGN
  248.       when 0 # Left Aligned
  249.         super(window_left_position, y_offset, window_width, window_height)
  250.       when 1 # Center Aligned
  251.         super(window_center_position, y_offset, window_width, window_height)
  252.       when 2 # Right Aligned
  253.         super(window_right_position, y_offset, window_width, window_height)
  254.       end
  255.     self.z -= 10
  256.     self.opacity = 0
  257.     @lines = []
  258.     @num_wait = 0
  259.     create_back_bitmap
  260.     create_back_sprite
  261.     refresh
  262.   end
  263. # ╔═══════════════════════════════════════════════════════════════════════════╗
  264. # ║ Get Window Width                                                          ║
  265. # ╚═══════════════════════════════════════════════════════════════════════════╝
  266.   def window_width
  267.     COOLIE::LOG::WINDOW_WIDTH
  268.   end
  269. # ╔═══════════════════════════════════════════════════════════════════════════╗
  270. # ║ Get Window Y Offset                                                       ║
  271. # ╚═══════════════════════════════════════════════════════════════════════════╝
  272.   def y_offset
  273.     return COOLIE::LOG::WINDOW_Y_OFFSET
  274.   end
  275. # ╔═══════════════════════════════════════════════════════════════════════════╗
  276. # ║ Get Maximum Number of Lines                                               ║
  277. # ╚═══════════════════════════════════════════════════════════════════════════╝
  278.   def max_line_number
  279.     return 1
  280.   end
  281. # ╔═══════════════════════════════════════════════════════════════════════════╗
  282. # ║ Get Background Color                                                      ║
  283. # ╚═══════════════════════════════════════════════════════════════════════════╝
  284.   def back_color
  285.     Color.new(0, 0, 0, 0)
  286.   end
  287. # ╔═══════════════════════════════════════════════════════════════════════════╗
  288. # ║ Show Log                                                     [NEW METHOD] ║
  289. # ╚═══════════════════════════════════════════════════════════════════════════╝
  290.   def show_log
  291.     self.opacity = COOLIE::LOG::WINDOWSKIN_OPACITY
  292.     self.back_opacity = COOLIE::LOG::WINDOWSKIN_BACK_OPACITY
  293.     refresh
  294.   end
  295. # ╔═══════════════════════════════════════════════════════════════════════════╗
  296. # ║ Clear                                                                     ║
  297. # ╚═══════════════════════════════════════════════════════════════════════════╝
  298.   def clear
  299.     @num_wait = 0
  300.     @lines.clear
  301.     self.opacity = 0
  302.     self.back_opacity = 0
  303.     refresh
  304.   end
  305. # ╔═══════════════════════════════════════════════════════════════════════════╗
  306. # ║ Get Message Speed                                                         ║
  307. # ╚═══════════════════════════════════════════════════════════════════════════╝
  308.   def message_speed
  309.     return COOLIE::LOG::MESSAGE_SPEED
  310.   end
  311. # ╔═══════════════════════════════════════════════════════════════════════════╗
  312. # ║ Display Counterattack                                                     ║
  313. # ╚═══════════════════════════════════════════════════════════════════════════╝
  314.   def display_counter(target, item)
  315.     target.do_pop(:counter) if $imported["CP_BATTLEVIEW"]
  316.     Sound.play_evasion
  317.     ww = window_width
  318.     if COOLIE::LOG::SHOW_COUNTER
  319.       show_log
  320.       back_to(1)
  321.       draw_text(0, 0, ww - 24, line_height, sprintf(Vocab::CounterAttack, target.name), v_align)
  322.       wait
  323.       clear
  324.     end
  325.   end
  326. # ╔═══════════════════════════════════════════════════════════════════════════╗
  327. # ║ Display Reflection                                                        ║
  328. # ╚═══════════════════════════════════════════════════════════════════════════╝
  329.   def display_reflection(target, item)
  330.     target.do_pop(:reflect) if $imported["CP_BATTLEVIEW"]
  331.     Sound.play_reflection
  332.     ww = window_width
  333.     if COOLIE::LOG::SHOW_REFLECT
  334.       show_log
  335.       back_to(1)
  336.       draw_text(0, 0, ww - 24, line_height, sprintf(Vocab::MagicReflection, target.name), v_align)
  337.       wait
  338.       clear
  339.     end
  340.   end
  341. # ╔═══════════════════════════════════════════════════════════════════════════╗
  342. # ║ Display Substitute                                                        ║
  343. # ╚═══════════════════════════════════════════════════════════════════════════╝
  344.   def display_substitute(substitute, target)
  345.     target.do_pop(:sub) if $imported["CP_BATTLEVIEW"]
  346.     if COOLIE::LOG::SHOW_SUB
  347.       show_log
  348.       ww = window_width
  349.       back_to(1)
  350.       draw_text(0, 0, ww - 24, line_height, sprintf(Vocab::Substitute, substitute.name, target.name), v_align)
  351.       wait
  352.       clear
  353.     end
  354.   end
  355. # ╔═══════════════════════════════════════════════════════════════════════════╗
  356. # ║ Display Action Results                                                    ║
  357. # ╚═══════════════════════════════════════════════════════════════════════════╝
  358.   def display_action_results(target, item)
  359.     if target.result.used
  360.       target.pop_reset if $imported["CP_BATTLEVIEW"]
  361.       display_critical(target, item)
  362.       display_damage(target, item)
  363.       display_affected_status(target, item)
  364.       display_failure(target, item)
  365.     end
  366.   end
  367. # ╔═══════════════════════════════════════════════════════════════════════════╗
  368. # ║ Display Failure                                                           ║
  369. # ╚═══════════════════════════════════════════════════════════════════════════╝
  370.   def display_failure(target, item)
  371.     if target.result.hit? && !target.result.success
  372.       target.do_pop(:fail) if $imported["CP_BATTLEVIEW"]
  373.       ww = window_width
  374.       if COOLIE::LOG::SHOW_FAILURE
  375.         show_log
  376.         back_to(1)
  377.         draw_text(0, 0, ww - 24, line_height, sprintf(Vocab::ActionFailure, target.name), v_align)
  378.         wait
  379.         clear
  380.       end
  381.     end
  382.   end
  383. # ╔═══════════════════════════════════════════════════════════════════════════╗
  384. # ║ Display Critical Hit                                                      ║
  385. # ╚═══════════════════════════════════════════════════════════════════════════╝
  386.   def display_critical(target, item)
  387.     if target.result.critical
  388.       target.do_pop(:critical) if $imported["CP_BATTLEVIEW"]
  389.       if $imported[:ve_damage_pop]
  390.         color = [255, 255, 255, 192] if VE_CRT_FLASH
  391.         $game_troop.screen.start_flash(Color.new(*color), 10) if VE_CRT_FLASH
  392.       end
  393.       text = target.actor? ? Vocab::CriticalToActor : Vocab::CriticalToEnemy
  394.       ww = window_width
  395.       show_log if COOLIE::LOG::SHOW_CRIT
  396.       back_to(1) if COOLIE::LOG::SHOW_CRIT
  397.       draw_text(0, 0, ww - 24, line_height, sprintf(text), v_align) if COOLIE::LOG::SHOW_CRIT
  398.       wait if COOLIE::LOG::SHOW_CRIT
  399.       clear if COOLIE::LOG::SHOW_CRIT
  400.     end
  401.   end
  402. # ╔═══════════════════════════════════════════════════════════════════════════╗
  403. # ║ Display Miss                                                              ║
  404. # ╚═══════════════════════════════════════════════════════════════════════════╝
  405.   def display_miss(target, item)
  406.     if !item || item.physical?
  407.       fmt = target.actor? ? Vocab::ActorNoHit : Vocab::EnemyNoHit
  408.       Sound.play_miss
  409.     else
  410.       fmt = Vocab::ActionFailure
  411.     end
  412.     ww = window_width
  413.     target.do_pop(:miss) if $imported["CP_BATTLEVIEW"]
  414.     if COOLIE::LOG::SHOW_MISS
  415.       show_log
  416.       back_to(1)
  417.       draw_text(0, 0, ww - 24, line_height, sprintf(fmt, target.name), v_align)
  418.       wait
  419.       clear
  420.     end
  421.   end
  422. # ╔═══════════════════════════════════════════════════════════════════════════╗
  423. # ║ Display Evasion                                                           ║
  424. # ╚═══════════════════════════════════════════════════════════════════════════╝
  425.   def display_evasion(target, item)
  426.     if !item || item.physical?
  427.       fmt = Vocab::Evasion
  428.       Sound.play_evasion
  429.     else
  430.       fmt = Vocab::MagicEvasion
  431.       Sound.play_magic_evasion
  432.     end
  433.     ww = window_width
  434.     if COOLIE::LOG::SHOW_EVADE
  435.       show_log
  436.       back_to(1)
  437.       draw_text(0, 0, ww - 24, line_height, sprintf(fmt, target.name), v_align)
  438.       wait
  439.       clear
  440.     end
  441.     target.do_pop(:evade) if $imported["CP_BATTLEVIEW"]
  442.   end
  443. # ╔═══════════════════════════════════════════════════════════════════════════╗
  444. # ║ Display HP Damage                                                         ║
  445. # ╚═══════════════════════════════════════════════════════════════════════════╝
  446.   def display_hp_damage(target, item)
  447.     return if target.result.hp_damage == 0 && item && !item.damage.to_hp?
  448.     target.pop_hp(target.result.hp_damage) if $imported["CP_BATTLEVIEW"]
  449.     if target.result.hp_damage > 0 && target.result.hp_drain == 0
  450.       target.perform_damage_effect
  451.     end
  452.     Sound.play_recovery if target.result.hp_damage < 0
  453.     ww = window_width
  454.     if COOLIE::LOG::SHOW_DAMAGE
  455.       show_log
  456.       back_to(1)
  457.       draw_text(0, 0, ww - 24, line_height, target.result.hp_damage_text, v_align)
  458.       wait
  459.       clear
  460.     end
  461.   end
  462. # ╔═══════════════════════════════════════════════════════════════════════════╗
  463. # ║ Display MP Damage                                                         ║
  464. # ╚═══════════════════════════════════════════════════════════════════════════╝
  465.   def display_mp_damage(target, item)
  466.     return if target.dead? || target.result.mp_damage == 0
  467.     target.pop_mp(target.result.mp_damage) if $imported["CP_BATTLEVIEW"]
  468.     Sound.play_recovery if target.result.mp_damage < 0
  469.     ww = window_width
  470.     if COOLIE::LOG::SHOW_DAMAGE
  471.       show_log
  472.       back_to(1)
  473.       draw_text(0, 0, ww - 24, line_height, target.result.mp_damage_text, v_align)
  474.       wait
  475.       clear
  476.     end
  477.   end
  478. # ╔═══════════════════════════════════════════════════════════════════════════╗
  479. # ║ Display TP Damage                                                         ║
  480. # ╚═══════════════════════════════════════════════════════════════════════════╝
  481.   def display_tp_damage(target, item)
  482.     return if target.dead? || target.result.tp_damage == 0
  483.     target.pop_tp(target.result.tp_damage) if $imported["CP_BATTLEVIEW"]
  484.     Sound.play_recovery if target.result.tp_damage < 0
  485.     ww = window_width
  486.     if COOLIE::LOG::SHOW_DAMAGE
  487.       show_log
  488.       back_to(1)
  489.       draw_text(0, 0, ww - 24, line_height, target.result.tp_damage_text, v_align)
  490.       wait
  491.       clear
  492.     end
  493.   end
  494. # ╔═══════════════════════════════════════════════════════════════════════════╗
  495. # ║ Display Current State                                                     ║
  496. # ╚═══════════════════════════════════════════════════════════════════════════╝
  497.   def display_current_state(subject)
  498.     unless subject.most_important_state_text.empty?
  499.        if COOLIE::LOG::SHOW_CURRENT_STATE
  500.          ww = window_width
  501.          show_log
  502.          back_to(1)
  503.          draw_text(0, 0, ww - 24, line_height, sprintf(subject.name + subject.most_important_state_text), v_align)
  504.          wait
  505.          clear
  506.        end
  507.     end
  508.   end
  509. # ╔═══════════════════════════════════════════════════════════════════════════╗
  510. # ║ Display Affected Status                                                   ║
  511. # ╚═══════════════════════════════════════════════════════════════════════════╝
  512.   def display_affected_status(target, item)
  513.     if target.result.status_affected?
  514.       display_changed_states(target)
  515.       display_changed_buffs(target)
  516.     end
  517.   end
  518. # ╔═══════════════════════════════════════════════════════════════════════════╗
  519. # ║ Display Auto-Affected Status                                              ║
  520. # ╚═══════════════════════════════════════════════════════════════════════════╝
  521.   def display_auto_affected_status(target)
  522.     if target.result.status_affected?
  523.       display_affected_status(target, nil)
  524.       wait
  525.     end
  526.   end
  527. # ╔═══════════════════════════════════════════════════════════════════════════╗
  528. # ║ Display Added State                                                       ║
  529. # ╚═══════════════════════════════════════════════════════════════════════════╝
  530.   def display_added_states(target)
  531.     ww = window_width
  532.     target.result.added_state_objects.each do |state|
  533.       state_msg = target.actor? ? state.message1 : state.message2
  534.       if $imported[:ve_animated_battle]
  535.         # VE Animated Battle handles collapses a different way
  536.       else
  537.         target.perform_collapse_effect if state.id == target.death_state_id
  538.       end
  539.       next if state_msg.empty?
  540.       if $imported["CP_BATTLEVIEW"]
  541.         if state.pop_values[4]
  542.           create_state_pop(target, state, :addstate)
  543.         else
  544.           target.do_pop(:addstate, state.name) unless state.name.empty?
  545.         end
  546.       end
  547.       show_log if COOLIE::LOG::SHOW_ADDED_STATE
  548.       back_to(1) if COOLIE::LOG::SHOW_ADDED_STATE
  549.       draw_text(0, 0, ww - 24, line_height, sprintf(target.name + state_msg), v_align) if COOLIE::LOG::SHOW_ADDED_STATE
  550.       wait if COOLIE::LOG::SHOW_ADDED_STATE
  551.       clear if COOLIE::LOG::SHOW_ADDED_STATE
  552.     end
  553.     wait_for_effect
  554.   end
  555. # ╔═══════════════════════════════════════════════════════════════════════════╗
  556. # ║ Display Removed States                                                    ║
  557. # ╚═══════════════════════════════════════════════════════════════════════════╝
  558.   def display_removed_states(target)
  559.     ww = window_width
  560.     target.result.removed_state_objects.each do |state|
  561.       next if state.message4.empty?
  562.       if $imported["CP_BATTLEVIEW"]
  563.         if state.pop_values[4]
  564.           create_state_pop(target, state, :substate)
  565.         else
  566.           target.do_pop(:substate, state.name) unless state.name.empty?
  567.         end
  568.       end
  569.       if COOLIE::LOG::SHOW_REMOVED_STATE
  570.         show_log
  571.         back_to(1)
  572.         draw_text(0, 0, ww - 24, line_height, sprintf(target.name + state.message4), v_align)
  573.         wait
  574.         clear
  575.       end
  576.     end
  577.   end
  578. # ╔═══════════════════════════════════════════════════════════════════════════╗
  579. # ║ Display Changed States                                                    ║
  580. # ╚═══════════════════════════════════════════════════════════════════════════╝
  581.   def display_changed_states(target)
  582.     display_added_states(target)
  583.     display_removed_states(target)
  584.   end
  585. # ╔═══════════════════════════════════════════════════════════════════════════╗
  586. # ║ Display Buff/Debuff                                                       ║
  587. # ╚═══════════════════════════════════════════════════════════════════════════╝
  588.   def display_changed_buffs(target)
  589.     if $imported["CP_BATTLEVIEW"]
  590.       display_cp_buffs(target, target.result.added_buffs, Vocab::BuffAdd, :buff)
  591.       display_cp_buffs(target, target.result.added_debuffs, Vocab::DebuffAdd, :debuff)
  592.       display_cp_buffs(target, target.result.removed_buffs, Vocab::BuffRemove, :rebuff)
  593.     else
  594.       display_buffs(target, target.result.added_buffs, Vocab::BuffAdd)
  595.       display_buffs(target, target.result.added_debuffs, Vocab::DebuffAdd)
  596.       display_buffs(target, target.result.removed_buffs, Vocab::BuffRemove)
  597.     end
  598.   end
  599. # ╔═══════════════════════════════════════════════════════════════════════════╗
  600. # ║ Display Buffs/Debuffs                                                     ║
  601. # ╚═══════════════════════════════════════════════════════════════════════════╝
  602.   def display_buffs(target, buffs, fmt)
  603.     ww = window_width
  604.     buffs.each do |param_id|
  605.       show_log if COOLIE::LOG::SHOW_BUFFS
  606.       back_to(1) if COOLIE::LOG::SHOW_BUFFS
  607.       draw_text(0, 0, ww - 24, line_height, sprintf(fmt, target.name, Vocab::param(param_id)), v_align) if COOLIE::LOG::SHOW_BUFFS
  608.       wait if COOLIE::LOG::SHOW_BUFFS
  609.       clear if COOLIE::LOG::SHOW_BUFFS
  610.     end
  611.   end
  612. # ╔═══════════════════════════════════════════════════════════════════════════╗
  613. # ║ Display CP Buffs/Debuffs                                                  ║
  614. # ╚═══════════════════════════════════════════════════════════════════════════╝
  615.   def display_cp_buffs(target, buffs, fmt, pop = nil)
  616.     ww = window_width
  617.     buffs.each do |param_id|
  618.       target.do_pop(pop, Vocab::param(param_id))
  619.       show_log if COOLIE::LOG::SHOW_BUFFS
  620.       back_to(1) if COOLIE::LOG::SHOW_BUFFS
  621.       draw_text(0, 0, ww - 24, line_height, sprintf(fmt, target.name, Vocab::param(param_id)), v_align) if COOLIE::LOG::SHOW_BUFFS
  622.       wait if COOLIE::LOG::SHOW_BUFFS
  623.       clear if COOLIE::LOG::SHOW_BUFFS
  624.     end
  625.   end
  626. # ╔═══════════════════════════════════════════════════════════════════════════╗
  627. # ║ Get Window Left Position                                     [NEW METHOD] ║
  628. # ╚═══════════════════════════════════════════════════════════════════════════╝
  629.   def window_left_position
  630.     return 0 + COOLIE::LOG::WINDOW_X_OFFSET
  631.   end
  632. # ╔═══════════════════════════════════════════════════════════════════════════╗
  633. # ║ Get Window Center Position                                   [NEW METHOD] ║
  634. # ╚═══════════════════════════════════════════════════════════════════════════╝
  635.   def window_center_position
  636.     return (Graphics.width / 2 - window_width / 2) + COOLIE::LOG::WINDOW_X_OFFSET
  637.   end
  638. # ╔═══════════════════════════════════════════════════════════════════════════╗
  639. # ║ Get Window Right Position                                    [NEW METHOD] ║
  640. # ╚═══════════════════════════════════════════════════════════════════════════╝
  641.   def window_right_position
  642.     return (Graphics.width - window_width) + COOLIE::LOG::WINDOW_X_OFFSET
  643.   end
  644. # ╔═══════════════════════════════════════════════════════════════════════════╗
  645. # ║ Draw Skill Name                                              [NEW METHOD] ║
  646. # ╚═══════════════════════════════════════════════════════════════════════════╝
  647.   def draw_skill_name(item, x, y, enabled = true, width = 172)
  648.     return unless item
  649.     draw_icon(item.icon_index, x, 0, enabled)
  650.     change_color(normal_color, enabled)
  651.     draw_text(x + 24, 0, width, line_height, item.message1)
  652.   end
  653. # ╔═══════════════════════════════════════════════════════════════════════════╗
  654. # ║ Draw Item Name                                               [NEW METHOD] ║
  655. # ╚═══════════════════════════════════════════════════════════════════════════╝
  656.   def draw_items_name(item, x, y, enabled = true, width = 172)
  657.     return unless item
  658.     draw_icon(item.icon_index, x, 0, enabled)
  659.     change_color(normal_color, enabled)
  660.     draw_text(x + 24, 0, width, line_height, item.name)
  661.   end
  662. # ╔═══════════════════════════════════════════════════════════════════════════╗
  663. # ║ Skill Name Width                                             [NEW METHOD] ║
  664. # ╚═══════════════════════════════════════════════════════════════════════════╝
  665.   def skill_name_width(item)
  666.     size = text_size(item.message1).width
  667.     size += 24 if item.icon_index > 0
  668.     return size
  669.   end
  670. # ╔═══════════════════════════════════════════════════════════════════════════╗
  671. # ║ Item Name Width                                              [NEW METHOD] ║
  672. # ╚═══════════════════════════════════════════════════════════════════════════╝
  673.   def item_name_width(item)
  674.     size = text_size(item.name).width
  675.     size += 24 if item.icon_index > 0
  676.     return size
  677.   end
  678. # ╔═══════════════════════════════════════════════════════════════════════════╗
  679. # ║ Vocabulary Alignment                                         [NEW METHOD] ║
  680. # ╚═══════════════════════════════════════════════════════════════════════════╝
  681.   def v_align
  682.     return COOLIE::LOG::LOG_MESSAGE_ALIGN
  683.   end
  684. # ╔═══════════════════════════════════════════════════════════════════════════╗
  685. # ║ Custom Message Alignment                                     [NEW METHOD] ║
  686. # ╚═══════════════════════════════════════════════════════════════════════════╝
  687.   def c_align
  688.     return COOLIE::LOG::CUSTOM_MESSAGE_ALIGN
  689.   end
  690. # ╔═══════════════════════════════════════════════════════════════════════════╗
  691. # ║ Display Skill/Item Use                                                    ║
  692. # ╚═══════════════════════════════════════════════════════════════════════════╝
  693.   def display_use_item(subject, item)
  694.     # Handle Font and Windowskin processing
  695.     if subject.is_a?(Game_Enemy)
  696.       self.contents.font.name = COOLIE::LOG::FONT_ENEMY
  697.       self.windowskin = Cache.system(COOLIE::LOG::WINDOWSKIN_ENEMY.to_s)
  698.     else
  699.       self.contents.font.name = COOLIE::LOG::FONT_ACTOR
  700.       self.windowskin = Cache.system(COOLIE::LOG::WINDOWSKIN_ACTOR.to_s)
  701.     end
  702.     # Handle display of Window, Opacity, Icons and Text
  703.     if item.is_a?(RPG::Skill) && !item.message1.empty? && item.message2.empty? # For Skills
  704.     # Showing skill icon and name when the first "use" message contains text
  705.       show_log
  706.       ix = (window_width / 2 - skill_name_width(item) / 2) - 12 if item.icon_index > 0
  707.       ix = (window_width / 2 - skill_name_width(item) / 2) - 36 if item.icon_index <= 0
  708.       draw_skill_name(item, ix, y, enabled = true)
  709.     elsif item.is_a?(RPG::Skill) && item.message1.empty? && !item.message2.empty? # For Skills
  710.     # Showing custom string when the second "use" message contains text
  711.       show_log
  712.       draw_text(0, 0, window_width - 24, line_height, item.message2, c_align)
  713.       wait
  714.     elsif item.is_a?(RPG::Skill) && !item.message1.empty? && !item.message2.empty? # For Skills
  715.     # Showing custom string when the first and second "use" message contains text
  716.     # This is a failsafe to bypass the first "use" message
  717.       show_log
  718.       draw_text(0, 0, window_width - 24, line_height, item.message2, c_align)
  719.       wait
  720.     elsif item.is_a?(RPG::Skill) && item.message1.empty? && item.message2.empty? # For Skills
  721.     # Showing nothing when both "use" message fields contain no text
  722.       wait
  723.       clear
  724.     elsif item.is_a?(RPG::Item) # For Items
  725.     # Showing item icon and name when using an item in battle
  726.       show_log
  727.       ix = (window_width / 2 - item_name_width(item) / 2) - 12 if item.icon_index > 0
  728.       ix = (window_width / 2 - item_name_width(item) / 2) - 36 if item.icon_index <= 0
  729.       draw_items_name(item, ix, y, enabled = true)
  730.     else # Failsafe
  731.       show_log
  732.       draw_text(0, 0, window_width - 24, line_height, item.name)
  733.       wait
  734.     end
  735.     reset_font_settings
  736.   end
  737. end
  738. # ╔═══════════════════════════════════════════════════════════════════════════╗
  739. # ║ End of Script                                                             ║
  740. # ╚═══════════════════════════════════════════════════════════════════════════╝
  741. end
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top