Next: *49 Need to test: *40 Persistence. *30 Box entrances and 'drop/put x in/on y' command. Bugs: Revisions: *19 Generalized exterior/interior facets Sub-todo: * Make api.Terior with intersection of Interior and Exterior * upward access: interior.getOuterInterior() ? *24 Revise Description format to be more regular - Replace 'noun' and 'verb' tags with general language-specific hook - Do we want a 'quote text' tag? *41 Make thing's exterior into a behavior *42 (after 41) Make rooms into things *48 makeInspectorReference should be fetched via the detail guard - this removes duplicate loading and dependence on the detail code using a prearranged kind of reference, and supports private shared references between the inspector and the references, if desired. Missing features: *44 UI for adding behaviors. *45 Removing behaviors, and UI for it. *6 Parser: Object-defined commands - Redefine @ to be 'use local commands only'? - Bruce says: Don't forget the NPCs. Separate player UI and inter-object interaction. - For a nonunambiguous match, ask the location and each object involved (via thing facets) for command implementations (which should be stateless and/or PassByCopy?). If there is only one answer (collapsing same refs) then use that, otherwise ask the user. - What to do about non-prompt response? - Eventually provide for user choosing to permanently install command-implementation packages (mobile code? SturdyRefs?) which have matching patterns and such-that-equivalent match-stage-rejectors. *36 Doors: Open/closed/locked state. - We have the states, still need to implement open/close operations. *46 Paired doors (a->b b->a) *22 More interesting NPCs *23 Commands for interaction with container contents - 'put * in *'/'take * from *' *10 UI for making: keys, doors - to retain complete brand pair in key-only or door-only, give privileged facets optSealer/optUnsealer properties *11 Spoof detection for events - Display thing names where the thing contributed the message text differently. - Display separate attributions iff the message was not made by any of the participants. - Restrict characters such as \n, or give other cues as to line breaks. *14 (after *6?) 'give' command *47 Command for putting things in containers. Potential features/revisions: *12 If no pet name matching argument, ask user if matching nickname is OK, in which case atomically continue the command and define the pet name - Currently, the recognizer has no ability to do this. *13 Summoners (see below) Waiting on E updates: *15 (faster E) Automatic checkpoints *21 (EIO) Telnet character control Currently unused code: util.addComponent util.promised__quasiParser util.name.formatName --- --- Mac OS X JVM resource incantations: rune -J-Xmx500m -J-XX:ThreadStackSize=10240 --- --- Comment keywords: FIXME fixme NOTE --- --- Reference diagram for containment: interior<-->contentInfo------------------->facetForLocation----\ ^ ^v ^v v \----facetForContent<-------------------locationInfo<-->exterior --- --- Summoners - for sturdy presence/holding (containment relationships surviving partition): contentInfo asks its held exterior for a summoner, which is a SturdyRef to an object having a moveInto method On unserialization, or when a contentInfo's exterior is accessed, if the ref is broken, the summoner is invoked. --- --- def settled { to __printOn(out :TextWriter) :void { out.print("settled") } to coerce(value, optEjector) :any { if (Ref.isSettled(value)) {value} else {throw.eject(optEjector, "must be settled")} } }