Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Retain hp - Eshra
- # This script allows enemies with a specific enemy ID to retain their hp after
- # battle. Add this notetag:
- #
- # <Retain HP after battle>
- #
- # If you want the enemy to retain its hp after a battle
- #
- # Regex
- module RETAIN_HP
- module REGEXP
- HP_RE = /<Retain HP>/i
- end
- end
- # ** module DataManager
- module DataManager
- #--------------------------------------------------------------------------
- # alias method: load_database
- #--------------------------------------------------------------------------
- class <<self; alias load_database_retain_hp_82734 load_database; end
- def self.load_database
- $loaded_retain_hp_data ||= {}
- load_database_retain_hp_82734
- load_notetags_retain_hp_82735
- end
- #--------------------------------------------------------------------------
- # new method: load_notetags_retain_hp_82735
- #--------------------------------------------------------------------------
- def self.load_notetags_retain_hp_82735
- group = $data_enemies
- for obj in group
- next if obj.nil?
- obj.load_notetags_retain_hp_82736
- end
- end
- end # End - DataManager
- # ** class RPG::Enemy
- class RPG::Enemy < RPG::BaseItem
- def load_notetags_retain_hp_82736
- self.note.split(/[\r\n]+/).each { |line|
- next unless line != nil
- case line
- when RETAIN_HP::REGEXP::HP_RE
- $loaded_retain_hp_data[@id] = @params[0] # params[0] = max hp
- #print "ret hp \n"
- end
- } # End - self.note.split
- end
- end # End - RPG::Enemy
- # ** module BattleManager
- module BattleManager
- class <<self; alias alias_bat_end_new_hp_vals_82737 battle_end; end
- def self.battle_end(result)
- self.update_retained_hps
- alias_bat_end_new_hp_vals_82737(result)
- end
- class <<self; alias alias_process_esc_new_hp_vals_82738 process_escape; end
- def self.process_escape
- self.update_retained_hps
- alias_process_esc_new_hp_vals_82738
- end
- def self.update_retained_hps # updates data in $game_system.retained_HP_enemy_vals
- $game_troop.enemies.each{ |enemy|
- if $game_system.retained_HP_enemy_vals[enemy.enemy_id]
- if enemy.dead?
- $game_system.retained_HP_enemy_vals[enemy.enemy_id] = nil
- else
- $game_system.retained_HP_enemy_vals[enemy.enemy_id] = enemy.hp
- end
- end
- }
- end # End - update_retained_hps
- end # End = BattleManager
- # ** class Game_System
- class Game_System
- attr_accessor :retained_HP_enemy_vals #stores persistent events information
- alias retain_hp_initialize_hp_hash initialize
- def initialize
- retain_hp_initialize_hp_hash
- @retained_HP_enemy_vals = {} # store hp data here so it will be saved on reload
- $loaded_retain_hp_data.keys.each{ |id|
- @retained_HP_enemy_vals[id] = $loaded_retain_hp_data[id]
- }
- end
- end # End - Game_System
- # ** class Game_BattlerBase
- class Game_BattlerBase
- def set_hp(value, enable_death = false)
- if !enable_death && value <= 0
- self.hp = 1
- else
- self.hp = value
- end
- end
- end # End - Game_BattlerBase
- # ** class Game_Troop
- class Game_Troop < Game_Unit
- alias gaze_alt_game_troop_setup_84723 setup
- def setup(troop_id)
- retained_enemies = includes_retained_hp_enemies?(troop_id)
- #print "retained_hp_enemies = #{retained_enemies.inspect}\n"
- if retained_enemies[0] != nil
- alt_setup(troop_id, retained_enemies)
- else
- gaze_alt_game_troop_setup_84723(troop_id)
- end
- end
- def includes_retained_hp_enemies?(troop_id)
- troop = $data_troops[troop_id]
- ret_enemies = []
- troop.members.each{ |memb|
- ret_enemies.push(memb.enemy_id) if $game_system.retained_HP_enemy_vals[memb.enemy_id]
- }
- ret_enemies
- end
- def alt_setup(troop_id, ret_enemies = nil)
- #print "in alt_setup ret_enemies = #{ret_enemies.inspect}\n"
- clear
- @troop_id = troop_id
- @enemies = []
- troop.members.each do |member|
- id = member.enemy_id
- next unless $data_enemies[id]
- enemy = Game_Enemy.new(@enemies.size, id)
- enemy.hide if member.hidden
- enemy.screen_x = member.x
- enemy.screen_y = member.y
- if ret_enemies.include?(id)
- enemy.set_hp($game_system.retained_HP_enemy_vals[id])
- #print "Enemy ID = #{member.enemy_id} hp = #{enemy.hp}\n"
- end
- @enemies.push(enemy)
- end
- init_screen_tone
- make_unique_names
- end
- def enemies
- @enemies
- end
- end # End - Game_Troop
- # ** class Game_Enemy
- class Game_Enemy < Game_Battler
- attr_accessor :hp
- end # End - Game_Enemy
- # End of File
Advertisement
Add Comment
Please, Sign In to add comment