Advertisement
roninator2

Enemy Gold Bag / Stolen Gold

Dec 16th, 2024
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 12.54 KB | None | 0 0
  1. # ╔═══════════════════════════════════════════════╦════════════════════╗
  2. # ║ Title: Enemy Gold Bag                         ║  Version: 1.04     ║
  3. # ║ Author: Roninator2                            ║                    ║
  4. # ╠═══════════════════════════════════════════════╬════════════════════╣
  5. # ║ Function:                                     ║   Date Created     ║
  6. # ║   Allows the enemy to store gold              ╠════════════════════╣
  7. # ║   when stolen from the player                 ║    14 Aug 2023     ║
  8. # ╚═══════════════════════════════════════════════╩════════════════════╝
  9. # ╔════════════════════════════════════════════════════════════════════╗
  10. # ║ Requires: nil                                                      ║
  11. # ║                                                                    ║
  12. # ╚════════════════════════════════════════════════════════════════════╝
  13. # ╔════════════════════════════════════════════════════════════════════╗
  14. # ║ Brief Description:                                                 ║
  15. # ║       Enemy holds gold stolen until killed.                        ║
  16. # ╚════════════════════════════════════════════════════════════════════╝
  17. # ╔════════════════════════════════════════════════════════════════════╗
  18. # ║ Instructions:                                                      ║
  19. # ║                                                                    ║
  20. # ║   Put note tag on enemy skill note box in order to                 ║
  21. # ║   allow the enemy to steal gold from the player                    ║
  22. # ║     <gold steal>                                                   ║
  23. # ║                                                                    ║
  24. # ║   Every enemy will have a gold bag.                                ║
  25. # ║   Every enemy you want to steal needs the steal skill              ║
  26. # ║   with the note tag                                                ║
  27. # ║                                                                    ║
  28. # ║   When the enemy is killed, it's gold is taken back                ║
  29. # ║                                                                    ║
  30. # ╚════════════════════════════════════════════════════════════════════╝
  31. # ╔════════════════════════════════════════════════════════════════════╗
  32. # ║ Updates:                                                           ║
  33. # ║ 1.00 - 14 Aug 2023 - Script finished                               ║
  34. # ║ 1.01 - 15 Aug 2023 - Set messages to show Party word               ║
  35. # ║ 1.02 - 15 Aug 2023 - Set messages to show actor name               ║
  36. # ║ 1.03 - 20 Aug 2023 - Optimized Code                                ║
  37. # ║ 1.04 - 27 Mar 2024 - Combined actor and party options              ║
  38. # ║                                                                    ║
  39. # ╚════════════════════════════════════════════════════════════════════╝
  40. # ╔════════════════════════════════════════════════════════════════════╗
  41. # ║ Credits and Thanks:                                                ║
  42. # ║   Roninator2                                                       ║
  43. # ║                                                                    ║
  44. # ╚════════════════════════════════════════════════════════════════════╝
  45. # ╔════════════════════════════════════════════════════════════════════╗
  46. # ║ Terms of use:                                                      ║
  47. # ║  Follow the original Authors terms of use where applicable         ║
  48. # ║    - When not made by me (Roninator2)                              ║
  49. # ║  Free for all uses in RPG Maker except nudity                      ║
  50. # ║  Anyone using this script in their project before these terms      ║
  51. # ║  were changed are allowed to use this script even if it conflicts  ║
  52. # ║  with these new terms. New terms effective 03 Apr 2024             ║
  53. # ║  No part of this code can be used with AI programs or tools        ║
  54. # ║  Credit must be given                                              ║
  55. # ╚════════════════════════════════════════════════════════════════════╝
  56.  
  57. module R2_Enemy_Gold_Bag
  58.   Gold_Steal = "<gold steal>" # tag required on skill to steal gold
  59.  
  60.   Use_Actor = true # must be actor or party not both
  61.   Actor_Text  = "%s lost %s gold!" # Actor, value. e.g. Eric lost 180 gold!
  62.   Actor_Saved = "%s recovered %s gold!" # Actor, value. e.g. Eric recovered 180 gold!
  63.  
  64.   # party will be used if actor is false
  65.   Party_Text  = "Party lost %s gold!" # Actor, value. e.g. Eric lost 180 gold!
  66.   Party_Saved = "Party recovered %s gold!" # Actor, value. e.g. Eric recovered 180 gold!
  67. end
  68.  
  69. # ╔════════════════════════════════════════════════════════════════════╗
  70. # ║                      End of editable region                        ║
  71. # ╚════════════════════════════════════════════════════════════════════╝
  72.  
  73. #==============================================================================
  74. # ** Game_Enemy
  75. #==============================================================================
  76. class Game_Enemy < Game_Battler
  77.   attr_accessor :gold_bag
  78.   #--------------------------------------------------------------------------
  79.   # * Object Initialization
  80.   #--------------------------------------------------------------------------
  81.   alias r2_enemy_gold_bag_initialize  initialize
  82.   def initialize(index, enemy_id)
  83.     r2_enemy_gold_bag_initialize(index, enemy_id)
  84.     @gold_bag = 0
  85.   end
  86. end
  87.  
  88. #==============================================================================
  89. # ** Game_Battler
  90. #==============================================================================
  91. class Game_Battler < Game_BattlerBase
  92.   #--------------------------------------------------------------------------
  93.   # * Calculate Damage
  94.   #--------------------------------------------------------------------------
  95.   alias r2_make_gold_stole_damage    make_damage_value
  96.   def make_damage_value(user, item)
  97.     ovars = Marshal.load(Marshal.dump($game_variables))
  98.     oswitchs = $game_switches.clone
  99.     value = item.damage.eval(user, self, $game_variables)
  100.     $game_variables = ovars
  101.     $game_switches = oswitchs
  102.     r2_make_gold_stole_damage(user, item)
  103.     if user.is_a?(Game_Enemy)
  104.       if item.note.include?(R2_Enemy_Gold_Bag::Gold_Steal)
  105.         @result.clear_hit_flags
  106.         if $game_party.gold < value
  107.           value = $game_party.gold
  108.         end
  109.         user.gold_bag += value.to_i
  110.         $game_party.gain_gold(-value.to_i)
  111.         value = 0
  112.         @result.make_damage(value.to_i, item)
  113.       end
  114.     end
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # * Knock Out
  118.   #--------------------------------------------------------------------------
  119.   alias r2_enemy_gold_bag_return_die  die
  120.   def die
  121.     r2_enemy_gold_bag_return_die
  122.     if self.is_a?(Game_Enemy)
  123.       if self.gold_bag > 0
  124.         $game_party.gain_gold(self.gold_bag)
  125.         SceneManager.scene.recover_gold(self.gold_bag) if SceneManager.scene_is?(Scene_Battle)
  126.         self.gold_bag = 0
  127.       end
  128.     end
  129.   end
  130. end
  131.  
  132. #==============================================================================
  133. # ** Scene_Battle
  134. #==============================================================================
  135. class Scene_Battle < Scene_Base
  136.   #--------------------------------------------------------------------------
  137.   # * Use Skill/Item
  138.   #--------------------------------------------------------------------------
  139.   alias r2_use_item_gold_stolen use_item
  140.   def use_item
  141.     item = @subject.current_action.item
  142.     targets = @subject.current_action.make_targets.compact
  143.     r2_use_item_gold_stolen
  144.     if item.note.include?(R2_Enemy_Gold_Bag::Gold_Steal)
  145.       @log_window.draw_gold_stolen(targets[0].name, @subject.gold_bag)
  146.     end
  147.   end
  148.   def recover_gold(gold)
  149.     name = @subject.name
  150.     @log_window.draw_recover_gold(name, gold)
  151.   end
  152. end
  153.  
  154. #==============================================================================
  155. # ** Window_BattleLog
  156. #==============================================================================
  157. class Window_BattleLog < Window_Selectable
  158. # ╔═══════════════════════════════════════════════════════════════════════════╗
  159. # ║ Draw Gold Stolen                                             [NEW METHOD] ║
  160. # ╚═══════════════════════════════════════════════════════════════════════════╝
  161.   def draw_gold_stolen(target, value)
  162.     if value > 0
  163.       ww = window_width
  164.       if COOLIE::LOG::SHOW_DAMAGE
  165.         show_log
  166.         back_to(1)
  167.         if R2_Enemy_Gold_Bag::Use_Actor
  168.           text = sprintf(R2_Enemy_Gold_Bag::Actor_Text, target, value)
  169.         else
  170.           text = sprintf(R2_Enemy_Gold_Bag::Party_Text, target, value)
  171.         end
  172.         draw_text(0, 0, ww - 24, line_height, text, v_align)
  173.         wait
  174.         clear
  175.       end
  176.     end
  177.   end
  178. # ╔═══════════════════════════════════════════════════════════════════════════╗
  179. # ║ Draw Gold Recovered                                          [NEW METHOD] ║
  180. # ╚═══════════════════════════════════════════════════════════════════════════╝
  181.   def draw_recover_gold(actor, value)
  182.     if value > 0
  183.       ww = window_width
  184.       if COOLIE::LOG::SHOW_DAMAGE
  185.         show_log
  186.         back_to(1)
  187.         if R2_Enemy_Gold_Bag::Use_Actor
  188.           text = sprintf(R2_Enemy_Gold_Bag::Actor_Saved, actor, value)
  189.         else
  190.           text = sprintf(R2_Enemy_Gold_Bag::Party_Saved, actor, value)
  191.         end
  192.         draw_text(0, 0, ww - 24, line_height, text, v_align)
  193.         wait
  194.         clear
  195.       end
  196.     end
  197.   end
  198. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement