Jump to content
Sign in to follow this  
Japhasca

Yanfly Engine Addon - Ace Status Menu Changed (Shows Stats, Params, Element & State Resistances)

Recommended Posts

I modified the title script to work more properly with what I wanted to display in my game, so I thought this might be interesting for people who wanted something similar. I'll explain a couple sections (with caveats) and then show the entire script at the end.

I removed a couple of things (like biography) that I'm not using, but I'm sure they can probably be re-implemented. I also only show the integer value of numbers and percentages as I'm not concerned with anything beyond that.

I don't script and it took a lot of guesswork, web searching, and assistance to arrive at this, so I apologize if it's a bit messy.

image.thumb.png.9a95f4d4ec8dcccbac63c1af83c4e68f.png

image.thumb.png.a65a82d837497bf70a31990497729e9e.png

image.thumb.png.d05bf873ffe1eb38f36886797aa29236.png

image.thumb.png.2de2228a440fcaed3648745f558f076f.png

CHANGES (bolded so they are easier to spot):

At the start, here is how I changed the menu options with some removals, renames, and additions:

Spoiler

    COMMANDS =[ # The order at which the menu items are shown.
    # [    :command,    "Display"],
      [    :general,    "Main Stats"], # RENAMED
    # REMOVED  [ :parameters, "Parameters"],
      [ :properties, "Secondary Stats"], # RENAMED
    # [    :custom1,     "Skills"],
    # [    :custom2,  "Equipment"],
    # [    :custom3,      "Class"],
    # REMOVED  [  :biography,  "Biography"],
    # REMOVED  [     :rename,     "Rename"],  # Requires YEA - Rename Actor
    # REMOVED  [    :retitle,    "Retitle"],  # Requires YEA - Rename Actor
#-#-#-#-# MY ADDITIONS #-#-#-#-#    
      [ :elementratesZ, "Element Resistance"], 
      [ :statusratesZ, "Status Resistance"],
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    ] # Do not remove this.

 

For the parameters section, I changed font size, did some renames, and removed ones I don't use, although they can be added back in.

Spoiler

    PROPERTIES_FONT_SIZE = 24        # Font size used for properties. Originally 16
    
    # REDONE COLUMN 1
    PROPERTIES_COLUMN1 =[
      [:hit, "Hit"], #RENAMED
      [:cri, "Critical Hit"], # RENAMED      
      [:eva, "Evade"], # RENAMED
      [:cev, "Critical Evade"], # RENAMED
      [:mev, "Magic Evade"], # RENAMED
      [:mrf, "Magic Reflect"], # RENAMED - REMOVE???
      [:cnt, "Counter"], # RENAMED
      [:tgr, "Aggro"], #RENAMED
    ] # Do not remove this.      
      
    # REDONE COLUMN 2
    PROPERTIES_COLUMN2 =[    
      [:hrg, "HP Regen"], # RENAMED
      [:mrg, "MP Regen"], # RENAMED
      [:mcr, "MP Use"], # RENAMED      
      [:trg, "TP Regen"], # RENAMED
      [:tcr, "TP Charge"], # RENAMED    
      [:pha, "Item Heal"], # RENAMED
      [:rec, "All Heal"], # RENAMED      
      [:exr, "Experience"], # RENAMED       
    ] # Do not remove this.    

 

This sets up names for the elements and states. You can use more or less, but you might need to mess with the font and column settings if they don't fit well or look bad. The spaces at the start of each string leaves space to draw the icons.

Spoiler

#-#-#-#-# MY ADDITIONS #-#-#-#-#

   #=================================================#
   # - Element Rate Window 
   #=================================================#
   #   Setting up columns for element display
   ELEMENTS_FONT_SIZE = 24 # Font size for element display
   
   ELEMENTS_COLUMN1 =[
      [:firZ, "  Fire Resistance"],
      [:iceZ, "  Ice Resistance"],
      [:thuZ, "  Thunder Resistance"],
      [:watZ, "  Water Resistance"],
      [:earZ, "  Earth Resistance"],
      [:winZ, "  Wind Resistance"],
      [:ligZ, "  Light Resistance"],
      [:shaZ, "  Shadow Resistance"],
    ] # Do not remove this.
    
   #=================================================#
   # - State Rate Window 
   #=================================================#
   #   Setting up columns for states display
   STATES_FONT_SIZE = 24 # Font size for element display
   
   STATES_COLUMN1 =[
      [:illz, "  Illness"],
      [:poiz, "  Poison"],
      [:cryz, "  Crying"],
      [:mutz, "  Mute"],
      [:angz, "  Anger"],
      [:irrz, "  Irrational"],
    ] # Do not remove this.
    
    STATES_COLUMN2 =[
      [:braz, "  Brainwash"],
      [:helz, "  Held"],
      [:knoz, "  Knockdown"],
      [:stuz, "  Stun"],
      [:slez, "  Sleep"],
      [:salz, "  Salt"],
    ] # Do not remove this.
      
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#

 

 

I had to add in the menu items. I left in some I didn't use because I was afraid to mess too much with this, but they don't show up so it works. It's a bit messy though.

Spoiler

  def make_command_list
    return unless @actor
    for command in YEA::STATUS::COMMANDS
      case command[0]
      #--- Default ---
      when :general, :parameters, :properties, :biography, :elementratesZ, :statusratesZ # ADDED

 

Additions to call the new windows.

Spoiler

  #--------------------------------------------------------------------------
  # draw_window_contents
  #--------------------------------------------------------------------------
  def draw_window_contents
    case @command_window.current_symbol
    when :general
      draw_actor_general
    when :parameters
      draw_parameter_graph
    when :properties
      draw_properties_list
    when :biography, :rename, :retitle
      draw_actor_biography
#-#-#-#-# MY ADDITIONS #-#-#-#-#
    when :elementratesZ
      draw_element_rates
    when :statusratesZ
      draw_status_rates
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#  
    else
      draw_custom
    end
  end

 

Example of where I changed the number of columns drawn, and changed column.width. I hashed out the column.width original lines in case I screwed up and needed to revert to the original version.

Spoiler

  #--------------------------------------------------------------------------
  # draw_properties_list
  #--------------------------------------------------------------------------
  def draw_properties_list
    contents.font.size = YEA::STATUS::PROPERTIES_FONT_SIZE
    draw_properties_column1
    draw_properties_column2
# REMOVED    draw_properties_column3
    reset_font_settings
  end
  
  #--------------------------------------------------------------------------
  # draw_properties_column1
  #--------------------------------------------------------------------------
  def draw_properties_column1
    dx = 24
     
     dw = (contents.width - 24) / 2 - 24 # ATTEMPT
#    dw = (contents.width - 24) / 3 - 24
    
    dy = 0
    for property in YEA::STATUS::PROPERTIES_COLUMN1
      dy = draw_property(property, dx, dy, dw)
    end
  end
  
  #--------------------------------------------------------------------------
  # draw_properties_column2
  #--------------------------------------------------------------------------
  def draw_properties_column2

