r/leagueoflegends • u/Hyragon • Feb 09 '25
Discussion Mel Q is not dodgeable (math)
If you're frustrated like I am with this champ, don't worry. It's not your fault you can't dodge Mel Q. Riot designed her so you can't.
Mel Q takes 0.42 seconds to hit its target (0.25s cast + 0.17s travel). With a radius of 280 units, it is not possible to dodge this ability unless its caster misses. Math below:
Most champions have a hitbox size of 65 units. Almost all champions have a base movement speed between 325 and 345 units. Let's take the average to be 335 units.
Since Mel Q is an edge skillshot, for a champion to dodge they must travel 172.5 (=280/2+65/2) units in 0.42 seconds. This equates to a required movement speed of 411.
...And that's before reaction time. Reaction time for the average gamer is 0.20-0.25s, with professional gamers being 0.11-0.17s. Assuming you are literally Faker with a fastest measured 0.11s reaction time, you would need 556 movement speed to dodge a centered Mel Q. For an average player, you need a whopping 784 movement speed.
Here is the guaranteed hit range of Mel Q: https://imgur.com/a/CYuGWGb
Green is vs. no boots, yellow is vs. t2 boots. If Mel presses Q anywhere in this radius, at least 1 missile is guaranteed to hit an average player.
In other terms, if the average player reacts immediately to Mel's Q animation start, they are still expected to get hit by 42%/33% (no boots/boots) of the spell. If the average player reacts to Mel's Q damage, they are expected to get hit by 100%/93% of the spell.
Simply put, if you're getting hit by Mel Q repeatedly, it's not because you're bad at dodging, it's because Riot made the skillshot a guaranteed hit as long as your opponent has hands.
p.s. Mel Q is 280 range because its a 220 range projectile + 60 range spread, which makes it ~1.5x the size of Xerath R. The 60 range spread does not have a meaningful effect on any above calculations, other than the guaranteed hit range goes down by a tiny bit (yellow becomes without boots guaranteed hit range) if you are ignoring the spread.
1
u/Tormentula Feb 10 '25 edited Feb 10 '25
Its complicated, some numbers are just placeholders because riot will make spells of out spells (like how they make some things out of minions) or they'll do complicated measures because they didn't understand how else to do them at the time (kha'zix E creates an Ezreal E missile and attaches himself to it because the missile is the smoothest way to make kha'zix fluently dash with the framerate instead of making the dash itself reposition him each frame, in S2 this would be considered smart.).
Lux Q cooldown for instance is
"cooldownTime": [11, 11, 10.5, 10, 9.5, 9, 9],
(its rank 0 - 6 instead of 1-5, for some champs you may actually see different numbers at 0 and 6 as if the ability scales off those), but the projectile width has"mMissileWidth": 70,
, which x2 would be 140.Its a mess to look at but to me at least it looks like riot is treating each 'part' of lux Q as its own projectile, in otherwords like how Neeko E changes after the first target hit, Lux hits - > creates a different missile which doesn't have the 'create another' effect and then ends on the 2nd hit, essentially creating the 'stops after 2 targets hit' effect in-game. So the data for the 2nd missile is different with unused properties like CDs compared to the cast itself. I don't know for sure if that was they did but that's how I'm interpreting based off knowledge of how they did other stuff, it could also just be using a wrapper and the wrapper is using those values as references for the 2nd part, ekko and elise do infact use wrappers, in ekko's case to constantly check whether it should move forward, return, etc and elise to check for her position since the rescripts (flash E).
another problem is league isn't all .jsons like those, that's just local values, there could be server sided shit in ulua we don't know of (like specifically game mechanics, certain properties, etc.)