Essentials Script RIDE PAGER [ESSENTIALS V17]

Started by भाग्य ज्योति December 16th, 2020 3:37 AM
  • 759 views
  • 5 replies

भाग्य ज्योति

Age 14
Male
बिहार, भारत। Bihar, India.
Online now
Posted 2 Minutes Ago
259 posts
1.6 Years
RIDE PAGER
The Complete Pokeride Solution


Features:
  • Interact with Pokemons and register them in your Ride Pager.
  • Call the Mounts wherever you wish just from the Ride Pager.
  • Pass marshy waters, climb mountains, and escape dungeons.
  • Easy to define more Mounts and to use them as you wish.
  • And many more Pokemon Mount features.

NOTE:
  • This script is for Pokemon Essentials v17.
  • This script requires "Pokeride" script by Marin! Please have that installed before installing this script!
  • Higher version will be released as soon as there is official conversion of Pokeride script by Marin to v18.
  • Special Thanks to Ulithium Dragon to grant permission to use, convert and release the script!

RIDE PREVIEWS:

Tauros & Rampardos can Smash small Rocks.

Machamp can use Strength.

Stoutland can find hidden Items.

Mudsdale & Rhyhorn climbing Mountain.
More PokeRides:-
Spoiler:


Gogoat can climb ledges and headbutt trees.

Kabutops can cut small trees.

Swampert can surf on swampy/marshy water.

Luxray can use Flash.

Avalugg can walk on Ice.

Hippowdon can Dig.

Flygon can Fly over Waters or to Cities.

Lapras can climb Waterfall while Surfing.

Sharpedo can Surf and Dive Underwater.

Araquanid can walk on water and dive underwater.
Link of Album- https://imgur.com/a/NtCnmWz