#   dx = 24 + (contents.width - 24) / 3
    dx = 24 + (contents.width - 24) / 2    
    
    dw = (contents.width - 24) / 2 - 24
#   dw = (contents.width - 24) / 3 - 24            

    dy = 0
    for property in YEA::STATUS::PROPERTIES_COLUMN2
      dy = draw_property(property, dx, dy, dw)
    end
  end

# REMOVED COLUMN 3
  
#  #--------------------------------------------------------------------------
#  # draw_properties_column3
#  #--------------------------------------------------------------------------
#  def draw_properties_column3
#    dx = 24 + (contents.width - 24) / 3 * 2
#    dw = (contents.width - 24) / 3 - 24
#    dy = 0
#    for property in YEA::STATUS::PROPERTIES_COLUMN3
#      dy = draw_property(property, dx, dy, dw)
#    end
#  end

 

 

This is where I changed the presentation of the parameter values to remove anything after the decimal place.

Spoiler

  #--------------------------------------------------------------------------
  # draw_property
  #--------------------------------------------------------------------------
  def draw_property(property, dx, dy, dw)
    fmt = "%1.0f%%" # CHANGED NO DECIMALS fmt = "%1.2f%%"
    case property[0]
    #---
    when :hit
      value = sprintf(fmt, @actor.hit * 100)

 

etc.

This fills in elemental resistance. It took a lot of trial and error to figure out where to put in the icon drawing commands. Everywhere else I put it worked, but always failed to draw the last icon. The way element rates are stored, you have to multiply by -100 and add 100 to get a positive integer value. The icon numbers of course refer to my sheet so that would need to be edited if someone else used it.

Spoiler

  #============================
  # - draw_element_rates    
  #============================
  def draw_element_rates
    contents.font.size = YEA::STATUS::ELEMENTS_FONT_SIZE
    draw_elements_column1
    reset_font_settings
  end

  #============================
  # - draw_elements_column1    
  #============================
  def draw_elements_column1
    dx = 72
    dw = (contents.width - 72) - 72
    dy = 0
    for property in YEA::STATUS::ELEMENTS_COLUMN1	#????? CHECK REDEFINE PROPERTY ??????
      dy = draw_elementsZ(property, dx, dy, dw)
    # DRAW ICONS
    draw_icon(136, 72, 0)
    draw_icon(137, 72, 24)
    draw_icon(138, 72, 48)
    draw_icon(139, 72, 72)
    draw_icon(140, 72, 96)
    draw_icon(141, 72, 120)
    draw_icon(142, 72, 144)
    draw_icon(143, 72, 168)
    end
  end

  #============================
  # - elementsZ    
  #============================
  def draw_elementsZ(property, dx, dy, dw)
    fmt = "%1.0f%%"
    case property[0]
    #---
    when :firZ
      value = sprintf(fmt, @actor.element_rate(3) * -100 + 100)
    when :iceZ
      value = sprintf(fmt, @actor.element_rate(4) * -100 + 100)
    when :thuZ
      value = sprintf(fmt, @actor.element_rate(5) * -100 + 100)
    when :watZ
      value = sprintf(fmt, @actor.element_rate(6) * -100 + 100)
    when :earZ
      value = sprintf(fmt, @actor.element_rate(7) * -100 + 100)
    when :winZ
      value = sprintf(fmt, @actor.element_rate(8) * -100 + 100)
    when :ligZ
      value = sprintf(fmt, @actor.element_rate(9) * -100 + 100)
    when :shaZ
      value = sprintf(fmt, @actor.element_rate(10) * -100 + 100)
    #---
    else; return dy
    end
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    draw_text(dx+4, dy, dw-8, line_height, property[1], 0)
    change_color(normal_color)
    draw_text(dx+4, dy, dw-8, line_height, value, 2)
    return dy + line_height
  end

 

 

This fills in state resistances, with some big caveats. For my game, the characters are either immune to a state or not; I don't use % resistances for them. This looks at the immunity variable and returns 0% if it's false and 100% if it's true (0 or 1 times 100.) I imagine if you use % resistances, it would work similarly to elements as above, BUT if you use both you'd have to have it figure out which on to prioritize and how you'd want it displayed. Because the basic game setup adds in luck to state application, 100% resistance is NOT the same as immunity.

Spoiler

  #============================
  # - draw_status_rates    
  #============================
  def draw_status_rates
    contents.font.size = YEA::STATUS::STATES_FONT_SIZE
    draw_states_column1
    draw_states_column2
    reset_font_settings
  end

  #============================
  # - draw_states_column1    
  #============================
  def draw_states_column1
  dx = 24
    dw = (contents.width - 24) / 2 - 24
    dy = 0
    for property in YEA::STATUS::STATES_COLUMN1
      dy = draw_statesZ(property, dx, dy, dw)
    #DRAW ICONS
    draw_icon(22, 24, 0) # ill
    draw_icon(21, 24, 24) # poison
    draw_icon(38, 24, 48) # cry
    draw_icon(39, 24, 72) # mute
    draw_icon(11, 24, 96) # angry
    draw_icon(10, 24, 120) # irrational
    end
  end

  #============================
  # - draw_states_column2    
  #============================
  def draw_states_column2
  dx = 24 + (contents.width - 24) / 2
    dw = (contents.width - 24) / 2 - 24
    dy = 0
    for property in YEA::STATUS::STATES_COLUMN2
      dy = draw_statesZ(property, dx, dy, dw)
    # DRAW ICONS
    draw_icon(9, 320, 0) # brainwashed
    draw_icon(25, 320, 24) # held
    draw_icon(26, 320, 48) # knocked down
    draw_icon(14, 320, 72) # stun
    draw_icon(15, 320, 96) # sleep
    draw_icon(6, 320, 120) # salt 
    end
  end

  #============================
  # - statesZ    
  #============================
def draw_statesZ(property, dx, dy, dw)
    fmt = "%1.0f%%"
    case property[0]
    when :illz # 21
      value = sprintf(fmt, (@actor.state_resist?(21)? 1:0) * 100)
    when :poiz # 20
      value = sprintf(fmt, (@actor.state_resist?(20)? 1:0) * 100)
    when :cryz # 37
      value = sprintf(fmt, (@actor.state_resist?(37)? 1:0) * 100)
    when :mutz # 38
      value = sprintf(fmt, (@actor.state_resist?(38)? 1:0) * 100)
    when :angz # 10
      value = sprintf(fmt, (@actor.state_resist?(10)? 1:0) * 100)
    when :irrz # 9
      value = sprintf(fmt, (@actor.state_resist?(9)? 1:0) * 100)
    when :braz # 8
      value = sprintf(fmt, (@actor.state_resist?(8)? 1:0) * 100)
    when :helz # 24
      value = sprintf(fmt, (@actor.state_resist?(24)? 1:0) * 100)
    when :knoz # 25
      value = sprintf(fmt, (@actor.state_resist?(25)? 1:0) * 100)
    when :stuz # 13
      value = sprintf(fmt, (@actor.state_resist?(13)? 1:0) * 100)
    when :slez # 14
      value = sprintf(fmt, (@actor.state_resist?(14)? 1:0) * 100)
    when :salz # 5
      value = sprintf(fmt, (@actor.state_resist?(5)? 1:0) * 100)
    #---
    else; return dy
    end
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    draw_text(dx+4, dy, dw-8, line_height, property[1], 0)
    change_color(normal_color)
    draw_text(dx+4, dy, dw-8, line_height, value, 2)
    return dy + line_height
  end

 

 

