• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Script: Tutor.net v1.2.1 [Essentials v20.1]

142
Posts
10
Years
Ever felt like you didn't like how the games handle move tutors? Especially when your game is big and players don't even remember in what corner of the world was that Drain Punch tutor and even if they do, they have to backtrack?
Or the fact that unlike modern TMs, you gotta pay for tutor moves every single time?
Fear not, for the Move Tutor Guild decided to get out of the 90s and embrace the age of the internet, with their new PokeGear app, the Tutor.net!

Description:
With the Tutor.net you can take any move, assign a cost and a currency for that cost to it, and save all that in an app to be always accessible for the player.
The guide will be quite long so I will separate it to chapters with an easy Ctrl+F below:
Chapters:
0: Using Tutor.net
1: Adding a move to Tutor.net
2: Event-specific tutor lists
3: Changing a registered move's cost/currency
5: New Features as of v1.1: Teaching moves directly to the new visible interactable party.
6: New Features as of v1.2: TM to Tutor conversion.
7: Installation
8: Compatibility
9: Changelog

Chapter 0: Using Tutor.net
The Tutor.net app is set to be accessible from the PokeGear. It will list every move that has been added to Tutor.net through the above method.
16561

16560


The tutor moves are stored in this array:
$Trainer.tutorlist
Which means that if for some reason you want to clear a save files's list of registered moves, all you have to do is:
$Trainer.tutorlist = []


Chapter 1: Adding a move to Tutor.net

To add a move to Tutor.net you will need the method:
pbTutorNetAdd(move, cost=0, currency="$")
The currency's default value is "$" which is a string, but if you assign an item id on it, it will be the item id instead.
Examples:
16559

Yes, you see right, ANY ITEM can be used as currency for any move. You can be traditional with shards or money,
or you can have that one Ruin Maniac want Relics to teach you his moves! And you will send him that relic through the internet! Technology has truly reached far...


Chapter 2: Event-specific tutor lists

For the sake of optional flavor, I've made another method through which you can make tutor events open a separate Tutor.net screen listing only the specific moves that they teach.
Those moves must have already been previously added in Tutor.net with a specific cost and currency.
The method is:
pbTutorNetTutor(movelist)
where movelist is an array of the moves of your choice.
Example:
16562

16565

You will notice that Knock Off is not in this list. I intentionally put Knock Off in the event to show you that if a move has not been previously added to the Tutor.net with the pbTutorNetAdd method, it will simply not show in this individual tutor's list.
I'll repeat that this event tutor specific list method is fully optional and only exists for potential flavor, because why would a tutor not offer to teach their own moves personally if interacted with?

By the way here's an all-in-one "lazy guide" that I made that combines the above:
16584



Chapter 3: Changing a registered move's cost/currency

First of all I made a method for SILENTLY changing a registered move's cost/currency.
Code:
pbTutorNetChangeMoveCost(move,cost=0,currency="$")

Example:
16576


Code:
pbTutorNetChangeMoveCost(:STOMPINGTANTRUM,3000)
16577


Code:
pbTutorNetChangeMoveCost(:STOMPINGTANTRUM,1,:RELICSTATUE)
16578


Hint: You can use the above method to temporarily change a registered move's cost for a limited availability event, lets say someone in a sinking ship offers to teach you Water Pulse for free for... reasons. (That's a useful application for pbTutorNetTutor).
At the end of the event you can use the same method to restore the move's price to how it previously was.

Now with that out of the way:
If a player who has already registered a move in the Tutor.net finds another event that registers again the same move to Tutor.net under a different cost these scenarios exist:

Sample A: We already have Stomping Tantrum registered in our Tutor.net as follows:
16573


Scenario 1: The cost of the newly registered version is 0 unlike the current version, therefore the move is free.
16566

16575


Scenario 2: The cost of the newly registered version is different than the current version, and none is free.
16567

16568

16569

16570


Yes:
16571

16574


No:
16572

16573


Sample B: The cost of the currently registered version is 0, therefore that move was already free.
16575

-Nothing happens

Chapter 4: The Settings
16580


1.
PERMANENT_TUTOR_MOVE_UNLOCK = true/false
Choose whether you want tutored moves to be permanently unlocked instead of repeatedly purchased.
I personally encourage the permanent unlock setting.
Example of a move that gets purchased through the app after teaching it to a Pokemon, and then becomes free:
16579


2.
USE_TUTOR_MOVE_ALIASES = false/true
ITEM ABBREVIATION: Here you can assign abbreviated names to specific items to take less space in the Tutor.net list
Here you assign aliases of your choice. Below are some Examples (which you can edit if you want):
Code:
TUTOR_MOVE_ALIASES = [
   [:REDSHARD,"Red"],
   [:BLUESHARD,"Blue"],
   [:GREENSHARD,"Green"],
   [:YELLOWSHARD,"Yellow"],
   [:ORANGESHARD,"Orange"],
   [:PURPLESHARD,"Purple"],
   #THIS IS THE MAIN EXAMPLE AND KEEPS THE ARRAY FROM BREAKING.
   #DO NOT EDIT THIS ONE. ADD YOUR ALIASES ABOVE
   [:ITEMWITHVERYBIGNAME,"Beeg"]
]

Example of how Tutor.net looks like with abbreviated names:
16581


3.

