WHAT THIS IS:

I started with the friend code from Jeff Epler (jepler@inetnebr.com, 
Synger on IRC (linuxnet and undernet, primarily)) and pretty much did a 
rework to provide the following added features:

- You can give your pets the following commands:
	Come.  		(impulse 57) Your pets will stop attacking (if they
 			are) and come to you.  Normally, your pets follow
 			you around.
	Attack. 	(impulse 56) You must be "looking" at a monster.   
			The closest monster will be chosen.
	Play dead.  	(impulse 55) This gibs all your pets.  This is 
			sometimes necessary because Shamblers can't always 
			get through some doors.
- Monsters with the FL_FRIENDLY flag check to see if they already have an 
  owner and will not automatically acquire a new master
- You must "resurrect" a dead monster as a "pet."  (affectionately known as
  Spot).

	Big Note:  	I added Jeff's "solid monsters" code in here too.  
			This was necessary since the FindRadius builtin 
			ignores "non-solid" entities.

- Resurrecting Spot takes the following toll on your health
	Dog - 25 hp.
	Soldier - 50 hp
	Fiend - 90 hp
	Shambler - 99 hp

	Note: 	this was to provide some balance for the ability to 
		resurrect monsters.  The Fiends and  Shamblers are 
		formidable pets and so have a high cost  :)

- You can only have one pet.  

	Note:	the code is in there to allow for multiple pets, but 
	  	remember... your pets are pretty dumb and the commands 
		affect all of them.  (i.e. they have a tendency to start 
		fighting amongst themselves because they get in each other's
		way.  They also have a tendency to get in your way.)  You'll
		have to take out the one check (it's in weapons.qc) to allow
		for multiple pets.
	Note2: 	I did have a lot of fun walking around with my personal army 
		of 8 grunts :)

- You can't take your pets with you between levels.  I may add this in, 
  but it will be difficult due to limitations in the engine.
- Your pets will not hunt for monsters. They will, however, automatically 
  attack any monster that attacks you.  This is no different than Jeff's 
  code.
- When you now "push" your pet, it will try to move sideways and get out of 
  your way.
- Dogs, Fiends, and Shamblers will attack corpses.  I about died laughing 
  the first time I hit the attack key and my dog started tearing into the 
  nearest body.  The grunts don't have a melee attack and so won't do 
  anything to a corpse. This can be frustrating if you are trying to get
  the grunt to attack a monster and he just stands there because a body is
  closer to you and in your line of sight. :(  
- In deathmatch or teamplay, unless you put the monsters back in you have 
  no one to resurrect.  I'm working on the ability to resurrect dead players
  for deathmatch and teamplay.

TO BE ADDED.

- Heal!  	You can tell Spot to follow to your right side, left side,
	  	behind you (very dangerous if your pet is a grunt or 
		shambler) or in front of you.
- Guard.  	Stay Spot, stay!  You can toss a stick to an area (like 
	  	in front of a door) and Spot will go to the stick and guard
		the area and search out monsters.  Just pick up the stick to
		have Spot resume following you around like a good puppy.
- Fetch.  	Scared to go in and get that box of shells?  Have Spot do
	  	it!
- Deathmatch and Teamplay stuff.
- New textures for Spot.  
		I am attempting to allow it to follow your
	  	color code for deathmatch and teamplay.
- A new item which grants you the ability to resurrect one pet per item.

WHEN WILL THEY BE ADDED

When it's done.  Hey, it works for id :)

HOW TO TRY THIS OUT:

Read howpatch.txt for details on how to use this patch file

Bind keys to:
	'impulse 250' to resurrect a corpse as Spot.
	'impulse 55' to give the play dead command.
	'impulse 56' to give the attack monster command.
	'impulse 57' to give the come here command.

ABOUT MY CODE:

I added a .pet and a .petlist property to all entities.  I reworked Jeff's 
code so that the linking of multiple pets no longer has to spawn new 
entities (a lot safer).  I ensure that all pets are killed when a pet dies,
when you die, or when you exit a level.  I use FindRadius to find dead 
monsters and to find monsters to attack.  Everything found must be in the
players line of sight.

If you are standing on the corpse when you resurrect it, it will gib.

KNOWN PROBLEMS

This is untested in deathmatch and teamplay.  Code needs to be added so you
don't get the frag for killing your own pet.  I'll need feedback for this 
one since I only have a 14.4 modem and deathmatch is out.

THANKS TO

Jeff Epler, for his excellent friend code and solid monster code.
id, for the game and all the openness about it.

DISCLAIMER

Use this hack at your own risk.  The writer of this hack takes no 
responsibility for crashed games, unusable saves, or if Spot eats your 
homework or gibs your mailman.

GIVE ME FEEDBACK:

Please mail me with your thoughts about this hack.

Joe Faske (Joebo)
faske@ols.net
