Deathmatch Plus (v1.3b) for Half-Life

I. About DM Plus
Basically this is a multiplayer mod for Valve Software's Half-Life.  If you don't know what a mod is, then come back later when you've figured out what a mod is.  If you don't have a copy of Half-Life, GO GET IT!!!  You're missing a LOT!!

I first got the idea when I started fooling around with the dll source codes.  You might also recognize the .cfg customizability from the Oz Deathmatch mod.  I have partially patterned the initial phase of this mod after that.  I liked the mod but I wasn't content, and I just couldn't wait for the next version, so I wrote my own.

This mod is my very first mod.  This is also my very first endeavor at Win32 C++ programming, so expect some bugs.

II. Features
1. Highly customizable server settings via Advanced Options menu.
2. New primary fire mode for the glock.  It's now silenced (still audible at close range) but it is a bit slower.
3. New alternate fire mode for the tripmine.  The only difference the alternate fire mode has is the laser color.  The primary and alternate laser color is configurable.
4. Crossbow fire mode changing for explosive, and non-explosive bolts.
5. You can now pick up satchel charges while you have some of them deployed.
6. Grappling Hook! (bind a key to +hook)
7. Cloaking Device! (bind a key to +cloak or cloaktoggle)
8. MP5 fire mode changing (single-fire, semi-auto, full-auto) and silenced fire for single and semi-auto modes.
9. New alternate fire mode for the hand grenade: cluster grenades!  But beware, the main grenade and it's clusters do only 50% of the handgrenade's damage apiece so use it in enclosed spaces.  This can be enabled or disabled.
10. Homing rocket, use the alternate fire button, the laser spot toggle has been remapped to switch1 as this makes more sense and the laser spot is now turned off by default.
11. Possible Future Features: (don't know if and when I'l implement these)
	b. double action 357 (will probably replace 357's alternate fire zooming)
	c. satchel charge/tripmine defusing (this one is probably the hardest!)
	d. inclusion of a modified client dll...  (for cloaking indicator and perhaps a targeting computer and infra-vision)
	e. BOTS!!!!! (this one's HARD, but hell, I'd love this one!)
	etc...

III. Requirements
1. A PC capable of running Half-Life
2. Half-Life installed and patched up to v1.0.0.9 (may work for later versions but it is currently unknown)
3. 7mb of hard disk space - includes installed files and zip file (zip file may be deleted after installation)

IV. Installation
1. Unzip the files to a subdirectory named "dmplus" in your Half-Life folder.  (example: "C:\SIERRA\Half-Life\dmplus").  You may have to create this directory first.
2. You have several ways of enabling the mod:
   a. run Half-Life with -game dmplus in the command line
   b. run Half-Life and use the mod browser to activate the mod
3. Check the Advanced Options in the server setup dialogs for any items you may want to change

V. Instructions

1. Starting a server
It is ALMOST exactly similar to starting a server with the unmodified game.  The difference lies in the mod browser, model browser and the map browser.  The map browser will only show maps in the dmplus\maps (depending on your installation) directory.

There are two ways of getting maps to work with DM Plus.  You can create a subdirectory named "maps" in the dmplus directory and put your maps here and the map browser will show those maps.  The maps at valve\maps will not be visible in the map browser, however, you can still use them by typing "map <mapname>" on the console.  If you don't have a map in your dmplus\maps directory, you can start a server without choosing the map, then when the error message appears in the console regarding the "unknown" map, type in "map <mapname>" on the console.  I suggest bearing with the console for a while (until I find a way to get the map browser to use valve\maps) because making a copy of maps in valve\maps in dmplus\maps is a waste of hard drive space.

The same think can be said for the models.  You either have to put your models in dmplus\models, or type "model <modelname>" on the console to use a model from valve\models.  This time, I would suggest that you put the models in dmplus\models so you can view and change the colors of the skin.  Typing "model <modelname>" still searches valve\models if it doesn't find the model in dmplus\models.

2. Grappling Hook
Simply bind a key (example: ALT) to +hook.  To do this with the ALT key type "bind ALT +hook".  Pressing the hook key (and keeping it depressed) shoots off a bolt.  If the bolt hits something, it will either bounce or "hook" into the object, depending on what the object is.  If it hooks into something, you get pulled towards the hook until you release the hook key.  The map features can still block your path toward the hook.

3. Cloaking device
Bind a key to either +cloak or cloaktoggle or both.  Bind a key to +cloak means that you will have to keep the key depressed to remain cloaked, whereas binding a key to cloaktoggle requires you to only press the key once to turn it on, and press it again to turn it off.  I *might* make a cvar available to turn off the cloaktoggle command, depending on the feedback I recieve.  use the rate_cloakdrain cvar to change the drain rate and the cloak_rating to change the strength of cloaking.

Cloaking drains 1 unit of your HEV energy once you turn it on and after every rate_cloakdrain number of seconds.

Cloaking only works when your moving slowly.  Moving too fast will turn off your cloak temporarily but will still drain 1 more energy once you recloak, if recloaked after rate_cloakdrain number of seconds of being temporarily uncloaked.  (this one's rather confusing, play around and watch the HEV energy meter)

The normal run is too fast for the cloaking, however, if you walk, or move-crouch or stand stationary the cloaking will remain active.  Stealth is important.

There are no indications of your own cloaking except for the energy drain.  This may be fixed in a future version, but may require a client dll to go along with the server dll.

4. RPG, MP5 & Crossbow fire modes
Bind a key to switch1.

For the RPG, this will simply turn on or off the laser spot for the primary fire.  The alternate fire mode (homing rocket) will need the laser spot to choose a target.  Tag your target with the laser then fire.  It will lock in on the entity which the laser spot is on and home in. Given it's physics limitations, though, it is easy to avoid a direct hit from the rocket.

The Crossbow simply responds by toggling between explosive to non-explosive bolts.

This command will cycle between single fire, semi-auto and full-auto for the MP5.  The MP5 single fire mode shoots only 1 bullet at a time and does not continue firing while keeping the fire button depressed.  The MP5 semi-auto mode on the other hand fires off 3 shots immediately.  These two modes are silenced.  The MP5 full-auto is unsilenced and behaves exactly like the original mp5.

You might notice that there are key bindings from switch1 to switch10.  Well, only switch1 is used for the moment.  And only the MP5, the Crossbow and the RPG makes use of the switch.

5. Changing the server settings
Head for the Advanced Options in the server setup dialogs to change any server settings.  The captions were made to be self-explanatory.  Mail me if you have any questions.  For dedicated servers however, you might need to use a .cfg file.  I have provided a defaults.cfg file you can start with.  I suggest you keep that file for future reference.

6. Key configuration
Key configuration for the new commands are already available at the configuration menu.  In fact, it has been available since v1.0 however I simply forgot to place it here in the readme.  Forgetful me...

VI. Contacting the programmer
You can contact me by sending me email at spagent007@thepentagon.com.

VII. Credits
Thanks go out to the following people/groups of people:

The Valve and Sierra people, for creating such a kick-ass game!
http://www.valvesoftware.com/
http://www.sierrastudios.com/games/half-life/

The Oz Deathmatch programming team, for simply making their mod, my initial motivation.  (I really wanted to wait for your grappling hook source code, but I was impatient.)
http://quakestyle.telefragged.com/oz/index.htm

The people at Wavelength, for their cloaking tutorial which gave me an idea.
http://www.planethalflife.com/wavelength/

My girlfriend, for wishing (and giving) me luck.

The beta testers: my 2 brothers, my cousin, for telling me what they wanted and for letting me frag them all day long.  (they still suck at Half-Life, hehehehehe...)

My friends, who kept on bugging me to implement this, implement that, that sucks take it out or change it, etc...

No thanks to my boss, for ordering the swapping of Pentim IIs on our branch with the old PCs at the other branch which I planned on using for my first few playtesting sessions before I released this mod.  Now I'll have to release this without playtesting it for more than 2 players.  (I only have two computers at home and this really sucks!)

Last but not the least, thanks to the people who mailed me and gave me bug reports and feedback!  This mod is partly a result of your requests.

And to those who I forgot to mention (hopefully none but if this means you, mail me!), thanks to them to!

VIII. Final Messages
HAVE FUN!
