1. Object basics |
Objects in Bolo can be devided into 4 categories:
- Figures: the beater, the balls and killerdisks (see
the figure page on this topic)
- Passive stone
types (simple stones, pins, bonus, ...)
- Stone types
that do something when hit by the ball
(i.e. connecting the ball to a rubber band, changing gravity, switching
the light off, releasing a rotor) or run automatically (magnets and
timer)
- Holes
Objects can be created by the following commands (links jump to the
object creation page):
Stone,
Hole,
Fig
and the object array commands.
There are some general parameters that can be set for all stone objects,
see the following commands at the end of this page:
Points,
Fix,
SuperFix, NoFix,
Activate,
Deactivate
Some of the objects can have additional parameters. These can be set with
special commands that are desribed at the appropriate object type on this
page.
These stones can be devided into 5 categories:
3.1. Stones that affect the beater |
| Can be used as parameter for the commands
Stone and oType
and additionally as paramter for the Use
command. When the Use command is called,
no actual stone is created, but the result is the same as if a stone
of the appropriate type would be hit. See the Figure
page --> Beater parameters for an example. |
|
oNormalBeater
oBeater (same as oShortBeater)
oShortBeater
oLongBeater
oCircleBeater
oCrossBeater
oTwinBeater
|
When hit by the ball, a stone of one of this types changes the
type of the beater.
See the Figure page on how the different
types of beaters look like.
|
| oShieldOption |
Enables a shield for the beater, useful against
killerdisks and rotors. |
| oShootOption |
Enables the beater to shoot, useful against killerdisks
and rotors. |
| oShrinkOption |
Enables the shrink option for the beater. |
| oTurnOption |
Enables the beater to turn at 90 degrees. |
| oMagOption |
Enables the beater magnet option.
Parameters for the beater magnet can be set with the command:
BeaterMagnetPara (force)(range)
Good values for force range from 0 (no
force at all) to 100 (high magnetic force).
range = size (in screen pixels) of a circular region around
the magnet where the force is active. If the ball is outside this
region, it won't get attracted by the magnet.
Example:
BeaterMagnetPara(100)(300)
Stone(oMagOption)(dgBskt2)(5)(256)(100) |
|
| oBreakOption |
Enables the beater break option |
| oNoneOption |
Disables any beater options |
3.2. Stones that affect the balls / killerdisks |
| oGravity |
When hit, change the gravity in the level that
effects balls and killerdisks.
To set parameters for the oGravity stone
use the following command right before the appropriate Stone
or oTyp
command that create the oGravity stone
/ stone type:
Gravity(x)(y)
x and y set
the strength of the gravity in both directions. Possible values for
x and y range
from -3 to 3, where 0 means no gravity at all and a negative number
indicates the opposite direction.
examples:
Gravity(0)(1) Stone(oGravity)(dgStck3)(1)(140)(50)
Gravity(0)(1) oTyp(1)(oGravity)(dgStck3)(1)
Gravity(0)(0) |
Line 1 places a gravity stone at position x=140, y=50. when the stone
is hit, gravity is activated in the y-direction (down the screen).
The 2nd line creates a gravity stone type for the commands ObjLine
and NxtLine
The 3rd line is useful when placed after the last gravity stone commands
- it sets the normal level gravity. |
| oFriction |
When hit, changes the amount of friction that affects
the beater.
To set parameters for the oFriction stone
use the following command right before the appropriate Stone
or oTyp
command that create the oFriction stone
/ stone type:
Friction(n)
Possible values for n range from 0 to 3,
0 means very low friction (like on ice) and 3 a high friction (like
on sand). The default friction value is 2.
Example:
Friction(0) Stone(oFriction)(dgStck3)(1)(140)(50)
Friction(3) oTyp(1)(oFriction)(dgStck3)(1)
Friction(2) |
Line 1 creates a friction stone that will activate "ice friction"
on hit.
Line 2 creates a friction stone type with "sand friction"
effect.
The 3rd line is useful when placed after the last friction stone commands
- it sets the normal level friction. |
oLittleBall
oNormalBall
oBigBall
|
These stones change the size of the
black ball.
See Figures. |
oLittleExtra
oNormalExtra
oBigExtra |
These stones release the white extra
balls of various sizes when hit.
See Figures. |
| oMagnet
|
The magnet stone attracts nearby balls and killerdisks.
To set parameters for the oMagnet stone
use the following command right before the appropriate Stone
or oTyp
command that create the oMagnet stone
/ stone type:
MagnetPara(force)(range)
force = the power of the magnet. Good
values range from 10 (low magnetism) to 500 (very high magnetism).
Negative values cause repulsion instead of attraction.
range = size (in screen pixels) of a
circular region around the magnet where the force is active. If
the ball / killerdisk is outside this region, it won't get attracted
by the magnet.
|
| oAcc |
Accellerator stone - when hit, it accelerates the Ball in a specific
direction.
To set parameters for the oAcc stone
use the following command right before the appropriate Stone
or oTyp
command that create the oAcc stone
/ stone type:
Acc(x)(y)
x, y = direction
and power of acceleration.
Examples:
Acc(0)(-20) oTyp(3)(oAcc)(dgWood2)(1)
Acc(30)(30) Stone(oAcc)(dgWood2)(1)(50)(40) |
|
| oDonner |
When hit, the ball suddenly gets a random speed and direction of movement. |
| oBeam |
Teleports the ball to another random oBeam
stone. |
| oBumper |
The ball bounces off the oBumper
when it hits it.
The dgBump texture set is made
for this kind of stone. |
| oStop |
Stops the movement of the ball immediately, when hit |
| oExtra |
Get an extra live, when this stone is destroyed. |
| oGummi |
Connects the ball and itself with a rubber band.
The rubber band parameters of that line can be set up when the LinePara
command is placed right before the appropriate Stone
or oType command that create the oGummi
stone / stone type.
See the commands page --> Line
to see how LinePara is used. |
| oJumper |
Cuts
off any existing rubber band from the ball, then connects itself and
the ball with a rubber band.
The rubber band parameters of that line can be set up when the LinePara
command is placed right before the appropriate Stone
or oType command that create the oJumper
stone / stone type.
See the commands page --> Line
to see how LinePara is used. |
| oCut |
Cuts the rubber band between the ball that hits
it and an oGummi or oJumper
stone. |
| oFigCut |
When hit by the ball, it cuts the rubber band between
the ball and another Figure. |
3.3. Stones that affect holes |
| Can be used as parameter for the commands
Stone and oType
and additionally for the Use command.
When the Use command is called, no actual
stone is created, but the result is the same as if a stone of the
appropriate type would be hit. See the Figure
page --> Beater parameters for an example. |
|
oCloseBlueHoles
oCloseRedHoles
oOpenBlueHoles
oOpenRedHoles
|

