# Following Pokemon EX v2.0.7

Pokémon Essentials Version

Following Pokemon EX
Highly Improved version of the Following Pokemon script by help14 and mej71 for Essentials v19.1

Overview:
The Following Pokemon script made by help14 was truly a groundbreaking script. It brought the Walking Pokemon functionality from HGSS to Essentials allowing players to walk around with their Pokemon and talk to them, just like those games. However, that script was made with v15.1 in mind, which is 6 years old now! Not only that, people (including myself) who tried to update the script to the latest version of Essentials, didn't change that. What happened was that each new updated added new features to a dated script, making it bloated and riddled with bugs. This version of the script aims to fix that. I've rewritten almost all of the script with v19 in mind. I've also fixed many bugs, added several new features, added built-in compatibility with a few common Essentials scripts, and would go even as far as to call this, the definitive version of the Following Pokemon script.

New Features:
• Added a system to include new Dialogue for the Following Pokemon easily
• Added a system to include new Conditions to refresh the Following Pokemon easily
• Added accurate Animation for Entry of Following Pokemon in Battle
• Added accurate Animation for HM Usage by Follower in the Overworld
• Made the Follower alot more interactive by increasing the amount of default dialogue. (Thanks to Aki!)
• Added Gen 4 style Overworld Emote Animations for the Followers when talking to you.
• Native Support for the following scripts:
• Marin's Footprint Script
• Marin's and Boonzeets Sideways Stairs script
• KleinStudio's Always on Bush script
• Pokemon Amie script by Bhagya Jyoti
• Pokeride script by Marin

Fixes from the Original Script:
• Compatibility for Essentials v19.1
• Dropped support for all older version of Essentials
• Updated the sprite renamer in v19.1 to rename all Following Pokemon sprites to the new format
• Fixed all weird open and close animation issues
• Optimized and rewrote most of the code to increase Performance greatly
• The first unfainted Pokemon in the party will follow you instead of having no follower when the first party member faints
• Fixed the need for using 100 different commands to toggle followers. Now pbToggleFollowingPokemon should suffice in all cases
• Your follower pokemon are now reflected in any water the player is
• Fixed the need for extra game switches and variables
• Fixed bugs with Forms and Shiny Overworlds
• Fixed issues with Ledges, Ice Sliding, blacking out, map transfers, Fixed Duplicate Followers and HMs.
• Removed unnescessary bloated features like cycling through your party and always animated exception.

If you want a compilation of all Pokemon Overworld sprites from Gen 1-8 formatted for the script, consider checking out the Generation 8 Project for Essentials v19.1

This script is not compatible with Essentials v18, v17.2, v16.2 or any other older version of Essentials. I do not plan to add compatibility for any of them.

Please Credit the following people when using this script

• Golisopod User
• Help-14
• zingzags
• Rayd12smitty
• mej71
• Help-14
• PurpleZaffre
• Akizakura16
• Thundaga
• Amrin (Fairies Resource Pack)

Instructions:
Installation of Script:
1. Close RPG Maker
2. Make a backup of your project incase you have any custom changes in your Animations (not Move Animations) and Common Events in the Data folder.
• NOTE: Backing up your project basically means Ctrl + C your game folder and Ctrl + V it somewhere else to keep your changes from being permanently overwritten by the next step
3. If you are updating from an older version, please make sure to delete the original plugin scripts from the Plugins folder.
4. Extract the contents of the ZIP file into your game's root folder. (The folder with Game.exe in it). This will make permanent changes to your project, so make sure you completed step 1, if you've made changes to your game.
5. Run the game in Debug Mode atleast once.
• NOTE: If you do not see Loaded plugin: Following Pokemon EX in the console (the black window that you see when running v19.1 in Debug Mode), that means the script hasn't compiled and will not work.
To force the game to compile the plugin, open the Data folder of your game and delete PluginScripts.rxdata. Then try running the game in Debug Mode.
This is what the console window should look like, if the plugin is installed correctly:
6. Start a new save

Usage of Script:
Setting up the Following Pokemon event:
1. Create a new blank event in the map where you want to the Pokemon to follow you. This event should have the
name "FollowerPkmn". Note down the ID of this event. Here's a visual representation:

As you can see in the top left corner, the event's name is "FollowerPkmn". You can also see that the Window Title says "Edit Event - ID:007". The "ID:007" gives us the ID number of the event. We will note this ID down.
2. In an event add the script command pbPokemonFollow(X), where X is the ID of the event we noted down. Here's a visual representation:

