This is what happens when developers over-design, over-think, and "over-balance". They start forcing what they believe should be experienced by a player on the gameplay via code fudging. It's a fine line, but I almost always disagree with the cheatie solutions imposed.
Once, not so long ago when I was working on a racing game, it was proposed that code made it impossible for a player to win the first time in a race. AI cars would be automatically sped up at the end of the race to just overtake the player if they were winning. That way players would artificially be forced into an "overcoming" experience, and "gain more satisfaction" when they were eventually allowed to win. I was flabbergasted and argued vehemently against it. And yet cheatie code mechanics of a similar nature are employed constantly in many games - as you are witnessing here.
There are always better design solutions than code fudging. Always. It just takes a design team with the balls to find and fight for them.
You're right. Ranged characters should inherently have the advantage over melee. Melee should never be able to hit ranged.
see yesterday, i was thinking to myself, i bet he plans on playing a monk or barb
take alook at a barbs swings, theyre too quick for a reactional dodge
now take a look at the damage of his abilities, they look to be tuned because its harder to hit / get in range with his abilities, however he has many ways of stopping both of these disadvantages
now its the other way around, now only ranged abilities can be dodged with movement - not both being able to
so tell me, why is it fair that you can dodge all ranged attacks, but melee swings have an auto hit?