Finalized implementation of per-room effects.

This is still rather messy as large portions of the engine had to be
rethinked, but it’s working great.