FreezeGUTS
==========
--------------------------------
Author: donaldo (at) guts-wox.de
Date  : 16.10.2011
--------------------------------

FreezeGUTS is a team based gametype where players get frozen instead of getting killed.
Frozen players can not move anymore and must spectate the game until they are thawed.
Frozen team players are slowly melting by their own until full health is gained back. 
Team players can speed up the melting process by standing next to the frozen team players 
sharing body heat. You can also initiate a self thawing process using adrenaline if you 
got enough of it. The goal is to freeze all players of the opposing team.

Imho you can get the most fun out of this gametype when using also the "instagib" mutator (Mutator=XGame.MutInstaGib). 


Beta-Notes
==========

FreezeGUTS is still in beta. There are several known issues which will be removed with
a later release (hopefully). But there are for sure also unknown bugs. If you encounter
any problem or if you have any suggestion for optimization, please, let me know.


Features
========

Team Radar: 
-----------
The team radar shows the location of your team players. It does NOT show the position 
of the enemy!!

  Legend:
    * red dots: living team mates
    * blue dots: frozen team mates
    * normal size dots: team mate is on the same level
    * bigger dots: team mate is above you
    * smaller dots : team mate is below you


Thawing Behaviour: 
------------------
A frozen player starts with zero health. In order to get unfrozen he needs 100% health back.
Each second of melting 2 health points are added to a frozen player.

Each second a team player stands beside and thaws a frozen player 20 health points are added.
That means, it would take about 5 seconds max to thaw a frozen team player.

If you have enough adrenaline you can speed up thawing by initiating self-healing.

It is possible to kick frozen players out of the world so that the really die and would not
come back to the current round!


Thawing AI:
-----------
The chance that a bot AI decides to thaw a team player depends on the bot skill but will be
at least 30% if a frozen team player is in range. The chance increases with the number of 
frozen team players.

A bot will try to thaw the nearest frozen team player if he does not get thawed already.
The decision is based on radar visibility. So a bot might decide to thaw a team player even
if there is no direct path or line-of-sight. If so, the bot will try to find a path to the
frozen team player. But on the way he might also decide to thaw somebody else. So don't get
your hopes up to much ... :-) 

If vehicles are involved a bot might even come faster to the rescue. Advancing a frozen team
player by vehicle the bot will leave the vehicle as soon as he is close enough for thawing.

Bots can also perform self-healing using adrenaline as users can do.


Freeze Player Table-HUD:
------------------------
On the left side of the HUD player tables show the frozen state of your team players and of
the opposing team. For your own team the current health state is shown. The table order 
differs for frozen and alive players:

  * alive players are sorted by score
  * frozen players are sorted by health

So the topmost frozen player in the list will be the next one thawed.


Scoring System:
---------------
Scoring system which gives extra score points for full thawing and also score points 
when killing some frozen player by dodging him over the edge...

  * normal kill    : 2 points (team kill: -2; team self kill: -1)
  * frozen kill    : 1 point  (dodging frozen pawn over the edge; team kill: -1)
  * long thaw      : 2 points (thawing for more than 3 seconds in a row)
  * short thaw     : 1 point  (thawing for less than 3 seconds in a row)
  * suicide        : -1 point (jumping over the edge all by your own)


Overtime:
---------
During overtime frozen player do not melt and can not be thawn anymore. Only adrenaline
self-healing should work. During overtime health is drained from alive players.
Overtime life drain:
  * health drain cycle is set to 5 seconds
  * each drain cycle there is a 80% chance health gets drained from a living player
  * 5 health points are drained per drain cycle


Misc:
-----
  * Support for FriendlyFire: with FriendlyFire enabled the instigator will take damage 
    when shooting on a team player and might run the risk to freeze himself.
  * Spectating HUD shows own health and own adrenaline even if spectating other players
  * When frozen you will hear some louder thawing sound shortly before fully thawn.
    You will hear that sound even if you are spectating other players.
  * Team colored icy texture and liquid shader on frozen pawns.
  * Relocation on each round start based on Nico's 3D algorithm for team spawning. Also
    implemented some spawn protection avoiding 'teleporter' death at spawn time.
  * Support for DM, CTF, DOM, ONS, and VCTF maps. Without the game type specific
    objects and objectives. Vehicles are fully supported.
  * Console messages are in team color. So you can quickly see if an own team player or
    a player from the opposing team is frozen (darker color) or back in the game (brighter
    color).
  * FreezeGUTS offers a bunch of configuration options for melting and thawing behaviour, 
    overtime health drain, vehicle support, self-inflicting friendy fire option, and bot 
    thawing behaviour.


Configuration Options
=====================

FreezeGUTS offers several configuration options which can be set using the UT2004 gui and
also using the 'FreezeGUTS.ini' file. Combining different options might result in different
ways affecting the game play.

Thawing
-------

- MeltingHealth (default: 2 / range: 0-15)

  When a player gets frozen he is slowly melting by its own. 'MeltingHealth' configures the
  amount of melting health points per cycle.
  If set to '0' there is no automatic melting and frozen player needs to be thawed by team
  players in order to get back in the game.


- ThawingHealth (default: 20 / range: 10-40)

  When a player is stays next a frozen team player the thawing is accelerated. 'ThawingHealth'
  configures the amount of thawing health points per cycle.


