JSDSH currently uses two different class-trees (one for the crafty/graphical objects, one for "game" objects), although this (and everything marked with (*)) is subject to change in the future. The Crafty-Classes that are not defined by the library (included from jsds_crafty.js) are: Thing: A base class, providing the Canvas- and Color-Mechanisms and positioning. Creature: Creatures are everything tha may attack and move (that is, players and monsters) Additional to Thing, this class provides mechanisms for moving the element by mouse or arrow-keys, collision-control to prevent overlaps, and bindings. (*) Furthermore, every creture-object has a variable set to the associated game-object. The following additional functions and variables are defined in jsds_crafty.js: last_sel: contains a reference to the game-object associated to the last clicked object. end_init(): This function should be called as last after an adventure is loaded and initialized. Usually, when using arrow key control, crafty moves every EACH object where it is activated. end_init disables this control for each object of type "Creature", and sets a hook needed to work around a bug in crafty. reset_bug(): resets the problems with a bug in crafty that causes a key-down-event to be (constantly) triggered when the JSDSH-Tab is the one the browser falls back to after closing another tab. (Strange, I know…). If this happens, DON'T CLICK ANOTHER OBJECT! Open the JS-console and run reset_bug() manually. If you accidentily clicke ONE other object, it is still possible to get back to the old state Manually reset_bug(), de- and refocus the window, and run reset_bug() once more.