BIGGER_FRAME_STYLE = false/true
STYLE SELECTOR
Choose if you prefer the Tutor.net Screen with the bigger frame.
Bigger frame style has less space for text so you might need to add item aliases.

Example: Bigger frame style without aliases can result in this:
16582


Aliases help alleviate this issue:
16583


Chapter 5: New features as of v1.1:
Teaching moves directly to the new visible interactable party.
*******************************************************************************************************
The UI has been changed (improved?) slightly (images below).
*******************************************************************************************************
After getting inspired by v20.1 - Bag Screen with interactable Party , Tutor.net now has the player's party displayed on the side, and moves can be directly taught within the app, without needing to move to the party screen.
Additionally indicators make it so it is immediately visible which party members are compatible, or already know the move the cursor currently points to.
18016

*******************************************************************************************************
Pressing SHIFT allows you to only show the moves a certain pokemon is compatible with.
18017

*******************************************************************************************************
Pressing ACTION (default: Z) displays information of the move the cursor currently points to.
18018

*******************************************************************************************************
Visiting Tutor.net for the first time will inform the player of these new functions.
18019

*******************************************************************************************************
Two party backgrounds to choose from: black and blue. Both come in default and big frame versions. Controllable via the new BLUE_PARTY_BACKGROUND setting.

Chapter 6: New features as of v1.2:
The TM to Tutor conversion optional feature.
Essentials handles both TM moves and Tutor moves the same way, in regards to pokemon compatibility.
This made me realise when I had to deal with teaching moves to my pokemon it was more comfortable doing it via Tutor.net, especially with the latest QoL added to it, instead of going through the TM pocket and having to remember which TM number is what move because they are sorted by number and every generation keeps changing them so I lose track of them.

So I took the next step and moved TM moves to Tutor.net so that all my tutorable moves are in one place where I can easily find what I want since they are sorted alphabetically.

This also means the bag has 1 less pocket to swap between, which sounds good to me at least. Or you can repurose the TM pocket into a pocket for something else, like for example evolution items.

This is an OPTIONAL feature that is controlled from the new TM_TO_TUTOR setting.
This also means if this isn't to your liking you can skip this update.
18117


default: false just to be safe

The process is automatic and you do not need to change anything in your game.
Example: this is your normal npc and your nomal item ball each giving you a TM item that is not edited in any way.
18119


As you can see the text is a little diffent than for example TM26: Poison Tail.
This is another setting for this feature that allows to change the naming scheme for obtaining TMs to whatever your preference is.
There are two settings for it, one that enables it and one where you put the item title of your choice.
1684836491087.png


BACKWARDS COMPATIBILITY:
If you add this while you or your players have existing save files where they have obtained TMs already, fear not.
I have made the
tmtutor_convert
tmtutor_clear
methods.
tmtutor_convert adds all existing TMs in the TM pocket to Tutor.net
tmtutor_clear clears the TM pocket.
I decided to have these actions be tied to different methods because people might just want to add the TM moves to Tutor.net while keeping the TM system, that is possible too.

Chapter 7: Installation
Simply extract the contents of the zip into your game's main directory.
There are 2 Folders.
-The Plugin\Tutor.net folder series which contains the Plugin scripts and will be merged with your Plugin folder.
-The Graphics\Plugins\Tutor.net folder series which contains the 2 UI styles for tutornet and will be merged with your Graphics folder.

Chapter 8: Compatibility
No known incompatibilities as of date.

Chapter 9: Changelog
1.2:
- Added the TM to Tutor optional feature.
1.1:
- The UI has been changed (improved?) slightly
- The party is shown in the app with move compatibility indicators and can be taught moves directly without jumping to the party screen.
- Pressing SHIFT allows you to only show the moves a certain pokemon is compatible with.
- Pressing ACTION (default: Z) displays information of the move the cursor currently points to.
- Two party backgrounds to choose from: black and blue. Controllable via the new BLUE_PARTY_BACKGROUND setting.


 
Last edited:
142
Posts
10
Years
Updated the OP with Tutor.net's last 2 updates. You can refer to the OP for more details about them.
1.1:
- The UI has been changed (improved?) slightly
- The party is shown in the app with move compatibility indicators and can be taught moves directly without jumping to the party screen.
- Pressing SHIFT allows you to only show the moves a certain pokemon is compatible with.
- Pressing ACTION (default: Z) displays information of the move the cursor currently points to.
- Two party backgrounds to choose from: black and blue. Controllable via the new BLUE_PARTY_BACKGROUND setting.
1.2:
- Added the TM to Tutor optional feature.
 
4
Posts
167
Days
  • Age 28
  • Seen today
Hey! This is a dope plug-in concept.

I'm trying to update this script to v21.1:
- replaced $Trainer -> $player (including "class Trainer" -> "class Player"
- removed all instances of Kernel

I can run pbTutorNetAdd(:HEATWAVE) to successfully add Tutor.net to the PokeGear and Heat Wave to Tutor.net

However, after I attempt to open Tutor.net in the Pokegear, the game throws an Argument Error on line 144 of Tutor.net.rb, saying "Given 1, expected 0"
- Line 144 is: super(viewport)
- the initialize() includes a viewport=nil
- other instances of super(viewport) exist within default Essentials v21.1

Any advice on how to adapt to v21.1?
 
Back
Top