I’m not quite sure what it is you’re looking for here in TADS 3 that it doesn’t already do. Consider the following test game:
me: Actor
location = startRoom
;
startRoom: Room 'Test Room'
;
+ redBall: Thing 'big red ball*balls' 'big red ball'
"It's big and red. "
;
+ harry: Person 'fat round harry/man' 'Harry'
isHim = true
isProperName = true
;
++ blueBall: Thing 'small blue ball*balls' 'small blue ball'
"It's small and blue. "
;
++ AskForTopic @blueBall
topicResponse()
{
blueBall.moveInto(me);
"Harry hands you the blue ball. ";
}
;
++ GiveTopic @redBall
topicResponse()
{
redBall.moveInto(getActor);
"You give Harry the red ball. ";
}
;
From this you can get the following transcript:
Test Room
You see a big red ball here.
Harry is standing here.
>take red
Taken.
>x my ball
It's big and red.
>x harry's ball
It's small and blue.
>x man's ball
It's small and blue.
>x fat man's ball
It's small and blue.
>ask harry for ball
Harry hands you the blue ball.
>give red ball to harry
You give Harry the red ball.
>x my ball
It's small and blue.
>x harry's ball
It's big and red.
So far as I can see this is what ShadowWolf says his extension does for Inform. In TADS 3 the Thing class also defines an owner property, which can designate another object (usually an Actor) as owner (rather than just the containing object).