mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-08 13:44:59 +00:00
Alt sprite credits
This commit is contained in:
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.
@@ -461,6 +461,8 @@ def getDexNumFromFilename(filename)
|
|||||||
return (body * NB_POKEMON) + head
|
return (body * NB_POKEMON) + head
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# def getCustomSpeciesList()
|
# def getCustomSpeciesList()
|
||||||
# filesList = Dir["./Graphics/CustomBattlers/*"]
|
# filesList = Dir["./Graphics/CustomBattlers/*"]
|
||||||
# maxDexNumber = (NB_POKEMON * NB_POKEMON) + NB_POKEMON
|
# maxDexNumber = (NB_POKEMON * NB_POKEMON) + NB_POKEMON
|
||||||
|
|||||||
@@ -689,7 +689,9 @@ class PokemonFusionScene
|
|||||||
oldspeciesname = GameData::Species.get(@pokemon1.species).real_name
|
oldspeciesname = GameData::Species.get(@pokemon1.species).real_name
|
||||||
|
|
||||||
overlay = BitmapSprite.new(Graphics.width, Graphics.height, @viewport).bitmap
|
overlay = BitmapSprite.new(Graphics.width, Graphics.height, @viewport).bitmap
|
||||||
drawSpriteCredits(@sprites["rsprite2"].getBitmap.filename, overlay)
|
|
||||||
|
sprite_bitmap = @sprites["rsprite2"].getBitmap
|
||||||
|
drawSpriteCredits(sprite_bitmap.filename,sprite_bitmap.path, overlay)
|
||||||
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
Kernel.pbMessageDisplay(@sprites["msgwindow"],
|
||||||
_INTL("\\se[]Congratulations! Your Pokémon were fused into {2}!\\wt[80]", @pokemon1.name, newspeciesname))
|
_INTL("\\se[]Congratulations! Your Pokémon were fused into {2}!\\wt[80]", @pokemon1.name, newspeciesname))
|
||||||
|
|
||||||
@@ -767,10 +769,12 @@ class PokemonFusionScene
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def drawSpriteCredits(filename,overlay)
|
def drawSpriteCredits(filename,path,overlay)
|
||||||
|
return if path.start_with?(Settings::BATTLERS_FOLDER)
|
||||||
x= Graphics.width/2
|
x= Graphics.width/2
|
||||||
y=240
|
y=240
|
||||||
spritename = File.basename(filename,'.*')
|
spritename = File.basename(filename,'.*')
|
||||||
|
|
||||||
discord_name = getSpriteCredits(spritename)
|
discord_name = getSpriteCredits(spritename)
|
||||||
return if !discord_name
|
return if !discord_name
|
||||||
|
|
||||||
|
|||||||
@@ -200,7 +200,17 @@ def get_unfused_sprite_path(dex_number)
|
|||||||
return lightmode_path
|
return lightmode_path
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def alt_sprites_substitutions_available
|
||||||
|
return $PokemonGlobal && $PokemonGlobal.alt_sprite_substitutions
|
||||||
|
end
|
||||||
|
|
||||||
def get_fusion_sprite_path(head_id,body_id)
|
def get_fusion_sprite_path(head_id,body_id)
|
||||||
|
#Swap path if alt is selected for this pokemon
|
||||||
|
dex_num = getSpeciesIdForFusion(head_id,body_id)
|
||||||
|
if alt_sprites_substitutions_available && $PokemonGlobal.alt_sprite_substitutions.keys.include?(dex_num)
|
||||||
|
return $PokemonGlobal.alt_sprite_substitutions[dex_num]
|
||||||
|
end
|
||||||
|
|
||||||
#Try local custom sprite
|
#Try local custom sprite
|
||||||
filename = sprintf("%s.%s.png", head_id, body_id)
|
filename = sprintf("%s.%s.png", head_id, body_id)
|
||||||
local_custom_path = Settings::CUSTOM_BATTLERS_FOLDER_INDEXED + head_id.to_s + "/" +filename
|
local_custom_path = Settings::CUSTOM_BATTLERS_FOLDER_INDEXED + head_id.to_s + "/" +filename
|
||||||
|
|||||||
@@ -113,6 +113,8 @@ def getDexNumberForSpecies(species)
|
|||||||
return dexNum
|
return dexNum
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def getPokemon(dexNum)
|
def getPokemon(dexNum)
|
||||||
return GameData::Species.get(dexNum)
|
return GameData::Species.get(dexNum)
|
||||||
end
|
end
|
||||||
@@ -121,6 +123,11 @@ def getSpecies(dexnum)
|
|||||||
return getPokemon(dexnum)
|
return getPokemon(dexnum)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def getSpeciesIdForFusion(head_id, body_id)
|
||||||
|
return (body_id) * Settings::NB_POKEMON + head_id
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
#shortcut for using in game events because of script characters limit
|
#shortcut for using in game events because of script characters limit
|
||||||
def dexNum(species)
|
def dexNum(species)
|
||||||
return getDexNumberForSpecies(species)
|
return getDexNumberForSpecies(species)
|
||||||
@@ -407,7 +414,9 @@ def customSpriteExists(species)
|
|||||||
return download_custom_sprite(head, body) != nil
|
return download_custom_sprite(head, body) != nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def checkIfCustomSpriteExistsByPath(path)
|
||||||
|
return true if pbResolveBitmap(path) != nil
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
def customSpriteExistsBodyHead(body, head)
|
def customSpriteExistsBodyHead(body, head)
|
||||||
|
|||||||
@@ -396,6 +396,7 @@ class PokemonLoadScreen
|
|||||||
@scene.pbEndScene
|
@scene.pbEndScene
|
||||||
Game.load(@save_data)
|
Game.load(@save_data)
|
||||||
$game_switches[SWITCH_V5_1] = true
|
$game_switches[SWITCH_V5_1] = true
|
||||||
|
$PokemonGlobal.alt_sprite_substitutions = {} if !$PokemonGlobal.alt_sprite_substitutions
|
||||||
return
|
return
|
||||||
when cmd_new_game
|
when cmd_new_game
|
||||||
@scene.pbEndScene
|
@scene.pbEndScene
|
||||||
|
|||||||
@@ -2,11 +2,11 @@ class PokemonPokedexInfo_Scene
|
|||||||
#todo add indicator to show which one is the main sprite -
|
#todo add indicator to show which one is the main sprite -
|
||||||
# also maybe add an indicator in main list for when a sprite has available alts
|
# also maybe add an indicator in main list for when a sprite has available alts
|
||||||
|
|
||||||
Y_POSITION_SMALL = 40#90
|
Y_POSITION_SMALL = 40 #90
|
||||||
Y_POSITION_BIG = 60
|
Y_POSITION_BIG = 60
|
||||||
X_POSITION_PREVIOUS = -30#20
|
X_POSITION_PREVIOUS = -30 #20
|
||||||
X_POSITION_SELECTED = 105
|
X_POSITION_SELECTED = 105
|
||||||
X_POSITION_NEXT = 340#380
|
X_POSITION_NEXT = 340 #380
|
||||||
|
|
||||||
Y_POSITION_BG_SMALL = 70
|
Y_POSITION_BG_SMALL = 70
|
||||||
Y_POSITION_BG_BIG = 93
|
Y_POSITION_BG_BIG = 93
|
||||||
@@ -66,15 +66,15 @@ class PokemonPokedexInfo_Scene
|
|||||||
@sprites["previousSprite"].x = X_POSITION_PREVIOUS
|
@sprites["previousSprite"].x = X_POSITION_PREVIOUS
|
||||||
@sprites["previousSprite"].y = Y_POSITION_SMALL
|
@sprites["previousSprite"].y = Y_POSITION_SMALL
|
||||||
@sprites["previousSprite"].visible = false
|
@sprites["previousSprite"].visible = false
|
||||||
@sprites["previousSprite"].zoom_x = Settings::FRONTSPRITE_SCALE#/2
|
@sprites["previousSprite"].zoom_x = Settings::FRONTSPRITE_SCALE #/2
|
||||||
@sprites["previousSprite"].zoom_y = Settings::FRONTSPRITE_SCALE#/2
|
@sprites["previousSprite"].zoom_y = Settings::FRONTSPRITE_SCALE #/2
|
||||||
|
|
||||||
@sprites["nextSprite"] = IconSprite.new(0, 0, @viewport)
|
@sprites["nextSprite"] = IconSprite.new(0, 0, @viewport)
|
||||||
@sprites["nextSprite"].x = X_POSITION_NEXT
|
@sprites["nextSprite"].x = X_POSITION_NEXT
|
||||||
@sprites["nextSprite"].y = Y_POSITION_SMALL
|
@sprites["nextSprite"].y = Y_POSITION_SMALL
|
||||||
@sprites["nextSprite"].visible = false
|
@sprites["nextSprite"].visible = false
|
||||||
@sprites["nextSprite"].zoom_x = Settings::FRONTSPRITE_SCALE#/2
|
@sprites["nextSprite"].zoom_x = Settings::FRONTSPRITE_SCALE #/2
|
||||||
@sprites["nextSprite"].zoom_y = Settings::FRONTSPRITE_SCALE#/2
|
@sprites["nextSprite"].zoom_y = Settings::FRONTSPRITE_SCALE #/2
|
||||||
|
|
||||||
@sprites["selectedSprite"].z = 9999999
|
@sprites["selectedSprite"].z = 9999999
|
||||||
@sprites["previousSprite"].z = 9999999
|
@sprites["previousSprite"].z = 9999999
|
||||||
@@ -94,15 +94,15 @@ class PokemonPokedexInfo_Scene
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def pbGetAvailableForms
|
def pbGetAvailableForms
|
||||||
body_id = getBodyID(@species)
|
body_id = getBodyID(@species)
|
||||||
head_id = getHeadID(@species,body_id)
|
head_id = getHeadID(@species, body_id)
|
||||||
download_custom_sprite(head_id,body_id)
|
download_custom_sprite(head_id, body_id)
|
||||||
download_autogen_sprite(head_id,body_id)
|
download_autogen_sprite(head_id, body_id)
|
||||||
download_alt_sprites(head_id,body_id)
|
download_alt_sprites(head_id, body_id)
|
||||||
return PokedexUtils.new.pbGetAvailableAlts(@species)
|
return PokedexUtils.new.pbGetAvailableAlts(@species)
|
||||||
end
|
end
|
||||||
|
|
||||||
def hide_all_selected_windows
|
def hide_all_selected_windows
|
||||||
@sprites["bgSelected_previous"].visible = false if @sprites["bgSelected_previous"]
|
@sprites["bgSelected_previous"].visible = false if @sprites["bgSelected_previous"]
|
||||||
@sprites["bgSelected_center"].visible = false if @sprites["bgSelected_center"]
|
@sprites["bgSelected_center"].visible = false if @sprites["bgSelected_center"]
|
||||||
@@ -135,20 +135,29 @@ class PokemonPokedexInfo_Scene
|
|||||||
@sprites["previousSprite"].setBitmap(@available[previousIndex]) if previousIndex != nextIndex
|
@sprites["previousSprite"].setBitmap(@available[previousIndex]) if previousIndex != nextIndex
|
||||||
@sprites["selectedSprite"].setBitmap(@available[@selected_index])
|
@sprites["selectedSprite"].setBitmap(@available[@selected_index])
|
||||||
@sprites["nextSprite"].setBitmap(@available[nextIndex])
|
@sprites["nextSprite"].setBitmap(@available[nextIndex])
|
||||||
showSpriteCredits(@sprites["selectedSprite"].getBitmap.filename)
|
|
||||||
|
selected_bitmap = @sprites["selectedSprite"].getBitmap
|
||||||
|
is_generated = !selected_bitmap.path.include?(Settings::CUSTOM_BATTLERS_FOLDER_INDEXED)
|
||||||
|
showSpriteCredits(selected_bitmap.filename,is_generated)
|
||||||
update_selected
|
update_selected
|
||||||
end
|
end
|
||||||
|
|
||||||
def showSpriteCredits(filename)
|
def showSpriteCredits(filename,generated_sprite=false)
|
||||||
@creditsOverlay.dispose
|
@creditsOverlay.dispose
|
||||||
|
|
||||||
x= Graphics.width/2 -60
|
x = Graphics.width / 2 - 75
|
||||||
y=Graphics.height - 60
|
y = Graphics.height - 60
|
||||||
spritename = File.basename(filename,'.*')
|
spritename = File.basename(filename, '.*')
|
||||||
discord_name = getSpriteCredits(spritename)
|
|
||||||
return if !discord_name
|
|
||||||
|
|
||||||
author_name = File.basename(discord_name,'#*')
|
if !generated_sprite
|
||||||
|
discord_name = getSpriteCredits(spritename)
|
||||||
|
discord_name = "Unknown artist" if !discord_name
|
||||||
|
else
|
||||||
|
#todo give credits to Japeal - need to differenciate unfused sprites
|
||||||
|
discord_name = ""#"Japeal\n(Generated)"
|
||||||
|
end
|
||||||
|
|
||||||
|
author_name = File.basename(discord_name, '#*')
|
||||||
|
|
||||||
label_base_color = Color.new(248, 248, 248)
|
label_base_color = Color.new(248, 248, 248)
|
||||||
label_shadow_color = Color.new(104, 104, 104)
|
label_shadow_color = Color.new(104, 104, 104)
|
||||||
@@ -157,7 +166,6 @@ class PokemonPokedexInfo_Scene
|
|||||||
pbDrawTextPositions(@creditsOverlay, textpos)
|
pbDrawTextPositions(@creditsOverlay, textpos)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
def pbChooseForm
|
def pbChooseForm
|
||||||
loop do
|
loop do
|
||||||
@sprites["uparrow"].visible = true
|
@sprites["uparrow"].visible = true
|
||||||
@@ -194,17 +202,38 @@ class PokemonPokedexInfo_Scene
|
|||||||
@sprites["downarrow"].visible = false
|
@sprites["downarrow"].visible = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# 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 is_main_sprite(index = nil)
|
def is_main_sprite(index = nil)
|
||||||
return false if !@available
|
if !index
|
||||||
if index == nil
|
|
||||||
index = @selected_index
|
index = @selected_index
|
||||||
end
|
end
|
||||||
return true if @available.size <= 1
|
|
||||||
if @speciesData.always_use_generated
|
|
||||||
selected_sprite = @available[index]
|
selected_sprite = @available[index]
|
||||||
return selected_sprite.start_with?(Settings::BATTLERS_FOLDER)
|
species_id = getDexNumberForSpecies(@species)
|
||||||
|
if $PokemonGlobal.alt_sprite_substitutions[species_id]
|
||||||
|
return $PokemonGlobal.alt_sprite_substitutions[species_id] == selected_sprite
|
||||||
end
|
end
|
||||||
return index == 0
|
is_generated = !selected_sprite.include?(Settings::CUSTOM_BATTLERS_FOLDER_INDEXED)
|
||||||
|
if is_generated
|
||||||
|
return !checkIfCustomSpriteExistsByPath(selected_sprite)
|
||||||
|
end
|
||||||
|
return !sprite_is_alt(selected_sprite)
|
||||||
|
end
|
||||||
|
|
||||||
|
def sprite_is_alt(sprite_path)
|
||||||
|
spritename = File.basename(sprite_path, '.*')
|
||||||
|
return spritename.match?(/[a-zA-Z]/)
|
||||||
end
|
end
|
||||||
|
|
||||||
def select_sprite
|
def select_sprite
|
||||||
@@ -220,59 +249,59 @@ class PokemonPokedexInfo_Scene
|
|||||||
end
|
end
|
||||||
|
|
||||||
def swap_main_sprite
|
def swap_main_sprite
|
||||||
begin
|
|
||||||
old_main_sprite = @available[0]
|
old_main_sprite = @available[0]
|
||||||
new_main_sprite = @available[@selected_index]
|
new_main_sprite = @available[@selected_index]
|
||||||
|
species_number = dexNum(@species)
|
||||||
if main_sprite_is_non_custom()
|
set_alt_sprite_substitution(species_number, new_main_sprite)
|
||||||
@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
|
end
|
||||||
|
|
||||||
if new_main_sprite.start_with?(Settings::BATTLERS_FOLDER)
|
|
||||||
@speciesData.set_always_use_generated_sprite(true)
|
|
||||||
return
|
# def swap_main_sprite
|
||||||
# new_name_without_ext = File.basename(old_main_sprite, ".png")
|
# begin
|
||||||
# File.rename(old_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_ext+"x" + ".png")x
|
# old_main_sprite = @available[0]
|
||||||
|
# new_main_sprite = @available[@selected_index]
|
||||||
|
#
|
||||||
|
# if main_sprite_is_non_custom()
|
||||||
|
# @speciesData.set_always_use_generated_sprite(false)
|
||||||
# return
|
# return
|
||||||
end
|
# # new_name_without_ext = File.basename(old_main_sprite, ".png")
|
||||||
File.rename(new_main_sprite, new_main_sprite + "temp")
|
# # new_name_without_letter=new_name_without_ext.chop
|
||||||
File.rename(old_main_sprite, new_main_sprite)
|
# # File.rename(new_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_letter + ".png")
|
||||||
File.rename(new_main_sprite + "temp", old_main_sprite)
|
# end
|
||||||
rescue
|
#
|
||||||
pbMessage("There was an error while swapping the sprites. Please save and restart the game as soon as possible.")
|
# if new_main_sprite.start_with?(Settings::BATTLERS_FOLDER)
|
||||||
end
|
# @speciesData.set_always_use_generated_sprite(true)
|
||||||
end
|
# return
|
||||||
|
# # new_name_without_ext = File.basename(old_main_sprite, ".png")
|
||||||
def main_sprite_is_non_custom()
|
# # File.rename(old_main_sprite, Settings::CUSTOM_BATTLERS_FOLDER+new_name_without_ext+"x" + ".png")x
|
||||||
speciesData = getSpecies(@species)
|
# # return
|
||||||
return speciesData.always_use_generated || @available.size <= 1
|
# 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
|
# File.rename(new_main_sprite, new_main_sprite + "temp")
|
||||||
# speciesData.set_always_use_generated_sprite(true)
|
# File.rename(old_main_sprite, new_main_sprite)
|
||||||
# return POSSIBLE_ALTS.include?(File.basename(old_main_sprite, ".png")[-1])
|
# File.rename(new_main_sprite + "temp", old_main_sprite)
|
||||||
end
|
# rescue
|
||||||
|
# pbMessage("There was an error while swapping the sprites. Please save and restart the game as soon as possible.")
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
|
# def main_sprite_is_non_custom()
|
||||||
|
# speciesData = getSpecies(@species)
|
||||||
|
# return speciesData.always_use_generated || @available.size <= 1
|
||||||
|
# end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
class PokemonGlobalMetadata
|
class PokemonGlobalMetadata
|
||||||
attr_accessor :alt_sprite_substitutions
|
attr_accessor :alt_sprite_substitutions
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
@alt_sprite_substitutions = {}
|
@alt_sprite_substitutions = {}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_alt_sprite_substitution(original_sprite_name,selected_alt)
|
def set_alt_sprite_substitution(original_sprite_name, selected_alt)
|
||||||
if ! $PokemonGlobal.alt_sprite_substitutions
|
if !$PokemonGlobal.alt_sprite_substitutions
|
||||||
$PokemonGlobal.alt_sprite_substitutions = {}
|
$PokemonGlobal.alt_sprite_substitutions = {}
|
||||||
end
|
end
|
||||||
|
|
||||||
$PokemonGlobal.alt_sprite_substitutions[original_sprite_name] = selected_alt
|
$PokemonGlobal.alt_sprite_substitutions[original_sprite_name] = selected_alt
|
||||||
p $PokemonGlobal.alt_sprite_substitutions
|
|
||||||
end
|
end
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user