Originally written by codecypherz.

Updates (with permission) by Clorifex of Garland Tools.

With special thanks to Hezkezl, ZeroSorrowsong, Erin Longhurst and Rogueadyn.