diff --git a/Data/Scripts/001_Settings.rb b/Data/Scripts/001_Settings.rb index 7b570b9a1..9c8bcd1ad 100644 --- a/Data/Scripts/001_Settings.rb +++ b/Data/Scripts/001_Settings.rb @@ -134,7 +134,7 @@ module Settings # The odds of a newly generated Pokémon being shiny (out of 65536). SHINY_POKEMON_CHANCE = (MECHANICS_GENERATION >= 6) ? 16 : 8 # Whether super shininess is enabled (uses a different shiny animation). - SUPER_SHINY = (MECHANICS_GENERATION >= 8) + SUPER_SHINY = (MECHANICS_GENERATION == 8) # Whether Pokémon with the "Legendary", "Mythical" or "Ultra Beast" flags will # have at least 3 perfect IVs. LEGENDARIES_HAVE_SOME_PERFECT_IVS = (MECHANICS_GENERATION >= 6) diff --git a/Data/Scripts/002_Save data/004_Game_SaveValues.rb b/Data/Scripts/002_Save data/004_Game_SaveValues.rb index 30d41c45e..8c543d2ba 100644 --- a/Data/Scripts/002_Save data/004_Game_SaveValues.rb +++ b/Data/Scripts/002_Save data/004_Game_SaveValues.rb @@ -22,6 +22,7 @@ SaveData.register(:game_system) do save_value { $game_system } load_value { |value| $game_system = value } new_game_value { Game_System.new } + reset_on_new_game end SaveData.register(:pokemon_system) do diff --git a/Data/Scripts/005_Sprites/008_Sprite_AnimationSprite.rb b/Data/Scripts/005_Sprites/008_Sprite_AnimationSprite.rb index 9f28b268c..075f6aafa 100644 --- a/Data/Scripts/005_Sprites/008_Sprite_AnimationSprite.rb +++ b/Data/Scripts/005_Sprites/008_Sprite_AnimationSprite.rb @@ -197,10 +197,11 @@ class SpriteAnimation sprite.visible = true sprite.src_rect.set((pattern % 5) * 192, (pattern / 5) * 192, 192, 192) case @_animation_height - when 0 then sprite.z = 1 - when 1 then sprite.z = sprite.y + (Game_Map::TILE_HEIGHT * 3 / 2) + 1 - when 2 then sprite.z = sprite.y + (Game_Map::TILE_HEIGHT * 3) + 1 - else sprite.z = 2000 + when -1 then sprite.z = -25 + when 0 then sprite.z = 1 + when 1 then sprite.z = sprite.y + (Game_Map::TILE_HEIGHT * 3 / 2) + 1 + when 2 then sprite.z = sprite.y + (Game_Map::TILE_HEIGHT * 3) + 1 + else sprite.z = 2000 end sprite.ox = 96 sprite.oy = 96 diff --git a/Data/Scripts/010_Data/002_PBS data/014_TrainerType.rb b/Data/Scripts/010_Data/002_PBS data/014_TrainerType.rb index ec3ac2a15..d8aa2bb06 100644 --- a/Data/Scripts/010_Data/002_PBS data/014_TrainerType.rb +++ b/Data/Scripts/010_Data/002_PBS data/014_TrainerType.rb @@ -5,6 +5,7 @@ module GameData attr_reader :gender attr_reader :base_money attr_reader :skill_level + attr_reader :poke_ball attr_reader :flags attr_reader :intro_BGM attr_reader :battle_BGM @@ -24,6 +25,7 @@ module GameData "Mixed" => 2, "mixed" => 2, "X" => 2, "x" => 2, "2" => 2}], "BaseMoney" => [:base_money, "u"], "SkillLevel" => [:skill_level, "u"], + "PokeBall" => [:poke_ball, "e", :Item], "Flags" => [:flags, "*s"], "IntroBGM" => [:intro_BGM, "s"], "BattleBGM" => [:battle_BGM, "s"], @@ -42,6 +44,7 @@ module GameData ["Gender", EnumProperty.new(gender_array), _INTL("Gender of this Trainer Type.")], ["BaseMoney", LimitProperty.new(9999), _INTL("Player earns this much money times the highest level among the trainer's Pokémon.")], ["SkillLevel", LimitProperty2.new(9999), _INTL("Skill level of this Trainer Type.")], + ["PokeBall", ItemProperty, _INTL("Default Poké Ball that all Pokémon of trainers of this Trainer Type are in.")], ["Flags", StringListProperty, _INTL("Words/phrases that can be used to make trainers of this type behave differently to others.")], ["IntroBGM", BGMProperty, _INTL("BGM played before battles against trainers of this type.")], ["BattleBGM", BGMProperty, _INTL("BGM played in battles against trainers of this type.")], @@ -104,6 +107,7 @@ module GameData @gender = hash[:gender] || 2 @base_money = hash[:base_money] || 30 @skill_level = hash[:skill_level] || @base_money + @poke_ball = hash[:poke_ball] @flags = hash[:flags] || [] @intro_BGM = hash[:intro_BGM] @battle_BGM = hash[:battle_BGM] diff --git a/Data/Scripts/010_Data/002_PBS data/015_Trainer.rb b/Data/Scripts/010_Data/002_PBS data/015_Trainer.rb index d6a875e6f..a758191de 100644 --- a/Data/Scripts/010_Data/002_PBS data/015_Trainer.rb +++ b/Data/Scripts/010_Data/002_PBS data/015_Trainer.rb @@ -171,7 +171,11 @@ module GameData pkmn.makeShadow pkmn.shiny = false end - pkmn.poke_ball = pkmn_data[:poke_ball] if pkmn_data[:poke_ball] + if pkmn_data[:poke_ball] + pkmn.poke_ball = pkmn_data[:poke_ball] + elsif trainer.default_poke_ball + pkmn.poke_ball = trainer.default_poke_ball + end pkmn.calc_stats end return trainer diff --git a/Data/Scripts/011_Battle/002_Battler/010_Battler_UseMoveTriggerEffects.rb b/Data/Scripts/011_Battle/002_Battler/010_Battler_UseMoveTriggerEffects.rb index f35de8ff5..2f43bd5e8 100644 --- a/Data/Scripts/011_Battle/002_Battler/010_Battler_UseMoveTriggerEffects.rb +++ b/Data/Scripts/011_Battle/002_Battler/010_Battler_UseMoveTriggerEffects.rb @@ -18,12 +18,13 @@ class Battle::Battler # target Cramorant attacking the user) and the ability splash # shouldn't be shown. @battle.pbShowAbilitySplash(target) + target_form = target.form target.pbChangeForm(0, nil) if user.takesIndirectDamage?(Battle::Scene::USE_ABILITY_SPLASH) @battle.scene.pbDamageAnimation(user) user.pbReduceHP(user.totalhp / 4, false) end - case target.form + case target_form when 1 # Gulping Form user.pbLowerStatStageByAbility(:DEFENSE, 1, target, false) when 2 # Gorging Form diff --git a/Data/Scripts/015_Trainers and player/001_Trainer.rb b/Data/Scripts/015_Trainers and player/001_Trainer.rb index a78515d0c..0804850dd 100644 --- a/Data/Scripts/015_Trainers and player/001_Trainer.rb +++ b/Data/Scripts/015_Trainers and player/001_Trainer.rb @@ -49,6 +49,7 @@ class Trainer def male?; return GameData::TrainerType.get(self.trainer_type).male?; end def female?; return GameData::TrainerType.get(self.trainer_type).female?; end def skill_level; return GameData::TrainerType.get(self.trainer_type).skill_level; end + def default_poke_ball; return GameData::TrainerType.get(self.trainer_type).poke_ball; end def flags; return GameData::TrainerType.get(self.trainer_type).flags; end def has_flag?(flag); return GameData::TrainerType.get(self.trainer_type).has_flag?(flag); end diff --git a/Data/Scripts/016_UI/015_UI_Options.rb b/Data/Scripts/016_UI/015_UI_Options.rb index cb4a2285b..561819e97 100644 --- a/Data/Scripts/016_UI/015_UI_Options.rb +++ b/Data/Scripts/016_UI/015_UI_Options.rb @@ -495,6 +495,7 @@ MenuHandlers.add(:options_menu, :speech_frame, { "type" => NumberOption, "parameters" => 1..Settings::SPEECH_WINDOWSKINS.length, "description" => _INTL("Choose the appearance of dialogue boxes."), + "condition" => proc { next Settings::SPEECH_WINDOWSKINS.length > 1 }, "get_proc" => proc { next $PokemonSystem.textskin }, "set_proc" => proc { |value, scene| $PokemonSystem.textskin = value @@ -510,6 +511,7 @@ MenuHandlers.add(:options_menu, :menu_frame, { "type" => NumberOption, "parameters" => 1..Settings::MENU_WINDOWSKINS.length, "description" => _INTL("Choose the appearance of menu boxes."), + "condition" => proc { next Settings::MENU_WINDOWSKINS.length > 1 }, "get_proc" => proc { next $PokemonSystem.frame }, "set_proc" => proc { |value, scene| $PokemonSystem.frame = value diff --git a/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb b/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb index 48e8b782e..f09ee9df1 100644 --- a/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb +++ b/Data/Scripts/021_Compiler/002_Compiler_CompilePBS.rb @@ -774,6 +774,12 @@ module Compiler end def validate_compiled_trainer_type(hash) + # Ensure valid Poké Ball + if hash[:poke_ball] + if !GameData::Item.get(hash[:poke_ball]).is_poke_ball? + raise _INTL("Value '{1}' isn't a defined Poké Ball.", hash[:poke_ball]) + "\n" + FileLineData.linereport + end + end end def validate_all_compiled_trainer_types diff --git a/PBS/trainer_types.txt b/PBS/trainer_types.txt index 0e75d392f..bc8fb8638 100644 --- a/PBS/trainer_types.txt +++ b/PBS/trainer_types.txt @@ -80,6 +80,7 @@ BaseMoney = 48 Name = Fisherman Gender = Male BaseMoney = 32 +PokeBall = LUREBALL #------------------------------- [GAMBLER] Name = Gambler @@ -91,6 +92,7 @@ SkillLevel = 32 Name = Gentleman Gender = Male BaseMoney = 72 +PokeBall = LUXURYBALL #------------------------------- [HIKER] Name = Hiker @@ -107,6 +109,7 @@ Name = Lady Gender = Female BaseMoney = 160 SkillLevel = 72 +PokeBall = LUXURYBALL #------------------------------- [PAINTER] Name = Painter @@ -122,6 +125,7 @@ BaseMoney = 64 Name = Pokémon Breeder Gender = Female BaseMoney = 48 +PokeBall = FRIENDBALL #------------------------------- [PROFESSOR] Name = Professor @@ -147,6 +151,7 @@ BaseMoney = 32 Name = Scientist Gender = Male BaseMoney = 48 +PokeBall = REPEATBALL #------------------------------- [SUPERNERD] Name = Super Nerd @@ -162,6 +167,7 @@ BaseMoney = 40 Name = Black Belt Gender = Male BaseMoney = 32 +PokeBall = ULTRABALL #------------------------------- [CRUSHGIRL] Name = Crush Girl @@ -182,11 +188,13 @@ BaseMoney = 16 Name = Cool Trainer Gender = Male BaseMoney = 60 +PokeBall = ULTRABALL #------------------------------- [COOLTRAINER_F] Name = Cool Trainer Gender = Female BaseMoney = 60 +PokeBall = ULTRABALL #------------------------------- [YOUNGSTER] Name = Youngster @@ -223,24 +231,28 @@ Name = Swimmer Gender = Male BaseMoney = 16 SkillLevel = 32 +PokeBall = DIVEBALL #------------------------------- [SWIMMER_F] Name = Swimmer Gender = Female BaseMoney = 16 SkillLevel = 32 +PokeBall = DIVEBALL #------------------------------- [SWIMMER2_M] Name = Swimmer Gender = Male BaseMoney = 16 SkillLevel = 32 +PokeBall = DIVEBALL #------------------------------- [SWIMMER2_F] Name = Swimmer Gender = Female BaseMoney = 16 SkillLevel = 32 +PokeBall = DIVEBALL #------------------------------- [TUBER_M] Name = Tuber @@ -271,6 +283,7 @@ Name = Cool Couple Gender = Unknown BaseMoney = 72 SkillLevel = 48 +PokeBall = ULTRABALL #------------------------------- [CRUSHKIN] Name = Crush Kin @@ -282,6 +295,7 @@ Name = Sis and Bro Gender = Unknown BaseMoney = 16 SkillLevel = 48 +PokeBall = DIVEBALL #------------------------------- [TWINS] Name = Twins @@ -371,6 +385,7 @@ Gender = Female BaseMoney = 100 BattleBGM = Battle Elite VictoryBGM = Battle victory leader +PokeBall = ULTRABALL #------------------------------- [ELITEFOUR_Bruno] Name = Elite Four @@ -378,6 +393,7 @@ Gender = Male BaseMoney = 100 BattleBGM = Battle Elite VictoryBGM = Battle victory leader +PokeBall = ULTRABALL #------------------------------- [ELITEFOUR_Agatha] Name = Elite Four @@ -385,6 +401,7 @@ Gender = Female BaseMoney = 100 BattleBGM = Battle Elite VictoryBGM = Battle victory leader +PokeBall = ULTRABALL #------------------------------- [ELITEFOUR_Lance] Name = Elite Four @@ -392,6 +409,7 @@ Gender = Male BaseMoney = 100 BattleBGM = Battle Elite VictoryBGM = Battle victory leader +PokeBall = ULTRABALL #------------------------------- [CHAMPION] Name = Champion @@ -399,3 +417,4 @@ Gender = Male BaseMoney = 100 BattleBGM = Battle Champion VictoryBGM = Battle victory leader +PokeBall = ULTRABALL