Envision, Create, Share

Welcome to HBGames, a leading amateur game development forum and Discord server. All are welcome, and amongst our ranks you will find experts in their field from all aspects of video game design and development.

MOG'S XAS Edit [REQUEST]

Hello everyone,

Recently, I decided to switch my battle system to ABS. However, I tried using nearly every single ABS I could find but none worked with the other scripts I am using except for Mog's XAS. I am still having some minor troubles with it however so I am hoping for some help.

First of all of course, the list of scripts I am using in order:

  • Caterpillar by Fukuyama
  • Ccoa's UMS
  • Ccoa's Weather Script
  • Chrono Tigger CMS - Picture Names
  • Chrono Tigger CMS - Cursor Script
  • Chrono Tigger CMS - Main Script


And this is the demo of the script I wish to be edited,

http://xasabs.wordpress.com/xas-download/

But only these are the necessary ones as I am NOT going to use the add-ons:

untitled.png


And of course, the CMS scripts I am using as well as I believe the problems are about them,

Picture Names
Code:
 

#===============================================================================

# * Module CT_pictures

#-------------------------------------------------------------------------------

# The name of Pictures and Icons used in the

# menu are stored here

#-------------------------------------------------------------------------------

# ~Instructions

# Look at the picture and the icon folder to see the examples.

# Just replace them with other pictures if you like too, just make sure

# they are named like the ones before ore you change their names.

#===============================================================================

module CT_Pictures

#Menu Icons

Icon_1 = "item2"  #equip button

Icon_2 = "menu0"                        #item button

Icon_3 = "menu1"                         #skill button

Icon_4 = "change party"                        #change party member button

Icon_5 = "menu4"                          #save button

Icon_6 = "menu5"                         #quit button

Weapon_alternative = "item1"            #alternative Icon if your character has no Weapon equipped

Shield_alternative = "menu2"            #alternative Icon if your character has no Shield equipped

 

#Menu Pictures

BG_Picture = "background2"          #background picture

Cursor = "cursor"                              #icon of the cursor

end

 

Cursor Script
Code:
#==============================================================================

# ■ Cursor Script

#------------------------------------------------------------------------------

#  Script to display a cursor instead of a highlight box

#   by squall

#   [email=squall@rmxp.ch]squall@rmxp.ch[/email]

#==============================================================================

 

#==============================================================================

# ■ Cursor_Sprite

#==============================================================================

 

class Sprite_Cursor < Sprite

  #--------------------------------------------------------------------------

  # ● instances

  #--------------------------------------------------------------------------

  attr_accessor :true_x

  attr_accessor :true_y

  #--------------------------------------------------------------------------

  # ● initialize

  #--------------------------------------------------------------------------

  def initialize(x = 0, y = 0)

    super()

    self.x = @true_x = x

    self.y = @true_y = y

    self.z += 1000

    self.bitmap = RPG::Cache.picture(CT_Pictures::Cursor) rescue Bitmap.new(32, 32)

  end

  #--------------------------------------------------------------------------

  # ● update

  #--------------------------------------------------------------------------

  def update

    super

    

    if self.y < @true_y

      n = (@true_y - self.y) / 3

      n = 1 if n == 0

      self.y += n

    elsif self.y > @true_y

      n = (self.y - @true_y) / 3

      n = 1 if n == 0

      self.y -= n

    end

 

    if self.x < @true_x

      n = (@true_x - self.x) / 3

      n = 1 if n == 0

      self.x += n

    elsif self.x > @true_x

      n = (self.x - @true_x) / 3

      n = 1 if n == 0

      self.x -= n

    end

  end

end

 

#==============================================================================

# ■ Window_Selectable

#==============================================================================

 

class Window_Selectable < Window_Base

  #--------------------------------------------------------------------------

  # ● instances

  #--------------------------------------------------------------------------

  attr_reader   :index

  attr_reader   :help_window

  attr_accessor :cursor

  alias update_cursor_moves update

  #--------------------------------------------------------------------------

  # ● initialize

  #--------------------------------------------------------------------------

  def initialize(x, y, width, height)

    super(x, y, width, height)

    @item_max = 1

    @column_max = 1

    @index = 0

    @cursor = Sprite_Cursor.new(x, y)

    unless $scene.is_a?(Scene_Menu)

      @cursor.opacity = 0

    end

    update_cursor

  end

  #--------------------------------------------------------------------------

  # ● x=

  #--------------------------------------------------------------------------

  def x=(x)

    super

    @cursor.x = x if !@cursor.nil?

  end

  #--------------------------------------------------------------------------

  # ● y=

  #--------------------------------------------------------------------------

  def y=(y)

    super

    @cursor.y = y if !@cursor.nil?

  end

  #--------------------------------------------------------------------------

  # ● visible=

  #--------------------------------------------------------------------------

  def visible=(visible)

    super

    if !@cursor.nil? and visible == false

      @cursor.visible = false

    end

  end

  #--------------------------------------------------------------------------

  # ● dispose

  #--------------------------------------------------------------------------

  def dispose

    @cursor.dispose

    super

  end

  #--------------------------------------------------------------------------

  # ● update_cursor_rect

  #--------------------------------------------------------------------------

  def update_cursor_rect

    row = @index / @column_max

    if row < self.top_row

      self.top_row = row

    end

    if row > self.top_row + (self.page_row_max - 1)

      self.top_row = row - (self.page_row_max - 1)

    end

    cursor_width = self.width / @column_max - 32

    x = @index % @column_max * (cursor_width + 32)

    y = @index / @column_max * 32 - self.oy

    if $scene.is_a?(Scene_Menu)

      self.cursor_rect.set(x, y, 0, 0)

    else

      self.cursor_rect.set(x, y, cursor_width, 32)

    end

  end

  #--------------------------------------------------------------------------

  # ● update_cursor

  #--------------------------------------------------------------------------

  def update_cursor

    @cursor.true_x = self.cursor_rect.x + self.x - 8

    @cursor.true_y = self.cursor_rect.y + self.y + 16

    @cursor.update

    @cursor.visible = self.visible

  end

  #--------------------------------------------------------------------------

  # ● update

  #--------------------------------------------------------------------------

  def update

    update_cursor_moves

    update_cursor

  end

end

 

Main Script
Code:
#==============================================================================

# ** Chrono Trigger CMS

#------------------------------------------------------------------------------

# Raziel

# 2006-09-09

# Version 1.20

#------------------------------------------------------------------------------

# Thanks to 

# ~ Squall/Selwyn for his Cursor Script

# ~ RPG Advocate for his Party Members change script

# ~ MeisMe for fixing some bugs and helping me

# ~ Squaresoft for the pictures

#==============================================================================

# ~Instructions

#  Icons of the characters are used in the save menu.

#  Make sure you put them in the icon folder and name them

#  like you name your character file, for example the icon for

#  Arshes would be 001-Fighter01

#  

#  For the chapter function, just use $game_system = "desired filename"

#  in a call script command and then the savefile will have the name 

#  you choose.

#==============================================================================

#==============================================================================

# ** Scene_Menu

#------------------------------------------------------------------------------

#  This class performs menu screen processing.

#==============================================================================

