***            Hunt Mod           *** 
***                               *** 
***         by J. Hoffmann        *** 
***  www.planetquake.com/modifia  *** 
***     juhox@planetquake.com     *** 




Welcome to the Hunt technical manual.

This document assumes familiarity with Quake III Arena.




=================================================================
=== Contents
===

Chapter
-----------------------------------------------------------------
1    Gamestamps
2    Templates
2.1  Using Templates
2.2  Creating Templates
3    Game Seed
4    New Callvotes
5    Console Variables
5.1  Server Side Console Variables
5.2  Client Side Console Variables




=================================================================
=== Chapter 1
=== Gamestamps
===

Whenever a match is completed Hunt will generate two files:

   gamestamp.txt
   gamestamp.gs

"gamestamp.txt" contains some statistics about the match in a
readable format. "gamestamp.gs" contains the same information in
a compressed, checksummed, and encrypted format. If you mail me
the "gamestamp.gs" file, I can check and verify the conditions
and results of your match. This enables me to maintain a global
hall of fame. Check out http://www.planetquake.com/modifia/hunt/
for more information.

The "gamestamps" directory contains a history of the last 25
gamestamps, including the current one. This number is actually
determined by the cvar "g_maxGamestamps." So, e. g. to increase
the size of the history to 100 entries, start Q3A, open the
console and enter

	/g_maxgamestamps 100

The "highscores" directory contains gamestamps for local records.
This requires the usage of game templates, though.

PLEASE NOTE:
If you don't want Hunt to generate gamestamps, just set
"g_createGamestamps" to "0." On the other hand, if you want Hunt
to generate gamestamps, but it doesn't, make sure the cvar is
set to "1."




=================================================================
=== Chapter 2
=== Templates
===

Templates provide an easy, comfortable way to configure a match.
They can be useful in many cases.

   - You're new to Hunt and don't understand all these new
     options?

   - You've multiple favourite settings so you have to change the
     options frequently?

   - You want to enter the global hall of fame, and thus want to
     make sure you fulfill the requirements?

All of these problems can be solved by using templates, and they
can do even more! But let's proceed step by step.



=================================================================
=== Chapter 2.1
=== Using Templates
===

Templates can be used both before and during a match. When you
create a new match, either single player or multiplayer, you'll
notice a new entry at the top of the first "Game Server" page
(where you select the game type and map), reading "Game
Templates." Click on it to open the templates menu. You'll see a
list of templates. Choose one by clicking on it, then hit "Next."
You're presented the settings done by the template. Some entries
may be grayed out, so you can't change them, others may not. This
is especially important with the global hall of fame. If you
choosed such a template, all options grayed out can't be changed
without violating the requirements. You can edit any other option
to your liking. Finally, hit "Fight" to start the match.

The in-game menu contains an entry to show the game templates
page, too. Now it works a bit different, though. First of all,
the templates you see are actually installed at the server. You
can click one and hit "Vote" to call a vote for this template. If
the vote passes, the server will execute it.

You can save the settings of the current match in a local
template by entering a name at "Save Current Settings As" and
hitting the "Save" button. Since the name needs to be unique, you
may want to switch to "Show local templates."



=================================================================
=== Chapter 2.2
=== Creating Templates
===

The easiest way to create a template is to save the current
settings via the in-game menu. These are stored as cvars in the
"q3config.cfg" file in your Hunt installation directory. These
cvars always have the name "savedNNN," where "NNN" is a number
between 000 and 999.

You can also create template files, each of which can store up to
1000 templates. A template file must be stored in the "templates"
directory of your Hunt installation directory. There should
already be a template file "default.tmpl," which contains the
standard templates provided by Hunt. A template file is just a
normal config file that contains a series of "set" statements.
Each of these statements assigns a template string to a cvar. The
cvars used must always match the name of the template file. For
example, in a template file "myname.tmpl" all cvars must be
called "mynameNNN," where "NNN" is a number between 000 and 999.

In any case, the template string is a standard config string,
that is, it looks like this:

   "key1\val1\key2\val2\ ... \keyN\valN"

Note that the order of the keys is not important.

