- 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)
pbRefresh
Earlier 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
break
In 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
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!