FULL SCRIPT:

Spoiler

#==============================================================================
# 
# ▼ Yanfly Engine Ace - Ace Status Menu v1.02
# -- Last Updated: 2011.12.26
# -- Level: Normal
# -- Requires: n/a
# 
#==============================================================================

$imported = {} if $imported.nil?
$imported["YEA-StatusMenu"] = true

#==============================================================================
# ▼ Updates
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# 2012.08.06 - Fix Sp Paramater TCR
# 2011.12.26 - Compatibility Update: Rename Actor
# 2011.12.23 - Started Script and Finished.
# 
#==============================================================================
# ▼ Introduction
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script changes the status screen completely to something the player can
# interact with more and be able to view actor data with more clarity. The
# player is able to view the general information for an actor (parameters and
# experience), a parameters bar graph, the various hidden extra parameters
# (named properties in the script), and a customizable biography for the actor.
# Also with this script, biographies can be changed at any time using a script
# call to add more of a personal touch to characters.
# 
#==============================================================================
# ▼ Instructions
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# To install this script, open up your script editor and copy/paste this script
# to an open slot below ▼ Materials/素材 but above ▼ Main. Remember to save.
# 
# -----------------------------------------------------------------------------
# Script Calls - These commands are used with script calls.
# -----------------------------------------------------------------------------
# $game_actors[x].description = string
# Changes the biography description for actor x to that of the string. Use \n
# to designate linebreaks in the string. If you wish to use text codes, write
# them in the strings as \\n[2] or \\c[3] to make them work properly.
# 
#==============================================================================
# ▼ Compatibility
# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# This script is made strictly for RPG Maker VX Ace. It is highly unlikely that
# it will run with RPG Maker VX without adjusting.
# 
#==============================================================================

module YEA
  module STATUS
    
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Command Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # This section adjusts the commands that appear in the command window used
    # for the status screen. Rearrange the commands, add new ones, remove them
    # as you see fit.
    # 
    # -------------------------------------------------------------------------
    # :command         Description
    # -------------------------------------------------------------------------
    # :general         Adds general page.
    # :parameters      Adds parameters page.
    # :properties      Adds properties page.
    # :biography       Adds biography page.
    # 
    # :rename          Requires YEA - Rename Actor
    # :retitle         Requires YEA - Retitle Actor
    # 
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    COMMANDS =[ # The order at which the menu items are shown.
    # [    :command,    "Display"],
      [    :general,    "Main Stats"], # RENAMED
    # REMOVED  [ :parameters, "Parameters"],
      [ :properties, "Secondary Stats"], # RENAMED
    # [    :custom1,     "Skills"],
    # [    :custom2,  "Equipment"],
    # [    :custom3,      "Class"],
    # REMOVED  [  :biography,  "Biography"],
    # REMOVED  [     :rename,     "Rename"],  # Requires YEA - Rename Actor
    # REMOVED  [    :retitle,    "Retitle"],  # Requires YEA - Rename Actor
#-#-#-#-# MY ADDITIONS #-#-#-#-#    
      [ :elementratesZ, "Element Resistance"], 
      [ :statusratesZ, "Status Resistance"],
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    ] # Do not remove this.
    
    #--------------------------------------------------------------------------
    # - Status Custom Commands -
    # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    # For those who use scripts to that may produce unique effects for the
    # status menu, use this hash to manage the custom commands for the Status
    # Command Window. You can disable certain commands or prevent them from
    # appearing by using switches. If you don't wish to bind them to a switch,
    # set the proper switch to 0 for it to have no impact.
    #--------------------------------------------------------------------------
    CUSTOM_STATUS_COMMANDS ={
    # :command => [EnableSwitch, ShowSwitch, Handler Method, Window Draw],
      :custom1 => [           0,          0, :command_name1, :draw_custom1],
      :custom2 => [           0,          0, :command_name2, :draw_custom2],
      :custom3 => [           0,          0, :command_name3, :draw_custom3],
    } # Do not remove this.
    
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - General Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # These settings adjust the way the general window visually appears.
    # Not many changes need to be done here other than vocab changes.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    PARAMETERS_VOCAB = "Statistics"         # Title used for Parameters.
    EXPERIENCE_VOCAB = "Experience"         # Title used for Experience.
    NEXT_TOTAL_VOCAB = "Next %s Total EXP"  # Label used for total experience.
    
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Parameters Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # These settings adjust the way the parameters window visually appears.
    # Each of the stats have a non-window colour. Adjust them as you see fit.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    PARAM_COLOUR ={
    # ParamID => [:stat,       Colour1,                   Colour2          ],
            2 => [ :atk, Color.new(225, 100, 100), Color.new(240, 150, 150)],
            3 => [ :def, Color.new(250, 150,  30), Color.new(250, 180, 100)],
            4 => [ :mat, Color.new( 70, 140, 200), Color.new(135, 180, 230)],
            5 => [ :mdf, Color.new(135, 130, 190), Color.new(170, 160, 220)],
            6 => [ :agi, Color.new( 60, 180,  80), Color.new(120, 200, 120)],
            7 => [ :luk, Color.new(255, 240, 100), Color.new(255, 250, 200)],
    } # Do not remove this.
    
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Properties Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # These settings adjust the way the properties window visually appears.
    # The properties have abbreviations, but leaving them as such makes things
    # confusing (as it's sometimes hard to figure out what the abbreviations
    # mean). Change the way the appear, whether or not they appear, and what
    # order they will appear in.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    PROPERTIES_FONT_SIZE = 24        # Font size used for properties. Originally 16
    
    # REDONE COLUMN 1
    PROPERTIES_COLUMN1 =[
      [:hit, "Hit"], #RENAMED
      [:cri, "Critical Hit"], # RENAMED      
      [:eva, "Evade"], # RENAMED
      [:cev, "Critical Evade"], # RENAMED
      [:mev, "Magic Evade"], # RENAMED
      [:mrf, "Magic Reflect"], # RENAMED - REMOVE???
      [:cnt, "Counter"], # RENAMED
      [:tgr, "Aggro"], #RENAMED
    ] # Do not remove this.      
      
    # REDONE COLUMN 2
    PROPERTIES_COLUMN2 =[    
      [:hrg, "HP Regen"], # RENAMED
      [:mrg, "MP Regen"], # RENAMED
      [:mcr, "MP Use"], # RENAMED      
      [:trg, "TP Regen"], # RENAMED
      [:tcr, "TP Charge"], # RENAMED    
      [:pha, "Item Heal"], # RENAMED
      [:rec, "All Heal"], # RENAMED      
      [:exr, "Experience"], # RENAMED       
    ] # Do not remove this.    
    
