- 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 = pbGetTimeNow
If 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!