Version History
===============

1.07a
=====
Little fixes & additions.
. Added reverse sorting extension to the 'htmlout' command. Syntax is now:

  htmlout [<num>|all] by [reverse] <sort> using <template> [output|append] <file>

. Added notes on making search by name work when dbcfg is specified.
. FAQ has some info on merging multiple QW servers.
. Added sort by Frags back into the sample fragstats.cfg file.
. Added new tag <!--dbcfg--> which outputs the dbcfg name.
. Added the ability to sort by Ping and Last Seen.
  eg. Show the 20 players with the lowest average ping:
  htmlout 20 by reverse ping using "c:\fragstats\top20temp.html" output ping-top20.html

  eg. Show the 20 most recently connected players:
  htmlout 20 by "Last Seen" using "c:\fragstats\top20temp.html" output recent-top20.html

. Added 'FPHthresh' option to provide fairer FPH sorting.
. Made 'ping' data more accurate.
. Made 'last seen' data more accurate.
. Fixed the dodgy case comparison when looking for a log file.
. Fixed meansod/gh.html template so it refers to <!--grappling_hook-->
. Added FPHthresh info to standard templates.
. Fixed weapon sorting so that an equal number of kills will force a comparison
  by deaths.

1.07
====
. Sorting by any score type now supported, eg. sort by "Flag Capture". See the
  fragstats.cfg file for examples.

. New tags for time connected, maps completed, time last seen, frags per hour
  and ping:
  <!--connect_time-->        Total time that player has been connected
  <!--maps_played-->         Number of maps the player has completed
  <!--last_seen-->           Last time  that player was seen
  <!--ping-->                Average ping
  <!--fph-->                 Frags per hour

. Support for display of stats for a given weapon via user defined tags.
  eg. When defined, <!--rocket_launcher--> will display the rocket launcher
  stats for a user. Any weapon can be displayed like this in the same manner
  as special scores. You can also sort by weapon.

. Players with zero scores are automatically deleted from the database.

. Added new 'dbcfg' option which is used to specify a special database
  config file. This lets you keep seperate stats from multiple servers
  in the same CGI directory.

. Fixed Duel sorting bug that caused a div by zero crash occasionally.

. New "Means of Destruction" templates to display top scores by weapon.

. Updated the scores.html template to include the new "Means of Destruction"
  page. Added connect time & frags per hour to the default Top 20 template.

. Fixed cgitemp.html so standard DM template doesn't have CTF tags in it.