class Scene_Menu

  #--------------------------------------------------------------------------

  # * Object Initialization

  #     menu_index : command cursor's initial position

  #--------------------------------------------------------------------------

  def initialize(menu_index = 0)

    @menu_index = menu_index

  end

  #--------------------------------------------------------------------------

  # * Main Processing

  #--------------------------------------------------------------------------

  def main

    # Make command window

    @equip_background = Window_Base.new(315, 37, 270, 410)

    @target_background = Window_Base.new(320, 101, 267, 329)

    @accessory_window = Window_Base.new(45, 139, 270, 75)

    @help_background = Window_Base.new(45, 35, 540, 82)

    @accessory_window.z = 999

    @weapon_window = Window_Base.new(45, 214, 270, 233)

    @skill_left = Window_Base.new(45, 36, 270, 340)

    @skill_right = Window_Base.new(315, 36, 274, 340)

    @save_left = Window_Base.new(39,273,241,172)

    @save_right = Window_Base.new(280,273,320,172)

    @weapon_window.z = 999

    @target_background.z = 999

    @back_ground = Sprite.new

    @back_ground.bitmap = RPG::Cache.picture(CT_Pictures::BG_Picture)

    @item_background = Window_Base.new(45, 117, 540, 330)

    @playtime_background = Window_Base.new(0, 384, 160, 96)

    @playtime_background.z = 9999

    @party_change = Window_PartyChange.new

    @command_window = Window_IconCommands.new

    @command_window.index = @menu_index

    @actor_window = Window_Actors.new

    @new_equip = Window_NewEquip.new

    $game_temp.equip_window = @new_equip

    @item_window = Window_Item.new

    @help_window = Window_Help.new

    @playtime_window = Window_PlayTime.new

    @item_window.help_window = @help_window

    @help_window.opacity, @item_window.opacity = 0, 0

    @help_window.x, @help_window.y = 48, 45

    @target_window = Window_Target.new

    @actor_skillwindow = Window_SkillActor.new

    @target_cursor = []

    @target_cursor_skill = []

    @switch_cursor = []

    @equip_item = []

    @actor_background = []

    @switch_window = []

    @save_window = []

    @switch = 0

    @actor_background[0] = Window_Base.new(45, 0 + 37, 270, 102)

    @actor_background[1] = Window_Base.new(45, 102 + 37, 270, 102)

    @actor_background[2] = Window_Base.new(45, 204 + 37, 270, 102)

    @actor_background[3] = Window_Base.new(45, 306 + 37, 270, 102)

    @target_cursor[0] = Sprite_Cursor.new(306, 196)

    @target_cursor[1] = Sprite_Cursor.new(306, 276)

    @target_cursor[2] = Sprite_Cursor.new(306, 356)

    @target_cursor_skill[0] = Sprite_Cursor.new(306, 121)

    @target_cursor_skill[1] = Sprite_Cursor.new(306, 201)

    @target_cursor_skill[2] = Sprite_Cursor.new(306, 281)

    @switch_cursor[0] = Sprite_Cursor.new(182, 15)

    @switch_cursor[1] = Sprite_Cursor.new(182, 125)

    @switch_cursor[2] = Sprite_Cursor.new(182, 235)

    @switch_cursor[3] = Sprite_Cursor.new(182, 345)

    @equip_item[0] = Window_EquipItem2.new(0)

    @equip_item[1] = Window_EquipItem2.new(1)

    @equip_item[2] = Window_EquipItem2.new(2)

    @equip_item[3] = Window_EquipItem2.new(3)

    @equip_item[4] = Window_EquipItem2.new(4)

    @switch_window[0] = Window_Base.new(190,15,270,110)

    @switch_window[1] = Window_Base.new(190,125,270,110)

    @switch_window[2] = Window_Base.new(190,235,270,110)

    @switch_window[3] = Window_Base.new(190,345,270,110)

    @save_window[0] = Window_Base.new(39,32, 560, 70)

    @save_window[1] = Window_Base.new(39,102, 560, 70)

    @save_window[2] = Window_Base.new(39,172, 560, 70)

    @equip_description = Window_EquipDescription.new

    @counter = 0

    @end_window = Window_End.new

    @end_window.x = 320 - @end_window.width / 2

    @end_window.y = 220 - @end_window.height / 2

    @savefile_windows = []

    for i in 0..2

      @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))

    end

    @file_index = $game_temp.last_file_index

    @savefile_windows[@file_index].selected = true

    @save_status = Window_SaveStatus.new

    @skill_actor_window2 = []

    @skill_window = []

    unless $game_party.actors[0] == nil

      @skill_actor_window2[0] = Window_SkillActor2.new($game_party.actors[0])

      @skill_window[0] = Window_Skill.new($game_party.actors[0])

    end

    unless $game_party.actors[1] == nil

      @skill_actor_window2[1] = Window_SkillActor2.new($game_party.actors[1])

      @skill_window[1] = Window_Skill.new($game_party.actors[1])

    end

    unless $game_party.actors[2] == nil

      @skill_actor_window2[2] = Window_SkillActor2.new($game_party.actors[2])

      @skill_window[2] = Window_Skill.new($game_party.actors[2])

    end

    unless $game_party.actors[3] == nil

      @skill_actor_window2[3] = Window_SkillActor2.new($game_party.actors[3])

      @skill_window[3] = Window_Skill.new($game_party.actors[3])

    end

    @item_window.visible = false

    @help_window.visible = false

    @item_background.visible = false

    @help_background.visible = false

    @target_window.visible = false

    @actor_skillwindow.visible = false

    @save_status.visible = false

    @end_window.visible = false

    @party_change.visible = false

    @equip_description.visible = false

    @target_background.visible = false

    @accessory_window.visible = false

    @weapon_window.visible = false

    @help_background.visible = false

    @skill_left.visible = false

    @skill_right.visible = false

    @save_left.visible = false

    @save_right.visible = false

    for i in 0..2

      @target_cursor[i].visible = false

      @target_cursor_skill[i].visible = false

      @savefile_windows[i].visible = false

      @switch_cursor[i].visible = false

      @switch_window[i].visible = false

      @switch_cursor[3].visible = false

      @switch_window[3].visible = false

      @save_window[i].visible = false

    end

    for i in 0..4

      @equip_item[i].active = false

      @equip_item[i].visible = false

    end

    for i in 0...$game_party.actors.size

      @skill_window[i].visible = false

      @skill_window[i].active = false

      @skill_window[i].width = 300

      @skill_actor_window2[i].visible = false

      @skill_actor_window2[i].active = false

    end

    @item_window.active = false

    @target_window.active = false

    @actor_skillwindow.active = false

    @end_window.active = false

    @party_change.active = false

    for i in 0..2

      @savefile_windows[i].active = false

    end

    #refresh

    equip_refresh

    # Execute transition

    Graphics.transition

    # Main loop

    loop do

      # Update game screen

      Graphics.update

      # Update input information

      Input.update

      # Frame update

      update

      # Abort loop if screen is changed

      if $scene != self

        break

      end

    end

    # Prepare for transition

    Graphics.freeze

    # Dispose of windows

    @back_ground.dispose

    @actor_window.dispose

    @command_window.dispose

    @new_equip.dispose

    @item_window.dispose

    @help_window.dispose

    @item_background.dispose

    @target_window.dispose

    @actor_skillwindow.dispose

    @save_status.dispose

    @end_window.dispose

    @party_change.dispose

    @switch_cursor[3].dispose

    @equip_description.dispose

    @playtime_window.dispose

    @playtime_background.dispose

    @equip_background.dispose

    @accessory_window.dispose

    @help_background.dispose

    @skill_left.dispose

    @skill_right.dispose

    @save_left.dispose

    @save_right.dispose

    for i in @skill_actor_window2

      i.dispose

    end

    for i in @skill_window

      i.dispose

    end

    for i in @savefile_windows

      i.dispose

    end

    for i in @target_cursor

      i.dispose

    end

    for i in @target_cursor_skill

      i.dispose

    end

    for i in @switch_cursor

      i.dispose

    end

    for i in @equip_item

      i.dispose

    end

    for i in @save_window

      i.dispose

    end

    for i in @actor_background

      i.dispose

    end

    for i in @switch_window

      i.dispose

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update

  #--------------------------------------------------------------------------

  def update

    # Update windows

    @actor_window.update

    @command_window.update

    @new_equip.update

    @item_window.update

    @help_window.update

    @target_window.update

    @actor_skillwindow.update

    @save_status.update

    @party_change.update

    @end_window.update

    @equip_description.update

    @playtime_window.update

    equip_refresh

    for i in @savefile_windows

      i.update

    end

    for i in @skill_window

      i.update

    end

    for i in @skill_actor_window2

      i.update

    end

    for i in @equip_item

      i.update

    end

    if @command_window.active

      # If command window is active: call update_command

      update_command

    elsif @actor_window.active

      # If actor window is active: call update_actor

      update_actor

    elsif @new_equip.active

      # If new equip window is active: call update_equip

      update_equip

    elsif @equip_item[@new_equip.index].active

      # If item equip window is active: call update_equipitem

      update_equipitem

    elsif @item_window.active

      # If item window is active: call update_item

      update_item

    elsif @target_window.active

      # If target window is active: call update_target

      update_target

    elsif @actor_skillwindow.active

      # If actor skill window is active: call update_actor_skill

      update_actor_skill

    elsif @skill_window[@actor_skillwindow.index].active

      # If skill window is active: call update_skill

      update_skill

    elsif @savefile_windows[@file_index].active

      # If savefile window is active: call update_savefile

      update_savefile

    elsif @party_change.active

      # If party change window is active: call update_change

      update_change

    elsif @end_window.active

      # If end window is active: call update_end

      update_end

    end

    $game_temp.save_index = @file_index

    $game_temp.skill_index = @skill_window[@actor_skillwindow.index].index

    $game_temp.equip_index = @new_equip.index

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when command window is active)

  #--------------------------------------------------------------------------

  def update_command

    case @command_window.index

    when 0

      for i in 0..3

        @actor_background[i].visible = true

      end

      @equip_background.visible = true

      @actor_window.visible = true

      @new_equip.visible = true

      @item_window.visible = false

      @item_background.visible = false

      @help_background.visible = false

      @help_background.visible = false

    when 1

      for i in 0..3

        @actor_background[i].visible = false

      end

      @equip_background.visible = false

      @actor_window.visible = false

      @new_equip.visible = false

      @actor_skillwindow.visible = false

      @item_window.visible = true

      @item_background.visible = true

      @help_background.visible = true

      @help_background.y = 35

      @help_window.y = 45

      @help_background.width = 540

      @skill_left.visible = false

      @skill_right.visible = false

    when 2

      for i in 0..3

        @switch_window[i].visible = false

      end

      @skill_left.visible = true

      @skill_right.visible = true

      @item_window.visible = false

      @item_background.visible = false

      @party_change.visible = false

      @actor_skillwindow.visible = true

      @help_background.y = 375

      @help_background.width = 545

      @help_background.visible = true

      @help_window.y = 385

    when 3

      for i in 0..2

        @savefile_windows[i].visible = false

        @save_window[i].visible = false

      end

      @help_window.visible = false

      @help_background.visible = false

      @actor_skillwindow.visible = false

      @save_status.visible = false

      @party_change.visible = true

      for i in 0..3

        @switch_window[i].visible = true

      end

      @skill_left.visible = false

      @skill_right.visible = false

      @save_left.visible = false

      @save_right.visible = false

    when 4

      for i in 0..3

        @switch_window[i].visible = false

      end

      @end_window.visible = false

      @party_change.visible = false

      @save_left.visible = true

      @save_right.visible = true

    for i in 0..2

      @savefile_windows[i].visible = true

      @save_window[i].visible = true

    end

    @save_status.visible = true

    when 5

    for i in 0..2

      @savefile_windows[i].visible = false

      @save_window[i].visible = false

    end

    @save_left.visible = false

    @save_right.visible = false

    @save_status.visible = false

    @end_window.visible = true

    end

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Play cancel SE

      $game_system.se_play($data_system.cancel_se)

      # Switch to map screen

      $scene = Scene_Map.new

      return

    end

    # If C button was pressed

    if Input.trigger?(Input::C)

      @playtime_background.visible = false

      @playtime_window.visible = false

      # Branch by command window cursor position

      case @command_window.index

      when 0  # equip/status

        $game_system.se_play($data_system.decision_se)

        @command_window.active = false

        @command_window.visible = false

        @actor_window.active = true

        @actor_window.index = 0

      when 1  # item

        # Make item window active

        $game_system.se_play($data_system.decision_se)

        @command_window.active = false

        @command_window.visible = false

        @item_window.active = true

        @item_window.index = 0

      when 2  # skills

        $game_system.se_play($data_system.decision_se)

        @command_window.visible = false

        @command_window.active = false

        @actor_skillwindow.active = true

        @actor_skillwindow.index = 0

      when 3 #excahnge

        $game_system.se_play($data_system.decision_se)

        @command_window.visible = false

        @command_window.active = false

        @party_change.active = true

        @checker = 0

      when 4 #save

        if $game_system.save_disabled

        $game_system.se_play($data_system.buzzer_se)

        return

      end

        $game_system.se_play($data_system.decision_se)

        @command_window.visible = false

        @command_window.active = false

        @file_index = 0

        for i in 0..2

          @savefile_windows[i].active = true

          @savefile_windows[i].selected = false

        end

        @savefile_windows[0].selected = true

      when 5 #quit

        $game_system.se_play($data_system.decision_se)

        @command_window.active = false

        @command_window.visible = false

        @end_window.active = true

      end

      return

    end

  end

  #--------------------------------------------------------------------------

  # * Make File Name

  #     file_index : save file index (0-2)

  #--------------------------------------------------------------------------

  def make_filename(file_index)

    return "Save#{file_index + 1}.rxdata"

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when end window is active)

  #--------------------------------------------------------------------------

  def update_end

    # If B button was pressed

    if Input.trigger?(Input::B)

      $game_system.se_play($data_system.cancel_se)

      @end_window.active = false

      @end_window.index = 0

      @command_window.visible = true

      @command_window.active = true

      @playtime_background.visible = true

      @playtime_window.visible = true

    end

    # If C button was pressed

    if Input.trigger?(Input::C)

      $game_system.se_play($data_system.decision_se)

      case @end_window.index

      when 0

        $scene = Scene_Title.new

      when 1

        $scene = nil

      when 2

        @end_window.active = false

        @command_window.visible = true

        @command_window.active = true

      end

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when change window is active)

  #--------------------------------------------------------------------------

  def update_change

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Play cancel SE

      $game_system.se_play($data_system.cancel_se)

      @party_change.active = false

      @party_change.index = 0

      @command_window.visible = true

      @command_window.active = true

      @playtime_background.visible = true

      @playtime_window.visible = true

      @checker = 0

      for i in 0..3

        @switch_cursor[i].visible = false

      end

    end

    # If C button was pressed

    if Input.trigger?(Input::C)

      # Play decision SE

      $game_system.se_play($data_system.decision_se)

      if @checker == 0

        @changer = $game_party.actors[@party_change.index]

        @changer_skill = @skill_window[@party_change.index]

        @changer_skill2 = @skill_actor_window2[@party_change.index]

        @where = @party_change.index

        @switch_cursor[@party_change.index].visible = true

        @checker = 1

        else

        $game_party.actors[@where] = $game_party.actors[@party_change.index]

        $game_party.actors[@party_change.index] = @changer

        @skill_actor_window2[@where] = @skill_actor_window2[@party_change.index]

        @skill_actor_window2[@party_change.index] = @changer_skill2

        @skill_window[@where] = @skill_window[@party_change.index]

        @skill_window[@party_change.index] = @changer_skill

        @checker = 0

        @party_change.refresh

        @actor_window.refresh

        @new_equip.refresh

        @target_window.refresh

        @actor_skillwindow.refresh

        @save_status.refresh

        for i in 0..3

          @switch_cursor[i].visible = false

        end

      end

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when save window is active)

  #--------------------------------------------------------------------------

  def update_savefile

    # If C button was pressed

    if Input.trigger?(Input::C)

      # Call method: on_decision (defined by the subclasses)

      on_decision(make_filename(@file_index))

      $game_temp.last_file_index = @file_index

      return

    end

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Call method: on_cancel (defined by the subclasses)

      on_cancel

      return

    end

    # If the down directional button was pressed

    if Input.repeat?(Input::DOWN)

      # If the down directional button pressed down is not a repeat,

      # or cursor position is more in front than 3

      unless @file_index == 2

      if Input.trigger?(Input::DOWN)

        # Play cursor SE

        $game_system.se_play($data_system.cursor_se)

        # Move cursor down

        @savefile_windows[@file_index].selected = false

        @file_index = (@file_index + 1)# % 3

        @savefile_windows[@file_index].selected = true

        return

      end

      end

    # If the up directional button was pressed

    elsif Input.repeat?(Input::UP)

      # If the up directional button pressed down is not a repeat、

      # or cursor position is more in back than 0

      unless @file_index == 0

        if Input.trigger?(Input::UP)

          # Play cursor SE

          $game_system.se_play($data_system.cursor_se)

          # Move cursor up

          @savefile_windows[@file_index].selected = false

          @file_index = (@file_index - 1)# % 3

          @savefile_windows[@file_index].selected = true

          return

        end

      end

    end

  end

  #--------------------------------------------------------------------------

  # * Decision Processing

  #--------------------------------------------------------------------------

  def on_decision(filename)

    # Play save SE

    $game_system.se_play($data_system.save_se)

    # Write save data

    file = File.open(filename, "wb")

    write_save_data(file)

    file.close

    # If called from event

    if $game_temp.save_calling

      # Clear save call flag

      $game_temp.save_calling = false

      # Switch to map screen

      $scene = Scene_Map.new

      return

    end

    for i in 0..2

      @savefile_windows[i].active = false

      @savefile_windows[i].selected = false

    end

    @savefile_windows[0].selected = true

    @playtime_background.visible = true

    @playtime_window.visible = true

    # Switch to map screen

    $scene = Scene_Map.new

  end

  #--------------------------------------------------------------------------

  # * Cancel Processing

  #--------------------------------------------------------------------------

  def on_cancel

    # Play cancel SE

    $game_system.se_play($data_system.cancel_se)

    # If called from event

    if $game_temp.save_calling

      # Clear save call flag

      $game_temp.save_calling = false

      # Switch to map screen

      $scene = Scene_Map.new

      return

    end

    # Switch to menu screen

    for i in 0..2

      @savefile_windows[i].active = false

      @savefile_windows[i].selected = false

    end

    @savefile_windows[0].selected = true

    @save_status.refresh

    @command_window.visible = true

    @command_window.active = true

    @command_window.index = 4

    @playtime_background.visible = true

    @playtime_window.visible = true

  end

  #--------------------------------------------------------------------------

  # * Write Save Data

  #     file : write file object (opened)

  #--------------------------------------------------------------------------

  def write_save_data(file)

    # Make character data for drawing save file

    characters = []

    for i in 0...$game_party.actors.size

      actor = $game_party.actors[i]

      characters.push([actor.character_name, actor.character_hue])

    end

    # Write character data for drawing save file

    Marshal.dump(characters, file)

    # Wrire frame count for measuring play time

    Marshal.dump(Graphics.frame_count, file)

    # Increase save count by 1

    $game_system.save_count += 1

    # Save magic number

    # (A random value will be written each time saving with editor)

    $game_system.magic_number = $data_system.magic_number

    # Write each type of game object

    Marshal.dump($game_system, file)

    Marshal.dump($game_switches, file)

    Marshal.dump($game_variables, file)

    Marshal.dump($game_self_switches, file)

    Marshal.dump($game_screen, file)

    Marshal.dump($game_actors, file)

    Marshal.dump($game_party, file)

    Marshal.dump($game_troop, file)

    Marshal.dump($game_map, file)

    Marshal.dump($game_player, file)

    Marshal.dump($ams, file)

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when equip window is active)

  #--------------------------------------------------------------------------

  def update_equip

    for i in 0..4

      @equip_item[i].visible = false

    end

    @equip_item[@new_equip.index].visible = true

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Play cancel SE

      $game_system.se_play($data_system.cancel_se)

      @new_equip.index = 0

      @new_equip.active = false

      @actor_window.active = true

      @actor_window.visible = true

      @equip_description.visible = false

      @accessory_window.visible = false

      @weapon_window.visible = false

      for i in 0..4

        @equip_item[i].visible = false

      end

      @item_window.refresh

      @target_window.refresh

      @party_change.refresh

    end

    # If C button was pressed

    if Input.trigger?(Input::C)

      @actor = $game_party.actors[$game_temp.cms_index]

      if @actor.equip_fix?(@new_equip.index)

        # Play buzzer SE

        $game_system.se_play($data_system.buzzer_se)

        return

      end

      # Play decission SE

      $game_system.se_play($data_system.decision_se)

      @new_equip.active = false

      @equip_item[@new_equip.index].active = true

      @equip_item[@new_equip.index].index = 0

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when equip window is refreshed)

  #--------------------------------------------------------------------------

   def equip_refresh

    if @new_equip.active

      # Erase parameters for after equipment change

      @new_equip.set_new_parameters(nil, nil, nil, nil, nil, nil, nil)

    end

    if @equip_item[@new_equip.index].active

      @actor = $game_party.actors[$game_temp.cms_index]

      # Get currently selected item

      item1 = $game_temp.equip_window.item

      item2 = @equip_item[@new_equip.index].item

      # Change equipment

      @actor.equip($game_temp.equip_index, item2 == nil ? 0 : item2.id)

      # Get parameters for after equipment change

      new_str = @actor.str

      new_atk = @actor.atk

      new_int = @actor.int

      new_agi = @actor.agi

      new_pdef = @actor.pdef

      new_mdef = @actor.mdef

      new_dex = @actor.dex

      # Return equipment

      @actor.equip($game_temp.equip_index, item1 == nil ? 0 : item1.id)

      # Draw in left window

      $game_temp.equip_window.set_new_parameters(new_str, new_atk, new_int, new_agi, new_pdef, new_mdef, new_dex)

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when equip item window is active)

  #--------------------------------------------------------------------------

  def update_equipitem

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Play cancel SE

      $game_system.se_play($data_system.cancel_se)

      # Activate right window

      @equip_item[@new_equip.index].active = false

      @equip_item[@new_equip.index].index = 0

      @new_equip.active = true

      return

    end

    # If C button was pressed

    if Input.trigger?(Input::C)

      # Play equip SE

      $game_system.se_play($data_system.equip_se)

      # Get currently selected data on the item window

      item = @equip_item[@new_equip.index].item

      # Change equipment

      @actor.equip(@new_equip.index, item == nil ? 0 : item.id)

      # Activate right window

      @new_equip.active = true

      @equip_item[@new_equip.index].active = false

      @equip_item[@new_equip.index].index = 0

      # Remake right window and item window contents

      @new_equip.refresh

      @equip_item[@new_equip.index].refresh

      @equip_description.refresh

      @actor_window.refresh

      return

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when actor window is active)

  #--------------------------------------------------------------------------

  def update_actor

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Play cancel SE

      $game_system.se_play($data_system.cancel_se)

      @actor_window.active = false

      @actor_window.index = 0

      @command_window.visible = true

      @command_window.active = true

      @playtime_background.visible = true

      @playtime_window.visible = true

    end

    # If C button was pressed

    if Input.trigger?(Input::C)

      # Play decisiion SE

      $game_system.se_play($data_system.decision_se)

      @actor_window.active = false

      @actor_window.visible = false

      @accessory_window.visible = true

      @weapon_window.visible = true

      @equip_item[0].visible = true

      @new_equip.active = true

      @equip_description.visible = true

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when actor skill window is active)

  #--------------------------------------------------------------------------

  def update_actor_skill

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Play cancel SE

      $game_system.se_play($data_system.cancel_se)

      @actor_skillwindow.active = false

      @actor_skillwindow.index = 0

      @command_window.visible = true

      @command_window.active = true

      @command_window.index = 2

      @playtime_background.visible = true

      @playtime_window.visible = true

    end

    # If C button was pressed

    if Input.trigger?(Input::C)

      # Play decision SE

      $game_system.se_play($data_system.decision_se)

      @actor_skillwindow.active = false

      @skill_window[@actor_skillwindow.index].help_window = @help_window

      @skill_window[@actor_skillwindow.index].visible = true

      @skill_window[@actor_skillwindow.index].active = true

      @skill_window[@actor_skillwindow.index].index = 0

      @actor_skillwindow.visible = false

      @skill_actor_window2[@actor_skillwindow.index].visible = true

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when item window is active)

  #--------------------------------------------------------------------------

  def update_item

    # If B button was pressed

    if @target_window.visible == false

      for i in 0...$game_party.actors.size - 1

        @target_cursor[i].visible = false

      end

    end

    if Input.trigger?(Input::B)

      # Play cancel SE

      $game_system.se_play($data_system.cancel_se)

      # Switch to menu screen

      @item_window.visible = false

      @item_window.active = false

      @command_window.visible = true

      @command_window.active = true

      @help_window.visible = false

      @playtime_background.visible = true

      @playtime_window.visible = true

      @item_window.index = 0

      @command_window.index = 1

      return

    # If C button was pressed

    elsif Input.trigger?(Input::C)

      # Get currently selected data on the item window

      @item = @item_window.item

      # If not a use item

      unless @item.is_a?(RPG::Item)

        # Play buzzer SE

        $game_system.se_play($data_system.buzzer_se)

        return

      end

      # If it can't be used

      unless $game_party.item_can_use?(@item.id)

        # Play buzzer SE

        $game_system.se_play($data_system.buzzer_se)

        return

      end

      # Play decision SE

      $game_system.se_play($data_system.decision_se)

      # If effect scope is an ally

      if @item.scope >= 3

        # Activate target window

        @item_window.active = false

        @target_window.visible = true

        @target_background.visible = true

        @target_window.active = true

        @target_window.y = 0

        @target_background.y = 118

        # Set cursor position to effect scope (single / all)

        if @item.scope == 4 || @item.scope == 6

          @target_window.index = -1

        else

          @target_window.index = 0

        end

      # If effect scope is other than an ally

      else

        # If command event ID is valid

        if @item.common_event_id > 0

          # Command event call reservation

          $game_temp.common_event_id = @item.common_event_id

          # Play item use SE

          $game_system.se_play(@item.menu_se)

          # If consumable

          if @item.consumable

            # Decrease used items by 1

            $game_party.lose_item(@item.id, 1)

            # Draw item window item

            @item_window.draw_item(@item_window.index)

          end

          # Switch to map screen

          $scene = Scene_Map.new

          return

        end

      end

      return

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when skill window is active)

  #--------------------------------------------------------------------------

  def update_skill

    if @target_window.visible == false

      for i in 0...$game_party.actors.size - 1

        @target_cursor_skill[i].visible = false

      end

    end

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Play cancel SE

      $game_system.se_play($data_system.cancel_se)

      @skill_window[@actor_skillwindow.index].visible = false

      @skill_window[@actor_skillwindow.index].active = false

      @skill_window[@actor_skillwindow.index].index = 0

      @help_window.visible = false

      @skill_actor_window2[@actor_skillwindow.index].visible = false

      @actor_skillwindow.visible = true

      @actor_skillwindow.active = true

      # If C button was pressed

    elsif Input.trigger?(Input::C)

      @actor = $game_party.actors[@actor_skillwindow.index]

      # Get currently selected data on the skill window

      @skill = @skill_window[@actor_skillwindow.index].skill

      # If unable to use

      if @skill == nil or not @actor.skill_can_use?(@skill.id)

        # Play buzzer SE

        $game_system.se_play($data_system.buzzer_se)

        return

      end

      # Play decision SE

      $game_system.se_play($data_system.decision_se)

      # If effect scope is ally

      if @skill.scope >= 3

        # Activate target window

        @skill_window[@actor_skillwindow.index].active = false

        @skill_window[@actor_skillwindow.index].visible = false

        @target_window.visible = true

        @target_window.active = true

        @target_window.y = -75

        # Set cursor position to effect scope (single / all)

        if @skill.scope == 4 || @skill.scope == 6

          @target_window.index = -1

        elsif @skill.scope == 7

          @target_window.index = @actor_index - 10

        else

          @target_window.index = 0

        end

      # If effect scope is other than ally

      else

        # If common event ID is valid

        if @skill.common_event_id > 0

          # Common event call reservation

          $game_temp.common_event_id = @skill.common_event_id

          # Play use skill SE

          $game_system.se_play(@skill.menu_se)

          # Use up SP

          @actor.sp -= @skill.sp_cost

          # Remake each window content

          @status_window.refresh

          @skill_window[@actor_skillwindow.index].refresh

          @target_window.refresh

          # Switch to map screen

          $scene = Scene_Map.new

          return

        end

      end

      return

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update (when target window is active)

  #--------------------------------------------------------------------------

  def update_target

    if @item_window.visible

      if @target_window.index < 0

        for i in 0...$game_party.actors.size - 1

          @target_cursor[i].visible = true

        end

      end

      # If B button was pressed

      if Input.trigger?(Input::B)

        # Play cancel SE

        $game_system.se_play($data_system.cancel_se)

        # If unable to use because items ran out

        unless $game_party.item_can_use?(@item.id)

          # Remake item window contents

          @item_window.refresh

        end

        # Erase target window

        @item_window.active = true

        @target_window.visible = false

        @target_background.visible = false

        @target_window.active = false

        return

      end

      # If C button was pressed

      if Input.trigger?(Input::C)

        # If items are used up

        if $game_party.item_number(@item.id) == 0

          # Play buzzer SE

          $game_system.se_play($data_system.buzzer_se)

          return

        end

        # If target is all

        if @target_window.index == -1

          # Apply item effects to entire party

          used = false

          for i in $game_party.actors

            used |= i.item_effect(@item)

          end

        end

        # If single target

        if @target_window.index >= 0

          # Apply item use effects to target actor

          target = $game_party.actors[@target_window.index]

          used = target.item_effect(@item)

        end

        # If an item was used

        if used

          # Play item use SE

          $game_system.se_play(@item.menu_se)

          # If consumable

          if @item.consumable

            # Decrease used items by 1

            $game_party.lose_item(@item.id, 1)

            # Redraw item window item

            @item_window.draw_item(@item_window.index)

          end

          # Remake target window contents

          @target_window.refresh

          @actor_skillwindow.refresh

          @skill_actor_window2[@actor_skillwindow.index].refresh

          # If all party members are dead

          if $game_party.all_dead?

            # Switch to game over screen

            $scene = Scene_Gameover.new

            return

          end

          # If common event ID is valid

          if @item.common_event_id > 0

            # Common event call reservation

            $game_temp.common_event_id = @item.common_event_id

            # Switch to map screen

            $scene = Scene_Map.new

            return

          end

        end

        # If item wasn't used

        unless used

          # Play buzzer SE

          $game_system.se_play($data_system.buzzer_se)

        end

        return

      end

    else

      if @target_window.index < 0

        for i in 0...$game_party.actors.size - 1

          @target_cursor_skill[i].visible = true

        end

      end

      # If B button was pressed

      if Input.trigger?(Input::B)

        # Play cancel SE

        $game_system.se_play($data_system.cancel_se)

        # Erase target window

        @skill_window[@actor_skillwindow.index].active = true

        @skill_window[@actor_skillwindow.index].visible = true

        @target_window.visible = false

        @target_background.visible = false

        @target_window.active = false

        return

      end

      # If C button was pressed

      if Input.trigger?(Input::C)

        # If unable to use because SP ran out

        unless @actor.skill_can_use?(@skill.id)

          # Play buzzer SE

          $game_system.se_play($data_system.buzzer_se)

          return

        end

        # If target is all

        if @target_window.index == -1

          # Apply skill use effects to entire party

          used = false

          for i in $game_party.actors

            used |= i.skill_effect(@actor, @skill)

          end

        end

        # If target is user

        if @target_window.index <= -2

          # Apply skill use effects to target actor

          target = $game_party.actors[@target_window.index + 10]

          used = target.skill_effect(@actor, @skill)

        end

        # If single target

        if @target_window.index >= 0

          # Apply skill use effects to target actor

          target = $game_party.actors[@target_window.index]

          used = target.skill_effect(@actor, @skill)

        end

        # If skill was used

        if used

          # Play skill use SE

          $game_system.se_play(@skill.menu_se)

          # Use up SP

          @actor.sp -= @skill.sp_cost

          # Remake each window content

          @actor_skillwindow.refresh

          @skill_window[@actor_skillwindow.index].refresh

          @skill_actor_window2[@actor_skillwindow.index].refresh

          @target_window.refresh

          # If entire party is dead

          if $game_party.all_dead?

            # Switch to game over screen

            $scene = Scene_Gameover.new

            return

         end

          # If command event ID is valid

          if @skill.common_event_id > 0

            # Command event call reservation

            $game_temp.common_event_id = @skill.common_event_id

            # Switch to map screen

            $scene = Scene_Map.new

            return

          end

        end

        # If skill wasn't used

        unless used

          # Play buzzer SE

          $game_system.se_play($data_system.buzzer_se)

        end

        return

      end

    end

  end  

