ID:178960
 
have an NPC mob say something once, and then have dialogue for after he has finished?
The following code is untested... but what it does is define a mob type known as NPC, gives it two variables for conversation. The first is a greeting it gives to people the first time a given person speaks with it. The second is a general purpose text that is displayed if anyone speaks to it a second or third time. Finally, we have a list variable, so the mob can remember who it's greeted before.

mob
npc
var
greeting = "Hello, my name is Enpeesee."
dialogue = "Have you any yams for my butter?"
list/hasgreeted = list()
verb
talk()
set src in oview() //Anyone who can see NPCs can talk to them.
if (hasgreeted.Find(usr)) //Have we met?
oview() << "[src] says to [usr], \"[dialogue]\"."
else
oview() << "[src] says to [usr], \"[greeting]\"."

If you wanted to make specific characters, you would define them under mob/npc, with just two lines of code.

mob
npc
broken_robot
greeting = "I am a broken robot."
dialogue = "Have you any robot glue?"
insane_frog
greeting = "I am an insane frog!"
dialogue = "If I'm so crazy, why are you talking to frogs?"