In my opinion, the limits on attributes and properties imposed by the
Z-machine are the main area in which Inform loses out to TADS (the other
main areas are dynamic memory allocation and multiple undo).
Any kind of serious commitment to the object-oriented style of
programming demands the storing of data with objects, but with only 48
attributes and 62 properties (and the limit of 64 bytes for static data
stored in a property), this is difficult to do successfully.
Here's some genuine (and utterly unlovely) code from "Christminster"
(with a couple of spoilers removed) showing one way to organise the
mapping from property names to properties:
Property mypropa 0;
Property mypropb 0;
Property mypropc 0;
Property mypropd 0;
Property myprope 0;
Property mypropf 0;
Property next_cup alias mypropa; ! Next cup in order (for trick)
Property cellarer alias mypropa; ! Names on wine storage bins
Property occupant alias mypropa; ! Name of person on is_door
Property just_visited alias mypropa;! Last place visited by is_followable
Property other_obj alias mypropa; ! Other object in pair (eg griffins)
Property near_to alias mypropa; ! Phone wire box is near to this
Property room alias mypropb; ! Name of room on is_door
Property follow_dir alias mypropb; ! Which way is_followable went
Property trickobject alias mypropc; ! Object involved in busker's trick
Property honorific alias mypropc; ! Honorific on is_door
Property trickcup alias mypropd; ! Which cup was first used in trick
Property trickcount alias myprope; ! No of different cups looked under
Property doesnt_obey alias mypropf; ! TalkableClass default message
-- Gareth Rees