Contents:

Introduction

About Laserstrike

Welcome to Laserstrike. Laserstrike for windows was designed and created by Kevin Ng in 1993, and ran on windows 3.1. This new python version was written from scratch by Robin Fairey in 2006, and will allow Laserstrike to be played on most of today's operating systems.
Laserstrike is a strategy/puzzle game featuring laser tanks, mirrors, and all manner of obstacles and other game pieces. It also has a level editor to create your own puzzles, and the source is freely modifiable so if you know a small amount of python you can even create your own new game pieces to use in your levels.
Levels in the updated version can also be made larger than the standard 16x16 levels from the original.

Idea of the Game

The idea of the game is to shoot out the power source of the level, which is shielded by an iris.

Iris block The Iris Block

This is the iris power block. One laser shot will force the iris to open, revealing the power source. A second shot will destroy the power source, thus completing the level.

To shoot at the power block, you will have to find a way to clear a path for a laser beam to hit it. There are various other blocks such as mirrors and gates that will help or hinder your progress.

The Game

Blocks

Blocks can both hinder and help you. From level to level you will be slowly introduced to new blocks all the time, and the descriptions below may be useful to you.

Track Tank The Track Tank

Track Tanks fire lasers but can't be turned. As the name suggests, the tanks can move along tracks. To move a track tank, you must use an arrow block. Click with the left mouse button on the tank to shoot out a laser beam. Beware that it is possible to destroy a track tank by shooting it.

Track The Track Block

The tank can move along these tracks. There are always arrow blocks at both ends of the track to move the track tank with. Track Blocks can also be destroyed by laser fire.

Mirror The Mirror Block

These are one of the most commonly used blocks. They deflect laser fire 90 degrees when hit on the slanted golden mirror side. When hit on a flat non-mirror side, they will be pushed along.

Movable Block The Movable Block

Moveable blocks do one thing only, they move when they are hit by laser. Most of the time they are used to obstruct a laser path, so you may have to find a way to move it out of the way.

Steel Block The Steel Block

When a laser beam strikes a steel block, the block absorbs the energy and the laser can go no further. Steel blocks serve only as a permanent barrier.

Brick Block The Brick Block

Brick blocks are weaker than steel blocks and can be totally obliterated by two shots from a laser cannon.

Iris The Iris Power Block

Shoot these twice to complete the level. One shot will open the iris, revealing a vulnerable power source, the second shot will destroy the power source and complete the level.

Pod Tank The Pod Tank

These shoot laser beams just like a track tank. The difference is that pod tanks are not mounted on a track, they are welded in one place. However, if you shoot one, it will not be destroyed like a Track Tank, it will turn 90 degrees clockwise. This is very useful in some situations. Click with the left mouse button on the tank to shoot out a laser beam.

Gate Block The Gate Block

You might notice that Gate Blocks look like Steel Blocks but with two channels cut into them. This is to let lasers through. However, when a laser beam passes through a gate block, it closes up and then acts like a steel block. In other words, gate blocks will only allow one laser beam to pass through.

Arrow Block The Arrow Block

Click on an arrow block to move a track tank along a track in the direction the arrow itself is facing.

Acid The Acid Block

These slimy acidic puddles are strong enough to eat through anything, and that includes iris power blocks, so be careful! It can be pushed around using laser fire. To make it eat a block, push it into a block, or push the block on top of the acid if it is one you can move. However, once the acid puddle has eaten through a block, it will disappear, having been used up. Of course, acid blocks can't eat through other acid blocks.

Roatating Gate The Rotating Gate Block

These are similar to normal Gate Blocks, but when you have shot through it, it will rotate 90 degrees. You can fire as many times as you like through a rotating gate block.

Levels

Laserstrike is made up of different levels. To load a level, go to the "File" menu and select "Open...", then select the level you wish to play. When you complete a level you will not go straight to the next one. This is because Laserstrike was not designed solely as a sequential game. You can skip a level and go to the next one if you are having difficulties. It is less infuriating for someone if they can play any level they like, instead of being stuck for days on the same level.

