Inform - Support - Patches

About Patches  

Compiler  
Library  

DM4 Errata  

Issue L61001

Plural containers listed wrong
Submitted by: Anson Turner     Appeared in: Library 6/10     Fixed in: Library 6/11
Problem

The list writing routines do not handle plural containers correctly (library 6/10). If you have two empty boxes, it might list:

  two boxes (which is closed)

Not only should it say "are closed", but it will lump empty containers together even if some are open and others aren't.

Solution

To fix the grammatical problem, find the first call to WriteAfterEntry() in VerbLibm.h:

  WriteAfterEntry(j,depth,stack_pointer);

and change it to:

  if (sizes_p->i > 1 && j hasnt pluralname)
  {   give j pluralname;
      WriteAfterEntry(j, depth, stack_pointer);
      give j ~pluralname;
  }
  else WriteAfterEntry(j,depth,stack_pointer);

To keep the object list from combining empty containers when some are open and others are not, modify the ListEqual() routine:

  [ ListEqual o1 o2;
    if (child(o1)~=0 && WillRecurs(o1)~=0) rfalse;
    if (child(o2)~=0 && WillRecurs(o2)~=0) rfalse;

    if (c_style & (FULLINV_BIT + PARTINV_BIT) ~= 0)
    {   if ((o1 hasnt worn && o2 has worn)
            || (o2 hasnt worn && o1 has worn)) rfalse;
        if ((o1 hasnt light && o2 has light)
            || (o2 hasnt light && o1 has light)) rfalse;

  ! BEGIN NEW CODE
        if (o1 has container)
        {    if (o2 hasnt container) rfalse;
             if ((o1 has open && o2 hasnt open)
                  || (o2 has open && o1 hasnt open))
                      rfalse;
        }
        else if (o2 has container) rfalse;
  ! END NEW CODE
    }

    return Identical(o1,o2);
  ];


Last updated 17 April 2013. This site is no longer supported; information may be out of date.
Maintained as a historical archive by the Interactive Fiction Technology Foundation. Copyright 1993-2018 IFTF, CC-BY-SA unless otherwise noted.
This page was originally managed by Roger Firth.