- Added code for Gen 8 moves/items/abilities/Pokémon/evolution methods.
- Added data for Gen 8 content to PBS files. This is based on BDSP.
- Added super shininess.
- Added affection mechanics.
- Added Rare Candy being usable on a Pokémon at the maximum level if it can trigger a level-up evolution.
- Added setting that determines if Pokémon put into storage are healed.
- Added some settings which can make the Day Care work like the Pokémon Nursery instead.
- Added the Pokémon Nursery mechanic of deposited Pokémon being able to learn egg moves from each other.
- Added use for Game Switch 35, which disables the Pokémon Box Link while on.
- Added map metadata flag "DisableBoxLink", which disables the Pokémon Box Link while you're in a map with that flag (used for Gyms/Elite Four/etc.).
$player.has_box_link that has the same effect as the Box Link item.
- Added a new type of evolution that triggers after any battle. For Galarian Farfetch'd.
- Added a new type of evolution that triggers manually (e.g. in an event). For Kubfu and Galarian Yamask (see the north-east bridge in the Route 2 example map).
- Added LocationFlag evolution method, for species that evolve on maps which have a particular flag defined in map_metadata.txt.
- Added a new map renderer, which should fix lag spikes for AMD graphics card users. Removed support for map flash_data, which you didn't know existed and which was unusable in RMXP anyway.
- Added extended autotile format, which is the same as the large format but with four whole tile concave corners on the bottom.
- Added support for animated autotiles to have their own animation speeds - just add "" to the end of the autotile's filename to set how long each of its frames lingers for (the number is in 1/20ths of a second; default is 5).
- Added support for the top tiles in a tileset being rendered using animated autotiles instead of the tileset tiles. Any number of extra autotiles can be added this way, both large and single-tile ones. This is hardcoded in
- Rewrote and refactored dependent event code. Dependent events are now called followers.
def follower_move_route which makes the next "Move Route" event command apply to the follower instead.
def follower_animation which makes the next "Show Animation" event command apply to the follower instead.
- Events are no longer automatically erased if they become followers.
- Added example events to Route 3 of how to make a follower stop following, including how to make the follower move around by itself.
- Improved how followers go through and come out of doors.
- Follower checks when using some items/moves in the field are now more specific, which should help following Pokémon scripts.
- Added potential for surfing/diving/cycling movement types having their own running/jumping/stationary speeds and/or charsets.
- Tweaked fishing animation.
- The player's charset now only changes itself at the start of a step or the start of not moving.
- The player no longer makes a bump sound when walking into something because of a move route.
- A purchase SE now plays when buying entry to the Safari Zone, withdrawing a Pokémon from Day Care, and when buying coins or Game Corner prizes.
- Replaced the overworld exclaim and question animations with better-looking ones.
- Refactored and improved transition animations.
- Added the HGSS "Vs Trainer" battle transition animation.
- Added a battle transition animation for the Elite Four/Champion.
- Added a battle transition animation for Team Rocket Grunts.
- Added a battle transition animation for Team Rocket Admins.
- Made it easier to register multiple special battle animations, like the old Vs animation one.
- Refactored random dungeon generator code.
- Refactored berry plant code.
- Made Player Transfer event command not cancel surfing/diving, so
pbTransferUnderwater are deprecated.
- Re-added a way to erase (or change) a map's tiles on the fly. Used by soot grass.
- The current map's encounter tables are now updated immediately if
$PokemonGlobal.encounter_version is changed.
- Brought controls more in line with official controls by swapping the alternate movement speed key (was Z) with pause menu key (was X).
- Updated/improved messages when using a field move.
- Added "Sight(x)" event name snippet, which lets the event spot the player at a distance. "Trainer(x)" is now just shorthand for "Trainer Sight(x)".
Game_Character#y_offset, which adjust an event's display position by a given number of pixels.
- Renamed various PBS files.
- Removed support for the PBS file tm.txt.
- Added "Flags" properties to abilities, map metadata, ribbons, species, trainer types and types.
- Abilities that hasten egg hatching now have a flag in abilities.txt for this effect.
- Added new section-based format for berry_plants.txt.
- Removed support for old encounters.txt format.
- Added new section-based format for items.txt. The old format is still supported for now.
- Added separate "SellPrice" property for items.
- Added "Consumable" property to items.txt.
- An item can now have any number of flags, rather than just one.
- Repels now have a flag in items.txt which determines if they can be reused when one runs out.
- Added flags for Fling power and Natural Gift type/power.
- Split metadata.txt into metadata.txt and map_metadata.txt. Player character data is now in separate sections in metadata.txt, one per character, and you can now have as many characters as you like. NOTE: If you're using old PBS files, you will need to make these changes manually (move map metadata sections into map_metadata.txt without changing them, and move player character metadata into their own sections). Also, calls to pbChangePlayer will need to have their numbers increased by 1.
- Added "Name" property to map_metadata.txt, which is the display name in-game.
- When rewriting map_metadata.txt via the Debug function, map names will be added if possible and if the map doesn't already have a name in map_metadata.txt.
- Added map metadata flag "HideEncountersInPokedex" which will make the Pokédex ignore that map’s wild encounters when displaying a Pokémon’s area.
- Added new section-based format for moves.txt.
- Deprecated three move flags (can Magic Coat, can Snatch, affected by King's Rock) as they should depend on move effects instead.
- Turned move flags into separate words rather than letters in a string.
- Added move flag "TramplesMinimize" instead of having that effect be related to function codes.
- Added move flag "CannotMetronome" instead of hardcoding the signature moves Metronome is forbidden to use.
- Changed the names of some properties in pokemon.txt and pokemon_forms.txt.
- Merged species "Type1"/"Type2" into "Types".
- The "EVs" property's preferred format is now "ATTACK,2,SPEED,1" instead of "0,2,0,1,0,0".
- The "Shape" property in pokemon.txt must now be a name and not a number.
- Allowed the "WildItem" properties for species to contain multiple items each.
- Added species flags that govern form inheritance while breeding, and a flag that sets a particular form by default.
- Added pokemon.txt/pokemon_forms.txt property "Offspring" for species that can be produced by breeding instead of itself (although this property can include itself anyway).
- Renumbered Spiky-Eared Pichu to form 2, so it doesn't clash with Alolan Raichu's form 1.
- Added PBS file pokemon_metrics.txt, for all Pokémon sprite positionings. Can be distributed with sprite pack resources.
- Added new section-based format for ribbons.txt.
- Added new section-based format for shadow_pokemon.txt, which can now also define heart gauge sizes and flags.
- Added new section-based format for trainer_types.txt.
- Removed support for the old trainers.txt format.
- The "Ability" property in trainers.txt can now only be an ability ID.
- The "Ball" property in trainers.txt can now only be an item ID (specifically an item that is a Poké Ball).
- Added Gen 6 PBS files for completeness.
- Renamed all battle-related classes and modules.
- Added battle debug menu (access with F9).
- Refactoring of code relating to switching, effect damage, effects that trigger after a move is used, and end of round.
- Added a Setting that lets some overworld weather set the default terrain effect in battle.
- Added battle rule "disablePokeBalls" which prevents the player throwing Poké Balls at all.
- Refactored battle-starting methods into
TrainerBattle.start. They're now more convenient to use because they no longer have parameters for battle properties that can be set by battle rules.
- Added Aura Wheel's visible type change in battle.
- Added "display" methods for several move properties (which is how those properties are shown to the player) and quoted-out examples of their use (e.g. Hidden Power, Judgment).
- Made it a little easier to disable move text getting its colour from its button in battle.
- Added settings that enable disobedience check for all foreign Pokémon/all player's Pokémon.
- Berries now trigger immediately when a Pokémon with Unnerve leaves the field or has its ability negated.
$player.has_exp_all that has the same effect as the (turned on) Exp. All item.
- NPC trainers now require a Mega Ring item in their inventory (defined in trainers.txt) to Mega Evolve, rather than assuming they always can.
- Added Poké Ball burst animations for sending out a Pokémon (for each kind of Poké Ball).
- Added Poké Ball burst animation for recalling a Pokémon.
- Added Poké Ball burst animations for attempting to capture a Pokémon (for each kind of Poké Ball).
- Added animation for when a capture is successful.
- Added a prompt for what to do with a caught Pokémon if the party is full, and an Options screen option that toggles whether it appears.
- Added a battle rule that forces a captured Pokémon into the party.
- Added support for separate cries that play when a Pokémon faints (put "_faint" on the end of the filename).
- AI will now not use their last defined Pokémon until the end.
- Improved message when an opposing trainer is sending in a new Pokémon.
- Improved message when Exp All awards Exp.
- NPC trainers' end of battle text is now read directly from the trainer object rather than extracted to an array.
|UI and screens
- Added the Town Map to the pause menu if you don't have the Pokégear but do have the Town Map item.
- Added the option to use Fly while looking at the Town Map (if possible).
- Changed when the title screen BGM starts playing.
- Tweaked the timings of evolution messages and audio.
- Added option to Options screen that can disable all nicknaming prompts.
- Tweaked appearance of Options screen, including adding descriptions for all options.
- Changed the available special characters in the naming screen.
- When entering something's name, after entering the first letter and it is upper case, the letter tray automatically shifts to lower case.
- Changed messages when learning a move.
- Updated message when sending a Pokémon to storage.
- Pokémon in storage no longer recalculate their form.
- Updated Poké Mart messages to reflect the latest games.
- Minor improvements to the Purify Chamber screen.
- Added a Setting that makes a new Pokémon's Pokédex entry show after evolution, trading, hatching, gaining from Mystery Gift and general adding.
- Added a Setting that determines whether the Move Reminder can teach previously known egg moves/moves taught by TRs.
- Multiple "Show Choices" event commands next to each other will now be merged together, allowing more than four choices to be shown at once.
rename_choice which alter the next set of choices shown by an event.
- Pokémon and battlers now have a single "types" variable, rather than separate variables for types 1 and 2.
- Added Pokémon properties cannot_store (applies to Day Care as well), cannot_release and cannot_trade.
- Changed how Pokémon markings are recorded, and allowed variants of each mark (e.g. alternate colours).
- Added blue and pink marking colours.
Pokemon#foreign? now defaults to comparing the Pokémon's owner to the player if no trainer is given in its parameter.
- Made Giratina's form use a map_metadata flag "DistortionWorld" instead of a hardcoded array of map numbers.
- Tweaked code around inheriting forms from breeding with a Ditto.
- Removed form-randomising code for Basculin, Flabébé and Oricorio.
- Made Shadow moves optional for a Shadow Pokémon (if the default Shadow Rush isn't defined).
|Code and data
- Removed all uses and support for ID numbers.
- Removed support for trainer type graphics using ID numbers in their names.
- Removed all deprecated code slated for removal.
- Removed support for pre-v19 save files.
- Removed sprite renamer code.
$BallTypes (which translated Poké Ball item IDs into special ID numbers) and all related code.
- Cleaned up evolution method definitions by removing old probability arrays (no longer needed as the old encounters.txt format is now gone).
- Added conversion of berry plant data in old save files to convert ID numbers of berry and mulch items to symbols.
- Updated to mkxp-z v2.3.1. Ruby version updated to 3.1. The green lines bug should be fixed.
- Changed mkxp.json to fix some uncommon rendering problems.
- Rewrote random dungeon generator code to improve it and add comments.
- Refactored Day Care code, including allowing any number of slots to be in it (default is 2).
def _I able to replace text like
- Rewrote and generalised
def pbPickup, and moved its item arrays and chances into separate constants.
- Many style and formatting improvements to the scripts thanks to Rubocop.
- Forced encoding of text to UTF-8.
$PokemonBag will still work for now, but not if you try replacing it (e.g. when switching characters).
- Renamed variables and methods relating to the Bag.
$bag.has? can now check for a minimum quantity. Rewrote Bag's def rearrange.
$Trainer will still work for now, but not if you try replacing it (e.g. when switching characters).
- Renamed some other global variables.
class PokemonTemp into
module EventHandlers for consistency.
- Each proc registered to an event in EventHandlers now has a name so it can be individually referenced/replaced by other code, e.g. plugins.
module MenuHandlers for the contents of various menus.
def count to all GameData variants, and one that returns the number of species for Species.
- Made more use of
- A Pokémon's ability no longer needs manually setting to nil when changing its ability_index.
- Moved code for using a HM/TM/TR into its own handler to better match how other items work.
- Added some more utility code.
- Made checks of map connections go through a single method (
def self.eachConnectionForMap), which makes it slightly easier to modify connections on the fly.
|Debug and compiling
- Rewrote the "Fill Bag" Debug feature to make it much faster.
- Terrain Tag Editor can now only set terrain tags that are defined, rather than any number.
- Added terrain tag 17: NoEffect, to be used when covering up another tile's terrain tag (e.g. floor over water).
- Added Debug function to reload system cache.
- Added Debug function to toggle whether the next play of the credits can be ended early.
- The Pokémon debug menu now shows the Pokémon's status problem.
- Improved default console messages and colouring.
- Added text indicating the GPU cache size to the console messages.
- Changed the content of error messages raised by code in a Script event command.
- Wrote a generalised data property editor that deals with a list of things from a GameData module.
- Added a simple way to replace code in events with other code when compiling (should help with replacing outdated code).
- The game will now automatically compile if it is missing any necessary .dat files.
- You can now hold Shift while starting the game to compile just the plugins.
- Converted all mp3 and wav files to ogg files.
- Replaced and renamed many BGMs, and made some of them ogg files to demonstrate looping.
- Turned trainer intro MEs into BGMs.
- Turned battle victory MEs into BGMs. The "Change Battle End ME" event command no longer does anything.
- Added an SE for picking berries.
- Added underscore to berry plant charsets to be more consistent with other file-naming conventions. Added a Debug menu function that checks for and renames berry plant charset files (both the files themselves and map events that use them).
- Added missing water shore corner tiles to Cave tileset.
- Added plugin meta.txt property "Essentials", which lists versions of Essentials the plugin is compatible with. Warns if this isn't defined or doesn't include the version of Essentials being used, but loads the plugin anyway.
- Added an intro splash screen for mkxp-z.
- Updated the Power Green fonts with more accurate glyphs and additional characters. Repositioned lots of text to accommodate the changes.
- Ensured animation spritesheet/audio file extensions are removed from animation data.
class GameStats, accessible via
$stats, which records a lot of stats.
- Added Pokédex records for eggs seen per species, and expanded seen_forms to include shinies.
- Made an example map event for the Gen 8 fossil combiner.
- Added Hidden Power checker NPC to the Day Care example map.
- Turned fusion items into two separate items for the sake of them having different descriptions.
- Added a Setting that allows the use of multiple stat-related items on a Pokémon at once (Rare Candy, Exp Candies, vitamins, Feathers/Wings, EV-lowering berries).
- Added a method that checks whether the player has enough Triple Triad cards to play.
- Removed all instances of changing the game window's title.