Advertisement
roninator2

Message on Max Buff

Dec 13th, 2024
28
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 9.92 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Message on Max Buff                    ║  Version: 1.02     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║                                               ╠════════════════════╣
  7. # ║ Show BattleLog Message                        ║    06 May 2021     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║       Show Message when at max buff                                ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║ Change the message below to what you want displayed                ║
  20. # ║ When a battler has reached max buff or debuff.                     ║
  21. # ║                                                                    ║
  22. # ╚════════════════════════════════════════════════════════════════════╝
  23. # ╔════════════════════════════════════════════════════════════════════╗
  24. # ║ Updates:                                                           ║
  25. # ║ 1.00 - 06 May 2021 - Script finished                               ║
  26. # ║ 1.01 - 06 May 2021 - error fixed                                   ║
  27. # ║ 1.02 - 06 May 2021 - show when state does not affect the battler   ║
  28. # ║                                                                    ║
  29. # ╚════════════════════════════════════════════════════════════════════╝
  30. # ╔════════════════════════════════════════════════════════════════════╗
  31. # ║ Credits and Thanks:                                                ║
  32. # ║   Roninator2                                                       ║
  33. # ║                                                                    ║
  34. # ╚════════════════════════════════════════════════════════════════════╝
  35. # ╔════════════════════════════════════════════════════════════════════╗
  36. # ║ Terms of use:                                                      ║
  37. # ║  Follow the original Authors terms of use where applicable         ║
  38. # ║    - When not made by me (Roninator2)                              ║
  39. # ║  Free for all uses in RPG Maker except nudity                      ║
  40. # ║  Anyone using this script in their project before these terms      ║
  41. # ║  were changed are allowed to use this script even if it conflicts  ║
  42. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  43. # ║  No part of this code can be used with AI programs or tools        ║
  44. # ║  Credit must be given                                              ║
  45. # ╚════════════════════════════════════════════════════════════════════╝
  46.  
  47. module Vocab
  48.  
  49. Buff_Max = "%s is already at the max!"
  50. Debuff_Max = "%s is already at the bottom!"
  51. No_State = "%s is not affected by %s!"
  52.  
  53. end
  54.  
  55. class Game_ActionResult
  56.   attr_accessor :max_buffs              # added buffs
  57.   attr_accessor :max_debuffs            # added debuffs
  58.   attr_accessor :blocked_state          # blocked states
  59.     alias r2_clear_max_buff clear_status_effects
  60.   def clear_status_effects
  61.         r2_clear_max_buff
  62.         @max_buffs = []
  63.         @max_debuffs = []
  64.     @blocked_state = []
  65.     end
  66. end
  67.  
  68. class Game_Battler < Game_BattlerBase
  69.  
  70.   #--------------------------------------------------------------------------
  71.   # * Add State
  72.   #--------------------------------------------------------------------------
  73.   def add_state(state_id)
  74.     if state_addable?(state_id)
  75.       add_new_state(state_id) unless state?(state_id)
  76.       reset_state_counts(state_id)
  77.       @result.added_states.push(state_id).uniq!
  78.     end
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # * Determine if States Are Addable
  82.   #--------------------------------------------------------------------------
  83.   def state_addable?(state_id)
  84.     res = alive? && $data_states[state_id] && !state_resist?(state_id) &&
  85.       !state_removed?(state_id) && !state_restrict?(state_id)
  86.     if res == false && state_resist?(state_id)
  87.       @result.blocked_state.push(state_id).uniq!
  88.     else
  89.       @result.blocked_state.delete(state_id)
  90.     end
  91.     return res
  92.   end
  93.   #--------------------------------------------------------------------------
  94.   # * Add Buff
  95.   #--------------------------------------------------------------------------
  96.   def add_buff(param_id, turns)
  97.     return unless alive?
  98.     @result.max_buffs.delete(param_id) if @result.max_buffs.include?(param_id)
  99.     if @buffs[param_id] == 2
  100.       @result.max_buffs.push(param_id)
  101.     end
  102.     @buffs[param_id] += 1 unless buff_max?(param_id)
  103.     erase_buff(param_id) if debuff?(param_id)
  104.     overwrite_buff_turns(param_id, turns)
  105.     @result.added_buffs.push(param_id).uniq!
  106.     refresh
  107.   end
  108.   #--------------------------------------------------------------------------
  109.   # * Add Debuff
  110.   #--------------------------------------------------------------------------
  111.   def add_debuff(param_id, turns)
  112.     return unless alive?
  113.     @result.max_debuffs.delete(param_id) if @result.max_debuffs.include?(param_id)
  114.     if @buffs[param_id] == -2
  115.       @result.max_debuffs.push(param_id)
  116.     end
  117.     @buffs[param_id] -= 1 unless debuff_max?(param_id)
  118.     erase_buff(param_id) if buff?(param_id)
  119.     overwrite_buff_turns(param_id, turns)
  120.     @result.added_debuffs.push(param_id).uniq!
  121.     refresh
  122.   end
  123.  
  124. end
  125.  
  126. class Window_BattleLog < Window_Selectable
  127.   def display_buffs(target, buffs, fmt)
  128.     buffs.each do |param_id|
  129.             if fmt == Vocab::BuffAdd
  130.                 if target.result.max_buffs.include?(param_id)
  131.                     replace_text(sprintf(Vocab::Buff_Max, target.name, Vocab::Buff_Max))
  132.           wait
  133.           wait
  134.         else
  135.           replace_text(sprintf(fmt, target.name, Vocab::param(param_id)))
  136.                 end
  137.             elsif fmt == Vocab::DebuffAdd
  138.                 if target.result.max_debuffs.include?(param_id)
  139.                     replace_text(sprintf(Vocab::Debuff_Max, target.name, Vocab::Debuff_Max))
  140.           wait
  141.           wait
  142.         else
  143.           replace_text(sprintf(fmt, target.name, Vocab::param(param_id)))
  144.                 end
  145.       else
  146.         replace_text(sprintf(fmt, target.name, Vocab::param(param_id)))
  147.             end
  148.       wait
  149.     end
  150.   end
  151.   #--------------------------------------------------------------------------
  152.   # * Display Affected Status
  153.   #--------------------------------------------------------------------------
  154.   def display_affected_status(target, item)
  155.     if target.result.status_affected?
  156.       add_text("") if line_number < max_line_number
  157.       display_changed_states(target)
  158.       display_changed_buffs(target)
  159.       back_one if last_text.empty?
  160.     end
  161.     if !target.result.blocked_state.nil?
  162.       display_blocked_states(target)
  163.     end
  164.   end
  165.   #--------------------------------------------------------------------------
  166.   # * Display blocked State
  167.   #--------------------------------------------------------------------------
  168.   def display_blocked_states(target)
  169.     target.result.blocked_state.each do |state|
  170.       next if state.nil?
  171.       name = $data_states[state].name
  172.       msg = Vocab::No_State
  173.       replace_text(sprintf(msg, target.name, name))
  174.       wait
  175.       wait
  176.     end
  177.   end
  178. end
  179.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement