
Title:      Omicron Camper Exterminator
Filename:   CAMPER10.ZIP
Version:    1.0
Date:       July 23th, 1997
Authors:    Mr Elusive  (programming)
            Fender  (cloud model and ideas)
Email:      MrElusive@demigod.demon.nl
Credits:    ID Software
            Olivier Montanuy for the QuakeC Manual v1.0
            Uwe Girlich for the unofficial DEM format description v1.04


Type of Mod
-----------
QuakeC:  yes
Sounds:  yes
Models:  yes


Format of QuakeC
----------------
unified diff:  no
context diff:  no
.qc files:     yes
progs.dat:     yes (for Quake v1.06 or later)
qwprogs.dat:   yes (for Quakeworld v1.50 or later.
                    The rain doesn't working in Quakeworld, maybe in a
                    next version.)


Description of the Modification
-------------------------------

This is a camper detection patch. Not like the other stupid patches that
just check if a player is standing motionless. The player is allowed to
stand motionless and type messages. The patch checks if someone is camping
near an interesting item (rocket launcher, red armor etc.), and when a
camper is detected every player receives a message with the name and location
of the camper. This is followed by a 2nd message if the culprit still plies
his "outdoor hobby". The camper receives a personal warning and eventually
the camper will be punished. There are several punishments some bad, some
worse, some hilarious (to others that is) including a mischievous cloud that
follows the camper and lights up his day ;).


How to Install the Modification
-------------------------------

* create a subdirectory in your Quake directory.
  (if C:\QUAKE is your Quake directory you could create C:\QUAKE\CAMPER)
* copy the contents of the zip file (including the subdirectories) into
  the created directory.
* start Quake with the command-line parameter -game followed by the name
  of the created directory
  (for instance: glquake -game camper)


Technical Details
-----------------

It should be very easy to combine this patch with other patches. Just
add the modules CLOUD.QC and CAMPER.QC to the PROGS.SRC. Put a call to
the function 'void (entity e) ResetCamper' with parameter 'self' as
the last statement in the function 'void () PutClientInServer' which
can be found in the Quake module CLIENT.QC. Hook the function
'void (entity e) CheckCamper' with parameter 'self' into the function
'void PlayerPostThink' directly behind the if-statement:
'if (self.view_ofs == '0 0 0') return;' also found in the module CLIENT.QC
You should put a call to the function 'void (entity e) RemoveCloudsWithTarget'
with parameter 'self' at the beginning of the function
'void () ClientDisconnect' which can be found in the Quake module CLIENT.QC.
Finally you should add the statement 'self.impulse = 254;' somewhere into
the function 'void () ClientConnect'.

  There are several camping modes. The default mode is "detect & punish", but
there is a "detect with severe punish" mode, and a "detect only" mode as well.
It is also possible to disable both detection and punishment. You can cycle
trough the camping modes with the function 'void () SetCampMode'. You could
program an impulse command to activate this function. When using the .DAT
files which come with the zip file you can type 'campmode' on the console
to change the camping mode.
  For the cloud you should add 'precache_model("progs\cloud.mdl");',
'precache_sound("cloud\thunder.wav");' and 'precache_sound("cloud\rain.wav");'
somewhere in the function 'void () worldspawn' in the Quake module WORLD.QC.

Notes: In some strings you will find \xxx where xxx stands for a three digit
       decimal ASCII code. You should use a compiler that interprets this
       type of escape character or you should remove it from the strings.
       You will also find some conditional compilation directives like
       '#ifdef', so take a compiler that interprets these directives or
       correctly disable them.

Copyright and Distribution Permissions
--------------------------------------

Authors may use these modifications as a basis for other publically
available work as long as they give the appropriate credits.

You may distribute this Quake modification in any electronic format as well
as any carved method as long as this description file remains intact and
unmodified and is retained along with all of the files in the archive and
no fees other than the costs of distribution are charged.


Availability
------------

 The latest version may be downloaded from:
 http://www.demigod.demon.nl
