Deprecated methods intended to work around filenames with accents, fixed crash when the Compiler wants to rewrite PBS files if they don't exist

This commit is contained in:
Maruno17
2023-05-20 22:10:11 +01:00
parent 276c052822
commit 167155c67d
17 changed files with 130 additions and 158 deletions

View File

@@ -31,12 +31,9 @@ class Dir
return files + subfolders return files + subfolders
end end
# Checks for existing directory, gets around accents # Checks for existing directory
def self.safe?(dir) def self.safe?(dir)
return false if !FileTest.directory?(dir) return FileTest.directory?(dir)
ret = false
self.chdir(dir) { ret = true } rescue nil
return ret
end end
# Creates all the required directories for filename path # Creates all the required directories for filename path
@@ -73,44 +70,20 @@ class Dir
end end
end end
#===============================================================================
# Extensions for file class
#===============================================================================
class File
# Checks for existing file, gets around accents
def self.safe?(file)
ret = false
self.open(file, "rb") { ret = true } rescue nil
return ret
end
# Checks for existing .rxdata file
def self.safeData?(file)
ret = (load_data(file) ? true : false) rescue false
return ret
end
end
#=============================================================================== #===============================================================================
# Checking for files and directories # Checking for files and directories
#=============================================================================== #===============================================================================
# Works around a problem with FileTest.directory if directory contains accent marks # Works around a problem with FileTest.directory if directory contains accent marks
# @deprecated This method is slated to be removed in v22.
def safeIsDirectory?(f) def safeIsDirectory?(f)
ret = false Deprecation.warn_method("safeIsDirectory?(f)", "v22", "FileTest.directory?(f)")
Dir.chdir(f) { ret = true } rescue nil return FileTest.directory?(f)
return ret
end end
# Works around a problem with FileTest.exist if path contains accent marks # @deprecated This method is slated to be removed in v22.
def safeExists?(f) def safeExists?(f)
return FileTest.exist?(f) if f[/\A[\x20-\x7E]*\z/] Deprecation.warn_method("safeExists?(f)", "v22", "FileTest.exist?(f)")
ret = false return FileTest.exist?(f)
begin
File.open(f, "rb") { ret = true }
rescue Errno::ENOENT, Errno::EINVAL, Errno::EACCES
ret = false
end
return ret
end end
# Similar to "Dir.glob", but designed to work around a problem with accessing # Similar to "Dir.glob", but designed to work around a problem with accessing
@@ -211,9 +184,9 @@ module RTP
def self.exists?(filename, extensions = []) def self.exists?(filename, extensions = [])
return false if nil_or_empty?(filename) return false if nil_or_empty?(filename)
eachPathFor(filename) do |path| eachPathFor(filename) do |path|
return true if safeExists?(path) return true if FileTest.exist?(path)
extensions.each do |ext| extensions.each do |ext|
return true if safeExists?(path + ext) return true if FileTest.exist?(path + ext)
end end
end end
return false return false
@@ -230,10 +203,10 @@ module RTP
def self.getPath(filename, extensions = []) def self.getPath(filename, extensions = [])
return filename if nil_or_empty?(filename) return filename if nil_or_empty?(filename)
eachPathFor(filename) do |path| eachPathFor(filename) do |path|
return path if safeExists?(path) return path if FileTest.exist?(path)
extensions.each do |ext| extensions.each do |ext|
file = path + ext file = path + ext
return file if safeExists?(file) return file if FileTest.exist?(file)
end end
end end
return filename return filename
@@ -307,9 +280,9 @@ end
# NOTE: pbGetFileChar checks anything added in MKXP's RTP setting, and matching # NOTE: pbGetFileChar checks anything added in MKXP's RTP setting, and matching
# mount points added through System.mount. # mount points added through System.mount.
def pbRgssExists?(filename) def pbRgssExists?(filename)
return !pbGetFileChar(filename).nil? if safeExists?("./Game.rgssad") return !pbGetFileChar(filename).nil? if FileTest.exist?("./Game.rgssad")
filename = canonicalize(filename) filename = canonicalize(filename)
return safeExists?(filename) return FileTest.exist?(filename)
end end
# Opens an IO, even if the file is in an encrypted archive. # Opens an IO, even if the file is in an encrypted archive.
@@ -318,7 +291,7 @@ end
# mount points added through System.mount. # mount points added through System.mount.
def pbRgssOpen(file, mode = nil) def pbRgssOpen(file, mode = nil)
# File.open("debug.txt", "ab") { |fw| fw.write([file, mode, Time.now.to_f].inspect + "\r\n") } # File.open("debug.txt", "ab") { |fw| fw.write([file, mode, Time.now.to_f].inspect + "\r\n") }
if !safeExists?("./Game.rgssad") if !FileTest.exist?("./Game.rgssad")
if block_given? if block_given?
File.open(file, mode) { |f| yield f } File.open(file, mode) { |f| yield f }
return nil return nil
@@ -341,8 +314,8 @@ end
# encrypted archives. # encrypted archives.
def pbGetFileChar(file) def pbGetFileChar(file)
canon_file = canonicalize(file) canon_file = canonicalize(file)
if !safeExists?("./Game.rgssad") if !FileTest.exist?("./Game.rgssad")
return nil if !safeExists?(canon_file) return nil if !FileTest.exist?(canon_file)
return nil if file.last == "/" # Is a directory return nil if file.last == "/" # Is a directory
begin begin
File.open(canon_file, "rb") { |f| return f.read(1) } # read one byte File.open(canon_file, "rb") { |f| return f.read(1) } # read one byte
@@ -370,8 +343,8 @@ end
# mount points added through System.mount. # mount points added through System.mount.
def pbGetFileString(file) def pbGetFileString(file)
file = canonicalize(file) file = canonicalize(file)
if !safeExists?("./Game.rgssad") if !FileTest.exist?("./Game.rgssad")
return nil if !safeExists?(file) return nil if !FileTest.exist?(file)
begin begin
File.open(file, "rb") { |f| return f.read } # read all data File.open(file, "rb") { |f| return f.read } # read all data
rescue Errno::ENOENT, Errno::EINVAL, Errno::EACCES rescue Errno::ENOENT, Errno::EINVAL, Errno::EACCES

View File

@@ -32,7 +32,7 @@ module Translator
end end
end end
# Get script texts from plugin script files # Get script texts from plugin script files
if safeExists?("Data/PluginScripts.rxdata") if FileTest.exist?("Data/PluginScripts.rxdata")
plugin_scripts = load_data("Data/PluginScripts.rxdata") plugin_scripts = load_data("Data/PluginScripts.rxdata")
plugin_scripts.each do |plugin| plugin_scripts.each do |plugin|
plugin[2].each do |script| plugin[2].each do |script|
@@ -511,12 +511,12 @@ class Translation
def load_message_files(filename) def load_message_files(filename)
begin begin
core_filename = sprintf("Data/messages_%s_core.dat", filename) core_filename = sprintf("Data/messages_%s_core.dat", filename)
if safeExists?(core_filename) if FileTest.exist?(core_filename)
pbRgssOpen(core_filename, "rb") { |f| @core_messages = Marshal.load(f) } pbRgssOpen(core_filename, "rb") { |f| @core_messages = Marshal.load(f) }
end end
@core_messages = nil if !@core_messages.is_a?(Array) @core_messages = nil if !@core_messages.is_a?(Array)
game_filename = sprintf("Data/messages_%s_game.dat", filename) game_filename = sprintf("Data/messages_%s_game.dat", filename)
if safeExists?(game_filename) if FileTest.exist?(game_filename)
pbRgssOpen(game_filename, "rb") { |f| @game_messages = Marshal.load(f) } pbRgssOpen(game_filename, "rb") { |f| @game_messages = Marshal.load(f) }
end end
@game_messages = nil if !@game_messages.is_a?(Array) @game_messages = nil if !@game_messages.is_a?(Array)
@@ -529,11 +529,11 @@ class Translation
def load_default_messages def load_default_messages
return if @default_core_messages return if @default_core_messages
begin begin
if safeExists?("Data/messages_core.dat") if FileTest.exist?("Data/messages_core.dat")
pbRgssOpen("Data/messages_core.dat", "rb") { |f| @default_core_messages = Marshal.load(f) } pbRgssOpen("Data/messages_core.dat", "rb") { |f| @default_core_messages = Marshal.load(f) }
end end
@default_core_messages = [] if !@default_core_messages.is_a?(Array) @default_core_messages = [] if !@default_core_messages.is_a?(Array)
if safeExists?("Data/messages_game.dat") if FileTest.exist?("Data/messages_game.dat")
pbRgssOpen("Data/messages_game.dat", "rb") { |f| @default_game_messages = Marshal.load(f) } pbRgssOpen("Data/messages_game.dat", "rb") { |f| @default_game_messages = Marshal.load(f) }
end end
@default_game_messages = [] if !@default_game_messages.is_a?(Array) @default_game_messages = [] if !@default_game_messages.is_a?(Array)

View File