#-#-#-#-# MY ADDITIONS #-#-#-#-#

   #=================================================#
   # - Element Rate Window 
   #=================================================#
   #   Setting up columns for element display
   ELEMENTS_FONT_SIZE = 24 # Font size for element display
   
   ELEMENTS_COLUMN1 =[
      [:firZ, "  Fire Resistance"],
      [:iceZ, "  Ice Resistance"],
      [:thuZ, "  Thunder Resistance"],
      [:watZ, "  Water Resistance"],
      [:earZ, "  Earth Resistance"],
      [:winZ, "  Wind Resistance"],
      [:ligZ, "  Light Resistance"],
      [:shaZ, "  Shadow Resistance"],
    ] # Do not remove this.
    
   #=================================================#
   # - State Rate Window 
   #=================================================#
   #   Setting up columns for states display
   STATES_FONT_SIZE = 24 # Font size for element display
   
   STATES_COLUMN1 =[
      [:illz, "  Illness"],
      [:poiz, "  Poison"],
      [:cryz, "  Crying"],
      [:mutz, "  Mute"],
      [:angz, "  Anger"],
      [:irrz, "  Irrational"],
    ] # Do not remove this.
    
    STATES_COLUMN2 =[
      [:braz, "  Brainwash"],
      [:helz, "  Held"],
      [:knoz, "  Knockdown"],
      [:stuz, "  Stun"],
      [:slez, "  Sleep"],
      [:salz, "  Salt"],
    ] # Do not remove this.
      
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
    
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # - Biography Window Settings -
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    # These settings adjust the way the biography appears including the title
    # used at the top, the font size, and whatnot.
    #=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
    BIOGRAPHY_NICKNAME_TEXT = "%s the %s"   # How the nickname will appear.
    BIOGRAPHY_NICKNAME_SIZE = 32            # Size of the font used.
    
  end # STATUS
end # YEA

#==============================================================================
# ▼ Editting anything past this point may potentially result in causing
# computer damage, incontinence, explosion of user's head, coma, death, and/or
# halitosis so edit at your own risk.
#==============================================================================

#==============================================================================
# ■ Numeric
#==============================================================================

class Numeric
  
  #--------------------------------------------------------------------------
  # new method: group_digits
  #--------------------------------------------------------------------------
  unless $imported["YEA-CoreEngine"]
  def group; return self.to_s; end
  end # $imported["YEA-CoreEngine"]
    
end # Numeric

#==============================================================================
# ■ Game_Temp
#==============================================================================

class Game_Temp
  
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :scene_status_index
  attr_accessor :scene_status_oy
  
end # Game_Temp

#==============================================================================
# ■ Game_Actor
#==============================================================================

class Game_Actor < Game_Battler
  
  #--------------------------------------------------------------------------
  # new method: description=
  #--------------------------------------------------------------------------
  def description=(text)
    @description = text
  end
  
  #--------------------------------------------------------------------------
  # overwrite method: description
  #--------------------------------------------------------------------------
  def description
    return @description unless @description.nil?
    return actor.description
  end
  
end # Game_Actor

#==============================================================================
# ■ Window_StatusCommand
#==============================================================================

class Window_StatusCommand < Window_Command
  
  #--------------------------------------------------------------------------
  # public instance variables
  #--------------------------------------------------------------------------
  attr_accessor :item_window
  
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(dx, dy)
    super(dx, dy)
    @actor = nil
  end
  
  #--------------------------------------------------------------------------
  # window_width
  #--------------------------------------------------------------------------
  def window_width; return 160; end
  
  #--------------------------------------------------------------------------
  # actor=
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
  
  #--------------------------------------------------------------------------
  # visible_line_number
  #--------------------------------------------------------------------------
  def visible_line_number; return 4; end
  
  #--------------------------------------------------------------------------
  # ok_enabled?
  #--------------------------------------------------------------------------
  def ok_enabled?
    return handle?(current_symbol)
  end
  
  #--------------------------------------------------------------------------
  # make_command_list
  #--------------------------------------------------------------------------
  def make_command_list
    return unless @actor
    for command in YEA::STATUS::COMMANDS
      case command[0]
      #--- Default ---
      when :general, :parameters, :properties, :biography, :elementratesZ, :statusratesZ # ADDED
        add_command(command[1], command[0])
      #--- Yanfly Engine Ace ---
      when :rename
        next unless $imported["YEA-RenameActor"]
        add_command(command[1], command[0], @actor.rename_allow?)
      when :retitle
        next unless $imported["YEA-RenameActor"]
        add_command(command[1], command[0], @actor.retitle_allow?)
      #--- Custom Commands ---
      else
        process_custom_command(command)
      end
    end
    if !$game_temp.scene_status_index.nil?
      select($game_temp.scene_status_index)
      self.oy = $game_temp.scene_status_oy
    end
    $game_temp.scene_status_index = nil
    $game_temp.scene_status_oy = nil
  end
  
  #--------------------------------------------------------------------------
  # process_ok
  #--------------------------------------------------------------------------
  def process_ok
    $game_temp.scene_status_index = index
    $game_temp.scene_status_oy = self.oy
    super
  end
  
  #--------------------------------------------------------------------------
  # process_custom_command
  #--------------------------------------------------------------------------
  def process_custom_command(command)
    return unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(command[0])
    show = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][1]
    continue = show <= 0 ? true : $game_switches[show]
    return unless continue
    text = command[1]
    switch = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][0]
    enabled = switch <= 0 ? true : $game_switches[switch]
    add_command(text, command[0], enabled)
  end
  
  #--------------------------------------------------------------------------
  # update
  #--------------------------------------------------------------------------
  def update
    super
    update_item_window
  end
  
  #--------------------------------------------------------------------------
  # update_item_window
  #--------------------------------------------------------------------------
  def update_item_window
    return if @item_window.nil?
    return if @current_index == current_symbol
    @current_index = current_symbol
    @item_window.refresh
  end
  
  #--------------------------------------------------------------------------
  # item_window=
  #--------------------------------------------------------------------------
  def item_window=(window)
    @item_window = window
    update
  end
  
  #--------------------------------------------------------------------------
  # update_help
  #--------------------------------------------------------------------------
  def update_help
    return if @actor.nil?
    @help_window.set_text(@actor.actor.description)
  end
  
end # Window_StatusCommand

#==============================================================================
# ■ Window_StatusActor
#==============================================================================

