How should I set up and execute air battles in my session to avoid easy encounters? [duplicate]

I’m running the Storm King’s Thunder campaign in dnd 5e, and we are at the portion where the PCs get an airship to travel around in. There are approximately 5-6 lvl 7 PCs, and they have 3 or 4 hard encounters a day. There are two wizards, a warlock, ranger, paladin, blood hunter, sorcerer, and fighter.

For the most part, they have had fun with the different weapons and enemies they have faced; however, I find that one or two spellcasting PCs have been using spells such as mind sliver, polymorph, and hypnotic pattern to defeat more challenging encounters, such as one with a roc and wyvern. They make the creature make saving throws with hypnotic pattern and cause the enemy to fall to its death, and using mind sliver makes it even harder, especially on low wisdom creatures like rocs. Or with the polymorph spell, they cause the enemy to become a fish or chicken and throw it off the edge, and since the damage carries over, it kills the monster. I realize it was legal and made fights funnier, but it does get annoying when it’s happening in almost every fight. Are there any suggestions on how to keep them on track without them making every encounter easy?

I thought of giving the monsters immunity to these effects, but it sounds like a lame excuse for me not being prepared.