KUMORICLOUDGAMES'S PROFILE

Search

[RMVX ACE] Adding Subtle Motion To Face Sprites?

So, I know there's a non-script way to create effects with face sprites, using the "show picture" event command and moving said picture a little, or by using a script and doing it frame by frame, but that would be really time-consuming in my situation, especially with how my project is laid out.

I'm looking for a script, or for someone to help me out with creating one that adds subtle motion to face sprites, i.e., maybe just slightly wiggling or moving left and right side to side. I can't name many games, for example, that do this, but In Hotline Miami, the characters face rotates a small bit in cutscenes? Can anyone help or suggest a script to replicate that kind of effect?

Example:

Homeless

[RMVX ACE] Opening An External .txt File In Game

So in my game, there's a help option that you can access off the menu. I want it to open an external .txt file using a script call or some method in game. I used to know how to do this, but I've forgotten the exact script call that you needed to do it, I don't remember needing a script but if you did can someone please tell me how or what to do?

Today Is My 18th Birthday!

So today is my birthday, I'm finally the big boy number of 18, my talented and lovely GF surprised me with this cake that was based on the main character of the current RPG I'm developing! I thought I'd show it off on here, I'm just so overwhelmingly happy! I'm just amazed by her gift, she drew the images on separately, but the cake was baked, and her art is really good! I'm thankful for her and all of you on this site who have supported me, I joined this site when I was 14 but now I'm 18, damn time flies! I might be more busy with my adult life now, but I'll never stop game making! ~Peace


I accidentally double posted, please delete this.

I hit the button twice, whoops.

[RMVX ACE]Changing the Location Of The Map Display Name

Well the topic title is pretty self explanatory, I'd honestly love to know how to change the x and y position of the map display name. Do you need a script to change this? I'm not assuming you would, but maybe I'm wrong.

[RMVX ACE] Buffs, Debuffs not working.

Hey all! In my game I noticed that buffs nor debuffs were actually working especially in the MDF and DEF department, it's like my game ignores any changes to defense made in battle. Not even states could change the damage to a greater amount if the foe's defense was lowered.

I messed around with my damage formulas
but I had either two results, one. The game would count any attack
as immune or 2, it would ignore defense buffs and debuffs.

I've seriously spent 5 hours today trying to figure out what
the problem is, I've experimented with everything, can anyway help me?


My Physical Damage Formula: I'm Using: a.atk * 4 - b.def / 999
My Magical Damage Formula: 290 + a.mat * 4 - b.mdf * 2/999


[RMVX ACE] Making An Event Activate As Soon As The Player Is On Top.

Hello citizens of RPG Maker.net!
I'm having a little bit of trouble with a certain mechanic I'm trying
to implement.

So in my game there's a one tile jumping mechanic,
if you jump on a certain tile, a switch activates that opens a
door.

So in a nutshell,
I'd like so that if the player is on top of an event, the event activates as soon as the player enters the event's position. I know you can do the parallel process method that tracks the player's x and y position via variables
but I've found that to be far too laggy for a large number of events.

If you've ever played the game Star Tropics that's pretty
much what I'm trying to accomplish.

If you can tell me how to do this via script or other means
besides the one I mentioned, I'd be super grateful! :D

P.S I'd like for the method to require the event to be under
the player, I'm using Galv's jump script if you were wondering.

[RMVX ACE] Adding Numbers To This Name Input Script

Hello people and creatures alike!
I'm using a really neat script by Jetpackgone called Minimalist name input.
This is an amazing script but sadly it's missing numbers which I desperately need for my project's name input screen. I'd like
to have numbers added to this script, this can be done by another page
or just making the height greater in general to fit the additional characters.

The Script

[RMVX ACE] Adding A Store All Function To Galv's Item/Bank Storage

Hi all Kumori here!

So let's cut to the chase. In my game, there are certain points were I'd like the player's inventory to be completely empty.

I would like to do this without removing all of the items. My game uses Galv's Item/Bank Storage V.1.9

I'd like a simple script call or function to move your entire current inventory to the

bank including you're items, weapons, key items and armor.

I really do need this script for the game I'm working on I'll give you full credit in the credits if

you can add this function thanks! :D



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

# Galv's Item/Bank Storage

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