Opens / closes red / blue holes.
Blue holes are the big, red holes the small ones. |
3.4. Stones that affect other stones |
| oDynamo |
Rotates on hit. The duration of rotation depends on hit power.
As long as it rotates, it inverses the fixed / unfixed state and
the activated / deactivated state of stones that match the texture
set and the color of the oDynamo stone.
For example, if the oDynamo stone has the texture dgBskt2(4) ,
it affects all stones that have one of the following textures: dgBskt2(4),
dgBskt2(0) ,
dgBskt1(0) ,
dgBskt1(5) .
oDynamo stones are automatically created
in the superfixed state (pinned with golden pins) so that they can't
get destroyed.
The following command is used to set parameters for all oDynamo
stones in a level. It's not possible to set different parameters
for different oDynamo stones.
DynamoPara(energyAbsorption)(durationFactor)
energyAbsorption = good values range
from 5 to around 300, where a low value means that a higher speed
of the ball is necessary to get the same duration of rotation compared
to a high value.
durationFactor = defines how long it
takes until the dynamo stops again after beeing hit.
Good values range from 800 to 1000 where at 800 the dynamo stops
quickly, at 900 it needs more time whereas at 1000 it never stops
its rotation.
Complete example level:
Reset
Fig(fNormalBall)(256)(330)
Fig(fBeater)(256)(360)
DynamoPara(200)(950)
oTyp(0)(oNone)
oTyp(1)(oDynamo)(dgTile1)(5)
oTyp(2)(oDynamo)(dgMamo3)(3)
Fix(3) oTyp(3)(oSimple)(dgTile1)(1)
Fix(4) oTyp(4)(oSimple)(dgTile1)(0)
Deactivate(5) Fix(5) oTyp(5)(oAddBonus10)(dgMamo3)(0)
Deactivate(6) Fix(6) oTyp(6)(oAddBonus50)(dgMamo1)(0)
Offset(256)(50) Factor(35)(25)
Pos(-6)(0) XYInc(1)(1)
ObjLine(13)"3434.1.2.5656" |
|
oPincers
oHammer |
When hit, the oPincers
unfix aswhere the oHammer fixes stones
that match the texture set and
the color of the oPincers / oHammer
(see the oDynamo
stone on how excactly the matching is done). |
| oEyes |
When hit, it opens its eyes. When all oEyes
stones of the same texture set
and color have their eyes open, they unfix themself and unfix / activate
any other fixed and/or deactivated stones that match the texture
set and color of the oEyes stones
(see the oDynamo
stone on how excactly the matching is done).
Should be created as fixed stones (see commands Fix
and SuperFix). |
oSwitchFix
oSwitchAct
oSwitchFixAct |
When touched by the beater, these stones inverse the fixed and/or
activated states for group of stones that match the texture
set and the color of the oSwitchFix
/ oSwitchAct / oSwitchFixAct
(see the oDynamo
stone on how excactly the matching is done).
oSwitchFix inverses the fixed state.
oSwitchAct inverses the activated state.
oSwitchFixAct inverses both the fixed
and the activated state.
See the commands Fix,
SuperFix
and Activate,
Deactivate
on how to set the initial fixed/unfixed and activated/deactivated
state for a stone.
|
| oTimer |
The
timer runs automatically when the level starts. After a predefined
time, it switches the activated / deactivated state for all stones
that match the texture set and
the color of the oTimer stone (see
the oDynamo
stone on how excactly the matching is done; see the commands Activate
and Deactivate
on how to set the initial activated/deactivated state for a stone).
TimerSpeed(seconds)
This command sets how long (in seconds) it takes until the timer
runs off.
|
3.5. Dangerous stones / stones that release dangerous objects |
| oKillerDisk
|
A stone that releases a killer disk
upon impact of the ball.
See the figures page
on how to set additional parameters for the killerdisk that gets released
from the oKillerDisk stone. |
| oRotor
|
A
stone that releases a rotor upon impact of the ball. The rotor moves
over the screen and kills the beater upon impact. |
| oMine
|
A stone that explodes when hit by the
ball. The explosion fragments can kill the beater. |
| oMiniMine
|
A stone that explodes when hit by the
ball. The explosion fragments can kill the beater. |
| oLuckyBall |
When hit by the ball, it releases a small green extra ball, that moves
a short distance before it explodes. As long as it lives, the green
extra ball can destroy other stones and the beater. |
| oDeath
|
When the beater has a collision with this stone, the beater gets destroyed. |
| oReset
|
Very dangerous: when hit, clears the
screen and the whole game is not playable anymore. This annoying stone
should really be avoided when creating custom levels. |
|
oHole
oBigHole

