Bird's-eye view of a PuzzleScript file

A puzzlescript file is divided into 8 sections:

Legend

This section has two purposes. Firstly, it's a place where you can set up single-character names for things so that you can type them in levels:

P = Player
. = Background
# = Wall
* = Crate
O = Target
@ = Crate and Target

There is another purpose, and this is to define properties of objects that you can refer to in rules and elsewhere:

Flying = Bat or Bird
Obstacle = Wall or Lava or Water