StarmieLazer, take Rayquaza the Altaria. First of all, Rayquaza must be caught in the Sky Tower. Now that that's out of the way, on to the backstory that will explain its restrictions!
You see, a few days ago, an Altaria had a dream, and in that dream, it was Rayquaza, Flying to Sootopolis City, and when it got there, it Roared at Groudon and Kyogre, driving them out of Sootopolis and forcing them to roam the continent of Hoenn for eternity (or at least until they become dormant once again). Because Rayquaza believes it's actually Rayquaza, the only moves it can use must be ones Rayquaza can learn (its moveset must include the above bolded moves, by the way). However, after being in your company for an extended amount of time (that is, once you get through Victory Road), Rayquaza hears tales about an imposter Rayquaza, and decides to prove that it is the real Rayquaza by soloing it. Unfortunately for Rayquaza (the Altaria), you chose to catch the real Rayquaza without even using Rayquaza (the Altaria) in battle. This causes it to hate you for all eternity, to the point where it changes its nickname to Hateful, and it refuses to know moves Rayquaza (the real one) can learn from that point onward, with the exception of Frustration, which it must use at the beginning of every battle its in. Also from that point onward, Hateful must solo every serpentine Pokemon it comes across. (Hateful must also solo Lucy. If Hateful fails after 5 tries, Hateful will settle for just one of her Pokemon. Shuckle doesn't count.) Also, if Hateful and Rayquaza are on the same team in a double battle, Hateful can only attack Rayquaza until one of them faints.
Have fun!
XAkavir, I promise I'll get to your challange within 24 hours. Just a bit of a warning: I'm pretty much out of ideas, so it might take a while.