# Following Pokemon EX v2.0.6

Pokémon Essentials Version

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

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 v18 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
• Dropped support for all older version of Essentials
• Updated the sprite renamer in v19 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. 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.
4. 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 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:
5. 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 version of Following Pokemon has a brand new naming convention to match that of the rest of v19.
• 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_Follower_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.

ALLOW_TOGGLE_FOLLOW => Allow the player to toggle followers on/off by pressing a key
TOGGLE_FOLLOWER_KEY => The key that the player can press to toggle follower

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)

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 "off" if you want to force the followers to turn off and "on" if you want followers to turn on.
# 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,false)
pbToggleFollowingPokemon("off",true)

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. The commands can be found by using Ctrl+Shift+F for module pbMoveRoute (Compulsury)
# waitComplete  => Wait for Move Route Completion

Examples:
followingMoveRoute([PBMoveRoute::TurnRight,PBMoveRoute::Wait,4,PBMoveRoute::Jump,0,0])
More examples can be found in Follower_Config if needed

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 002_Follower_Config.rb
• The script handles Dialogue and Disappear conditions through procs. The order of these procs matters alot.
• An Events.FollowerRefresh proc will make the following pokemon disappear if it returns a false value.
• An Events.OnTalkToFollower will edit the dialogue a Following Pokemon says, upon being spoken to.
• Adding your own dialogue and modifying existing ones should be very easy because I have added many useful comments in the rb file. Please go through them thoroughly.

Changelog:
• 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 man bugs related to surfing and the Ball open close animation
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,253
Views
8,090
First release
Last update
Rating
12 ratings

1. ### More bugfixes

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

Made the "stepping animation speed" for Followers independent of Player speed Added fixes for...
3. ### More bugfixes

Added a failsafe incase sprites aren't properly named Added Compatibility for new Sprite Renamer...

### Latest reviews

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'
Tilemap_Perspective:434:in follow_update'
Follower_Main:974:in update'
Follower_Main:1084:in update'
Follower_Main:1083:in each'
Follower_Main:1083:in update'
Golisopod User
This is a very specific bug that will only occur when 3 very specific conditions are satisfied. I'll fix this in the next update.
It took some trying to get working, but once it did, I was filled with so much happiness. Thank you for this tool. For anyone struggling to get things to work, here are a couple snags I ran into (because of certain parts of the instructions that I misunderstood- totally my fault):

In Step 7, the ID number of Follower_Common_Event is a number you find near the top of the script section "Follower Config", the one you put above Main. The ID was "5", for me. That means I had to put "pbTalkToFollower" in the 005 slot of the Common Events in my Database.
Also, make sure that the event you use for Step 9 is not the same event you use for step 8- Step 8's event has to remain blank, as far as I can tell.

All of this was made clear in the instructions, but I figured maybe this could help someone who runs into the same snags I did. In any case, this tool is truly wonderful, thank you and the previous Follow Pokemon version developers!