end

#==============================================================================

# ** Window_IcoonCommands

#------------------------------------------------------------------------------

#  This class performs command processing.

#==============================================================================

class Window_IconCommands < Window_Selectable

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(210, 190, 220, 64)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.index = 0

    self.z = 200

    @column_max = 6

    @item_max = 6

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.blt(4,5,RPG::Cache.icon(CT_Pictures::Icon_1), Rect.new(0,0,24,24))

    self.contents.blt(36,5,RPG::Cache.icon(CT_Pictures::Icon_2), Rect.new(0,0,24,24))

    self.contents.blt(68,5,RPG::Cache.icon(CT_Pictures::Icon_3), Rect.new(0,0,24,24))

    self.contents.blt(100,5,RPG::Cache.icon(CT_Pictures::Icon_4), Rect.new(0,0,24,24))

    self.contents.blt(132,5,RPG::Cache.icon(CT_Pictures::Icon_5), Rect.new(0,0,24,24))

    self.contents.blt(164,5,RPG::Cache.icon(CT_Pictures::Icon_6), Rect.new(0,0,24,24))

  end

  #--------------------------------------------------------------------------

  # * Cursor Rectangle Update

  #--------------------------------------------------------------------------

  def update_cursor_rect

    self.cursor_rect.set(@index * 32, 1, 32, 32)

  end

