diff --git a/Data/Actors.rxdata b/Data/Actors.rxdata index 41edc8e26..7967a5432 100644 Binary files a/Data/Actors.rxdata and b/Data/Actors.rxdata differ diff --git a/Data/Animations.rxdata b/Data/Animations.rxdata index 826e1e8a6..8e67182ba 100644 Binary files a/Data/Animations.rxdata and b/Data/Animations.rxdata differ diff --git a/Data/Armors.rxdata b/Data/Armors.rxdata index 901f2bb2b..2249bec14 100644 Binary files a/Data/Armors.rxdata and b/Data/Armors.rxdata differ diff --git a/Data/CommonEvents.rxdata b/Data/CommonEvents.rxdata index 558b53417..b2ff406c1 100644 Binary files a/Data/CommonEvents.rxdata and b/Data/CommonEvents.rxdata differ diff --git a/Data/Enemies.rxdata b/Data/Enemies.rxdata index be622f513..004ee903d 100644 Binary files a/Data/Enemies.rxdata and b/Data/Enemies.rxdata differ diff --git a/Data/Items.rxdata b/Data/Items.rxdata index fe767fa0b..3e62ba6d2 100644 Binary files a/Data/Items.rxdata and b/Data/Items.rxdata differ diff --git a/Data/Map102.rxdata b/Data/Map102.rxdata index 58a6d3806..fa8c8924c 100644 Binary files a/Data/Map102.rxdata and b/Data/Map102.rxdata differ diff --git a/Data/Map105.rxdata b/Data/Map105.rxdata index 93637a08b..38554cbb6 100644 Binary files a/Data/Map105.rxdata and b/Data/Map105.rxdata differ diff --git a/Data/Map490.rxdata b/Data/Map490.rxdata index 659eb9dfe..a1ef82e79 100644 Binary files a/Data/Map490.rxdata and b/Data/Map490.rxdata differ diff --git a/Data/MapInfos.rxdata b/Data/MapInfos.rxdata index 7692b89ae..6eebe95a0 100644 Binary files a/Data/MapInfos.rxdata and b/Data/MapInfos.rxdata differ diff --git a/Data/Scripts/016_UI/015_UI_Options.rb b/Data/Scripts/016_UI/015_UI_Options.rb index c96570edb..4eeb851db 100644 --- a/Data/Scripts/016_UI/015_UI_Options.rb +++ b/Data/Scripts/016_UI/015_UI_Options.rb @@ -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 diff --git a/Data/Scripts/048_Fusion/FusionMovesMenu.rb b/Data/Scripts/048_Fusion/FusionMovesMenu.rb index f9b9c023e..04a1a23b9 100644 --- a/Data/Scripts/048_Fusion/FusionMovesMenu.rb +++ b/Data/Scripts/048_Fusion/FusionMovesMenu.rb @@ -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 \ No newline at end of file diff --git a/Data/Scripts/048_Fusion/PokemonFusion.rb b/Data/Scripts/048_Fusion/PokemonFusion.rb index dc52ecc93..dc0e69ed5 100644 --- a/Data/Scripts/048_Fusion/PokemonFusion.rb +++ b/Data/Scripts/048_Fusion/PokemonFusion.rb @@ -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 diff --git a/Data/Scripts/049_Compatibility/Constants.rb b/Data/Scripts/049_Compatibility/Constants.rb index f3d2f2147..84e0ffec0 100644 --- a/Data/Scripts/049_Compatibility/Constants.rb +++ b/Data/Scripts/049_Compatibility/Constants.rb @@ -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 \ No newline at end of file +DIRECTION_UP = 8 + + diff --git a/Data/Skills.rxdata b/Data/Skills.rxdata index a45219f5e..61cba7ea2 100644 Binary files a/Data/Skills.rxdata and b/Data/Skills.rxdata differ diff --git a/Data/States.rxdata b/Data/States.rxdata index 868d49e59..0f9b4ae5d 100644 Binary files a/Data/States.rxdata and b/Data/States.rxdata differ diff --git a/Data/System.rxdata b/Data/System.rxdata index 7a1f20e5f..e22703424 100644 Binary files a/Data/System.rxdata and b/Data/System.rxdata differ diff --git a/Data/Tilesets.rxdata b/Data/Tilesets.rxdata index 8d113cbfb..2c6933d73 100644 Binary files a/Data/Tilesets.rxdata and b/Data/Tilesets.rxdata differ diff --git a/Data/Weapons.rxdata b/Data/Weapons.rxdata index c7ea19a7a..d9bd35260 100644 Binary files a/Data/Weapons.rxdata and b/Data/Weapons.rxdata differ