As you can see, this is Professor Oak, who only has 1 dialogue. This doesn't matter, the event can be as large and complex as you want. What matters is that the script command pbPokemonFollow(X) is present in it. In the last step, we saw that the event ID was 007, so we'll replace the X with that ID we noted down, while removing the insignificant 0's from the ID. So our script call will be pbPokemonFollow(7).
3. Test the event in - game.

New Naming Convention:
• The v19.1 version of Following Pokemon has a brand new naming convention to match that of the rest of v19.1.
• All the Overworld Sprites are in Graphics/Characters/. They have been separated into 2 folders, Followers and Followers shiny.
• All the sprites in both thhe folders now use their internal name instead of ID numbers.
• The script will not load any Follower graphic if the sprites don't follow this naming convention.
• To rename your old sprites to match the new format automatically:
1. Place all your Overworld Sprites in Graphics/Characters/. Make sure that they aren't in any subfolders, like the "Following".

Like this

Not Like This
2. This step is different based on whether you use v19 or v19.1:
• For v19 users:
• For v19.1 users:
• Select Other Options, then select "Rename Old Sprites".
• When you see the prompt saying "Check for Pokémon/item/trainer files in their old folders that need renaming and moving", select Yes.
• Enjoy the show :)

Configuring Constants:
• In Plugins/Following Pokemon EX/ open 001_Settings.rb
• NOTE: A .rb file is just a glorified .txt file and can easily be opened with any text editor like Notepad.
• Inside the script you'll see certain configuration constants, as follows:
Code:
FOLLOWER_COMMON_EVENT => ID of the Common event that contains "pbTalkToFollower" in  a script command. Ignore this if you haven't edited the common events in your game, or don't know what they are.

Animation_Come_Out => Animation ID for the "Come out of Pokeball" Animation for followers.
Animation_Come_In  => Animation ID for the "Go into Pokeball" Animation for followers.
Emo_Happy          => Animation ID for the "Smilimg" Animation for followers.
Emo_Normal         => Animation ID for the "..." Animation for followers.
Emo_Hate           => Animation ID for the "Angry" Animation for followers.
Emo_Poison         => Animation ID for the "Poisoned" Animation for followers.
Emo_sing           => Animation ID for the "Music Note" Animation for followers.
Emo_love           => Animation ID for the "Heart" Animation for followers.

TOGGLE_FOLLOWER_KEY => The key that the player can press to toggle follower. Set this to nil to disable this feature.
CYCLE_PARTY_KEY => The key that the player can press to cycle through their party. Set this to nil to disable this feature.

APPLY_STATUS_TONES => Tint the Following Pokemon sprite if it has a status condition
TONE_BURN          => Array of numbers corresponding to the RGB values of the Burn Tint
TONE_POISON        => Array of numbers corresponding to the RGB values of the Poison Tint
TONE_PARALYSIS     => Array of numbers corresponding to the RGB values of the Paralysis Tint
TONE_FROZEN        => Array of numbers corresponding to the RGB values of the Frozen Tint
TONE_SLEEP         => Array of numbers corresponding to the RGB values of the Sleep Tint

FRIENDSHIP_TIME_TAKEN => Time Taken for Follower to increase Friendship when first in party (in seconds)
ITEM_TIME_TAKEN       => Time Taken for Follower to find an item when first in party (in seconds)

ALWAYS_FACE_PLAYER    => Whether the Follower always faces the player, or not like in HGSS

