!% -SD

Constant Story "crustaceoid";
Constant Headline "^a game about change^
    ^@@64modgethanc^^";
Release 0;
Include "Parser";
Include "VerbLib";
Include "Grammar";
!Include "Menus";

Global player_form = human;

!=== classes

Class Room
    with cant_go
        "You can't go that way.",
    has light;

Class Prop
    with
      before [;
        Examine:
          return false;
        default:
          print_ret "It's not really useful to do that to ", (the) self, ".";
      ],
    has scenery;

Class Form
    with found_in [;
        return true;
    ],
        before [;
        Become:
            print_ret (string) self.transformation;
        Examine:
            print_ret "it's only a concept. you can consider it, but it's not
            THERE FOR YOu to examine.";
        Think:
            print_ret (string) self.description;
    ],
    has scenery;

!=== rooms

Room home "home sweet home"
    with description
        "You know you can always return here, where it's safe and familiar.",
        name "home",
    has ;

!=== objects

Prop nest "your cozy nest" home
    with description
        "a place where you love to rest",
        name "nest",
    has ;

!=== forms

Form human "a regular human being"
    with description
        "soft outer flesh, containing muscle sinew that wraps around hard bones",
        name 'human' 'person' 'humanoid' 'homo sapien',
        transformation
        "poof! you turn into a human.",
        before[;
            Become:
                player.description = "you are a human";
                player_form = "human";
        ],
    has ;

Form crab "a shimmering crab"
    with description
        "crunchy external shell, encasing soft tissue that holds beautiful
        dreams",
        name 'crab' 'crustacean' 'crustaceoid',
        transformation
        "poof! you turn into a crab.",
        before[;
            Become:
                player.description = "you are a crab";
                player_form = "crab";
        ],
    has ;

!=== extra grammar

Verb 'crab'
    * -> Crab
    * 'about' noun -> Crab
    * noun -> Crab;

Verb 'become'
    * noun -> Become;

Verb 'consider' 'ponder' 'wonder'
    * 'about' noun -> Think
    * noun -> Think;

[ BecomeSub;
    print_ret "the world whirls around you as you change!^
    examine yourself and see what you are now.";
];


[ CrabSub;
    print_ret "you try your best, but you're not sure how to be a crab yet.";
];

!=== meta

![ AboutSub;
! about_menu.select();
!];
!
!Menu about_menu "crustaceoid";
!Option -> "ABOUT"
! with  description
!    "about text here";
!Option -> "GAMEPLAY"
! with  description
!   "Standard interactive fiction controls apply here. ^
!   ^You can examine your surroundings by typing 'look' (abbreviated as 'l'), or examine specific objects by typing 'x (object)'.^
!   ^Your non-visual senses are applicable as well; you can 'smell (object)' and
!    'listen to (object)' and 'taste (object)'.";
!Option -> "SPOILERS"
! with  description
!    "spoilers here";
!Option -> "CREDITS"
! with  description
!   "Many thanks to James for their crabthusiasm.^
!    Written by hvincent@@64modgethanc.com; bugs and reactions are welcome through email.";

!=== initialization

[ Initialise ;
  location = home;
  player.description = "You don't appear any different than you'd expect.";
  print_ret "you are alone on a quiet beach of white sand.";
  ];
