!% -~S
!% $OMIT_UNUSED_ROUTINES=1
!% $ZCODE_LESS_DICT_DATA=1

#Iftrue (#version_number == 8);
Constant USEINFORM;
#Endif;

Constant Story      "Cans";
Constant Headline   "^A sample game which uses PunyInform.^";

Constant STATUSLINE_SCORE; Statusline score;

Constant NO_SCORE = 0;

!Constant DEBUG; ! Provides debug verbs for both Inform and PunyInform
!Constant DEBUG_PARSEANDPERFORM;
!Constant DEBUG_PARSEPATTERN;
!Constant DEBUG_PARSETOKEN;
!Constant DEBUG_GETNEXTNOUN;
!Constant DEBUG_PARSENOUNPHRASE;

! Uncomment to add optional features to PunyInform
Constant RUNTIME_ERRORS = 2; ! 0, 1 or 2. 0 = smallest file, 2 = most info

Constant OPTIONAL_LIST_TOGETHER;
Constant OPTIONAL_LANGUAGE_NUMBER; ! Use this to have list_together print numbers using words
Constant OPTIONAL_ALLOW_WRITTEN_NUMBERS; ! Cheaper to add when OPTIONAL_LANGUAGE_NUMBER is defined

Constant OPTIONAL_EXTENDED_METAVERBS;
Constant OPTIONAL_EXTENDED_VERBSET;
Constant OPTIONAL_FLEXIBLE_INVENTORY;

Constant INITIAL_LOCATION_VALUE = Room;

#Ifdef USEINFORM;
Include "Parser";
Include "VerbLib";
#IfNot;
Include "globals.h";
#EndIf;

#Ifndef USEINFORM;
Include "puny.h";
#EndIf;

#Ifdef USEINFORM;
Include "Grammar";
#Endif;

Object Room "Room"
	with
		description "You are in a room."
	has light;

Object -> Girl "girl"
    with
        name 'girl',
    has animate female;

Object -> GreenCan "green can"
	with
        name 'green' 'can' 'cans//p',
		description "The green can is empty.",
	has open;

Object -> BrownCan "brown can"
	with
        name 'brown' 'can' 'cans//p',
		description "The brown can is empty.",
	has open;

[Initialise; 
#IfDef USEINFORM;
    location=INITIAL_LOCATION_VALUE;;
#EndIf;
    move BrownCan to player;
    move GreenCan to player;
];