INSTALLATION:
  1. Download the files from here or from the attachments. The main directory contains files for the default Ride Mounts, while the Additional Mounts sub-directory contains the Graphics and PBS for the Additional UlithiumDragon's mounts, to be discussed later.
  2. Place the script above Main and below Pokéride_Main and Pokéride_Rides.
  3. Put the Audio, Data, Graphics, and PBS files to their proper folders.
  4. Define the Ride Pager item in the "items.txt" PBS file as following:-
     XXX,RIDEPAGER,Ride Pager,Ride Pagers,8,0,"By entering certain numbers on this pager, you can summon Ride Pokémon in an instant.",2,0,6,

    Don't forget to edit the XXX to the next entry, and rename the item icon to it before pasting it in Graphics/Icons
  5. In "Compiler" section, find
    def pbCompileAllData
    and add the following at the end of the list after the
    pbCompileShadowMoves
    section:
        yield(_INTL("Compiling Pokeride mounts"))
        pbCompileMounts
  6. Then look for the
    datafiles
    .dat list, and add the following bellow the last ".dat" in the list (right above
    Constants.rxdata
    ):
    "mounts.dat",
  7. Then right below in the
    textfiles
    .txt list, add the following to the end (right below
    types.txt
    ):
    "mounts.txt",
  8. Then in the "Compiler" script section, Find
    def pbCompileAnimations
    and place all the code below above it:
    def pbCompileMounts
      sections = {}
      if File.exists?("PBS/mounts.txt")
    	File.open("PBS/mounts.txt", "r") do |f|
    	  pbEachFileSectionEx(f) do |section,name|
    		sections[name] = section
    	  end
    	end
      end
      for key in sections.keys
    	sections[key]["ID"] = sections[key]["ID"].to_i
      end
      save_data(sections,"Data/mounts.dat")
      $MountsPBS = sections
    end
  9. In "PScreen_Load" script section, search for
    $PokemonStorage      = Marshal.load(f)" under "File.open(savefile){|f|
    and place the code below it:
    $RideMounts          = Marshal.load(f)
  10. In "PScreen_Save" script section, search for
    Marshal.dump($PokemonStorage,f)" under "File.open
    and place the code below it:
    Marshal.dump($RideMounts,f)


Script:
Also here
Spoiler:
#==============================================================================#
#//////////////////////////////////////////////////////////////////////////////#
#==============================================================================#
#               -------------------------------------------                    #
#               | Pokéride Ride Pager and Mount Expansion |                    #
#               |           by Ulithium_Dragon            |                    #
#               |        Updated and Rehanced by          |                    #
#               |              Bhagya Jyoti               |                    #
#               -------------------------------------------                    #
#                                 ~v1.0~                                       #
#==============================================================================#

#==============================================================================#
#                            ::::Options::::                                   #
#                                --------                                      #
#       Below are the options for toggling certain features on or off:         #
# ____________________________________________________________________________ #
#  Adds all mounts to the ride pager from the start (mostly used for testing). #
$REGISTERALLMOUNTS = false  #Default: false
#------------------------------------------------------------------------------#
#  The ID of the Common Event that holds the mount/dismount animation.         #
$MOUNTEVENTID = 3   #Default: nil
#------------------------------------------------------------------------------#
#  Toggles the MountAnimation to be played from the common event id.           #
$MOUNTANIMATION = true	#Default: true
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
#  Controls whether the mounting/dismounting sound effect should play.         #
$PLAYMOUNTSE = true   #Default: true
#------------------------------------------------------------------------------#
#  Controls whether the Pokemon's cry sound should play when summoned.         #
$PLAYMOUNTCRY = true   #Default: true
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
#  Controls whether or not mounts can be summoned indoors.                     #
#   *NOTE: This affects ALL indoor maps, including caves! Currently this check #
#    is tied to the bike check. Ergo, if you can ride a bike, you can mount.   #
$CANUSE_INDOORS = true   #Default: false
#------------------------------------------------------------------------------#
#  If "CANUSE_INDOORS" is false, this controls whether or not to include the   #
#   surf mounts. I highly recommend leaving this on "true" unless you're       #
#   certain that you have no maps with surfable water/lava that have the       #
#   metadata flag "Bicycle=false" (cave maps usually have this set to true).   #
$CANUSE_INDOORS_SURFMOUNTS = true   #Default: true
#------------------------------------------------------------------------------#
#------------------------------------------------------------------------------#
#  If you want terrain tag that blocks mounting when standing on               #
#  or facing a tile, put its terrain ID as defined in PBTerrain here.          #
$NOMOUNTING_TERRAINTAG = 99    #Default: nil
#------------------------------------------------------------------------------#
#  If you want a terrain tag that blocks dismounting when standing on          #
#  or facing a tile, put its terrain ID as defined in PBTerrain here.          #
#  *NOTE: In most cases this should be the same as "NOMOUNTING_TERRAINTAG".    #
$NODISMOUNTING_TERRAINTAG = 99    #Default: nil
#------------------------------------------------------------------------------#
#==============================================================================#
# Press G on the KeyBoard to call special mount features, like                 #
# 1. Flygon's Fly feature                                                      #
# 2. Hippowdon's Dig feature                                                   #
# 3. Luxray's Flash feature                                                    #
#==============================================================================#
# Search the following keyword to see all additions in the scripts:-           #
#                                 #POKERIDE_                                   #
#==============================================================================#

#==============================================================================#
# Add all new mounts here keeping the syntax correct                           #
#==============================================================================#

#Add the Mount in this hash where you can keep track of weather a mount is available.
#true indicates that it will be available from start.
#false indicates that it will be registered later.
$RideMounts = {
  :Tauros     => false,
  :Lapras     => false,
  :Sharpedo   => false,
  :Machamp    => false,
  :Mudsdale   => false,
  :Stoutland  => false,
  :Rhyhorn    => false
}

#Code to show the mount in ride pager if it is registered.
#Observe the lines and ad your mount cmd following the previous cmd, 
#and returning if it  has been registered in $RideMounts
def pbMountCommands(commands,cmdMounts)
  commands[cmdMounts[0]=commands.length]=_INTL(getMountName(1)) if $RideMounts[:Tauros]
  commands[cmdMounts[1]=commands.length]=_INTL(getMountName(2)) if $RideMounts[:Lapras]
  commands[cmdMounts[2]=commands.length]=_INTL(getMountName(3)) if $RideMounts[:Sharpedo]
  commands[cmdMounts[3]=commands.length]=_INTL(getMountName(4)) if $RideMounts[:Machamp]
  commands[cmdMounts[4]=commands.length]=_INTL(getMountName(5)) if $RideMounts[:Mudsdale]
  commands[cmdMounts[5]=commands.length]=_INTL(getMountName(6)) if $RideMounts[:Stoutland]
  commands[cmdMounts[6]=commands.length]=_INTL(getMountName(7)) if $RideMounts[:Rhyhorn]
end

#The codes to run various mounts.
#Put the module code here following the next when statement.
def pbMountCases(mounting)
  ride=mounting
  case ride
  when 0; pbMount(Tauros)
  when 1; pbMount(Lapras)
  when 2; pbMount(Sharpedo)
  when 3; pbMount(Machamp)
  when 4; pbMount(Mudsdale)
  when 5; pbMount(Stoutland)
  when 6; pbMount(Rhyhorn)
  end  
end
#If your mount uses surf, put its number as you have given 
#in the previous when statement in `def pbMountClass` method.
SURFING_MOUNTS=[1,2]   #1=>Lapras,2=>Sharpedo


#==============================================================================#
#  Give the Ride Pager with- pbGiveRidePagerItem                               #
#==============================================================================#
#Gives the Ride Pager item with the appropriate sound effect.
def pbGiveRidePagerItem
  Kernel.pbReceiveItem(:RIDEPAGER)
  pbSEPlay("RidePager_ItemGet") if $PLAYMOUNTSE
  pbWait(8)
end

#Item handlers
ItemHandlers::UseFromBag.add(:RIDEPAGER,proc{|item| next 2 })
ItemHandlers::UseInField.add(:RIDEPAGER,proc{|item|
  #Registers all of the mounts by default if the option is enabled.
  if $REGISTERALLMOUNTS
    pbRegisterAllMounts(false)
  end
  #Show the menu.
  pbRidePagerMenu(item)
})


#Plays the Mount Animation.
def pbMountAnim
  if $MOUNTANIMATION && $MOUNTEVENTID!=nil
    pbCommonEvent($MOUNTEVENTID) 
  end
  #Play the SE of Pokeride Summoning.
  pbSEPlay("PokeRide_Summon") if $PLAYMOUNTSE
end

#Code to register all mount in the Ride Pager at once.
def pbRegisterAllMounts(msg=true)
  @msg=msg
  for pokemount in $RideMounts.keys
    $RideMounts[pokemount] = true
  end
  if @msg == true
    Kernel.pbMessage(_INTL("All Pokémon were registered in the Ride Pager!\\me[Pokeride Mount Registered]"))
  end
end


#Code for Registering a particular Mount
def pbRegisterMount(mountname,showmsg=true)
  @mountname=mountname
  @showmsg=showmsg
  if $RideMounts.include?(@mountname)
    if !$RideMounts[@mountname]
      pbSEPlay("Pokeride Mount Registered") if $PLAYMOUNTSE
      Kernel.pbMessage(_INTL("{1} was registered in the Ride Pager!\\me[Pokeride Mount Registered]",mountname)) if showmsg
	  $RideMounts[@mountname] = true
    else
      Kernel.pbMessage(_INTL("{1} is already registered in the Ride Pager!\\se[error_01]",mountname)) if showmsg
    end
  else
    pbSEPlay("error_404") if $PLAYMOUNTSE
    Kernel.pbMessage(_INTL("{1} is not a mount!\\se[error_404]",mountname)) if showmsg
  end
end


#==============================================================================#
#  Codes for opening and using ride pager menu.                                #
#==============================================================================#
def Kernel.pbShowRidePagerCmds(msgwindow,commands,desc,cmdIfCancel=0,defaultCmd=0)
  msgwin=msgwindow
  if !msgwindow
    msgwin=Kernel.pbCreateMessageWindow(nil)
  end
  oldlbl=msgwin.letterbyletter
  msgwin.letterbyletter=false
  if commands
    cmdwindow=Window_CommandPokemonEx.new(commands)
    cmdwindow.z=99999
    cmdwindow.visible=true
    cmdwindow.resizeToFit(cmdwindow.commands)
    cmdwindow.height=msgwin.y if cmdwindow.height>msgwin.y
    cmdwindow.index=defaultCmd
    command=0
    msgwin.text=desc[cmdwindow.index]
    
    #Get the bitmap of the selected mount.
    filename = "Graphics/Characters/Pokeride/RidePager/PokeRide_"+commands[cmdwindow.index]+".png"
    mountBitmap = pbResolveBitmap(filename)
    #Create a new bitmap window, with the start mount as the loading bitmap.
    iconWin = createMountBitmapWindow(mountBitmap,cmdwindow,msgwin)
    msgwin.width=msgwin.width # Necessary evil to make it use the proper margins.
    loop do
      Graphics.update
      Input.update
      oldindex=cmdwindow.index
      cmdwindow.update
      if oldindex!=cmdwindow.index
        msgwin.text=desc[cmdwindow.index]
        #Code for udpating the Ride Pager icon display
        #If the current index isn't the command "QUIT"...
        if commands[cmdwindow.index] != "QUIT"
          #Get the bitmap for the mount the index is on.
          filename = "Graphics/Characters/Pokeride/RidePager/PokeRide_"+commands[cmdwindow.index]+".png"
          mountBitmap = pbResolveBitmap(filename)
          #Update our icon window with the bitmap we got.
          iconWin.setBitmap(mountBitmap)
          #Reposition the window in the case of a larger/smaller mount bitmap.
          moveIconWindow(iconWin,cmdwindow,msgwin)
        #If the current index IS the command "QUIT"...
        else
          #Set an empty bitmap/or just hide it.
          iconWin.setBitmap(pbResolveBitmap("Graphics/Characters/Pokeride/RidePager/RidePager.png"))
          #Reposition the window to account for the size change.
          moveIconWindow(iconWin,cmdwindow,msgwin)
        end
      end
      msgwin.update
      yield if block_given?
      if Input.trigger?(Input::B)
        if cmdIfCancel>0
          command=cmdIfCancel-1
          break
        elsif cmdIfCancel<0
          command=cmdIfCancel
          break
        end
      end
      if Input.trigger?(Input::C)
        command=cmdwindow.index
        break
      end
      pbUpdateSceneMap
    end
    ret=command
    cmdwindow.dispose
    #Dispose our icon window
    iconWin.dispose
    Input.update
  end
  msgwin.letterbyletter=oldlbl
  if !msgwindow
    msgwin.dispose
  end
  return ret
end

#A method that creates a PictureWindow for our mount bitmap that we want to display.
#Returns: An instance of the PictureWindow class, containing a default image of the
#first bitmap passed to it.
#Edited to force top most Z layer where other effects might over-ride this message box.
def createMountBitmapWindow(mountBitmap,cmdWindow,msgWindow)
  #If there was an actual bitmap file passed...
  if mountBitmap
    #Instance the PictureWindow class, passing the bitmap we want to show.
    iconWindow = PictureWindow.new(mountBitmap)
    #Reposition the window to properly display to the right of the command window.
    iconWindow.x=(Graphics.width-cmdWindow.width)-(iconWindow.width/2)
    #Show the icon window above the description text window.
    iconWindow.y=(msgWindow.y/2)-(iconWindow.height/2)
    #Show the icon window at the top of the screen
    iconWindow.z=999999
    #Return the instanced class of PictureWindow, currently displaying the bitmap
    #passed to it.
    return iconWindow
  end
end

#A method that allows us to reposition the icon window in case it gets resized.
def moveIconWindow(iconWin,cmdWindow,msgWindow)
  #Reposition the window to properly display to the right of the command window.
  iconWin.x=(Graphics.width-cmdWindow.width)-(iconWin.width/2)
  #Show the icon window above the description text window.
  iconWin.y=(msgWindow.y/2)-(iconWin.height/2)
end


#==============================================================================#
#  Code for reading Mount Data from the Mounts PBS file                        #
#==============================================================================#
class MountsClass
  #Force our $MountsPBS to be recompiled if it isn't already
  $MountsPBS = load_data("Data/mounts.dat") if !$MountsPBS
  
  def initialize(name)
    if !$MountsPBS.include?(name)
      raise ArgumentError.new(_INTL("There is no entry with that name!"))
    end
    @name = name
  end

  def mountid
    return $MountsPBS[@name]["MountID"]
  end
  def mountpokedexid
    return $MountsPBS[@name]["MountPokedexID"]
  end
  def mountname
    return $MountsPBS[@name]["MountName"]
  end
  def mountdescription
    return $MountsPBS[@name]["MountDescription"]
  end
end

def getMountName(id)
  for mounts in $MountsPBS.keys
    mountname = $MountsPBS[mounts]["MountName"]
    currentid = $MountsPBS[mounts]["MountID"].to_i
    if currentid==id
      return mountname
    end
  end  
end

#==============================================================================#
#  Code for various in-game Checks                                             #
#==============================================================================#
#Checks if you are surfing and are facing a "no surfing" tile.
def pbSurfingChecker
  #Needed for Terrain Tag checks.
  x=$game_player.x
  y=$game_player.y
  currentTag=$game_map.terrain_tag(x,y)
  facingTag=Kernel.pbFacingTerrainTag
  notCliff=$game_map.passable?($game_player.x,$game_player.y,$game_player.direction)
  if $PokemonGlobal.surfing == true
    if PBTerrain.isSurfable?(currentTag) && !PBTerrain.isSurfable?(facingTag) && notCliff
      surfingchecker = true
    end
  end
end

#Checks if you are currently surfing.
def pbCurrentlySurfingChecker
  #Is the player surfing?
  if $PokemonGlobal.surfing == true
    currentlysurfingchecker = true
  end
end

#Checks if you are cycling
def pbBikesChecker
  if $PokemonGlobal.bicycle == true
    bikeschecker = true
  end
  if defined?($PokemonGlobal.acrobike)
    if $PokemonGlobal.acrobike == true
      bikeschecker = true
    end
  end
  if defined?($PokemonGlobal.machbike)
    if $PokemonGlobal.machbike == true
      bikeschecker = true
    end
  end
end

#Overwrites the function located in PItem_Items.
def pbBikeCheck
  if $PokemonGlobal.surfing ||
     (!$PokemonGlobal.bicycle && PBTerrain.onlyWalk?(pbGetTerrainTag)) ||
     $PokemonGlobal.mount
    if $PokemonGlobal.mount
      Kernel.pbMessage(_INTL("You can't ride your bike while on Pokémon!"))
      return false
    else
      Kernel.pbMessage(_INTL("Can't use that here."))
      return false
    end
  end
  if $game_player.pbHasDependentEvents?
    Kernel.pbMessage(_INTL("It can't be used when you have someone with you."))
    return false
  end
  if $PokemonGlobal.bicycle
    if pbGetMetadata($game_map.map_id,MetadataBicycleAlways)
      Kernel.pbMessage(_INTL("You can't dismount your Bike here."))
      return false
    end
    return true
  else
    val=pbGetMetadata($game_map.map_id,MetadataBicycle)
    val=pbGetMetadata($game_map.map_id,MetadataOutdoor) if val==nil
    if !val
      Kernel.pbMessage(_INTL("Can't use that here."))
      return false
    end
    return true
  end
end

#Dismounts your bicycle.
def pbStopAllBikes
  $PokemonGlobal.bicycle = false
  if defined?($PokemonGlobal.acrobike)
    $PokemonGlobal.acrobike = false
  end
  if defined?($PokemonGlobal.machbike)
    $PokemonGlobal.machbike = false
  end
end

#Jump effect used for mounting and dismounting surf mounts.
def pbMountJumpTowards
  dist=1
  x=$game_player.x
  y=$game_player.y
  case $game_player.direction
  when 2 # down
    $game_player.jump(0,dist)
  when 4 # left
    $game_player.jump(-dist,0)
  when 6 # right
    $game_player.jump(dist,0)
  when 8 # up
    $game_player.jump(0,-dist)
  end
end


#==============================================================================#
#  Code for the Ride Pager Screen                                              #
#==============================================================================#
def pbRidePagerMenu(item)
  #Needed for Terrain Tag checks.
  x=$game_player.x
  y=$game_player.y
  currentTag=$game_map.terrain_tag(x,y)
  facingTag=Kernel.pbFacingTerrainTag
  notCliff=$game_map.passable?($game_player.x,$game_player.y,$game_player.direction)

  #Resets back to "false" each time so the check can be run again.
  surfingchecker = false
  currentlysurfingchecker = false
  bikeschecker = false

  #Map Metadata checks.
  bikeval=pbGetMetadata($game_map.map_id,MetadataBicycle)
  bikeval=pbGetMetadata($game_map.map_id,MetadataOutdoor) if bikeval==nil

  if !$PokemonGlobal.mount  #If already mounted, skip to dismounting.
    commands=[]
    cmdMounts = []
    mount = 0
    while mount != $RideMounts.length
      cmdMounts[mount] = -1
      mount+=1
    end
    pbMountCommands(commands,cmdMounts)
    #QUIT
    cmdQUIT = -1
    commands[cmdQUIT=commands.length]=_INTL("QUIT")

    pbBikesChecker #If the player is on a bike, no do not show the menu.
  
    #Do not show the menu if no mounts are registered.
    if commands.length<=1
      Kernel.pbMessage(_INTL("No mounts registered."))
      pbWait(10)

    #Checks the Bicycle map metadata to see if the player can mount on the current map.
    elsif !bikeval && !$CANUSE_INDOORS && !$CANUSE_INDOORS_SURFMOUNTS
      Kernel.pbMessage(_INTL("You can't call a mount in here!"))
    #Checks if the player is on their bike.
    elsif $PokemonGlobal.bicycle == true
      Kernel.pbMessage(_INTL("You can't call a mount while riding your bike!"))
    #Checks if the player has a dependent event following them.
    elsif $game_player.pbHasDependentEvents?
      Kernel.pbMessage(_INTL("You can't call a mount when you have someone with you!"))

    #Is Diving?
    elsif $PokemonGlobal.diving == true
      Kernel.pbMessage(_INTL("You can't call a mount here!"))
    #Is Surfing?
    elsif $PokemonGlobal.surfing == true && $PokemonGlobal.mount == nil
      Kernel.pbMessage(_INTL("You can't call a mount here!"))
    #Is Rock Climbing?
    elsif defined?($PokemonGlobal.rockclimbing) && $PokemonGlobal.rockclimbing == true && $PokemonGlobal.mount == nil
      Kernel.pbMessage(_INTL("You can't call a mount here!"))
    #Is Sliding?
    elsif $PokemonGlobal.sliding == true
      #Do nothing.

    #Checks if the player is on or facing custom "no-mounting" terrain tag.
    elsif $NOMOUNTING_TERRAINTAG && (facingTag==$NOMOUNTING_TERRAINTAG ||
          facingTag==$NOMOUNTING_TERRAINTAG || currentTag==$NOMOUNTING_TERRAINTAG)
            Kernel.pbMessage(_INTL("You can't mount here."))

    else  #Show the menu.

      #Create new array to hold our Mount description text
      descArray = Array.new
      #Loop through the names that are currently selectable...
      for name in commands
        #If the command name isn't "Quit"...
        if name != "QUIT"
          #Set a new instance of the MountsClass that handles the PBS data for the
          #Mount name passed.
          mountPBS = MountsClass.new(name.upcase) 
          #Set the string to add to our descArray to be the help text if it isn't
          #a null value. Otherwise set it to be empty.
          descString = mountPBS.mountdescription ? mountPBS.mountdescription : ""
          #Add the current mount help text to the end of the array.
          descArray.push(descString)
        #If the command name IS "Quit"...
        else
          #Pass this string for the Quit command.
          descArray.push("Exit the Ride Pager.")
        end
      end
    
    
    loop do
      pbSurfingChecker
      pbBikesChecker
      #Create a new window for the help text, using the menu frame style
      msgwindow = Kernel.pbCreateMessageWindow(nil,MessageConfig.pbDefaultSystemFrame) 
      #Call our commands list with our descArray and help text message box
      command=Kernel.pbShowRidePagerCmds(msgwindow,commands,descArray,-1)
      #Dispose our messagebox when an option is selected
      Kernel.pbDisposeMessageWindow(msgwindow)
	
      #Exit the menu if the B or C buttons are pressed.
      if command==-1
        break
      end

      mounting=0
      while mounting!=cmdMounts.length
        if cmdMounts[mounting]>=0 && command==cmdMounts[mounting]
          mount_name = getMountName(mounting+1)
          #Checks if you are surfing and are facing a "no surfing" tile.
          if surfingchecker == true
            Kernel.pbMessage(_INTL("You can't dismount here."))
            return
          end
          #Checks if you can use mounts indoors.
          if !$CANUSE_INDOORS && !bikeval
            Kernel.pbMessage(_INTL("You can't call {1} here.",mount_name))
          elsif SURFING_MOUNTS.include?(mounting)
            if PBTerrain.isSurfable?(facingTag) && !$PokemonGlobal.surfing && 
                !pbGetMetadata($game_map.map_id,MetadataBicycleAlways) && notCliff
              $PokemonGlobal.bicycle = false
              pbMountCases(mounting)  #Mount up!
              pbMountJumpTowards
              pbMountAnim
              pbWait(8)
              if $PLAYMOUNTCRY
                pbPlayCry(MountsClass.new(mount_name.upcase).mountpokedexid.to_i,100)
              end
              surfbgm=pbGetMetadata(0,MetadataSurfBGM)
              if defined?(pbGetSurfTheme)
                surfbgm=pbGetSurfTheme
                pbCueBGM(surfbgm,0.5) if surfbgm
              elsif surfbgm
                pbBGMPlay(surfbgm)
              else
                $game_map.autoplayAsCue
              end
            else  #No surfable tiles.
              Kernel.pbMessage(_INTL("You can't call {1} here.",mount_name))
            end
          else
            $PokemonGlobal.bicycle = false
            pbMountAnim
            pbMountCases(mounting)
            pbWait(4)
            if $PLAYMOUNTCRY
              pbPlayCry(MountsClass.new(mount_name.upcase).mountpokedexid.to_i,100)
            end
            pbWait(8)
          end
          return
        elsif cmdQUIT>=0 && command==cmdQUIT
        #Exit the menu.
        return    
        end
        mounting+=1
      end
    end
  end
  
  #Dismount
  else
    #Checks if you are surfing and facing a "no surfing" tile.
    pbSurfingChecker
    #Checks if you are surfing.
    pbCurrentlySurfingChecker

    #Checks if the player is on or facing custom "no-dismounting" terrain tag.
    if $NODISMOUNTING_TERRAINTAG && (facingTag==$NODISMOUNTING_TERRAINTAG ||
      facingTag==$NODISMOUNTING_TERRAINTAG || currentTag==$NODISMOUNTING_TERRAINTAG)
      Kernel.pbMessage(_INTL("You can't dismount right now."))

    #Is Diving?
    elsif $PokemonGlobal.diving == true
      Kernel.pbMessage(_INTL("You can't dismount right now."))

    #Is Sliding?
    elsif $PokemonGlobal.sliding == true
      #Do nothing.

    #On a bike?
    elsif $PokemonGlobal.bicycle == true
      Kernel.pbMessage(_INTL("You can't use your bike while riding a Pokémon!"))      

    #Surf Dismount
    elsif $PokemonGlobal.surfing == true
      if PBTerrain.isSurfable?(currentTag) && PBTerrain.isSurfable?(facingTag)
        Kernel.pbMessage(_INTL("You can't dismount right now."))
      #If surfing, jump to land first.
      elsif pbSurfingChecker == true
        $PokemonGlobal.surfing = false
        pbDismount  #Dismount
        pbMountJumpTowards
        pbWait(2)
        pbMountAnim
        pbWait(8)
        $game_map.autoplayAsCue
        $game_player.increase_steps
        result=$game_player.check_event_trigger_here([1,2])
        Kernel.pbOnStepTaken(result)
      end
      
    #Mudsdale/Rhyhorn tile Dismount
    elsif currentTag==PBTerrain::Mudsdale || currentTag==PBTerrain::RockClimb
      Kernel.pbMessage(_INTL("You can't dismount right now."))
      
    elsif  PBTerrain.isSurfable?(currentTag)
      Kernel.pbMessage(_INTL("You can't dismount right now."))
      
    else  #Dismount normally.
      pbMountAnim
      pbDismount
    end
  end
end


#==============================================================================#
#||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||#
# ____________________________________________________________________________ #


Additions Mounts:
Spoiler:

I bet most of you are here to use the vast customizable mounts by UlithiumDragon. No worries, I have made each of them work as intended and this spoiler is dedicated to it. Before you proceed further, please make sure you have followed all the Installation process correctly.
Installation:
  1. Put the Audio, Graphics, and PBS files to their proper folders from the Additional Mounts sub-folder provided in the main folder directory. This folder also has all information and script regarding these additional mounts.
  2. In the section "Game_Map" under
    def playerPassable?
    find the line that says
    Regular passability checks
    and paste the following above it:
          #Jump over Ledges if mounted.
          elsif PBTerrain.isLedge?(@terrain_tags[tile_id]) && $PokemonGlobal.mount &&
              defined?($PokemonGlobal.mount::ClimbLedge) && $PokemonGlobal.mount::ClimbLedge
            return $PokemonGlobal.mount && defined?($PokemonGlobal.mount::ClimbLedge) &&
                   $PokemonGlobal.mount::ClimbLedge
          #Walk over Swamp Water if mounted.
          elsif PBTerrain.isSwampWater?(@terrain_tags[tile_id])
            return ($PokemonGlobal.mount && defined?($PokemonGlobal.mount::SwampSurf) &&
                   $PokemonGlobal.mount::SwampSurf) || ($PokemonGlobal.mount && 
                   defined?($PokemonGlobal.mount::FlyOverWater) && $PokemonGlobal.mount::FlyOverWater)
          #Walk over Water tiles if mounted.
          elsif PBTerrain.isPassableWater?(@terrain_tags[tile_id]) && $PokemonGlobal.mount && 
              defined?($PokemonGlobal.mount::WalkOnWater) && $PokemonGlobal.mount::WalkOnWater
            return $PokemonGlobal.mount && defined?($PokemonGlobal.mount::WalkOnWater) &&
                  $PokemonGlobal.mount::WalkOnWater
          #Fly over Water tiles if mounted.
          elsif PBTerrain.isPassableWater?(@terrain_tags[tile_id]) && $PokemonGlobal.mount && 
              defined?($PokemonGlobal.mount::FlyOverWater) && $PokemonGlobal.mount::FlyOverWater
            return $PokemonGlobal.mount && defined?($PokemonGlobal.mount::FlyOverWater) &&
                  $PokemonGlobal.mount::FlyOverWater
          #Walk on Mudsdale tiles if mounted.
          elsif defined?(PBTerrain::Mudsdale) && PBTerrain.isMudsdaleTag?(@terrain_tags[tile_id])
            return $PokemonGlobal.mount && defined?($PokemonGlobal.mount::WalkOnMudsdale) &&
                  $PokemonGlobal.mount::WalkOnMudsdale && $PokemonGlobal.mount==Mudsdale
          #Make Rock Climb tiles passable if mounted.
          elsif defined?(PBTerrain::RockClimb) && @terrain_tags[data[x, y, i]] == PBTerrain::RockClimb
            return $PokemonGlobal.mount && defined?($PokemonGlobal.mount::RockClimb) &&
                  $PokemonGlobal.mount::RockClimb
          elsif defined?(PBTerrain::RockCrest) && @terrain_tags[data[x, y, i]] == PBTerrain::RockCrest
            return $PokemonGlobal.mount && defined?($PokemonGlobal.mount::RockClimb) &&
                  $PokemonGlobal.mount::RockClimb
  3. In "PField_Field" script section, search for
    def Kernel.pbSlideOnIce(event=nil)
    and place the code just below it:
      return if $PokemonGlobal.mount && defined?($PokemonGlobal.mount::IceTraction) &&
          $PokemonGlobal.mount::IceTraction
    Below are the edits in
    Pokeride_Main
    . There are a lot of changes to make the various mount functions work. If you face any difficulty in editing, feel free to use the edited script in the spoiler below or here.

    Spoiler:
    #==============================================================================#
    #                   Pokéride for Pokémon Essentials v17.X                      #
    #                                    v1.0                                      #
    #                                                                              #
    #                                  by Marin                                    #
    #==============================================================================#
    #                  Modified for Ride Pager by Bhagya Jyoti                     #
    #==============================================================================#
    #                                    Note                                      #
    # This script is merely for functionality. It does not provide a whole system, #
    #    and things such as availability of certain Pokérides is not included.     #
    #==============================================================================#
    #                                    Usage                                     #
    #  To mount a Pokéride, use "pbMount(name)". "name" is the name of the module, #
    #                  which can be found in "Pokéride_Rides".                     #
    #==============================================================================#
    
    # Example:
    # pbMount(Tauros)
    def pbMount(_module)
      sheet = _module::MoveSheet[$Trainer.gender]
      $game_player.setDefaultCharName(sheet,$game_player.fullPattern)
      _module.mount if _module.respond_to?("mount")
      $PokemonGlobal.surfing = true if defined?(_module::CanSurf) && _module::CanSurf
      $PokemonGlobal.mount = _module
    end
    
    def pbDismount
      $PokemonGlobal.mount.dismount if $PokemonGlobal.mount &&
                                       $PokemonGlobal.mount.respond_to?("dismount")
      $PokemonGlobal.surfing = false if defined?(_module::CanSurf) && _module::CanSurf
      $PokemonGlobal.mount = nil
      $game_player.setDefaultCharName(nil,$game_player.fullPattern)
    end
    
    # $Trainer.can_rock_climb has to be true if you want to be able to use Rock Climb.
    class PokeBattle_Trainer
      attr_accessor :can_rock_climb
      
      alias pokeride_init initialize
      def initialize(name, trainertype)
        pokeride_init(name, trainertype)
        @can_rock_climb = false
      end
    end
    
    unless defined?(pbList)
      # If you call this on an event, it'll be no longer listed in the Itemfinder
      # (if it even had ".hidden" in the name)
      def pbUnlist(event_id)
        $game_map.events[event_id].listed = false if $game_map.events[event_id]
      end
      
      # The Itemfinder will show this event (but still only if it has .hidden in name)
      def pbList(event_id)
        $game_map.events[event_id].listed = true if $game_map.events[event_id]
      end
    end
    
    
    class PokemonGlobalMetadata
      attr_accessor :mount
      attr_accessor :mount_action
    end
    
    unless defined?(Game_Event.listed)
      class Game_Event
        attr_accessor :listed
        
        alias pokeride_init initialize
        def initialize(map_id, event, map = nil)
          pokeride_init(map_id, event, map)
          @listed = true # Set to true, but whether it's actually listed or not
                         # depends on the name.
        end
      end
    end
    
    def pbHiddenItemNearby?
      x = $game_player.x
      y = $game_player.y
      for event in $game_map.events
        event = event[1]
        if event.name.include?(".hidden") && event.listed
          if event.x - x >= -4 && event.x - x <= 4
            if event.y - y >= -4 && event.y - y <= 4
              return true
            end
          end
        end
      end
      return false
    end
    
    class Game_Player
      alias pokeride_initialize initialize
      def initialize
            pokeride_initialize
        $ionlyrunonce = nil
      end
      alias pokeride_update update
      def update
            pokeride_update
        if $PokemonGlobal.mount
          
          if $PokemonGlobal.diving
            sheet = $PokemonGlobal.mount::DiveMoveSheet[$Trainer.gender]
            @move_speed = $PokemonGlobal.mount::DiveMoveSpeed
            $game_player.setDefaultCharName(sheet,$game_player.fullPattern)
          end
          
    	  #Added a new keybind, 'G' (can be changed) that triggers special mount events.
          if Input.press?(Input::G)
            if defined?($PokemonGlobal.mount::CanFly) && $PokemonGlobal.mount::CanFly #Check that our mount can Fly first.
              #Manually call the map used for the Fly HM.
              scene=PokemonRegionMap_Scene.new(-1,false)
              screen=PokemonRegionMapScreen.new(scene)
              ret=screen.pbStartFlyScreen
              #Warp the player to their selection (ret) on the map.
              if ret
                Kernel.pbMessage(_INTL("{1} used Fly!",$PokemonGlobal.mount))
                $game_player.turn_down
                $game_player.through = true
                pbWait(8)
                pbSEPlay("Cries/330Cry")
                pbWait(8)
                pbSEPlay("thwap_03",100,100)
                $game_player.move_up
                $game_player.move_up
                $game_player.move_up
                pbWait(2)
                #Sets temporary flydata for destination, then transfers player.
                pbFadeOutIn(99999){
                  $PokemonTemp.flydata=ret
                  $game_temp.player_new_map_id=$PokemonTemp.flydata[0]
                  $game_temp.player_new_x=$PokemonTemp.flydata[1]
                  $game_temp.player_new_y=$PokemonTemp.flydata[2]
                  $PokemonTemp.flydata=nil
                  $game_temp.player_new_direction=2
                  $scene.transfer_player(false) #Set to false so not dismounted.
                  $game_map.autoplay
                  $game_map.refresh
                }
                $game_player.through = false
              end
    
            elsif defined?($PokemonGlobal.mount::CanDig) && $PokemonGlobal.mount::CanDig
              escape=($PokemonGlobal.escapePoint rescue nil)
              mapname=pbGetMapNameFromId(escape[0])
              speciesname=$PokemonGlobal.mount
              if !$ionlyrunonce	#Prevents the key from being spammed, causing the message to play multiple times.
                $ionlyrunonce = true
                if !escape || escape==[]
                  Kernel.pbMessage(_INTL("You can't use Dig here!"))
                  $ionlyrunonce = false
                  return false
                end
                if $game_player.pbHasDependentEvents?
                  Kernel.pbMessage(_INTL("Dig can't be used when you have someone with you."))
                  $ionlyrunonce = false
                  return false
                end
                if Kernel.pbConfirmMessage(_INTL("Want to escape from here and return to {1}?",mapname))
                  Kernel.pbMessage(_INTL("{1} used Dig!",speciesname))
                  if $PLAYMOUNTCRY
                    pbPlayCry(MountsClass.new($PokemonGlobal.mount.to_s.upcase).mountpokedexid.to_i,100)
                  end
                  #Spin me!
                  pbWait(18)
                  $game_player.turn_down
                  pbWait(12)
                  $game_player.turn_right
                  pbWait(11)
                  $game_player.turn_up
                  pbWait(10)
                  $game_player.turn_left
                  pbWait(9)
                  $game_player.turn_down
                  pbWait(8)
                  $game_player.turn_right
                  pbWait(7)
                  $game_player.turn_up
                  pbWait(6)
                  $game_player.turn_left
                  pbWait(6)
                  $game_player.turn_down
                  pbWait(5)
                  $game_player.turn_right
                  pbWait(4)
                  $game_player.turn_up
                  pbWait(4)
                  $game_player.turn_left
                  pbWait(4)
                  $game_player.turn_down
                  pbWait(1)
                  if escape
                    pbFadeOutIn(99999){
                      pbWait(2)
                      if defined?(Sprite_SurfBase)
                        pbSEPlay("Door exit")
                      else
                        pbSEPlay("Exit Door")
                      end
                      pbCaveExit
                      $game_temp.player_new_map_id=escape[0]
                      $game_temp.player_new_x=escape[1]
                      $game_temp.player_new_y=escape[2]
                      $game_temp.player_new_direction=escape[3]
                      $scene.transfer_player
                      $game_map.autoplay
                      $game_map.refresh
                    }
                    pbEraseEscapePoint
                    $ionlyrunonce = false
                    return true
                  end
                else
                  $ionlyrunonce = false
                  return false
                end
              end
          
            elsif defined?($PokemonGlobal.mount::CanFlash) && $PokemonGlobal.mount::CanFlash
              darkness=$PokemonTemp.darknessSprite
              speciesname=$PokemonGlobal.mount
              if !$ionlyrunonce	#Prevents the key from being spammed, causing the message to play multiple times.
                $ionlyrunonce = true
                if !pbGetMetadata($game_map.map_id,MetadataDarkMap)
                  Kernel.pbMessage(_INTL("You can't use Flash here!"))
                  $ionlyrunonce = false
                  return false
                end
                if $PokemonGlobal.flashUsed
                  Kernel.pbMessage(_INTL("Flash is already in use!"))
                  $ionlyrunonce = false
                  return false
                end
                if Kernel.pbConfirmMessage(_INTL("Want to use Flash to light up the area?"))
                  Kernel.pbMessage(_INTL("{1} used Flash!",speciesname))
                  if $PLAYMOUNTCRY
                    pbPlayCry(MountsClass.new($PokemonGlobal.mount.to_s.upcase).mountpokedexid.to_i,100)
                  end
                  pbWait(20)
                  #Play the flash mount animation.
                  $PokemonGlobal.mount_flash = true
                  pbSEPlay("Electric Crackle")
                  pbWait(26)
                  $PokemonGlobal.mount_flash = false
                  $PokemonGlobal.flashUsed=true
                  while darkness.radius<176	#This value controls the light radius. 
                    Graphics.update
                    Input.update
                    pbUpdateSceneMap
                    darkness.radius+=4
                  end
                  $ionlyrunonce = false
                  return true
                else
                  $ionlyrunonce = false
                end
              end
              
            elsif defined?($PokemonGlobal.mount::CanWaterfall) && $PokemonGlobal.mount::CanWaterfall
              if !$ionlyrunounce
                $ionlyrunounce = true
                if PBTerrain.isWaterfall?(Kernel.pbFacingTerrainTag) && $game_player.direction==8
                  if Kernel.pbConfirmMessage(_INTL("It's a large waterfall. Would you like to use Waterfall?"))
                    Kernel.pbAscendWaterfall
                    $ionlyrunounce = false
                    return true
                  else
                    $ionlyrunounce = false
                    return false
                  end
                else
                  Kernel.pbMessage(_INTL("There is no Waterfall ahead."))
                  $ionlyrunounce = false
                  return false
                end
              end
              
            elsif defined?($PokemonGlobal.mount::CanDive) && $PokemonGlobal.mount::CanDive
              divemap = pbGetMetadata($game_map.map_id,MetadataDiveMap)
              speciesname=$PokemonGlobal.mount
              if !$ionlyrunonce
                $ionlyrunonce=true
                if $PokemonGlobal.diving
                  divemap = nil
                  meta = pbLoadMetadata
                  for i in 0...meta.length
                    if meta[i] && meta[i][MetadataDiveMap] && meta[i][MetadataDiveMap]==$game_map.map_id
                      divemap = i
                      break
                    end
                  end
                  if PBTerrain.isDeepWater?($MapFactory.getTerrainTag(divemap,$game_player.x,$game_player.y))
                    divemap = nil
                    meta = pbLoadMetadata
                    for i in 0...meta.length
                      if meta[i] && meta[i][MetadataDiveMap] && meta[i][MetadataDiveMap]==$game_map.map_id
                        divemap = i
                        break
                      end
                    end
                    return if !divemap
                    if Kernel.pbConfirmMessage(_INTL("Light is filtering down from above. Would you like to use Dive?"))
                      pbFadeOutIn(99999){
                       $game_temp.player_new_map_id    = divemap
                       $game_temp.player_new_x         = $game_player.x
                       $game_temp.player_new_y         = $game_player.y
                       $game_temp.player_new_direction = $game_player.direction
                       $PokemonGlobal.surfing = true
                       $PokemonGlobal.diving = false
                       $scene.transfer_player(false)
                       surfbgm = pbGetMetadata(0,MetadataSurfBGM)
                       (surfbgm) ?  pbBGMPlay(surfbgm) : $game_map.autoplayAsCue
                       $game_map.refresh
                      }
                      $ionlyrunonce = false
                      return true
                    end
                  else
                    Kernel.pbMessage(_INTL("You are already diving!"))
                    $ionlyrunonce = false
                    return false
                  end
                  $ionlyrunonce = false
                  return false
                elsif !PBTerrain.isDeepWater?(pbGetTerrainTag) || !divemap
                  Kernel.pbMessage(_INTL("You can't Dive here!"))
                  $ionlyrunonce = false
                  return false
                elsif Kernel.pbConfirmMessage(_INTL("The sea is deep here. Would you like to use Dive?"))
                  Kernel.pbMessage(_INTL("{1} used Dive!",speciesname))
                  if $PLAYMOUNTCRY
                    pbPlayCry(MountsClass.new($PokemonGlobal.mount.to_s.upcase).mountpokedexid.to_i,100)
                  end
                  pbWait(20)
                  pbFadeOutIn(99999){
                   $game_temp.player_new_map_id    = divemap
                   $game_temp.player_new_x         = $game_player.x
                   $game_temp.player_new_y         = $game_player.y
                   $game_temp.player_new_direction = $game_player.direction
                   $PokemonGlobal.diving = true
                   $scene.transfer_player(false)
                   $game_map.autoplay
                   $game_map.refresh
                  }
                  $ionlyrunonce = false
                  return true
                else
                  $ionlyrunonce = false
                end
              end
            end
          end
          
          if Input.press?(Input::A)
            @move_speed = $PokemonGlobal.mount::ActionSpeed
            sheet = $PokemonGlobal.mount::ActionSheet[$Trainer.gender]
            if $PokemonGlobal.diving
              sheet = $PokemonGlobal.mount::DiveActionSheet[$Trainer.gender]
              @move_speed = $PokemonGlobal.mount::DiveActionSpeed
            end
            $game_player.setDefaultCharName(sheet,$game_player.fullPattern)
            $PokemonGlobal.mount_action = true
            if defined?($PokemonGlobal.mount::ShowHidden) && $PokemonGlobal.mount::ShowHidden
              if pbHiddenItemNearby?
                sheet = $PokemonGlobal.mount::HiddenNearbySheet[$Trainer.gender]
                $game_player.setDefaultCharName(sheet,$game_player.fullPattern)
                @move_speed = $PokemonGlobal.mount::HiddenNearbySpeed
              end
            end
          else
            @move_speed = $PokemonGlobal.mount::MoveSpeed
            sheet = $PokemonGlobal.mount::MoveSheet[$Trainer.gender]
            if $PokemonGlobal.diving
              sheet = $PokemonGlobal.mount::DiveMoveSheet[$Trainer.gender]
              @move_speed = $PokemonGlobal.mount::DiveMoveSpeed
            end
            $game_player.setDefaultCharName(sheet,$game_player.fullPattern)
            $PokemonGlobal.mount_action = false
          end
        end
      end
      
      alias pokeride_trigger check_event_trigger_there
      def check_event_trigger_there(triggers)
        result = pokeride_trigger(triggers)
        return result if ROCK_CLIMB_MOUNT.nil?
        new_x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
        new_y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
        if result == false
          for i in [2,1,0]
            if $game_map.terrain_tags[$game_map.map.data[new_x, new_y, i]] == PBTerrain::RockClimb
              activemount = $PokemonGlobal.mount && defined?($PokemonGlobal.mount::RockClimb) &&
                            $PokemonGlobal.mount::RockClimb
              if activemount || $Trainer.can_rock_climb && Kernel.pbConfirmMessage(_INTL("Do you want to rock climb here?"))
                unless activemount
                  Kernel.pbCancelVehicles
                  pbMount(eval(ROCK_CLIMB_MOUNT))
                  pbWait(10)
                end
                climb = true
                up = false
                for j in [2,1,0]
                  if @y > 0 && (($game_map.terrain_tags[$game_map.map.data[@x+2,@y-1,j]] == PBTerrain::RockClimb rescue false) ||
                     (@x > 1 && $game_map.terrain_tags[$game_map.map.data[@x-2,@y-1,j]] == PBTerrain::RockClimb))
                    up = true
                    break
                  end
                end
                unless @direction == 2 || direction == 8
                  @x += (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
                end
                pbWait(4)
                while climb
                  _x = @x + (@direction == 6 ? 1 : @direction == 4 ? -1 : 0)
                  _y = @y
                  if @direction == 2 || @direction == 8
                    _y = @y + (@direction == 2 ? 1 : @direction == 8 ? -1 : 0)
                  elsif up
                    _y -= 1
                  else
                    _y += 1
                  end
                  pbWait(4)
                  climb = false
                  @x = _x
                  for j in [2,1,0]
                    if $game_map.terrain_tags[$game_map.map.data[_x, _y, j]] == PBTerrain::RockClimb
                      climb = true
                      break
                    end
                  end
                  @y = _y if climb || @direction == 2 || @direction == 8
                end
              end
              return true
            end
          end
        end
        return result
      end
    end
    
    if defined?(Sprite_SurfBase)
      class Sprite_SurfBase
        alias pokeride_init initialize
        def initialize(sprite, event, viewport = nil)
          return if $PokemonGlobal.mount
          pokeride_init(sprite, event, viewport)
        end
        
        alias pokeride_update update
        def update
          return if $PokemonGlobal.mount
          pokeride_update
        end
        
        def dispose
          if [email protected]
            @sprite.dispose if @sprite
            @sprite   = nil
            @surfbitmap.dispose if @surfbitmap
            @surfbitmap = nil
            @disposed = true
          end
        end
      end
    end
    
    module Kernel
      class << Kernel
        alias pokeride_cancel_vehicles pbCancelVehicles
        alias pokeride_surf pbSurf
      end
      
      def self.pbCancelVehicles(destination = nil)
        pbDismount
        pokeride_cancel_vehicles(destination)
      end
      
      def self.pbSurf
        unless SURF_MOUNT.nil?
          Kernel.pbCancelVehicles
          $PokemonEncounters.clearStepCount
          $PokemonGlobal.surfing = true
          if defined?($PokemonTemp.surfJump)
            $PokemonTemp.surfJump = $MapFactory.getFacingCoords($game_player.x,$game_player.y,$game_player.direction)
          end
          $PokemonGlobal.mount = eval(SURF_MOUNT)
          Kernel.pbUpdateVehicle
          Kernel.pbJumpToward
          if defined?($PokemonTemp.surfJump)
            $PokemonTemp.surfJump = nil
          end
          Kernel.pbUpdateVehicle
          $game_player.check_event_trigger_here([1,2])
        else
          pokeride_surf
        end
      end
    end
    
    unless defined?(pbSmashEvent)
      def pbSmashEvent(event)
        return if !event
        if event.name=="Tree";    pbSEPlay("Cut",80)
        elsif event.name=="Rock"; pbSEPlay("Rock Smash",80)
        end
        pbMoveRoute(event,[
           PBMoveRoute::Wait,2,
           PBMoveRoute::TurnLeft,
           PBMoveRoute::Wait,2,
           PBMoveRoute::TurnRight,
           PBMoveRoute::Wait,2,
           PBMoveRoute::TurnUp,
           PBMoveRoute::Wait,2
        ])
        pbWait(2*2*4)
        event.erase
        $PokemonMap.addErasedEvent(event.id) if $PokemonMap
      end
    end
    
    def pbCutEvent(event)
      return if !event
      if event.name=="Rock"; pbSEPlay("Rock Smash",80)
      elsif event.name=="Tree";    pbSEPlay("Cut",80)
      end
      pbMoveRoute(event,[
         PBMoveRoute::Wait,2,
         PBMoveRoute::TurnLeft,
         PBMoveRoute::Wait,2,
         PBMoveRoute::TurnRight,
         PBMoveRoute::Wait,2,
         PBMoveRoute::TurnUp,
         PBMoveRoute::Wait,2
      ])
      pbWait(2*2*4)
      event.erase
      $PokemonMap.addErasedEvent(event.id) if $PokemonMap
    end
    
    def pbHeadbuttEvent(event)
      return if !event
      a = (event.x+(event.x/24).floor+1)*(event.y+(event.y/24).floor+1)
      a = (a*2/5)%10   # Even 2x as likely as odd, 0 is 1.5x as likely as odd
      b = ($Trainer.publicID)%10   # Practically equal odds of each value
      chance = 1                             # ~50%
      if a==b;                  chance = 8   # 10%
      elsif a>b && (a-b).abs<5; chance = 5   # ~30.3%
      elsif a<b && (a-b).abs>5; chance = 5   # ~9.7%
      end
      if rand(10)>=chance
        Kernel.pbMessage(_INTL("Nope. Nothing..."))
      else
        enctype = (chance==1) ? EncounterTypes::HeadbuttLow : EncounterTypes::HeadbuttHigh
        if !pbEncounter(enctype)
          Kernel.pbMessage(_INTL("Nope. Nothing..."))
        end
      end
      return false  
    end
    
    class Game_Character
      alias pokeride_passableex passableEx?
      def passableEx?(x, y, d, strict = false)
        new_x = x + (d == 6 ? 1 : d == 4 ? -1 : 0)
        new_y = y + (d == 2 ? 1 : d == 8 ? -1 : 0)
        return false unless self.map.valid?(new_x, new_y)
        return true if @through
        # Pokéride Rock Smash
        if $PokemonGlobal.mount && $PokemonGlobal.mount_action &&
           defined?($PokemonGlobal.mount::RockSmash) &&
           $PokemonGlobal.mount::RockSmash
          for event in self.map.events
            if event[1].name == "Rock" && event[1].x == new_x && event[1].y == new_y
              facingEvent = $game_player.pbFacingEvent
              if facingEvent
                pbSmashEvent(facingEvent)
                return true
              end
            end
          end
        end
        if $PokemonGlobal.mount && $PokemonGlobal.mount_action &&
           defined?($PokemonGlobal.mount::CanCut) &&
           $PokemonGlobal.mount::CanCut
          for event in self.map.events
            if event[1].name == "Tree" && event[1].x == new_x && event[1].y == new_y
              facingEvent = $game_player.pbFacingEvent
              if facingEvent
                pbMoveRoute($game_player,[PBMoveRoute::StepAnimeOn])
                pbCutEvent(facingEvent)
                pbMoveRoute($game_player,[PBMoveRoute::StepAnimeOff])
                return true
              end
            end
          end
        end
        if $PokemonGlobal.mount && $PokemonGlobal.mount_action &&
           defined?($PokemonGlobal.mount::CanHeadbutt) &&
           $PokemonGlobal.mount::CanHeadbutt
          for event in self.map.events
            if event[1].name == "HeadbuttTree" && event[1].x == new_x && event[1].y == new_y
              facingEvent = $game_player.pbFacingEvent
              pbHeadbuttEvent(facingEvent)
            end
          end
        end
        return pokeride_passableex(x, y, d, strict)
      end
    end
    
    class Spriteset_Map
      alias pokeride_update update
      def update
        pokeride_update
        if $PokemonGlobal.mount && defined?($PokemonGlobal.mount::Strength) &&
           $PokemonGlobal.mount::Strength
          $PokemonMap.strengthUsed = $PokemonGlobal.mount_action
        end
      end
    end
    
    module PBTerrain
      Mudsdale = 17 # Only passable if on a Mudsdale
      RockClimb = 18 # Can only be traversed on a Pokéride with RockClimb capabilities
    end
    
    class Game_Map
      attr_reader :map
      
      alias pokeride_playerpassable playerPassable?
      def playerPassable?(x, y, d, self_event = nil)
        for i in [2, 1, 0]
          if @terrain_tags[data[x, y, i]] == PBTerrain::Mudsdale
            return $PokemonGlobal.mount && defined?($PokemonGlobal.mount::WalkOnMudsdale) &&
                   $PokemonGlobal.mount::WalkOnMudsdale
          end
        end
        pokeride_playerpassable(x, y, d, self_event)
      end
    end
    
    def pbStartSurfing
      Kernel.pbCancelVehicles
      $PokemonEncounters.clearStepCount
      $PokemonGlobal.surfing = true
      if defined?($PokemonTemp.surfJump)
        $PokemonTemp.surfJump = $MapFactory.getFacingCoords($game_player.x,$game_player.y,$game_player.direction)
      end
      Kernel.pbUpdateVehicle
      Kernel.pbJumpToward
      if defined?($PokemonTemp.surfJump)
        $PokemonTemp.surfJump = nil
      end
      Kernel.pbUpdateVehicle
    end

  4. Find "class Game_Player" and replace everything above
    if Input.press?(Input::A)
    with the following code:-
      alias pokeride_initialize initialize
      def initialize
            pokeride_initialize
        $ionlyrunonce = nil
      end
      alias pokeride_update update
      def update
            pokeride_update
        if $PokemonGlobal.mount
          
          if $PokemonGlobal.diving
            sheet = $PokemonGlobal.mount::DiveMoveSheet[$Trainer.gender]
            @move_speed = $PokemonGlobal.mount::DiveMoveSpeed
            $game_player.setDefaultCharName(sheet,$game_player.fullPattern)
          end      
          
    	  #Added a new keybind, 'G' (can be changed) that triggers special mount events.
          if Input.press?(Input::G)
            if defined?($PokemonGlobal.mount::CanFly) && $PokemonGlobal.mount::CanFly #Check that our mount can Fly first.
              #Manually call the map used for the Fly HM.
              scene=PokemonRegionMap_Scene.new(-1,false)
              screen=PokemonRegionMapScreen.new(scene)
              ret=screen.pbStartFlyScreen
              #Warp the player to their selection (ret) on the map.
              if ret
                Kernel.pbMessage(_INTL("{1} used Fly!",$PokemonGlobal.mount))
                $game_player.turn_down
                $game_player.through = true
                pbWait(8)
                pbSEPlay("Cries/330Cry")
                pbWait(8)
                pbSEPlay("thwap_03",100,100)
                $game_player.move_up
                $game_player.move_up
                $game_player.move_up
                pbWait(2)
                #Sets temporary flydata for destination, then transfers player.
                pbFadeOutIn(99999){
                  $PokemonTemp.flydata=ret
                  $game_temp.player_new_map_id=$PokemonTemp.flydata[0]
                  $game_temp.player_new_x=$PokemonTemp.flydata[1]
                  $game_temp.player_new_y=$PokemonTemp.flydata[2]
                  $PokemonTemp.flydata=nil
                  $game_temp.player_new_direction=2
                  $scene.transfer_player(false) #Set to false so not dismounted.
                  $game_map.autoplay
                  $game_map.refresh
                }
                $game_player.through = false
              end
    
            elsif defined?($PokemonGlobal.mount::CanDig) && $PokemonGlobal.mount::CanDig
              escape=($PokemonGlobal.escapePoint rescue nil)
              mapname=pbGetMapNameFromId(escape[0])
              speciesname=$PokemonGlobal.mount
              if !$ionlyrunonce	#Prevents the key from being spammed, causing the message to play multiple times.
                $ionlyrunonce = true
                if !escape || escape==[]
                  Kernel.pbMessage(_INTL("You can't use Dig here!"))
                  $ionlyrunonce = false
                  return false
                end
                if $game_player.pbHasDependentEvents?
                  Kernel.pbMessage(_INTL("Dig can't be used when you have someone with you."))
                  $ionlyrunonce = false
                  return false
                end
                if Kernel.pbConfirmMessage(_INTL("Want to escape from here and return to {1}?",mapname))
                  Kernel.pbMessage(_INTL("{1} used Dig!",speciesname))
                  if $PLAYMOUNTCRY
                    pbPlayCry(MountsClass.new($PokemonGlobal.mount.to_s.upcase).mountpokedexid.to_i,100)
                  end
                  #Spin me!
                  pbWait(18)
                  $game_player.turn_down
                  pbWait(12)
                  $game_player.turn_right
                  pbWait(11)
                  $game_player.turn_up
                  pbWait(10)
                  $game_player.turn_left
                  pbWait(9)
                  $game_player.turn_down
                  pbWait(8)
                  $game_player.turn_right
                  pbWait(7)
                  $game_player.turn_up
                  pbWait(6)
                  $game_player.turn_left
                  pbWait(6)
                  $game_player.turn_down
                  pbWait(5)
                  $game_player.turn_right
                  pbWait(4)
                  $game_player.turn_up
                  pbWait(4)
                  $game_player.turn_left
                  pbWait(4)
                  $game_player.turn_down
                  pbWait(1)
                  if escape
                    pbFadeOutIn(99999){
                      pbWait(2)
                      if defined?(Sprite_SurfBase)
                        pbSEPlay("Door exit") if $PLAYMOUNTSE
                      else
                        pbSEPlay("Exit Door") if $PLAYMOUNTSE
                      end
                      pbCaveExit
                      $game_temp.player_new_map_id=escape[0]
                      $game_temp.player_new_x=escape[1]
                      $game_temp.player_new_y=escape[2]
                      $game_temp.player_new_direction=escape[3]
                      $scene.transfer_player
                      $game_map.autoplay
                      $game_map.refresh
                    }
                    pbEraseEscapePoint
                    $ionlyrunonce = false
                    return true
                  end
                else
                  $ionlyrunonce = false
                  return false
                end
              end
          
            elsif defined?($PokemonGlobal.mount::CanFlash) && $PokemonGlobal.mount::CanFlash
              darkness=$PokemonTemp.darknessSprite
              speciesname=$PokemonGlobal.mount
              if !$ionlyrunonce	#Prevents the key from being spammed, causing the message to play multiple times.
                $ionlyrunonce = true
                if !pbGetMetadata($game_map.map_id,MetadataDarkMap)
                  Kernel.pbMessage(_INTL("You can't use Flash here!"))
                  $ionlyrunonce = false
                  return false
                end
                if $PokemonGlobal.flashUsed
                  Kernel.pbMessage(_INTL("Flash is already in use!"))
                  $ionlyrunonce = false
                  return false
                end
                if Kernel.pbConfirmMessage(_INTL("Want to use Flash to light up the area?"))
                  Kernel.pbMessage(_INTL("{1} used Flash!",speciesname))
                  if $PLAYMOUNTCRY
                    pbPlayCry(MountsClass.new($PokemonGlobal.mount.to_s.upcase).mountpokedexid.to_i,100)
                  end
                  pbWait(20)
                  #Play the flash mount animation.
                  $PokemonGlobal.mount_flash = true
                  pbSEPlay("Electric Crackle") if $PLAYMOUNTSE
                  pbWait(26)
                  $PokemonGlobal.mount_flash = false
                  $PokemonGlobal.flashUsed=true
                  while darkness.radius<176	#This value controls the light radius. 
                    Graphics.update
                    Input.update
                    pbUpdateSceneMap
                    darkness.radius+=4
                  end
                  $ionlyrunonce = false
                  return true
                else
                  $ionlyrunonce = false
                end
              end
              
            elsif defined?($PokemonGlobal.mount::CanWaterfall) && $PokemonGlobal.mount::CanWaterfall
              if !$ionlyrunounce
                $ionlyrunounce = true
                if PBTerrain.isWaterfall?(pbFacingTerrainTag) && $game_player.direction==8
                  if Kernel.pbConfirmMessage(_INTL("It's a large waterfall. Would you like to use Waterfall?"))
                    $PokemonGlobal.ridingWaterfall = true
                    pbAscendWaterfall
                    $PokemonGlobal.ridingWaterfall = false
                    $ionlyrunounce = false
                    return true
                  else
                    $ionlyrunounce = false
                    return false
                  end
                else
                  Kernel.pbMessage(_INTL("There is no Waterfall ahead."))
                  $ionlyrunounce = false
                  return false
                end
              end
              
            elsif defined?($PokemonGlobal.mount::CanDive) && $PokemonGlobal.mount::CanDive
              divemap = pbGetMetadata($game_map.map_id,MetadataDiveMap)
              speciesname=$PokemonGlobal.mount
              if !$ionlyrunonce
                $ionlyrunonce=true
                if $PokemonGlobal.diving
                  divemap = nil
                  meta = pbLoadMetadata
                  for i in 0...meta.length
                    if meta[i] && meta[i][MetadataDiveMap] && meta[i][MetadataDiveMap]==$game_map.map_id
                      divemap = i
                      break
                    end
                  end
                  if PBTerrain.isDeepWater?($MapFactory.getTerrainTag(divemap,$game_player.x,$game_player.y))
                    divemap = nil
                    meta = pbLoadMetadata
                    for i in 0...meta.length
                      if meta[i] && meta[i][MetadataDiveMap] && meta[i][MetadataDiveMap]==$game_map.map_id
                        divemap = i
                        break
                      end
                    end
                    return if !divemap
                    if Kernel.pbConfirmMessage(_INTL("Light is filtering down from above. Would you like to use Dive?"))
                      pbFadeOutIn(99999){
                       $game_temp.player_new_map_id    = divemap
                       $game_temp.player_new_x         = $game_player.x
                       $game_temp.player_new_y         = $game_player.y
                       $game_temp.player_new_direction = $game_player.direction
                       $PokemonGlobal.surfing = true
                       $PokemonGlobal.diving = false
                       $scene.transfer_player(false)
                       surfbgm = pbGetMetadata(0,MetadataSurfBGM)
                       (surfbgm) ?  pbBGMPlay(surfbgm) : $game_map.autoplayAsCue
                       $game_map.refresh
                      }
                      $ionlyrunonce = false
                      return true
                    end
                  else
                    Kernel.pbMessage(_INTL("You are already diving!"))
                    $ionlyrunonce = false
                    return false
                  end
                  $ionlyrunonce = false
                  return false
                elsif !PBTerrain.isDeepWater?(pbGetTerrainTag) || !divemap
                  Kernel.pbMessage(_INTL("You can't Dive here!"))
                  $ionlyrunonce = false
                  return false
                elsif Kernel.pbConfirmMessage(_INTL("The sea is deep here. Would you like to use Dive?"))
                  Kernel.pbMessage(_INTL("{1} used Dive!",speciesname))
                  if $PLAYMOUNTCRY
                    pbPlayCry(MountsClass.new($PokemonGlobal.mount.to_s.upcase).mountpokedexid.to_i,100)
                  end
                  pbWait(20)
                  pbFadeOutIn(99999){
                   $game_temp.player_new_map_id    = divemap
                   $game_temp.player_new_x         = $game_player.x
                   $game_temp.player_new_y         = $game_player.y
                   $game_temp.player_new_direction = $game_player.direction
                   $PokemonGlobal.diving = true
                   $scene.transfer_player(false)
                   $game_map.autoplay
                   $game_map.refresh
                  }
                  $ionlyrunonce = false
                  return true
                else
                  $ionlyrunonce = false
                end
              end
            end
          end
  5. Now, in "if Input.press?(Input::A)" put the following code below the line
    sheet = $PokemonGlobal.mount::ActionSheet[$Trainer.gender]

    	if $PokemonGlobal.diving
              sheet = $PokemonGlobal.mount::DiveActionSheet[$Trainer.gender]
              @move_speed = $PokemonGlobal.mount::DiveActionSpeed
            end
  6. Now, in
    if Input.press?(Input::A)
    put the following code below the line
    sheet = $PokemonGlobal.mount::MoveSheet[$Trainer.gender]

    	if $PokemonGlobal.diving
              sheet = $PokemonGlobal.mount::DiveMoveSheet[$Trainer.gender]
              @move_speed = $PokemonGlobal.mount::DiveMoveSpeed
            end
  7. Search for
    class Game_Character
    and put the code just above it:-
    def pbCutEvent(event)
      return if !event
      if event.name=="Rock"; pbSEPlay("Rock Smash",80)
      elsif event.name=="Tree";    pbSEPlay("Cut",80)
      end
      pbMoveRoute(event,[
         PBMoveRoute::Wait,2,
         PBMoveRoute::TurnLeft,
         PBMoveRoute::Wait,2,
         PBMoveRoute::TurnRight,
         PBMoveRoute::Wait,2,
         PBMoveRoute::TurnUp,
         PBMoveRoute::Wait,2
      ])
      pbWait(2*2*4)
      event.erase
      $PokemonMap.addErasedEvent(event.id) if $PokemonMap
    end
    
    def pbHeadbuttEvent(event)
      return if !event
      a = (event.x+(event.x/24).floor+1)*(event.y+(event.y/24).floor+1)
      a = (a*2/5)%10   # Even 2x as likely as odd, 0 is 1.5x as likely as odd
      b = ($Trainer.publicID)%10   # Practically equal odds of each value
      chance = 1                             # ~50%
      if a==b;                  chance = 8   # 10%
      elsif a>b && (a-b).abs<5; chance = 5   # ~30.3%
      elsif a<b && (a-b).abs>5; chance = 5   # ~9.7%
      end
      if rand(10)>=chance
        Kernel.pbMessage(_INTL("Nope. Nothing..."))
      else
        enctype = (chance==1) ? EncounterTypes::HeadbuttLow : EncounterTypes::HeadbuttHigh
        if !pbEncounter(enctype)
          Kernel.pbMessage(_INTL("Nope. Nothing..."))
        end
      end
      return false  
    end
  8. In
    Class Game_Character
    , search for
    return pokeride_passableex(x, y, d, strict)
    and paste the below code just above it.
        if $PokemonGlobal.mount && $PokemonGlobal.mount_action &&
           defined?($PokemonGlobal.mount::CanCut) &&
           $PokemonGlobal.mount::CanCut
          for event in self.map.events
            if event[1].name == "Tree" && event[1].x == new_x && event[1].y == new_y
              facingEvent = $game_player.pbFacingEvent
              if facingEvent
                pbMoveRoute($game_player,[PBMoveRoute::StepAnimeOn])
                pbCutEvent(facingEvent)
                pbMoveRoute($game_player,[PBMoveRoute::StepAnimeOff])
                return true
              end
            end
          end
        end
        if $PokemonGlobal.mount && $PokemonGlobal.mount_action &&
           defined?($PokemonGlobal.mount::CanHeadbutt) &&
           $PokemonGlobal.mount::CanHeadbutt
          for event in self.map.events
            if event[1].name == "HeadbuttTree" && event[1].x == new_x && event[1].y == new_y
              facingEvent = $game_player.pbFacingEvent
              pbHeadbuttEvent(facingEvent)
            end
          end
        end
  9. Now, replace the Pokeride_Rides entirely with the below codes which have all the new mounts already registered:-
    Spoiler:
    # Every PokéRide should have MoveSheet, MoveSpeed, ActionSheet, and ActionSpeed.
    # A PokéRide can also have one or more of the following options:
    
    #  -> RockSmash: While the action button (Z) is being pressed, any rock you
    #                walk up to will be smashed.
    #  -> CanSurf: This Pokémon can be surfed with.
    #  -> WalkOnMudsdale: With this PokéRide, you can walk over terrain with
    #                     terrain tag 17.
    #  -> Strength: Boulders can be moved if the action button is held down.
    #  -> ShowHidden: If the action button is held down, any listed event with
    #                 ".hidden" (without the quotation marks) within a 4x4 radius
    #                 will cause the Pokéride to use "HiddenNearbySheet" and
    #                 "HiddenNearbySpeed". Those two must also be implemented if your
    #                 Pokéride has "ShowHidden"
    #  -> RockClimb: If set to true, climb RockClimb tiles
    #
    #  -> CanWaterfall: If Feature Button is pressed down, mount can be used to
    #					climb Waterfalls.
    #  -> CanDive: This Pokemon Mount can be used to dive underwater.
    #				DiveMoveSheet, DiveActionSheet, DiveMoveSpeed, DiveActionSpeed
    #				must be defined if a pokemon can Dive.
    #  -> CanCut: If the action button is held down, this mount will be able to
    #				Cut small trees.
    #  -> IceTraction: This Pokemon will walk on ice, instead of sliding.
    #  -> CanHeadbutt: This Pokemon can headbutt trees.
    #  -> ClimbLedge: This Pokemon Mount can be used to climb Ledges 
    #					from both sides.
    #  -> CanDig: When the Feature button is pressed, this mount can be used to
    #				escape caves and dungeons.
    #  -> CanFlash: When the Feature button is pressed, this mount can be used to
    #				lighten up dark caves and dungeons.
    #  -> SwampSurf: This Pokemon can be used to surf on tiles marked as SwampWater.
    #  -> WalkOnWater: This Pokemon can be used to walk on surfable water.
    #  -> FlyOverWater: This Pokemon can be used to fly over water bodies.
    #  -> CanFly: When Feature button is pressed, this Pokemon Mount can be
    #				used to fly to other cities/routes where fly points are pointed.
    
    # You can have multiple of these options at once. They should all be compatible
    # with one another.
    
    
    # Rock Smash rocks still have to be called "Rock" without the quotation marks.
    # Boulders still have to be called "Boulder" and their trigger method should be
    #     "Player Touch" and it should have just one line of script: "pbPushThisBoulder"
    
    # Hidden items are ".hidden" without the quotation marks for compatibility
    # with my Pokétch resource.
    # They work the same way as hidden items there:
    # pbUnlist(event_id): The event becomes hidden from the Itemfinder (Stoutland)
    # pbList(event_id): The event becomes visible for the Itemfinder (Stoutland)
    #                   IF the event has ".hidden" in the name.
    
    
    # If you want Surf to be the normal surf, set this to nil. Else, set it to the
    # name of the PokéRide in a string (e.g. "Sharpedo")
    SURF_MOUNT = nil
    
    # If you want a Pokéride to be able to perform Rock Climb, set this to the
    # name of the Pokéride. If you don't want Rock Climb, set this to nil.
    ROCK_CLIMB_MOUNT = "Rhyhorn"
    # This is the Pokéride that is called if you press C in front of a Rock Climb tile
    # while not being on a Pokéride that can already use Rock Climb, which means
    # that this is essentially the same as "SURF_MOUNT".
    
    
    # A Pokéride can also have an effect that is activated when you mount it.
    # To implement something there, add your code in a method called "def self.mount".
    # The same can be done for dismounting, but in "def self.dismount"
    
    # pbMount(Tauros)
    module Tauros
      MoveSheet = ["Pokeride/boy_tauros","Pokeride/girl_tauros"]
      MoveSpeed = 5.0
      ActionSheet = ["Pokeride/boy_tauros_charge","Pokeride/girl_tauros_charge"]
      ActionSpeed = 5.6
      RockSmash = true
    end
    
    module Lapras
      MoveSheet = ["Pokeride/boy_lapras","Pokeride/girl_lapras"]
      MoveSpeed = 4.8
      ActionSheet = ["Pokeride/boy_lapras_fast","Pokeride/girl_lapras_fast"]
      ActionSpeed = 5.4
      WaterfallSheet = ["Pokeride/boy_lapras_waterfall","Pokeride/girl_lapras_waterfall"]
      CanSurf = true
      CanWaterfall = true
    end
    
    module Sharpedo
      MoveSheet = ["Pokeride/boy_sharpedo","Pokeride/girl_sharpedo"]
      MoveSpeed = 5.4
      ActionSheet = ["Pokeride/boy_sharpedo_fast","Pokeride/girl_sharpedo_fast"]
      ActionSpeed = 6.0
      DiveMoveSheet = ["Pokeride/boy_sharpedo_dive","Pokeride/girl_sharpedo_dive"]
      DiveMoveSpeed = 5.2
      DiveActionSheet = ["Pokeride/boy_sharpedo_dive_fast","Pokeride/girl_sharpedo_dive_fast"]
      DiveActionSpeed = 5.6
      CanSurf = true
      CanDive = true
    end
    
    # pbMount(Machamp)
    module Machamp
      MoveSheet = ["Pokeride/boy_machamp","Pokeride/girl_machamp"]
      MoveSpeed = 4.3
      ActionSheet = ["Pokeride/boy_machamp_push","Pokeride/girl_machamp_push"]
      ActionSpeed = 3.8
      Strength = true
    end
    
    # You get the idea now. pbMount(Mudsdale)
    module Mudsdale
      MoveSheet = ["Pokeride/boy_mudsdale","Pokeride/girl_mudsdale"]
      MoveSpeed = 4.1
      ActionSheet = ["Pokeride/boy_mudsdale_run","Pokeride/girl_mudsdale_run"]
      ActionSpeed = 4.6
      WalkOnMudsdale = true
    end
    
    module Stoutland
      MoveSheet = ["Pokeride/boy_stoutland","Pokeride/girl_stoutland"]
      MoveSpeed = 4.6
      ActionSheet = ["Pokeride/boy_stoutland_search","Pokeride/girl_stoutland_search"]
      ActionSpeed = 3.6
      HiddenNearbySheet = ["Pokeride/boy_stoutland_found","Pokeride/girl_stoutland_found"]
      HiddenNearbySpeed = 3.5
      ShowHidden = true
    end
    
    module Rhyhorn
      MoveSheet = ["Pokeride/boy_rhyhorn","Pokeride/girl_rhyhorn"]
      MoveSpeed = 4.4
      ActionSheet = ["Pokeride/boy_rhyhorn","Pokeride/girl_rhyhorn"]
      ActionSpeed = 4.4
      RockClimb = true
    end
    
    # pbMount(Kabutops)
    module Kabutops
      MoveSheet = ["Pokeride/boy_kabutops","Pokeride/girl_kabutops"]
      MoveSpeed = 4.2
      ActionSheet = ["Pokeride/boy_kabutops_fast","Pokeride/girl_kabutops_fast"]
      ActionSpeed = 5.0
      CutSpeed = 5.5
      CanCut = true
    end
    
    # pbMount(Avalugg)
    module Avalugg
      MoveSheet = ["Pokeride/boy_avalugg","Pokeride/girl_avalugg"]
      MoveSpeed = 3.9
      ActionSheet = ["Pokeride/boy_avalugg_fast","Pokeride/girl_avalugg_fast"]
      ActionSpeed = 4.5
      IceTraction = true
    end
    
    # pbMount(Gogoat)
    module Gogoat
      MoveSheet = ["Pokeride/boy_gogoat","Pokeride/girl_gogoat"]
      MoveSpeed = 4.9
      ActionSheet = ["Pokeride/boy_gogoat_fast","Pokeride/girl_gogoat_fast"]
      ActionSpeed = 5.5
      CanHeadbutt = true
      ClimbLedge = true
    end
    
    # pbMount(Hippowdon)
    module Hippowdon
      MoveSheet = ["Pokeride/boy_hippowdon","Pokeride/girl_hippowdon"]
      MoveSpeed = 4.5
      ActionSheet = ["Pokeride/boy_hippowdon","Pokeride/girl_hippowdon"]
      ActionSpeed = 4.9
      CanDig = true
     end
     
     # pbMount(Luxray)
    module Luxray
      MoveSheet = ["Pokeride/boy_luxray","Pokeride/girl_luxray"]
      MoveSpeed = 4.8
      ActionSheet = ["Pokeride/boy_luxray","Pokeride/girl_luxray"]
      ActionSpeed = 5.2
      FlashSheet = ["Pokeride/boy_luxray_flash","Pokeride/girl_luxray_flash"]
      CanFlash = true
    end
    
    # pbMount(Swampert)
    module Swampert
      MoveSheet = ["Pokeride/boy_swampert","Pokeride/girl_swampert"]
      MoveSpeed = 4.8
      ActionSheet = ["Pokeride/boy_swampert","Pokeride/girl_swampert"]
      ActionSpeed = 5.2
      SwampSurf = true
    end
    
    # pbMount(Lanturn)
    module Lanturn
      MoveSheet = ["Pokeride/boy_lanturn","Pokeride/girl_lanturn"]
      MoveSpeed = 5.0
      ActionSheet = ["Pokeride/boy_lanturn_fast","Pokeride/girl_lanturn_fast"]
      ActionSpeed = 5.6
      DiveMoveSheet = ["Pokeride/boy_lanturn_dive","Pokeride/girl_lanturn_dive"]
      DiveMoveSpeed = 4.8
      ActionSheet = ["Pokeride/boy_lanturn_dive","Pokeride/girl_lanturn_dive"]
      DiveActionSpeed = 5.5
      CanSurf = true
      CanDive = true
    end
    
    # pbMount(Araquanid)
    module Araquanid
      MoveSheet = ["Pokeride/boy_araquanid","Pokeride/girl_araquanid"]
      MoveSpeed = 4.8
      ActionSheet = ["Pokeride/boy_araquanid_fast","Pokeride/girl_araquanid_fast"]
      ActionSpeed = 5.8
      DiveMoveSheet = ["Pokeride/boy_araquanid_dive","Pokeride/girl_araquanid_dive"]
      DiveMoveSpeed = 4.5
      DiveActionSheet = ["Pokeride/boy_araquanid_dive_fast","Pokeride/girl_araquanid_dive_fast"]
      DiveActionSpeed = 5.5
      CanDive = true
      WalkOnWater = true
    end
    
    # pbMount(Rampardos)
    module Rampardos
      MoveSheet = ["Pokeride/boy_rampardos","Pokeride/girl_rampardos"]
      MoveSpeed = 5.0
      ActionSheet = ["Pokeride/boy_rampardos_charge","Pokeride/girl_rampardos_charge"]
      ActionSpeed = 5.6
      RockSmash = true
    end
    
    # pbMount(Flygon)
    module Flygon
      MoveSheet = ["Pokeride/boy_flygon","Pokeride/girl_flygon"]
      MoveSpeed = 4.6
      ActionSheet = ["Pokeride/boy_flygon_fast","Pokeride/girl_flygon_fast"]
      ActionSpeed = 5.2
      FlyOverWater = true
      RockClimb = true
      WalkOnMudsdale = true
      IceTraction = true
      CanFly = true
    end
  10. Replace the Ride Pager script v1 with the below script v2:-
    Spoiler:
    #==============================================================================#
    #//////////////////////////////////////////////////////////////////////////////#
    #==============================================================================#
    #               -------------------------------------------                    #
    #               | Pokéride Ride Pager and Mount Expansion |                    #
    #               |           by Ulithium_Dragon            |                    #
    #               |        Updated and Rehanced by          |                    #
    #               |              Bhagya Jyoti               |                    #
    #               -------------------------------------------                    #
    #                                 ~v2.0~                                       #
    #==============================================================================#
    
    #==============================================================================#
    #                            ::::Options::::                                   #
    #                                --------                                      #
    #       Below are the options for toggling certain features on or off:         #
    # ____________________________________________________________________________ #
    #  Adds all mounts to the ride pager from the start (mostly used for testing). #
    $REGISTERALLMOUNTS = false  #Default: false
    #------------------------------------------------------------------------------#
    #  The ID of the Common Event that holds the mount/dismount animation.         #
    $MOUNTEVENTID = 3   #Default: nil
    #------------------------------------------------------------------------------#
    #  Toggles the MountAnimation to be played from the common event id.           #
    $MOUNTANIMATION = true	#Default: true
    #------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------#
    #  Controls whether the mounting/dismounting sound effect should play.         #
    $PLAYMOUNTSE = true   #Default: true
    #------------------------------------------------------------------------------#
    #  Controls whether the Pokemon's cry sound should play when summoned.         #
    $PLAYMOUNTCRY = true   #Default: true
    #------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------#
    #  Controls whether or not mounts can be summoned indoors.                     #
    #   *NOTE: This affects ALL indoor maps, including caves! Currently this check #
    #    is tied to the bike check. Ergo, if you can ride a bike, you can mount.   #
    $CANUSE_INDOORS = true   #Default: false
    #------------------------------------------------------------------------------#
    #  If "CANUSE_INDOORS" is false, this controls whether or not to include the   #
    #   surf mounts. I highly recommend leaving this on "true" unless you're       #
    #   certain that you have no maps with surfable water/lava that have the       #
    #   metadata flag "Bicycle=false" (cave maps usually have this set to true).   #
    $CANUSE_INDOORS_SURFMOUNTS = true   #Default: true
    #------------------------------------------------------------------------------#
    #------------------------------------------------------------------------------#
    #  If you want terrain tag that blocks mounting when standing on               #
    #  or facing a tile, put its terrain ID as defined in PBTerrain here.          #
    $NOMOUNTING_TERRAINTAG = 99    #Default: nil
    #------------------------------------------------------------------------------#
    #  If you want a terrain tag that blocks dismounting when standing on          #
    #  or facing a tile, put its terrain ID as defined in PBTerrain here.          #
    #  *NOTE: In most cases this should be the same as "NOMOUNTING_TERRAINTAG".    #
    $NODISMOUNTING_TERRAINTAG = 99    #Default: nil
    #------------------------------------------------------------------------------#
    #==============================================================================#
    # Press G on the KeyBoard to call special mount features, like                 #
    # 1. Flygon's Fly feature                                                      #
    # 2. Hippowdon's Dig feature                                                   #
    # 3. Luxray's Flash feature                                                    #
    #==============================================================================#
    # Search the following keyword to see all additions in the scripts:-           #
    #                                 #POKERIDE_                                   #
    #==============================================================================#
    
    #==============================================================================#
    # Add all new mounts here keeping the syntax correct                           #
    #==============================================================================#
    
    #Add the Mount in this hash where you can keep track of weather a mount is available.
    #true indicates that it will be available from start.
    #false indicates that it will be registered later.
    $RideMounts = {
      :Tauros     => false,
      :Lapras     => false,
      :Sharpedo   => false,
      :Machamp    => false,
      :Mudsdale   => false,
      :Stoutland  => false,
      :Rhyhorn    => false,
      :Kabutops   => false,
      :Avalugg    => false,
      :Gogoat     => false,
      :Hippowdon  => false,
      :Luxray     => false,
      :Swampert   => false,
      :Lanturn    => false,
      :Araquanid  => false,
      :Rampardos  => false,
      :Flygon     => false
    }
    
    #Code to show the mount in ride pager if it is registered.
    #Observe the lines and ad your mount cmd following the previous cmd, 
    #and returning if it  has been registered in $RideMounts
    def pbMountCommands(commands,cmdMounts)
      commands[cmdMounts[0]=commands.length]=_INTL(getMountName(1)) if $RideMounts[:Tauros]
      commands[cmdMounts[1]=commands.length]=_INTL(getMountName(2)) if $RideMounts[:Lapras]
      commands[cmdMounts[2]=commands.length]=_INTL(getMountName(3)) if $RideMounts[:Sharpedo]
      commands[cmdMounts[3]=commands.length]=_INTL(getMountName(4)) if $RideMounts[:Machamp]
      commands[cmdMounts[4]=commands.length]=_INTL(getMountName(5)) if $RideMounts[:Mudsdale]
      commands[cmdMounts[5]=commands.length]=_INTL(getMountName(6)) if $RideMounts[:Stoutland]
      commands[cmdMounts[6]=commands.length]=_INTL(getMountName(7)) if $RideMounts[:Rhyhorn]
      commands[cmdMounts[7]=commands.length]=_INTL(getMountName(8)) if $RideMounts[:Kabutops]
      commands[cmdMounts[8]=commands.length]=_INTL(getMountName(9)) if $RideMounts[:Avalugg]
      commands[cmdMounts[9]=commands.length]=_INTL(getMountName(10)) if $RideMounts[:Gogoat]
      commands[cmdMounts[10]=commands.length]=_INTL(getMountName(11)) if $RideMounts[:Hippowdon]
      commands[cmdMounts[11]=commands.length]=_INTL(getMountName(12)) if $RideMounts[:Luxray]
      commands[cmdMounts[12]=commands.length]=_INTL(getMountName(13)) if $RideMounts[:Swampert]
      commands[cmdMounts[13]=commands.length]=_INTL(getMountName(14)) if $RideMounts[:Lanturn]
      commands[cmdMounts[14]=commands.length]=_INTL(getMountName(15)) if $RideMounts[:Araquanid]
      commands[cmdMounts[15]=commands.length]=_INTL(getMountName(16)) if $RideMounts[:Rampardos]
      commands[cmdMounts[16]=commands.length]=_INTL(getMountName(17)) if $RideMounts[:Flygon]
    end
    
    #The codes to run various mounts.
    #Put the module code here following the next when statement.
    def pbMountCases(mounting)
      ride=mounting
      case ride
      when 0; pbMount(Tauros)
      when 1; pbMount(Lapras)
      when 2; pbMount(Sharpedo)
      when 3; pbMount(Machamp)
      when 4; pbMount(Mudsdale)
      when 5; pbMount(Stoutland)
      when 6; pbMount(Rhyhorn)
      when 7; pbMount(Kabutops)
      when 8; pbMount(Avalugg)
      when 9; pbMount(Gogoat)
      when 10; pbMount(Hippowdon)
      when 11; pbMount(Luxray)
      when 12; pbMount(Swampert)
      when 13; pbMount(Lanturn)
      when 14; pbMount(Araquanid)
      when 15; pbMount(Rampardos)
      when 16; pbMount(Flygon)
      end  
    end
    #If your mount uses surf, put its number as you have given 
    #in the previous when statement in `def pbMountClass` method.
    SURFING_MOUNTS=[1,2,13]   #1=>Lapras,2=>Sharpedo,13=>Lanturn
    
    
    #==============================================================================#
    #  Give the Ride Pager with- pbGiveRidePagerItem                               #
    #==============================================================================#
    #Gives the Ride Pager item with the appropriate sound effect.
    def pbGiveRidePagerItem
      Kernel.pbReceiveItem(:RIDEPAGER)
      pbSEPlay("RidePager_ItemGet") if $PLAYMOUNTSE
      pbWait(8)
    end
    
    #Item handlers
    ItemHandlers::UseFromBag.add(:RIDEPAGER,proc{|item| next 2 })
    ItemHandlers::UseInField.add(:RIDEPAGER,proc{|item|
      #Registers all of the mounts by default if the option is enabled.
      if $REGISTERALLMOUNTS
        pbRegisterAllMounts(false)
      end
      #Show the menu.
      pbRidePagerMenu(item)
    })
    
    
    #Plays the Mount Animation.
    def pbMountAnim
      if $MOUNTANIMATION && $MOUNTEVENTID!=nil
        pbCommonEvent($MOUNTEVENTID) 
      end
      #Play the SE of Pokeride Summoning.
      pbSEPlay("PokeRide_Summon") if $PLAYMOUNTSE
    end
    
    #Code to register all mount in the Ride Pager at once.
    def pbRegisterAllMounts(msg=true)
      @msg=msg
      for pokemount in $RideMounts.keys
        $RideMounts[pokemount] = true
      end
      if @msg == true
        Kernel.pbMessage(_INTL("All Pokémon were registered in the Ride Pager!\\me[Pokeride Mount Registered]"))
      end
    end
    
    
    #Code for Registering a particular Mount
    def pbRegisterMount(mountname,showmsg=true)
      @mountname=mountname
      @showmsg=showmsg
      if $RideMounts.include?(@mountname)
        if !$RideMounts[@mountname]
          pbSEPlay("Pokeride Mount Registered") if $PLAYMOUNTSE
          Kernel.pbMessage(_INTL("{1} was registered in the Ride Pager!\\me[Pokeride Mount Registered]",mountname)) if showmsg
    	  $RideMounts[@mountname] = true
        else
          Kernel.pbMessage(_INTL("{1} is already registered in the Ride Pager!\\se[error_01]",mountname)) if showmsg
        end
      else
        pbSEPlay("error_404") if $PLAYMOUNTSE
        Kernel.pbMessage(_INTL("{1} is not a mount!\\se[error_404]",mountname)) if showmsg
      end
    end
    
    
    #==============================================================================#
    #  Codes for aliasing different methods in essentials                          #
    #==============================================================================#
    class PokemonGlobalMetadata
      attr_accessor :ridingWaterfall
      attr_accessor :mount_attack
      attr_accessor :mount_flash
      attr_accessor :mount_fly
      attr_accessor :step_anime
    
      alias ridepager_init initialize
      def initialize
          ridepager_init
        @ridingWaterfall      = false
        @mount_attack         = false
        @mount_flash          = false
        @mount_fly            = false
      end
    end
    
    #Making various terrain tags for mounts
    module PBTerrain
      SwampWater = 19 # Can only be traversed on a Pokéride with SwampSurf capabilities
      
      def PBTerrain.isMudsdaleTag?(tag)
        return tag==PBTerrain::Mudsdale
      end
      def PBTerrain.isRockTag?(tag)
        return tag==PBTerrain::RockClimb
      end
      def PBTerrain.isSwampWater?(tag)
        return tag==PBTerrain::SwampWater
      end
    end
    
    #Press G to use special features
    module Input
      class << Input
        alias fly_key buttonToKey
      end
      G = 30
      
      def self.buttonToKey(btn)
        return [0x47] if btn == Input::G
        fly_key(btn)
      end
    end
    
    
    #==============================================================================#
    #  Codes for opening and using ride pager menu.                                #
    #==============================================================================#
    def Kernel.pbShowRidePagerCmds(msgwindow,commands,desc,cmdIfCancel=0,defaultCmd=0)
      msgwin=msgwindow
      if !msgwindow
        msgwin=Kernel.pbCreateMessageWindow(nil)
      end
      oldlbl=msgwin.letterbyletter
      msgwin.letterbyletter=false
      if commands
        cmdwindow=Window_CommandPokemonEx.new(commands)
        cmdwindow.z=99999
        cmdwindow.visible=true
        cmdwindow.resizeToFit(cmdwindow.commands)
        cmdwindow.height=msgwin.y if cmdwindow.height>msgwin.y
        cmdwindow.index=defaultCmd
        command=0
        msgwin.text=desc[cmdwindow.index]
        
        #Get the bitmap of the selected mount.
        filename = "Graphics/Characters/Pokeride/RidePager/PokeRide_"+commands[cmdwindow.index]+".png"
        mountBitmap = pbResolveBitmap(filename)
        #Create a new bitmap window, with the start mount as the loading bitmap.
        iconWin = createMountBitmapWindow(mountBitmap,cmdwindow,msgwin)
        msgwin.width=msgwin.width # Necessary evil to make it use the proper margins.
        loop do
          Graphics.update
          Input.update
          oldindex=cmdwindow.index
          cmdwindow.update
          if oldindex!=cmdwindow.index
            msgwin.text=desc[cmdwindow.index]
            #Code for udpating the Ride Pager icon display
            #If the current index isn't the command "QUIT"...
            if commands[cmdwindow.index] != "QUIT"
              #Get the bitmap for the mount the index is on.
              filename = "Graphics/Characters/Pokeride/RidePager/PokeRide_"+commands[cmdwindow.index]+".png"
              mountBitmap = pbResolveBitmap(filename)
              #Update our icon window with the bitmap we got.
              iconWin.setBitmap(mountBitmap)
              #Reposition the window in the case of a larger/smaller mount bitmap.
              moveIconWindow(iconWin,cmdwindow,msgwin)
            #If the current index IS the command "QUIT"...
            else
              #Set an empty bitmap/or just hide it.
              iconWin.setBitmap(pbResolveBitmap("Graphics/Characters/Pokeride/RidePager/RidePager.png"))
              #Reposition the window to account for the size change.
              moveIconWindow(iconWin,cmdwindow,msgwin)
            end
          end
          msgwin.update
          yield if block_given?
          if Input.trigger?(Input::B)
            if cmdIfCancel>0
              command=cmdIfCancel-1
              break
            elsif cmdIfCancel<0
              command=cmdIfCancel
              break
            end
          end
          if Input.trigger?(Input::C)
            command=cmdwindow.index
            break
          end
          pbUpdateSceneMap
        end
        ret=command
        cmdwindow.dispose
        #Dispose our icon window
        iconWin.dispose
        Input.update
      end
      msgwin.letterbyletter=oldlbl
      if !msgwindow
        msgwin.dispose
      end
      return ret
    end
    
    #A method that creates a PictureWindow for our mount bitmap that we want to display.
    #Returns: An instance of the PictureWindow class, containing a default image of the
    #first bitmap passed to it.
    #Edited to force top most Z layer where other effects might over-ride this message box.
    def createMountBitmapWindow(mountBitmap,cmdWindow,msgWindow)
      #If there was an actual bitmap file passed...
      if mountBitmap
        #Instance the PictureWindow class, passing the bitmap we want to show.
        iconWindow = PictureWindow.new(mountBitmap)
        #Reposition the window to properly display to the right of the command window.
        iconWindow.x=(Graphics.width-cmdWindow.width)-(iconWindow.width/2)
        #Show the icon window above the description text window.
        iconWindow.y=(msgWindow.y/2)-(iconWindow.height/2)
        #Show the icon window at the top of the screen
        iconWindow.z=999999
        #Return the instanced class of PictureWindow, currently displaying the bitmap
        #passed to it.
        return iconWindow
      end
    end
    
    #A method that allows us to reposition the icon window in case it gets resized.
    def moveIconWindow(iconWin,cmdWindow,msgWindow)
      #Reposition the window to properly display to the right of the command window.
      iconWin.x=(Graphics.width-cmdWindow.width)-(iconWin.width/2)
      #Show the icon window above the description text window.
      iconWin.y=(msgWindow.y/2)-(iconWin.height/2)
    end
    
    
    #==============================================================================#
    #  Code for reading Mount Data from the Mounts PBS file                        #
    #==============================================================================#
    class MountsClass
      #Force our $MountsPBS to be recompiled if it isn't already
      $MountsPBS = load_data("Data/mounts.dat") if !$MountsPBS
      
      def initialize(name)
        if !$MountsPBS.include?(name)
          raise ArgumentError.new(_INTL("There is no entry with that name!"))
        end
        @name = name
      end
    
      def mountid
        return $MountsPBS[@name]["MountID"]
      end
      def mountpokedexid
        return $MountsPBS[@name]["MountPokedexID"]
      end
      def mountname
        return $MountsPBS[@name]["MountName"]
      end
      def mountdescription
        return $MountsPBS[@name]["MountDescription"]
      end
    end
    
    def getMountName(id)
      for mounts in $MountsPBS.keys
        mountname = $MountsPBS[mounts]["MountName"]
        currentid = $MountsPBS[mounts]["MountID"].to_i
        if currentid==id
          return mountname
        end
      end  
    end
    
    #==============================================================================#
    #  Code for various in-game Checks                                             #
    #==============================================================================#
    #Checks if you are surfing and are facing a "no surfing" tile.
    def pbSurfingChecker
      #Needed for Terrain Tag checks.
      x=$game_player.x
      y=$game_player.y
      currentTag=$game_map.terrain_tag(x,y)
      facingTag=Kernel.pbFacingTerrainTag
      notCliff=$game_map.passable?($game_player.x,$game_player.y,$game_player.direction)
      if $PokemonGlobal.surfing == true
        if PBTerrain.isSurfable?(currentTag) && !PBTerrain.isSurfable?(facingTag) && notCliff
          surfingchecker = true
        end
      end
    end
    
    #Checks if you are currently surfing.
    def pbCurrentlySurfingChecker
      #Is the player surfing?
      if $PokemonGlobal.surfing == true
        currentlysurfingchecker = true
      end
    end
    
    #Checks if you are cycling
    def pbBikesChecker
      if $PokemonGlobal.bicycle == true
        bikeschecker = true
      end
      if defined?($PokemonGlobal.acrobike)
        if $PokemonGlobal.acrobike == true
          bikeschecker = true
        end
      end
      if defined?($PokemonGlobal.machbike)
        if $PokemonGlobal.machbike == true
          bikeschecker = true
        end
      end
    end
    
    #Overwrites the function located in PItem_Items.
    def pbBikeCheck
      if $PokemonGlobal.surfing ||
         (!$PokemonGlobal.bicycle && PBTerrain.onlyWalk?(pbGetTerrainTag)) ||
         $PokemonGlobal.mount
        if $PokemonGlobal.mount
          Kernel.pbMessage(_INTL("You can't ride your bike while on Pokémon!"))
          return false
        else
          Kernel.pbMessage(_INTL("Can't use that here."))
          return false
        end
      end
      if $game_player.pbHasDependentEvents?
        Kernel.pbMessage(_INTL("It can't be used when you have someone with you."))
        return false
      end
      if $PokemonGlobal.bicycle
        if pbGetMetadata($game_map.map_id,MetadataBicycleAlways)
          Kernel.pbMessage(_INTL("You can't dismount your Bike here."))
          return false
        end
        return true
      else
        val=pbGetMetadata($game_map.map_id,MetadataBicycle)
        val=pbGetMetadata($game_map.map_id,MetadataOutdoor) if val==nil
        if !val
          Kernel.pbMessage(_INTL("Can't use that here."))
          return false
        end
        return true
      end
    end
    
    #Dismounts your bicycle.
    def pbStopAllBikes
      $PokemonGlobal.bicycle = false
      if defined?($PokemonGlobal.acrobike)
        $PokemonGlobal.acrobike = false
      end
      if defined?($PokemonGlobal.machbike)
        $PokemonGlobal.machbike = false
      end
    end
    
    #Jump effect used for mounting and dismounting surf mounts.
    def pbMountJumpTowards
      dist=1
      x=$game_player.x
      y=$game_player.y
      case $game_player.direction
      when 2 # down
        $game_player.jump(0,dist)
      when 4 # left
        $game_player.jump(-dist,0)
      when 6 # right
        $game_player.jump(dist,0)
      when 8 # up
        $game_player.jump(0,-dist)
      end
    end
    
    
    #==============================================================================#
    #  Code for the Ride Pager Screen                                              #
    #==============================================================================#
    def pbRidePagerMenu(item)
      #Needed for Terrain Tag checks.
      x=$game_player.x
      y=$game_player.y
      currentTag=$game_map.terrain_tag(x,y)
      facingTag=Kernel.pbFacingTerrainTag
      notCliff=$game_map.passable?($game_player.x,$game_player.y,$game_player.direction)
    
      #Resets back to "false" each time so the check can be run again.
      surfingchecker = false
      currentlysurfingchecker = false
      bikeschecker = false
    
      #Map Metadata checks.
      bikeval=pbGetMetadata($game_map.map_id,MetadataBicycle)
      bikeval=pbGetMetadata($game_map.map_id,MetadataOutdoor) if bikeval==nil
    
      if !$PokemonGlobal.mount  #If already mounted, skip to dismounting.
        commands=[]
        cmdMounts = []
        mount = 0
        while mount != $RideMounts.length
          cmdMounts[mount] = -1
          mount+=1
        end
        pbMountCommands(commands,cmdMounts)
        #QUIT
        cmdQUIT = -1
        commands[cmdQUIT=commands.length]=_INTL("QUIT")
    
        pbBikesChecker #If the player is on a bike, no do not show the menu.
      
        #Do not show the menu if no mounts are registered.
        if commands.length<=1
          Kernel.pbMessage(_INTL("No mounts registered."))
          pbWait(10)
    
        #Checks the Bicycle map metadata to see if the player can mount on the current map.
        elsif !bikeval && !$CANUSE_INDOORS && !$CANUSE_INDOORS_SURFMOUNTS
          Kernel.pbMessage(_INTL("You can't call a mount in here!"))
        #Checks if the player is on their bike.
        elsif $PokemonGlobal.bicycle == true
          Kernel.pbMessage(_INTL("You can't call a mount while riding your bike!"))
        #Checks if the player has a dependent event following them.
        elsif $game_player.pbHasDependentEvents?
          Kernel.pbMessage(_INTL("You can't call a mount when you have someone with you!"))
    
        #Is Diving?
        elsif $PokemonGlobal.diving == true
          Kernel.pbMessage(_INTL("You can't call a mount here!"))
        #Is Surfing?
        elsif $PokemonGlobal.surfing == true && $PokemonGlobal.mount == nil
          Kernel.pbMessage(_INTL("You can't call a mount here!"))
        #Is Rock Climbing?
        elsif defined?($PokemonGlobal.rockclimbing) && $PokemonGlobal.rockclimbing == true && $PokemonGlobal.mount == nil
          Kernel.pbMessage(_INTL("You can't call a mount here!"))
        #Is Sliding?
        elsif $PokemonGlobal.sliding == true
          #Do nothing.
    
        #Checks if the player is on or facing custom "no-mounting" terrain tag.
        elsif $NOMOUNTING_TERRAINTAG && (facingTag==$NOMOUNTING_TERRAINTAG ||
              facingTag==$NOMOUNTING_TERRAINTAG || currentTag==$NOMOUNTING_TERRAINTAG)
                Kernel.pbMessage(_INTL("You can't mount here."))
    
        else  #Show the menu.
    
          #Create new array to hold our Mount description text
          descArray = Array.new
          #Loop through the names that are currently selectable...
          for name in commands
            #If the command name isn't "Quit"...
            if name != "QUIT"
              #Set a new instance of the MountsClass that handles the PBS data for the
              #Mount name passed.
              mountPBS = MountsClass.new(name.upcase) 
              #Set the string to add to our descArray to be the help text if it isn't
              #a null value. Otherwise set it to be empty.
              descString = mountPBS.mountdescription ? mountPBS.mountdescription : ""
              #Add the current mount help text to the end of the array.
              descArray.push(descString)
            #If the command name IS "Quit"...
            else
              #Pass this string for the Quit command.
              descArray.push("Exit the Ride Pager.")
            end
          end
        
        
        loop do
          pbSurfingChecker
          pbBikesChecker
          #Create a new window for the help text, using the menu frame style
          msgwindow = Kernel.pbCreateMessageWindow(nil,MessageConfig.pbDefaultSystemFrame) 
          #Call our commands list with our descArray and help text message box
          command=Kernel.pbShowRidePagerCmds(msgwindow,commands,descArray,-1)
          #Dispose our messagebox when an option is selected
          Kernel.pbDisposeMessageWindow(msgwindow)
    	
          #Exit the menu if the B or C buttons are pressed.
          if command==-1
            break
          end
    
          mounting=0
          while mounting!=cmdMounts.length
            if cmdMounts[mounting]>=0 && command==cmdMounts[mounting]
              mount_name = getMountName(mounting+1)
              #Checks if you are surfing and are facing a "no surfing" tile.
              if surfingchecker == true
                Kernel.pbMessage(_INTL("You can't dismount here."))
                return
              end
              #Checks if you can use mounts indoors.
              if !$CANUSE_INDOORS && !bikeval
                Kernel.pbMessage(_INTL("You can't call {1} here.",mount_name))
              elsif SURFING_MOUNTS.include?(mounting)
                if PBTerrain.isSurfable?(facingTag) && !$PokemonGlobal.surfing && 
                    !pbGetMetadata($game_map.map_id,MetadataBicycleAlways) && notCliff
                  $PokemonGlobal.bicycle = false
                  pbMountCases(mounting)  #Mount up!
                  pbMountJumpTowards
                  pbMountAnim
                  pbWait(8)
                  if $PLAYMOUNTCRY
                    pbPlayCry(MountsClass.new(mount_name.upcase).mountpokedexid.to_i,100)
                  end
                  surfbgm=pbGetMetadata(0,MetadataSurfBGM)
                  if defined?(pbGetSurfTheme)
                    surfbgm=pbGetSurfTheme
                    pbCueBGM(surfbgm,0.5) if surfbgm
                  elsif surfbgm
                    pbBGMPlay(surfbgm)
                  else
                    $game_map.autoplayAsCue
                  end
                else  #No surfable tiles.
                  Kernel.pbMessage(_INTL("You can't call {1} here.",mount_name))
                end
              else
                $PokemonGlobal.bicycle = false
                pbMountAnim
                pbMountCases(mounting)
                pbWait(4)
    			if $PLAYMOUNTCRY
                  pbPlayCry(MountsClass.new(mount_name.upcase).mountpokedexid.to_i,100)
    			end
                pbWait(8)
              end
              return
            elsif cmdQUIT>=0 && command==cmdQUIT
            #Exit the menu.
            return    
            end
            mounting+=1
          end
        end
      end
      
      #Dismount
      else
        #Checks if you are surfing and facing a "no surfing" tile.
        pbSurfingChecker
        #Checks if you are surfing.
        pbCurrentlySurfingChecker
    
        #Checks if the player is on or facing custom "no-dismounting" terrain tag.
        if $NODISMOUNTING_TERRAINTAG && (facingTag==$NODISMOUNTING_TERRAINTAG ||
          facingTag==$NODISMOUNTING_TERRAINTAG || currentTag==$NODISMOUNTING_TERRAINTAG)
          Kernel.pbMessage(_INTL("You can't dismount right now."))
    
        #Is Diving?
        elsif $PokemonGlobal.diving == true
          Kernel.pbMessage(_INTL("You can't dismount right now."))
    
        #Is Sliding?
        elsif $PokemonGlobal.sliding == true
          #Do nothing.
    
        #On a bike?
        elsif $PokemonGlobal.bicycle == true
          Kernel.pbMessage(_INTL("You can't use your bike while riding a Pokémon!"))      
    
        #Surf Dismount
        elsif $PokemonGlobal.surfing == true
          if PBTerrain.isSurfable?(currentTag) && PBTerrain.isSurfable?(facingTag)
            Kernel.pbMessage(_INTL("You can't dismount right now."))
          #If surfing, jump to land first.
          elsif pbSurfingChecker == true
            $PokemonGlobal.surfing = false
            pbDismount  #Dismount
            pbMountJumpTowards
            pbWait(2)
            pbMountAnim
            pbWait(8)
            $game_map.autoplayAsCue
            $game_player.increase_steps
            result=$game_player.check_event_trigger_here([1,2])
            Kernel.pbOnStepTaken(result)
          end
          
          #Swamp Surfing or Mudsdale/Rhyhorn tile Dismount
        elsif PBTerrain.isSwampWater?(pbGetTerrainTag) || PBTerrain.isMudsdaleTag?(currentTag) ||
            PBTerrain.isRockTag?(currentTag) || PBTerrain.isSurfable?(currentTag)
          Kernel.pbMessage(_INTL("You can't dismount right now."))
          
        else  #Dismount normally.
          pbMountAnim
          pbDismount
        end
      end
    end
    
    
    #==============================================================================#
    #||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||#
    # ____________________________________________________________________________ #


Credits:
  • Bhagya Jyoti
  • UlithiumDragon
14 year-old amteur GAME DEVELOPER.
Join my discord which has all Pokemon stuffs, from gaming to game-making and from arts showcase to poketubing.
https://discord.gg/MCgYKQF
My DeviantArt- https://www.deviantart.com/bhagyajyoti

भाग्य ज्योति

Age 14
Male
बिहार, भारत। Bihar, India.
Online now
Posted 2 Minutes Ago
259 posts
1.6 Years
For more Pokeride Graphics, feel free to visit my friends Deviant Art- Maroof_v.
If you all also have any Pokeride idea, or any Pokeride sprite, feel free to share with PokeCommunity.
14 year-old amteur GAME DEVELOPER.
Join my discord which has all Pokemon stuffs, from gaming to game-making and from arts showcase to poketubing.
https://discord.gg/MCgYKQF
My DeviantArt- https://www.deviantart.com/bhagyajyoti

Poke_Mv_Dev

PokeMVdeveloper

Maroof
India
Seen 5 Hours Ago
Posted 1 Day Ago
9 posts
48 Days
Hello Guys go ahead and use script for add a Ride Pager in your project ,
A Bhagya Jyoti do very hardwork for make capable it for Pokemon Essential v17...
& Special Thanks to Ulithium_Dragon who made this Script and give Grant permission to release it...
Thanks you
My deviant and bhagya jyoti a very nice done on deviant also go and check out.
Bhagya Jyoti :- https://www.deviantart.com/bhagyajyoti
Maroof v :- https://www.deviantart.com/pokemvdeveloper

Sorry Bhagya i'm late here....