Advertisement
roninator2

Equip Common Event

Dec 16th, 2024
36
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 8.26 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Equip Common Event                     ║  Version: 1.00     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║                                               ╠════════════════════╣
  7. # ║  Run common events for equipping              ║    14 Apr 2023     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║        Run CE on equip                                             ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║                                                                    ║
  20. # ║    Add note tag to equipment to have them run                      ║
  21. # ║    Common Events when equipped or unequipped                       ║
  22. # ║                                                                    ║
  23. # ║    <on add: x>  X = common event id                                ║
  24. # ║    <on remove: x>                                                  ║
  25. # ║                                                                    ║
  26. # ╚════════════════════════════════════════════════════════════════════╝
  27. # ╔════════════════════════════════════════════════════════════════════╗
  28. # ║ Updates:                                                           ║
  29. # ║ 1.00 - 14 Apr 2023 - Initial publish                               ║
  30. # ╚════════════════════════════════════════════════════════════════════╝
  31. # ╔════════════════════════════════════════════════════════════════════╗
  32. # ║ Credits and Thanks:                                                ║
  33. # ║   Roninator2                                                       ║
  34. # ║                                                                    ║
  35. # ╚════════════════════════════════════════════════════════════════════╝
  36. # ╔════════════════════════════════════════════════════════════════════╗
  37. # ║ Terms of use:                                                      ║
  38. # ║  Follow the original Authors terms of use where applicable         ║
  39. # ║    - When not made by me (Roninator2)                              ║
  40. # ║  Free for all uses in RPG Maker except nudity                      ║
  41. # ║  Anyone using this script in their project before these terms      ║
  42. # ║  were changed are allowed to use this script even if it conflicts  ║
  43. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  44. # ║  No part of this code can be used with AI programs or tools        ║
  45. # ║  Credit must be given                                              ║
  46. # ╚════════════════════════════════════════════════════════════════════╝
  47.  
  48. #==============================================================================
  49. # ** Module Equip Common Event
  50. #==============================================================================
  51. module R2_Equip_CE
  52.   Equip_ADD_CE = /<on[-_ ]add:[-_ ](\d+)>/i
  53.   Equip_REMOVE_CE = /<on[-_ ]remove:[-_ ](\d+)>/i
  54. end
  55.  
  56. #==============================================================================
  57. # ** Module DataManager
  58. #==============================================================================
  59. module DataManager
  60.   class <<self; alias load_database_equip_ce load_database; end
  61.   def self.load_database
  62.     load_database_equip_ce
  63.     load_notetags_equip_ce
  64.   end
  65.   def self.load_notetags_equip_ce
  66.     groups = [$data_items, $data_weapons, $data_armors]
  67.     for group in groups
  68.       for obj in group
  69.         next if obj.nil?
  70.         obj.load_notetags_equip_ce
  71.       end
  72.     end
  73.   end
  74. end
  75.  
  76. #==============================================================================
  77. # ** Load Item Note Tags
  78. #==============================================================================
  79. class RPG::BaseItem
  80.   attr_accessor :equip_add_ce
  81.   attr_accessor :equip_remove_ce
  82.   def load_notetags_equip_ce
  83.     self.note.split(/[\r\n]+/).each { |line|
  84.       case line
  85.       when R2_Equip_CE::Equip_ADD_CE
  86.         @equip_add_ce = $1.to_i
  87.       when R2_Equip_CE::Equip_REMOVE_CE
  88.         @equip_remove_ce = $1.to_i
  89.       end
  90.     }
  91.   end
  92. end
  93.  
  94. #==============================================================================
  95. # ** Modify Change Equip
  96. #==============================================================================
  97. class Game_Actor
  98.   alias r2_equip_change_ce change_equip
  99.   def change_equip(slot_id, item)
  100.     old_item = @equips[slot_id].object
  101.     r2_equip_change_ce(slot_id, item)
  102.     if old_item
  103.       $game_temp.reserve_common_event(old_item.equip_remove_ce)
  104.     end
  105.     if @equips[slot_id].object == item
  106.       $game_temp.reserve_common_event(item.equip_add_ce)
  107.     end
  108.   end
  109. end
  110.  
  111. #==============================================================================
  112. # ** Modify Running Common Events
  113. #==============================================================================
  114. class Game_Temp
  115.   attr_reader :equip_common_events
  116.   alias r2_common_event_array initialize
  117.   def initialize
  118.     r2_common_event_array
  119.     @equip_common_events = []
  120.   end
  121.   def common_event_id
  122.     @equip_common_events[0]
  123.   end
  124.   def reserve_common_event(common_event_id)
  125.     return if common_event_id == nil
  126.     @equip_common_events.push(common_event_id)
  127.   end
  128.   def common_event_reserved?
  129.     @equip_common_events.size > 0
  130.   end
  131.   def reserved_common_event
  132.     $data_common_events[@equip_common_events.shift]
  133.   end
  134. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement