The default puppet state is false. This means that initially, all sprites act under the control of the score. When you issue a
puppetSprite channelNum, truecommand, the specified sprite's behaviour is detached from the score and you can manipulate it via lingo. Conversely, a
puppetSprite channelNum, falsecommand releases the sprite from script control and returns it to the score.
So, whenever you want to control sprites via lingo, you need to make them puppets, and this tends to be necessary for anything but the most rudimentary interactivity.