ExtendedLMS [first public release | ver: 15m] by "adminthis"
-----------------------------=-----------------------------
Tested by 500+ players.
Tested with server version 451
Tested with client versions 400, 436, 451
Expected compatibility: ALL versions (server/client v400 - v451)

============
Introduction
============

ExtendedLMS started off as an idea suggested on unrealadmin.org. More features were added later on. Basic overview: unlike in traditional Last Man Standing games, players can join the match midgame. Only when the match is almost over, players will be forced to join as a spectator.

To keep the game fair, players joining late can be punished by reducing the amount of lives they start with. The punishment is always in relation to the best player's amount of lives (example: best player has 8 lives, with punishment set at 3, a new player will be given 5 lives when entering the game).

Extra features to improve LMS are:

* AntiCamp: each players' health is draining 1 health point per second. Each kill is rewarded with 50 health points or, in 5% of the cases, with either UDamage, Invisibility or Armor. This feature is only active with more than two active players. If a player stays in the same spot for too long, health is reduced by 30 points.

* Spawn Protection: for a short period after respawning the player is invulnerable. This serves mainly to protect against self inflicted damage which sometimes occurs after respawning.

* IP check: fairly obvious. Once the match is in progress, a player cannot rejoin the match. This is to prevent people from abusing the midgame join feature. This check is done by IP address, which has it's up- and downsides.

** Most features are serverside, so only a very small download to clients is required. **

============
Installation
============

First unzip all the files to your ..\UnrealTournament\System directory.

ExtendedLMS is a new gametype. Fortunately, your server will be shown as a regular Last Man Standing server in the server browser. You will need to load the game as follows:

ucc server DM-Deck16][.unr?Game=ExtendedLMS15m.LastManStanding?mutator=

You have two options to load the extra mutators which handle AntiCamp and Spawn Protection.
Method 1: You can add them to the commandline:

ucc server DM-Deck16][.unr?Game=ExtendedLMS15m.LastManStanding?mutator=ExtendedLMS_s15m.AntiCamp,ExtendedLMS_s15m.SpawnProtection

Method 2: You can load them via the web admin or some other way... 
They should show up in the mutator listing as "ExtendedLMS: AntiCamp" and "ExtendedLMS: Spawn Protection".

----

Now add the lines below to your server ini file (default: UnrealTournament.ini). 
Add the following entry under [Engine.GameEngine]:

ServerActors=ExtendedLMS_s15m.Check

Then add the following at the end of your server ini:

[ExtendedLMS15m.LastManStanding]
bHighDetailGhosts=False
Punishment=3
FragLimit=10
TimeLimit=0
bMultiWeaponStay=True
bForceRespawn=True
bUseTranslocator=False
MaxCommanders=0
bNoMonsters=True
bHumansOnly=False
bCoopWeaponMode=False
bClassicDeathMessages=False
MinFOV=80.000000
MaxFOV=130.000000
MaxNameChanges=0
bMapVote=True

Adjust the values accordingly. Here is a short overview of the most important values:

Punishment: the amount of lives to take away from midgame joiners in relation to the best player. This value is always negative. In this case 3 lives will be taken away from midgame joiners.
Fraglimit: the amount of lives a player starts with at the beginning of the match.
bMapVote: experimental option in an attempt to fix the MapVote bug (read below). Doesn't really do anything. If you experience problems such as the game never starting, you might try switching this from True to False and vice versa.

Once the game has started, a new file called ExtendedLMS_s.ini will be automatically created. This file holds all the IP addresses of players currently playing on the server. 

==========
Known bugs
==========

* MapVote: using one of the first versions of BDBMapVote, during the end of the match, all text messages are no longer processed. However, votes are still registered correctly. Note: this bug might not occur with newer versions of BDBMapVote and derivatives thereof.
* Health drain: since health draining is controlled serverside, it will sometimes halt for a few seconds, but automatically continue again shortly thereafter.
* Game never starts: numerous features have been built in to prevent this from happening and it hasn't happened ever since. Still it's recommended to run an idle checker (example: if server is empty for 5 minutes, switch map).
* IP check. People using a shared Internet connection (and thus the same IP address) will have to join at the game start to enter the match. If they try to join midgame, only the first person will be allowed to enter, the rest will be seen as having already been in the match before.
* AntiCamp: sometimes it will generate a false positive and substract 30 health points from a player, whilst he wasn't camping.

=======
Contact
=======

Bugs? Suggestions? Send a PM to "adminthis" at www.unrealadmin.org.

I'm not a programmer, so the code might be inefficient and you could surely have done a better job at it, bla bla etc...  ENJOY!
Credits: a lot of code used is written by "nogginBasher", "TheWatcher", "Eavy" and "Boden". Used without permission. 
Thank you.