- Pokémon Essentials Version
- v20.1 ➖
Lets players use Future Sight to see the future of their Pokémon!
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,:FUTURESIGHT].include?(move.id)
			
				Ruby:
			
		
		
		        elsif pbCanUseHiddenMove?(pkmn, move.id)Right above that line, paste this:
			
				Ruby:
			
		
		
		        elsif move.id == :FUTURESIGHT
          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 newpkmn.egg?
              #used to prevent HP bar from appearing
              annotations = [nil,nil,nil,nil,nil,nil]
              annotations[party_idx] = " "
              @scene.pbAnnotate(annotations)
              steps = newpkmn.steps_to_hatch
              newpkmn.name           = newpkmn.speciesName
              newpkmn.steps_to_hatch = 0
              newpkmn.hatched_map = 0
              newpkmn.timeEggHatched = pbGetTimeNow
              move.pp -= 1 if @scene.pbSummary(party_idx)
              newpkmn.steps_to_hatch = steps
              newpkmn.hatched_map = nil
              newpkmn.timeEggHatched = nil
              newpkmn.name           = "Egg"
              pbRefresh
            else
              selpkmn = (pkmn == newpkmn) ? "its own" : "#{newpkmn.name}'s"
              pbDisplay(_INTL("{1} caught a glimpse of {2} future...", pkmn.name, selpkmn))
              evos = newpkmn.species_data.get_evolutions
              evos.each_with_index do |evo, i|
                evos[i] = nil if evo[1] == :None
                evos[i] = nil if [:LevelMale, :HappinessMale, :HoldItemMale, :ItemMale, :TradeMale].include?(evo[1]) && !newpkmn.male?
                evos[i] = nil if [:LevelFemale, :HappinessFemale, :HoldItemFemale, :ItemFemale, :TradeFemale].include?(evo[1]) && !newpkmn.female?
              end
              evos.compact!
              evo_msg = pbGetEvolutionText(evos.sample)
              if evo_msg
                move.pp -= 1 if pbDisplay(_INTL("{1} {2}", newpkmn.name, evo_msg))
              elsif newpkmn.level < GameData::GrowthRate.max_level
                next_move = nil
                moveList = newpkmn.getMoveList
                moveList.each do |m|
                  next if newpkmn.level > m[0]
                  next if newpkmn.hasMove?(m[1])
                  next_move = m
                  break
                end
                if next_move
                  next_move_name = GameData::Move.get(next_move[1]).name
                  move.pp -= 1 if pbDisplay(_INTL("{1} may learn {2} at level {3}.", newpkmn.name, next_move_name, next_move[0]))
                else
                  pbDisplay(_INTL("{1}'s future is too vast to read.", newpkmn.name))
                end
              else
                pbDisplay(_INTL("{1}'s future is too vast to read.", newpkmn.name))
              end
            end
          end
          @scene.pbSelect(old_party_idx)
          pbRefresh
			
				Ruby:
			
		
		
		def pbGetEvolutionText(evo)
  return if !evo || evo.empty?
  method, param = evo[1], evo[2]
  if param && param.is_a?(Symbol)
    case method
    when :HasMove, :HappinessMove         then name = GameData::Move.get(param).name
    when :HasMoveType, :HappinessMoveType then name = GameData::Type.get(param).name
    when :HasInParty, :TradeSpecies       then name = GameData::Species.get(param).name
    else                                       name = GameData::Item.get(param).name
    end
    article = (param == :LEFTOVERS) ? "some" : (name.starts_with_vowel?) ? "an" : "a"
  end
  evo_data = GameData::Evolution.get(method)
  if evo_data.event_proc
    text = "may evolve when something special happens"
  elsif evo_data.after_battle_proc
    text = "may evolve after concluding a battle"
  elsif evo_data.on_trade_proc
    text = "may evolve upon being traded"
  elsif evo_data.use_item_proc
    text = "may evolve when exposed to #{article} #{name}"
  elsif evo_data.level_up_proc
    if evo_data.minimum_level == 1
      text = "may evolve upon leveling up"
    else
      text = "may evolve upon reaching level #{param} or higher"
    end
  else return
  end
  case method
  when :LevelDay, :ItemDay, :TradeDay         then text += " during the day."
  when :LevelNight, :ItemNight, :TradeNight   then text += " at nighttime."
  when :LevelMorning                          then text += " in the morning."
  when :LevelAfternoon                        then text += " in the afternoon."
  when :LevelEvening                          then text += " during the evening."
  when :LevelNoWeather                        then text += " while the weather is clear."
  when :LevelSun                              then text += " while the sunlight is harsh."
  when :LevelRain                             then text += " while its raining."
  when :LevelSnow                             then text += " during a hailstorm."
  when :LevelSandstorm                        then text += " during a sandstorm."
  when :LevelCycling                          then text += " while traveling by bicycle."
  when :LevelSurfing                          then text += " while traveling over water."
  when :LevelDiving                           then text += " while traveling underwater."
  when :LevelDarkness                         then text += " while traveling in darkness."
  when :Location, :LocationFlag               then text += " while in a certain location."
  when :Region                                then text += " while in the #{pbGetMessage(MessageTypes::RegionNames, param)} region."
  when :LevelDarkInParty                      then text += " while there's a Dark-type influence in the party."
  when :HasMove                               then text += " while it knows the move #{name}."
  when :HasMoveType                           then text += " while it knows #{article} #{name}-type move."
  when :HasInParty                            then text += " while #{article} #{name} is in the party."
  when :TradeSpecies                          then text += " for #{article} #{name}."
  when :DayHoldItem                           then text += " while holding #{article} #{name} during the day."
  when :NightHoldItem                         then text += " while holding #{article} #{name} at night."
  when :MaxHappiness                          then text += " while having total trust in its trainer."
  when :HappinessDay                          then text += " while feeling happy during daytime hours."
  when :HappinessNight                        then text += " while feeling happy during nighttime hours."
  when :HappinessMove                         then text += " while feeling happy and it knows the move #{name}."
  when :HappinessMoveType                     then text += " while feeling happy and it knows #{article} #{name}-type move."
  when :HappinessHoldItem, :HoldItemHappiness then text += " while feeling happy and holding #{article} #{name}."
  when :Beauty                                then text += " while it's feeling beautiful."
  when :BattleDealCriticalHit                 then text += " where it landed at least #{param} critical hits."
  when :EventAfterDamageTaken                 then text += " after it took a certain amount of damage in battle."
  when :HoldItem, :TradeItem,
       :HoldItemMale, :HoldItemFemale         then text += " while holding #{article} #{name}."
  when :Happiness, :ItemHappiness,
       :HappinessMale, :HappinessFemale       then text += " while having great affection for its trainer."
  else text += "."
  end
  return text
end- When used on Eggs, shows the Pokémon that will hatch.
- When used on a Pokémon that can evolve, describes the way to evolve it. Branched evolutions will pick a random possible method.
- When used on a Pokémon that can't evolve further, lists the next level-up move and when it learns it. (If the Pokémon already knows the next move, it will go onto the move after that)
These lines might be of interest to developers -
			
				Ruby:
			
		
		
		              newpkmn.hatched_map = 0
              newpkmn.timeEggHatched = pbGetTimeNowIf you've added new evolution methods to your game, you'll need to add them to the utility
def pbGetEvolutionText.Looking for more field moves?
- Weather-summoning moves
- Extreme Speed
- Camouflage
- Bounce
- Recovery moves
- Move Reminder Field Move
- Sketch
- Credits
- Credit to TechSkylander1518 and Lucidious89!
 
	







