Jump to content
New account registrations are disabed. This website is now an archive. Read more here.
Sign in to follow this  
Midnite Reaper

Shanghai & Melody scripts.

Recommended Posts

After a quick search on this site, I found that these scripts weren't here, so I have decided to give a link.

 

NOTE: I claim no credits for these scripts.

The melody scripts - Credit should go to Yanfly

The shanghai scripts - Credit not due but do not claim as own.

 

Terms of use:

Melody:

Status Menu Melody along with other Yanfly Engine scripts may be used for both non-commercial and commercial games. Providing credit is not necessary, but please do not claim credit.

 

Shanghai:

This script can be used for both non-commercial and commercial games. Credit does not need to be due for a Shanghai Simple Script.

 

The scripts:

Melody Main Menu

Melody Status Menu

Melody Battle Engine

Shanghai Status Menu

Shanghai Main Menu

 

Script and required images are in the link.

 

Alternatively, the scripts are in the spoiler.

 

 

 

Melody Main Menu

 

 

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

#

# Yanfly Engine Melody - Main Menu Melody

# Last Date Updated: 2010.06.13

# Level: Normal, Hard, Lunatic

#

# This script allows for menu item reordering along with importing in custom

# script scenes with ease so that there becomes little need to change the base

# menu script in order to add in a few items. This is a YEM version of the

# popular KGC Custom Menu Command. No credits will be taken on part of my own

# behalf for the work KGC did. All I merely did was use it to extend the

# capabilities of adding in common events, imported commands, and beefed up

# engine efficiency.

#

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

# Updates

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

# o 2010.06.13 - Bugfix regarding imported commands and common events.

# o 2010.05.15 - Conversion to Yanfly Engine Melody.

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

# Instructions

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

# To install this script, open up your script editor and copy/paste this script

# to an open slot below ▼ Materials but above ▼ Main. Considering the special

# nature of this script, it is highly recommended that you place this script

# above all non-core scripts. Remember to save.

#

# Scroll down and edit the module as you see fitting for your game.

#

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

# Debug Shortcuts - Only during $TEST and $BTEST mode

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

# During testplay mode, pressing F5 while the main menu is active will fill

# all party members' HP and MP to full.

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

 

$imported = {} if $imported == nil

$imported["MainMenuMelody"] = true

 

module YEM

module MENU

 

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

# Section I. Menu Commands

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

# Adjust the following hash to modify which commands will appear where. Use

# the following table to input in the commands as you see fit.

#

# :items ............Default Item Menu

# :skill ............Default Skill Menu

# :equip ............Default Equip menu

# :status ...........Default Status Menu

# :save .............Default Save Menu

# :system ...........Default Game End Menu

#

# For those that have imported KGC scripts.

#

# :kgc_largeparty ...Requires KGC's Large Party

# :kgc_apviewer .....Requires KGC's Equip Learn Skill

# :kgc_skillcp ......Requires KGC's Skill CP System

# :kgc_difficulty ...Requires KGC's Battle Difficulty

# :kgc_distribute ...Requires KGC's Distribute Parameter

# :kgc_enemyguide ...Requires KGC's Enemy Guide

# :kgc_outline ......Requires KGC's Outline

#

# For those who are still attached to the YERD scripts.

#

# :yerd_classchange .Requires YERD Subclass Selection System

# :yerd_learnskill ..Requires YERD Subclass Selection System

# :yerd_equipslots ..Requires YERD Equip Skill Slots

# :yerd_bestiary ....Requires YERD Bestiary + Scanned Enemy

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

MENU_COMMANDS =[ # Follow the instructions above.

:items, # Default Item Menu

:status, # Default Status Menu

:skill, # Default Skill Menu

:equip, # Default Equip menu

:event2, # Common Event

:save, # Default Save Menu

:system, # Default Game End Menu

] # Do not remove this.

 

# This will determine whether or not your menu uses icons.

USE_ICONS = true

 

# If you're using icons, adjust the following hash to bind the right icons

# to the right command.

MENU_ICONS ={ # If an icon is not present, it will use the unused icon.

:unused => 176,

:items => 144,

:skill => 159,

:equip => 44,

:status => 137,

:save => 149,

:system => 134,

} # Do not remove this.

 

# This is the maximum number of rows to be displayed before the command

# box will be cut off.

MAX_ROWS = 10

 

# Set the alignment for the text in your menu. By default, alignment is 0.

# 0..Left Align, 1..Center Align, 2..Right Align

ALIGN = 0

 

# Setting this to true will cause the menu to shift to the right side of

# the screen while moving the party status window over to the left side.

MENU_RIGHT_SIDE = true

 

# If this is set to true, the menu will not obscure the map until actor

# selection is required. Events on the map will be frozen in place.

ON_SCREEN_MENU = true

 

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

# Section II.A. Custom Menu Command - Lunatic Mode - Common Events

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

# For those who would like to launch command events from the main menu,

# modify this hash here to fit your liking. Then, add in the newly added

# method to the MENU_COMMANDS array above.

#

# HideSw - This is the hide switch. Set to nil to not use a switch.

# DisbSw - This is the disable switch. Set to nil to not use a switch.

# Debug? - This item will only appear if it's $TEST mode.

# CEvent - This is the common event that will launch.

# Icon - This is the icon used if the option is given.

# Title - This is the text that will appear.

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

COMMON_EVENTS ={ # Follow the instructions above.

# Method => [HideSw, DisbSw, Debug?, CEvent, Icon, Title Name]

:event1 => [ nil, nil, true, 11, 101, "Debug"],

:event2 => [ nil, nil, false, 12, 117, "Camp"],

} # Do not remove this.

 

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

# Section II.B. Custom Menu Command - Lunatic Mode - Imported Commands

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

# The following is what KGC originally was going to have in his script but

# was actually missing it in his publicized script. This will regain

# functionality and also lift the "limit" of only 100 extra commands. The

# following will explain how to set up the individual options.

#

# HideSw - Switch used to hide the command. Set to nil if not used.

# DisbSw - Switch used to disable the command. Set to nil if not used.

# Actor? - Does this select an actor. Set to true if it does.

# Icon - Determines what icon will be used for this item.

# Title - The title text that appears for the event.

# Scene - The scene used to launch the respective scene.

#

# Note that this does not automatically detect what will and will not

# disable the command ingame. You must understand and create a work

# around with them (if they do disable the commands) with switches.

# After binding your imported commands, go back to MENU_COMMANDS and

# insert the proper command ID at the proper location.

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

IMPORTED_COMMANDS ={ # Follow the instructions above.

# Method => [HideSw, DisbSw, Actor?, Icon, Title Name, Scene Name.new]

:quests => [ 8, 9, false, 99, "Quests", "Scene_Quest"],

:faction => [ 10, 11, false, 100, "Factions", "Scene_Factions"],

:row => [ nil, nil, false, 101, "Rows", "Scene_Row"],

:record => [ nil, nil, false, 102, "Records", "Scene_Record"],

:craft => [ nil, nil, false, 103, "Crafting", "Scene_Crafting"],

} # Do not remove this.

 

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

# Section III.A. Multi Variable Window

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

# Imported straight from Scene Menu ReDux, this alters the gold window at

# the bottom to display variables, time, steps, etc. This window appears

# at the bottom of the screen.

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

USE_MULTI_VARIABLE_WINDOW = true

 

# Variables will be shown in this order. Use 0 to show gold. Adjust the

# following information as seen necessary.

VARIABLES_SHOWN = [-5, -1, -2, 0]

VARIABLES_ICONS = true

VARIABLES_HASH ={ # Note that value zero must exist.

# VarID => [icon, Text]

-5 => [ 153, "Map"],

-2 => [ 48, "Steps"],

-1 => [ 188, "Time"],

0 => [ 205, "Gold"],

1 => [ 200, "Jewels"],

}# Do not remove this.

 

end # MENU

end # YEM

 

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

# Editting anything past this point may potentially result in causing computer

# damage, incontinence, explosion of user's head, coma, death, and/or halitosis.

# Therefore, edit at your own risk.

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

 

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

# Scene_Menu

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

 

class Scene_Menu < Scene_Base

 

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

# new method: create_command_list

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

def create_command_list

vocab = []

commands = []

icons = []

index_list = {}

YEM::MENU::MENU_COMMANDS.each_with_index { |c,i|

case c

when :items

index_list[:items] = commands.size

vocab.push(Vocab.item)

 

when :skill # Skills

index_list[:skill] = commands.size

vocab.push(Vocab.skill)

 

when :equip # Equip

index_list[:equip] = commands.size

vocab.push(Vocab.equip)

 

when :status # Status

index_list[:status] = commands.size

vocab.push(Vocab.status)

 

when :save # Save

index_list[:save] = commands.size

vocab.push(Vocab.save)

 

when :system # System

index_list[:system] = commands.size

vocab.push(Vocab.game_end)

 

#----- KGC Imported Scripts -----

 

when :kgc_largeparty # KGC's Large Party

next unless $imported["LargeParty"]

index_list[:partyform] = commands.size

@__command_partyform_index = commands.size

vocab.push(Vocab.partyform)

 

when :kgc_apviewer # KGC's AP Viewer

next unless $imported["EquipLearnSkill"]

index_list[:ap_viewer] = commands.size

@__command_ap_viewer_index = commands.size

vocab.push(Vocab.ap_viewer)

 

when :kgc_skillcp # KGC's CP Skill System

next unless $imported["SkillCPSystem"]

index_list[:set_battle_skill] = commands.size

@__command_set_battle_skill_index = commands.size

vocab.push(Vocab.set_battle_skill)

 

when :kgc_difficulty # KGC's Battle Difficulty

next unless $imported["BattleDifficulty"]

index_list[:set_difficulty] = commands.size

@__command_set_difficulty_index = commands.size

vocab.push(KGC::BattleDifficulty.get[:name])

 

when :kgc_distribute # KGC's Distribute Parameter

next unless $imported["DistributeParameter"]

index_list[:distribute_parameter] = commands.size

@__command_distribute_parameter_index = commands.size

vocab.push(Vocab.distribute_parameter)

 

when :kgc_enemyguide # KGC's Enemy Guide

next unless $imported["EnemyGuide"]

index_list[:enemy_guide] = commands.size

@__command_enemy_guide_index = commands.size

vocab.push(Vocab.enemy_guide)

 

when :kgc_outline # KGC's Outline

next unless $imported["Outline"]

index_list[:outline] = commands.size

@__command_outline_index = commands.size

vocab.push(Vocab.outline)

 

#----- YERD Imported Scripts -----

 

when :yerd_classchange # Yanfly Subclass Class Change

next unless $imported["SubclassSelectionSystem"]

next unless YE::SUBCLASS::MENU_CLASS_CHANGE_OPTION

next unless $game_switches[YE::SUBCLASS::ENABLE_CLASS_CHANGE_SWITCH]

index_list[:classchange] = commands.size

@command_class_change = commands.size

vocab.push(YE::SUBCLASS::MENU_CLASS_CHANGE_TITLE)

 

when :yerd_learnskill # Yanfly Subclass Learn Skill

next unless $imported["SubclassSelectionSystem"]

next unless YE::SUBCLASS::USE_JP_SYSTEM and

YE::SUBCLASS::LEARN_SKILL_OPTION

next unless $game_switches[YE::SUBCLASS::ENABLE_LEARN_SKILLS_SWITCH]

index_list[:learnskill] = commands.size

@command_learn_skill = commands.size

vocab.push(YE::SUBCLASS::LEARN_SKILL_TITLE)

 

when :yerd_equipslots # Yanfly Equip Skill System

next unless $imported["EquipSkillSlots"]

next unless $game_switches[YE::EQUIPSKILL::ENABLE_SLOTS_SWITCH]

index_list[:equipskill] = commands.size

@command_equip_skill = commands.size

vocab.push(YE::EQUIPSKILL::MENU_TITLE)

 

when :yerd_bestiary # Yanfly Bestiary

next unless $imported["DisplayScannedEnemy"]

next unless $game_switches[YE::MENU::MONSTER::BESTIARY_SWITCH]

index_list[:bestiary] = commands.size

@command_bestiary = commands.size

vocab.push(YE::MENU::MONSTER::BESTIARY_TITLE)

 

else # ---- Custom Commands ----

if YEM::MENU::COMMON_EVENTS.include?©

common_event = YEM::MENU::COMMON_EVENTS[c]

next if !$TEST and common_event[2]

next if common_event[0] != nil and $game_switches[common_event[0]]

index_list[c] = commands.size

vocab.push(common_event[5])

elsif YEM::MENU::IMPORTED_COMMANDS.include?©

command_array = YEM::MENU::IMPORTED_COMMANDS[c]

next if command_array[0] != nil and $game_switches[command_array[0]]

index_list[c] = commands.size

vocab.push(command_array[4])

else; next

end

 

end

commands.push©

icons.push(menu_icon©)

} # YEM::MENU::MENU_COMMANDS.each_with_index