# For: RPGMAKER VX ACE

# Version 1.9

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

# 2016-06-09 - Version 1.9 - Bug with removing an entire stack fixed

# 2015-11-12 - Version 1.8 - Bug with stored item stacks and counting.

# 2012-10-24 - Version 1.7 - Added multiple storages controlled with variable.

# - Changed name to Item/Bank Storage

# - changed alias naming for compatibility

# 2012-10-19 - Version 1.6 - Bug fixes

# 2012-10-19 - Version 1.5 - Fixed a max gold and withdrawing issue.

# - Added deposit all and withdraw all gold buttons.

# - party gold and item limits can now be set or use

# - the limit from a limit breaking script. (in theory)

# 2012-10-18 - Version 1.4 - Other small fixes

# 2012-10-18 - Version 1.3 - Added banking SE

# 2012-10-18 - Version 1.2 - Added gold storage and more script calls

# 2012-10-17 - Version 1.1 - Added script calls to control stored items.

# 2012-10-16 - Version 1.0 - Released

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

# An item storage script. Allows the player to store as many items as he/she

# requires in bank-like storage that can be accessed from anywhere.

#

# This script differs to my "Multiple Storage containers" script in that you

# can have "banks" that store items and gold and can be accessed from anywhere.

# It was designed to be used for one bank, but now has option to have more if

# required.

#

# My "Multiple Storage Containers" script stores only items within certain

# events that can only be accessed by activating the particular event. This was

# designed for location specific containers like chests, barrels, etc.

#

# Here are some script calls that might be useful:

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

#

# open_storage # Opens the item storage scene

#

# store_add(type, id, amount) # creates an item in storage

# store_rem(type, id, amount) # destroys an item in storage

# store_count(type, id) # returns amount of an item in storage

#

# bank_add(amount) # adds amount of gold to bank

# bank_rem(amount) # removes amount of gold from bank

# bank_count # returns amount of gold in bank

#

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

# EXPLAINATION:

# type this can be "weapon", "armor" or "item"

# id the ID of the item/armor/weapon

# amount the number of the item/armor/weapon/gold you want to remove

#

# EXAMPLE OF USE:

# store_add("weapon", 5, 20)

# store_rem("item", 18, 99)

# store_count("armor", 1)

# bank_add(100)

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

# More setup options further down.

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



$imported = {} if $imported.nil?

$imported["Item_Storage"] = true



module Storage



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

# SCRIPT SETUP OPTIONS

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



# BOX VARIABLE

BOX_VAR = 0 # This is the variable ID to use to determine which box you are

# adding/removing items from. Set the variable to a box number

# right before any add/remove or opening storage script calls

# to tell them which box they will affect.

# Set to 0 if you only want 1 box storage in your game. You

# then don't have to change a variable before each script call.





# COMMAND LIST VOCAB

STORE = "Store"

REMOVE = "Take"

CANCEL = "Exit"



# OTHER VOCAB

IN_STORAGE = "Storage"

IN_INVENTORY = "In Bag"



GOLD_INVENTORY = "Party:"

GOLD_BANKED = "Banked:"

BANK_HELP = "Hold DOWN to deposit. Hold UP to withdraw." + "\n" +

"Press R to deposit all. Press L to withdraw all."





# OTHER OPTIONS

SE = ["Open", 90, 100] # Sound effect when storing/removing an item

SE_BANK = ["Shop", 50, 150] # Repeating sound effect when banking gold

# ["SE Name", volume, pitch]



STORE_PRICELESS = true # Items worth 0 can be stored? true or false

STORE_KEY = true # Key items can be stored? true or false





# PARTY LIMITS

# NOTE: These limits set to 0 will use the default limits. In theory this will

# be compatible with a limit breaker script by leaving them at 0. Or you can

# set the party limits below to whatever you like.



MAX_GOLD = 0 # Max gold your PARTY can carry.

# This will overwrite the default limit.

# 0 means do not use this.



MAX_ITEMS = 0 # Max items your PARTY can carry.

# This will overwrite the default limit.

# 0 means do not use this.





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

# SCRIPT SETUP OPTIONS

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



end





class Scene_ItemBank < Scene_MenuBase

def start

super

check_storage_exists

create_help_window

create_command_window

create_dummy_window

