========================================================================
Swinging Grappling Hook Mod v1.6 for Quake2         
Compiled with v3.20 Quake2 source code

Created by: Perecli Manole
========================================================================



What's new
------------------------------------------------------------------------
12/12/13 v1.6 Added more opportunities for tricks to the Airtime map and
              made it easier to traverse it. 

12/09/09 v1.5 Changed the Airtime map to make it more fun and included it 
              with the swinging hook. It was a separate download before.		

12/09/98 v1.4 Recompiled it with the v3.20 Quake2 source code.



Features
------------------------------------------------------------------------
- unprecedented (for the time) use of true to life swinging physics
- ability to climb up or drop down the chain
- ability to push opponent(i.e. in lava) or inflict damage from hook impact
- undisturbed use of weapons during hook use



Description
------------------------------------------------------------------------
Grappling hook is a rotating iron shaft with claws, thrown by a chain and
used for grasping, drawing and holding. Can be used for getting out of tight
spots, getting to unreachable places, and even stabbing your enemy, 
inflicting great pain. Make your self a hard target to hit by swinging from
the hook while taking shots at the poor saps bellow. The grappling hook
does not use any ammunition.



Installation
------------------------------------------------------------------------
Unzip all the contents of this archive(preserving the directory structure) 
into the Quake2 directory. To start the game, run "Q2hook Play.bat" from the
Quake2 directory.



Controls
------------------------------------------------------------------------
The default keys for using the hook are:

    SHIFT = for launching or releasing the hook (if held down
            while launching, player gets pulled until release)  
        Q = for sliding down or giving slack to the chain
        E = for pulling or climbing the chain

	As you are hanging use the movement keys to amplify
	your swing into the desired direction.	

Note that these are just the keys that happen to fit well with my key 
configuration. You could change any of the default keys to ones of your
choice by editing the hook.cfg found in the ..\quake2\hook directory 
with a text editor. To map different keys, replace SHIFT, Q, and E with
keys of your choice and save.



Airtime map
------------------------------------------------------------------------
Included with this mod is a map I created specifically for the swinging hook.
It contains some of the largest and tallest rooms you will ever see in Quake2
for your ultimate swinging experience. It’s a freestyle tricks map which 
becomes more and more fun as your swinging skills improve -- so don't give up!
If you want to see what can be done with the hook on this map, view the demo by
running "Q2hook Demo.bat" from the Quake2 directory.

Due to the large volume that needs to be rendered in the viewport, you should
play this map preferably with the OpenGL renderer. The software renderer will
cause the walls to pop in and out as max edges and surfaces are reached.
The source map file is included in the /hook/src/ directory in case someone
want modify it.



Client console commands
------------------------------------------------------------------------
If you want to use the console rather than the *.bat files, start the
game like this:

quake2.exe +set game hook +exec hook.cfg

To play the demo, first disable client side prediction otherwise swinging will
be jerky:

cl_predict 0
demomap airtime.dm2

Afterwards, if you want to play a map, don't forget to turn the client side
prediction back on:

cl_predict 1
map airtime

Playing without client side prediction even in single player is very
laggy so it is not recommended.



Server console variables
------------------------------------------------------------------------
Edit some of the hook attributes to your liking through the following server
console variables either by typing them directly into the console while in
the game or inserting them in the hook.cfg to be loaded at the start: 
  
hook_speed 
	Useful values:500-2200; Default:1000     
	Speed the hook is launched

hook_min_len 
	Useful values:0-100; Default:40
	Minimum length chain can be reeled in

hook_max_len
	Useful values:500-1850; Default:1000
	Maximum length chain can be reeled out

hook_rpf
	Useful values:20-110; Default:40
	Rate(reel in/reel out) per frame

hook_no_pred
	Valid values:0/non-0; Default:0
	A non-0 value disables prediction while suspended in air by hook
	Reduces swinging jerkiness on slow connections



Incorporating this patch with another
------------------------------------------------------------------------
The source code for this mod in found in the /hook/src/ directory.
Open the p_hook.c file with a text editor and look at the top commented 
section. There you will find an outline of the exact changes that were
done to the original Quake2 source files. To add this patch to another 
simply apply those changes to the source code of the other patch, add the
p_hook.c to the project, and recompile.



The most frequently asked question
------------------------------------------------------------------------
Q: The grappling hook works fine in single player mode but why
   doesn't it work when I play on the Internet?

A: Quake2 not unlike Quake is one of the first games to run
   on a true client server model. The server runs the gamex86.dll
   (the compiled game logic C code) not the client. This means that
   only the server can be patched with a game logic modification.
   In a single player situation, you local machine runs both the
   server and the client, so the patch is being used by your local
   server. When playing Quake or Quake2 on the Internet you are
   playing on somebody else's server. In this situation your
   computer is only running the client and you have no control over
   what game logic you play with. All the client does is loads
   resources(skins, models, sounds, maps, etc.) ordered by the
   server's game logic, renders/plays those resources also controlled
   by the server's game logic, and sends back input data to the 
   server to update its virtual world data. So, the only way to play
   my hook patch(or any other patch for that mater) over the
   Internet, is to connect to a server that has it installed or urge
   the operator of that server to run that mod. This design
   prevents players from having unfair advantages on net games and
   empowers the server operator with total control over rules and
   behavior of the game.



If you need help or have any comments or suggestions
regarding this mod, my email is: Perecli@live.com
Official site: http://www.perecli.com/hooked/ 