// // // memory.t, a system for remembering memories and thoughts, based on // (and requiring) Suzanne Skinner's asktell.t // // Authored 1999 by dwmyers@my-deja.com. As the original asktell.t // was released as public domain, so is this modest contribution to // the original. // // Originally coded : 07/08/1999 // Modified : 07/11/1999 // // class memory : topic isclear = nil verDoRemember( actor ) = {} doRemember( actor ) = { " This memory is unclear to you. "; } unclearMsg = "You don't seem to recall that very clearly. " unknownMsg = "That doesn't seem to be something you recall. " ; class clearmemory : memory isclear = true doRemember( actor ) = { " This is a default memory. It is clear. "; } ; // // The only difference between the below and Suzanne's verbclasses // are: // (a) the disambiguating classes and the null answer classes. // (b) the fact a memory, once remembered, becomes a known topic. // class doMemoryVerb: deepverb validDoList(actor, prep, io) = (nil) validDo(actor, obj, seqno) = true doDefault(actor, prep, io) = (nil) // Allowing multiple objects can cause erroneous sdescs // (e.g. catchallNonMemory.sdesc) to get printed. rejectMultiDobj(prep) = { "You can't use multiple objects with that verb."; return true; } disambigDobj(actor, prep, io, verprop, wordlist, objlist, flaglist, numberWanted, isAmbiguous, silent) = { local i, len; local newlist = []; local unclearMemoriesFound = nil; len := length(objlist); for ( i :=1 ; i <= len; i++) { if (isclass(objlist[i], memory)) { objlist[i].known := true; if (objlist[i].isclear) newlist += objlist[i]; else unclearMemoriesFound := true; } } if (length(newlist) < 1) { if (unclearMemoriesFound) newlist += catchallFuzzyMemory; else newlist += catchallNonMemory; } return newlist; } ; catchallFuzzyMemory : clearmemory sdesc = "da Fuzzy memory " doRemember( actor ) = { memory.unclearMsg; } ; catchallNonMemory : clearmemory sdesc = " da Baaaaaaad memory " doRemember( actor ) = { memory.unknownMsg; } ; RememberVerb : doMemoryVerb verb = 'remember' 'recall' sdesc = "remember" doAction = 'Remember' ; // // Potential additions: a think verb, allowing the phrases // 'think about' 'meditate on'. Whether one wants it to respond // to topics or memories or some combination thereof is left as // an exercise to someone wishing to rationalize it in a game. //