Naively, you can't have text resource tuples as a format string parameter.
I don't know about SCI0, which Larry 3 used, but I can confirm that SCI11 can in fact handle them. But unfortunately in this case the if else ruins it.
Y'see, in the Larry 3 code above, it directly returns either a description of the piece of wood or a blank string, right? Those are a single 16-bit pointer to some text, each. If the wood is there, we pass the one value on to Printf. If it's not there, we pass the other. Tuples are two values, which can't be returned like that.
The solution that comes to mind, if SCI0's Format kernel call is also able to do so, is to rewrite it like this:
(if (InRoom iWood)
(Printf "The granadilla is short and graceful, with a gray trunk, and delicately spreading branches.%s" " Beneath its outstretched boughs lies a beautiful piece of wood, probably cut by a native then forgotten.")
else
(Printf "The granadilla is short and graceful, with a gray trunk, and delicately spreading branches.%s" {})
)
Or in tuples:(if (InRoom iWood)
(Printf 210 0 210 1) ;or whatever number it'd assign to the wood part.
else
(Printf 210 0 {}) ;empty string is actually shorter than a text resource tuple here.
)
If I remember correctly, SC would notice the second line is identical to the first and reuse the 210-0 tuple.