**********************
JumpPad Documentation
**********************

### JumpPad Class ###
class JumpPad extends Triggers;

***Description:

JumpPad.JumpPad is basically a contact trigger which changes the velocity 
of Pawns that bumps into it. The obvious use of this is to make them jump
high--hence the name.

It does:
-Allow you to set a sound to make when it is activated.
-Allow you to configure the resultant velocity to a large degree.
-"Work" on all types of varmints--players, ScriptedPawns, and Bots.
-Allow the contact radius to be configured (it is derived from  Triggers).

It does not:
-Have any influence on Bot AI.  Use NavigationPoints to simulate the Bots 
"using" the JumpPad.
-Look like anything.  For best effect, put it above areas that have a special 
texture beneath it so that it looks like a jump pad.


***Parameters Configurable when making the level:

-Sound JumpSound
The sound to play when triggered.		

-Vector ActorVelocityMultiplier
How much to multiply the Pawn's initial velocity by.  This is a signed 
floating point number.

-Vector VelocityToAdd
How much to add to the Pawns velocity...AFTER doing the above multiplier.  Each
of the three components are signed floating point numbers.  NOTE that this
vector is in world coordinates, NOT relative to the player.

These work together to determine the direction and magnitude of the Pawn 
after being bounced.  The math is this (in this order!!):

Pawn.Velocity.X = Pawn.Velocity.X * ActorVelocityMultiplier.X
Pawn.Velocity.Y = Pawn.Velocity.Y * ActorVelocityMultiplier.Y
Pawn.Velocity.Z = Pawn.Velocity.Z * ActorVelocityMultiplier.Z
Pawn.Velocity = Pawn.Velocity + VelocityToAdd

Examples are in order.  In order to make the person jump in the same exact 
way each time, set all 3 components of ActorVelocityMuliplier to zero, then
set the VelocityToAdd to whatever direction you want them to go.
In order to make the Z always the same, but amplify the Pawn's current 
horizontal velocity, set:

ActorVelocityMultiplier.X = 2.0
ActorVelocityMultiplier.Y = 2.0
ActorVelocityMultiplier.Z = 2.0
VelocityToAdd.X = 0
VelocityToAdd.Y = 0
VelocityToAdd.Z = [SomeZVelocity]

-Vector BotScalingFactor
After performing the above modifications, scales a Bot's velocity by this 
vector.  Due to an early bug in the mod this was needed, but is now 
less useful, so the default value has been set to one.

-Float LaunchDelayTime
For reasons I don't completely understand, the JumpPad is forced to wait for
a small amount of time before actually changing the velocity of those who
encounter it.  (See class Jumper for an example).  It behaved unreliably 
when there was no delay, so I can't endorse setting it to any other value than
0.01.  However, there is a problem: if you fall on the pad at high velocity,
it is possible that you will hit the level beneath the pad before the pad 
actually adds to your velocity, at which point you splat.  I can't tell you 
what to do--if it works OK, leave it alone.  If you keep splatting on the pad,
tinker around with it and see if you can get it to work for you.


***Game configurable parameters:	
-Bool Debug
From the console type "set jumppad debug 1" to enable some debugging to be 
sent to the user's message.  In particular, the velocity vectors of the user 
before and after being bounced is shown.

This can be helpful when creating a directional pad.  If I were to create a 
pad which was to put people in roughly the same place each time, I would
1) Create the pad, but set it to any values.
2) Enable debugging : "set jumppad debug 1".
3) Run into the pad *going in the direction I want it to bounce people*.  
4) My initial velocity will be displayed.  I would then take the X and Y
components and make them the X and Y components of the VelocityToAdd, possibly
scaling (multiplying both numbers by the same other number) them first to 
adjust the jump magnitude.
5) Set the Z component of VelocityToAdd as desired.

	
***Current issues:
-Although it works consistantly for players, Bots can sometimes run right 
over it without being triggered.  Unsure of the cause of this.  I suspect
that it is because Bots are not considered essential to the game and thus
are sometimes skipped by the game when bandwith/clock cycles are tight.


### DeathJumpPad Class ###
class DeathJumpPad extends JumpPad;

***Description:

DeathJumpPad is derived from JumpPad, and so has all the features of 
JumpPad.  However, it toggles back and forth between the regular JumpPad
behaviour and "death" behavior.  Anyone touching the pad in the death 
state will be launched straight upward until they hit something, at which
point they die.  'Nuff said.

It does:
-Work like a trigger.  Therefore, you can set a DeathJumpPad's 
(Trigger)Event property just like you would a normal trigger.  It triggers
when changing between the normal and death states.


***Parameters Configurable when making the level:

-Float DeathSpeed
The speed at which the pad sends you when it kills you.  Only up, so not
a vector!

-Float ToggleSeconds
The number of seconds between state switches.

-Sound DeathJumpSound
The sound it makes when it launches someone.  Boing!

-Sound DeathSound
The sound it makes when someone is killed by collision.  <THUD>


### About ###
-Written by Patrick Cyr aka GorGor aka _UE_GorGor.
pcyr@slip.net
-Please feel free to use in your levels.  I love to get credit for this 
stuff, so if you do use it it would be cool if you mentioned it.
-Can't use it to make a profit.  Sorry.  Not worth anything anyway ;)