SURFING_FOLLOWERS => List of Pokemon that will always appear behind the player when surfing. (Doesn't include any flying or water types because those are handled automatically)

SURFING_FOLLOWERS_EXCEPTIONS => List of Pokemon that will not appear behind the player when surfing, regardless of whether they are flying type, have levitate or are mentioned in the SURFING_FOLLOWERS.

Script Functions:
Code:
pbToggleFollowingPokemon(forced,anim)
# The main command used to toggle the Following Pokemon
# forced => Set this to false if you want to force the followers to turn off and true if you want followers to turn on. Set this to nil if you don't want to forcefully toggle the Pokemon.(The "on" and "off" string conditions are still supported until the next version.)
# anim   => Set this to true if you want to play the Pokeball Animation when the Follower is toggled, and false if you don't.

Examples:
pbToggleFollowingPokemon
pbToggleFollowingPokemon(nil,true)
pbToggleFollowingPokemon(true,false)

Code:
pbTalkToFollower
# The main command used to initiate the dialogue when speaking to a follower.

Code:
pbPokemonFound(item,quantity,message)
The command used to initiate a special dialogue which gives the player an item.

# item      => Set this to an item you want the Pokemon to find. (Compulsury)
# quantity  => Set this to the quantity of the item you want the Pokemon to find
# message   => A special message to go along with the Item Find

Examples:
pbPokemonFound(:POTION)
pbPokemonFound(:ORANBERRY,5)
pbPokemonFound(:POKEBALL,1,"{1} is holding something round...")

Code:
pbRemoveDependenciesExceptFollower
# The command used to remove all Dependent events except your Following Pokemon.

Code:
follower_move_route(commands,waitComplete)
The command used to add move routes to Following Pokemon.

# commands      => Set this to an array of Move Commands. (Compulsury)
# waitComplete  => Wait for Move Route Completion

Examples:
follower_move_route([PBMoveRoute::TurnRight,PBMoveRoute::Wait,4,PBMoveRoute::Jump,0,0])
More examples can be found in Follower_Config if needed
The commands to be inputted for follower_move_route can be found here.

Configuring the Dialogue and Disappear Conditions:
• This is something you do not want to delve into if you aren't somewhat comfortable with Ruby, because you can break the whole system.
• The configuration for Dialogue and Disappear conditions is done in script files in the 001_Config folder of the Following Pokemon EX plugin.
• The appearing and disappearing conditions are handled in 001_Appearing.rb. When the proc of an Events.FollowerRefresh returns false, the Pokemon disappears. If the proc returns true, or no value at all, the Pokemon appears.
• These procs have the arguement "pkmn" which refers to the current pokemon following you.
• The dialogue said by a Following Pokemon, when spoken to are handled in 002_Dialogue_Specific.rb and 002_Dialogue_Generic.rb. As the name suggests, one handles dialogue under specific conditions, while the other handles generic dialogue.
• The Events.OnTalkToFollower will stop after any of the procs has been returned out of. If you don't return, then the script will end up displaying every single possible dialogue.
• These procs have the arguement "pkmn,x,y,random_val" which refers to the current pokemon following you, the x and yposition of the follower and a random value between 0 and 6.
• If you don't wanna add new dialogue and just edit the existing one, then that should be super easy as well.
• You can do anything inside these Events.OnTalkToFollower and Events.FollowerRefresh procs as long as the syntax is correct.
• This isn't an exhaustive guide, not by a long shot. But you should get the basics of working with these procs by looking at the guide.

Changelog:
• v2.0.7
Added a toggle to prevent followers from always changing their direction, to closely mimic HGSS.
Added an option to add a key to cycle through the player's Party Pokemon in the overworld.
Rearranged almost all the scripts to make it easier to edit and keep track of changes.
Made the rate of animation of the Following Pokemon's overworld FPS Agnostic.
The status condition tones now have a pulsing effect, and the colors have been improved. They aren't bright and annoying to look at anymore.
The Following pokemon now gets 3x the friendship boost than it did earlier from being first in the party.
Fixed alot of the "map connection jump" bugs that Following Pokemon had.
Fixed some of the animation bugs when Followers were forcefully toggled off.
Added support for regular boolean arguements for toggling following pokemon on and off.
Made the maximum height for Pokemon to follow you in interior maps be 3m.
Removed alot of fluff that was needed for refreshing the following Pokemon after interacting with the party screen.
Removed compatibility for Generation 8 Project v1.0.4 and below.

Instructions under Usage of Script have also been updated to detail the new configuration constants as well as the dialogue and disappear conditions better.
If you are updating from an older version, please make sure to delete the original plugin, so that the old changes don't overwrite the new changes.

• v2.0.6
Fixed Follower appearing on top of player when warping from a map using "Transfer Player"
Fixed Debug Warp moving player to impassable tiles
Fixed many interactions of Following Pokemon with regular Dependent events
Fixed bugs with Ball Open/Close Animations
Fixed follower stranding the player on single tile islands in the water.
Fixed many bugs related to surfing
Made time taken for follower to get an item and/or increase its friendship be FPS agnostic
Improved the code for the Following Pokemon sprite renamer
Removed compatibility for Essentials v19.0 and Generation 8 Project v1.0.2 and below.

• v2.0.5
Made the "stepping animation speed" for Followers independent of Player speed
Added fixes for followers interacting with bridges
Fixed a crash with followers when surfing
Changed alot of things related to surfing followers
Added a failsafe incase people miss the 1st step in the instructions and don't close RMXP when installing the script

• v2.0.2
Added a failsafe incase sprites aren't properly named
Added Compatibility for new Sprite Renamer from the Gen 8 Project v.1.0.1

• v2.0.1
Fixed uninitialised constant error
Fixed Sprite Renamer being dumb

• v2.0
Big update that adds v19 compatibility
Fixed many bugs and optimized the code even further
Rewrote the instructions to be more helpful and descriptive

• v1.3
Fixed a gamebreaking bug with starting over.
Readded animations back to some places where they were missing.

• v1.2
Many gamebreaking crashes and a few tiny inconsistencies have been fixed.

• v1.1
Some fixes with Enhanced Stairs compatibility
Fixed a few animation related bugs with surfing
Starting over has been thoroughly tested and has no bugs
Fixed forms not reverting after battle

• v1.0
Script released
Credits
• Golisopod User
• Help-14
• zingzags
• Rayd12smitty
• mej71
• Help-14
• PurpleZaffre
• Akizakura16
• Thundaga
• Amrin (Fairies Resource Pack)
Author
Golisopod User
1,972
Views
13,074
First release
Last update
Rating
17 ratings

1. ### Bugfixes and Changes

Added a toggle to prevent followers from always changing their direction, to closely mimic HGSS...
2. ### More bugfixes

Fixed Follower appearing on top of player when warping from a map using "Transfer Player" Fixed...
3. ### More bugfixes

Made the "stepping animation speed" for Followers independent of Player speed Added fixes for...

### Latest reviews

This scrips works amazingly! One question that I had is how to make thw pokeon always be behind you, as it seems that my player goes faster than them. Other than that, it is a great addition.
Golisopod User
Are you sure you haven't tampered with any of the scripts, and also are you sure that no other Plugin is overwriting the changes in this script. I haven't faced this issue and haven't seen anyone else report it. If possible, please share a recording of this issue in action.
Works perfectly.
Just one question: the Pokémon should appear on dependant events?
Because the char which should follows my character disappear, and the Pokémon keeps following me, instead of the dependant one.
Golisopod User
Could you be a little clearer? This statement is a bit confusing.
I love this program and it is actually incredible! The only issue is that I've noticed that one Pokemon won't follow for some reason. It's Coalossal. Not sure why, but just letting you know.
Golisopod User
In HGSS, Pokemon which are taller than 8 feet in height are sent back to their Pokeball's when inside a building. This is to prevent 60 ft tall behemoths like Groudon from walking into some dudes home. Coalossal's height is 9 ft 6 inches, which is higher than the limit, so it won't follow you when in buildings.
amazing, the only improvement would be to add the necessary OW sprites in the zip. but that is understandable, as not every game has the same dex. great work!
Golisopod User
Thanks! If you want Gen 1-8 Overworld sprites, be sure to check out the other resource linked in the thread which contains overworlds for all Gen 1-8 Pokemon, as well as other Gen 8 Systems for Pokemon Essentials.
Very nice work Golisopod User, will definetly use this!!
A modern & optimized reboot of the beloved Follower Pokemon mod by mej71 for Essentials v18+
Took a bit for me to install the script but it does perform really well in-game.

However, one small thing that I've been experiencing is that when using ledges, the dust animation for when the player lands is offset downwards by one whole grid. This happens after placing the animations.rxdata from the download provided.

I tried replicating this in a backup of my personal project as well as a fresh copy of PE and it was the same outcome.

Not too sure if it's me doing something wrong with the install still, so this is still a great script nonetheless.
Golisopod User
The animations provided are just supposed to be temporary ones just to show the script has the emote functionality. You don't need to use them. Feel free to change them if you have any issue.
This is one of the coolest scripts available for Pokémon Essentials. The only issue that I have with it is when I leave some map through a door - the following Pokémon appears above my char no below it
Golisopod User
This should be fixed in the next update
Works totally fine, installing was easy.

There's only 1 thing I personally dislike: When I stand still, the pokemon still moves, I would love to get help to fix that.
Golisopod User
That's how it is in HGSS, which is what I'm trying to emulate.
Love your this mod, great update from previous version's I haven't seen any glitches.

I did however force an error with this Script and wanted to share to you.

By talking to my Pokémon, it did the jumping of joy animation. and I proceded to talk into the Pokémon and the game chrashed. This is a minor thing and will likely not happen but here is the error code it gave me.

[Pokémon Essentials version 18.1]
Exception: RangeError
Message: float 1.#INF out of range of integer

Backtrace:
Sprite_Resizer:330:in _yeq_SpriteResizer'
Sprite_Resizer:330:in y='
RPG__Sprite:531:in y='
Sprite_DynamicShadows:157:in update_or'
Follower_Main:974:in update'
Follower_Main:1083:in each'