I have a couple of ideas, not extensively tested.
- Introduce some logic that makes topics available only on certain conditions.
#lab
(room *)
(name *) Lab
(look *) A testing lab.
#earth
(name *)
earth
(proper topic *)
#wind
(name *)
wind
(proper topic *)
#fire
(name *)
fire
(proper topic *)
(#earth is discussed)
#fork
(item *)
(name *)
fork
(* is #in #lab)
#reggie
(male *)
(animate *)
(name *) Reg
(proper *)
(dict *) Reggie
(descr *) A knowledgeable guy.
(appearance *) Reggie is standing around waiting to answer questions.
(* is #in #lab)
(perform [talk to * about #earth])
"What do you know about earth, Reggie?"
(par)
"I know nothing about that, but I do know about fire!"
(now)(#earth is discussed)
(perform [talk to * about #fire])
"What do you know about fire, then, Reggie?"
(par)
"I know a great deal, but I am not going to tell you about it."
(perform [talk to * about #wind])
"So, Reggie," you say, "wind?"
(par)
"Wind is blowing air!"
(perform [talk to * about #fork])
"What are your opinions on this fine fork?"
(par)
"I have no view on the matter!"
(current player #nameless)
(#nameless is #in #lab)
And then:
Lab
A testing lab.
Reggie is standing around waiting to answer questions.
> ask reggie about
Did you want to ask Reg about earth or wind?
> wind
"So, Reggie," you say, "wind?"
"Wind is blowing air!"
> ask reggie about
Did you want to ask Reg about earth or wind?
> earth
"What do you know about earth, Reggie?"
"I know nothing about that, but I do know about fire!"
> ask reggie about
Did you want to ask Reg about earth, fire, or wind?
(Incidentally, I find it odd that the fork (an object that can be discussed) never makes it to the list, but that’s a different issue.)
- Define a new command to pick up unspecific asking.
(grammar [ask [animate] about] for [lawnmower $])
(refuse [lawnmower $Someone])
You need to be more specific about what you want to ask (The $Someone) about.
(unlikely [ask $ about $])
Lab
A testing lab.
Reggie is standing around waiting to answer questions.
> ask reggie about
You need to be more specific about what you want to ask Reg about.
> ask reggie about earth
"What do you know about earth, Reggie?"
"I know nothing about that, but I do know about fire!"
You will need to play around more with both ideas. The first has some side effects which may or may not be desirable (e.g., when a topic is not available it produces “no reply”). The second may have side-effects that I haven’t anticipated – and I think you would also need to add unlikely rules to deal with synonyms for ask about
, such as talk to about
.
ETA: The post immediately above this was added while I was writing this and does the same thing as my first idea, but better.