From a6b22d57415b2845ce6b9347fb3cf6adb9f07bcf Mon Sep 17 00:00:00 2001 From: Maruno17 Date: Tue, 16 Feb 2021 22:42:28 +0000 Subject: [PATCH] Moved status condition common animation names into the definitions of statuses --- Data/Scripts/001_Settings.rb | 209 +++++++++--------- Data/Scripts/002_Battle settings.rb | 38 ++-- .../011_Data/002_Hardcoded data/008_Status.rb | 57 +++-- .../001_Battler/004_Battler_Statuses.rb | 77 +++---- .../003_Battle/012_Battle_Phase_EndOfRound.rb | 3 +- 5 files changed, 203 insertions(+), 181 deletions(-) diff --git a/Data/Scripts/001_Settings.rb b/Data/Scripts/001_Settings.rb index 0a4224d5b..e3db915c7 100644 --- a/Data/Scripts/001_Settings.rb +++ b/Data/Scripts/001_Settings.rb @@ -13,7 +13,7 @@ module Settings # generations 5 and later are reasonably supported. MECHANICS_GENERATION = 7 - #=============================================================================== + #============================================================================= # The default screen width (at a scale of 1.0). SCREEN_WIDTH = 512 @@ -24,7 +24,7 @@ module Settings # Map view mode (0=original, 1=custom, 2=perspective). MAP_VIEW_MODE = 1 - #=============================================================================== + #============================================================================= # The maximum level Pokémon can reach. MAXIMUM_LEVEL = 100 @@ -41,7 +41,7 @@ module Settings # always inherit egg moves from its father. BREEDING_CAN_INHERIT_EGG_MOVES_FROM_MOTHER = (MECHANICS_GENERATION >= 6) - #=============================================================================== + #============================================================================= # The amount of money the player starts the game with. INITIAL_MONEY = 3000 @@ -54,34 +54,34 @@ module Settings # The maximum number of Pokémon that can be in the party. MAX_PARTY_SIZE = 6 - #=============================================================================== + #============================================================================= # A set of arrays each containing a trainer type followed by a Global Variable - # number. If the variable isn't set to 0, then all trainers with the associated - # trainer type will be named as whatever is in that variable. + # number. If the variable isn't set to 0, then all trainers with the + # associated trainer type will be named as whatever is in that variable. RIVAL_NAMES = [ - [:RIVAL1, 12], - [:RIVAL2, 12], + [:RIVAL1, 12], + [:RIVAL2, 12], [:CHAMPION, 12] ] - #=============================================================================== + #============================================================================= # Whether outdoor maps should be shaded according to the time of day. TIME_SHADING = true - #=============================================================================== + #============================================================================= # Whether poisoned Pokémon will lose HP while walking around in the field. POISON_IN_FIELD = (MECHANICS_GENERATION <= 4) - # Whether poisoned Pokémon will faint while walking around in the field (true), - # or survive the poisoning with 1 HP (false). + # Whether poisoned Pokémon will faint while walking around in the field + # (true), or survive the poisoning with 1 HP (false). POISON_FAINT_IN_FIELD = (MECHANICS_GENERATION <= 3) # Whether planted berries grow according to Gen 4 mechanics (true) or Gen 3 # mechanics (false). NEW_BERRY_PLANTS = (MECHANICS_GENERATION >= 4) - # Whether fishing automatically hooks the Pokémon (if false, there is a reaction - # test first). + # Whether fishing automatically hooks the Pokémon (true), or whether there is + # a reaction test first (false). FISHING_AUTO_HOOK = false # The ID of the common event that runs when the player starts fishing (runs # instead of showing the casting animation). @@ -90,33 +90,35 @@ module Settings # instead of showing the reeling in animation). FISHING_END_COMMON_EVENT = -1 - #=============================================================================== + #============================================================================= # The number of steps allowed before a Safari Zone game is over (0=infinite). SAFARI_STEPS = 600 # The number of seconds a Bug Catching Contest lasts for (0=infinite). - BUG_CONTEST_TIME = 1200 + BUG_CONTEST_TIME = 20 * 60 # 20 minutes - #=============================================================================== + #============================================================================= - # Pairs of map IDs, where the location signpost isn't shown when moving from one - # of the maps in a pair to the other (and vice versa). Useful for single long - # routes/towns that are spread over multiple maps. - # e.g. [4,5,16,17,42,43] will be map pairs 4,5 and 16,17 and 42,43. - # Moving between two maps that have the exact same name won't show the location - # signpost anyway, so you don't need to list those maps here. + # Pairs of map IDs, where the location signpost isn't shown when moving from + # one of the maps in a pair to the other (and vice versa). Useful for single + # long routes/towns that are spread over multiple maps. + # e.g. [4,5,16,17,42,43] will be map pairs 4,5 and 16,17 and 42,43. + # Moving between two maps that have the exact same name won't show the + # location signpost anyway, so you don't need to list those maps here. NO_SIGNPOSTS = [] - #=============================================================================== + #============================================================================= - # Whether the badge restriction on using certain hidden moves is owning at least - # a certain number of badges (true), or owning a particular badge (false). + # Whether you need at least a certain number of badges to use some hidden + # moves in the field (true), or whether you need one specific badge to use + # them (false). The amounts/specific badges are defined below. FIELD_MOVES_COUNT_BADGES = true - # Depending on FIELD_MOVES_COUNT_BADGES, either the number of badges required to - # use each hidden move, or the specific badge number required to use each move. - # Remember that badge 0 is the first badge, badge 1 is the second badge, etc. - # e.g. To require the second badge, put false and 1. - # To require at least 2 badges, put true and 2. + # Depending on FIELD_MOVES_COUNT_BADGES, either the number of badges required + # to use each hidden move in the field, or the specific badge number required + # to use each move. Remember that badge 0 is the first badge, badge 1 is the + # second badge, etc. + # e.g. To require the second badge, put false and 1. + # To require at least 2 badges, put true and 2. BADGE_FOR_CUT = 1 BADGE_FOR_FLASH = 2 BADGE_FOR_ROCKSMASH = 3 @@ -126,22 +128,23 @@ module Settings BADGE_FOR_DIVE = 7 BADGE_FOR_WATERFALL = 8 - #=============================================================================== + #============================================================================= - # If a move taught by a TM/HM/TR replaces another move, this setting is whether - # the machine's move retains the replaced move's PP (true) or whether the - # machine's move has full PP (false). + # If a move taught by a TM/HM/TR replaces another move, this setting is + # whether the machine's move retains the replaced move's PP (true), or whether + # the machine's move has full PP (false). TAUGHT_MACHINES_KEEP_OLD_PP = (MECHANICS_GENERATION == 5) - # Whether Black/White Flute raise/lower the levels of wild Pokémon respectively - # (true) or lower/raise the wild encounter rate respectively (false). + # Whether the Black/White Flutes will raise/lower the levels of wild Pokémon + # respectively (true), or will lower/raise the wild encounter rate + # respectively (false). FLUTES_CHANGE_WILD_ENCOUNTER_LEVELS = (MECHANICS_GENERATION >= 6) # Whether Repel uses the level of the first Pokémon in the party regardless of - # its HP (true) or uses the level of the first unfainted Pokémon (false) + # its HP (true), or it uses the level of the first unfainted Pokémon (false). REPEL_COUNTS_FAINTED_POKEMON = (MECHANICS_GENERATION >= 6) # Whether Rage Candy Bar acts as a Full Heal (true) or a Potion (false). RAGE_CANDY_BAR_CURES_STATUS_PROBLEMS = (MECHANICS_GENERATION >= 7) - #=============================================================================== + #============================================================================= # The name of the person who created the Pokémon storage system. def self.storage_creator_name @@ -150,9 +153,9 @@ module Settings # The number of boxes in Pokémon storage. NUM_STORAGE_BOXES = 30 - #=============================================================================== + #============================================================================= - # The names of each pocket of the Bag. Leave the first entry blank. + # The names of each pocket of the Bag. Ignore the first entry (""). def self.bag_pocket_names return ["", _INTL("Items"), @@ -165,8 +168,8 @@ module Settings _INTL("Key Items") ] end - # The maximum number of slots per pocket (-1 means infinite number). Ignore the - # first number (0). + # The maximum number of slots per pocket (-1 means infinite number). Ignore + # the first number (0). BAG_MAX_POCKET_SIZE = [0, -1, -1, -1, -1, -1, -1, -1, -1] # The maximum number of items each slot in the Bag can hold. BAG_MAX_PER_SLOT = 999 @@ -174,21 +177,23 @@ module Settings # first entry (the 0). BAG_POCKET_AUTO_SORT = [0, false, false, false, true, true, false, false, false] - #=============================================================================== + #============================================================================= # Whether the Pokédex list shown is the one for the player's current region - # (true), or whether a menu pops up for the player to manually choose which Dex - # list to view if more than one is available (false). + # (true), or whether a menu pops up for the player to manually choose which + # Dex list to view if more than one is available (false). USE_CURRENT_REGION_DEX = false - # The names of each Dex list in the game, in order and with National Dex at the - # end. This is also the order that $PokemonGlobal.pokedexUnlocked is in, which - # records which Dexes have been unlocked (first is unlocked by default). - # You can define which region a particular Dex list is linked to. This means the - # area map shown while viewing that Dex list will ALWAYS be that of the defined - # region, rather than whichever region the player is currently in. To define - # this, put the Dex name and the region number in an array, like the Kanto and - # Johto Dexes are. The National Dex isn't in an array with a region number, - # therefore its area map is whichever region the player is currently in. + # The names of the Pokédex lists, in the order they are defined in the PBS + # file "regionaldexes.txt". The last name is for the National Dex and is added + # onto the end of this array (remember that you don't need to use it). This + # array's order is also the order of $PokemonGlobal.pokedexUnlocked, which + # records which Dexes have been unlocked (the first is unlocked by default). + # If an entry is just a name, then the region map shown in the Area page while + # viewing that Dex list will be the region map of the region the player is + # currently in. The National Dex entry should always behave like this. + # If an entry is of the form [name, number], then the number is a region + # number. That region's map will appear in the Area page while viewing that + # Dex list, no matter which region the player is currently in. def self.pokedex_names return [ [_INTL("Kanto Pokédex"), 0], @@ -196,36 +201,35 @@ module Settings _INTL("National Pokédex") ] end - # Whether all forms of a given species will be immediately available to view in - # the Pokédex so long as that species has been seen at all (true), or whether - # each form needs to be seen specifically before that form appears in the - # Pokédex (false). + # Whether all forms of a given species will be immediately available to view + # in the Pokédex so long as that species has been seen at all (true), or + # whether each form needs to be seen specifically before that form appears in + # the Pokédex (false). DEX_SHOWS_ALL_FORMS = false - # An array of numbers, where each number is that of a Dex list (National Dex is - # -1). All Dex lists included here have the species numbers in them reduced by - # 1, thus making the first listed species have a species number of 0 (e.g. - # Victini in Unova's Dex). + # An array of numbers, where each number is that of a Dex list (in the same + # order as above, except the National Dex is -1). All Dex lists included here + # will begin their numbering at 0 rather than 1 (e.g. Victini in Unova's Dex). DEXES_WITH_OFFSETS = [] - #=============================================================================== + #============================================================================= - # A set of arrays each containing details of a graphic to be shown on the region - # map if appropriate. The values for each array are as follows: - # - Region number. - # - Global Switch; the graphic is shown if this is ON (non-wall maps only). - # - X coordinate of the graphic on the map, in squares. - # - Y coordinate of the graphic on the map, in squares. - # - Name of the graphic, found in the Graphics/Pictures folder. - # - The graphic will always (true) or never (false) be shown on a wall map. + # A set of arrays, each containing details of a graphic to be shown on the + # region map if appropriate. The values for each array are as follows: + # * Region number. + # * Game Switch; the graphic is shown if this is ON (non-wall maps only). + # * X coordinate of the graphic on the map, in squares. + # * Y coordinate of the graphic on the map, in squares. + # * Name of the graphic, found in the Graphics/Pictures folder. + # * The graphic will always (true) or never (false) be shown on a wall map. REGION_MAP_EXTRAS = [ [0, 51, 16, 15, "mapHiddenBerth", false], [0, 52, 20, 14, "mapHiddenFaraday", false] ] - #=============================================================================== + #============================================================================= - # A list of maps used by roaming Pokémon. Each map has an array of other maps it - # can lead to. + # A list of maps used by roaming Pokémon. Each map has an array of other maps + # it can lead to. ROAMING_AREAS = { 5 => [ 21, 28, 31, 39, 41, 44, 47, 66, 69], 21 => [5, 28, 31, 39, 41, 44, 47, 66, 69], @@ -238,15 +242,15 @@ module Settings 66 => [5, 21, 28, 31, 39, 41, 44, 47, 69], 69 => [5, 21, 28, 31, 39, 41, 44, 47, 66 ] } - # A set of arrays each containing the details of a roaming Pokémon. The - # information within is as follows: - # - Species. - # - Level. - # - Global Switch; the Pokémon roams while this is ON. - # - Encounter type (0=any, 1=grass/walking in cave, 2=surfing, 3=fishing, - # 4=surfing/fishing). See bottom of PField_RoamingPokemon for lists. - # - Name of BGM to play for that encounter (optional). - # - Roaming areas specifically for this Pokémon (optional). + # A set of arrays, each containing the details of a roaming Pokémon. The + # information within each array is as follows: + # * Species. + # * Level. + # * Game Switch; the Pokémon roams while this is ON. + # * Encounter type (0=any, 1=grass/walking in cave, 2=surfing, 3=fishing, + # 4=surfing/fishing). See the bottom of PField_RoamingPokemon for lists. + # * Name of BGM to play for that encounter (optional). + # * Roaming areas specifically for this Pokémon (optional). ROAMING_SPECIES = [ [:LATIAS, 30, 53, 0, "Battle roaming"], [:LATIOS, 30, 53, 0, "Battle roaming"], @@ -259,15 +263,16 @@ module Settings [:ENTEI, 40, 55, 1, nil] ] - #=============================================================================== + #============================================================================= - # A set of arrays each containing details of a wild encounter that can only - # occur via using the Poké Radar. The information within is as follows: - # - Map ID on which this encounter can occur. - # - Probability that this encounter will occur (as a percentage). - # - Species. - # - Minimum possible level. - # - Maximum possible level (optional). + # A set of arrays, each containing the details of a wild encounter that can + # only occur via using the Poké Radar. The information within each array is as + # follows: + # * Map ID on which this encounter can occur. + # * Probability that this encounter will occur (as a percentage). + # * Species. + # * Minimum possible level. + # * Maximum possible level (optional). POKE_RADAR_ENCOUNTERS = [ [5, 20, :STARLY, 12, 15], [21, 10, :STANTLER, 14], @@ -275,12 +280,12 @@ module Settings [28, 20, :BEEDRILL, 15, 18] ] - #=============================================================================== + #============================================================================= # The Game Switch that is set to ON when the player blacks out. STARTING_OVER_SWITCH = 1 - # The Game Switch that is set to ON when the player has seen Pokérus in the Poké - # Center, and doesn't need to be told about it again. + # The Game Switch that is set to ON when the player has seen Pokérus in the + # Poké Center (and doesn't need to be told about it again). SEEN_POKERUS_SWITCH = 2 # The Game Switch which, while ON, makes all wild Pokémon created be shiny. SHINY_WILD_POKEMON_SWITCH = 31 @@ -288,7 +293,7 @@ module Settings # met via a fateful encounter. FATEFUL_ENCOUNTER_SWITCH = 32 - #=============================================================================== + #============================================================================= # ID of the animation played when the player steps on grass (grass rustling). GRASS_ANIMATION_ID = 1 @@ -298,8 +303,8 @@ module Settings # ID of the animation played when a trainer notices the player (an exclamation # bubble). EXCLAMATION_ANIMATION_ID = 3 - # ID of the animation played when a patch of grass rustles due to using the Poké - # Radar. + # ID of the animation played when a patch of grass rustles due to using the + # Poké Radar. RUSTLE_NORMAL_ANIMATION_ID = 1 # ID of the animation played when a patch of grass rustles vigorously due to # using the Poké Radar. (Rarer species) @@ -307,11 +312,11 @@ module Settings # ID of the animation played when a patch of grass rustles and shines due to # using the Poké Radar. (Shiny encounter) RUSTLE_SHINY_ANIMATION_ID = 6 - # ID of the animation played when a berry tree grows a stage while the player is - # on the map (for new plant growth mechanics only). + # ID of the animation played when a berry tree grows a stage while the player + # is on the map (for new plant growth mechanics only). PLANT_SPARKLE_ANIMATION_ID = 7 - #=============================================================================== + #============================================================================= # An array of available languages in the game, and their corresponding message # file in the Data folder. Edit only if you have 2 or more languages to choose @@ -321,7 +326,7 @@ module Settings # ["Deutsch", "deutsch.dat"] ] - #=============================================================================== + #============================================================================= # Available speech frames. These are graphic files in "Graphics/Windowskins/". SPEECH_WINDOWSKINS = [ diff --git a/Data/Scripts/002_Battle settings.rb b/Data/Scripts/002_Battle settings.rb index bf13bb8c1..11af23cd0 100644 --- a/Data/Scripts/002_Battle settings.rb +++ b/Data/Scripts/002_Battle settings.rb @@ -7,8 +7,8 @@ module Settings # Whether turn order is recalculated after a Pokémon's Speed stat changes. RECALCULATE_TURN_ORDER_AFTER_SPEED_CHANGES = (MECHANICS_GENERATION >= 8) # Whether critical hits do 1.5x damage and have 4 stages (true), or they do 2x - # damage and have 5 stages as in Gen 5 (false). Also determines whether critical - # hit rate can be copied by Transform/Psych Up. + # damage and have 5 stages as in Gen 5 (false). Also determines whether + # critical hit rate can be copied by Transform/Psych Up. NEW_CRITICAL_HIT_RATE_MECHANICS = (MECHANICS_GENERATION >= 6) # Whether several effects apply relating to a Pokémon's type: # * Electric-type immunity to paralysis @@ -19,19 +19,19 @@ module Settings # Whether weather caused by an ability lasts 5 rounds (true) or forever (false). FIXED_DURATION_WEATHER_FROM_ABILITY = (MECHANICS_GENERATION >= 6) - #=============================================================================== + #============================================================================= # Whether X items (X Attack, etc.) raise their stat by 2 stages (true) or 1 # (false). X_STAT_ITEMS_RAISE_BY_TWO_STAGES = (MECHANICS_GENERATION >= 7) - # Whether some Poké Balls have catch rate multipliers from Gen 7 (true) or from - # earlier generations (false). + # Whether some Poké Balls have catch rate multipliers from Gen 7 (true) or + # from earlier generations (false). NEW_POKE_BALL_CATCH_RATES = (MECHANICS_GENERATION >= 7) # Whether Soul Dew powers up Psychic and Dragon-type moves by 20% (true) or # raises the holder's Special Attack and Special Defense by 50% (false). SOUL_DEW_POWERS_UP_TYPES = (MECHANICS_GENERATION >= 7) - #=============================================================================== + #============================================================================= # The minimum number of badges required to boost each stat of a player's # Pokémon by 1.1x, in battle only. @@ -41,7 +41,7 @@ module Settings NUM_BADGES_BOOST_SPDEF = (MECHANICS_GENERATION >= 4) ? 999 : 7 NUM_BADGES_BOOST_SPEED = (MECHANICS_GENERATION >= 4) ? 999 : 3 - #=============================================================================== + #============================================================================= # An array of items which act as Mega Rings for the player (NPCs don't need a # Mega Ring item, just a Mega Stone held by their Pokémon). @@ -50,29 +50,29 @@ module Settings # Evolving even if they otherwise could. NO_MEGA_EVOLUTION = 34 - #=============================================================================== + #============================================================================= # Whether the Exp gained from beating a Pokémon should be scaled depending on # the gainer's level. SCALED_EXP_FORMULA = (MECHANICS_GENERATION == 5 || MECHANICS_GENERATION >= 7) # Whether the Exp gained from beating a Pokémon should be divided equally - # between each participant (true), or whether each participant should gain that - # much Exp (false). This also applies to Exp gained via the Exp Share (held item - # version) being distributed to all Exp Share holders. + # between each participant (true), or whether each participant should gain + # that much Exp (false). This also applies to Exp gained via the Exp Share + # (held item version) being distributed to all Exp Share holders. SPLIT_EXP_BETWEEN_GAINERS = (MECHANICS_GENERATION <= 5) - # Whether the critical capture mechanic applies. Note that it is based on a - # total of 600+ species (i.e. that many species need to be caught to provide the - # greatest critical capture chance of 2.5x), and there may be fewer species in - # your game. + # Whether the critical capture mechanic applies. Note that its calculation is + # based on a total of 600+ species (i.e. that many species need to be caught + # to provide the greatest critical capture chance of 2.5x), and there may be + # fewer species in your game. ENABLE_CRITICAL_CAPTURES = (MECHANICS_GENERATION >= 5) # Whether Pokémon gain Exp for capturing a Pokémon. GAIN_EXP_FOR_CAPTURE = (MECHANICS_GENERATION >= 6) - # The Game Switch which, whie ON, prevents the player from losing money if they - # lose a battle (they can still gain money from trainers for winning). + # The Game Switch which, whie ON, prevents the player from losing money if + # they lose a battle (they can still gain money from trainers for winning). NO_MONEY_LOSS = 33 # Whether party Pokémon check whether they can evolve after all battles - # regardless of the outcome (true) or only after battles the player won (false). + # regardless of the outcome (true), or only after battles the player won (false). CHECK_EVOLUTION_AFTER_ALL_BATTLES = (MECHANICS_GENERATION >= 6) # Whether fainted Pokémon can try to evolve after a battle. - CHECK_EVOLUTION_FOR_FAINTED_POKEMON = (MECHANICS_GENERATION >= 6) + CHECK_EVOLUTION_FOR_FAINTED_POKEMON = true end diff --git a/Data/Scripts/011_Data/002_Hardcoded data/008_Status.rb b/Data/Scripts/011_Data/002_Hardcoded data/008_Status.rb index 4d8dd35a9..0a37833ec 100644 --- a/Data/Scripts/011_Data/002_Hardcoded data/008_Status.rb +++ b/Data/Scripts/011_Data/002_Hardcoded data/008_Status.rb @@ -1,8 +1,17 @@ +# NOTE: The id_number is only used to determine the order of the status icons in +# the graphics containing them. Number 0 (:NONE) is ignored; they start +# with status 1. +# "Graphics/Pictures/statuses.png" also contains icons for being fainted +# and for having Pokérus, in that order, at the bottom of the graphic. +# "Graphics/Pictures/Battle/icon_statuses.png" also contains an icon for +# bad poisoning (toxic), at the bottom of the graphic. +# Both graphics automatically handle varying numbers of defined statuses. module GameData class Status attr_reader :id attr_reader :id_number attr_reader :real_name + attr_reader :animation DATA = {} @@ -13,9 +22,10 @@ module GameData def self.save; end def initialize(hash) - @id = hash[:id] - @id_number = hash[:id_number] - @real_name = hash[:name] || "Unnamed" + @id = hash[:id] + @id_number = hash[:id_number] + @real_name = hash[:name] || "Unnamed" + @animation = hash[:animation] end # @return [String] the translated name of this status condition @@ -26,37 +36,42 @@ module GameData end GameData::Status.register({ - :id => :NONE, - :id_number => 0, - :name => _INTL("None") + :id => :NONE, + :id_number => 0, + :name => _INTL("None") }) GameData::Status.register({ - :id => :SLEEP, - :id_number => 1, - :name => _INTL("Sleep") + :id => :SLEEP, + :id_number => 1, + :name => _INTL("Sleep"), + :animation => "Sleep" }) GameData::Status.register({ - :id => :POISON, - :id_number => 2, - :name => _INTL("Poison") + :id => :POISON, + :id_number => 2, + :name => _INTL("Poison"), + :animation => "Poison" }) GameData::Status.register({ - :id => :BURN, - :id_number => 3, - :name => _INTL("Burn") + :id => :BURN, + :id_number => 3, + :name => _INTL("Burn"), + :animation => "Burn" }) GameData::Status.register({ - :id => :PARALYSIS, - :id_number => 4, - :name => _INTL("Paralysis") + :id => :PARALYSIS, + :id_number => 4, + :name => _INTL("Paralysis"), + :animation => "Paralysis" }) GameData::Status.register({ - :id => :FROZEN, - :id_number => 5, - :name => _INTL("Frozen") + :id => :FROZEN, + :id_number => 5, + :name => _INTL("Frozen"), + :animation => "Frozen" }) diff --git a/Data/Scripts/012_Battle/001_Battler/004_Battler_Statuses.rb b/Data/Scripts/012_Battle/001_Battler/004_Battler_Statuses.rb index af8441614..26948761b 100644 --- a/Data/Scripts/012_Battle/001_Battler/004_Battler_Statuses.rb +++ b/Data/Scripts/012_Battle/001_Battler/004_Battler_Statuses.rb @@ -219,32 +219,36 @@ class PokeBattle_Battler self.status = newStatus self.statusCount = newStatusCount @effects[PBEffects::Toxic] = 0 - # Record status change in debug log, generate default message, show animation - case newStatus - when :SLEEP - @battle.pbCommonAnimation("Sleep",self) - msg = _INTL("{1} fell asleep!",pbThis) if !msg || msg=="" - when :POISON - if newStatusCount>0 - @battle.pbCommonAnimation("Toxic",self) - msg = _INTL("{1} was badly poisoned!",pbThis) if !msg || msg=="" - else - @battle.pbCommonAnimation("Poison",self) - msg = _INTL("{1} was poisoned!",pbThis) if !msg || msg=="" - end - when :BURN - @battle.pbCommonAnimation("Burn",self) - msg = _INTL("{1} was burned!",pbThis) if !msg || msg=="" - when :PARALYSIS - @battle.pbCommonAnimation("Paralysis",self) - msg = _INTL("{1} is paralyzed! It may be unable to move!",pbThis) if !msg || msg=="" - when :FROZEN - @battle.pbCommonAnimation("Frozen",self) - msg = _INTL("{1} was frozen solid!",pbThis) if !msg || msg=="" + # Show animation + if newStatus == :POISON && newStatusCount > 0 + @battle.pbCommonAnimation("Toxic", self) + else + anim_name = GameData::Status.get(newStatus).animation + @battle.pbCommonAnimation(anim_name, self) if anim_name end # Show message - @battle.pbDisplay(msg) if msg && msg!="" + if msg && !msg.empty? + @battle.pbDisplay(msg) + else + case newStatus + when :SLEEP + @battle.pbDisplay(_INTL("{1} fell asleep!", pbThis)) + when :POISON + if newStatusCount>0 + @battle.pbDisplay(_INTL("{1} was badly poisoned!", pbThis)) + else + @battle.pbDisplay(_INTL("{1} was poisoned!", pbThis)) + end + when :BURN + @battle.pbDisplay(_INTL("{1} was burned!", pbThis)) + when :PARALYSIS + @battle.pbDisplay(_INTL("{1} is paralyzed! It may be unable to move!", pbThis)) + when :FROZEN + @battle.pbDisplay(_INTL("{1} was frozen solid!", pbThis)) + end + end PBDebug.log("[Status change] #{pbThis}'s sleep count is #{newStatusCount}") if newStatus == :SLEEP + # Form change check pbCheckFormOnStatusChange # Synchronize if abilityActive? @@ -397,28 +401,25 @@ class PokeBattle_Battler # Generalised status displays #============================================================================= def pbContinueStatus - anim = "" - msg = "" + if self.status == :POISON && @statusCount > 0 + @battle.pbCommonAnimation("Toxic", self) + else + anim_name = GameData::Status.get(self.status).animation + @battle.pbCommonAnimation(anim_name, self) if anim_name + end + yield if block_given? case self.status when :SLEEP - anim = "Sleep" - msg = _INTL("{1} is fast asleep.", pbThis) + @battle.pbDisplay(_INTL("{1} is fast asleep.", pbThis)) when :POISON - anim = (@statusCount>0) ? "Toxic" : "Poison" - msg = _INTL("{1} was hurt by poison!", pbThis) + @battle.pbDisplay(_INTL("{1} was hurt by poison!", pbThis)) when :BURN - anim = "Burn" - msg = _INTL("{1} was hurt by its burn!", pbThis) + @battle.pbDisplay(_INTL("{1} was hurt by its burn!", pbThis)) when :PARALYSIS - anim = "Paralysis" - msg = _INTL("{1} is paralyzed! It can't move!", pbThis) + @battle.pbDisplay(_INTL("{1} is paralyzed! It can't move!", pbThis)) when :FROZEN - anim = "Frozen" - msg = _INTL("{1} is frozen solid!", pbThis) + @battle.pbDisplay(_INTL("{1} is frozen solid!", pbThis)) end - @battle.pbCommonAnimation(anim,self) if anim!="" - yield if block_given? - @battle.pbDisplay(msg) if msg!="" PBDebug.log("[Status continues] #{pbThis}'s sleep count is #{@statusCount}") if self.status == :SLEEP end diff --git a/Data/Scripts/012_Battle/003_Battle/012_Battle_Phase_EndOfRound.rb b/Data/Scripts/012_Battle/003_Battle/012_Battle_Phase_EndOfRound.rb index bc0005362..ef87a3c27 100644 --- a/Data/Scripts/012_Battle/003_Battle/012_Battle_Phase_EndOfRound.rb +++ b/Data/Scripts/012_Battle/003_Battle/012_Battle_Phase_EndOfRound.rb @@ -347,7 +347,8 @@ class PokeBattle_Battle end if b.hasActiveAbility?(:POISONHEAL) if b.canHeal? - pbCommonAnimation("Poison",b) + anim_name = GameData::Status.get(:POISON).animation + pbCommonAnimation(anim_name, b) if anim_name pbShowAbilitySplash(b) b.pbRecoverHP(b.totalhp/8) if PokeBattle_SceneConstants::USE_ABILITY_SPLASH