end

#==============================================================================

# ** Window_Actors

#------------------------------------------------------------------------------

#  This class is for choosing an actor to be equipped

#==============================================================================

class Window_Actors < Window_Selectable

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(30, 21, 350, 450)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.index = 0

    self.z += 50

    self.active = false

    self.opacity = 0

    @item_max = $game_party.actors.size

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.font.size = 18

    self.contents.font.bold = true

    $game_temp.cms_index = @old_index = @index

    for i in 0...$game_party.actors.size

      actor = $game_party.actors[i]

      y  = i * 102

      pow = actor.str + actor.atk

      self.contents.draw_text(14, y, 100, 32, actor.name)

      self.contents.draw_text(154, y, 100, 32, "LV #{actor.level}")

      self.contents.draw_text(60, y + 65, 100, 32, "#{pow}")

      self.contents.draw_text(210, y + 65, 100, 32, "#{actor.pdef}")

      draw_actor_hp(actor, 14, y + 20)

      draw_actor_sp(actor, 14, y + 40)

      self.contents.blt(14, y + 70, RPG::Cache.icon($data_weapons[actor.weapon_id] == nil ? CT_Pictures::Weapon_alternative : $data_weapons[actor.weapon_id].icon_name), Rect.new(0,0,24,24))

      self.contents.blt(174, y + 70, RPG::Cache.icon($data_armors[actor.armor1_id] == nil ? CT_Pictures::Shield_alternative : $data_armors[actor.armor1_id].icon_name), Rect.new(0,0,24,24))

    end

  end

  #--------------------------------------------------------------------------

  # * Cursor Rectangle Update

  #--------------------------------------------------------------------------

  def update_cursor_rect

    self.cursor_rect.set(0, @index * 102, 0, 0)

  end

  #--------------------------------------------------------------------------

  # * Update

  #--------------------------------------------------------------------------

  def update

    super

    if @old_index != @index

      refresh

      @old_index = @index

    end

  end    