class Window_StatusActor < Window_Base
  
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(dx, dy)
    super(dx, dy, window_width, fitting_height(4))
    @actor = nil
  end
  
  #--------------------------------------------------------------------------
  # window_width
  #--------------------------------------------------------------------------
  def window_width; return Graphics.width - 160; end
  
  #--------------------------------------------------------------------------
  # actor=
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
  
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    return unless @actor
    draw_actor_face(@actor, 0, 0)
    draw_actor_simple_status(@actor, 108, line_height / 2)
  end
  
end # Window_StatusActor

#==============================================================================
# ■ Window_StatusItem
#==============================================================================

class Window_StatusItem < Window_Base
  
  #--------------------------------------------------------------------------
  # initialize
  #--------------------------------------------------------------------------
  def initialize(dx, dy, command_window)
    super(dx, dy, Graphics.width, Graphics.height - dy)
    @command_window = command_window
    @actor = nil
    refresh
  end
  
  #--------------------------------------------------------------------------
  # actor=
  #--------------------------------------------------------------------------
  def actor=(actor)
    return if @actor == actor
    @actor = actor
    refresh
  end
  
  #--------------------------------------------------------------------------
  # refresh
  #--------------------------------------------------------------------------
  def refresh
    contents.clear
    reset_font_settings
    return unless @actor
    draw_window_contents
  end
  
  #--------------------------------------------------------------------------
  # draw_window_contents
  #--------------------------------------------------------------------------
  def draw_window_contents
    case @command_window.current_symbol
    when :general
      draw_actor_general
    when :parameters
      draw_parameter_graph
    when :properties
      draw_properties_list
    when :biography, :rename, :retitle
      draw_actor_biography
#-#-#-#-# MY ADDITIONS #-#-#-#-#
    when :elementratesZ
      draw_element_rates
    when :statusratesZ
      draw_status_rates
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#  
    else
      draw_custom
    end
  end
  
  #--------------------------------------------------------------------------
  # draw_actor_general
  #--------------------------------------------------------------------------
  def draw_actor_general
    change_color(system_color)
    text = YEA::STATUS::PARAMETERS_VOCAB
    draw_text(0, 0, contents.width/2, line_height, text, 1)
    text = YEA::STATUS::EXPERIENCE_VOCAB
    draw_text(contents.width/2, 0, contents.width/2, line_height, text, 1)
    draw_general_parameters
    draw_general_experience
  end
  
  #--------------------------------------------------------------------------
  # draw_general_parameters
  #--------------------------------------------------------------------------
  def draw_general_parameters
    dx = 24
    dy = line_height / 2
    draw_actor_level(dx, line_height*1+dy, contents.width/2 - 24)
    draw_actor_param(0, dx, line_height*2+dy, contents.width/2 - 24)
    draw_actor_param(1, dx, line_height*3+dy, contents.width/2 - 24)
    draw_actor_param(2, dx, line_height*4+dy, contents.width/4 - 12)
    draw_actor_param(4, dx, line_height*5+dy, contents.width/4 - 12)
    draw_actor_param(6, dx, line_height*6+dy, contents.width/4 - 12)
    dx += contents.width/4 - 12
    draw_actor_param(3, dx, line_height*4+dy, contents.width/4 - 12)
    draw_actor_param(5, dx, line_height*5+dy, contents.width/4 - 12)
    draw_actor_param(7, dx, line_height*6+dy, contents.width/4 - 12)
  end
  
  #--------------------------------------------------------------------------
  # draw_actor_level
  #--------------------------------------------------------------------------
  def draw_actor_level(dx, dy, dw)
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    draw_text(dx+4, dy, dw-8, line_height, Vocab::level)
    change_color(normal_color)
    draw_text(dx+4, dy, dw-8, line_height, @actor.level.group, 2)
  end
  
  #--------------------------------------------------------------------------
  # draw_actor_param
  #--------------------------------------------------------------------------
  def draw_actor_param(param_id, dx, dy, dw)
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    draw_text(dx+4, dy, dw-8, line_height, Vocab::param(param_id))
    change_color(normal_color)
    draw_text(dx+4, dy, dw-8, line_height, @actor.param(param_id).group, 2)
  end
  
  #--------------------------------------------------------------------------
  # draw_general_experience
  #--------------------------------------------------------------------------
  def draw_general_experience
    if @actor.max_level?
      s1 = @actor.exp.group
      s2 = "-------"
      s3 = "-------"
    else
      s1 = @actor.exp.group
      s2 = (@actor.next_level_exp - @actor.exp).group
      s3 = @actor.next_level_exp.group
    end
    s_next = sprintf(Vocab::ExpNext, Vocab::level)
    total_next_text = sprintf(YEA::STATUS::NEXT_TOTAL_VOCAB, Vocab::level)
    change_color(system_color)
    dx = contents.width/2 + 12
    dy = line_height * 3 / 2
    dw = contents.width/2 - 36
    draw_text(dx, dy + line_height * 0, dw, line_height, Vocab::ExpTotal)
    draw_text(dx, dy + line_height * 2, dw, line_height, s_next)
    draw_text(dx, dy + line_height * 4, dw, line_height, total_next_text)
    change_color(normal_color)
    draw_text(dx, dy + line_height * 1, dw, line_height, s1, 2)
    draw_text(dx, dy + line_height * 3, dw, line_height, s2, 2)
    draw_text(dx, dy + line_height * 5, dw, line_height, s3, 2)
  end
  
  #--------------------------------------------------------------------------
  # draw_parameter_graph
  #--------------------------------------------------------------------------
  def draw_parameter_graph
    draw_parameter_title
    dy = line_height * 3/2
    maximum = 1
    minimum = @actor.param_max(2)
    for i in 2..7
      maximum = [@actor.param(i), maximum].max
      minimum = [@actor.param(i), minimum].min
    end
    maximum += minimum * 0.33 unless maximum == minimum
    for i in 2..7
      rate = calculate_rate(maximum, minimum, i)
      dy = line_height * i - line_height/2
      draw_param_gauge(i, dy, rate)
      change_color(system_color)
      draw_text(28, dy, contents.width - 56, line_height, Vocab::param(i))
      dw = (contents.width - 48) * rate - 8
      change_color(normal_color)
      draw_text(28, dy, dw, line_height, @actor.param(i).group, 2)
    end
  end
  
  #--------------------------------------------------------------------------
  # calculate_rate
  #--------------------------------------------------------------------------
  def calculate_rate(maximum, minimum, param_id)
    return 1.0 if maximum == minimum
    rate = (@actor.param(param_id).to_f - minimum) / (maximum - minimum).to_f
    rate *= 0.67
    rate += 0.33
    return rate
  end
  
  #--------------------------------------------------------------------------
  # draw_param_gauge
  #--------------------------------------------------------------------------
  def draw_param_gauge(param_id, dy, rate)
    dw = contents.width - 48
    colour1 = param_gauge1(param_id)
    colour2 = param_gauge2(param_id)
    draw_gauge(24, dy, dw, rate, colour1, colour2)
  end
  
  #--------------------------------------------------------------------------
  # param_gauge1
  #--------------------------------------------------------------------------
  def param_gauge1(param_id)
    return YEA::STATUS::PARAM_COLOUR[param_id][1]
  end
  
  #--------------------------------------------------------------------------
  # param_gauge2
  #--------------------------------------------------------------------------
  def param_gauge2(param_id)
    return YEA::STATUS::PARAM_COLOUR[param_id][2]
  end
  
  #--------------------------------------------------------------------------
  # draw_parameter_title
  #--------------------------------------------------------------------------
  def draw_parameter_title
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(0, 0, contents.width, contents.height)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    text = YEA::STATUS::PARAMETERS_VOCAB
    draw_text(0, line_height/3, contents.width, line_height, text, 1)
  end
  
  #--------------------------------------------------------------------------
  # draw_properties_list
  #--------------------------------------------------------------------------
  def draw_properties_list
    contents.font.size = YEA::STATUS::PROPERTIES_FONT_SIZE
    draw_properties_column1
    draw_properties_column2