$game_temp.menu_command_index = index_list

@menu_array = [vocab, commands, icons]

end

 

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

# new method: menu_icon

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

def menu_icon(command)

if YEM::MENU::MENU_ICONS.include?(command)

return YEM::MENU::MENU_ICONS[command]

elsif YEM::MENU::COMMON_EVENTS.include?(command)

return YEM::MENU::COMMON_EVENTS[command][4]

elsif YEM::MENU::IMPORTED_COMMANDS.include?(command)

return YEM::MENU::IMPORTED_COMMANDS[command][3]

else

return YEM::MENU::MENU_ICONS[:unused]

end

end

 

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

# overwrite method: create_command_window

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

def create_command_window

create_command_list

@command_window = Window_MenuCommand.new(@menu_array)

@command_window.height = [@command_window.height,

YEM::MENU::MAX_ROWS * 24 + 32].min

@command_window.index = [@menu_index, @menu_array[0].size - 1].min

end

 

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

# overwrite method: update_command_selection

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

def update_command_selection

if Input.trigger?(Input::B)

check_debug_enable

Sound.play_cancel

$scene = Scene_Map.new

elsif $TEST and Input.trigger?(Input::F5) # Debug Refresh Party

Sound.play_recovery

for member in $game_party.members

member.hp += member.maxhp

member.mp += member.maxmp

end

@status_window.refresh

elsif Input.trigger?(Input::C)

command = @command_window.method

case command

when :items # Item Command

Sound.play_decision

$scene = Scene_Item.new

when :skill, :equip, :status # Skill, Equip, and Status Commands

Sound.play_decision

start_actor_selection

when :save # Save Command

if $game_system.save_disabled

Sound.play_buzzer

else

Sound.play_decision

$game_temp.menu_command_index[:save]

$scene = Scene_File.new(true, false, false)

end

when :system # System Command

Sound.play_decision

$scene = Scene_End.new

else # Custom Commands

if YEM::MENU::COMMON_EVENTS.include?(command)

array = YEM::MENU::COMMON_EVENTS[command]

if array[1] != nil and $game_switches[array[1]]

Sound.play_buzzer

else

Sound.play_decision

$game_temp.common_event_id = array[3]

$scene = Scene_Map.new

end

elsif YEM::MENU::IMPORTED_COMMANDS.include?(command)

array = YEM::MENU::IMPORTED_COMMANDS[command]

if array[1] != nil and $game_switches[array[1]]

Sound.play_buzzer

else

Sound.play_decision

if array[2]

start_actor_selection

else

$scene = eval(array[5] + ".new")

end

end

end

 

end # if case check

end # end if

end # end update_command_selection

 

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

# overwrite method: update_actor_selection

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

def update_actor_selection

if Input.trigger?(Input::B)

Sound.play_cancel

end_actor_selection

@status_window.close if YEM::MENU::ON_SCREEN_MENU

elsif $TEST and Input.trigger?(Input::F5) # Debug Refresh Party

Sound.play_recovery

for member in $game_party.members

member.hp += member.maxhp

member.mp += member.maxmp

end

@status_window.refresh

elsif Input.trigger?(Input::C)

$game_party.last_actor_index = @status_window.index

Sound.play_decision

command = @command_window.method

case command

when :skill # Skill Command

$scene = Scene_Skill.new(@status_window.index)

when :equip # Equip Command

$scene = Scene_Equip.new(@status_window.index)

when :status # Status Command

$scene = Scene_Status.new(@status_window.index)

else # Custom Commands

if YEM::MENU::IMPORTED_COMMANDS.include?(command)

array = YEM::MENU::IMPORTED_COMMANDS[command]

$scene = eval(array[5] + ".new(@status_window.index)")

end

end

 

end

end

 

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

# overwrite method: start

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

def start

super

create_menu_background

create_command_window

if YEM::MENU::USE_MULTI_VARIABLE_WINDOW

@gold_window = Window_MultiVariableWindow.new

else

@gold_window = Window_Gold.new(0, 360)

end

@status_window = Window_MenuStatus.new(160, 0)

@right_side = YEM::MENU::MENU_RIGHT_SIDE

if YEM::MENU::ON_SCREEN_MENU

@gold_window.y = @command_window.height

@status_window.openness = 0

@right_side = true if $game_player.screen_x <= 176

@right_side = false if $game_player.screen_x >= 368

$game_temp.on_screen_menu = false

end

if @right_side

@status_window.x = 0

@command_window.x = 384

@gold_window.x = 384

end

end

 

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

# alias method: start_actor_selection

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

alias start_actor_selection_mmz start_actor_selection unless $@

def start_actor_selection

if YEM::MENU::ON_SCREEN_MENU

@status_window.open

end

start_actor_selection_mmz

end

 

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

# new method: create_menu_background

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

if YEM::MENU::ON_SCREEN_MENU

def create_menu_background

@menuback_sprite = Spriteset_Map.new

end

end

 

end # Scene_Menu

 

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

# Imported from KGC's Custom Menu Command

# to improve compatibility amongst KGC scripts

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

$imported["CustomMenuCommand"] = true

class Game_Temp

attr_accessor :menu_command_index

attr_accessor :next_scene_actor_index

attr_accessor :on_screen_menu

 

alias initialize_KGC_CustomMenuCommand initialize unless $@

def initialize

initialize_KGC_CustomMenuCommand

@menu_command_index = {}

@next_scene_actor_index = 0

end

end

 

module KGC

module Commands

module_function

def call_item

return if $game_temp.in_battle

$game_temp.next_scene = :menu_item

$game_temp.next_scene_actor_index = 0

$game_temp.menu_command_index = {}

end

def call_skill(actor_index = 0)

return if $game_temp.in_battle

$game_temp.next_scene = :menu_skill

$game_temp.next_scene_actor_index = actor_index

$game_temp.menu_command_index = {}

end

def call_equip(actor_index = 0)

return if $game_temp.in_battle

$game_temp.next_scene = :menu_equip

$game_temp.next_scene_actor_index = actor_index

$game_temp.menu_command_index = {}

end

def call_status(actor_index = 0)

return if $game_temp.in_battle

$game_temp.next_scene = :menu_status

$game_temp.next_scene_actor_index = actor_index

$game_temp.menu_command_index = {}

end

end

end

 

class Game_Interpreter

include KGC::Commands

end

 

class Scene_Map < Scene_Base

alias update_scene_change_KGC_CustomMenuCommand update_scene_change unless $@

def update_scene_change

return if $game_player.moving?

case $game_temp.next_scene

when :menu_item

call_menu_item

when :menu_skill

call_menu_skill

when :menu_equip

call_menu_equip

when :menu_status

call_menu_status

else

update_scene_change_KGC_CustomMenuCommand

end

end

alias call_menu_mmz call_menu unless $@

def call_menu

$game_temp.on_screen_menu = true if YEM::MENU::ON_SCREEN_MENU

call_menu_mmz

end

def call_menu_item

$game_temp.next_scene = nil

$scene = Scene_Item.new

end

def call_menu_skill

$game_temp.next_scene = nil

$scene = Scene_Skill.new($game_temp.next_scene_actor_index)

$game_temp.next_scene_actor_index = 0

end

def call_menu_equip

$game_temp.next_scene = nil

$scene = Scene_Equip.new($game_temp.next_scene_actor_index)

$game_temp.next_scene_actor_index = 0

end

def call_menu_status

$game_temp.next_scene = nil

$scene = Scene_Status.new($game_temp.next_scene_actor_index)

$game_temp.next_scene_actor_index = 0

end

end

 

class Scene_Menu < Scene_Base

def check_debug_enable

return unless Input.press?(Input::F5)

return unless Input.press?(Input::F9)

$TEST = true

end

end

 

class Scene_Item < Scene_Base

def return_scene

if $game_temp.menu_command_index.has_key?(:items)

$scene = Scene_Menu.new($game_temp.menu_command_index[:items])

else

$scene = Scene_Map.new

end

end

end

 

class Scene_Skill < Scene_Base

def return_scene

if $game_temp.menu_command_index.has_key?(:skill)

$scene = Scene_Menu.new($game_temp.menu_command_index[:skill])

else

$scene = Scene_Map.new

end

end

end

 

class Scene_Equip < Scene_Base

def return_scene

if $game_temp.menu_command_index.has_key?(:equip)

$scene = Scene_Menu.new($game_temp.menu_command_index[:equip])

else

$scene = Scene_Map.new

end

end

end

 

class Scene_Status < Scene_Base

def return_scene

if $game_temp.menu_command_index.has_key?(:status)

$scene = Scene_Menu.new($game_temp.menu_command_index[:status])

else

$scene = Scene_Map.new

end

end

end

 

class Scene_File < Scene_Base

alias return_scene_KGC_CustomMenuCommand return_scene unless $@

def return_scene

if @from_title || @from_event

return_scene_KGC_CustomMenuCommand

elsif $game_temp.menu_command_index.has_key?(:save)

$scene = Scene_Menu.new($game_temp.menu_command_index[:save])

else

$scene = Scene_Map.new

end

end

end

 

class Scene_End < Scene_Base

def return_scene

if $game_temp.menu_command_index.has_key?(:system)

$scene = Scene_Menu.new($game_temp.menu_command_index[:system])

else

$scene = Scene_Map.new

end

end

end

 

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

# Game_Map

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

 

class Game_Map

 

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

# map name

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

unless method_defined?(:map_name)

def map_name

data = load_data("Data/MapInfos.rvdata")

text = data[@map_id].name.gsub(/\[.*\]/) { "" }

return text

end

end

 

end # Game_Map

 

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

# Game_Actor

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

 

class Game_Actor < Game_Battler

 

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

# new method: now_exp

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

def now_exp

return @exp - @exp_list[@level]

end

 

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

# new method: next_exp

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

def next_exp

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

end

 

end # Game_Actor

 

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

# Window_MultiVariableWindow

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

 

class Window_MultiVariableWindow < Window_Selectable

 

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

# initialize

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

def initialize

dh = 32 + 24 * YEM::MENU::VARIABLES_SHOWN.size

dy = Graphics.height - dh

super(0, dy, 160, dh)

refresh

end

 

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

# refresh

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

def refresh

@data = []

for i in YEM::MENU::VARIABLES_SHOWN

next unless YEM::MENU::VARIABLES_HASH.include?(i)

@time_index = @data.size if i == -1

@data.push(i)

end

@item_max = @data.size

create_contents

for i in 0...@item_max

draw_item(i)

end

end

 

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

# draw_item

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

def draw_item(index)

rect = item_rect(index)

sw = self.width - 32

dy = WLH * index

self.contents.clear_rect(rect)

i = @data[index]

case i

when -5 # Draw Map Name

self.contents.draw_text(0, dy, sw, WLH, $game_map.map_name, 1)

 

when -2 # Draw Steps

if YEM::MENU::VARIABLES_ICONS

text = $game_party.steps

self.contents.draw_text(0, dy, sw-24, WLH, text, 2)

draw_icon(YEM::MENU::VARIABLES_HASH[-2][0], sw-24, dy)

else

text = YEM::MENU::VARIABLES_HASH[-2][1]

value = $game_party.steps

cx = contents.text_size(text).width

