Jump to content
New account registrations are disabed. This website is now an archive. Read more here.

Monster Database Advanced

Sign in to follow this  

1 Screenshot

About This File

Features:

 

* * Assign Monsters into Groups, for quicker searching

* * Counts Times Seen and Defeated for Each Enemy

* * After Seeing an Enemy, it Unlocks the Basic Stats.

* * After Defeating the enemy, see the Amount of Gold Dropped, Items Dropped, and Experience Recieved

* * Test Battling (If you've seen a monster, you can test battle that monster)

* * Animated Bestairy (Uses Sprites) (Press Right or Left to change the stance)

Instructions:

 

* * To add an enemy to a group, in the database add (Name of Group) after each enemy's name. (All Enemies not assigned to a group will be classified into a Unassigned Group.

* * For Each Enemy you create, you need to make a Enemy Troop, named the same as your enemy, with only your enemy in it. (I tried adding troops to the $data_troops class, but this is just easier)

* * Insert Script Above Main, but below Scene Battle (The script re-writes a few methods from the default battle system)

* * Call the bestairy with: $scene = Scene_Beastairy.new

 

The Script:

#==============================================================================
# Beastairy System
#--------------------------------------------------------------------------
#   Created By SephirothSpawn (11.18.05)
#    Last Updated: 11.18.05
#==============================================================================

#==============================================================================
# ** Class Scene Title
#==============================================================================
class Scene_Title
 #--------------------------------------------------------------------------
 # * Alias' New Game Method
 #--------------------------------------------------------------------------
 alias new_game command_new_game
 #--------------------------------------------------------------------------
 # * Adds Beastairy Game Variables
 #--------------------------------------------------------------------------
 def command_new_game
   # Sets Up Smithery List
   $game_beastairy = Game_Beastairy.new
   new_game
 end
end

#==============================================================================
# ** Game_Temp
#==============================================================================
class Game_Temp
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :beastairy_return
 #--------------------------------------------------------------------------
 # * Alias Initialization
 #--------------------------------------------------------------------------
 alias beastairy_initialize initialize
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
   beastairy_initialize
   @beastairy_return = false
 end
end

#==============================================================================
# ** Class Game Beastairy
#==============================================================================
class Game_Beastairy
 #--------------------------------------------------------------------------
 # * Public Instance Variables
 #--------------------------------------------------------------------------
 attr_accessor :monster_groups
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
   @monster_groups = []
   for i in 1...$data_enemies.size
     $data_enemies[i].beastairy_setup
     unless @monster_groups.include?($data_enemies[i].group)
       @monster_groups.push($data_enemies[i].group)
     end
   end
 end
end

#==============================================================================
# ** Module RPG
#==============================================================================
module RPG
 #=========================================================================
 # ** Class Enemy
 #=========================================================================
 class Enemy
   #--------------------------------------------------------------------------
   # * Public Instance Variables
   #--------------------------------------------------------------------------
   # Detectors
   attr_accessor :seen, :defeated, :group
   # Counters
   attr_accessor :seen_times, :defeated_times
   #--------------------------------------------------------------------------
   # * Setup Beastairy
   #--------------------------------------------------------------------------
   def beastairy_setup
     @seen_times, @defeated_times = 0, 0
     @seen, @defeated = false, false
     if @name.include?('(')
       a, b = @name.index('('), @name.index(')')
       @group = @name.slice!(a..b)
       @group.delete!('(')
       @group.delete!(')')
     else
       @group = "Unclassified"
     end
   end
   #--------------------------------------------------------------------------
   # * See Enemy
   #--------------------------------------------------------------------------
   def see
     @seen = true
     @seen_times += 1
   end
   #--------------------------------------------------------------------------
   # * Defeat Enemy
   #--------------------------------------------------------------------------
   def defeat
     @defeated = true
     @defeated_times += 1
   end
 end
end

#==============================================================================
# ** Scene_Save
#==============================================================================
class Scene_Save < Scene_File
 #--------------------------------------------------------------------------
 # * Alias Save Data
 #--------------------------------------------------------------------------
 alias new_save write_save_data
 #--------------------------------------------------------------------------
 # * Write Save Data
 #--------------------------------------------------------------------------
 def write_save_data(file)
   new_save(file)
   Marshal.dump($game_beastairy, file)
 end
end

#==============================================================================
# ** Scene_Load
#==============================================================================
class Scene_Load < Scene_File
 #--------------------------------------------------------------------------
 # * Alias Read Save Data
 #--------------------------------------------------------------------------
 alias new_load read_save_data
 #--------------------------------------------------------------------------
 # * Read Save Data
 #--------------------------------------------------------------------------
 def read_save_data(file)
   new_load(file)
   $game_beastairy = Marshal.load(file)
 end
end

#==============================================================================
# ** Class Window Base
#==============================================================================
class Window_Base < Window
 #--------------------------------------------------------------------------
 # * Draw Enemy Sprite
 #--------------------------------------------------------------------------
 def draw_enemy_sprite(x, y, enemy_name, enemy_hue, pose, frame)
   bitmap = RPG::Cache.character(enemy_name, enemy_hue)
   cw = bitmap.width / 4
   ch = bitmap.height / 4
   # Facing Direction
   case pose
     when 0    ;a = 0             # Down
     when 1    ;a = ch           # Left
     when 2    ;a = ch * 3      # Up
     when 3    ;a = ch * 2      # Right
   end
   # Current Animation Slide
   case frame
     when 0    ;b = 0
     when 1    ;b = cw
     when 2    ;b = cw * 2
     when 3    ;b = cw * 3
   end
   # Bitmap Rectange
   src_rect = Rect.new(b, a, cw, ch)
   # Draws Bitmap
   self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
 end
end

#==============================================================================
# Window Monster Group Info
#==============================================================================
class Window_Monster_Group_Info < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
   super(200, 0, 440, 480)
   self.contents = Bitmap.new(width - 32, height - 32)
   refresh(0, 0, 0)
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #     index  : Index of Group From Game_Beastairy.Groups
 #     pose   : Enemy Character Pose
 #     frame  : Frame of Pose
 #--------------------------------------------------------------------------
 def refresh(index, pose, frame)
   # Clears Window
   contents.clear
   # Sets Up Group Name
   group_name = $game_beastairy.monster_groups[index]
   # Sets Up Enemies In Group
   enemies = []
   for i in 1...$data_enemies.size
     if $data_enemies[i].group == group_name
       enemies.push($data_enemies[i])
     end
   end
   group_name = "Exit" if index == $game_beastairy.monster_groups.size
   # Draws Enemy Group Name
   contents.font.color = system_color
   contents.draw_text(0, 0, self.width - 32, 32, group_name, 1)
   unless index == $game_beastairy.monster_groups.size
     # Offsets Graphics X Position
     graphics_offset = contents.width / (enemies.size + 1)
     # Draws Enemies Graphics
     for i in 0...enemies.size
       draw_enemy_sprite(graphics_offset * (i + 1), 124, enemies[i].battler_name , enemies[i].battler_hue , pose, frame)
     end
     # HP, SP, and Gold Word
     hp_word = $data_system.words.hp
     sp_word = $data_system.words.sp
     gold_word = $data_system.words.gold
     # Draws Table Headings
     contents.draw_text(4, 128, width, 24, "Name")
     contents.draw_text(0, 128, 200, 24, "Max #{hp_word}", 2)
     contents.draw_text(0, 128, 300, 24, "Max #{sp_word}", 2)
     contents.draw_text(-4, 128, contents.width, 24, "#{gold_word} Award", 2)
     # Draws Enemies Stats
     contents.font.color = normal_color
     for i in 0...enemies.size
       # Sets Enemy Stats
       name, hp, sp, gold = "??????????", "???", "???", "?????"
       name, hp, sp = enemies[i].name, enemies[i].maxhp, enemies[i].maxsp if enemies[i].seen
       gold = enemies[i].gold if enemies[i].defeated
       # Draws Stats
       contents.draw_text(4, 152 + (i * 24), width, 24, name)
       contents.draw_text(0, 152 + (i * 24), 200, 24, "#{hp}", 2)
       contents.draw_text(0, 152 + (i * 24), 300, 24, "#{sp}", 2)
       contents.draw_text(-4, 152 + (i * 24), contents.width, 24, "#{gold}", 2)
     end
   end
 end
end

#==============================================================================
# Window Monster Info
#==============================================================================
class Window_Monster_Info < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
   super(200, 0, 440, 480)
   self.contents = Bitmap.new(width - 32, height - 32)
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #     index  : Index of enemy From $data_enemies
 #     pose   : Enemy Character Pose
 #     frame  : Frame of Pose
 #--------------------------------------------------------------------------
 def refresh(index, pose, frame)
   # Clears Window
   contents.clear
   # Enemy
   enemy = $data_enemies[index]
   # Graphic Image
   draw_enemy_sprite(52, 100, enemy.battler_name , enemy.battler_hue, pose, frame)
   # Default Stats Set
   name = "??????????"
   maxhp = maxsp =  str = dex = agi = int = atk = pdef = mdef = eva = "???"
   exp = gold = item_id = weapon_id = armor_id = treasure_prob = "?????"
   item_icon = weapon_icon = armor_icon = "049-Skill06"
   armor_type = 2
   # If the Enemy has been seen
   if enemy.seen
     name = enemy.name
     maxhp = enemy.maxhp.to_s
     maxsp =  enemy.maxsp.to_s
     str = enemy.str.to_s
     dex = enemy.dex.to_s
     agi = enemy.agi.to_s
     int = enemy.int.to_s
     atk = enemy.atk.to_s
     pdef = enemy.pdef.to_s
     mdef = enemy.mdef.to_s
     eva = enemy.eva.to_s
   end
   # If the Enemy has been Defeated
   if enemy.defeated
     exp = enemy.exp.to_s
     gold = enemy.gold.to_s
     if enemy.item_id == 0
       item_id = "Nothing"
       item_icon = "032-Item01"
     else
       item_id = $data_items[enemy.item_id].name
       item_icon = $data_items[enemy.item_id].icon_name
     end
     if enemy.weapon_id == 0
       weapon_id = "Nothing"
       weapon_icon = "032-Item01"
     else
       weapon_id = $data_weapons[enemy.weapon_id].name
       weapon_icon = $data_weapons[enemy.weapon_id].icon_name
     end
     if enemy.armor_id == 0
       armor_id = "Nothing"
       armor_icon = "032-Item01"
     else
       armor_id = $data_armors[enemy.armor_id].name
       armor_icon = $data_armors[enemy.armor_id].icon_name
       armor_type = $data_armors[enemy.armor_id].type
     end
     treasure_prob = enemy.treasure_prob.to_s
   end
   # System Words
   g_word = $data_system.words.gold 
   hp_word = $data_system.words.hp 
   sp_word = $data_system.words.sp 
   str_word = $data_system.words.str 
   dex_word = $data_system.words.dex 
   agi_word = $data_system.words.agi 
   int_word = $data_system.words.int 
   atk_word = $data_system.words.atk 
   pdef_word = $data_system.words.pdef 
   mdef_word = $data_system.words.mdef 
   weapon_word = $data_system.words.weapon
   case armor_type
     when 0     ;armor_type = $data_system.words.armor1
     when 1     ;armor_type = $data_system.words.armor2
     when 2     ;armor_type = $data_system.words.armor3
     when 3     ;armor_type = $data_system.words.armor4
   end
   item_word = $data_system.words.item 
   # Draws Name
   contents.font.color = normal_color
   contents.draw_text(116, 0, contents.width - 116, 32, name)
   # Draws Times Seen & Defeated
   contents.font.color = system_color
   contents.draw_text(116, 32, contents.width - 116, 32, "Times Seen:")
   contents.draw_text(116, 64, contents.width - 116, 32, "Times Defeated:")
   contents.font.color = normal_color
   contents.draw_text(0, 32, contents.width, 32, "#{enemy.seen_times}", 2)
   contents.draw_text(0, 64, contents.width, 32, "#{enemy.defeated_times}", 2)
   # Organizes Stats
   colomn_a_left = ["Max #{hp_word}", "Max #{sp_word}", str_word, dex_word, 
                    agi_word, int_word, atk_word, pdef_word, mdef_word, "Evasion"]
   colomn_a_right = [maxhp, maxsp, str,dex , agi, int, atk, pdef, mdef, eva]
   # Organized Victory Settings
   column_b_left = ["Experience Given:", "#{g_word} Dropped:", "#{item_word} Dropped:", "",
         "#{weapon_word} Dropped:", "", "#{armor_type} Dropped:", "", "Drop Pobabilty:"]
   column_b_right = [exp, gold, "", item_id, "", weapon_id, "", armor_id, treasure_prob]
   # Draws Stats
   for i in 0...colomn_a_left.size
     contents.font.color = system_color
     contents.draw_text(4, 160 + i * 32, 160, 32, colomn_a_left[i])
     contents.font.color = normal_color
     contents.draw_text(-4, 160 + i * 32, 160, 32, colomn_a_right[i], 2)
   end
   # Draws Victory Settings
   for i in 0...column_b_left.size
     contents.font.color = system_color
     contents.draw_text(168, 160 + i * 32, contents.width, 32, column_b_left[i])
     x = -4
     x = -30 if i == 3 or i == 5 or i == 7
     contents.font.color = normal_color
     contents.draw_text(x, 160 + i * 32, contents.width, 32, column_b_right[i], 2)
   end
   # Draws Item Icons
   bitmap = RPG::Cache.icon(item_icon)
   self.contents.blt(contents.width - 24, 260, bitmap, Rect.new(0, 0, 24, 24))
   bitmap = RPG::Cache.icon(weapon_icon)
   self.contents.blt(contents.width - 24, 324, bitmap, Rect.new(0, 0, 24, 24))
   bitmap = RPG::Cache.icon(armor_icon)
   self.contents.blt(contents.width - 24, 388, bitmap, Rect.new(0, 0, 24, 24))
 end
end

#==============================================================================
# Window Beastairy Controls
#==============================================================================
class Window_Beastairy_Controls < Window_Base
 #--------------------------------------------------------------------------
 # * Object Initialization
 #--------------------------------------------------------------------------
 def initialize
   super(0, 288, 200, 192)
   self.contents = Bitmap.new(width - 32, height - 32)
   self.z = 999
   refresh(0)
 end
 #--------------------------------------------------------------------------
 # * Refresh
 #--------------------------------------------------------------------------
 def refresh(phase)
   # Clears Window
   contents.clear
   disabled_system_color = Color.new(192, 224, 255, 128)
   contents.font.color = normal_color
   contents.draw_text(0, 0, contents.width, 24, "L / R : Change Pose")
   # Main Phase Controls
   contents.font.color = phase == 0 ? system_color : disabled_system_color
   contents.draw_text(4, 24, contents.width, 24, "Main")
   contents.font.color = phase == 0 ? normal_color : disabled_color
   contents.draw_text(8, 48, contents.width, 24, "B : Return to Map")
   contents.draw_text(8, 72, contents.width, 24, "C : Select Group")
   # Enemy Select Controls
   contents.font.color = phase == 1 ? system_color : disabled_system_color
   contents.draw_text(4, 96, contents.width, 24, "Enemy Select")
   contents.font.color = phase == 1 ? normal_color : disabled_color
   contents.draw_text(8, 120, contents.width, 24, "B : Return to Main")
   contents.draw_text(8, 140, contents.width, 24, "C : Test Battle")
 end
end

#==============================================================================
# ** Class Scene Beastairy
#==============================================================================
class Scene_Beastairy
 #--------------------------------------------------------------------------
 # * Main Processing
 #--------------------------------------------------------------------------
 def main
   # Sets Main Phase
   @phase = 0
   # Enemies Graphic Animation
   @pose, @frame, @counting_frame= 0, 0, 0
   # Current Phase Window
   @phase_window = Window_Base.new(0, 0, width = 200, height = 64)
     @phase_window.contents = contents = Bitmap.new(width - 32, height - 32)
     @phase_window.contents.draw_text(0, 0, 168, 32, "Main Phase", 1)
   # Main Window (Enemy Groups)
   commands = $game_beastairy.monster_groups.dup
   commands.push("Exit")
   @enemy_groups = Window_Command.new(200, commands)
     @enemy_groups.y = 64
     @enemy_groups.height = 224
   # Controls Window
   @controls = Window_Beastairy_Controls.new
   # Monster Group Information Window
   @monster_window = Window_Monster_Group_Info.new
     @monster_window.refresh(0, 0, 0)
   # Enemy Information Window
   @enemy_window = Window_Monster_Info.new
     @enemy_window.visible = false
   # Scene Objects
   @objects = [@phase_window, @enemy_groups, @controls, @monster_window, @enemy_window]
   # Execute transition
   Graphics.transition
   # Main loop
   loop do
     # Update game screen
     Graphics.update
     # Update input information
     Input.update
     # Update Objects Information
     @objects.each {|x| x.update}
     # Frame update
     update
     # Abort loop if screen is changed
     break if $scene != self
   end
   # Prepare for transition
   Graphics.freeze
   # Dispose of Objects
   @objects.each {|x| x.dispose unless x.disposed?}
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   # Visiblity Changes Between Methods
   case @phase
   # Main Phase
   when 0
     [@enemy_window].each {|x| x.visible = false if x.visible}
     [@enemy_groups, @monster_window].each {|x| x.visible = true unless x.visible}
     @enemy_groups.active = true
   when 1
     [@enemy_window].each {|x| x.visible = true unless x.visible}
     [@enemy_groups, @monster_window].each {|x| x.visible = false if x.visible}
     @enemy_groups.active = false
   end
   # Updates Enemy Animation
   @counting_frame += 1
   if @counting_frame == 8
     @counting_frame = 0
     @frame += 1
     @frame = 0 if @frame == 4
     if @phase == 0
       @monster_window.refresh(@enemy_groups.index, @pose, @frame)
     else
       enemy_id = @enemies[@groups_enemies.index].id
       @enemy_window.refresh(enemy_id, @pose, @frame)
     end
   end
   # Current Phase Update
   case @phase
     when 0; main_update
     when 1; enemy_select
   end
 end
 #--------------------------------------------------------------------------
 # * Main Frame Update
 #--------------------------------------------------------------------------
 def main_update
   # Exit Scene
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     $game_temp.beastairy_return = false
     $scene = Scene_Map.new
   # Enemy Select
   elsif Input.trigger?(Input::C)
     $game_system.se_play($data_system.decision_se)
     if @enemy_groups.index == $game_beastairy.monster_groups.size
       $game_temp.beastairy_return = false
       $scene = Scene_Map.new
     else
       commands, @enemies = [], []
       group = $game_beastairy.monster_groups[@enemy_groups.index]
       for i in 1...$data_enemies.size
          if $data_enemies[i].group == group
           commands.push($data_enemies[i].name)
           @enemies.push($data_enemies[i])
         end
       end
       @groups_enemies = Window_Command.new(200, commands)
         @groups_enemies.y = 64
         @groups_enemies.height = 224
       # Phase Window Update
       @phase_window.contents.clear
       @phase_window.contents.draw_text(0, 0, 168, 32, "Enemy Select", 1)
       # Adds Object (For Updating)
       @objects.push(@groups_enemies)
       # Updates Controls Window
       @controls.refresh(1)
       enemy_id = @enemies[@groups_enemies.index].id
       @enemy_window.refresh(enemy_id, @pose, @frame)
       # Changes Phase
       @phase = 1
     end
   # Changes Pose
   elsif Input.trigger?(Input::LEFT)
     $game_system.se_play($data_system.cursor_se)
     @pose == 0 ? @pose = 3 : @pose -= 1
   elsif Input.trigger?(Input::RIGHT)
     $game_system.se_play($data_system.cursor_se)
     @pose == 3 ? @pose = 0 : @pose += 1
   end
 end
 #--------------------------------------------------------------------------
 # * Enemy Frame Update
 #--------------------------------------------------------------------------
 def enemy_select
   # Exit Phase
   if Input.trigger?(Input::B)
     $game_system.se_play($data_system.cancel_se)
     @groups_enemies.dispose
     @objects.delete(@groups_enemies)
     # Phase Window Update
     @phase_window.contents.clear
     @phase_window.contents.draw_text(0, 0, 168, 32, "Main Phase", 1)
     # Updates Controls Window
     @controls.refresh(0)
     # Changes Phase
     @phase = 0
   # Enemy Select
   elsif Input.trigger?(Input::C)
     enemy  = @enemies[@groups_enemies.index]
     if enemy.seen
       $game_system.se_play($data_system.decision_se)
       enemy_name = enemy.name
       for i in 1...$data_troops.size
         if $data_troops[i].name == enemy_name
           $game_temp.beastairy_return = true
           $game_temp.battle_troop_id = i
           $game_temp.battle_can_escape = true
           $game_temp.battle_can_lose = false
           $game_temp.battle_proc = nil
           # Memorize map BGM and stop BGM
           $game_temp.map_bgm = $game_system.playing_bgm
           $game_system.bgm_stop
           # Play battle start SE
           $game_system.se_play($data_system.battle_start_se)
           # Play battle BGM
           $game_system.bgm_play($game_system.battle_bgm)
           # Straighten player position
           $game_player.straighten
           # Switch to battle screen
           $scene = Scene_Battle.new
         end
       end
     else
       $game_system.se_play($data_system.buzzer_se)
     end
   elsif Input.trigger?(Input::LEFT)
     $game_system.se_play($data_system.cursor_se)
     @pose == 0 ? @pose = 3 : @pose -= 1
   elsif Input.trigger?(Input::RIGHT)
     $game_system.se_play($data_system.cursor_se)
     @pose == 3 ? @pose = 0 : @pose += 1
   end
 end
end

#==============================================================================
# ** Scene_Battle
#==============================================================================
class Scene_Battle
 #--------------------------------------------------------------------------
 # * Alias Main Processing
 #--------------------------------------------------------------------------
 alias beastairy_main main
 #--------------------------------------------------------------------------
 # * Main Processing
 #--------------------------------------------------------------------------
 def main
   unless $game_temp.beastairy_return
     @beastairy_troop = []
     troop = $data_troops[$game_temp.battle_troop_id]
     for i in 0...troop.members.size
       enemy = $data_enemies[troop.members[i].enemy_id]
       @beastairy_troop.push(enemy)
       enemy.see
     end
   else
     @beastairy_troop = []
   end
   beastairy_main
 end
 #--------------------------------------------------------------------------
 # * Battle Ends
 #     result : results (0:win 1:lose 2:escape)
 #--------------------------------------------------------------------------
 def battle_end(result)
   # Clear in battle flag
   $game_temp.in_battle = false
   # Clear entire party actions flag
   $game_party.clear_actions
   # Remove battle states
   for actor in $game_party.actors
     actor.remove_states_battle
   end
   # Clear enemies
   $game_troop.enemies.clear
   # Call battle callback
   if $game_temp.battle_proc != nil
     $game_temp.battle_proc.call(result)
     $game_temp.battle_proc = nil
   end
   if $game_temp.beastairy_return
     $scene = Scene_Beastairy.new
   else
     if result == 0
       for enemy in @beastairy_troop
         enemy.defeat
       end
     end
     $scene = Scene_Map.new
   end
 end
 #--------------------------------------------------------------------------
 # * Frame Update
 #--------------------------------------------------------------------------
 def update
   # If battle event is running
   if $game_system.battle_interpreter.running?
     # Update interpreter
     $game_system.battle_interpreter.update
     # If a battler which is forcing actions doesn't exist
     if $game_temp.forcing_battler == nil
       # If battle event has finished running
       unless $game_system.battle_interpreter.running?
         # Rerun battle event set up if battle continues
         unless judge
           setup_battle_event
         end
       end
       # If not after battle phase
       if @phase != 5
         # Refresh status window
         @status_window.refresh
       end
     end
   end
   # Update system (timer) and screen
   $game_system.update
   $game_screen.update
   # If timer has reached 0
   if $game_system.timer_working and $game_system.timer == 0
     # Abort battle
     $game_temp.battle_abort = true
   end
   # Update windows
   @help_window.update
   @party_command_window.update
   @actor_command_window.update
   @status_window.update
   @message_window.update
   # Update sprite set
   @spriteset.update
   # If transition is processing
   if $game_temp.transition_processing
     # Clear transition processing flag
     $game_temp.transition_processing = false
     # Execute transition
     if $game_temp.transition_name == ""
       Graphics.transition(20)
     else
       Graphics.transition(40, "Graphics/Transitions/" +
         $game_temp.transition_name)
     end
   end
   # If message window is showing
   if $game_temp.message_window_showing
     return
   end
   # If effect is showing
   if @spriteset.effect?
     return
   end
   # If game over
   if $game_temp.gameover
     # Switch to game over screen
     if $game_temp.beastairy_return
       $scene = Scene_Beastairy.new
     else
       $scene = Scene_Gameover.new
     end
   end
   # If returning to title screen
   if $game_temp.to_title
     # Switch to title screen
     $scene = Scene_Title.new
     return
   end
   # If battle is aborted
   if $game_temp.battle_abort
     # Return to BGM used before battle started
     $game_system.bgm_play($game_temp.map_bgm)
     # Battle ends
     battle_end(1)
     return
   end
   # If waiting
   if @wait_count > 0
     # Decrease wait count
     @wait_count -= 1
     return
   end
   # If battler forcing an action doesn't exist,
   # and battle event is running
   if $game_temp.forcing_battler == nil and
      $game_system.battle_interpreter.running?
     return
   end
   # Branch according to phase
   case @phase
   when 1  # pre-battle phase
     update_phase1
   when 2  # party command phase
     update_phase2
   when 3  # actor command phase
     update_phase3
   when 4  # main phase
     update_phase4
   when 5  # after battle phase
     update_phase5
   end
 end  
 #--------------------------------------------------------------------------
 # * Start After Battle Phase
 #--------------------------------------------------------------------------
 def start_phase5
   # Shift to phase 5
   @phase = 5
   # Play battle end ME
   $game_system.me_play($game_system.battle_end_me)
   # Return to BGM before battle started
   $game_system.bgm_play($game_temp.map_bgm)
   # Initialize EXP, amount of gold, and treasure
   exp = 0
   gold = 0
   treasures = []
   # Loop
   for enemy in $game_troop.enemies
     # If enemy is not hidden
     unless enemy.hidden
       unless $game_temp.beastairy_return
         # Add EXP and amount of gold obtained
         exp += enemy.exp
         gold += enemy.gold
         # Determine if treasure appears
         if rand(100) < enemy.treasure_prob
           if enemy.item_id > 0
             treasures.push($data_items[enemy.item_id])
           end
           if enemy.weapon_id > 0
             treasures.push($data_weapons[enemy.weapon_id])
           end
           if enemy.armor_id > 0
             treasures.push($data_armors[enemy.armor_id])
           end
         end
       end
     end
   end
   # Treasure is limited to a maximum of 6 items
   treasures = treasures[0..5]
   # Obtaining EXP
   for i in 0...$game_party.actors.size
     actor = $game_party.actors[i]
     if actor.cant_get_exp? == false
       last_level = actor.level
       actor.exp += exp
       if actor.level > last_level
         @status_window.level_up(i)
       end
     end
   end
   # Obtaining gold
   $game_party.gain_gold(gold)
   # Obtaining treasure
   for item in treasures
     case item
     when RPG::Item
       $game_party.gain_item(item.id, 1)
     when RPG::Weapon
       $game_party.gain_weapon(item.id, 1)
     when RPG::Armor
       $game_party.gain_armor(item.id, 1)
     end
   end
   # Make battle result window
   @result_window = Window_BattleResult.new(exp, gold, treasures)
   # Set wait count
   @phase5_wait_count = 100
 end
end




User Feedback

Recommended Comments

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
×
×
  • Create New...