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
end
def dont_draw_item(index)
return false
end
def drawItem(index, _count, rect)
return if dont_draw_item(index)
rect = drawCursor(index, rect)
optionname = (index == @options.length) ? _INTL("Confirm") : @options[index].name
optionwidth = rect.width * 9 / 20
@@ -334,29 +339,26 @@ class PokemonOption_Scene
end
end
def pbStartScene(inloadscreen = false)
@sprites = {}
@viewport = Viewport.new(0, 0, Graphics.width, Graphics.height)
@viewport.z = 99999
def initUIElements
@sprites["title"] = Window_UnformattedTextPokemon.newWithSize(
_INTL("Options"), 0, 0, Graphics.width, 64, @viewport)
@sprites["textbox"] = pbCreateMessageWindow
@sprites["textbox"].text = _INTL("Speech frame {1}.", 1 + $PokemonSystem.textskin)
@sprites["textbox"].letterbyletter = false
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
# 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.
@PokemonOptions = pbGetOptions(inloadscreen)
@PokemonOptions = pbAddOnOptions(@PokemonOptions)
@sprites["option"] = Window_PokemonOption.new(@PokemonOptions, 0,
@sprites["title"].height, Graphics.width,
Graphics.height - @sprites["title"].height - @sprites["textbox"].height)
@sprites["option"].viewport = @viewport
@sprites["option"].visible = true
@sprites["option"] = initOptionsWindow
# Get the values of each option
for i in 0...@PokemonOptions.length
@sprites["option"].setValueNoRefresh(i, (@PokemonOptions[i].get || 0))
@@ -366,6 +368,15 @@ class PokemonOption_Scene
pbFadeInAndShow(@sprites) { pbUpdate }
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)
index=0 if !index
@@ -532,6 +543,8 @@ class PokemonOption_Scene
return options
end
def pbOptions
oldSystemSkin = $PokemonSystem.frame # Menu
oldTextSkin = $PokemonSystem.textskin # Speech
@@ -559,12 +572,16 @@ class PokemonOption_Scene
if Input.trigger?(Input::BACK)
break
elsif Input.trigger?(Input::USE)
break if @sprites["option"].index == @PokemonOptions.length
break if isConfirmedOnKeyPress
end
end
}
end
def isConfirmedOnKeyPress
return @sprites["option"].index == @PokemonOptions.length
end
def pbEndScene
pbPlayCloseMenuSE
pbFadeOutAndHide(@sprites) { pbUpdate }
@@ -589,7 +606,7 @@ class PokemonOptionScreen
def pbStartScreen(inloadscreen = false)
@scene.pbStartScene(inloadscreen)
@scene.pbOptions
@scene.pbOptions
@scene.pbEndScene
end
end

View File