# REMOVED    draw_properties_column3
    reset_font_settings
  end
  
  #--------------------------------------------------------------------------
  # draw_properties_column1
  #--------------------------------------------------------------------------
  def draw_properties_column1
    dx = 24
     
     dw = (contents.width - 24) / 2 - 24 # ATTEMPT
#    dw = (contents.width - 24) / 3 - 24
    
    dy = 0
    for property in YEA::STATUS::PROPERTIES_COLUMN1
      dy = draw_property(property, dx, dy, dw)
    end
  end
  
  #--------------------------------------------------------------------------
  # draw_properties_column2
  #--------------------------------------------------------------------------
  def draw_properties_column2

#   dx = 24 + (contents.width - 24) / 3
    dx = 24 + (contents.width - 24) / 2    
    
    dw = (contents.width - 24) / 2 - 24
#   dw = (contents.width - 24) / 3 - 24            

    dy = 0
    for property in YEA::STATUS::PROPERTIES_COLUMN2
      dy = draw_property(property, dx, dy, dw)
    end
  end

# REMOVED COLUMN 3
  
#  #--------------------------------------------------------------------------
#  # draw_properties_column3
#  #--------------------------------------------------------------------------
#  def draw_properties_column3
#    dx = 24 + (contents.width - 24) / 3 * 2
#    dw = (contents.width - 24) / 3 - 24
#    dy = 0
#    for property in YEA::STATUS::PROPERTIES_COLUMN3
#      dy = draw_property(property, dx, dy, dw)
#    end
#  end
  
  #--------------------------------------------------------------------------
  # draw_property
  #--------------------------------------------------------------------------
  def draw_property(property, dx, dy, dw)
    fmt = "%1.0f%%" # CHANGED NO DECIMALS fmt = "%1.2f%%"
    case property[0]
    #---
    when :hit
      value = sprintf(fmt, @actor.hit * 100)
    when :eva
      value = sprintf(fmt, @actor.eva * 100)
    when :cri
      value = sprintf(fmt, @actor.cri * 100)
    when :cev
      value = sprintf(fmt, @actor.cev * 100)
    when :mev
      value = sprintf(fmt, @actor.mev * 100)
    when :mrf
      value = sprintf(fmt, @actor.mrf * 100)
    when :cnt
      value = sprintf(fmt, @actor.cnt * 100)
    when :hrg
      value = sprintf(fmt, @actor.hrg * 100)
    when :mrg
      value = sprintf(fmt, @actor.mrg * 100)
    when :trg
      value = sprintf(fmt, @actor.trg * 100)
    when :tgr
      value = sprintf(fmt, @actor.tgr * 100)
    when :grd
      value = sprintf(fmt, @actor.grd * 100)
    when :rec
      value = sprintf(fmt, @actor.rec * 100)
    when :pha
      value = sprintf(fmt, @actor.pha * 100)
    when :mcr
      value = sprintf(fmt, @actor.mcr * 100)
    when :tcr
      value = sprintf(fmt, @actor.tcr * 100)
    when :pdr
      value = sprintf(fmt, @actor.pdr * 100)
    when :mdr
      value = sprintf(fmt, @actor.mdr * 100)
    when :fdr
      value = sprintf(fmt, @actor.fdr * 100)
    when :exr
      value = sprintf(fmt, @actor.exr * 100)
    when :hcr
      return dy unless $imported["YEA-SkillCostManager"]
      value = sprintf(fmt, @actor.hcr * 100)
    when :tcr_y
      return dy unless $imported["YEA-SkillCostManager"]
      value = sprintf(fmt, @actor.tcr_y * 100)
    when :gcr
      return dy unless $imported["YEA-SkillCostManager"]
      value = sprintf(fmt, @actor.gcr * 100)
    when :cdr
      return dy unless $imported["YEA-SkillRestrictions"]
      value = sprintf(fmt, @actor.cdr * 100)
    when :wur
      return dy unless $imported["YEA-SkillRestrictions"]
      value = sprintf(fmt, @actor.wur * 100)
    #---
    else; return dy
    end
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    draw_text(dx+4, dy, dw-8, line_height, property[1], 0)
    change_color(normal_color)
    draw_text(dx+4, dy, dw-8, line_height, value, 2)
    return dy + line_height
  end
  
