Not that we're making Ashe's Volley do that, mind you. It's just something I threw together in a couple hours while on prescription painkillers to show what can be done without much effort. Or ability to focus. Or pain.

To give you an idea of what we were dealing with, let me show you a diagram that represents the per-frame execution flow for missiles in the former system:

(I'd let you zoom & enhance but just like in electronic music - the words don't matter)

While not as complex as real missile guidance systems , this complicated flow makes changes risky just by its nature. Briefly, what we're looking at here is a hierarchy of missile types, each expressing a different set of missiles. Functionality from these different types is sometimes shared, sometimes duplicated—and frequently confusing. This diagram breaks out those missile types horizontally, with similar functionality color coded. For example, if you wanted to know how missiles handle collision tracking, you'd have to examine all of the pink code—conveniently located all over the place.

The top box in the diagram comprises what we call "base missile," the root class of the hierarchy. These are the simplest missiles: they fly towards a position or a unit and activate only when that movement is done. Auto-attacks and turret shots are in this set, as are the missiles for abilities like Corki's Q and Ziggs' R. Their flow is quite straight-forward in that they track their target, then evaluate where the missile should move, then see if they've hit the target. Easy-peasey; lemon-squeezy.

The next big box in the diagram comprises "line missiles," encompassing most of what players would call a "skill shot" missile - things like Lux's Light Binding, Ashe's Volley, or almost everything Ezreal does. There are some surprises in this category as well. Like Yasuo's windwall: it's a line missile. The irony should hurt a little.

Line missiles have significantly more complicated behavior than base missiles. For example, they can hit things as they travel, return to their caster (like Draven’s ult), or hug the ground (like Zyra’s Grasping Roots). Lumping all of those different behaviors into one entity is enough sin straight out the gate, but line missiles are further compounded by being a child of base missiles. As such, line missiles inherit all of base missile's functionality by default, but use it differently. This put us in the frustrating situation where changes to base missiles brought the risk of breaking line missiles in complicated ways.

The small groups at the bottom are for our three circle missiles: Diana's Q and W, and Ahri's W. They behave very similarly to line missiles, but travel in a circle. They derive from base missile and bear a striking resemblance to line missiles in everything other than movement. In the course of making this diagram I found some bug fixes in line missile that hadn't made their way over to circle. Duplicating code duplicates its bugs too; such is the pain brought by the copy-pasta demon.

A viable alternative for visualizing the flow of this missile system