@@ -471,7 +471,7 @@ module PluginManager
# Get a list of all the plugin directories to inspect # Get a list of all the plugin directories to inspect
def self.listAll def self.listAll
return [] if !$DEBUG || safeExists?("Game.rgssad") || !Dir.safe?("Plugins") return [] if !$DEBUG || FileTest.exist?("Game.rgssad") || !Dir.safe?("Plugins")
# get a list of all directories in the `Plugins/` folder # get a list of all directories in the `Plugins/` folder
dirs = [] dirs = []
Dir.get("Plugins").each { |d| dirs.push(d) if Dir.safe?(d) } Dir.get("Plugins").each { |d| dirs.push(d) if Dir.safe?(d) }
@@ -534,7 +534,7 @@ module PluginManager
# plugins. # plugins.
self.listAll.each do |dir| self.listAll.each do |dir|
# skip if there is no meta file # skip if there is no meta file
next if !safeExists?(dir + "/meta.txt") next if !FileTest.exist?(dir + "/meta.txt")
ndx = order.length ndx = order.length
meta = self.readMeta(dir, "meta.txt") meta = self.readMeta(dir, "meta.txt")
meta[:dir] = dir meta[:dir] = dir
@@ -556,8 +556,8 @@ module PluginManager
# Check if plugins need compiling # Check if plugins need compiling
def self.needCompiling?(order, plugins) def self.needCompiling?(order, plugins)
# fixed actions # fixed actions
return false if !$DEBUG || safeExists?("Game.rgssad") return false if !$DEBUG || FileTest.exist?("Game.rgssad")
return true if !safeExists?("Data/PluginScripts.rxdata") return true if !FileTest.exist?("Data/PluginScripts.rxdata")
Input.update Input.update
return true if Input.press?(Input::SHIFT) || Input.press?(Input::CTRL) return true if Input.press?(Input::SHIFT) || Input.press?(Input::CTRL)
# analyze whether or not to push recompile # analyze whether or not to push recompile
@@ -655,7 +655,7 @@ module PluginManager
# go through the plugins folder # go through the plugins folder
Dir.get("Plugins").each do |dir| Dir.get("Plugins").each do |dir|
next if !Dir.safe?(dir) next if !Dir.safe?(dir)
next if !safeExists?(dir + "/meta.txt") next if !FileTest.exist?(dir + "/meta.txt")
# read meta # read meta
meta = self.readMeta(dir, "meta.txt") meta = self.readMeta(dir, "meta.txt")
return dir if meta[:name] == name return dir if meta[:name] == name

View File

