HUGE UPDATE-NOW PLAYABLE

Test it for bugs and stuff. It's not finished, but the rest should be
easy to implement. I'm sorry the code is so ugly and repetitive, I'm
just going for functionality, not effeciency right now