Name of Mod : GunFu, for Quake II 
File Name   : gunfu055.zip
Version     : 0.55
Date        : Jan 9, 1998
Author      : FuSchnick
E-mail      : amichaelsen@hotmail.com
Web Site    : none yet

TYPE OF MOD 
-----------
DLL      : Yeppers.
Sound    : No.
MDL      : No.
Maps     : No.
Graphics : No.

Source code is not included anymore but still available upon request.
(The zip file was getting a tad large).

VERSION NOTE
------------
Version 0.55 works with Quake2 3.10 for Win95.  I am pretty sure my code is
in ANSI C but havn't tested that out yet, so I don't know if it can be
compiled on other platforms yet (if you can do it, let me know!).  FOV is
still broken until I can get my hands on the updated Quake2 DLL source.

WHATS NEW IN 0.55?
------------------
* Now works with Q2 3.10
* Life Drainer weapon (see below)
* Railguns have limited ability to fire through walls
* Proximity Scanner (see below)

FORMAT
------
I use MS Visual C++ 4.0.  If you know how to compile the normal Quake2 dll
source then this works just the same.  I used no special options whatsoever.
Oh and the gamex86.dll is the release version, if that makes any difference
(besides speed and file size :)

INSTALLATION
------------
Make a directory called "GUNFU" and toss GAMEX86.DLL in there.  Then run
Quake2 with "+set game GUNFU" and off ya go.  GunFu can read a Message of the
Day file and display it to clients.  Create a text file in the MAIN "Quake2"
directory named "motd.txt" and put in whatever you want, limit 500 characters
and try to keep it under 40 columns for those 320x200 people out there :)

FEATURES
--------
* Death Messages
* Improved Statusbar
* Blaster and Hyperblaster shots ricochet
* MIRV Proximity Mines
* Chain Shotgun
* Pipebomb Launcher
* Life Drainer
* Homing Missile Launcher
* More realistic Railgun
* Proximity Scanner
* Watch/Compass Combo
* Message of the Day Support
* Built in Help

DETAILS
-------
Death Messages:
One death message per weapon type (all "bullet" weapons are the same right
now).  More messages when I get more creative.  (If you have a really good
idea, email it to me)

Improved Statusbar:
Automatic.  I followed the advice from Decker's tutorial on status bar
hacking and now you can see all four special items at once (Rebreather,
Envirosuit, Invulnerability, and Quad) and see their countdowns seperately.
They are also in the lower right hand corner instead of the center of your
screen.  They only drawback is if you play in 320x200 resolution, the Quad
icon covers up your "selected item" in the lower right and you cannot see
what you have selected until the Quad time is up.  At higher resolutions this
is not a problem.  I think in the next version I will remove the rebreather
and envirosuit to make room for ammo indicators.

Blaster / Hyperblaster Ricochet:
No command for this, it is automatic at no extra ammo cost.  Lasers lose 5
points of damage power every time the ricochet and disapear when they drop
to 0 damage.  They also disapear after a certain alotted time (the defaults
from normal Q2).  A blaster does 15 damage in deathmatch so it will stop on
the third wall it hits.  Hyperblaster does 20 so it can bounce three times
and stop at the fourth.  This DOES mean that when you have Quad damage on
you can ricochet many more times!  Note that hyperblaster bolts have a very
short lifespan and will probably expire before they reach their maximum
number of bounces when you have Quad on.  I left the time limits in so that
servers didn't get bogged down by tons of blaster bolts flying about.

MIRV Proximity Mines:
The MIRV grenades replace the normal hand-tossed grenades.  They no longer
blow up in your hand if you hold the button too long, but they will fly out
on their own if you don't let go.  After three seconds OR hitting an enemy,
the MIRV will explode into 5 grenades that spread out in a small area.
These will arm after 3 seconds and self destruct after 60.  Once deployed,
the proximity mines look for any monster or player that wanders too close
and leaps at them!  When they get real close they will explode mid-air at
about head level or so (depending on how you move after they jump... they
aim for the head assuming you hold still).  Besides this nifty feature, they
also randomly hop about once in a while.  This means that holding still in
the middle of a minefield will probably NOT save your life!  This hopping
makes noise however, and the more mines that are there the more chance of
hearing them hop.  This means that small groups of mines make little noise
and large groups make quite a racket.  The damage of the mines was reduced
to make up for their surprise value.  A single mine or two in the open will
wound your enemy but not hurt him.  5 mines behind a door or around a corner
will almost certainly kill him if he rushes in!  Firing a MIRV costs 5
grenades.  If you have less than 5 grenades available, you will toss single
proximity mines instead.  It is possible to get close enough to a mine to
make it leap at you and then back away before it is close enough to explode,
but you must be aware of the mine first (or just have blazing fast reactions)
to pull it off.

