David M. Andersen
http://student-www.uncc.edu/~danderse/
danderse@uncc.edu

QSG bug fix for U4eT6+

Installation instructions:
    * Unzip FixQSG2.int and FixQSG2.u to system directory.
    * Add "ServerPackages=FixQSG2" to your unrealtournament.ini.
    * Add the "Fix U4eT's QSG (2.1)" (FixQSG2.FixQSGMutator) to the
      Mutator list ABOVE U4E!!!!

Notes:
    The Quantum Singularity Generator (QSG) has an unfortunate bug
    that enables users to become invulnerable if they somehow die
    with the invulnerability shield up, either by being telefragged
    with the Katana, jumping into oblivion, or by simply issuing the
    "SUICIDE" command.  This mutator fixes the problem by using
    'PreventDeath' to catch the deaths of players with QSG-shields
    on.  Such players are returned to vulnerable status unless they
    were already in god mode (Pawn.ReducedDamageType = "All").  
    
    I handle the special case of players not in "god mode" whose cause 
    of death is 'Suicided'.  The administrator can set the following
    options in "UNREALTOURNAMENT.INI":
    
        [FixQSG2.FixQSGMutator]
        bNoTossQSG=true
        bClientCheatBanner=true
        ClientCheatBannerText="L O S E R ! ! !"
        CheatPenalty=10
        bNotifyOthers=true
        NotifyString="%k attempted to cheat!!!"
    
    These options are better explained in the source code.  The values
    listed above are the defaults.  The "bNoTossQSG" value lets you
    disable the player's ability to use "throwweapon" with the QSG
    shield in effect.


Known issues:
    
    I have NOT fixed the problem of incorrect death messages.  This 
    problem is a flaw in UT.  Specifically, the problem is located in
    "Botpack.TournamentGameInfo.BroadcastRegularDeathMessage" where it
    uses "Killer.Weapon.Class", referring to the CURRENT weapon held by the
    killer.  I would also like to be able to allow players to use
    "throwweapon" with the QSG (for team games).  As things stand, the QSG
    does not disable invulnerability when the weapon is tossed.  This
    could be accomplished by overriding the BecomePickup function in the
    QSG class.

Other information:
    This is my first attempt of any kind at actually writing a mutator.
    Please don't blame me for publishing this information regarding the
    nature of this bug.  You MAY modify this mutator to do other crazy things
    (like limit the number of spiderbombs in a pickup to 2 instead of 5).
    Just don't leave MY name in your README file!  I don't want to get hate
    mail if you write a piece of garbage.  In addition, be sure to change
    the package name to something else.

Revision History:
    Dec. 7, 2001:   First version written. Should be in D_U4ET-QSG-1.0.ZIP.
                    Used a subclass of the QSG to override the
                    'BecomePickup' and 'Destroyed' functions.  This is
                    probably how it should have been done in the first
                    place by the developers of U4E.
                    
    Jan. 9, 2002:   Second version written (doesn't subclass the QSG).
                    This version simply catches the death messages.

    Jan. 14, 2002:  Added a few comments to the source code to make it
                    more readable.

    Jan. 19, 2002:  Changed an "if" statement so that warnings aren't
                    generated when Pawns without weapons die.  Also
                    added the "bNoTossQSG" variable.

==========================================================================
