diff --git a/Data/Scripts/010_Data/002_PBS data/012_TrainerType.rb b/Data/Scripts/010_Data/002_PBS data/012_TrainerType.rb index 45c2fc334..387d52415 100644 --- a/Data/Scripts/010_Data/002_PBS data/012_TrainerType.rb +++ b/Data/Scripts/010_Data/002_PBS data/012_TrainerType.rb @@ -2,17 +2,31 @@ module GameData class TrainerType attr_reader :id attr_reader :real_name - attr_reader :base_money - attr_reader :battle_BGM - attr_reader :victory_ME - attr_reader :intro_ME attr_reader :gender + attr_reader :base_money attr_reader :skill_level attr_reader :skill_code + attr_reader :intro_ME + attr_reader :battle_BGM + attr_reader :victory_ME DATA = {} DATA_FILENAME = "trainer_types.dat" + SCHEMA = { + "Name" => [:name, "s"], + "Gender" => [:gender, "e", {"Male" => 0, "male" => 0, "M" => 0, "m" => 0, "0" => 0, + "Female" => 1, "female" => 1, "F" => 1, "f" => 1, "1" => 1, + "Unknown" => 2, "unknown" => 2, "Other" => 2, "other" => 2, + "Mixed" => 2, "mixed" => 2, "X" => 2, "x" => 2, "2" => 2}], + "BaseMoney" => [:base_money, "u"], + "SkillLevel" => [:skill_level, "u"], + "SkillCode" => [:skill_code, "s"], + "IntroME" => [:intro_ME, "s"], + "BattleBGM" => [:battle_BGM, "s"], + "VictoryME" => [:victory_ME, "s"] + } + extend ClassMethodsSymbols include InstanceMethods @@ -68,13 +82,13 @@ module GameData def initialize(hash) @id = hash[:id] @real_name = hash[:name] || "Unnamed" - @base_money = hash[:base_money] || 30 - @battle_BGM = hash[:battle_BGM] - @victory_ME = hash[:victory_ME] - @intro_ME = hash[:intro_ME] @gender = hash[:gender] || 2 + @base_money = hash[:base_money] || 30 @skill_level = hash[:skill_level] || @base_money @skill_code = hash[:skill_code] + @intro_ME = hash[:intro_ME] + @battle_BGM = hash[:battle_BGM] + @victory_ME = hash[:victory_ME] end # @return [String] the translated name of this trainer type diff --git a/Data/Scripts/020_Debug/001_Editor screens/001_EditorScreens.rb b/Data/Scripts/020_Debug/001_Editor screens/001_EditorScreens.rb index 35a301d4b..44f57eb92 100644 --- a/Data/Scripts/020_Debug/001_Editor screens/001_EditorScreens.rb +++ b/Data/Scripts/020_Debug/001_Editor screens/001_EditorScreens.rb @@ -342,18 +342,18 @@ end # Trainer type editor #=============================================================================== def pbTrainerTypeEditor + gender_array = [] + GameData::TrainerType::SCHEMA["Gender"][2].each { |key, value| gender_array[value] = key if !gender_array[value] } trainer_type_properties = [ - [_INTL("Internal Name"), ReadOnlyProperty, _INTL("Internal name that is used as a symbol like :XXX.")], - [_INTL("Trainer Name"), StringProperty, _INTL("Name of the trainer type as displayed by the game.")], - [_INTL("Base Money"), LimitProperty.new(9999), _INTL("Player earns this much money times the highest level among the trainer's Pokémon.")], - [_INTL("Battle BGM"), BGMProperty, _INTL("BGM played in battles against trainers of this type.")], - [_INTL("Battle End ME"), MEProperty, _INTL("ME played when player wins battles against trainers of this type.")], - [_INTL("Battle Intro ME"), MEProperty, _INTL("ME played before battles against trainers of this type.")], - [_INTL("Gender"), EnumProperty.new([ - _INTL("Male"), _INTL("Female"), _INTL("Undefined")]), - _INTL("Gender of this Trainer type.")], - [_INTL("Skill Level"), LimitProperty.new(9999), _INTL("Skill level of this Trainer type.")], - [_INTL("Skill Code"), StringProperty, _INTL("Letters/phrases representing AI modifications of trainers of this type.")], + [_INTL("ID"), ReadOnlyProperty, _INTL("ID of this Trainer Type (used as a symbol like :XXX).")], + [_INTL("Name"), StringProperty, _INTL("Name of this Trainer Type as displayed by the game.")], + [_INTL("Gender"), EnumProperty.new(gender_array), _INTL("Gender of this Trainer Type.")], + [_INTL("BaseMoney"), LimitProperty.new(9999), _INTL("Player earns this much money times the highest level among the trainer's Pokémon.")], + [_INTL("SkillLevel"), LimitProperty.new(9999), _INTL("Skill level of this Trainer Type.")], + [_INTL("SkillCode"), StringProperty, _INTL("Letters/phrases representing AI modifications of trainers of this type.")], + [_INTL("IntroME"), MEProperty, _INTL("ME played before battles against trainers of this type.")], + [_INTL("BattleBGM"), BGMProperty, _INTL("BGM played in battles against trainers of this type.")], + [_INTL("VictoryME"), MEProperty, _INTL("ME played when player wins battles against trainers of this type.")] ] pbListScreenBlock(_INTL("Trainer Types"), TrainerTypeLister.new(0, true)) { |button, tr_type| if tr_type @@ -372,26 +372,26 @@ def pbTrainerTypeEditor data = [ t_data.id.to_s, t_data.real_name, - t_data.base_money, - t_data.battle_BGM, - t_data.victory_ME, - t_data.intro_ME, t_data.gender, + t_data.base_money, t_data.skill_level, - t_data.skill_code + t_data.skill_code, + t_data.intro_ME, + t_data.battle_BGM, + t_data.victory_ME ] if pbPropertyList(t_data.id.to_s, data, trainer_type_properties, true) # Construct trainer type hash type_hash = { :id => t_data.id, :name => data[1], - :base_money => data[2], - :battle_BGM => data[3], - :victory_ME => data[4], - :intro_ME => data[5], - :gender => data[6], - :skill_level => data[7], - :skill_code => data[8] + :gender => data[2], + :base_money => data[3], + :skill_level => data[4], + :skill_code => data[5], + :intro_ME => data[6], + :battle_BGM => data[7], + :victory_ME => data[8] } # Add trainer type's data to records GameData::TrainerType.register(type_hash) @@ -436,8 +436,8 @@ def pbTrainerTypeEditorNew(default_name) return nil end # Choose a gender - gender = pbMessage(_INTL("Is the Trainer male, female or undefined?"), [ - _INTL("Male"), _INTL("Female"), _INTL("Undefined")], 0) + gender = pbMessage(_INTL("Is the Trainer male, female or unknown?"), [ + _INTL("Male"), _INTL("Female"), _INTL("Unknown")], 0) # Choose a base money value params = ChooseNumberParams.new params.setRange(0, 255) @@ -445,10 +445,10 @@ def pbTrainerTypeEditorNew(default_name) base_money = pbMessageChooseNumber(_INTL("Set the money per level won for defeating the Trainer."), params) # Construct trainer type hash tr_type_hash = { - :id => id.to_sym, - :name => name, - :base_money => base_money, - :gender => gender + :id => id.to_sym, + :name => name, + :gender => gender, + :base_money => base_money } # Add trainer type's data to records GameData::TrainerType.register(tr_type_hash) diff --git a/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb b/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb index 5555a403a..158d4e885 100644 --- a/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb +++ b/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb @@ -952,36 +952,69 @@ module Compiler #============================================================================= def compile_trainer_types(path = "PBS/trainertypes.txt") GameData::TrainerType::DATA.clear + schema = GameData::TrainerType::SCHEMA tr_type_names = [] + tr_type_hash = nil # Read each line of trainertypes.txt at a time and compile it into a trainer type - pbCompilerEachCommentedLine(path) { |line, line_no| - line = pbGetCsvRecord(line, line_no, [0, "snsUSSSeUS", - nil, nil, nil, nil, nil, nil, nil, { - "Male" => 0, "M" => 0, "0" => 0, - "Female" => 1, "F" => 1, "1" => 1, - "Mixed" => 2, "X" => 2, "2" => 2, "" => 2 - }, nil, nil] - ) - type_symbol = line[1].to_sym - if GameData::TrainerType::DATA[type_symbol] - raise _INTL("Trainer type ID '{1}' is used twice.\r\n{2}", type_symbol, FileLineData.linereport) + pbCompilerEachPreppedLine(path) { |line, line_no| + if line[/^\s*\[\s*(.+)\s*\]\s*$/] # New section [tr_type_id] + # Add previous trainer type's data to records + GameData::TrainerType.register(tr_type_hash) if tr_type_hash + # Parse trainer type ID + tr_type_id = $~[1].to_sym + if GameData::TrainerType.exists?(tr_type_id) + raise _INTL("Trainer Type ID '{1}' is used twice.\r\n{2}", tr_type_id, FileLineData.linereport) + end + # Construct trainer type hash + tr_type_hash = { + :id => tr_type_id + } + elsif line[/^\s*(\w+)\s*=\s*(.*)\s*$/] # XXX=YYY lines + if !tr_type_hash + raise _INTL("Expected a section at the beginning of the file.\r\n{1}", FileLineData.linereport) + end + # Parse property and value + property_name = $~[1] + line_schema = schema[property_name] + next if !line_schema + property_value = pbGetCsvRecord($~[2], line_no, line_schema) + # Record XXX=YYY setting + tr_type_hash[line_schema[0]] = property_value + tr_type_names.push(tr_type_hash[:name]) if property_name == "Name" + else # Old format + # Add previous trainer type's data to records + GameData::TrainerType.register(tr_type_hash) if tr_type_hash + # Parse trainer type + line = pbGetCsvRecord(line, line_no, [0, "snsUSSSeUS", + nil, nil, nil, nil, nil, nil, nil, { + "Male" => 0, "M" => 0, "0" => 0, + "Female" => 1, "F" => 1, "1" => 1, + "Mixed" => 2, "X" => 2, "2" => 2, "" => 2 + }, nil, nil]) + tr_type_id = line[1].to_sym + if GameData::TrainerType.exists?(tr_type_id) + raise _INTL("Trainer Type ID '{1}' is used twice.\r\n{2}", tr_type_id, FileLineData.linereport) + end + # Construct trainer type hash + tr_type_hash = { + :id => tr_type_id, + :name => line[2], + :base_money => line[3], + :battle_BGM => line[4], + :victory_ME => line[5], + :intro_ME => line[6], + :gender => line[7], + :skill_level => line[8], + :skill_code => line[9] + } + # Add trainer type's data to records + GameData::TrainerType.register(tr_type_hash) + tr_type_names.push(tr_type_hash[:name]) + tr_type_hash = nil end - # Construct trainer type hash - type_hash = { - :id => type_symbol, - :name => line[2], - :base_money => line[3], - :battle_BGM => line[4], - :victory_ME => line[5], - :intro_ME => line[6], - :gender => line[7], - :skill_level => line[8], - :skill_code => line[9] - } - # Add trainer type's data to records - GameData::TrainerType.register(type_hash) - tr_type_names.push(type_hash[:name]) } + # Add last trainer type's data to records + GameData::TrainerType.register(tr_type_hash) if tr_type_hash # Save all data GameData::TrainerType.save MessageTypes.setMessagesAsHash(MessageTypes::TrainerTypes, tr_type_names) diff --git a/Data/Scripts/021_Compiler/003_Compiler_WritePBS.rb b/Data/Scripts/021_Compiler/003_Compiler_WritePBS.rb index a4d7b55ed..e341b403c 100644 --- a/Data/Scripts/021_Compiler/003_Compiler_WritePBS.rb +++ b/Data/Scripts/021_Compiler/003_Compiler_WritePBS.rb @@ -556,19 +556,18 @@ module Compiler def write_trainer_types File.open("PBS/trainertypes.txt", "wb") { |f| add_PBS_header_to_file(f) - f.write("\#-------------------------------\r\n") GameData::TrainerType.each do |t| - f.write(sprintf("0,%s,%s,%d,%s,%s,%s,%s,%s,%s\r\n", - csvQuote(t.id.to_s), - csvQuote(t.real_name), - t.base_money, - csvQuote(t.battle_BGM), - csvQuote(t.victory_ME), - csvQuote(t.intro_ME), - ["Male", "Female", "Mixed"][t.gender], - (t.skill_level == t.base_money) ? "" : t.skill_level.to_s, - csvQuote(t.skill_code) - )) + f.write("\#-------------------------------\r\n") + f.write(sprintf("[%s]\r\n", t.id)) + f.write(sprintf("Name = %s\r\n", t.real_name)) + gender = GameData::TrainerType::SCHEMA["Gender"][2].key(t.gender) + f.write(sprintf("Gender = %s\r\n", gender)) + f.write(sprintf("BaseMoney = %d\r\n", t.base_money)) + f.write(sprintf("SkillLevel = %d\r\n", t.skill_level)) if t.skill_level != t.base_money + f.write(sprintf("SkillCode = %s\r\n", t.skill_code)) if !nil_or_empty?(t.skill_code) + f.write(sprintf("IntroME = %s\r\n", t.intro_ME)) if !nil_or_empty?(t.intro_ME) + f.write(sprintf("BattleBGM = %s\r\n", t.battle_BGM)) if !nil_or_empty?(t.battle_BGM) + f.write(sprintf("VictoryME = %s\r\n", t.victory_ME)) if !nil_or_empty?(t.victory_ME) end } Graphics.update diff --git a/PBS/trainertypes.txt b/PBS/trainertypes.txt index 0ac1be33f..fd9f45934 100644 --- a/PBS/trainertypes.txt +++ b/PBS/trainertypes.txt @@ -1,74 +1,401 @@ # See the documentation on the wiki to learn how to edit this file. #------------------------------- -0,POKEMONTRAINER_Red,Pokémon Trainer,60,,,,Male,, -0,POKEMONTRAINER_Leaf,Pokémon Trainer,60,,,,Female,, -0,POKEMONTRAINER_Brendan,Pokémon Trainer,60,,,,Male,, -0,POKEMONTRAINER_May,Pokémon Trainer,60,,,,Female,, -0,RIVAL1,Rival,16,,,,Male,, -0,RIVAL2,Rival,36,,,,Male,, -0,AROMALADY,Aroma Lady,32,,,,Female,, -0,BEAUTY,Beauty,56,,,,Female,, -0,BIKER,Biker,32,,,,Male,, -0,BIRDKEEPER,Bird Keeper,32,,,,Male,, -0,BUGCATCHER,Bug Catcher,16,,,,Male,, -0,BURGLAR,Burglar,88,,,,Male,32, -0,CHANELLER,Channeler,32,,,,Female,, -0,CUEBALL,Cue Ball,24,,,,Male,, -0,ENGINEER,Engineer,48,,,,Male,, -0,FISHERMAN,Fisherman,32,,,,Male,, -0,GAMBLER,Gambler,72,,,,Male,32, -0,GENTLEMAN,Gentleman,72,,,,Male,, -0,HIKER,Hiker,32,,,,Male,, -0,JUGGLER,Juggler,32,,,,Male,, -0,LADY,Lady,160,,,,Female,72, -0,PAINTER,Painter,16,,,,Female,, -0,POKEMANIAC,Poké Maniac,64,,,,Male,, -0,POKEMONBREEDER,Pokémon Breeder,48,,,,Female,, -0,PROFESSOR,Professor,100,,,,Male,, -0,ROCKER,Rocker,24,,,,Male,, -0,RUINMANIAC,Ruin Maniac,48,,,,Male,, -0,SAILOR,Sailor,32,,,,Male,, -0,SCIENTIST,Scientist,48,,,,Male,, -0,SUPERNERD,Super Nerd,48,,,,Male,, -0,TAMER,Tamer,40,,,,Male,, -0,BLACKBELT,Black Belt,32,,,,Male,, -0,CRUSHGIRL,Crush Girl,24,,,,Female,, -0,CAMPER,Camper,16,,,,Male,, -0,PICNICKER,Picnicker,16,,,,Female,, -0,COOLTRAINER_M,Cool Trainer,60,,,,Male,, -0,COOLTRAINER_F,Cool Trainer,60,,,,Female,, -0,YOUNGSTER,Youngster,16,,,,Male,, -0,LASS,Lass,16,,,,Female,, -0,POKEMONRANGER_M,Pokémon Ranger,60,,,,Male,, -0,POKEMONRANGER_F,Pokémon Ranger,60,,,,Female,, -0,PSYCHIC_M,Psychic,32,,,,Male,, -0,PSYCHIC_F,Psychic,32,,,,Female,, -0,SWIMMER_M,Swimmer,16,,,,Male,32, -0,SWIMMER_F,Swimmer,16,,,,Female,32, -0,SWIMMER2_M,Swimmer,16,,,,Male,32, -0,SWIMMER2_F,Swimmer,16,,,,Female,32, -0,TUBER_M,Tuber,4,,,,Male,16, -0,TUBER_F,Tuber,4,,,,Female,16, -0,TUBER2_M,Tuber,4,,,,Male,16, -0,TUBER2_F,Tuber,4,,,,Female,16, -0,COOLCOUPLE,Cool Couple,72,,,,Mixed,48, -0,CRUSHKIN,Crush Kin,48,,,,Mixed,, -0,SISANDBRO,Sis and Bro,16,,,,Mixed,48, -0,TWINS,Twins,24,,,,Mixed,, -0,YOUNGCOUPLE,Young Couple,60,,,,Mixed,32, -0,TEAMROCKET_M,Team Rocket,32,,,,Male,, -0,TEAMROCKET_F,Team Rocket,32,,,,Female,, -0,ROCKETBOSS,Rocket Boss,100,,,,Male,, -0,LEADER_Brock,Gym Leader,100,Battle Gym Leader,Battle victory leader,,Male,, -0,LEADER_Misty,Gym Leader,100,Battle Gym Leader,Battle victory leader,,Female,, -0,LEADER_Surge,Gym Leader,100,Battle Gym Leader,Battle victory leader,,Male,, -0,LEADER_Erika,Gym Leader,100,Battle Gym Leader,Battle victory leader,,Female,, -0,LEADER_Koga,Gym Leader,100,Battle Gym Leader,Battle victory leader,,Male,, -0,LEADER_Sabrina,Gym Leader,100,Battle Gym Leader,Battle victory leader,,Female,, -0,LEADER_Blaine,Gym Leader,100,Battle Gym Leader,Battle victory leader,,Male,, -0,LEADER_Giovanni,Gym Leader,100,Battle Gym Leader,Battle victory leader,,Male,, -0,ELITEFOUR_Lorelei,Elite Four,100,Battle Elite,Battle victory leader,,Female,, -0,ELITEFOUR_Bruno,Elite Four,100,Battle Elite,Battle victory leader,,Male,, -0,ELITEFOUR_Agatha,Elite Four,100,Battle Elite,Battle victory leader,,Female,, -0,ELITEFOUR_Lance,Elite Four,100,Battle Elite,Battle victory leader,,Male,, -0,CHAMPION,Champion,100,Battle Elite,Battle victory leader,,Male,, +[POKEMONTRAINER_Red] +Name = Pokémon Trainer +Gender = Male +BaseMoney = 60 +#------------------------------- +[POKEMONTRAINER_Leaf] +Name = Pokémon Trainer +Gender = Female +BaseMoney = 60 +#------------------------------- +[POKEMONTRAINER_Brendan] +Name = Pokémon Trainer +Gender = Male +BaseMoney = 60 +#------------------------------- +[POKEMONTRAINER_May] +Name = Pokémon Trainer +Gender = Female +BaseMoney = 60 +#------------------------------- +[RIVAL1] +Name = Rival +Gender = Male +BaseMoney = 16 +#------------------------------- +[RIVAL2] +Name = Rival +Gender = Male +BaseMoney = 36 +#------------------------------- +[AROMALADY] +Name = Aroma Lady +Gender = Female +BaseMoney = 32 +#------------------------------- +[BEAUTY] +Name = Beauty +Gender = Female +BaseMoney = 56 +#------------------------------- +[BIKER] +Name = Biker +Gender = Male +BaseMoney = 32 +#------------------------------- +[BIRDKEEPER] +Name = Bird Keeper +Gender = Male +BaseMoney = 32 +#------------------------------- +[BUGCATCHER] +Name = Bug Catcher +Gender = Male +BaseMoney = 16 +#------------------------------- +[BURGLAR] +Name = Burglar +Gender = Male +BaseMoney = 88 +SkillLevel = 32 +#------------------------------- +[CHANELLER] +Name = Channeler +Gender = Female +BaseMoney = 32 +#------------------------------- +[CUEBALL] +Name = Cue Ball +Gender = Male +BaseMoney = 24 +#------------------------------- +[ENGINEER] +Name = Engineer +Gender = Male +BaseMoney = 48 +#------------------------------- +[FISHERMAN] +Name = Fisherman +Gender = Male +BaseMoney = 32 +#------------------------------- +[GAMBLER] +Name = Gambler +Gender = Male +BaseMoney = 72 +SkillLevel = 32 +#------------------------------- +[GENTLEMAN] +Name = Gentleman +Gender = Male +BaseMoney = 72 +#------------------------------- +[HIKER] +Name = Hiker +Gender = Male +BaseMoney = 32 +#------------------------------- +[JUGGLER] +Name = Juggler +Gender = Male +BaseMoney = 32 +#------------------------------- +[LADY] +Name = Lady +Gender = Female +BaseMoney = 160 +SkillLevel = 72 +#------------------------------- +[PAINTER] +Name = Painter +Gender = Female +BaseMoney = 16 +#------------------------------- +[POKEMANIAC] +Name = Poké Maniac +Gender = Male +BaseMoney = 64 +#------------------------------- +[POKEMONBREEDER] +Name = Pokémon Breeder +Gender = Female +BaseMoney = 48 +#------------------------------- +[PROFESSOR] +Name = Professor +Gender = Male +BaseMoney = 100 +#------------------------------- +[ROCKER] +Name = Rocker +Gender = Male +BaseMoney = 24 +#------------------------------- +[RUINMANIAC] +Name = Ruin Maniac +Gender = Male +BaseMoney = 48 +#------------------------------- +[SAILOR] +Name = Sailor +Gender = Male +BaseMoney = 32 +#------------------------------- +[SCIENTIST] +Name = Scientist +Gender = Male +BaseMoney = 48 +#------------------------------- +[SUPERNERD] +Name = Super Nerd +Gender = Male +BaseMoney = 48 +#------------------------------- +[TAMER] +Name = Tamer +Gender = Male +BaseMoney = 40 +#------------------------------- +[BLACKBELT] +Name = Black Belt +Gender = Male +BaseMoney = 32 +#------------------------------- +[CRUSHGIRL] +Name = Crush Girl +Gender = Female +BaseMoney = 24 +#------------------------------- +[CAMPER] +Name = Camper +Gender = Male +BaseMoney = 16 +#------------------------------- +[PICNICKER] +Name = Picnicker +Gender = Female +BaseMoney = 16 +#------------------------------- +[COOLTRAINER_M] +Name = Cool Trainer +Gender = Male +BaseMoney = 60 +#------------------------------- +[COOLTRAINER_F] +Name = Cool Trainer +Gender = Female +BaseMoney = 60 +#------------------------------- +[YOUNGSTER] +Name = Youngster +Gender = Male +BaseMoney = 16 +#------------------------------- +[LASS] +Name = Lass +Gender = Female +BaseMoney = 16 +#------------------------------- +[POKEMONRANGER_M] +Name = Pokémon Ranger +Gender = Male +BaseMoney = 60 +#------------------------------- +[POKEMONRANGER_F] +Name = Pokémon Ranger +Gender = Female +BaseMoney = 60 +#------------------------------- +[PSYCHIC_M] +Name = Psychic +Gender = Male +BaseMoney = 32 +#------------------------------- +[PSYCHIC_F] +Name = Psychic +Gender = Female +BaseMoney = 32 +#------------------------------- +[SWIMMER_M] +Name = Swimmer +Gender = Male +BaseMoney = 16 +SkillLevel = 32 +#------------------------------- +[SWIMMER_F] +Name = Swimmer +Gender = Female +BaseMoney = 16 +SkillLevel = 32 +#------------------------------- +[SWIMMER2_M] +Name = Swimmer +Gender = Male +BaseMoney = 16 +SkillLevel = 32 +#------------------------------- +[SWIMMER2_F] +Name = Swimmer +Gender = Female +BaseMoney = 16 +SkillLevel = 32 +#------------------------------- +[TUBER_M] +Name = Tuber +Gender = Male +BaseMoney = 4 +SkillLevel = 16 +#------------------------------- +[TUBER_F] +Name = Tuber +Gender = Female +BaseMoney = 4 +SkillLevel = 16 +#------------------------------- +[TUBER2_M] +Name = Tuber +Gender = Male +BaseMoney = 4 +SkillLevel = 16 +#------------------------------- +[TUBER2_F] +Name = Tuber +Gender = Female +BaseMoney = 4 +SkillLevel = 16 +#------------------------------- +[COOLCOUPLE] +Name = Cool Couple +Gender = Unknown +BaseMoney = 72 +SkillLevel = 48 +#------------------------------- +[CRUSHKIN] +Name = Crush Kin +Gender = Unknown +BaseMoney = 48 +#------------------------------- +[SISANDBRO] +Name = Sis and Bro +Gender = Unknown +BaseMoney = 16 +SkillLevel = 48 +#------------------------------- +[TWINS] +Name = Twins +Gender = Unknown +BaseMoney = 24 +#------------------------------- +[YOUNGCOUPLE] +Name = Young Couple +Gender = Unknown +BaseMoney = 60 +SkillLevel = 32 +#------------------------------- +[TEAMROCKET_M] +Name = Team Rocket +Gender = Male +BaseMoney = 32 +#------------------------------- +[TEAMROCKET_F] +Name = Team Rocket +Gender = Female +BaseMoney = 32 +#------------------------------- +[ROCKETBOSS] +Name = Rocket Boss +Gender = Male +BaseMoney = 100 +#------------------------------- +[LEADER_Brock] +Name = Gym Leader +Gender = Male +BaseMoney = 100 +BattleBGM = Battle Gym Leader +VictoryME = Battle victory leader +#------------------------------- +[LEADER_Misty] +Name = Gym Leader +Gender = Female +BaseMoney = 100 +BattleBGM = Battle Gym Leader +VictoryME = Battle victory leader +#------------------------------- +[LEADER_Surge] +Name = Gym Leader +Gender = Male +BaseMoney = 100 +BattleBGM = Battle Gym Leader +VictoryME = Battle victory leader +#------------------------------- +[LEADER_Erika] +Name = Gym Leader +Gender = Female +BaseMoney = 100 +BattleBGM = Battle Gym Leader +VictoryME = Battle victory leader +#------------------------------- +[LEADER_Koga] +Name = Gym Leader +Gender = Male +BaseMoney = 100 +BattleBGM = Battle Gym Leader +VictoryME = Battle victory leader +#------------------------------- +[LEADER_Sabrina] +Name = Gym Leader +Gender = Female +BaseMoney = 100 +BattleBGM = Battle Gym Leader +VictoryME = Battle victory leader +#------------------------------- +[LEADER_Blaine] +Name = Gym Leader +Gender = Male +BaseMoney = 100 +BattleBGM = Battle Gym Leader +VictoryME = Battle victory leader +#------------------------------- +[LEADER_Giovanni] +Name = Gym Leader +Gender = Male +BaseMoney = 100 +BattleBGM = Battle Gym Leader +VictoryME = Battle victory leader +#------------------------------- +[ELITEFOUR_Lorelei] +Name = Elite Four +Gender = Female +BaseMoney = 100 +BattleBGM = Battle Elite +VictoryME = Battle victory leader +#------------------------------- +[ELITEFOUR_Bruno] +Name = Elite Four +Gender = Male +BaseMoney = 100 +BattleBGM = Battle Elite +VictoryME = Battle victory leader +#------------------------------- +[ELITEFOUR_Agatha] +Name = Elite Four +Gender = Female +BaseMoney = 100 +BattleBGM = Battle Elite +VictoryME = Battle victory leader +#------------------------------- +[ELITEFOUR_Lance] +Name = Elite Four +Gender = Male +BaseMoney = 100 +BattleBGM = Battle Elite +VictoryME = Battle victory leader +#------------------------------- +[CHAMPION] +Name = Champion +Gender = Male +BaseMoney = 100 +BattleBGM = Battle Elite +VictoryME = Battle victory leader