Chain Shotgun:
The Chain-Shotgun and normal Chaingun are both on number 5 (or whatever key
you assigned to "use chaingun").  When you press 5 you will toggle between
the two chaingun types.  Every time you press 5 it toggles between weapon
types now... this is a known bug so don't email me about it.

The chain-shotgun acts just like the normal chaingun, except instead of
firing single bullets it fires shotgun spreads at the same speed!  To make
the weapon even remotely fair I reduced the damage it does significantly.
It will still rip you a new one even on low damage so lookout!  This was
mainly made as an easy-to-aim weapon for us HPL out there.  It annoyed me
that even with a super fast rate of fire, you could sweep a chaingun past
your foes and have it miss completely.  No more!  Now you can tag a
significant amount of hits on them even with terrible aiming skills.

Pipe Bombs:
The Pipe Bombs and Grenade Launcher are both on key 6.  The same rules for
selecting the chaingun modes applies here.  Pipebombs cost the same as
normal grenades and do the same damage for now.  They expire after 1 minute.
To detonate them, bind a key to "cmd detpipe" and press it.  Note that you
can only detonate bombs within 1000 game units of you.  Your Radio Shack[tm]
pipe bomb remote control fizzles out beyond that range.

Homing Missiles:
Homing missiles use normal ammo but do half the damage of a normal rocket.
Toggle between rockets and homing missiles like the above two weapons.  The
missiles will track the CLOSEST enemy within their line of site (line of site
is about 90 degrees like your own, and extends 1000 units in front of the
missile).  They do not turn instantly but gradually turn towards their
target, so dodging is possible if you see it coming.  They cannot see through
walls either so you can hide around sharp corners.

Realistic Railguns:
The railgun now has a *limited* ability to shoot through walls.  The rules
are thus:  The slug acts like normal until it hits a wall or other solid
object (players and monsters are not considered solid for this purpose),
then it will CONTINUE to travel for another 300 world units (about
20 yards or so) doing HALF DAMAGE to any other objects it hits.  Walls
greater than 300 units thick will eat a rail slug entirely.  Players hiding
behind thin walls are safe if they are at least 300 units away from the entry
point.  I had to use this method because letting the railgun fire straight
through all walls to its maximum range created problems with the railgun
particle trails (the damage part still worked fine though).

Proximity Scanner:
"cmd scanner" will now toggle your Proximity Scanner on and off.  When it is
on, it will detect all players and monsters within 1000 units of you and up
to 300 units behind solid objects, and create a green spark (and sound)
either on the entity (if visible) or on the wall where the entity should be
seen.  The sparks are visible ONLY to the player using the scanner (all
players may of course use their own scanners at any time).  Since the scanner
follows the same rules as the railgun, you should be able to hit anyone close
enough to create a signal with it.  The scanner only updates every 0.5
seconds, so moving targets are very difficult to hit this way.  The best use
of the scanner is for detecting your enemies or picking off a slow or still
target behind a wall with the railgun.  The scanner consumes 5 cells every
0.5 seconds... a high cost, but it is a powerful tool.

The railgun and scanner make a very powerful combination now... even at half
damage the ability to shoot through walls is a very powerful weapon.  I feel
that this is not too unbalancing however because the scanner eats cells so
darn fast and the 2Hz refresh rate makes hitting a moving target nearly
impossible.  Campers, however, will need to be on guard because a target
holding still is easy to pick off, and there isn't any way to tell if someone
is scanning you (yet).  This liability is made up for partially by the
ability to camp in entirely new places now and pick targets off through the
walls!  After all, cells will become a sought after commodity now and not all
of the players can be scanning for campers all the time.  In general however
I think this combo will lean the power a little further away from camping
strategies.  And remember, if you can scan someone they can scan you too!