create_bank_window

create_number_window

create_status_window

create_category_window

create_take_window

create_give_window



end



def check_storage_exists

if $game_party.multi_storage.nil?

$game_party.create_storage_contents

end

end





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

# Create Windows

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

def create_command_window

@command_window = Window_BankCommand.new(Graphics.width)

@command_window.viewport = @viewport

@command_window.y = @help_window.height

@command_window.set_handler(:give, method(:command_give))

@command_window.set_handler(:take, method(:command_take))

@command_window.set_handler(:cancel, method(:return_scene))

end

def create_dummy_window

wy = @command_window.y + @command_window.height

wh = Graphics.height - wy

@dummy_window = Window_Base.new(0, wy, Graphics.width, wh)

@dummy_window.viewport = @viewport

end

def create_bank_window

@bank_window = Window_Bank.new

@bank_window.viewport = @viewport

@bank_window.x = 0

@bank_window.y = @help_window.height + @command_window.height

@bank_window.hide

@bank_window.set_handler(:ok, method(:on_bank_cancel))

@bank_window.set_handler(:cancel, method(:on_bank_cancel))



end



def create_number_window

wy = @dummy_window.y

wh = @dummy_window.height

@number_window = Window_BankNumber.new(0, wy, wh)

@number_window.viewport = @viewport

@number_window.hide

@number_window.set_handler(:ok, method(:on_number_ok))

@number_window.set_handler(:cancel, method(:on_number_cancel))

end

def create_status_window

wx = @number_window.width

wy = @dummy_window.y

ww = Graphics.width - wx

wh = @dummy_window.height

@status_window = Window_BankItems.new(wx, wy, ww, wh)

@status_window.viewport = @viewport

@status_window.hide

end

def create_category_window

@category_window = Window_ItemCategory.new

@category_window.viewport = @viewport

@category_window.help_window = @help_window

@category_window.y = @dummy_window.y

@category_window.hide.deactivate

@category_window.set_handler(:ok, method(:on_category_ok))

@category_window.set_handler(:cancel, method(:on_category_cancel))

end

def create_give_window

wy = @category_window.y + @category_window.height

wh = Graphics.height - wy

@give_window = Window_BankGive.new(0, wy, Graphics.width, wh)

@give_window.viewport = @viewport

@give_window.help_window = @help_window

@give_window.hide

@give_window.set_handler(:ok, method(:on_give_ok))

@give_window.set_handler(:cancel, method(:on_give_cancel))

@category_window.item_window = @give_window

end

def create_take_window

wy = @command_window.y + @command_window.height

wh = Graphics.height - wy

@take_window = Window_BankTake.new(0, wy, Graphics.width, wh)

@take_window.viewport = @viewport

@take_window.help_window = @help_window

@take_window.hide

@take_window.set_handler(:ok, method(:on_take_ok))

@take_window.set_handler(:cancel, method(:on_take_cancel))

@category_window.item_window = @take_window

end



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

# * Activate Windows

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

def activate_give_window

@category_window.show

@give_window.refresh

@give_window.show.activate

@status_window.hide

end

def activate_take_window

@take_window.select(0)

@take_window.refresh

@take_window.show.activate

@status_window.hide

end

def activate_bank_window

@bank_window.refresh

@bank_window.show.activate

@help_window.set_text(Storage::BANK_HELP)

end





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

# HANDLER METHODS

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

def on_category_ok

activate_give_window

@give_window.select(0)

end

def on_category_cancel

@command_window.activate

@dummy_window.show

@category_window.hide

@give_window.hide

end

def command_give

@dummy_window.hide

@category_window.show.activate

@give_window.show

@give_window.unselect

@give_window.refresh

end

def on_give_ok

@item = @give_window.item

if @item.nil?

RPG::SE.stop

Sound.play_buzzer

@give_window.activate

@give_window.refresh

return

else

@status_window.item = @item

@category_window.hide

@give_window.hide

@number_window.set(@item, max_give)

@number_window.show.activate

@status_window.show

end

end

def on_give_cancel

@give_window.unselect

@category_window.activate

@status_window.item = nil

@help_window.clear

end

def command_take

@dummy_window.hide

activate_take_window

@take_window.show

@take_window.refresh

end

def command_bank