#-#-#-#-# MY ADDITIONS #-#-#-#-#

  #============================
  # - draw_element_rates    
  #============================
  def draw_element_rates
    contents.font.size = YEA::STATUS::ELEMENTS_FONT_SIZE
    draw_elements_column1
    reset_font_settings
  end

  #============================
  # - draw_elements_column1    
  #============================
  def draw_elements_column1
    dx = 72
    dw = (contents.width - 72) - 72
    dy = 0
    for property in YEA::STATUS::ELEMENTS_COLUMN1	#????? CHECK REDEFINE PROPERTY ??????
      dy = draw_elementsZ(property, dx, dy, dw)
    # DRAW ICONS
    draw_icon(136, 72, 0)
    draw_icon(137, 72, 24)
    draw_icon(138, 72, 48)
    draw_icon(139, 72, 72)
    draw_icon(140, 72, 96)
    draw_icon(141, 72, 120)
    draw_icon(142, 72, 144)
    draw_icon(143, 72, 168)
    end
  end

  #============================
  # - elementsZ    
  #============================
  def draw_elementsZ(property, dx, dy, dw)
    fmt = "%1.0f%%"
    case property[0]
    #---
    when :firZ
      value = sprintf(fmt, @actor.element_rate(3) * -100 + 100)
    when :iceZ
      value = sprintf(fmt, @actor.element_rate(4) * -100 + 100)
    when :thuZ
      value = sprintf(fmt, @actor.element_rate(5) * -100 + 100)
    when :watZ
      value = sprintf(fmt, @actor.element_rate(6) * -100 + 100)
    when :earZ
      value = sprintf(fmt, @actor.element_rate(7) * -100 + 100)
    when :winZ
      value = sprintf(fmt, @actor.element_rate(8) * -100 + 100)
    when :ligZ
      value = sprintf(fmt, @actor.element_rate(9) * -100 + 100)
    when :shaZ
      value = sprintf(fmt, @actor.element_rate(10) * -100 + 100)
    #---
    else; return dy
    end
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    draw_text(dx+4, dy, dw-8, line_height, property[1], 0)
    change_color(normal_color)
    draw_text(dx+4, dy, dw-8, line_height, value, 2)
    return dy + line_height
  end
  
  #============================
  # - draw_status_rates    
  #============================
  def draw_status_rates
    contents.font.size = YEA::STATUS::STATES_FONT_SIZE
    draw_states_column1
    draw_states_column2
    reset_font_settings
  end

  #============================
  # - draw_states_column1    
  #============================
  def draw_states_column1
  dx = 24
    dw = (contents.width - 24) / 2 - 24
    dy = 0
    for property in YEA::STATUS::STATES_COLUMN1
      dy = draw_statesZ(property, dx, dy, dw)
    #DRAW ICONS
    draw_icon(22, 24, 0) # ill
    draw_icon(21, 24, 24) # poison
    draw_icon(38, 24, 48) # cry
    draw_icon(39, 24, 72) # mute
    draw_icon(11, 24, 96) # angry
    draw_icon(10, 24, 120) # irrational
    end
  end

  #============================
  # - draw_states_column2    
  #============================
  def draw_states_column2
  dx = 24 + (contents.width - 24) / 2
    dw = (contents.width - 24) / 2 - 24
    dy = 0
    for property in YEA::STATUS::STATES_COLUMN2
      dy = draw_statesZ(property, dx, dy, dw)
    # DRAW ICONS
    draw_icon(9, 320, 0) # brainwashed
    draw_icon(25, 320, 24) # held
    draw_icon(26, 320, 48) # knocked down
    draw_icon(14, 320, 72) # stun
    draw_icon(15, 320, 96) # sleep
    draw_icon(6, 320, 120) # salt 
    end
  end

  #============================
  # - statesZ    
  #============================
def draw_statesZ(property, dx, dy, dw)
    fmt = "%1.0f%%"
    case property[0]
    when :illz # 21
      value = sprintf(fmt, (@actor.state_resist?(21)? 1:0) * 100)
    when :poiz # 20
      value = sprintf(fmt, (@actor.state_resist?(20)? 1:0) * 100)
    when :cryz # 37
      value = sprintf(fmt, (@actor.state_resist?(37)? 1:0) * 100)
    when :mutz # 38
      value = sprintf(fmt, (@actor.state_resist?(38)? 1:0) * 100)
    when :angz # 10
      value = sprintf(fmt, (@actor.state_resist?(10)? 1:0) * 100)
    when :irrz # 9
      value = sprintf(fmt, (@actor.state_resist?(9)? 1:0) * 100)
    when :braz # 8
      value = sprintf(fmt, (@actor.state_resist?(8)? 1:0) * 100)
    when :helz # 24
      value = sprintf(fmt, (@actor.state_resist?(24)? 1:0) * 100)
    when :knoz # 25
      value = sprintf(fmt, (@actor.state_resist?(25)? 1:0) * 100)
    when :stuz # 13
      value = sprintf(fmt, (@actor.state_resist?(13)? 1:0) * 100)
    when :slez # 14
      value = sprintf(fmt, (@actor.state_resist?(14)? 1:0) * 100)
    when :salz # 5
      value = sprintf(fmt, (@actor.state_resist?(5)? 1:0) * 100)
    #---
    else; return dy
    end
    colour = Color.new(0, 0, 0, translucent_alpha/2)
    rect = Rect.new(dx+1, dy+1, dw-2, line_height-2)
    contents.fill_rect(rect, colour)
    change_color(system_color)
    draw_text(dx+4, dy, dw-8, line_height, property[1], 0)
    change_color(normal_color)
    draw_text(dx+4, dy, dw-8, line_height, value, 2)
    return dy + line_height
  end
  
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#    
  
  #--------------------------------------------------------------------------
  # draw_actor_biography
  #--------------------------------------------------------------------------
  def draw_actor_biography
    fmt = YEA::STATUS::BIOGRAPHY_NICKNAME_TEXT
    text = sprintf(fmt, @actor.name, @actor.nickname)
    contents.font.size = YEA::STATUS::BIOGRAPHY_NICKNAME_SIZE
    draw_text(0, 0, contents.width, line_height*2, text, 1)
    reset_font_settings
    draw_text_ex(24, line_height*2, @actor.description)
  end
  
  #--------------------------------------------------------------------------
  # draw_custom
  #--------------------------------------------------------------------------
  def draw_custom
    current_symbol = @command_window.current_symbol
    return unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(current_symbol)
    method(YEA::STATUS::CUSTOM_STATUS_COMMANDS[current_symbol][3]).call
  end
  
  #--------------------------------------------------------------------------
  # draw_custom1
  #--------------------------------------------------------------------------
  def draw_custom1
    dx = 0; dy = 0
    for skill in @actor.skills
      next if skill.nil?
      next unless @actor.added_skill_types.include?(skill.stype_id)
      draw_item_name(skill, dx, dy)
      dx = dx == contents.width / 2 + 16 ? 0 : contents.width / 2 + 16
      dy += line_height if dx == 0
      return if dy + line_height > contents.height
    end
  end
  
  #--------------------------------------------------------------------------
  # draw_custom2
  #--------------------------------------------------------------------------
  def draw_custom2
    dx = 4; dy = 0; slot_id = 0
    for equip in @actor.equips
      change_color(system_color)
      text = Vocab.etype(@actor.equip_slots[slot_id])
      draw_text(dx, dy, contents.width - dx, line_height, text)
      reset_font_settings
      draw_item_name(equip, dx+92, dy) unless equip.nil?
      slot_id += 1
      dy += line_height
      break if dy + line_height > contents.height
    end
    dw = Graphics.width * 2 / 5 - 24
    dx = contents.width - dw; dy = 0
    param_id = 0
    8.times do
      colour = Color.new(0, 0, 0, translucent_alpha/2)
      rect = Rect.new(dx+1, dy+1, dw - 2, line_height - 2)
      contents.fill_rect(rect, colour)
      size = $imported["YEA-AceEquipEngine"] ? YEA::EQUIP::STATUS_FONT_SIZE : 20
      contents.font.size = size
      change_color(system_color)
      draw_text(dx+4, dy, dw, line_height, Vocab::param(param_id))
      change_color(normal_color)
      dwa = (Graphics.width * 2 / 5 - 2) / 2
      draw_text(dx, dy, dwa, line_height, @actor.param(param_id).group, 2)
      reset_font_settings
      change_color(system_color)
      draw_text(dx + dwa, dy, 22, line_height, "→", 1)
      param_id += 1
      dy += line_height
      break if dy + line_height > contents.height
    end
  end
  
  #--------------------------------------------------------------------------
  # draw_custom3
  #--------------------------------------------------------------------------
  def draw_custom3
    return unless $imported["YEA-ClassSystem"]
    data = []
    for class_id in YEA::CLASS_SYSTEM::CLASS_ORDER
      next if $data_classes[class_id].nil?
      item = $data_classes[class_id]
      next unless @actor.unlocked_classes.include?(item.id) or 
        YEA::CLASS_SYSTEM::DEFAULT_UNLOCKS.include?(item.id)
      data.push(item)
    end
    dx = 0; dy = 0; class_index = 0
    for class_id in data
      item = data[class_index]
      reset_font_settings
      if item == @actor.class
        change_color(text_color(YEA::CLASS_SYSTEM::CURRENT_CLASS_COLOUR))
      elsif item == @actor.subclass
        change_color(text_color(YEA::CLASS_SYSTEM::SUBCLASS_COLOUR))
      else
        change_color(normal_color)
      end
      icon = item.icon_index
      draw_icon(icon, dx, dy)
      text = item.name
      draw_text(24, dy, contents.width-24, line_height, text)
      next if YEA::CLASS_SYSTEM::MAINTAIN_LEVELS
      level = @actor.class_level(item.id)
      contents.font.size = YEA::CLASS_SYSTEM::LEVEL_FONT_SIZE
      text = sprintf(YEA::CLASS_SYSTEM::CLASS_LEVEL, level.group)
      dwa = contents.width - (Graphics.width * 2 / 5 - 24) - 28
      draw_text(dx, dy, dwa, line_height, text, 2)
      class_index += 1
      dy += line_height
      break if dy + line_height > contents.height
    end
    dw = Graphics.width * 2 / 5 - 24
    dx = contents.width - dw; dy = 0
    param_id = 0
    8.times do
      colour = Color.new(0, 0, 0, translucent_alpha/2)
      rect = Rect.new(dx+1, dy+1, dw - 2, line_height - 2)
      contents.fill_rect(rect, colour)
      contents.font.size = YEA::CLASS_SYSTEM::PARAM_FONT_SIZE
      change_color(system_color)
      draw_text(dx+4, dy, dw, line_height, Vocab::param(param_id))
      change_color(normal_color)
      dwa = (Graphics.width * 2 / 5 - 2) / 2
      draw_text(dx, dy, dwa, line_height, @actor.param(param_id).group, 2)
      reset_font_settings
      change_color(system_color)
      draw_text(dx + dwa, dy, 22, line_height, "→", 1)
      param_id += 1
      dy += line_height
      break if dy + line_height > contents.height
    end
  end
  