self.contents.font.color = normal_color

self.contents.draw_text(0, dy, sw-cx-2, WLH, value, 2)

self.contents.font.color = system_color

self.contents.draw_text(0, dy, sw, WLH, text, 2)

end

 

when -1 # Draw Time

if YEM::MENU::VARIABLES_ICONS

text = game_time

self.contents.draw_text(0, dy, sw-24, WLH, text, 2)

draw_icon(YEM::MENU::VARIABLES_HASH[-1][0], sw-24, dy)

else

self.contents.font.color = normal_color

text = game_time

self.contents.draw_text(0, dy, sw, WLH, text, 1)

end

 

when 0 # Draw Gold

if YEM::MENU::VARIABLES_ICONS

text = $game_party.gold

self.contents.draw_text(0, dy, sw-24, WLH, text, 2)

draw_icon(YEM::MENU::VARIABLES_HASH[0][0], sw-24, dy)

else

draw_currency_value($game_party.gold, 4, dy, 120)

end

 

else # Draw Variables

if YEM::MENU::VARIABLES_ICONS

text = $game_variables

self.contents.draw_text(0, dy, sw-24, WLH, text, 2)

draw_icon(YEM::MENU::VARIABLES_HASH[0], sw-24, dy)

else

text = YEM::MENU::VARIABLES_HASH[1]

value = $game_variables

cx = contents.text_size(text).width

self.contents.font.color = normal_color

self.contents.draw_text(0, dy, sw-cx-2, WLH, value, 2)

self.contents.font.color = system_color

self.contents.draw_text(0, dy, sw, WLH, text, 2)

end

end

end

 

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

# game_time

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

def game_time

gametime = Graphics.frame_count / Graphics.frame_rate

hours = gametime / 3600

minutes = gametime / 60 % 60

seconds = gametime % 60

result = sprintf("%d:%02d:%02d", hours, minutes, seconds)

return result

end

 

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

# update

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

if YEM::MENU::VARIABLES_SHOWN.include?(-1)

def update

if game_time != (Graphics.frame_count / Graphics.frame_rate)

draw_item(@time_index)

end

super

end

end

 

end # Window_MultiVariableWindow

 

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

# Window_MenuCommand

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

 

class Window_MenuCommand < Window_Command

 

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

# initialize

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

def initialize(array)

@data = array[1]

@icons = array[2]

super(160, array[0])

end

 

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

# refresh

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

def refresh

create_contents

for i in 0...@item_max

draw_item(i)

end

end

 

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

# method

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

def method; return @data[self.index]; end

 

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

# draw_item

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

def draw_item(index, enabled = true)

rect = item_rect(index)

rect.x += 4

rect.width -= 8

self.contents.clear_rect(rect)

self.contents.font.color = normal_color

#---

text = @commands[index]

icon = @icons[index]

case @data[index]

when :items, :skill, :equip, :status, :kgc_apviewer, :kgc_skillcp,

:kgc_distribute, :yerd_classchange, :yerd_learnskill, :yerd_equipslots

enabled = ($game_party.members.size == 0 ? false : true)

when :save

enabled = !$game_system.save_disabled

when :kgc_largeparty

enabled = ($game_party.members.size == 0 ? false : true)

enabled = false if !$game_party.partyform_enable?

else

if YEM::MENU::COMMON_EVENTS.include?(@data[index])

if YEM::MENU::COMMON_EVENTS[@data[index]][1] != nil

switch_id = YEM::MENU::COMMON_EVENTS[@data[index]][1]

enabled = !$game_switches[switch_id]

end

elsif YEM::MENU::IMPORTED_COMMANDS.include?(@data[index])

if YEM::MENU::IMPORTED_COMMANDS[@data[index]][1] != nil

switch_id = YEM::MENU::IMPORTED_COMMANDS[@data[index]][1]

enabled = !$game_switches[switch_id]

end

end

end

#---

self.contents.font.color.alpha = enabled ? 255 : 128

dx = rect.x; dy = rect.y; dw = rect.width

if YEM::MENU::USE_ICONS and icon.is_a?(Integer)

draw_icon(icon, 0, dy, enabled)

dx += 20; dw -= 20

end

self.contents.draw_text(dx, dy, dw, WLH, text, YEM::MENU::ALIGN)

end

 

end # Window_MenuCommand

 

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

#

# END OF FILE

#

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

 

 

Melody Status Menu

 

 

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

#

# Yanfly Engine Melody - Status Menu Melody

# Last Date Updated: 2010.06.19

# Level: Normal, Hard

#

# The status menu doesn't appear to help much at all in the default RPG Maker VX

# scripts. Instead, it's been altered to a centralized single actor management

# screen regarding stats. Here, the player can apply stat boosters, elemental

# resistance boosters, and more.

#

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

# Updates

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

# o 2010.06.19 - Compatibility update for Equipment Overhaul.

# o 2010.06.03 - General stats window refresh bugfix.

# o 2010.05.24 - HECO stats are now drawn properly.

# o 2010.05.19 - Finished Script.

# o 2010.05.17 - Started Script.

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

# 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.

#

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

# Item Tags - For Items only.

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

# <stat growth: +x> or <stat growth: -x>

# This will increase or decrease the target's base stat by x amount. Just like

# items normally would in the database editor regarding MaxHP, MaxMP, ATK, DEF,

# SPI, and AGI, increasing by +x will raise the maximum by that value. However,

# what wasn't possible before was decreasing base stats. This function is now

# added within this script.

#

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

 

$imported = {} if $imported == nil

$imported["StatusMenuMelody"] = true

 

module YEM

module STATUS

 

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

# Section I. Main Settings

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

# This section adjusts what items appear for the command window in the upper

# left corner and how it appears as far as vocabulary is concerned. This

# section also adjusts how the EXP gauge appears in the upper right actor

# mini-status window.

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

# This array determines what items will appear in the status scene and

# what order they appear in. Remove them if you wish for them to not appear.

COMMANDS =[

:general, # Displays general actor information.

:boosters, # Displays the actor's parameters and item boosts.

:elements, # Displays the actor's elemental affinities.

:states, # Displays the actor's status effect resistances.

] # Do not remove this.

 

# This hash determines how the vocabulary appears in your game. Modify them

# as you see fit if you wish to rename certain aspects.

COMMAND_VOCAB ={

:general => "General",

:boosters => "Boosters",

:elements => "Elements",

:states => "Ailments",

} # Do not remove this.

 

# This determines the colour of the EXP bars used for the actor's exp

# gauge in the status menu.

EXP_TEXT = "EXP" # Text used for EXP

PERCENT_EXP = "%1.2f%%" # Text format used for EXP percentage

EXP_GAUGE_1 = 28 # Colour 1 for the EXP Gauge

EXP_GAUGE_2 = 29 # Colour 2 for the EXP Gauge

 

# This arrow appears in the stat comparison windows.

ARROW = "→"

 

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

# Section II.A. General Window

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

# This section adjusts the general window and how it appears. The general

# window displays basic information for the player regarding the actor.

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

 

# This array shows the stats for the left side of the window. Simply remove

# a stat from this list if you don't want it to appear or reaarnage them as

# you see fit. You may place other stats here, too. Note that stats that

# require special scripts won't appear unless that script is installed.

# Legal Stats:

# :hp, :mp, :atk, :def, :spi, :res, :dex, :agi, :hit, :eva, :cri, :odds

SHOWN_STATS = [:hp, :mp, :atk, :def, :spi, :res, :dex, :agi]

 

# This constant adjusts the category column title for general page.

PARAMETERS = "Parameters"

EQUIPMENT = "Equipment"

 

# Some of the more unusual stats do not have defined vocabulary to go

# along with it. Adjust the following hash to give them names.

STAT_VOCAB ={

:hit => "HIT", # Stat that modifies hit rate.

:eva => "EVA", # Stat that modifies evasion rate.

:cri => "CRI", # Stat that modifies critical rate.

:odds => "AGR", # Stat that modifies aggro rate.

} # Do not remove this.

 

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

# Section II.B. Booster Windows

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

# This section adjusts the booster window, elements window, and status

# windows. These windows provide power up opportunities for the player

# and a forecast of how the new stat changes will appear.

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

 

# Even if the player doesn't have the boost item, if this option is enabled

# then all the boost items in the game will be revealed to the player.

SHOW_ALL_BOOSTS = true

 

# For those who would like to change the font size of the booster windows,

# adjust this constant.

BOOSTER_FONT_SIZE = 16

 

# This array contains all of the elements you want displayed and in which

# order to display them in. You can display them as individual integers or

# as number ranges.

SHOWN_ELEMENTS = [3, 4, 5, 6..10]

 

# Since elements do not have icons innately, use the following hash below

# adjust and apply icons to them.

ELEMENT_ICONS ={

3 => 104, # Fire element.

4 => 105, # Ice element.

5 => 106, # Volt element.

6 => 108, # Earth element.

7 => 107, # Water element.

8 => 109, # Air element.

9 => 110, # Light element.

10 => 111, # Dark element.

} # Do not remove this.

 

# This array contains all of the states you want displayed and in which

# order to display them in. You can display them as individual integers or

# as number ranges.

SHOWN_STATES = [1, 2, 3, 4..8]

 

end # STATUS

end # YEM

 

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

# Editting anything past this point may potentially result in causing computer

# damage, incontinence, explosion of user's head, coma, death, and/or halitosis.

# Therefore, edit at your own risk.

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

 

module YEM

module REGEXP

module ITEM

 

STAT_GROW = /<(.*)[ ](?:BOOST|growth):[ ]([\+\-]\d+)>/i

 

end # ITEM

end # REGEXP

module STATUS

module_function

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

# convert_integer_array

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

def convert_integer_array(array)

result = []

array.each { |i|

case i

when Range; result |= i.to_a

when Integer; result |=

end }

return result

end

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

# converted_contants

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

SHOWN_ELEMENTS = convert_integer_array(SHOWN_ELEMENTS)

SHOWN_STATES = convert_integer_array(SHOWN_STATES)

end # STATUS

end # YEM

 

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

# RPG::Item

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

 

class RPG::Item < RPG::UsableItem

 

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

# public instance variables

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

attr_accessor :stat_growth

 

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

# common cache: yem_cache_item_smm

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

def yem_cache_item_smm

return if @cached_item_smm; @cached_item_smm = true

@stat_growth = {} if @stat_growth == nil

case @parameter_type

when 1; @stat_growth[:hp] = @parameter_points

when 2; @stat_growth[:mp] = @parameter_points

when 3; @stat_growth[:atk] = @parameter_points

when 4; @stat_growth[:def] = @parameter_points

when 5; @stat_growth[:spi] = @parameter_points

when 6; @stat_growth[:agi] = @parameter_points

end

@parameter_points = 0

#---

self.note.split(/[\r\n]+/).each { |line|

case line

#---

when YEM::REGEXP::ITEM::STAT_GROW

case $1.upcase

when "HP", "MAXHP"

type = :hp

when "MP", "MAXMP", "SP", "MAXSP"

type = :mp

when "ATK", "ATTACK"

type = :atk

when "DEF", "DEFENSE"

type = :def

when "SPI", "INT", "SPIRIT", "INTELLIGENCE"

type = :spi

when "AGI", "AGILITY"

type = :agi

else; next

end

@stat_growth[type] = $2.to_i

end

} # self.note.split

end # yem_cache_item_smm

 

end # RPG::Item

 

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

# Scene_Title

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

 

class Scene_Title < Scene_Base

 

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

# alias method: load_bt_database

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

alias load_bt_database_smm load_bt_database unless $@

def load_bt_database

load_bt_database_smm

load_smm_cache

end

 

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

# alias method: load_database

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

alias load_database_smm load_database unless $@

def load_database

load_database_smm

load_smm_cache

end

 

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

# new method: load_smm_cache

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

def load_smm_cache

groups = [$data_items]

for group in groups

for obj in group

next if obj == nil

obj.yem_cache_item_smm if obj.is_a?(RPG::Item)

end

end

end

 

end # Scene_Title

 

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

# Vocab

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

 

