LR-99: Battle Engine v1

So I implemented this in certain chunks but not in others. The reason is that I plan on revisiting large sections of this code anyway and it doesn't make sense to fix something that is just going to be deleted.