diff --git a/Credits.txt b/Credits.txt index 8220adaa4..6d137fe52 100644 --- a/Credits.txt +++ b/Credits.txt @@ -50,27 +50,12 @@ their sprites. ########################################################### Maruno (http://pokemonessentials.wikia.com/wiki/Pok%C3%A9mon_Essentials_Wiki) -########################################################### -### Postgame add-ons ### -########################################################### -Endgame Challenge: - DemICE (https://www.rebornevo.com/forum/index.php?/profile/62307-demice/) - Adapted from the infinity fusion endgame challenge mod - https://www.rebornevo.com/forum/index.php?/messenger/30070/&tab=comments#comment-297286 - -Bill's Battletower: - barafanatic ########################################################### ### Playtesting ### ########################################################### Playtesting was done by various members of the Discord channel. Special thanks to all of you! ########################################################### -### Social media ### -########################################################### -ChippyYYZ (Discord. reddit) -qt314xxx (Discord) -########################################################### ### Graphics # ########################################################### Title screen background and logo by Doctor Miawoo 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 e336ca025..37352e4b4 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/MapInfos.rxdata b/Data/MapInfos.rxdata index 49d967b03..4e0d878d1 100644 Binary files a/Data/MapInfos.rxdata and b/Data/MapInfos.rxdata differ diff --git a/Data/Scripts/010_Data/002_PBS data/008_Species.rb b/Data/Scripts/010_Data/002_PBS data/008_Species.rb index 0ee681780..0201e6f64 100644 --- a/Data/Scripts/010_Data/002_PBS data/008_Species.rb +++ b/Data/Scripts/010_Data/002_PBS data/008_Species.rb @@ -47,6 +47,7 @@ module GameData attr_accessor :front_sprite_altitude attr_accessor :shadow_x attr_accessor :shadow_size + attr_accessor :alwaysUseGeneratedSprite DATA = {} DATA_FILENAME = "species.dat" @@ -178,8 +179,16 @@ module GameData @front_sprite_altitude = hash[:front_sprite_altitude] || 0 @shadow_x = hash[:shadow_x] || 0 @shadow_size = hash[:shadow_size] || 2 + @alwaysUseGeneratedSprite=false end + def set_always_use_generated_sprite(useGeneratedSprite) + @alwaysUseGeneratedSprite=useGeneratedSprite + end + + def always_use_generated + return @alwaysUseGeneratedSprite + end # @return [String] the translated name of this species def name return pbGetMessage(MessageTypes::Species, @id_number) diff --git a/Data/Scripts/016_UI/001_Non-interactive UI/007_UI_Credits.rb b/Data/Scripts/016_UI/001_Non-interactive UI/007_UI_Credits.rb index a0ef4af6e..313bf0b39 100644 --- a/Data/Scripts/016_UI/001_Non-interactive UI/007_UI_Credits.rb +++ b/Data/Scripts/016_UI/001_Non-interactive UI/007_UI_Credits.rb @@ -78,7 +78,7 @@ Pokémon Gold and Silver. Both games are made by Game Freak. ALl of the custom fused Pokémon sprites -were madeby various members of the +were madeby various members of the sp Pokémon Infinite Fusion Discord Other custom graphics: diff --git a/Data/Scripts/050_AddOns/FusionSprites.rb b/Data/Scripts/050_AddOns/FusionSprites.rb index 6c63b8c59..b34a442d0 100644 --- a/Data/Scripts/050_AddOns/FusionSprites.rb +++ b/Data/Scripts/050_AddOns/FusionSprites.rb @@ -104,8 +104,12 @@ module GameData end end customPath = pbResolveBitmap(Settings::CUSTOM_BATTLERS_FOLDER + filename) - regularPath = Settings::BATTLERS_FOLDER + folder + "/" + filename - return customPath ? customPath : pbResolveBitmap(regularPath) + species = getSpecies(dex_number) + use_custom = customPath && !species.always_use_generated + if use_custom + return customPath + end + return Settings::BATTLERS_FOLDER + folder + "/" + filename end end diff --git a/Data/Scripts/050_AddOns/UI_Pokedex_SpritesPage.rb b/Data/Scripts/050_AddOns/UI_Pokedex_SpritesPage.rb index e5e7759b4..13e13119c 100644 --- a/Data/Scripts/050_AddOns/UI_Pokedex_SpritesPage.rb +++ b/Data/Scripts/050_AddOns/UI_Pokedex_SpritesPage.rb @@ -4,12 +4,15 @@ class PokemonPokedexInfo_Scene Y_POSITION_SMALL = 40 Y_POSITION_BIG = 50 + X_POSITION_PREVIOUS = -20 + X_POSITION_SELECTED = 120 + X_POSITION_NEXT = 340 - X_POSITION_PREVIOUS=-20 - X_POSITION_SELECTED=120 - X_POSITION_NEXT=340 - - + Y_POSITION_BG_SMALL = 70 + Y_POSITION_BG_BIG = 93 + X_POSITION_BG_PREVIOUS = -1 + X_POSITION_BG_SELECTED = 145 + X_POSITION_BG_NEXT = 363 def drawPageForms #@selected_index=0 @@ -20,89 +23,125 @@ class PokemonPokedexInfo_Scene shadow = Color.new(168, 184, 184) #alts_list= pbGetAvailableAlts - @selected_index=0 + @selected_index = 0 update_displayed end + def init_selected_bg + @sprites["bgSelected_previous"] = IconSprite.new(0, 0, @viewport) + @sprites["bgSelected_previous"].x = X_POSITION_BG_PREVIOUS + @sprites["bgSelected_previous"].y = Y_POSITION_BG_SMALL + @sprites["bgSelected_previous"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_forms_selected_small")) + @sprites["bgSelected_previous"].visible = false + + @sprites["bgSelected_center"] = IconSprite.new(0, 0, @viewport) + @sprites["bgSelected_center"].x = X_POSITION_BG_SELECTED + @sprites["bgSelected_center"].y = Y_POSITION_BG_BIG + @sprites["bgSelected_center"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_forms_selected_large")) + @sprites["bgSelected_center"].visible = false + + @sprites["bgSelected_next"] = IconSprite.new(0, 0, @viewport) + @sprites["bgSelected_next"].x = X_POSITION_BG_NEXT + @sprites["bgSelected_next"].y = Y_POSITION_BG_SMALL + @sprites["bgSelected_next"].setBitmap(_INTL("Graphics/Pictures/Pokedex/bg_forms_selected_small")) + @sprites["bgSelected_next"].visible = false + + end def initializeSpritesPage(altsList) - @selected_index=0 - @sprites["selectedSprite"] = IconSprite.new(0,0,@viewport) + init_selected_bg + @speciesData = getSpecies(@species) + @selected_index = 0 + @sprites["selectedSprite"] = IconSprite.new(0, 0, @viewport) @sprites["selectedSprite"].x = X_POSITION_SELECTED @sprites["selectedSprite"].y = Y_POSITION_BIG @sprites["selectedSprite"].z = 999999 - @sprites["selectedSprite"].visible=false + @sprites["selectedSprite"].visible = false @sprites["selectedSprite"].zoom_x = 1 @sprites["selectedSprite"].zoom_y = 1 - @sprites["previousSprite"] = IconSprite.new(0,0,@viewport) + @sprites["previousSprite"] = IconSprite.new(0, 0, @viewport) @sprites["previousSprite"].x = X_POSITION_PREVIOUS @sprites["previousSprite"].y = Y_POSITION_SMALL - @sprites["previousSprite"].visible=false + @sprites["previousSprite"].visible = false @sprites["previousSprite"].zoom_x = Settings::FRONTSPRITE_SCALE @sprites["previousSprite"].zoom_y = Settings::FRONTSPRITE_SCALE - @sprites["nextSprite"] = IconSprite.new(0,0,@viewport) + @sprites["nextSprite"] = IconSprite.new(0, 0, @viewport) @sprites["nextSprite"].x = X_POSITION_NEXT @sprites["nextSprite"].y = Y_POSITION_SMALL - @sprites["nextSprite"].visible=false + @sprites["nextSprite"].visible = false @sprites["nextSprite"].zoom_x = Settings::FRONTSPRITE_SCALE @sprites["nextSprite"].zoom_y = Settings::FRONTSPRITE_SCALE - @sprites["selectedSprite"].z=9999999 - @sprites["previousSprite"].z=9999999 - @sprites["nextSprite"].z=9999999 - + @sprites["selectedSprite"].z = 9999999 + @sprites["previousSprite"].z = 9999999 + @sprites["nextSprite"].z = 9999999 @sprites["selectedSprite"].setBitmap(altsList[@selected_index]) - if altsList.size >=2 - @sprites["nextSprite"].setBitmap(altsList[@selected_index+1]) - @sprites["nextSprite"].visible=true + if altsList.size >= 2 + @sprites["nextSprite"].setBitmap(altsList[@selected_index + 1]) + @sprites["nextSprite"].visible = true end - if altsList.size >=3 + if altsList.size >= 3 @sprites["previousSprite"].setBitmap(altsList[-1]) - @sprites["previousSprite"].visible=true + @sprites["previousSprite"].visible = true end end - POSSIBLE_ALTS= %w[a b c d e f g h i j k x] + + POSSIBLE_ALTS = %w[a b c d e f g h i j k x] def pbGetAvailableForms return pbGetAvailableAlts end + def update_selected + @sprites["bgSelected_previous"].visible = false + @sprites["bgSelected_center"].visible = false + @sprites["bgSelected_next"].visible = false + + previous_index = @selected_index == 0 ? @available.size - 1 : @selected_index - 1 + next_index = @selected_index == @available.size - 1 ? 0 : @selected_index + 1 + + @sprites["bgSelected_previous"].visible = true if is_main_sprite(previous_index) && @available.size > 2 + @sprites["bgSelected_center"].visible = true if is_main_sprite(@selected_index) + @sprites["bgSelected_next"].visible = true if is_main_sprite(next_index) && @available.size > 1 + end + def update_displayed @sprites["selectedSprite"].setBitmap(@available[@selected_index]) - nextIndex=@selected_index+1 - previousIndex= @selected_index-1 - if nextIndex > @available.size-1 + nextIndex = @selected_index + 1 + previousIndex = @selected_index - 1 + if nextIndex > @available.size - 1 nextIndex = 0 end - if previousIndex <0 - previousIndex = @available.size-1 + if previousIndex < 0 + previousIndex = @available.size - 1 end - @sprites["previousSprite"].visible=false if @available.size<=2 - @sprites["nextSprite"].visible=false if @available.size<=1 + @sprites["previousSprite"].visible = false if @available.size <= 2 + @sprites["nextSprite"].visible = false if @available.size <= 1 @sprites["previousSprite"].setBitmap(@available[previousIndex]) if previousIndex != nextIndex @sprites["selectedSprite"].setBitmap(@available[@selected_index]) @sprites["nextSprite"].setBitmap(@available[nextIndex]) + update_selected end def pbGetAvailableAlts ret = [] return ret if !@species - dexNum =getDexNumberForSpecies(@species) + dexNum = getDexNumberForSpecies(@species) isFusion = dexNum > NB_POKEMON if !isFusion - ret << Settings::BATTLERS_FOLDER+ dexNum.to_s + "/" + dexNum.to_s + ".png" + ret << Settings::BATTLERS_FOLDER + dexNum.to_s + "/" + dexNum.to_s + ".png" return ret end body_id = getBodyID(@species) - head_id=getHeadID(@species,body_id) + head_id = getHeadID(@species, body_id) baseFilename = head_id.to_s + "." + body_id.to_s baseFilePath = Settings::CUSTOM_BATTLERS_FOLDER + baseFilename + ".png" @@ -110,7 +149,7 @@ class PokemonPokedexInfo_Scene ret << baseFilePath end POSSIBLE_ALTS.each { |alt_letter| - altFilePath = Settings::CUSTOM_BATTLERS_FOLDER + baseFilename + alt_letter +".png" + altFilePath = Settings::CUSTOM_BATTLERS_FOLDER + baseFilename + alt_letter + ".png" if pbResolveBitmap(altFilePath) ret << altFilePath end @@ -119,26 +158,24 @@ class PokemonPokedexInfo_Scene return ret end - - def pbChooseForm loop do - @sprites["uparrow"].visible = true + @sprites["uparrow"].visible = true @sprites["downarrow"].visible = true Graphics.update Input.update pbUpdate if Input.trigger?(Input::RIGHT) pbPlayCursorSE - @selected_index -=1#(index+@available.length-1)%@available.length + @selected_index -= 1 #(index+@available.length-1)%@available.length if @selected_index < 0 - @selected_index = @available.size-1 + @selected_index = @available.size - 1 end update_displayed elsif Input.trigger?(Input::LEFT) pbPlayCursorSE - @selected_index +=1#= (index+1)%@available.length - if @selected_index > @available.size-1 + @selected_index += 1 #= (index+1)%@available.length + if @selected_index > @available.size - 1 @selected_index = 0 end update_displayed @@ -148,21 +185,28 @@ class PokemonPokedexInfo_Scene elsif Input.trigger?(Input::USE) pbPlayDecisionSE if select_sprite - @endscene=true + @endscene = true break end end end - @sprites["uparrow"].visible = false + @sprites["uparrow"].visible = false @sprites["downarrow"].visible = false end - def is_main_sprite - return @selected_index == 0 + def is_main_sprite(index = nil) + return false if !@available + if index == nil + index = @selected_index + end + return true if @available.size <= 1 + if @speciesData.always_use_generated + selected_sprite = @available[index] + return selected_sprite.start_with?(Settings::BATTLERS_FOLDER) + end + return index == 0 end - - def select_sprite if is_main_sprite pbMessage("This sprite is already the displayed sprite") @@ -176,33 +220,40 @@ class PokemonPokedexInfo_Scene end def swap_main_sprite - begin + #begin old_main_sprite = @available[0] new_main_sprite = @available[@selected_index] - if main_sprite_is_non_custom(old_main_sprite) - new_name_without_ext = File.basename(old_main_sprite, ".png") - new_name_without_letter=new_name_without_ext.chop - File.rename(new_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_letter + ".png") + if main_sprite_is_non_custom() + @speciesData.set_always_use_generated_sprite(false) + return + # new_name_without_ext = File.basename(old_main_sprite, ".png") + # new_name_without_letter=new_name_without_ext.chop + # File.rename(new_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_letter + ".png") end if new_main_sprite.start_with?(Settings::BATTLERS_FOLDER) - new_name_without_ext = File.basename(old_main_sprite, ".png") - File.rename(old_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_ext+"x" + ".png") + @speciesData.set_always_use_generated_sprite(true) return + # new_name_without_ext = File.basename(old_main_sprite, ".png") + # File.rename(old_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_ext+"x" + ".png")x + # return end - File.rename(new_main_sprite, new_main_sprite+"temp") + File.rename(new_main_sprite, new_main_sprite + "temp") File.rename(old_main_sprite, new_main_sprite) - File.rename(new_main_sprite+"temp", old_main_sprite) - rescue - pbMessage("There was an error while swapping the sprites. Please save and restart the game as soon as possible.") - end + File.rename(new_main_sprite + "temp", old_main_sprite) + # rescue + # pbMessage("There was an error while swapping the sprites. Please save and restart the game as soon as possible.") + # end # code here end - #dégueu, je sais - si le 1er element de la liste finit par une lettre (le 1er element devrait etre considéré comme le main), ça veut dire que le main est non-custom - def main_sprite_is_non_custom(old_main_sprite) - return POSSIBLE_ALTS.include?(File.basename(old_main_sprite, ".png")[-1]) + def main_sprite_is_non_custom() + speciesData = getSpecies(@species) + return speciesData.always_use_generated || @available.size <= 1 + #dégueu, je sais - si le 1er element de la liste finit par une lettre (le 1er element devrait etre considéré comme le main), ça veut dire que le main est non-custom + # speciesData.set_always_use_generated_sprite(true) + # return POSSIBLE_ALTS.include?(File.basename(old_main_sprite, ".png")[-1]) end end \ No newline at end of file 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 4dfef5401..fffa6090c 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