#################################
#            Boondog            #
#             v1.4              #
#          09-06-2010           #
#    Created By: Matthew Hart   #
#    Email: mambazo@gmail.com   #
#     http://www.bazosoft.com   #
#                               #
#################################

------------
Installation
------------

Simply extract the Boondog zip archive to a folder.


---------------
Getting Started
---------------

Run Boondog.exe and play the Tutorial.

Use the Arrow Keys and the Shift button to play.


---------------
Level Edit Mode
---------------

Boondog has a built-in level editor. To switch to Level Edit Mode press CTRL+F1. "Tutorial" and "Pack 1" are password protected, but it is easy to create a new Levelpack.


Levelpacks
==========

To create a new Levelpack, first create a new folder in the "packs" folder. Optionally, a "gfx.png" can be placed in this new folder. Boondog will use the Levelpack's "gfx.png" instead of the default level graphics.

Note: Loading/Saving levels is slightly different to the norm. You do not specify any filenames. The filename is based on the LEVEL value. Always make sure the LEVEL value is correct before Loading/Saving to avoid overwriting another Level by accident.


Level Music
===========

You can add music to your levelpack by placing your own "music.mp3" file into your levelpack folder.


Level Graphics
==============

Level Graphics are stored in "gfx.png", which is a 512x128 24-bit image. It is split into 256 tiles (0 to 255) each of size 16x16 pixels. The tile numbers increase from left to right, top to bottom. Tiles 0 to 128 (top half of the image) are treated as obstacles by Boondog. The rest are non-obstacles.

Other optional graphics for your Levelpack folder are "menu.png" and "player.png".

"menu.png" is a 320x240 24-Bit image shown when the Levelpack is selected from the menu.

"player.png" is a 512x96 24-Bit image containing an alternative player animation. Each frame is 32x32 pixels. Frame 0 is not used.

Pink is transparent, RGB( 255, 0, 255 ) or #FF00FF.


Active Objects
==============

Boondog uses Active Objects to manipulate the Level's tiles. The right hand side of the screen shows Active Object properties, followed by a list of commands. The key within the braces () will perform the command, or set the property.

Active Objects have the following properties.


Id:-
==

The Id value is used as an alias. Active Objects can 'Link' to this alias. This number does not have to be unique. All Active Objects with Id set to 0 are ignored by Boondog. This number is drawn on the tile to make the Object easier to locate while in Edit Mode.


X,Y:-
===

This tells the Active Object which level coordinate to affect. Multiple Objects can affect the same tile.


Type:-
====

Active Objects are assigned a Type value which tells Boondog how the player can interact with it. The Types are explained later in this Readme file.


Link:-
====

The Link value's meaning depends on the Active Object Type value. See the Types section for more information. In Edit Mode, a line will be drawn to all the other Objects pointed at by this Link value.


Enabled:-
=======

This holds one of two values.

-1 = TRUE
 0 = FALSE

Objects that are Enabled will be animated if they have a Frames value different to 0.


Tile On:-
=======

The Base Tile of the Active Object will be set to the Tile On value when it is Enabled.


Tile Off:-
========

The Base Tile of the Active Object will be set to the Tile Off value when it is Disabled.


Base Tile:-
=========

This is the Tile Boondog will show at the X,Y location.


Frames:-
======

Used to animate an Enabled Active Object. This value specifies how many contiguous tiles to animate, and can be positive or negative.


Ticks:-
=====

Used for timing. See the Types section for more information.


Max Ticks:-
=========

Used for timing. See the Types section for more information.


Types (in detail)
=================

TYPE_DECOR

This is the default type. It is used for decoration, such as animated tiles that have no function. e.g. a flashing light


TYPE_SWITCH_TOGGLE

When the player stands on this tile, it will toggle between enabled and disabled. Any other Active Objects with an Id value equal to the switch's Link value will be toggled also.


TYPE_SWITCH_ONCE

Same as above, but the Active Object's Type value will be set to TYPE_DISABLED when triggered.


