Huh, you asked me ingame? Sorry, i really didnt see that... when was it?
And yes, i did exactly that: Made an object and put all my rooms inside it. Sure, you have to put the rooms themselves inside, but any other object doesnt have to be put manually inside, just being in the rooms is enough. So once the basic building process is done, adding new objects to the area is easy. As for being a massive process, i think that in the end its more or less the same thing as having an object check all the objects inside its list.
As for the actual code, its on my grimoire ingame. Here it is:
@args #448:"heartbeat" this none this
@program #448:heartbeat
this:tick();
for totick in ($object_utils:all_contents(this))
if ($object_utils:has_verb(totick, "tick"))
totick:tick();
endif
endfor
.
@args #448:"tick" this none this
@program #448:tick
if (this.active != 0)
fork (this.tick_speed)
this:heartbeat();
endfork
randomaction = random(200);
if (randomaction == 1)
this.location:announce_all("The runes on the grimoire glow faintly.");
endif
if (randomaction == 2)
this.location:announce_all("Faint whispers echo around.");
endif
endif
.
There is some non-functional, decorational stuff in the grimoire's tick() that you can ignore, and it assumes that there is a active property on it set to 1 for it to be functional, and a tick_speed property for tick length in seconds (currently 5 for my area)