Hm. Okay. Seems legit. I changed the old equip script with the revisioned one. Now whenever I want to open the Equipment section I get a error on line 176. When I remove the multi slots addon, it doesnt change. Seems something on the equip script is wrong because the result is the same if I remove the multi slots script.
That doesn't really make any sense, it claiming that the issue is that I only have one parameter being used where four are being asked. The statement on line 176 is an alias to the Window_EquipLeft's initialize method that only asks for one parameter. It only has one parameter in the default script, and that's all that I offer or need to offer. Unless something has been altered, there should be no issues whatsoever with the revised version of the Moghunter Equip script at all.
And just to be sure, I looked at Mog's original which has only a Color.New statement in that line.
Meanwhile, I looked at Atoa's script. Could he have forgotten to include those 'include Atoa' statements? Sheesh. The script by itself won't work and I already found two bugs. That, and he too decided to rewrite where aliasing would be needed (as I did with my MultiSlots script). So his system totally rewrites over the Scene_Equip system that would wipe out anything Mog did.
What all do you need from his (atoa's) equip system???
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
Well I want the Actors to wear only a weapon, a amor and 2 accessories and not the weapon,helm,shield,armor, accessory as it is as a standard. Thats why I need the script. I just dont know which parts of the script this is. Isn't that what the whole script is about?
Basically I need the script to make a customized equipment setting as I described. But it should be compatible with the MOG'S Weapon and status scripts. It gets more and more complicated after all.
Pity you can't use MultiSlots. While it works without it (some visual hiccups), I wrote a patch that fixed those hiccups. I'll have to see what screwups I need to fix.
Technically, I gotta see about fixing his Scene_Equip class. It's literally overwriting the menus, making the Mog stuff worthless. And there's the issues of the constants (the configurables in his Atoa module) that aren't being accessed because he didn't remember to add 'include Atoa' calls. And even after repairs like that, I'd make a separate patch for visual changes.
:Confused: Wow. I haven't touched RUBY code like this in two months?
Meanwhile, please show me line 176 in YOUR copy of the Scene_Equip script, because I swear it was only one value being passed:
Code:
mog_init(actor)
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
#==============================================================================
# ** MOG Scene Equip Asuka V1.5
# By Moghunter
# http://www.atelier-rgss.com
#------------------------------------------------------------------------------
# ** Reinvisioned version
#
# This variant has retooled the MOG module by adding more configurables for
# the user. No longer are the graphics hardwired into the code but are now
# able to be altered in the revised configuration serction.
#
# Also, a number of redundant modules within the Windows and Scene classes
# have been removed. Some have been aliased to increase compatibility with
# other systems.
#==============================================================================
module MOG
# BASIC MENU CONFIGURATION
# Equip Menu Graphics Used
EQUIP_LAYOUT = "Layout-Equip" # Equip Menu Graphics
EQUIP_BACKGROUND = "Back-Other" # Animated background graphic
EQUIP_TYPE_1 = "ST_EQU" # Equip Graphic (Equal)
EQUIP_TYPE_2 = "ST_UP" # Equip Graphic (Raises Stats)
EQUIP_TYPE_3 = "ST_DOWN" # Equip Graphic (Lowers Stats)
PORTRAIT = "_P" # Suffix for portrait graphics
# Menu
EQUIP_FX = 0 # Back FX (0=Moving/ 1=Still/ 2=Map)
EQUIP_TRAN_TIME = 20 # Transition Time.
EQUIP_TRAN_TYPE = "004-Blind04" # Transition Type (Name).
# Stat Level Maximums
EQUIP_STAT_MAX_1 = 999 # Set Maximum (STR,DEX,AGL,INT)
EQUIP_STAT_MAX_2 = 999 # Set Maximum (ATK,PDEF,MDEF)
# Font Used
EQUIP_FONT = "Georgia" # Font used in equip menu
EQUIP_FONT_COLOR = Color.new(0,0,0) # Font color used open areas
# MENU GAUGE GRAPHICS
# Stat Window
EQUIP_STAT_BACK = "Status-Equip" # Stat Window Graphics
# Empty Bars
EQUIP_STAT_BAR_E = "STAT_Bar_Bk" # Empty bar for Stats
# Fill Bars
EQUIP_STAT_BAR = "STAT_Bar" # Fill bar for Stats
end
# Mogscript global
$mogscript = {} if $mogscript == nil
$mogscript["menu_asuka"] = true
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Draw Empty Face #2
#--------------------------------------------------------------------------
def nada2(actor)
face = RPG::Cache.battler(actor.battler_name, actor.battler_hue)
end
#--------------------------------------------------------------------------
# * Draw Large Portrait (or Battler if unavailable)
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_heroface2(actor,x,y)
face = RPG::Cache.picture(actor.name + MOG::PORTRAIT) 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
#--------------------------------------------------------------------------
# * Draw Equipment Gain/Loss
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : indicator type
#--------------------------------------------------------------------------
def drw_eqpup(x,y,type)
case type
when 0
est = RPG::Cache.icon(MOG::EQUIP_TYPE_1)
when 1
est = RPG::Cache.icon(MOG::EQUIP_TYPE_2)
when 2
est = RPG::Cache.icon(MOG::EQUIP_TYPE_3)
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
#--------------------------------------------------------------------------
# * Draw Equipment Stat Graphic
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def drw_equist(x,y)
equist = RPG::Cache.picture(MOG::EQUIP_STAT_BACK)
cw = equist.width
ch = equist.height
src_rect = Rect.new(0, 0, cw, ch)
self.contents.blt(x , y - ch, equist, src_rect)
end
#--------------------------------------------------------------------------
# * Draw Parameter
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
# type : parameter type (0-6)
#--------------------------------------------------------------------------
def draw_actor_parameter(actor, x, y, type)
back = RPG::Cache.picture(MOG::EQUIP_STAT_BAR_E)
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(MOG::EQUIP_STAT_BAR)
case type
when 0
parameter_value = actor.atk
cw = meter.width * actor.atk / MOG::EQUIP_STAT_MAX_2
when 1
parameter_value = actor.pdef
cw = meter.width * actor.pdef / MOG::EQUIP_STAT_MAX_2
when 2
parameter_value = actor.mdef
cw = meter.width * actor.mdef / MOG::EQUIP_STAT_MAX_2
when 3
parameter_value = actor.str
cw = meter.width * actor.str / MOG::EQUIP_STAT_MAX_1
when 4
parameter_value = actor.dex
cw = meter.width * actor.dex / MOG::EQUIP_STAT_MAX_1
when 5
parameter_value = actor.agi
cw = meter.width * actor.agi / MOG::EQUIP_STAT_MAX_1
when 6
parameter_value = actor.int
cw = meter.width * actor.int / MOG::EQUIP_STAT_MAX_1
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
end
#==============================================================================
# ** Window_EquipLeft
#------------------------------------------------------------------------------
# This window displays actor parameter changes on the equipment screen.
#==============================================================================
class Window_EquipLeft < Window_Base
alias mog_init initialize
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
mog_init(actor)
self.opacity = 0
self.height = 446
self.contents = Bitmap.new(width - 32, height - 32)
self.contents.font.name = MOG::EQUIP_FONT
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_heroface2(@actor, 20, 460)
drw_equist(0,390)
draw_actor_name(@actor, 4, 0)
draw_actor_level(@actor, 4, 32)
draw_actor_parameter(@actor, 10, 164 , 0)
draw_actor_parameter(@actor, 10, 196 , 1)
draw_actor_parameter(@actor, 10, 228 , 2)
draw_actor_parameter(@actor, 10, 260 , 3)
draw_actor_parameter(@actor, 10, 292 , 4)
draw_actor_parameter(@actor, 10, 324 , 5)
draw_actor_parameter(@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
#--------------------------------------------------------------------------
# * 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 : intelligence after changing equipment
#--------------------------------------------------------------------------
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
#------------------------------------------------------------------------------
# This window displays items the actor is currently equipped with on the
# equipment screen.
#==============================================================================
#==============================================================================
# ** Window_EquipItem
#------------------------------------------------------------------------------
# This window displays choices when opting to change equipment on the
# equipment screen.
#==============================================================================
class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
# equip_type : equip region (0-3)
#--------------------------------------------------------------------------
alias mog_init initialize
def initialize(actor, equip_type)
mog_init(actor, equip_type)
self.width = 368
self.x = 272
self.opacity = 0
@column_max = 1
refresh
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
self.contents.font.name = MOG::EQUIP_FONT
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 = MOG::EQUIP_FONT_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
#==============================================================================
# ** Scene_Equip
#------------------------------------------------------------------------------
# This class performs equipment screen processing.
#==============================================================================
class Scene_Equip
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
unless MOG::EQUIP_FX == 2
@mnback = Plane.new
@mnback.bitmap = RPG::Cache.picture(MOG::EQUIP_BACKGROUND)
@mnback.z = 1
else
@spriteset = Spriteset_Map.new
end
@mnlay = Sprite.new
@mnlay.bitmap = RPG::Cache.picture(MOG::EQUIP_LAYOUT)
@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
unless MOG::EQUIP_FX == 2
Graphics.transition(MOG::EQUIP_TRAN_TIME, "Graphics/Transitions/" +
MOG::EQUIP_TRAN_TYPE)
else
Graphics.transition
end
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 unless MOG::EQUIP_FX == 2
@spriteset.dispose if MOG::EQUIP_FX == 2
@mnlay.dispose
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
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
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
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 if MOG::EQUIP_FX == 0
@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
#--------------------------------------------------------------------------
# * Frame Update (when item window is active)
#--------------------------------------------------------------------------
alias mog_update update_item
def update_item
mog_update
refresh
end
end
Okay, so now I see we have a situation. Here's the very first part of the original and default class:
Code:
#==============================================================================
# ** Window_EquipLeft
#------------------------------------------------------------------------------
# This window displays actor parameter changes on the equipment screen.
#==============================================================================
class Window_EquipLeft < Window_Base
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
super(0, 64, 272, 192)
self.contents = Bitmap.new(width - 32, height - 32)
@actor = actor
refresh
end
So the moghunter code is properly written so it can pass one value to a one-value statement, the shown initialize statement.
You must have some 'other' script that is affecting Window_EquipLeft in a manner that is forcing this bug to occur. It would be another script with a Window_EquipLeft class that is altering the initialize method.
EDIT: The only script in Atoa's demo that alters the Window_EquipLeft class is his 'New Status' add-on. And that wouldn't cause the glitch. It must be some non-Atoa script you're using.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
I've checked so far. The only of my scripts that mentions the Window_EquipLeft class is the 'New Status' add-on which im also using. I didint find any script (and I looked to all of them) which uses the same class. Btw. As I removed the new status script, the bug didint happen and the menu opened smoothly. So it really was this script causing the bug. But the multi slot script is still not compatible with the mogs scripts. Now I can open the equipment scene but when I try to press at accessory I get a error on line 284 once again.
Heres my original scene_Equip
Code:
#==============================================================================
# ** Scene_Equip
#------------------------------------------------------------------------------
# This class performs equipment screen processing.
#==============================================================================
class Scene_Equip
#--------------------------------------------------------------------------
# * Object Initialization
# actor_index : actor index
# equip_index : equipment index
#--------------------------------------------------------------------------
def initialize(actor_index = 0, equip_index = 0)
@actor_index = actor_index
@equip_index = equip_index
end
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
# Get actor
@actor = $game_party.actors[@actor_index]
# Make windows
@help_window = Window_Help.new
@left_window = Window_EquipLeft.new(@actor)
@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)
# Associate help window
@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
# Set cursor position
@right_window.index = @equip_index
refresh
# Execute transition
Graphics.transition
# Main loop
loop do
# Update game screen
Graphics.update
# Update input information
Input.update
# Frame update
update
# Abort loop if screen is changed
if $scene != self
break
end
end
# Prepare for transition
Graphics.freeze
# Dispose of windows
@help_window.dispose
@left_window.dispose
@right_window.dispose
@item_window1.dispose
@item_window2.dispose
@item_window3.dispose
@item_window4.dispose
@item_window5.dispose
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
# Set item window to visible
@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)
# Get currently equipped item
item1 = @right_window.item
# Set current item window to @item_window
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 is active
if @right_window.active
# Erase parameters for after equipment change
@left_window.set_new_parameters(nil, nil, nil)
end
# If item window is active
if @item_window.active
# Get currently selected item
item2 = @item_window.item
# Change equipment
last_hp = @actor.hp
last_sp = @actor.sp
@actor.equip(@right_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
# Return equipment
@actor.equip(@right_window.index, item1 == nil ? 0 : item1.id)
@actor.hp = last_hp
@actor.sp = last_sp
# Draw in left window
@left_window.set_new_parameters(new_atk, new_pdef, new_mdef)
end
end
#--------------------------------------------------------------------------
# * Frame Update
#--------------------------------------------------------------------------
def update
# Update windows
@left_window.update
@right_window.update
@item_window.update
refresh
# If right window is active: call update_right
if @right_window.active
update_right
return
end
# If item window is active: call update_item
if @item_window.active
update_item
return
end
end
#--------------------------------------------------------------------------
# * Frame Update (when right window is active)
#--------------------------------------------------------------------------
def update_right
# 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
$scene = Scene_Menu.new(2)
return
end
# If C button was pressed
if Input.trigger?(Input::C)
# If equipment is fixed
if @actor.equip_fix?(@right_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
@right_window.active = false
@item_window.active = true
@item_window.index = 0
return
end
# If R button was pressed
if Input.trigger?(Input::R)
# Play cursor SE
$game_system.se_play($data_system.cursor_se)
# To next actor
@actor_index += 1
@actor_index %= $game_party.actors.size
# Switch to different equipment screen
$scene = Scene_Equip.new(@actor_index, @right_window.index)
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
@actor_index += $game_party.actors.size - 1
@actor_index %= $game_party.actors.size
# Switch to different equipment screen
$scene = Scene_Equip.new(@actor_index, @right_window.index)
return
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)
# Activate right window
@right_window.active = true
@item_window.active = false
@item_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 = @item_window.item
# Change equipment
@actor.equip(@right_window.index, item == nil ? 0 : item.id)
# Activate right window
@right_window.active = true
@item_window.active = false
@item_window.index = -1
# Remake right window and item window contents
@right_window.refresh
@item_window.refresh
return
end
end
end
If you never tampered with your original copy of Scene_Equip or any of the original default scripts, you do not need to post the originals. That's a kinda given.
And yeah, I don't think you need Atoa's 'New Status' script if you're also wanting to use Mog's Status Window script. I mean, it's like your're being asked to choose if you want to have a Pepsi and a Coke, and you say 'yes' :p You perdy much just need one if the stuff you want in that one is sufficient. So scratch the New Status script from your list.
Mog and that Equip menu by Atoa not being incompatible. No kidding. Yeeeeah. You'll definitely need a patch to get the two to play nice together. Under most circumstances, you post your menu script, and then your equip script underneath so the equip stuff gets added into the menu. Atoa's equipment system just overwrites, so it is not playing nice at all... Hence, needing a patch. Kinda trying now.
Up is down, left is right and sideways is straight ahead. - Cord "Circle of Iron", 1978 (written by Bruce Lee and James Coburn... really...)
Oh, and remember. We do not considered doubleposting if some significant time had passed and new and pertinent information is being presented.
And the way the system is set up in your scripts library is kinda manditory... KINDA...
Mog Menu Equip
Mog Menu Status (your option)
Atoa's Battlesystem
Atoa's Add-Ons (including Multiple Slots)
THIS PATCH!!!!
So yeah, The Moggy Menu scripts go before the battlesystem, but this patch goes after them all.
And without further adieu...
The Atoa's Moggy-Slots Patch
Code:
#==============================================================================
# ** Atoa's Moggy-Slots - The Moghunter Patch for Atoa's Multi Slot Script
#------------------------------------------------------------------------------
# by DerVVulfman
# version 1.0
# 08-11-2016
# RGSS / RMXP - Involves Rewrites
#------------------------------------------------------------------------------
#
# INTRODUCTION:
# =============
# This script is intended to permit the Equipment Multi Slots script by Atoa
# to work with Moghunter's 'Scene_Equip Asuka' & 'Scene_Status Eva' scripts.
#
# As this script must alter the status window to account for the additional
# slots, it is necessary to have written this to account for both Equipment
# and Status menu scripts by Moghunter. At the same time, it endeavored to
# keep as much of the displayed information shared between the two scripts.
#
# NOTE: The original Moghunter Equipment script allowed for only a fixed
# number of slots. As such, the 'Layout-Equip.png' image contained text to
# display the slot names. Unfortunately, this will not be possible with a
# multiple slot system. As such, this script should come with an attached
# png file which resembles the original, but with the names removed.
#
# REMEMBER: Character portraits within the Moghunter menus is based upon
# the character's name followed by a suffix as described in the script's
# configuration section. In the case of a potrait of Aluxes, the filename
# would be Aluxes_P as the suffix defined in the PORTRAIT value is '_P'.
#
#==============================================================================
#==============================================================================
# ** Window_Base
#------------------------------------------------------------------------------
# This class is for all in-game windows.
#==============================================================================
class Window_Base < Window
#--------------------------------------------------------------------------
# * Draw Name
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_name_mog(actor, x, y)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 120, 32, actor.name)
end
#--------------------------------------------------------------------------
# * Draw Level
# actor : actor
# x : draw spot x-coordinate
# y : draw spot y-coordinate
#--------------------------------------------------------------------------
def draw_actor_level_mog(actor, x, y)
self.contents.font.color = system_color
self.contents.draw_text(x, y, 32, 32, "Lv")
self.contents.font.color = normal_color
self.contents.draw_text(x + 32, y, 24, 32, actor.level.to_s, 2)
end
end
#==============================================================================
# ** Window_EquipLeft
#------------------------------------------------------------------------------
# This window displays actor parameter changes on the equipment screen.
#==============================================================================
class Window_EquipLeft < Window_Base
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias equip_left_multimog_initialize initialize
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
#--------------------------------------------------------------------------
def initialize(actor)
# Perform the original code
equip_left_multimog_initialize(actor)
# Hide and resize to match Moghunter system
self.opacity = 0
self.height = 446
self.contents = Bitmap.new(width - 32, height - 32)
# Set Moghunter Font
self.contents.font.name = MOG::EQUIP_FONT
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
self.contents.clear
draw_heroface2(@actor, 20, 460)
drw_equist(0,390)
draw_actor_name_mog(@actor, 4, 0)
draw_actor_level_mog(@actor, 4, 32)
self.contents.font.name = MOG::EQUIP_FONT
draw_actor_parameter(@actor, 10, 164 , 0)
draw_actor_parameter(@actor, 10, 196 , 1)
draw_actor_parameter(@actor, 10, 228 , 2)
draw_actor_parameter(@actor, 10, 260 , 3)
draw_actor_parameter(@actor, 10, 292 , 4)
draw_actor_parameter(@actor, 10, 324 , 5)
draw_actor_parameter(@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
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)
self.contents.font.name = MOG::EQUIP_FONT
self.opacity = 0
self.index = 0
@actor = actor
refresh
end
end
#==============================================================================
# ** Window_EquipItem
#------------------------------------------------------------------------------
# This window displays choices when opting to change equipment on the
# equipment screen.
#==============================================================================
class Window_EquipItem < Window_Selectable
#--------------------------------------------------------------------------
# * Alias Listings
#--------------------------------------------------------------------------
alias equip_item_multimog_initialize initialize
alias equip_item_multimog_draw_item draw_item
#--------------------------------------------------------------------------
# * Object Initialization
# actor : actor
# equip_type : equip region (0-3)
#--------------------------------------------------------------------------
def initialize(actor, equip_type)
# Perform the original code
equip_item_multimog_initialize(actor, equip_type)
# Hide and resize to match Moghunter system
self.width = 368
self.x = 272
self.opacity = 0
@column_max = 1
refresh
end
#--------------------------------------------------------------------------
# * Draw Item
# index : item number
#--------------------------------------------------------------------------
def draw_item(index)
# Set Moghunter Font
self.contents.font.name = MOG::EQUIP_FONT
# Perform the original code
equip_item_multimog_draw_item(index)
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
self.contents.font.name = MOG::STATUS_FONT
draw_actor_name(@actor, 4, 0)
draw_actor_class(@actor, 510, -5 )
draw_mexp5(@actor, 310, 130)
draw_actor_state(@actor, 450, 20)
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
if @actor.two_weapons
for i in 0..1
draw_item_name($data_weapons[@actor.weapon_id(i)],320+16,228+32*i)
end
for i in 2...@actor.equip_type.size
draw_item_name($data_armors[ @actor.armor_id[i] ], 320+16,228+32*i)
end
else
draw_item_name($data_weapons[@actor.weapon_id], 320+16,228)
for i in 1...@actor.equip_type.size
draw_item_name($data_armors[ @actor.armor_id[i] ], 320+16,228+32*i)
end
end
end
end
#==============================================================================
# ** Scene_Equip
#------------------------------------------------------------------------------
# This class performs equipment screen processing.
#==============================================================================
class Scene_Equip
#--------------------------------------------------------------------------
# * Main Processing
#--------------------------------------------------------------------------
def main
unless MOG::EQUIP_FX == 2
@mnback = Plane.new
@mnback.bitmap = RPG::Cache.picture(MOG::EQUIP_BACKGROUND)
@mnback.z = 1
else
@spriteset = Spriteset_Map.new
end
@mnlay = Sprite.new
@mnlay.bitmap = RPG::Cache.picture(MOG::EQUIP_LAYOUT)
@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)
@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
@right_window.x = 640
refresh
unless MOG::EQUIP_FX == 2
Graphics.transition(MOG::EQUIP_TRAN_TIME, "Graphics/Transitions/" +
MOG::EQUIP_TRAN_TYPE)
else
Graphics.transition
end
loop do
Graphics.update
Input.update
update
break if $scene != self
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_window_dispose
@mnback.dispose unless MOG::EQUIP_FX == 2
@spriteset.dispose if MOG::EQUIP_FX == 2
@mnlay.dispose
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}.x = 640")
end
for i in 0...@actor.equip_kind.size
eval("@item_window#{i + 1}.help_window = @help_window")
end
refresh
end
#--------------------------------------------------------------------------
# * Refresh
#--------------------------------------------------------------------------
def refresh
if $atoa_script['Atoa New Status']
@help_window.opacity = Equip_Window_Opacity
end
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}")
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)
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, new_str,
new_dex, new_agi, new_int)
end
end
end
end
IF.... you're not using Moghunter's Scene Status Eva (and why the heck wouldn't you??), then you will want to remove the Window_Status class in the patch from lines 278 to 319. Since status windows show equipment, and this is a multi-Slot system, the status window had to be adjusted accordingly.
OH. And there is a replacement version of the 'LAYOUT-EQUIP' picture that goes in your pictures folder (no Weapon, Armor, Boots) text there. And there are some extra instructions in the patch.
Thank you really much. But there are some inconsistencies and some bugs appearing.
1,Well I did everything you told me and the Equipment MENU was modified the way I wanted to have. But
there is a reason why I put the two MENU scripts after the battle system. Because now the Multi slots work but the menu looks wrong
and it is shown double as you can see from my Picture I uploaded. When I first tried the scripts I put them above Atoas script and they looked bugged, but when I
tried them after Atoas battle scripts everythign looked fine, this is why Put his Menu after Atas battle menus.
2. When I try to acsses the scene status, it completly fails with a error on line 305 (as a attachment)
3. I slightly have the feeling, that the two accessories dont stack together like they should be. But Im not completly sure.