- Pokémon Essentials Version
- v19.1 ➖
WEATHER HMs
Hi everyone! IKazart here!
Here I present you the Weather HMs script! A script that allows you to use moves like Rain Dance, Sandstorm, etc. in the overworld and change the weather! Turn those moves into HMs!
Now Defog can be used to clear the skies! (Optional)
Moves:
- Rain Dance
- Sunny Day
- Hail
- Sandstorm
- Defog
INSTALLATION:
- Open the Script Editor on your RPG Maker
- Go to
[[ Overworld ]]
->Overworld_FieldMoves
- Copy the script that follows
- Paste it
- Go to
[[ UI ]]
->UI_ReadyMenu
(end) - Delete the pbUseKeyItem method (lines 301 to 327)
USAGE:
You should use just like normal HM moves, open the Pokemon menu, select a Pokemon and use the move!
COMPATIBILITY:
Pokemon Essentials v19.1
SCRIPT:
Ruby:
# =============================================================================
# IKazart's Weather HMs
# Version 3.0 - Compatibility: Pokemon Essentials v19.1
# Contact: Send me a message on Discord: IKazart#6758
# =============================================================================
if !PluginManager.installed?("Weather HMs")
PluginManager.register({
:name => "Weather HMs",
:version => "3.0",
:link => "https://reliccastle.com/resources/846/",
:credits => "IKazart"
})
end
# CONFIG:
# Set this to true if you want Defog to clear weather instead of only
# clearing fogs
CLEAR_WEATHER = true
#===============================================================================
# Rain Dance
#===============================================================================
def pbRainDance
$game_screen.weather(:Rain, 5, 20)
end
HiddenMoveHandlers::CanUseMove.add(:RAINDANCE,proc { |move,pkmn,showmsg|
if !GameData::MapMetadata.exists?($game_map.map_id) ||
!GameData::MapMetadata.get($game_map.map_id).outdoor_map
pbMessage(_INTL("Can't use that here.")) if showmsg
next false
end
if $game_screen.weather_type == :Rain
pbMessage(_INTL("It's already raining.")) if showmsg
next false
end
next true
})
HiddenMoveHandlers::UseMove.add(:RAINDANCE,proc { |move,pokemon|
if !pbHiddenMoveAnimation(pokemon)
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
end
pbRainDance
next true
})
#===============================================================================
# Sunny Day
#===============================================================================
def pbSunnyDay
$game_screen.weather(:Sun, 0, 20)
end
HiddenMoveHandlers::CanUseMove.add(:SUNNYDAY,proc { |move,pkmn,showmsg|
if !GameData::MapMetadata.exists?($game_map.map_id) ||
!GameData::MapMetadata.get($game_map.map_id).outdoor_map
pbMessage(_INTL("Can't use that here.")) if showmsg
next false
end
if Time.now.hour>=20 || Time.now.hour<5
pbMessage(_INTL("Sunny Day can't be used at night.")) if showmsg
next false
end
if $game_screen.weather_type == :Sun
pbMessage(_INTL("It's already sunny.")) if showmsg
next false
end
next true
})
HiddenMoveHandlers::UseMove.add(:SUNNYDAY,proc { |move,pokemon|
if !pbHiddenMoveAnimation(pokemon)
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
end
pbSunnyDay
next true
})
#===============================================================================
# Sandstorm
#===============================================================================
def pbSandstorm
$game_screen.weather(:Sandstorm, 3, 20)
end
HiddenMoveHandlers::CanUseMove.add(:SANDSTORM,proc { |move,pkmn,showmsg|
if !GameData::MapMetadata.exists?($game_map.map_id) ||
!GameData::MapMetadata.get($game_map.map_id).outdoor_map
pbMessage(_INTL("Can't use that here.")) if showmsg
next false
end
if $game_screen.weather_type == :Sandstorm
pbMessage(_INTL("You are already in a sandstorm.")) if showmsg
next false
end
next true
})
HiddenMoveHandlers::UseMove.add(:SANDSTORM,proc { |move,pokemon|
if !pbHiddenMoveAnimation(pokemon)
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
end
pbSandstorm
next true
})
#===============================================================================
# Hail
#===============================================================================
def pbHail
$game_screen.weather(:Snow, 8, 20)
end
HiddenMoveHandlers::CanUseMove.add(:HAIL,proc { |move,pkmn,showmsg|
if !GameData::MapMetadata.exists?($game_map.map_id) ||
!GameData::MapMetadata.get($game_map.map_id).outdoor_map
pbMessage(_INTL("Can't use that here.")) if showmsg
next false
end
if $game_screen.weather_type == :Snow
pbMessage(_INTL("It's already snowing.")) if showmsg
next false
end
next true
})
HiddenMoveHandlers::UseMove.add(:HAIL,proc { |move,pokemon|
if !pbHiddenMoveAnimation(pokemon)
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
end
pbHail
next true
})
#===============================================================================
# Defog
#===============================================================================
def pbDefog
$game_screen.weather(:None, 0, 20)
end
if CLEAR_WEATHER
HiddenMoveHandlers::CanUseMove.add(:DEFOG,proc { |move,pkmn,showmsg|
if !GameData::MapMetadata.exists?($game_map.map_id) ||
!GameData::MapMetadata.get($game_map.map_id).outdoor_map
pbMessage(_INTL("Can't use that here.")) if showmsg
next false
end
if $game_screen.weather_type == :None
pbMessage(_INTL("The weather is clear.")) if showmsg
next false
end
next true
})
HiddenMoveHandlers::UseMove.add(:DEFOG,proc { |move,pokemon|
if !pbHiddenMoveAnimation(pokemon)
pbMessage(_INTL("{1} used {2}!",pokemon.name,GameData::Move.get(move).name))
end
pbDefog
next true
})
end
# UPDATING USE KEY METHOD (DO NOT CHANGE THIS)
def pbUseKeyItem
moves = [:CUT, :DEFOG, :DIG, :DIVE, :FLASH, :FLY, :HEADBUTT, :ROCKCLIMB,
:ROCKSMASH, :SECRETPOWER, :STRENGTH, :SURF, :SWEETSCENT, :TELEPORT,
:WATERFALL, :WHIRLPOOL,
:RAINDANCE, :SUNNYDAY, :HAIL, :SANDSTORM]
real_moves = []
moves.each do |move|
$Trainer.pokemon_party.each_with_index do |pkmn, i|
next if !pkmn.hasMove?(move)
real_moves.push([move, i]) if pbCanUseHiddenMove?(pkmn, move, false)
end
end
real_items = []
for i in $PokemonBag.registeredItems
itm = GameData::Item.get(i).id
real_items.push(itm) if $PokemonBag.pbHasItem?(itm)
end
if real_items.length == 0 && real_moves.length == 0
pbMessage(_INTL("An item in the Bag can be registered to this key for instant use."))
else
$game_temp.in_menu = true
$game_map.update
sscene = PokemonReadyMenu_Scene.new
sscreen = PokemonReadyMenu.new(sscene)
sscreen.pbStartReadyMenu(real_moves, real_items)
$game_temp.in_menu = false
end
end
- Credits
- IKazart