action <SomeAction> {
set string <this; $thisobject$>
if (#(this):parameter1# <> NO_DATA) then {
'do stuff
}
else {
'show error - parameter1 was supposed to be passed
}
property <#this#; parameter1 = NO_DATA>
}
property <SomeObject; parameter1 = SOME_DATA>
doaction <SomeObject; SomeAction>
doaction <SomeObject; SomeAction(SOME_DATA)>
action <SomeAction> {
if ($numberparameters$ > 0) then {
set string <p1; $parameter(1)$>
'do stuff
}
else {
'show error - parameter1 was supposed to be passed
}
}
(I wrote an ADRIFT to TADS converter that completely replaces the library.)
You can ditch the TADS standard library if you want.
For example, one of the examples for Inform shows how to modify disambiguation so that if the player tries eating something, the parser will prefer an edible object to a non-edible one...
define game <SomeGame>
ambiguous {
'process AmbiguousItems array here
$disambiguate(AmbiguousItems)$
}
end defineQuest treats directions as very special things. Other languages treat them as ordinary objects. For example, in I6, if I wanted to have a Discworld scene, I could replace "north, south, east, west" with "rimwards, hubwards, turnwise, widdershins" for that portion.