module Vocab

 

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

# new method: self.exp

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

def self.exp; return YEM::STATUS::EXP_TEXT; end

 

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

# new method: self.exp_format

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

def self.exp_format; return YEM::STATUS::PERCENT_EXP; end

 

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

# self.hit

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

def self.hit; return YEM::STATUS::STAT_VOCAB[:hit]; end

 

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

# self.eva

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

def self.eva; return YEM::STATUS::STAT_VOCAB[:eva]; end

 

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

# self.cri

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

def self.cri; return YEM::STATUS::STAT_VOCAB[:cri]; end

 

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

# self.odds

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

def self.odds; return YEM::STATUS::STAT_VOCAB[:odds]; end

 

end # Vocab

 

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

# module Icon

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

if !$imported["BattleEngineMelody"] and !$imported["IconModuleLibrary"]

module Icon

 

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

# self.element

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

def self.element(element_id)

icon = YEM::STATUS::ELEMENT_ICONS[element_id]

return (icon == nil) ? 0 : icon

end

 

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

# self.stat

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

def self.stat(actor, item); return 0; end

 

end # Icon

end # !$imported["BattleEngineMelody"] and !$imported["IconModuleLibrary"]

 

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

# Game_Temp

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

 

class Game_Temp

 

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

# public instance variables

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

attr_accessor :last_status_index

attr_accessor :status_oy

 

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

# new method: booster_items

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

def booster_items

return @booster_items if @booster_items != nil

@booster_items = []

for item in $data_items

next if item == nil

next if item.stat_growth == {}

@booster_items.push(item)

end

return @booster_items

end

 

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

# new method: element_growth_items

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

def element_growth_items

return @element_growth_items if @element_growth_items != nil

@element_growth_items = []

return @element_growth_items unless $imported["BattleEngineMelody"]

for item in $data_items

next if item == nil

next if item.element_growth == {}

@element_growth_items.push(item)

end

return @element_growth_items

end

 

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

# new method: state_growth_items

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

def state_growth_items

return @state_growth_items if @state_growth_items != nil

@state_growth_items = []

return @state_growth_items unless $imported["BattleEngineMelody"]

for item in $data_items

next if item == nil

next if item.state_growth == {}

@state_growth_items.push(item)

end

return @state_growth_items

end

 

end # Game_Temp

 

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

# Game_Battler

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

 

class Game_Battler

 

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

# alias method: item_test

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

alias item_test_smm item_test unless $@

def item_test(user, item)

return true if item.stat_growth != {}

return item_test_smm(user, item)

end

 

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

# alias method: item_growth_effect

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

alias item_growth_effect_smm item_growth_effect unless $@

def item_growth_effect(user, item)

item_growth_effect_smm(user, item)

create_actor_boosts if actor?

if item.stat_growth != {}

for key in item.stat_growth

stat = key[0]; value = key[1]

case stat

when :hp

@maxhp_plus += value if !actor?

@boost_maxhp += value if actor?

when :mp

@maxmp_plus += value if !actor?

@boost_maxmp += value if actor?

when :atk

@atk_plus += value if !actor?

@boost_atk += value if actor?

when :def

@def_plus += value if !actor?

@boost_def += value if actor?

when :spi

@spi_plus += value if !actor?

@boost_spi += value if actor?

when :agi

@agi_plus += value if !actor?

@boost_agi += value if actor?

end

end

end

end

 

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

# new method: create_actor_boosts

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

def create_actor_boosts

@boost_maxhp = 0 if @boost_maxhp == nil

@boost_maxmp = 0 if @boost_maxmp == nil

@boost_atk = 0 if @boost_atk == nil

@boost_def = 0 if @boost_def == nil

@boost_spi = 0 if @boost_spi == nil

@boost_agi = 0 if @boost_agi == nil

end

 

end # Game_Battler

 

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

# Game_Actor

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

 

class Game_Actor < Game_Battler

 

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

# new method: now_exp

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

def now_exp

return @exp - @exp_list[@level]

end

 

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

# new method: next_exp

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

def next_exp

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

end

 

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

# alias method: base_maxhp

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

alias base_maxhp_smm base_maxhp unless $@

def base_maxhp

create_actor_boosts if @boost_maxhp == nil

return base_maxhp_smm + @boost_maxhp

end

 

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

# alias method: base_maxmp

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

alias base_maxmp_smm base_maxmp unless $@

def base_maxmp

create_actor_boosts if @boost_maxmp == nil

return base_maxmp_smm + @boost_maxmp

end

 

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

# alias method: base_atk

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

alias base_atk_smm base_atk unless $@

def base_atk

create_actor_boosts if @boost_atk == nil

return base_atk_smm + @boost_atk

end

 

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

# alias method: base_def

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

alias base_def_smm base_def unless $@

def base_def

create_actor_boosts if @boost_def == nil

return base_def_smm + @boost_def

end

 

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

# alias method: base_spi

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

alias base_spi_smm base_spi unless $@

def base_spi

create_actor_boosts if @boost_spi == nil

return base_spi_smm + @boost_spi

end

 

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

# alias method: base_agi

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

alias base_agi_smm base_agi unless $@

def base_agi

create_actor_boosts if @boost_agi == nil

return base_agi_smm + @boost_agi

end

 

end # Game_Actor

 

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

# Window_Base

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

 

class Window_Base < Window

 

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

# new method: draw_actor_exp

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

def draw_actor_exp(actor, x, y, width = 120)

draw_actor_exp_gauge(actor, x, y, width)

self.contents.font.color = system_color

self.contents.draw_text(x, y, 30, WLH, Vocab.exp)

self.contents.font.color = normal_color

last_font_size = self.contents.font.size

xr = x + width

if actor.next_exp == 0

text = sprintf(Vocab.exp_format, 100.0)

else

text = sprintf(Vocab.exp_format, actor.now_exp * 100.0 / actor.next_exp)

end

self.contents.draw_text(x, y, width, WLH, text, 2)

end

 

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

# new method: draw_actor_exp_gauge

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

def draw_actor_exp_gauge(actor, x, y, width = 120)

gc0 = gauge_back_color

gc1 = text_color(YEM::STATUS::EXP_GAUGE_1)

gc2 = text_color(YEM::STATUS::EXP_GAUGE_2)

gh = $imported["CoreFixesUpgradesMelody"] ? YEM::UPGRADE::GAUGE_HEIGHT : 6

gh += 2 if $imported["CoreFixesUpgradesMelody"] and YEM::UPGRADE::OUTLINE

gy = y + WLH - 8 - (gh - 6)

self.contents.fill_rect(x, gy, width, gh, gc0)

if $imported["CoreFixesUpgradesMelody"] and YEM::UPGRADE::OUTLINE

gy += 1

gh -= 2

width -= 2

end

if actor.next_exp == 0

gbw = width

else

gbw = width * actor.now_exp / [actor.next_exp, 1].max

end

x += 1 if $imported["CoreFixesUpgradesMelody"] and YEM::UPGRADE::OUTLINE

self.contents.gradient_fill_rect(x, gy, gbw, gh, gc1, gc2)

end

 

end # Window_Base

 

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

# Window_Command_Centered

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

 

class Window_Command_Centered < Window_Command

 

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

# new method: draw_item

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

def draw_item(index, enabled = true)

rect = item_rect(index)

rect.x += 4

rect.width -= 8

self.contents.clear_rect(rect)

self.contents.font.color = normal_color

self.contents.font.color.alpha = enabled ? 255 : 128

self.contents.draw_text(rect, @commands[index],1)

end

 

end # Window_Command_Centered

 

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

# Window_Actor_Status

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

 

class Window_Actor_Status < Window_Base

 

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

# initialize

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

def initialize(actor)

super(160, 0, Graphics.width - 160, 128)

@actor = actor

refresh

end

 

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

# actor=

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

def actor=(new_actor)

@actor = new_actor

refresh

end

 

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

# refresh

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

def refresh

self.contents.clear

draw_actor_face(@actor, 0, 0)

dx = 108; dy = 0

draw_actor_name(@actor, dx, dy)

draw_actor_class(@actor, dx + 120, dy)

draw_actor_level(@actor, dx, dy + WLH * 1)

draw_actor_state(@actor, dx, dy + WLH * 2)

draw_actor_hp(@actor, dx + 120, dy + WLH * 1)

draw_actor_mp(@actor, dx + 120, dy + WLH * 2)

draw_actor_exp(@actor, dx + 120, dy + WLH * 3)

end

 

end # Window_Actor_Status

 

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

# Window_Status_General

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

 

class Window_Status_General < Window_Base

 

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

# initialize

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

def initialize(actor)

super(0, 128, Graphics.width, Graphics.height - 128)

@actor = actor

refresh

end

 

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

# actor=

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

def actor=(new_actor)

@actor = new_actor

refresh

end

 

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

# refresh

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

def refresh

self.contents.clear

draw_parameters(24, 0)

draw_exp_info(contents.width/2, 0)

draw_equipments(contents.width/2, WLH*4)

end

 

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

# draw_parameters

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

def draw_parameters(dx, dy)

self.contents.font.size = Font.default_size

self.contents.font.color = system_color

text = YEM::STATUS::PARAMETERS

self.contents.draw_text(dx + 24, dy, contents.width/3, WLH, text, 1)

dy += WLH*2

for stat in YEM::STATUS::SHOWN_STATS

icon = Icon.stat(@actor, stat)

case stat

when :hp

name = Vocab.hp

stat = @actor.maxhp

when :mp

name = Vocab.mp

stat = @actor.maxmp

when :atk

name = Vocab.atk

stat = @actor.atk

when :def

name = Vocab.def

stat = @actor.def

when :spi

name = Vocab.spi

stat = @actor.spi

when :res

next unless $imported["RES Stat"]

name = Vocab.res

stat = @actor.res

when :dex

next unless $imported["DEX Stat"]

name = Vocab.dex

stat = @actor.dex

when :agi

name = Vocab.agi

stat = @actor.agi

when :hit

name = Vocab.hit

stat = @actor.hit

stat = sprintf("%d%%", stat)

when :eva

name = Vocab.eva

stat = @actor.eva

stat = sprintf("%d%%", stat)

when :cri

name = Vocab.cri

stat = @actor.cri

stat = sprintf("%d%%", stat)

when :odds

name = Vocab.odds

stat = @actor.odds

else; next

end

draw_icon(icon, dx+24, dy)

self.contents.font.color = system_color

self.contents.draw_text(dx+48, dy, 48, WLH, name)

self.contents.font.color = normal_color

self.contents.draw_text(dx+96, dy, 84, WLH, stat, 2)

dy += WLH

end

end

 

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

# draw_exp_info

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

def draw_exp_info(dx, dy)

s1 = @actor.exp_s

s2 = @actor.next_rest_exp_s

s_next = sprintf(Vocab::ExpNext, Vocab::level)

self.contents.font.color = system_color

self.contents.draw_text(dx, dy + WLH * 0, 180, WLH, Vocab::ExpTotal)

self.contents.draw_text(dx, dy + WLH * 2, 180, WLH, s_next)

self.contents.font.color = normal_color

self.contents.draw_text(dx, dy + WLH * 1, 180, WLH, s1, 2)

self.contents.draw_text(dx, dy + WLH * 3, 180, WLH, s2, 2)

end

 

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

# draw_equipments

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

def draw_equipments(dx, dy)

self.contents.font.color = system_color

self.contents.draw_text(dx, dy, 120, WLH, YEM::STATUS::EQUIPMENT)

maximum = $imported["EquipmentOverhaul"] ? 4+@actor.extra_armor_number : 4

if maximum > 5

dx += 24

fx = dx

dy += WLH

for equip in @actor.equips

draw_icon(equip.icon_index, dx, dy) unless equip == nil

dx += 24

next unless dx >= fx + 24 * 5

dx = fx

dy += WLH

end

else

for i in 0..4

draw_item_name(@actor.equips, dx, dy + WLH * (i + 1))

end

end

end

 

end # Window_Status_General

 

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

# Window_Status_Booster

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

 

class Window_Status_Booster < Window_Selectable

 

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