@@ -1,16 +1,39 @@
class FusionMovesOptionsScene < PokemonOption_Scene
attr_accessor :move1
attr_accessor :move2
attr_accessor :move3
attr_accessor :move4
def initialize(poke1, poke2)
@poke1 = poke1
@poke2 = poke2
@move1 = nil
@move2 = nil
@move3 = nil
@move4 = nil
@move1 = @poke1.moves[0]
@move2 = @poke1.moves[1]
@move3 = @poke1.moves[2]
@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
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)
super
@typebitmap = AnimatedBitmap.new(_INTL("Graphics/Pictures/types"))
@@ -26,14 +49,20 @@ class FusionMovesOptionsScene < PokemonOption_Scene
end
@sprites["title"] = Window_UnformattedTextPokemon.newWithSize(
_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 }
end
def draw_empty_move_info
# code here
end
def draw_move_info(pokemonMove)
move = GameData::Move.get(pokemonMove.id)
move_base_color = Color.new(50, 40, 230)
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
accuracy = move.accuracy == 0 ? "100" : move.accuracy.to_s
pp = move.total_pp.to_s
if !move
damage="-"
accuracy="-"
pp="-"
end
textpos = [
[_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("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 = []
@@ -69,7 +104,9 @@ class FusionMovesOptionsScene < PokemonOption_Scene
category = move.category
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])
if !move
imagepos=[]
end
@sprites["overlay"].bitmap.clear
pbDrawTextPositions(@sprites["overlay"].bitmap, textpos)
pbDrawImagePositions(@sprites["overlay"].bitmap, imagepos)
@@ -101,6 +138,10 @@ class FusionMovesOptionsScene < PokemonOption_Scene
end
end
def getDefaultDescription
return _INTL("No move selected")
end
def getMoveForIndex(index)
case index
when 0
@@ -121,13 +162,13 @@ class FusionMovesOptionsScene < PokemonOption_Scene
end
def getMoveName(move)
return "" if !@sprites["option"] && !move
return " - " if !@sprites["option"] && !move
move = @poke1.moves[@sprites["option"].index] if !move
return GameData::Move.get(move.id).real_name
end
def getMoveDescription(move)
return "" if !@sprites["option"] && !move
return " - " if !@sprites["option"] && !move
move = @poke1.moves[@sprites["option"].index] if !move
return GameData::Move.get(move.id).real_description
end
@@ -137,28 +178,63 @@ class FusionMovesOptionsScene < PokemonOption_Scene
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[0])), _INTL(getMoveName(@poke2.moves[0]))],
proc { 0 },
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])]
),
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[1])), _INTL(getMoveName(@poke2.moves[1]))],
proc { 0 },
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])]
),
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[2])), _INTL(getMoveName(@poke2.moves[2]))],
proc { 0 },
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])]
),
EnumOption.new(_INTL(""), [_INTL(getMoveName(@poke1.moves[3])), _INTL(getMoveName(@poke2.moves[3]))],
proc { 0 },
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])]
)
]
return options
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
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
poke2_number = GameData::Species.get(@pokemon2.species).id_number
rsprite1 = PokemonSprite.new(@viewport)
rsprite2 = PokemonSprite.new(@viewport)
rsprite3 = PokemonSprite.new(@viewport)
@sprites["rsprite1"] = PokemonSprite.new(@viewport)
@sprites["rsprite2"] = PokemonSprite.new(@viewport)
@sprites["rsprite3"] = PokemonSprite.new(@viewport)
rsprite1.setPokemonBitmapFromId(poke1_number, false)
rsprite3.setPokemonBitmapFromId(poke2_number, false)
@sprites["rsprite1"].setPokemonBitmapFromId(poke1_number, false)
@sprites["rsprite3"].setPokemonBitmapFromId(poke2_number, false)
rsprite2.setPokemonBitmapFromId(@newspecies, false)
@sprites["rsprite2"].setPokemonBitmapFromId(@newspecies, false)
rsprite1.ox = rsprite1.bitmap.width / 2
rsprite1.oy = rsprite1.bitmap.height / 2
@sprites["rsprite1"].ox = @sprites["rsprite1"].bitmap.width / 2
@sprites["rsprite1"].oy = @sprites["rsprite1"].bitmap.height / 2
rsprite3.ox = rsprite3.bitmap.width / 2
rsprite3.oy = rsprite3.bitmap.height / 2
@sprites["rsprite3"].ox = @sprites["rsprite3"].bitmap.width / 2
@sprites["rsprite3"].oy = @sprites["rsprite3"].bitmap.height / 2
rsprite2.ox = rsprite2.bitmap.width / 2
rsprite2.oy = rsprite2.bitmap.height / 2
@sprites["rsprite2"].ox = @sprites["rsprite2"].bitmap.width / 2
@sprites["rsprite2"].oy = @sprites["rsprite2"].bitmap.height / 2
rsprite2.x = Graphics.width / 2
rsprite1.y = (Graphics.height - 96) / 2
rsprite3.y = (Graphics.height - 96) / 2
@sprites["rsprite2"].x = Graphics.width / 2
@sprites["rsprite1"].y = (Graphics.height - 96) / 2
@sprites["rsprite3"].y = (Graphics.height - 96) / 2
rsprite1.x = (Graphics.width / 2) - 100
rsprite3.x = (Graphics.width / 2) + 100
@sprites["rsprite1"].x = (Graphics.width / 2) - 100
@sprites["rsprite3"].x = (Graphics.width / 2) + 100
rsprite2.y = (Graphics.height - 96) / 2
rsprite2.opacity = 0
@sprites["rsprite1"] = rsprite1
@sprites["rsprite2"] = rsprite2
@sprites["rsprite3"] = rsprite3
@sprites["rsprite2"].y = (Graphics.height - 96) / 2
@sprites["rsprite2"].opacity = 0
@sprites["rsprite1"].zoom_x = 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_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)
pbFadeInAndShow(@sprites)
@@ -626,9 +623,9 @@ class PokemonFusionScene
# Closes the evolution screen.
def pbEndScreen
Kernel.pbDisposeMessageWindow(@sprites["msgwindow"])
Kernel.pbDisposeMessageWindow(@sprites["msgwindow"]) if @sprites["msgwindow"]
pbFadeOutAndHide(@sprites)
pbDisposeSpriteHash(@sprites)
pbDisposeSpriteHash(@sprites) if @sprites
@viewport.dispose
end
@@ -746,13 +743,23 @@ class PokemonFusionScene
end
end
def setFusionMoves(fusedPoke, poke2)
pbFadeOutIn {
scene = FusionMovesOptionsScene.new(fusedPoke,poke2)
screen = PokemonOptionScreen.new(scene)
screen.pbStartScreen
}
def clearUIForMoves
addBackgroundOrColoredPlane(@sprites, "background", "DNAbg",
Color.new(248, 248, 248), @viewport)
pbDisposeSpriteHash(@sprites)
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)
# if choice == 1
# return

View File

@@ -79,6 +79,8 @@ SWITCH_FIRST_RIVAL_BATTLE=46
# VARIABLES #
#############
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_ODDKEYSTONE_NB=252
VAR_DEFAULT_BATTLE_TYPE = 242
@@ -102,4 +104,6 @@ VAR_CURRENT_GYM_TYPE=152
DIRECTION_LEFT = 4
DIRECTION_RIGHT = 6
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.