Each level has an expected time for completion, and a hint about how to solve it. To view the time and the hint, go to the "Edit" menu and select "Level Properties...". Note that the time value is only a guide, you can take as long as you like to complete any of the levels.

Playing the levels is only half the game. Much fun can be had creating your own levels, and creating levels for other people to solve adds a competitive element to the game. Level creation takes place in the Level Editor.

The Timer

There is a timer at the bottom of the game window. This counts up, and times how long it takes you to finish a level. There is no time limit for any of the levels.

Level Editor

What does it do?
With the Level Editor, you can create levels from nothing, or edit and customise other levels.
How do I load the Level Editor?
The level editor is built into the game, so you don't have to load it. To change to edit mode, go to the "Edit" menu and select "Edit Mode". A window full of every different type of block will appear on screen, and you will be placed inedit mode..
How can I make a level from scratch?
Go to the "File" menu and select "New". This will pop up a window requesting the size of your new level. This can be anything from the exceedingly boring 1x1 level, up to any number of squares to a side. ENter your desired size (classic Laserstrike levels are 16 x 16), and hit OK - you will be presented with a blank area ready for you to build your level in.
How do I add blocks?
Select a block from the palette window by clicking on it. It will then be highlighted, and a zoomed-in copy of the block will appear in the palette. Now just click with the left mouse button on the screen where you wish to place the block. If you want to place a whole load of the same block quickly, hold down the left mouse button and drag around the screen.
How do I delete blocks?
Delete blocks by clicking on the block you want to erase with the right mouse button. You can hold and drag with the right mouse button down for quick erasing.
How do I load and save the level?
You will find full load and save options in the "File" menu. Click on one of these to load or save. If you are loading a level, find the level you wish to load and double-click on it. If you are saving, then you will have to name your level if you haven't saved it before.
How do I set the expected level time and helpful hint?
Go to the "Edit" menu and select "Level Properties...". When in edit mode you can modify the time value and helpful hint.

The new version

Options

The new version comes with a couple of extra options. To change the options go the "Options" menu and select "Options...". The 'sound' options allows you to toggle the sound effects, and the 'Rapid Fire' option allows you to fire lasers while another laser beam is still in play. This option was not available in the original and the puzzles are designed with this in mind. For the classic Laserstrike experience, this option should be switched off.

Credits

Extending Laserstrike

For those people who have a working knowledge of python, it is possible to create add-ons for the game that other people can install and use. New code files for new types of game block can be placed in the folder 'AdditionalEntities'. Images for the new entity can be placed in the folder 'images'. Here is example code for a new kind of Iris block that takes THREE hits to complete the level, instead of the usual two:
from LTEntity import LTEntity
from LTConstants import *

class Iris3(LTEntity):

    def __init__(self,*args,**kwargs):
        apply(LTEntity.__init__,(self,)+args,kwargs)
        self.setup_states(num_states=3, orientable=False)
        self.hits = 0
        self.images[0] = self.loadImage("iris3.gif")
        self.images[1] = self.loadImage("iris3_halfopen.gif")
        self.images[2] = self.loadImage("iris3_open.gif")

    def get_state(self):
        if self.hits >=2:
            return 2
        else:
            return self.hits

    def hit(self,laser):
        if self.hits>=2:
            self.playsound("EXPLOS.WAV")
            self.l.complete()
        else:
            self.playsound("IRISMOVE.WAV")

        self.hits += 1
        self.draw()
        return True #True to absorb the laser, False to pass it through

By placing this file into AdditionalEntities, the new iris design will appear in the palette when editing levels, and can be saved into a .las file. If other people then load your level, they must also have your custom entity installed in AdditionalEntities.

For examples of how the classic Laserstrike blocks are coded up, have a look in entities.py. If you want to make a tweak, such as making a pod tank that turns the opposite way, you can import that entity to your custom one and subclass it.