From fa80d2cd7c3d803b1ae7c14f0a17ff8b7c80160d Mon Sep 17 00:00:00 2001 From: infinitefusion Date: Wed, 20 Jul 2022 16:08:02 -0400 Subject: [PATCH] fusion menu --- Data/Scripts/001_Settings.rb | 2 +- .../002_Overworld_BattleIntroAnim.rb | 2 +- Data/Scripts/048_Fusion/FusionMenu.rb | 70 +++++++++++++++++++ Data/Scripts/048_Fusion/PokemonFusion.rb | 56 +++++++++------ Data/Scripts/050_AddOns/New Items effects.rb | 2 +- 5 files changed, 107 insertions(+), 25 deletions(-) create mode 100644 Data/Scripts/048_Fusion/FusionMenu.rb diff --git a/Data/Scripts/001_Settings.rb b/Data/Scripts/001_Settings.rb index 6d0d44154..bcf75a318 100644 --- a/Data/Scripts/001_Settings.rb +++ b/Data/Scripts/001_Settings.rb @@ -6,7 +6,7 @@ module Settings # The version of your game. It has to adhere to the MAJOR.MINOR.PATCH format. GAME_VERSION = '5.0.0' - GAME_VERSION_NUMBER = "5.0.27 - beta" + GAME_VERSION_NUMBER = "5.0.29 - beta" POKERADAR_LIGHT_ANIMATION_RED_ID = 17 POKERADAR_LIGHT_ANIMATION_GREEN_ID = 18 diff --git a/Data/Scripts/012_Overworld/002_Battle triggering/002_Overworld_BattleIntroAnim.rb b/Data/Scripts/012_Overworld/002_Battle triggering/002_Overworld_BattleIntroAnim.rb index 9a114d5fc..d6f476457 100644 --- a/Data/Scripts/012_Overworld/002_Battle triggering/002_Overworld_BattleIntroAnim.rb +++ b/Data/Scripts/012_Overworld/002_Battle triggering/002_Overworld_BattleIntroAnim.rb @@ -115,7 +115,7 @@ def pbBattleAnimation(bgm=nil,battletype=0,foe=nil) $PokemonEncounters.reset_step_count # Fade back to the overworld viewport.color = Color.new(0,0,0,255) - numFrames = Graphics.frame_rate*1/10 #4/10 0.4 seconds, 16 frames + numFrames = Graphics.frame_rate*4/10 # 0.4 seconds, 16 frames alphaDiff = (255.0/numFrames).ceil numFrames.times do viewport.color.alpha -= alphaDiff diff --git a/Data/Scripts/048_Fusion/FusionMenu.rb b/Data/Scripts/048_Fusion/FusionMenu.rb new file mode 100644 index 000000000..ae1155b2f --- /dev/null +++ b/Data/Scripts/048_Fusion/FusionMenu.rb @@ -0,0 +1,70 @@ +class FusionSelectOptionsScene < PokemonOption_Scene + attr_accessor :selectedAbility + attr_accessor :selectedNature + + + def initialize(abilityList,natureList) + @abilityList = abilityList + @natureList = natureList + @selectedAbility=nil + @selectedNature=nil + @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 getAbilityName(ability) + return GameData::Ability.get(ability.id).real_name + end + + def getAbilityDescription(ability) + return GameData::Ability.get(ability.id).real_description + end + + def getNatureName(nature) + return GameData::Nature.get(nature.id).real_name + end + + def getNatureDescription(nature) + change= GameData::Nature.get(nature.id).stat_changes + return "Neutral nature" if change.empty? + positiveChange = change[0] + negativeChange = change[1] + return _INTL("+ {1}\n- {2}",GameData::Stat.get(positiveChange[0]).name,GameData::Stat.get(negativeChange[0]).name) + end + + def pbGetOptions(inloadscreen = false) + options = [ + + EnumOption.new(_INTL("Ability"), [_INTL(getAbilityName(@abilityList[0])), _INTL(getAbilityName(@abilityList[1]))], + proc { 0 }, + proc { |value| + @selectedAbility=@abilityList[value] + }, [getAbilityDescription(@abilityList[0]), getAbilityDescription(@abilityList[1])] + ), + EnumOption.new(_INTL("Nature"), [_INTL(getNatureName(@natureList[0])), _INTL(getNatureName(@natureList[1]))], + proc { 0 }, + proc { |value| + @selectedNature=@natureList[value] + }, [getNatureDescription(@natureList[0]), getNatureDescription(@natureList[1])] + ) + + ] + return options + end + + def isConfirmedOnKeyPress + return true + end + +end + diff --git a/Data/Scripts/048_Fusion/PokemonFusion.rb b/Data/Scripts/048_Fusion/PokemonFusion.rb index 976b3ed3c..ff77144a9 100644 --- a/Data/Scripts/048_Fusion/PokemonFusion.rb +++ b/Data/Scripts/048_Fusion/PokemonFusion.rb @@ -712,6 +712,8 @@ class PokemonFusionScene #change species @pokemon1.species = newSpecies #@pokemon1.ability = pbChooseAbility(@pokemon1, hiddenAbility1, hiddenAbility2) + pbChooseAbility(@pokemon1, hiddenAbility1, hiddenAbility2) + setFusionMoves(@pokemon1, @pokemon2) if !noMoves # if superSplicer @@ -755,6 +757,8 @@ def clearUIForMoves end def setAbilityAndNature(abilitiesList, naturesList) + clearUIForMoves + scene = FusionSelectOptionsScene.new(abilitiesList,naturesList) screen = PokemonOptionScreen.new(scene) screen.pbStartScreen @@ -765,35 +769,43 @@ def setAbilityAndNature(abilitiesList, naturesList) end def setFusionMoves(fusedPoke, poke2) - clearUIForMoves + #NEW METHOD (not ready) - moves=fusedPoke.moves - scene = FusionMovesOptionsScene.new(fusedPoke,poke2) - screen = PokemonOptionScreen.new(scene) - screen.pbStartScreen - moves =[scene.move1,scene.move2,scene.move3,scene.move3] + # 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 - 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 - # elsif choice == 2 - # fusedPoke.moves = poke2.moves - # return - # else - # #Learn moves - # movelist = poke2.moves - # for move in movelist - # if move.id != 0 - # pbLearnMove(fusedPoke, move.id, true, false, true) - # end - # end - # end + + 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 + elsif choice == 2 + fusedPoke.moves = poke2.moves + return + else + #Learn moves + movelist = poke2.moves + for move in movelist + if move.id != 0 + pbLearnMove(fusedPoke, move.id, true, false, true) + end + end + end end def setPokemonLevel(pokemon1, pokemon2, superSplicers) lv1 = @pokemon1.level lv2 = @pokemon2.level + return calculateFusedPokemonLevel(lv1,lv2,superSplicers) +end + +def calculateFusedPokemonLevel(lv1, lv2, superSplicers) if superSplicers if lv1 > lv2 return lv1 diff --git a/Data/Scripts/050_AddOns/New Items effects.rb b/Data/Scripts/050_AddOns/New Items effects.rb index f5bf0038e..bd7e751a7 100644 --- a/Data/Scripts/050_AddOns/New Items effects.rb +++ b/Data/Scripts/050_AddOns/New Items effects.rb @@ -1259,6 +1259,7 @@ def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false) pbRemovePokemonAt(chosen) scene.pbHardRefresh pbBGMPlay(playingBGM) + return true end elsif pokemon == poke2 scene.pbDisplay(_INTL("{1} can't be fused with itself!", pokemon.name)) @@ -1266,7 +1267,6 @@ def pbDNASplicing(pokemon, scene, supersplicers = false, superSplicer = false) else scene.pbDisplay(_INTL("{1} can't be fused with {2}.", poke2.name, pokemon.name)) return false - end else return false