!% $OMIT_UNUSED_ROUTINES=1 !% $MAX_STATIC_DATA=65000 ! -- % -~S ! The very first lines of the main source code file for a game can ! contain compiler options, like the two lines above. -~S disables ! strict error checking. This is otherwise used in z5 and z8 games by ! default. While useful for debugging, it adds ~10 KB to the story file ! size and it makes the game slower. ! $OMIT_UNUSED_ROUTINES=1 makes the compiler remove all routines which ! aren't used. This can save some space. Constant Story "Large Game"; Constant Headline "^A game where packed routine and string addresses are > $8000.^"; ! Uncomment ONE of the two following lines, to show either time or score/turns ! Leaving both commented out makes the library bigger. !Constant STATUSLINE_TIME; Statusline time; Constant STATUSLINE_SCORE; Statusline score; ! Comment out to keep track of score ! The value is what will be shown as the score on statusline in z3 !Constant NO_SCORE = 0; ! Customize the statusline in z5+ (will have no effect in z3) !Constant OPTIONAL_SL_NO_SCORE; !Constant OPTIONAL_SL_NO_MOVES; Constant SACK_OBJECT = Bag; Constant MAX_CARRIED = 3; ! Uncomment to add optional features to PunyInform !Constant DEBUG; !Constant DEBUG_PARSEANDPERFORM; !Constant DEBUG_PARSEPATTERN; !Constant DEBUG_PARSETOKEN; !Constant DEBUG_CHECKNOUN; !Constant DEBUG_GETNEXTNOUN; !Constant DEBUG_SCOPE; !Constant CUSTOM_ABBREVIATIONS; !Constant CUSTOM_PLAYER_OBJECT = myPlayerObj; !Constant OPTIONAL_NO_DARKNESS; Constant OPTIONAL_ALLOW_WRITTEN_NUMBERS; Constant OPTIONAL_EXTENDED_METAVERBS; Constant OPTIONAL_EXTENDED_VERBSET; Constant OPTIONAL_PRINT_SCENERY_CONTENTS; Constant OPTIONAL_SCORED; Constant OPTIONAL_FULL_SCORE; ! Comment out NO_SCORE when uncommenting this Constant OPTIONAL_FULL_DIRECTIONS; Constant OPTIONAL_SIMPLE_DOORS; Constant OPTIONAL_SHIP_DIRECTIONS; Constant OPTIONAL_GUESS_MISSING_NOUN; !Constant OPTIONAL_MANUAL_SCOPE; !Constant OPTIONAL_MANUAL_REACTIVE; Constant OPTIONAL_ORDERED_TIMERS; !Constant OPTIONAL_PROVIDE_UNDO; Constant OPTIONAL_REACTIVE_PARSE_NAME; !Constant RUNTIME_ERRORS = 0; ! 0, 1 or 2. 0 = smallest file, 2 = most info ! Define any library constants you need here, like MAX_SCORE, AMUSING_PROVIDED, ! MAX_CARRIED, SACK_OBJECT, etc. Constant INITIAL_LOCATION_VALUE = Library; Include "globals.h"; ! Define your own global variables here, if any ! Define the entry point routines you need here, like Amusing, DarkToDark etc. ! Uncomment to add PunyLib extensions Include "ext_menu.h"; Constant FLAG_COUNT 16; Include "ext_flags.h"; Include "ext_quote_box.h"; Include "ext_cheap_scenery.h"; Include "puny.h"; ! Uncomment to add PunyLib extensions Include "ext_waittime.h"; Array a1 --> 28000; Object Library "Library" with description "You are in a library. Here be books and stuff. Exit is southeast.", se_to Kitchen, cheap_scenery 'book' 'books' "Just ordinary books." 1 'stuff' "Oh, just stuff you know."; Object -> Candle "candle" with name 'candle', has light switchable on; Object -> Box "box" with name 'box', inside_description "It feels so nice, standing in the box.", has static container openable enterable; Class Ball with name 'ball'; Ball -> -> GreenBall "green ball" with name 'green'; Ball -> -> RedBall "red ball" with name 'red'; Object Kitchen "Kitchen" with description "You are in the kitchen. Exit is northwest.", nw_to Library; Object -> Bag "bag" with name 'bag', description "Lovely.", has container open; Ball -> YellowBall "yellow ball" with name 'yellow'; Object -> Knife "knife" with name 'knife'; Object -> Fork "fork" with name 'fork'; [Initialise; print "^^And so the story begins...^^"; a1-->0 = 0; ! to avoid compiler warnings ];