Life Drainer:
As promised I finally made a "naughty tentacle" type weapon.  The Life
Drainer shares the Grenade Launcher/Pipebomb Launcher key.  When you fire,
a tentacle shoots out up to 250 units.  If it does not hit anything (or hits
a non-living thing) it will simply retract and you can try again.  If it hits
a living target, it will attach to that target and damage them at a rate of
25 points per second, ignoring armor entirely!  Even better is that YOU get
40% of the damage done added to your life total!  The tentacle will detach
when the victim either runs beyond its range, runs around a corner, or dies.
The reason why you only get 40% is so two players could not sit and drain
eachother continously... they will both lose more than they gain.  Firing
the drainer costs 5 *HEALTH*.  If you have less than 5 you may not fire it.
I will probably change this in the future to let you try it...

Watch / Compass combo:
Yes!  The finist Swiss craftsmanship brings you this handsome 24 karat
timepiece with built in compass.  Just bind a key to "cmd watch" to see the
current time (according to the server's clock) and your direction in rough
compass letters (for instance N, S, E, W, and more detailed ones like NW,
NNW etc).  No big use yet, but I thought maybe they could be nice in future
co-op games with really well coordinated teams :)  Available in Mens and
Ladies styles.

Message of the Day:
When a client connects or types "cmd motd" they will see whatever the
contents of the "motd.txt" file in the main Quake2 directory contains.
Try and keep the text to 500 characters or less.  People running 320x200
resolution are limited to 40 columns as well.

GunFu help:
Typeing "cmd gunfu" will display a list of commands and buttons for the
varius new modifications.  This will implement a feature soon to display
the settings on their weapons, but is not working yet, so don't email me
about it.

KNOWN BUGS (Or: "More Features")
----------
"R_Cullalias: no such frame" and similar errors.  I think now that this is
a bug on id's part and not mine.  Only happens when someone is gibbed by a
HUGE amount of damage.

All "bullet" type weapons create the same death messages, they have no
differentiation in classnames.  So machine guns, chain guns, both shotguns,
the chain shotgun, and the railgun all make the same death message.  I'll
have to make something creative to fix that.

For some reason I couldn't make the hand grenades cycle through weapon types
like I could with all the others, so for now normal hand grenades are missing
and you can only use MIRV's if you don't have the grenade launcher.

Pressing 5, 6, or 7 will toggle your weapon type every time you press them.
Also nextweap and prevweap do not change the toggle states.

FOV doesn't work.  Teleporters have no special FX.  These were changed in
the Quake2 3.09 dll but the new source wasn't released yet.  When it is they
will be easy to fix.  This bug isn't my fault :)

The Life Drainer animation is a little bit too jerky.  I will work on
smoothing that out.

To make the Railgun particle trails visible to all potential victims I had
to use MULTICAST_ALL... there must be a more efficiant way to do it.

FUTURE PLANS
------------
None of these are guaranteed to be created ever, but they are things I am
considering:

* A realistic grappling hook (Looks like someone already did this one...
maybe I can use his code if he allows me?)
* Sticky Bombs or Laser Trip Bombs
* Gaseous or other lasting, area effect bombs
* Something with Lasers :)
* A more advanced physics system
* Hologram decoys
* Some kind of stealth or cloaking device

AUTHOR INFO
-----------
I'm a beginner at coding for Quake 2 (I never coded for Q1) but I have been
using C for a while now, so the transition was easy.  I like making
interesting weapon mods but I try to NOT make them overpowered or too
unbalancing.  I am open to input on tweaking the current weapons to make
them more fair in the long run.  Also, most of my weapons tend to be well
suited to us HPW's out there... most do not require you to be super accurate
or be able to snap shot quickly to work well.  Of course, a LPB will still
have a slight edge with ANY weapon, but the difference is not as great as,
say, the railgun, which a LPB can use up close if he is good and a HPW can
only use effectivly at long range or on slow moving targets.


COPYRIGHT/PERMISSIONS
---------------------
This mod may not be distributed without this textfile included intact.
This mod may not be distributed on CD without my express written permission
(Try asking first, I'll more than likely agree).  You may use this code to
learn from but please give me credit if you use it for any of your own mods.
And if you use any of my code to make your own mod I still need to give
permission for it to be used on any CD!

FuSchnick (amichaelsen@hotmail.com)
