Arms Race is the Aleph One implementation of the game type of the same name from Counterstrike. Players may only use one weapon per "level." Each kill advances the player by a level, allowing access to a different weapon and giving the player one point. When a player makes a kill with the last possible weapon, the game ends, and that player is the winner. In essence, it's a very limited Every Man For Himself match.
The win condition in team games is slightly different: the game ends when all players belonging to the same team have made their final kill. Until then, all players who have advanced past the final kill will be invincible and unable to use any weapons. Griefers might enjoy taking bullets to protect team mates. Noble players will hover at the edges of the battle and watch, or use the backspace key to look at the game through team members' points of view.
The default version of the script provides weapons in descending order of Ryoko's Canonical Weapon Usefulness:
It is important to follow these hosting instructions in order for the game to work as intended. Not hosting as described will probably cause the game to end at the wrong time, and will prevent the score from being calculated correctly.
In case you don't like the default weapon order, or if you want to adapt this script to a different scenario, it is possible to make some basic modifications. There is one important underlying assumption that might cause the game not to work: the script assumes that each projectile type is shot from a different weapon. If any two weapons can shoot the same projectile type, I can't guarantee the desired behavior. Perhaps in a future release I can change this.
If you don't have to worry about that, open the script in a text editor (not a word processor, idiot), and modify the following lists, which should appear very close to the beginning of the file. If you are past the following lines:
--[[ modify below this comment at your own risk
you are on your own. Please refer to the Aleph One Lua API document for more information on item and weapon mnemonics.
This is the table to modify if you want to change the weapon order. Entries are ordered with the winning (final) weapon highest and the initial weapon lowest. Thus, in the default configuration, "fist" is the first entry in the list, and "missile launcher" is the last entry in the list.
It is possible to allow weapons that can be wielded in either fist, such as the shotguns, to occur twice. There are two ways to do this.
OrderedWeapons = { "fist", "pistol", "pistol", "alien weapon", "fusion pistol", "assault rifle", "shotgun", "smg", "flamethrower", "shotgun", "missile launcher" }
OrderedWeapons = {
"fist",
"pistol", "pistol",
"alien weapon",
"fusion pistol",
"assault rifle",
"shotgun",
"smg",
"flamethrower",
"shotgun",
"missile launcher"
}
OrderedWeapons = { "fist", "pistol", "pistol", "alien weapon", "fusion pistol", "assault rifle", "shotgun", "smg", "flamethrower", "shotgun", "missile launcher" }
Modify this table if you want to change which items may spawn on the ground in the map. The default script preserves spawning for all powerups, chips, and balls, with the exception of the invincibility powerup. This was excluded because players can't use the fusion pistol, its only weakness, at any given time. If you wanted to change this, you could modify the list to look like this:
KeepTheseItems = {
"invisibility",
"infravision",
"extravision",
"oxygen",
"single health",
"double health",
"triple health",
"key",
"uplink chip",
"balls",
"invincibility"
}
The balls item is not a real item mnemonic in the Aleph One Lua API; it's a psuedonym for all the ball types. To choose individual ball types to spawn, remove this line and choose those types from the API reference.
By default, the script gives to the player zero of any "arms race" weapon (i.e. a weapon associated with one or more levels) and 100 of any other item, except for those on this list. This is intended to prevent all players from receiving repeated powerups, etc., while allowing them to have infinite ammunition. The DoNotGiveTheseItems list allows you to control this exclusion. Note that items in the OrderedWeapons list are always excluded.
First version. Requested by Ryoko.