Guys I never said thank you, your replies really helped.
I’ve added choosing a random NPC in the vicinity (included yourself) when the command doesn’t specify who you want to talk to (“talk about x”) and carrying out a greeting procedure before delving into the convo. Posting the code below if someone looks for similar answers, but it’s still very clunky xD
Setting stage and convo system plus non responses and greetings:
The elevator is a room. Here is a woman called Greta.
A man called the janitor is in the elevator. "A janitor is pottering around with a step ladder."
[Asking a RANDOM PERSON]
Asking vaguely about is an action applying to one topic. Understand “ask about [text]” or "talk about [text]" as asking vaguely about.
Carry out asking vaguely about:
let P be a random person enclosed by the location;
if P is greeted, say "(to [P])[line break]";
try asking P about the topic understood.
Instead of asking the player about something:
say "I mutter under my breath '[the topic understood], [the topic understood]...".
A person can be greeted. A person is usually not greeted.
Before asking someone about something:
if the noun is not greeted:
if the noun is a person listed in the Table of Greetings, say "[greeting entry][paragraph break]. . . Now that we are aquainted, I proceed with my original question about [the topic understood]:";
now the noun is greeted;
continue the action.
Table of Greetings
Janitor "Hello, Sir."
Greta "I approach the two figures by the bar. Greta looks up from her Martini glass, blue light from the bar bouncing of her face."
[Table of CONVERSATION TABLES]
A person has a table name called the Reply Table.
The Reply Table of Janitor is Table of Janitor Topics.
The Reply Table of Greta is Table of Greta Topics.
Instead of asking a person (called suspect) about something:
repeat through the Reply Table of the suspect:
if topic understood matches topic entry:
say "[reply entry][paragraph break]";
if the suspect is a person listed in Table of Non-responses, say "[Non-response entry][paragraph break]" instead.
Table of Non-responses
Janitor "Not now, pal."
Greta "What an interesting topic... *Takes a sip*"
Table of Janitor Topics
"weather" "'Really lad, talking about the weather on such a bland day', he shakes his head."
"love" "'One letter is allowed to stand for another very stars."
Table of Greta Topics
"weather" "'Not quite the furnace you came out of in CA.'"
"love" "'Love...something about the bottom of a bottle.'"
And here is the part where a talk mode is activated, prompting the player to finish his talk to command with a topic, without having to type out “talk to x about y” again (based on StJohnLimbo’s answer). Talk mode will stay activated until a different type of command is registered:
Talk mode is a truth state that varies.
Interlocutor is a person that varies.
Understand "talk to [something]", "speak to [something]", "interrogate [something]" as talking to. Talking to is an action applying to one visible thing.
Check talking to:
if the noun is not a person, say "[one of]Talk to me, [noun][or]You're my only friend, [noun][cycling]." instead.
Questioning is an action applying to one thing. Understand "question [something]" as questioning. Instead of questioning:
if the noun is a person, try talking to the noun instead;
otherwise say "I'm starting to question everything. Myself, the [noun], the universe."
Carry out talking to:
now interlocutor is noun;
now talk mode is true.
Report talking to:
say "[one of]But what do I want to talk about?[or]But what should I ask them about?[or]What would be a good thing to ask them about?[or]But what do I want to talk about?[at random]".
Topic-proposing is an action applying to one topic.
Understand "[text]" as topic-proposing when talk mode is true.
if the interlocutor is not greeted:
if the interlocutor is a person listed in the Table of Greetings, say "[greeting entry][paragraph break]. . . [one of]Now that we are aquainted, I proceed with my original question about [the topic understood]:[or]I turn to the subject of [the topic understood]:[or]I remember that I wanted to ask about [the topic understood]:[at random][paragraph break]";
now the interlocutor is greeted;
if the topic understood is not a topic listed in the Reply Table of the interlocutor:
if the interlocutor is a person listed in Table of Non-responses, say "[Non-response entry][paragraph break]" instead.
Carry out topic-proposing a topic listed in the Reply Table of the interlocutor:
say "[reply entry][line break]".
[This next rule notifies the player when he does something other than propose a topic when talking to someone.]
Before doing anything other than topic-proposing:
if talk mode is true:
say "(leaving the conversation)[line break]";
now talk mode is false.
I haven’t looked too much into extensions (besides basic screen effects). This process has definitely made me more comfortable with tables.