TYPE_TOGGLE and TYPE_ONCE

These are currently unused.


TYPE_TIMER_TOGGLE

When this Object's Ticks value reaches the Max Ticks value, it will toggle, and the Ticks value will be reset. Any other Active Objects with an Id value equal to the timer's Link value will be toggled also.


TYPE_TIMER_ONCE

Same as above, but the Ticks value is not reset until the Object is re-enabled.


TYPE_DISABLED

See TYPE_SWITCH_ONCE


TYPE_DEATH_ZAP

The player will die, showing the Zapped animation, when they overlap this Object, but only if it is Enabled.


TYPE_START

The start location of the player. The Enabled value can be set to change the direction of the player.

 0 = Right
-1 = Left


TYPE_FINISH

The player will show the Teleport animation, and will be taken to the next level, if it exists.


TYPE_STRING_REPEAT

Triggered every time the player stands on the Object. The message number pointed at by the Object's Link value will be displayed.


TYPE_STRING_ONCE

Same as above, but triggers only once.


TYPE_MOVE_RIGHT and TYPE_MOVE_LEFT

The player is forced to move while standing on this Object, but only when it is Enabled.


TYPE_SLIDE_BLOCK

This Object can be pushed around. It is best to keep this type of object towards the end of the list, to ensure it is drawn over the other tiles. Cannot be Enabled or Disabled.


TYPE_SWITCH_HOLD

Same as TYPE_SWITCH_TOGGLE except it disables when nothing is on it.


TYPE_TELEPORT

Teleports the player within the level. The player will be moved to a Linked Object also of TYPE_TELEPORT. This Object must be Enabled for it to work.


TYPE_LIFT_NODE

A node for a Lift to move towards. The Id value must match that of the TYPE_LIFT[_TOGGLE] Object. The Link value is the sequence number. If Max Ticks is set, a Lift will wait at that node. Lift nodes should be set before any overlapping objects, otherwise the node will draw over it.


TYPE_LIFT

Follows the Lift Nodes of the same Id value. Can be Disabled. Lifts should be at the end of the object list so they are drawn over the nodes, and other objects.


TYPE_LIFT_TOGGLE

Same as above, but is forced to Disable itself at every Node.


---------
Community
---------

It is highly encouraged to create and share Levelpacks. If you have created a Levelpack do let me know and I will add it to the Website ;)

Boondog is totally free, but if you do feel inclined, you can donate any amount to my PayPal account (mambazo@gmail.com).

-------
Changes
-------

v1.4
====

* Added a medal system based on time (which is now ticks instead of seconds) to award Gold, Silver or Bronze.
* Added a new setting to the Editor so that the Medal Goal can be set.
* Fixed a few bugs regarding head collision.

v1.3
====

* Object properties can be set by clicking on the text at the right. No need to look for shortcut keys!
* In Map Editor, changed SHIFT commands to ALT to prevent the player jumping while making edits.
* Added a better tile selection features to the editor. Hold SPACE too select a tile.
* The tile selection screen also appears when changing Base Tile, Tile On and Tile Off.
* Fixed a bug that allowed the player to survive long falls by alternating left and right quickly.

v1.2
====

* Added Save/Load feature.
* Added Music & Sound effects
* Created new graphics for some menu screens.

v1.1
====

* Both left & right shift can be used to jump.
* Fixed a bug causing the player to hang in the air after jumping on a conveyor.
* Added a mousewheel alternative to the map editor.

-----------
Bug Reports
-----------

While I have tried to keep the game bug free, there is always a chance you'll find a bug. If you do find a bug, send me an email explaining what the bug is, and how to reproduce it. A screenshot might also be helpful.


----------------
Acknowledgements
----------------

ploadlib - Matt Netsch (thrawn411@hotmail.net), Matthew Fearnley (counting.pine@virgin.net)

Pixel Scaler Routines - Eric Cowles (windozesux@hotmail.com)

fbsound - D.J.Peters

FreeBASIC - http://www.freebasic.net
