Step 1: First, go to the Script PokemonHiddenMovesand go to line 474 or near that.
Step 2: Delete where it says something like "pbHasDependentEvents?" and delete everything past that until you reach an end a few lines down. Delete that end and stop. Now you can Fly!
Step 3: This is just a bit more complicated. Go to line 262 of the same script. See where it says "pbHasDependentEvents?" Delete it until you meet and end and delete that end as well. But wait! There's more!
Step 4: If you were to stop at Step 3, your Pokemon would glitch up when surfing. So, go to the line a few lines down that says:
Kernel.pbMessage(_INTL("{1} used Surf!",speciesname))
and paste this just below:
pbMoveRoute(pbGetDependency("Dependent0"),[PBMoveRoute::Graphic,"nil.png",0,2,0])
pbMoveRoute(pbGetDependency("Dependent1"),[PBMoveRoute::Graphic,"nil.png",0,2,0])
pbMoveRoute(pbGetDependency("Dependent2"),[PBMoveRoute::Graphic,"nil.png",0,2,0])
pbMoveRoute(pbGetDependency("Dependent3"),[PBMoveRoute::Graphic,"nil.png",0,2,0])
pbMoveRoute(pbGetDependency("Dependent4"),[PBMoveRoute::Graphic,"nil.png",0,2,0])
pbMoveRoute(pbGetDependency("Dependent5"),[PBMoveRoute::Graphic,"nil.png",0,2,0])
This will allow you to surf! :)
Step 5: Use and enjoy! :) No credit needed, but is still appreciated.