SystemStackError
Hallo Script-kundige...
ich habe mir vor kurzem im scriptbereich ein "UDecoderMessageSystem" geholt, per copy paste, und wollte ihn nun verwenden (hat solange in word verweilt).
nun bekomme ich folgende fehlermeldung beim start:
"?????´Menü´299 ??? SystemStackError??????
stack level too deep"
ich kenne diese fehlermeldung nicht und bin auch noch nicht weiter als bis zum methoden erstellen gekommen, da ist mir auch anfangs aufgefallen, dass ganz unten die ganzen "end"´s gefehlöt haben (habe sie eingefügt...)
wollte nun fragen, ob mir jemand helfen könnte und mir eventuell sogar die fehler erklären könnte.
Danke...
Stelle hier mal kurz dass script rein:
Hoffe Ihr könnt mir helfen (Fehler-Zeile ist ja oben angegeben...)
danke
(aktiviert den dankomat, ich würde mich über ´ne antwort sehr freuen...)
ich habe mir vor kurzem im scriptbereich ein "UDecoderMessageSystem" geholt, per copy paste, und wollte ihn nun verwenden (hat solange in word verweilt).
nun bekomme ich folgende fehlermeldung beim start:
"?????´Menü´299 ??? SystemStackError??????
stack level too deep"
ich kenne diese fehlermeldung nicht und bin auch noch nicht weiter als bis zum methoden erstellen gekommen, da ist mir auch anfangs aufgefallen, dass ganz unten die ganzen "end"´s gefehlöt haben (habe sie eingefügt...)
wollte nun fragen, ob mir jemand helfen könnte und mir eventuell sogar die fehler erklären könnte.
Danke...
Stelle hier mal kurz dass script rein:
#==============================================================================
# ** 1-Scene CMS V1.0
# 1SceneCmsAlternate.rb von Multitoeat, LegACy (04.09.2009)
#------------------------------------------------------------------------------
# http://www.rpg-studio.de/scriptdb/node/322
# 1-Scene CMS V1.0
#==============================================================================
#==============================================================================
# ** 1-Scene CMS (Alternate Version)
#------------------------------------------------------------------------------
# LegACy
# Version 1.00
# 12.28.07
#==============================================================================
# To put items into different catagory, simply apply
# attributes to them, you can apply more than 1 attributes
# to each item. In default, the attributes are :
# :: 17 > Recovery items
# :: 18 > Weaponry
# :: 19 > Armor
# :: 20 > Accessories
# :: 21 > Key Items
# :: 22 > Miscellanous Items
#
# For customization, look in LegACy class, further explanation's
# located there.
#
# Special thanks to Sven Kistner for his MMD3 Winamp skin
# which gives me the inspiration to make this and Squall
# (is it Selwyn now?) for his ASM.
#=============================================================
#==============================================================================
# ** LegACy's Script Customization (CMS-Alternate)
#==============================================================================
class LegACy
#--------------------------------------------------------------------------
# * Features Customization Constants
#--------------------------------------------------------------------------
CUSTOM_SAVE = true # True if you're using the custom save menu that comes with the menu.
SAVE_COUNT = 99 # Number of saves slot available for custom save menu.
BATTLE_BAR = false # True if you want to have bar for battle system.
#--------------------------------------------------------------------------
# * Item Grouping Customization Constants
#--------------------------------------------------------------------------
ITEMS = [17, 18, 19, 20, 21, 22] # Attributes ID for Item Catagory in order.
#--------------------------------------------------------------------------
# * Display Customization Constants
#--------------------------------------------------------------------------
WIN_Z = 201 # Z value of CMS' windows.
ICON_NAME = ['stat', 'menu', 'item'] # Image name for icon,
STAT_BAR = [false, false, true] # Windows where the stat bar appears.
BAR_COLOR = [Color.new(255, 0, 0, 200), # Color for bars.
Color.new(255, 255, 0, 200),
Color.new(0, 255, 255, 200),
Color.new(200, 64, 64, 255),
Color.new(64, 128, 64, 255),
Color.new(160, 100, 160, 255),
Color.new(128, 128, 200, 255)]
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles the actor. It's used within the Game_Actors class
# ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Get Current Experience Points
#--------------------------------------------------------------------------
def now_exp
return @exp - @exp_list[@level]
end
#--------------------------------------------------------------------------
# * Get Needed Experience Points
#--------------------------------------------------------------------------
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
# This class handles the map. It includes scrolling and passable determining
# functions. Refer to "$game_map" for the instance of this class.
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# * Get Map Name
#--------------------------------------------------------------------------
def name
load_data('Data/MapInfos.rxdata')[@map_id].name
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#-----------------------------------------------------------------------
# Draw Stat Bar
# actor : actor
# x : bar x-coordinate
# y : bar y-coordinate
# stat : stat to be displayed
#--------------------------------------------------------------------------
def draw_LegACy_bar(actor, x, y, stat, width = 156, height = 7)
bar_color = Color.new(0, 0, 0, 255)
end_color = Color.new(255, 255, 255, 255)
max = 999
case stat
when 'hp'
bar_color = Color.new(150, 0, 0, 255)
end_color = Color.new(255, 255, 60, 255)
min = actor.hp
max = actor.maxhp
when 'sp'
bar_color = Color.new(0, 0, 155, 255)
end_color = Color.new(255, 255, 255, 255)
min = actor.sp
max = actor.maxsp
when 'exp'
bar_color = Color.new(0, 155, 0, 255)
end_color = Color.new(255, 255, 255, 255)
unless actor.level == $data_actors[actor.id].final_level
min = actor.now_exp
max = actor.next_exp
else
min = 1
max = 1
end
when 'atk'
bar_color = LegACy::BAR_COLOR[0]
min = actor.atk
when 'pdef'
bar_color = LegACy::BAR_COLOR[1]
min = actor.pdef
when 'mdef'
bar_color = LegACy::BAR_COLOR[2]
min = actor.mdef
when 'str'
bar_color = LegACy::BAR_COLOR[3]
min = actor.str
when 'dex'
bar_color = LegACy::BAR_COLOR[4]
min = actor.dex
when 'agi'
bar_color = LegACy::BAR_COLOR[5]
min = actor.agi
when 'int'
bar_color = LegACy::BAR_COLOR[6]
min = actor.int
end
max = 1 if max == 0
# Draw Border
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1,
Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1,
Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min.to_f / max.to_f) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1,
Color.new(r, g, b, a))
end
end
case stat
when 'hp'
draw_actor_hp(actor, x - 1, y - 1
when 'sp'
draw_actor_sp(actor, x - 1, y - 1
when 'exp'
draw_actor_exp(actor, x - 1, y - 1
end
end
#--------------------------------------------------------------------------
# * Draw Sprite
#--------------------------------------------------------------------------
def draw_LegACy_sprite(x, y, name, hue)
bitmap = RPG::Cache.character(name, hue)
cw = bitmap.width / 4
ch = bitmap.height / 4
# Bitmap Rectange
src_rect = Rect.new(0, 0, cw, ch)
# Draws Bitmap
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
#--------------------------------------------------------------------------
# * Get Upgrade Text Color
#--------------------------------------------------------------------------
def up_color
return Color.new(74, 210, 74)
end
#--------------------------------------------------------------------------
# * Get Downgrade Text Color
#--------------------------------------------------------------------------
def down_color
return Color.new(170, 170, 170)
end
#--------------------------------------------------------------------------
# * Draw parameter
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type
#------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type, width = 120, bar = false)
case type
when 0
parameter_name = $data_system.words.atk
parameter_value = actor.atk
stat = 'atk'
when 1
parameter_name = $data_system.words.pdef
parameter_value = actor.pdef
stat = 'pdef'
when 2
parameter_name = $data_system.words.mdef
parameter_value = actor.mdef
stat = 'mdef'
when 3
parameter_name = $data_system.words.str
parameter_value = actor.str
stat = 'str'
when 4
parameter_name = $data_system.words.dex
parameter_value = actor.dex
stat = 'dex'
when 5
parameter_name = $data_system.words.agi
parameter_value = actor.agi
stat = 'agi'
when 6
parameter_name = $data_system.words.int
parameter_value = actor.int
stat = 'int'
when 7
parameter_name = 'Evasion'
parameter_value = actor.eva
stat = 'eva'
end
if bar == true && stat != 'eva'
draw_LegACy_bar(actor, x + 16, y + 21, stat, width - 16, 5)
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + width, y, 36, 32, parameter_value.to_s, 2)
end
end
#==============================================================================
# ** Window_Selectable
#------------------------------------------------------------------------------
# This window class contains cursor movement and scroll functions.
#==============================================================================
class Window_Selectable < Window_Base
#--------------------------------------------------------------------------
# * Alias Initialization
#--------------------------------------------------------------------------
alias legacy_CMS_windowselectable_update update
#--------------------------------------------------------------------------
# * Set Help Window
# name_window : new name window
#--------------------------------------------------------------------------
def name_window=(name_window)
@name_window = name_window
# Update name text (update_help is defined by the subclasses)
if self.active and @help_window != nil
update_name
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
legacy_CMS_windowselectable_update
# Update name text (update_help is defined by the subclasses)
if self.active and @name_window != nil
update_name
end
end
end
#==============================================================================
# ** Window_NewCommand
#------------------------------------------------------------------------------
# This window deals with general command choices.
#==============================================================================
class Window_NewCommand < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# width : window width
# commands : command text string array
#--------------------------------------------------------------------------
def initialize(width, commands, icon)
# Compute window height from command quantity
super(0, 0, width, commands.size * 48 + 4
@item_max = commands.size
@commands = commands
@icon = icon
self.contents = Bitmap.new(width - 32, (@item_max * 4
+ 16)
refresh
#self.index = -1
self.active = false
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
# color : text color
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
self.contents.font.bold = true
rect = Rect.new(4, 52 * index + 2, self.contents.width - 4, 52)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(@icon + index.to_s)
self.contents.blt(4, 52 * index + 4, bitmap, Rect.new(0, 0, 24, 24))
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max - 32
# Calculate cursor coordinates
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * 52 - self.oy - 4
# Update cursor rectangle
self.cursor_rect.set(x, y, cursor_width, 42)
end
#--------------------------------------------------------------------------
# * Disable Item
# index : item number
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
#--------------------------------------------------------------------------
# * Command Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(@commands[self.index] == nil ? "" : @commands[self.index])
end
end
#==============================================================================
# ** Window_NewMenuStatus
#------------------------------------------------------------------------------
# This window displays party member status on the menu screen.
#==============================================================================
class Window_NewMenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 192, 336)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
$game_party.actors.size < 4 ? i = 14 : i = 0
$game_party.actors.size == 1 ? i = 24 : i = i
self.contents = Bitmap.new(width - 32, (@item_max * 84) + i - 32)
for i in 0...@item_max
x = 4
y = (i * 77) - 12
actor = $game_party.actors
self.contents.font.size = 17
self.contents.font.bold = true
draw_LegACy_sprite(x + 16, y + 57, actor.character_name, actor.character_hue)
draw_actor_name(actor, x + 36, y + 4)
draw_actor_state(actor, x + 94, y + 4)
draw_actor_class(actor, x + 36, y + 24)
draw_actor_level(actor, x + 94, y + 24)
draw_LegACy_bar(actor, x - 3, y + 60, 'hp', 152)
draw_LegACy_bar(actor, x - 3, y + 75, 'sp', 152)
end
end
#--------------------------------------------------------------------------
# * Cursor Rectangle Update
#--------------------------------------------------------------------------
def update_cursor_rect
@index > 3 ? self.oy = (@index - 3) * 77 : self.oy = 0
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(-4, (@index * 77) - 2 - self.oy, self.width - 24, 77)
end
end
end
#==============================================================================
# ** Window_Stat
#------------------------------------------------------------------------------
# This window displays game stat on the menu screen.
#==============================================================================
class Window_Stat < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 256, 144)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.font.size = 18
self.contents.font.bold = true
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.draw_text(32, -4, 120, 32, "Play Time")
cx = contents.text_size($data_system.words.gold).width
self.contents.draw_text(32, 20, 120, 32, "Step Count")
self.contents.draw_text(32, 44, cx, 32, $data_system.words.gold, 2)
self.contents.draw_text(32, 68, 120, 32, "Location")
self.contents.font.color = normal_color
self.contents.draw_text(96, -4, 120, 32, text, 2)
self.contents.draw_text(96, 20, 120, 32, $game_party.steps.to_s, 2)
self.contents.draw_text(96, 44, 120, 32, $game_party.gold.to_s, 2)
self.contents.draw_text(24, 86, 192, 32, $game_map.name.to_s, 2)
for i in 0...4
rect = Rect.new(4, 24 * i, 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(LegACy::ICON_NAME[0] + i.to_s)
self.contents.blt(4, 24 * i, bitmap, Rect.new(0, 0, 24, 24))
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
#==============================================================================
# ** Window_Name
#------------------------------------------------------------------------------
# This window shows command, item, and skill names .
#==============================================================================
class Window_Name < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 112, 4
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 1)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 18
self.contents.font.bold = true
self.contents.draw_text(0, -4, self.width - 32, 24, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#==============================================================================
# ** Window_NewHelp
#------------------------------------------------------------------------------
# This window shows skill and item explanations along with actor status.
#==============================================================================
class Window_NewHelp < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 384, 4
self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 0)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 16
self.contents.font.bold = true
self.contents.draw_text(0, -4, self.width - 32, 24, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#==============================================================================
# ** Window_NewItem
#------------------------------------------------------------------------------
# This window displays items in possession on the menu.
#==============================================================================
class Window_NewItem < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 384, 96)
@column_max = 12
@attribute = LegACy::ITEMS[0]
refresh
self.index = 0
self.active = false
end
#--------------------------------------------------------------------------
# * Get Item
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Updates Window With New Item Type
# attribute : new item type
#--------------------------------------------------------------------------
def update_item(attribute)
@attribute = attribute
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# Add item
for i in 1...$data_items.size
if $game_party.item_number(i) > 0 and
$data_items[i].element_set.include?(@attribute)
@data.push($data_items[i])
end
end
# Also add weapons and items if outside of battle
unless $game_temp.in_battle
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and
$data_weapons[i].element_set.include?(@attribute)
@data.push($data_weapons[i])
end
end
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and
$data_armors[i].guard_element_set.include?(@attribute)
@data.push($data_armors[i])
end
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id)
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
self.contents.font.size = 16
self.contents.font.bold = true
if item.is_a?(RPG::Item) and
$game_party.item_can_use?(item.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 12 * 28
y = index / 12 * 32
rect = Rect.new(x, y, self.width / @column_max - 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x, y + 12, 24, 20, number.to_s, 2)
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max
# Calculate cursor coordinates
x = @index % @column_max * 28
y = @index / @column_max * 32 - self.oy + 2
# Update cursor rectangle
self.cursor_rect.set(x + 1, y, cursor_width - 2, 2
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
#--------------------------------------------------------------------------
# * Name Text Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(self.item == nil ? "" : self.item.name)
end
end
#==============================================================================
# ** Window_NewSkill
#------------------------------------------------------------------------------
# This window displays usable skills on the skill menu.
#==============================================================================
class Window_NewSkill < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 384, 96)
@actor = actor
@column_max = 12
refresh
self.index = 0
self.active = false
end
#--------------------------------------------------------------------------
# * Acquiring Skill
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Acquiring Actor
#--------------------------------------------------------------------------
def actor
return @actor
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...@actor.skills.size
skill = $data_skills[@actor.skills[i]]
if skill != nil
@data.push(skill)
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
skill = @data[index]
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
self.contents.font.size = 16
self.contents.font.bold = true
x = 4 + index % 12 * 28
y = index / 12 * 32
rect = Rect.new(x, y, self.width / @column_max - 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 4, y + 12, 24, 20, skill.sp_cost.to_s, 2)
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max
# Calculate cursor coordinates
x = @index % @column_max * 28
y = @index / @column_max * 32 - self.oy + 2
# Update cursor rectangle
self.cursor_rect.set(x + 1, y, cursor_width - 2, 2
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end
#--------------------------------------------------------------------------
# * Name Text Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(self.skill == nil ? "" : self.skill.name)
end
end
#==============================================================================
# ** Window_EquipStat
#------------------------------------------------------------------------------
# This window displays actor parameter changes on the equipment screen.
#==============================================================================
class Window_EquipStat < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :changes
attr_accessor :mode
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 240, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
@changes = [0, 0, 0, 0, 0, 0, 0, 0]
@mode = 0
refresh
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = 16
self.contents.font.bold = true
for i in 0..7
draw_actor_parameter(@actor, 16, (i * 16) - 6, i, 96, LegACy::STAT_BAR[1])
end
# Draw new attack if it's changed
if @new_atk != nil
self.contents.font.color = system_color
self.contents.draw_text(152, -6, 32, 32, "��", 1)
if @changes[0] == 0
self.contents.font.color = normal_color
elsif @changes[0] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, -6, 32, 32, @new_atk.to_s, 2)
end
# Draw new physical def if it's changed
if @new_pdef != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 10, 32, 32, "��", 1)
if @changes[1] == 0
self.contents.font.color = normal_color
elsif @changes[1] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 10, 32, 32, @new_pdef.to_s, 2)
end
# Draw new magical def if it's changed
if @new_mdef != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 26, 32, 32, "��", 1)
if @changes[2] == 0
self.contents.font.color = normal_color
elsif @changes[2] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 26, 32, 32, @new_mdef.to_s, 2)
end
# Draw new str if it's changed
if @new_str != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 42, 32, 32, "��", 1)
if @changes[3] == 0
self.contents.font.color = normal_color
elsif @changes[3] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 42, 32, 32, @new_str.to_s, 2)
end
# Draw new dex if it's changed
if @new_dex != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 58, 32, 32, "��", 1)
if @changes[4] == 0
self.contents.font.color = normal_color
elsif @changes[4] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 58, 32, 32, @new_dex.to_s, 2)
end
# Draw new agi if it's changed
if @new_agi != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 74, 32, 32, "��", 1)
if @changes[5] == 0
self.contents.font.color = normal_color
elsif @changes[5] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 74, 32, 32, @new_agi.to_s, 2)
end
# Draw new int if it's changed
if @new_int != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 90, 32, 32, "��", 1)
if @changes[6] == 0
self.contents.font.color = normal_color
elsif @changes[6] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 90, 32, 32, @new_int.to_s, 2)
end
# Draw new evasion if it's changed
if @new_eva != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 106, 32, 32, "��", 1)
if @changes[7] == 0
self.contents.font.color = normal_color
elsif @changes[7] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 106, 32, 32, @new_eva.to_s, 2)
end
end
#--------------------------------------------------------------------------
# * Set parameters after changing equipment
# new_atk : attack power after changing equipment
# new_pdef : physical defense after changing equipment
# new_mdef : magic defense after changing equipment
# new_str : strength after changing equipment
# new_dex : dexterity after changing equipment
# new_agi : agility after changing equipment
# new_int : inteligence after changing equipment
# new_eva : evasion after changing equipment
#--------------------------------------------------------------------------
def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex,
new_agi, new_int, new_eva)
flag = false
if new_atk != @new_atk || new_pdef != @new_pdef || new_str != @new_str ||
new_mdef != @new_mdef || new_dex != @new_dex || new_agi != @new_agi ||
new_eva != @new_eva
flag = true
end
@new_atk = new_atk
@new_pdef = new_pdef
@new_mdef = new_mdef
@new_str = new_str
@new_dex = new_dex
@new_agi = new_agi
@new_int = new_int
@new_eva = new_eva
if flag
refresh
end
end
end
#==============================================================================
# ** Window_Equipment
#------------------------------------------------------------------------------
# This window displays items the actor is currently equipped with on the
# equipment screen.
#==============================================================================
class Window_Equipment < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 240, 176)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
self.index = 0
self.active = false
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Item Acquisition
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = []
@data.push($data_weapons[@actor.weapon_id])
@data.push($data_armors[@actor.armor1_id])
@data.push($data_armors[@actor.armor2_id])
@data.push($data_armors[@actor.armor3_id])
@data.push($data_armors[@actor.armor4_id])
@item_max = @data.size
self.contents.font.color = system_color
self.contents.font.size = 19
self.contents.font.bold = true
self.contents.draw_text(0, 28 * 0, 76, 32, $data_system.words.weapon)
self.contents.draw_text(0, 28 * 1, 76, 32, $data_system.words.armor1)
self.contents.draw_text(0, 28 * 2, 76, 32, $data_system.words.armor2)
self.contents.draw_text(0, 28 * 3, 76, 32, $data_system.words.armor3)
self.contents.draw_text(0, 28 * 4, 76, 32, $data_system.words.armor4)
self.contents.font.size = 16
for i in 0..4
draw_item_name(@data[i], 76, 28 * i)
end
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Calculate cursor width
cursor_width = self.width / @column_max - 24
# Calculate cursor coordinates
x = @index % @column_max * (cursor_width + 24)
y = @index * 28
# Update cursor rectangle
self.cursor_rect.set(x - 4, y, cursor_width, 32)
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#==============================================================================
# ** Window_EquipmentItem
#------------------------------------------------------------------------------
# This window displays choices when opting to change equipment on the
# equipment screen.
#==============================================================================
class Window_EquipmentItem < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
# equip_type : equip region (0-3)
#--------------------------------------------------------------------------
def initialize(actor, equip_type)
super(0, 0, 240, 96)
@actor = actor
@equip_type = equip_type
@column_max = 7
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Updates Window With New Equipment Type
# equip_type : new teyp of equipment
#--------------------------------------------------------------------------
def update_equipment(equip_type)
@equip_type = equip_type
refresh
end
#--------------------------------------------------------------------------
# * Item Acquisition
#--------------------------------------------------------------------------
def item
if self.index == 0
return @data[@item_max - 1]
else
return @data[self.index - 1]
end
end
#--------------------------------------------------------------------------
# * Get Row Count
#--------------------------------------------------------------------------
def row_max
# Compute rows from number of items and columns
return (@item_max + @column_max + 5) / @column_max
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# Add equippable weapons
if @equip_type == 0
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
# Add equippable armor
if @equip_type != 0
armor_set = $data_classes[@actor.class_id].armor_set
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and armor_set.include?(i)
if $data_armors[i].kind == @equip_type-1
@data.push($data_armors[i])
end
end
end
end
# Add blank page
@data.push(nil)
# Make a bitmap and draw all items
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
self.contents.draw_text(4, 0, 204, 32, 'Unequip', 1)
for i in 0...@item_max - 1
draw_item(i)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
x = 4 + (index ) % 7 * 30
y = 32 + ((index) / 7 * 32)
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
self.contents.font.size = 16
self.contents.font.bold = true
rect = Rect.new(x, y, self.width / @column_max - 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.draw_text(x, y + 12, 24, 20, number.to_s, 2)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# If cursor is movable
if self.active and @item_max > 0 and @index >= 0
# If pressing down on the directional buttons
if Input.repeat?(Input:
OWN)
# If column count is 1 and directional button was pressed down with no
# repeat, or if cursor position is more to the front than
# (item count - column count)
if (@column_max == 1 and Input.trigger?(Input:
OWN)) or
@index < @item_max - @column_max
# Move cursor down
$game_system.se_play($data_system.cursor_se)
if @index == 0
@index = 1
else
@index = (@index + @column_max) % @item_max
end
end
end
# If the up directional button was pressed
if Input.repeat?(Input::UP)
# If column count is 1 and directional button was pressed up with no
# repeat, or if cursor position is more to the back than column count
if (@column_max == 1 and Input.trigger?(Input::UP)) or
@index >= @column_max or @index == 1
# Move cursor up
$game_system.se_play($data_system.cursor_se)
if @index == 1
@index = 0
else
@index = (@index - @column_max + @item_max) % @item_max
end
end
end
# If the right directional button was pressed
if Input.repeat?(Input::RIGHT)
# If column count is 2 or more, and cursor position is closer to front
# than (item count -1)
if @column_max >= 2 and @index < @item_max - 1
# Move cursor right
$game_system.se_play($data_system.cursor_se)
@index += 1
end
end
# If the left directional button was pressed
if Input.repeat?(Input::LEFT)
# If column count is 2 or more, and cursor position is more back than 0
if @column_max >= 2 and @index > 0
# Move cursor left
$game_system.se_play($data_system.cursor_se)
@index -= 1
end
end
end
# Update help text (update_help is defined by the subclasses)
if self.active and @help_window != nil
update_help
end
# Update cursor rectangle
update_cursor_rect
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = (@index + 6) / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max
# Calculate cursor coordinates
x = (@index + 6) % @column_max * 30
y = (@index + 6) / @column_max * 32 - self.oy + 2
if @index == 0
# Calculate cursor width
cursor_width = self.width - 30
# Calculate cursor coordinates
x = -1
y = -self.oy
end
# Update cursor rectangle
self.cursor_rect.set(x + 1, y, cursor_width - 2, 30)
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? 'Unequip the current equipment.' :
self.item.description)
end
#--------------------------------------------------------------------------
# * Name Text Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(self.item == nil ? "" : self.item.name)
self.item == nil ? @name_window.visible = false : @name_window.visible = true
end
end
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# This window displays full status specs on the status screen.
#==============================================================================
class Window_NewStatus < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 256, 480)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
self.active = false
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
# Draw basic stats
self.contents.clear
self.contents.font.size = 18
self.contents.font.bold = true
draw_actor_name(@actor, 12, 0)
draw_actor_graphic(@actor, 28, 104)
draw_LegACy_bar(@actor, 64, 64, 'hp', 144)
draw_LegACy_bar(@actor, 64, 84, 'sp', 144)
draw_LegACy_bar(@actor, 64, 104, 'exp', 144)
draw_actor_class(@actor, 28, 24)
draw_actor_level(@actor, 136, 24)
draw_actor_state(@actor, 112, 0)
# Draw actor's parameters
self.contents.font.size = 22
self.contents.font.color = system_color
self.contents.draw_text(0, 116, 128, 32, "Status")
self.contents.font.size = 16
for i in 0..7
draw_actor_parameter(@actor, 12, (i * 20) + 140, i, 168, LegACy::STAT_BAR[2])
end
# Draw equipments
self.contents.font.size = 22
self.contents.font.color = system_color
self.contents.draw_text(0, 304, 128, 32, "Equipment")
self.contents.font.size = 16
self.contents.draw_text(12, 328, 96, 32, "Weapon")
self.contents.draw_text(12, 352, 96, 32, "Shield")
self.contents.draw_text(12, 376, 96, 32, "Helmet")
self.contents.draw_text(12, 400, 96, 32, "Armor")
self.contents.draw_text(12, 424, 96, 32, "Accessory")
equip = $data_weapons[@actor.weapon_id]
if @actor.equippable?(equip)
draw_item_name($data_weapons[@actor.weapon_id], 96, 32
else
self.contents.font.color = knockout_color
self.contents.draw_text(96, 328, 192, 32, "Nothing equipped")
end
equip1 = $data_armors[@actor.armor1_id]
if @actor.equippable?(equip1)
draw_item_name($data_armors[@actor.armor1_id], 96, 352)
else
self.contents.font.color = crisis_color
self.contents.draw_text(96, 352, 192, 32, "Nothing equipped")
end
equip2 = $data_armors[@actor.armor2_id]
if @actor.equippable?(equip2)
draw_item_name($data_armors[@actor.armor2_id], 96, 376)
else
self.contents.font.color = crisis_color
self.contents.draw_text(96, 376, 192, 32, "Nothing equipped")
end
equip3 = $data_armors[@actor.armor3_id]
if @actor.equippable?(equip3)
draw_item_name($data_armors[@actor.armor3_id], 96, 400)
else
self.contents.font.color = crisis_color
self.contents.draw_text(96, 400, 192, 32, "Nothing equipped")
end
equip4 = $data_armors[@actor.armor4_id]
if @actor.equippable?(equip4)
draw_item_name($data_armors[@actor.armor4_id], 96, 424)
else
self.contents.font.color = crisis_color
self.contents.draw_text(96, 424, 192, 32, "Nothing equipped")
end
end
end
#==============================================================================
# ** Window_NewFile
#------------------------------------------------------------------------------
# This window displays save files on the save and load screens.
#==============================================================================
class Window_NewFile < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize()
super(256, 0, 384, 336)
self.contents = Bitmap.new(width - 32, 99 * 32)
index = $game_temp.last_file_index == nil ? 0 : $game_temp.last_file_index
self.index = index
self.active = false
@item_max = LegACy::SAVE_COUNT
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = 18
self.contents.font.bold = true
time_stamp = Time.at(0)
for i in 0...@item_max
filename = "Save#{i + 1}.rxdata"
# Draw file number
self.contents.font.color = system_color
self.contents.draw_text(-2, i * 32, 32, 32, (i + 1).to_s, 1)
if FileTest.exist?(filename)
# Load save file size
size = File.size(filename)
if size.between?(1000, 999999)
size /= 1000
size_str = "#{size} KB"
elsif size > 999999
size /= 1000000
size_str = "#{size} MB"
else
size_str = size.to_s
end
# Loads data
file = File.open(filename, "r")
# Draw time stamp
time_stamp = file.mtime
date = time_stamp.strftime("%m/%d/%Y")
time = time_stamp.strftime("%H:%M")
self.contents.font.color = normal_color
self.contents.draw_text(24, i * 32, 80, 32, date)
self.contents.draw_text(144, i * 32, 100, 32, time)
self.contents.draw_text(272, i * 32, 72, 32, size_str, 2)
end
end
end
end
#==============================================================================
# ** Window_FileStatus
#------------------------------------------------------------------------------
# This window shows the status of the currently selected save file
#==============================================================================
class Window_FileStatus < Window_Base
#--------------------------------------------------------------------------
# * initialize
#--------------------------------------------------------------------------
def initialize(save_window)
super(0, 0, 384, 144)
self.contents = Bitmap.new(width - 32, height - 32)
@save_window = save_window
@index = @save_window.index
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = 15
self.contents.font.bold = true
filename = "Save#{@index + 1}.rxdata"
return unless FileTest.exist?(filename)
file = File.open(filename, "r")
Marshal.load(file)
frame_count = Marshal.load(file)
for i in 0...6
Marshal.load(file)
end
party = Marshal.load(file)
Marshal.load(file)
map = Marshal.load(file)
for i in 0...party.actors.size
actor = party.actors[i]
x = i % 2 * 84 + 4
y = i / 2 * 56
draw_actor_name(actor, x + 22, y + 6)
draw_actor_level(actor, x + 22, y + 22)
draw_actor_graphic(actor, x + 6, y + 50)
end
total_sec = frame_count / Graphics.frame_rate
hour = total_sec / 60 / 60
min = total_sec / 60 % 60
sec = total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
map_name = load_data("Data/MapInfos.rxdata")[map.map_id].name
self.contents.font.color = system_color
self.contents.font.size = 18
self.contents.draw_text(168, 2, 96, 24, "Play Time")
self.contents.draw_text(168, 30, 96, 24, $data_system.words.gold)
self.contents.draw_text(168, 58, 96, 24, "Location")
self.contents.font.color = normal_color
self.contents.draw_text(276, 2, 76, 24, text, 2)
self.contents.draw_text(276, 30, 76, 24, party.gold.to_s, 2)
self.contents.draw_text(200, 82, 152, 24, map_name, 2)
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
def update
@tilemap.update if @tilemap != nil
if @index != @save_window.index
@index = @save_window.index
refresh
end
super
end
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# This class performs menu screen processing.
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
@target = false
@exit = false
@actor = $game_party.actors[0]
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Make command window
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = 'Status'
s5 = 'Save'
s6 = 'Exit'
t1 = 'Recovery'
t2 = 'Weapon'
t3 = 'Armor'
t4 = 'Accessory'
t5 = 'Quest'
t6 = 'Misc.'
u1 = 'To Title'
u2 = 'Quit'
@command_window = Window_NewCommand.new(64, [s1, s2, s3, s4, s5, s6], LegACy::ICON_NAME[1])
@command_window.x = 192
@command_window.y = -192
@command_window.active = true
@command_window.index = 0
# Make stat window
@stat_window = Window_Stat.new
# Make name window
@name_window = Window_Name.new
@name_window.x = 96
@name_window.y = 50
@name_window.opacity = 200
# Make help window
@help_window = Window_NewHelp.new
@help_window.x = -128
@command_window.name_window = @name_window
# If number of party members is 0
if $game_party.actors.size == 0
# Disable items, skills, equipment, and status
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
# If save is forbidden
if $game_system.save_disabled
# Disable save
@command_window.disable_item(4)
end
# Make status window
@status_window = Window_NewMenuStatus.new
@status_window.y = -192
# Make item catagory window
@catagory_window = Window_NewCommand.new(64, [t1, t2, t3, t4, t5, t6], LegACy::ICON_NAME[2])
@catagory_window.x = 192
@catagory_window.y = -192
@catagory_window.name_window = @name_window
# Make item window
@item_window = Window_NewItem.new
@item_window.x = -128
@item_window.y = 48
@item_window.help_window = @help_window
@item_window.name_window = @name_window
# Make skill window
@skill_window = Window_NewSkill.new(@actor)
@skill_window.x = -128
@skill_window.y = 48
@skill_window.help_window = @help_window
@skill_window.name_window = @name_window
# Make equipment windows
@equipitem_window = Window_EquipmentItem.new(@actor, 0)
@equipitem_window.x = 256
@equipitem_window.y = -96
@equipitem_window.help_window = @help_window
@equipitem_window.name_window = @name_window
@equip_window = Window_Equipment.new(@actor)
@equip_window.x = 16
@equip_window.y = -32
@equip_window.help_window = @help_window
@equipstat_window = Window_EquipStat.new(@actor)
@equipstat_window.x = 16
@equipstat_window.y = -16
# Make player status window
@playerstatus_window = Window_NewStatus.new(@actor)
@playerstatus_window.height = 144
# Make file window
@file_window = Window_NewFile.new
@file_window.x = -128
@file_window.y = -192
# Make file status window
@filestat_window = Window_FileStatus.new(@file_window)
@filestat_window.x = -128
# Make end window
@end_window = Window_Command.new(120, [u1, u2])
@end_window.x = 136
@end_window.active = false
# Make map image on background
@spriteset = Spriteset_Map.new
# Adjusting the z coordinates of the windows
@windows = [@command_window, @stat_window, @status_window,
@catagory_window, @name_window, @help_window, @item_window,
@skill_window, @equipstat_window, @equip_window, @equipitem_window,
@playerstatus_window, @file_window, @filestat_window, @end_window]
@windows.each {|i| i.z = LegACy::WIN_Z}
@stat_window.z = LegACy::WIN_Z + 5
@name_window.z = LegACy::WIN_Z + 10
@equipstat_window.z = LegACy::WIN_Z - 3
@equip_window.z = LegACy::WIN_Z - 5
@equipitem_window.z = LegACy::WIN_Z - 10
@file_window.z = LegACy::WIN_Z - 5
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of windows
@windows.each {|i| i.dispose}
@spriteset.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update windows
@windows.each {|i| i.update}
# Animate windows
animate
# Update actor scrolling system
update_scroll if @skill_window.active || @equip_window.active ||
@playerstatus_window.active
# Update menu system
menu_update
# Update name windows
update_name
end
#--------------------------------------------------------------------------
# * Animating windows
#--------------------------------------------------------------------------
def animate
# Animate initial windows if command window is active
if @command_window.active
@command_window.y += 28 if @command_window.y < 144
@status_window.y += 28 if @status_window.y < 144
@equipstat_window.y += 8 if @equipstat_window.y < 48
@equip_window.y += 8 if @equip_window.y < 32
# Animate initial windows upon exiting menu
elsif @exit == true
@command_window.y -= 28 if @command_window.y > -192
@status_window.y -= 28 if @status_window.y > -192
@equipstat_window.y -= 8 if @equipstat_window.y > -16
@equip_window.y -= 8 if @equip_window.y > -32
$scene = Scene_Map.new if @status_window.y == -192
end
# Animate item catagory windows if it's active
if @catagory_window.active
@command_window.y += 28 if @command_window.y < 480
@catagory_window.y += 28 if @catagory_window.y < 144
elsif @item_window.active == false && @target == false
@catagory_window.y -= 28 if @catagory_window.y > -192
@command_window.y -= 28 if @command_window.y > 144
end
# Animate item windows if it's active
if @item_window.active
@item_window.x += 48 if @item_window.x < 256
@help_window.x += 48 if @help_window.x < 256
elsif ! @command_window.active && @catagory_window.active == true &&
@command_window.index == 0
@item_window.x -= 48 if @item_window.x > -128
@help_window.x -= 48 if @help_window.x > -128
end
# Animate skill windows if it's active
if @skill_window.active
@skill_window.x += 48 if @skill_window.x < 256
@help_window.x += 48 if @help_window.x < 256
elsif ! @command_window.active &&! @target && @command_window.index == 1
@skill_window.x -= 48 if @skill_window.x > -128
@help_window.x -= 48 if @help_window.x > -128
end
# Animate equipment windows if they're active
if @equip_window.active
@equipstat_window.x += 30 if @equipstat_window.x < 256
@equip_window.x += 30 if @equip_window.x < 256
@help_window.x += 48 if @help_window.x < 256
if @equip_window.x == 256 && @equip_window.y < 208
@equip_window.y += 22
@equipitem_window.y += 48
end
elsif ! @equip_window.active && @equipitem_window.active == false && @command_window.index == 2
@equipitem_window.y -= 48 if @equipitem_window.y > -96
@equip_window.y -= 22 if @equip_window.y > 32
if @equip_window.x > 16 && @equip_window.y == 32
@equipstat_window.x -= 30 if @equipstat_window.x > 16
@equip_window.x -= 30 if @equip_window.x > 16
@help_window.x -= 48 if @help_window.x > -128
end
end
# Animate equipment item window if it's active
if @equipitem_window.active
@equipitem_window.y += 12 if @equipitem_window.y < 384
elsif @equip_window.active
@equipitem_window.y -= 12 if @equipitem_window.y > 288
end
# Animate status window if it's active
if @playerstatus_window.active
@playerstatus_window.x += 32 if @playerstatus_window.x < 256
if @playerstatus_window.x == 256
@playerstatus_window.height += 42 if @playerstatus_window.height < 480
end
else
@playerstatus_window.height -= 42 if @playerstatus_window.height > 144
if @playerstatus_window.height == 144
@playerstatus_window.x -= 32 if @playerstatus_window.x > 0
end
end
# Animate file windows if it's active
if @file_window.active
@filestat_window.x += 48 if @filestat_window.x < 256
@file_window.x += 48 if @file_window.x < 256
if @file_window.x == 256
@file_window.y += 42 if @file_window.y < 144
end
else
@file_window.y -= 42 if @file_window.y > -192
if @file_window.y == -192
@file_window.x -= 48 if @file_window.x > -128
@filestat_window.x -= 48 if @filestat_window.x > -128
end
end
# Animate end window if it's active
if @end_window.active
@end_window.x += 15 if @end_window.x < 256
else
@end_window.x -= 15 if @end_window.x > 136
end
end
#--------------------------------------------------------------------------
# * Checking Update Method Needed
#--------------------------------------------------------------------------
def menu_update
if @command_window.active && @command_window.y == 144 then update_command
elsif @item_window.x == -128 && @catagory_window.active && @catagory_window.y == 144 then update_catagory
elsif @item_window.active && @item_window.x == 256 then update_item
elsif @skill_window.active && @skill_window.x == 256 then update_skill
elsif @target then update_target
elsif @equip_window.active && @equip_window.y == 208 then update_equip
elsif @equipitem_window.active && @equipitem_window.y == 384 then update_equipment
elsif @playerstatus_window.height == 480 then update_playerstatus
elsif @status_window.active then update_status
elsif @file_window.y == 144 then update_save
elsif @end_window.x == 256 then update_end
end
end
#--------------------------------------------------------------------------
# * Name Update
#--------------------------------------------------------------------------
def update_name
# Update name window if command window is active
if @command_window.active && @command_window.y == 144
@name_window.x = @command_window.x + 36
@name_window.y = @command_window.y - 18 + (@command_window.index * 52)
@command_window.update_name
# Update name window if item catagory window is active
elsif @item_window.x == -128 && @catagory_window.active && @catagory_window.y == 144
@name_window.x = @catagory_window.x + 36
@name_window.y = @catagory_window.y - 18 + (@catagory_window.index * 52)
@catagory_window.update_name
# Update name window if item window is active
elsif @item_window.active && @item_window.x == 256
if @item_window.index % 12 < 6
@name_window.x = @item_window.x + 36 + (@item_window.index % 12 * 2
else
@name_window.x = @item_window.x - 88 + (@item_window.index % 12 * 2
end
@name_window.y = @item_window.y - 18 + (@item_window.index / 12 * 32)
@item_window.update_name
# Update name window if skill window is active
elsif @skill_window.active && @skill_window.x == 256
if @skill_window.index % 12 < 6
@name_window.x = @skill_window.x + 36 + (@skill_window.index % 12 * 2
else
@name_window.x = @skill_window.x - 88 + (@skill_window.index % 12 * 2
end
@name_window.y = @skill_window.y - 18 + (@skill_window.index / 12 * 32)
@skill_window.update_name
# Update name window if equipment window is active
elsif @equipitem_window.active && @equipitem_window.y == 384
@name_window.x = @equipitem_window.x + 36 + (@equipitem_window.index % 7 * 30)
@name_window.y = @equipitem_window.y - 18 + (@equipitem_window.index / 7 * 32)
@equipitem_window.update_name
# Hide name window if it's not needed
else
@name_window.visible = false
end
end
#--------------------------------------------------------------------------
# * Windows Actor Scrolling Update
#--------------------------------------------------------------------------
def update_scroll
if Input.trigger?(Input::R)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To next actor
if $game_party.actors.size - 1 == @status_window.index
@status_window.index = 0
else
@status_window.index += 1
end
actor = $game_party.actors[@status_window.index]
@skill_window.update_actor(actor) if @skill_window.active
@playerstatus_window.update_actor(actor) if @playerstatus_window.active
if @equip_window.active
@equip_window.update_actor(actor)
@equipitem_window.update_actor(actor)
@equipstat_window.update_actor(actor)
end
return
end
# If L button was pressed
if Input.trigger?(Input::L)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To previous actor
if @status_window.index == 0
@status_window.index = $game_party.actors.size - 1
else
@status_window.index -= 1
end
actor = $game_party.actors[@status_window.index]
@skill_window.update_actor(actor) if @skill_window.active
@playerstatus_window.update_actor(actor) if @playerstatus_window.active
if @equip_window.active
@equip_window.update_actor(actor)
@equipitem_window.update_actor(actor)
@equipstat_window.update_actor(actor)
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when command window is active)
#--------------------------------------------------------------------------
def update_command
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to map screen
@command_window.active = false
@exit = true
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# If command other than save or end game, and party members = 0
if $game_party.actors.size == 0 and @command_window.index < 4
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Branch by command window cursor position
case @command_window.index
when 0 # item
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Make item catagory window active
@command_window.active = false
@catagory_window.active = true
@catagory_window.index = 0
when 1 # skill
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Make status window active
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2 # equipment
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Make status window active
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3 # status
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Make status window active
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4 # save
# If saving is forbidden
if $game_system.save_disabled
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to default save screen
if ! LegACy::CUSTOM_SAVE
$scene = Scene_Save.new
return
end
# Or switch to custom save menu
@command_window.active = false
@file_window.active = true
when 5 # end game
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to end game screen
@command_window.active = false
@end_window.active = true
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when status window is active)
#--------------------------------------------------------------------------
def update_status
@actor = $game_party.actors[@status_window.index]
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Make command window active
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Branch by command window cursor position
case @command_window.index
when 1 # skill
# If this actor's action limit is 2 or more
if $game_party.actors[@status_window.index].restriction >= 2
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to skill screen
@skill_window.active = true
@skill_window.index = 0
@skill_window.update_actor(@actor)
@help_window.active = true
@status_window.active = false
when 2 # equipment
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to equipment screen
@equip_window.active = true
@equip_window.index = 0
@equip_window.update_actor(@actor)
@help_window.active = true
@status_window.active = false
when 3 # status
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to status screen
@playerstatus_window.active = true
@playerstatus_window.update_actor(@actor)
@status_window.active = false
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when catagory window is active)
#--------------------------------------------------------------------------
def update_catagory
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Make command window active
@command_window.active = true
@catagory_window.active = false
@catagory_window.index = -1
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Branch by command window cursor position
type = LegACy::ITEMS[@catagory_window.index]
@item_window.active = true
@item_window.update_item(type)
@catagory_window.active = false
@help_window.active = true
@item_window.index = 0
end
end
#--------------------------------------------------------------------------
# * Frame Update (when item window is active)
#--------------------------------------------------------------------------
def update_item
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to item command window
@item_window.active = false
@catagory_window.active = true
@help_window.active = false
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Get currently selected data on the item window
@item = @item_window.item
# If not a use item
unless @item.is_a?(RPG::Item)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# If it can't be used
unless $game_party.item_can_use?(@item.id)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# If effect scope is an ally
if @item.scope >= 3
# Activate target window
@item_window.active = false
@target = true
@status_window.active = true
# Set cursor position to effect scope (single / all)
if @item.scope == 4 || @item.scope == 6
@status_window.index = -1
else
@status_window.index = 0
end
# If effect scope is other than an ally
else
# If command event ID is valid
if @item.common_event_id > 0
# Command event call reservation
$game_temp.common_event_id = @item.common_event_id
# Play item use SE
$game_system.se_play(@item.menu_se)
# If consumable
if @item.consumable
# Decrease used items by 1
$game_party.lose_item(@item.id, 1)
# Draw item window item
@item_window.draw_item(@item_window.index)
end
# Switch to map screen
$scene = Scene_Map.new
return
end
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (if skill window is active)
#--------------------------------------------------------------------------
def update_skill
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to main command menu
@skill_window.active = false
@help_window.active = false
@status_window.active = true
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Get currently selected data on the skill window
@skill = @skill_window.skill
# If unable to use
if @skill == nil or not @actor.skill_can_use?(@skill.id)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# If effect scope is ally
if @skill.scope >= 3
# Activate target window
@skill_window.active = false
@target = true
@status_window.active = true
# Set cursor position to effect scope (single / all)
if @skill.scope == 4 || @skill.scope == 6
@status_window.index = -1
elsif @skill.scope == 7
@actor_index = @status_window.index
@status_window.index = @actor_index - 10
else
@status_window.index = 0
end
# If effect scope is other than ally
else
# If common event ID is valid
if @skill.common_event_id > 0
# Common event call reservation
$game_temp.common_event_id = @skill.common_event_id
# Play use skill SE
$game_system.se_play(@skill.menu_se)
# Use up SP
@actor.sp -= @skill.sp_cost
# Remake each window content
@status_window.refresh
@skill_window.refresh
# Switch to map screen
$scene = Scene_Map.new
return
end
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when target window is active)
#--------------------------------------------------------------------------
def update_target
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
if @command_window.index == 0
# Remake item window contents
@item_window.refresh
@item_window.active = true
@status_window.active = false
@status_window.index = -1
end
if @command_window.index == 1
# Remake skill window contents
@skill_window.refresh
@skill_window.active = true
@status_window.active = false
@status_window.index = @skill_window.actor.index
end
@target = false
return
end
# If C button was pressed
if Input.trigger?(Input::C)
if @command_window.index == 0
# If items are used up
if $game_party.item_number(@item.id) == 0
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# If target is all
if @status_window.index == -1
# Apply item effects to entire party
used = false
for i in $game_party.actors
used |= i.item_effect(@item)
end
end
# If single target
if @status_window.index >= 0
# Apply item use effects to target actor
target = $game_party.actors[@status_window.index]
used = target.item_effect(@item)
end
# If an item was used
if used
# Play item use SE
$game_system.se_play(@item.menu_se)
# If consumable
if @item.consumable
# Decrease used items by 1
$game_party.lose_item(@item.id, 1)
# Redraw item window item
@item_window.refresh
end
# Remake target window contents
@status_window.refresh
# If all party members are dead
if $game_party.all_dead?
@target = false
# Switch to game over screen
$scene = Scene_Gameover.new
return
end
# If common event ID is valid
if @item.common_event_id > 0
# Common event call reservation
$game_temp.common_event_id = @item.common_event_id
@target = false
# Switch to map screen
$scene = Scene_Map.new
return
end
end
# If item wasn't used
unless used
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
end
return
end
if @command_window.index == 1
# If unable to use because SP ran out
unless @actor.skill_can_use?(@skill.id)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# If target is all
if @status_window.index == -1
# Apply skill use effects to entire party
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skill)
end
end
# If target is user
if @status_window.index <= -2
# Apply skill use effects to target actor
target = $game_party.actors[@status_window.index + 10]
used = target.skill_effect(@actor, @skill)
end
# If single target
if @status_window.index >= 0
# Apply skill use effects to target actor
target = $game_party.actors[@status_window.index]
used = target.skill_effect(@actor, @skill)
end
# If skill was used
if used
# Play skill use SE
$game_system.se_play(@skill.menu_se)
# Use up SP
@actor.sp -= @skill.sp_cost
# Remake each window content
@status_window.refresh
@skill_window.refresh
# If entire party is dead
if $game_party.all_dead?
# Switch to game over screen
@target = false
$scene = Scene_Gameover.new
return
end
# If command event ID is valid
if @skill.common_event_id > 0
# Command event call reservation
$game_temp.common_event_id = @skill.common_event_id
@target = false
# Switch to map screen
$scene = Scene_Map.new
return
end
end
# If skill wasn't used
unless used
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end
#--------------------------------------------------------------------------
# * Frame Update (when equip window is active)
#--------------------------------------------------------------------------
def update_equip
@equipitem_window.update_equipment(@equip_window.index)
@equipstat_window.mode = @equip_window.index
@equipstat_window.refresh
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
@status_window.refresh
# Switch to menu screen
@equip_window.active = false
@help_window.active = false
@status_window.active = true
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# If equipment is fixed
if @actor.equip_fix?(@equip_window.index)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Activate item window
@equip_window.active = false
@equipitem_window.active = true
@equipitem_window.index = 0
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when equipment item window is active)
#--------------------------------------------------------------------------
def update_equipment
# Get currently item
item1 = @equip_window.item
item2 = @equipitem_window.item
last_hp = @actor.hp
last_sp = @actor.sp
old_atk = @actor.atk
old_pdef = @actor.pdef
old_mdef = @actor.mdef
old_str = @actor.str
old_dex = @actor.dex
old_agi = @actor.agi
old_int = @actor.int
old_eva = @actor.eva
@actor.equip(@equip_window.index, item2 == nil ? 0 : item2.id)
# Get parameters for after equipment change
new_atk = @actor.atk
new_pdef = @actor.pdef
new_mdef = @actor.mdef
new_str = @actor.str
new_dex = @actor.dex
new_agi = @actor.agi
new_int = @actor.int
new_eva = @actor.eva
@equipstat_window.changes = [0, 0, 0, 0, 0, 0, 0, 0]
@equipstat_window.changes[0] = new_atk > old_atk ? 1 : @equipstat_window.changes[0]
@equipstat_window.changes[0] = new_atk < old_atk ? -1 : @equipstat_window.changes[0]
@equipstat_window.changes[1] = new_pdef > old_pdef ? 1 : @equipstat_window.changes[1]
@equipstat_window.changes[1] = new_pdef < old_pdef ? -1 : @equipstat_window.changes[1]
@equipstat_window.changes[2] = new_mdef > old_mdef ? 1 : @equipstat_window.changes[2]
@equipstat_window.changes[2] = new_mdef < old_mdef ? -1 : @equipstat_window.changes[2]
@equipstat_window.changes[3] = new_str > old_str ? 1 : @equipstat_window.changes[3]
@equipstat_window.changes[3] = new_str < old_str ? -1 : @equipstat_window.changes[3]
@equipstat_window.changes[4] = new_dex > old_dex ? 1 : @equipstat_window.changes[4]
@equipstat_window.changes[4] = new_dex < old_dex ? -1 : @equipstat_window.changes[4]
@equipstat_window.changes[5] = new_agi > old_agi ? 1 : @equipstat_window.changes[5]
@equipstat_window.changes[5] = new_agi < old_agi ? -1 : @equipstat_window.changes[5]
@equipstat_window.changes[6] = new_int > old_int ? 1 : @equipstat_window.changes[6]
@equipstat_window.changes[6] = new_int < old_int ? -1 : @equipstat_window.changes[6]
@equipstat_window.changes[7] = new_eva > old_eva ? 1 : @equipstat_window.changes[7]
@equipstat_window.changes[7] = new_eva < old_eva ? -1 : @equipstat_window.changes[7]
# Return equipment
@actor.equip(@equip_window.index, item1 == nil ? 0 : item1.id)
@actor.hp = last_hp
@actor.sp = last_sp
# Draw in left window
@equipstat_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str,
new_dex, new_agi, new_int, new_eva)
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Erase parameters for after equipment change
@equipstat_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil, nil)
# Activate right window
@equip_window.active = true
@equipitem_window.active = false
@equipitem_window.index = -1
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play equip SE
$game_system.se_play($data_system.equip_se)
# Get currently selected data on the item window
item = @equipitem_window.item
# Change equipment
@actor.equip(@equip_window.index, item == nil ? 0 : item.id)
# Erase parameters for after equipment change
@equipstat_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil, nil)
# Activate right window
@equip_window.active = true
@equipitem_window.active = false
@equipitem_window.index = -1
# Remake right window and item window contents
@equip_window.refresh
@equipitem_window.refresh
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when player status window is active)
#--------------------------------------------------------------------------
def update_playerstatus
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to menu screen
@playerstatus_window.active = false
@status_window.active = true
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when save window is active)
#--------------------------------------------------------------------------
def update_save
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to menu screen
@file_window.active = false
@command_window.active = true
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play save SE
$game_system.se_play($data_system.save_se)
file = File.open("Save#{@file_window.index + 1}.rxdata", "wb")
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
Marshal.dump(characters, file)
# Write frame count for measuring play time
Marshal.dump(Graphics.frame_count, file)
# Increase save count by 1
$game_system.save_count += 1
# Save magic number
# (A random value will be written each time saving with editor)
$game_system.magic_number = $data_system.magic_number
# Write each type of game object
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
file.close
@file_window.refresh
@filestat_window.refresh
return
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update_end
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to menu screen
@end_window.active = false
@command_window.active = true
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Fade out BGM, BGS, and ME
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# Branch by command window cursor position
case @end_window.index
when 0 # to title
# Switch to title screen
$scene = Scene_Title.new
when 1 # shutdown
# Shutdown
$scene = nil
end
return
end
end
end
#----------------------------------------------------------------------------
# Begin Window Battle Status Edit
#----------------------------------------------------------------------------
if LegACy::BATTLE_BAR
#==============================================================================
# ** Window_BattleStatus
#------------------------------------------------------------------------------
# This window displays the status of all party members on the battle screen.
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
draw_actor_name(actor, actor_x, 0)
draw_LegACy_bar(actor, actor_x - 4, 46, 'hp', 120)
draw_LegACy_bar(actor, actor_x - 4, 76, 'sp', 120)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
else
draw_actor_state(actor, actor_x, 96)
end
end
end
end
end
#----------------------------------------------------------------------------
# End Window Battle Status Edit
#----------------------------------------------------------------------------
if LegACy::CUSTOM_SAVE
#==============================================================================
# ** Window_File
#------------------------------------------------------------------------------
# This window shows a list of recorded save files.
#==============================================================================
class Window_File < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize()
super(0, 96, 320, 336)
self.contents = Bitmap.new(width - 32, LegACy::SAVE_COUNT * 32)
index = $game_temp.last_file_index == nil ? 0 : $game_temp.last_file_index
self.index = index
self.active = false
@item_max = LegACy::SAVE_COUNT
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
time_stamp = Time.at(0)
for i in 0...LegACy::SAVE_COUNT
filename = "Save#{i + 1}.rxdata"
self.contents.draw_text(1, i * 32, 32, 32, (i + 1).to_s, 1)
if FileTest.exist?(filename)
size = File.size(filename)
if size.between?(1000, 999999)
size /= 1000
size_str = "#{size} KB"
elsif size > 999999
size /= 1000000
size_str = "#{size} MB"
else
size_str = size.to_s
end
time_stamp = File.open(filename, "r").mtime
date = time_stamp.strftime("%m/%d/%Y")
time = time_stamp.strftime("%H:%M")
self.contents.font.size = 20
self.contents.font.bold = true
self.contents.draw_text(38, i * 32, 120, 32, date)
self.contents.draw_text(160, i * 32, 100, 32, time)
self.contents.draw_text(0, i * 32, 284, 32, size_str, 2)
end
end
end
end
#==============================================================================
# ** Window_FileStat
#------------------------------------------------------------------------------
# This window shows the status of the currently selected save file
#==============================================================================
class Window_FileStat < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# save_window : current save file
#--------------------------------------------------------------------------
def initialize(save_window)
super(0, 96, 320, 336)
self.contents = Bitmap.new(width - 32, height - 32)
@save_window = save_window
@index = @save_window.index
refresh
end
#--------------------------------------------------------------------------
# # Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
filename = "Save#{@index + 1}.rxdata"
return unless FileTest.exist?(filename)
file = File.open(filename, "r")
Marshal.load(file)
frame_count = Marshal.load(file)
for i in 0...6
Marshal.load(file)
end
party = Marshal.load(file)
Marshal.load(file)
map = Marshal.load(file)
self.contents.font.size = 20
self.contents.font.bold = true
for i in 0...party.actors.size
actor = party.actors[i]
x = 4
y = i * 56
draw_LegACy_bar(actor, x + 112, y + 14, 'hp', 160)
draw_LegACy_bar(actor, x + 112, y + 36, 'sp', 160)
draw_actor_name(actor, x + 40, y - 2)
draw_actor_level(actor, x + 40, y + 22)
draw_actor_graphic(actor, x + 10, y + 4
end
total_sec = frame_count / Graphics.frame_rate
hour = total_sec / 60 / 60
min = total_sec / 60 % 60
sec = total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
map_name = load_data("Data/MapInfos.rxdata")[map.map_id].name
self.contents.font.color = system_color
self.contents.draw_text(4, 224, 96, 32, "Play Time ")
self.contents.draw_text(4, 252, 96, 32, $data_system.words.gold)
self.contents.draw_text(4, 280, 96, 32, "Location ")
self.contents.draw_text(104, 224, 16, 32, ":")
self.contents.draw_text(104, 252, 16, 32, ":")
self.contents.draw_text(104, 280, 16, 32, ":")
self.contents.font.color = normal_color
self.contents.draw_text(120, 224, 144, 32, text)
self.contents.draw_text(120, 252, 144, 32, party.gold.to_s)
self.contents.draw_text(120, 280, 144, 32, map_name)
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
def update
if @index != @save_window.index
@index = @save_window.index
refresh
end
super
end
end
#----------------------------------------------------------------------------
# Begin Scene Load Edit
#----------------------------------------------------------------------------
#==============================================================================
# ** Scene_Load
#------------------------------------------------------------------------------
# This class performs load screen processing.
#==============================================================================
class Scene_Load
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
$game_temp = Game_Temp.new
$game_temp.last_file_index = 0
latest_time = Time.at(0)
for i in 0..LegACy::SAVE_COUNT
filename = "Save#{i + 1}.rxdata"
if FileTest.exist?(filename)
file = File.open(filename, "r")
if file.mtime > latest_time
latest_time = file.mtime
$game_temp.last_file_index = i
end
file.close
end
end
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
@help_window = Window_Help.new
@help_window.set_text('Select a file to load.')
@file_window = Window_File.new
@file_window.y = 64
@file_window.height = 416
@file_window.width = 320
@file_window.active = true
@status_window = Window_FileStat.new(@file_window)
@status_window.x = 320
@status_window.y = 64
@status_window.height = 416
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@help_window.dispose
@file_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
@help_window.update
@file_window.update
@status_window.update
# If C button was pressed
if Input.trigger?(Input::C)
unless FileTest.exist?(filename)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.load_se)
file = File.open(filename, "rb")
read_save_data(file)
file.close
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
$game_map.update
$scene = Scene_Map.new
$game_temp.last_file_index = @file_index
return
end
# If B button was pressed
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Title.new
return
end
end
#--------------------------------------------------------------------------
# * Read Save Data
# file : file object for reading (opened)
#--------------------------------------------------------------------------
def read_save_data(file)
# Read character data for drawing save file
characters = Marshal.load(file)
# Read frame count for measuring play time
Graphics.frame_count = Marshal.load(file)
# Read each type of game object
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
# If magic number is different from when saving
# (if editing was added with editor)
if $game_system.magic_number != $data_system.magic_number
# Load map
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
# Refresh party members
$game_party.refresh
end
#--------------------------------------------------------------------------
# * return the selected file's name
#--------------------------------------------------------------------------
def filename
return "Save#{@file_window.index + 1}.rxdata"
end
end
#----------------------------------------------------------------------------
# End Scene Load Edit
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# Begin Scene Save Edit
#----------------------------------------------------------------------------
#==============================================================================
# ** Scene_Save
#------------------------------------------------------------------------------
# This class performs save screen processing.
#==============================================================================
class Scene_Save
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
$game_temp = Game_Temp.new
$game_temp.last_file_index = 0
latest_time = Time.at(0)
for i in 0..LegACy::SAVE_COUNT
filename = 'Save#{i + 1}.rxdata'
if FileTest.exist?(filename)
file = File.open(filename, "r")
if file.mtime > latest_time
latest_time = file.mtime
$game_temp.last_file_index = i
end
file.close
end
end
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
@help_window = Window_Help.new
@help_window.set_text('Which file would you like to save to?')
@file_window = Window_File.new
@file_window.y = 64
@file_window.height = 416
@file_window.width = 320
@file_window.active = true
@status_window = Window_FileStat.new(@file_window)
@status_window.x = 320
@status_window.y = 64
@status_window.height = 416
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@help_window.dispose
@file_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
@help_window.update
@file_window.update
@status_window.update
# If C button was pressed
if Input.trigger?(Input::C)
# Play save SE
$game_system.se_play($data_system.save_se)
# Write save data
file = File.open(filename, 'wb')
write_save_data(file)
file.close
# If called from event
if $game_temp.save_calling
# Clear save call flag
$game_temp.save_calling = false
# Switch to map screen
$scene = Scene_Map.new
return
end
# Switch to menu screen
$scene = Scene_Menu.new(4)
return
end
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# If called from event
if $game_temp.save_calling
# Clear save call flag
$game_temp.save_calling = false
# Switch to map screen
$scene = Scene_Map.new
return
end
# Switch to menu screen
$scene = Scene_Menu.new(4)
end
end
#--------------------------------------------------------------------------
# * Write Save Data
# file : write file object (opened)
#--------------------------------------------------------------------------
def write_save_data(file)
# Make character data for drawing save file
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
# Write character data for drawing save file
Marshal.dump(characters, file)
# Wrire frame count for measuring play time
Marshal.dump(Graphics.frame_count, file)
# Increase save count by 1
$game_system.save_count += 1
# Save magic number
# (A random value will be written each time saving with editor)
$game_system.magic_number = $data_system.magic_number
# Write each type of game object
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end
#--------------------------------------------------------------------------
# * return the selected file's name
#--------------------------------------------------------------------------
def filename
return 'Save#{@file_window.index + 1}.rxdata'
end
end
#----------------------------------------------------------------------------
# End Scene Save Edit
#----------------------------------------------------------------------------
end
#==============================================================================
# ** 1-Scene CMS V1.0
# 1SceneCmsAlternate.rb von Multitoeat, LegACy (04.09.2009)
#------------------------------------------------------------------------------
# http://www.rpg-studio.de/scriptdb/node/322
# 1-Scene CMS V1.0
#==============================================================================
#==============================================================================
# ** 1-Scene CMS (Alternate Version)
#------------------------------------------------------------------------------
# LegACy
# Version 1.00
# 12.28.07
#==============================================================================
# To put items into different catagory, simply apply
# attributes to them, you can apply more than 1 attributes
# to each item. In default, the attributes are :
# :: 17 > Recovery items
# :: 18 > Weaponry
# :: 19 > Armor
# :: 20 > Accessories
# :: 21 > Key Items
# :: 22 > Miscellanous Items
#
# For customization, look in LegACy class, further explanation's
# located there.
#
# Special thanks to Sven Kistner for his MMD3 Winamp skin
# which gives me the inspiration to make this and Squall
# (is it Selwyn now?) for his ASM.
#=============================================================
#==============================================================================
# ** LegACy's Script Customization (CMS-Alternate)
#==============================================================================
class LegACy
#--------------------------------------------------------------------------
# * Features Customization Constants
#--------------------------------------------------------------------------
CUSTOM_SAVE = true # True if you're using the custom save menu that comes with the menu.
SAVE_COUNT = 99 # Number of saves slot available for custom save menu.
BATTLE_BAR = false # True if you want to have bar for battle system.
#--------------------------------------------------------------------------
# * Item Grouping Customization Constants
#--------------------------------------------------------------------------
ITEMS = [17, 18, 19, 20, 21, 22] # Attributes ID for Item Catagory in order.
#--------------------------------------------------------------------------
# * Display Customization Constants
#--------------------------------------------------------------------------
WIN_Z = 201 # Z value of CMS' windows.
ICON_NAME = ['stat', 'menu', 'item'] # Image name for icon,
STAT_BAR = [false, false, true] # Windows where the stat bar appears.
BAR_COLOR = [Color.new(255, 0, 0, 200), # Color for bars.
Color.new(255, 255, 0, 200),
Color.new(0, 255, 255, 200),
Color.new(200, 64, 64, 255),
Color.new(64, 128, 64, 255),
Color.new(160, 100, 160, 255),
Color.new(128, 128, 200, 255)]
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles the actor. It's used within the Game_Actors class
# ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Get Current Experience Points
#--------------------------------------------------------------------------
def now_exp
return @exp - @exp_list[@level]
end
#--------------------------------------------------------------------------
# * Get Needed Experience Points
#--------------------------------------------------------------------------
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
# This class handles the map. It includes scrolling and passable determining
# functions. Refer to "$game_map" for the instance of this class.
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# * Get Map Name
#--------------------------------------------------------------------------
def name
load_data('Data/MapInfos.rxdata')[@map_id].name
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#-----------------------------------------------------------------------
# Draw Stat Bar
# actor : actor
# x : bar x-coordinate
# y : bar y-coordinate
# stat : stat to be displayed
#--------------------------------------------------------------------------
def draw_LegACy_bar(actor, x, y, stat, width = 156, height = 7)
bar_color = Color.new(0, 0, 0, 255)
end_color = Color.new(255, 255, 255, 255)
max = 999
case stat
when 'hp'
bar_color = Color.new(150, 0, 0, 255)
end_color = Color.new(255, 255, 60, 255)
min = actor.hp
max = actor.maxhp
when 'sp'
bar_color = Color.new(0, 0, 155, 255)
end_color = Color.new(255, 255, 255, 255)
min = actor.sp
max = actor.maxsp
when 'exp'
bar_color = Color.new(0, 155, 0, 255)
end_color = Color.new(255, 255, 255, 255)
unless actor.level == $data_actors[actor.id].final_level
min = actor.now_exp
max = actor.next_exp
else
min = 1
max = 1
end
when 'atk'
bar_color = LegACy::BAR_COLOR[0]
min = actor.atk
when 'pdef'
bar_color = LegACy::BAR_COLOR[1]
min = actor.pdef
when 'mdef'
bar_color = LegACy::BAR_COLOR[2]
min = actor.mdef
when 'str'
bar_color = LegACy::BAR_COLOR[3]
min = actor.str
when 'dex'
bar_color = LegACy::BAR_COLOR[4]
min = actor.dex
when 'agi'
bar_color = LegACy::BAR_COLOR[5]
min = actor.agi
when 'int'
bar_color = LegACy::BAR_COLOR[6]
min = actor.int
end
max = 1 if max == 0
# Draw Border
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1,
Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1,
Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min.to_f / max.to_f) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1,
Color.new(r, g, b, a))
end
end
case stat
when 'hp'
draw_actor_hp(actor, x - 1, y - 1
when 'sp'
draw_actor_sp(actor, x - 1, y - 1
when 'exp'
draw_actor_exp(actor, x - 1, y - 1
end
end
#--------------------------------------------------------------------------
# * Draw Sprite
#--------------------------------------------------------------------------
def draw_LegACy_sprite(x, y, name, hue)
bitmap = RPG::Cache.character(name, hue)
cw = bitmap.width / 4
ch = bitmap.height / 4
# Bitmap Rectange
src_rect = Rect.new(0, 0, cw, ch)
# Draws Bitmap
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
#--------------------------------------------------------------------------
# * Get Upgrade Text Color
#--------------------------------------------------------------------------
def up_color
return Color.new(74, 210, 74)
end
#--------------------------------------------------------------------------
# * Get Downgrade Text Color
#--------------------------------------------------------------------------
def down_color
return Color.new(170, 170, 170)
end
#--------------------------------------------------------------------------
# * Draw parameter
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type
#------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type, width = 120, bar = false)
case type
when 0
parameter_name = $data_system.words.atk
parameter_value = actor.atk
stat = 'atk'
when 1
parameter_name = $data_system.words.pdef
parameter_value = actor.pdef
stat = 'pdef'
when 2
parameter_name = $data_system.words.mdef
parameter_value = actor.mdef
stat = 'mdef'
when 3
parameter_name = $data_system.words.str
parameter_value = actor.str
stat = 'str'
when 4
parameter_name = $data_system.words.dex
parameter_value = actor.dex
stat = 'dex'
when 5
parameter_name = $data_system.words.agi
parameter_value = actor.agi
stat = 'agi'
when 6
parameter_name = $data_system.words.int
parameter_value = actor.int
stat = 'int'
when 7
parameter_name = 'Evasion'
parameter_value = actor.eva
stat = 'eva'
end
if bar == true && stat != 'eva'
draw_LegACy_bar(actor, x + 16, y + 21, stat, width - 16, 5)
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + width, y, 36, 32, parameter_value.to_s, 2)
end
end
#==============================================================================
# ** Window_Selectable
#------------------------------------------------------------------------------
# This window class contains cursor movement and scroll functions.
#==============================================================================
class Window_Selectable < Window_Base
#--------------------------------------------------------------------------
# * Alias Initialization
#--------------------------------------------------------------------------
alias legacy_CMS_windowselectable_update update
#--------------------------------------------------------------------------
# * Set Help Window
# name_window : new name window
#--------------------------------------------------------------------------
def name_window=(name_window)
@name_window = name_window
# Update name text (update_help is defined by the subclasses)
if self.active and @help_window != nil
update_name
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
legacy_CMS_windowselectable_update
# Update name text (update_help is defined by the subclasses)
if self.active and @name_window != nil
update_name
end
end
end
#==============================================================================
# ** Window_NewCommand
#------------------------------------------------------------------------------
# This window deals with general command choices.
#==============================================================================
class Window_NewCommand < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# width : window width
# commands : command text string array
#--------------------------------------------------------------------------
def initialize(width, commands, icon)
# Compute window height from command quantity
super(0, 0, width, commands.size * 48 + 4
@item_max = commands.size
@commands = commands
@icon = icon
self.contents = Bitmap.new(width - 32, (@item_max * 4
+ 16)
refresh
#self.index = -1
self.active = false
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
# color : text color
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
self.contents.font.bold = true
rect = Rect.new(4, 52 * index + 2, self.contents.width - 4, 52)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(@icon + index.to_s)
self.contents.blt(4, 52 * index + 4, bitmap, Rect.new(0, 0, 24, 24))
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max - 32
# Calculate cursor coordinates
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * 52 - self.oy - 4
# Update cursor rectangle
self.cursor_rect.set(x, y, cursor_width, 42)
end
#--------------------------------------------------------------------------
# * Disable Item
# index : item number
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
#--------------------------------------------------------------------------
# * Command Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(@commands[self.index] == nil ? "" : @commands[self.index])
end
end
#==============================================================================
# ** Window_NewMenuStatus
#------------------------------------------------------------------------------
# This window displays party member status on the menu screen.
#==============================================================================
class Window_NewMenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 192, 336)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
$game_party.actors.size < 4 ? i = 14 : i = 0
$game_party.actors.size == 1 ? i = 24 : i = i
self.contents = Bitmap.new(width - 32, (@item_max * 84) + i - 32)
for i in 0...@item_max
x = 4
y = (i * 77) - 12
actor = $game_party.actors[i]
self.contents.font.size = 17
self.contents.font.bold = true
draw_LegACy_sprite(x + 16, y + 57, actor.character_name, actor.character_hue)
draw_actor_name(actor, x + 36, y + 4)
draw_actor_state(actor, x + 94, y + 4)
draw_actor_class(actor, x + 36, y + 24)
draw_actor_level(actor, x + 94, y + 24)
draw_LegACy_bar(actor, x - 3, y + 60, 'hp', 152)
draw_LegACy_bar(actor, x - 3, y + 75, 'sp', 152)
end
end
#--------------------------------------------------------------------------
# * Cursor Rectangle Update
#--------------------------------------------------------------------------
def update_cursor_rect
@index > 3 ? self.oy = (@index - 3) * 77 : self.oy = 0
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(-4, (@index * 77) - 2 - self.oy, self.width - 24, 77)
end
end
end
#==============================================================================
# ** Window_Stat
#------------------------------------------------------------------------------
# This window displays game stat on the menu screen.
#==============================================================================
class Window_Stat < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 256, 144)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.font.size = 18
self.contents.font.bold = true
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.draw_text(32, -4, 120, 32, "Play Time")
cx = contents.text_size($data_system.words.gold).width
self.contents.draw_text(32, 20, 120, 32, "Step Count")
self.contents.draw_text(32, 44, cx, 32, $data_system.words.gold, 2)
self.contents.draw_text(32, 68, 120, 32, "Location")
self.contents.font.color = normal_color
self.contents.draw_text(96, -4, 120, 32, text, 2)
self.contents.draw_text(96, 20, 120, 32, $game_party.steps.to_s, 2)
self.contents.draw_text(96, 44, 120, 32, $game_party.gold.to_s, 2)
self.contents.draw_text(24, 86, 192, 32, $game_map.name.to_s, 2)
for i in 0...4
rect = Rect.new(4, 24 * i, 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(LegACy::ICON_NAME[0] + i.to_s)
self.contents.blt(4, 24 * i, bitmap, Rect.new(0, 0, 24, 24))
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
#==============================================================================
# ** Window_Name
#------------------------------------------------------------------------------
# This window shows command, item, and skill names .
#==============================================================================
class Window_Name < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 112, 4
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 1)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 18
self.contents.font.bold = true
self.contents.draw_text(0, -4, self.width - 32, 24, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#==============================================================================
# ** Window_NewHelp
#------------------------------------------------------------------------------
# This window shows skill and item explanations along with actor status.
#==============================================================================
class Window_NewHelp < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 384, 4
self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 0)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 16
self.contents.font.bold = true
self.contents.draw_text(0, -4, self.width - 32, 24, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#==============================================================================
# ** Window_NewItem
#------------------------------------------------------------------------------
# This window displays items in possession on the menu.
#==============================================================================
class Window_NewItem < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 384, 96)
@column_max = 12
@attribute = LegACy::ITEMS[0]
refresh
self.index = 0
self.active = false
end
#--------------------------------------------------------------------------
# * Get Item
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Updates Window With New Item Type
# attribute : new item type
#--------------------------------------------------------------------------
def update_item(attribute)
@attribute = attribute
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# Add item
for i in 1...$data_items.size
if $game_party.item_number(i) > 0 and
$data_items[i].element_set.include?(@attribute)
@data.push($data_items[i])
end
end
# Also add weapons and items if outside of battle
unless $game_temp.in_battle
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and
$data_weapons[i].element_set.include?(@attribute)
@data.push($data_weapons[i])
end
end
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and
$data_armors[i].guard_element_set.include?(@attribute)
@data.push($data_armors[i])
end
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id)
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
self.contents.font.size = 16
self.contents.font.bold = true
if item.is_a?(RPG::Item) and
$game_party.item_can_use?(item.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 12 * 28
y = index / 12 * 32
rect = Rect.new(x, y, self.width / @column_max - 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x, y + 12, 24, 20, number.to_s, 2)
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max
# Calculate cursor coordinates
x = @index % @column_max * 28
y = @index / @column_max * 32 - self.oy + 2
# Update cursor rectangle
self.cursor_rect.set(x + 1, y, cursor_width - 2, 2
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
#--------------------------------------------------------------------------
# * Name Text Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(self.item == nil ? "" : self.item.name)
end
end
#==============================================================================
# ** Window_NewSkill
#------------------------------------------------------------------------------
# This window displays usable skills on the skill menu.
#==============================================================================
class Window_NewSkill < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 384, 96)
@actor = actor
@column_max = 12
refresh
self.index = 0
self.active = false
end
#--------------------------------------------------------------------------
# * Acquiring Skill
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Acquiring Actor
#--------------------------------------------------------------------------
def actor
return @actor
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...@actor.skills.size
skill = $data_skills[@actor.skills[i]]
if skill != nil
@data.push(skill)
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
skill = @data[index]
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
self.contents.font.size = 16
self.contents.font.bold = true
x = 4 + index % 12 * 28
y = index / 12 * 32
rect = Rect.new(x, y, self.width / @column_max - 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 4, y + 12, 24, 20, skill.sp_cost.to_s, 2)
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max
# Calculate cursor coordinates
x = @index % @column_max * 28
y = @index / @column_max * 32 - self.oy + 2
# Update cursor rectangle
self.cursor_rect.set(x + 1, y, cursor_width - 2, 2
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end
#--------------------------------------------------------------------------
# * Name Text Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(self.skill == nil ? "" : self.skill.name)
end
end
#==============================================================================
# ** Window_EquipStat
#------------------------------------------------------------------------------
# This window displays actor parameter changes on the equipment screen.
#==============================================================================
class Window_EquipStat < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :changes
attr_accessor :mode
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 240, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
@changes = [0, 0, 0, 0, 0, 0, 0, 0]
@mode = 0
refresh
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = 16
self.contents.font.bold = true
for i in 0..7
draw_actor_parameter(@actor, 16, (i * 16) - 6, i, 96, LegACy::STAT_BAR[1])
end
# Draw new attack if it's changed
if @new_atk != nil
self.contents.font.color = system_color
self.contents.draw_text(152, -6, 32, 32, "��", 1)
if @changes[0] == 0
self.contents.font.color = normal_color
elsif @changes[0] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, -6, 32, 32, @new_atk.to_s, 2)
end
# Draw new physical def if it's changed
if @new_pdef != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 10, 32, 32, "��", 1)
if @changes[1] == 0
self.contents.font.color = normal_color
elsif @changes[1] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
end
end
end
# ** 1-Scene CMS V1.0
# 1SceneCmsAlternate.rb von Multitoeat, LegACy (04.09.2009)
#------------------------------------------------------------------------------
# http://www.rpg-studio.de/scriptdb/node/322
# 1-Scene CMS V1.0
#==============================================================================
#==============================================================================
# ** 1-Scene CMS (Alternate Version)
#------------------------------------------------------------------------------
# LegACy
# Version 1.00
# 12.28.07
#==============================================================================
# To put items into different catagory, simply apply
# attributes to them, you can apply more than 1 attributes
# to each item. In default, the attributes are :
# :: 17 > Recovery items
# :: 18 > Weaponry
# :: 19 > Armor
# :: 20 > Accessories
# :: 21 > Key Items
# :: 22 > Miscellanous Items
#
# For customization, look in LegACy class, further explanation's
# located there.
#
# Special thanks to Sven Kistner for his MMD3 Winamp skin
# which gives me the inspiration to make this and Squall
# (is it Selwyn now?) for his ASM.
#=============================================================
#==============================================================================
# ** LegACy's Script Customization (CMS-Alternate)
#==============================================================================
class LegACy
#--------------------------------------------------------------------------
# * Features Customization Constants
#--------------------------------------------------------------------------
CUSTOM_SAVE = true # True if you're using the custom save menu that comes with the menu.
SAVE_COUNT = 99 # Number of saves slot available for custom save menu.
BATTLE_BAR = false # True if you want to have bar for battle system.
#--------------------------------------------------------------------------
# * Item Grouping Customization Constants
#--------------------------------------------------------------------------
ITEMS = [17, 18, 19, 20, 21, 22] # Attributes ID for Item Catagory in order.
#--------------------------------------------------------------------------
# * Display Customization Constants
#--------------------------------------------------------------------------
WIN_Z = 201 # Z value of CMS' windows.
ICON_NAME = ['stat', 'menu', 'item'] # Image name for icon,
STAT_BAR = [false, false, true] # Windows where the stat bar appears.
BAR_COLOR = [Color.new(255, 0, 0, 200), # Color for bars.
Color.new(255, 255, 0, 200),
Color.new(0, 255, 255, 200),
Color.new(200, 64, 64, 255),
Color.new(64, 128, 64, 255),
Color.new(160, 100, 160, 255),
Color.new(128, 128, 200, 255)]
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles the actor. It's used within the Game_Actors class
# ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Get Current Experience Points
#--------------------------------------------------------------------------
def now_exp
return @exp - @exp_list[@level]
end
#--------------------------------------------------------------------------
# * Get Needed Experience Points
#--------------------------------------------------------------------------
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
# This class handles the map. It includes scrolling and passable determining
# functions. Refer to "$game_map" for the instance of this class.
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# * Get Map Name
#--------------------------------------------------------------------------
def name
load_data('Data/MapInfos.rxdata')[@map_id].name
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#-----------------------------------------------------------------------
# Draw Stat Bar
# actor : actor
# x : bar x-coordinate
# y : bar y-coordinate
# stat : stat to be displayed
#--------------------------------------------------------------------------
def draw_LegACy_bar(actor, x, y, stat, width = 156, height = 7)
bar_color = Color.new(0, 0, 0, 255)
end_color = Color.new(255, 255, 255, 255)
max = 999
case stat
when 'hp'
bar_color = Color.new(150, 0, 0, 255)
end_color = Color.new(255, 255, 60, 255)
min = actor.hp
max = actor.maxhp
when 'sp'
bar_color = Color.new(0, 0, 155, 255)
end_color = Color.new(255, 255, 255, 255)
min = actor.sp
max = actor.maxsp
when 'exp'
bar_color = Color.new(0, 155, 0, 255)
end_color = Color.new(255, 255, 255, 255)
unless actor.level == $data_actors[actor.id].final_level
min = actor.now_exp
max = actor.next_exp
else
min = 1
max = 1
end
when 'atk'
bar_color = LegACy::BAR_COLOR[0]
min = actor.atk
when 'pdef'
bar_color = LegACy::BAR_COLOR[1]
min = actor.pdef
when 'mdef'
bar_color = LegACy::BAR_COLOR[2]
min = actor.mdef
when 'str'
bar_color = LegACy::BAR_COLOR[3]
min = actor.str
when 'dex'
bar_color = LegACy::BAR_COLOR[4]
min = actor.dex
when 'agi'
bar_color = LegACy::BAR_COLOR[5]
min = actor.agi
when 'int'
bar_color = LegACy::BAR_COLOR[6]
min = actor.int
end
max = 1 if max == 0
# Draw Border
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1,
Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1,
Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min.to_f / max.to_f) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1,
Color.new(r, g, b, a))
end
end
case stat
when 'hp'
draw_actor_hp(actor, x - 1, y - 1

when 'sp'
draw_actor_sp(actor, x - 1, y - 1

when 'exp'
draw_actor_exp(actor, x - 1, y - 1

end
end
#--------------------------------------------------------------------------
# * Draw Sprite
#--------------------------------------------------------------------------
def draw_LegACy_sprite(x, y, name, hue)
bitmap = RPG::Cache.character(name, hue)
cw = bitmap.width / 4
ch = bitmap.height / 4
# Bitmap Rectange
src_rect = Rect.new(0, 0, cw, ch)
# Draws Bitmap
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
#--------------------------------------------------------------------------
# * Get Upgrade Text Color
#--------------------------------------------------------------------------
def up_color
return Color.new(74, 210, 74)
end
#--------------------------------------------------------------------------
# * Get Downgrade Text Color
#--------------------------------------------------------------------------
def down_color
return Color.new(170, 170, 170)
end
#--------------------------------------------------------------------------
# * Draw parameter
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type
#------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type, width = 120, bar = false)
case type
when 0
parameter_name = $data_system.words.atk
parameter_value = actor.atk
stat = 'atk'
when 1
parameter_name = $data_system.words.pdef
parameter_value = actor.pdef
stat = 'pdef'
when 2
parameter_name = $data_system.words.mdef
parameter_value = actor.mdef
stat = 'mdef'
when 3
parameter_name = $data_system.words.str
parameter_value = actor.str
stat = 'str'
when 4
parameter_name = $data_system.words.dex
parameter_value = actor.dex
stat = 'dex'
when 5
parameter_name = $data_system.words.agi
parameter_value = actor.agi
stat = 'agi'
when 6
parameter_name = $data_system.words.int
parameter_value = actor.int
stat = 'int'
when 7
parameter_name = 'Evasion'
parameter_value = actor.eva
stat = 'eva'
end
if bar == true && stat != 'eva'
draw_LegACy_bar(actor, x + 16, y + 21, stat, width - 16, 5)
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + width, y, 36, 32, parameter_value.to_s, 2)
end
end
#==============================================================================
# ** Window_Selectable
#------------------------------------------------------------------------------
# This window class contains cursor movement and scroll functions.
#==============================================================================
class Window_Selectable < Window_Base
#--------------------------------------------------------------------------
# * Alias Initialization
#--------------------------------------------------------------------------
alias legacy_CMS_windowselectable_update update
#--------------------------------------------------------------------------
# * Set Help Window
# name_window : new name window
#--------------------------------------------------------------------------
def name_window=(name_window)
@name_window = name_window
# Update name text (update_help is defined by the subclasses)
if self.active and @help_window != nil
update_name
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
legacy_CMS_windowselectable_update
# Update name text (update_help is defined by the subclasses)
if self.active and @name_window != nil
update_name
end
end
end
#==============================================================================
# ** Window_NewCommand
#------------------------------------------------------------------------------
# This window deals with general command choices.
#==============================================================================
class Window_NewCommand < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# width : window width
# commands : command text string array
#--------------------------------------------------------------------------
def initialize(width, commands, icon)
# Compute window height from command quantity
super(0, 0, width, commands.size * 48 + 4

@item_max = commands.size
@commands = commands
@icon = icon
self.contents = Bitmap.new(width - 32, (@item_max * 4
+ 16)refresh
#self.index = -1
self.active = false
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
# color : text color
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
self.contents.font.bold = true
rect = Rect.new(4, 52 * index + 2, self.contents.width - 4, 52)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(@icon + index.to_s)
self.contents.blt(4, 52 * index + 4, bitmap, Rect.new(0, 0, 24, 24))
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max - 32
# Calculate cursor coordinates
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * 52 - self.oy - 4
# Update cursor rectangle
self.cursor_rect.set(x, y, cursor_width, 42)
end
#--------------------------------------------------------------------------
# * Disable Item
# index : item number
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
#--------------------------------------------------------------------------
# * Command Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(@commands[self.index] == nil ? "" : @commands[self.index])
end
end
#==============================================================================
# ** Window_NewMenuStatus
#------------------------------------------------------------------------------
# This window displays party member status on the menu screen.
#==============================================================================
class Window_NewMenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 192, 336)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
$game_party.actors.size < 4 ? i = 14 : i = 0
$game_party.actors.size == 1 ? i = 24 : i = i
self.contents = Bitmap.new(width - 32, (@item_max * 84) + i - 32)
for i in 0...@item_max
x = 4
y = (i * 77) - 12
actor = $game_party.actors
self.contents.font.size = 17
self.contents.font.bold = true
draw_LegACy_sprite(x + 16, y + 57, actor.character_name, actor.character_hue)
draw_actor_name(actor, x + 36, y + 4)
draw_actor_state(actor, x + 94, y + 4)
draw_actor_class(actor, x + 36, y + 24)
draw_actor_level(actor, x + 94, y + 24)
draw_LegACy_bar(actor, x - 3, y + 60, 'hp', 152)
draw_LegACy_bar(actor, x - 3, y + 75, 'sp', 152)
end
end
#--------------------------------------------------------------------------
# * Cursor Rectangle Update
#--------------------------------------------------------------------------
def update_cursor_rect
@index > 3 ? self.oy = (@index - 3) * 77 : self.oy = 0
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(-4, (@index * 77) - 2 - self.oy, self.width - 24, 77)
end
end
end
#==============================================================================
# ** Window_Stat
#------------------------------------------------------------------------------
# This window displays game stat on the menu screen.
#==============================================================================
class Window_Stat < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 256, 144)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.font.size = 18
self.contents.font.bold = true
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.draw_text(32, -4, 120, 32, "Play Time")
cx = contents.text_size($data_system.words.gold).width
self.contents.draw_text(32, 20, 120, 32, "Step Count")
self.contents.draw_text(32, 44, cx, 32, $data_system.words.gold, 2)
self.contents.draw_text(32, 68, 120, 32, "Location")
self.contents.font.color = normal_color
self.contents.draw_text(96, -4, 120, 32, text, 2)
self.contents.draw_text(96, 20, 120, 32, $game_party.steps.to_s, 2)
self.contents.draw_text(96, 44, 120, 32, $game_party.gold.to_s, 2)
self.contents.draw_text(24, 86, 192, 32, $game_map.name.to_s, 2)
for i in 0...4
rect = Rect.new(4, 24 * i, 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(LegACy::ICON_NAME[0] + i.to_s)
self.contents.blt(4, 24 * i, bitmap, Rect.new(0, 0, 24, 24))
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
#==============================================================================
# ** Window_Name
#------------------------------------------------------------------------------
# This window shows command, item, and skill names .
#==============================================================================
class Window_Name < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 112, 4

self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 1)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 18
self.contents.font.bold = true
self.contents.draw_text(0, -4, self.width - 32, 24, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#==============================================================================
# ** Window_NewHelp
#------------------------------------------------------------------------------
# This window shows skill and item explanations along with actor status.
#==============================================================================
class Window_NewHelp < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 384, 4

self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 0)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 16
self.contents.font.bold = true
self.contents.draw_text(0, -4, self.width - 32, 24, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#==============================================================================
# ** Window_NewItem
#------------------------------------------------------------------------------
# This window displays items in possession on the menu.
#==============================================================================
class Window_NewItem < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 384, 96)
@column_max = 12
@attribute = LegACy::ITEMS[0]
refresh
self.index = 0
self.active = false
end
#--------------------------------------------------------------------------
# * Get Item
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Updates Window With New Item Type
# attribute : new item type
#--------------------------------------------------------------------------
def update_item(attribute)
@attribute = attribute
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# Add item
for i in 1...$data_items.size
if $game_party.item_number(i) > 0 and
$data_items[i].element_set.include?(@attribute)
@data.push($data_items[i])
end
end
# Also add weapons and items if outside of battle
unless $game_temp.in_battle
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and
$data_weapons[i].element_set.include?(@attribute)
@data.push($data_weapons[i])
end
end
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and
$data_armors[i].guard_element_set.include?(@attribute)
@data.push($data_armors[i])
end
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id)
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
self.contents.font.size = 16
self.contents.font.bold = true
if item.is_a?(RPG::Item) and
$game_party.item_can_use?(item.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 12 * 28
y = index / 12 * 32
rect = Rect.new(x, y, self.width / @column_max - 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x, y + 12, 24, 20, number.to_s, 2)
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max
# Calculate cursor coordinates
x = @index % @column_max * 28
y = @index / @column_max * 32 - self.oy + 2
# Update cursor rectangle
self.cursor_rect.set(x + 1, y, cursor_width - 2, 2

end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
#--------------------------------------------------------------------------
# * Name Text Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(self.item == nil ? "" : self.item.name)
end
end
#==============================================================================
# ** Window_NewSkill
#------------------------------------------------------------------------------
# This window displays usable skills on the skill menu.
#==============================================================================
class Window_NewSkill < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 384, 96)
@actor = actor
@column_max = 12
refresh
self.index = 0
self.active = false
end
#--------------------------------------------------------------------------
# * Acquiring Skill
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Acquiring Actor
#--------------------------------------------------------------------------
def actor
return @actor
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...@actor.skills.size
skill = $data_skills[@actor.skills[i]]
if skill != nil
@data.push(skill)
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
skill = @data[index]
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
self.contents.font.size = 16
self.contents.font.bold = true
x = 4 + index % 12 * 28
y = index / 12 * 32
rect = Rect.new(x, y, self.width / @column_max - 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 4, y + 12, 24, 20, skill.sp_cost.to_s, 2)
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max
# Calculate cursor coordinates
x = @index % @column_max * 28
y = @index / @column_max * 32 - self.oy + 2
# Update cursor rectangle
self.cursor_rect.set(x + 1, y, cursor_width - 2, 2

end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end
#--------------------------------------------------------------------------
# * Name Text Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(self.skill == nil ? "" : self.skill.name)
end
end
#==============================================================================
# ** Window_EquipStat
#------------------------------------------------------------------------------
# This window displays actor parameter changes on the equipment screen.
#==============================================================================
class Window_EquipStat < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :changes
attr_accessor :mode
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 240, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
@changes = [0, 0, 0, 0, 0, 0, 0, 0]
@mode = 0
refresh
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = 16
self.contents.font.bold = true
for i in 0..7
draw_actor_parameter(@actor, 16, (i * 16) - 6, i, 96, LegACy::STAT_BAR[1])
end
# Draw new attack if it's changed
if @new_atk != nil
self.contents.font.color = system_color
self.contents.draw_text(152, -6, 32, 32, "��", 1)
if @changes[0] == 0
self.contents.font.color = normal_color
elsif @changes[0] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, -6, 32, 32, @new_atk.to_s, 2)
end
# Draw new physical def if it's changed
if @new_pdef != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 10, 32, 32, "��", 1)
if @changes[1] == 0
self.contents.font.color = normal_color
elsif @changes[1] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 10, 32, 32, @new_pdef.to_s, 2)
end
# Draw new magical def if it's changed
if @new_mdef != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 26, 32, 32, "��", 1)
if @changes[2] == 0
self.contents.font.color = normal_color
elsif @changes[2] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 26, 32, 32, @new_mdef.to_s, 2)
end
# Draw new str if it's changed
if @new_str != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 42, 32, 32, "��", 1)
if @changes[3] == 0
self.contents.font.color = normal_color
elsif @changes[3] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 42, 32, 32, @new_str.to_s, 2)
end
# Draw new dex if it's changed
if @new_dex != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 58, 32, 32, "��", 1)
if @changes[4] == 0
self.contents.font.color = normal_color
elsif @changes[4] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 58, 32, 32, @new_dex.to_s, 2)
end
# Draw new agi if it's changed
if @new_agi != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 74, 32, 32, "��", 1)
if @changes[5] == 0
self.contents.font.color = normal_color
elsif @changes[5] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 74, 32, 32, @new_agi.to_s, 2)
end
# Draw new int if it's changed
if @new_int != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 90, 32, 32, "��", 1)
if @changes[6] == 0
self.contents.font.color = normal_color
elsif @changes[6] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 90, 32, 32, @new_int.to_s, 2)
end
# Draw new evasion if it's changed
if @new_eva != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 106, 32, 32, "��", 1)
if @changes[7] == 0
self.contents.font.color = normal_color
elsif @changes[7] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, 106, 32, 32, @new_eva.to_s, 2)
end
end
#--------------------------------------------------------------------------
# * Set parameters after changing equipment
# new_atk : attack power after changing equipment
# new_pdef : physical defense after changing equipment
# new_mdef : magic defense after changing equipment
# new_str : strength after changing equipment
# new_dex : dexterity after changing equipment
# new_agi : agility after changing equipment
# new_int : inteligence after changing equipment
# new_eva : evasion after changing equipment
#--------------------------------------------------------------------------
def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex,
new_agi, new_int, new_eva)
flag = false
if new_atk != @new_atk || new_pdef != @new_pdef || new_str != @new_str ||
new_mdef != @new_mdef || new_dex != @new_dex || new_agi != @new_agi ||
new_eva != @new_eva
flag = true
end
@new_atk = new_atk
@new_pdef = new_pdef
@new_mdef = new_mdef
@new_str = new_str
@new_dex = new_dex
@new_agi = new_agi
@new_int = new_int
@new_eva = new_eva
if flag
refresh
end
end
end
#==============================================================================
# ** Window_Equipment
#------------------------------------------------------------------------------
# This window displays items the actor is currently equipped with on the
# equipment screen.
#==============================================================================
class Window_Equipment < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 240, 176)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
self.index = 0
self.active = false
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Item Acquisition
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = []
@data.push($data_weapons[@actor.weapon_id])
@data.push($data_armors[@actor.armor1_id])
@data.push($data_armors[@actor.armor2_id])
@data.push($data_armors[@actor.armor3_id])
@data.push($data_armors[@actor.armor4_id])
@item_max = @data.size
self.contents.font.color = system_color
self.contents.font.size = 19
self.contents.font.bold = true
self.contents.draw_text(0, 28 * 0, 76, 32, $data_system.words.weapon)
self.contents.draw_text(0, 28 * 1, 76, 32, $data_system.words.armor1)
self.contents.draw_text(0, 28 * 2, 76, 32, $data_system.words.armor2)
self.contents.draw_text(0, 28 * 3, 76, 32, $data_system.words.armor3)
self.contents.draw_text(0, 28 * 4, 76, 32, $data_system.words.armor4)
self.contents.font.size = 16
for i in 0..4
draw_item_name(@data[i], 76, 28 * i)
end
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Calculate cursor width
cursor_width = self.width / @column_max - 24
# Calculate cursor coordinates
x = @index % @column_max * (cursor_width + 24)
y = @index * 28
# Update cursor rectangle
self.cursor_rect.set(x - 4, y, cursor_width, 32)
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
#==============================================================================
# ** Window_EquipmentItem
#------------------------------------------------------------------------------
# This window displays choices when opting to change equipment on the
# equipment screen.
#==============================================================================
class Window_EquipmentItem < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
# equip_type : equip region (0-3)
#--------------------------------------------------------------------------
def initialize(actor, equip_type)
super(0, 0, 240, 96)
@actor = actor
@equip_type = equip_type
@column_max = 7
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Updates Window With New Equipment Type
# equip_type : new teyp of equipment
#--------------------------------------------------------------------------
def update_equipment(equip_type)
@equip_type = equip_type
refresh
end
#--------------------------------------------------------------------------
# * Item Acquisition
#--------------------------------------------------------------------------
def item
if self.index == 0
return @data[@item_max - 1]
else
return @data[self.index - 1]
end
end
#--------------------------------------------------------------------------
# * Get Row Count
#--------------------------------------------------------------------------
def row_max
# Compute rows from number of items and columns
return (@item_max + @column_max + 5) / @column_max
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# Add equippable weapons
if @equip_type == 0
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
# Add equippable armor
if @equip_type != 0
armor_set = $data_classes[@actor.class_id].armor_set
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and armor_set.include?(i)
if $data_armors[i].kind == @equip_type-1
@data.push($data_armors[i])
end
end
end
end
# Add blank page
@data.push(nil)
# Make a bitmap and draw all items
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
self.contents.draw_text(4, 0, 204, 32, 'Unequip', 1)
for i in 0...@item_max - 1
draw_item(i)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
x = 4 + (index ) % 7 * 30
y = 32 + ((index) / 7 * 32)
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
self.contents.font.size = 16
self.contents.font.bold = true
rect = Rect.new(x, y, self.width / @column_max - 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.draw_text(x, y + 12, 24, 20, number.to_s, 2)
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# If cursor is movable
if self.active and @item_max > 0 and @index >= 0
# If pressing down on the directional buttons
if Input.repeat?(Input:
OWN)# If column count is 1 and directional button was pressed down with no
# repeat, or if cursor position is more to the front than
# (item count - column count)
if (@column_max == 1 and Input.trigger?(Input:
OWN)) or@index < @item_max - @column_max
# Move cursor down
$game_system.se_play($data_system.cursor_se)
if @index == 0
@index = 1
else
@index = (@index + @column_max) % @item_max
end
end
end
# If the up directional button was pressed
if Input.repeat?(Input::UP)
# If column count is 1 and directional button was pressed up with no
# repeat, or if cursor position is more to the back than column count
if (@column_max == 1 and Input.trigger?(Input::UP)) or
@index >= @column_max or @index == 1
# Move cursor up
$game_system.se_play($data_system.cursor_se)
if @index == 1
@index = 0
else
@index = (@index - @column_max + @item_max) % @item_max
end
end
end
# If the right directional button was pressed
if Input.repeat?(Input::RIGHT)
# If column count is 2 or more, and cursor position is closer to front
# than (item count -1)
if @column_max >= 2 and @index < @item_max - 1
# Move cursor right
$game_system.se_play($data_system.cursor_se)
@index += 1
end
end
# If the left directional button was pressed
if Input.repeat?(Input::LEFT)
# If column count is 2 or more, and cursor position is more back than 0
if @column_max >= 2 and @index > 0
# Move cursor left
$game_system.se_play($data_system.cursor_se)
@index -= 1
end
end
end
# Update help text (update_help is defined by the subclasses)
if self.active and @help_window != nil
update_help
end
# Update cursor rectangle
update_cursor_rect
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = (@index + 6) / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max
# Calculate cursor coordinates
x = (@index + 6) % @column_max * 30
y = (@index + 6) / @column_max * 32 - self.oy + 2
if @index == 0
# Calculate cursor width
cursor_width = self.width - 30
# Calculate cursor coordinates
x = -1
y = -self.oy
end
# Update cursor rectangle
self.cursor_rect.set(x + 1, y, cursor_width - 2, 30)
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? 'Unequip the current equipment.' :
self.item.description)
end
#--------------------------------------------------------------------------
# * Name Text Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(self.item == nil ? "" : self.item.name)
self.item == nil ? @name_window.visible = false : @name_window.visible = true
end
end
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# This window displays full status specs on the status screen.
#==============================================================================
class Window_NewStatus < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 256, 480)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
self.active = false
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
# Draw basic stats
self.contents.clear
self.contents.font.size = 18
self.contents.font.bold = true
draw_actor_name(@actor, 12, 0)
draw_actor_graphic(@actor, 28, 104)
draw_LegACy_bar(@actor, 64, 64, 'hp', 144)
draw_LegACy_bar(@actor, 64, 84, 'sp', 144)
draw_LegACy_bar(@actor, 64, 104, 'exp', 144)
draw_actor_class(@actor, 28, 24)
draw_actor_level(@actor, 136, 24)
draw_actor_state(@actor, 112, 0)
# Draw actor's parameters
self.contents.font.size = 22
self.contents.font.color = system_color
self.contents.draw_text(0, 116, 128, 32, "Status")
self.contents.font.size = 16
for i in 0..7
draw_actor_parameter(@actor, 12, (i * 20) + 140, i, 168, LegACy::STAT_BAR[2])
end
# Draw equipments
self.contents.font.size = 22
self.contents.font.color = system_color
self.contents.draw_text(0, 304, 128, 32, "Equipment")
self.contents.font.size = 16
self.contents.draw_text(12, 328, 96, 32, "Weapon")
self.contents.draw_text(12, 352, 96, 32, "Shield")
self.contents.draw_text(12, 376, 96, 32, "Helmet")
self.contents.draw_text(12, 400, 96, 32, "Armor")
self.contents.draw_text(12, 424, 96, 32, "Accessory")
equip = $data_weapons[@actor.weapon_id]
if @actor.equippable?(equip)
draw_item_name($data_weapons[@actor.weapon_id], 96, 32

else
self.contents.font.color = knockout_color
self.contents.draw_text(96, 328, 192, 32, "Nothing equipped")
end
equip1 = $data_armors[@actor.armor1_id]
if @actor.equippable?(equip1)
draw_item_name($data_armors[@actor.armor1_id], 96, 352)
else
self.contents.font.color = crisis_color
self.contents.draw_text(96, 352, 192, 32, "Nothing equipped")
end
equip2 = $data_armors[@actor.armor2_id]
if @actor.equippable?(equip2)
draw_item_name($data_armors[@actor.armor2_id], 96, 376)
else
self.contents.font.color = crisis_color
self.contents.draw_text(96, 376, 192, 32, "Nothing equipped")
end
equip3 = $data_armors[@actor.armor3_id]
if @actor.equippable?(equip3)
draw_item_name($data_armors[@actor.armor3_id], 96, 400)
else
self.contents.font.color = crisis_color
self.contents.draw_text(96, 400, 192, 32, "Nothing equipped")
end
equip4 = $data_armors[@actor.armor4_id]
if @actor.equippable?(equip4)
draw_item_name($data_armors[@actor.armor4_id], 96, 424)
else
self.contents.font.color = crisis_color
self.contents.draw_text(96, 424, 192, 32, "Nothing equipped")
end
end
end
#==============================================================================
# ** Window_NewFile
#------------------------------------------------------------------------------
# This window displays save files on the save and load screens.
#==============================================================================
class Window_NewFile < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize()
super(256, 0, 384, 336)
self.contents = Bitmap.new(width - 32, 99 * 32)
index = $game_temp.last_file_index == nil ? 0 : $game_temp.last_file_index
self.index = index
self.active = false
@item_max = LegACy::SAVE_COUNT
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = 18
self.contents.font.bold = true
time_stamp = Time.at(0)
for i in 0...@item_max
filename = "Save#{i + 1}.rxdata"
# Draw file number
self.contents.font.color = system_color
self.contents.draw_text(-2, i * 32, 32, 32, (i + 1).to_s, 1)
if FileTest.exist?(filename)
# Load save file size
size = File.size(filename)
if size.between?(1000, 999999)
size /= 1000
size_str = "#{size} KB"
elsif size > 999999
size /= 1000000
size_str = "#{size} MB"
else
size_str = size.to_s
end
# Loads data
file = File.open(filename, "r")
# Draw time stamp
time_stamp = file.mtime
date = time_stamp.strftime("%m/%d/%Y")
time = time_stamp.strftime("%H:%M")
self.contents.font.color = normal_color
self.contents.draw_text(24, i * 32, 80, 32, date)
self.contents.draw_text(144, i * 32, 100, 32, time)
self.contents.draw_text(272, i * 32, 72, 32, size_str, 2)
end
end
end
end
#==============================================================================
# ** Window_FileStatus
#------------------------------------------------------------------------------
# This window shows the status of the currently selected save file
#==============================================================================
class Window_FileStatus < Window_Base
#--------------------------------------------------------------------------
# * initialize
#--------------------------------------------------------------------------
def initialize(save_window)
super(0, 0, 384, 144)
self.contents = Bitmap.new(width - 32, height - 32)
@save_window = save_window
@index = @save_window.index
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = 15
self.contents.font.bold = true
filename = "Save#{@index + 1}.rxdata"
return unless FileTest.exist?(filename)
file = File.open(filename, "r")
Marshal.load(file)
frame_count = Marshal.load(file)
for i in 0...6
Marshal.load(file)
end
party = Marshal.load(file)
Marshal.load(file)
map = Marshal.load(file)
for i in 0...party.actors.size
actor = party.actors[i]
x = i % 2 * 84 + 4
y = i / 2 * 56
draw_actor_name(actor, x + 22, y + 6)
draw_actor_level(actor, x + 22, y + 22)
draw_actor_graphic(actor, x + 6, y + 50)
end
total_sec = frame_count / Graphics.frame_rate
hour = total_sec / 60 / 60
min = total_sec / 60 % 60
sec = total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
map_name = load_data("Data/MapInfos.rxdata")[map.map_id].name
self.contents.font.color = system_color
self.contents.font.size = 18
self.contents.draw_text(168, 2, 96, 24, "Play Time")
self.contents.draw_text(168, 30, 96, 24, $data_system.words.gold)
self.contents.draw_text(168, 58, 96, 24, "Location")
self.contents.font.color = normal_color
self.contents.draw_text(276, 2, 76, 24, text, 2)
self.contents.draw_text(276, 30, 76, 24, party.gold.to_s, 2)
self.contents.draw_text(200, 82, 152, 24, map_name, 2)
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
def update
@tilemap.update if @tilemap != nil
if @index != @save_window.index
@index = @save_window.index
refresh
end
super
end
end
#==============================================================================
# ** Scene_Menu
#------------------------------------------------------------------------------
# This class performs menu screen processing.
#==============================================================================
class Scene_Menu
#--------------------------------------------------------------------------
# * Object Initialization
# menu_index : command cursor's initial position
#--------------------------------------------------------------------------
def initialize(menu_index = 0)
@menu_index = menu_index
@target = false
@exit = false
@actor = $game_party.actors[0]
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Make command window
s1 = $data_system.words.item
s2 = $data_system.words.skill
s3 = $data_system.words.equip
s4 = 'Status'
s5 = 'Save'
s6 = 'Exit'
t1 = 'Recovery'
t2 = 'Weapon'
t3 = 'Armor'
t4 = 'Accessory'
t5 = 'Quest'
t6 = 'Misc.'
u1 = 'To Title'
u2 = 'Quit'
@command_window = Window_NewCommand.new(64, [s1, s2, s3, s4, s5, s6], LegACy::ICON_NAME[1])
@command_window.x = 192
@command_window.y = -192
@command_window.active = true
@command_window.index = 0
# Make stat window
@stat_window = Window_Stat.new
# Make name window
@name_window = Window_Name.new
@name_window.x = 96
@name_window.y = 50
@name_window.opacity = 200
# Make help window
@help_window = Window_NewHelp.new
@help_window.x = -128
@command_window.name_window = @name_window
# If number of party members is 0
if $game_party.actors.size == 0
# Disable items, skills, equipment, and status
@command_window.disable_item(0)
@command_window.disable_item(1)
@command_window.disable_item(2)
@command_window.disable_item(3)
end
# If save is forbidden
if $game_system.save_disabled
# Disable save
@command_window.disable_item(4)
end
# Make status window
@status_window = Window_NewMenuStatus.new
@status_window.y = -192
# Make item catagory window
@catagory_window = Window_NewCommand.new(64, [t1, t2, t3, t4, t5, t6], LegACy::ICON_NAME[2])
@catagory_window.x = 192
@catagory_window.y = -192
@catagory_window.name_window = @name_window
# Make item window
@item_window = Window_NewItem.new
@item_window.x = -128
@item_window.y = 48
@item_window.help_window = @help_window
@item_window.name_window = @name_window
# Make skill window
@skill_window = Window_NewSkill.new(@actor)
@skill_window.x = -128
@skill_window.y = 48
@skill_window.help_window = @help_window
@skill_window.name_window = @name_window
# Make equipment windows
@equipitem_window = Window_EquipmentItem.new(@actor, 0)
@equipitem_window.x = 256
@equipitem_window.y = -96
@equipitem_window.help_window = @help_window
@equipitem_window.name_window = @name_window
@equip_window = Window_Equipment.new(@actor)
@equip_window.x = 16
@equip_window.y = -32
@equip_window.help_window = @help_window
@equipstat_window = Window_EquipStat.new(@actor)
@equipstat_window.x = 16
@equipstat_window.y = -16
# Make player status window
@playerstatus_window = Window_NewStatus.new(@actor)
@playerstatus_window.height = 144
# Make file window
@file_window = Window_NewFile.new
@file_window.x = -128
@file_window.y = -192
# Make file status window
@filestat_window = Window_FileStatus.new(@file_window)
@filestat_window.x = -128
# Make end window
@end_window = Window_Command.new(120, [u1, u2])
@end_window.x = 136
@end_window.active = false
# Make map image on background
@spriteset = Spriteset_Map.new
# Adjusting the z coordinates of the windows
@windows = [@command_window, @stat_window, @status_window,
@catagory_window, @name_window, @help_window, @item_window,
@skill_window, @equipstat_window, @equip_window, @equipitem_window,
@playerstatus_window, @file_window, @filestat_window, @end_window]
@windows.each {|i| i.z = LegACy::WIN_Z}
@stat_window.z = LegACy::WIN_Z + 5
@name_window.z = LegACy::WIN_Z + 10
@equipstat_window.z = LegACy::WIN_Z - 3
@equip_window.z = LegACy::WIN_Z - 5
@equipitem_window.z = LegACy::WIN_Z - 10
@file_window.z = LegACy::WIN_Z - 5
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of windows
@windows.each {|i| i.dispose}
@spriteset.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update windows
@windows.each {|i| i.update}
# Animate windows
animate
# Update actor scrolling system
update_scroll if @skill_window.active || @equip_window.active ||
@playerstatus_window.active
# Update menu system
menu_update
# Update name windows
update_name
end
#--------------------------------------------------------------------------
# * Animating windows
#--------------------------------------------------------------------------
def animate
# Animate initial windows if command window is active
if @command_window.active
@command_window.y += 28 if @command_window.y < 144
@status_window.y += 28 if @status_window.y < 144
@equipstat_window.y += 8 if @equipstat_window.y < 48
@equip_window.y += 8 if @equip_window.y < 32
# Animate initial windows upon exiting menu
elsif @exit == true
@command_window.y -= 28 if @command_window.y > -192
@status_window.y -= 28 if @status_window.y > -192
@equipstat_window.y -= 8 if @equipstat_window.y > -16
@equip_window.y -= 8 if @equip_window.y > -32
$scene = Scene_Map.new if @status_window.y == -192
end
# Animate item catagory windows if it's active
if @catagory_window.active
@command_window.y += 28 if @command_window.y < 480
@catagory_window.y += 28 if @catagory_window.y < 144
elsif @item_window.active == false && @target == false
@catagory_window.y -= 28 if @catagory_window.y > -192
@command_window.y -= 28 if @command_window.y > 144
end
# Animate item windows if it's active
if @item_window.active
@item_window.x += 48 if @item_window.x < 256
@help_window.x += 48 if @help_window.x < 256
elsif ! @command_window.active && @catagory_window.active == true &&
@command_window.index == 0
@item_window.x -= 48 if @item_window.x > -128
@help_window.x -= 48 if @help_window.x > -128
end
# Animate skill windows if it's active
if @skill_window.active
@skill_window.x += 48 if @skill_window.x < 256
@help_window.x += 48 if @help_window.x < 256
elsif ! @command_window.active &&! @target && @command_window.index == 1
@skill_window.x -= 48 if @skill_window.x > -128
@help_window.x -= 48 if @help_window.x > -128
end
# Animate equipment windows if they're active
if @equip_window.active
@equipstat_window.x += 30 if @equipstat_window.x < 256
@equip_window.x += 30 if @equip_window.x < 256
@help_window.x += 48 if @help_window.x < 256
if @equip_window.x == 256 && @equip_window.y < 208
@equip_window.y += 22
@equipitem_window.y += 48
end
elsif ! @equip_window.active && @equipitem_window.active == false && @command_window.index == 2
@equipitem_window.y -= 48 if @equipitem_window.y > -96
@equip_window.y -= 22 if @equip_window.y > 32
if @equip_window.x > 16 && @equip_window.y == 32
@equipstat_window.x -= 30 if @equipstat_window.x > 16
@equip_window.x -= 30 if @equip_window.x > 16
@help_window.x -= 48 if @help_window.x > -128
end
end
# Animate equipment item window if it's active
if @equipitem_window.active
@equipitem_window.y += 12 if @equipitem_window.y < 384
elsif @equip_window.active
@equipitem_window.y -= 12 if @equipitem_window.y > 288
end
# Animate status window if it's active
if @playerstatus_window.active
@playerstatus_window.x += 32 if @playerstatus_window.x < 256
if @playerstatus_window.x == 256
@playerstatus_window.height += 42 if @playerstatus_window.height < 480
end
else
@playerstatus_window.height -= 42 if @playerstatus_window.height > 144
if @playerstatus_window.height == 144
@playerstatus_window.x -= 32 if @playerstatus_window.x > 0
end
end
# Animate file windows if it's active
if @file_window.active
@filestat_window.x += 48 if @filestat_window.x < 256
@file_window.x += 48 if @file_window.x < 256
if @file_window.x == 256
@file_window.y += 42 if @file_window.y < 144
end
else
@file_window.y -= 42 if @file_window.y > -192
if @file_window.y == -192
@file_window.x -= 48 if @file_window.x > -128
@filestat_window.x -= 48 if @filestat_window.x > -128
end
end
# Animate end window if it's active
if @end_window.active
@end_window.x += 15 if @end_window.x < 256
else
@end_window.x -= 15 if @end_window.x > 136
end
end
#--------------------------------------------------------------------------
# * Checking Update Method Needed
#--------------------------------------------------------------------------
def menu_update
if @command_window.active && @command_window.y == 144 then update_command
elsif @item_window.x == -128 && @catagory_window.active && @catagory_window.y == 144 then update_catagory
elsif @item_window.active && @item_window.x == 256 then update_item
elsif @skill_window.active && @skill_window.x == 256 then update_skill
elsif @target then update_target
elsif @equip_window.active && @equip_window.y == 208 then update_equip
elsif @equipitem_window.active && @equipitem_window.y == 384 then update_equipment
elsif @playerstatus_window.height == 480 then update_playerstatus
elsif @status_window.active then update_status
elsif @file_window.y == 144 then update_save
elsif @end_window.x == 256 then update_end
end
end
#--------------------------------------------------------------------------
# * Name Update
#--------------------------------------------------------------------------
def update_name
# Update name window if command window is active
if @command_window.active && @command_window.y == 144
@name_window.x = @command_window.x + 36
@name_window.y = @command_window.y - 18 + (@command_window.index * 52)
@command_window.update_name
# Update name window if item catagory window is active
elsif @item_window.x == -128 && @catagory_window.active && @catagory_window.y == 144
@name_window.x = @catagory_window.x + 36
@name_window.y = @catagory_window.y - 18 + (@catagory_window.index * 52)
@catagory_window.update_name
# Update name window if item window is active
elsif @item_window.active && @item_window.x == 256
if @item_window.index % 12 < 6
@name_window.x = @item_window.x + 36 + (@item_window.index % 12 * 2

else
@name_window.x = @item_window.x - 88 + (@item_window.index % 12 * 2

end
@name_window.y = @item_window.y - 18 + (@item_window.index / 12 * 32)
@item_window.update_name
# Update name window if skill window is active
elsif @skill_window.active && @skill_window.x == 256
if @skill_window.index % 12 < 6
@name_window.x = @skill_window.x + 36 + (@skill_window.index % 12 * 2

else
@name_window.x = @skill_window.x - 88 + (@skill_window.index % 12 * 2

end
@name_window.y = @skill_window.y - 18 + (@skill_window.index / 12 * 32)
@skill_window.update_name
# Update name window if equipment window is active
elsif @equipitem_window.active && @equipitem_window.y == 384
@name_window.x = @equipitem_window.x + 36 + (@equipitem_window.index % 7 * 30)
@name_window.y = @equipitem_window.y - 18 + (@equipitem_window.index / 7 * 32)
@equipitem_window.update_name
# Hide name window if it's not needed
else
@name_window.visible = false
end
end
#--------------------------------------------------------------------------
# * Windows Actor Scrolling Update
#--------------------------------------------------------------------------
def update_scroll
if Input.trigger?(Input::R)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To next actor
if $game_party.actors.size - 1 == @status_window.index
@status_window.index = 0
else
@status_window.index += 1
end
actor = $game_party.actors[@status_window.index]
@skill_window.update_actor(actor) if @skill_window.active
@playerstatus_window.update_actor(actor) if @playerstatus_window.active
if @equip_window.active
@equip_window.update_actor(actor)
@equipitem_window.update_actor(actor)
@equipstat_window.update_actor(actor)
end
return
end
# If L button was pressed
if Input.trigger?(Input::L)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To previous actor
if @status_window.index == 0
@status_window.index = $game_party.actors.size - 1
else
@status_window.index -= 1
end
actor = $game_party.actors[@status_window.index]
@skill_window.update_actor(actor) if @skill_window.active
@playerstatus_window.update_actor(actor) if @playerstatus_window.active
if @equip_window.active
@equip_window.update_actor(actor)
@equipitem_window.update_actor(actor)
@equipstat_window.update_actor(actor)
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when command window is active)
#--------------------------------------------------------------------------
def update_command
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to map screen
@command_window.active = false
@exit = true
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# If command other than save or end game, and party members = 0
if $game_party.actors.size == 0 and @command_window.index < 4
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Branch by command window cursor position
case @command_window.index
when 0 # item
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Make item catagory window active
@command_window.active = false
@catagory_window.active = true
@catagory_window.index = 0
when 1 # skill
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Make status window active
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 2 # equipment
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Make status window active
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 3 # status
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Make status window active
@command_window.active = false
@status_window.active = true
@status_window.index = 0
when 4 # save
# If saving is forbidden
if $game_system.save_disabled
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to default save screen
if ! LegACy::CUSTOM_SAVE
$scene = Scene_Save.new
return
end
# Or switch to custom save menu
@command_window.active = false
@file_window.active = true
when 5 # end game
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to end game screen
@command_window.active = false
@end_window.active = true
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when status window is active)
#--------------------------------------------------------------------------
def update_status
@actor = $game_party.actors[@status_window.index]
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Make command window active
@command_window.active = true
@status_window.active = false
@status_window.index = -1
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Branch by command window cursor position
case @command_window.index
when 1 # skill
# If this actor's action limit is 2 or more
if $game_party.actors[@status_window.index].restriction >= 2
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to skill screen
@skill_window.active = true
@skill_window.index = 0
@skill_window.update_actor(@actor)
@help_window.active = true
@status_window.active = false
when 2 # equipment
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to equipment screen
@equip_window.active = true
@equip_window.index = 0
@equip_window.update_actor(@actor)
@help_window.active = true
@status_window.active = false
when 3 # status
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Switch to status screen
@playerstatus_window.active = true
@playerstatus_window.update_actor(@actor)
@status_window.active = false
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when catagory window is active)
#--------------------------------------------------------------------------
def update_catagory
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Make command window active
@command_window.active = true
@catagory_window.active = false
@catagory_window.index = -1
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Branch by command window cursor position
type = LegACy::ITEMS[@catagory_window.index]
@item_window.active = true
@item_window.update_item(type)
@catagory_window.active = false
@help_window.active = true
@item_window.index = 0
end
end
#--------------------------------------------------------------------------
# * Frame Update (when item window is active)
#--------------------------------------------------------------------------
def update_item
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to item command window
@item_window.active = false
@catagory_window.active = true
@help_window.active = false
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Get currently selected data on the item window
@item = @item_window.item
# If not a use item
unless @item.is_a?(RPG::Item)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# If it can't be used
unless $game_party.item_can_use?(@item.id)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# If effect scope is an ally
if @item.scope >= 3
# Activate target window
@item_window.active = false
@target = true
@status_window.active = true
# Set cursor position to effect scope (single / all)
if @item.scope == 4 || @item.scope == 6
@status_window.index = -1
else
@status_window.index = 0
end
# If effect scope is other than an ally
else
# If command event ID is valid
if @item.common_event_id > 0
# Command event call reservation
$game_temp.common_event_id = @item.common_event_id
# Play item use SE
$game_system.se_play(@item.menu_se)
# If consumable
if @item.consumable
# Decrease used items by 1
$game_party.lose_item(@item.id, 1)
# Draw item window item
@item_window.draw_item(@item_window.index)
end
# Switch to map screen
$scene = Scene_Map.new
return
end
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (if skill window is active)
#--------------------------------------------------------------------------
def update_skill
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to main command menu
@skill_window.active = false
@help_window.active = false
@status_window.active = true
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Get currently selected data on the skill window
@skill = @skill_window.skill
# If unable to use
if @skill == nil or not @actor.skill_can_use?(@skill.id)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# If effect scope is ally
if @skill.scope >= 3
# Activate target window
@skill_window.active = false
@target = true
@status_window.active = true
# Set cursor position to effect scope (single / all)
if @skill.scope == 4 || @skill.scope == 6
@status_window.index = -1
elsif @skill.scope == 7
@actor_index = @status_window.index
@status_window.index = @actor_index - 10
else
@status_window.index = 0
end
# If effect scope is other than ally
else
# If common event ID is valid
if @skill.common_event_id > 0
# Common event call reservation
$game_temp.common_event_id = @skill.common_event_id
# Play use skill SE
$game_system.se_play(@skill.menu_se)
# Use up SP
@actor.sp -= @skill.sp_cost
# Remake each window content
@status_window.refresh
@skill_window.refresh
# Switch to map screen
$scene = Scene_Map.new
return
end
end
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when target window is active)
#--------------------------------------------------------------------------
def update_target
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
if @command_window.index == 0
# Remake item window contents
@item_window.refresh
@item_window.active = true
@status_window.active = false
@status_window.index = -1
end
if @command_window.index == 1
# Remake skill window contents
@skill_window.refresh
@skill_window.active = true
@status_window.active = false
@status_window.index = @skill_window.actor.index
end
@target = false
return
end
# If C button was pressed
if Input.trigger?(Input::C)
if @command_window.index == 0
# If items are used up
if $game_party.item_number(@item.id) == 0
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# If target is all
if @status_window.index == -1
# Apply item effects to entire party
used = false
for i in $game_party.actors
used |= i.item_effect(@item)
end
end
# If single target
if @status_window.index >= 0
# Apply item use effects to target actor
target = $game_party.actors[@status_window.index]
used = target.item_effect(@item)
end
# If an item was used
if used
# Play item use SE
$game_system.se_play(@item.menu_se)
# If consumable
if @item.consumable
# Decrease used items by 1
$game_party.lose_item(@item.id, 1)
# Redraw item window item
@item_window.refresh
end
# Remake target window contents
@status_window.refresh
# If all party members are dead
if $game_party.all_dead?
@target = false
# Switch to game over screen
$scene = Scene_Gameover.new
return
end
# If common event ID is valid
if @item.common_event_id > 0
# Common event call reservation
$game_temp.common_event_id = @item.common_event_id
@target = false
# Switch to map screen
$scene = Scene_Map.new
return
end
end
# If item wasn't used
unless used
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
end
return
end
if @command_window.index == 1
# If unable to use because SP ran out
unless @actor.skill_can_use?(@skill.id)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# If target is all
if @status_window.index == -1
# Apply skill use effects to entire party
used = false
for i in $game_party.actors
used |= i.skill_effect(@actor, @skill)
end
end
# If target is user
if @status_window.index <= -2
# Apply skill use effects to target actor
target = $game_party.actors[@status_window.index + 10]
used = target.skill_effect(@actor, @skill)
end
# If single target
if @status_window.index >= 0
# Apply skill use effects to target actor
target = $game_party.actors[@status_window.index]
used = target.skill_effect(@actor, @skill)
end
# If skill was used
if used
# Play skill use SE
$game_system.se_play(@skill.menu_se)
# Use up SP
@actor.sp -= @skill.sp_cost
# Remake each window content
@status_window.refresh
@skill_window.refresh
# If entire party is dead
if $game_party.all_dead?
# Switch to game over screen
@target = false
$scene = Scene_Gameover.new
return
end
# If command event ID is valid
if @skill.common_event_id > 0
# Command event call reservation
$game_temp.common_event_id = @skill.common_event_id
@target = false
# Switch to map screen
$scene = Scene_Map.new
return
end
end
# If skill wasn't used
unless used
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
end
return
end
end
end
#--------------------------------------------------------------------------
# * Frame Update (when equip window is active)
#--------------------------------------------------------------------------
def update_equip
@equipitem_window.update_equipment(@equip_window.index)
@equipstat_window.mode = @equip_window.index
@equipstat_window.refresh
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
@status_window.refresh
# Switch to menu screen
@equip_window.active = false
@help_window.active = false
@status_window.active = true
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# If equipment is fixed
if @actor.equip_fix?(@equip_window.index)
# Play buzzer SE
$game_system.se_play($data_system.buzzer_se)
return
end
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Activate item window
@equip_window.active = false
@equipitem_window.active = true
@equipitem_window.index = 0
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when equipment item window is active)
#--------------------------------------------------------------------------
def update_equipment
# Get currently item
item1 = @equip_window.item
item2 = @equipitem_window.item
last_hp = @actor.hp
last_sp = @actor.sp
old_atk = @actor.atk
old_pdef = @actor.pdef
old_mdef = @actor.mdef
old_str = @actor.str
old_dex = @actor.dex
old_agi = @actor.agi
old_int = @actor.int
old_eva = @actor.eva
@actor.equip(@equip_window.index, item2 == nil ? 0 : item2.id)
# Get parameters for after equipment change
new_atk = @actor.atk
new_pdef = @actor.pdef
new_mdef = @actor.mdef
new_str = @actor.str
new_dex = @actor.dex
new_agi = @actor.agi
new_int = @actor.int
new_eva = @actor.eva
@equipstat_window.changes = [0, 0, 0, 0, 0, 0, 0, 0]
@equipstat_window.changes[0] = new_atk > old_atk ? 1 : @equipstat_window.changes[0]
@equipstat_window.changes[0] = new_atk < old_atk ? -1 : @equipstat_window.changes[0]
@equipstat_window.changes[1] = new_pdef > old_pdef ? 1 : @equipstat_window.changes[1]
@equipstat_window.changes[1] = new_pdef < old_pdef ? -1 : @equipstat_window.changes[1]
@equipstat_window.changes[2] = new_mdef > old_mdef ? 1 : @equipstat_window.changes[2]
@equipstat_window.changes[2] = new_mdef < old_mdef ? -1 : @equipstat_window.changes[2]
@equipstat_window.changes[3] = new_str > old_str ? 1 : @equipstat_window.changes[3]
@equipstat_window.changes[3] = new_str < old_str ? -1 : @equipstat_window.changes[3]
@equipstat_window.changes[4] = new_dex > old_dex ? 1 : @equipstat_window.changes[4]
@equipstat_window.changes[4] = new_dex < old_dex ? -1 : @equipstat_window.changes[4]
@equipstat_window.changes[5] = new_agi > old_agi ? 1 : @equipstat_window.changes[5]
@equipstat_window.changes[5] = new_agi < old_agi ? -1 : @equipstat_window.changes[5]
@equipstat_window.changes[6] = new_int > old_int ? 1 : @equipstat_window.changes[6]
@equipstat_window.changes[6] = new_int < old_int ? -1 : @equipstat_window.changes[6]
@equipstat_window.changes[7] = new_eva > old_eva ? 1 : @equipstat_window.changes[7]
@equipstat_window.changes[7] = new_eva < old_eva ? -1 : @equipstat_window.changes[7]
# Return equipment
@actor.equip(@equip_window.index, item1 == nil ? 0 : item1.id)
@actor.hp = last_hp
@actor.sp = last_sp
# Draw in left window
@equipstat_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str,
new_dex, new_agi, new_int, new_eva)
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Erase parameters for after equipment change
@equipstat_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil, nil)
# Activate right window
@equip_window.active = true
@equipitem_window.active = false
@equipitem_window.index = -1
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play equip SE
$game_system.se_play($data_system.equip_se)
# Get currently selected data on the item window
item = @equipitem_window.item
# Change equipment
@actor.equip(@equip_window.index, item == nil ? 0 : item.id)
# Erase parameters for after equipment change
@equipstat_window.set_new_parameters(nil, nil, nil, nil, nil, nil, nil, nil)
# Activate right window
@equip_window.active = true
@equipitem_window.active = false
@equipitem_window.index = -1
# Remake right window and item window contents
@equip_window.refresh
@equipitem_window.refresh
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when player status window is active)
#--------------------------------------------------------------------------
def update_playerstatus
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to menu screen
@playerstatus_window.active = false
@status_window.active = true
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when save window is active)
#--------------------------------------------------------------------------
def update_save
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to menu screen
@file_window.active = false
@command_window.active = true
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play save SE
$game_system.se_play($data_system.save_se)
file = File.open("Save#{@file_window.index + 1}.rxdata", "wb")
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
Marshal.dump(characters, file)
# Write frame count for measuring play time
Marshal.dump(Graphics.frame_count, file)
# Increase save count by 1
$game_system.save_count += 1
# Save magic number
# (A random value will be written each time saving with editor)
$game_system.magic_number = $data_system.magic_number
# Write each type of game object
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
file.close
@file_window.refresh
@filestat_window.refresh
return
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update_end
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# Switch to menu screen
@end_window.active = false
@command_window.active = true
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# Play decision SE
$game_system.se_play($data_system.decision_se)
# Fade out BGM, BGS, and ME
Audio.bgm_fade(800)
Audio.bgs_fade(800)
Audio.me_fade(800)
# Branch by command window cursor position
case @end_window.index
when 0 # to title
# Switch to title screen
$scene = Scene_Title.new
when 1 # shutdown
# Shutdown
$scene = nil
end
return
end
end
end
#----------------------------------------------------------------------------
# Begin Window Battle Status Edit
#----------------------------------------------------------------------------
if LegACy::BATTLE_BAR
#==============================================================================
# ** Window_BattleStatus
#------------------------------------------------------------------------------
# This window displays the status of all party members on the battle screen.
#==============================================================================
class Window_BattleStatus < Window_Base
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
actor_x = i * 160 + 4
draw_actor_name(actor, actor_x, 0)
draw_LegACy_bar(actor, actor_x - 4, 46, 'hp', 120)
draw_LegACy_bar(actor, actor_x - 4, 76, 'sp', 120)
if @level_up_flags[i]
self.contents.font.color = normal_color
self.contents.draw_text(actor_x, 96, 120, 32, "LEVEL UP!")
else
draw_actor_state(actor, actor_x, 96)
end
end
end
end
end
#----------------------------------------------------------------------------
# End Window Battle Status Edit
#----------------------------------------------------------------------------
if LegACy::CUSTOM_SAVE
#==============================================================================
# ** Window_File
#------------------------------------------------------------------------------
# This window shows a list of recorded save files.
#==============================================================================
class Window_File < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize()
super(0, 96, 320, 336)
self.contents = Bitmap.new(width - 32, LegACy::SAVE_COUNT * 32)
index = $game_temp.last_file_index == nil ? 0 : $game_temp.last_file_index
self.index = index
self.active = false
@item_max = LegACy::SAVE_COUNT
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = normal_color
time_stamp = Time.at(0)
for i in 0...LegACy::SAVE_COUNT
filename = "Save#{i + 1}.rxdata"
self.contents.draw_text(1, i * 32, 32, 32, (i + 1).to_s, 1)
if FileTest.exist?(filename)
size = File.size(filename)
if size.between?(1000, 999999)
size /= 1000
size_str = "#{size} KB"
elsif size > 999999
size /= 1000000
size_str = "#{size} MB"
else
size_str = size.to_s
end
time_stamp = File.open(filename, "r").mtime
date = time_stamp.strftime("%m/%d/%Y")
time = time_stamp.strftime("%H:%M")
self.contents.font.size = 20
self.contents.font.bold = true
self.contents.draw_text(38, i * 32, 120, 32, date)
self.contents.draw_text(160, i * 32, 100, 32, time)
self.contents.draw_text(0, i * 32, 284, 32, size_str, 2)
end
end
end
end
#==============================================================================
# ** Window_FileStat
#------------------------------------------------------------------------------
# This window shows the status of the currently selected save file
#==============================================================================
class Window_FileStat < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# save_window : current save file
#--------------------------------------------------------------------------
def initialize(save_window)
super(0, 96, 320, 336)
self.contents = Bitmap.new(width - 32, height - 32)
@save_window = save_window
@index = @save_window.index
refresh
end
#--------------------------------------------------------------------------
# # Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
filename = "Save#{@index + 1}.rxdata"
return unless FileTest.exist?(filename)
file = File.open(filename, "r")
Marshal.load(file)
frame_count = Marshal.load(file)
for i in 0...6
Marshal.load(file)
end
party = Marshal.load(file)
Marshal.load(file)
map = Marshal.load(file)
self.contents.font.size = 20
self.contents.font.bold = true
for i in 0...party.actors.size
actor = party.actors[i]
x = 4
y = i * 56
draw_LegACy_bar(actor, x + 112, y + 14, 'hp', 160)
draw_LegACy_bar(actor, x + 112, y + 36, 'sp', 160)
draw_actor_name(actor, x + 40, y - 2)
draw_actor_level(actor, x + 40, y + 22)
draw_actor_graphic(actor, x + 10, y + 4
end
total_sec = frame_count / Graphics.frame_rate
hour = total_sec / 60 / 60
min = total_sec / 60 % 60
sec = total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
map_name = load_data("Data/MapInfos.rxdata")[map.map_id].name
self.contents.font.color = system_color
self.contents.draw_text(4, 224, 96, 32, "Play Time ")
self.contents.draw_text(4, 252, 96, 32, $data_system.words.gold)
self.contents.draw_text(4, 280, 96, 32, "Location ")
self.contents.draw_text(104, 224, 16, 32, ":")
self.contents.draw_text(104, 252, 16, 32, ":")
self.contents.draw_text(104, 280, 16, 32, ":")
self.contents.font.color = normal_color
self.contents.draw_text(120, 224, 144, 32, text)
self.contents.draw_text(120, 252, 144, 32, party.gold.to_s)
self.contents.draw_text(120, 280, 144, 32, map_name)
end
#--------------------------------------------------------------------------
# * Update
#--------------------------------------------------------------------------
def update
if @index != @save_window.index
@index = @save_window.index
refresh
end
super
end
end
#----------------------------------------------------------------------------
# Begin Scene Load Edit
#----------------------------------------------------------------------------
#==============================================================================
# ** Scene_Load
#------------------------------------------------------------------------------
# This class performs load screen processing.
#==============================================================================
class Scene_Load
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
$game_temp = Game_Temp.new
$game_temp.last_file_index = 0
latest_time = Time.at(0)
for i in 0..LegACy::SAVE_COUNT
filename = "Save#{i + 1}.rxdata"
if FileTest.exist?(filename)
file = File.open(filename, "r")
if file.mtime > latest_time
latest_time = file.mtime
$game_temp.last_file_index = i
end
file.close
end
end
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
@help_window = Window_Help.new
@help_window.set_text('Select a file to load.')
@file_window = Window_File.new
@file_window.y = 64
@file_window.height = 416
@file_window.width = 320
@file_window.active = true
@status_window = Window_FileStat.new(@file_window)
@status_window.x = 320
@status_window.y = 64
@status_window.height = 416
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@help_window.dispose
@file_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
@help_window.update
@file_window.update
@status_window.update
# If C button was pressed
if Input.trigger?(Input::C)
unless FileTest.exist?(filename)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.load_se)
file = File.open(filename, "rb")
read_save_data(file)
file.close
$game_system.bgm_play($game_system.playing_bgm)
$game_system.bgs_play($game_system.playing_bgs)
$game_map.update
$scene = Scene_Map.new
$game_temp.last_file_index = @file_index
return
end
# If B button was pressed
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Title.new
return
end
end
#--------------------------------------------------------------------------
# * Read Save Data
# file : file object for reading (opened)
#--------------------------------------------------------------------------
def read_save_data(file)
# Read character data for drawing save file
characters = Marshal.load(file)
# Read frame count for measuring play time
Graphics.frame_count = Marshal.load(file)
# Read each type of game object
$game_system = Marshal.load(file)
$game_switches = Marshal.load(file)
$game_variables = Marshal.load(file)
$game_self_switches = Marshal.load(file)
$game_screen = Marshal.load(file)
$game_actors = Marshal.load(file)
$game_party = Marshal.load(file)
$game_troop = Marshal.load(file)
$game_map = Marshal.load(file)
$game_player = Marshal.load(file)
# If magic number is different from when saving
# (if editing was added with editor)
if $game_system.magic_number != $data_system.magic_number
# Load map
$game_map.setup($game_map.map_id)
$game_player.center($game_player.x, $game_player.y)
end
# Refresh party members
$game_party.refresh
end
#--------------------------------------------------------------------------
# * return the selected file's name
#--------------------------------------------------------------------------
def filename
return "Save#{@file_window.index + 1}.rxdata"
end
end
#----------------------------------------------------------------------------
# End Scene Load Edit
#----------------------------------------------------------------------------
#----------------------------------------------------------------------------
# Begin Scene Save Edit
#----------------------------------------------------------------------------
#==============================================================================
# ** Scene_Save
#------------------------------------------------------------------------------
# This class performs save screen processing.
#==============================================================================
class Scene_Save
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
$game_temp = Game_Temp.new
$game_temp.last_file_index = 0
latest_time = Time.at(0)
for i in 0..LegACy::SAVE_COUNT
filename = 'Save#{i + 1}.rxdata'
if FileTest.exist?(filename)
file = File.open(filename, "r")
if file.mtime > latest_time
latest_time = file.mtime
$game_temp.last_file_index = i
end
file.close
end
end
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
@help_window = Window_Help.new
@help_window.set_text('Which file would you like to save to?')
@file_window = Window_File.new
@file_window.y = 64
@file_window.height = 416
@file_window.width = 320
@file_window.active = true
@status_window = Window_FileStat.new(@file_window)
@status_window.x = 320
@status_window.y = 64
@status_window.height = 416
Graphics.transition
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
@help_window.dispose
@file_window.dispose
@status_window.dispose
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
@help_window.update
@file_window.update
@status_window.update
# If C button was pressed
if Input.trigger?(Input::C)
# Play save SE
$game_system.se_play($data_system.save_se)
# Write save data
file = File.open(filename, 'wb')
write_save_data(file)
file.close
# If called from event
if $game_temp.save_calling
# Clear save call flag
$game_temp.save_calling = false
# Switch to map screen
$scene = Scene_Map.new
return
end
# Switch to menu screen
$scene = Scene_Menu.new(4)
return
end
# If B button was pressed
if Input.trigger?(Input::B)
# Play cancel SE
$game_system.se_play($data_system.cancel_se)
# If called from event
if $game_temp.save_calling
# Clear save call flag
$game_temp.save_calling = false
# Switch to map screen
$scene = Scene_Map.new
return
end
# Switch to menu screen
$scene = Scene_Menu.new(4)
end
end
#--------------------------------------------------------------------------
# * Write Save Data
# file : write file object (opened)
#--------------------------------------------------------------------------
def write_save_data(file)
# Make character data for drawing save file
characters = []
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
characters.push([actor.character_name, actor.character_hue])
end
# Write character data for drawing save file
Marshal.dump(characters, file)
# Wrire frame count for measuring play time
Marshal.dump(Graphics.frame_count, file)
# Increase save count by 1
$game_system.save_count += 1
# Save magic number
# (A random value will be written each time saving with editor)
$game_system.magic_number = $data_system.magic_number
# Write each type of game object
Marshal.dump($game_system, file)
Marshal.dump($game_switches, file)
Marshal.dump($game_variables, file)
Marshal.dump($game_self_switches, file)
Marshal.dump($game_screen, file)
Marshal.dump($game_actors, file)
Marshal.dump($game_party, file)
Marshal.dump($game_troop, file)
Marshal.dump($game_map, file)
Marshal.dump($game_player, file)
end
#--------------------------------------------------------------------------
# * return the selected file's name
#--------------------------------------------------------------------------
def filename
return 'Save#{@file_window.index + 1}.rxdata'
end
end
#----------------------------------------------------------------------------
# End Scene Save Edit
#----------------------------------------------------------------------------
end
#==============================================================================
# ** 1-Scene CMS V1.0
# 1SceneCmsAlternate.rb von Multitoeat, LegACy (04.09.2009)
#------------------------------------------------------------------------------
# http://www.rpg-studio.de/scriptdb/node/322
# 1-Scene CMS V1.0
#==============================================================================
#==============================================================================
# ** 1-Scene CMS (Alternate Version)
#------------------------------------------------------------------------------
# LegACy
# Version 1.00
# 12.28.07
#==============================================================================
# To put items into different catagory, simply apply
# attributes to them, you can apply more than 1 attributes
# to each item. In default, the attributes are :
# :: 17 > Recovery items
# :: 18 > Weaponry
# :: 19 > Armor
# :: 20 > Accessories
# :: 21 > Key Items
# :: 22 > Miscellanous Items
#
# For customization, look in LegACy class, further explanation's
# located there.
#
# Special thanks to Sven Kistner for his MMD3 Winamp skin
# which gives me the inspiration to make this and Squall
# (is it Selwyn now?) for his ASM.
#=============================================================
#==============================================================================
# ** LegACy's Script Customization (CMS-Alternate)
#==============================================================================
class LegACy
#--------------------------------------------------------------------------
# * Features Customization Constants
#--------------------------------------------------------------------------
CUSTOM_SAVE = true # True if you're using the custom save menu that comes with the menu.
SAVE_COUNT = 99 # Number of saves slot available for custom save menu.
BATTLE_BAR = false # True if you want to have bar for battle system.
#--------------------------------------------------------------------------
# * Item Grouping Customization Constants
#--------------------------------------------------------------------------
ITEMS = [17, 18, 19, 20, 21, 22] # Attributes ID for Item Catagory in order.
#--------------------------------------------------------------------------
# * Display Customization Constants
#--------------------------------------------------------------------------
WIN_Z = 201 # Z value of CMS' windows.
ICON_NAME = ['stat', 'menu', 'item'] # Image name for icon,
STAT_BAR = [false, false, true] # Windows where the stat bar appears.
BAR_COLOR = [Color.new(255, 0, 0, 200), # Color for bars.
Color.new(255, 255, 0, 200),
Color.new(0, 255, 255, 200),
Color.new(200, 64, 64, 255),
Color.new(64, 128, 64, 255),
Color.new(160, 100, 160, 255),
Color.new(128, 128, 200, 255)]
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles the actor. It's used within the Game_Actors class
# ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Get Current Experience Points
#--------------------------------------------------------------------------
def now_exp
return @exp - @exp_list[@level]
end
#--------------------------------------------------------------------------
# * Get Needed Experience Points
#--------------------------------------------------------------------------
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
#==============================================================================
# ** Game_Map
#------------------------------------------------------------------------------
# This class handles the map. It includes scrolling and passable determining
# functions. Refer to "$game_map" for the instance of this class.
#==============================================================================
class Game_Map
#--------------------------------------------------------------------------
# * Get Map Name
#--------------------------------------------------------------------------
def name
load_data('Data/MapInfos.rxdata')[@map_id].name
end
end
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#-----------------------------------------------------------------------
# Draw Stat Bar
# actor : actor
# x : bar x-coordinate
# y : bar y-coordinate
# stat : stat to be displayed
#--------------------------------------------------------------------------
def draw_LegACy_bar(actor, x, y, stat, width = 156, height = 7)
bar_color = Color.new(0, 0, 0, 255)
end_color = Color.new(255, 255, 255, 255)
max = 999
case stat
when 'hp'
bar_color = Color.new(150, 0, 0, 255)
end_color = Color.new(255, 255, 60, 255)
min = actor.hp
max = actor.maxhp
when 'sp'
bar_color = Color.new(0, 0, 155, 255)
end_color = Color.new(255, 255, 255, 255)
min = actor.sp
max = actor.maxsp
when 'exp'
bar_color = Color.new(0, 155, 0, 255)
end_color = Color.new(255, 255, 255, 255)
unless actor.level == $data_actors[actor.id].final_level
min = actor.now_exp
max = actor.next_exp
else
min = 1
max = 1
end
when 'atk'
bar_color = LegACy::BAR_COLOR[0]
min = actor.atk
when 'pdef'
bar_color = LegACy::BAR_COLOR[1]
min = actor.pdef
when 'mdef'
bar_color = LegACy::BAR_COLOR[2]
min = actor.mdef
when 'str'
bar_color = LegACy::BAR_COLOR[3]
min = actor.str
when 'dex'
bar_color = LegACy::BAR_COLOR[4]
min = actor.dex
when 'agi'
bar_color = LegACy::BAR_COLOR[5]
min = actor.agi
when 'int'
bar_color = LegACy::BAR_COLOR[6]
min = actor.int
end
max = 1 if max == 0
# Draw Border
for i in 0..height
self.contents.fill_rect(x + i, y + height - i, width + 1, 1,
Color.new(50, 50, 50, 255))
end
# Draw Background
for i in 1..(height - 1)
r = 100 * (height - i) / height + 0 * i / height
g = 100 * (height - i) / height + 0 * i / height
b = 100 * (height - i) / height + 0 * i / height
a = 255 * (height - i) / height + 255 * i / height
self.contents.fill_rect(x + i, y + height - i, width, 1,
Color.new(r, b, g, a))
end
# Draws Bar
for i in 1..( (min.to_f / max.to_f) * width - 1)
for j in 1..(height - 1)
r = bar_color.red * (width - i) / width + end_color.red * i / width
g = bar_color.green * (width - i) / width + end_color.green * i / width
b = bar_color.blue * (width - i) / width + end_color.blue * i / width
a = bar_color.alpha * (width - i) / width + end_color.alpha * i / width
self.contents.fill_rect(x + i + j, y + height - j, 1, 1,
Color.new(r, g, b, a))
end
end
case stat
when 'hp'
draw_actor_hp(actor, x - 1, y - 1

when 'sp'
draw_actor_sp(actor, x - 1, y - 1

when 'exp'
draw_actor_exp(actor, x - 1, y - 1

end
end
#--------------------------------------------------------------------------
# * Draw Sprite
#--------------------------------------------------------------------------
def draw_LegACy_sprite(x, y, name, hue)
bitmap = RPG::Cache.character(name, hue)
cw = bitmap.width / 4
ch = bitmap.height / 4
# Bitmap Rectange
src_rect = Rect.new(0, 0, cw, ch)
# Draws Bitmap
self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
end
#--------------------------------------------------------------------------
# * Get Upgrade Text Color
#--------------------------------------------------------------------------
def up_color
return Color.new(74, 210, 74)
end
#--------------------------------------------------------------------------
# * Get Downgrade Text Color
#--------------------------------------------------------------------------
def down_color
return Color.new(170, 170, 170)
end
#--------------------------------------------------------------------------
# * Draw parameter
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type
#------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type, width = 120, bar = false)
case type
when 0
parameter_name = $data_system.words.atk
parameter_value = actor.atk
stat = 'atk'
when 1
parameter_name = $data_system.words.pdef
parameter_value = actor.pdef
stat = 'pdef'
when 2
parameter_name = $data_system.words.mdef
parameter_value = actor.mdef
stat = 'mdef'
when 3
parameter_name = $data_system.words.str
parameter_value = actor.str
stat = 'str'
when 4
parameter_name = $data_system.words.dex
parameter_value = actor.dex
stat = 'dex'
when 5
parameter_name = $data_system.words.agi
parameter_value = actor.agi
stat = 'agi'
when 6
parameter_name = $data_system.words.int
parameter_value = actor.int
stat = 'int'
when 7
parameter_name = 'Evasion'
parameter_value = actor.eva
stat = 'eva'
end
if bar == true && stat != 'eva'
draw_LegACy_bar(actor, x + 16, y + 21, stat, width - 16, 5)
end
self.contents.font.color = system_color
self.contents.draw_text(x, y, 120, 32, parameter_name)
self.contents.font.color = normal_color
self.contents.draw_text(x + width, y, 36, 32, parameter_value.to_s, 2)
end
end
#==============================================================================
# ** Window_Selectable
#------------------------------------------------------------------------------
# This window class contains cursor movement and scroll functions.
#==============================================================================
class Window_Selectable < Window_Base
#--------------------------------------------------------------------------
# * Alias Initialization
#--------------------------------------------------------------------------
alias legacy_CMS_windowselectable_update update
#--------------------------------------------------------------------------
# * Set Help Window
# name_window : new name window
#--------------------------------------------------------------------------
def name_window=(name_window)
@name_window = name_window
# Update name text (update_help is defined by the subclasses)
if self.active and @help_window != nil
update_name
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
legacy_CMS_windowselectable_update
# Update name text (update_help is defined by the subclasses)
if self.active and @name_window != nil
update_name
end
end
end
#==============================================================================
# ** Window_NewCommand
#------------------------------------------------------------------------------
# This window deals with general command choices.
#==============================================================================
class Window_NewCommand < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# width : window width
# commands : command text string array
#--------------------------------------------------------------------------
def initialize(width, commands, icon)
# Compute window height from command quantity
super(0, 0, width, commands.size * 48 + 4

@item_max = commands.size
@commands = commands
@icon = icon
self.contents = Bitmap.new(width - 32, (@item_max * 4
+ 16)refresh
#self.index = -1
self.active = false
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i, normal_color)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
# color : text color
#--------------------------------------------------------------------------
def draw_item(index, color)
self.contents.font.color = color
self.contents.font.bold = true
rect = Rect.new(4, 52 * index + 2, self.contents.width - 4, 52)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(@icon + index.to_s)
self.contents.blt(4, 52 * index + 4, bitmap, Rect.new(0, 0, 24, 24))
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max - 32
# Calculate cursor coordinates
x = @index % @column_max * (cursor_width + 32)
y = @index / @column_max * 52 - self.oy - 4
# Update cursor rectangle
self.cursor_rect.set(x, y, cursor_width, 42)
end
#--------------------------------------------------------------------------
# * Disable Item
# index : item number
#--------------------------------------------------------------------------
def disable_item(index)
draw_item(index, disabled_color)
end
#--------------------------------------------------------------------------
# * Command Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(@commands[self.index] == nil ? "" : @commands[self.index])
end
end
#==============================================================================
# ** Window_NewMenuStatus
#------------------------------------------------------------------------------
# This window displays party member status on the menu screen.
#==============================================================================
class Window_NewMenuStatus < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 192, 336)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
self.active = false
self.index = -1
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@item_max = $game_party.actors.size
$game_party.actors.size < 4 ? i = 14 : i = 0
$game_party.actors.size == 1 ? i = 24 : i = i
self.contents = Bitmap.new(width - 32, (@item_max * 84) + i - 32)
for i in 0...@item_max
x = 4
y = (i * 77) - 12
actor = $game_party.actors[i]
self.contents.font.size = 17
self.contents.font.bold = true
draw_LegACy_sprite(x + 16, y + 57, actor.character_name, actor.character_hue)
draw_actor_name(actor, x + 36, y + 4)
draw_actor_state(actor, x + 94, y + 4)
draw_actor_class(actor, x + 36, y + 24)
draw_actor_level(actor, x + 94, y + 24)
draw_LegACy_bar(actor, x - 3, y + 60, 'hp', 152)
draw_LegACy_bar(actor, x - 3, y + 75, 'sp', 152)
end
end
#--------------------------------------------------------------------------
# * Cursor Rectangle Update
#--------------------------------------------------------------------------
def update_cursor_rect
@index > 3 ? self.oy = (@index - 3) * 77 : self.oy = 0
if @index < 0
self.cursor_rect.empty
else
self.cursor_rect.set(-4, (@index * 77) - 2 - self.oy, self.width - 24, 77)
end
end
end
#==============================================================================
# ** Window_Stat
#------------------------------------------------------------------------------
# This window displays game stat on the menu screen.
#==============================================================================
class Window_Stat < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 256, 144)
self.contents = Bitmap.new(width - 32, height - 32)
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.font.size = 18
self.contents.font.bold = true
@total_sec = Graphics.frame_count / Graphics.frame_rate
hour = @total_sec / 60 / 60
min = @total_sec / 60 % 60
sec = @total_sec % 60
text = sprintf("%02d:%02d:%02d", hour, min, sec)
self.contents.draw_text(32, -4, 120, 32, "Play Time")
cx = contents.text_size($data_system.words.gold).width
self.contents.draw_text(32, 20, 120, 32, "Step Count")
self.contents.draw_text(32, 44, cx, 32, $data_system.words.gold, 2)
self.contents.draw_text(32, 68, 120, 32, "Location")
self.contents.font.color = normal_color
self.contents.draw_text(96, -4, 120, 32, text, 2)
self.contents.draw_text(96, 20, 120, 32, $game_party.steps.to_s, 2)
self.contents.draw_text(96, 44, 120, 32, $game_party.gold.to_s, 2)
self.contents.draw_text(24, 86, 192, 32, $game_map.name.to_s, 2)
for i in 0...4
rect = Rect.new(4, 24 * i, 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(LegACy::ICON_NAME[0] + i.to_s)
self.contents.blt(4, 24 * i, bitmap, Rect.new(0, 0, 24, 24))
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
super
if Graphics.frame_count / Graphics.frame_rate != @total_sec
refresh
end
end
end
#==============================================================================
# ** Window_Name
#------------------------------------------------------------------------------
# This window shows command, item, and skill names .
#==============================================================================
class Window_Name < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 112, 4

self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 1)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 18
self.contents.font.bold = true
self.contents.draw_text(0, -4, self.width - 32, 24, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#==============================================================================
# ** Window_NewHelp
#------------------------------------------------------------------------------
# This window shows skill and item explanations along with actor status.
#==============================================================================
class Window_NewHelp < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 384, 4

self.contents = Bitmap.new(width - 32, height - 32)
end
#--------------------------------------------------------------------------
# * Set Text
# text : text string displayed in window
# align : alignment (0..flush left, 1..center, 2..flush right)
#--------------------------------------------------------------------------
def set_text(text, align = 0)
# If at least one part of text and alignment differ from last time
if text != @text or align != @align
# Redraw text
self.contents.clear
self.contents.font.color = normal_color
self.contents.font.size = 16
self.contents.font.bold = true
self.contents.draw_text(0, -4, self.width - 32, 24, text, align)
@text = text
@align = align
@actor = nil
end
self.visible = true
end
end
#==============================================================================
# ** Window_NewItem
#------------------------------------------------------------------------------
# This window displays items in possession on the menu.
#==============================================================================
class Window_NewItem < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
#--------------------------------------------------------------------------
def initialize
super(0, 0, 384, 96)
@column_max = 12
@attribute = LegACy::ITEMS[0]
refresh
self.index = 0
self.active = false
end
#--------------------------------------------------------------------------
# * Get Item
#--------------------------------------------------------------------------
def item
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Updates Window With New Item Type
# attribute : new item type
#--------------------------------------------------------------------------
def update_item(attribute)
@attribute = attribute
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
# Add item
for i in 1...$data_items.size
if $game_party.item_number(i) > 0 and
$data_items[i].element_set.include?(@attribute)
@data.push($data_items[i])
end
end
# Also add weapons and items if outside of battle
unless $game_temp.in_battle
for i in 1...$data_weapons.size
if $game_party.weapon_number(i) > 0 and
$data_weapons[i].element_set.include?(@attribute)
@data.push($data_weapons[i])
end
end
for i in 1...$data_armors.size
if $game_party.armor_number(i) > 0 and
$data_armors[i].guard_element_set.include?(@attribute)
@data.push($data_armors[i])
end
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
case item
when RPG::Item
number = $game_party.item_number(item.id)
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
self.contents.font.size = 16
self.contents.font.bold = true
if item.is_a?(RPG::Item) and
$game_party.item_can_use?(item.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
x = 4 + index % 12 * 28
y = index / 12 * 32
rect = Rect.new(x, y, self.width / @column_max - 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(item.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x, y + 12, 24, 20, number.to_s, 2)
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max
# Calculate cursor coordinates
x = @index % @column_max * 28
y = @index / @column_max * 32 - self.oy + 2
# Update cursor rectangle
self.cursor_rect.set(x + 1, y, cursor_width - 2, 2

end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
#--------------------------------------------------------------------------
# * Name Text Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(self.item == nil ? "" : self.item.name)
end
end
#==============================================================================
# ** Window_NewSkill
#------------------------------------------------------------------------------
# This window displays usable skills on the skill menu.
#==============================================================================
class Window_NewSkill < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 384, 96)
@actor = actor
@column_max = 12
refresh
self.index = 0
self.active = false
end
#--------------------------------------------------------------------------
# * Acquiring Skill
#--------------------------------------------------------------------------
def skill
return @data[self.index]
end
#--------------------------------------------------------------------------
# * Acquiring Actor
#--------------------------------------------------------------------------
def actor
return @actor
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
for i in 0...@actor.skills.size
skill = $data_skills[@actor.skills[i]]
if skill != nil
@data.push(skill)
end
end
# If item count is not 0, make a bit map and draw all items
@item_max = @data.size
if @item_max > 0
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max
draw_item(i)
end
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
skill = @data[index]
if @actor.skill_can_use?(skill.id)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
self.contents.font.size = 16
self.contents.font.bold = true
x = 4 + index % 12 * 28
y = index / 12 * 32
rect = Rect.new(x, y, self.width / @column_max - 24, 24)
self.contents.fill_rect(rect, Color.new(0, 0, 0, 0))
bitmap = RPG::Cache.icon(skill.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 4, y + 12, 24, 20, skill.sp_cost.to_s, 2)
end
#--------------------------------------------------------------------------
# * Update Cursor Rectangle
#--------------------------------------------------------------------------
def update_cursor_rect
# If cursor position is less than 0
if @index < 0
self.cursor_rect.empty
return
end
# Get current row
row = @index / @column_max
# If current row is before top row
if row < self.top_row
# Scroll so that current row becomes top row
self.top_row = row
end
# If current row is more to back than back row
if row > self.top_row + (self.page_row_max - 1)
# Scroll so that current row becomes back row
self.top_row = row - (self.page_row_max - 1)
end
# Calculate cursor width
cursor_width = self.width / @column_max
# Calculate cursor coordinates
x = @index % @column_max * 28
y = @index / @column_max * 32 - self.oy + 2
# Update cursor rectangle
self.cursor_rect.set(x + 1, y, cursor_width - 2, 2

end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.skill == nil ? "" : self.skill.description)
end
#--------------------------------------------------------------------------
# * Name Text Update
#--------------------------------------------------------------------------
def update_name
@name_window.set_text(self.skill == nil ? "" : self.skill.name)
end
end
#==============================================================================
# ** Window_EquipStat
#------------------------------------------------------------------------------
# This window displays actor parameter changes on the equipment screen.
#==============================================================================
class Window_EquipStat < Window_Base
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :changes
attr_accessor :mode
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 0, 240, 160)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
@changes = [0, 0, 0, 0, 0, 0, 0, 0]
@mode = 0
refresh
end
#--------------------------------------------------------------------------
# * Updates Window With New Actor
# actor : new actor
#--------------------------------------------------------------------------
def update_actor(actor)
@actor = actor
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
self.contents.font.size = 16
self.contents.font.bold = true
for i in 0..7
draw_actor_parameter(@actor, 16, (i * 16) - 6, i, 96, LegACy::STAT_BAR[1])
end
# Draw new attack if it's changed
if @new_atk != nil
self.contents.font.color = system_color
self.contents.draw_text(152, -6, 32, 32, "��", 1)
if @changes[0] == 0
self.contents.font.color = normal_color
elsif @changes[0] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
self.contents.draw_text(176, -6, 32, 32, @new_atk.to_s, 2)
end
# Draw new physical def if it's changed
if @new_pdef != nil
self.contents.font.color = system_color
self.contents.draw_text(152, 10, 32, 32, "��", 1)
if @changes[1] == 0
self.contents.font.color = normal_color
elsif @changes[1] == -1
self.contents.font.color = down_color
else
self.contents.font.color = up_color
end
end
end
end
zum Lesen den Text mit der Maus markieren
Hoffe Ihr könnt mir helfen (Fehler-Zeile ist ja oben angegeben...)
danke
(aktiviert den dankomat, ich würde mich über ´ne antwort sehr freuen...)

-
Hallo
Tabs klicken unso, ne? -
Lyric
Meine schwarze Liste, beginnt mit einem Satz:
"Wer zuletzt lacht, lacht am besten!", und am Ende ist noch Platz.
Auf der Liste meiner Feinde, ist auch für euch noch Platz
Wer zuletzt lacht, lacht am besten!
Merkt euch diesen Satz!
Ode an die Feindschaft von Saltatio Mortis
-
Outtakes
-
Nummer 3
20.09.2012 - 19:46
"Yah, ich bin ihre Motivazin." "Motivazin - gibts das jetzt in der Apotheke rezeptflichtig?" -
Ich mag Kekse
-
Nummer 2
08.09.2012 - 01:29 Uhr
"Die Erlebnismacher zu Hannovre - Exlibre - ääääh... Excalibur"
*Lachflash* -
Nummer 1
07.09.2012 - 22:58 Uhr
*Bööarps* - Die Erlebnismacher zu Hannovre - Excalibur... "Mahlzeit... also... doch nicht Mahlzeit... war nur die Website"
"Ich hab gerülpst -.-" "Du hast was?" *LACHFLASH*
"Nicht dein Ernst, oder?" "DOCH!" *LACHFLASH second tour*
-
-
Profile

-
Ich
Dass bin ich:
Maker: RPG-XP, RPG-VX
Story:
Für andere mehr als für mich: 60%
Grafik:
Ich werde besser: 35%
Pixeln:
Ich stehe an den Anfängen: 7%
Mapping:
Es fehlen nur noch (alle) Feinheiten: 67%
Scripting:
Informatiker, mittlerweile auch andere Sachen am skripten: 93% -
Neues aus der SB
Neues aus der SB:
(03:41:36) Kagurame: n8 du
(03:41:37) Irrlicht: Nacht Mozilla
(03:41:47) MozillaBabybird: Kagu: der witz war flach
(03:42:01) Kagurame: welcher witz?
(03:42:14) Heatra: geh nicht benji
(03:42:21) Heatra: spiel lieber ats2
(03:42:25) MozillaBabybird: nacht leute ^^ ijemand sollte diesen verlauf im studio bash posten, damit die mal wissen wer die echten camper hier sind
(03:42:35) Kagurame: ich bin scripten
(03:42:3
MozillaBabybird: Heat: tut mir sorry xD
(03:42:40) Kagurame: ich mach das...^^
(03:42:4
MozillaBabybird: bis .... mittag ?
(03:42:49) Heatra: ^^
(03:42:55) MozillaBabybird: ja mittag dürfte passen
(03:42:56) MozillaBabybird:
(03:42:57) Kagurame: ^^
(03:43:02) Heatra: ich steh morgen eh erst um 5 uhr mittags auf
(03:43:07) Kagurame: bis heute
(03:43:11) Steve: MozillaBabybird verlässt den Chat.
(03:43:15) Kagurame: ich so um 3zum Lesen den Text mit der Maus markieren
(03:05:32) Ankou: bist du dir SICHER, dass es die Performance an der Stelle kritisch ist und c.a. 30% sind KEIN großer Unterschied?
(03:05:41) Ankou: oh
(03:05:45) Ankou: okay
(03:06:21) Asandril: Oh Ha was habt Ihr gerade für ein Thema?
(03:06:41) Ankou: das ist in der Tat eine performancekritische angelegenheit, aber ich denke dennoch nicht, dass das die Dinge sind auf die du dein Hauptaugenmerk richten solltest.
(03:07:01) Heatra: maschine
(03:07:01) Ankou: derartige Mikrooptimierungen werden Performanceprobleme sogut wie niemals beseitigen können
(03:07:01) Irrlicht: anhand der Tatsache dass es 20 000 000 Durchläufe waren nicht wirklich :-/
(03:07:0
Ankou: änder was konzeptionelles oder lass es bleiben.
(03:07:31) Ankou: evtl. kannst du mehr der Interpretation nach vorne verlagern
(03:08:06) Ankou: aber solche Dinge zu versuchen wie die case Abfragen durch send zu ersetzen in der Hoffnung ein paar Prozent einzusparen bringens dir nicht
(03:08:26) Asandril: Bin ich gerade hier in einem Kurs gelandet ..
(03:08:36) Irrlicht: hatte mal in Erwägung gezogen die Befehle evtl. schonmal etwas "vorzuinterpretieren", aber das dürfte dann mehr Speicher verbrauchen als es Geschwindigkeit bringt...
(03:09:11) Ankou: Asandril: ja, erstaunlich, angetrunken an Silvester über so etwas zu reden
(03:09:2
Heatra: -> lampenfieber
(03:09:40) Asandril: Kann ich nur beipflichten.
(03:09:46) Irrlicht: atm bin ich mir nicht sicher was genau den doch vergleichsweise erheblichen Lag von Parallel-Process-Events verursacht (oder ob es einfach an der gesammten Masse liegt) wenn ich bei 2 000 000 solcher Durchläufe unter einer Sek. bleibe...
(03:09:57) Ankou: Irrlicht: das ist durchaus üblich. Speicher gegen Geschwindigkeit einzustauschen ist sehr populär und bringt oft viel
(03:11:23) Irrlicht: mal schaun
zum Lesen den Text mit der Maus markieren
(03:32:35) (Kagurame_AnkündigungImForumMach): es da ne methode wie beim xp?
(03:32:4
Irrlicht: Cache.system("Iconset")
bekommst das Iconset
(03:32:50) (Kagurame_AnkündigungImForumMach): brauche es dringend, aber nix gefunden bisher
(03:33:01) (Kagurame_AnkündigungImForumMach): und dann per id?
(03:33:06) (Kagurame_AnkündigungImForumMach): drauf zugreifen?
(03:33:07) Irrlicht: Index berechnet sich einfach aus
x = index % 16
y = index / 16
(03:33:17) Irrlicht: afaik warens 16 nebeneinander^^
(03:33:2
(Kagurame_AnkündigungImForumMach): ok, danke.
(03:33:51) (Kagurame_AnkündigungImForumMach): ich glaub ich scripte dann noch ein bissl
(03:34:01) Steve: (Kagurame_AnkündigungImForumMach) heißt jetzt Kagurame.
(03:34:04) Irrlicht: im XP hast die einzelnen Icons anhand des Namens aus dem Icon-Ordner aufgerufen
(03:34:09) Steve: Kagurame ist nun Scripten!
(03:34:17) Irrlicht: (geht natürlich im VX auch, aber wozu gibts das Iconset)
(03:34:23) Kagurame: ja ich weis, daher war ich heut mittag verwirrtzum Lesen den Text mit der Maus markieren
Bitte Code einrücken und in einen Ruby-Tag schreiben. Sonst ist das einfach unlesbar.
Der Fehler tritt auf, weil du das Script zwei Mal im Scripteditor stehen hast (dadurch tritt bei einem Aufruf einer geliasten Methode eine Endlosrekursion auf). Lösch die erste Variante des Scripts, dann sollte es wieder gehen.
Der Fehler tritt auf, weil du das Script zwei Mal im Scripteditor stehen hast (dadurch tritt bei einem Aufruf einer geliasten Methode eine Endlosrekursion auf). Lösch die erste Variante des Scripts, dann sollte es wieder gehen.
Danke, aber dass wirft zwei neue Fragen auf:
wie schreibe ich es so wie gefordert?
und zweitens:
Ich habe das Script nur einmal eingefügt, und weis jetzt nicht recht, was ich löschen soll...
Danke
wie schreibe ich es so wie gefordert?
und zweitens:
Ich habe das Script nur einmal eingefügt, und weis jetzt nicht recht, was ich löschen soll...
Danke

-
Hallo
Tabs klicken unso, ne? -
Lyric
Meine schwarze Liste, beginnt mit einem Satz:
"Wer zuletzt lacht, lacht am besten!", und am Ende ist noch Platz.
Auf der Liste meiner Feinde, ist auch für euch noch Platz
Wer zuletzt lacht, lacht am besten!
Merkt euch diesen Satz!
Ode an die Feindschaft von Saltatio Mortis
-
Outtakes
-
Nummer 3
20.09.2012 - 19:46
"Yah, ich bin ihre Motivazin." "Motivazin - gibts das jetzt in der Apotheke rezeptflichtig?" -
Ich mag Kekse
-
Nummer 2
08.09.2012 - 01:29 Uhr
"Die Erlebnismacher zu Hannovre - Exlibre - ääääh... Excalibur"
*Lachflash* -
Nummer 1
07.09.2012 - 22:58 Uhr
*Bööarps* - Die Erlebnismacher zu Hannovre - Excalibur... "Mahlzeit... also... doch nicht Mahlzeit... war nur die Website"
"Ich hab gerülpst -.-" "Du hast was?" *LACHFLASH*
"Nicht dein Ernst, oder?" "DOCH!" *LACHFLASH second tour*
-
-
Profile

-
Ich
Dass bin ich:
Maker: RPG-XP, RPG-VX
Story:
Für andere mehr als für mich: 60%
Grafik:
Ich werde besser: 35%
Pixeln:
Ich stehe an den Anfängen: 7%
Mapping:
Es fehlen nur noch (alle) Feinheiten: 67%
Scripting:
Informatiker, mittlerweile auch andere Sachen am skripten: 93% -
Neues aus der SB
Neues aus der SB:
(03:41:36) Kagurame: n8 du
(03:41:37) Irrlicht: Nacht Mozilla
(03:41:47) MozillaBabybird: Kagu: der witz war flach
(03:42:01) Kagurame: welcher witz?
(03:42:14) Heatra: geh nicht benji
(03:42:21) Heatra: spiel lieber ats2
(03:42:25) MozillaBabybird: nacht leute ^^ ijemand sollte diesen verlauf im studio bash posten, damit die mal wissen wer die echten camper hier sind
(03:42:35) Kagurame: ich bin scripten
(03:42:3
MozillaBabybird: Heat: tut mir sorry xD
(03:42:40) Kagurame: ich mach das...^^
(03:42:4
MozillaBabybird: bis .... mittag ?
(03:42:49) Heatra: ^^
(03:42:55) MozillaBabybird: ja mittag dürfte passen
(03:42:56) MozillaBabybird:
(03:42:57) Kagurame: ^^
(03:43:02) Heatra: ich steh morgen eh erst um 5 uhr mittags auf
(03:43:07) Kagurame: bis heute
(03:43:11) Steve: MozillaBabybird verlässt den Chat.
(03:43:15) Kagurame: ich so um 3zum Lesen den Text mit der Maus markieren
(03:05:32) Ankou: bist du dir SICHER, dass es die Performance an der Stelle kritisch ist und c.a. 30% sind KEIN großer Unterschied?
(03:05:41) Ankou: oh
(03:05:45) Ankou: okay
(03:06:21) Asandril: Oh Ha was habt Ihr gerade für ein Thema?
(03:06:41) Ankou: das ist in der Tat eine performancekritische angelegenheit, aber ich denke dennoch nicht, dass das die Dinge sind auf die du dein Hauptaugenmerk richten solltest.
(03:07:01) Heatra: maschine
(03:07:01) Ankou: derartige Mikrooptimierungen werden Performanceprobleme sogut wie niemals beseitigen können
(03:07:01) Irrlicht: anhand der Tatsache dass es 20 000 000 Durchläufe waren nicht wirklich :-/
(03:07:0
Ankou: änder was konzeptionelles oder lass es bleiben.
(03:07:31) Ankou: evtl. kannst du mehr der Interpretation nach vorne verlagern
(03:08:06) Ankou: aber solche Dinge zu versuchen wie die case Abfragen durch send zu ersetzen in der Hoffnung ein paar Prozent einzusparen bringens dir nicht
(03:08:26) Asandril: Bin ich gerade hier in einem Kurs gelandet ..
(03:08:36) Irrlicht: hatte mal in Erwägung gezogen die Befehle evtl. schonmal etwas "vorzuinterpretieren", aber das dürfte dann mehr Speicher verbrauchen als es Geschwindigkeit bringt...
(03:09:11) Ankou: Asandril: ja, erstaunlich, angetrunken an Silvester über so etwas zu reden
(03:09:2
Heatra: -> lampenfieber
(03:09:40) Asandril: Kann ich nur beipflichten.
(03:09:46) Irrlicht: atm bin ich mir nicht sicher was genau den doch vergleichsweise erheblichen Lag von Parallel-Process-Events verursacht (oder ob es einfach an der gesammten Masse liegt) wenn ich bei 2 000 000 solcher Durchläufe unter einer Sek. bleibe...
(03:09:57) Ankou: Irrlicht: das ist durchaus üblich. Speicher gegen Geschwindigkeit einzustauschen ist sehr populär und bringt oft viel
(03:11:23) Irrlicht: mal schaun
zum Lesen den Text mit der Maus markieren
(03:32:35) (Kagurame_AnkündigungImForumMach): es da ne methode wie beim xp?
(03:32:4
Irrlicht: Cache.system("Iconset")
bekommst das Iconset
(03:32:50) (Kagurame_AnkündigungImForumMach): brauche es dringend, aber nix gefunden bisher
(03:33:01) (Kagurame_AnkündigungImForumMach): und dann per id?
(03:33:06) (Kagurame_AnkündigungImForumMach): drauf zugreifen?
(03:33:07) Irrlicht: Index berechnet sich einfach aus
x = index % 16
y = index / 16
(03:33:17) Irrlicht: afaik warens 16 nebeneinander^^
(03:33:2
(Kagurame_AnkündigungImForumMach): ok, danke.
(03:33:51) (Kagurame_AnkündigungImForumMach): ich glaub ich scripte dann noch ein bissl
(03:34:01) Steve: (Kagurame_AnkündigungImForumMach) heißt jetzt Kagurame.
(03:34:04) Irrlicht: im XP hast die einzelnen Icons anhand des Namens aus dem Icon-Ordner aufgerufen
(03:34:09) Steve: Kagurame ist nun Scripten!
(03:34:17) Irrlicht: (geht natürlich im VX auch, aber wozu gibts das Iconset)
(03:34:23) Kagurame: ja ich weis, daher war ich heut mittag verwirrtzum Lesen den Text mit der Maus markieren
Ab Zeile 3040 (letztes Drittel )geht es nochmal von vorn los. Einfach alles danach löschen, wie Kai schon sagte^^
Ich würde ja das richtige Script posten, aber es ist zu lang für meinen Beitrag oder so....
Ich würde ja das richtige Script posten, aber es ist zu lang für meinen Beitrag oder so....
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Яογal Sίη°« (25. November 2009, 16:43)
Ähnliche Themen
-
Sonstige »-
Optionen V0.2
(13. Februar 2009, 14:53)
-
RGSS 1 Probleme & Talk »-
Methodenaufruf eines Moduls – NoMethodError
(23. März 2009, 18:46)
-
Sonstige »-
Erweiteres draw_text V0.9
(13. März 2006, 20:20)

