A tricky problem. The approach that springs to mind first is this:
* Have a global variable called `light_state' that is 0 in darkness, 1
in dim light and 2 in full light.
* Give your burning match the `light' attribute as usual.
* Write room descriptions that look at `light_state' to decide whether
or not to print some sentences.
* You can make an object appear in a room description in full light
and not in dim light using `describe' code like:
Object Painting "painting"
has static
with describe [;
if (light_state == 1) rtrue;
"^A painting hangs on the south wall.";
],
...
* Write a TimePasses() routine that sets the variable `light_state'.
It can look at the Inform global variable `lightflag', but it will
also have to do some work to decide what kind of light source is
present. Look at the routines `OffersLight' and `HasLightSource' in
the library file parser.h for a guide as to how to do this kind of
thing.
Post here again if you still have trouble.
-- Gareth Rees