mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-07 13:15:01 +00:00
Rewrote Bag screen
This commit is contained in:
@@ -58,8 +58,8 @@ module ItemHandlers
|
||||
# 0 - Item not used
|
||||
# 1 - Item used, don't end screen
|
||||
# 2 - Item used, end screen
|
||||
def triggerUseFromBag(item)
|
||||
return UseFromBag.trigger(item) if UseFromBag[item]
|
||||
def triggerUseFromBag(item, bag_screen = nil)
|
||||
return UseFromBag.trigger(item, bag_screen) if UseFromBag[item]
|
||||
# No UseFromBag handler exists; check the UseInField handler if present
|
||||
if UseInField[item]
|
||||
return (UseInField.trigger(item)) ? 1 : 0
|
||||
@@ -618,8 +618,11 @@ def pbLearnMove(pkmn, move, ignore_if_known = false, by_machine = false, screen
|
||||
if by_machine && Settings::TAUGHT_MACHINES_KEEP_OLD_PP
|
||||
pkmn.moves[move_index].pp = [old_move_pp, pkmn.moves[move_index].total_pp].min
|
||||
end
|
||||
# TODO: The last \\wt[16] is skipped in instant text speed. Or rather,
|
||||
# the text after it is shown at the same time as the text before
|
||||
# it, but the SE waits for that duration and then plays.
|
||||
pbMessage(_INTL("1, 2, and...\\wt[16] ...\\wt[16] ...\\wt[16] Ta-da!") + "\\se[Battle ball drop]\1", &block)
|
||||
pbMessage(_INTL("{1} forgot how to use {2}.\nAnd..." + "\1", pkmn_name, old_move_name), &block)
|
||||
pbMessage(_INTL("{1} forgot how to use {2}.\nAnd...", pkmn_name, old_move_name) + "\1", &block)
|
||||
pbMessage("\\se[]" + _INTL("{1} learned {2}!", pkmn_name, move_name) + "\\se[Pkmn move learnt]", &block)
|
||||
pkmn.changeHappiness("machine") if by_machine
|
||||
return true
|
||||
@@ -646,6 +649,8 @@ end
|
||||
#===============================================================================
|
||||
# Use an item from the Bag and/or on a Pokémon.
|
||||
#===============================================================================
|
||||
# Called from the Bag screen and also when prompted to use a Repel when one runs
|
||||
# out (bag_scene will be nil for the latter).
|
||||
# @return [Integer] 0 = item wasn't used; 1 = item used; 2 = close Bag to use in field
|
||||
def pbUseItem(bag, item, bag_scene = nil)
|
||||
itm = GameData::Item.get(item)
|
||||
@@ -697,7 +702,7 @@ def pbUseItem(bag, item, bag_scene = nil)
|
||||
end
|
||||
return (ret) ? 1 : 0
|
||||
elsif useType == 2 || itm.is_machine? # Item is usable from Bag or teaches a move
|
||||
intret = ItemHandlers.triggerUseFromBag(item)
|
||||
intret = ItemHandlers.triggerUseFromBag(item, bag_scene)
|
||||
if intret >= 0
|
||||
bag.remove(item) if intret == 1 && itm.consumed_after_use?
|
||||
return intret
|
||||
@@ -796,7 +801,7 @@ def pbGiveItemToPokemon(item, pkmn, scene, pkmnid = 0)
|
||||
end
|
||||
if pkmn.hasItem?
|
||||
olditemname = pkmn.item.portion_name
|
||||
if newitemname.starts_with_vowel?
|
||||
if olditemname.starts_with_vowel?
|
||||
scene.pbDisplay(_INTL("{1} is already holding an {2}.", pkmn.name, olditemname) + "\1")
|
||||
else
|
||||
scene.pbDisplay(_INTL("{1} is already holding a {2}.", pkmn.name, olditemname) + "\1")
|
||||
@@ -869,9 +874,8 @@ end
|
||||
def pbChooseItem(var = 0, *args)
|
||||
ret = nil
|
||||
pbFadeOutIn do
|
||||
scene = PokemonBag_Scene.new
|
||||
screen = PokemonBagScreen.new(scene, $bag)
|
||||
ret = screen.pbChooseItemScreen
|
||||
bag_screen = UI::Bag.new($bag, mode: :choose_item)
|
||||
ret = bag_screen.choose_item
|
||||
end
|
||||
$game_variables[var] = ret || :NONE if var > 0
|
||||
return ret
|
||||
@@ -880,9 +884,9 @@ end
|
||||
def pbChooseApricorn(var = 0)
|
||||
ret = nil
|
||||
pbFadeOutIn do
|
||||
scene = PokemonBag_Scene.new
|
||||
screen = PokemonBagScreen.new(scene, $bag)
|
||||
ret = screen.pbChooseItemScreen(proc { |item| GameData::Item.get(item).is_apricorn? })
|
||||
bag_screen = UI::Bag.new($bag, mode: :choose_item)
|
||||
bag_screen.set_filter_proc(proc { |item| GameData::Item.get(item).is_apricorn? })
|
||||
ret = bag_screen.choose_item
|
||||
end
|
||||
$game_variables[var] = ret || :NONE if var > 0
|
||||
return ret
|
||||
@@ -891,9 +895,9 @@ end
|
||||
def pbChooseFossil(var = 0)
|
||||
ret = nil
|
||||
pbFadeOutIn do
|
||||
scene = PokemonBag_Scene.new
|
||||
screen = PokemonBagScreen.new(scene, $bag)
|
||||
ret = screen.pbChooseItemScreen(proc { |item| GameData::Item.get(item).is_fossil? })
|
||||
bag_screen = UI::Bag.new($bag, mode: :choose_item)
|
||||
bag_screen.set_filter_proc(proc { |item| GameData::Item.get(item).is_fossil? })
|
||||
ret = bag_screen.choose_item
|
||||
end
|
||||
$game_variables[var] = ret || :NONE if var > 0
|
||||
return ret
|
||||
|
||||
@@ -25,11 +25,11 @@ ItemHandlers::UseText.add(:EXPALL, proc { |item|
|
||||
# a Pokémon), calls the UseInField handler for it instead.
|
||||
#===============================================================================
|
||||
|
||||
ItemHandlers::UseFromBag.add(:HONEY, proc { |item|
|
||||
ItemHandlers::UseFromBag.add(:HONEY, proc { |item, bag_screen|
|
||||
next 2
|
||||
})
|
||||
|
||||
ItemHandlers::UseFromBag.add(:ESCAPEROPE, proc { |item|
|
||||
ItemHandlers::UseFromBag.add(:ESCAPEROPE, proc { |item, bag_screen|
|
||||
if !$game_player.can_map_transfer_with_follower?
|
||||
pbMessage(_INTL("It can't be used when you have someone with you."))
|
||||
next 0
|
||||
@@ -41,13 +41,13 @@ ItemHandlers::UseFromBag.add(:ESCAPEROPE, proc { |item|
|
||||
next 0
|
||||
})
|
||||
|
||||
ItemHandlers::UseFromBag.add(:BICYCLE, proc { |item|
|
||||
ItemHandlers::UseFromBag.add(:BICYCLE, proc { |item, bag_screen|
|
||||
next (pbBikeCheck) ? 2 : 0
|
||||
})
|
||||
|
||||
ItemHandlers::UseFromBag.copy(:BICYCLE, :MACHBIKE, :ACROBIKE)
|
||||
|
||||
ItemHandlers::UseFromBag.add(:OLDROD, proc { |item|
|
||||
ItemHandlers::UseFromBag.add(:OLDROD, proc { |item, bag_screen|
|
||||
notCliff = $game_map.passable?($game_player.x, $game_player.y, $game_player.direction, $game_player)
|
||||
next 2 if $game_player.pbFacingTerrainTag.can_fish && ($PokemonGlobal.surfing || notCliff)
|
||||
pbMessage(_INTL("Can't use that here."))
|
||||
@@ -56,26 +56,28 @@ ItemHandlers::UseFromBag.add(:OLDROD, proc { |item|
|
||||
|
||||
ItemHandlers::UseFromBag.copy(:OLDROD, :GOODROD, :SUPERROD)
|
||||
|
||||
ItemHandlers::UseFromBag.add(:ITEMFINDER, proc { |item|
|
||||
ItemHandlers::UseFromBag.add(:ITEMFINDER, proc { |item, bag_screen|
|
||||
next 2
|
||||
})
|
||||
|
||||
ItemHandlers::UseFromBag.copy(:ITEMFINDER, :DOWSINGMCHN, :DOWSINGMACHINE)
|
||||
|
||||
ItemHandlers::UseFromBag.add(:TOWNMAP, proc { |item|
|
||||
pbFadeOutIn do
|
||||
ItemHandlers::UseFromBag.add(:TOWNMAP, proc { |item, bag_screen|
|
||||
pbFadeOutInWithUpdate(bag_screen&.sprites) do
|
||||
scene = PokemonRegionMap_Scene.new(-1, false)
|
||||
screen = PokemonRegionMapScreen.new(scene)
|
||||
ret = screen.pbStartScreen
|
||||
$game_temp.fly_destination = ret if ret
|
||||
next 99999 if ret # Ugly hack to make Bag scene not reappear if flying
|
||||
if ret
|
||||
$game_temp.fly_destination = ret
|
||||
bag_screen&.silent_end_screen
|
||||
end
|
||||
end
|
||||
next ($game_temp.fly_destination) ? 2 : 0
|
||||
})
|
||||
|
||||
ItemHandlers::UseFromBag.addIf(:move_machines,
|
||||
proc { |item| GameData::Item.get(item).is_machine? },
|
||||
proc { |item|
|
||||
proc { |item, bag_screen|
|
||||
if $player.pokemon_count == 0
|
||||
pbMessage(_INTL("There is no Pokémon."))
|
||||
next 0
|
||||
@@ -159,10 +161,13 @@ EventHandlers.add(:on_player_step_taken, :repel_counter,
|
||||
next if !pbConfirmMessage(_INTL("The repellent's effect wore off! Would you like to use another one?"))
|
||||
ret = nil
|
||||
pbFadeOutIn do
|
||||
scene = PokemonBag_Scene.new
|
||||
screen = PokemonBagScreen.new(scene, $bag)
|
||||
ret = screen.pbChooseItemScreen(proc { |item| repels.include?(item) })
|
||||
bag_screen = UI::Bag.new($bag, mode: :choose_item)
|
||||
bag_screen.set_filter_proc(proc { |item| repels.include?(item) })
|
||||
ret = bag_screen.choose_item
|
||||
end
|
||||
# TODO: Would be nice if this didn't call pbUseItem, so that pbUseItem would
|
||||
# be exclusively called from the Bag screen and could rely on that
|
||||
# screen existing.
|
||||
pbUseItem($bag, ret) if ret
|
||||
}
|
||||
)
|
||||
|
||||
@@ -264,6 +264,6 @@ ItemHandlers::UseInField.add(:POKERADAR, proc { |item|
|
||||
next pbUsePokeRadar
|
||||
})
|
||||
|
||||
ItemHandlers::UseFromBag.add(:POKERADAR, proc { |item|
|
||||
ItemHandlers::UseFromBag.add(:POKERADAR, proc { |item, bag_screen|
|
||||
next (pbCanUsePokeRadar?) ? 2 : 0
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user