# initialize

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

def initialize(actor, help_window)

@actor = actor

@help_window = help_window

dy = @help_window.y + @help_window.height

super(0, dy, Graphics.width - 240, Graphics.height - dy)

self.active = false

self.index = 0

refresh

end

 

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

# actor=

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

def actor=(new_actor)

@actor = new_actor

refresh

end

 

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

# item

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

def item; return @data[self.index]; end

 

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

# refresh

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

def refresh

@data = []

if YEM::STATUS::SHOW_ALL_BOOSTS

@data = $game_temp.booster_items.clone

else

for item in $game_temp.booster_items

next if item == nil

next unless $game_party.item_number(item) > 0

@data.push(item)

end

end

@item_max = @data.size

self.index = [[self.index, @item_max-1].min, 0].max

create_contents

for i in 0...@item_max; draw_item(i); end

end

 

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

# draw_item

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

def draw_item(index)

rect = item_rect(index)

self.contents.clear_rect(rect)

item = @data[index]

return if item == nil

enabled = enable?(item)

draw_obj_name(item, rect.clone, enabled)

draw_obj_charges(item, rect.clone, enabled)

draw_obj_total(item, rect.clone, enabled)

end

 

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

# enable?

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

def enable?(item)

return false if item == nil

return false if $game_party.item_number(item) <= 0

clone = @actor.clone

clone.item_growth_effect(clone, item)

for key in item.stat_growth

case key[0]

when :hp

return true if clone.maxhp != @actor.maxhp

when :mp

return true if clone.maxmp != @actor.maxmp

when :atk

return true if clone.atk != @actor.atk

when :def

return true if clone.def != @actor.def

when :spi

return true if clone.spi != @actor.spi

when :res

next unless $imported["RES Stat"]

return true if clone.res != @actor.res

when :dex

next unless $imported["DEX Stat"]

return true if clone.dex != @actor.dex

when :agi

return true if clone.agi != @actor.agi

else; next

end

end

return false

end

 

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

# new method: draw_obj_name

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

def draw_obj_name(obj, rect, enabled)

draw_icon(obj.icon_index, rect.x, rect.y, enabled)

self.contents.font.size = Font.default_size

self.contents.font.color = normal_color

self.contents.font.color.alpha = enabled ? 255 : 128

rect.width -= 48

self.contents.draw_text(rect.x+24, rect.y, rect.width-24, WLH, obj.name)

end

 

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

# new method: draw_obj_charges

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

def draw_obj_charges(obj, rect, enabled)

return unless $imported["BattleEngineMelody"]

return unless obj.is_a?(RPG::Item)

return unless obj.consumable

return if obj.charges <= 1

$game_party.item_charges = {} if $game_party.item_charges == nil

$game_party.item_charges[obj.id] = obj.charges if

$game_party.item_charges[obj.id] == nil

charges = $game_party.item_charges[obj.id]

dx = rect.x; dy = rect.y + WLH/3

self.contents.font.size = YEM::BATTLE_ENGINE::ITEM_SETTINGS[:charge]

self.contents.font.color = normal_color

self.contents.font.color.alpha = enabled ? 255 : 128

self.contents.draw_text(dx, dy, 24, WLH * 2/3, charges, 2)

self.contents.font.size = Font.default_size

end

 

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

# new method: draw_obj_total

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

def draw_obj_total(obj, rect, enabled)

if $imported["BattleEngineMelody"]

hash = YEM::BATTLE_ENGINE::ITEM_SETTINGS

else

hash ={ :text => ":%d", :size => Font.default_size, :colour => 0 }

end

number = $game_party.item_number(obj)

dx = rect.x + rect.width - 36; dy = rect.y; dw = 32

text = sprintf(hash[:text], number)

self.contents.font.size = hash[:size]

self.contents.font.color = text_color(hash[:colour])

self.contents.font.color.alpha = enabled ? 255 : 128

self.contents.draw_text(dx, dy, dw, WLH, text, 2)

end

 

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

# update_help

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

def update_help

@help_window.set_text(item == nil ? "" : item.description)

end

 

end # Window_Status_Booster

 

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

# Window_Status_Elements

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

 

class Window_Status_Elements < Window_Status_Booster

 

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

# refresh

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

def refresh

@data = []

if YEM::STATUS::SHOW_ALL_BOOSTS

@data = $game_temp.element_growth_items.clone

else

for item in $game_temp.element_growth_items

next if item == nil

next unless $game_party.item_number(item) > 0

@data.push(item)

end

end

@item_max = @data.size

self.index = [[self.index, @item_max-1].min, 0].max

create_contents

for i in 0...@item_max; draw_item(i); end

end

 

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

# enable?

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

def enable?(item)

return false if item == nil

return false if $game_party.item_number(item) <= 0

@actor.create_affinity_bonus

former_rates = @actor.bonus_element_affinity.clone

clone = @actor.clone

clone.item_growth_effect(clone, item)

@actor.bonus_element_affinity = former_rates

for key in item.element_growth

id = key[0]

return true if @actor.element_rate(id) != clone.element_rate(id)

end

return false

end

 

end # Window_Status_Elements

 

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

# Window_Status_States

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

 

class Window_Status_States < Window_Status_Booster

 

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

# refresh

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

def refresh

@data = []

if YEM::STATUS::SHOW_ALL_BOOSTS

@data = $game_temp.state_growth_items.clone

else

for item in $game_temp.state_growth_items

next if item == nil

next unless $game_party.item_number(item) > 0

@data.push(item)

end

end

@item_max = @data.size

self.index = [[self.index, @item_max-1].min, 0].max

create_contents

for i in 0...@item_max; draw_item(i); end

end

 

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

# enable?

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

def enable?(item)

return false if item == nil

return false if $game_party.item_number(item) <= 0

@actor.create_affinity_bonus

former_rates = @actor.bonus_state_affinity.clone

clone = @actor.clone

clone.item_growth_effect(clone, item)

@actor.bonus_state_affinity = former_rates

for key in item.state_growth

id = key[0]

return true if @actor.state_probability(id) != clone.state_probability(id)

end

return false

end

 

end # Window_Status_States

 

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

# Window_Status_Booster_Stats

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

 

class Window_Booster_Stats < Window_Base

 

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

# initialize

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

def initialize(actor, main_window)

@actor = actor

@main_window = main_window

dx = @main_window.x + @main_window.width

dy = @main_window.y

super(dx, dy, Graphics.width - dx, Graphics.height - dy)

self.contents.font.size = YEM::STATUS::BOOSTER_FONT_SIZE

refresh

end

 

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

# actor=

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

def actor=(new_actor)

@actor = new_actor

refresh

end

 

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

# refresh

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

def refresh

self.contents.clear

@item = @main_window.item

draw_parameters

end

 

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

# draw_parameters

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

def draw_parameters

dx = 0; dy = 0; arrow = YEM::STATUS::ARROW

clone = @actor.clone

if @item != nil and $game_party.has_item?(@item)

clone.item_growth_effect(clone, @item)

end

for stat in YEM::STATUS::SHOWN_STATS

icon = Icon.stat(@actor, stat)

case stat

when :hp

name = Vocab.hp

stat1 = @actor.maxhp

stat2 = clone.maxhp

when :mp

name = Vocab.mp

stat1 = @actor.maxmp

stat2 = clone.maxmp

when :atk

name = Vocab.atk

stat1 = @actor.atk

stat2 = clone.atk

when :def

name = Vocab.def

stat1 = @actor.def

stat2 = clone.def

when :spi

name = Vocab.spi

stat1 = @actor.spi

stat2 = clone.spi

when :res

next unless $imported["RES Stat"]

name = Vocab.res

stat1 = @actor.res

stat2 = clone.res

when :dex

next unless $imported["DEX Stat"]

name = Vocab.dex

stat1 = @actor.dex

stat2 = clone.dex

when :agi

name = Vocab.agi

stat1 = @actor.agi

stat2 = clone.agi

else; next

end

draw_icon(icon, dx, dy); dx += 24

self.contents.font.color = system_color

self.contents.draw_text(dx, dy, 60, WLH, name, 0); dx += 60

self.contents.font.color = normal_color

self.contents.draw_text(dx, dy, 45, WLH, stat1, 2); dx += 45

self.contents.font.color = system_color

self.contents.font.size = Font.default_size

self.contents.draw_text(dx, dy, 30, WLH, arrow, 1); dx += 30

self.contents.font.size = YEM::STATUS::BOOSTER_FONT_SIZE

if @item != nil

if stat2 > stat1

self.contents.font.color = power_up_color

elsif stat2 < stat1

self.contents.font.color = power_down_color

else

self.contents.font.color = normal_color

end

self.contents.draw_text(dx, dy, 45, WLH, stat2, 2)

end

dx = 0

dy += WLH

end

end

 

end # Window_Booster_Stats

 

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

# Window_Elements_Stats

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

 

class Window_Elements_Stats < Window_Booster_Stats

 

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

# draw_parameters

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

def draw_parameters

dx = 0; dy = 0; arrow = YEM::STATUS::ARROW

@actor.create_affinity_bonus

former_rates = @actor.bonus_element_affinity.clone

clone = @actor.clone

if @item != nil and $game_party.has_item?(@item)

clone.item_growth_effect(clone, @item)

end

@actor.bonus_element_affinity = former_rates

for element_id in YEM::STATUS::SHOWN_ELEMENTS

icon = Icon.element(element_id)

name = $data_system.elements[element_id]

stat1 = @actor.element_rate(element_id)

stat2 = clone.element_rate(element_id)

text1 = sprintf("%s%%", stat1)

text2 = sprintf("%s%%", stat2)

draw_icon(icon, dx, dy); dx += 24

self.contents.font.color = system_color

self.contents.draw_text(dx, dy, 60, WLH, name, 0); dx += 60

self.contents.font.color = normal_color

self.contents.draw_text(dx, dy, 45, WLH, text1, 2); dx += 45

self.contents.font.color = system_color

self.contents.font.size = Font.default_size

self.contents.draw_text(dx, dy, 30, WLH, arrow, 1); dx += 30

self.contents.font.size = YEM::STATUS::BOOSTER_FONT_SIZE

if @item != nil

if stat2 < stat1

self.contents.font.color = power_up_color

elsif stat2 > stat1

self.contents.font.color = power_down_color

else

self.contents.font.color = normal_color

end

self.contents.draw_text(dx, dy, 45, WLH, text2, 2)

end

dx = 0

dy += WLH

end

end

 

end # Window_Elements_Stats

 

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

# Window_States_Stats

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

 

class Window_States_Stats < Window_Booster_Stats

 

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

# draw_parameters

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

def draw_parameters

dx = 0; dy = 0; arrow = YEM::STATUS::ARROW

@actor.create_affinity_bonus

former_rates = @actor.bonus_state_affinity.clone

clone = @actor.clone

if @item != nil and $game_party.has_item?(@item)

clone.item_growth_effect(clone, @item)

end

@actor.bonus_state_affinity = former_rates

for state_id in YEM::STATUS::SHOWN_STATES

state = $data_states[state_id]

next if state == nil

icon = state.icon_index

name = state.name

stat1 = @actor.state_probability(state_id)

stat2 = clone.state_probability(state_id)

text1 = sprintf("%s%%", stat1)

text2 = sprintf("%s%%", stat2)

draw_icon(icon, dx, dy); dx += 24

self.contents.font.color = system_color

self.contents.draw_text(dx, dy, 60, WLH, name, 0); dx += 60

self.contents.font.color = normal_color

self.contents.draw_text(dx, dy, 45, WLH, text1, 2); dx += 45

self.contents.font.color = system_color

self.contents.font.size = Font.default_size

self.contents.draw_text(dx, dy, 30, WLH, arrow, 1); dx += 30

self.contents.font.size = YEM::STATUS::BOOSTER_FONT_SIZE

if @item != nil

if stat2 < stat1

self.contents.font.color = power_up_color

elsif stat2 > stat1

self.contents.font.color = power_down_color

else

self.contents.font.color = normal_color

end

self.contents.draw_text(dx, dy, 45, WLH, text2, 2)

