mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-09 22:24:58 +00:00
Added parent pocket functionality to BagPocket, started implementing Bag UI redesign
This commit is contained in:
@@ -6,6 +6,7 @@ module ItemHandlers
|
||||
UseFromBag = ItemHandlerHash.new
|
||||
ConfirmUseInField = ItemHandlerHash.new
|
||||
UseInField = ItemHandlerHash.new
|
||||
UsableOnPokemon = ItemHandlerHash.new
|
||||
UseOnPokemon = ItemHandlerHash.new
|
||||
UseOnPokemonMaximum = ItemHandlerHash.new
|
||||
CanUseInBattle = ItemHandlerHash.new
|
||||
@@ -29,6 +30,10 @@ module ItemHandlers
|
||||
return !UseInField[item].nil?
|
||||
end
|
||||
|
||||
def hasUsableOnPokemon(item)
|
||||
return !UsableOnPokemon[item].nil?
|
||||
end
|
||||
|
||||
def hasUseOnPokemon(item)
|
||||
return !UseOnPokemon[item].nil?
|
||||
end
|
||||
@@ -82,6 +87,12 @@ module ItemHandlers
|
||||
return (UseInField.trigger(item)) ? 1 : 0
|
||||
end
|
||||
|
||||
# Returns whether item will have an effect if used on pkmn.
|
||||
def triggerUsableOnPokemon(item, pkmn)
|
||||
return false if !UsableOnPokemon[item]
|
||||
return UsableOnPokemon.trigger(item, pkmn)
|
||||
end
|
||||
|
||||
# Returns whether item was used.
|
||||
def triggerUseOnPokemon(item, qty, pkmn, scene)
|
||||
return false if !UseOnPokemon[item]
|
||||
@@ -125,7 +136,9 @@ def pbCanRegisterItem?(item)
|
||||
end
|
||||
|
||||
def pbCanUseOnPokemon?(item)
|
||||
return ItemHandlers.hasUseOnPokemon(item) || GameData::Item.get(item).is_machine?
|
||||
return ItemHandlers.hasUseOnPokemon(item) ||
|
||||
ItemHandlers.hasUsableOnPokemon(item) ||
|
||||
GameData::Item.get(item).is_machine?
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
@@ -676,7 +689,7 @@ def pbUseItem(bag, item, bag_scene = nil)
|
||||
end
|
||||
screen.choose_pokemon do |pkmn, party_index|
|
||||
next true if party_index < 0
|
||||
next false if !pbCheckUseOnPokemon(item, pkmn, screen)
|
||||
next false if !pbCheckUseOnPokemon(item, pkmn)
|
||||
qty = 1
|
||||
max_at_once = ItemHandlers.triggerUseOnPokemonMaximum(item, pkmn)
|
||||
max_at_once = [max_at_once, bag.quantity(item)].min
|
||||
@@ -781,10 +794,19 @@ def pbUseItemMessage(item)
|
||||
end
|
||||
end
|
||||
|
||||
def pbCheckUseOnPokemon(item, pkmn, _screen)
|
||||
# Returns whether pkmn is able to have an item used on it.
|
||||
def pbCheckUseOnPokemon(item, pkmn)
|
||||
return pkmn && !pkmn.egg? && (!pkmn.hyper_mode || GameData::Item.get(item)&.is_scent?)
|
||||
end
|
||||
|
||||
# This method assumes the item is usable on a Pokémon. It returns whether the
|
||||
# item will have an effect when used on pkmn.
|
||||
def pbItemHasEffectOnPokemon?(item, pkmn)
|
||||
return false if !pbCheckUseOnPokemon(item, pkmn)
|
||||
ret = ItemHandlers.triggerUsableOnPokemon(item, pkmn)
|
||||
return ret
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
# Give an item to a Pokémon to hold, and take a held item from a Pokémon.
|
||||
#===============================================================================
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -56,7 +56,7 @@ class PokemonBag
|
||||
def quantity(item)
|
||||
item_data = GameData::Item.try_get(item)
|
||||
return 0 if !item_data
|
||||
pocket = item_data.pocket
|
||||
pocket = item_data.bag_pocket
|
||||
return ItemStorageHelper.quantity(@pockets[pocket], item_data.id)
|
||||
end
|
||||
|
||||
@@ -68,7 +68,7 @@ class PokemonBag
|
||||
def can_add?(item, qty = 1)
|
||||
item_data = GameData::Item.try_get(item)
|
||||
return false if !item_data
|
||||
pocket = item_data.pocket
|
||||
pocket = item_data.bag_pocket
|
||||
max_size = max_pocket_size(pocket)
|
||||
max_size = @pockets[pocket].length + 1 if max_size < 0 # Infinite size
|
||||
return ItemStorageHelper.can_add?(
|
||||
@@ -79,7 +79,7 @@ class PokemonBag
|
||||
def add(item, qty = 1)
|
||||
item_data = GameData::Item.try_get(item)
|
||||
return false if !item_data
|
||||
pocket = item_data.pocket
|
||||
pocket = item_data.bag_pocket
|
||||
max_size = max_pocket_size(pocket)
|
||||
max_size = @pockets[pocket].length + 1 if max_size < 0 # Infinite size
|
||||
ret = ItemStorageHelper.add(@pockets[pocket],
|
||||
@@ -101,7 +101,7 @@ class PokemonBag
|
||||
def remove(item, qty = 1)
|
||||
item_data = GameData::Item.try_get(item)
|
||||
return false if !item_data
|
||||
pocket = item_data.pocket
|
||||
pocket = item_data.bag_pocket
|
||||
return ItemStorageHelper.remove(@pockets[pocket], item_data.id, qty)
|
||||
end
|
||||
|
||||
@@ -119,7 +119,7 @@ class PokemonBag
|
||||
old_item_data = GameData::Item.try_get(old_item)
|
||||
new_item_data = GameData::Item.try_get(new_item)
|
||||
return false if !old_item_data || !new_item_data
|
||||
pocket = old_item_data.pocket
|
||||
pocket = old_item_data.bag_pocket
|
||||
old_id = old_item_data.id
|
||||
new_id = new_item_data.id
|
||||
ret = false
|
||||
|
||||
Reference in New Issue
Block a user