What are you calling scripts ? Is it the same as a procedure ?
define procedure <hints2>
...Your code...
end define
You can call this by :
command <hints about #@object#> {
if ( #object# = YourObject) then do <hints2> else { etc...
If you're talking about the command "script", then use it in a room definition. It's what happened when you entered this room.
Also, can I use an object without holding them?
I'm not sure but I think you can do this by overriding the verb "use" in a room definition :
define room <...>
command <use #@object1#; push #@object1#> if ( #object1# = button) then do <Washing>
Also, how can I change the 'look' description after something happens.
I think you can achieve this with a script :
script {
if flag <nolight> then msg <|n it's pitch black... etc... >
}
You can maybe also do this, based on the general description of a room :
description {
set string <indescription; $gettag(#quest.currentroom#;indescription)$>
msg <#indescription#|n|b|cl#quest.formatroom#|xb|cb|n>
msg <#quest.lookdesc#|n>
if ( #indescription# = ) then set string <indescription; You are in> else {
set numeric <len; $lengthof(#indescription#)$>
set numeric <len; %len%-1>
set string <indescription; $left(#indescription#;%len%)$>
}
' if not ( #quest.doorways.out# = ) then msg <You can go out to #quest.doorways.out#.>
' if not ( #quest.doorways.dirs# = ) then msg <You can go #quest.doorways.dirs#.>
' if not ( #quest.doorways.places# = ) then msg <You can go to #quest.doorways.places#.>
if not ( #quest.objects# = ) then msg <You can see #quest.formatobjects#.|n>
}
(it's my own edition of this description definition, but you can modify it for your purpose)