Restrict non-fire access

Does what it says, based on the spreadsheet. I based this off of #26, and this will probably be much easier to look at after that's merged. I wanted to separate it since it seemed like a different-enough tricky piece of code.