#@dummy_window.hide

activate_bank_window

@bank_window.show

@bank_window.refresh

end

def on_bank_cancel

@command_window.activate

@dummy_window.show

@category_window.hide

@bank_window.hide

@help_window.clear

end

def on_take_ok

@item = @take_window.item

if @item.nil? || $game_party.multi_storage.empty? || $game_party.item_number(@item) == $game_party.max_item_number(@item)

RPG::SE.stop

Sound.play_buzzer

@take_window.activate

@take_window.refresh

return

elsif

@item = @take_window.item

@status_window.item = @item

@take_window.hide

@number_window.set(@item, max_take)

@number_window.show.activate

@status_window.show

end

end

def on_take_cancel

@take_window.unselect

@command_window.activate

@dummy_window.show

@take_window.hide

@status_window.item = nil

@help_window.clear

end

def on_number_ok

RPG::SE.new(Storage::SE[0], Storage::SE[1], Storage::SE[2]).play

case @command_window.current_symbol

when :take

do_take(@number_window.number)

when :give

do_give(@number_window.number)

end

end_number_input

@status_window.refresh

end

def on_number_cancel

Sound.play_cancel

end_number_input

end

def end_number_input

@number_window.hide

case @command_window.current_symbol

when :take

activate_take_window

when :give

activate_give_window

end

end



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

# * Giving and taking methods

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

def max_take

if $game_party.multi_storage(@item) > $game_party.max_item_number(@item) - $game_party.item_number(@item)

$game_party.max_item_number(@item) - $game_party.item_number(@item)

else

$game_party.multi_storage(@item)

end

end

def max_give

$game_party.item_number(@item)

end

def do_give(number)

$game_party.lose_item(@item, number)

if $game_party.multi_storage(@item).nil? || $game_party.multi_storage(@item) <= 0

$game_party.multi_storage_set(@item,number)

else

$game_party.multi_storage_change(@item,number)

end

end

def do_take(number)

return if @item.nil?

$game_party.gain_item(@item, number)

$game_party.multi_storage_change(@item,-number)

#$game_party.multi_storage.delete(@item) if $game_party.multi_storage(@item) <= 0

if $game_party.multi_storage.empty?

@take_window.activate

end

end



end # Scene_ItemBank < Scene_MenuBase





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

# Window Stored Items

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



class Window_StoreList_Bank < Window_Selectable

def initialize(x, y, width, height)

super

@category = :none

@data = []

end

def category=(category)

return if @category == category

@category = category

refresh

self.oy = 0

end

def col_max

return 2

end

def item_max

@data ? @data.size : 1

end

def item

@data && index >= 0 ? @data[index] : nil

end

def current_item_enabled?

enable?(@data[index])

end

def include?(item)

case @category

when :item

item.is_a?(RPG::Item) && !item.key_item?

when :weapon

item.is_a?(RPG::Weapon)

when :armor

item.is_a?(RPG::Armor)

when :key_item

item.is_a?(RPG::Item) && item.key_item?

else

false

end

end

def enable?(item)

$game_party.multi_storage.has_key?(item)

end

def make_item_list

@data = $game_party.multi_storage_all.keys {|item| include?(item) }

@data.push(nil) if include?(nil)

end

def select_last

select(@data.index($game_party.last_item.object) || 0)

end

def draw_item(index)

item = @data[index]

if item

rect = item_rect(index)

rect.width -= 4

draw_item_name(item, rect.x, rect.y, enable?(item))

draw_item_number(rect, item)

end

end

def draw_item_number(rect, item)

draw_text(rect, sprintf(":%2d", $game_party.multi_storage(item)), 2)

end

def update_help

@help_window.set_item(item)

end

def refresh

make_item_list

create_contents

draw_all_items

end

end # Window_StoreList_Bank < Window_Selectable





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

# Window Stored Item amount

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



class Window_BankNumber < Window_Selectable

attr_reader :number

def initialize(x, y, height)

super(x, y, window_width, height)

@item = nil

@max = 1

@number = 1

end

def window_width

return 304

end

def set(item, max)

@item = item

@max = max

@number = 1

refresh

end

def refresh

contents.clear

draw_item_name(@item, 0, item_y)

draw_number

end

def draw_number

change_color(normal_color)