end

#==============================================================================

# ** Window_NewEquip

#------------------------------------------------------------------------------

#  This window displays items the actor is currently equipped with on the

#  equipment screen, stats etc.

#==============================================================================

class Window_NewEquip < Window_Selectable

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(300, 20, 350, 450)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.index = 0

    self.active = false

    self.opacity = 0

    @item_max = 5

    @old_index = $game_temp.cms_index

    refresh

  end

  #--------------------------------------------------------------------------

  # * Item Acquisition

  #--------------------------------------------------------------------------

  def item

    return @data[self.index]

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.font.size = 18

    self.contents.font.bold = true

    @actor = $game_party.actors[$game_temp.cms_index]

    self.contents.draw_text(164, 10, 100, 32, @actor.name)

    draw_actor_state(@actor, 164, 42)

    self.contents.draw_text(164, 74, 100, 32, "LV #{@actor.level}")

    self.contents.blt(20,20,RPG::Cache.picture("Faces/" + @actor.character_name), Rect.new(0,0,100,100))

    @data = []

    @data.push($data_weapons[@actor.weapon_id])

    @data.push($data_armors[@actor.armor1_id])

    @data.push($data_armors[@actor.armor2_id])

    @data.push($data_armors[@actor.armor3_id])

    @data.push($data_armors[@actor.armor4_id])

    @item_max = @data.size

    self.contents.font.color = system_color

    y = 115

    self.contents.draw_text(14, 25 * 0 + y, 92, 32, $data_system.words.weapon)

    self.contents.draw_text(14, 25 * 1 + y, 92, 32, $data_system.words.armor1)

    self.contents.draw_text(14, 25 * 2 + y, 92, 32, $data_system.words.armor2)

    self.contents.draw_text(14, 25 * 3 + y, 92, 32, $data_system.words.armor3)

    self.contents.draw_text(15, 25 * 4 + y, 92, 32, $data_system.words.armor4)

    draw_item_name(@data[0], 110, 25 * 0 + y)

    draw_item_name(@data[1], 110, 25 * 1 + y)

    draw_item_name(@data[2], 110, 25 * 2 + y)

    draw_item_name(@data[3], 110, 25 * 3 + y)

    draw_item_name(@data[4], 110, 25 * 4 + y)

    self.contents.font.color = normal_color

    self.contents.draw_text(14, 250, 500, 32, $data_system.words.str)

    self.contents.draw_text(14, 270, 500, 32, $data_system.words.atk)

    self.contents.draw_text(14, 290, 500, 32, $data_system.words.int)

    self.contents.draw_text(14, 310, 500, 32, $data_system.words.dex)

    self.contents.draw_text(144, 250, 500, 32, $data_system.words.agi)

    self.contents.draw_text(144, 270, 500, 32, $data_system.words.pdef)

    self.contents.draw_text(144, 290, 500, 32, $data_system.words.mdef)

    up_color = Color.new(60, 255, 255)

    str = @actor.str.to_s

    if @new_str != nil

      str = @new_str.to_s

      @actor.str == @new_str ? self.contents.font.color = normal_color : @actor.str < @new_str ? 

      self.contents.font.color = up_color : self.contents.font.color = disabled_color

    end

    self.contents.draw_text(25, 250, 100, 32, str, 2)

    atk = @actor.atk.to_s

    if @new_atk != nil

      atk = @new_atk.to_s

      @actor.atk == @new_atk ? self.contents.font.color = normal_color : @actor.atk < @new_atk ? 

      self.contents.font.color = up_color : self.contents.font.color = disabled_color

    end

    self.contents.draw_text(25, 270, 100, 32, atk, 2)

    int = @actor.int.to_s

    if @new_int != nil

      int = @new_int.to_s

      @actor.int == @new_int ? self.contents.font.color = normal_color : @actor.int < @new_int ? 

      self.contents.font.color = up_color : self.contents.font.color = disabled_color

    end

    self.contents.draw_text(25, 290, 100, 32, int, 2)

    agi = @actor.agi.to_s

    if @new_agi != nil

      agi = @new_agi.to_s

      @actor.agi == @new_agi ? self.contents.font.color = normal_color : @actor.agi < @new_agi ? 

      self.contents.font.color = up_color : self.contents.font.color = disabled_color

    end

    self.contents.draw_text(160, 250, 100, 32, agi, 2)

    pdef = @actor.pdef.to_s

    if @new_pdef != nil

      pdef = @new_pdef.to_s

      @actor.pdef == @new_pdef ? self.contents.font.color = normal_color : @actor.pdef < @new_pdef ? 

      self.contents.font.color = up_color : self.contents.font.color = disabled_color

    end

    self.contents.draw_text(160, 270, 100, 32, pdef, 2)

    mdef = @actor.mdef.to_s

    if @new_mdef != nil

      mdef = @new_mdef.to_s

      @actor.mdef == @new_mdef ? self.contents.font.color = normal_color : @actor.mdef < @new_mdef ? 

      self.contents.font.color = up_color : self.contents.font.color = disabled_color

    end

    self.contents.draw_text(160, 290, 100, 32, mdef, 2)

    dex = @actor.dex.to_s

    if @new_mdef != nil

      dex = @new_dex.to_s

      @actor.dex == @new_dex ? self.contents.font.color = normal_color : @actor.dex < @new_dex ? 

      self.contents.font.color = up_color : self.contents.font.color = disabled_color

    end

    self.contents.draw_text(160, 310, 100, 32, dex, 2)

    self.contents.font.color = normal_color

    self.contents.draw_text(14, 353, 500, 32, "EXP")

    self.contents.draw_text(14, 370, 500, 32, "NEXT")

    self.contents.draw_text(14, 353, 240, 32, "#{@actor.exp}",2)

    self.contents.draw_text(14, 370, 240, 32, "#{@actor.next_exp}",2)

  end

  #--------------------------------------------------------------------------

  # * Set parameters after changing equipment

  #--------------------------------------------------------------------------

  def set_new_parameters(new_str, new_atk, new_int, new_agi, new_pdef, new_mdef, new_dex)

    if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef or

      @new_str != new_str or @new_int != new_int or @new_agi != new_agi or @new_dex != new_dex

      @new_str = new_str

      @new_atk = new_atk

      @new_int = new_int

      @new_agi = new_agi

      @new_pdef = new_pdef

      @new_mdef = new_mdef

      @new_dex = new_dex

      refresh

    end

  end

  #--------------------------------------------------------------------------

  # * Cursor Rectangle Update

  #--------------------------------------------------------------------------

  def update_cursor_rect

    self.cursor_rect.set(14, @index * 25 + 115, 0, 0)

  end

  #--------------------------------------------------------------------------

  # * Update

  #--------------------------------------------------------------------------

  def update

    super

    if @old_index != $game_temp.cms_index

      refresh

      @old_index = $game_temp.cms_index

    end

  end

