move fusion menu fixes

This commit is contained in:
infinitefusion
2022-06-24 16:24:23 -04:00
parent 3606af7cd4
commit fa093a726a
19 changed files with 165 additions and 61 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -236,7 +236,12 @@ class Window_PokemonOption < Window_DrawableCommand
return @options.length + 1 return @options.length + 1
end end
def dont_draw_item(index)
return false
end
def drawItem(index, _count, rect) def drawItem(index, _count, rect)
return if dont_draw_item(index)
rect = drawCursor(index, rect) rect = drawCursor(index, rect)
optionname = (index == @options.length) ? _INTL("Confirm") : @options[index].name optionname = (index == @options.length) ? _INTL("Confirm") : @options[index].name
optionwidth = rect.width * 9 / 20 optionwidth = rect.width * 9 / 20
@@ -334,29 +339,26 @@ class PokemonOption_Scene
end end
end end
def pbStartScene(inloadscreen = false) def initUIElements
@sprites = {}
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z = 99999
@sprites["title"] = Window_UnformattedTextPokemon.newWithSize( @sprites["title"] = Window_UnformattedTextPokemon.newWithSize(
_INTL("Options"), 0, 0, Graphics.width, 64, @viewport) _INTL("Options"), 0, 0, Graphics.width, 64, @viewport)
@sprites["textbox"] = pbCreateMessageWindow @sprites["textbox"] = pbCreateMessageWindow
@sprites["textbox"].text = _INTL("Speech frame {1}.", 1 + $PokemonSystem.textskin) @sprites["textbox"].text = _INTL("Speech frame {1}.", 1 + $PokemonSystem.textskin)
@sprites["textbox"].letterbyletter = false @sprites["textbox"].letterbyletter = false
pbSetSystemFont(@sprites["textbox"].contents) pbSetSystemFont(@sprites["textbox"].contents)
end
def pbStartScene(inloadscreen = false)
@sprites = {}
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z = 99999
initUIElements
# These are the different options in the game. To add an option, define a # These are the different options in the game. To add an option, define a
# setter and a getter for that option. To delete an option, comment it out # setter and a getter for that option. To delete an option, comment it out
# or delete it. The game's options may be placed in any order. # or delete it. The game's options may be placed in any order.
@PokemonOptions = pbGetOptions(inloadscreen) @PokemonOptions = pbGetOptions(inloadscreen)
@PokemonOptions = pbAddOnOptions(@PokemonOptions) @PokemonOptions = pbAddOnOptions(@PokemonOptions)
@sprites["option"] = Window_PokemonOption.new(@PokemonOptions, 0, @sprites["option"] = initOptionsWindow
@sprites["title"].height, Graphics.width,
Graphics.height - @sprites["title"].height - @sprites["textbox"].height)
@sprites["option"].viewport = @viewport
@sprites["option"].visible = true
# Get the values of each option # Get the values of each option
for i in 0...@PokemonOptions.length for i in 0...@PokemonOptions.length
@sprites["option"].setValueNoRefresh(i, (@PokemonOptions[i].get || 0)) @sprites["option"].setValueNoRefresh(i, (@PokemonOptions[i].get || 0))
@@ -366,6 +368,15 @@ class PokemonOption_Scene
pbFadeInAndShow(@sprites) { pbUpdate } pbFadeInAndShow(@sprites) { pbUpdate }
end end
def initOptionsWindow
optionsWindow = Window_PokemonOption.new(@PokemonOptions, 0,
@sprites["title"].height, Graphics.width,
Graphics.height - @sprites["title"].height - @sprites["textbox"].height)
optionsWindow.viewport = @viewport
optionsWindow.visible = true
return optionsWindow
end
def updateDescription(index) def updateDescription(index)
index=0 if !index index=0 if !index
@@ -532,6 +543,8 @@ class PokemonOption_Scene
return options return options
end end
def pbOptions def pbOptions
oldSystemSkin = $PokemonSystem.frame # Menu oldSystemSkin = $PokemonSystem.frame # Menu
oldTextSkin = $PokemonSystem.textskin # Speech oldTextSkin = $PokemonSystem.textskin # Speech
@@ -559,12 +572,16 @@ class PokemonOption_Scene
if Input.trigger?(Input::BACK) if Input.trigger?(Input::BACK)
break break
elsif Input.trigger?(Input::USE) elsif Input.trigger?(Input::USE)
break if @sprites["option"].index == @PokemonOptions.length break if isConfirmedOnKeyPress
end end
end end
} }
end end
def isConfirmedOnKeyPress
return @sprites["option"].index == @PokemonOptions.length
end
def pbEndScene def pbEndScene
pbPlayCloseMenuSE pbPlayCloseMenuSE
pbFadeOutAndHide(@sprites) { pbUpdate } pbFadeOutAndHide(@sprites) { pbUpdate }
@@ -589,7 +606,7 @@ class PokemonOptionScreen
def pbStartScreen(inloadscreen = false) def pbStartScreen(inloadscreen = false)
@scene.pbStartScene(inloadscreen) @scene.pbStartScene(inloadscreen)
@scene.pbOptions @scene.pbOptions
@scene.pbEndScene @scene.pbEndScene
end end
end end