draw_text(cursor_x - 28, item_y, 22, line_height, "×")

draw_text(cursor_x, item_y, cursor_width - 4, line_height, @number, 2)

end

def item_y

contents_height / 2 - line_height * 3 / 2

end

def cursor_width

figures * 10 + 12

end

def cursor_x

contents_width - cursor_width - 4

end

def figures

return 2

end

def update

super

if active

last_number = @number

update_number

if @number != last_number

Sound.play_cursor

refresh

end

end

end

def update_number

change_number(1) if Input.repeat?(:RIGHT)

change_number(-1) if Input.repeat?(:LEFT)

change_number(10) if Input.repeat?(:UP)

change_number(-10) if Input.repeat?(:DOWN)

end

def change_number(amount)

@number = [[@number + amount, @max].min, 1].max

end

def update_cursor

cursor_rect.set(cursor_x, item_y, cursor_width, line_height)

end



end # Window_BankNumber < Window_Selectable





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

# Window Store Item Status

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



class Window_BankItems < Window_Base

def initialize(x, y, width, height)

super(x, y, width, height)

@item = nil

@page_index = 0

refresh

end

def refresh

contents.clear

draw_possession(4, 0)

draw_stored(4, line_height)

draw_equip_info(4, line_height * 2) if @item.is_a?(RPG::EquipItem)

end

def item=(item)

@item = item

refresh

end

def draw_possession(x, y)

rect = Rect.new(x, y, contents.width - 4 - x, line_height)

change_color(system_color)

draw_text(rect, Storage::IN_INVENTORY)

change_color(normal_color)

draw_text(rect, $game_party.item_number(@item), 2)

end

def draw_stored(x, y)

rect = Rect.new(x, y, contents.width - 4 - x, line_height)

change_color(system_color)

draw_text(rect, Storage::IN_STORAGE)

change_color(normal_color)

stored_amount = $game_party.multi_storage(@item)

stored_amount = 0 if stored_amount.nil?

draw_text(rect, stored_amount, 2)

end

def draw_equip_info(x, y)

status_members.each_with_index do |actor, i|

draw_actor_equip_info(x, y + line_height * (i * 2.4), actor)

end

end

def status_members

$game_party.members[@page_index * page_size, page_size]

end

def page_size

return 4

end

def page_max

($game_party.members.size + page_size - 1) / page_size

end

def draw_actor_equip_info(x, y, actor)

enabled = actor.equippable?(@item)

change_color(normal_color, enabled)

draw_text(x, y, 112, line_height, actor.name)

item1 = current_equipped_item(actor, @item.etype_id)

draw_actor_param_change(x, y, actor, item1) if enabled

draw_item_name(item1, x, y + line_height, enabled)

end

def draw_actor_param_change(x, y, actor, item1)

rect = Rect.new(x, y, contents.width - 4 - x, line_height)

change = @item.params[param_id] - (item1 ? item1.params[param_id] : 0)

change_color(param_change_color(change))

draw_text(rect, sprintf("%+d", change), 2)

end

def param_id

@item.is_a?(RPG::Weapon) ? 2 : 3

end

def current_equipped_item(actor, etype_id)

list = []

actor.equip_slots.each_with_index do |slot_etype_id, i|

list.push(actor.equips[i]) if slot_etype_id == etype_id

end

list.min_by {|item| item ? item.params[param_id] : 0 }

end

def update

super

update_page

end

def update_page

if visible && Input.trigger?(:A) && page_max > 1

@page_index = (@page_index + 1) % page_max

refresh

end

end



end # Window_BankItems < Window_Base





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

# Window Give Item

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



class Window_BankGive < Window_ItemList

def initialize(x, y, width, height)

super(x, y, width, height)

end

def current_item_enabled?



enable?(@data[index])

end

def enable?(item)

if item.is_a?(RPG::Item)

return false if item.key_item? && !Storage::STORE_KEY

end

if Storage::STORE_PRICELESS

true

else

item && item.price > 0

end

end

end





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

# Window Take Item

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



class Window_BankTake < Window_StoreList_Bank

def initialize(x, y, width, height)

super(x, y, width, height)

end

def current_item_enabled?

enable?(@data[index])

end

def enable?(item)

