Inform - Support - Patches

About Patches  

Compiler  
Library  

DM4 Errata  

Issue L61118     [previous patch]

'thedark.initial' is never called
Submitted by: Nathan Summers     Appeared in: Library 6/11 or before     Fixed in: -
Problem

The library thoughtfully provides thedark.initial, but it is never called unless you are diabolical enough to make thedark contained by some location, which I'm sure is not what it was meant for. The DM is a bit contradictory about the purpose of thedark.initial, but the functionality that makes the most sense is that it is called at the transition from lighted to darkened. This makes up a gap in functionality: NewRoom() is called on light-to-light and dark-to-light; DarkToDark() is called on dark-to-dark, but absolutely nothing is called on light-to-dark.

Solution

Move line 1962 of verblibm.h down two lines as shown:

  [ NoteArrival descin;
      if (location ~= lastdesc) {
          if (location.initial ~= 0) PrintOrRun(location, initial);
          if (location == thedark) { lastdesc = thedark; return; }   ! This line moved
          descin = location;
          NewRoom();
          lastdesc = descin;
      }
  ];


Last updated 2 May 2008. The librarian in charge of this page is Roger Firth. Please email any comments, suggestions or corrections to roger@firthworks.com.