KUMORICLOUDGAMES'S PROFILE
KumoriCloudGames
322
I like to make stupid eye hurting computer games and audio tunes.
The Cooltube: https://www.youtube.com/channel/UCES_xb8h8qLNlVHfRvCcnMQ
Join Our Discord: https://discord.gg/2J2gbKp6ct
My Smaller Games: https://www.glorioustrainwrecks.com/node/12043
The Cooltube: https://www.youtube.com/channel/UCES_xb8h8qLNlVHfRvCcnMQ
Join Our Discord: https://discord.gg/2J2gbKp6ct
My Smaller Games: https://www.glorioustrainwrecks.com/node/12043
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:
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.
[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
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.
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
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
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