s_missile
This gives four separate features, not enjoyed by the missile() proc, but it isn't as much of a replacement as it is a supplement. If you want speed, graphical-only projectiles, and ease of use, use missile(). Otherwise, you should look at this.
Note that this also includes a system for directing anything, not just projectiles, by including a walk_line() proc. This walk_line() proc mimics the walk_towards() (et al.) procs that come with BYOND. It uses the same syntax, too. The main difference about that proc is it makes anything travel on a straight line, not taking things into account.
If you're using this for its first and primary use, however, and that would be as a missile() supplement, then look no further! Well, actually, do look further, but only on this page. ;-)
It includes three different types of projectiles: graphical-only projectiles, existing reference projectiles, and object type projectiles.
Graphical-only projectiles are s_missiles provided with an icon, and if desired an icon state as well.
Existing reference projectiles allow you to move an existing object and fire it at the target. So if you wanted to customise data belonging to a bullet or something before you launch it, you could create it, edit its variables, and then s_missile() it to the target.
Finally, object type projectiles are simply object types (like /obj/spl_projectile) that you fire to a target. When you use this, it creates a new version of that object type and then shoots it to the target.
These are the two procs that this library adds for actual use:- s_missile(...)
- walk_line(...)
See the documentation at the top of the .dm file to understand more about the syntax.
And that's about all. Did I miss anything? =)