end

dx = 0

dy += WLH

end

end

 

end # Window_States_Stats

 

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

# Scene_Status

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

 

class Scene_Status < Scene_Base

 

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

# overwrite method: start

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

def start

super

create_menu_background

@actor = $game_party.members[@actor_index]

@status_window = Window_Actor_Status.new(@actor)

@help_window = Window_Help.new

@help_window.y = @status_window.height

create_command_window

end

 

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

# overwrite method: terminate

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

def terminate

super

dispose_menu_background

@command_window.dispose

@status_window.dispose

@help_window.dispose

for window in @windows; window.dispose unless window.disposed?; end

end

 

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

# new method: create_command_window

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

def create_command_window

@data = []

commands = []

@windows = []

for command in YEM::STATUS::COMMANDS

case command

when :general

@general_window = Window_Status_General.new(@actor)

@windows.push(@general_window)

when :boosters

@boosters_window = Window_Status_Booster.new(@actor, @help_window)

@boosters_stats = Window_Booster_Stats.new(@actor, @boosters_window)

@windows.push(@boosters_window)

@windows.push(@boosters_stats)

when :elements

next unless $imported["BattleEngineMelody"]

@elements_window = Window_Status_Elements.new(@actor, @help_window)

@elements_stats = Window_Elements_Stats.new(@actor, @elements_window)

@windows.push(@elements_window)

@windows.push(@elements_stats)

when :states

next unless $imported["BattleEngineMelody"]

@states_window = Window_Status_States.new(@actor, @help_window)

@states_stats = Window_States_Stats.new(@actor, @states_window)

@windows.push(@states_window)

@windows.push(@states_stats)

else; next

end

@data.push(command)

commands.push(YEM::STATUS::COMMAND_VOCAB[command])

end

@command_window = Window_Command_Centered.new(160, commands)

@command_window.height = 128

@command_window.active = true

#---

if $game_temp.last_status_index != nil

@command_window.oy = $game_temp.status_oy

@command_window.index = $game_temp.last_status_index

end

#---

update_visible_windows

end

 

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

# overwrite method: next_actor

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

def next_actor

@actor_index += 1

@actor_index %= $game_party.members.size

set_new_actor

end

 

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

# overwrite method: prev_actor

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

def prev_actor

@actor_index += $game_party.members.size - 1

@actor_index %= $game_party.members.size

set_new_actor

end

 

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

# new method: set_new_actor

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

def set_new_actor

$game_party.last_actor_index = @actor_index

@actor = $game_party.members[@actor_index]

@status_window.actor = @actor

for window in @windows; window.actor = @actor; end

end

 

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

# overwrite method: update

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

def update

super

update_menu_background

if @command_window.active

update_command_window

elsif @boosters_window != nil and @boosters_window.active

update_boosters_window

elsif @elements_window != nil and @elements_window.active

update_elements_window

elsif @states_window != nil and @states_window.active

update_states_window

end

end

 

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

# new method: update_command_window

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

def update_command_window

@command_window.update

if $game_temp.last_status_index != @command_window.index

$game_temp.last_status_index = @command_window.index

$game_temp.status_oy = @command_window.oy

update_visible_windows

end

if Input.trigger?(Input::B)

Sound.play_cancel

return_scene

$game_temp.last_status_index = nil

$game_temp.status_oy = nil

elsif Input.repeat?(Input::LEFT)

Sound.play_cursor

prev_actor

elsif Input.repeat?(Input::RIGHT)

Sound.play_cursor

next_actor

elsif Input.trigger?(Input::C)

case @data[@command_window.index]

when :boosters

Sound.play_decision

@boosters_window.active = true

@command_window.active = false

when :elements

Sound.play_decision

@elements_window.active = true

@command_window.active = false

when :states

Sound.play_decision

@states_window.active = true

@command_window.active = false

end

end

end

 

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

# new method: update_visible_windows

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

def update_visible_windows

@help_window.y = Graphics.height * 8

for window in @windows; window.y = Graphics.height * 8; end

case @data[@command_window.index]

when :general

@general_window.y = @command_window.height

when :boosters

@help_window.y = @command_window.height

@boosters_window.y = @help_window.y + @help_window.height

@boosters_stats.y = @help_window.y + @help_window.height

@boosters_window.update_help

when :elements

@help_window.y = @command_window.height

@elements_window.y = @help_window.y + @help_window.height

@elements_stats.y = @help_window.y + @help_window.height

@elements_window.update_help

when :states

@help_window.y = @command_window.height

@states_window.y = @help_window.y + @help_window.height

@states_stats.y = @help_window.y + @help_window.height

@states_window.update_help

end

end

 

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

# new method: update_boosters_window

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

def update_boosters_window

@boosters_window.update

if @last_booster_index != @boosters_window.index

@last_booster_index = @boosters_window.index

@boosters_stats.refresh

end

if Input.trigger?(Input::B)

Sound.play_cancel

@boosters_window.active = false

@command_window.active = true

@general_window.refresh if @general_window != nil

elsif Input.repeat?(Input::LEFT)

Sound.play_cursor

prev_actor

elsif Input.repeat?(Input::RIGHT)

Sound.play_cursor

next_actor

#--- Debug Commands ---

elsif $TEST and Input.repeat?(Input::F8)

Sound.play_equip

for item in $game_temp.booster_items

next if item == nil

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.gain_item(item, amount)

end

@boosters_window.refresh

elsif $TEST and Input.repeat?(Input::F7)

Sound.play_equip

for item in $game_temp.booster_items

next if item == nil

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.lose_item(item, amount)

end

@boosters_window.refresh

elsif $TEST and Input.repeat?(Input::F6)

item = @boosters_window.item

return if item == nil

Sound.play_equip

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.gain_item(item, amount)

@boosters_window.draw_item(@boosters_window.index)

elsif $TEST and Input.repeat?(Input::F5)

item = @boosters_window.item

return if item == nil

Sound.play_equip

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.lose_item(item, amount)

@boosters_window.draw_item(@boosters_window.index)

#--- Debug Commands ---

elsif Input.repeat?(Input::C)

item = @boosters_window.item

if @boosters_window.enable?(item)

Sound.play_use_item

@actor.item_growth_effect(@actor, item)

$game_party.consume_item(item)

@boosters_window.draw_item(@boosters_window.index)

@boosters_stats.refresh

if item.stat_growth.include?(:hp) or item.stat_growth.include?(:mp)

@status_window.refresh

end

elsif Input.trigger?(Input::C)

Sound.play_buzzer

end

end

end

 

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

# new method: update_elements_window

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

def update_elements_window

@elements_window.update

if @last_elements_index != @elements_window.index

@last_elements_index = @elements_window.index

@elements_stats.refresh

end

if Input.trigger?(Input::B)

Sound.play_cancel

@elements_window.active = false

@command_window.active = true

@general_window.refresh if @general_window != nil

elsif Input.repeat?(Input::LEFT)

Sound.play_cursor

prev_actor

elsif Input.repeat?(Input::RIGHT)

Sound.play_cursor

next_actor

#--- Debug Commands ---

elsif $TEST and Input.repeat?(Input::F8)

Sound.play_equip

for item in $game_temp.element_growth_items

next if item == nil

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.gain_item(item, amount)

end

@elements_window.refresh

elsif $TEST and Input.repeat?(Input::F7)

Sound.play_equip

for item in $game_temp.element_growth_items

next if item == nil

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.lose_item(item, amount)

end

@elements_window.refresh

elsif $TEST and Input.repeat?(Input::F6)

item = @elements_window.item

return if item == nil

Sound.play_equip

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.gain_item(item, amount)

@elements_window.draw_item(@elements_window.index)

elsif $TEST and Input.repeat?(Input::F5)

item = @elements_window.item

return if item == nil

Sound.play_equip

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.lose_item(item, amount)

@elements_window.draw_item(@elements_window.index)

#--- Debug Commands ---

elsif Input.repeat?(Input::C)

item = @elements_window.item

if @elements_window.enable?(item)

Sound.play_use_item

@actor.item_growth_effect(@actor, item)

$game_party.consume_item(item)

@elements_window.draw_item(@elements_window.index)

@elements_stats.refresh

elsif Input.trigger?(Input::C)

Sound.play_buzzer

end

end

end

 

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

# new method: update_states_window

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

def update_states_window

@states_window.update

if @last_states_index != @states_window.index

@last_states_index = @states_window.index

@states_stats.refresh

end

if Input.trigger?(Input::B)

Sound.play_cancel

@states_window.active = false

@command_window.active = true

@general_window.refresh if @general_window != nil

elsif Input.repeat?(Input::LEFT)

Sound.play_cursor

prev_actor

elsif Input.repeat?(Input::RIGHT)

Sound.play_cursor

next_actor

#--- Debug Commands ---

elsif $TEST and Input.repeat?(Input::F8)

Sound.play_equip

for item in $game_temp.state_growth_items

next if item == nil

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.gain_item(item, amount)

end

@states_window.refresh

elsif $TEST and Input.repeat?(Input::F7)

Sound.play_equip

for item in $game_temp.state_growth_items

next if item == nil

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.lose_item(item, amount)

end

@states_window.refresh

elsif $TEST and Input.repeat?(Input::F6)

item = @states_window.item

return if item == nil

Sound.play_equip

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.gain_item(item, amount)

@states_window.draw_item(@states_window.index)

elsif $TEST and Input.repeat?(Input::F5)

item = @states_window.item

return if item == nil

Sound.play_equip

amount = Input.press?(Input::SHIFT) ? 10 : 1 + rand(3)

$game_party.lose_item(item, amount)

@states_window.draw_item(@states_window.index)

#--- Debug Commands ---

elsif Input.repeat?(Input::C)

item = @states_window.item

if @states_window.enable?(item)

Sound.play_use_item

@actor.item_growth_effect(@actor, item)

$game_party.consume_item(item)

@states_window.draw_item(@states_window.index)

@states_stats.refresh

elsif Input.trigger?(Input::C)

Sound.play_buzzer

end

end

end

 

end # Scene_Status

 

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

#

# END OF FILE

#

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

 

 

Shanghai Main Menu

 

 

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

#

# Shanghai Simple Script - Final Fantasy 13 Main Menu

# Last Date Updated: 2010.06.02

# Level: Normal

#

# NOTE! This requires Yanfly Engine Melody's Main Menu Melody script to be

# installed and located above this script to work. This makes your main menu

# ordered like Final Fantasy 13's.

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

# 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.

#

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

 

$imported = {} if $imported == nil

$imported["FinalFantasy13Menu"] = true

 

module SSS

# This is the image file for the menu background. Place this inside of the

# Graphics\System folder.

MENU_BACK_IMAGE = "MenuBack"

 

# This is the image file used for the back of each of the menu items. This

# image must be 160x24 pixels and placed inside of the Graphics\System folder.

MENU_BACK_ITEM_IMAGE = "MenuBackItem"

 

# This sets the menu help window's text color.

MENU_HELP_TEXT_COLOR = Color.new(0, 0, 0)

 

# This is the text format used to write out the current map.

MENU_LOCATION = "Location: %s"

 

# This hash sets the image files for your actors. These images must be placed

# inside of the Graphics\System folder and they have to be 104x288 pixels.

MENU_ACTOR_IMAGES ={

1 => "MenuRalph",

2 => "MenuUlrika",

3 => "MenuBennett",

4 => "MenuYlva",

} # Remove this and perish.

 

# This hash sets what colors belong to which class when drawn.

MENU_CLASS_COLORS ={

1 => 2,

2 => 6,

3 => 4,

4 => 5,

} # Remove this and perish.

 

# This sets the help window descripts for the menu commands.

MENU_HELP_WINDOW ={

"Item" => "View and manage your party's items.",

"Status" => "View a party member's status.",

"Skill" => "Manage a party member's skills.",

"Equip" => "Manage a party member's equipment.",

"Save" => "Save your current progress.",

"Game End" => "End the current game.",

"System" => "Adjust the game's options.",

} # Remove this and perish.

end

 

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

# ** Window_Base

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

 