@@ -83,20 +83,20 @@ end
# Gets the length of an audio file in seconds. Supports WAV, MP3, and OGG files. # Gets the length of an audio file in seconds. Supports WAV, MP3, and OGG files.
def getPlayTime(filename) def getPlayTime(filename)
if safeExists?(filename) if FileTest.exist?(filename)
return [getPlayTime2(filename), 0].max return [getPlayTime2(filename), 0].max
elsif safeExists?(filename + ".wav") elsif FileTest.exist?(filename + ".wav")
return [getPlayTime2(filename + ".wav"), 0].max return [getPlayTime2(filename + ".wav"), 0].max
elsif safeExists?(filename + ".mp3") elsif FileTest.exist?(filename + ".mp3")
return [getPlayTime2(filename + ".mp3"), 0].max return [getPlayTime2(filename + ".mp3"), 0].max
elsif safeExists?(filename + ".ogg") elsif FileTest.exist?(filename + ".ogg")
return [getPlayTime2(filename + ".ogg"), 0].max return [getPlayTime2(filename + ".ogg"), 0].max
end end
return 0 return 0
end end
def getPlayTime2(filename) def getPlayTime2(filename)
return -1 if !safeExists?(filename) return -1 if !FileTest.exist?(filename)
time = -1 time = -1
fgetdw = proc { |file| fgetdw = proc { |file|
(file.eof? ? 0 : (file.read(4).unpack("V")[0] || 0)) (file.eof? ? 0 : (file.read(4).unpack("V")[0] || 0))

View File

@@ -26,7 +26,7 @@ module GameData
singleton_class.alias_method(:__orig__load, :load) unless singleton_class.method_defined?(:__orig__load) singleton_class.alias_method(:__orig__load, :load) unless singleton_class.method_defined?(:__orig__load)
def self.load def self.load
__orig__load if safeExists?("Data/#{self::DATA_FILENAME}") __orig__load if FileTest.exist?("Data/#{self::DATA_FILENAME}")
end end
# @param species [Symbol, self, String] # @param species [Symbol, self, String]

View File

@@ -59,7 +59,7 @@ def pbEditMysteryGift(type, item, id = 0, giftname = "")
if id == 0 if id == 0
master = [] master = []
idlist = [] idlist = []
if safeExists?("MysteryGiftMaster.txt") if FileTest.exist?("MysteryGiftMaster.txt")
master = IO.read("MysteryGiftMaster.txt") master = IO.read("MysteryGiftMaster.txt")
master = pbMysteryGiftDecrypt(master) master = pbMysteryGiftDecrypt(master)
end end
@@ -101,7 +101,7 @@ def pbCreateMysteryGift(type, item)
gift = pbEditMysteryGift(type, item) gift = pbEditMysteryGift(type, item)
if gift if gift
begin begin
if safeExists?("MysteryGiftMaster.txt") if FileTest.exist?("MysteryGiftMaster.txt")
master = IO.read("MysteryGiftMaster.txt") master = IO.read("MysteryGiftMaster.txt")
master = pbMysteryGiftDecrypt(master) master = pbMysteryGiftDecrypt(master)
master.push(gift) master.push(gift)
@@ -124,7 +124,7 @@ end
# file to be uploaded. # file to be uploaded.
#=============================================================================== #===============================================================================
def pbManageMysteryGifts def pbManageMysteryGifts
if !safeExists?("MysteryGiftMaster.txt") if !FileTest.exist?("MysteryGiftMaster.txt")
pbMessage(_INTL("There are no Mystery Gifts defined.")) pbMessage(_INTL("There are no Mystery Gifts defined."))
return return
end end

View File

@@ -14,10 +14,10 @@ def pbGetLegalMoves(species)
end end
def pbSafeCopyFile(x, y, z = nil) def pbSafeCopyFile(x, y, z = nil)
if safeExists?(x) if FileTest.exist?(x)
safetocopy = true safetocopy = true
filedata = nil filedata = nil
if safeExists?(y) if FileTest.exist?(y)
different = false different = false
if FileTest.size(x) == FileTest.size(y) if FileTest.size(x) == FileTest.size(y)
filedata2 = "" filedata2 = ""

View File

@@ -596,10 +596,10 @@ end
def pbImportAllAnimations def pbImportAllAnimations
animationFolders = [] animationFolders = []
if safeIsDirectory?("Animations") if FileTest.directory?("Animations")
Dir.foreach("Animations") do |fb| Dir.foreach("Animations") do |fb|
f = "Animations/" + fb f = "Animations/" + fb
animationFolders.push(f) if safeIsDirectory?(f) && fb != "." && fb != ".." animationFolders.push(f) if FileTest.directory?(f) && fb != "." && fb != ".."
end end
end end
if animationFolders.length == 0 if animationFolders.length == 0
@@ -639,14 +639,14 @@ def pbImportAllAnimations
textdata.id = -1 # This is not an RPG Maker XP animation textdata.id = -1 # This is not an RPG Maker XP animation
BattleAnimationEditor.pbConvertAnimToNewFormat(textdata) BattleAnimationEditor.pbConvertAnimToNewFormat(textdata)
if textdata.graphic && textdata.graphic != "" && if textdata.graphic && textdata.graphic != "" &&
!safeExists?(folder + "/" + textdata.graphic) && !FileTest.exist?(folder + "/" + textdata.graphic) &&
!FileTest.image_exist?("Graphics/Animations/" + textdata.graphic) !FileTest.image_exist?("Graphics/Animations/" + textdata.graphic)
textdata.graphic = "" textdata.graphic = ""
missingFiles.push(textdata.graphic) missingFiles.push(textdata.graphic)
end end
textdata.timing.each do |timing| textdata.timing.each do |timing|
next if !timing.name || timing.name == "" || next if !timing.name || timing.name == "" ||
safeExists?(folder + "/" + timing.name) || FileTest.exist?(folder + "/" + timing.name) ||
FileTest.audio_exist?("Audio/SE/Anim/" + timing.name) FileTest.audio_exist?("Audio/SE/Anim/" + timing.name)
timing.name = "" timing.name = ""
missingFiles.push(timing.name) missingFiles.push(timing.name)

View File

@@ -1018,7 +1018,7 @@ module Compiler
Console.echo_li(_INTL("Saving messages...")) Console.echo_li(_INTL("Saving messages..."))
Translator.gather_script_and_event_texts Translator.gather_script_and_event_texts
MessageTypes.save_default_messages MessageTypes.save_default_messages
MessageTypes.load_default_messages if safeExists?("Data/messages_core.dat") MessageTypes.load_default_messages if FileTest.exist?("Data/messages_core.dat")
Console.echo_done(true) Console.echo_done(true)
Console.echoln_li_done(_INTL("Successfully compiled all game data")) Console.echoln_li_done(_INTL("Successfully compiled all game data"))
end end
@@ -1026,6 +1026,14 @@ module Compiler
def main def main
return if !$DEBUG return if !$DEBUG
begin begin
mustCompile = false
# If no PBS file, create one and fill it, then recompile
if !FileTest.directory?("PBS")
Dir.mkdir("PBS") rescue nil
GameData.load_all
write_all
mustCompile = true
end
# Get all data files and PBS files to be checked for their last modified times # Get all data files and PBS files to be checked for their last modified times
data_files = GameData.get_all_data_filenames data_files = GameData.get_all_data_filenames
data_files += [ # Extra .dat files for data that isn't a GameData class data_files += [ # Extra .dat files for data that isn't a GameData class
@@ -1036,19 +1044,11 @@ module Compiler
text_files = get_all_pbs_files_to_compile text_files = get_all_pbs_files_to_compile
latestDataTime = 0 latestDataTime = 0
latestTextTime = 0 latestTextTime = 0
mustCompile = false
# Should recompile if new maps were imported # Should recompile if new maps were imported
mustCompile |= import_new_maps mustCompile |= import_new_maps
# If no PBS file, create one and fill it, then recompile
if !safeIsDirectory?("PBS")
Dir.mkdir("PBS") rescue nil
GameData.load_all
write_all
mustCompile = true
end
# Check data files for their latest modify time # Check data files for their latest modify time
data_files.each do |filename| # filename = [string, boolean (whether mandatory)] data_files.each do |filename| # filename = [string, boolean (whether mandatory)]
if safeExists?("Data/" + filename[0]) if FileTest.exist?("Data/" + filename[0])
begin begin
File.open("Data/#{filename[0]}") do |file| File.open("Data/#{filename[0]}") do |file|
latestDataTime = [latestDataTime, file.mtime.to_i].max latestDataTime = [latestDataTime, file.mtime.to_i].max
@@ -1080,7 +1080,7 @@ module Compiler
if mustCompile if mustCompile
data_files.each do |filename| data_files.each do |filename|
begin begin
File.delete("Data/#{filename[0]}") if safeExists?("Data/#{filename[0]}") File.delete("Data/#{filename[0]}") if FileTest.exist?("Data/#{filename[0]}")
rescue SystemCallError rescue SystemCallError
end end
end end
@@ -1093,7 +1093,7 @@ module Compiler
pbPrintException(e) pbPrintException(e)
data_files.each do |filename| data_files.each do |filename|
begin begin
File.delete("Data/#{filename[0]}") if safeExists?("Data/#{filename[0]}") File.delete("Data/#{filename[0]}") if FileTest.exist?("Data/#{filename[0]}")
rescue SystemCallError rescue SystemCallError
end end
end end

View File

@@ -3,7 +3,7 @@ module Compiler
def compile_PBS_file_generic(game_data, *paths) def compile_PBS_file_generic(game_data, *paths)
if game_data.const_defined?(:OPTIONAL) && game_data::OPTIONAL if game_data.const_defined?(:OPTIONAL) && game_data::OPTIONAL
return if paths.none? { |p| safeExists?(p) } return if paths.none? { |p| FileTest.exist?(p) }
end end
game_data::DATA.clear game_data::DATA.clear
schema = game_data.schema schema = game_data.schema
@@ -947,7 +947,7 @@ module Compiler
"Pokemon" => [1, "s"], "Pokemon" => [1, "s"],
"Challenges" => [2, "*s"] "Challenges" => [2, "*s"]
} }
if !safeExists?(path) if !FileTest.exist?(path)
File.open(path, "wb") do |f| File.open(path, "wb") do |f|
f.write(0xEF.chr) f.write(0xEF.chr)
f.write(0xBB.chr) f.write(0xBB.chr)
@@ -987,12 +987,12 @@ module Compiler
rsection[3] = rsection[0] rsection[3] = rsection[0]
rsection[4] = rsection[1] rsection[4] = rsection[1]
rsection[5] = (name == "DefaultTrainerList") rsection[5] = (name == "DefaultTrainerList")
if safeExists?("PBS/" + rsection[0]) if FileTest.exist?("PBS/" + rsection[0])
rsection[0] = compile_battle_tower_trainers("PBS/" + rsection[0]) rsection[0] = compile_battle_tower_trainers("PBS/" + rsection[0])
else else
rsection[0] = [] rsection[0] = []
end end
if safeExists?("PBS/" + rsection[1]) if FileTest.exist?("PBS/" + rsection[1])
filename = "PBS/" + rsection[1] filename = "PBS/" + rsection[1]
rsection[1] = [] rsection[1] = []
pbCompilerEachCommentedLine(filename) do |line, _lineno| pbCompilerEachCommentedLine(filename) do |line, _lineno|
@@ -1027,7 +1027,7 @@ module Compiler
beginspeech = [] beginspeech = []
endspeechwin = [] endspeechwin = []
endspeechlose = [] endspeechlose = []
if safeExists?(filename) if FileTest.exist?(filename)
File.open(filename, "rb") do |f| File.open(filename, "rb") do |f|
FileLineData.file = filename FileLineData.file = filename
pbEachFileSection(f) do |section, name| pbEachFileSection(f) do |section, name|

View File

@@ -24,7 +24,7 @@ end
def mainFunctionDebug def mainFunctionDebug
begin begin
MessageTypes.load_default_messages if safeExists?("Data/messages_core.dat") MessageTypes.load_default_messages if FileTest.exist?("Data/messages_core.dat")
PluginManager.runPlugins PluginManager.runPlugins
Compiler.main Compiler.main
Game.initialize Game.initialize

View File

@@ -185,7 +185,7 @@ RockSmash,50
90,NOSEPASS,13,14 90,NOSEPASS,13,14
10,GEODUDE,12,15 10,GEODUDE,12,15
#------------------------------- #-------------------------------
[049] # Rock Cave [049] # Rock Cave 1F
Cave,5 Cave,5
20,MAGNETON,14,16 20,MAGNETON,14,16
20,MAGNETON,14,17 20,MAGNETON,14,17
@@ -194,7 +194,7 @@ Cave,5
10,GEODUDE,13,15 10,GEODUDE,13,15
10,MAWILE,14,16 10,MAWILE,14,16
#------------------------------- #-------------------------------
[050] # Rock Cave [050] # Rock Cave B1F
Cave,5 Cave,5
20,MAGNETON,14,16 20,MAGNETON,14,16
20,MAGNETON,14,17 20,MAGNETON,14,17
@@ -212,7 +212,7 @@ Cave,5
10,RIOLU,1 10,RIOLU,1
10,TYROGUE,1 10,TYROGUE,1
#------------------------------- #-------------------------------
[066] # Safari Zone [066] # Safari Zone outside
Land,21 Land,21
20,ABRA,12,15 20,ABRA,12,15
20,DODUO,13,15 20,DODUO,13,15
@@ -282,7 +282,7 @@ SuperRod
15,CORSOLA,15,18 15,CORSOLA,15,18
5,STARYU,15,17 5,STARYU,15,17
#------------------------------- #-------------------------------
[070] # Underwater [070] # Route 8 underwater
Land,21 Land,21
20,CHINCHOU,17,21 20,CHINCHOU,17,21
20,CLAMPERL,18,20 20,CLAMPERL,18,20

View File

@@ -2511,8 +2511,8 @@ Description = One of a variety of mysterious Mega Stones. Have Venusaur hold it,
Name = Charizardite X Name = Charizardite X
NamePlural = Charizardite Xs NamePlural = Charizardite Xs
Pocket = 1 Pocket = 1
BPPrice = 50
Price = 0 Price = 0
BPPrice = 50
Flags = MegaStone,Fling_80 Flags = MegaStone,Fling_80
Description = One of a variety of mysterious Mega Stones. Have Charizard hold it, and it will be able to Mega Evolve. Description = One of a variety of mysterious Mega Stones. Have Charizard hold it, and it will be able to Mega Evolve.
#------------------------------- #-------------------------------

View File

@@ -1,12 +1,12 @@
# See the documentation on the wiki to learn how to edit this file. # See the documentation on the wiki to learn how to edit this file.
#------------------------------- #-------------------------------
# Route 5 (41) - Route 4 (40) # Route 5 (41) - Route 4 Cycling Road (40)
41,N,0,40,S,0 41,N,0,40,S,0
# Route 5 (41) - Route 6 (45) # Route 5 (41) - Route 6 Cycling Road (45)
41,S,6,45,N,0 41,S,6,45,N,0
# Route 6 (44) - Route 1 (5) # Route 6 (44) - Route 1 (5)
44,S,43,5,N,0 44,S,43,5,N,0
# Safari Zone (66) - Route 1 (5) # Safari Zone outside (66) - Route 1 (5)
66,N,18,5,S,0 66,N,18,5,S,0
# Cedolan City (7) - Route 1 (5) # Cedolan City (7) - Route 1 (5)
7,S,0,5,N,2 7,S,0,5,N,2
@@ -14,11 +14,11 @@
2,N,0,5,S,4 2,N,0,5,S,4
# Cedolan City (7) - Route 6 (44) # Cedolan City (7) - Route 6 (44)
7,W,5,44,E,0 7,W,5,44,E,0
# Lappet Town (2) - Safari Zone (66) # Lappet Town (2) - Safari Zone outside (66)
2,W,0,66,E,0 2,W,0,66,E,0
# Route 8 (69) - Safari Zone (66) # Route 8 (69) - Safari Zone outside (66)
69,N,0,66,S,10 69,N,0,66,S,10
# Ingido Plateau (35) - Route 4 (39) # Ingido Plateau outside (35) - Route 4 (39)
35,W,11,39,E,0 35,W,11,39,E,0
# Cedolan City (7) - Lerucean Town (23) # Cedolan City (7) - Lerucean Town (23)
7,E,0,23,W,78 7,E,0,23,W,78
@@ -30,7 +30,7 @@
47,W,0,7,E,0 47,W,0,7,E,0
# Route 2 (21) - Cedolan City (7) # Route 2 (21) - Cedolan City (7)
21,S,0,7,N,21 21,S,0,7,N,21
# Route 3 (31) - Ingido Plateau (35) # Route 3 (31) - Ingido Plateau outside (35)
31,W,0,35,E,10 31,W,0,35,E,10
# Route 8 (69) - Lappet Town (2) # Route 8 (69) - Lappet Town (2)
69,N,12,2,S,0 69,N,12,2,S,0

View File

@@ -17,7 +17,6 @@ MapPosition = 0,13,12
#------------------------------- #-------------------------------
[004] # Pokémon Lab [004] # Pokémon Lab
Name = Pokémon Lab Name = Pokémon Lab
ShowArea = false
MapPosition = 0,13,12 MapPosition = 0,13,12
#------------------------------- #-------------------------------
[005] # Route 1 [005] # Route 1

View File

@@ -5284,6 +5284,7 @@ Evolutions = MISMAGIUS,Item,DUSKSTONE
#------------------------------- #-------------------------------
[UNOWN] [UNOWN]
Name = Unown Name = Unown
FormName = A
Types = PSYCHIC Types = PSYCHIC
BaseStats = 48,72,48,48,72,48 BaseStats = 48,72,48,48,72,48
GenderRatio = Genderless GenderRatio = Genderless
@@ -5304,7 +5305,6 @@ Shape = Head
Habitat = Rare Habitat = Rare
Category = Symbol Category = Symbol
Pokedex = This Pokémon is shaped like ancient text characters. Although research is ongoing, it is a mystery as to which came first, the ancient writings or the various Unown. Pokedex = This Pokémon is shaped like ancient text characters. Although research is ongoing, it is a mystery as to which came first, the ancient writings or the various Unown.
FormName = A
Generation = 2 Generation = 2
#------------------------------- #-------------------------------
[WOBBUFFET] [WOBBUFFET]
@@ -9249,6 +9249,7 @@ Generation = 3
#------------------------------- #-------------------------------
[CASTFORM] [CASTFORM]
Name = Castform Name = Castform
FormName = Normal Form
Types = NORMAL Types = NORMAL
BaseStats = 70,70,70,70,70,70 BaseStats = 70,70,70,70,70,70
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -9270,7 +9271,6 @@ Shape = Head
Habitat = Grassland Habitat = Grassland
Category = Weather Category = Weather
Pokedex = It alters its form depending on the weather. Changes in the climate such as the temperature and humidity appear to affect its cellular structure. Pokedex = It alters its form depending on the weather. Changes in the climate such as the temperature and humidity appear to affect its cellular structure.
FormName = Normal Form
Generation = 3 Generation = 3
WildItemCommon = MYSTICWATER WildItemCommon = MYSTICWATER
WildItemUncommon = MYSTICWATER WildItemUncommon = MYSTICWATER
@@ -10176,6 +10176,7 @@ WildItemRare = STARPIECE
#------------------------------- #-------------------------------
[DEOXYS] [DEOXYS]
Name = Deoxys Name = Deoxys
FormName = Normal Forme
Types = PSYCHIC Types = PSYCHIC
BaseStats = 50,150,50,150,150,50 BaseStats = 50,150,50,150,150,50
GenderRatio = Genderless GenderRatio = Genderless
@@ -10196,7 +10197,6 @@ Shape = Bipedal
Habitat = Rare Habitat = Rare
Category = DNA Category = DNA
Pokedex = A Pokémon that mutated from an extraterrestrial virus exposed to a laser beam. Its body is configured for superior agility and speed. Pokedex = A Pokémon that mutated from an extraterrestrial virus exposed to a laser beam. Its body is configured for superior agility and speed.
FormName = Normal Forme
Generation = 3 Generation = 3
Flags = Mythical Flags = Mythical
#------------------------------- #-------------------------------
@@ -10831,6 +10831,7 @@ Generation = 4
#------------------------------- #-------------------------------
[BURMY] [BURMY]
Name = Burmy Name = Burmy
FormName = Plant Cloak
Types = BUG Types = BUG
BaseStats = 40,29,45,36,29,45 BaseStats = 40,29,45,36,29,45
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -10851,13 +10852,13 @@ Color = Green
Shape = HeadBase Shape = HeadBase
Category = Bagworm Category = Bagworm
Pokedex = To shelter itself from cold, wintry winds, it covers itself with a cloak made of twigs and leaves. Pokedex = To shelter itself from cold, wintry winds, it covers itself with a cloak made of twigs and leaves.
FormName = Plant Cloak
Generation = 4 Generation = 4
Flags = InheritFormFromMother Flags = InheritFormFromMother
Evolutions = WORMADAM,LevelFemale,20,MOTHIM,LevelMale,20 Evolutions = WORMADAM,LevelFemale,20,MOTHIM,LevelMale,20
#------------------------------- #-------------------------------
[WORMADAM] [WORMADAM]
Name = Wormadam Name = Wormadam
FormName = Plant Cloak
Types = BUG,GRASS Types = BUG,GRASS
BaseStats = 60,59,85,36,79,105 BaseStats = 60,59,85,36,79,105
GenderRatio = AlwaysFemale GenderRatio = AlwaysFemale
@@ -10878,7 +10879,6 @@ Color = Green
Shape = HeadBase Shape = HeadBase
Category = Bagworm Category = Bagworm
Pokedex = When Burmy evolved, its cloak became a part of this Pokémon's body. The cloak is never shed. Pokedex = When Burmy evolved, its cloak became a part of this Pokémon's body. The cloak is never shed.
FormName = Plant Cloak
Generation = 4 Generation = 4
Flags = InheritFormFromMother Flags = InheritFormFromMother
WildItemUncommon = SILVERPOWDER WildItemUncommon = SILVERPOWDER
@@ -11063,6 +11063,7 @@ Evolutions = CHERRIM,Level,25
#------------------------------- #-------------------------------
[CHERRIM] [CHERRIM]
Name = Cherrim Name = Cherrim
FormName = Overcast Form
Types = GRASS Types = GRASS
BaseStats = 70,60,70,85,87,78 BaseStats = 70,60,70,85,87,78
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -11082,12 +11083,12 @@ Color = Purple
Shape = HeadLegs Shape = HeadLegs
Category = Blossom Category = Blossom
Pokedex = Its folded petals are pretty tough. Bird Pokémon can peck at them all they want, and Cherrim won't be bothered at all. Pokedex = Its folded petals are pretty tough. Bird Pokémon can peck at them all they want, and Cherrim won't be bothered at all.
FormName = Overcast Form
Generation = 4 Generation = 4
WildItemUncommon = MIRACLESEED WildItemUncommon = MIRACLESEED
#------------------------------- #-------------------------------
[SHELLOS] [SHELLOS]
Name = Shellos Name = Shellos
FormName = West Sea
Types = WATER Types = WATER
BaseStats = 76,48,48,34,57,62 BaseStats = 76,48,48,34,57,62
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -11109,13 +11110,13 @@ Color = Purple
Shape = Serpentine Shape = Serpentine
Category = Sea Slug Category = Sea Slug
Pokedex = This Pokémon's habitat shapes its physique. According to some theories, life in warm ocean waters causes this variation to develop. Pokedex = This Pokémon's habitat shapes its physique. According to some theories, life in warm ocean waters causes this variation to develop.
FormName = West Sea
Generation = 4 Generation = 4
Flags = InheritFormFromMother Flags = InheritFormFromMother
Evolutions = GASTRODON,Level,30 Evolutions = GASTRODON,Level,30
#------------------------------- #-------------------------------
[GASTRODON] [GASTRODON]
Name = Gastrodon Name = Gastrodon
FormName = West Sea
Types = WATER,GROUND Types = WATER,GROUND
BaseStats = 111,83,68,39,92,82 BaseStats = 111,83,68,39,92,82
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -11136,7 +11137,6 @@ Color = Purple
Shape = Serpentine Shape = Serpentine
Category = Sea Slug Category = Sea Slug
Pokedex = Its search for food sometimes leads it onto land, where it leaves behind a sticky trail of slime as it passes through. Pokedex = Its search for food sometimes leads it onto land, where it leaves behind a sticky trail of slime as it passes through.
FormName = West Sea
Generation = 4 Generation = 4
Flags = InheritFormFromMother Flags = InheritFormFromMother
#------------------------------- #-------------------------------
@@ -12526,6 +12526,7 @@ Generation = 4
#------------------------------- #-------------------------------
[ROTOM] [ROTOM]
Name = Rotom Name = Rotom
FormName = Rotom
Types = ELECTRIC,GHOST Types = ELECTRIC,GHOST
BaseStats = 50,50,77,91,95,77 BaseStats = 50,50,77,91,95,77
GenderRatio = Genderless GenderRatio = Genderless
@@ -12545,7 +12546,6 @@ Color = Red
Shape = Head Shape = Head
Category = Plasma Category = Plasma
Pokedex = Its body is composed of plasma. It is known to infiltrate electronic devices and wreak havoc. Pokedex = Its body is composed of plasma. It is known to infiltrate electronic devices and wreak havoc.
FormName = Rotom
Generation = 4 Generation = 4
#------------------------------- #-------------------------------
[UXIE] [UXIE]
@@ -12721,6 +12721,7 @@ Flags = Legendary
#------------------------------- #-------------------------------
[GIRATINA] [GIRATINA]
Name = Giratina Name = Giratina
FormName = Altered Forme
Types = GHOST,DRAGON Types = GHOST,DRAGON
BaseStats = 150,100,120,90,100,120 BaseStats = 150,100,120,90,100,120
GenderRatio = Genderless GenderRatio = Genderless
@@ -12741,7 +12742,6 @@ Color = Black
Shape = Multiped Shape = Multiped
Category = Renegade Category = Renegade
Pokedex = A Pokémon that is said to live in a world on the reverse side of ours. It appears in an ancient cemetery. Pokedex = A Pokémon that is said to live in a world on the reverse side of ours. It appears in an ancient cemetery.
FormName = Altered Forme
Generation = 4 Generation = 4
Flags = Legendary Flags = Legendary
#------------------------------- #-------------------------------
@@ -12844,6 +12844,7 @@ Flags = Mythical
#------------------------------- #-------------------------------
[SHAYMIN] [SHAYMIN]
Name = Shaymin Name = Shaymin
FormName = Land Forme
Types = GRASS Types = GRASS
BaseStats = 100,100,100,100,100,100 BaseStats = 100,100,100,100,100,100
GenderRatio = Genderless GenderRatio = Genderless
@@ -12863,7 +12864,6 @@ Color = Green
Shape = Quadruped Shape = Quadruped
Category = Gratitude Category = Gratitude
Pokedex = It lives in flower patches and avoids detection by curling up to look like a flowering plant. Pokedex = It lives in flower patches and avoids detection by curling up to look like a flowering plant.
FormName = Land Forme
Generation = 4 Generation = 4
Flags = Mythical Flags = Mythical
WildItemCommon = LUMBERRY WildItemCommon = LUMBERRY
@@ -12872,6 +12872,7 @@ WildItemRare = LUMBERRY
#------------------------------- #-------------------------------
[ARCEUS] [ARCEUS]
Name = Arceus Name = Arceus
FormName = Normal Type
Types = NORMAL Types = NORMAL
BaseStats = 120,120,120,120,120,120 BaseStats = 120,120,120,120,120,120
GenderRatio = Genderless GenderRatio = Genderless
@@ -12891,7 +12892,6 @@ Color = White
Shape = Quadruped Shape = Quadruped
Category = Alpha Category = Alpha
Pokedex = It is described in mythology as the Pokémon that shaped the universe with its 1,000 arms. Pokedex = It is described in mythology as the Pokémon that shaped the universe with its 1,000 arms.
FormName = Normal Type
Generation = 4 Generation = 4
Flags = Mythical Flags = Mythical
#------------------------------- #-------------------------------
@@ -14314,6 +14314,7 @@ WildItemUncommon = ABSORBBULB
#------------------------------- #-------------------------------
[BASCULIN] [BASCULIN]
Name = Basculin Name = Basculin
FormName = Red-Striped
Types = WATER Types = WATER
BaseStats = 70,92,65,98,80,55 BaseStats = 70,92,65,98,80,55
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -14335,7 +14336,6 @@ Color = Green
Shape = Finned Shape = Finned
Category = Hostile Category = Hostile
Pokedex = Savage, violent Pokémon, red and blue Basculin are always fighting each other over territory. Pokedex = Savage, violent Pokémon, red and blue Basculin are always fighting each other over territory.
FormName = Red-Striped
Generation = 5 Generation = 5
Flags = InheritFormFromMother Flags = InheritFormFromMother
WildItemUncommon = DEEPSEATOOTH WildItemUncommon = DEEPSEATOOTH
@@ -14446,6 +14446,7 @@ Evolutions = DARMANITAN,Level,35
#------------------------------- #-------------------------------
[DARMANITAN] [DARMANITAN]
Name = Darmanitan Name = Darmanitan
FormName = Standard Mode
Types = FIRE Types = FIRE
BaseStats = 105,140,55,95,30,55 BaseStats = 105,140,55,95,30,55
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -14466,7 +14467,6 @@ Color = Red
Shape = Quadruped Shape = Quadruped
Category = Blazing Category = Blazing
Pokedex = When weakened in battle, it transforms into a stone statue. Then it sharpens its mind and fights on mentally. Pokedex = When weakened in battle, it transforms into a stone statue. Then it sharpens its mind and fights on mentally.
FormName = Standard Mode
Generation = 5 Generation = 5
#------------------------------- #-------------------------------
[MARACTUS] [MARACTUS]
@@ -15203,6 +15203,7 @@ WildItemCommon = NEVERMELTICE
#------------------------------- #-------------------------------
[DEERLING] [DEERLING]
Name = Deerling Name = Deerling
FormName = Spring Form
Types = NORMAL,GRASS Types = NORMAL,GRASS
BaseStats = 60,60,50,75,40,50 BaseStats = 60,60,50,75,40,50
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -15224,12 +15225,12 @@ Color = Pink
Shape = Quadruped Shape = Quadruped
Category = Season Category = Season
Pokedex = The turning of the seasons changes the color and scent of this Pokémon's fur. People use it to mark the seasons. Pokedex = The turning of the seasons changes the color and scent of this Pokémon's fur. People use it to mark the seasons.
FormName = Spring Form
Generation = 5 Generation = 5
Evolutions = SAWSBUCK,Level,34 Evolutions = SAWSBUCK,Level,34
#------------------------------- #-------------------------------
[SAWSBUCK] [SAWSBUCK]
Name = Sawsbuck Name = Sawsbuck
FormName = Spring Form
Types = NORMAL,GRASS Types = NORMAL,GRASS
BaseStats = 80,100,70,95,60,70 BaseStats = 80,100,70,95,60,70
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -15250,7 +15251,6 @@ Color = Brown
Shape = Quadruped Shape = Quadruped
Category = Season Category = Season
Pokedex = The plants growing on its horns change according to the season. The leaders of the herd possess magnificent horns. Pokedex = The plants growing on its horns change according to the season. The leaders of the herd possess magnificent horns.
FormName = Spring Form
Generation = 5 Generation = 5
#------------------------------- #-------------------------------
[EMOLGA] [EMOLGA]
@@ -16603,6 +16603,7 @@ Flags = Legendary
#------------------------------- #-------------------------------
[TORNADUS] [TORNADUS]
Name = Tornadus Name = Tornadus
FormName = Incarnate Forme
Types = FLYING Types = FLYING
BaseStats = 79,115,70,111,125,80 BaseStats = 79,115,70,111,125,80
GenderRatio = AlwaysMale GenderRatio = AlwaysMale
@@ -16623,12 +16624,12 @@ Color = Green
Shape = HeadArms Shape = HeadArms
Category = Cyclone Category = Cyclone
Pokedex = Tornadus expels massive energy from its tail, causing severe storms. Its power is great enough to blow houses away. Pokedex = Tornadus expels massive energy from its tail, causing severe storms. Its power is great enough to blow houses away.
FormName = Incarnate Forme
Generation = 5 Generation = 5
Flags = Legendary Flags = Legendary
#------------------------------- #-------------------------------
[THUNDURUS] [THUNDURUS]
Name = Thundurus Name = Thundurus
FormName = Incarnate Forme
Types = ELECTRIC,FLYING Types = ELECTRIC,FLYING
BaseStats = 79,115,70,111,125,80 BaseStats = 79,115,70,111,125,80
GenderRatio = AlwaysMale GenderRatio = AlwaysMale
@@ -16649,7 +16650,6 @@ Color = Blue
Shape = HeadArms Shape = HeadArms
Category = Bolt Strike Category = Bolt Strike
Pokedex = The spikes on its tail discharge immense bolts of lightning. It flies around the Unova region firing off lightning bolts. Pokedex = The spikes on its tail discharge immense bolts of lightning. It flies around the Unova region firing off lightning bolts.
FormName = Incarnate Forme
Generation = 5 Generation = 5
Flags = Legendary Flags = Legendary
#------------------------------- #-------------------------------
@@ -16703,6 +16703,7 @@ Flags = Legendary
#------------------------------- #-------------------------------
[LANDORUS] [LANDORUS]
Name = Landorus Name = Landorus
FormName = Incarnate Forme
Types = GROUND,FLYING Types = GROUND,FLYING
BaseStats = 89,125,90,101,115,80 BaseStats = 89,125,90,101,115,80
GenderRatio = AlwaysMale GenderRatio = AlwaysMale
@@ -16723,7 +16724,6 @@ Color = Brown
Shape = HeadArms Shape = HeadArms
Category = Abundance Category = Abundance
Pokedex = The energy that comes pouring from its tail increases the nutrition in the soil, making crops grow to great size. Pokedex = The energy that comes pouring from its tail increases the nutrition in the soil, making crops grow to great size.
FormName = Incarnate Forme
Generation = 5 Generation = 5
Flags = Legendary Flags = Legendary
#------------------------------- #-------------------------------
@@ -16753,6 +16753,7 @@ Flags = Legendary
#------------------------------- #-------------------------------
[KELDEO] [KELDEO]
Name = Keldeo Name = Keldeo
FormName = Ordinary Form
Types = WATER,FIGHTING Types = WATER,FIGHTING
BaseStats = 91,72,90,108,129,90 BaseStats = 91,72,90,108,129,90
GenderRatio = Genderless GenderRatio = Genderless
@@ -16772,12 +16773,12 @@ Color = Yellow
Shape = Quadruped Shape = Quadruped
Category = Colt Category = Colt
Pokedex = It crosses the world, running over the surfaces of oceans and rivers. It appears at scenic waterfronts. Pokedex = It crosses the world, running over the surfaces of oceans and rivers. It appears at scenic waterfronts.
FormName = Ordinary Form
Generation = 5 Generation = 5
Flags = Mythical Flags = Mythical
#------------------------------- #-------------------------------
[MELOETTA] [MELOETTA]
Name = Meloetta Name = Meloetta
FormName = Aria Forme
Types = NORMAL,PSYCHIC Types = NORMAL,PSYCHIC
BaseStats = 100,77,77,90,128,128 BaseStats = 100,77,77,90,128,128
GenderRatio = Genderless GenderRatio = Genderless
@@ -16797,7 +16798,6 @@ Color = White
Shape = Bipedal Shape = Bipedal
Category = Melody Category = Melody
Pokedex = Many famous songs have been inspired by the melodies that Meloetta plays. Pokedex = Many famous songs have been inspired by the melodies that Meloetta plays.
FormName = Aria Forme
Generation = 5 Generation = 5
Flags = Mythical Flags = Mythical
WildItemCommon = STARPIECE WildItemCommon = STARPIECE
@@ -16806,6 +16806,7 @@ WildItemRare = STARPIECE
#------------------------------- #-------------------------------
[GENESECT] [GENESECT]
Name = Genesect Name = Genesect
FormName = Normal
Types = BUG,STEEL Types = BUG,STEEL
BaseStats = 71,120,95,99,120,95 BaseStats = 71,120,95,99,120,95
GenderRatio = Genderless GenderRatio = Genderless
@@ -16825,7 +16826,6 @@ Color = Purple
Shape = Bipedal Shape = Bipedal
Category = Paleozoic Category = Paleozoic
Pokedex = This ancient bug Pokémon was altered by Team Plasma. They upgraded the cannon on its back. Pokedex = This ancient bug Pokémon was altered by Team Plasma. They upgraded the cannon on its back.
FormName = Normal
Generation = 5 Generation = 5
Flags = Mythical Flags = Mythical
#------------------------------- #-------------------------------
@@ -17232,6 +17232,7 @@ Evolutions = VIVILLON,Level,12
#------------------------------- #-------------------------------
[VIVILLON] [VIVILLON]
Name = Vivillon Name = Vivillon
FormName = Archipelago Pattern
Types = BUG,FLYING Types = BUG,FLYING
BaseStats = 80,52,50,89,90,50 BaseStats = 80,52,50,89,90,50
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -17252,7 +17253,6 @@ Color = White
Shape = MultiWinged Shape = MultiWinged
Category = Scale Category = Scale
Pokedex = Vivillon with many different patterns are found all over the world. These patterns are affected by the climate of their habitat. Pokedex = Vivillon with many different patterns are found all over the world. These patterns are affected by the climate of their habitat.
FormName = Archipelago Pattern
Generation = 6 Generation = 6
#------------------------------- #-------------------------------
[LITLEO] [LITLEO]
@@ -17307,6 +17307,7 @@ Generation = 6
#------------------------------- #-------------------------------
[FLABEBE] [FLABEBE]
Name = Flabébé Name = Flabébé
FormName = Red Flower
Types = FAIRY Types = FAIRY
BaseStats = 44,38,39,42,61,79 BaseStats = 44,38,39,42,61,79
GenderRatio = AlwaysFemale GenderRatio = AlwaysFemale
@@ -17328,13 +17329,13 @@ Color = White
Shape = HeadArms Shape = HeadArms
Category = Single Bloom Category = Single Bloom
Pokedex = When it finds a flower it likes, it dwells on that flower its whole life long. It floats in the wind's embrace with an untroubled heart. Pokedex = When it finds a flower it likes, it dwells on that flower its whole life long. It floats in the wind's embrace with an untroubled heart.
FormName = Red Flower
Generation = 6 Generation = 6
Flags = InheritFormFromMother Flags = InheritFormFromMother
Evolutions = FLOETTE,Level,19 Evolutions = FLOETTE,Level,19
#------------------------------- #-------------------------------
[FLOETTE] [FLOETTE]
Name = Floette Name = Floette
FormName = Red Flower
Types = FAIRY Types = FAIRY
BaseStats = 54,45,47,52,75,98 BaseStats = 54,45,47,52,75,98
GenderRatio = AlwaysFemale GenderRatio = AlwaysFemale
@@ -17355,13 +17356,13 @@ Color = White
Shape = HeadArms Shape = HeadArms
Category = Single Bloom Category = Single Bloom
Pokedex = It flutters around fields of flowers and cares for flowers that are starting to wilt. It draws out the power of flowers to battle. Pokedex = It flutters around fields of flowers and cares for flowers that are starting to wilt. It draws out the power of flowers to battle.
FormName = Red Flower
Generation = 6 Generation = 6
Flags = InheritFormFromMother Flags = InheritFormFromMother
Evolutions = FLORGES,Item,SHINYSTONE Evolutions = FLORGES,Item,SHINYSTONE
#------------------------------- #-------------------------------
[FLORGES] [FLORGES]
Name = Florges Name = Florges
FormName = Red Flower
Types = FAIRY Types = FAIRY
BaseStats = 78,65,68,75,112,154 BaseStats = 78,65,68,75,112,154
GenderRatio = AlwaysFemale GenderRatio = AlwaysFemale
@@ -17382,7 +17383,6 @@ Color = White
Shape = HeadArms Shape = HeadArms
Category = Garden Category = Garden
Pokedex = It claims exquisite flower gardens as its territory, and it obtains power from basking in the energy emitted by flowering plants. Pokedex = It claims exquisite flower gardens as its territory, and it obtains power from basking in the energy emitted by flowering plants.
FormName = Red Flower
Generation = 6 Generation = 6
Flags = InheritFormFromMother Flags = InheritFormFromMother
#------------------------------- #-------------------------------
@@ -17490,6 +17490,7 @@ WildItemUncommon = MENTALHERB
#------------------------------- #-------------------------------
[FURFROU] [FURFROU]
Name = Furfrou Name = Furfrou
FormName = Natural Form
Types = NORMAL Types = NORMAL
BaseStats = 75,80,60,102,65,90 BaseStats = 75,80,60,102,65,90
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -17510,7 +17511,6 @@ Color = White
Shape = Quadruped Shape = Quadruped
Category = Poodle Category = Poodle
Pokedex = Trimming its fluffy fur not only makes it more elegant but also increases the swiftness of its movements. Pokedex = Trimming its fluffy fur not only makes it more elegant but also increases the swiftness of its movements.
FormName = Natural Form
Generation = 6 Generation = 6
#------------------------------- #-------------------------------
[ESPURR] [ESPURR]
@@ -17541,6 +17541,7 @@ Evolutions = MEOWSTIC,Level,25
#------------------------------- #-------------------------------
[MEOWSTIC] [MEOWSTIC]
Name = Meowstic Name = Meowstic
FormName = Male
Types = PSYCHIC Types = PSYCHIC
BaseStats = 74,48,76,104,83,81 BaseStats = 74,48,76,104,83,81
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -17561,7 +17562,6 @@ Color = Blue
Shape = BipedalTail Shape = BipedalTail
Category = Constraint Category = Constraint
Pokedex = Revealing the eyelike patterns on the insides of its ears will unleash its psychic powers. It normally keeps the patterns hidden, however. Pokedex = Revealing the eyelike patterns on the insides of its ears will unleash its psychic powers. It normally keeps the patterns hidden, however.
FormName = Male
Generation = 6 Generation = 6
#------------------------------- #-------------------------------
[HONEDGE] [HONEDGE]
@@ -17615,6 +17615,7 @@ Evolutions = AEGISLASH,Item,DUSKSTONE
#------------------------------- #-------------------------------
[AEGISLASH] [AEGISLASH]
Name = Aegislash Name = Aegislash
FormName = Shield Forme
Types = STEEL,GHOST Types = STEEL,GHOST
BaseStats = 60,50,140,60,50,140 BaseStats = 60,50,140,60,50,140
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -17634,7 +17635,6 @@ Color = Brown
Shape = HeadBase Shape = HeadBase
Category = Royal Sword Category = Royal Sword
Pokedex = In this defensive stance, Aegislash uses its steel body and a force field of spectral power to reduce the damage of any attack. Pokedex = In this defensive stance, Aegislash uses its steel body and a force field of spectral power to reduce the damage of any attack.
FormName = Shield Forme
Generation = 6 Generation = 6
#------------------------------- #-------------------------------
[SPRITZEE] [SPRITZEE]
@@ -18338,6 +18338,7 @@ Generation = 6
#------------------------------- #-------------------------------
[PUMPKABOO] [PUMPKABOO]
Name = Pumpkaboo Name = Pumpkaboo
FormName = Small Size
Types = GHOST,GRASS Types = GHOST,GRASS
BaseStats = 44,66,70,56,44,55 BaseStats = 44,66,70,56,44,55
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -18358,13 +18359,13 @@ Color = Brown
Shape = Head Shape = Head
Category = Pumpkin Category = Pumpkin
Pokedex = When taking spirits to the afterlife, small Pumpkaboo prefer the spirits of children to those of adults. Pokedex = When taking spirits to the afterlife, small Pumpkaboo prefer the spirits of children to those of adults.
FormName = Small Size
Generation = 6 Generation = 6
Flags = InheritFormFromMother Flags = InheritFormFromMother
Evolutions = GOURGEIST,Trade, Evolutions = GOURGEIST,Trade,
#------------------------------- #-------------------------------
[GOURGEIST] [GOURGEIST]
Name = Gourgeist Name = Gourgeist
FormName = Small Size
Types = GHOST,GRASS Types = GHOST,GRASS
BaseStats = 55,85,122,99,58,75 BaseStats = 55,85,122,99,58,75
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -18384,7 +18385,6 @@ Color = Brown
Shape = HeadBase Shape = HeadBase
Category = Pumpkin Category = Pumpkin
Pokedex = Small Gourgeist pretend to be children to fool adults. Anyone who falls for the act gets carried away to the hereafter. Pokedex = Small Gourgeist pretend to be children to fool adults. Anyone who falls for the act gets carried away to the hereafter.
FormName = Small Size
Generation = 6 Generation = 6
Flags = InheritFormFromMother Flags = InheritFormFromMother
#------------------------------- #-------------------------------
@@ -18490,6 +18490,7 @@ Generation = 6
#------------------------------- #-------------------------------
[XERNEAS] [XERNEAS]
Name = Xerneas Name = Xerneas
FormName = Neutral Mode
Types = FAIRY Types = FAIRY
BaseStats = 126,131,95,99,131,98 BaseStats = 126,131,95,99,131,98
GenderRatio = Genderless GenderRatio = Genderless
@@ -18509,7 +18510,6 @@ Color = Blue
Shape = Quadruped Shape = Quadruped
Category = Life Category = Life
Pokedex = Legends say it can share eternal life. It slept for a thousand years in the form of a tree before its revival. Pokedex = Legends say it can share eternal life. It slept for a thousand years in the form of a tree before its revival.
FormName = Neutral Mode
Generation = 6 Generation = 6
Flags = Legendary Flags = Legendary
#------------------------------- #-------------------------------
@@ -18539,6 +18539,7 @@ Flags = Legendary
#------------------------------- #-------------------------------
[ZYGARDE] [ZYGARDE]
Name = Zygarde Name = Zygarde
FormName = 50% Forme
Types = DRAGON,GROUND Types = DRAGON,GROUND
BaseStats = 108,100,121,95,81,95 BaseStats = 108,100,121,95,81,95
GenderRatio = Genderless GenderRatio = Genderless
@@ -18558,7 +18559,6 @@ Color = Green
Shape = Serpentine Shape = Serpentine
Category = Order Category = Order
Pokedex = It's thought to be monitoring the ecosystem. There are rumors that even greater power lies hidden within it. Pokedex = It's thought to be monitoring the ecosystem. There are rumors that even greater power lies hidden within it.
FormName = 50% Forme
Generation = 6 Generation = 6
Flags = Legendary Flags = Legendary
#------------------------------- #-------------------------------
@@ -18588,6 +18588,7 @@ Flags = Mythical
#------------------------------- #-------------------------------
[HOOPA] [HOOPA]
Name = Hoopa Name = Hoopa
FormName = Hoopa Confined
Types = PSYCHIC,GHOST Types = PSYCHIC,GHOST
BaseStats = 80,110,60,70,150,130 BaseStats = 80,110,60,70,150,130
GenderRatio = Genderless GenderRatio = Genderless
@@ -18607,7 +18608,6 @@ Color = Purple
Shape = HeadArms Shape = HeadArms
Category = Mischief Category = Mischief
Pokedex = This troublemaker sends anything and everything to faraway places using its loop, which can warp space. Pokedex = This troublemaker sends anything and everything to faraway places using its loop, which can warp space.
FormName = Hoopa Confined
Generation = 6 Generation = 6
Flags = Mythical Flags = Mythical
#------------------------------- #-------------------------------
@@ -19117,6 +19117,7 @@ WildItemUncommon = CHERIBERRY
#------------------------------- #-------------------------------
[ORICORIO] [ORICORIO]
Name = Oricorio Name = Oricorio
FormName = Baile Style
Types = FIRE,FLYING Types = FIRE,FLYING
BaseStats = 75,70,70,93,98,70 BaseStats = 75,70,70,93,98,70
GenderRatio = Female75Percent GenderRatio = Female75Percent
@@ -19137,7 +19138,6 @@ Color = Red
Shape = Winged Shape = Winged
Category = Dancing Category = Dancing
Pokedex = It beats its wings together to create fire. As it moves in the steps of its beautiful dance, it bathes opponents in intense flames. Pokedex = It beats its wings together to create fire. As it moves in the steps of its beautiful dance, it bathes opponents in intense flames.
FormName = Baile Style
Generation = 7 Generation = 7
Flags = InheritFormFromMother Flags = InheritFormFromMother
WildItemUncommon = HONEY WildItemUncommon = HONEY
@@ -19222,6 +19222,7 @@ Evolutions = LYCANROC,Level,25
#------------------------------- #-------------------------------
[LYCANROC] [LYCANROC]
Name = Lycanroc Name = Lycanroc
FormName = Midday Form
Types = ROCK Types = ROCK
BaseStats = 75,115,65,112,55,65 BaseStats = 75,115,65,112,55,65
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -19242,11 +19243,11 @@ Color = Brown
Shape = Quadruped Shape = Quadruped
Category = Wolf Category = Wolf
Pokedex = Its quick movements confuse its enemies. Well equipped with claws and fangs, it also uses the sharp rocks in its mane as weapons. Pokedex = Its quick movements confuse its enemies. Well equipped with claws and fangs, it also uses the sharp rocks in its mane as weapons.
FormName = Midday Form
Generation = 7 Generation = 7
#------------------------------- #-------------------------------
[WISHIWASHI] [WISHIWASHI]
Name = Wishiwashi Name = Wishiwashi
FormName = Solo Form
Types = WATER Types = WATER
BaseStats = 45,20,20,40,25,25 BaseStats = 45,20,20,40,25,25
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -19267,7 +19268,6 @@ Color = Blue
Shape = Finned Shape = Finned
Category = Small Fry Category = Small Fry
Pokedex = It's awfully weak and notably tasty, so everyone is always out to get it. As it happens, anyone trying to bully it receives a painful lesson. Pokedex = It's awfully weak and notably tasty, so everyone is always out to get it. As it happens, anyone trying to bully it receives a painful lesson.
FormName = Solo Form
Generation = 7 Generation = 7
#------------------------------- #-------------------------------
[MAREANIE] [MAREANIE]
@@ -19940,6 +19940,7 @@ Evolutions = SILVALLY,Happiness,
#------------------------------- #-------------------------------
[SILVALLY] [SILVALLY]
Name = Silvally Name = Silvally
FormName = Type: Normal
Types = NORMAL Types = NORMAL
BaseStats = 95,95,95,95,95,95 BaseStats = 95,95,95,95,95,95
GenderRatio = Genderless GenderRatio = Genderless
@@ -19959,12 +19960,12 @@ Color = Gray
Shape = Quadruped Shape = Quadruped
Category = Synthetic Category = Synthetic
Pokedex = Its trust in its partner is what awakens it. This Pokémon is capable of changing its type, a flexibility that is well displayed in battle. Pokedex = Its trust in its partner is what awakens it. This Pokémon is capable of changing its type, a flexibility that is well displayed in battle.
FormName = Type: Normal
Generation = 7 Generation = 7
Flags = Legendary Flags = Legendary
#------------------------------- #-------------------------------
[MINIOR] [MINIOR]
Name = Minior Name = Minior
FormName = Meteor Form
Types = ROCK,FLYING Types = ROCK,FLYING
BaseStats = 60,60,100,60,60,100 BaseStats = 60,60,100,60,60,100
GenderRatio = Genderless GenderRatio = Genderless
@@ -19984,7 +19985,6 @@ Color = Brown
Shape = Head Shape = Head
Category = Meteor Category = Meteor
Pokedex = Originally making its home in the ozone layer, it hurtles to the ground when the shell enclosing its body grows too heavy. Pokedex = Originally making its home in the ozone layer, it hurtles to the ground when the shell enclosing its body grows too heavy.
FormName = Meteor Form
Generation = 7 Generation = 7
WildItemUncommon = STARPIECE WildItemUncommon = STARPIECE
#------------------------------- #-------------------------------
@@ -20065,6 +20065,7 @@ WildItemUncommon = ELECTRICSEED
#------------------------------- #-------------------------------
[MIMIKYU] [MIMIKYU]
Name = Mimikyu Name = Mimikyu
FormName = Disguised Form
Types = GHOST,FAIRY Types = GHOST,FAIRY
BaseStats = 55,90,80,96,50,105 BaseStats = 55,90,80,96,50,105
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -20085,7 +20086,6 @@ Color = Yellow
Shape = Serpentine Shape = Serpentine
Category = Disguise Category = Disguise
Pokedex = A lonely Pokémon, it conceals its terrifying appearance beneath an old rag so it can get closer to people and other Pokémon. Pokedex = A lonely Pokémon, it conceals its terrifying appearance beneath an old rag so it can get closer to people and other Pokémon.
FormName = Disguised Form
Generation = 7 Generation = 7
WildItemUncommon = CHESTOBERRY WildItemUncommon = CHESTOBERRY
#------------------------------- #-------------------------------
@@ -21828,6 +21828,7 @@ Evolutions = TOXTRICITY,Level,30
#------------------------------- #-------------------------------
[TOXTRICITY] [TOXTRICITY]
Name = Toxtricity Name = Toxtricity
FormName = Amped Form
Types = ELECTRIC,POISON Types = ELECTRIC,POISON
BaseStats = 75,98,70,75,114,70 BaseStats = 75,98,70,75,114,70
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -21848,7 +21849,6 @@ Color = Purple
Shape = BipedalTail Shape = BipedalTail
Category = Punk Category = Punk
Pokedex = When this Pokémon sounds as if it's strumming a guitar, it's actually clawing at the protrusions on its chest to generate electricity. Pokedex = When this Pokémon sounds as if it's strumming a guitar, it's actually clawing at the protrusions on its chest to generate electricity.
FormName = Amped Form
Generation = 8 Generation = 8
#------------------------------- #-------------------------------
[SIZZLIPEDE] [SIZZLIPEDE]
@@ -21953,6 +21953,7 @@ Generation = 8
#------------------------------- #-------------------------------
[SINISTEA] [SINISTEA]
Name = Sinistea Name = Sinistea
FormName = Phony Form
Types = GHOST Types = GHOST
BaseStats = 40,45,45,50,74,54 BaseStats = 40,45,45,50,74,54
GenderRatio = Genderless GenderRatio = Genderless
@@ -21973,12 +21974,12 @@ Color = Purple
Shape = Head Shape = Head
Category = Black Tea Category = Black Tea
Pokedex = The teacup in which this Pokémon makes its home is a famous piece of antique tableware. Many forgeries are in circulation. Pokedex = The teacup in which this Pokémon makes its home is a famous piece of antique tableware. Many forgeries are in circulation.
FormName = Phony Form
Generation = 8 Generation = 8
Evolutions = POLTEAGEIST,Item,CRACKEDPOT Evolutions = POLTEAGEIST,Item,CRACKEDPOT
#------------------------------- #-------------------------------
[POLTEAGEIST] [POLTEAGEIST]
Name = Polteageist Name = Polteageist
FormName = Phony Form
Types = GHOST Types = GHOST
BaseStats = 60,65,65,70,134,114 BaseStats = 60,65,65,70,134,114
GenderRatio = Genderless GenderRatio = Genderless
@@ -21999,7 +22000,6 @@ Color = Purple
Shape = Head Shape = Head
Category = Black Tea Category = Black Tea
Pokedex = This species lives in antique teapots. Most pots are forgeries, but on rare occasions, an authentic work is found. Pokedex = This species lives in antique teapots. Most pots are forgeries, but on rare occasions, an authentic work is found.
FormName = Phony Form
Generation = 8 Generation = 8
#------------------------------- #-------------------------------
[HATENNA] [HATENNA]
@@ -22335,6 +22335,7 @@ Evolutions = ALCREMIE,HoldItem,STRAWBERRYSWEET,ALCREMIE,HoldItem,BERRYSWEET,ALCR
#------------------------------- #-------------------------------
[ALCREMIE] [ALCREMIE]
Name = Alcremie Name = Alcremie
FormName = Vanilla Cream
Types = FAIRY Types = FAIRY
BaseStats = 65,60,75,64,110,121 BaseStats = 65,60,75,64,110,121
GenderRatio = AlwaysFemale GenderRatio = AlwaysFemale
@@ -22355,7 +22356,6 @@ Color = White
Shape = HeadBase Shape = HeadBase
Category = Cream Category = Cream
Pokedex = When Alcremie is content, the cream it secretes from its hands becomes sweeter and richer. Pokedex = When Alcremie is content, the cream it secretes from its hands becomes sweeter and richer.
FormName = Vanilla Cream
Generation = 8 Generation = 8
#------------------------------- #-------------------------------
[FALINKS] [FALINKS]
@@ -22484,6 +22484,7 @@ Generation = 8
#------------------------------- #-------------------------------
[EISCUE] [EISCUE]
Name = Eiscue Name = Eiscue
FormName = Ice Face
Types = ICE Types = ICE
BaseStats = 75,80,110,50,65,90 BaseStats = 75,80,110,50,65,90
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -22504,11 +22505,11 @@ Color = Blue
Shape = BipedalTail Shape = BipedalTail
Category = Penguin Category = Penguin
Pokedex = It drifted in on the flow of ocean waters from a frigid place. It keeps its head iced constantly to make sure it stays nice and cold. Pokedex = It drifted in on the flow of ocean waters from a frigid place. It keeps its head iced constantly to make sure it stays nice and cold.
FormName = Ice Face
Generation = 8 Generation = 8
#------------------------------- #-------------------------------
[INDEEDEE] [INDEEDEE]
Name = Indeedee Name = Indeedee
FormName = Male
Types = PSYCHIC,NORMAL Types = PSYCHIC,NORMAL
BaseStats = 60,65,55,95,105,95 BaseStats = 60,65,55,95,105,95
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -22530,11 +22531,11 @@ Color = Purple
Shape = BipedalTail Shape = BipedalTail
Category = Emotion Category = Emotion
Pokedex = It uses the horns on its head to sense the emotions of others. Males will act as valets for those they serve, looking after their every need. Pokedex = It uses the horns on its head to sense the emotions of others. Males will act as valets for those they serve, looking after their every need.
FormName = Male
Generation = 8 Generation = 8
#------------------------------- #-------------------------------
[MORPEKO] [MORPEKO]
Name = Morpeko Name = Morpeko
FormName = Full Belly Mode
Types = ELECTRIC,DARK Types = ELECTRIC,DARK
BaseStats = 58,95,58,97,70,58 BaseStats = 58,95,58,97,70,58
GenderRatio = Female50Percent GenderRatio = Female50Percent
@@ -22555,7 +22556,6 @@ Color = Yellow
Shape = Bipedal Shape = Bipedal
Category = Two-Sided Category = Two-Sided
Pokedex = As it eats the seeds stored up in its pocket-like pouches, this Pokémon is not just satisfying its constant hunger. It's also generating electricity. Pokedex = As it eats the seeds stored up in its pocket-like pouches, this Pokémon is not just satisfying its constant hunger. It's also generating electricity.
FormName = Full Belly Mode
Generation = 8 Generation = 8
#------------------------------- #-------------------------------
[CUFANT] [CUFANT]
@@ -22808,6 +22808,7 @@ Generation = 8
#------------------------------- #-------------------------------
[ZACIAN] [ZACIAN]
Name = Zacian Name = Zacian
FormName = Hero of Many Battles
Types = FAIRY Types = FAIRY
BaseStats = 92,130,115,138,80,115 BaseStats = 92,130,115,138,80,115
GenderRatio = Genderless GenderRatio = Genderless
@@ -22827,7 +22828,6 @@ Color = Blue
Shape = Quadruped Shape = Quadruped
Category = Warrior Category = Warrior
Pokedex = Known as a legendary hero, this Pokémon absorbs metal particles, transforming them into a weapon it uses to battle. Pokedex = Known as a legendary hero, this Pokémon absorbs metal particles, transforming them into a weapon it uses to battle.
FormName = Hero of Many Battles
Generation = 8 Generation = 8
Flags = Legendary Flags = Legendary
WildItemCommon = RUSTEDSWORD WildItemCommon = RUSTEDSWORD
@@ -22836,6 +22836,7 @@ WildItemRare = RUSTEDSWORD
#------------------------------- #-------------------------------
[ZAMAZENTA] [ZAMAZENTA]
Name = Zamazenta Name = Zamazenta
FormName = Hero of Many Battles
Types = FIGHTING Types = FIGHTING
BaseStats = 92,130,115,138,80,115 BaseStats = 92,130,115,138,80,115
GenderRatio = Genderless GenderRatio = Genderless
@@ -22855,7 +22856,6 @@ Color = Red
Shape = Quadruped Shape = Quadruped
Category = Warrior Category = Warrior
Pokedex = This Pokémon slept for aeons while in the form of a statue. It was asleep for so long, people forgot that it ever existed. Pokedex = This Pokémon slept for aeons while in the form of a statue. It was asleep for so long, people forgot that it ever existed.
FormName = Hero of Many Battles
Generation = 8 Generation = 8
Flags = Legendary Flags = Legendary
WildItemCommon = RUSTEDSHIELD WildItemCommon = RUSTEDSHIELD
@@ -22913,6 +22913,7 @@ Evolutions = URSHIFU,Event,1
#------------------------------- #-------------------------------
[URSHIFU] [URSHIFU]
Name = Urshifu Name = Urshifu
FormName = Single Strike Style
Types = FIGHTING,DARK Types = FIGHTING,DARK
BaseStats = 100,130,100,97,63,60 BaseStats = 100,130,100,97,63,60
GenderRatio = FemaleOneEighth GenderRatio = FemaleOneEighth
@@ -22932,7 +22933,6 @@ Color = Gray
Shape = Bipedal Shape = Bipedal
Category = Wushu Category = Wushu
Pokedex = Inhabiting the mountains of a distant region, this Pokémon races across sheer cliffs, training its legs and refining its moves. Pokedex = Inhabiting the mountains of a distant region, this Pokémon races across sheer cliffs, training its legs and refining its moves.
FormName = Single Strike Style
Generation = 8 Generation = 8
Flags = Legendary Flags = Legendary
#------------------------------- #-------------------------------

View File

@@ -1,4 +1,4 @@
# See the documentation on the wiki to learn how to edit this file. # See the documentation on the wiki to learn how to edit this file.
#------------------------------- #-------------------------------
[CAMPER,Liam] [CAMPER,Liam]
LoseText = A very good battle, indeed! LoseText = A very good battle, indeed!
@@ -9,31 +9,31 @@ Pokemon = BONSLY,11
Items = FULLRESTORE,FULLRESTORE Items = FULLRESTORE,FULLRESTORE
LoseText = Very good. LoseText = Very good.
Pokemon = GEODUDE,12 Pokemon = GEODUDE,12
Gender = male
Moves = DEFENSECURL,HEADSMASH,ROCKPOLISH,ROCKTHROW Moves = DEFENSECURL,HEADSMASH,ROCKPOLISH,ROCKTHROW
AbilityIndex = 0 AbilityIndex = 0
Gender = male
IV = 20,20,20,20,20,20 IV = 20,20,20,20,20,20
Pokemon = ONIX,14 Pokemon = ONIX,14
Name = Rocky Name = Rocky
Gender = male
Shiny = yes
Moves = HEADSMASH,ROCKTHROW,RAGE,ROCKTOMB Moves = HEADSMASH,ROCKTHROW,RAGE,ROCKTOMB
AbilityIndex = 0 AbilityIndex = 0
Item = SITRUSBERRY Item = SITRUSBERRY
Gender = male
IV = 20,20,20,20,20,20 IV = 20,20,20,20,20,20
Shiny = true
Ball = HEAVYBALL Ball = HEAVYBALL
#------------------------------- #-------------------------------
[TEAMROCKET_M,Grunt,1] [TEAMROCKET_M,Grunt,1]
LoseText = You're too good for me! LoseText = You're too good for me!
Pokemon = WEEPINBELL,21 Pokemon = WEEPINBELL,21
Shadow = yes Shadow = true
#------------------------------- #-------------------------------
[TEAMROCKET_F,Grunt,1] [TEAMROCKET_F,Grunt,1]
LoseText = You're too good for me! LoseText = You're too good for me!
Pokemon = BURMY,19 Pokemon = BURMY,19
Pokemon = WINGULL,19 Pokemon = WINGULL,19
Pokemon = ELECTABUZZ,20 Pokemon = ELECTABUZZ,20
Shadow = yes Shadow = true
#------------------------------- #-------------------------------
[YOUNGSTER,Ben] [YOUNGSTER,Ben]
LoseText = Aww, I lost. LoseText = Aww, I lost.