• Hi, Guest!
    Some images might be missing as we move away from using embedded images, sorry for the mess!
    From now on, you'll be required to use a third party to host images. You can learn how to add images here, and if your thread is missing images you can request them here.
    Do not use Discord to host any images you post, these links expire quickly!
Overworld move that functions as a move reminder

v20.1 Overworld move that functions as a move reminder 2020-12-22

This resource pertains to version 20.1 of Pokémon Essentials.
Pokémon Essentials Version
v20.1 ➖
I just thought it'd be a fun idea! This is a pretty valuable resource for a player to have, though, so you might want to make this a hard-to-acquire move.

I used Instruct as the move for this, because I thought it was fitting, but you can easily change that by just replacing Instruct with the internal name of any other move!

Code​

Unfortunately, this isn't really suited for a plug-and-play script. Luckily, it's not too much hassle to add.

These changes are in UI_Party. If you’re using a script that modifies the party UI, such as Deep_Blue’s BW UI, you’ll need to edit that script instead.

Find:
Ruby:
          next if !HiddenMoveHandlers.hasHandler(move.id) &&
                  ![:MILKDRINK, :SOFTBOILED].include?(move.id)
Add :INSTRUCT to the list of moves, like so-
Ruby:
          next if !HiddenMoveHandlers.hasHandler(move.id) &&
                  ![:MILKDRINK, :SOFTBOILED,:INSTRUCT].include?(move.id)


Below that, find the line:-

Ruby:
        elsif pbCanUseHiddenMove?(pkmn, move.id)

Right above that line, paste this:
Ruby:
        elsif move.id == :INSTRUCT
          if move.pp <= 0
            pbDisplay(_INTL("Not enough PP..."))
            next
          end
          @scene.pbSetHelpText(_INTL("Use on which Pokémon?"))
          old_party_idx = party_idx
          loop do
            @scene.pbPreSelect(old_party_idx)
            party_idx = @scene.pbChoosePokemon(true, party_idx)
            break if party_idx < 0
            newpkmn = @party[party_idx]
            movename = move.name
            if party_idx == old_party_idx
              pbDisplay(_INTL("{1} can't use {2} on itself!", pkmn.name, movename))
            elsif newpkmn.egg?
              pbDisplay(_INTL("{1} can't be used on an Egg!", movename))
            elsif !newpkmn.can_relearn_move?
              pbDisplay(_INTL("{1} has no moves to remember.", movename))
            else
              move.pp -= 1 if pbRelearnMoveScreen(newpkmn)
              pbRefresh
            end
          end
          @scene.pbSelect(old_party_idx)
          pbRefresh

Earlier versions:
In UI_Party, find:
Ruby:
          if [:MILKDRINK, :SOFTBOILED].include?(m.id) ||
             HiddenMoveHandlers.hasHandler(m.id)
Add :INSTRUCT to the list of moves, like so-
Ruby:
          if [:MILKDRINK, :SOFTBOILED,:INSTRUCT].include?(m.id) ||
             HiddenMoveHandlers.hasHandler(m.id)

Below that, find the line:-

Ruby:
        elsif pbCanUseHiddenMove?(pkmn,pkmn.moves[i].id)

Right above that line, paste this:
Ruby:
        elsif [:INSTRUCT].include?(pkmn.moves[i].id)
            if pkmn.moves[i].pp==0
              pbDisplay(_INTL("Not enough PP..."))
              break
            end
            @scene.pbSetHelpText(_INTL("Use on which Pokémon?"))
            oldpkmnid = pkmnid
            loop do
              @scene.pbPreSelect(oldpkmnid)
              pkmnid = @scene.pbChoosePokemon(true,pkmnid)
              break if pkmnid<0
              newpkmn = @party[pkmnid]
              movename = pkmn.moves[i].name
              if pkmnid==oldpkmnid
                pbDisplay(_INTL("{1} can't use {2} on itself!",pkmn.name,movename))
              elsif newpkmn.egg?
                pbDisplay(_INTL("{1} can't be used on an Egg!",movename))
              elsif !pbHasRelearnableMove?(newpkmn)
                pbDisplay(_INTL("{1} has no moves to remember.",movename))
              else
                pkmn.moves[i].pp -= 1 if pbRelearnMoveScreen(newpkmn)
                pbRefresh
              end
            end
            @scene.pbSelect(oldpkmnid)
            pbRefresh
            break

In PScreen_Party, find:

Ruby:
        if !pkmn.egg? && (isConst?(move.id,PBMoves,:MILKDRINK) ||
                          isConst?(move.id,PBMoves,:SOFTBOILED) ||

Change it to:
Code:
        if !pkmn.egg? && (isConst?(move.id,PBMoves,:MILKDRINK) ||
                          isConst?(move.id,PBMoves,:SOFTBOILED) ||
                          isConst?(move.id,PBMoves,:INSTRUCT) ||


Below that, find

Ruby:
            end
            @scene.pbSelect(oldpkmnid)
            pbRefresh
            break

Right below "break", add

Ruby:
          elsif isConst?(pkmn.moves[i].id,PBMoves,:INSTRUCT)
            if pkmn.moves[i].pp<=1
              pbDisplay(_INTL("Not enough PP..."))
              break
            end
            @scene.pbSetHelpText(_INTL("Use on which Pokémon?"))
            oldpkmnid = pkmnid
            loop do
              @scene.pbPreSelect(oldpkmnid)
              pkmnid = @scene.pbChoosePokemon(true,pkmnid)
              break if pkmnid<0
              newpkmn = @party[pkmnid]
              movename = PBMoves.getName(pkmn.moves[i].id)
              if pkmnid==oldpkmnid
                pbDisplay(_INTL("{1} can't use {2} on itself!",pkmn.name,movename))
              elsif newpkmn.egg?
                pbDisplay(_INTL("{1} can't be used on an Egg!",movename))
              elsif !pbHasRelearnableMove?(newpkmn)
                pbDisplay(_INTL("{1} has no moves to remember.",movename))
              else
                pkmn.moves[i].pp -= 1 if pbRelearnMoveScreen(newpkmn)
                pbRefresh
              end
            end
            @scene.pbSelect(oldpkmnid)
            pbRefresh
            break

This move can't be used on the user (or eggs/Pokémon that have no moves to remember, of course), and deletes 1 PP per use.

Looking for more field moves?​

You may also be interested in Lucidious89's Improved Field Skills.
Credits
Credit to TechSkylander1518, please!
  • Like
Reactions: ThatWelshOne_
Author
TechSkylander1518
Views
2,877
First release
Last update
Rating
0.00 star(s) 0 ratings

More resources from TechSkylander1518

Latest updates

  1. v20 Update

    Quick v20 update, also fixed the bug of PP being depleted regardless of if a move was taught...
  2. v19 Update

    Now compatible with v19!
Back
Top