General info
============

.. _contact:

Contact details
---------------
To report bugs in, make complaints about, or suggest improvements to Pyskool,
contact me (Richard Dymond) at *<rjdymond AT gmail.com>*, or leave a comment on
the `Pyskool blog <http://pyskool.ca/>`_.

.. _todo:

TODO
----
Pyskool is now functionally complete, by which I mean that it does everything
that the original Skool games do. (Except for a demo mode; if you think there's
something else it should do but doesn't, let me know.) However, that doesn't
mean there's nothing left to do.

Some things I'll probably do, sooner rather than later:

* Move data that is currently embedded in the code (e.g. frog hop animation
  phases) into the ini files
* Tidy up the code
* Optimise the sprite-drawing and screen update code

Yes, these things are pretty boring from an end-user perspective. Some
less-boring things I am considering doing, which may or may not ever get done:

* Add an in-game menu
* Add the ability to save and restore games
* Add a demo mode
* Write a :ref:`Command <command-ref>`-writing HOWTO (demonstrating how to add
  commands to Pyskool)

.. _bugs:

Bugs
----
No doubt there are bugs in Pyskool - and in this documentation - or ways it
deviates unacceptably from the original games. Please report any bugs
(reproducible crashes, especially) you find, and help to make Pyskool a solid
and stable platform for developing new Skool-based games. (See :ref:`contact`.)

Bugs and deficiencies that I'm aware of at the moment include:

* When Eric is writing on a blackboard, text does not wrap

Changelog
---------
Pyskool 0.2.4 (2010-04-30)
^^^^^^^^^^^^^^^^^^^^^^^^^^
Added the following features:

* 'Back to Skool Daze' example customisation
* Keyboard is checked during long sound effects (so you can pause or quit while
  the tune is playing, for example)
* Screenshots can be taken while the game is paused
* [Screen] section in the ini files
* API documentation

Pyskool 0.2.3 (2010-04-13)
^^^^^^^^^^^^^^^^^^^^^^^^^^
Added the 'Ezad Looks' example customisation.

Pyskool 0.2.2 (2010-04-02)
^^^^^^^^^^^^^^^^^^^^^^^^^^
Added the following features in Back to Skool mode:

* Eric is paralysed and expelled after jumping out of the top-floor window
* Albert alerts Mr Wacker if he spots Eric trying to escape
* Mr Wacker shadows Eric after being alerted by Albert
* Mr Creak and Mr Rockitt behave correctly during assembly
* Mr Withit does assembly duty
* Eric gets lines for not sitting down facing the stage during assembly
* Eric gets lines for standing on plants
* Miss Take chases Eric out of the girls' skool if she spots him there when
  it's not playtime

Also fixed the following bugs:

* Game crashes if Eric tries to sit back on the saddle of the bike after
  standing on it
* Eric gets lines for riding the bike in the playground
* Eric gets lines if spotted falling from a window
* Screen scrolls right every time Eric kisses Hayley

Pyskool 0.2.1 (2010-03-26)
^^^^^^^^^^^^^^^^^^^^^^^^^^
Added the following features in Back to Skool mode:

* Eric can release mice
* The girls and Miss Take will jump up and down or stand on a chair if they
  spot a mouse nearby
* Eric can kiss (or try to kiss) Hayley
* Eric can open desks and collect the water pistol or stinkbombs
* Eric can drop stinkbombs
* Mr Wacker will open a nearby window if he smells a stinkbomb
* Eric can fire the water pistol
* Eric can fill the water pistol with sherry
* Eric can throw away the water pistol
* Cups can be filled with water or sherry
* Plants grow when watered
* Eric can stand on plant pots
* Eric is lifted by a growing plant
* Eric can step off a fully grown plant through an open window
* Eric can step off a fully grown plant over the skool gate
* Drops of water or sherry can be knocked out of a cup with a catapult pellet
* Teachers reveal bike combination digits when hit by a drop of water
* Eric can unchain the bike by writing the combination on a blackboard
* Eric can ride the bike
* Eric can stand on the saddle of the bike
* Eric can jump off the saddle of the bike
* Eric is launched over the closed skool gate if he hits it while standing on
  the saddle of the bike
* Teachers reveal storeroom combination letters when hit by a drop of sherry
* Eric can get the storeroom key (and hence the frog) by writing the
  combination on a blackboard
* Conker falls from the tree when hit by a catapult pellet
* Falling conker can knock people out
* Eric can place the frog in a cup
* Eric can get the safe key by knocking the frog from a cup onto Miss Take's
  head
* Eric can open the safe by jumping up to it when he has the key

Also fixed the following bugs:

* Game crashes if a character is chasing or looking for Eric while Eric is on a
  staircase or jumping
* Eric does not get lines if caught writing on a blackboard
* Eric gets lines for being in the assembly hall during non-assembly periods

Pyskool 0.2 (2010-03-16)
^^^^^^^^^^^^^^^^^^^^^^^^
* Added mice and frogs and the ability to catch them
* Fixed glitches in the animatory state graphics (`sprites.png`)
* Added the `SHERRY` sound sample
* Added the `GameFps` and `ScrollFps` configuration parameters

Also fixed the following bugs:

* Game crashes if you press 'Delete' while writing on a blackboard
* If a little boy talks to ERIC while he's writing on a blackboard, pressing
  'U' has no effect
* During dinner, the teacher on duty keeps giving Eric lines for not finding a
  seat

Pyskool 0.1.2 (2009-07-22)
^^^^^^^^^^^^^^^^^^^^^^^^^^
Fixed bug in Skool Daze mode where shields stay flashing after Eric's been
expelled.

Pyskool 0.1.1 (2009-04-29)
^^^^^^^^^^^^^^^^^^^^^^^^^^
Fixed bug where Eric gets trapped in his seat if he's knocked out of it by a
catapult pellet and then tries to stand up.

Pyskool 0.1 (2008-11-12)
^^^^^^^^^^^^^^^^^^^^^^^^
* Eric is expelled after exceeding the lines limit
* The Swot tells tales
* Teachers track down Eric if he tries to skip class

In Skool Daze mode:

* Special playtimes have been implemented
* Teachers give lines for all possible infractions
* All commands required in Skool Daze mode have been implemented

Pyskool 0.0.4 (2008-10-24)
^^^^^^^^^^^^^^^^^^^^^^^^^^
* Eric can write on blackboards
* Improved keyboard responsiveness
* Added ready-made example customisation: Skool Daze Take Too

In Skool Daze mode:

* Teachers reveal safe combination letters when all shields are flashing
* Eric can open the safe after writing the combination code on a blackboard
* Eric can unflash all the shields after opening the safe

Pyskool 0.0.3 (2008-10-08)
^^^^^^^^^^^^^^^^^^^^^^^^^^
* Sound effects and tunes
* Teachers give lines for some infractions
* Eric can jump (into the air and onto other kids, too)
* Eric can make shields flash

Pyskool 0.0.2 (2008-09-23)
^^^^^^^^^^^^^^^^^^^^^^^^^^
* Added ``--scale`` and ``--ini`` command line options
* Bully can knock people out
* Tearaway can fire catapult pellets
* Eric can do these things too
* Tearaway writes on the blackboards
* Implemented several previously unimplemented commands

Pyskool 0.0.1 (2008-09-09)
^^^^^^^^^^^^^^^^^^^^^^^^^^
Initial public release.

Frequently asked questions
--------------------------
At the time of writing this, there are no frequently asked questions, or even
any infrequently asked questions. So for now I'll fill this section with
questions made up by me.

**How does Pyskool differ from the original games?**

Though the conversion of the original games to Python/Pygame is pretty faithful
(I think), there are some differences, noted below.

General differences:

* More than one character can be talking at any given time
* Characters can talk while off-screen (so it's possible for the scrolling
  screen to reveal a character mid-sentence)
* Eric cannot walk slowly
* Eric scores points if *anyone* but him gets lines (not just the Swot or the
  Bully)

In Skool Daze mode:

* Boys can find the back seat in the Reading Room

In Back to Skool mode:

* Eric can release mice anywhere (not just in the girls' skool)
* Eric can re-catch mice that he has released; well, why not?
* The frog is visible from the start of the game; I think the only reason it
  was hidden in the original game was a lack of RAM (the frog shares its
  character buffer with the mouse, and the mouse needs to be visible from the
  start)
* The 'conker' sound effect is played when Albert (instead of when Einstein or
  Angelface) is struck by a conker

**Why Python (and Pygame)?**

Because Python is an elegant, expressive, and excellent programming language.
Plus it enables rapid development, which is good because I'm writing Pyskool in
my limited spare time. Pygame's pretty good too. I don't know how else I'd do
graphics with Python.

**Why Skool Daze and Back to Skool?**

If you need to ask, you probably shouldn't be here. Actually, what *are* you
doing here? Go and play Jet Set Willy, or something.
