!7 sclass Converter > CruddieScript { S answer(S s) null { new Matches m; if "what is $x C in Fahrenheit" ret celsiusToFahrenheit(parseDouble($x)) + " Fahrenheit"; } } sclass ReproduceAnswers > CruddieScript { transient IF0 chatLog_userMessagesOnly; LS chatLog_userMessagesOnly() { ret chatLog_userMessagesOnly == null ? null : chatLog_userMessagesOnly.get(); } S answer(S s) { LS msgs = chatLog_userMessagesOnly(); MultiMap mm = pairsToCIMultiMap(overlappingPairs(msgs)); ret random(mm.get(s)); } } sclass RepeatAfterMe > CruddieScript { swappable void deleteMe() {} swappable S rewrite(S s) { ret s; } S answer(S s) { new Matches m; if "stop repeating..." { deleteMe(); ret "OK stopped"; } print("Repeating: " + s); ret rewrite(s); } } sclass RepeatAfterMeAndSwitch > RepeatAfterMe { S rewrite_base(S s) { ret switcheroo(s); } } sclass GoPublic > CruddieScript { S answer(S s) null { if "go public" ret "We're all public"; if "go private" ret "Can't"; if "are you public" ret "Yes"; } } /*sclass GoPublic > CruddieScript { swappable void makeBotPublic(bool b) {} swappable Bool isBotPublic() { null; } S answer(S s) null { if "go public" { makeBotPublic(true); ret "OK"; } if "go private" { makeBotPublic(false); ret "OK"; } if "are you public" ret trueFalseNull(isBotPublic(), "yes", "no", "not sure"); } }*/ cmodule SomeCruddieScripts { }