game.title = "Demo game"; game.author = "Mike Buland"; game.version = 1; game.revision = 0; game.start = <>; global { command: "go" dir { if exists(situation.exits) then { if dir in situation.exits then { goto( situation.exits[dir] ); } } display('''You're not really sure how to do that...'''); } command: "exits" { if exists(situation.exits) then { out = "Obvious exits are: "; bFirst = true; for each dir : dest in situation.exits do { if bFirst then { bFirst = false; } else { out += ", "; } out += dir; } display( out ); } else { display("There are no obvious exits."); } } // You should always have a global exit, quit, escape, something for // dev-testing at least. command: "exit" { exit(); } } function square( x ) { return( x*x ); } function sillyDisplay( txt, extra ) { display("!~! " + txt + " !~!"); if extra then { display("And then some extra!"); } else { display("...no extra for you"); } } function myGoto( txt ) { display( txt ); goto( txt ); } function getThing() { display( situation.thing ); } situation <> { setup { goto( <> ); } enter { } } situation <> { setup { situation.exits = { 'south': <>, 'east': <> }; } enter { display('''You are in the dining room, it's very nice and warm. There is a big table and...stuff. Looks like the living room is south, and the kitchen is to the east.'''); } } situation <> { setup { situation.exits = { 'north': <> }; } enter { display('''Living room!'''); } } situation <> { setup { situation.exits = { 'west': <> }; } enter { display('''Kitchen!'''); } }