!7 cmodule GThingsLister > DynPrintLog { GModuleInfo gInfo; S ruleID = 'invcwuqfdjvuloyv; // take fulfillments from there S varName = "toes"; LS thingsNotYetSaid, thingsSaid = syncList(); start { if (thingsNotYetSaid == null) thingsNotYetSaid = asSyncList(gazelle_varFulfillments(varName, ruleID)); } S giveMeOne() { if (empty(thingsNotYetSaid)) { dm_gazelle_stopThisModule(); ret "I don't know any more body parts..."; } S s = removeRandom(thingsNotYetSaid); thingsSaid.add(s); ret s + "!"; } S answer(S s) { if "ok|cool|yes|good|next one please|yo|ack" ret giveMeOne(); null; } S initialAnswer(O... _) { S s = [[I'll list body parts for you. Say "done" or "stop" to quit.]] + "\n"; if (empty(thingsNotYetSaid)) { s += "Sadly, I don't know any body parts"; dm_gazelle_stopThisModule(); } else s += "Here is one: " + giveMeOne(); ret s; } }