end

#==============================================================================

# ** Window_Item

#------------------------------------------------------------------------------

#  This window displays items in possession on the item and battle screens.

#==============================================================================

class Window_Item < Window_Selectable

  #--------------------------------------------------------------------------

  # * Draw Item

  #     index : item number

  #--------------------------------------------------------------------------

  def initialize

    super(48, 125, 500, 320)

    self.index = 0

    self.z = 150

    # If in battle, move window to center of screen

    # and make it semi-transparent

    if $game_temp.in_battle

      @column_max = 2

      self.y = 64

      self.x = 0

      self.y = 64

      self.width = 640

      self.height = 256

      self.back_opacity = 160

    end

    refresh

  end

  #--------------------------------------------------------------------------

  # * Draw Item

  #     index : item number

  #--------------------------------------------------------------------------

  def draw_item(index)

    item = @data[index]

    case item

    when RPG::Item

      number = $game_party.item_number(item.id)

    when RPG::Weapon

      number = $game_party.weapon_number(item.id)

    when RPG::Armor

      number = $game_party.armor_number(item.id)

    end

    if item.is_a?(RPG::Item) and $game_party.item_can_use?(item.id)

      self.contents.font.color = normal_color

    else

      self.contents.font.color = disabled_color

    end

    if $game_temp.in_battle

      x = 4 + index % 2 * (288 + 32)

      y = index / 2 * 32

    else

      self.contents.font.size = 18

      self.contents.font.bold = true

      x = 4

      y = index * 32

    end

    rect = Rect.new(x, y, self.width / @column_max - 32, 32)

    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))

    bitmap = RPG::Cache.icon(item.icon_name)

    opacity = self.contents.font.color == normal_color ? 255 : 128

    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)

    if $game_temp.in_battle

      self.contents.draw_text(x + 240, y, 16, 32, ":", 1)

      self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)

    else

      self.contents.draw_text(x + 300, y, 16, 32, ":", 1)

      self.contents.draw_text(x + 316, y, 24, 32, number.to_s, 2)

    end

  end

end

#==============================================================================

# ** Window_Help

#------------------------------------------------------------------------------

#  This window shows skill and item explanations along with actor status.

#==============================================================================

class Window_Help < Window_Base

  #--------------------------------------------------------------------------

  # * Set Text

  #  text  : text string displayed in window

  #  align : alignment (0..flush left, 1..center, 2..flush right)

  #--------------------------------------------------------------------------

  def set_text(text, align = 0)

    # If at least one part of text and alignment differ from last time

    if text != @text or align != @align

      # Redraw text

      self.contents.clear

      unless $game_temp.in_battle

        self.contents.font.size = 18

        self.contents.font.bold = true

      end

      self.contents.font.color = normal_color

      self.contents.draw_text(4, 0, self.width - 40, 32, text, align)

      @text = text

      @align = align

      @actor = nil

    end

    self.visible = true

  end

end

#==============================================================================

# ** Window_Target

#------------------------------------------------------------------------------

#  This window selects a use target for the actor on item and skill screens.

#==============================================================================

class Window_Target < Window_Selectable

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(305, 0, 336, 480)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.z += 999

    self.opacity = 0

    @item_max = $game_party.actors.size

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.font.size = 18

    self.contents.font.bold = true

    for i in 0...$game_party.actors.size

      x = 4

      y = i * 79 + 100

      actor = $game_party.actors[i]

      pow = actor.str + actor.atk

      draw_actor_graphic(actor, 235, y + 85)

      self.contents.font.size = 17

      self.contents.draw_text(14, y, 100, 32, actor.name)

      self.contents.draw_text(154, y, 100, 32, "LV #{actor.level}")

      self.contents.draw_text(50, y + 55, 100, 32, "#{pow}")

      self.contents.draw_text(190, y + 55, 100, 32, "#{actor.pdef}")

      draw_actor_hp(actor, 14, y + 15)

      draw_actor_sp(actor, 14, y + 30)

      self.contents.blt(14, y + 60, RPG::Cache.icon($data_weapons[actor.weapon_id] == nil ? CT_Pictures::Weapon_alternative : $data_weapons[actor.weapon_id].icon_name), Rect.new(0,0,24,24))

      self.contents.blt(154, y + 60, RPG::Cache.icon($data_armors[actor.armor1_id] == nil ? CT_Pictures::Shield_alternative : $data_armors[actor.armor1_id].icon_name), Rect.new(0,0,24,24))

    end

  end

  #--------------------------------------------------------------------------

  # * Cursor Rectangle Update

  #--------------------------------------------------------------------------

  def update_cursor_rect

    # Cursor position -1 = all choices, -2 or lower = independent choice

    # (meaning the user's own choice)

    if @index >= 0

      self.cursor_rect.set(10, @index * 82 + 100, 0, 0)

    else

      self.cursor_rect.set(10, 100, 0, 0)

    end

  end

end

#==============================================================================

# ** Window_Skill

#------------------------------------------------------------------------------

#  This window displays usable skills on the skill and battle screens.

#==============================================================================

class Window_Skill < Window_Selectable

  #--------------------------------------------------------------------------

  # * Object Initialization

  #     actor : actor

  #--------------------------------------------------------------------------

  def initialize(actor)

    super(310, 32, 300, 352)

    self.contents = Bitmap.new (width - 32, height - 32)

    self.index = 0

    self.opacity = 0

    @actor = actor

    # If in battle, move window to center of screen

    # and make it semi-transparent

    if $game_temp.in_battle

      @column_max = 2

      self.opacity = 255

      self.x = 0

      self.y = 64

      self.height = 256

      self.width = 640

      self.back_opacity = 160

    end

    refresh

  end

  #--------------------------------------------------------------------------

  # * Draw Item

  #     index : item number

  #--------------------------------------------------------------------------

  def draw_item(index)

    skill = @data[index]

    if @actor.skill_can_use?(skill.id)

      self.contents.font.color = normal_color

    else

      self.contents.font.color = disabled_color

    end

    if $game_temp.in_battle

      x = 4 + index % 2 * (288 + 32)

      y = index / 2 * 32

    else

      self.contents.font.size = 18

      self.contents.font.bold = true

      x = 4

      y = index * 32

    end

    rect = Rect.new(x, y, self.width / @column_max - 32, 32)

    self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))

    bitmap = RPG::Cache.icon(skill.icon_name)

    opacity = self.contents.font.color == normal_color ? 255 : 128

    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)

    self.contents.draw_text(x + 28, y, 150, 32, skill.name, 0)

    if $game_temp.in_battle

      self.contents.draw_text(x + 200, y, 48, 32, skill.sp_cost.to_s, 2)

    end

  end

end

#==============================================================================

# ** Window_SkillActor

#------------------------------------------------------------------------------

#  This window displays selectable characters for the skill window

#==============================================================================

class Window_SkillActor < Window_Selectable

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(32,20,320,350)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.opacity = 0

    self.index = 0

    @column_max = 1

    @item_max = $game_party.actors.size

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.font.size = 18

    self.contents.font.bold = true

    for i in 0...$game_party.actors.size

      actor = $game_party.actors[i]

      x = 60

      y = i * 80

      draw_actor_graphic(actor, 30, y + 65)

      self.contents.draw_text(x, y, 150, 32, "#{actor.name}")

      self.contents.draw_text(x + 80, y, 150, 32, "LV #{actor.level}")

      draw_actor_hp(actor, x, y + 15)

      draw_actor_sp(actor, x, y + 30)

      draw_actor_state(actor, x, y + 45)

    end

  end

  #--------------------------------------------------------------------------

  # * Cursor Rectangle Update

  #-------------------------------------------------------------------------

  def update_cursor_rect

    self.cursor_rect.set(10, @index * 80 + 10, 0, 0)

  end

end

#==============================================================================

# ** Window_SkillActor2

#------------------------------------------------------------------------------

#  This window displays selected character for the skill window

#==============================================================================

class Window_SkillActor2 < Window_Base

  #--------------------------------------------------------------------------

  # * Object Initialization

  #   actor : actor

  #--------------------------------------------------------------------------

  def initialize(actor)

    super(32,20,320,350)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.opacity = 0

    @old_index = $game_temp.skill_index

    @actor = actor

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.font.color = normal_color

    self.contents.font.size = 18

    self.contents.font.bold = true

    x = 60

    y = 0

    draw_actor_graphic(@actor, 30, y + 65)

    self.contents.draw_text(x, y, 150, 32, "#{@actor.name}")

    self.contents.draw_text(x + 80, y, 150, 32, "LV #{@actor.level}")

    draw_actor_hp(@actor, x, y + 15)

    draw_actor_sp(@actor, x, y + 30)

    draw_actor_state(@actor, x, y + 45)

    self.contents.draw_text(x + 70, y + 45, 150, 32,$data_system.words.sp + " uses ")

    unless @actor.skills[$game_temp.skill_index] == nil

      if @actor.sp < $data_skills[@actor.skills[$game_temp.skill_index]].sp_cost

        self.contents.font.color = knockout_color

      else

        self.contents.font.color = normal_color

      end

    end

    @sp_uses = @actor.skills[$game_temp.skill_index] == nil ? "" : $data_skills[@actor.skills[$game_temp.skill_index]].sp_cost.to_s

    self.contents.draw_text(x + 135, y + 45, 150, 32, @sp_uses)

  end

  #--------------------------------------------------------------------------

  # * Update

  #--------------------------------------------------------------------------

  def update

    super

    if $game_temp.skill_index != @old_index

      refresh

      @old_index = $game_temp.skill_index

    end

  end

