mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-08 05:34:58 +00:00
move fusion menu fixes
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user