Poor Johnny got himself stuck in a tight spot.
A true leg-end. ;)
Tested. Logical.
(I used a very nice piece of logic about 2/3 of the way through to get me out of a sticky spot... not sure if it's essential, but it was satisfying!)
For all those new puzzle creators: I spent about 2-3 hours testing, editing, testing, editing and testing again to get this fully logical. I hope it was worth it! :)