- MultiThawerAddon (default: 5 / range: 0-15)

  When multiple thawers are standing next to a frozen team player the thawing amount per 
  cycle can be increased with number of thawers. For each additional thawer (not the first
  one) 'MultiThawerAddon' defines the amount of health points which will be added to the
  'ThawingHealth' per cycle.
  If set to '0' there will only be 'ThawingHealth' added per cycle regardless of the number
  of the current thawers.


- MaxThawers (default: 2 / range: 1-10)

  Sometimes there could be more thawers standing next to a frozen team player than needed
  to get him back in the game. 'MaxThawers' tells the bot when to look for another target
  if already enough thawers are thawing the same frozen team player.
  If set to '2' a bot will look for another target when at least 2 other players are already
  thawing the same frozen team player. In this way the game play can be more dynamic.


FriendlyFire
------------

- FriendlyFireScale (default:0.000000 / range: 0.0-1.0)

  This is the original friendly fire option from UT2004. It configures if shooting at team
  players will cause damage on the hit team player. The amount of damage that will be 
  inflicted can be configured as a fraction amount of the harm it would usually have.
  If set to '0.0' friendly fire is deactivated. Shooting at team player will cause no damage

- bFriendlySelfFire (default: True / range: True-False)

  If friendly fire is activated this option can enable a 'mirror' effect. The damage that a
  friendly fire shot would have on a team player will not harm the team player but the 
  shooter instead. 
  If set to 'True' each shot at a team player will cause damage on the instigator. Players
  have to be more careful with what they are shooting at. Otherwise they might freeze themselfs
  by firing on team players.
  This option will only be valid if 'FriendlyFireScale' is greater than '0.0'. It will also
  affect vehicles if you run over team players.


Overtime
--------

- OvertimeDrainHealth (default: 10 / range: 5-20)

  During overtime each player will periodically experience some damage in order to force an
  end game result. 'OvertimeDrainHealth' configures the amount of damage.

- OvertimeDrainCycles (default: 5 / range: 1-20)

  This option defines the number of cycles (usually seconds) between the overtime damage 
  events. If set to '5' the amount of 'OvertimeDrainHealth' damage will be applied every
  5 cycles (seconds).

- OvertimeDrainChance (default: 80.0 / range: 20.0-100.0)

  Every overtime damage cycle each player has a chance to skip the application of the overtime
  damage. 'OvertimeDrainChance' configures the chance that the overtime damage will be applied.
  If set to '100.0' the damage will be applied each time. If set to '80.0' each player has a
  20 percent chance not to be damaged.


Misc
----

- bEnableVehicles (default: True / range: True-False)

  With this option set to 'True' vehicles will be activated if the map contains vehicles, e.g.
  VCTF- and ONS-Maps. If set to 'False' vehicle will not appear even if the map contains them.

- bSpecAllPlayers (default: False / range: True-False)

  This should always be set to 'False' for fair play. If set to 'True' frozen players can 
  spectate also the opposing team players.


Default Options
---------------

The default options of the 'FreezeGUTS.ini' file can be overriden as usual using command line 
parameters or by configuring through the ingame GUI (the Ini-file itself will not be 
overridden).

[FreezeGUTS.FreezeGUTS]
MeltingHealth=2
ThawingHealth=20
MultiThawerAddon=5
MaxThawers=2

FriendlyFireScale=0.000000
bFriendlySelfFire=True

OvertimeDrainCycles=5
OvertimeDrainHealth=10
OvertimeDrainChance=80.000000

bEnableVehicles=True
bSpecAllPlayers=False


Credits:
========
- L7: FreezeGUTS is based on "FreezeTag_B2" from L7 who introduced this gametype to
      UT2004. Many thanks to L7 who give the source code for the community for free use.

- Nico de Vries: Nico developed the BTFA Freeze mod for UT3. His version of the freeze
      gametype introduced a fully new and fresh gameplay. I tried to adapt some of his
      gameplay ideas and concepts to gain a similar feeling for UT2004. I am very grateful
      that Nico gave the permission to adapt his concepts and use his code.

- Borysses: Many thanks to borysses for his icy texture which is used within FreezeGUTS
      for frozen players.

- Mysterial: his Greed mod includes some workaround for showing all map types in 
      single player menu. This workaround has been adapted for FreezeGUTS.

- Sly: for bug finding and his great recommendation for adding support for VCTF and ONS
      maps with vehicles ... I really like that :-) 

- Epic: Credits go to Epic for the game UT2004 itself and for providing the means
      for game enhancements to the community.

- Tester: Last but not least credits go to the GUTS online testers falvis, nemesis,
      bingobongo and stalker! Hopefully we got most of the bugs out :-)


Known Issues (v07b):
====================
- Only in Nework games: when spectated pawn gets frozen -> spectator falls back to
  own pawn? (-> objective: stays on pawn instead of returning to own pawn)
- Sometimes bots are just standing around and doing nothing. Is that normal?


Copyright Notice
================
FreezeGUTS is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program.  If not, see http://www.gnu.org/licenses/.
   
This program also contains parts that are originally derived from Epic 
which are Copyright 1998-2007 Epic Games, Inc. All Rights Reserved. Those 
parts of the program are covered by the Epic license and not by the GPL.