View File

@@ -1,16 +1,39 @@
class FusionMovesOptionsScene < PokemonOption_Scene class FusionMovesOptionsScene < PokemonOption_Scene
attr_accessor :move1
attr_accessor :move2
attr_accessor :move3
attr_accessor :move4
def initialize(poke1, poke2) def initialize(poke1, poke2)
@poke1 = poke1 @poke1 = poke1
@poke2 = poke2 @poke2 = poke2
@move1 = nil @move1 = @poke1.moves[0]
@move2 = nil @move2 = @poke1.moves[1]
@move3 = nil @move3 = @poke1.moves[2]
@move4 = nil @move4 = @poke1.moves[3]
@index1=0
@index2=0
@index3=0
@index4=0
@selBaseColor = Color.new(48,96,216)
@selShadowColor = Color.new(32,32,32)
end end
def initUIElements
@sprites["title"] = Window_UnformattedTextPokemon.newWithSize(
_INTL(""), 0, 0, Graphics.width, 64, @viewport)
@sprites["textbox"] = pbCreateMessageWindow
@sprites["textbox"].letterbyletter = false
pbSetSystemFont(@sprites["textbox"].contents)
end
def pbStartScene(inloadscreen = false) def pbStartScene(inloadscreen = false)
super super
@typebitmap = AnimatedBitmap.new(_INTL("Graphics/Pictures/types")) @typebitmap = AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
@@ -26,14 +49,20 @@ class FusionMovesOptionsScene < PokemonOption_Scene
end end
@sprites["title"] = Window_UnformattedTextPokemon.newWithSize( @sprites["title"] = Window_UnformattedTextPokemon.newWithSize(
_INTL("Select moves"), 0, 0, Graphics.width, 64, @viewport) _INTL("Select moves"), 0, 0, Graphics.width, 64, @viewport)
@sprites["textbox"].text = _INTL("Select moves") @sprites["title"].setSkin("Graphics/Windowskins/invisible")
@sprites["option"].setSkin("Graphics/Windowskins/invisible")
@sprites["textbox"].setSkin("Graphics/Windowskins/invisible")
# @sprites["textbox"].text = _INTL("Select moves")
updateDescription(0)
pbFadeInAndShow(@sprites) { pbUpdate } pbFadeInAndShow(@sprites) { pbUpdate }
end end
def draw_empty_move_info
# code here
end
def draw_move_info(pokemonMove) def draw_move_info(pokemonMove)
move = GameData::Move.get(pokemonMove.id) move = GameData::Move.get(pokemonMove.id)
move_base_color = Color.new(50, 40, 230) move_base_color = Color.new(50, 40, 230)
move_base_shadow = Color.new(14, 14, 114) move_base_shadow = Color.new(14, 14, 114)
@@ -47,6 +76,12 @@ class FusionMovesOptionsScene < PokemonOption_Scene
damage = move.base_damage == 0 ? "-" : move.base_damage.to_s damage = move.base_damage == 0 ? "-" : move.base_damage.to_s
accuracy = move.accuracy == 0 ? "100" : move.accuracy.to_s accuracy = move.accuracy == 0 ? "100" : move.accuracy.to_s
pp = move.total_pp.to_s
if !move
damage="-"
accuracy="-"
pp="-"
end
textpos = [ textpos = [
[_INTL("Type"), 20, 84, 0, label_base_color, label_shadow_color], [_INTL("Type"), 20, 84, 0, label_base_color, label_shadow_color],
@@ -59,7 +94,7 @@ class FusionMovesOptionsScene < PokemonOption_Scene
[_INTL("{1}%", accuracy), 140, 180, 0, value_base_color, value_shadow_color], [_INTL("{1}%", accuracy), 140, 180, 0, value_base_color, value_shadow_color],
[_INTL("PP"), 20, 212, 0, label_base_color, label_shadow_color], #move.total_pp [_INTL("PP"), 20, 212, 0, label_base_color, label_shadow_color], #move.total_pp
[_INTL("{1}", move.total_pp.to_s), 140, 212, 0, value_base_color, value_shadow_color] #move.total_pp [_INTL("{1}", pp), 140, 212, 0, value_base_color, value_shadow_color] #move.total_pp
] ]
imagepos = [] imagepos = []
@@ -69,7 +104,9 @@ class FusionMovesOptionsScene < PokemonOption_Scene
category = move.category category = move.category
imagepos.push(["Graphics/Pictures/types", 120, 94, 0, type_number * 28, 64, 28]) #248 imagepos.push(["Graphics/Pictures/types", 120, 94, 0, type_number * 28, 64, 28]) #248
imagepos.push(["Graphics/Pictures/category", 120, 124, 0, category * 28, 64, 28]) imagepos.push(["Graphics/Pictures/category", 120, 124, 0, category * 28, 64, 28])
if !move
imagepos=[]
end
@sprites["overlay"].bitmap.clear @sprites["overlay"].bitmap.clear
pbDrawTextPositions(@sprites["overlay"].bitmap, textpos) pbDrawTextPositions(@sprites["overlay"].bitmap, textpos)
pbDrawImagePositions(@sprites["overlay"].bitmap, imagepos) pbDrawImagePositions(@sprites["overlay"].bitmap, imagepos)
@@ -101,6 +138,10 @@ class FusionMovesOptionsScene < PokemonOption_Scene
end end
end end
def getDefaultDescription
return _INTL("No move selected")
end
def getMoveForIndex(index) def getMoveForIndex(index)
case index case index
when 0 when 0
@@ -121,13 +162,13 @@ class FusionMovesOptionsScene < PokemonOption_Scene
end end
def getMoveName(move) def getMoveName(move)
return "" if !@sprites["option"] && !move return " - " if !@sprites["option"] && !move
move = @poke1.moves[@sprites["option"].index] if !move move = @poke1.moves[@sprites["option"].index] if !move
return GameData::Move.get(move.id).real_name return GameData::Move.get(move.id).real_name
end end
def getMoveDescription(move) def getMoveDescription(move)
return "" if !@sprites["option"] && !move return " - " if !@sprites["option"] && !move
move = @poke1.moves[@sprites["option"].index] if !move move = @poke1.moves[@sprites["option"].index] if !move
return GameData::Move.get(move.id).real_description return GameData::Move.get(move.id).real_description
end end
@@ -137,28 +178,63 @@ class FusionMovesOptionsScene < PokemonOption_Scene
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[0])), _INTL(getMoveName(@poke2.moves[0]))], EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[0])), _INTL(getMoveName(@poke2.moves[0]))],
proc { 0 }, proc { 0 },
proc { |value| proc { |value|
@move1 = value == 1 ? @poke1.moves[0] : @poke2.moves[0] @move1 = value == 0 ? @poke1.moves[0] : @poke2.moves[0]
}, [getMoveDescription(@poke1.moves[0]), getMoveDescription(@poke2.moves[0])] }, [getMoveDescription(@poke1.moves[0]), getMoveDescription(@poke2.moves[0])]
), ),
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[1])), _INTL(getMoveName(@poke2.moves[1]))], EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[1])), _INTL(getMoveName(@poke2.moves[1]))],
proc { 0 }, proc { 0 },
proc { |value| proc { |value|
@move2 = value == 1 ? @poke1.moves[1] : @poke2.moves[1] @move2 = value == 0 ? @poke1.moves[1] : @poke2.moves[1]
}, [getMoveDescription(@poke1.moves[1]), getMoveDescription(@poke2.moves[1])] }, [getMoveDescription(@poke1.moves[1]), getMoveDescription(@poke2.moves[1])]
), ),
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[2])), _INTL(getMoveName(@poke2.moves[2]))], EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[2])), _INTL(getMoveName(@poke2.moves[2]))],
proc { 0 }, proc { 0 },
proc { |value| proc { |value|
@move3 = value == 1 ? @poke1.moves[2] : @poke2.moves[2] @move3 = value == 0 ? @poke1.moves[2] : @poke2.moves[2]
}, [getMoveDescription(@poke1.moves[2]), getMoveDescription(@poke2.moves[2])] }, [getMoveDescription(@poke1.moves[2]), getMoveDescription(@poke2.moves[2])]
), ),
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[3])), _INTL(getMoveName(@poke2.moves[3]))], EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[3])), _INTL(getMoveName(@poke2.moves[3]))],
proc { 0 }, proc { 0 },
proc { |value| proc { |value|
@move4 = value == 1 ? @poke1.moves[3] : @poke2.moves[3] @move4 = value == 0 ? @poke1.moves[3] : @poke2.moves[3]
}, [getMoveDescription(@poke1.moves[3]), getMoveDescription(@poke2.moves[3])] }, [getMoveDescription(@poke1.moves[3]), getMoveDescription(@poke2.moves[3])]
) )
] ]
return options return options
end end
def isConfirmedOnKeyPress
return true
end
def initOptionsWindow
optionsWindow = Window_PokemonOptionFusionMoves.new(@PokemonOptions, 0,
@sprites["title"].height, Graphics.width,
Graphics.height - @sprites["title"].height - @sprites["textbox"].height)
optionsWindow.viewport = @viewport
optionsWindow.visible = true
return optionsWindow
end
end end
class Window_PokemonOptionFusionMoves < Window_PokemonOption
def initialize(options, x, y, width, height)
super
@mustUpdateOptions=true
@mustUpdateDescription=true
@confirmed=false
end
def drawCursor(index,rect)
if self.index==index
pbCopyBitmap(self.contents, @selarrow.bitmap,rect.x+175,rect.y)
end
return Rect.new(rect.x+16,rect.y,rect.width-16,rect.height)
end
def dont_draw_item(index)
return index == @options.length
end
end