1.06
====
. User Defined Tags (UDT's) for use in templates. See the templates.txt and fragstats.cfg
  files for details.

. Support for Quake 2 mods such as CTF, HeadHunters, etc via UDT's. User defined tags
  let you specify what special bonus scores are recorded and logged. The user defined
  tags can be used in all template files. Some sample CTF templates have been included
  in the distribution.

. Team statistics for GS log users. Fragstats can generate a complete list of teams and
  total scores for the Overall Stats and each map, Qplayer can display the Players team
  name and total score.

. Map based statistics for GS log users with the option to switch them off if you want.
  As before, HTML pages for 'Overall Stats' will be generated in the 'htmldir' directory.
  If map stats are enabled (the default if using GS style logs), a subdirectory will
  be created for each map under the directory specified by 'htmldir'. A complete set
  of HTML pages as specified by the 'htmlout' commands will be generated in each
  subdirectory. You can also use 'htmlout' and the new tags (see below) to help generate
  a custom scores.html for each map. check out the sample fragstats.cfg and scores.html
  files for details.

. Weapon based statistics for GS log users. These are only visible for indiviuals via
  Qplayer.

. Added 'Duelthresh' option to provide fairer Duel sorting.

. Specify the GS log name via the 'gslogname' option. Previously, Fragstats forced you
  rename the GS log to "stdlog.log". Now you can just set the name in the config file.

. Added comparative frag count to victim lists in Qplayer. This makes it easier to compare
  frag counts with your buddy/enemy, especially if you have lots of frags.

. Added optional Error template for Qplayer. You can alter this template to the look & feel
  of your site. Errors that are caused by bad user input (eg. lookup by name of someone
  who doesn't exist) will use this template to display an error message.

. Fixed bug with last line processing of cfg file.

. Tighter log parsing code; malformed frag log entries are now always rejected.

. Added new template tags for support of team, weapon & map statistics:
  <!--team_name-->        team name
  <!--team_name_pad-->    team name padded to 32 chars
  <!--total_team_score--> total score for team
  <!--total_team_score_pad-->  total score for team padded to 8 chars
  <!--map_name-->         map name
  <!--map_numplayers-->   number of players recorded for that map (Fragstats only)
  <!--map_numfrags-->     number of frags recorded for that map (Fragstats only)
  <!--map_path-->         subdirectory containing the stats for
                          that map
  <!--map_name_url-->     Encoded link to Qplayer with map name and player name (Qplayer
                          only)
  <!--page_name-->        name of the HTML page being written (Fragstats only)
  <!--weap_name-->        weapon name (Qplayer only)
  <!--weap_kills-->       kills by that weapon (Qplayer only)
  <!--weap_deaths-->      deaths by that weapon (Qplayer only)

  There are also new embed tags, <!--embed_teams--> for Fragstats, <!--embed_maps-->
  for Fragstat and Qplayer, and <!--embed_weaps--> for Qplayer.

. New sample template files which show the usage of the new tags.

1.05
====
. GS log support. Note that initially I'm only using info from the
  stdlog.log which is compatible with the 1.04b of Fragstats, ie. Kills
  and Suicides. No other score types or general log information is used
  at this time.
. Bug fixes (mainly with the smart name conversion). If after stripping
  clan designations, etc. the player name is shorter than 3 characters, the
  name is left as-is.
. Changed Deaths so it doesn't include Suicides.
. Alias option. This allows the admin to define aliases for players that
  have changed names, so their scores get combined into one.
. Duel statistic. This shows a count of how many players you outfrag and
  how many outfrag you to. Draws are not shown. This statistic is limited
  to those players you have frags against or have been fragged by.
. Alternative Skill statistic. A modified skill calculation. Enabled using
  the 'Skilltype' option (see below).

  Currently, the skill calculation formula taken from QW Master Servers
  doesn't take the killer's Skill into consideration. This means that a
  master player gains exactly the same number of points for fragging
  "John_Rambo", as a newbie would.

  The new skill calcuation works like this:

  Killers skill = Killers skill + ((Killees skill / Killers skill) * 10)

  and correspondingly:

  Killees skill = Killees skill - ((Killees skill / Killers skill) * 10)

  The alternative skill calculation is added Killer's skill, and subtracted
  from the from the Killee's skill.

  Some examples: 
  1)
  Killer: a very good player with skill 3500
  Killee: a good player with skill 2500

  Killer = Killer + 2500/3500 * 10
  Killee = Killee - 2500/3500 * 10

  Killer has now 3507 points, Killee 2493

  2)
  Killer: a very good player with skill 3500
  Killee: a newbie with skill 1200

  Killer = Killer + 1200/3500 * 10
  Killee = Killee - 1200/3500 * 10

  Killer has now 3503 points, Killee 1197

  3)
  Killer: a newbie with skill 1200
  Killee: a good player with skill 2500

  Killer = Killer + 2500/1200 * 10
  Killee = killee - 2500/1200 * 10

  Killer has now 1220 points, Killee 2480
  Note the integer rounding in this case.

  If a player suicides, the player gets their alternative skill adjusted
  like so:

  Killer = Killer - (Killer skill / 1000)

  This is a significant penalty to those who like to keep their skill high
  by topping themselves when in a bad position.

  Note that is a an alternative statistic; it replaces the old skill when used.

* END HISTORY *