end

#==============================================================================

# ** Window_SaveFile

#------------------------------------------------------------------------------

#  This window displays save files on the save and load screens.

#==============================================================================

class Window_SaveFile < Window_Base

  #--------------------------------------------------------------------------

  # * Object Initialization

  #     file_index : save file index (0-2)

  #     filename   : file name

  #--------------------------------------------------------------------------

  def initialize(file_index, filename)

    super(42, 35 + file_index % 4 * 70, 640, 90)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.opacity = 0

    @file_index = file_index

    @filename = "Save#{@file_index + 1}.rxdata"

    @time_stamp = Time.at(0)

    @file_exist = FileTest.exist?(@filename)

    if @file_exist

      file = File.open(@filename, "r")

      @time_stamp = file.mtime

      @characters = Marshal.load(file)

      @frame_count = Marshal.load(file)

      @game_system = Marshal.load(file)

      @game_switches = Marshal.load(file)

      @game_variables = Marshal.load(file)

      @total_sec = @frame_count / Graphics.frame_rate

      file.close

    end

    refresh

    @selected = false

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.font.size = 18

    self.contents.font.bold = true

    # Draw file number

    self.contents.font.color = normal_color

    name = "File#{@file_index + 1}"

    self.contents.draw_text(4, 0, 600, 32, name)

    @name_width = contents.text_size(name).width

    # If save file exists

    if @file_exist

      self.contents.draw_text(0, 0, 600, 32, @game_system.chapter.to_s,1)

    end

  end

end

#==============================================================================

# ** Window_SaveStatus

#------------------------------------------------------------------------------

#  This window displays stats on the save files.

#==============================================================================

class Window_SaveStatus < Window_Base

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(0,0,640,480)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.opacity = 0

    @index = $game_temp.save_index

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    filename = "Save#{$game_temp.save_index + 1}.rxdata"

    return unless FileTest.exist?(filename)

    file = File.open(filename, "r")

    @characters = Marshal.load(file)

    @frame_count = Marshal.load(file)

    @game_system = Marshal.load(file)

    @game_switches = Marshal.load(file)

    @game_variables = Marshal.load(file)

    Marshal.load(file)

    Marshal.load(file)

    Marshal.load(file)

    party = Marshal.load(file)

    Marshal.load(file)

    map = Marshal.load(file)

    self.contents.font.size = 20

    self.contents.font.bold = true

    for i in 0...party.actors.size

      actor = party.actors[i]

      x = 284

      y = i * 36 + 265

      draw_actor_name(actor, x + 40, y - 2)

      draw_actor_level(actor, x + 170, y - 2)

      self.contents.blt(x + 5, y + 10, RPG::Cache.icon(actor.character_name), Rect.new(0,0,24,24))

      self.contents.draw_text(x + 40, y + 16, 150, 32, "#{$data_system.words.hp} #{actor.hp} / #{actor.maxhp}")

      self.contents.draw_text(x + 170, y + 16, 150, 32, "#{$data_system.words.sp} #{actor.sp} / #{actor.maxsp}")

    end

    total_sec = @frame_count / Graphics.frame_rate

    hour = total_sec / 60 / 60

    min = total_sec / 60 % 60

    sec = total_sec % 60

    text = sprintf("%02d:%02d:%02d", hour, min, sec)

    map_name = load_data("Data/MapInfos.rxdata")[map.map_id].name

    self.contents.font.size = 20

    self.contents.draw_text(45, 272, 144, 32, map_name)

    self.contents.draw_text(45, 304, 144, 32, "TIME:")

    self.contents.draw_text(100, 304, 144, 32, text,2)

    self.contents.draw_text(45, 336, 144, 32, $data_system.words.gold + ":")

    self.contents.draw_text(100, 336, 144, 32, party.gold.to_s,2)

    self.contents.draw_text(45, 368, 144, 32, "Save #:")

    self.contents.draw_text(100, 368, 144, 32, @game_system.save_count.to_s, 2)

  end 

  #--------------------------------------------------------------------------

  # * Update

  #--------------------------------------------------------------------------

  def update

    super

    if @index != $game_temp.save_index

      refresh

    @index = $game_temp.save_index

    end

  end

end

#==============================================================================

# ** Window_PartyChange

#------------------------------------------------------------------------------

#  This window displays changable characters.

#==============================================================================

class Window_PartyChange < Window_Selectable

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(0,0,640,480)

    self.index = 0

    self.opacity = 0

    @item_max = $game_party.actors.size

    self.contents = Bitmap.new(width - 32, height - 32)

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.font.size = 18

    self.contents.font.bold = true

    for i in 0...$game_party.actors.size

      actor = $game_party.actors[i]

      x = 140

      y = i * 110

      draw_actor_graphic(actor, x + 260, y + 80)

      draw_actor_name(actor,x + 80, y)

      draw_actor_level(actor, x + 160, y)

      draw_actor_hp(actor, x + 80, y + 20)

      draw_actor_sp(actor, x + 80, y + 40)

      self.contents.draw_text(x + 104, y + 72, 150, 32, (actor.str + actor.atk).to_s)

      self.contents.draw_text(x + 204, y + 72, 150, 32, actor.pdef.to_s)

      self.contents.blt(x + 80, y + 72, RPG::Cache.icon($data_weapons[actor.weapon_id] == nil ? CT_Pictures::Weapon_alternative : $data_weapons[actor.weapon_id].icon_name), Rect.new(0,0,24,24))

      self.contents.blt(x + 180, y + 72, RPG::Cache.icon($data_armors[actor.armor1_id] == nil ? CT_Pictures::Shield_alternative : $data_armors[actor.armor1_id].icon_name), Rect.new(0,0,24,24))

    end

  end

  #--------------------------------------------------------------------------

  # * Cursor Rectangle Update

  #-------------------------------------------------------------------------

  def update_cursor_rect

    self.cursor_rect.set(190, @index * 110, 0, 0)

  end

end

#==============================================================================

# ** Window_EquipItem

#------------------------------------------------------------------------------

#  This window displays choices when opting to change equipment on the

#  equipment screen.

#==============================================================================

class Window_EquipItem2 < Window_Selectable

  #--------------------------------------------------------------------------

  # * Object Initialization

  #     equip_type : equip region (0-3)

  #--------------------------------------------------------------------------

  def initialize(equip_type)

    super(50, 210, 275, 240)

    self.contents = Bitmap.new(width - 32, height - 32)

    @actor = $game_party.actors[$game_temp.cms_index]

    @equip_type = equip_type

    @old_actor = $game_temp.cms_index

    self.active = false

    @old_index = @index

    self.z = 1000

    self.opacity = 0

    self.index = 0

    refresh

  end

  #--------------------------------------------------------------------------

  # * Item Acquisition

  #--------------------------------------------------------------------------

  def item

    return @data[self.index]

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    if self.contents != nil

      self.contents.dispose

      self.contents = nil

    end

    @data = []

    # Add equippable weapons

    if @equip_type == 0

      weapon_set = $data_classes[@actor.class_id].weapon_set

      for i in 1...$data_weapons.size

        if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)

          @data.push($data_weapons[i])

        end

      end

    end

    # Add equippable armor

    if @equip_type != 0

      armor_set = $data_classes[@actor.class_id].armor_set

      for i in 1...$data_armors.size

        if $game_party.armor_number(i) > 0 and armor_set.include?(i)

          if $data_armors[i].kind == @equip_type-1

            @data.push($data_armors[i])

          end

        end

      end

    end

    # Add blank page

    @data.push(nil)

    # Make a bit map and draw all items

    @item_max = @data.size

    self.contents = Bitmap.new(width - 32, row_max * 32)

    for i in 0...@item_max-1

      draw_item(i)

    end

  end

  #--------------------------------------------------------------------------

  # * Draw Item

  #     index : item number

  #--------------------------------------------------------------------------

  def draw_item(index)

    item = @data[index]

    x = 4

    y = index * 32

    case item

    when RPG::Weapon

      number = $game_party.weapon_number(item.id)

    when RPG::Armor

      number = $game_party.armor_number(item.id)

    end

    bitmap = RPG::Cache.icon(item.icon_name)

    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))

    self.contents.font.color = normal_color

    self.contents.font.size = 18

    self.contents.font.bold = true

    self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)

    self.contents.draw_text(x + 185, y, 16, 32, ":", 1)

    self.contents.draw_text(x + 201, y, 24, 32, number.to_s, 2)

  end

  #--------------------------------------------------------------------------

  # * Update

  #-------------------------------------------------------------------------

  def update

    super

    if $game_temp.cms_index != @old_actor

      @actor = $game_party.actors[$game_temp.cms_index]

      refresh

      @old_actor = $game_temp.cms_index

    end

  end

end

#==============================================================================

# ** Window_EquipDescription

#------------------------------------------------------------------------------

#  This window displays the kind of equipment

#==============================================================================