View File

@@ -531,36 +531,33 @@ class PokemonFusionScene
poke1_number = GameData::Species.get(@pokemon1.species).id_number poke1_number = GameData::Species.get(@pokemon1.species).id_number
poke2_number = GameData::Species.get(@pokemon2.species).id_number poke2_number = GameData::Species.get(@pokemon2.species).id_number
rsprite1 = PokemonSprite.new(@viewport) @sprites["rsprite1"] = PokemonSprite.new(@viewport)
rsprite2 = PokemonSprite.new(@viewport) @sprites["rsprite2"] = PokemonSprite.new(@viewport)
rsprite3 = PokemonSprite.new(@viewport) @sprites["rsprite3"] = PokemonSprite.new(@viewport)
rsprite1.setPokemonBitmapFromId(poke1_number, false) @sprites["rsprite1"].setPokemonBitmapFromId(poke1_number, false)
rsprite3.setPokemonBitmapFromId(poke2_number, false) @sprites["rsprite3"].setPokemonBitmapFromId(poke2_number, false)
rsprite2.setPokemonBitmapFromId(@newspecies, false) @sprites["rsprite2"].setPokemonBitmapFromId(@newspecies, false)
rsprite1.ox = rsprite1.bitmap.width / 2 @sprites["rsprite1"].ox = @sprites["rsprite1"].bitmap.width / 2
rsprite1.oy = rsprite1.bitmap.height / 2 @sprites["rsprite1"].oy = @sprites["rsprite1"].bitmap.height / 2
rsprite3.ox = rsprite3.bitmap.width / 2 @sprites["rsprite3"].ox = @sprites["rsprite3"].bitmap.width / 2
rsprite3.oy = rsprite3.bitmap.height / 2 @sprites["rsprite3"].oy = @sprites["rsprite3"].bitmap.height / 2
rsprite2.ox = rsprite2.bitmap.width / 2 @sprites["rsprite2"].ox = @sprites["rsprite2"].bitmap.width / 2
rsprite2.oy = rsprite2.bitmap.height / 2 @sprites["rsprite2"].oy = @sprites["rsprite2"].bitmap.height / 2
rsprite2.x = Graphics.width / 2 @sprites["rsprite2"].x = Graphics.width / 2
rsprite1.y = (Graphics.height - 96) / 2 @sprites["rsprite1"].y = (Graphics.height - 96) / 2
rsprite3.y = (Graphics.height - 96) / 2 @sprites["rsprite3"].y = (Graphics.height - 96) / 2
rsprite1.x = (Graphics.width / 2) - 100 @sprites["rsprite1"].x = (Graphics.width / 2) - 100
rsprite3.x = (Graphics.width / 2) + 100 @sprites["rsprite3"].x = (Graphics.width / 2) + 100
rsprite2.y = (Graphics.height - 96) / 2 @sprites["rsprite2"].y = (Graphics.height - 96) / 2
rsprite2.opacity = 0 @sprites["rsprite2"].opacity = 0
@sprites["rsprite1"] = rsprite1
@sprites["rsprite2"] = rsprite2
@sprites["rsprite3"] = rsprite3
@sprites["rsprite1"].zoom_x = Settings::FRONTSPRITE_SCALE @sprites["rsprite1"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["rsprite1"].zoom_y = Settings::FRONTSPRITE_SCALE @sprites["rsprite1"].zoom_y = Settings::FRONTSPRITE_SCALE
@@ -571,7 +568,7 @@ class PokemonFusionScene
@sprites["rsprite3"].zoom_x = Settings::FRONTSPRITE_SCALE @sprites["rsprite3"].zoom_x = Settings::FRONTSPRITE_SCALE
@sprites["rsprite3"].zoom_y = Settings::FRONTSPRITE_SCALE @sprites["rsprite3"].zoom_y = Settings::FRONTSPRITE_SCALE
pbGenerateMetafiles(rsprite1.ox, rsprite1.oy, rsprite2.ox, rsprite2.oy, rsprite3.ox, rsprite3.oy, rsprite1.x, rsprite3.x) pbGenerateMetafiles(@sprites["rsprite1"].ox, @sprites["rsprite1"].oy, @sprites["rsprite2"].ox, @sprites["rsprite2"].oy, @sprites["rsprite3"].ox, @sprites["rsprite3"].oy, @sprites["rsprite1"].x, @sprites["rsprite3"].x)
@sprites["msgwindow"] = Kernel.pbCreateMessageWindow(@viewport) @sprites["msgwindow"] = Kernel.pbCreateMessageWindow(@viewport)
pbFadeInAndShow(@sprites) pbFadeInAndShow(@sprites)
@@ -626,9 +623,9 @@ class PokemonFusionScene
# Closes the evolution screen. # Closes the evolution screen.
def pbEndScreen def pbEndScreen
Kernel.pbDisposeMessageWindow(@sprites["msgwindow"]) Kernel.pbDisposeMessageWindow(@sprites["msgwindow"]) if @sprites["msgwindow"]
pbFadeOutAndHide(@sprites) pbFadeOutAndHide(@sprites)
pbDisposeSpriteHash(@sprites) pbDisposeSpriteHash(@sprites) if @sprites
@viewport.dispose @viewport.dispose
end end
@@ -746,13 +743,23 @@ class PokemonFusionScene
end end
end end
def setFusionMoves(fusedPoke, poke2) def clearUIForMoves
pbFadeOutIn { addBackgroundOrColoredPlane(@sprites, "background", "DNAbg",
scene = FusionMovesOptionsScene.new(fusedPoke,poke2) Color.new(248, 248, 248), @viewport)
screen = PokemonOptionScreen.new(scene) pbDisposeSpriteHash(@sprites)
screen.pbStartScreen
}
end
def setFusionMoves(fusedPoke, poke2)
clearUIForMoves
moves=fusedPoke.moves
scene = FusionMovesOptionsScene.new(fusedPoke,poke2)
screen = PokemonOptionScreen.new(scene)
screen.pbStartScreen
moves =[scene.move1,scene.move2,scene.move3,scene.move3]
fusedPoke.moves=moves
# choice = Kernel.pbMessage("What to do with the moveset?", [_INTL("Learn moves"), _INTL("Keep {1}'s moveset", fusedPoke.name), _INTL("Keep {1}'s moveset", poke2.name)], 0) # choice = Kernel.pbMessage("What to do with the moveset?", [_INTL("Learn moves"), _INTL("Keep {1}'s moveset", fusedPoke.name), _INTL("Keep {1}'s moveset", poke2.name)], 0)
# if choice == 1 # if choice == 1
# return # return

View File

@@ -79,6 +79,8 @@ SWITCH_FIRST_RIVAL_BATTLE=46
# VARIABLES # # VARIABLES #
############# #############
VAR_SINGLE_POKEMON_MODE=251 VAR_SINGLE_POKEMON_MODE=251
SINGLE_POKEMON_MODE_VAR=251 #c'est appellé comme ca en qqpart dans un event pis ca me tente pas de chercher ou
VAR_WILD_FUSION_RATE=210 VAR_WILD_FUSION_RATE=210
VAR_ODDKEYSTONE_NB=252 VAR_ODDKEYSTONE_NB=252
VAR_DEFAULT_BATTLE_TYPE = 242 VAR_DEFAULT_BATTLE_TYPE = 242
@@ -102,4 +104,6 @@ VAR_CURRENT_GYM_TYPE=152
DIRECTION_LEFT = 4 DIRECTION_LEFT = 4
DIRECTION_RIGHT = 6 DIRECTION_RIGHT = 6
DIRECTION_DOWN = 2 DIRECTION_DOWN = 2
DIRECTION_UP = 8 DIRECTION_UP = 8

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.