---===  DEACC  &  REACC  ===---

This is a set of utilities allowing you to decompile and
recompile the QuakeC programs included into the game Quake,
from ID Software. See how they programmed Quake behaviors.

Included examples : guided missiles following monsters,
pipebombs like in Duke Nukem that only explode at your
keypress, and more. These utilities allow you to change or
add almost anything to monsters, items, etc, etc, etc...

They require you to expand your pak0.pak file. To do this, see
utilities like SWUNPACK. DEACC and REACC work with the file
"progs.dat", found in the root of the expanded pak file.


 * DEACC *

Syntax :  DEACC <path and filename to the file progs.dat>

Decompiles progs.dat. It will write a whole bunch of files with
the extension .qc into the current directory. These are NOT
ID's original files, don't ask anything to ID about them. They
only contains what can be reconstituted from the progs.dat
file. Anyway, they are very complete, and include function
names, global variables names, and even local variables names.
progs.dat is generous of such information.

Sorry for the purists, but the result isn't C. It's some
strange mixture of Pascal and C... But it IS very close to C,
and shouldn't be difficult to understand.


 * REACC *

Syntax : REACC <path and filename for the progs.dat to write>

Recompiles .qc files. It takes all the .qc files of the current
directory and compile them back into a progs.dat file. Make
changes in the original .qc files, then compile them back with
this tool, and try them with Quake. Don't forget to do a backup
of your original progs.dat file before replacing it with a file
produced by REACC.

Note that the compiled progs.dat file is smaller than the
original, thanks to the more compact code produced and better
string-redundancy checking.

Screen comments are in french... I hope this won't be a too big
problem, as they are not very important.


 * Patches *

.qc files are compiled in alphabetical order, and if a function
appears twice, it is only compiled the first time. This means
that you can make "patch" .qc files replacing a few of the
original functions, as long as the filename is before the
original filename in alphabetical order. I suggest naming patch
files with a leading "$". A few examples are included, named
$*.QR. To try one of them, change its extension to .qc and run
REACC. Here is a description of them :

- $GUIDMIS : your missiles have auto-sensors and follow
             monsters. Very useful !

- $PIPBOMB : grenades don't explode automatically any more, but
             only when you issue the "impulse 12" command. You
             can bind this command to a new key, like *, by
             adding the following line to your autoexec.cfg :

                bind * "impulse 12"

- $BREATH  : a "Breath-out-to-go-back" moving method to use
             with low- or zero-gravity levels : without
             gravity, you can't walk any more, but with this
             patch, you can "breath", which will push you
             backward. A strange type of movement... Try this
             in deathmatch... To "breath", you also have to
             issue the "impulse 12" command (see above). This
             Means you can't try simultaneously $PIPBOMB and
             $BREATH (I think this would require too many keys 
             anyway).

---

NO WARRANTIES. This software is provided "as is". Use at your
own risk. The author cannot be held responsible for any damage,
neither direct nor indirect, caused to your computer or its
data.

Author : Armin Rigo, armin.rigo@p22.gnothi.fn.alphanet.ch
Any comment / bug report is welcome.