The following list shows all valid keys and their values. Some
keys are required while others are optional. When a key is
flagged as "D/F," this means the value must be preceeded with
either a "d" or "f." In this case, "d" means the value is used
only as a *d*efault, which may be overwritten by the user, while
"f" marks values that should be *f*orced to come into use. Values
marked by "f" are grayed out at the game server menu, and if the
value is overwritten during the match, Hunt won't register a
highscore. Note that values not flagged as "D/F" are always
treated as "f" values, if a value is provided.

   - name       [required]
     Defines the name of the template as it's displayed to the
     user.

   - gt         [required]
     Defines the gametype (cvar g_gametype, see chapter 5.1).

   - map        [required]
     Defines the map name. Use Quake's internal map names, like
     "Q3DM1." At the game server menu, this name is shown below
     the picture of the map.

   - mp         [optional]
     Defines the maximum number of players allowed for the game.

   - mip        [optional]
     Defines the minimum number of players for the game.

   - bh         [optional, D/F]
     Defines the base health (cvar g_basehealth, see chapter
     5.1).

   - fl         [optional, D/F]
     Defines the fraglimit. In CTF games it defines the capture
     limit.

   - tl         [optional, D/F]
     Defines the timelimit.

   - rd         [optional, D/F]
     Defines the respawn delay (cvar respawndelay, see chapter
     5.1).

   - gs         [optional, D/F]
     Defines the gameseed (cvar g_gameseed, see chapter 5.1).

   - ff         [optional, D/F]
     Defines whether friendly fire is on (value=1) or off
     (value=0).

   - st         [optional, D/F]
     Defines whether limited stamina is on (value=1) or off
     (value=0) (cvar g_stamina, see chapter 5.1).

   - af         [optional, D/F]
     Defines whether armor fragments are generated (value=1) or
     not (value=0) (cvar g_armorfragments, see chapter 5.1).

   - ldl        [optional, D/F]
     Defines the lightning damage limit (cvar
     g_lightningdamagelimit, see chapter 5.1).

   - dmf        [optional, D/F]
     Defines the dmflags (cvar dmflags).

   - gh         [optional, D/F]
     Defines the grappling hook mode (cvar g_grapple, see chapter
     5.1).

   - spd        [optional, D/F]
     Defines the run speed (cvar g_speed).

   - kb         [optional, D/F]
     Defines the strength of the knockback when players get hit
     (cvar g_knockback).

   - grv        [optional, D/F]
     Defines the gravity (cvar g_gravity).

   - art        [optional, D/F]
     Defines the number of artefacts to be collected
     (cvar g_artefacts, see chapter 5.1). This key is ignored if
     the gametype is not 8 (STU).

   - mim        [optional, D/F]
     Defines the minimum number of monsters (cvar g_minmonsters,
     see chapter 5.1). This key is ignored if the gametype is not
     8 (STU).

   - mam        [optional, D/F]
     Defines the maximum number of monsters (cvar g_maxmonsters,
     see chapter 5.1). This key is ignored if the gametype is not
     8 (STU).

   - msd        [optional, D/F]
     Defines the monster spawn delay (cvar g_monsterspawndelay,
     see chapter 5.1). This key is ignored if the gametype is not
     8 (STU).

   - mhs        [optional, D/F]
     Defines the monster constitution (cvar g_monsterhealthscale,
     see chapter 5.1). This key is ignored if the gametype is not
     8 (STU).

   - mg         [optional, D/F]
     Defines the average part of monsters spawning as guards
     (cvar g_monsterguards, see chapter 5.1). This key is ignored
     if the gametype is not 8 (STU).

   - ht         [optional]
     Defines the type of highscore to be maintained for this
     template. Valid values are
        - 0 = no highscore
	- 1 = score challenge (the highest score is recorded)
	- 2 = time challenge (the shortest time is recorded)
     If this key is not provided or the value is out of range, it
     defaults to 0.

   - hn         [optional]
     Defines the name of the cvars used to store the highscore.
     For example, if the highscore name is "myhighscore," the
     highscore is stored in "myhighscore0" and "myhighscore1." If
     this key is not provided, it defaults to the template name.




=================================================================
=== Chapter 3
=== Game Seed
===

