A while ago, I DMed a battle royale one shot for my players. I gave my players level 20 characters and let them fight each other till there was one person standing. Near the end of this game a situation occurred between me and one of my players. I wasn't sure what the appropriate ruling was in this situation, so I chose one that made sense to me and continued on. The player accepted it, but I still feel my players argument were somewhat legitimate.
The situation
During the game, one of the other players cast a wish spell. This player asked for "A powerful magical blizzard that covered the battlefield". Since the wish spell states that the DM has great latitude in ruling what occurs in such an instance and one of my players had to leave the game soon, I decided to not hold back on my players and take stats from the meteor swarm spell for this blizzard.
I took the following modification from the spell and made the all players do checks for it after each round of combat.
Each creature must make a Dexterity saving throw. A creature takes 20d6 damage on a failed save, or half as much damage on a successful one.
The arguments
The Ranger in my game asked me if he could use uncanny dodge to halve any damage from the blizzard. He thought he could since the blizzard was created by a wish spell and that could be seen as an attack.
My ruling was, the snow storm was targeted at the battlefield and not directly at him, so there was no case of an attacker hitting him. It was a blizzard being a blizzard, there just happened to be a Ranger in it.
Was this situation handled correctly? Or is there something that I might have overlooked?