end # Window_StatusItem

#==============================================================================
# ■ Scene_Status
#==============================================================================

class Scene_Status < Scene_MenuBase
  
  #--------------------------------------------------------------------------
  # start
  #--------------------------------------------------------------------------
  def start
    super
    create_help_window
    create_command_window
    create_status_window
    create_item_window
    relocate_windows
  end
  
  #--------------------------------------------------------------------------
  # create_command_window
  #--------------------------------------------------------------------------
  def create_command_window
    wy = @help_window.height
    @command_window = Window_StatusCommand.new(0, wy)
    @command_window.viewport = @viewport
    @command_window.actor = @actor
    @command_window.help_window = @help_window
    @command_window.set_handler(:cancel,   method(:return_scene))
    @command_window.set_handler(:pagedown, method(:next_actor))
    @command_window.set_handler(:pageup,   method(:prev_actor))
    process_custom_status_commands
  end
  
  #--------------------------------------------------------------------------
  # process_custom_status_commands
  #--------------------------------------------------------------------------
  def process_custom_status_commands
    for command in YEA::STATUS::COMMANDS
      next unless YEA::STATUS::CUSTOM_STATUS_COMMANDS.include?(command[0])
      called_method = YEA::STATUS::CUSTOM_STATUS_COMMANDS[command[0]][2]
      @command_window.set_handler(command[0], method(called_method))
    end
  end
  
  #--------------------------------------------------------------------------
  # create_status_window
  #--------------------------------------------------------------------------
  def create_status_window
    wy = @help_window.height
    @status_window = Window_StatusActor.new(@command_window.width, wy)
    @status_window.viewport = @viewport
    @status_window.actor = @actor
  end
  
  #--------------------------------------------------------------------------
  # create_item_window
  #--------------------------------------------------------------------------
  def create_item_window
    dy = @command_window.y + @command_window.height
    @item_window = Window_StatusItem.new(0, dy, @command_window)
    @item_window.viewport = @viewport
    @item_window.actor = @actor
    @command_window.item_window = @item_window
  end
  
  #--------------------------------------------------------------------------
  # relocate_windows
  #--------------------------------------------------------------------------
  def relocate_windows
    return unless $imported["YEA-AceMenuEngine"]
    case Menu.help_window_location
    when 0 # Top
      @help_window.y = 0
      @command_window.y = @help_window.height
      @item_window.y = @command_window.y + @command_window.height
    when 1 # Middle
      @command_window.y = 0
      @help_window.y = @command_window.height
      @item_window.y = @help_window.y + @help_window.height
    else # Bottom
      @command_window.y = 0
      @item_window.y = @command_window.height
      @help_window.y = @item_window.y + @item_window.height
    end
    @status_window.y = @command_window.y
  end
  
  #--------------------------------------------------------------------------
  # on_actor_change
  #--------------------------------------------------------------------------
  def on_actor_change
    @command_window.actor = @actor
    @status_window.actor = @actor
    @item_window.actor = @actor
    @command_window.activate
  end
  
  #--------------------------------------------------------------------------
  # new method: command_name1
  #--------------------------------------------------------------------------
  def command_name1
    SceneManager.call(Scene_Skill)
  end
  
  #--------------------------------------------------------------------------
  # new method: command_name2
  #--------------------------------------------------------------------------
  def command_name2
    SceneManager.call(Scene_Equip)
  end
  
  #--------------------------------------------------------------------------
  # new method: command_name3
  #--------------------------------------------------------------------------
  def command_name3
    unless $imported["YEA-ClassSystem"]
      @command_window.activate
      return
    end
    SceneManager.call(Scene_Class)
  end
  
end # Scene_Status

#==============================================================================
# 
# ▼ End of File
# 
#=============================================================================

 

 

Edited by Japhasca
Recopied source code into code blocks.

Share this post


Link to post
Share on other sites

Please place all that code into a code block which goes into a spoiler. If you don't it can mess up formatting and turn some of the code into emoji's.

image.png.9702bacd0f90bafe2d4fb65b9f61f24a.png

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
Top ArrowTop Arrow Highlighted