'// MiniScript (https://miniscript.org) example file,' Comment.Single '\n' Text '// adapted from: http://rosettacode.org/wiki/RCRPG/MiniScript' Comment.Single '\n' Text '\n' Text 'pos' Name.Variable ' ' Text '=' Operator ' ' Text '[' Punctuation '0' Literal.Number ',' Punctuation '0' Literal.Number ',' Punctuation '0' Literal.Number ']' Punctuation '\n' Text 'goal' Name.Variable ' ' Text '=' Operator ' ' Text '[' Punctuation 'floor' Name.Builtin '(' Punctuation 'rnd' Name.Builtin '*' Operator '10' Literal.Number ')' Punctuation ',' Punctuation ' ' Text 'floor' Name.Builtin '(' Punctuation 'rnd' Name.Builtin '*' Operator '10' Literal.Number ')' Punctuation ',' Punctuation ' ' Text 'floor' Name.Builtin '(' Punctuation '3' Literal.Number '+' Operator 'rnd' Name.Builtin '*' Operator '5' Literal.Number ')' Punctuation ']' Punctuation '\n' Text ' ' Text '\n' Text 'dir' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '}' Punctuation '\t\t\t' Text '// key: direction name; value: [dx, dy, dz]' Comment.Single '\n' Text 'dirAbbrevs' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '}' Punctuation '\t\t' Text '// key: direction abbrevation; value: full name' Comment.Single '\n' Text 'dir' Name.Variable '.' Operator 'up' Name.Variable ' ' Text '=' Operator ' ' Text '[' Punctuation '0' Literal.Number ',' Punctuation '0' Literal.Number ',' Punctuation '1' Literal.Number ']' Punctuation '\n' Text 'dir' Name.Variable '.' Operator 'down' Name.Variable ' ' Text '=' Operator ' ' Text '[' Punctuation '0' Literal.Number ',' Punctuation '0' Literal.Number ',' Punctuation '-' Operator '1' Literal.Number ']' Punctuation '\n' Text 'dir' Name.Variable '.' Operator 'north' Name.Variable ' ' Text '=' Operator ' ' Text '[' Punctuation '0' Literal.Number ',' Punctuation '1' Literal.Number ',' Punctuation '0' Literal.Number ']' Punctuation '\n' Text 'dir' Name.Variable '.' Operator 'south' Name.Variable ' ' Text '=' Operator ' ' Text '[' Punctuation '0' Literal.Number ',' Punctuation '-' Operator '1' Literal.Number ',' Punctuation '0' Literal.Number ']' Punctuation '\n' Text 'dir' Name.Variable '.' Operator 'east' Name.Variable ' ' Text '=' Operator ' ' Text '[' Punctuation '1' Literal.Number ',' Punctuation '0' Literal.Number ',' Punctuation '0' Literal.Number ']' Punctuation '\n' Text 'dir' Name.Variable '.' Operator 'west' Name.Variable ' ' Text '=' Operator ' ' Text '[' Punctuation '-' Operator '1' Literal.Number ',' Punctuation '0' Literal.Number ',' Punctuation '0' Literal.Number ']' Punctuation '\n' Text 'for' Keyword ' ' Text 'k' Name.Variable ' ' Text 'in' Keyword ' ' Text 'dir' Name.Variable '.' Operator 'indexes' Name.Builtin '\n' Text '\t' Text 'dirAbbrevs' Name.Variable '[' Punctuation 'k' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation ']' Punctuation ' ' Text '=' Operator ' ' Text 'k' Name.Variable '\n' Text 'end' Keyword ' ' Text 'for' Keyword '\n' Text 'inverseDir' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '"' Literal.String 'up' Literal.String '"' Literal.String ':' Operator '"' Literal.String 'down' Literal.String '"' Literal.String ',' Punctuation ' ' Text '"' Literal.String 'down' Literal.String '"' Literal.String ':' Operator '"' Literal.String 'up' Literal.String '"' Literal.String ',' Punctuation ' ' Text '"' Literal.String 'east' Literal.String '"' Literal.String ':' Operator '"' Literal.String 'west' Literal.String '"' Literal.String ',' Punctuation ' ' Text '"' Literal.String 'west' Literal.String '"' Literal.String ':' Operator '"' Literal.String 'east' Literal.String '"' Literal.String ',' Punctuation ' ' Text '"' Literal.String 'north' Literal.String '"' Literal.String ':' Operator '"' Literal.String 'south' Literal.String '"' Literal.String ',' Punctuation ' ' Text '"' Literal.String 'south' Literal.String '"' Literal.String ':' Operator '"' Literal.String 'north' Literal.String '"' Literal.String '}' Punctuation '\n' Text ' ' Text '\n' Text 'descNum' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'count' Name.Variable ',' Punctuation ' ' Text 'noun' Name.Variable ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'count' Name.Variable ' ' Text '==' Operator ' ' Text '1' Literal.Number ' ' Text 'then' Keyword ' ' Text 'return' Keyword ' ' Text '"' Literal.String 'a ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'noun' Name.Variable '\n' Text '\t' Text 'return' Keyword ' ' Text 'str' Name.Builtin '(' Punctuation 'count' Name.Variable ')' Punctuation ' ' Text '+' Operator ' ' Text '"' Literal.String ' ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'noun' Name.Variable ' ' Text '+' Operator ' ' Text '"' Literal.String 's' Literal.String '"' Literal.String '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text ' ' Text '\n' Text 'descList' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'lst' Name.Variable ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'lst' Name.Variable '.' Operator 'len' Name.Builtin ' ' Text '==' Operator ' ' Text '0' Literal.Number ' ' Text 'then' Keyword ' ' Text 'return' Keyword ' ' Text '"' Literal.String '"' Literal.String '\n' Text '\t' Text 'if' Keyword ' ' Text 'lst' Name.Variable '.' Operator 'len' Name.Builtin ' ' Text '==' Operator ' ' Text '1' Literal.Number ' ' Text 'then' Keyword ' ' Text 'return' Keyword ' ' Text 'lst' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'lst' Name.Variable '.' Operator 'len' Name.Builtin ' ' Text '==' Operator ' ' Text '2' Literal.Number ' ' Text 'then' Keyword ' ' Text 'return' Keyword ' ' Text 'lst' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation ' ' Text '+' Operator ' ' Text '"' Literal.String ' and ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'lst' Name.Variable '[' Punctuation '1' Literal.Number ']' Punctuation '\n' Text '\t' Text 'return' Keyword ' ' Text 'lst' Name.Variable '[' Punctuation ':' Operator '-' Operator '1' Literal.Number ']' Punctuation '.' Operator 'join' Name.Builtin '(' Punctuation '"' Literal.String ', ' Literal.String '"' Literal.String ')' Punctuation ' ' Text '+' Operator ' ' Text '"' Literal.String ', and ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'lst' Name.Variable '[' Punctuation '-' Operator '1' Literal.Number ']' Punctuation '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text ' ' Text '\n' Text 'pickAny' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'options' Name.Variable ')' Punctuation '\n' Text '\t' Text 'lst' Name.Variable ' ' Text '=' Operator ' ' Text 'options' Name.Variable '.' Operator 'split' Name.Builtin '(' Punctuation '"' Literal.String ';' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t' Text 'return' Keyword ' ' Text 'lst' Name.Variable '[' Punctuation 'rnd' Name.Builtin ' ' Text '*' Operator ' ' Text 'lst' Name.Variable '.' Operator 'len' Name.Builtin ']' Punctuation '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text ' ' Text '\n' Text 'Contents' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '}' Punctuation '\n' Text 'Contents' Name.Variable '.' Operator 'ladders' Name.Variable ' ' Text '=' Operator ' ' Text '0' Literal.Number '\n' Text 'Contents' Name.Variable '.' Operator 'gold' Name.Variable ' ' Text '=' Operator ' ' Text '0' Literal.Number '\n' Text 'Contents' Name.Variable '.' Operator 'hammers' Name.Variable ' ' Text '=' Operator ' ' Text '0' Literal.Number ' ' Text '// (note: a "sledge" is a sled or sleigh, not a sledgehammer) ' Comment.Single '\n' Text 'Contents' Name.Variable '.' Operator 'desc' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'prefix' Name.Variable ',' Punctuation ' ' Text 'postfix' Name.Variable '=' Operator '"' Literal.String '.' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t' Text 's' Name.Variable ' ' Text '=' Operator ' ' Text '[' Punctuation ']' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'self' Name.Builtin.Pseudo '.' Operator 'ladders' Name.Variable ' ' Text '>' Operator ' ' Text '0' Literal.Number ' ' Text 'then' Keyword ' ' Text 's' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'descNum' Name.Variable '(' Punctuation 'self' Name.Builtin.Pseudo '.' Operator 'ladders' Name.Variable ',' Punctuation ' ' Text '"' Literal.String 'ladder' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'self' Name.Builtin.Pseudo '.' Operator 'hammers' Name.Variable ' ' Text '>' Operator ' ' Text '0' Literal.Number ' ' Text 'then' Keyword ' ' Text 's' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'descNum' Name.Variable '(' Punctuation 'self' Name.Builtin.Pseudo '.' Operator 'hammers' Name.Variable ',' Punctuation ' ' Text '"' Literal.String 'sledgehammer' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'self' Name.Builtin.Pseudo '.' Operator 'gold' Name.Variable ' ' Text '>' Operator ' ' Text '0' Literal.Number ' ' Text 'then' Keyword ' ' Text 's' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'descNum' Name.Variable '(' Punctuation 'self' Name.Builtin.Pseudo '.' Operator 'gold' Name.Variable ',' Punctuation ' ' Text '"' Literal.String 'gold coin' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'not' Operator.Word ' ' Text 's' Name.Variable ' ' Text 'then' Keyword ' ' Text 'return' Keyword ' ' Text 'prefix' Name.Variable ' ' Text '+' Operator ' ' Text '"' Literal.String ' nothing' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'postfix' Name.Variable '\n' Text '\t' Text 'return' Keyword ' ' Text 'prefix' Name.Variable ' ' Text '+' Operator ' ' Text '"' Literal.String ' ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'descList' Name.Variable '(' Punctuation 's' Name.Variable ')' Punctuation ' ' Text '+' Operator ' ' Text 'postfix' Name.Variable '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'Contents' Name.Variable '.' Operator 'initRandom' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation ')' Punctuation '\n' Text '\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'ladders' Name.Variable ' ' Text '=' Operator ' ' Text '(' Punctuation 'rnd' Name.Builtin ' ' Text '<' Operator ' ' Text '0.3' Literal.Number ')' Punctuation '\n' Text '\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'gold' Name.Variable ' ' Text '=' Operator ' ' Text 'ceil' Name.Builtin '(' Punctuation 'rnd' Name.Builtin ' ' Text '*' Operator ' ' Text '3' Literal.Number ')' Punctuation ' ' Text '*' Operator ' ' Text '(' Punctuation 'rnd' Name.Builtin ' ' Text '<' Operator ' ' Text '0.1' Literal.Number ')' Punctuation '\n' Text '\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'hammers' Name.Variable ' ' Text '=' Operator ' ' Text '(' Punctuation 'rnd' Name.Builtin ' ' Text '<' Operator ' ' Text '0.02' Literal.Number ')' Punctuation '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'Contents' Name.Variable '.' Operator 'propName' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'obj' Name.Variable ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'obj' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'ladder' Literal.String '"' Literal.String ' ' Text 'or' Operator.Word ' ' Text 'obj' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'ladders' Literal.String '"' Literal.String ' ' Text 'then' Keyword ' ' Text 'return' Keyword ' ' Text '"' Literal.String 'ladders' Literal.String '"' Literal.String '\n' Text '\t' Text 'if' Keyword ' ' Text 'obj' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'gold' Literal.String '"' Literal.String ' ' Text 'or' Operator.Word ' ' Text 'obj' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'coin' Literal.String '"' Literal.String ' ' Text 'or' Operator.Word ' ' Text 'obj' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'coins' Literal.String '"' Literal.String ' ' Text 'then' Keyword ' ' Text 'return' Keyword ' ' Text '"' Literal.String 'gold' Literal.String '"' Literal.String '\n' Text '\t' Text 'if' Keyword ' ' Text 'obj' Name.Variable '[' Punctuation ':' Operator '6' Literal.Number ']' Punctuation ' ' Text '==' Operator ' ' Text '"' Literal.String 'hammer' Literal.String '"' Literal.String ' ' Text 'or' Operator.Word ' ' Text 'obj' Name.Variable '[' Punctuation ':' Operator '6' Literal.Number ']' Punctuation ' ' Text '==' Operator ' ' Text '"' Literal.String 'sledge' Literal.String '"' Literal.String ' ' Text 'then' Keyword ' ' Text 'return' Keyword ' ' Text '"' Literal.String 'hammers' Literal.String '"' Literal.String '\n' Text '\t' Text 'return' Keyword ' ' Text '"' Literal.String '"' Literal.String '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'Contents' Name.Variable '.' Operator 'hasAny' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'obj' Name.Variable ')' Punctuation '\n' Text '\t' Text 'pname' Name.Variable ' ' Text '=' Operator ' ' Text 'Contents' Name.Variable '.' Operator 'propName' Name.Variable '(' Punctuation 'obj' Name.Variable ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'pname' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String '"' Literal.String ' ' Text 'then' Keyword ' ' Text 'return' Keyword ' ' Text 'false' Keyword.Constant '\n' Text '\t' Text 'return' Keyword ' ' Text 'self' Name.Builtin.Pseudo '[' Punctuation 'pname' Name.Variable ']' Punctuation ' ' Text '>' Operator ' ' Text '0' Literal.Number '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'Contents' Name.Variable '.' Operator 'withdraw' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'obj' Name.Variable ')' Punctuation '\n' Text '\t' Text 'result' Name.Variable ' ' Text '=' Operator ' ' Text 'new' Operator.Word ' ' Text 'Contents' Name.Variable '\n' Text '\t' Text 'if' Keyword ' ' Text 'obj' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'all' Literal.String '"' Literal.String ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'result' Name.Variable '.' Operator 'ladders' Name.Variable ' ' Text '=' Operator ' ' Text 'self' Name.Builtin.Pseudo '.' Operator 'ladders' Name.Variable '\n' Text '\t\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'ladders' Name.Variable ' ' Text '=' Operator ' ' Text '0' Literal.Number '\n' Text '\t\t' Text 'result' Name.Variable '.' Operator 'hammers' Name.Variable ' ' Text '=' Operator ' ' Text 'self' Name.Builtin.Pseudo '.' Operator 'hammers' Name.Variable '\n' Text '\t\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'hammers' Name.Variable ' ' Text '=' Operator ' ' Text '0' Literal.Number '\n' Text '\t\t' Text 'result' Name.Variable '.' Operator 'gold' Name.Variable ' ' Text '=' Operator ' ' Text 'self' Name.Builtin.Pseudo '.' Operator 'gold' Name.Variable '\n' Text '\t\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'gold' Name.Variable ' ' Text '=' Operator ' ' Text '0' Literal.Number '\n' Text '\t' Text 'else' Keyword '\n' Text '\t\t' Text 'pname' Name.Variable ' ' Text '=' Operator ' ' Text 'Contents' Name.Variable '.' Operator 'propName' Name.Variable '(' Punctuation 'obj' Name.Variable ')' Punctuation '\n' Text '\t\t' Text 'if' Keyword ' ' Text 'self' Name.Builtin.Pseudo '[' Punctuation 'pname' Name.Variable ']' Punctuation ' ' Text '<' Operator ' ' Text '1' Literal.Number ' ' Text 'then' Keyword ' ' Text 'return' Keyword ' ' Text 'null' Keyword.Constant '\n' Text '\t\t' Text 'if' Keyword ' ' Text 'obj' Name.Variable '[' Punctuation '-' Operator '1' Literal.Number ']' Punctuation ' ' Text '==' Operator ' ' Text '"' Literal.String 's' Literal.String '"' Literal.String ' ' Text 'then' Keyword ' ' Text 'count' Name.Variable ' ' Text '=' Operator ' ' Text 'self' Name.Builtin.Pseudo '[' Punctuation 'pname' Name.Variable ']' Punctuation ' ' Text 'else' Keyword ' ' Text 'count' Name.Variable ' ' Text '=' Operator ' ' Text '1' Literal.Number '\n' Text '\t\t' Text 'self' Name.Builtin.Pseudo '[' Punctuation 'pname' Name.Variable ']' Punctuation ' ' Text '=' Operator ' ' Text 'self' Name.Builtin.Pseudo '[' Punctuation 'pname' Name.Variable ']' Punctuation ' ' Text '-' Operator ' ' Text 'count' Name.Variable '\n' Text '\t\t' Text 'result' Name.Variable '[' Punctuation 'pname' Name.Variable ']' Punctuation ' ' Text '=' Operator ' ' Text 'count' Name.Variable '\n' Text '\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t' Text 'return' Keyword ' ' Text 'result' Name.Variable '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'Contents' Name.Variable '.' Operator 'deposit' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'c' Name.Variable ')' Punctuation '\n' Text '\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'ladders' Name.Variable ' ' Text '=' Operator ' ' Text 'self' Name.Builtin.Pseudo '.' Operator 'ladders' Name.Variable ' ' Text '+' Operator ' ' Text 'c' Name.Variable '.' Operator 'ladders' Name.Variable '\n' Text '\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'hammers' Name.Variable ' ' Text '=' Operator ' ' Text 'self' Name.Builtin.Pseudo '.' Operator 'hammers' Name.Variable ' ' Text '+' Operator ' ' Text 'c' Name.Variable '.' Operator 'hammers' Name.Variable '\n' Text '\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'gold' Name.Variable ' ' Text '=' Operator ' ' Text 'self' Name.Builtin.Pseudo '.' Operator 'gold' Name.Variable ' ' Text '+' Operator ' ' Text 'c' Name.Variable '.' Operator 'gold' Name.Variable '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text ' ' Text '\n' Text 'inventory' Name.Variable ' ' Text '=' Operator ' ' Text 'new' Operator.Word ' ' Text 'Contents' Name.Variable '\n' Text 'inventory' Name.Variable '.' Operator 'hammers' Name.Variable ' ' Text '=' Operator ' ' Text '1' Literal.Number '\n' Text ' ' Text '\n' Text 'Room' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '}' Punctuation '\n' Text 'Room' Name.Variable '.' Operator 'exits' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '}' Punctuation '\n' Text 'Room' Name.Variable '.' Operator 'color' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String '"' Literal.String '\n' Text 'Room' Name.Variable '.' Operator 'init' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'pos' Name.Variable ')' Punctuation '\n' Text '\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'contents' Name.Variable ' ' Text '=' Operator ' ' Text 'new' Operator.Word ' ' Text 'Contents' Name.Variable '\n' Text '\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'contents' Name.Variable '.' Operator 'initRandom' Name.Variable '\n' Text '\t' Text 'if' Keyword ' ' Text 'pos' Name.Variable ' ' Text '==' Operator ' ' Text 'goal' Name.Variable ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'color' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'YOU FOUND IT! This is the mystical Room of MacGuffin!' Literal.String '"' Literal.String '\n' Text '\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'rnd' Name.Builtin ' ' Text '<' Operator ' ' Text '0.5' Literal.Number ' ' Text 'then' Keyword '\n' Text '\t\t' Text '// Give a hint about where the goal is.' Comment.Single '\n' Text '\t\t' Text 'opt' Name.Variable ' ' Text '=' Operator ' ' Text 'floor' Name.Builtin '(' Punctuation 'rnd' Name.Builtin ' ' Text '*' Operator ' ' Text '3' Literal.Number ')' Punctuation '\n' Text '\t\t' Text 'if' Keyword ' ' Text 'opt' Name.Variable ' ' Text '==' Operator ' ' Text '0' Literal.Number ' ' Text 'then' Keyword '\n' Text '\t\t\t' Text 'if' Keyword ' ' Text 'goal' Name.Variable '[' Punctuation '2' Literal.Number ']' Punctuation ' ' Text '==' Operator ' ' Text 'pos' Name.Variable '[' Punctuation '2' Literal.Number ']' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t\t\t' Text 'hint' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'The MacGuffin lies on this level.' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'goal' Name.Variable '[' Punctuation '2' Literal.Number ']' Punctuation ' ' Text '>' Operator ' ' Text 'pos' Name.Variable '[' Punctuation '2' Literal.Number ']' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t\t\t' Text 'hint' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'The MacGuffin rests above.' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'else' Keyword '\n' Text '\t\t\t\t' Text 'hint' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'The MacGuffin lies below.' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'opt' Name.Variable ' ' Text '==' Operator ' ' Text '1' Literal.Number ' ' Text 'then' Keyword '\n' Text '\t\t\t' Text 'if' Keyword ' ' Text 'goal' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation ' ' Text '>' Operator ' ' Text 'pos' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t\t\t' Text 'hint' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'The MacGuffin lies to the east.' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'goal' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation ' ' Text '<' Operator ' ' Text 'pos' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t\t\t' Text 'hint' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'The MacGuffin lies to the west.' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'else' Keyword '\n' Text '\t\t\t\t' Text 'hint' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'The MacGuffin lies... ' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t\t' Text 'else' Keyword '\n' Text '\t\t\t' Text 'if' Keyword ' ' Text 'goal' Name.Variable '[' Punctuation '1' Literal.Number ']' Punctuation ' ' Text '>' Operator ' ' Text 'pos' Name.Variable '[' Punctuation '1' Literal.Number ']' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t\t\t' Text 'hint' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'The MacGuffin lies to the north.' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'goal' Name.Variable '[' Punctuation '1' Literal.Number ']' Punctuation ' ' Text '<' Operator ' ' Text 'pos' Name.Variable '[' Punctuation '1' Literal.Number ']' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t\t\t' Text 'hint' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'The MacGuffin lies to the south.' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'else' Keyword '\n' Text '\t\t\t\t' Text 'hint' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'The MacGuffin lies... ' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'color' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'Scratched on the wall is a message: ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'hint' Name.Variable '\n' Text '\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'rnd' Name.Builtin ' ' Text '<' Operator ' ' Text '0.5' Literal.Number ' ' Text 'then' Keyword '\n' Text '\t\t' Text '// Give some random color comment.' Comment.Single '\n' Text '\t\t' Text 'color' Name.Variable ' ' Text '=' Operator ' ' Text '[' Punctuation ']' Punctuation '\n' Text '\t\t' Text 'opt' Name.Variable ' ' Text '=' Operator ' ' Text 'floor' Name.Builtin '(' Punctuation 'rnd' Name.Builtin ' ' Text '*' Operator ' ' Text '3' Literal.Number ')' Punctuation '\n' Text '\t\t' Text 'if' Keyword ' ' Text 'opt' Name.Variable ' ' Text '==' Operator ' ' Text '1' Literal.Number ' ' Text 'then' Keyword '\n' Text '\t\t\t' Text 'color' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text '"' Literal.String 'You detect ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'pickAny' Name.Variable '(' Punctuation '"' Literal.String 'a faint;an odd;a musty;a rotten;an unpleasant' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t\t\t' Text 'color' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'pickAny' Name.Variable '(' Punctuation '"' Literal.String 'smell;odor;scent;stench' Literal.String '"' Literal.String ')' Punctuation ' ' Text '+' Operator ' ' Text '"' Literal.String ' here.' Literal.String '"' Literal.String '\n' Text '\t\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'opt' Name.Variable ' ' Text '==' Operator ' ' Text '2' Literal.Number ' ' Text 'then' Keyword '\n' Text '\t\t\t' Text 'color' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text '"' Literal.String 'You can hear a' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'pickAny' Name.Variable '(' Punctuation '"' Literal.String ' faint; quiet; soft; strange;n eerie' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t\t\t' Text 'color' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'pickAny' Name.Variable '(' Punctuation '"' Literal.String 'dripping;scratching;scrabbling;whistling;moaning' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t\t\t' Text 'color' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'pickAny' Name.Variable '(' Punctuation '"' Literal.String 'sound;noise' Literal.String '"' Literal.String ')' Punctuation ' ' Text '+' Operator ' ' Text '"' Literal.String ' here.' Literal.String '"' Literal.String '\n' Text '\t\t' Text 'else' Keyword '\n' Text '\t\t\t' Text 'color' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text '"' Literal.String 'The ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'pickAny' Name.Variable '(' Punctuation '"' Literal.String 'walls here are;floor here is;ceiling of this room is' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t\t\t' Text 'color' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'pickAny' Name.Variable '(' Punctuation '"' Literal.String 'smeared with;discolored by;marred by;covered with' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t\t\t' Text 'color' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'pickAny' Name.Variable '(' Punctuation '"' Literal.String 'dried blood;cobwebs;scratches;gouges;scorch marks;soot;mineral deposits;bits of fur' Literal.String '"' Literal.String ')' Punctuation ' ' Text '+' Operator ' ' Text '"' Literal.String '.' Literal.String '"' Literal.String '\n' Text '\t\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'color' Name.Variable ' ' Text '=' Operator ' ' Text 'color' Name.Variable '.' Operator 'join' Name.Builtin '\n' Text '\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t' Text 'self' Name.Builtin.Pseudo '.' Operator 'exits' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '}' Punctuation '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text ' ' Text '\n' Text 'rooms' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '}' Punctuation ' ' Text '// key: STRING FORM of position; value: Room' Comment.Single '\n' Text 'getRoom' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'pos' Name.Variable '=' Operator 'null' Keyword.Constant ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'pos' Name.Variable ' ' Text '==' Operator ' ' Text 'null' Keyword.Constant ' ' Text 'then' Keyword ' ' Text 'pos' Name.Variable ' ' Text '=' Operator ' ' Text 'globals' Name.Builtin '.' Operator 'pos' Name.Variable '\n' Text '\t' Text 'key' Name.Variable ' ' Text '=' Operator ' ' Text 'str' Name.Builtin '(' Punctuation 'pos' Name.Variable ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'not' Operator.Word ' ' Text 'rooms' Name.Variable '.' Operator 'hasIndex' Name.Builtin '(' Punctuation 'key' Name.Variable ')' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'rooms' Name.Variable '[' Punctuation 'key' Name.Variable ']' Punctuation ' ' Text '=' Operator ' ' Text 'new' Operator.Word ' ' Text 'Room' Name.Variable '\n' Text '\t\t' Text 'rooms' Name.Variable '[' Punctuation 'key' Name.Variable ']' Punctuation '.' Operator 'init' Name.Variable ' ' Text 'pos' Name.Variable '\n' Text '\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t' Text 'return' Keyword ' ' Text 'rooms' Name.Variable '[' Punctuation 'key' Name.Variable ']' Punctuation '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text ' ' Text '\n' Text '// Commands:' Comment.Single '\n' Text 'commands' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '}' Punctuation '\n' Text 'help' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '}' Punctuation '\n' Text ' ' Text '\n' Text 'commands' Name.Variable '.' Operator 'drop' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'obj' Name.Variable ')' Punctuation '\n' Text '\t' Text 'items' Name.Variable ' ' Text '=' Operator ' ' Text 'inventory' Name.Variable '.' Operator 'withdraw' Name.Variable '(' Punctuation 'obj' Name.Variable ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'items' Name.Variable ' ' Text '==' Operator ' ' Text 'null' Keyword.Constant ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String "You don't have any " Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'obj' Name.Variable ' ' Text '+' Operator ' ' Text '"' Literal.String '.' Literal.String '"' Literal.String '\n' Text '\t' Text 'else' Keyword '\n' Text '\t\t' Text 'getRoom' Name.Variable '.' Operator 'contents' Name.Variable '.' Operator 'deposit' Name.Variable ' ' Text 'items' Name.Variable '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text 'items' Name.Variable '.' Operator 'desc' Name.Variable '(' Punctuation '"' Literal.String 'You drop' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'help' Name.Variable '.' Operator 'drop' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'Drops an item from your inventory into the room. Specify object name or ' Literal.String '""' Literal.String 'all' Literal.String '""' Literal.String '.' Literal.String '"' Literal.String '\n' Text ' ' Text '\n' Text 'commands' Name.Variable '.' Operator 'go' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'd' Name.Variable ')' Punctuation '\n' Text '\t' Text 'oldRoom' Name.Variable ' ' Text '=' Operator ' ' Text 'getRoom' Name.Variable '\n' Text '\t' Text 'if' Keyword ' ' Text 'dirAbbrevs' Name.Variable '.' Operator 'hasIndex' Name.Builtin '(' Punctuation 'd' Name.Variable ')' Punctuation ' ' Text 'then' Keyword ' ' Text 'd' Name.Variable ' ' Text '=' Operator ' ' Text 'dirAbbrevs' Name.Variable '[' Punctuation 'd' Name.Variable ']' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'not' Operator.Word ' ' Text 'dir' Name.Variable ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'Which direction?' Literal.String '"' Literal.String '\n' Text '\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'not' Operator.Word ' ' Text 'dir' Name.Variable '.' Operator 'hasIndex' Name.Builtin '(' Punctuation 'd' Name.Variable ')' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String "That's not a direction I recognize." Literal.String '"' Literal.String '\n' Text '\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'd' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'up' Literal.String '"' Literal.String ' ' Text 'and' Operator.Word ' ' Text 'oldRoom' Name.Variable '.' Operator 'contents' Name.Variable '.' Operator 'ladders' Name.Variable ' ' Text '==' Operator ' ' Text '0' Literal.Number ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'There is no ladder in this room to go up.' Literal.String '"' Literal.String '\n' Text '\t' Text 'else' Keyword '\n' Text '\t\t' Text 'if' Keyword ' ' Text 'not' Operator.Word ' ' Text 'oldRoom' Name.Variable '.' Operator 'exits' Name.Variable '.' Operator 'hasIndex' Name.Builtin '(' Punctuation 'd' Name.Variable ')' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t\t' Text 'if' Keyword ' ' Text 'inventory' Name.Variable '.' Operator 'hammers' Name.Variable ' ' Text '<' Operator ' ' Text '1' Literal.Number ' ' Text 'then' Keyword '\n' Text '\t\t\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String "There is no exit that way, and you don't have a sledgehammer." Literal.String '"' Literal.String '\n' Text '\t\t\t\t' Text 'return' Keyword '\n' Text '\t\t\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t\t\t' Text 'wall' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'wall' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'if' Keyword ' ' Text 'd' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'up' Literal.String '"' Literal.String ' ' Text 'then' Keyword ' ' Text 'wall' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'ceiling' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'if' Keyword ' ' Text 'd' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'down' Literal.String '"' Literal.String ' ' Text 'then' Keyword ' ' Text 'wall' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'floor' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'You bash the ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'wall' Name.Variable ' ' Text '+' Operator ' ' Text '"' Literal.String ' until you make a passage big enough to crawl through.' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'oldRoom' Name.Variable '.' Operator 'exits' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'd' Name.Variable '\n' Text '\t\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t\t' Text 'delta' Name.Variable ' ' Text '=' Operator ' ' Text 'dir' Name.Variable '[' Punctuation 'd' Name.Variable ']' Punctuation '\n' Text '\t\t' Text 'pos' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation ' ' Text '=' Operator ' ' Text 'pos' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation ' ' Text '+' Operator ' ' Text 'delta' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation '\n' Text '\t\t' Text 'pos' Name.Variable '[' Punctuation '1' Literal.Number ']' Punctuation ' ' Text '=' Operator ' ' Text 'pos' Name.Variable '[' Punctuation '1' Literal.Number ']' Punctuation ' ' Text '+' Operator ' ' Text 'delta' Name.Variable '[' Punctuation '1' Literal.Number ']' Punctuation '\n' Text '\t\t' Text 'pos' Name.Variable '[' Punctuation '2' Literal.Number ']' Punctuation ' ' Text '=' Operator ' ' Text 'pos' Name.Variable '[' Punctuation '2' Literal.Number ']' Punctuation ' ' Text '+' Operator ' ' Text 'delta' Name.Variable '[' Punctuation '2' Literal.Number ']' Punctuation '\n' Text '\t\t' Text 'newRoom' Name.Variable ' ' Text '=' Operator ' ' Text 'getRoom' Name.Variable '\n' Text '\t\t' Text 'newRoom' Name.Variable '.' Operator 'exits' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'inverseDir' Name.Variable '[' Punctuation 'd' Name.Variable ']' Punctuation '\n' Text '\t\t' Text 'verb' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'crawl' Literal.String '"' Literal.String '\n' Text '\t\t' Text 'if' Keyword ' ' Text 'd' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'up' Literal.String '"' Literal.String ' ' Text 'then' Keyword ' ' Text 'verb' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'climb' Literal.String '"' Literal.String '\n' Text '\t\t' Text 'if' Keyword ' ' Text 'd' Name.Variable ' ' Text '==' Operator ' ' Text '"' Literal.String 'down' Literal.String '"' Literal.String ' ' Text 'then' Keyword '\n' Text '\t\t\t' Text 'if' Keyword ' ' Text 'newRoom' Name.Variable '.' Operator 'contents' Name.Variable '.' Operator 'ladders' Name.Variable ' ' Text '>' Operator ' ' Text '0' Literal.Number ' ' Text 'then' Keyword ' ' Text 'verb' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'climb' Literal.String '"' Literal.String ' ' Text 'else' Keyword ' ' Text 'verb' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'drop' Literal.String '"' Literal.String '\n' Text '\t\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'You ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'verb' Name.Variable ' ' Text '+' Operator ' ' Text '"' Literal.String ' ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'd' Name.Variable ' ' Text '+' Operator ' ' Text '"' Literal.String '.' Literal.String '"' Literal.String '\n' Text '\t\t' Text 'commands' Name.Variable '.' Operator 'look' Name.Variable '\n' Text '\t\t' Text 'if' Keyword ' ' Text 'pos' Name.Variable ' ' Text '==' Operator ' ' Text 'goal' Name.Variable ' ' Text 'then' Keyword '\n' Text '\t\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'You have recovered the MacGuffin and ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'descNum' Name.Variable '(' Punctuation 'inventory' Name.Variable '.' Operator 'gold' Name.Variable ',' Punctuation ' ' Text '"' Literal.String 'gold coin' Literal.String '"' Literal.String ')' Punctuation ' ' Text '+' Operator ' ' Text '"' Literal.String '. You win!' Literal.String '"' Literal.String '\n' Text '\t\t\t' Text 'globals' Name.Builtin '.' Operator 'gameOver' Name.Variable ' ' Text '=' Operator ' ' Text 'true' Keyword.Constant '\n' Text '\t\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text '\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'help' Name.Variable '.' Operator 'go' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'Moves in the given direction, bashing open a passage if necessary.' Literal.String '"' Literal.String '\n' Text ' ' Text '\n' Text 'commands' Name.Variable '.' Operator 'help' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'arg' Name.Variable ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'aliases' Name.Variable '.' Operator 'hasIndex' Name.Builtin '(' Punctuation 'arg' Name.Variable ')' Punctuation ' ' Text 'then' Keyword ' ' Text 'arg' Name.Variable ' ' Text '=' Operator ' ' Text 'aliases' Name.Variable '[' Punctuation 'arg' Name.Variable ']' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'help' Name.Variable '.' Operator 'hasIndex' Name.Builtin '(' Punctuation 'arg' Name.Variable ')' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text 'arg' Name.Variable ' ' Text '+' Operator ' ' Text '"' Literal.String ': ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'help' Name.Variable '[' Punctuation 'arg' Name.Variable ']' Punctuation '\n' Text '\t' Text 'else' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'Available commands: ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'descList' Name.Variable '(' Punctuation 'help' Name.Variable '.' Operator 'indexes' Name.Builtin '.' Operator 'sort' Name.Builtin ')' Punctuation '\n' Text '\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'help' Name.Variable '.' Operator 'help' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'Prints the help. Obviously.' Literal.String '"' Literal.String '\n' Text ' ' Text '\n' Text 'commands' Name.Variable '.' Operator 'inventory' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'arg' Name.Variable ')' Punctuation '\n' Text '\t' Text 'print' Name.Builtin ' ' Text 'inventory' Name.Variable '.' Operator 'desc' Name.Variable '(' Punctuation '"' Literal.String 'You have' Literal.String '"' Literal.String ')' Punctuation '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'help' Name.Variable '.' Operator 'inventory' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'Lists the items you are carrying.' Literal.String '"' Literal.String '\n' Text ' ' Text '\n' Text 'commands' Name.Variable '.' Operator 'look' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'arg' Name.Variable ')' Punctuation '\n' Text '\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'You are at ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'pos' Name.Variable ' ' Text '+' Operator ' ' Text '"' Literal.String '.' Literal.String '"' Literal.String '\n' Text '\t' Text 'room' Name.Variable ' ' Text '=' Operator ' ' Text 'getRoom' Name.Variable '\n' Text '\t' Text 'if' Keyword ' ' Text 'room' Name.Variable '.' Operator 'color' Name.Variable ' ' Text '!=' Operator ' ' Text '"' Literal.String '"' Literal.String ' ' Text 'then' Keyword ' ' Text 'print' Name.Builtin ' ' Text 'room' Name.Variable '.' Operator 'color' Name.Variable '\n' Text '\t' Text 'print' Name.Builtin ' ' Text 'room' Name.Variable '.' Operator 'contents' Name.Variable '.' Operator 'desc' Name.Variable '(' Punctuation '"' Literal.String 'You see' Literal.String '"' Literal.String ',' Punctuation ' ' Text '"' Literal.String ' here.' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t' Text 'exits' Name.Variable ' ' Text '=' Operator ' ' Text 'room' Name.Variable '.' Operator 'exits' Name.Variable '.' Operator 'indexes' Name.Builtin '\n' Text '\t' Text 'if' Keyword ' ' Text 'exits' Name.Variable '.' Operator 'len' Name.Builtin ' ' Text '==' Operator ' ' Text '0' Literal.Number ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'There are no exits.' Literal.String '"' Literal.String '\n' Text '\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'room' Name.Variable '.' Operator 'exits' Name.Variable '.' Operator 'len' Name.Builtin ' ' Text '==' Operator ' ' Text '1' Literal.Number ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'There is a passage ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'exits' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation ' ' Text '+' Operator ' ' Text '"' Literal.String '.' Literal.String '"' Literal.String '\n' Text '\t' Text 'else' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'There are passages ' Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'descList' Name.Variable '(' Punctuation 'exits' Name.Variable ')' Punctuation ' ' Text '+' Operator ' ' Text '"' Literal.String '.' Literal.String '"' Literal.String '\n' Text '\t' Text 'end' Keyword ' ' Text 'if' Keyword '\t\t' Text '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'help' Name.Variable '.' Operator 'look' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'Prints a description of the room and its contents.' Literal.String '"' Literal.String '\n' Text ' ' Text '\n' Text 'commands' Name.Variable '.' Operator 'quit' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'arg' Name.Variable ')' Punctuation '\n' Text '\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'Quitter!' Literal.String '"' Literal.String '\n' Text '\t' Text 'globals' Name.Builtin '.' Operator 'gameOver' Name.Variable ' ' Text '=' Operator ' ' Text 'true' Keyword.Constant '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'help' Name.Variable '.' Operator 'quit' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'Quits the game.' Literal.String '"' Literal.String '\n' Text ' ' Text '\n' Text 'commands' Name.Variable '.' Operator 'take' Name.Variable ' ' Text '=' Operator ' ' Text 'function' Keyword '(' Punctuation 'obj' Name.Variable ')' Punctuation '\n' Text '\t' Text 'roomStuff' Name.Variable ' ' Text '=' Operator ' ' Text 'getRoom' Name.Variable '.' Operator 'contents' Name.Variable '\n' Text '\t' Text 'items' Name.Variable ' ' Text '=' Operator ' ' Text 'roomStuff' Name.Variable '.' Operator 'withdraw' Name.Variable '(' Punctuation 'obj' Name.Variable ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'items' Name.Variable ' ' Text '==' Operator ' ' Text 'null' Keyword.Constant ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String "You don't see any " Literal.String '"' Literal.String ' ' Text '+' Operator ' ' Text 'obj' Name.Variable ' ' Text '+' Operator ' ' Text '"' Literal.String ' here.' Literal.String '"' Literal.String '\n' Text '\t' Text 'else' Keyword '\n' Text '\t\t' Text 'inventory' Name.Variable '.' Operator 'deposit' Name.Variable ' ' Text 'items' Name.Variable '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text 'items' Name.Variable '.' Operator 'desc' Name.Variable '(' Punctuation '"' Literal.String 'You take' Literal.String '"' Literal.String ')' Punctuation '\n' Text '\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text 'end' Keyword ' ' Text 'function' Keyword '\n' Text 'help' Name.Variable '.' Operator 'take' Name.Variable ' ' Text '=' Operator ' ' Text '"' Literal.String 'Picks up an item in the room; specify item name, or ' Literal.String '""' Literal.String 'all' Literal.String '""' Literal.String '.' Literal.String '"' Literal.String '\n' Text ' ' Text '\n' Text '// Command aliases:' Comment.Single '\n' Text 'aliases' Name.Variable ' ' Text '=' Operator ' ' Text '{' Punctuation '"' Literal.String 'i' Literal.String '"' Literal.String ':' Operator '"' Literal.String 'inventory' Literal.String '"' Literal.String ',' Punctuation ' ' Text '"' Literal.String 'inv' Literal.String '"' Literal.String ':' Operator '"' Literal.String 'inventory' Literal.String '"' Literal.String ',' Punctuation ' ' Text '"' Literal.String 'l' Literal.String '"' Literal.String ':' Operator '"' Literal.String 'look' Literal.String '"' Literal.String ',' Punctuation ' ' Text '"' Literal.String 'get' Literal.String '"' Literal.String ':' Operator '"' Literal.String 'take' Literal.String '"' Literal.String '}' Punctuation '\n' Text ' ' Text '\n' Text '// Main game loop' Comment.Single '\n' Text 'gameOver' Name.Variable ' ' Text '=' Operator ' ' Text 'false' Keyword.Constant '\n' Text 'commands' Name.Variable '.' Operator 'look' Name.Variable '\n' Text 'while' Keyword ' ' Text 'not' Operator.Word ' ' Text 'gameOver' Name.Variable '\n' Text '\t' Text 'cmd' Name.Variable ' ' Text '=' Operator ' ' Text 'input' Name.Builtin '(' Punctuation '"' Literal.String '>' Literal.String '"' Literal.String ')' Punctuation '.' Operator 'split' Name.Builtin '(' Punctuation '"' Literal.String ' ' Literal.String '"' Literal.String ',' Punctuation ' ' Text '2' Literal.Number ')' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'cmd' Name.Variable '.' Operator 'len' Name.Builtin ' ' Text '==' Operator ' ' Text '1' Literal.Number ' ' Text 'then' Keyword ' ' Text 'cmd' Name.Variable '.' Operator 'push' Name.Builtin ' ' Text 'null' Keyword.Constant '\n' Text '\t' Text 'verb' Name.Variable ' ' Text '=' Operator ' ' Text 'cmd' Name.Variable '[' Punctuation '0' Literal.Number ']' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'aliases' Name.Variable '.' Operator 'hasIndex' Name.Builtin '(' Punctuation 'verb' Name.Variable ')' Punctuation ' ' Text 'then' Keyword ' ' Text 'verb' Name.Variable ' ' Text '=' Operator ' ' Text 'aliases' Name.Variable '[' Punctuation 'verb' Name.Variable ']' Punctuation '\n' Text '\t' Text 'if' Keyword ' ' Text 'commands' Name.Variable '.' Operator 'hasIndex' Name.Builtin '(' Punctuation 'verb' Name.Variable ')' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'f' Name.Variable ' ' Text '=' Operator ' ' Text 'commands' Name.Variable '[' Punctuation 'verb' Name.Variable ']' Punctuation '\n' Text '\t\t' Text 'f' Name.Variable ' ' Text 'cmd' Name.Variable '[' Punctuation '1' Literal.Number ']' Punctuation '\n' Text '\t' Text 'else' Keyword ' ' Text 'if' Keyword ' ' Text 'dirAbbrevs' Name.Variable '.' Operator 'hasIndex' Name.Builtin '(' Punctuation 'verb' Name.Variable ')' Punctuation ' ' Text 'or' Operator.Word ' ' Text 'dir' Name.Variable '.' Operator 'hasIndex' Name.Builtin '(' Punctuation 'verb' Name.Variable ')' Punctuation ' ' Text 'then' Keyword '\n' Text '\t\t' Text 'commands' Name.Variable '.' Operator 'go' Name.Variable ' ' Text 'verb' Name.Variable '\n' Text '\t' Text 'else' Keyword '\n' Text '\t\t' Text 'print' Name.Builtin ' ' Text '"' Literal.String 'Invalid command. For help, enter: help' Literal.String '"' Literal.String '\n' Text '\t' Text 'end' Keyword ' ' Text 'if' Keyword '\n' Text 'end' Keyword ' ' Text 'while' Keyword '\n' Text