Inform: No Darkness

Many games don't use darkness -- or at least the standard library mechanism for darkness. However, the library defaults all areas to dark, unless some object provides light.

The naive way to make the entire game non-dark is to give each room the light attribute. This, of course, is a nuisance. A more clever way is to give the player light. However, this can still lead to bugs if you use ChangePlayer().

Here's an even cleverer method:

  
Replace OffersLight;

[ OffersLight obj;
  if (obj == nothing)
    rfalse;
  else
    rtrue;
];

(As usual for Replaced library routines, you should put the Replace statement before the "Parser" and "Verblib" library files are included, and the new OffersLight() definition afterward.)

The OffersLight() routine determines whether a room (or other enterable) is lit. The version in the library searches the room for a light source. This function replaces that search with a trivial test: everything in the game offers light! This is not only simpler, but faster.

(Okay, not a lot faster. But it doesn't hurt.)


More Inform Tricks