I don't think I have very much to contribute for the architecture part, but I know people who work in games and animations and things where the types of things you're describing (characters, weather, properties) need to be changed by modular code in a larger environment, and they can talk at length about Finite State Machines (FSM), rather than OOP-style for this sort of thing.
So I don't know if you know about FSMs, or if they would be of help here. I'm sorry I can't understand enough to recommend anything myself, but I hope you can find a model that works for you :D
(I think it would mean you are storing the state of everything in the environment as data somewhere and all your modular code acts on that data, modifying the state - rather than speaking to other code)