$game_party.multi_storage[item] != 0 && $game_party.item_number(item) < $game_party.max_item_number(@item)

end

end





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

# Window Command

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



class Window_BankCommand < Window_HorzCommand

def initialize(window_width)

@window_width = window_width

super(0, 0)

end

def window_width

@window_width

end

def col_max

return 4

end

def make_command_list

add_command(Storage::STORE, :give)

add_command(Storage::REMOVE, :take)

add_command(Storage::CANCEL, :cancel)

end

end





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

# Window Bank

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



class Window_Bank < Window_Selectable

def initialize

super(0, 0, window_width, fitting_height(2))

refresh

@deposit_rate = 1

@withdraw_rate = 1

end

def window_width

return Graphics.width / 2

end

alias galv_bank_update update

def update

galv_bank_update

gold_transfer if self.active

end

def gold_transfer

if Input.repeat?(:DOWN) && $game_party.gold > 0 || Input.repeat?(:UP) && $game_party.gold_stored > 0 && $game_party.gold < $game_party.max_gold

RPG::SE.new(Storage::SE_BANK[0], Storage::SE_BANK[1], Storage::SE_BANK[2]).play

end

if Input.press?(:DOWN)

before = $game_party.gold

$game_party.lose_gold(@deposit_rate)

after = $game_party.gold

$game_party.gold_stored += before - after

@deposit_rate += 1

refresh

end

if Input.trigger?(:R) && !Input.press?(:DOWN) && !Input.press?(:UP)

return if $game_party.gold == 0

before = $game_party.gold

$game_party.lose_gold($game_party.gold)

after = $game_party.gold

$game_party.gold_stored += before - after

refresh

RPG::SE.new(Storage::SE_BANK[0], Storage::SE_BANK[1], Storage::SE_BANK[2]).play

end

if !Input.press?(:DOWN)

@deposit_rate = 1

end

if Input.press?(:UP)

return if $game_party.gold == $game_party.max_gold

@withdraw_rate = $game_party.gold_stored if @withdraw_rate >= $game_party.gold_stored

if @withdraw_rate + $game_party.gold > $game_party.max_gold

@withdraw_rate = $game_party.max_gold - $game_party.gold

end

before = $game_party.gold_stored

$game_party.gold_stored -= @withdraw_rate

after = $game_party.gold_stored

$game_party.gain_gold(before - after)

if $game_party.gold_stored == 0

return refresh

end

@withdraw_rate += 1

refresh

end



if Input.trigger?(:L) && !Input.press?(:DOWN) && !Input.press?(:UP)

take_all_gold = $game_party.gold_stored

return if $game_party.gold == $game_party.max_gold || $game_party.gold_stored == 0

if take_all_gold + $game_party.gold > $game_party.max_gold

take_all_gold = $game_party.max_gold - $game_party.gold

end

before = $game_party.gold_stored

$game_party.gold_stored -= take_all_gold

after = $game_party.gold_stored

$game_party.gain_gold(before - after)

refresh

RPG::SE.new(Storage::SE_BANK[0], Storage::SE_BANK[1], Storage::SE_BANK[2]).play

end

if !Input.press?(:UP)

@withdraw_rate = 1

end

end

def refresh

contents.clear

draw_gold_location(Storage::GOLD_INVENTORY, 0, 0, 250)

draw_currency_value(value, currency_unit, 4, 0, contents.width - 8)

draw_gold_location(Storage::GOLD_BANKED, 0, line_height * 1, 250)

draw_currency_value(value_stored, currency_unit, 4, line_height * 1, contents.width - 8)

end

def draw_gold_location(vocab, x, y, width)

change_color(system_color)

draw_text(x, y, width, line_height, vocab)

end

def value

$game_party.gold

end

def value_stored

$game_party.gold_stored

end

def currency_unit

Vocab::currency_unit

end

def open

refresh

super

end

end





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

# Game Party Additions

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





class Game_Party < Game_Unit

attr_accessor :multi_storage

attr_accessor :gold_stored



alias galv_bank_init_all_items init_all_items

def init_all_items

galv_bank_init_all_items

@storage = {}

@gold_stored = 0

end



def multi_storage(item = nil)

# Test for storage, create if not there.

