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.