Legacy:SabbathCat/Trampoline - Unreal Wiki

# Legacy:SabbathCat/Trampoline

### From Unreal Wiki, The Unreal Engine Documentation Site

< Legacy:SabbathCat
UT :: Actor (UT) >> Triggers (UT) >> Trigger >> Trampoline

(Package: Custom - WIP)

This is a UT actor.

    //=============================================================================
    // Trampoline
    // Bots hitting this will bounce 3* the Z falling speed upwards.
    //=============================================================================
    class Trampoline extends Trigger;

    var vector KickVelocity;
    var() bool bShowMe;
    var float KickZMultiply;
    var() name KickedClasses;
    var() sound KickMeSound;
    var() bool bMakeNoise;
    var() bool bRestrictVelocity;
    var() float MaxVelocity;
    var() float ExtraKick;

    function PostBeginPlay()
      {
            Super.PostBeginPlay();
            if (!bShowMe )
        {
              DrawType = DT_None;
              bHidden = True;
        }

      }

    simulated function Touch( actor Other )
    {
            local Actor A;

            if ( !Other.IsA(KickedClasses) )
                    return;
            PendingTouch = Other.PendingTouch;
            Other.PendingTouch = self;
            if( Event != '' )
                    foreach AllActors( class 'Actor', A, Event )
                            A.Trigger( Other, Other.Instigator );
    }

    simulated function PostTouch( actor Other )
    {
            local bool bWasFalling;
            local vector Push;
            local float PitchMeBounce;
            local actor a;
            local float GravityThird;
            local vector MyOldGravity;

            bWasFalling = ( Other.Physics == PHYS_Falling );
                            if ( Other.IsA('Bot') )
            {
                    if ( bWasFalling )
                                    {
                            Bot(Other).bJumpOffPawn = True;
                            Bot(Other).bTacticalDir = True;
                            Bot(Other).bJumpy = True;
                            Bot(Other).SetFall();
                                    }
            }
            Other.SetPhysics(PHYS_Falling);

            GravityThird = Abs(Region.Zone.ZoneGravity.Z/3);

            If ( bRestrictVelocity)
            {
            Log("              ");
            Log("*********>>     EXTRA KICK   = TRUE ******<<");
            Log("              ");
            Push.Z = ((Abs(Other.Velocity.Z))*2)+ExtraKick;

            }
            Else If ( !bRestrictVelocity)
            {
            Log("              ");
            Log("*********>>     EXTRA KICK   = FALSE ******<<");
            Log("              ");
            Push.Z = ((Abs(Other.Velocity.Z))*2.25)+10;
            }
            If ( Push.Z <= 0 )
                    {
                    Push.Z = -Push.Z;
                    Log("          Push.Z = -Push.Z");
                    }
            Else if ( Push.Z <= (GravityThird+ExtraKick) )
                    {
                    Push.Z = (GravityThird+ExtraKick)+128;
                    Log("          Push.Z = (GravityThird+ExtraKick)+128");
                    }
            MyOldGravity=Other.Velocity;
            MyOldGravity+= Push;
            If ( MyOldGravity.Z <0 )
                    {
                    MyOldGravity.Z = -MyOldGravity.Z;
                    }
            If ( bRestrictVelocity && MyOldGravity.Z > MaxVelocity )
            {
            MyOldGravity.Z=MaxVelocity;
            Log("              ");
            Log("MaxVelocity  : "$MaxVelocity);
            Log("MyOldGravity : "$MyOldGravity);
            Log("              ");
            }
            Other.Velocity = MyOldGravity;
            Log(" MyOldGravity "$MyOldGravity$"      <<  ");

            PlaySound (KickMeSound, , Float(SoundVolume)/128, , Float(SoundRadius)*25);
            MakeNoise(238);
    }

    defaultproperties

    {
         KickedClasses=Pawn
         RemoteRole=ROLE_SimulatedProxy
         bDirectional=True
         KickMeSound=Sound'AmbModern.OneShot.cscanE2'
         bMakeNoise=True
         bHidden=False
         DrawScale=1.500000
      DrawType=DT_Mesh
      Mesh=LodMesh'Botpack.FastSprocket'
      bCollideWhenPlacing=True
      CollisionRadius=64.00000
      CollisionHeight=16.00000
      MultiSkins(0)=Texture'Botpack.Skins.Jlightcone11'
      MultiSkins(1)=Texture'Botpack.Skins.Jlightcone11'
      MultiSkins(2)=Texture'Botpack.Skins.Jlightcone11'
      bShowMe=True
      bEdShouldSnap=True
      bStatic=False
      bNoDelete=False
      bRestrictVelocity=False
      MaxVelocity=2500
      ExtraKick=256
    }

The Trampoline will increase the players Z velocity each time it is hit, up until the point where the bot/player achives the speed determined by the MaxVelocity default property.

## Using the Trampoline

Place somewhere with plenty of headroom, perhaps at the botom of a well, with a useful pick-up. Who knows? :)

- Pathing Kickers has more on using kickers

## Properties

These are the properties and their default values:

KickMeSound = Sound
  Is the Sound made when the Trampoline is triggered.

##### Views

- Legacy
- Discussion
- Current revision

##### Search