class Window_EquipDescription < Window_Base

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(30, 21, 320, 480)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.opacity = 0

    self.z = 1000

    @cms_index = $game_temp.cms_index

    @equip_index = $game_temp.equip_index

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.font.size = 18

    self.contents.font.bold = true

    actor = $game_party.actors[$game_temp.cms_index]

    y  = 0

    pow = actor.str + actor.atk

    self.contents.draw_text(14, y, 100, 32, actor.name)

    self.contents.draw_text(154, y, 100, 32, "LV #{actor.level}")

    self.contents.draw_text(60, y + 65, 100, 32, "#{pow}")

    self.contents.draw_text(210, y + 65, 100, 32, "#{actor.pdef}")

    draw_actor_hp(actor, 14, y + 20)

    draw_actor_sp(actor, 14, y + 40)

    self.contents.blt(14, y + 70, RPG::Cache.icon($data_weapons[actor.weapon_id] == nil ? CT_Pictures::Weapon_alternative : $data_weapons[actor.weapon_id].icon_name), Rect.new(0,0,24,24))

    self.contents.blt(174, y + 70, RPG::Cache.icon($data_armors[actor.armor1_id] == nil ? CT_Pictures::Shield_alternative : $data_armors[actor.armor1_id].icon_name), Rect.new(0,0,24,24))

    if $game_temp.equip_index == 0

      text = $data_system.words.weapon

    else

      text = eval("$data_system.words.armor#{$game_temp.equip_index}")

    end

    self.contents.draw_text(14,122,250,32, "#{text}", 1)

  end

  #--------------------------------------------------------------------------

  # * Update

  #--------------------------------------------------------------------------

  def update

    super

    if @cms_index != $game_temp.cms_index or @equip_index != $game_temp.equip_index

      refresh

      @cms_index = $game_temp.cms_index

      @equip_index = $game_temp.equip_index

    end

  end

end

#==============================================================================

# ** Window_PlayTime

#------------------------------------------------------------------------------

#  This window displays play time on the menu screen.

#==============================================================================

class Window_PlayTime < Window_Base

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    super(0, 384, 160, 96)

    self.contents = Bitmap.new(width - 32, height - 32)

    self.opacity = 0

    self.z = 9999

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.font.color = system_color

    self.contents.font.size = 18

    self.contents.font.bold = true

    self.contents.draw_text(4, 0, 120, 32, "TIME:")

    self.contents.draw_text(4, 32, 120, 32, $data_system.words.gold + ":")

    @total_sec = Graphics.frame_count / Graphics.frame_rate

    hour = @total_sec / 60 / 60

    min = @total_sec / 60 % 60

    sec = @total_sec % 60

    text = sprintf("%02d:%02d:%02d", hour, min, sec)

    self.contents.font.color = normal_color

    self.contents.draw_text(4, 0, 120, 32, text, 2)

    self.contents.draw_text(4, 32, 120, 32, $game_party.gold.to_s, 2)

  end

  #--------------------------------------------------------------------------

  # * Frame Update

  #--------------------------------------------------------------------------

  def update

    super

    if Graphics.frame_count / Graphics.frame_rate != @total_sec

      refresh

    end

  end

end

#==============================================================================

# ** Window_End

#------------------------------------------------------------------------------

#  This window displays the end window.

#==============================================================================

class Window_End < Window_Selectable

  def initialize

    super(0,0,192,128)

    self.contents = Bitmap.new(width - 32, height - 32)

    @item_max = 3

    refresh

  end

  #--------------------------------------------------------------------------

  # * Refresh

  #--------------------------------------------------------------------------

  def refresh

    self.contents.clear

    self.contents.draw_text(4, 0, 150, 32, "To Title")

    self.contents.draw_text(4, 32, 150, 32, "Shutdown")

    self.contents.draw_text(4, 64, 150, 32, "Cancel")

  end

  #--------------------------------------------------------------------------

  # * Cursor Rectangle Update

  #--------------------------------------------------------------------------

  def update_cursor_rect

    self.cursor_rect.set(4, @index * 32, 0, 0)

  end

end

#==============================================================================

# ** Window_Base

#------------------------------------------------------------------------------

#  This class is for all in-game windows.

#==============================================================================

class Window_Base < Window

  def draw_item_name(item, x, y)

    if item == nil

      return

    end

    bitmap = RPG::Cache.icon(item.icon_name)

    self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))

    self.contents.font.color = normal_color

    self.contents.draw_text(x + 28, y, 110, 32, item.name)

  end

end

#==============================================================================

# ** Game_Actor

#------------------------------------------------------------------------------

#  This class handles the actor. It's used within the Game_Actors class

#  ($game_actors) and refers to the Game_Party class ($game_party).

#==============================================================================

class Game_Actor < Game_Battler

  #--------------------------------------------------------------------------

  # * Get the current EXP

  #--------------------------------------------------------------------------

  def now_exp

    return @exp - @exp_list[@level]

  end

  #--------------------------------------------------------------------------

  # * Get the next level's EXP

  #--------------------------------------------------------------------------

  def next_exp

    return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0

  end

end

#==============================================================================

# ** Game_System

#------------------------------------------------------------------------------

#  This class handles data surrounding the system. Backround music, etc.

#  is managed here as well. Refer to "$game_system" for the instance of 

#  this class.

#==============================================================================

class Game_System

  attr_accessor :chapter

  alias raz_cms_system_initialize initialize

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    @chapter = ""

    raz_cms_system_initialize

  end

end

#==============================================================================

# ** Game_Temp

#------------------------------------------------------------------------------

#  This class handles temporary data that is not included with save data.

#  Refer to "$game_temp" for the instance of this class.

#==============================================================================

class Game_Temp

  attr_accessor :cms_index

  attr_accessor :skill_index

  attr_accessor :save_index

  attr_accessor :equip_index

  attr_accessor :equip_window

  alias raz_cms_initialize initialize

  #--------------------------------------------------------------------------

  # * Object Initialization

  #--------------------------------------------------------------------------

  def initialize

    @cms_index = 0

    @skill_index = 0

    @save_index = 0

    @equip_index = 0

    raz_cms_initialize

  end

end

#==============================================================================

# ** Scene_File

#------------------------------------------------------------------------------

#  This is a superclass for the save screen and load screen.

#==============================================================================

class Scene_File

  #--------------------------------------------------------------------------

  # * Object Initialization

  #     help_text : text string shown in the help window

  #--------------------------------------------------------------------------

  def initialize(help_text)

    @help_text = help_text

  end

  #--------------------------------------------------------------------------

  # * Main Processing

  #--------------------------------------------------------------------------

  def main

    # Make save file window

    @back_ground = Sprite.new

    @back_ground.bitmap = RPG::Cache.picture(CT_Pictures::BG_Picture)

    @save_window = []

    @save_window[0] = Window_Base.new(39,32, 560, 70)

    @save_window[1] = Window_Base.new(39,102, 560, 70)

    @save_window[2] = Window_Base.new(39,172, 560, 70)

    @save_left = Window_Base.new(39,273,241,172)

    @save_right = Window_Base.new(280,273,320,172)

    @savefile_windows = []

    @save_status = Window_SaveStatus.new

    for i in 0..2

      @savefile_windows.push(Window_SaveFile.new(i, make_filename(i)))

    end

    # Select last file to be operated

    @file_index = $game_temp.last_file_index

    @savefile_windows[@file_index].selected = true

    # Execute transition

    Graphics.transition

    # Main loop

    loop do

      # Update game screen

      Graphics.update

      # Update input information

      Input.update

      # Frame update

      update

      # Abort loop if screen is changed

      if $scene != self

        break

      end

    end

    # Prepare for transition

    Graphics.freeze

    # Dispose of windows

    @save_status.dispose

    @back_ground.dispose

    @save_left.dispose

    @save_right.dispose

    for i in 0..2

      @save_window[i].dispose

    end

    for i in @savefile_windows

      i.dispose

    end

  end

  #--------------------------------------------------------------------------

  # * Frame Update

  #--------------------------------------------------------------------------

  def update

    @save_status.update

    $game_temp.save_index = @file_index

    if Input.trigger?(Input::C)

      # Call method: on_decision (defined by the subclasses)

      on_decision(make_filename(@file_index))

      $game_temp.last_file_index = @file_index

      return

    end

    # If B button was pressed

    if Input.trigger?(Input::B)

      # Call method: on_cancel (defined by the subclasses)

      on_cancel

      return

    end

    # If the down directional button was pressed

    if Input.repeat?(Input::DOWN)

      # If the down directional button pressed down is not a repeat,

      # or cursor position is more in front than 3

      unless @file_index == 2

        if Input.trigger?(Input::DOWN)

          # Play cursor SE

          $game_system.se_play($data_system.cursor_se)

          # Move cursor down

          @savefile_windows[@file_index].selected = false

          @file_index = (@file_index + 1)

          @savefile_windows[@file_index].selected = true

          return

        end

      end

      # If the up directional button was pressed

      elsif Input.repeat?(Input::UP)

        # If the up directional button pressed down is not a repeat、

        # or cursor position is more in back than 0

        unless @file_index == 0

        if Input.trigger?(Input::UP)

          # Play cursor SE

          $game_system.se_play($data_system.cursor_se)

          # Move cursor up

          @savefile_windows[@file_index].selected = false

          @file_index = (@file_index - 1)

          @savefile_windows[@file_index].selected = true

          return

        end

      end

    end

  end

end

 

So what do I want edited?

I found out that the XAS is not really working with the caterpillar script, so I decided to remove as I don't really need it. However, there are still some problems which I cannot fix since I am not a scripter.

First one is, the item using in the ABS. I can use an equipped item but I can't equip another. Like this,

pic1.png

pic2.png


However, it stays as it is in the first screenshot, not changing into the ether.


Second one is the skill menu. It's the same problem as the item one. When I click a skill in the menu, it won't be equipped even though I can use the equipped skill in battle.

pic3.png


That's pretty much it. I would really appreciate if someone helps me out.
 

Thank you for viewing

HBGames is a leading amateur video game development forum and Discord server open to all ability levels. Feel free to have a nosey around!

Discord

Join our growing and active Discord server to discuss all aspects of game making in a relaxed environment. Join Us

Content

  • Our Games
  • Games in Development
  • Emoji by Twemoji.
    Top