08-08-2015, 05:24 PM
Thank you very very much that far. I've a last request if you accept it.
In addition to the MOG Item Menu, I'm also using the MOG Menu Status script and the equip script which I both added below.
There is a addon script called "Equipment Multi Slots" which basically allows one to shape the equipment customized. For example it is possible to customize the equipment, so that one only can wear a Weapon, A armor and two accessories But the problem is, the "Equipment Multi Slots" by ATOA, which is basically a addon by the author of the script, that the equipment multi slots is not compatible with the MOG Status and Equip script I posted. When I arrange the Equipment other then the original (which is the goal of the script) I get a error on line 284 whenever I try to change my acessory in the equp menu. Is there any chance to make the both scripts compatible with the both MOG Scripts I posted?
In addition to the MOG Item Menu, I'm also using the MOG Menu Status script and the equip script which I both added below.
There is a addon script called "Equipment Multi Slots" which basically allows one to shape the equipment customized. For example it is possible to customize the equipment, so that one only can wear a Weapon, A armor and two accessories But the problem is, the "Equipment Multi Slots" by ATOA, which is basically a addon by the author of the script, that the equipment multi slots is not compatible with the MOG Status and Equip script I posted. When I arrange the Equipment other then the original (which is the goal of the script) I get a error on line 284 whenever I try to change my acessory in the equp menu. Is there any chance to make the both scripts compatible with the both MOG Scripts I posted?
Code:
#==============================================================================
# Equipment Multi Slots
# By Atoa
#==============================================================================
# This scripts add an multi equipment slot system, wich allows you to add
# an new variety of equipment.
#
# Add this script above all actor related scripts.
#
# IMPORTANT:
# - If you using the multi slot equip system, the event command for changing
# equips will be screwed.
# So if you need to force any equip change with events, make an Script Call
# and add this command:
# $game_actors[Actor ID].equip(Slot Index, Equip ID)
# Slot Index = remember that indexes starts from 0, so the 1st slot will
# be index 0, the 2nd will be index 1...
# - This script change a lot of funcitons and may cause incompatiblities
# with other systems, if that happens you will have to choose wich system use.
#==============================================================================
module Atoa
# Do not remove or change these lines
Equip_Lock = {}
Armor_Lock = {}
# Do not remove or change these lines
# Equipment Kinds
# The order of the values here define the order that the equipment will be
# shown in the menu
# If you repeat an value, means that the actor can equip more than one
# equip of that type,
Equip_Kinds = [0,1,2,3,5,4,4]
# 0 = Weapons (if you add more than one value equal zero, all these equips
# will be considered 'right hand', so they won't remove the shield)
# 1 = Shields (any equip set as 'Shield' will be exchanged by an weapon if
# the actor have the dual wielding)
# 2 = Helmets
# 3 = Armors
# 4 = Accessories
# Values above 5 are the extra slots, use to creat equipments like Boots, Capes...
# You must set the IDs of the extra slots equips in 'Extra_Equips_ID'
#
# It's recomended that you leave only one 'Weapon' and one 'Shield', once
# it interfere in the Dual Wielding and 2 Haded Weapons
# You can change this value individually for each actor making an script call
# and adding this command:
# $game_actors[actor_id].equip_kind = [x,y,z]
# actor_id = actor ID
# [x,y,z] = new equip kind configuration
# IDs of the equipments
# Extra_Equips_ID = {kind => [equips_ids]}
# kind = equipment type, set on Equip_Kinds
# equips_ids = id of the armors of this equip type
Extra_Equips_ID = {5 => [38,39]}
# Name of the equips shown in the equip and status window
Equip_Names = ['Right Hand', 'Left Hand', 'Helmet', 'Armor', 'Boots',
'Accessory', 'Accessory']
# The order here is the order that the names are shown in the menu, set
# them according to the values set in 'Equip_Kinds'.
# if you change the value of the kinds with script calls, remember to change
# the names.
# You can change this value individually for each actor making an script call
# and adding this command:
# $game_actors[actor_id].equip_names = [x,y,z]
# actor_id = actor ID
# [x,y,z] = new equip names configuration
# Equipment Lock, these lines allows you to 'lock' an determined type of
# equipment, don't allow the actor to stay without equipment of this type
# You can change equips freely, but can't remove.
# E.g.: You have an Bow user character, and don't want him to stay without bows.
# Equip_Lock[equip_kind] = {actor_id =>[equip_type_id]}
# equip_kind = kind of the equipment
# 'Weapon' for weapons, 'Armor' for armors
# actor_id = actor id
# equip_type_id = id of the equipment
# 0 = right hand weapon
# 1 = left hand weapon or shield
# 2,3,4... = armors
Equip_Lock['Weapon']= {1 => [0], 2 => [0], 3 => [0], 4 => [0],
5 => [0], 6 => [0], 7 => [0], 8 => [0]}
Equip_Lock['Armor']= {1 => [1], 2 => [1]}
#=============================================================================
end
#==============================================================================
# ** Atoa Module
#==============================================================================
$atoa_script = {} if $atoa_script.nil?
$atoa_script['Atoa Multi Slot'] = true
#==============================================================================
# ** RPG::Armor
#------------------------------------------------------------------------------
# Class that manage armors
#==============================================================================
class RPG::Armor
#--------------------------------------------------------------------------
# * Type ID setting
#--------------------------------------------------------------------------
def type_id
if Extra_Equips_ID != nil
for kind in Extra_Equips_ID.dup
return kind[0] if kind[1].include?(@id)
end
end
return @kind + 1
end
end
#==============================================================================
# ** Game_Actor
#------------------------------------------------------------------------------
# This class handles the actor. It's used within the Game_Actors class
# ($game_actors) and refers to the Game_Party class ($game_party).
#==============================================================================
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :weapon_fix
attr_accessor :armor_fix
attr_accessor :equip_kind
attr_accessor :equip_names
attr_accessor :equip_id
#--------------------------------------------------------------------------
# * Setup
# actor_id : actor ID
#--------------------------------------------------------------------------
alias setup_multislot setup
def setup(actor_id)
setup_multislot(actor_id)
@equip_id = []
@equip_kind = equip_kind
@equip_names = equip_names
for i in 0...@equip_kind.size
id = @equip_kind[i]
if id == 0 and i == 0
@equip_id[i] = @weapon_id
elsif id != 0 and (1..4).include?(id)
@equip_id[i] = eval("@armor#{id}_id")
else
@equip_id[i] = 0
end
end
@weapon_fix = [@weapon_fix]
@weapon_fix[1] = @armor1_fix if $atoa_script['Atoa Two Hands'] and two_swords_style
@armor_fix = [false]
for i in 0...@equip_kind.size
id = @equip_kind[i]
if (1..4).include?(id) and not ($atoa_script['Atoa Two Hands'] and id == 1 and
two_swords_style)
@armor_fix[i] = eval("@armor#{id}_fix")
elsif id > 0 and not ($atoa_script['Atoa Two Hands'] and id == 1 and two_swords_style)
@armor_fix[i] = false
end
end
@armor_fix[1] = @armor1_fix unless $atoa_script['Atoa Two Hands'] and two_swords_style
@equip_id[1] = 0 if $atoa_script['Atoa Two Hands'] and
(Two_Hands_Weapons.include?(@weapon_id) or two_swords_style)
for equip in armors do update_auto_state(nil, equip) end
end
#--------------------------------------------------------------------------
# * Get equip slots name
#--------------------------------------------------------------------------
def equip_names
return @equip_names.nil? ? Equip_Names : @equip_names
end
#--------------------------------------------------------------------------
# * Set new slot names
# n : new names
#--------------------------------------------------------------------------
def equip_names=(n)
@equip_names = n
end
#--------------------------------------------------------------------------
# * Get equips kind
#--------------------------------------------------------------------------
def equip_kind
return @equip_kind.nil? ? Equip_Kinds : @equip_kind
end
#--------------------------------------------------------------------------
# * Set new equips kind
# n : new kinds
#--------------------------------------------------------------------------
def equip_kind=(n)
for i in 0...@equip_kind.size
equip(i, 0) if @equip_kind[i] != n[i]
end
@equip_kind = n
set_equip_id
end
#--------------------------------------------------------------------------
# * Set equips ID
#--------------------------------------------------------------------------
def set_equip_id
for i in 0...@equip_kind.size
@equip_id[i] = 0 if @equip_id[i] == nil
end
end
#--------------------------------------------------------------------------
# * Get weapons
#--------------------------------------------------------------------------
def weapons
result = []
for i in 0...@equip_kind.size
id = @equip_kind[i]
if id == 0 or ($atoa_script['Atoa Two Hands'] and id == 1 and two_swords_style)
@weapon_id = @equip_id[i].nil? ? 0 : @equip_id[i] if id == 0
result << $data_weapons[@equip_id[i]]
end
end
result.delete_if {|x| x == nil }
return result
end
#--------------------------------------------------------------------------
# * Get armors
#--------------------------------------------------------------------------
def armors
result = []
for i in 0...@equip_kind.size
id = @equip_kind[i]
if id > 0 and not ($atoa_script['Atoa Two Hands'] and id == 1 and two_swords_style)
eval("@armor#{id}_id = @equip_id[i].nil? ? 0 : @equip_id[i]") if id < 5
result << $data_armors[@equip_id[i]]
end
end
result.delete_if {|x| x == nil }
return result
end
#--------------------------------------------------------------------------
# * Equipment lock
# type : equip type
#--------------------------------------------------------------------------
def lock_equip(type)
equip = (type == 0 or ($atoa_script['Atoa Two Hands'] and type == 1 and
two_swords_style)) ? 'Weapon' : 'Armor'
id = @equip_kind[type]
if Equip_Lock[equip] != nil
eqp = Equip_Lock[equip].dup
else
return false
end
return (eqp.include?(@actor_id) and eqp[@actor_id].include?(id))
end
#--------------------------------------------------------------------------
# * Change Equipment
# equip_type : type of equipment
# id : weapon or armor ID (If 0, remove equipment)
#--------------------------------------------------------------------------
def equip(equip_type, id)
type = @equip_kind[equip_type]
if type == 0
if id == 0 or $game_party.weapon_number(id) > 0
$game_party.gain_weapon(@equip_id[equip_type], 1)
@equip_id[equip_type] = id
$game_party.lose_weapon(id, 1)
end
elsif type == 1
if $atoa_script['Atoa Two Hands'] and two_swords_style
if id == 0 or $game_party.weapon_number(id) > 0
$game_party.gain_weapon(@equip_id[equip_type], 1)
@equip_id[equip_type] = id
$game_party.lose_weapon(id, 1)
end
else
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@equip_id[equip_type]], $data_armors[id])
$game_party.gain_armor(@equip_id[equip_type], 1)
@equip_id[equip_type] = id
$game_party.lose_armor(id, 1)
end
end
elsif type > 1
if id == 0 or $game_party.armor_number(id) > 0
update_auto_state($data_armors[@equip_id[equip_type]], $data_armors[id])
$game_party.gain_armor(@equip_id[equip_type], 1)
@equip_id[equip_type] = id
$game_party.lose_armor(id, 1)
end
end
end
#--------------------------------------------------------------------------
# * Remove secondary equip
#--------------------------------------------------------------------------
def remove_left_equip_actor
for i in 0...@equip_kind.size
equip(i, 0) if @equip_kind[i] == 1
end
end
#--------------------------------------------------------------------------
# * Remove secondary equip by class
# class_id : class ID
#--------------------------------------------------------------------------
def remove_left_equip_class(class_id)
if class_id == @class_id
for i in 0...@equip_kind.size
equip(i, 0) if @equip_kind[i] == 1
end
end
end
#--------------------------------------------------------------------------
# * Change Class ID
# class_id : new class ID
#--------------------------------------------------------------------------
def class_id=(class_id)
remove_equip_class_change(class_id, @class_id)
if $data_classes[class_id] != nil
@class_id = class_id
for i in 0...@equip_kind.size
if @equip_kind[i] == 0 or ($atoa_script['Atoa Two Hands'] and
@equip_kind[i] == 1 and two_swords_style)
equip(i, 0) unless equippable?($data_weapons[@equip_id[i]])
else
equip(i, 0) unless equippable?($data_armors[@equip_id[i]])
end
end
end
end
end
#==============================================================================
# ** Window_Selectable
#------------------------------------------------------------------------------
# This window class contains cursor movement and scroll functions.
#==============================================================================
class Window_Selectable < Window_Base
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
alias update_windowselectable_multislot update
def update
if self.is_a?(Window_EquipRight)
super
if self.active and @item_max > 0 and @index >= 0
if Input.repeat?(Input::DOWN)
if (@column_max == 1 and Input.trigger?(Input::DOWN)) or
@index < @item_max - @column_max
$game_system.se_play($data_system.cursor_se)
@index = (@index + @column_max) % @item_max
end
end
if Input.repeat?(Input::UP)
if (@column_max == 1 and Input.trigger?(Input::UP)) or
@index >= @column_max
$game_system.se_play($data_system.cursor_se)
@index = (@index - @column_max + @item_max) % @item_max
end
end
if Input.repeat?(Input::RIGHT)
if @column_max >= 2 and @index < @item_max - 1
$game_system.se_play($data_system.cursor_se)
@index += 1
end
end
if Input.repeat?(Input::LEFT)
if @column_max >= 2 and @index > 0
$game_system.se_play($data_system.cursor_se)
@index -= 1
end
end
if Input.repeat?(Input::R)
@index == @item_max if @index < @item_max
end
if Input.repeat?(Input::L)
@index == @item_max if @index < @item_max
end
end
if self.active and @help_window != nil
update_help
end
update_cursor_rect
else
update_windowselectable_multislot
end
end
end
#==============================================================================
# ** Window_Status
#------------------------------------------------------------------------------
# This window displays full status specs on the status screen.
#==============================================================================
class Window_Status < Window_Base
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_actor_graphic(@actor, 40, 112)
draw_actor_name(@actor, 4, 0)
draw_actor_class(@actor, 4 + 144, 0)
draw_actor_level(@actor, 96, 32)
draw_actor_state(@actor, 96, 64)
draw_actor_hp(@actor, 96, 112, 172)
draw_actor_sp(@actor, 96, 144, 172)
status_size = Object.const_defined?(:Extra_Status) ? Extra_Status.size : 0
for i in 0..2
draw_actor_parameter(@actor, 96, 164 + [(236/(status_size + 6)), 20].max * i, i)
end
for i in 3..6
draw_actor_parameter(@actor, 96, 168 + [(236/(status_size + 6)), 20].max * i, i)
end
for i in 7..(status_size + 6)
draw_actor_parameter(@actor, 96, 172 + [(236/(status_size + 6)), 20].max * i,
Extra_Status[i - 7]) if Extra_Status[i - 7] != nil
end
self.contents.font.color = system_color
self.contents.draw_text(320, 48, 80, 32, 'EXP')
self.contents.draw_text(320, 80, 80, 32, 'Próximo')
self.contents.draw_text(400, 128, 128, 32, 'Equipamentos')
self.contents.font.color = normal_color
self.contents.draw_text(400, 48, 84, 32, @actor.exp_s, 2)
self.contents.draw_text(400, 80, 84, 32, @actor.next_rest_exp_s, 2)
self.contents.font.color = system_color
data = []
for i in 0...@actor.equip_kind.size
id = @actor.equip_kind[i]
if id == 0
data.push($data_weapons[@actor.equip_id[i]])
elsif id == 1 and ($atoa_script['Atoa Two Hands'] and @actor.two_swords_style)
data.push($data_weapons[@actor.equip_id[i]])
elsif id != 0 or ($atoa_script['Atoa Two Hands'] and id == 1 and not @actor.two_swords_style)
data.push($data_armors[@actor.equip_id[i]])
end
end
self.contents.font.color = system_color
return if data.size == 0
for i in 0...@actor.equip_names.size
name = @actor.equip_names[i]
self.contents.draw_text(320, 160 + [(280/data.size), 24].max * i, 92, 32, name)
end
for i in 0...data.size
draw_item_name(data[i], 412, 160 + [(280/data.size), 24].max * i)
end
end
end
#==============================================================================
# ** Window_EquipRight
#------------------------------------------------------------------------------
# This window displays items the actor is currently equipped with on the
# equipment screen.
#==============================================================================
class Window_EquipRight < Window_Selectable
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :data
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(272, 64, 368, 192)
self.contents = Bitmap.new(width - 32, actor.equip_kind.size * 32)
@actor = actor
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
@data = []
for i in 0...@actor.equip_kind.size
id = @actor.equip_kind[i]
if id == 0
@data.push($data_weapons[@actor.equip_id[i]])
elsif id == 1 and ($atoa_script['Atoa Two Hands'] and @actor.two_swords_style)
@data.push($data_weapons[@actor.equip_id[i]])
elsif id != 0 or ($atoa_script['Atoa Two Hands'] and id == 1 and not @actor.two_swords_style)
@data.push($data_armors[@actor.equip_id[i]])
end
end
@item_max = @data.size
self.contents.font.color = system_color
for i in 0...@actor.equip_names.size
name = @actor.equip_names[i]
self.contents.draw_text(4, 32 * i, 92, 32, name)
end
for i in 0...@data.size
draw_item_name(@data[i], 92, 32 * i)
end
end
#--------------------------------------------------------------------------
# * Help Text Update
#--------------------------------------------------------------------------
def update_help
@help_window.set_text(self.item == nil ? '' : self.item.description)
end
end
#==============================================================================
# ** Window_EquipItem
#------------------------------------------------------------------------------
# This window displays choices when opting to change equipment on the
# equipment screen.
#==============================================================================
class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# * Public Instance Variables
#--------------------------------------------------------------------------
attr_accessor :data
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
if @equip_type == 0 or ($atoa_script['Atoa Two Hands'] and
@equip_type == 1 and @actor.two_swords_style)
weapon_set = $data_classes[@actor.class_id].weapon_set
for i in 1...$data_weapons.size
next if $atoa_script['Atoa Two Hands'] and Two_Hands_Weapons.include?(i) and @equip_type == 1
next if $atoa_script['Atoa Two Hands'] and Right_Hand_Weapons.include?(i) and @equip_type == 1
next if $atoa_script['Atoa Two Hands'] and Left_Hand_Weapons.include?(i) and @equip_type == 0
if $game_party.weapon_number(i) > 0 and weapon_set.include?(i)
@data.push($data_weapons[i])
end
end
end
if @equip_type > 0 and not ($atoa_script['Atoa Two Hands'] and @equip_type == 1 and @actor.two_swords_style)
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].type_id == @equip_type
@data.push($data_armors[i])
end
end
end
end
@data.push(nil) unless @actor.lock_equip(@equip_type)
@item_max = @data.size
self.contents = Bitmap.new(width - 32, [row_max, 1].max * 32)
self.opacity = Equip_Window_Opacity if $atoa_script['Atoa New Status']
for i in 0...(@actor.lock_equip(@equip_type) ? @item_max : @item_max - 1)
draw_item(i)
end
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
item = @data[index]
if $atoa_script['Atoa New Status']
case Equip_Menu_Syle
when 0,1,2
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
when 3,4
x = 4
y = index * 32
end
else
x = 4 + index % 2 * (288 + 32)
y = index / 2 * 32
end
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.font.color = normal_color
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ':', 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
end
end
#==============================================================================
# ** Window_ShopStatus
#------------------------------------------------------------------------------
# This window displays number of items in possession and the actor's equipment
# on the shop screen.
#==============================================================================
class Window_ShopStatus < Window_Base
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
return if @item.nil?
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.color = system_color
self.contents.draw_text(4, 0, 200, 32, 'Você tem')
self.contents.font.color = normal_color
self.contents.draw_text(204, 0, 32, 32, number.to_s, 2)
return if @item.is_a?(RPG::Item)
for i in 0...$game_party.actors.size
actor = $game_party.actors[i]
if actor.equippable?(@item)
self.contents.font.color = normal_color
else
self.contents.font.color = disabled_color
end
self.contents.draw_text(4, 64 + 64 * i, 120, 32, actor.name)
for n in 0...actor.equip_kind.size
id = actor.equip_kind[n]
if @item.is_a?(RPG::Weapon)
item1 = $data_weapons[actor.equip_id[n]] if id == 0
else
if $data_armors[actor.equip_id[n]].type == @item.type_id and not
(@item.type_id == 1 and actor.two_swords_style)
item1 = $data_armors[actor.equip_id[n]]
end
end
end
if actor.equippable?(@item)
change = 0
if @item.is_a?(RPG::Weapon)
atk1 = item1 != nil ? item1.atk : 0
atk2 = @item != nil ? @item.atk : 0
change = atk2 - atk1
elsif @item.is_a?(RPG::Armor) and @item.kind <= 2
pdef1 = item1 != nil ? item1.pdef : 0
mdef1 = item1 != nil ? item1.mdef : 0
pdef2 = @item != nil ? @item.pdef : 0
mdef2 = @item != nil ? @item.mdef : 0
change = pdef2 - pdef1 + mdef2 - mdef1
elsif @item.is_a?(RPG::Armor) and @item.kind > 2
change = 0
item1 = nil
end
if change > 0 and actor.equippable?(@item)
self.contents.font.color = text_color(3)
elsif change < 0 and actor.equippable?(@item)
self.contents.font.color = text_color(2)
end
self.contents.draw_text(64, 64 + 64 * i, 128, 32,sprintf('%+d', change), 2)
self.contents.font.color = normal_color
end
if item1 != nil
x = 4
y = 64 + 64 * i + 32
bitmap = RPG::Cache.icon(item1.icon_name)
opacity = self.contents.font.color == normal_color ? 255 : 128
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24), opacity)
self.contents.draw_text(x + 28, y, 212, 32, item1.name)
end
end
end
end
#==============================================================================
# ** Scene_Equip
#------------------------------------------------------------------------------
# This class performs equipment screen processing.
#==============================================================================
class Scene_Equip
#--------------------------------------------------------------------------
# * Include Settings Module
#--------------------------------------------------------------------------
include Atoa
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
@actor = $game_party.actors[@actor_index]
@help_window = Window_Help.new
@left_window = Window_EquipLeft.new(@actor)
@right_window = Window_EquipRight.new(@actor)
@right_window.index = @equip_index
item_window_update
@right_window.help_window = @help_window
for i in 0...@actor.equip_kind.size
eval("@item_window#{i + 1}.help_window = @help_window")
end
refresh
Graphics.transition
loop do
Graphics.update
Input.update
update
break if $scene != self
end
Graphics.freeze
@help_window.dispose
@left_window.dispose
@right_window.dispose
item_window_dispose
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
@help_window.opacity = Equip_Window_Opacity if $atoa_script['Atoa New Status']
if @right_window.index > @right_window.data.size - 1
@right_window.index = @right_window.data.size - 1
end
for i in 0...@actor.equip_kind.size
eval("@item_window#{i + 1}.visible = (@right_window.index == #{i})")
end
item1 = @right_window.item
eval("@item_window = @item_window#{@right_window.index + 1}")
@left_window.set_new_parameters(nil, nil, nil) if @right_window.active
if @item_window.active
@item2 = @item_window.item
last_hp = @actor.hp
last_sp = @actor.sp
@actor.equip(@right_window.index, @item2 == nil ? 0 : @item2.id)
re_equip = []
if $atoa_script['Atoa Two Hands'] and @item2 != nil and @item2.type_id == 0 and Two_Hands_Weapons.include?(@item2.id)
for i in 0...@actor.equip_kind.size
id = @actor.equip_kind[i]
if id == 1
re_equip << [i, @actor.equip_id[i]]
@actor.equip(i, 0)
end
end
elsif @item2 != nil and (@item2.type_id == 1 or ($atoa_script['Atoa Two Hands'] and
@item2.type_id == 0 and @actor.two_swords_style))
for i in 0...@actor.equip_kind.size
id = @actor.equip_kind[i]
if $atoa_script['Atoa Two Hands'] and @right_window.index != i and id == 0 and
Two_Hands_Weapons.include?(@actor.equip_id[id])
re_equip << [i, @actor.equip_id[i]]
@actor.equip(i, 0)
end
end
end
new_atk = @actor.atk
new_pdef = @actor.pdef
new_mdef = @actor.mdef
if $atoa_script['Atoa New Status']
new_str = @actor.str
new_dex = @actor.dex
new_agi = @actor.agi
new_int = @actor.int
new_eva = @actor.eva
new_hit = @actor.hit
new_crt = @actor.crt
new_dmg = @actor.dmg
new_rcrt = @actor.rcrt
new_rdmg = @actor.rdmg
end
@actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
for equip in re_equip
@actor.equip(equip[0], equip[1])
end
@actor.hp = last_hp
@actor.sp = last_sp
if $atoa_script['Atoa New Status']
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex,
new_agi, new_int, new_eva, new_hit, new_crt, new_dmg, new_rcrt, new_rdmg)
else
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
end
end
end
#--------------------------------------------------------------------------
# * Update item window
#--------------------------------------------------------------------------
def item_window_update
for i in 0...@actor.equip_kind.size
type = @actor.equip_kind[i]
eval("@item_window#{i+1} = Window_EquipItem.new(@actor, type)")
end
for i in 0...@actor.equip_kind.size
eval("@item_window#{i + 1}.help_window = @help_window")
end
refresh
end
#--------------------------------------------------------------------------
# * Dispose item window
#--------------------------------------------------------------------------
def item_window_dispose
for i in 0...@actor.equip_kind.size
eval("@item_window#{i+1}.dispose if @item_window#{i+1} != nil")
end
end
#--------------------------------------------------------------------------
# * Frame Update (when item window is active)
#--------------------------------------------------------------------------
alias update_item_multislot update_item
def update_item
if Input.trigger?(Input::C)
item = @item_window.item
@actor.equip(@right_window.index, item == nil ? 0 : item.id)
update_hands(item) if $atoa_script['Atoa Two Hands']
@right_window.active = true
@item_window.active = false
@item_window.index = -1
@right_window.refresh
@item_window.refresh
$game_system.se_play($data_system.equip_se)
return
end
update_item_multislot
end
#--------------------------------------------------------------------------
# * Frame Update (when right window is active)
#--------------------------------------------------------------------------
def update_right
if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
@item_window.index = -1
@item_window.refresh
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(2)
return
end
if Input.trigger?(Input::C)
if @actor.equip_fix?(@right_window.index) or (@item_window.data.size == 0 and
@actor.lock_equip(@right_window.index))
return $game_system.se_play($data_system.buzzer_se)
end
$game_system.se_play($data_system.decision_se)
@right_window.active = false
@item_window.active = true
@item_window.index = 0
return
end
if Input.trigger?(Input::R)
$game_system.se_play($data_system.cursor_se)
@actor_index += $game_party.actors.size + 1
@actor_index %= $game_party.actors.size
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
end
if Input.trigger?(Input::L)
$game_system.se_play($data_system.cursor_se)
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
end
end
end
[/quote]
Code:
#_______________________________________________________________________________
# MOG Scene Equip Asuka V1.5
#_______________________________________________________________________________
# By Moghunter
# http://www.atelier-rgss.com
#_______________________________________________________________________________
module MOG
#Transition Time.
MSEQPT= 20
#Transition Type.
MSEQPTT= "007-Line01"
# Set Maximum (STR,DEX,AGL,INT)
MST_ST = 999
# Set Maximum (ATK,PDEF,MDEF)
MST_STE = 999
end
$mogscript = {} if $mogscript == nil
$mogscript["menu_asuka"] = true
###############
# Window_Base #
###############
class Window_Base < Window
def nada2(actor)
face = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
end
def draw_heroface2(actor,x,y)
face = RPG::Cache.picture(actor.name + "_fc2") rescue nada2(actor)
cw = face.width
ch = face.height
src_rect = Rect.new(0, 0, cw, ch)
if face == RPG::Cache.battler(actor.battler_name, actor.battler_hue)
self.contents.blt(x + 40 , y - ch - 240, face, src_rect)
else
self.contents.blt(x , y - ch, face, src_rect)
end
end
def drw_eqpup(x,y,type)
case type
when 0
est = RPG::Cache.icon("ST_EQU")
when 1
est = RPG::Cache.icon("ST_UP")
when 2
est = RPG::Cache.icon("ST_DOWN")
end
cw = est.width
ch = est.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, est, src_rect)
end
def drw_equist(x,y)
equist = RPG::Cache.picture("Equip_St")
cw = equist.width
ch = equist.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, equist, src_rect)
end
def draw_actor_parameter2(actor, x, y, type)
back = RPG::Cache.picture("STBAR_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 50 , y - ch + 20, back, src_rect)
meter = RPG::Cache.picture("STBAR.png")
case type
when 0
parameter_value = actor.atk
cw = meter.width * actor.atk / MOG::MST_STE
when 1
parameter_value = actor.pdef
cw = meter.width * actor.pdef / MOG::MST_STE
when 2
parameter_value = actor.mdef
cw = meter.width * actor.mdef / MOG::MST_STE
when 3
parameter_value = actor.str
cw = meter.width * actor.str / MOG::MST_ST
when 4
parameter_value = actor.dex
cw = meter.width * actor.dex / MOG::MST_ST
when 5
parameter_value = actor.agi
cw = meter.width * actor.agi / MOG::MST_ST
when 6
parameter_value = actor.int
cw = meter.width * actor.int / MOG::MST_ST
end
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y - 2, 36, 32, parameter_value.to_s, 2)
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 50 , y - ch + 20, meter, src_rect)
end
def nada
face = RPG::Cache.picture("")
end
def draw_heroface3(actor,x,y)
face = RPG::Cache.picture(actor.name + "_fc3") rescue nada
cw = face.width
ch = face.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, face, src_rect)
end
end
####################
# Window_EquipLeft #
####################
class Window_EquipLeft < Window_Base
def initialize(actor)
super(0, 64, 272, 446)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 0
self.contents.font.name = "Tahoma"
self.contents.font.size = 12
@actor = actor
refresh
end
def refresh
self.contents.clear
draw_heroface2(@actor, 20, 400)
drw_equist(0,390)
draw_actor_name(@actor, 130, -10)
draw_actor_level(@actor, 4, 32)
draw_actor_parameter2(@actor, 10, 164 , 0)
draw_actor_parameter2(@actor, 10, 196 , 1)
draw_actor_parameter2(@actor, 10, 228 , 2)
draw_actor_parameter2(@actor, 10, 260 , 3)
draw_actor_parameter2(@actor, 10, 292 , 4)
draw_actor_parameter2(@actor, 10, 324 , 5)
draw_actor_parameter2(@actor, 10, 356 , 6)
if @new_atk != nil
self.contents.font.color = system_color
if @new_atk < @actor.atk
drw_eqpup(170,190,2)
self.contents.font.color = Color.new(255,50,50,255)
elsif @new_atk > @actor.atk
drw_eqpup(170,190,1)
self.contents.font.color = Color.new(50,250,150,255)
else
drw_eqpup(170,190,0)
self.contents.font.color = Color.new(255,255,255,255)
end
self.contents.draw_text(190, 162, 36, 32, @new_atk.to_s, 2)
end
if @new_pdef != nil
if @new_pdef < @actor.pdef
drw_eqpup(170,226,2)
self.contents.font.color = Color.new(255,50,50,255)
elsif @new_pdef > @actor.pdef
drw_eqpup(170,226,1)
self.contents.font.color = Color.new(50,250,150,255)
else
drw_eqpup(170,226,0)
self.contents.font.color = Color.new(255,255,255,255)
end
self.contents.draw_text(190, 194, 36, 32, @new_pdef.to_s, 2)
end
if @new_mdef != nil
if @new_mdef < @actor.mdef
drw_eqpup(170,258,2)
self.contents.font.color = Color.new(255,50,50,255)
elsif @new_mdef > @actor.mdef
drw_eqpup(170,258,1)
self.contents.font.color = Color.new(50,250,150,255)
else
drw_eqpup(170,258,0)
self.contents.font.color = Color.new(255,255,255,255)
end
self.contents.draw_text(190, 226, 36, 32, @new_mdef.to_s, 2)
end
if @new_str != nil
if @new_str < @actor.str
drw_eqpup(170,290,2)
self.contents.font.color = Color.new(255,50,50,255)
elsif @new_str > @actor.str
drw_eqpup(170,290,1)
self.contents.font.color = Color.new(50,250,150,255)
else
drw_eqpup(170,290,0)
self.contents.font.color = Color.new(255,255,255,255)
end
self.contents.draw_text(190, 258, 36, 32, @new_str.to_s, 2)
end
if @new_dex != nil
if @new_dex < @actor.dex
drw_eqpup(170,322,2)
self.contents.font.color = Color.new(255,50,50,255)
elsif @new_dex > @actor.dex
drw_eqpup(170,322,1)
self.contents.font.color = Color.new(50,250,150,255)
else
drw_eqpup(170,322,0)
self.contents.font.color = Color.new(255,255,255,255)
end
self.contents.draw_text(190, 290, 36, 32, @new_dex.to_s, 2)
end
if @new_agi != nil
if @new_agi < @actor.agi
drw_eqpup(170,354,2)
self.contents.font.color = Color.new(255,50,50,255)
elsif @new_agi > @actor.agi
drw_eqpup(170,354,1)
self.contents.font.color = Color.new(50,250,150,255)
else
drw_eqpup(170,354,0)
self.contents.font.color = Color.new(255,255,255,255)
end
self.contents.draw_text(190, 322, 36, 32, @new_agi.to_s, 2)
end
if @new_int != nil
if @new_int < @actor.int
drw_eqpup(170,386,2)
self.contents.font.color = Color.new(255,50,50,255)
elsif @new_int > @actor.int
drw_eqpup(170,386,1)
self.contents.font.color = Color.new(50,250,150,255)
else
drw_eqpup(170,386,0)
self.contents.font.color = Color.new(255,255,255,255)
end
self.contents.draw_text(190, 354, 36, 32, @new_int.to_s, 2)
end
end
def set_new_parameters(new_atk, new_pdef, new_mdef, new_str, new_dex,
new_agi, new_int)
if @new_atk != new_atk or @new_pdef != new_pdef or @new_mdef != new_mdef or
@new_str != new_str or @new_dex != new_dex or @new_agl != new_agi or
@new_int != new_int
@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
refresh
end
end
end
#####################
# Window_EquipRight #
#####################
class Window_EquipRight < Window_Selectable
def initialize(actor)
super(272, 64, 368, 192)
self.contents = Bitmap.new(width - 32, height - 32)
self.opacity = 0
self.contents.font.name = "Tahoma"
self.contents.font.size = 14
@actor = actor
refresh
self.index = 0
end
def item
return @data[self.index]
end
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
draw_item_name(@data[0], 92, 32 * 0)
draw_item_name(@data[1], 92, 32 * 1)
draw_item_name(@data[2], 92, 32 * 2)
draw_item_name(@data[3], 92, 32 * 3)
draw_item_name(@data[4], 92, 32 * 4)
end
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
####################
# Window_EquipItem #
####################
class Window_EquipItem < Window_Selectable
def initialize(actor, equip_type)
super(272, 256, 368, 224)
self.opacity = 0
@actor = actor
@equip_type = equip_type
@column_max = 1
refresh
self.active = false
self.index = -1
end
def item
return @data[self.index]
end
def refresh
if self.contents != nil
self.contents.dispose
self.contents = nil
end
@data = []
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
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
@data.push(nil)
@item_max = @data.size
self.contents = Bitmap.new(width - 32, row_max * 32)
for i in 0...@item_max-1
draw_item(i)
end
end
def draw_item(index)
self.contents.font.name = "Tahoma"
self.contents.font.size = 14
item = @data[index]
x = 4 + index % 1 * (288 + 32)
y = index / 1 * 32
case item
when RPG::Weapon
number = $game_party.weapon_number(item.id)
when RPG::Armor
number = $game_party.armor_number(item.id)
end
bitmap = RPG::Cache.icon(item.icon_name)
self.contents.blt(x, y + 4, bitmap, Rect.new(0, 0, 24, 24))
self.contents.font.color = normal_color
self.contents.draw_text(x + 28, y, 212, 32, item.name, 0)
self.contents.draw_text(x + 240, y, 16, 32, ":", 1)
self.contents.draw_text(x + 256, y, 24, 32, number.to_s, 2)
end
def update_help
@help_window.set_text(self.item == nil ? "" : self.item.description)
end
end
###############
# Scene_Equip #
###############
class Scene_Equip
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
@equip_index = equip_index
end
def main
@mnback = Plane.new
@mnback.bitmap = RPG::Cache.picture("MN_BK")
@mnback.z = 1
@mnlay = Sprite.new
@mnlay.bitmap = RPG::Cache.picture("Equip_Lay")
@mnlay.z = 2
@actor = $game_party.actors[@actor_index]
@help_window = Window_Help.new
@help_window.opacity = 0
@help_window.x = -300
@help_window.contents_opacity = 0
@left_window = Window_EquipLeft.new(@actor)
@left_window.x = -300
@left_window.contents_opacity = 0
@right_window = Window_EquipRight.new(@actor)
@item_window1 = Window_EquipItem.new(@actor, 0)
@item_window2 = Window_EquipItem.new(@actor, 1)
@item_window3 = Window_EquipItem.new(@actor, 2)
@item_window4 = Window_EquipItem.new(@actor, 3)
@item_window5 = Window_EquipItem.new(@actor, 4)
@item_window1.x = 640
@item_window2.x = 640
@item_window3.x = 640
@item_window4.x = 640
@item_window5.x = 640
@right_window.help_window = @help_window
@item_window1.help_window = @help_window
@item_window2.help_window = @help_window
@item_window3.help_window = @help_window
@item_window4.help_window = @help_window
@item_window5.help_window = @help_window
@right_window.index = @equip_index
@right_window.x = 640
refresh
Graphics.transition(MOG::MSEQPT, "Graphics/Transitions/" + MOG::MSEQPTT)
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
for i in 0..20
@left_window.x -= 15
@left_window.contents_opacity -= 10
@item_window.x += 20
@item_window.contents_opacity -= 15
@right_window.x += 20
@right_window.contents_opacity -= 15
Graphics.update
end
Graphics.freeze
@help_window.dispose
@left_window.dispose
@right_window.dispose
@item_window1.dispose
@item_window2.dispose
@item_window3.dispose
@item_window4.dispose
@item_window5.dispose
@mnback.dispose
@mnlay.dispose
end
def refresh
@item_window1.visible = (@right_window.index == 0)
@item_window2.visible = (@right_window.index == 1)
@item_window3.visible = (@right_window.index == 2)
@item_window4.visible = (@right_window.index == 3)
@item_window5.visible = (@right_window.index == 4)
item1 = @right_window.item
case @right_window.index
when 0
@item_window = @item_window1
when 1
@item_window = @item_window2
when 2
@item_window = @item_window3
when 3
@item_window = @item_window4
when 4
@item_window = @item_window5
end
if @right_window.active
@left_window.set_new_parameters(nil, nil, nil,nil, nil, nil,nil)
end
if @item_window.active
item2 = @item_window.item
last_hp = @actor.hp
last_sp = @actor.sp
@actor.equip(@right_window.index, item2 == nil ? 0 : item2.id)
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
@actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
@actor.hp = last_hp
@actor.sp = last_sp
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef, new_str,
new_dex,new_agi,new_int)
end
end
def update
if @right_window.x > 272
@right_window.x -= 25
elsif @right_window.x <= 272
@right_window.x = 272
end
if @item_window.x > 272
@item_window.x -= 25
elsif @item_window.x <= 272
@item_window.x = 272
end
if @item_window.active == false
if Input.trigger?(Input::UP) or Input.trigger?(Input::DOWN)
@item_window.x = 640
end
end
if @left_window.x < 0
@left_window.x += 15
@left_window.contents_opacity += 10
elsif @left_window.x >= 0
@left_window.x = 0
@left_window.contents_opacity = 255
end
if @help_window.x < 0
@help_window.x += 20
@help_window.contents_opacity += 10
elsif @help_window.x >= 0
@help_window.x = 0
@help_window.contents_opacity = 255
end
@mnback.ox += 1
@left_window.update
@right_window.update
@item_window.update
if Input.trigger?(Input::B) or Input.trigger?(Input::C) or
Input.trigger?(Input.dir4) or Input.trigger?(Input::L) or
Input.trigger?(Input::R) or Input.press?(Input.dir4)
@help_window.x = -300
@help_window.contents_opacity = 0
refresh
end
if @right_window.active
update_right
return
end
if @item_window.active
update_item
return
end
end
def update_right
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(2)
return
end
if Input.trigger?(Input::C)
if @actor.equip_fix?(@right_window.index)
$game_system.se_play($data_system.buzzer_se)
return
end
$game_system.se_play($data_system.decision_se)
@right_window.active = false
@item_window.active = true
@item_window.index = 0
refresh
return
end
if Input.trigger?(Input::R)
$game_system.se_play($data_system.cursor_se)
@actor_index += 1
@actor_index %= $game_party.actors.size
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
end
if Input.trigger?(Input::L)
$game_system.se_play($data_system.cursor_se)
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
end
end
def update_item
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
@right_window.active = true
@item_window.active = false
@item_window.index = -1
refresh
return
end
if Input.trigger?(Input::C)
$game_system.se_play($data_system.equip_se)
item = @item_window.item
@actor.equip(@right_window.index, item == nil ? 0 : item.id)
@right_window.active = true
@item_window.active = false
@item_window.index = -1
@right_window.refresh
@item_window.refresh
refresh
return
end
end
end
Code:
#_______________________________________________________________________________
# MOG Scene Status Eva V1.2
#_______________________________________________________________________________
# By Moghunter
# http://www.atelier-rgss.com
#_______________________________________________________________________________
module MOG
#Transition Time.
MST_TT = 10
#Transition Type(Name).
MST_TTT = "007-Line01"
# Set Maximum (STR,DEX,AGL,INT)
MST_ST = 999
# Set Maximum (ATK,PDEF,MDEF)
MST_STE = 999
end
$mogscript = {} if $mogscript == nil
$mogscript["menu_eva"] = true
##############
# Game_Actor #
##############
class Game_Actor < Game_Battler
def now_exp
return @exp - @exp_list[@level]
end
def next_exp
return @exp_list[@level+1] > 0 ? @exp_list[@level+1] - @exp_list[@level] : 0
end
end
###############
# Window_Base #
###############
class Window_Base < Window
def nada2(actor)
face = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
end
def draw_heroface4(actor,x,y)
face = RPG::Cache.picture(actor.name + "_fc2") rescue nada2(actor)
cw = face.width
ch = face.height
src_rect = Rect.new(0, 0, cw, ch)
if face == RPG::Cache.battler(actor.battler_name, actor.battler_hue)
self.contents.blt(x + 45 , y - ch - 150, face, src_rect)
else
self.contents.blt(x , y - ch, face, src_rect)
end
end
def draw_actor_parameter2(actor, x, y, type)
back = RPG::Cache.picture("STBAR_Back")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 50 , y - ch + 20, back, src_rect)
meter = RPG::Cache.picture("STBAR.png")
case type
when 0
parameter_value = actor.atk
cw = meter.width * actor.atk / MOG::MST_STE
when 1
parameter_value = actor.pdef
cw = meter.width * actor.pdef / MOG::MST_STE
when 2
parameter_value = actor.mdef
cw = meter.width * actor.mdef / MOG::MST_STE
when 3
parameter_value = actor.str
cw = meter.width * actor.str / MOG::MST_ST
when 4
parameter_value = actor.dex
cw = meter.width * actor.dex / MOG::MST_ST
when 5
parameter_value = actor.agi
cw = meter.width * actor.agi / MOG::MST_ST
when 6
parameter_value = actor.int
cw = meter.width * actor.int / MOG::MST_ST
end
self.contents.font.color = normal_color
self.contents.draw_text(x + 120, y - 2, 36, 32, parameter_value.to_s, 2)
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 50 , y - ch + 20, meter, src_rect)
end
def draw_maphp5(actor, x, y)
back = RPG::Cache.picture("BAR")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, back, src_rect)
meter = RPG::Cache.picture("HP_Bar2")
cw = meter.width * actor.hp / actor.maxhp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65, y - ch + 30, meter, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 66, y - 1, 100, 32, actor.hp.to_s + "/" + actor.maxhp.to_s, 1)
self.contents.font.color = Color.new(250,255,255,255)
self.contents.draw_text(x + 65, y - 2, 100, 32, actor.hp.to_s + "/" + actor.maxhp.to_s, 1)
end
def draw_mapsp5(actor, x, y)
back = RPG::Cache.picture("BAR")
cw = back.width
ch = back.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65 , y - ch + 30, back, src_rect)
meter = RPG::Cache.picture("SP_Bar2")
cw = meter.width * actor.sp / actor.maxsp
ch = meter.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 65 , y - ch + 30, meter, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 66, y - 1, 100, 32, actor.sp.to_s + "/" + actor.maxsp.to_s, 1)
self.contents.font.color = Color.new(250,255,255,255)
self.contents.draw_text(x + 65, y - 2, 100, 32, actor.sp.to_s + "/" + actor.maxsp.to_s, 1)
end
def draw_mexp5(actor, x, y)
bitmap2 = RPG::Cache.picture("Exp_Back")
cw = bitmap2.width
ch = bitmap2.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 60 , y - ch + 30, bitmap2, src_rect)
if actor.next_exp != 0
rate = actor.now_exp.to_f / actor.next_exp
else
rate = 1
end
bitmap = RPG::Cache.picture("Exp_Meter")
if actor.level < 99
cw = bitmap.width * rate
else
cw = bitmap.width
end
ch = bitmap.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x + 60 , y - ch + 30, bitmap, src_rect)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 51, y , 84, 32, actor.next_rest_exp_s.to_s, 1)
self.contents.font.color = Color.new(55,255,55,255)
self.contents.draw_text(x + 52, y + 1, 84, 32, actor.next_rest_exp_s.to_s, 1)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 45, y + 7, 84, 32, "N",0)
self.contents.font.color = Color.new(55,255,155,255)
self.contents.draw_text(x + 44, y + 8, 84, 32, "N",0)
self.contents.font.color = Color.new(0,0,0,255)
self.contents.draw_text(x + 10, y + 5, 30, 32, actor.level.to_s, 1)
self.contents.font.color = Color.new(255,255,255,255)
self.contents.draw_text(x + 11, y + 6, 30, 32, actor.level.to_s, 1)
end
end
##################
# Window_Status2 #
##################
class Window_Status < Window_Base
def initialize(actor)
super(0, 0, 660, 480)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
self.opacity = 0
refresh
end
def refresh
self.contents.clear
self.contents.font.name = "Tahoma"
self.contents.font.size = 14
draw_actor_name(@actor,100, 55)
draw_actor_class(@actor, 510, -5 )
draw_mexp5(@actor,310,130)
draw_actor_state(@actor, 130, 55)
draw_maphp5(@actor, 275, 165)
draw_mapsp5(@actor, 430, 165)
draw_actor_parameter2(@actor, 280, 108, 0)
draw_actor_parameter2(@actor, 460, 137, 1)
draw_actor_parameter2(@actor, 460, 108, 2)
draw_actor_parameter2(@actor, 280, 53, 3)
draw_actor_parameter2(@actor, 460, 53, 4)
draw_actor_parameter2(@actor, 280, 80, 5)
draw_actor_parameter2(@actor, 460, 80, 6)
self.contents.font.color = system_color
draw_item_name($data_weapons[@actor.weapon_id], 320 + 16, 228)
draw_item_name($data_armors[@actor.armor1_id], 320 + 16, 258)
draw_item_name($data_armors[@actor.armor2_id], 320 + 16, 288)
draw_item_name($data_armors[@actor.armor3_id], 320 + 16, 318)
draw_item_name($data_armors[@actor.armor4_id], 320 + 16, 348)
end
def dummy
self.contents.font.color = system_color
self.contents.draw_text(320, 112, 96, 32, $data_system.words.weapon)
self.contents.draw_text(320, 176, 96, 32, $data_system.words.armor1)
self.contents.draw_text(320, 240, 96, 32, $data_system.words.armor2)
self.contents.draw_text(320, 304, 96, 32, $data_system.words.armor3)
self.contents.draw_text(320, 368, 96, 32, $data_system.words.armor4)
draw_item_name($data_weapons[@actor.weapon_id], 320 + 24, 144)
draw_item_name($data_armors[@actor.armor1_id], 320 + 24, 208)
draw_item_name($data_armors[@actor.armor2_id], 320 + 24, 272)
draw_item_name($data_armors[@actor.armor3_id], 320 + 24, 336)
draw_item_name($data_armors[@actor.armor4_id], 320 + 24, 400)
end
end
###############
# Window_Face #
###############
class Window_Face < Window_Base
def initialize(actor)
super(0, -20, 300, 520)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
self.opacity = 0
refresh
end
def refresh
self.contents.clear
draw_heroface4(@actor,10,485)
end
end
################
# Scene_Status #
################
class Scene_Status
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
end
def main
@actor = $game_party.actors[@actor_index]
@status_window = Window_Status.new(@actor)
@status_face = Window_Face.new(@actor)
@status_face.z = 100 # edit: Eigentlic war 20
@status_face.x = -300
@status_face.contents_opacity = 0
@mst_lay = Sprite.new
@mst_lay.bitmap = RPG::Cache.picture("MST_Lay")
@mst_lay.z = 100
@mst_back1 = Plane.new
@mst_back1.bitmap = RPG::Cache.picture("MN_BK")
@mst_back1.z = 10
Graphics.transition(MOG::MST_TT, "Graphics/Transitions/" + MOG::MST_TTT)
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
for i in 0..30
@status_face.x -= 20
@status_face.contents_opacity -= 15
Graphics.update
end
Graphics.freeze
@mst_lay.dispose
@mst_back1.dispose
@status_face.dispose
@status_window.dispose
end
def update
@mst_back1.ox += 1
@mst_back1.oy += 1
if @status_face.x < 0
@status_face.x += 20
@status_face.contents_opacity += 15
elsif @status_face.x >= 0
@status_face.x = 0
@status_face.contents_opacity = 255
end
if Input.trigger?(Input::B)
$game_system.se_play($data_system.cancel_se)
$scene = Scene_Menu.new(3)
return
end
if Input.trigger?(Input::R) or Input.trigger?(Input::RIGHT)
$game_system.se_play($data_system.cursor_se)
@actor_index += 1
@actor_index %= $game_party.actors.size
$scene = Scene_Status.new(@actor_index)
return
end
if Input.trigger?(Input::L) or Input.trigger?(Input::LEFT)
$game_system.se_play($data_system.cursor_se)
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
$scene = Scene_Status.new(@actor_index)
return
end
end
end