blucalm

Retain HP

Nov 7th, 2012
401
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. # Retain hp - Eshra
  2. # This script allows enemies with a specific enemy ID to retain their hp after
  3. # battle. Add this notetag:
  4. #
  5. # <Retain HP after battle>
  6. #
  7. # If you want the enemy to retain its hp after a battle
  8. #
  9.  
  10. # Regex
  11. module RETAIN_HP
  12. module REGEXP
  13. HP_RE = /<Retain HP>/i
  14. end
  15. end
  16.  
  17. # ** module DataManager
  18. module DataManager
  19.  
  20. #--------------------------------------------------------------------------
  21. # alias method: load_database
  22. #--------------------------------------------------------------------------
  23. class <<self; alias load_database_retain_hp_82734 load_database; end
  24. def self.load_database
  25. $loaded_retain_hp_data ||= {}
  26.  
  27. load_database_retain_hp_82734
  28. load_notetags_retain_hp_82735
  29. end
  30.  
  31. #--------------------------------------------------------------------------
  32. # new method: load_notetags_retain_hp_82735
  33. #--------------------------------------------------------------------------
  34. def self.load_notetags_retain_hp_82735
  35. group = $data_enemies
  36. for obj in group
  37. next if obj.nil?
  38. obj.load_notetags_retain_hp_82736
  39. end
  40. end
  41. end # End - DataManager
  42.  
  43. # ** class RPG::Enemy
  44. class RPG::Enemy < RPG::BaseItem
  45. def load_notetags_retain_hp_82736
  46. self.note.split(/[\r\n]+/).each { |line|
  47. next unless line != nil
  48. case line
  49. when RETAIN_HP::REGEXP::HP_RE
  50. $loaded_retain_hp_data[@id] = @params[0] # params[0] = max hp
  51. #print "ret hp \n"
  52. end
  53. } # End - self.note.split
  54. end
  55. end # End - RPG::Enemy
  56.  
  57. # ** module BattleManager
  58. module BattleManager
  59.  
  60. class <<self; alias alias_bat_end_new_hp_vals_82737 battle_end; end
  61. def self.battle_end(result)
  62. self.update_retained_hps
  63. alias_bat_end_new_hp_vals_82737(result)
  64. end
  65.  
  66. class <<self; alias alias_process_esc_new_hp_vals_82738 process_escape; end
  67. def self.process_escape
  68. self.update_retained_hps
  69. alias_process_esc_new_hp_vals_82738
  70. end
  71.  
  72. def self.update_retained_hps # updates data in $game_system.retained_HP_enemy_vals
  73. $game_troop.enemies.each{ |enemy|
  74.  
  75. if $game_system.retained_HP_enemy_vals[enemy.enemy_id]
  76. if enemy.dead?
  77. $game_system.retained_HP_enemy_vals[enemy.enemy_id] = nil
  78. else
  79. $game_system.retained_HP_enemy_vals[enemy.enemy_id] = enemy.hp
  80. end
  81. end
  82. }
  83. end # End - update_retained_hps
  84. end # End = BattleManager
  85.  
  86.  
  87. # ** class Game_System
  88. class Game_System
  89.  
  90. attr_accessor :retained_HP_enemy_vals #stores persistent events information
  91.  
  92. alias retain_hp_initialize_hp_hash initialize
  93. def initialize
  94. retain_hp_initialize_hp_hash
  95. @retained_HP_enemy_vals = {} # store hp data here so it will be saved on reload
  96. $loaded_retain_hp_data.keys.each{ |id|
  97. @retained_HP_enemy_vals[id] = $loaded_retain_hp_data[id]
  98. }
  99.  
  100. end
  101. end # End - Game_System
  102.  
  103. # ** class Game_BattlerBase
  104. class Game_BattlerBase
  105. def set_hp(value, enable_death = false)
  106. if !enable_death && value <= 0
  107. self.hp = 1
  108. else
  109. self.hp = value
  110. end
  111. end
  112. end # End - Game_BattlerBase
  113.  
  114. # ** class Game_Troop
  115. class Game_Troop < Game_Unit
  116.  
  117. alias gaze_alt_game_troop_setup_84723 setup
  118. def setup(troop_id)
  119. retained_enemies = includes_retained_hp_enemies?(troop_id)
  120. #print "retained_hp_enemies = #{retained_enemies.inspect}\n"
  121. if retained_enemies[0] != nil
  122. alt_setup(troop_id, retained_enemies)
  123. else
  124. gaze_alt_game_troop_setup_84723(troop_id)
  125. end
  126. end
  127.  
  128. def includes_retained_hp_enemies?(troop_id)
  129. troop = $data_troops[troop_id]
  130. ret_enemies = []
  131. troop.members.each{ |memb|
  132. ret_enemies.push(memb.enemy_id) if $game_system.retained_HP_enemy_vals[memb.enemy_id]
  133. }
  134. ret_enemies
  135. end
  136.  
  137. def alt_setup(troop_id, ret_enemies = nil)
  138. #print "in alt_setup ret_enemies = #{ret_enemies.inspect}\n"
  139. clear
  140. @troop_id = troop_id
  141. @enemies = []
  142.  
  143. troop.members.each do |member|
  144. id = member.enemy_id
  145. next unless $data_enemies[id]
  146. enemy = Game_Enemy.new(@enemies.size, id)
  147. enemy.hide if member.hidden
  148. enemy.screen_x = member.x
  149. enemy.screen_y = member.y
  150.  
  151. if ret_enemies.include?(id)
  152. enemy.set_hp($game_system.retained_HP_enemy_vals[id])
  153. #print "Enemy ID = #{member.enemy_id} hp = #{enemy.hp}\n"
  154. end
  155.  
  156. @enemies.push(enemy)
  157. end
  158. init_screen_tone
  159. make_unique_names
  160. end
  161.  
  162. def enemies
  163. @enemies
  164. end
  165. end # End - Game_Troop
  166.  
  167. # ** class Game_Enemy
  168. class Game_Enemy < Game_Battler
  169. attr_accessor :hp
  170. end # End - Game_Enemy
  171.  
  172. # End of File
Advertisement
Add Comment
Please, Sign In to add comment