- 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!
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:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Add :INSTRUCT to the list of moves, like so-
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Below that, find the line:-
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Right above that line, paste this:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Earlier versions:
	
	
		
			
	
	
	
		
			
	
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.
					
					
	
		
			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)
			
				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)
          pbRefreshEarlier versions:
In UI_Party, find:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Add :INSTRUCT to the list of moves, like so-
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Below that, find the line:-
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Right above that line, paste this:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
			
				Ruby:
			
		
		
		          if [:MILKDRINK, :SOFTBOILED].include?(m.id) ||
             HiddenMoveHandlers.hasHandler(m.id)
			
				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
            breakIn PScreen_Party, find:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Change it to:
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Below that, find
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
Right below "break", add
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
		
			
				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
            breakRight 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
            breakThis 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!
 
	







