diff --git a/Manuals/MANUAL_EN_cart.md b/Manuals/MANUAL_EN_cart.md new file mode 100644 index 0000000..efa3556 --- /dev/null +++ b/Manuals/MANUAL_EN_cart.md @@ -0,0 +1,292 @@ +# Basic instruction manual: + +You can play using the keyboard (all functionality) or controllers in all of the ports (all functionality necessary for gameplay). + +## 1. Game Option Selection. +![Game options screen.](images/MainMenu.png) + +On the first screen, you can configure gameplay options: +* number of players (2 - 6) includes both human and computer-controlled players +* the initial amount of cash of each player (2K is the optimal value we chose, but for short games, it is worth choosing a higher value) +* gravity +* maximum wind strength (wind is drawn at the beginning of each round or during the round between turns, here we can choose how strong it can be): + * 1B - maximum wind strength: 5 + * 3B - maximum wind strength: 20 + * 5B - maximum wind strength: 40 + * 7B - maximum wind strength: 70 + * 9B - maximum wind strength: 99 +* number of rounds in a game +* missile speed (does not affect the flight path - only changes the apparent missile speed - does not change anything in the gameplay itself) +* frequency of suicides :) - if for a number of turns the game has not recorded hits (tanks are constantly shooting inaccurately), after one of such misses a tank commits suicide - here you determine how long they can "shooting for the stars" :) - if only people play the optimal setting is "norm", in the case of computer-controlled players ... you choose. +* The height (and undulation) of the mountains from almost flat (NL - Kingdom of the Netherlands), to soaring and high (NP - Federal Democratic Republic of Nepal) +* the way the walls (edges of the screen) work: + * none - projectiles that flew off the screen do not return (black color of the screen frame) + * wrap - the screen "wraps" and projectiles that flew to the right appear on the left side and vice versa (purple color of the screen frame) + * bump - the right and left walls deflect projectiles that want to fly through them (dark blue color of the screen frame) + * boxy - just like bump, except that the "ceiling" also reflects projectiles (green color of the screen frame) + * rand - at the beginning of each round, one of the above 4 ways the walls work is drawn. + +During gameplay, the current mode of the walls is represented by the color of the screen frame: +* none - black, +* wrap - purple, +* bump - dark blue, +* boxy - green. + +Select options with cursor keys or a controller. + +The [TAB], [SELECT] or second controller button (supported Joy 2B+ standard or compatible) key change the color of the mountains (3 versions to choose from). +If the cursor indicates the wind strength selection option "Wind" change the way the wind strength is drawn from "every round" to "every turn" and vice versa. Drawing every turn is indicated by the "?" sign next to the word "Wind". +If the cursor indicates the gravity selection option "Gravity" changes the procedure of falling the ground to a less impressive but faster one, and vice versa. The selection of fast ground fall is indicated by the letter "f" next to the word "Gravity". + +The [RETURN] key or a controller button moves to the next screen. + +## 2. Names of players and AI opponents +![Name of players and game level screen.](images/DiffMenu.png) + +The second screen is shown for each player. Here you can use the cursor keys or controller to select whether the tank will be driven by a human (HUMAN option) or a computer (other options). +The [TAB], [SELECT] or second controller button allows to choose which controller port the player will use. +The [INVERSE] or [OPTION] key allows you to select one of the 3 available tank shapes. +At the same time, you can enter the name of the selected player from the keyboard. +When the [RETURN] key is pressed or the controller button is pressed briefly, the screen switches to the next player until the difficulty levels for each player are selected. +The player's name can also be entered with the controller. After pressing and holding the button for more than 1s, you can use up/down movements to change the letter being entered, and left/right movements to change its position in the name. Releasing the button ends the name entry and returns to the level selection. + +If the name is not entered, it will be supplemented with the default name. + +## 3. Shopping screen (before each round) +![Shopping offensives screen.](images/PurOffensive.png) +![Shopping defensives screen.](images/PurDefensive.png) + +On this screen, you can make purchases of offensive and defensive weapons. Only those weapons that the player can afford are visible, along with information about the price and the number of units of a given weapon that will be obtained for that price. The information on the screen probably needs no more description. You move through the lists with the cursor keys (up and down) or with the controller, the [TAB] key or the left arrow, the left controller tilt or second controller button change the screen to defensive or offensive weapons, the [SPACE] key or the right arrow and also the controller to the right does the purchase of the indicated weapon. + +The [RETURN] key or the controller button press switches to the defensive weapon activation screen. Here you can activate previously bought defensive (or offensive after switching with [TAB], etc) weapons. + +![Defensives activation screen.](images/ActDefensive.png) + +This makes it possible to activate shields and others before the round starts. + +Another [RETURN] key or controller button press switches to the next player's shopping screen. +(For computer players this screen is not shown.) + +## 4. The main screen of the game +![Main game screen.](images/StatusLine.png) + +The status line shows which player is currently allowed to take a shot and a set of other information: +* player's tank name, +* active controller number or difficulty level of computer-controlled player (1-**Moron** - 8-**Unknown**), +* currently selected offensive weapon (symbol quantity and name), +* the player's remaining energy points and if he has an active defensive weapon that has its energy - in parentheses the energy level, +* the angle and the direction of the barrel set by the player, +* the shot strength set by the player (the maximum shot strength is limited by the player's energy - it can not exceed the energy * 10 . This means that you can fire weaker shots only when having a small amount of energy, +* the current round number, +* wind speed and direction, +* "computer" symbol if **Auto Defense** is active, +* in parentheses is the name of the active defensive weapon - if there is any activated by the player. + +The basic controls are simple enough - cursor keys or controller: left/right - change the angle of the barrel, up/down - change the the force of the shot. +Other functions: + +* [SPACE] or controller button pressed briefly - firing a shot. +* [TAB] or [SELECT] or second controller button - selection of offensive weapons (this option is not available directly with one button controller - you need to select Inventory). | +* [I] or longer holding the controller button - go to Inventory. It is a screen (actually two) with the same layout as the shopping menu, it also works similarly except that here you don't buy weapons, but choose one of the offensive ones to shoot or activate a defensive weapon. | +* [A] or [OPTION] - go directly to the defensive weapons activation. +* [M] - disable/enable background music. | +* [S] - disable/enable effect sounds. | +* [START] - speed up some game animations. | +* [O] - end the current game and jump to the Game Over screen with a summary. The summary of the results does not take into account the current round of the game, but only the rounds completed earlier. This corresponds to pressing the [ESC] key with the difference that the summary and credits are displayed. | +* [START] + [OPTION] - immediately force the end of the game (Game Over), just like [O] but without confirmation. +* [G] - changes the mountain shading | +* [ESC] - during the entire game at any time (unless the computer is playing, then sometimes you have to wait a while) you can press the [ESC] key, which allows you to abort the game and return to the beginning (of course, there is protection against accidental pressing). | +* [Y] - when asked to abort or terminate the game - confirmation | +* [CTRL] + [HELP] - Toggle "visual debug" mode. It displays distances measured, laser aiming, and aiming technique. It leaves a mess on the screen, but it does not impair the game, just makes it a bit harder. | + +## 5. Game mechanics - offensive weapons + +### Energy of tanks. +At the beginning of each round, each tank has 99 ash units of energy. +Tanks' energy is depleted in 3 ways: +* one unit after each shot +* while falling (one pixel down -2 units). +* when a projectile hits the tank or next to it - and here the amount of energy subtracted depends on the distance from the center of the explosion and the type/power of the projectile. + +### How energy and money works: +After each round the amount of money gained/lost is calculated, this is done on the basis of two variables accumulated by each tank during the round. These variables are: + +`gain` - energy "captured" from tanks hit (also if you hit yourself :) and here's the catch, if you have very little energy left it can be profitable to hit yourself with a powerful weapon! + +`lose` - energy lost due to explosion/fall (and here it is important - to count the total loss of energy even if the tank has less at the moment of hit). + +In addition, the tank that won the round has a parameter gain (captured from hit tanks energy) increased by the remaining energy at the end of the round (because it did not die and should have it - although it also happens otherwise :) ) + +Specifically: + +### After each round: +`money = money + (20 * (gain+energy))`. + +`money = money - (10 * lose)`. + +`if money <0 then money=0`. + +(at the start of each round `gain` and `lose` have a value of 0). + +During a round, if another tank is hit as a result of a shot fired by a tank, the tank firing the shot "gets the energy" taken away from the hit tank. +### tank taking a shot: +`gain = gain + EnergyDecrease`. +### tank hit: +`lose = lose + EnergyDecrease`. + +Where `EnergyDecrease` is the loss of energy due to the hit. + +Of course, at the same time the hit tank loses the amount of energy stored in `EnergyDecrease`, except that here the loss cannot exceed the energy you have. + +## How a hit works. +Each weapon that results in an explosion has its own blast radius. + +After the explosion, every tank in its range loses energy. + +It works in such a way that if the hit is exactly on the center point of the tank `EnergyDecrease` receives the maximum value for the weapon, and for each pixel of distance from the center of the tank this value is reduced by 8. + +For example, if a hit with the Baby Missile weapon hits the center of the tank perfectly, it will lose exactly 88 units of energy (plus what it loses falling after the explosion). +If you hit with the same weapon at a distance of 10 pixels from the center of the tank, the loss will be only 8 units. + +And here are the values of maximum energy loss for individual weapons. If a weapon explodes several times, each explosion is calculated independently (additional values in the table): + +Offensive weapons and maximum energy loss: +* Baby Missile: 88 +* Missile: 136 +* Baby Nuke: 200 +* Nuke: 240 +* LeapFrog: 136 112 112 +* Funky Bomb: 168 88 (* 5) +* MIRV: 136 (* 5) +* Death's Head: 240 (* 5) +* Napalm: 40 (this weapon is different and the distance from the center is not determined, simply any tank in range of the flames loses 40 units of energy) +* Hot Napalm: 80 (the rule is the same as in Napalm) +* Baby Roller: 88 +* Roller: 168 +* Heavy Roller: 240 +* Riot Charge: 0 (no energy is subtracted, but a portion of the ground upward from the hit point in a 31-pixel radius is removed) +* Riot Blast: 0 (as in Riot Charge, but in a radius of 61 pixels) +* Riot Bomb: 0 (no energy is subtracted, but the ground in a radius of 17 pixels from the hit point is destroyed - as in the case of Missile. The weapon is useful for digging out after being buried, or for undermining an opponent) +* Heavy Riot Bomb: 0 (as in Riot Bomb, but the explosion radius is 29 pixels from the point of impact - as in the case of Nuke) +* Baby Digger: 0 (no energy is subtracted, but a portion of the ground is undermined in a radius of 60 pixels from the point of impact) +* Digger: 0 (as above - greater undermining) +* Heavy Digger: 0 (as above - greatest undermining) +* Sandhog: 0 (as above - another way of undermining) +* Heavy Sandhog: 0 (as above - largest dig) +* Dirt Clod: 0 (no energy is subtracted, but a ground ball with a radius of 12 pixels from the hit point is created. The weapon is useful for burying the opponent) +* Dirt Ball: 0 (as above, but the radius of the ball is 22 pixels) +* Ton of Dirt: 0 (as above, but the radius of the ball is 31 pixels) +* Liquid Dirt: 0 (floods the ground at the point of hit with liquid soil, filling in the depressions) +* Stomp: 0 (no energy is subtracted, but all tanks within a radius depending on the force of the shot are pushed back, and after being pushed back they may fall or be buried. With a maximum force of 990 units, the radius of action is about 60 pixels) +* Laser: 100 (but here it is also different - only in a case of a direct hit simply subtract 100 units of energy - that is, the tank always dies) + +Large points received by the player is the number of tanks that died earlier than him. If any of the other tanks capitulated earlier (**White Flag**) is not added to those that died and does not give points. +Only these points determine the order in the summary. + +## 6. And now for defensive weapons: +* **White Flag** - causes the surrender of the player (can sometimes be useful in a hopeless situation). The advantage is that by surrendering you don't give a big point to your opponents and don't cause one of them to gain by killing us, you also limit the loss of your energy and also cash. An important note - this is the only defensive weapon that can be deactivated. All you have to do is re-enter inventory and once again select its activation. + +* **Battery** - when activated, it recharges the tank's energy to full (99 units). It is one of three defensive weapons that does not deactivate other defensive weapons when used. + +* **Hovercraft** - a weapon that allows the tank to move. It has its own fuel supply in form of electric eels and in addition, it can be activated multiple times during the same turn, and after using it, you can activate another defensive weapon and fire a shot in the same turn. After using it, the tank rises above the mountains and using the cursor keys or a controller you can move the tank to a new position. [SPACE] or the controller button cause the tank to land in a new place. You can fly until the tank runs out of eels (presented on the status bar like the energy of a defensive weapon), if the eel fuel runs out the tank will fall down on its own. It is not possible to land on other tanks. + +* **Parachute** - does not protect against loss of energy due to a neighboring explosion, makes you not lose energy during ONE fall. After such a fall, it deactivates and a new parachute must be activated. + +* **Shield** - the simplest shield works exactly the opposite of **Parachute**, it does not protect against energy loss while falling, instead it protects against energy loss caused by ONE adjacent explosion. It protects once, no matter how strong the explosion is (whether tis but a scratch or a direct hit with a nuke), and deactivates immediately afterward. + +* **Heavy Shield** - a shield with its own energy (at the start of 99 units), it works the same as **Shield** (does not protect against falling) with the exception that it has its own energy resource. When exploding, the energy of this shield is reduced first, and if it reaches 0, the shield deactivates and further reduces the tank's energy. Due to this action, a tank with this type of shield can be "killed" by undermining it, because falling reduces the energy of the tank and not the shield. + +* **Force Shield** - the strongest shield - works just like Heavy Shield only that it is combined with **Parachute**. What is important in this case, falling does not take energy away from the shield or the tank. It is only taken away by hits. + +* **Bouncy Castle** - a passive-aggressive weapon :). It works as follows - in a case of a direct tank hit (and shield), it causes the projectile to "bounce" in the opposite direction with the same force with which it was fired. In the absence of wind and a difference in level, the weapon then hits the tank that fired it. After such a bounce, it deactivates. As the weapon reacts in this way only to precise hits, it is also works like **Heavy Shield** and has 99 units at the start (we will probably have to rethink this value and give a smaller one here). + +* **Mag Deflector** - the second passive-aggressive weapon :) . In case of a direct hit on a tank (and shield), it causes the hit point to move randomly to the left or right side of the protected tank, but not very far, so you can get "shrapnel" with stronger weapons. As in the case of **Bouncy Castle**, it is also a shield that corresponds to the action of **Heavy Shield** and has 99 units at the start (probably here we will have also to rethink this value and give a smaller one). + +* **Nuclear Winter** - adds nothing, takes nothing away :) - in fact, it is not so much a defensive weapon as a double-edged one. It floods the area with "radioactive" fallout, which is ordinary soil. If you do not have at hand any weapon that digs up the terrain, and for that a shield (preferably disposable), then after such "fallout" you will have to shoot yourself - because being underground is otherwise impossible. Alternatively, **White Flag** always remains. + +* **Long Schlong** - a special weapon :) - Costs a lot, doesn't really help with anything (except possibly digging yourself out but only when slightly buried but it has a cool name and looks cool :) - It can be activated independently of other defensive weapons and remains active until the end of the round (it cannot be deactivated). + +* **Lazy Boy** - it is not actually a defensive weapon. It is an aiming aid. When it is activated, the tank tries to aim at the nearest enemy and automatically adjusts the power of the shot and angle. If it has too little energy, it can sometimes aim wrong (it uses a method like **Cyborg** to aim). Like **Battery**, it does not deactivate other defensive weapons when used. Note: There is no point in activating this weapon before the round, targeting will not take place because there is nothing to target yet. + +* **Lazy Darwin** - works just like **Lazy Boy** but targets the weakest opponent. In this weapon, after automatic targeting, "visual targeting" remains active, so you can easily change the target and independently select another opponent by seeing if you hit him. + +* **Auto Defense** - activates the mode of automatic activation of defensive weapons. After its activation, the tank automatically activates the strongest shield it has (consuming it, of course) at any time when there is no shield (also between shots of other players). At the same time, if the tank's energy level drops below 30 units, it automatically activates **Battery** if it has it. This weapon remains active until the end of the round and is indicated by the "computer" symbol before the name of the active defensive weapon in the status line. It is the second defensive weapon that does not deactivate other defensive weapons when used. + +* **Spy Hard** - Help for the forgetful :) . When activated, it shows a preview of information about the next opponents one by one. Left/Right - changes the "spied" tank. Fire/Space/Return/Esc - ends the "spying". This is the last defensive weapon, which does not deactivate other defensive weapons when used. + +Due to the different warhead tracking system of **MIRV** weapons, the **Bouncy Castle** and **Mag Deflector** defensive weapons only use the shielding function when hit by these weapons. In addition, **MIRV** warheads do not bounce or fly through sidewalls when falling! + +None of the shields protect against **Napalm**. **Bouncy Castle** or **Mag Deflector** on a direct hit will deflect it or carry it past, but just hit very close to a tank and its shield will not save it. + +**White Flag**, **Hovercraft** and **Nuclear Winter** weapons, when selected, require activation, this is accomplished by "firing a shot" after the selection of that weapon. Of course, the shot of the offensive weapon is then not fired, but only the selected defensive weapon is activated. + +You can only have one defensive weapon active at a time (except **Long Schlong** of course :) ). You can always change the decision and activate another defensive weapon or deactivate **White Flag** before firing. + +And of course, activating a weapon when you already have some other weapon activated causes the loss of the previous one (no returns :) ). + +## 7. "Other" weapons: + +* **Best F...g Gifts** - this is a 'loot box', not a weapon per se. Buying it draws one of the offensive or (rarely) defensive weapons and adds it to the player's arsenal. It is a lottery in which you can lose (if you draw a weapon cheaper than the **Best F...g Gifts** price) but also gain. You can get a weapon otherwise not affordable at all! There is a small probability of drawing by **Best F...g Gifts** itself :). You can then try to use it in battle. + +## 8. AI opponents: + +The game has 8 difficulty levels of computer-controlled opponents. Or actually 7 different ones and one "surprise". Each has its own way of buying defensive and offensive weapons and a different method of target selection and targeting itself, as well as weapon selection. They are arranged in the list according to increasing "skills": + +* **Moron** - the dumbest of opponents (which does not mean the safest). Shoots completely at random using only one weapon - **Baby Missile**. He doesn't buy anything and doesn't know how to use defensive weapons. + +* **Shooter** - This opponent does not shoot blindly. He chooses one direction for himself. Based on his own position - he shoots in the direction from which there is more space assuming that this is where the other tanks are. He starts firing from a high angle and shot after shot changes this angle to a lower and lower angle trying to fire the entire area on the chosen side. He always fires with the best weapon he has (the highest on the list of weapons he has - that is, not necessarily the best). He does not use defensive weapons even though he buys them! At the beginning of the round, he makes 1 attempt to buy defensive weapons (only from the **Battery** - **Strong Parachute** range) and 4 offensive weapons (from the **Missile** - **Heavy Roller** range). + +* **Poolshark** - When attacking, he sets the nearest tank as his target, then selects the angle of the shot, and tries to select its strength by drawing it from the selected range. He always shoots with the best weapon he has. He uses defensive weapons. With a probability of 1:3, he activates the best defensive weapon he owns (the highest on the list of weapons he owns - that is, not necessarily the best) before firing. If his energy level drops below 30 units - he uses **Battery** (of course, if he bought it before), if the energy drops below 5 and he has no **Battery** he surrenders - **White Flag**. At the beginning of the round he makes 1 attemp to buy defensive weapons and 6 offensive weapons. + +* **Tosser** - When attacking, he acts exactly like **Poolshark** however, he may have a "better" weapon inventory due to a different purchase tactic. He always activates the best defensive weapon he has before shooting. And just like **Poolshark** he uses **Battery** and **White Flag**. At the beginning of the round, he assesses how much money he has and depending on that, he makes (money/5100) attempts to buy defensive weapons and then checks again how much money he has left and makes (money/1250) attempts to buy offensive weapons. + +* **Chooser** - Takes as a target the weakest opponent (with the least amount of energy) and aims very precisely, but before the shot the energy of the shot is modified by the parameter of luck :) , that is, despite the precise aiming it does not always hit. He shoots with the best weapon he has unless the target is close. Then he changes his weapon to **Baby Missile** to avoid hitting himself. He always activates the best defensive weapon he has before shooting and, like **Poolshark**, uses **Battery** and **White Flag**. He purchases just like **Tosser**. + +* **Spoiler** - He shoots exactly like **Chooser** except that he has more luck :) , which means that even if he doesn't hit the target of his choice, it can be a more precise shot than **Chooser**. If he is unable to hit his chosen target, he tries to choose another target that he can accurately hit. He uses defensive weapons exactly like **Chooser**. At the beginning of the round, he assesses how much money he has and depending on that, he makes (money/5100) attempts to buy defensive weapons and then checks again how much money he has left and makes (money/320) attempts to buy offensive weapons. When buying defensive weapons, he buys only strong and precise weapons - that is, weapons that won't accidentally hurt him. + +* **Cyborg** - Takes aim at the weakest opponent (with the least amount of energy) but prefers human-controlled opponents. If he is unable to hit his chosen target, he tries to choose another target that he can accurately hit. Aims very accurately and in the vast majority of cases hits on the first shot. He fires the shot with the best weapon he has unless the target is close. Then he changes his weapon to **Baby Missile** to avoid hitting himself. He uses defensive weapons exactly like **Chooser** but if he has more than 2 pieces of **Battery** he uses them if the energy decreases below 60 units.. He shops exactly like **Spoiler**. + +* **Unknown** - Before firing each shot, he randomly chooses a course of action from **Poolshark** to **Cyborg** and applies his tactics. However, the tactics of weapon purchases are always identical to **Tosser**. + +Trying to buy a weapon (offensive or defensive) is as follows: +First, one of the weapons is drawn (among all possible offensive or defensive weapons). Then a check is performed to see if the drawn weapon is in the list of weapons possible for purchase by the tank. If not, no weapon is bought in this trial, and if so, its price is checked. If the tank has that much money, the weapon is bought, otherwise the trial ends without making a purchase. + +Weapons purchased by: **Shooter**, **Poolshark**, **Tosser** and **Chooser**: +Offensive weapons: +* Missile +* Baby Nuke +* Nuke +* LeapFrog +* Funky Bomb +* MIRV +* Death's Head +* Napalm +* Hot Napalm +* Baby Roller +* Roller +* Heavy Roller + +Defensive weapons: +* Battery +* Parachute +* Strong Parachute +* Mag Deflector +* Shield +* Heavy Shield +* Force Shield +* Bouncy Castle + +Weapons purchased by: **Spoiler** and **Cyborg**: +Offensive weapons: +* Missile +* Baby Nuke +* Nuke +* Hot Napalm + +Defensive weapons: +* Battery +* Strong Parachute +* Mag Deflector +* Heavy Shield +* Force Shield +* Bouncy Castle diff --git a/Manuals/man_cart_txt_EN.asm b/Manuals/man_cart_txt_EN.asm index a9f0806..59b3975 100644 --- a/Manuals/man_cart_txt_EN.asm +++ b/Manuals/man_cart_txt_EN.asm @@ -1,889 +1,1912 @@ - dta d" Basic instruction manual: " - dta d"--------------------------- " - dta d" " - dta d"You can play using the keyboard (all " - dta d"functionality) or controllers in all of " - dta d"the ports (all functionality necessary " - dta d"for gameplay). " - dta d" " - dta d" 1. Game Option Selection. " - dta d"--------------------------- " - dta d" " - dta d" " - dta d"On the first screen, you can configure " - dta d"gameplay options: " - dta d"* number of players (2 - 6) includes " - dta d"both human and computer-controlled " - dta d"players " - dta d"* the initial amount of cash of each " - dta d"player (2K is the optimal value we " - dta d"chose, but for short games, it is worth " - dta d"choosing a higher value) " - dta d"* gravity " - dta d"* maximum wind strength (wind is drawn " - dta d"at the beginning of each round or during" - dta d"the round between turns, here we can " - dta d"choose how strong it can be): " - dta d" * 1B - maximum wind strength: 5 " - dta d" * 3B - maximum wind strength: 20 " - dta d" * 5B - maximum wind strength: 40 " - dta d" * 7B - maximum wind strength: 70 " - dta d" * 9B - maximum wind strength: 99 " - dta d"* number of rounds in a game " - dta d"* missile speed (does not affect the " - dta d"flight path - only changes the apparent " - dta d"missile speed - does not change anything" - dta d"in the gameplay itself) " - dta d"* frequency of suicides :) - if for a " - dta d"number of turns the game has not " - dta d"recorded hits (tanks are constantly " - dta d"shooting inaccurately), after one of " - dta d"such misses a tank commits suicide - " - dta d"here you determine how long they can " - dta d"""shooting for the stars"" :) - if only " - dta d"people play the optimal setting is " - dta d"""norm"", in the case of " - dta d"computer-controlled players ... you " - dta d"choose. " - dta d"* The height (and undulation) of the " - dta d"mountains from almost flat (NL - Kingdom" - dta d"of the Netherlands), to soaring and high" - dta d"(NP - Federal Democratic Republic of " - dta d"Nepal) " - dta d"* the way the walls (edges of the " - dta d"screen) work: " - dta d"* none - projectiles that flew off the " - dta d"screen do not return (black color of the" - dta d"screen frame) " - dta d"* wrap - the screen ""wraps"" and " - dta d"projectiles that flew to the right " - dta d"appear on the left side and vice versa " - dta d"(purple color of the screen frame) " - dta d"* bump - the right and left walls " - dta d"deflect projectiles that want to fly " - dta d"through them (dark blue color of the " - dta d"screen frame) " - dta d"* boxy - just like bump, except that the" - dta d"""ceiling"" also reflects projectiles " - dta d"(green color of the screen frame) " - dta d"* rand - at the beginning of each round," - dta d"one of the above 4 ways the walls work " - dta d"is drawn. " - dta d" " - dta d"During gameplay, the current mode of the" - dta d"walls is represented by the color of the" - dta d"screen frame: " - dta d"* none - black, " - dta d"* wrap - purple, " - dta d"* bump - dark blue, " - dta d"* boxy - green. " - dta d" " - dta d"Select options with cursor keys or a " - dta d"controller. " - dta d" " - dta d"The [TAB], [SELECT] or second controller" - dta d"button (supported Joy 2B+ standard or " - dta d"compatible) key change the color of the " - dta d"mountains (3 versions to choose from). " - dta d"If the cursor indicates the wind " - dta d"strength selection option ""Wind"" change " - dta d"the way the wind strength is drawn from " - dta d"""every round"" to ""every turn"" and vice " - dta d"versa. Drawing every turn is indicated " - dta d"by the ""?"" sign next to the word ""Wind""." - dta d"If the cursor indicates the gravity " - dta d"selection option ""Gravity"" changes the " - dta d"procedure of falling the ground to a " - dta d"less impressive but faster one, and vice" - dta d"versa. The selection of fast ground fall" - dta d"is indicated by the letter ""f"" next to " - dta d"the word ""Gravity"". " - dta d" " - dta d"The [RETURN] key or a controller button " - dta d"moves to the next screen. " - dta d" " - dta d" 2. Names of players and AI opponents " - dta d"-------------------------------------- " - dta d" " - dta d" " - dta d"The second screen is shown for each " - dta d"player. Here you can use the cursor keys" - dta d"or controller to select whether the tank" - dta d"will be driven by a human (HUMAN option)" - dta d"or a computer (other options). " - dta d"The [TAB], [SELECT] or second controller" - dta d"button allows to choose which controller" - dta d"port the player will use. " - dta d"The [INVERSE] or [OPTION] key allows you" - dta d"to select one of the 3 available tank " - dta d"shapes. " - dta d"At the same time, you can enter the name" - dta d"of the selected player from the " - dta d"keyboard. " - dta d"When the [RETURN] key is pressed or the " - dta d"controller button is pressed briefly, " - dta d"the screen switches to the next player " - dta d"until the difficulty levels for each " - dta d"player are selected. " - dta d"The player's name can also be entered " - dta d"with the controller. After pressing and " - dta d"holding the button for more than 1s, you" - dta d"can use up/down movements to change the " - dta d"letter being entered, and left/right " - dta d"movements to change its position in the " - dta d"name. Releasing the button ends the name" - dta d"entry and returns to the level " - dta d"selection. " - dta d" " - dta d"If the name is not entered, it will be " - dta d"supplemented with the default name. " - dta d" " - dta d" 3. Shopping screen (before each round) " - dta d"----------------------------------------" - dta d" " - dta d" " - dta d" " - dta d"On this screen, you can make purchases " - dta d"of offensive and defensive weapons. Only" - dta d"those weapons that the player can afford" - dta d"are visible, along with information " - dta d"about the price and the number of units " - dta d"of a given weapon that will be obtained " - dta d"for that price. The information on the " - dta d"screen probably needs no more " - dta d"description. You move through the lists " - dta d"with the cursor keys (up and down) or " - dta d"with the controller, the [TAB] key or " - dta d"the left arrow, the left controller tilt" - dta d"or second controller button change the " - dta d"screen to defensive or offensive " - dta d"weapons, the [SPACE] key or the right " - dta d"arrow and also the controller to the " - dta d"right does the purchase of the indicated" - dta d"weapon. " - dta d" " - dta d"The [RETURN] key or the controller " - dta d"button press switches to the defensive " - dta d"weapon activation screen. Here you can " - dta d"activate previously bought defensive (or" - dta d"offensive after switching with [TAB], " - dta d"etc) weapons. " - dta d" " - dta d" " - dta d" " - dta d"This makes it possible to activate " - dta d"shields and others before the round " - dta d"starts. " - dta d" " - dta d"Another [RETURN] key or controller " - dta d"button press switches to the next " - dta d"player's shopping screen. " - dta d"(For computer players this screen is not" - dta d"shown.) " - dta d" " - dta d" 4. The main screen of the game " - dta d"-------------------------------- " - dta d" " - dta d" " - dta d"The status line shows which player is " - dta d"currently allowed to take a shot and a " - dta d"set of other information: " - dta d"* player's tank name, " - dta d"* active controller number or difficulty" - dta d"level of computer-controlled player " - dta d"(1-**Moron** - 8-**Unknown**), " - dta d"* currently selected offensive weapon " - dta d"(symbol quantity and name), " - dta d"* the player's remaining energy points " - dta d"and if he has an active defensive weapon" - dta d"that has its energy - in parentheses the" - dta d"energy level, " - dta d"* the angle and the direction of the " - dta d"barrel set by the player, " - dta d"* the shot strength set by the player " - dta d"(the maximum shot strength is limited by" - dta d"the player's energy - it can not exceed " - dta d"the energy * 10 . This means that you " - dta d"can fire weaker shots only when having a" - dta d"small amount of energy, " - dta d"* the current round number, " - dta d"* wind speed and direction, " - dta d"* ""computer"" symbol if **Auto Defense** " - dta d"is active, " - dta d"* in parentheses is the name of the " - dta d"active defensive weapon - if there is " - dta d"any activated by the player. " - dta d" " - dta d"The basic controls are simple enough - " - dta d"cursor keys or controller: left/right - " - dta d"change the angle of the barrel, up/down " - dta d"- change the the force of the shot. " - dta d"Other functions: " - dta d" " - dta d"* [SPACE] or controller button pressed " - dta d"briefly - firing a shot. " - dta d"* [TAB] or [SELECT] or second controller" - dta d"button - selection of offensive weapons " - dta d"(this option is not available directly " - dta d"with one button controller - you need to" - dta d"select Inventory). | " - dta d"* [I] or longer holding the controller " - dta d"button - go to Inventory. It is a screen" - dta d"(actually two) with the same layout as " - dta d"the shopping menu, it also works " - dta d"similarly except that here you don't buy" - dta d"weapons, but choose one of the offensive" - dta d"ones to shoot or activate a defensive " - dta d"weapon. | " - dta d"* [A] or [OPTION] - go directly to the " - dta d"defensive weapons activation. " - dta d"* [M] - disable/enable background music." - dta d"| " - dta d"* [S] - disable/enable effect sounds. | " - dta d"* [START] - speed up some game " - dta d"animations. | " - dta d"* [O] - end the current game and jump to" - dta d"the Game Over screen with a summary. The" - dta d"summary of the results does not take " - dta d"into account the current round of the " - dta d"game, but only the rounds completed " - dta d"earlier. This corresponds to pressing " - dta d"the [ESC] key with the difference that " - dta d"the summary and credits are displayed. |" - dta d"* [START] + [OPTION] - immediately force" - dta d"the end of the game (Game Over), just " - dta d"like [O] but without confirmation. " - dta d"* [G] - changes the mountain shading | " - dta d"* [ESC] - during the entire game at any " - dta d"time (unless the computer is playing, " - dta d"then sometimes you have to wait a while)" - dta d"you can press the [ESC] key, which " - dta d"allows you to abort the game and return " - dta d"to the beginning (of course, there is " - dta d"protection against accidental pressing)." - dta d"| " - dta d"* [Y] - when asked to abort or terminate" - dta d"the game - confirmation | " - dta d"* [CTRL] + [HELP] - Toggle ""visual " - dta d"debug"" mode. It displays distances " - dta d"measured, laser aiming, and aiming " - dta d"technique. It leaves a mess on the " - dta d"screen, but it does not impair the game," - dta d"just makes it a bit harder. | " - dta d" " - dta d" 5. Game mechanics - offensive weapons " - dta d"--------------------------------------- " - dta d" " - dta d" Energy of tanks. " - dta d"------------------ " - dta d"At the beginning of each round, each " - dta d"tank has 99 ash units of energy. " - dta d"Tanks' energy is depleted in 3 ways: " - dta d"* one unit after each shot " - dta d"* while falling (one pixel down -2 " - dta d"units). " - dta d"* when a projectile hits the tank or " - dta d"next to it - and here the amount of " - dta d"energy subtracted depends on the " - dta d"distance from the center of the " - dta d"explosion and the type/power of the " - dta d"projectile. " - dta d" " - dta d" How energy and money works: " - dta d"----------------------------- " - dta d"After each round the amount of money " - dta d"gained/lost is calculated, this is done " - dta d"on the basis of two variables " - dta d"accumulated by each tank during the " - dta d"round. These variables are: " - dta d" " - dta d"gain - energy ""captured"" from tanks hit " - dta d"(also if you hit yourself :) and here's " - dta d"the catch, if you have very little " - dta d"energy left it can be profitable to hit " - dta d"yourself with a powerful weapon " - dta d" " - dta d"lose - energy lost due to explosion/fall" - dta d"(and here it is important - to count the" - dta d"total loss of energy even if the tank " - dta d"has less at the moment of hit). " - dta d" " - dta d"In addition, the tank that won the round" - dta d"has a parameter gain (captured from hit " - dta d"tanks energy) increased by the remaining" - dta d"energy at the end of the round (because " - dta d"it did not die and should have it - " - dta d"although it also happens otherwise :) ) " - dta d" " - dta d"Specifically: " - dta d" " - dta d" After each round: " - dta d"------------------- " - dta d"money = money + (20 * (gain+energy)). " - dta d" " - dta d"money = money - (10 * lose). " - dta d" " - dta d"if money <0 then money=0. " - dta d" " - dta d"(at the start of each round gain and " - dta d"lose have a value of 0). " - dta d" " - dta d"During a round, if another tank is hit " - dta d"as a result of a shot fired by a tank, " - dta d"the tank firing the shot ""gets the " - dta d"energy"" taken away from the hit tank. " - dta d" tank taking a shot: " - dta d"--------------------- " - dta d"gain = gain + EnergyDecrease. " - dta d" tank hit: " - dta d"----------- " - dta d"lose = lose + EnergyDecrease. " - dta d" " - dta d"Where EnergyDecrease is the loss of " - dta d"energy due to the hit. " - dta d" " - dta d"Of course, at the same time the hit tank" - dta d"loses the amount of energy stored in " - dta d"EnergyDecrease, except that here the " - dta d"loss cannot exceed the energy you have. " - dta d" " - dta d" How a hit works. " - dta d"------------------ " - dta d"Each weapon that results in an explosion" - dta d"has its own blast radius. " - dta d" " - dta d"After the explosion, every tank in its " - dta d"range loses energy. " - dta d" " - dta d"It works in such a way that if the hit " - dta d"is exactly on the center point of the " - dta d"tank EnergyDecrease receives the maximum" - dta d"value for the weapon, and for each pixel" - dta d"of distance from the center of the tank " - dta d"this value is reduced by 8. " - dta d" " - dta d"For example, if a hit with the Baby " - dta d"Missile weapon hits the center of the " - dta d"tank perfectly, it will lose exactly 88 " - dta d"units of energy (plus what it loses " - dta d"falling after the explosion). " - dta d"If you hit with the same weapon at a " - dta d"distance of 10 pixels from the center of" - dta d"the tank, the loss will be only 8 units." - dta d" " - dta d"And here are the values of maximum " - dta d"energy loss for individual weapons. If a" - dta d"weapon explodes several times, each " - dta d"explosion is calculated independently " - dta d"(additional values in the table): " - dta d" " - dta d"Offensive weapons and maximum energy " - dta d"loss: " - dta d"* Baby Missile: 88 " - dta d"* Missile: 136 " - dta d"* Baby Nuke: 200 " - dta d"* Nuke: 240 " - dta d"* LeapFrog: 136 112 112 " - dta d"* Funky Bomb: 168 88 (* 5) " - dta d"* MIRV: 136 (* 5) " - dta d"* Death's Head: 240 (* 5) " - dta d"* Napalm: 40 (this weapon is different " - dta d"and the distance from the center is not " - dta d"determined, simply any tank in range of " - dta d"the flames loses 40 units of energy) " - dta d"* Hot Napalm: 80 (the rule is the same " - dta d"as in Napalm) " - dta d"* Baby Roller: 88 " - dta d"* Roller: 168 " - dta d"* Heavy Roller: 240 " - dta d"* Riot Charge: 0 (no energy is " - dta d"subtracted, but a portion of the ground " - dta d"upward from the hit point in a 31-pixel " - dta d"radius is removed) " - dta d"* Riot Blast: 0 (as in Riot Charge, but " - dta d"in a radius of 61 pixels) " - dta d"* Riot Bomb: 0 (no energy is subtracted," - dta d"but the ground in a radius of 17 pixels " - dta d"from the hit point is destroyed - as in " - dta d"the case of Missile. The weapon is " - dta d"useful for digging out after being " - dta d"buried, or for undermining an opponent) " - dta d"* Heavy Riot Bomb: 0 (as in Riot Bomb, " - dta d"but the explosion radius is 29 pixels " - dta d"from the point of impact - as in the " - dta d"case of Nuke) " - dta d"* Baby Digger: 0 (no energy is " - dta d"subtracted, but a portion of the ground " - dta d"is undermined in a radius of 60 pixels " - dta d"from the point of impact) " - dta d"* Digger: 0 (as above - greater " - dta d"undermining) " - dta d"* Heavy Digger: 0 (as above - greatest " - dta d"undermining) " - dta d"* Sandhog: 0 (as above - another way of " - dta d"undermining) " - dta d"* Heavy Sandhog: 0 (as above - largest " - dta d"dig) " - dta d"* Dirt Clod: 0 (no energy is subtracted," - dta d"but a ground ball with a radius of 12 " - dta d"pixels from the hit point is created. " - dta d"The weapon is useful for burying the " - dta d"opponent) " - dta d"* Dirt Ball: 0 (as above, but the radius" - dta d"of the ball is 22 pixels) " - dta d"* Ton of Dirt: 0 (as above, but the " - dta d"radius of the ball is 31 pixels) " - dta d"* Liquid Dirt: 0 (floods the ground at " - dta d"the point of hit with liquid soil, " - dta d"filling in the depressions) " - dta d"* Stomp: 0 (no energy is subtracted, but" - dta d"all tanks within a radius depending on " - dta d"the force of the shot are pushed back, " - dta d"and after being pushed back they may " - dta d"fall or be buried. With a maximum force " - dta d"of 990 units, the radius of action is " - dta d"about 60 pixels) " - dta d"* Laser: 100 (but here it is also " - dta d"different - only in a case of a direct " - dta d"hit simply subtract 100 units of energy " - dta d"- that is, the tank always dies) " - dta d" " - dta d"Large points received by the player is " - dta d"the number of tanks that died earlier " - dta d"than him. If any of the other tanks " - dta d"capitulated earlier (**White Flag**) is " - dta d"not added to those that died and does " - dta d"not give points. " - dta d"Only these points determine the order in" - dta d"the summary. " - dta d" " - dta d" 6. And now for defensive weapons: " - dta d"----------------------------------- " - dta d"* **White Flag** - causes the surrender " - dta d"of the player (can sometimes be useful " - dta d"in a hopeless situation). The advantage " - dta d"is that by surrendering you don't give a" - dta d"big point to your opponents and don't " - dta d"cause one of them to gain by killing us," - dta d"you also limit the loss of your energy " - dta d"and also cash. An important note - this " - dta d"is the only defensive weapon that can be" - dta d"deactivated. All you have to do is " - dta d"re-enter inventory and once again select" - dta d"its activation. " - dta d" " - dta d"* **Battery** - when activated, it " - dta d"recharges the tank's energy to full (99 " - dta d"units). It is one of three defensive " - dta d"weapons that does not deactivate other " - dta d"defensive weapons when used. " - dta d" " - dta d"* **Hovercraft** - a weapon that allows " - dta d"the tank to move. It has its own fuel " - dta d"supply in form of electric eels and in " - dta d"addition, it can be activated multiple " - dta d"times during the same turn, and after " - dta d"using it, you can activate another " - dta d"defensive weapon and fire a shot in the " - dta d"same turn. After using it, the tank " - dta d"rises above the mountains and using the " - dta d"cursor keys or a controller you can move" - dta d"the tank to a new position. [SPACE] or " - dta d"the controller button cause the tank to " - dta d"land in a new place. You can fly until " - dta d"the tank runs out of eels (presented on " - dta d"the status bar like the energy of a " - dta d"defensive weapon), if the eel fuel runs " - dta d"out the tank will fall down on its own. " - dta d"It is not possible to land on other " - dta d"tanks. " - dta d" " - dta d"* **Parachute** - does not protect " - dta d"against loss of energy due to a " - dta d"neighboring explosion, makes you not " - dta d"lose energy during ONE fall. After such " - dta d"a fall, it deactivates and a new " - dta d"parachute must be activated. " - dta d" " - dta d"* **Shield** - the simplest shield works" - dta d"exactly the opposite of **Parachute**, " - dta d"it does not protect against energy loss " - dta d"while falling, instead it protects " - dta d"against energy loss caused by ONE " - dta d"adjacent explosion. It protects once, no" - dta d"matter how strong the explosion is " - dta d"(whether tis but a scratch or a direct " - dta d"hit with a nuke), and deactivates " - dta d"immediately afterward. " - dta d" " - dta d"* **Heavy Shield** - a shield with its " - dta d"own energy (at the start of 99 units), " - dta d"it works the same as **Shield** (does " - dta d"not protect against falling) with the " - dta d"exception that it has its own energy " - dta d"resource. When exploding, the energy of " - dta d"this shield is reduced first, and if it " - dta d"reaches 0, the shield deactivates and " - dta d"further reduces the tank's energy. Due " - dta d"to this action, a tank with this type of" - dta d"shield can be ""killed"" by undermining " - dta d"it, because falling reduces the energy " - dta d"of the tank and not the shield. " - dta d" " - dta d"* **Force Shield** - the strongest " - dta d"shield - works just like Heavy Shield " - dta d"only that it is combined with " - dta d"**Parachute**. What is important in this" - dta d"case, falling does not take energy away " - dta d"from the shield or the tank. It is only " - dta d"taken away by hits. " - dta d" " - dta d"* **Bouncy Castle** - a " - dta d"passive-aggressive weapon :). It works " - dta d"as follows - in a case of a direct tank " - dta d"hit (and shield), it causes the " - dta d"projectile to ""bounce"" in the opposite " - dta d"direction with the same force with which" - dta d"it was fired. In the absence of wind and" - dta d"a difference in level, the weapon then " - dta d"hits the tank that fired it. After such " - dta d"a bounce, it deactivates. As the weapon " - dta d"reacts in this way only to precise hits," - dta d"it is also works like **Heavy Shield** " - dta d"and has 99 units at the start (we will " - dta d"probably have to rethink this value and " - dta d"give a smaller one here). " - dta d" " - dta d"* **Mag Deflector** - the second " - dta d"passive-aggressive weapon :) . In case " - dta d"of a direct hit on a tank (and shield), " - dta d"it causes the hit point to move randomly" - dta d"to the left or right side of the " - dta d"protected tank, but not very far, so you" - dta d"can get ""shrapnel"" with stronger " - dta d"weapons. As in the case of **Bouncy " - dta d"Castle**, it is also a shield that " - dta d"corresponds to the action of **Heavy " - dta d"Shield** and has 99 units at the start " - dta d"(probably here we will have also to " - dta d"rethink this value and give a smaller " - dta d"one). " - dta d" " - dta d"* **Nuclear Winter** - adds nothing, " - dta d"takes nothing away :) - in fact, it is " - dta d"not so much a defensive weapon as a " - dta d"double-edged one. It floods the area " - dta d"with ""radioactive"" fallout, which is " - dta d"ordinary soil. If you do not have at " - dta d"hand any weapon that digs up the " - dta d"terrain, and for that a shield " - dta d"(preferably disposable), then after such" - dta d"""fallout"" you will have to shoot " - dta d"yourself - because being underground is " - dta d"otherwise impossible. Alternatively, " - dta d"**White Flag** always remains. " - dta d" " - dta d"* **Long Schlong** - a special weapon :)" - dta d"- Costs a lot, doesn't really help with " - dta d"anything (except possibly digging " - dta d"yourself out but only when slightly " - dta d"buried but it has a cool name and looks " - dta d"cool :) - It can be activated " - dta d"independently of other defensive weapons" - dta d"and remains active until the end of the " - dta d"round (it cannot be deactivated). " - dta d" " - dta d"* **Lazy Boy** - it is not actually a " - dta d"defensive weapon. It is an aiming aid. " - dta d"When it is activated, the tank tries to " - dta d"aim at the nearest enemy and " - dta d"automatically adjusts the power of the " - dta d"shot and angle. If it has too little " - dta d"energy, it can sometimes aim wrong (it " - dta d"uses a method like **Cyborg** to aim). " - dta d"Like **Battery**, it does not deactivate" - dta d"other defensive weapons when used. Note:" - dta d"There is no point in activating this " - dta d"weapon before the round, targeting will " - dta d"not take place because there is nothing " - dta d"to target yet. " - dta d" " - dta d"* **Lazy Darwin** - works just like " - dta d"**Lazy Boy** but targets the weakest " - dta d"opponent. In this weapon, after " - dta d"automatic targeting, ""visual targeting"" " - dta d"remains active, so you can easily change" - dta d"the target and independently select " - dta d"another opponent by seeing if you hit " - dta d"him. " - dta d" " - dta d"* **Auto Defense** - activates the mode " - dta d"of automatic activation of defensive " - dta d"weapons. After its activation, the tank " - dta d"automatically activates the strongest " - dta d"shield it has (consuming it, of course) " - dta d"at any time when there is no shield " - dta d"(also between shots of other players). " - dta d"At the same time, if the tank's energy " - dta d"level drops below 30 units, it " - dta d"automatically activates **Battery** if " - dta d"it has it. This weapon remains active " - dta d"until the end of the round and is " - dta d"indicated by the ""computer"" symbol " - dta d"before the name of the active defensive " - dta d"weapon in the status line. It is the " - dta d"second defensive weapon that does not " - dta d"deactivate other defensive weapons when " - dta d"used. " - dta d" " - dta d"* **Spy Hard** - Help for the forgetful " - dta d":) . When activated, it shows a preview " - dta d"of information about the next opponents " - dta d"one by one. Left/Right - changes the " - dta d"""spied"" tank. Fire/Space/Return/Esc - " - dta d"ends the ""spying"". This is the last " - dta d"defensive weapon, which does not " - dta d"deactivate other defensive weapons when " - dta d"used. " - dta d" " - dta d"Due to the different warhead tracking " - dta d"system of **MIRV** weapons, the **Bouncy" - dta d"Castle** and **Mag Deflector** defensive" - dta d"weapons only use the shielding function " - dta d"when hit by these weapons. In addition, " - dta d"**MIRV** warheads do not bounce or fly " - dta d"through sidewalls when falling " - dta d" " - dta d"None of the shields protect against " - dta d"**Napalm**. **Bouncy Castle** or **Mag " - dta d"Deflector** on a direct hit will deflect" - dta d"it or carry it past, but just hit very " - dta d"close to a tank and its shield will not " - dta d"save it. " - dta d" " - dta d"**White Flag**, **Hovercraft** and " - dta d"**Nuclear Winter** weapons, when " - dta d"selected, require activation, this is " - dta d"accomplished by ""firing a shot"" after " - dta d"the selection of that weapon. Of course," - dta d"the shot of the offensive weapon is then" - dta d"not fired, but only the selected " - dta d"defensive weapon is activated. " - dta d" " - dta d"You can only have one defensive weapon " - dta d"active at a time (except **Long " - dta d"Schlong** of course :) ). You can always" - dta d"change the decision and activate another" - dta d"defensive weapon or deactivate **White " - dta d"Flag** before firing. " - dta d" " - dta d"And of course, activating a weapon when " - dta d"you already have some other weapon " - dta d"activated causes the loss of the " - dta d"previous one (no returns :) ). " - dta d" " - dta d" 7. ""Other"" weapons: " - dta d"--------------------- " - dta d" " - dta d"* **Best F...g Gifts** - this is a 'loot" - dta d"box', not a weapon per se. Buying it " - dta d"draws one of the offensive or (rarely) " - dta d"defensive weapons and adds it to the " - dta d"player's arsenal. It is a lottery in " - dta d"which you can lose (if you draw a weapon" - dta d"cheaper than the **Best F...g Gifts** " - dta d"price) but also gain. You can get a " - dta d"weapon otherwise not affordable at all " - dta d" " - dta d" 8. AI opponents: " - dta d"------------------ " - dta d" " - dta d"The game has 8 difficulty levels of " - dta d"computer-controlled opponents. Or " - dta d"actually 7 different ones and one " - dta d"""surprise"". Each has its own way of " - dta d"buying defensive and offensive weapons " - dta d"and a different method of target " - dta d"selection and targeting itself, as well " - dta d"as weapon selection. They are arranged " - dta d"in the list according to increasing " - dta d"""skills"": " - dta d" " - dta d"* **Moron** - the dumbest of opponents " - dta d"(which does not mean the safest). Shoots" - dta d"completely at random using only one " - dta d"weapon - **Baby Missile**. He doesn't " - dta d"buy anything and doesn't know how to use" - dta d"defensive weapons. " - dta d" " - dta d"* **Shooter** - This opponent does not " - dta d"shoot blindly. He chooses one direction " - dta d"for himself. Based on his own position -" - dta d"he shoots in the direction from which " - dta d"there is more space assuming that this " - dta d"is where the other tanks are. He starts " - dta d"firing from a high angle and shot after " - dta d"shot changes this angle to a lower and " - dta d"lower angle trying to fire the entire " - dta d"area on the chosen side. He always fires" - dta d"with the best weapon he has (the highest" - dta d"on the list of weapons he has - that is," - dta d"not necessarily the best). He does not " - dta d"use defensive weapons even though he " - dta d"buys them " - dta d" " - dta d"* **Poolshark** - When attacking, he " - dta d"sets the nearest tank as his target, " - dta d"then selects the angle of the shot, and " - dta d"tries to select its strength by drawing " - dta d"it from the selected range. He always " - dta d"shoots with the best weapon he has. He " - dta d"uses defensive weapons. With a " - dta d"probability of 1:3, he activates the " - dta d"best defensive weapon he owns (the " - dta d"highest on the list of weapons he owns -" - dta d"that is, not necessarily the best) " - dta d"before firing. If his energy level drops" - dta d"below 30 units - he uses **Battery** (of" - dta d"course, if he bought it before), if the " - dta d"energy drops below 5 and he has no " - dta d"**Battery** he surrenders - **White " - dta d"Flag**. At the beginning of the round he" - dta d"makes 1 attemp to buy defensive weapons " - dta d"and 6 offensive weapons. " - dta d" " - dta d"* **Tosser** - When attacking, he acts " - dta d"exactly like **Poolshark** however, he " - dta d"may have a ""better"" weapon inventory due" - dta d"to a different purchase tactic. He " - dta d"always activates the best defensive " - dta d"weapon he has before shooting. And just " - dta d"like **Poolshark** he uses **Battery** " - dta d"and **White Flag**. At the beginning of " - dta d"the round, he assesses how much money he" - dta d"has and depending on that, he makes " - dta d"(money/5100) attempts to buy defensive " - dta d"weapons and then checks again how much " - dta d"money he has left and makes (money/1250)" - dta d"attempts to buy offensive weapons. " - dta d" " - dta d"* **Chooser** - Takes as a target the " - dta d"weakest opponent (with the least amount " - dta d"of energy) and aims very precisely, but " - dta d"before the shot the energy of the shot " - dta d"is modified by the parameter of luck :) " - dta d", that is, despite the precise aiming it" - dta d"does not always hit. He shoots with the " - dta d"best weapon he has unless the target is " - dta d"close. Then he changes his weapon to " - dta d"**Baby Missile** to avoid hitting " - dta d"himself. He always activates the best " - dta d"defensive weapon he has before shooting " - dta d"and, like **Poolshark**, uses " - dta d"**Battery** and **White Flag**. He " - dta d"purchases just like **Tosser**. " - dta d" " - dta d"* **Spoiler** - He shoots exactly like " - dta d"**Chooser** except that he has more luck" - dta d":) , which means that even if he doesn't" - dta d"hit the target of his choice, it can be " - dta d"a more precise shot than **Chooser**. If" - dta d"he is unable to hit his chosen target, " - dta d"he tries to choose another target that " - dta d"he can accurately hit. He uses defensive" - dta d"weapons exactly like **Chooser**. At the" - dta d"beginning of the round, he assesses how " - dta d"much money he has and depending on that," - dta d"he makes (money/5100) attempts to buy " - dta d"defensive weapons and then checks again " - dta d"how much money he has left and makes " - dta d"(money/320) attempts to buy offensive " - dta d"weapons. When buying defensive weapons, " - dta d"he buys only strong and precise weapons " - dta d"- that is, weapons that won't " - dta d"accidentally hurt him. " - dta d" " - dta d"* **Cyborg** - Takes aim at the weakest " - dta d"opponent (with the least amount of " - dta d"energy) but prefers human-controlled " - dta d"opponents. If he is unable to hit his " - dta d"chosen target, he tries to choose " - dta d"another target that he can accurately " - dta d"hit. Aims very accurately and in the " - dta d"vast majority of cases hits on the first" - dta d"shot. He fires the shot with the best " - dta d"weapon he has unless the target is " - dta d"close. Then he changes his weapon to " - dta d"**Baby Missile** to avoid hitting " - dta d"himself. He uses defensive weapons " - dta d"exactly like **Chooser** but if he has " - dta d"more than 2 pieces of **Battery** he " - dta d"uses them if the energy decreases below " - dta d"60 units.. He shops exactly like " - dta d"**Spoiler**. " - dta d" " - dta d"* **Unknown** - Before firing each shot," - dta d"he randomly chooses a course of action " - dta d"from **Poolshark** to **Cyborg** and " - dta d"applies his tactics. However, the " - dta d"tactics of weapon purchases are always " - dta d"identical to **Tosser**. " - dta d" " - dta d"Trying to buy a weapon (offensive or " - dta d"defensive) is as follows: " - dta d"First, one of the weapons is drawn " - dta d"(among all possible offensive or " - dta d"defensive weapons). Then a check is " - dta d"performed to see if the drawn weapon is " - dta d"in the list of weapons possible for " - dta d"purchase by the tank. If not, no weapon " - dta d"is bought in this trial, and if so, its " - dta d"price is checked. If the tank has that " - dta d"much money, the weapon is bought, " - dta d"otherwise the trial ends without making " - dta d"a purchase. " - dta d" " - dta d"Weapons purchased by: **Shooter**, " - dta d"**Poolshark**, **Tosser** and " - dta d"**Chooser**: " - dta d"Offensive weapons: " - dta d"* Missile " - dta d"* Baby Nuke " - dta d"* Nuke " - dta d"* LeapFrog " - dta d"* Funky Bomb " - dta d"* MIRV " - dta d"* Death's Head " - dta d"* Napalm " - dta d"* Hot Napalm " - dta d"* Baby Roller " - dta d"* Roller " - dta d"* Heavy Roller " - dta d" " - dta d"Defensive weapons: " - dta d"* Battery " - dta d"* Parachute " - dta d"* Strong Parachute " - dta d"* Mag Deflector " - dta d"* Shield " - dta d"* Heavy Shield " - dta d"* Force Shield " - dta d"* Bouncy Castle " - dta d" " - dta d"Weapons purchased by: **Spoiler** and " - dta d"**Cyborg**: " - dta d"Offensive weapons: " - dta d"* Missile " - dta d"* Baby Nuke " - dta d"* Nuke " - dta d"* Hot Napalm " - dta d" " - dta d"Defensive weapons: " - dta d"* Battery " - dta d"* Strong Parachute " - dta d"* Mag Deflector " - dta d"* Heavy Shield " - dta d"* Force Shield " - dta d"* Bouncy Castle " - dta d" " - dta d" " + .align 40 + dta " Basic instruction manual:" + .align 40 + dta "---------------------------" + .align 40 + .align 40 + dta "You can play using the keyboard (all" + .align 40 + dta "functionality) or controllers in all of" + .align 40 + dta "the ports (all functionality necessary" + .align 40 + dta "for gameplay)." + .align 40 + .align 40 + dta " 1. Game Option Selection." + .align 40 + dta "---------------------------" + .align 40 + .align 40 + .align 40 + dta "On the first screen, you can configure" + .align 40 + dta "gameplay options:" + .align 40 + dta $5a, d" number of players (2 - 6) includes" + .align 40 + dta "both human and computer-controlled" + .align 40 + dta "players" + .align 40 + dta $5a, d" the initial amount of cash of each" + .align 40 + dta "player (2K is the optimal value we" + .align 40 + dta "chose, but for short games, it is worth" + .align 40 + dta "choosing a higher value)" + .align 40 + dta $5a, d" gravity" + .align 40 + dta $5a, d" maximum wind strength (wind is drawn" + .align 40 + dta "at the beginning of each round or during" + .align 40 + dta "the round between turns, here we can" + .align 40 + dta "choose how strong it can be):" + .align 40 + dta d" ", $5a, d" 1B - maximum wind strength: 5" + .align 40 + dta d" ", $5a, d" 3B - maximum wind strength: 20" + .align 40 + dta d" ", $5a, d" 5B - maximum wind strength: 40" + .align 40 + dta d" ", $5a, d" 7B - maximum wind strength: 70" + .align 40 + dta d" ", $5a, d" 9B - maximum wind strength: 99" + .align 40 + dta $5a, d" number of rounds in a game" + .align 40 + dta $5a, d" missile speed (does not affect the" + .align 40 + dta "flight path - only changes the apparent" + .align 40 + dta "missile speed - does not change anything" + .align 40 + dta "in the gameplay itself)" + .align 40 + dta $5a, d" frequency of suicides :) - if for a" + .align 40 + dta "number of turns the game has not" + .align 40 + dta "recorded hits (tanks are constantly" + .align 40 + dta "shooting inaccurately), after one of" + .align 40 + dta "such misses a tank commits suicide -" + .align 40 + dta "here you determine how long they can" + .align 40 + dta """shooting for the stars"" :) - if only" + .align 40 + dta "people play the optimal setting is" + .align 40 + dta """norm"", in the case of" + .align 40 + dta "computer-controlled players ... you" + .align 40 + dta "choose." + .align 40 + dta $5a, d" The height (and undulation) of the" + .align 40 + dta "mountains from almost flat (NL - Kingdom" + .align 40 + dta "of the Netherlands), to soaring and high" + .align 40 + dta "(NP - Federal Democratic Republic of" + .align 40 + dta "Nepal)" + .align 40 + dta $5a, d" the way the walls (edges of the" + .align 40 + dta "screen) work:" + .align 40 + dta $5a, d" none - projectiles that flew off the" + .align 40 + dta "screen do not return (black color of the" + .align 40 + dta "screen frame)" + .align 40 + dta $5a, d" wrap - the screen ""wraps"" and" + .align 40 + dta "projectiles that flew to the right" + .align 40 + dta "appear on the left side and vice versa" + .align 40 + dta "(purple color of the screen frame)" + .align 40 + dta $5a, d" bump - the right and left walls" + .align 40 + dta "deflect projectiles that want to fly" + .align 40 + dta "through them (dark blue color of the" + .align 40 + dta "screen frame)" + .align 40 + dta $5a, d" boxy - just like bump, except that the" + .align 40 + dta """ceiling"" also reflects projectiles" + .align 40 + dta "(green color of the screen frame)" + .align 40 + dta $5a, d" rand - at the beginning of each round," + .align 40 + dta "one of the above 4 ways the walls work" + .align 40 + dta "is drawn." + .align 40 + .align 40 + dta "During gameplay, the current mode of the" + .align 40 + dta "walls is represented by the color of the" + .align 40 + dta "screen frame:" + .align 40 + dta $5a, d" none - black," + .align 40 + dta $5a, d" wrap - purple," + .align 40 + dta $5a, d" bump - dark blue," + .align 40 + dta $5a, d" boxy - green." + .align 40 + .align 40 + dta "Select options with cursor keys or a" + .align 40 + dta "controller." + .align 40 + .align 40 + dta "The [TAB], [SELECT] or second controller" + .align 40 + dta "button (supported Joy 2B+ standard or" + .align 40 + dta "compatible) key change the color of the" + .align 40 + dta "mountains (3 versions to choose from)." + .align 40 + dta "If the cursor indicates the wind" + .align 40 + dta "strength selection option ""Wind"" change" + .align 40 + dta "the way the wind strength is drawn from" + .align 40 + dta """every round"" to ""every turn"" and vice" + .align 40 + dta "versa. Drawing every turn is indicated" + .align 40 + dta "by the ""?"" sign next to the word ""Wind""." + .align 40 + dta "If the cursor indicates the gravity" + .align 40 + dta "selection option ""Gravity"" changes the" + .align 40 + dta "procedure of falling the ground to a" + .align 40 + dta "less impressive but faster one, and vice" + .align 40 + dta "versa. The selection of fast ground fall" + .align 40 + dta "is indicated by the letter ""f"" next to" + .align 40 + dta "the word ""Gravity""." + .align 40 + .align 40 + dta "The [RETURN] key or a controller button" + .align 40 + dta "moves to the next screen." + .align 40 + .align 40 + dta " 2. Names of players and AI opponents" + .align 40 + dta "--------------------------------------" + .align 40 + .align 40 + .align 40 + dta "The second screen is shown for each" + .align 40 + dta "player. Here you can use the cursor keys" + .align 40 + dta "or controller to select whether the tank" + .align 40 + dta "will be driven by a human (HUMAN option)" + .align 40 + dta "or a computer (other options)." + .align 40 + dta "The [TAB], [SELECT] or second controller" + .align 40 + dta "button allows to choose which controller" + .align 40 + dta "port the player will use." + .align 40 + dta "The [INVERSE] or [OPTION] key allows you" + .align 40 + dta "to select one of the 3 available tank" + .align 40 + dta "shapes." + .align 40 + dta "At the same time, you can enter the name" + .align 40 + dta "of the selected player from the" + .align 40 + dta "keyboard." + .align 40 + dta "When the [RETURN] key is pressed or the" + .align 40 + dta "controller button is pressed briefly," + .align 40 + dta "the screen switches to the next player" + .align 40 + dta "until the difficulty levels for each" + .align 40 + dta "player are selected." + .align 40 + dta "The player's name can also be entered" + .align 40 + dta "with the controller. After pressing and" + .align 40 + dta "holding the button for more than 1s, you" + .align 40 + dta "can use up/down movements to change the" + .align 40 + dta "letter being entered, and left/right" + .align 40 + dta "movements to change its position in the" + .align 40 + dta "name. Releasing the button ends the name" + .align 40 + dta "entry and returns to the level" + .align 40 + dta "selection." + .align 40 + .align 40 + dta "If the name is not entered, it will be" + .align 40 + dta "supplemented with the default name." + .align 40 + .align 40 + dta " 3. Shopping screen (before each round)" + .align 40 + dta "----------------------------------------" + .align 40 + .align 40 + .align 40 + .align 40 + dta "On this screen, you can make purchases" + .align 40 + dta "of offensive and defensive weapons. Only" + .align 40 + dta "those weapons that the player can afford" + .align 40 + dta "are visible, along with information" + .align 40 + dta "about the price and the number of units" + .align 40 + dta "of a given weapon that will be obtained" + .align 40 + dta "for that price. The information on the" + .align 40 + dta "screen probably needs no more" + .align 40 + dta "description. You move through the lists" + .align 40 + dta "with the cursor keys (up and down) or" + .align 40 + dta "with the controller, the [TAB] key or" + .align 40 + dta "the left arrow, the left controller tilt" + .align 40 + dta "or second controller button change the" + .align 40 + dta "screen to defensive or offensive" + .align 40 + dta "weapons, the [SPACE] key or the right" + .align 40 + dta "arrow and also the controller to the" + .align 40 + dta "right does the purchase of the indicated" + .align 40 + dta "weapon." + .align 40 + .align 40 + dta "The [RETURN] key or the controller" + .align 40 + dta "button press switches to the defensive" + .align 40 + dta "weapon activation screen. Here you can" + .align 40 + dta "activate previously bought defensive (or" + .align 40 + dta "offensive after switching with [TAB]," + .align 40 + dta "etc) weapons." + .align 40 + .align 40 + .align 40 + .align 40 + dta "This makes it possible to activate" + .align 40 + dta "shields and others before the round" + .align 40 + dta "starts." + .align 40 + .align 40 + dta "Another [RETURN] key or controller" + .align 40 + dta "button press switches to the next" + .align 40 + dta "player's shopping screen." + .align 40 + dta "(For computer players this screen is not" + .align 40 + dta "shown.)" + .align 40 + .align 40 + dta " 4. The main screen of the game" + .align 40 + dta "--------------------------------" + .align 40 + .align 40 + .align 40 + dta "The status line shows which player is" + .align 40 + dta "currently allowed to take a shot and a" + .align 40 + dta "set of other information:" + .align 40 + dta $5a, d" player's tank name," + .align 40 + dta $5a, d" active controller number or difficulty" + .align 40 + dta "level of computer-controlled player" + dta d"(1-" + dta d"Moron"* + dta d" - 8-" + dta d"Unknown"* + dta d")," + dta d" " + .align 40 + .align 40 + dta $5a, d" currently selected offensive weapon" + .align 40 + dta "(symbol quantity and name)," + .align 40 + dta $5a, d" the player's remaining energy points" + .align 40 + dta "and if he has an active defensive weapon" + .align 40 + dta "that has its energy - in parentheses the" + .align 40 + dta "energy level," + .align 40 + dta $5a, d" the angle and the direction of the" + .align 40 + dta "barrel set by the player," + .align 40 + dta $5a, d" the shot strength set by the player" + .align 40 + dta "(the maximum shot strength is limited by" + .align 40 + dta "the player's energy - it can not exceed" + .align 40 + dta d"the energy ", $5a, d" 10 . This means that you" + .align 40 + dta "can fire weaker shots only when having a" + .align 40 + dta "small amount of energy," + .align 40 + dta $5a, d" the current round number," + .align 40 + dta $5a, d" wind speed and direction," + dta d"* ""computer"" symbol if " + dta d"Auto Defense"* + dta d" " + .align 40 + .align 40 + dta "is active," + .align 40 + dta $5a, d" in parentheses is the name of the" + .align 40 + dta "active defensive weapon - if there is" + .align 40 + dta "any activated by the player." + .align 40 + .align 40 + dta "The basic controls are simple enough -" + .align 40 + dta "cursor keys or controller: left/right -" + .align 40 + dta "change the angle of the barrel, up/down" + .align 40 + dta "- change the the force of the shot." + .align 40 + dta "Other functions:" + .align 40 + .align 40 + dta $5a, d" [SPACE] or controller button pressed" + .align 40 + dta "briefly - firing a shot." + .align 40 + dta $5a, d" [TAB] or [SELECT] or second controller" + .align 40 + dta "button - selection of offensive weapons" + .align 40 + dta "(this option is not available directly" + .align 40 + dta "with one button controller - you need to" + .align 40 + dta "select Inventory). |" + .align 40 + dta $5a, d" [I] or longer holding the controller" + .align 40 + dta "button - go to Inventory. It is a screen" + .align 40 + dta "(actually two) with the same layout as" + .align 40 + dta "the shopping menu, it also works" + .align 40 + dta "similarly except that here you don't buy" + .align 40 + dta "weapons, but choose one of the offensive" + .align 40 + dta "ones to shoot or activate a defensive" + .align 40 + dta "weapon. |" + .align 40 + dta $5a, d" [A] or [OPTION] - go directly to the" + .align 40 + dta "defensive weapons activation." + .align 40 + dta $5a, d" [M] - disable/enable background music." + .align 40 + dta "|" + .align 40 + dta $5a, d" [S] - disable/enable effect sounds. |" + .align 40 + dta $5a, d" [START] - speed up some game" + .align 40 + dta "animations. |" + .align 40 + dta $5a, d" [O] - end the current game and jump to" + .align 40 + dta "the Game Over screen with a summary. The" + .align 40 + dta "summary of the results does not take" + .align 40 + dta "into account the current round of the" + .align 40 + dta "game, but only the rounds completed" + .align 40 + dta "earlier. This corresponds to pressing" + .align 40 + dta "the [ESC] key with the difference that" + .align 40 + dta "the summary and credits are displayed. |" + .align 40 + dta $5a, d" [START] + [OPTION] - immediately force" + .align 40 + dta "the end of the game (Game Over), just" + .align 40 + dta "like [O] but without confirmation." + .align 40 + dta $5a, d" [G] - changes the mountain shading |" + .align 40 + dta $5a, d" [ESC] - during the entire game at any" + .align 40 + dta "time (unless the computer is playing," + .align 40 + dta "then sometimes you have to wait a while)" + .align 40 + dta "you can press the [ESC] key, which" + .align 40 + dta "allows you to abort the game and return" + .align 40 + dta "to the beginning (of course, there is" + .align 40 + dta "protection against accidental pressing)." + .align 40 + dta "|" + .align 40 + dta $5a, d" [Y] - when asked to abort or terminate" + .align 40 + dta "the game - confirmation |" + .align 40 + dta $5a, d" [CTRL] + [HELP] - Toggle ""visual" + .align 40 + dta "debug"" mode. It displays distances" + .align 40 + dta "measured, laser aiming, and aiming" + .align 40 + dta "technique. It leaves a mess on the" + .align 40 + dta "screen, but it does not impair the game," + .align 40 + dta "just makes it a bit harder. |" + .align 40 + .align 40 + dta " 5. Game mechanics - offensive weapons" + .align 40 + dta "---------------------------------------" + .align 40 + .align 40 + dta " Energy of tanks." + .align 40 + dta "------------------" + .align 40 + dta "At the beginning of each round, each" + .align 40 + dta "tank has 99 ash units of energy." + .align 40 + dta "Tanks' energy is depleted in 3 ways:" + .align 40 + dta $5a, d" one unit after each shot" + .align 40 + dta $5a, d" while falling (one pixel down -2" + .align 40 + dta "units)." + .align 40 + dta $5a, d" when a projectile hits the tank or" + .align 40 + dta "next to it - and here the amount of" + .align 40 + dta "energy subtracted depends on the" + .align 40 + dta "distance from the center of the" + .align 40 + dta "explosion and the type/power of the" + .align 40 + dta "projectile." + .align 40 + .align 40 + dta " How energy and money works:" + .align 40 + dta "-----------------------------" + .align 40 + dta "After each round the amount of money" + .align 40 + dta "gained/lost is calculated, this is done" + .align 40 + dta "on the basis of two variables" + .align 40 + dta "accumulated by each tank during the" + .align 40 + dta "round. These variables are:" + .align 40 + .align 40 + dta "gain - energy ""captured"" from tanks hit" + .align 40 + dta "(also if you hit yourself :) and here's" + .align 40 + dta "the catch, if you have very little" + .align 40 + dta "energy left it can be profitable to hit" + .align 40 + dta "yourself with a powerful weapon" + .align 40 + .align 40 + dta "lose - energy lost due to explosion/fall" + .align 40 + dta "(and here it is important - to count the" + .align 40 + dta "total loss of energy even if the tank" + .align 40 + dta "has less at the moment of hit)." + .align 40 + .align 40 + dta "In addition, the tank that won the round" + .align 40 + dta "has a parameter gain (captured from hit" + .align 40 + dta "tanks energy) increased by the remaining" + .align 40 + dta "energy at the end of the round (because" + .align 40 + dta "it did not die and should have it -" + .align 40 + dta "although it also happens otherwise :) )" + .align 40 + .align 40 + dta "Specifically:" + .align 40 + .align 40 + dta " After each round:" + .align 40 + dta "-------------------" + .align 40 + dta d"money = money + (20 ", $5a, d" (gain+energy))." + .align 40 + .align 40 + dta d"money = money - (10 ", $5a, d" lose)." + .align 40 + .align 40 + dta "if money <0 then money=0." + .align 40 + .align 40 + dta "(at the start of each round gain and" + .align 40 + dta "lose have a value of 0)." + .align 40 + .align 40 + dta "During a round, if another tank is hit" + .align 40 + dta "as a result of a shot fired by a tank," + .align 40 + dta "the tank firing the shot ""gets the" + .align 40 + dta "energy"" taken away from the hit tank." + .align 40 + dta " tank taking a shot:" + .align 40 + dta "---------------------" + .align 40 + dta "gain = gain + EnergyDecrease." + .align 40 + dta " tank hit:" + .align 40 + dta "-----------" + .align 40 + dta "lose = lose + EnergyDecrease." + .align 40 + .align 40 + dta "Where EnergyDecrease is the loss of" + .align 40 + dta "energy due to the hit." + .align 40 + .align 40 + dta "Of course, at the same time the hit tank" + .align 40 + dta "loses the amount of energy stored in" + .align 40 + dta "EnergyDecrease, except that here the" + .align 40 + dta "loss cannot exceed the energy you have." + .align 40 + .align 40 + dta " How a hit works." + .align 40 + dta "------------------" + .align 40 + dta "Each weapon that results in an explosion" + .align 40 + dta "has its own blast radius." + .align 40 + .align 40 + dta "After the explosion, every tank in its" + .align 40 + dta "range loses energy." + .align 40 + .align 40 + dta "It works in such a way that if the hit" + .align 40 + dta "is exactly on the center point of the" + .align 40 + dta "tank EnergyDecrease receives the maximum" + .align 40 + dta "value for the weapon, and for each pixel" + .align 40 + dta "of distance from the center of the tank" + .align 40 + dta "this value is reduced by 8." + .align 40 + .align 40 + dta "For example, if a hit with the Baby" + .align 40 + dta "Missile weapon hits the center of the" + .align 40 + dta "tank perfectly, it will lose exactly 88" + .align 40 + dta "units of energy (plus what it loses" + .align 40 + dta "falling after the explosion)." + .align 40 + dta "If you hit with the same weapon at a" + .align 40 + dta "distance of 10 pixels from the center of" + .align 40 + dta "the tank, the loss will be only 8 units." + .align 40 + .align 40 + dta "And here are the values of maximum" + .align 40 + dta "energy loss for individual weapons. If a" + .align 40 + dta "weapon explodes several times, each" + .align 40 + dta "explosion is calculated independently" + .align 40 + dta "(additional values in the table):" + .align 40 + .align 40 + dta "Offensive weapons and maximum energy" + .align 40 + dta "loss:" + .align 40 + dta $5a, d" Baby Missile: 88" + .align 40 + dta $5a, d" Missile: 136" + .align 40 + dta $5a, d" Baby Nuke: 200" + .align 40 + dta $5a, d" Nuke: 240" + .align 40 + dta $5a, d" LeapFrog: 136 112 112" + .align 40 + dta $5a, d" Funky Bomb: 168 88 (* 5)" + .align 40 + dta $5a, d" MIRV: 136 (* 5)" + .align 40 + dta $5a, d" Death's Head: 240 (* 5)" + .align 40 + dta $5a, d" Napalm: 40 (this weapon is different" + .align 40 + dta "and the distance from the center is not" + .align 40 + dta "determined, simply any tank in range of" + .align 40 + dta "the flames loses 40 units of energy)" + .align 40 + dta $5a, d" Hot Napalm: 80 (the rule is the same" + .align 40 + dta "as in Napalm)" + .align 40 + dta $5a, d" Baby Roller: 88" + .align 40 + dta $5a, d" Roller: 168" + .align 40 + dta $5a, d" Heavy Roller: 240" + .align 40 + dta $5a, d" Riot Charge: 0 (no energy is" + .align 40 + dta "subtracted, but a portion of the ground" + .align 40 + dta "upward from the hit point in a 31-pixel" + .align 40 + dta "radius is removed)" + .align 40 + dta $5a, d" Riot Blast: 0 (as in Riot Charge, but" + .align 40 + dta "in a radius of 61 pixels)" + .align 40 + dta $5a, d" Riot Bomb: 0 (no energy is subtracted," + .align 40 + dta "but the ground in a radius of 17 pixels" + .align 40 + dta "from the hit point is destroyed - as in" + .align 40 + dta "the case of Missile. The weapon is" + .align 40 + dta "useful for digging out after being" + .align 40 + dta "buried, or for undermining an opponent)" + .align 40 + dta $5a, d" Heavy Riot Bomb: 0 (as in Riot Bomb," + .align 40 + dta "but the explosion radius is 29 pixels" + .align 40 + dta "from the point of impact - as in the" + .align 40 + dta "case of Nuke)" + .align 40 + dta $5a, d" Baby Digger: 0 (no energy is" + .align 40 + dta "subtracted, but a portion of the ground" + .align 40 + dta "is undermined in a radius of 60 pixels" + .align 40 + dta "from the point of impact)" + .align 40 + dta $5a, d" Digger: 0 (as above - greater" + .align 40 + dta "undermining)" + .align 40 + dta $5a, d" Heavy Digger: 0 (as above - greatest" + .align 40 + dta "undermining)" + .align 40 + dta $5a, d" Sandhog: 0 (as above - another way of" + .align 40 + dta "undermining)" + .align 40 + dta $5a, d" Heavy Sandhog: 0 (as above - largest" + .align 40 + dta "dig)" + .align 40 + dta $5a, d" Dirt Clod: 0 (no energy is subtracted," + .align 40 + dta "but a ground ball with a radius of 12" + .align 40 + dta "pixels from the hit point is created." + .align 40 + dta "The weapon is useful for burying the" + .align 40 + dta "opponent)" + .align 40 + dta $5a, d" Dirt Ball: 0 (as above, but the radius" + .align 40 + dta "of the ball is 22 pixels)" + .align 40 + dta $5a, d" Ton of Dirt: 0 (as above, but the" + .align 40 + dta "radius of the ball is 31 pixels)" + .align 40 + dta $5a, d" Liquid Dirt: 0 (floods the ground at" + .align 40 + dta "the point of hit with liquid soil," + .align 40 + dta "filling in the depressions)" + .align 40 + dta $5a, d" Stomp: 0 (no energy is subtracted, but" + .align 40 + dta "all tanks within a radius depending on" + .align 40 + dta "the force of the shot are pushed back," + .align 40 + dta "and after being pushed back they may" + .align 40 + dta "fall or be buried. With a maximum force" + .align 40 + dta "of 990 units, the radius of action is" + .align 40 + dta "about 60 pixels)" + .align 40 + dta $5a, d" Laser: 100 (but here it is also" + .align 40 + dta "different - only in a case of a direct" + .align 40 + dta "hit simply subtract 100 units of energy" + .align 40 + dta "- that is, the tank always dies)" + .align 40 + .align 40 + dta "Large points received by the player is" + .align 40 + dta "the number of tanks that died earlier" + .align 40 + dta "than him. If any of the other tanks" + dta d"capitulated earlier (" + dta d"White Flag"* + dta d") is" + dta d" " + .align 40 + .align 40 + dta "not added to those that died and does" + .align 40 + dta "not give points." + .align 40 + dta "Only these points determine the order in" + .align 40 + dta "the summary." + .align 40 + .align 40 + dta " 6. And now for defensive weapons:" + .align 40 + dta "-----------------------------------" + dta d"* " + dta d"White Flag"* + dta d" - causes the surrender" + dta d" " + .align 40 + .align 40 + dta "of the player (can sometimes be useful" + .align 40 + dta "in a hopeless situation). The advantage" + .align 40 + dta "is that by surrendering you don't give a" + .align 40 + dta "big point to your opponents and don't" + .align 40 + dta "cause one of them to gain by killing us," + .align 40 + dta "you also limit the loss of your energy" + .align 40 + dta "and also cash. An important note - this" + .align 40 + dta "is the only defensive weapon that can be" + .align 40 + dta "deactivated. All you have to do is" + .align 40 + dta "re-enter inventory and once again select" + .align 40 + dta "its activation." + .align 40 + dta d"* " + dta d"Battery"* + dta d" - when activated, it" + dta d" " + .align 40 + .align 40 + dta "recharges the tank's energy to full (99" + .align 40 + dta "units). It is one of three defensive" + .align 40 + dta "weapons that does not deactivate other" + .align 40 + dta "defensive weapons when used." + .align 40 + dta d"* " + dta d"Hovercraft"* + dta d" - a weapon that allows" + dta d" " + .align 40 + .align 40 + dta "the tank to move. It has its own fuel" + .align 40 + dta "supply in form of electric eels and in" + .align 40 + dta "addition, it can be activated multiple" + .align 40 + dta "times during the same turn, and after" + .align 40 + dta "using it, you can activate another" + .align 40 + dta "defensive weapon and fire a shot in the" + .align 40 + dta "same turn. After using it, the tank" + .align 40 + dta "rises above the mountains and using the" + .align 40 + dta "cursor keys or a controller you can move" + .align 40 + dta "the tank to a new position. [SPACE] or" + .align 40 + dta "the controller button cause the tank to" + .align 40 + dta "land in a new place. You can fly until" + .align 40 + dta "the tank runs out of eels (presented on" + .align 40 + dta "the status bar like the energy of a" + .align 40 + dta "defensive weapon), if the eel fuel runs" + .align 40 + dta "out the tank will fall down on its own." + .align 40 + dta "It is not possible to land on other" + .align 40 + dta "tanks." + .align 40 + dta d"* " + dta d"Parachute"* + dta d" - does not protect" + dta d" " + .align 40 + .align 40 + dta "against loss of energy due to a" + .align 40 + dta "neighboring explosion, makes you not" + .align 40 + dta "lose energy during ONE fall. After such" + .align 40 + dta "a fall, it deactivates and a new" + .align 40 + dta "parachute must be activated." + .align 40 + dta d"* " + dta d"Shield"* + dta d" - the simplest shield works" + dta d" " + .align 40 + dta d"exactly the opposite of " + dta d"Parachute"* + dta d"," + dta d" " + .align 40 + .align 40 + dta "it does not protect against energy loss" + .align 40 + dta "while falling, instead it protects" + .align 40 + dta "against energy loss caused by ONE" + .align 40 + dta "adjacent explosion. It protects once, no" + .align 40 + dta "matter how strong the explosion is" + .align 40 + dta "(whether tis but a scratch or a direct" + .align 40 + dta "hit with a nuke), and deactivates" + .align 40 + dta "immediately afterward." + .align 40 + dta d"* " + dta d"Heavy Shield"* + dta d" - a shield with its" + dta d" " + .align 40 + .align 40 + dta "own energy (at the start of 99 units)," + dta d"it works the same as " + dta d"Shield"* + dta d" (does" + dta d" " + .align 40 + .align 40 + dta "not protect against falling) with the" + .align 40 + dta "exception that it has its own energy" + .align 40 + dta "resource. When exploding, the energy of" + .align 40 + dta "this shield is reduced first, and if it" + .align 40 + dta "reaches 0, the shield deactivates and" + .align 40 + dta "further reduces the tank's energy. Due" + .align 40 + dta "to this action, a tank with this type of" + .align 40 + dta "shield can be ""killed"" by undermining" + .align 40 + dta "it, because falling reduces the energy" + .align 40 + dta "of the tank and not the shield." + .align 40 + dta d"* " + dta d"Force Shield"* + dta d" - the strongest" + dta d" " + .align 40 + .align 40 + dta "shield - works just like Heavy Shield" + .align 40 + dta "only that it is combined with" + dta d"Parachute"* + dta d". What is important in this" + dta d" " + .align 40 + .align 40 + dta "case, falling does not take energy away" + .align 40 + dta "from the shield or the tank. It is only" + .align 40 + dta "taken away by hits." + .align 40 + dta d"* " + dta d"Bouncy Castle"* + dta d" - a" + dta d" " + .align 40 + .align 40 + dta "passive-aggressive weapon :). It works" + .align 40 + dta "as follows - in a case of a direct tank" + .align 40 + dta "hit (and shield), it causes the" + .align 40 + dta "projectile to ""bounce"" in the opposite" + .align 40 + dta "direction with the same force with which" + .align 40 + dta "it was fired. In the absence of wind and" + .align 40 + dta "a difference in level, the weapon then" + .align 40 + dta "hits the tank that fired it. After such" + .align 40 + dta "a bounce, it deactivates. As the weapon" + .align 40 + dta "reacts in this way only to precise hits," + dta d"it is also works like " + dta d"Heavy Shield"* + dta d" " + .align 40 + .align 40 + dta "and has 99 units at the start (we will" + .align 40 + dta "probably have to rethink this value and" + .align 40 + dta "give a smaller one here)." + .align 40 + dta d"* " + dta d"Mag Deflector"* + dta d" - the second" + dta d" " + .align 40 + .align 40 + dta "passive-aggressive weapon :) . In case" + .align 40 + dta "of a direct hit on a tank (and shield)," + .align 40 + dta "it causes the hit point to move randomly" + .align 40 + dta "to the left or right side of the" + .align 40 + dta "protected tank, but not very far, so you" + .align 40 + dta "can get ""shrapnel"" with stronger" + dta d"weapons. As in the case of " + dta d"Bouncy"* + dta d" " + .align 40 + dta d"Castle" + dta d", it is also a shield that"* + dta d" " + .align 40 + dta d"corresponds to the action of " + dta d"Heavy"* + dta d" " + .align 40 + dta d"Shield" + dta d" and has 99 units at the start"* + dta d" " + .align 40 + .align 40 + dta "(probably here we will have also to" + .align 40 + dta "rethink this value and give a smaller" + .align 40 + dta "one)." + .align 40 + dta d"* " + dta d"Nuclear Winter"* + dta d" - adds nothing," + dta d" " + .align 40 + .align 40 + dta "takes nothing away :) - in fact, it is" + .align 40 + dta "not so much a defensive weapon as a" + .align 40 + dta "double-edged one. It floods the area" + .align 40 + dta "with ""radioactive"" fallout, which is" + .align 40 + dta "ordinary soil. If you do not have at" + .align 40 + dta "hand any weapon that digs up the" + .align 40 + dta "terrain, and for that a shield" + .align 40 + dta "(preferably disposable), then after such" + .align 40 + dta """fallout"" you will have to shoot" + .align 40 + dta "yourself - because being underground is" + .align 40 + dta "otherwise impossible. Alternatively," + dta d"White Flag"* + dta d" always remains." + dta d" " + .align 40 + .align 40 + dta d"* " + dta d"Long Schlong"* + dta d" - a special weapon :)" + dta d" " + .align 40 + .align 40 + dta "- Costs a lot, doesn't really help with" + .align 40 + dta "anything (except possibly digging" + .align 40 + dta "yourself out but only when slightly" + .align 40 + dta "buried but it has a cool name and looks" + .align 40 + dta "cool :) - It can be activated" + .align 40 + dta "independently of other defensive weapons" + .align 40 + dta "and remains active until the end of the" + .align 40 + dta "round (it cannot be deactivated)." + .align 40 + dta d"* " + dta d"Lazy Boy"* + dta d" - it is not actually a" + dta d" " + .align 40 + .align 40 + dta "defensive weapon. It is an aiming aid." + .align 40 + dta "When it is activated, the tank tries to" + .align 40 + dta "aim at the nearest enemy and" + .align 40 + dta "automatically adjusts the power of the" + .align 40 + dta "shot and angle. If it has too little" + .align 40 + dta "energy, it can sometimes aim wrong (it" + dta d"uses a method like " + dta d"Cyborg"* + dta d" to aim)." + dta d" " + .align 40 + dta d"Like " + dta d"Battery"* + dta d", it does not deactivate" + dta d" " + .align 40 + .align 40 + dta "other defensive weapons when used. Note:" + .align 40 + dta "There is no point in activating this" + .align 40 + dta "weapon before the round, targeting will" + .align 40 + dta "not take place because there is nothing" + .align 40 + dta "to target yet." + .align 40 + dta d"* " + dta d"Lazy Darwin"* + dta d" - works just like" + dta d" " + .align 40 + dta d"Lazy Boy"* + dta d" but targets the weakest" + dta d" " + .align 40 + .align 40 + dta "opponent. In this weapon, after" + .align 40 + dta "automatic targeting, ""visual targeting""" + .align 40 + dta "remains active, so you can easily change" + .align 40 + dta "the target and independently select" + .align 40 + dta "another opponent by seeing if you hit" + .align 40 + dta "him." + .align 40 + dta d"* " + dta d"Auto Defense"* + dta d" - activates the mode" + dta d" " + .align 40 + .align 40 + dta "of automatic activation of defensive" + .align 40 + dta "weapons. After its activation, the tank" + .align 40 + dta "automatically activates the strongest" + .align 40 + dta "shield it has (consuming it, of course)" + .align 40 + dta "at any time when there is no shield" + .align 40 + dta "(also between shots of other players)." + .align 40 + dta "At the same time, if the tank's energy" + .align 40 + dta "level drops below 30 units, it" + dta d"automatically activates " + dta d"Battery"* + dta d" if" + dta d" " + .align 40 + .align 40 + dta "it has it. This weapon remains active" + .align 40 + dta "until the end of the round and is" + .align 40 + dta "indicated by the ""computer"" symbol" + .align 40 + dta "before the name of the active defensive" + .align 40 + dta "weapon in the status line. It is the" + .align 40 + dta "second defensive weapon that does not" + .align 40 + dta "deactivate other defensive weapons when" + .align 40 + dta "used." + .align 40 + dta d"* " + dta d"Spy Hard"* + dta d" - Help for the forgetful" + dta d" " + .align 40 + .align 40 + dta ":) . When activated, it shows a preview" + .align 40 + dta "of information about the next opponents" + .align 40 + dta "one by one. Left/Right - changes the" + .align 40 + dta """spied"" tank. Fire/Space/Return/Esc -" + .align 40 + dta "ends the ""spying"". This is the last" + .align 40 + dta "defensive weapon, which does not" + .align 40 + dta "deactivate other defensive weapons when" + .align 40 + dta "used." + .align 40 + .align 40 + dta "Due to the different warhead tracking" + dta d"system of " + dta d"MIRV"* + dta d" weapons, the " + dta d"Bouncy"* + dta d" " + .align 40 + dta d"Castle" + dta d" and "* + dta d"Mag Deflector" + dta d" defensive"* + dta d" " + .align 40 + .align 40 + dta "weapons only use the shielding function" + .align 40 + dta "when hit by these weapons. In addition," + dta d"MIRV"* + dta d" warheads do not bounce or fly" + dta d" " + .align 40 + .align 40 + dta "through sidewalls when falling" + .align 40 + .align 40 + dta "None of the shields protect against" + dta d"Napalm"* + dta d". " + dta d"Bouncy Castle"* + dta d" or " + dta d"Mag"* + dta d" " + .align 40 + dta d"Deflector" + dta d" on a direct hit will deflect"* + dta d" " + .align 40 + .align 40 + dta "it or carry it past, but just hit very" + .align 40 + dta "close to a tank and its shield will not" + .align 40 + dta "save it." + .align 40 + dta d"White Flag"* + dta d", " + dta d"Hovercraft"* + dta d" and" + dta d" " + .align 40 + dta d"Nuclear Winter"* + dta d" weapons, when" + dta d" " + .align 40 + .align 40 + dta "selected, require activation, this is" + .align 40 + dta "accomplished by ""firing a shot"" after" + .align 40 + dta "the selection of that weapon. Of course," + .align 40 + dta "the shot of the offensive weapon is then" + .align 40 + dta "not fired, but only the selected" + .align 40 + dta "defensive weapon is activated." + .align 40 + .align 40 + dta "You can only have one defensive weapon" + dta d"active at a time (except " + dta d"Long"* + dta d" " + .align 40 + dta d"Schlong" + dta d" of course :) ). You can always"* + dta d" " + .align 40 + .align 40 + dta "change the decision and activate another" + dta d"defensive weapon or deactivate " + dta d"White"* + dta d" " + .align 40 + dta d"Flag" + dta d" before firing."* + dta d" " + .align 40 + .align 40 + .align 40 + dta "And of course, activating a weapon when" + .align 40 + dta "you already have some other weapon" + .align 40 + dta "activated causes the loss of the" + .align 40 + dta "previous one (no returns :) )." + .align 40 + .align 40 + dta " 7. ""Other"" weapons:" + .align 40 + dta "---------------------" + .align 40 + dta d"* " + dta d"Best F...g Gifts"* + dta d" - this is a 'loot" + dta d" " + .align 40 + .align 40 + dta "box', not a weapon per se. Buying it" + .align 40 + dta "draws one of the offensive or (rarely)" + .align 40 + dta "defensive weapons and adds it to the" + .align 40 + dta "player's arsenal. It is a lottery in" + .align 40 + dta "which you can lose (if you draw a weapon" + dta d"cheaper than the " + dta d"Best F...g Gifts"* + dta d" " + .align 40 + .align 40 + dta "price) but also gain. You can get a" + .align 40 + dta "weapon otherwise not affordable at all" + .align 40 + .align 40 + dta " 8. AI opponents:" + .align 40 + dta "------------------" + .align 40 + .align 40 + dta "The game has 8 difficulty levels of" + .align 40 + dta "computer-controlled opponents. Or" + .align 40 + dta "actually 7 different ones and one" + .align 40 + dta """surprise"". Each has its own way of" + .align 40 + dta "buying defensive and offensive weapons" + .align 40 + dta "and a different method of target" + .align 40 + dta "selection and targeting itself, as well" + .align 40 + dta "as weapon selection. They are arranged" + .align 40 + dta "in the list according to increasing" + .align 40 + dta """skills"":" + .align 40 + dta d"* " + dta d"Moron"* + dta d" - the dumbest of opponents" + dta d" " + .align 40 + .align 40 + dta "(which does not mean the safest). Shoots" + .align 40 + dta "completely at random using only one" + dta d"weapon - " + dta d"Baby Missile"* + dta d". He doesn't" + dta d" " + .align 40 + .align 40 + dta "buy anything and doesn't know how to use" + .align 40 + dta "defensive weapons." + .align 40 + dta d"* " + dta d"Shooter"* + dta d" - This opponent does not" + dta d" " + .align 40 + .align 40 + dta "shoot blindly. He chooses one direction" + .align 40 + dta "for himself. Based on his own position -" + .align 40 + dta "he shoots in the direction from which" + .align 40 + dta "there is more space assuming that this" + .align 40 + dta "is where the other tanks are. He starts" + .align 40 + dta "firing from a high angle and shot after" + .align 40 + dta "shot changes this angle to a lower and" + .align 40 + dta "lower angle trying to fire the entire" + .align 40 + dta "area on the chosen side. He always fires" + .align 40 + dta "with the best weapon he has (the highest" + .align 40 + dta "on the list of weapons he has - that is," + .align 40 + dta "not necessarily the best). He does not" + .align 40 + dta "use defensive weapons even though he" + .align 40 + dta "buys them" + .align 40 + dta d"* " + dta d"Poolshark"* + dta d" - When attacking, he" + dta d" " + .align 40 + .align 40 + dta "sets the nearest tank as his target," + .align 40 + dta "then selects the angle of the shot, and" + .align 40 + dta "tries to select its strength by drawing" + .align 40 + dta "it from the selected range. He always" + .align 40 + dta "shoots with the best weapon he has. He" + .align 40 + dta "uses defensive weapons. With a" + .align 40 + dta "probability of 1:3, he activates the" + .align 40 + dta "best defensive weapon he owns (the" + .align 40 + dta "highest on the list of weapons he owns -" + .align 40 + dta "that is, not necessarily the best)" + .align 40 + dta "before firing. If his energy level drops" + dta d"below 30 units - he uses " + dta d"Battery"* + dta d" (of" + dta d" " + .align 40 + .align 40 + dta "course, if he bought it before), if the" + .align 40 + dta "energy drops below 5 and he has no" + dta d"Battery"* + dta d" he surrenders - " + dta d"White"* + dta d" " + .align 40 + dta d"Flag" + dta d". At the beginning of the round he"* + dta d" " + .align 40 + .align 40 + dta "makes 1 attemp to buy defensive weapons" + .align 40 + dta "and 6 offensive weapons." + .align 40 + dta d"* " + dta d"Tosser"* + dta d" - When attacking, he acts" + dta d" " + .align 40 + dta d"exactly like " + dta d"Poolshark"* + dta d" however, he" + dta d" " + .align 40 + .align 40 + dta "may have a ""better"" weapon inventory due" + .align 40 + dta "to a different purchase tactic. He" + .align 40 + dta "always activates the best defensive" + .align 40 + dta "weapon he has before shooting. And just" + dta d"like " + dta d"Poolshark"* + dta d" he uses " + dta d"Battery"* + dta d" " + .align 40 + dta d"and " + dta d"White Flag"* + dta d". At the beginning of" + dta d" " + .align 40 + .align 40 + dta "the round, he assesses how much money he" + .align 40 + dta "has and depending on that, he makes" + .align 40 + dta "(money/5100) attempts to buy defensive" + .align 40 + dta "weapons and then checks again how much" + .align 40 + dta "money he has left and makes (money/1250)" + .align 40 + dta "attempts to buy offensive weapons." + .align 40 + dta d"* " + dta d"Chooser"* + dta d" - Takes as a target the" + dta d" " + .align 40 + .align 40 + dta "weakest opponent (with the least amount" + .align 40 + dta "of energy) and aims very precisely, but" + .align 40 + dta "before the shot the energy of the shot" + .align 40 + dta "is modified by the parameter of luck :)" + .align 40 + dta ", that is, despite the precise aiming it" + .align 40 + dta "does not always hit. He shoots with the" + .align 40 + dta "best weapon he has unless the target is" + .align 40 + dta "close. Then he changes his weapon to" + dta d"Baby Missile"* + dta d" to avoid hitting" + dta d" " + .align 40 + .align 40 + dta "himself. He always activates the best" + .align 40 + dta "defensive weapon he has before shooting" + dta d"and, like " + dta d"Poolshark"* + dta d", uses" + dta d" " + .align 40 + dta d"Battery"* + dta d" and " + dta d"White Flag"* + dta d". He" + dta d" " + .align 40 + dta d"purchases just like " + dta d"Tosser"* + dta d"." + dta d" " + .align 40 + .align 40 + dta d"* " + dta d"Spoiler"* + dta d" - He shoots exactly like" + dta d" " + .align 40 + dta d"Chooser"* + dta d" except that he has more luck" + dta d" " + .align 40 + .align 40 + dta ":) , which means that even if he doesn't" + .align 40 + dta "hit the target of his choice, it can be" + dta d"a more precise shot than " + dta d"Chooser"* + dta d". If" + dta d" " + .align 40 + .align 40 + dta "he is unable to hit his chosen target," + .align 40 + dta "he tries to choose another target that" + .align 40 + dta "he can accurately hit. He uses defensive" + dta d"weapons exactly like " + dta d"Chooser"* + dta d". At the" + dta d" " + .align 40 + .align 40 + dta "beginning of the round, he assesses how" + .align 40 + dta "much money he has and depending on that," + .align 40 + dta "he makes (money/5100) attempts to buy" + .align 40 + dta "defensive weapons and then checks again" + .align 40 + dta "how much money he has left and makes" + .align 40 + dta "(money/320) attempts to buy offensive" + .align 40 + dta "weapons. When buying defensive weapons," + .align 40 + dta "he buys only strong and precise weapons" + .align 40 + dta "- that is, weapons that won't" + .align 40 + dta "accidentally hurt him." + .align 40 + dta d"* " + dta d"Cyborg"* + dta d" - Takes aim at the weakest" + dta d" " + .align 40 + .align 40 + dta "opponent (with the least amount of" + .align 40 + dta "energy) but prefers human-controlled" + .align 40 + dta "opponents. If he is unable to hit his" + .align 40 + dta "chosen target, he tries to choose" + .align 40 + dta "another target that he can accurately" + .align 40 + dta "hit. Aims very accurately and in the" + .align 40 + dta "vast majority of cases hits on the first" + .align 40 + dta "shot. He fires the shot with the best" + .align 40 + dta "weapon he has unless the target is" + .align 40 + dta "close. Then he changes his weapon to" + dta d"Baby Missile"* + dta d" to avoid hitting" + dta d" " + .align 40 + .align 40 + dta "himself. He uses defensive weapons" + dta d"exactly like " + dta d"Chooser"* + dta d" but if he has" + dta d" " + .align 40 + dta d"more than 2 pieces of " + dta d"Battery"* + dta d" he" + dta d" " + .align 40 + .align 40 + dta "uses them if the energy decreases below" + .align 40 + dta "60 units.. He shops exactly like" + dta d"Spoiler"* + dta d"." + dta d" " + .align 40 + .align 40 + dta d"* " + dta d"Unknown"* + dta d" - Before firing each shot," + dta d" " + .align 40 + .align 40 + dta "he randomly chooses a course of action" + dta d"from " + dta d"Poolshark"* + dta d" to " + dta d"Cyborg"* + dta d" and" + dta d" " + .align 40 + .align 40 + dta "applies his tactics. However, the" + .align 40 + dta "tactics of weapon purchases are always" + dta d"identical to " + dta d"Tosser"* + dta d"." + dta d" " + .align 40 + .align 40 + .align 40 + dta "Trying to buy a weapon (offensive or" + .align 40 + dta "defensive) is as follows:" + .align 40 + dta "First, one of the weapons is drawn" + .align 40 + dta "(among all possible offensive or" + .align 40 + dta "defensive weapons). Then a check is" + .align 40 + dta "performed to see if the drawn weapon is" + .align 40 + dta "in the list of weapons possible for" + .align 40 + dta "purchase by the tank. If not, no weapon" + .align 40 + dta "is bought in this trial, and if so, its" + .align 40 + dta "price is checked. If the tank has that" + .align 40 + dta "much money, the weapon is bought," + .align 40 + dta "otherwise the trial ends without making" + .align 40 + dta "a purchase." + .align 40 + dta d"Weapons purchased by: " + dta d"Shooter"* + dta d"," + dta d" " + .align 40 + dta d"Poolshark"* + dta d", " + dta d"Tosser"* + dta d" and" + dta d" " + .align 40 + dta d"Chooser"* + dta d":" + dta d" " + .align 40 + .align 40 + dta "Offensive weapons:" + .align 40 + dta $5a, d" Missile" + .align 40 + dta $5a, d" Baby Nuke" + .align 40 + dta $5a, d" Nuke" + .align 40 + dta $5a, d" LeapFrog" + .align 40 + dta $5a, d" Funky Bomb" + .align 40 + dta $5a, d" MIRV" + .align 40 + dta $5a, d" Death's Head" + .align 40 + dta $5a, d" Napalm" + .align 40 + dta $5a, d" Hot Napalm" + .align 40 + dta $5a, d" Baby Roller" + .align 40 + dta $5a, d" Roller" + .align 40 + dta $5a, d" Heavy Roller" + .align 40 + .align 40 + dta "Defensive weapons:" + .align 40 + dta $5a, d" Battery" + .align 40 + dta $5a, d" Parachute" + .align 40 + dta $5a, d" Strong Parachute" + .align 40 + dta $5a, d" Mag Deflector" + .align 40 + dta $5a, d" Shield" + .align 40 + dta $5a, d" Heavy Shield" + .align 40 + dta $5a, d" Force Shield" + .align 40 + dta $5a, d" Bouncy Castle" + .align 40 + dta " " + dta d"Weapons purchased by: " + dta d"Spoiler"* + dta d" and" + dta d" " + .align 40 + dta d"Cyborg"* + dta d":" + dta d" " + .align 40 + .align 40 + dta "Offensive weapons:" + .align 40 + dta $5a, d" Missile" + .align 40 + dta $5a, d" Baby Nuke" + .align 40 + dta $5a, d" Nuke" + .align 40 + dta $5a, d" Hot Napalm" + .align 40 + .align 40 + dta "Defensive weapons:" + .align 40 + dta $5a, d" Battery" + .align 40 + dta $5a, d" Strong Parachute" + .align 40 + dta $5a, d" Mag Deflector" + .align 40 + dta $5a, d" Heavy Shield" + .align 40 + dta $5a, d" Force Shield" + .align 40 + dta $5a, d" Bouncy Castle" + .align 40 + .align 40 diff --git a/Manuals/manual.asm b/Manuals/manual.asm new file mode 100644 index 0000000..f57a7b9 --- /dev/null +++ b/Manuals/manual.asm @@ -0,0 +1,163 @@ + icl '../Atari/lib/ATARISYS.ASM' + icl '../Atari/lib/MACRO.ASM' + +screen_height = 26 +screen = $1000 ; start - 40*screen_height + + org $2010 ; after the screen + +src = $80 +dest = $82 +top_src = $84 + +start + mwa #dl dlptrs + mva #>WeaponFont chbas + + mwa #man_text_en top_src + +main_loop + mwa top_src src + mwa #screen dest + + ldx #screen_height-1 +screen_copy + ldy #39 +@ + lda (src),y + sta (dest),y + dey + bpl @- + adw src #40 + adw dest #40 + dex + bpl screen_copy + + jsr GetKey + cmp #@kbcode._down + beq scroll_down + cmp #@kbcode._up + beq scroll_up + jmp main_loop + +scroll_down + adw top_src #40 + cpw top_src #(man_text_en_end-screen_height*40) + scc:mwa #(man_text_en_end-screen_height*40) top_src + jmp main_loop + +scroll_up + sbw top_src #40 + cpw top_src #man_text_en + scs:mwa #man_text_en top_src + jmp main_loop + + +;-------------------------------------------------- +.proc GetKey +; returns pressed value in A +; when [ESC] is pressed, escFlag is set +; result: A=keycode +;-------------------------------------------------- +getKeyAfterWait + lda SKSTAT + cmp #$ff + beq checkJoyGetKey ; key not pressed, check Joy + cmp #$f7 ; SHIFT + beq checkJoyGetKey + lda kbcode + cmp #@kbcode._none + beq checkJoyGetKey + and #$3f ;CTRL and SHIFT ellimination + cmp #@kbcode._esc ; 28 ; ESC + bne getkeyend + mvy #$80 escFlag + bne getkeyend + +checkJoyGetKey + ;------------JOY------------- + ;happy happy joy joy + ;check for joystick now + lda STICK0 + and #$0f + cmp #$0f + beq notpressedJoyGetKey + tay + lda joyToKeyTable,y + bne getkeyend + +notpressedJoyGetKey + ;fire + lda STRIG0 + beq JoyButton + jsr Check2button + bcc SecondButton + bne checkSelectKey +checkSelectKey + lda CONSOL + and #%00000010 ; Select + beq SelectPressed + lda CONSOL + and #%00000100 ; Option + bne getKeyAfterWait +OptionPressed + lda #@kbcode._atari ; Option key + bne getkeyend +SecondButton +SelectPressed + lda #@kbcode._tab ; Select key + bne getkeyend +JoyButton + lda #@kbcode._ret ;Return key +getkeyend + ldy #0 + sty ATRACT ; reset atract mode + rts +Check2button + lda PADDL0 + and #$c0 + eor #$C0 + cmp PaddleState + sta PaddleState + rts +.endp + + +dl + :2 .byte SKIP8 + .byte LMS+MODE2 + .word screen + :(screen_height-1) .byte MODE2 + .byte JVB + .word dl + +joyToKeyTable + .by $ff ;00 + .by $ff ;01 + .by $ff ;02 + .by $ff ;03 + .by $ff ;04 + .by $ff ;05 + .by $ff ;06 + .by @kbcode._right ;07 + .by $ff ;08 + .by $ff ;09 + .by $ff ;0a + .by @kbcode._left ;0b + .by $ff ;0c + .by @kbcode._down ;0d + .by @kbcode._up ;0e + .by $ff ;0f + +escflag .byte 0 +paddlestate .byte 0 + .align 40 +man_text_en + icl 'man_cart_txt_EN.asm' +man_text_en_end + + .align $400 +WeaponFont + ins '../artwork/weapons_AW6_mod.fnt' ; 'artwork/weapons.fnt' + + run start \ No newline at end of file diff --git a/Manuals/manual.xex b/Manuals/manual.xex new file mode 100644 index 0000000..82e2ee7 Binary files /dev/null and b/Manuals/manual.xex differ diff --git a/Manuals/manual_conv.py b/Manuals/manual_conv.py index 6fe12d3..d834977 100644 --- a/Manuals/manual_conv.py +++ b/Manuals/manual_conv.py @@ -53,6 +53,41 @@ for line in out.split('\n'): # convert to SCREENCODES for line in out2.split('\n'): - line = line + ' '*(MAX_W-len(line)) - line = line.replace('"', '""') - print(f' dta d"{line}"') + # line = line + ' '*(MAX_W-len(line)) + line_out = "" + if '**' not in line: + line_out = line.replace('"', '""') + else: + # replace **text** with inverse + if line.strip().startswith('**'): + inverse = True + else: + inverse = False + chunks = line.split('**') + line_length = 0 + + for chunk in chunks: + line_length += len(chunk) + if not chunk: + continue + chunk = chunk.replace('"', '""') + print(f' dta d"{chunk}"', end='') + if inverse: + print('*') + else: + print() + inverse = not inverse + # add missing spaces + print(f' dta d"{" "*(MAX_W-line_length)}"') + if '*' in line_out: + if line_out.startswith('*'): + line_out = line_out.replace('*', '$5a, d"', 1) + '"' + else: + line_out = 'd"' + line_out.replace('*', '", $5a, d"') + '"' + elif line_out: + line_out = '"' + line_out + '"' + print(' .align 40') + if line_out: + print(f' dta {line_out}') + +