@storage[$game_variables[Storage::BOX_VAR]] ||= {:w => {},:a => {}, :i => {}}



if !item

return @storage[$game_variables[Storage::BOX_VAR]]

else

type = mstore_type(item)

@storage[$game_variables[Storage::BOX_VAR]][type][item.id] ||= 0

return @storage[$game_variables[Storage::BOX_VAR]][type][item.id]

end

end



def multi_storage_all

all = {}



@storage[$game_variables[Storage::BOX_VAR]][:i].each { |id|

all[$data_items[id[0]]] = id[1] if id[1] > 0

}

@storage[$game_variables[Storage::BOX_VAR]][:w].each { |id|

all[$data_weapons[id[0]]] = id[1] if id[1] > 0

}

@storage[$game_variables[Storage::BOX_VAR]][:a].each { |id|

all[$data_armors[id[0]]] = id[1] if id[1] > 0

}

return all

end



def mstore_type(item)

if item.is_a?(RPG::Weapon)

return :w

elsif item.is_a?(RPG::Armor)

return :a

else

return :i

end

end



def multi_storage_change(item,amount)

type = mstore_type(item)

@storage[$game_variables[Storage::BOX_VAR]][type][item.id] ||= 0

@storage[$game_variables[Storage::BOX_VAR]][type][item.id] += amount



if @storage[$game_variables[Storage::BOX_VAR]][type][item.id] <= 0

@storage[$game_variables[Storage::BOX_VAR]][type].delete_if { |key,value|

value <= 0

}

end



end



def multi_storage_set(item, amount)

type = mstore_type(item)

@storage[$game_variables[Storage::BOX_VAR]][type][item.id] ||= 0

@storage[$game_variables[Storage::BOX_VAR]][type][item.id] = amount



if @storage[$game_variables[Storage::BOX_VAR]][type][item.id] <= 0

@storage[$game_variables[Storage::BOX_VAR]][type].delete_if { |key,value|

key >= 0

}

end

end



def gold_stored

@gold_stored

end



alias galv_bank_max_gold max_gold

def max_gold

return Storage::MAX_GOLD if Storage::MAX_GOLD > 0

galv_bank_max_gold

end



alias galv_bank_max_item_number max_item_number

def max_item_number(item)

return Storage::MAX_ITEMS if Storage::MAX_ITEMS > 0

return 99 if item.nil?

galv_bank_max_item_number(item)

end



end # Game_Party < Game_Unit





class Game_Interpreter

def store_add(type, id, amount)

if $game_party.multi_storage.nil?

$game_party.create_storage_contents

end

case type

when "weapon"

@item = $data_weapons[id]

when "item"

@item = $data_items[id]

when "armor"

@item = $data_armors[id]

end

if $game_party.multi_storage(@item).nil?

$game_party.multi_storage_set(@item,amount)

else

$game_party.multi_storage_change(@item,amount)

end

end

def store_rem(type, id, amount)

if $game_party.multi_storage.nil?

$game_party.create_storage_contents

end

case type

when "weapon"

@item = $data_weapons[id]

when "item"

@item = $data_items[id]

when "armor"

@item = $data_armors[id]

end

return if $game_party.multi_storage(@item).nil?

if $game_party.multi_storage(@item) <= amount

#$game_party.multi_storage.delete(@item)

$game_party.multi_storage_set(@item,-amount)

else

$game_party.multi_storage_change(@item,-amount)

end

end



def store_count(type, id)

if $game_party.multi_storage.nil?

$game_party.create_storage_contents

end

case type

when "weapon"

@item = $data_weapons[id]

when "item"

@item = $data_items[id]

when "armor"

@item = $data_armors[id]

end

# Issue here with item instance being different when game saves - therefore

# the count is incorrect.

# This issue is also persistant when adding things to storage

# needs fixing

p "Store item referring issue"

return 0 if $game_party.multi_storage(@item).nil?

$game_party.multi_storage(@item)

end



def bank_add(amount)

$game_party.gold_stored += amount

end

def bank_rem(amount)

$game_party.gold_stored -= amount

$game_party.gold_stored = 0 if $game_party.gold_stored < 0

end

def bank_count

$game_party.gold_stored

end

def open_storage

SceneManager.call(Scene_ItemBank)

end

end
Pages: first 1234 next last