Contents

How To Play

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:

  1. SPNKR (rockets)
  2. Dual WSTE (shotguns)
  3. TOZT (flamethrower)
  4. KKV-7 (submachine gun)
  5. Single WSTE
  6. MA-75B (assault rifle)
  7. Zeus-Class Fusion Pistol
  8. 0xfded (alien weapon)
  9. Dual .44 Magnum Mega Class A1 (pistol)
  10. Fists
When you (and any team mates) kill someone with the fist, you win the game.

Hosting

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.

  1. Place the Lua script (a file called Arms Race v1.0.lua) somewhere you can easily access from the Aleph One interface. Do not place it in the Scripts or MML folders in your Aleph One directory.
  2. Start Aleph One.
  3. Select Gather Network Game from the main menu.
  4. Under the Game section, choose the the Netscript option from the Game Type list.
  5. Under the Net Script section, check the Use Netscript box, then choose the script by navigating to it and clicking on it.
  6. Under the Duration section, choose either Unlimited or Time Limit options from the Game Ends At list. Choose the latter option if you still want there to be a time limit to the game. In this case, the winner is the player with the most points.

Modifying

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.

OrderedWeapons

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.

Separately
The weapon occurs in a "dual" form earlier in the list. This is the case in the default configuration with the shotguns. The first time you can have shotguns, you receive both of them. The second time you receive them, you only get one of them. This is accomplished in the highlighted parts of the script, below. Simply include the weapon name in in both places you want it to be used, with the lower entry indicating dual instances and the higher entry indicating a single instance.
OrderedWeapons = {
   "fist",
   "pistol", "pistol",
   "alien weapon",
   "fusion pistol",
   "assault rifle",
   "shotgun",
   "smg",
   "flamethrower",
   "shotgun",
   "missile launcher"
}
	  
Singly
This weapon occurs in dual form and only in that form, once. The default script uses this behavior with the pistols. To duplicate this behavior, list the weapon twice in a row. The duplicate "level" will be removed, and there will remain a single "level" that gives the player two instances of the same weapon. See the highlighted section below.
 OrderedWeapons = {
   "fist",
   "pistol", "pistol",
   "alien weapon",
   "fusion pistol",
   "assault rifle",
   "shotgun",
   "smg",
   "flamethrower",
   "shotgun",
   "missile launcher"
}
	  
Note that you don't have to include both on the same line. Doing so, however, is recommended for readability.
OrderedWeapons = {
   "fist",
   "pistol",
   "pistol",
   "alien weapon",
   "fusion pistol",
   "assault rifle",
   "shotgun",
   "smg",
   "flamethrower",
   "shotgun",
   "missile launcher"
}
	  

KeepTheseItems

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.

DoNotGiveTheseItems

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.

Changelog

2015-08-18: v1.0

First version. Requested by Ryoko.