class Window_Base < Window

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

# * Object Initialization

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

alias initialize_sss_ff13_menu_window_base initialize unless $@

def initialize(x, y, width, height)

initialize_sss_ff13_menu_window_base(x, y, width, height)

self.opacity = 0 if $scene.is_a?(Scene_Menu)

end

end

 

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

# ** Window_MenuHelp

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

 

class Window_MenuHelp < Window_Help

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

# * Set Text

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

def set_text(text, align = 0)

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

self.contents.clear

self.contents.font.shadow = false

self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR

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

@text = text

@align = align

end

end

end

 

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

# ** Window_MainMenuParty

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

 

class Window_MainMenuParty < Window_Selectable

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

# * Object Initialization

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

def initialize(x, y)

super(x-24, y, Graphics.width-x+32, Graphics.height-y)

self.active = false

@column_max = [4, $game_party.members.size].max

@spacing = 0

refresh

end

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

# * Refresh

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

def refresh

self.contents.clear

@data = $game_party.members

@item_max = @data.size

create_contents

for i in 0...@item_max

draw_item(i)

end

end

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

# * Draw Item

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

def draw_item(index)

rect = item_rect(index)

self.contents.clear_rect(rect)

actor = @data[index]

unless actor.nil?

draw_actor_image(actor, rect)

draw_actor_name(actor, rect)

draw_actor_state(actor, rect.x, WLH*5/2, 96)

draw_actor_class(actor, rect)

draw_actor_level(actor, rect)

draw_actor_hp(actor, rect)

draw_actor_mp(actor, rect)

end

end

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

# * Draw Actor Image

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

def draw_actor_image(actor, rect)

filename = SSS::MENU_ACTOR_IMAGES[actor.id]

return if filename.nil?

bitmap = Cache.system(filename)

image_rect = Rect.new(2, 2, rect.width-4, 284)

self.contents.blt(rect.x+2, rect.y+2, bitmap, image_rect)

end

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

# * Draw Actor Name

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

def draw_actor_name(actor, rect)

name = actor.name

self.contents.font.size = Font.default_size

self.contents.font.color = normal_color

self.contents.draw_text(rect.x+4, WLH*3/2, rect.width-8, WLH, name)

end

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

# * Draw Actor Class

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

def draw_actor_class(actor, rect)

name = actor.class.name

self.contents.font.size = Font.default_size - 4

color_id = SSS::MENU_CLASS_COLORS[actor.class.id].to_i

self.contents.font.color = text_color(color_id)

self.contents.draw_text(rect.x+4, WLH*0, rect.width-8, WLH, name, 2)

end

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

# * Draw Actor Level

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

def draw_actor_level(actor, rect)

self.contents.font.size = Font.default_size - 4

self.contents.font.color = power_up_color

yy = 288 - WLH*7/2 - 8

self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.level_a, 0)

yy += WLH/2

self.contents.font.color = normal_color

self.contents.font.size += 2

self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.level, 2)

end

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

# * Draw Actor HP

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

def draw_actor_hp(actor, rect)

self.contents.font.size = Font.default_size - 4

self.contents.font.color = hp_gauge_color2

yy = 288 - WLH*5/2 - 4

self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.hp, 0)

yy += WLH/2

self.contents.font.color = normal_color

self.contents.font.size += 2

self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.hp, 2)

end

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

# * Draw Actor MP

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

def draw_actor_mp(actor, rect)

self.contents.font.size = Font.default_size - 4

self.contents.font.color = mp_gauge_color2

yy = 288 - WLH*3/2

self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, Vocab.mp, 0)

yy += WLH/2

self.contents.font.color = normal_color

self.contents.font.size += 2

self.contents.draw_text(rect.x+4, yy, rect.width-8, WLH, actor.mp, 2)

end

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

# * Item Rect

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

def item_rect(index)

rect = Rect.new(0, 0, 0, 0)

rect.width = (contents.width + @spacing) / @column_max - @spacing

rect.height = 288

rect.x = index % @column_max * (rect.width + @spacing)

rect.y = index / @column_max * WLH

return rect

end

end

 

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

# ** Window_MenuTimer

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

 

class Window_MenuTimer < Window_Base

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

# * Object Initialization

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

def initialize

super(0, Graphics.height - 60, 120, 56)

self.contents.font.size = Font.default_size - 4

self.contents.font.shadow = false

self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR

refresh

end

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

# * Refresh

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

def refresh

self.contents.clear

format = "%03d:%02d:%02d"

@game_time = Graphics.frame_count / Graphics.frame_rate

hours = @game_time / 3600

minutes = @game_time / 60 % 60

seconds = @game_time % 60

text = sprintf(format, hours, minutes, seconds)

self.contents.draw_text(0, 0, contents.width-4, WLH, text, 2)

end

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

# * Update

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

def update

super

refresh if @game_time != (Graphics.frame_count / Graphics.frame_rate)

end

end

 

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

# ** Window_MenuGold

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

 

class Window_MenuGold < Window_Base

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

# * Object Initialization

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

def initialize

super(100, Graphics.height - 60, 120, 56)

self.contents.font.size = Font.default_size - 4

self.contents.font.shadow = false

self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR

refresh

end

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

# * Refresh

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

def refresh

self.contents.clear

text = sprintf("%d%s", $game_party.gold, Vocab.gold)

self.contents.draw_text(0, 0, contents.width-4, WLH, text, 0)

end

end

 

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

# ** Window_MenuLocation

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

 

class Window_MenuLocation < Window_Base

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

# * Object Initialization

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

def initialize

super(Graphics.width/2-16, Graphics.height - 60, Graphics.width/2+16, 56)

self.contents.font.size = Font.default_size - 4

self.contents.font.shadow = false

self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR

refresh

end

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

# * Refresh

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

def refresh

self.contents.clear

text = sprintf(SSS::MENU_LOCATION, $game_map.map_name)

self.contents.draw_text(4, 0, contents.width, WLH, text, 0)

end

end

 

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

# Override Main Menu Melody Settings

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

 

YEM::MENU::USE_ICONS = false

YEM::MENU::MENU_RIGHT_SIDE = false

YEM::MENU::ON_SCREEN_MENU = false

YEM::MENU::USE_MULTI_VARIABLE_WINDOW = false

 

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

# ** Scene_Menu

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

 

class Scene_Menu < Scene_Base

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

# * Start processing

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

alias start_sss_ff13_menu start unless $@

def start

start_sss_ff13_menu

start_ff13_menu_style

end

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

# * Termination Processing

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

alias terminate_sss_ff13_menu terminate unless $@

def terminate

@help_window.dispose

@location_window.dispose

@menu_timer_window.dispose

@menubackitem_sprite.bitmap.dispose

@menubackitem_sprite.dispose

terminate_sss_ff13_menu

end

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

# * Create Background for Menu Screen

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

def create_menu_background

@menuback_sprite = Sprite.new

@menuback_sprite.bitmap = Cache.system(SSS::MENU_BACK_IMAGE)

update_menu_background

end

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

# * Update Background for Menu Screen

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

def update_menu_background

super

@menubackitem_sprite.update unless @menubackitem_sprite.nil?

@menu_timer_window.update unless @menu_timer_window.nil?

end

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

# * Create Menu Back Items

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

def create_menu_back_items

@menubackitem_sprite = Sprite.new

width = 160

height = @command_window.height-32

@menubackitem_sprite.bitmap = Bitmap.new(width, height)

bitmap = Cache.system(SSS::MENU_BACK_ITEM_IMAGE)

rect = Rect.new(0, 0, 160, 24)

y = 0

loop do

break if y >= height

@menubackitem_sprite.bitmap.blt(0, y, bitmap, rect)

y += 24

end

@menubackitem_sprite.y = @command_window.y+16

end

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

# * Start Final Fantasy 13 Menu Style

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

def start_ff13_menu_style

@gold_window.dispose

@gold_window = Window_MenuGold.new

@menu_timer_window = Window_MenuTimer.new

@location_window = Window_MenuLocation.new

@help_window = Window_MenuHelp.new

@help_window.x += 48

@help_window.width -= 48

@help_window.create_contents

@help_window.contents.font.size = Font.default_size - 4

@command_window.y = @help_window.height - 9

@status_window.dispose

x = @command_window.width

y = @help_window.height-9

@status_window = Window_MainMenuParty.new(x, y)

@command_window.x -= 4

@help_window.y += 12

update_help_window

create_menu_back_items

end

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

# * Update Command Selection

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

alias update_command_selection_sss_ff13_menu update_command_selection unless $@

def update_command_selection

update_help_window

update_command_selection_sss_ff13_menu

end

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

# * Update Help Window

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

def update_help_window

return if @help_window_index == @command_window.index

@help_window_index = @command_window.index

commands = @command_window.commands

text = SSS::MENU_HELP_WINDOW[commands[@help_window_index]].to_s

@help_window.set_text(text)

end

end

 

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

#

# END OF FILE

#

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

 

 

Images needed:

 

 

MenuBack.png MenuBack.png

MenuBackItem.png MenuBackItem.png

MenuRalph.png MenuRalph.png

MenuUlrika.png MenuUlrika.png

MenuBennett.png MenuBennet.png

MenuYlva.png MenuYlva.png

 

 

Shanghai Status Menu

 

 

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

#

# Shanghai Simple Script - Final Fantasy 13 Status Menu

# Last Date Updated: 2010.06.26

# Level: Normal

#

# NOTE! This requires Yanfly Engine Melody's Status Menu Melody script to be

# installed and located above this script to work. This makes your status menu

# ordered like Final Fantasy 13's.

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

# 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.

#

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

 

$imported = {} if $imported == nil

$imported["FinalFantasy13StatusMenu"] = true

 

module SSS

# This is the image used for the header and footer of the profile scenes.

# Must be 544x416 pixels or whatever resolution size you're using.

MENU_BACK_PROFILE_IMAGE = "ProfileBack"

 

# This is the image used for the item back image. Must be 286x24 pixels.

MENU_BACK_PROFILE_ITEM = "ProfileItem"

 

# This sets the menu help window's text color.

MENU_HELP_TEXT_COLOR = Color.new(0, 0, 0)

 

# This is the text format used to write out the current map.

MENU_LOCATION = "Location: %s"

 

# This hash sets the image files for your actors. These images must be placed

# inside of the Graphics\System folder and they have to be 544x416 pixels or

# whatever resolution size you're using.

MENU_PROFILE_IMAGES ={

1 => "ProfileRalph",

2 => "ProfileUlrika",

3 => "ProfileBennett",

4 => "ProfileYlva",

} # Remove this and perish.

 

# This is the text used to write out various status menu text items.

MENU_STATUS_OPTIONS = "Options"

MENU_STATUS_PARAM = "Parameters"

MENU_STATUS_BOOSTER = "Boost Items"

MENU_STATUS_ELEMENT = "Element Items"

MENU_STATUS_STATES = "Status Items"

 

end

 

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

# ** Game_Actor

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

 

class Game_Actor < Game_Battler

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

# * Public Instance Variables

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

attr_accessor :boost_dex

attr_accessor :boost_res

end

 

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

# ** Window_Base

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

 

class Window_Base < Window

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

# * Object Initialization

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

alias initialize_sss_ff13_status_menu_window_base initialize unless $@

def initialize(x, y, width, height)

initialize_sss_ff13_status_menu_window_base(x, y, width, height)

self.opacity = 0 if $scene.is_a?(Scene_Status)

end

end

 

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

# ** Window_Actor_Status

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

 

class Window_Actor_Status < Window_Base

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

# refresh

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

def refresh

self.contents.clear

dx = 120; dy = 0

difference = contents.width-124-dx-4

draw_actor_name(@actor, dx, dy)

draw_actor_class(@actor, contents.width-124, dy)

draw_actor_level(@actor, dx, dy + WLH * 1)

draw_actor_hp(@actor, contents.width-124, dy + WLH * 1)

draw_actor_mp(@actor, contents.width-124, dy + WLH * 2)

draw_actor_exp(@actor, dx, dy + WLH * 2, difference)

end

end

 

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