The game seed is used to initialize Hunt's internal random number
generator (RNG). The RNG is used to determine

   - the spawn point of players

   - the spawn point of monsters

   - the spawn point of artefacts

   - the behavior of monsters

Note that bots are (currently) not affected by the RNG.

If the game seed is set to zero, the RNG is initialized randomly,
that is, you can't predict anything.

On the other hand, if the game seed is set to a number between 1
and 65535, this number is used to initialize the RNG. This means,
if you keep the game seed to a constant non-zero value, you can
predict (to a certain extent) all aspects that are affected by
the RNG. Note that, since the behaviour of monsters is also
affected by you, you can't predict this aspect too precisely.

Of course, you can't derive anything just from the number. You
have to play a match to figure out how it's arranged. But when
you restart it, you can be sure that everything works (much) as
before.

The advantage is, you can train the game as in the good old days
of 2D shooters. This matches the fact that Hunt can maintain a
highscore as in the good old days of 2D shooters.




=================================================================
=== Chapter 4
=== New Callvotes
===

The callvote command now accepts two new aspects to vote for.

1. callvote addbot <name> <skill> [team]

   Use this command to call a vote for adding a bot. <name> is
   the name of the model. <skill> is a number between 1 and 5,
   where

      - 1 means "I can win"
      - 2 means "Bring it on"
      - 3 means "Hurt me plenty"
      - 4 means "Hardcore"
      - 5 means "Nightmare"

   In team games you can specify the team the bot should be added
   to. Use "red" or just "r" for the red team, and "blue" or just
   "b" for the blue team.

   Example:
   /callvote sarge 5 blue
   adds Sarge with nightmare skill to the blue team.

   To remove a bot use the "callvote kick <name>" command.


2. callvote template <internal template number>

   Since there's no command to find out the internal template
   number, I strongly recommend to use the in-game menu's "game
   templates" page to call a vote for a template.




=================================================================
=== Chapter 5
=== Console Variables
===

Hunt should support all of the original console variables
(cvars).
But please note:
   - Hunt is based on the V1.27g source code. The only supported
     cvars of newer versions are
       - cg_noProjectileTrail

   - As there's no quad damage powerup in Hunt, the g_quadfactor
     variable is ignored.

   - There're no weapons to collect in Hunt, so g_weaponrespawn
     and g_weaponteamrespawn are ignored, too.



=================================================================
=== Chapter 5.1
=== Server Side Console Variables
===

Most of the following cvars are actually covered by the user
interface. You can safely ignore this chapter unless you want to
set up a dedicated Internet server.



=== General Game Options

g_gametype              [0,1,3,4,8, default is 0] INTEGER
   0   Free For All
   1   Tournament
   3   Team Deathmatch
   4   Capture The Flag
   8   Save The Universe

g_gameseed              [0 ... 65535, default is 0] INTEGER
   Defines the game seed.
   See chapter 3 of this manual for more information.

g_basehealth            [1 ... 1000, default is 300] INTEGER
   Defines the standard health and armor value of all players.
   Players can have health and armor values of up to
   2*g_basehealth. If health or armor are above g_basehealth, the
   value will drop slowly to g_basehealth. You'll get the
   standard Q3A behaviour by setting g_basehealth to 100.

g_armorfragments        [0 or 1, default is 0] INTEGER
   If set to 1, players will scatter around collectable "armor
   fragments" when hit.
   See chapter 9 of the tutorial for more information.

g_stamina               [0 or 1, default is 0] INTEGER
   If set to 1, players will exhaust and slow down when running
   or jumping too much.
   See chapter 14 of the tutorial for more information.

respawndelay            [0 ... 999, default is 10] INTEGER
   Fragged players have to wait this much seconds before they can
   respawn.
   This variable is ignored in Tournament matches.
   See chapter 13 of the tutorial for more information.

g_grapple               [0 ... 4, default is 0] INTEGER
   Defines the grappling hook mode. You can use these numbers:
      0 "disabled" - no grappling hook available
      1 "classic"  - the hook works as in plain Q3A
      2 "tool"     - a hook that is meant to be a tool for
                     reaching places you otherwise can't reach
      3 "anchor"   - a hook suited for camping
      4 "combat"   - a hook suited for combat & camping
   See chapter 10 of the tutorial for more information.

