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