# ** Window_Underscore

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

 

class Window_Underscore < Window_Base

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

# * Object Initialization

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

def initialize(align = 0)

super(0, 0, Graphics.width, 56)

@align = align

refresh

end

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

# * Refresh

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

def refresh

self.contents.clear

self.contents.font.name = ["UmePlus Gothic", "Courier New"]

self.contents.font.size += 4

text = "―――――――――――――――――――――――――――――――――――――――――――――――――――――――"

self.contents.draw_text(0, 0, contents.width, WLH, text, @align)

end

end

 

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

# ** Window_MenuHelp

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

 

class Window_MenuHelp < Window_Help

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

# * Set Text

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

def set_text(text, align = 0)

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

self.contents.clear

self.contents.font.shadow = false

self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR

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

@text = text

@align = align

end

end

end

 

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

# ** Window_MenuTimer

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

 

class Window_MenuTimer < Window_Base

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

# * Object Initialization

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

def initialize

super(0, Graphics.height - 60, 120, 56)

self.contents.font.size = Font.default_size - 4

self.contents.font.shadow = false

self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR

refresh

end

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

# * Refresh

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

def refresh

self.contents.clear

format = "%03d:%02d:%02d"

@game_time = Graphics.frame_count / Graphics.frame_rate

hours = @game_time / 3600

minutes = @game_time / 60 % 60

seconds = @game_time % 60

text = sprintf(format, hours, minutes, seconds)

self.contents.draw_text(0, 0, contents.width-4, WLH, text, 2)

end

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

# * Update

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

def update

super

refresh if @game_time != (Graphics.frame_count / Graphics.frame_rate)

end

end

 

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

# ** Window_MenuGold

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

 

class Window_MenuGold < Window_Base

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

# * Object Initialization

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

def initialize

super(100, Graphics.height - 60, 120, 56)

self.contents.font.size = Font.default_size - 4

self.contents.font.shadow = false

self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR

refresh

end

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

# * Refresh

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

def refresh

self.contents.clear

text = sprintf("%d%s", $game_party.gold, Vocab.gold)

self.contents.draw_text(0, 0, contents.width-4, WLH, text, 0)

end

end

 

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

# ** Window_MenuLocation

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

 

class Window_MenuLocation < Window_Base

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

# * Object Initialization

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

def initialize

super(Graphics.width/2-16, Graphics.height - 60, Graphics.width/2+16, 56)

self.contents.font.size = Font.default_size - 4

self.contents.font.shadow = false

self.contents.font.color = SSS::MENU_HELP_TEXT_COLOR

refresh

end

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

# * Refresh

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

def refresh

self.contents.clear

text = sprintf(SSS::MENU_LOCATION, $game_map.map_name)

self.contents.draw_text(4, 0, contents.width, WLH, text, 0)

end

end

 

 

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

# Override Status Menu Melody Settings

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

 

YEM::STATUS::BOOSTER_FONT_SIZE = 16

YEM::STATUS::COMMANDS = [:boosters, :elements, :states]

 

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

# ** Scene_Status

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

 

class Scene_Status < Scene_Base

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

# public instance variables

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

attr_accessor :actor

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

# * Start processing

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

alias start_sss_ff13_status_menu start unless $@

def start

for member in $game_party.members

member.boost_dex = 0 if member.boost_dex == nil

member.boost_res = 0 if member.boost_res == nil

end

start_sss_ff13_status_menu

start_ff13_menu_style

end

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

# * Start Final Fantasy 13 Menu Style

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

def start_ff13_menu_style

@gold_window = Window_MenuGold.new

@menu_timer_window = Window_MenuTimer.new

@location_window = Window_MenuLocation.new

@help_window.dispose

@help_window = Window_MenuHelp.new

@help_window.x += 48

@help_window.width -= 48

@help_window.create_contents

@help_window.contents.font.size = Font.default_size - 4

for window in @windows

next unless window.is_a?(Window_Selectable)

window.help_window = @help_window

end

@command_window.y = @help_window.height+2

@command_window.height = 24*3+32

@command_window.x += (Graphics.width-240-@command_window.width-32)/2

@help_window.y += 12

@status_window.y = @command_window.y - 16

@status_window.x += 16

unless @boosters_window.nil?

@boosters_window.x += 8

@boosters_window.width -= 16

@boosters_window.create_contents

@boosters_window.refresh

end

unless @elements_window.nil?

@elements_window.x += 8

@elements_window.width -= 16

@elements_window.create_contents

@elements_window.refresh

end

unless @states_window.nil?

@states_window.x += 8

@states_window.width -= 16

@states_window.create_contents

@states_window.refresh

end

create_underscore_windows

create_dummy_text_windows

create_item_image

update_visible_windows

end

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

# * Create Underscore Windows

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

def create_underscore_windows

@underscore_window1 = Window_Underscore.new(2)

@underscore_window2 = Window_Underscore.new(0)

@underscore_window3 = Window_Underscore.new(0)

@underscore_window1.y = @command_window.y + @command_window.height - 40

@underscore_window1.x = -Graphics.width/3-60

@underscore_window2.y = @command_window.y + @command_window.height - 40

@underscore_window2.x = @underscore_window1.x + @underscore_window1.width-2

@underscore_window3.x = @underscore_window1.x

@underscore_window3.y = @help_window.y + @help_window.height-24

end

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

# * Create Dummy Text Windows

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

def create_dummy_text_windows

# Lower Left

@dummy_stats1_window = Window_Base.new(0, 0, Graphics.width, 56)

@dummy_stats1_window.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE

rect = Rect.new(0, 0, @dummy_stats1_window.contents.width, 24)

text = SSS::MENU_STATUS_BOOSTER

@dummy_stats1_window.contents.draw_text(rect, text, 2)

@dummy_stats1_window.x = @underscore_window1.x-4

@dummy_stats1_window.y = @underscore_window1.y-8

# Lower Right

@dummy_stats2_window = Window_Base.new(0, 0, Graphics.width, 56)

@dummy_stats2_window.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE

rect = Rect.new(0, 0, @dummy_stats2_window.contents.width, 24)

text = SSS::MENU_STATUS_PARAM

@dummy_stats2_window.contents.draw_text(rect, text, 0)

@dummy_stats2_window.x = @underscore_window2.x+4

@dummy_stats2_window.y = @underscore_window2.y-8

# Upper Left

@dummy_stats3_window = Window_Base.new(0, 0, Graphics.width, 56)

@dummy_stats3_window.contents.font.size = YEM::EQUIP::STAT_FONT_SIZE

rect = Rect.new(0, 0, @dummy_stats3_window.contents.width, 24)

text = SSS::MENU_STATUS_OPTIONS

@dummy_stats3_window.contents.draw_text(rect, text, 2)

@dummy_stats3_window.x = @underscore_window3.x-4

@dummy_stats3_window.y = @underscore_window3.y-8

end

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

# * Create Item Image

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

def create_item_image

@item_back_sprite = Sprite.new

bitmap_w = 286

item_window_height = @command_window.y + @command_window.height - 25

bitmap_h = @boosters_window.nil? ? 8 : (@boosters_window.height-32)/24

@item_back_sprite.bitmap = Bitmap.new(bitmap_w, bitmap_h*24)

rect = Rect.new(0, 0, 286, 24)

source = Cache.system(SSS::MENU_BACK_PROFILE_ITEM)

yy = 0

bitmap_h.times do

@item_back_sprite.bitmap.blt(0, yy, source, rect)

yy += 24

end

end

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

# * Termination Processing

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

alias terminate_sss_ff13_status_menu terminate unless $@

def terminate

@gold_window.dispose

@menu_timer_window.dispose

@profile_back_sprite.bitmap.dispose

@profile_back_sprite.dispose

@location_window.dispose

@underscore_window1.dispose

@underscore_window2.dispose

@underscore_window3.dispose

@dummy_stats1_window.dispose

@dummy_stats2_window.dispose

@dummy_stats3_window.dispose

@item_back_sprite.bitmap.dispose

@item_back_sprite.dispose

terminate_sss_ff13_status_menu

end

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

# * Create Background for Menu Screen

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

def create_menu_background

@menuback_sprite.dispose unless @menuback_sprite.nil?

@menuback_sprite = Sprite.new

@actor = $game_party.members[@actor_index]

filename = SSS::MENU_PROFILE_IMAGES[@actor.id]

filename = SSS::MENU_PROFILE_IMAGES[1] if filename.nil?

@menuback_sprite.bitmap = Cache.system(filename)

blur_times = 2

blur_times.times do @menuback_sprite.bitmap.blur end

@menuback_sprite.color.set(16, 16, 16, 64)

@profile_back_sprite.dispose unless @profile_back_sprite.nil?

@profile_back_sprite = Sprite.new

@profile_back_sprite.bitmap = Cache.system(SSS::MENU_BACK_PROFILE_IMAGE)

update_menu_background

end

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

# * Update Background for Menu Screen

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

def update_menu_background

super

@gold_window.update unless @gold_window.nil?

@menu_timer_window.update unless @menu_timer_window.nil?

@profile_back_sprite.update unless @profile_back_sprite.nil?

end

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

# * Update Visible Windows

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

def update_visible_windows

@help_window.y = Graphics.height * 8

for window in @windows; window.y = Graphics.height * 8; end

@item_back_sprite.y = Graphics.height*8 unless @item_back_sprite.nil?

item_window_height = @command_window.y + @command_window.height - 25

case @data[@command_window.index]

when :general

@general_window.y = @command_window.height

when :boosters

@help_window.y = 12

@boosters_window.y = item_window_height

@boosters_stats.y = item_window_height

@boosters_window.update_help

unless @dummy_stats1_window.nil?

@dummy_stats1_window.contents.clear

rect = Rect.new(0, 0, @dummy_stats1_window.contents.width, 24)

text = SSS::MENU_STATUS_BOOSTER

@dummy_stats1_window.contents.draw_text(rect, text, 2)

end

unless @item_back_sprite.nil?

@item_back_sprite.y = item_window_height+16

end

when :elements

@help_window.y = 12

@elements_window.y = item_window_height

@elements_stats.y = item_window_height

@elements_window.update_help

unless @dummy_stats1_window.nil?

@dummy_stats1_window.contents.clear

rect = Rect.new(0, 0, @dummy_stats1_window.contents.width, 24)

text = SSS::MENU_STATUS_ELEMENT

@dummy_stats1_window.contents.draw_text(rect, text, 2)

end

unless @item_back_sprite.nil?

@item_back_sprite.y = item_window_height+16

end

when :states

@help_window.y = 12

@states_window.y = item_window_height

@states_stats.y = item_window_height

@states_window.update_help

unless @dummy_stats1_window.nil?

@dummy_stats1_window.contents.clear

rect = Rect.new(0, 0, @dummy_stats1_window.contents.width, 24)

text = SSS::MENU_STATUS_STATES

@dummy_stats1_window.contents.draw_text(rect, text, 2)

end

unless @item_back_sprite.nil?

@item_back_sprite.y = item_window_height+16

end

end

end

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

# * Set New Actor

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

alias set_new_actor_sss_ff13_status_menu set_new_actor unless $@

def set_new_actor

set_new_actor_sss_ff13_status_menu

Graphics.freeze

create_menu_background

Graphics.transition(10)

end

end

 

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

#

# END OF FILE

#

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

 

 

Images needed:

 

 

ProfileBack.png ProfileBack.png

ProfileItem.png ProfileItem.png

ProfileRalph.png ProfileRaplph.png

ProfileUlrika.png ProfileUlrika.png

ProfileBennett.png ProfileBennet.png

ProfileYlva.png ProfileYlva.png

 

 

 

 

 

 

Note: To use the shanghai scripts, you must have the Melody scripts which correspond

i.e.

Melody Main Menu -> Shanghai Main Menu

Melody Status Menu -> Shanghai Status Menu

 

Note: The shanghai scripts must be under the melody scripts to work.

 

Note: All images go in the Graphics/System folder.

 

I strongly suggest looking at the links to see how to use and modify the scripts to suit.

Share this post


Link to post
Share on other sites
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...