g_lightningdamagelimit  [default is 0] FLOAT
   Generally, the lightning gun's charge causes the more damage
   the more charge is accumulated at a player. By assigning a
   value greater than zero to this cvar you can set an upper
   limit to the charge damage. For example, if
   g_lightningdamagelimit is set to 10, charges above 10
   (seconds) would constantly cause damage of 10 hit points per
   second.
   Setting this cvar to a small value (like 1 or 0.1) would make
   it nearly impossible to kill with the lightning gun. It could
   still be used to reveal cloaked players, though.



=== FFA Specific

no cvars so far



=== Tournament Specific

no cvars so far



=== Team Game (TDM+CTF) Specific

tss                     [0 or 1, default is 1] INTEGER
   If set to 0, players are not able to activate the TSS
   (Tactical Support System).
   See chapter 15 to 24 of the tutorial for more information.

tssSafetyModeAllowed    [0 or 1, deault is 1] INTEGER
   If set to 1, team leaders are allowed to enter a special
   "safety mode." This variable is ignored, if the "tss" is 0.
   See chapter 19 of the tutorial for more information.



=== TDM Specific

no cvars so far



=== CTF Specific

respawnatpod            [0 or 1, default is 0] INTEGER
   If set to 1, players are allowed to respawn at their place of
   death. Note that this variable is ignored if "respawndelay" is
   lower than 10 seconds.
   See chapter 13 of the tutorial for more information.



=== "Save the Universe" (STU)

See chapter 25 of the tutorial for more information about the
following cvars.

g_artefacts             [0 ... 999, default is 8] INTEGER
   Number of artefacts to be collected by the players.
   999 means "unlimited."

g_minmonsters           [0 ... 200, default is 15] INTEGER
   If at any time less monsters are alive than specified by this
   variable, new monsters will respawn at a high rate until this
   limit is reached again.

g_maxmonsters           [1 ... 200, default is 30] INTEGER
   Upper limit for the number of monsters alive. Should be
   adapted to the size of the map and the number of players.

g_monsterspawndelay     [200...999999, default is 10000] INTEGER
   If the number of monsters is between g_minmonsters and
   g_maxmonsters, they spawn at this rate (specified in
   milliseconds).

g_monsterguards         [0 ... 100, default is 12] INTEGER
   Determines the average part of monsters spawning as guards.

g_monsterhealthscale    [1 ... 1000, default is 100] INTEGER
   Determines the monster constitution. The smaller the value the
   easier it is to kill a monster. g_monsterhealhscale set to
   100% results in these health values:

      - predators:  300 health      0 armor
      - guards:    1000 health   1000 armor

   Note that g_monsterhealthscale also scales armor.

g_skipendsequence       [0 or 1, default is 0] INTEGER
   If set to 1, the end sequence showing all monsters charging
   and exploding is skipped. That is, all players are moved to
   the intermission as soon as the last artefact is collected.

monstermodel1           [default is "klesk/maneater"] STRING
   Determines the model to be used by all clients for the
   "predator" monster.

monstermodel2           [default is "tankjr/default"] STRING
   Determines the model to be used by all clients for the "guard"
   monster.



=== Gamestamps

g_creategamestamps      [0 or 1, default is 1] INTEGER
   If set to 0, no gamestamps are created.
   See chapter 1 of this manual for more information.

g_maxgamestamps         [default is 25] INTEGER
   This is the size of the gamestamp history in the "gamestamps"
   directory.
   See chapter 1 of this manual for more information.




=================================================================
=== Chapter 5.2
=== Client Side Console Variables
===

Most client side cvars are covered by the user interface. Only
the few that aren't, are listed here.

cg_drawnummonsters      [0 or 1, default is 0] INTEGER
   If set to 1, the number of monsters currently alive is
   displayed in the HUD (top right corner).

ui_lensflare            [0 or 1, default is 1] INTEGER
   If set to 0, turns off the new "bright" cursor, switching back
   to the old standard cursor. This doesn't affect the BFG
   missile lens flare.
