Weird spacing

You never said that the trunk was supposed to be portable in your last post about this (Print room description details for parts).

There’s (what looks to me like) a small issue with the way that WriteAfterEntry() is constructed: It doesn’t fully defer to an author-supplied for printing inventory details of... rule. You need an I6 inclusion to address it, so hopefully you’re still using 6M62.

Include (-

! ==== ==== ==== ==== ==== ==== ==== ==== ==== ====
! ListWriter.i6t: Write After Entry (modified)
! ==== ==== ==== ==== ==== ==== ==== ==== ==== ====

[ WriteAfterEntry o depth
    p recurse_flag parenth_flag eldest_child child_count combo act_flag; ! MODIFIED

    inventory_stage = 2;
    if (c_style & PARTINV_BIT) {
        BeginActivity(PRINTING_ROOM_DESC_DETAILS_ACT, o);
        if (ForActivity(PRINTING_ROOM_DESC_DETAILS_ACT, o) == false) {
		    combo = 0;
		    if (o has light && location hasnt light) combo=combo+1;
		    if (o has container && o hasnt open)     combo=combo+2;
		    if ((o has container && (o has open || o has transparent))
			    && (child(o)==0))                    combo=combo+4;
		    if (combo) LIST_WRITER_INTERNAL_RM('A'); ! space and open bracket
		    switch (combo) {
			    1: LIST_WRITER_INTERNAL_RM('D', o);
			    2: LIST_WRITER_INTERNAL_RM('E', o);
			    3: LIST_WRITER_INTERNAL_RM('H', o);
			    4: LIST_WRITER_INTERNAL_RM('F', o);
			    5: LIST_WRITER_INTERNAL_RM('I', o);
			    6: LIST_WRITER_INTERNAL_RM('G', o);
			    7: LIST_WRITER_INTERNAL_RM('J', o);
		    }
		    if (combo) LIST_WRITER_INTERNAL_RM('B'); ! close bracket
	    }
        EndActivity(PRINTING_ROOM_DESC_DETAILS_ACT, o);
    }   ! end of PARTINV_BIT processing

    if (c_style & FULLINV_BIT) {
        BeginActivity(PRINTING_INVENTORY_DETAILS_ACT, o);
        if ((act_flag = ForActivity(PRINTING_INVENTORY_DETAILS_ACT, o)) == false) { ! MODIFIED
		    if (o has light && o has worn) { LIST_WRITER_INTERNAL_RM('A'); LIST_WRITER_INTERNAL_RM('K', o);  parenth_flag = true; }
		    else {
			    if (o has light)           { LIST_WRITER_INTERNAL_RM('A'); LIST_WRITER_INTERNAL_RM('D', o);  parenth_flag = true; }
			    if (o has worn)            { LIST_WRITER_INTERNAL_RM('A'); LIST_WRITER_INTERNAL_RM('L', o); parenth_flag = true; }
		    }
    
		    if (o has container)
			    if (o has openable) {
				    if (parenth_flag) {
					    #Ifdef SERIAL_COMMA; print ","; #Endif;
					    LIST_WRITER_INTERNAL_RM('C');
				    } else            LIST_WRITER_INTERNAL_RM('A', o);
				    if (o has open)
					    if (child(o)) LIST_WRITER_INTERNAL_RM('M', o);
					    else          LIST_WRITER_INTERNAL_RM('N', o);
				    else
					    if (o has lockable && o has locked) LIST_WRITER_INTERNAL_RM('P', o);
					    else                                LIST_WRITER_INTERNAL_RM('O', o);
				    parenth_flag = true;
			    }
			    else
				    if (child(o)==0 && o has transparent)
					    if (parenth_flag) { LIST_WRITER_INTERNAL_RM('C'); LIST_WRITER_INTERNAL_RM('F'); }
					    else              { LIST_WRITER_INTERNAL_RM('A'); LIST_WRITER_INTERNAL_RM('F'); LIST_WRITER_INTERNAL_RM('B'); }
    
		    if (parenth_flag) LIST_WRITER_INTERNAL_RM('B');
	    }
        EndActivity(PRINTING_INVENTORY_DETAILS_ACT, o);
    }   ! end of FULLINV_BIT processing

    if (act_flag) rtrue;  ! ADDED

    child_count = 0;
    eldest_child = nothing;
    objectloop (p in o)
	    if ((c_style & CONCEAL_BIT == 0) || (ConcealedFromLists(p) == false))
		    if (p has list_filter_permits) {
			    child_count++;
			    if (eldest_child == nothing) eldest_child = p;
		    }

    if (child_count && (c_style & ALWAYS_BIT)) {
        if (c_style & ENGLISH_BIT) { print " "; LIST_WRITER_INTERNAL_RM('Q', o); print " "; }
        recurse_flag = true;
    }
    
    if (child_count && (c_style & RECURSE_BIT)) {
        if (o has supporter) {
            if (c_style & ENGLISH_BIT) {
                if (c_style & TERSE_BIT) {
                	LIST_WRITER_INTERNAL_RM('A', o);
                	LIST_WRITER_INTERNAL_RM('R', o);
                } else LIST_WRITER_INTERNAL_RM('S', o);
            }
            recurse_flag = true;
        }
        if (o has container && (o has open || o has transparent)) {
            if (c_style & ENGLISH_BIT) {
                if (c_style & TERSE_BIT) {
                	LIST_WRITER_INTERNAL_RM('A', o);
                	LIST_WRITER_INTERNAL_RM('T', o);
                } else LIST_WRITER_INTERNAL_RM('U', o);
            }
            recurse_flag = true;
        }
    }

    if (recurse_flag && (c_style & ENGLISH_BIT)) {
    	SetLWI(child_count, -1, eldest_child);
    	LIST_WRITER_INTERNAL_RM('V', o); print " ";
    }

    if (c_style & NEWLINE_BIT) new_line;

    if (recurse_flag) {
        o = child(o);
        @push lt_value; @push listing_together; @push listing_size;
        @push c_iterator;
        c_iterator = ObjectTreeIterator;
        lt_value = EMPTY_TEXT_VALUE; listing_together = 0; listing_size = 0;
        WriteListR(o, depth+1, true);
        @pull c_iterator;
        @pull listing_size; @pull listing_together; @pull lt_value;
        if (c_style & TERSE_BIT) LIST_WRITER_INTERNAL_RM('B');
    }
];

-) instead of "Write After Entry" in "ListWriter.i6t".

Also, there’s no need to duplicate the work in your own rule, so:

Rule for printing inventory details for the black trunk:	
    write after entry for the black trunk's inside.

Note that this is just a quick hotwire to address the issue you brought up. There may be unwanted side effects; I haven’t really studied this subsystem. Maybe someone else will chime in.

2 Likes