mirror of
https://github.com/infinitefusion/infinitefusion-e18.git
synced 2025-12-07 21:24:59 +00:00
Sprite renamer is now in the Debug menu and doesn't run when compiling, fixed Poké Flute not working in battle, fixed Advanced Trainer Battle Debug feature not working, fixed special Mega Evolution messages not being used
This commit is contained in:
@@ -1144,6 +1144,16 @@ DebugMenuCommands.register("createpbs", {
|
||||
}
|
||||
})
|
||||
|
||||
DebugMenuCommands.register("renamesprites", {
|
||||
"parent" => "othermenu",
|
||||
"name" => _INTL("Rename Old Sprites"),
|
||||
"description" => _INTL("Renames and moves Pokémon/item/trainer sprites from their old places."),
|
||||
"always_show" => true,
|
||||
"effect" => proc {
|
||||
SpriteRenamer.convert_files
|
||||
}
|
||||
})
|
||||
|
||||
DebugMenuCommands.register("invalidtiles", {
|
||||
"parent" => "othermenu",
|
||||
"name" => _INTL("Fix Invalid Tiles"),
|
||||
|
||||
@@ -0,0 +1,242 @@
|
||||
class File
|
||||
# Copies the source file to the destination path.
|
||||
def self.copy(source, destination)
|
||||
data = ""
|
||||
t = Time.now
|
||||
File.open(source, 'rb') do |f|
|
||||
while r = f.read(4096)
|
||||
if Time.now - t > 1
|
||||
Graphics.update
|
||||
t = Time.now
|
||||
end
|
||||
data += r
|
||||
end
|
||||
end
|
||||
File.delete(destination) if File.file?(destination)
|
||||
f = File.new(destination, 'wb')
|
||||
f.write data
|
||||
f.close
|
||||
end
|
||||
|
||||
# Copies the source to the destination and deletes the source.
|
||||
def self.move(source, destination)
|
||||
File.copy(source, destination)
|
||||
File.delete(source)
|
||||
end
|
||||
end
|
||||
|
||||
#===============================================================================
|
||||
#
|
||||
#===============================================================================
|
||||
module SpriteRenamer
|
||||
module_function
|
||||
|
||||
def readDirectoryFiles(directory, formats)
|
||||
files = []
|
||||
Dir.chdir(directory) {
|
||||
for i in 0...formats.length
|
||||
Dir.glob(formats[i]) { |f| files.push(f) }
|
||||
end
|
||||
}
|
||||
return files
|
||||
end
|
||||
|
||||
def convert_pokemon_filename(full_name, default_prefix = "")
|
||||
name = full_name
|
||||
extension = nil
|
||||
if full_name[/^(.+)\.([^\.]+)$/] # Of the format something.abc
|
||||
name = $~[1]
|
||||
extension = $~[2]
|
||||
end
|
||||
prefix = default_prefix
|
||||
form = female = shadow = crack = ""
|
||||
if default_prefix == ""
|
||||
if name[/s/] && !name[/shadow/]
|
||||
prefix = (name[/b/]) ? "Back shiny/" : "Front shiny/"
|
||||
else
|
||||
prefix = (name[/b/]) ? "Back/" : "Front/"
|
||||
end
|
||||
elsif default_prefix == "Icons/"
|
||||
prefix = "Icons shiny/" if name[/s/] && !name[/shadow/]
|
||||
end
|
||||
if name[/000/]
|
||||
species = "000"
|
||||
else
|
||||
species_number = name[0, 3].to_i
|
||||
species_data = GameData::Species.try_get(species_number)
|
||||
raise _INTL("Species {1} is not defined (trying to rename Pokémon graphic {2}).", species_number, full_name) if !species_data
|
||||
species = species_data.id.to_s
|
||||
form = "_" + $~[1].to_s if name[/_(\d+)/]
|
||||
female = "_female" if name[/f/]
|
||||
shadow = "_shadow" if name[/_shadow/]
|
||||
if name[/egg/]
|
||||
prefix = "Eggs/"
|
||||
crack = "_icon" if default_prefix == "Icons/"
|
||||
crack = "_cracks" if name[/eggCracks/]
|
||||
end
|
||||
end
|
||||
return prefix + species + form + female + shadow + crack + ((extension) ? "." + extension : ".png")
|
||||
end
|
||||
|
||||
def convert_pokemon_sprites(src_dir, dest_dir)
|
||||
return if !FileTest.directory?(src_dir)
|
||||
# generates a list of all graphic files
|
||||
files = readDirectoryFiles(src_dir, ["*.png"])
|
||||
# starts automatic renaming
|
||||
files.each_with_index do |file, i|
|
||||
Graphics.update if i % 100 == 0
|
||||
pbSetWindowText(_INTL("Converting Pokémon sprites {1}/{2}...", i, files.length)) if i % 50 == 0
|
||||
case file
|
||||
when "battlers.png"
|
||||
File.delete(src_dir + file)
|
||||
when "egg.png"
|
||||
File.move(src_dir + file, dest_dir + "Eggs/000.png")
|
||||
when "eggCracks.png"
|
||||
File.move(src_dir + file, dest_dir + "Eggs/000_cracks.png")
|
||||
else
|
||||
next if !file[/^\d{3}[^\.]*\.[^\.]*$/]
|
||||
new_filename = convert_pokemon_filename(file)
|
||||
# moves the files into their appropriate folders
|
||||
File.move(src_dir + file, dest_dir + new_filename)
|
||||
end
|
||||
end
|
||||
Dir.delete(src_dir) rescue nil
|
||||
end
|
||||
|
||||
def convert_pokemon_icons(src_dir, dest_dir)
|
||||
return if !FileTest.directory?(src_dir)
|
||||
# generates a list of all graphic files
|
||||
files = readDirectoryFiles(src_dir, ["*.png"])
|
||||
# starts automatic renaming
|
||||
files.each_with_index do |file, i|
|
||||
Graphics.update if i % 100 == 0
|
||||
pbSetWindowText(_INTL("Converting Pokémon icons {1}/{2}...", i, files.length)) if i % 50 == 0
|
||||
case file
|
||||
when "iconEgg.png"
|
||||
File.move(src_dir + file, dest_dir + "Eggs/000_egg.png")
|
||||
else
|
||||
next if !file[/^icon\d{3}[^\.]*\.[^\.]*$/]
|
||||
new_filename = convert_pokemon_filename(file.sub(/^icon/, ''), "Icons/")
|
||||
# moves the files into their appropriate folders
|
||||
File.move(src_dir + file, dest_dir + new_filename)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def convert_pokemon_footprints(src_dir, dest_dir)
|
||||
return if !FileTest.directory?(src_dir)
|
||||
# generates a list of all graphic files
|
||||
files = readDirectoryFiles(src_dir, ["*.png"])
|
||||
# starts automatic renaming
|
||||
files.each_with_index do |file, i|
|
||||
Graphics.update if i % 100 == 0
|
||||
pbSetWindowText(_INTL("Converting footprints {1}/{2}...", i, files.length)) if i % 50 == 0
|
||||
next if !file[/^footprint\d{3}[^\.]*\.[^\.]*$/]
|
||||
new_filename = convert_pokemon_filename(file.sub(/^footprint/, ''), "Footprints/")
|
||||
# moves the files into their appropriate folders
|
||||
File.move(src_dir + file, dest_dir + new_filename)
|
||||
end
|
||||
Dir.delete(src_dir) rescue nil
|
||||
end
|
||||
|
||||
def convert_item_icons(src_dir, dest_dir)
|
||||
return if !FileTest.directory?(src_dir)
|
||||
# generates a list of all graphic files
|
||||
files = readDirectoryFiles(src_dir, ["*.png"])
|
||||
# starts automatic renaming
|
||||
files.each_with_index do |file, i|
|
||||
Graphics.update if i % 100 == 0
|
||||
pbSetWindowText(_INTL("Converting item icons {1}/{2}...", i, files.length)) if i % 50 == 0
|
||||
case file
|
||||
when "item000.png"
|
||||
File.move(src_dir + file, dest_dir + "000.png")
|
||||
when "itemBack.png"
|
||||
File.move(src_dir + file, dest_dir + "back.png")
|
||||
else
|
||||
if file[/^itemMachine(.+)\.([^\.]*)$/]
|
||||
type = $~[1]
|
||||
extension = $~[2]
|
||||
File.move(src_dir + file, dest_dir + "machine_" + type + "." + extension)
|
||||
elsif file[/^item(\d{3})[^\.]*\.([^\.]*)$/]
|
||||
item_number = $~[1].to_i
|
||||
extension = $~[2]
|
||||
item_data = GameData::Item.try_get(item_number)
|
||||
raise _INTL("Item {1} is not defined (trying to rename item icon {2}).", item_number, file) if !item_data
|
||||
item = item_data.id.to_s
|
||||
# moves the files into their appropriate folders
|
||||
File.move(src_dir + file, dest_dir + item + "." + extension)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def convert_pokemon_cries(src_dir)
|
||||
return if !FileTest.directory?(src_dir)
|
||||
# generates a list of all audio files
|
||||
files = readDirectoryFiles(src_dir, ["*.wav", "*.mp3", "*.ogg"])
|
||||
# starts automatic renaming
|
||||
files.each_with_index do |file, i|
|
||||
Graphics.update if i % 100 == 0
|
||||
pbSetWindowText(_INTL("Converting Pokémon cries {1}/{2}...", i, files.length)) if i % 50 == 0
|
||||
if file[/^(\d{3})Cry[^\.]*\.([^\.]*)$/]
|
||||
species_number = $~[1].to_i
|
||||
extension = $~[2]
|
||||
form = (file[/Cry_(\d+)\./]) ? sprintf("_%s", $~[1]) : ""
|
||||
species_data = GameData::Species.try_get(species_number)
|
||||
raise _INTL("Species {1} is not defined (trying to rename species cry {2}).", species_number, file) if !species_data
|
||||
species = species_data.id.to_s
|
||||
File.move(src_dir + file, src_dir + species + form + "." + extension)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def convert_trainer_sprites(src_dir)
|
||||
return if !FileTest.directory?(src_dir)
|
||||
# generates a list of all graphic files
|
||||
files = readDirectoryFiles(src_dir, ["*.png"])
|
||||
# starts automatic renaming
|
||||
files.each_with_index do |file, i|
|
||||
Graphics.update if i % 100 == 0
|
||||
pbSetWindowText(_INTL("Converting trainer sprites {1}/{2}...", i, files.length)) if i % 50 == 0
|
||||
if file[/^trainer(\d{3})\.([^\.]*)$/]
|
||||
tr_type_number = $~[1].to_i
|
||||
extension = $~[2]
|
||||
tr_type_data = GameData::TrainerType.try_get(tr_type_number)
|
||||
raise _INTL("Trainer type {1} is not defined (trying to rename trainer sprite {2}).", tr_type_number, file) if !tr_type_data
|
||||
tr_type = tr_type_data.id.to_s
|
||||
File.move(src_dir + file, src_dir + tr_type + "." + extension)
|
||||
elsif file[/^trback(\d{3})\.([^\.]*)$/]
|
||||
tr_type_number = $~[1].to_i
|
||||
extension = $~[2]
|
||||
tr_type_data = GameData::TrainerType.try_get(tr_type_number)
|
||||
raise _INTL("Trainer type {1} is not defined (trying to rename trainer sprite {2}).", tr_type_number, file) if !tr_type_data
|
||||
tr_type = tr_type_data.id.to_s
|
||||
File.move(src_dir + file, src_dir + tr_type + "_back." + extension)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def convert_files
|
||||
return if !pbConfirmMessage("Check for Pokémon/item/trainer files in their old folders that need renaming and moving?")
|
||||
# Rename and move Pokémon sprites/icons
|
||||
dest_dir = "Graphics/Pokemon/"
|
||||
Dir.mkdir(dest_dir) if !FileTest.directory?(dest_dir)
|
||||
for ext in ["Front/", "Back/", "Icons/", "Front shiny/", "Back shiny/", "Icons shiny/",
|
||||
"Eggs/", "Footprints/", "Shadow/"]
|
||||
Dir.mkdir(dest_dir + ext) if !FileTest.directory?(dest_dir + ext)
|
||||
end
|
||||
convert_pokemon_sprites("Graphics/Battlers/", dest_dir)
|
||||
convert_pokemon_icons("Graphics/Icons/", dest_dir)
|
||||
convert_pokemon_footprints("Graphics/Icons/Footprints/", dest_dir)
|
||||
# Rename and move item icons
|
||||
dest_dir = "Graphics/Items/"
|
||||
Dir.mkdir(dest_dir) if !FileTest.directory?(dest_dir)
|
||||
convert_item_icons("Graphics/Icons/", dest_dir)
|
||||
# Rename Pokémon cries
|
||||
convert_pokemon_cries("Audio/SE/Cries/")
|
||||
# Rename trainer sprites
|
||||
convert_trainer_sprites("Graphics/Trainers/")
|
||||
pbSetWindowText(nil)
|
||||
pbMessage(_INTL("All found sprites and icons were renamed and moved."))
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user