|
These objects represent the normal and the big holes that attract
and destroy nearby balls.
Parameters for the oHole and oBigHole objects can be set with the
following 2 commands:
HolePower(n)
Sets the power of attraction for all holes in the level.
Good values for n range from 10 (very
low attraction) to 1000 (very high attraction). 200 seems to be
normal attraction.
HoleFriction(n)
Sets the friction that affects balls near holes.
Good values for n range from 500 (very
high friction) to 1000 (no friction at all). Default value seems
to be somewhat below 1000.
When a high hole friction is used, the ball immediately gets slower
if it reaches the range of a hole. So even fast balls will be sucked
into the holes and will not fly over it.
This command was never used in the original levels.
Bonus(typeNumber)(nPoints)
The Bonus command sets how much bonus
points the player gets when the ball falls into a specific hole.
When using the Bonus command before
a Hole
command, typeNumber must be set to 0.
When using it before an oTyp
command (with oHole or oBigHole
as parameter), typeNumber must be set
to the same number as in the oTyp
command.
Possible values for nPoints: 10, 50,
100, 250, 500, 1000
See the following objects on how to open/close holes:
oOpenBlueHoles,
oCloseBlueHoles, oOpenRedHoles, oCloseRedHoles
Complete example level for hole creation, parameters, opening/closing
holes:
Reset
Fig(fNormalBall)(256)(330)
Fig(fBeater)(256)(360)
HolePower(800)
oTyp(0)(oNone)
Bonus(1)(50) oTyp(1)(oHole)
Bonus(2)(500) oTyp(2)(oBigHole)
SuperFix(3) oTyp(3)(oCloseBlueHoles)
SuperFix(4) oTyp(4)(oCloseRedHoles)
SuperFix(5) oTyp(5)(oOpenBlueHoles)
SuperFix(6) oTyp(6)(oOpenRedHoles)
Offset(256)(50) Factor(35)(25)
Pos(-6)(0) XYInc(1)(1)
ObjLine(13)"112.34.56.211" |
|
3.6. Stones with global effect |
oOffLight
oLight |
oOffLight darkens the screen when
hit.
oLight has the opposite effect. |
| oExit |
advance to the next level when hit |
Parameters / options that can be set for all stone objects.
When placed before a Stone
or oTyp
command, the Points command sets how much
points the player gets when destroying that Stone.
When using the Points command before a Stone
command, typeNumber must be set to 0. When
using it before an oTyp command, typeNumber
must be set to the same number as in the oTyp
command.
Possible values for nPoints: 10, 20, 50, 100,
150, 200, 250, 500, 1000
Example 1:
Points(0)(500)
Stone(oSimple)(dgTile1)(5)(100)(100)
Stone(oRing3)(dgTile2)(1)(-100)(100) |
Example 2:
Points(0)(100) oTyp(0)(oSimple)(dgTile1)(5)(100)(100)
Points(1)(250) oTyp(1)(oRing3)(dgTile2)(1)(-100)(100) |
Example 1 sets the points for the two stones to 500.
Example 2 creates two stone types for later use in ObjLine
and NxtLine.
Points for the 1st type are set two 100, points for the 2nd one to 250.
When placed before a Stone
or oTyp
command, the Fix command makes the following
stone a fixed one that is pinned on the screen with silver pins. Fixed
stones cannot be destroyed as long as they are fixed.
When using the Fix command before a Stone
command, typeNumber must be set to 0. All stones
that are created with the following Stone
commands will be fixed ones until the NoFix(0)
command is called.
When calling the Fix command before an oTyp
command, typeNumber must be set to the same
number as in the oTyp command. All oTyp
commands that follow the Fix command and use the same typeNumber
will create fixed stone types until NoFix(typeNumber)
is called.
Note: As long as there are fixed stones in the level that were created
by the Fix command, the level is not finishable.
Use the SuperFix
command to create fixed stones that do not need to be destroyed to finish
the level.
The following stone objects can fix / unfix other stones when hit by the
ball:
oEyes, oPincers,
oHammer,
oDynamo,
oSwitchFix,
oSwitchFixAct, oTimer
Complete example level 1:
Reset
Fix(0)
Stone(oSimple)(dgTile1)(5)(100)(100)
Stone(oRing3)(dgTile2)(7)(150)(100)
NoFix(0)
Stone(oSimple)(dgTile1)(4)(200)(100)
Stone(oRing3)(dgWood1)(5)(250)(100)
Fig(fBeater)(256)(370) Fig(fLittleBall)(256)(330) |
Complete example level 2:
Reset
XYInc(40)(0)
(* --- create a row with both fixed and unfixed stones --- *)
Fix(1) oTyp(1)(oSimple)(dgTile1)(5)
oTyp(2)(oRing3)(dgTile2)(7)
Pos(100)(50) ObjLine(5)"12121"
(* --- create another row with both fixed and unfixed stones--- *)
oTyp(1)(oSimple)(dgTile1)(4)
Pos(100)(100) ObjLine(5)"12121"
(* --- create a row with unfixed stones only --- *)
NoFix(1) oTyp(1)(oSimple)(dgWood1)(5)
Pos(100)(150) ObjLine(5)"12121"
Fig(fBeater)(256)(370) Fig(fLittleBall)(256)(330) |
Example 1 creates 4 stones. The first 2 stones are fixed, the last 2
not.
Example 2 creates 3 rows with 5 stones in each row. In the first two rows,
the stones with type number 1 are fixed, in the 2nd row the stones with
type number 1 are all unfixed because NoFix(1) is called before oTyp(1).
Superfixed stones do the same as fixed stones except that they can never
be unfixed. The level finishes when all other stones except the superfixed
ones are destroyed.
Parameter and usage are the same as with the Fix
command.
Ends series of fixed stone creation.
Works together with the Fix
and SuperFix
commands.
When placed before a Stone
or oTyp
command, the Deactivate command makes the
following stone a deactivated one that can be destroyed but doesn't have
any effect - the player gets no points and stones that would normally
do something, do nothing.
When using the Deactivate command before
a Stone command, typeNumber
must be set to 0. All stones that are created with the following Stone
commands will be fixed ones until the Activate(0)
command is called.
When calling the Deactivate command before
an oTyp command, typeNumber
must be set to the same number as in the oTyp
command. All oTyp commands that follow the
Deactivate command and use the same typeNumber
will create deactivated stone types until Activate(typeNumber)
is called.
The following stone objects can activate / deactivate other stones when
hit by the ball:
oEyes, oDynamo,
oSwitchAct,
oSwitchFixAct, oTimer
Ends series of deactivated stone creation.
Works together with the Deactivate
command.
 |