| Home Page | Recent Changes | Preferences

Shockmanta

This is the code for the shockmanta vehicle it is explained in Modifying Vehicle Weapons

If you wish to use the shockmanta for any reason please let me know (bilp2 on the atari forums) and I will give you the .u file (this will not work on its own[even if you compile it]

//-----------------------------------------------------------
//
//-----------------------------------------------------------
class ShockManta extends ONSHoverCraft;

#exec OBJ LOAD FILE=..\Animations\ONSVehicles-A.ukx
#exec OBJ LOAD FILE=..\Sounds\ONSVehicleSounds-S.uax
#exec OBJ LOAD FILE=..\textures\EpicParticles.utx
#exec OBJ LOAD FILE=..\StaticMeshes\ONSWeapons-SM
#exec OBJ LOAD FILE=..\textures\VMVehicles-TX.utx

var()   float   MaxPitchSpeed;

var()   float   JumpDuration;
var()   float   JumpForceMag;
var     float   JumpCountdown;
var     float   JumpDelay, LastJumpTime;

var()   float   DuckDuration;
var()   float   DuckForceMag;
var     float   DuckCountdown;

var()   array<vector>                   BikeDustOffset;
var()   float                           BikeDustTraceDistance;

var()   sound                           JumpSound;
var()   sound                           DuckSound;

// Force Feedback
var()   string                          JumpForce;

var     array<ONSHoverBikeHoverDust>    BikeDust;
var     array<vector>                   BikeDustLastNormal;

var     bool                            DoBikeJump;
var     bool                            OldDoBikeJump;

var     bool                            DoBikeDuck;
var     bool                            OldDoBikeDuck;
var     bool                            bHoldingDuck;
var     bool                            bOverWater;

replication
{
    reliable if (bNetDirty && Role == ROLE_Authority)
        DoBikeJump;
}

// AI hint
function bool FastVehicle()
{
    return true;
}

function ShouldTargetMissile(Projectile P)
{
    if ( (Bot(Controller) != None) 
        && (Level.Game.GameDifficulty > 4 + 4*FRand())
        && (VSize(P.Location - Location) < VSize(P.Velocity)) )
    {
        KDriverLeave(false);
        TeamUseTime = Level.TimeSeconds + 4;
        return;
    }
    Super.ShouldTargetMissile(P);
}


function bool TooCloseToAttack(Actor Other)
{
    if ( xPawn(Other) != None )
        return false;
    return super.TooCloseToAttack(Other);
}

function Pawn CheckForHeadShot(Vector loc, Vector ray, float AdditionalScale)
{
    local vector X, Y, Z, newray;

    GetAxes(Rotation,X,Y,Z);

    if (Driver != None)
    {
        // Remove the Z component of the ray
        newray = ray;
        newray.Z = 0;
        if (abs(newray dot X) < 0.7 && Driver.IsHeadShot(loc, ray, AdditionalScale))
            return Driver;
    }

    return None;
}

simulated function Destroyed()
{
    local int i;

    if (Level.NetMode != NM_DedicatedServer)
    {
        for (i = 0; i < BikeDust.Length; i++)
            BikeDust[i].Destroy();

        BikeDust.Length = 0;
    }

    Super.Destroyed();
}

simulated function DestroyAppearance()
{
    local int i;

    if (Level.NetMode != NM_DedicatedServer)
    {
        for (i = 0; i < BikeDust.Length; i++)
            BikeDust[i].Destroy();

        BikeDust.Length = 0;
    }

    Super.DestroyAppearance();
}

function bool Dodge(eDoubleClickDir DoubleClickMove)
{
    Rise = 1;
    return true;
}

function ChooseFireAt(Actor A)
{
    if (Pawn(A) != None && Vehicle(A) == None && VSize(A.Location - Location) < 1500 && Controller.LineOfSightTo(A))
    {
        if (!bWeaponIsAltFiring)
            AltFire(0);
    }
    else if (bWeaponIsAltFiring)
        VehicleCeaseFire(true);

    Fire(0);
}

simulated event DrivingStatusChanged()
{
    local int i;

    Super.DrivingStatusChanged();

    if (bDriving && Level.NetMode != NM_DedicatedServer && BikeDust.Length == 0 && !bDropDetail)
    {
        BikeDust.Length = BikeDustOffset.Length;
        BikeDustLastNormal.Length = BikeDustOffset.Length;

        for(i=0; i<BikeDustOffset.Length; i++)
            if (BikeDust[i] == None)
            {
                BikeDust[i] = spawn( class'ONSHoverBikeHoverDust', self,, Location + (BikeDustOffset[i] >> Rotation) );
                BikeDust[i].SetDustColor( Level.DustColor );
                BikeDustLastNormal[i] = vect(0,0,1);
            }
    }
    else
    {
        if (Level.NetMode != NM_DedicatedServer)
        {
            for(i=0; i<BikeDust.Length; i++)
                BikeDust[i].Destroy();

            BikeDust.Length = 0;
        }
        JumpCountDown = 0.0;
    }
}

simulated function Tick(float DeltaTime)
{
    local float EnginePitch, HitDist;
    local int i;
    local vector TraceStart, TraceEnd, HitLocation, HitNormal;
    local actor HitActor;
    local Emitter JumpEffect;
    local KarmaParams kp;

    Super.Tick(DeltaTime);

    JumpCountdown -= DeltaTime;

    CheckJumpDuck();

    if(DoBikeJump != OldDoBikeJump)
    {
        JumpCountdown = JumpDuration;
        OldDoBikeJump = DoBikeJump;
        if ( (Controller != Level.GetLocalPlayerController()) && EffectIsRelevant(Location,false) )
        {
            JumpEffect = Spawn(class'ONSHoverBikeJumpEffect');
            JumpEffect.SetBase(Self);
            ClientPlayForceFeedback(JumpForce);
        }
    }

    if ( Level.NetMode != NM_DedicatedServer )
    {
        EnginePitch = 64.0 + VSize(Velocity)/MaxPitchSpeed * 64.0;
        SoundPitch = FClamp(EnginePitch, 64, 128);

        if( !bDropDetail )
        {
            // Check for water
            bOverWater = false;
            kp = KarmaParams(KParams);
            for(i=0;i<kp.Repulsors.Length;i++)
            {
                if (kp.Repulsors[i].bRepulsorOnWater)
                {
                    bOverWater = true;
                    break;
                }
            }

            for(i=0; i<BikeDust.Length; i++)
            {
                BikeDust[i].bDustActive = false;

                TraceStart = Location + (BikeDustOffset[i] >> Rotation);
                TraceEnd = TraceStart - ( BikeDustTraceDistance * vect(0,0,1) );

                HitActor = Trace(HitLocation, HitNormal, TraceEnd, TraceStart, true);

                if(HitActor == None)
                {
                    BikeDust[i].UpdateHoverDust(false, 0);
                }
                else
                {
                    if ( bOverWater || ((PhysicsVolume(HitActor) != None) && PhysicsVolume(HitActor).bWaterVolume) )
                        BikeDust[i].SetDustColor(Level.WaterDustColor);
                    else
                        BikeDust[i].SetDustColor(Level.DustColor);

                    HitDist = VSize(HitLocation - TraceStart);

                    BikeDust[i].SetLocation( HitLocation + 10*HitNormal);

                    BikeDustLastNormal[i] = Normal( 3*BikeDustLastNormal[i] + HitNormal );
                    BikeDust[i].SetRotation( Rotator(BikeDustLastNormal[i]) );

                    BikeDust[i].UpdateHoverDust(true, HitDist/BikeDustTraceDistance);

                    // If dust is just turning on, set OldLocation to current Location to avoid spawn interpolation.
                    if(!BikeDust[i].bDustActive)
                        BikeDust[i].OldLocation = BikeDust[i].Location;

                    BikeDust[i].bDustActive = true;
                }
            }
        }
    }
}


function VehicleCeaseFire(bool bWasAltFire)
{
    Super.VehicleCeaseFire(bWasAltFire);

    if (bWasAltFire)
        bHoldingDuck = False;
}

simulated function float ChargeBar()
{
    // Clamp to 0.999 so charge bar doesn't blink when maxed
    if (Level.TimeSeconds - JumpDelay < LastJumpTime)
        return (FMin((Level.TimeSeconds - LastJumpTime) / JumpDelay, 0.999));
    else
        return 0.999;
}

simulated function CheckJumpDuck()
{
    local KarmaParams KP;
    local Emitter JumpEffect, DuckEffect;
    local bool bOnGround;
    local int i;

    KP = KarmaParams(KParams);

    // Can only start a jump when in contact with the ground.
    bOnGround = false;
    for(i=0; i<KP.Repulsors.Length; i++)
    {
        if( KP.Repulsors[i] != None && KP.Repulsors[i].bRepulsorInContact )
            bOnGround = true;
    }

    // If we are on the ground, and press Rise, and we not currently in the middle of a jump, start a new one.
    if (JumpCountdown <= 0.0 && Rise > 0 && bOnGround && !bHoldingDuck && Level.TimeSeconds - JumpDelay >= LastJumpTime)
    {
        PlaySound(JumpSound,,1.0);

        if (Role == ROLE_Authority)
           DoBikeJump = !DoBikeJump;

        if(Level.NetMode != NM_DedicatedServer)
        {
            JumpEffect = Spawn(class'ONSHoverBikeJumpEffect');
            JumpEffect.SetBase(Self);
            ClientPlayForceFeedback(JumpForce);
        }

        if ( AIController(Controller) != None )
            Rise = 0;

        LastJumpTime = Level.TimeSeconds;
    }
    else if (DuckCountdown <= 0.0 && (Rise < 0 || bWeaponIsAltFiring))
    {
        if (!bHoldingDuck)
        {
            bHoldingDuck = True;

            PlaySound(DuckSound,,1.0);

            if(Level.NetMode != NM_DedicatedServer)
            {
                DuckEffect = Spawn(class'ONSHoverBikeDuckEffect');
                DuckEffect.SetBase(Self);
            }

            if ( AIController(Controller) != None )
                Rise = 0;

            JumpCountdown = 0.0; // Stops any jumping that was going on.
        }
    }
    else
       bHoldingDuck = False;
}

simulated function KApplyForce(out vector Force, out vector Torque)
{
    Super.KApplyForce(Force, Torque);

    if (bDriving && JumpCountdown > 0.0)
    {
        Force += vect(0,0,1) * JumpForceMag;
    }

    if (bDriving && bHoldingDuck)
    {
        Force += vect(0,0,-1) * DuckForceMag;
    }
}

static function StaticPrecache(LevelInfo L)
{
    Super.StaticPrecache(L);

    L.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.HoverExploded.HoverWing');
    L.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.HoverExploded.HoverChair');
    L.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris2');
    L.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris1');
    L.AddPrecacheStaticMesh(StaticMesh'ONSWeapons-SM.PC_MantaJumpBlast');

    L.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp2_frames');
    L.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp1_frames');
    L.AddPrecacheMaterial(Material'ExplosionTex.Framed.we1_frames');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Fire.MuchSmoke1');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Fire.NapalmSpot');
    L.AddPrecacheMaterial(Material'EpicParticles.Fire.SprayFire1');
    L.AddPrecacheMaterial(Material'WeaponSkins.Skins.RocketTex0');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Energy.JumpDuck');
    L.AddPrecacheMaterial(Material'VMVehicles-TX.HoverBikeGroup.hovercraftFANSblurTEX');
    L.AddPrecacheMaterial(Material'VMVehicles-TX.HoverBikeGroup.hoverCraftRED');
    L.AddPrecacheMaterial(Material'VMVehicles-TX.HoverBikeGroup.hoverCraftBLUE');
    L.AddPrecacheMaterial(Material'VMVehicles-TX.HoverBikeGroup.NewHoverCraftNOcolor');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Energy.AirBlast');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.SmokePanels2');
    L.AddPrecacheMaterial(Material'Engine.GRADIENT_Fade');

    L.AddPrecacheMaterial(Material'ONSBPTextures.Skins.PaladinGreen');
    L.AddPrecacheMaterial(Material'ONSBPTextures.Skins.PaladinTan');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Fire.SmokeFragment');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Fire.NapalmSpot');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Energy.ElecPanelsP');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Energy.ElecPanels');
    L.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp2_framesP');
    L.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockTankEffectCore2');
    L.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockTankEffectSwirl');
    L.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockBallTrail');
    L.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockTankEffectCore2a');
    L.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockRingTex');
    L.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockTankEffectCore');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Energy.SmoothRing');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Fire.Ripples1P');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Fire.Ripples2P');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.BoloBlob');
    L.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ElectricShockTexG');
    L.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ElectricShockTexG2');
    L.AddPrecacheMaterial(Material'VehicleFX.Particles.DustyCloud2');
    L.AddPrecacheMaterial(Material'VMParticleTextures.DirtKICKGROUP.dirtKICKTEX');
    L.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.SoftFade');
    L.AddPrecacheMaterial(Material'AbaddonArchitecture.Base.bas27go');

}

simulated function UpdatePrecacheStaticMeshes()
{
    Level.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.HoverExploded.HoverWing');
    Level.AddPrecacheStaticMesh(StaticMesh'ONSDeadVehicles-SM.HoverExploded.HoverChair');
    Level.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris2');
    Level.AddPrecacheStaticMesh(StaticMesh'AW-2004Particles.Debris.Veh_Debris1');
    Level.AddPrecacheStaticMesh(StaticMesh'ONSWeapons-SM.PC_MantaJumpBlast');
    Level.AddPrecacheMaterial(Material'VMVehicles-TX.HoverBikeGroup.hovercraftFANSblurTEX');

    Super.UpdatePrecacheStaticMeshes();
}

simulated function UpdatePrecacheMaterials()
{
    Level.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp2_frames');
    Level.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp1_frames');
    Level.AddPrecacheMaterial(Material'ExplosionTex.Framed.we1_frames');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Fire.MuchSmoke1');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Fire.NapalmSpot');
    Level.AddPrecacheMaterial(Material'EpicParticles.Fire.SprayFire1');
    Level.AddPrecacheMaterial(Material'WeaponSkins.Skins.RocketTex0');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Energy.JumpDuck');
    Level.AddPrecacheMaterial(Material'VMVehicles-TX.HoverBikeGroup.hoverCraftRED');
    Level.AddPrecacheMaterial(Material'VMVehicles-TX.HoverBikeGroup.hoverCraftBLUE');
    Level.AddPrecacheMaterial(Material'VMVehicles-TX.HoverBikeGroup.NewHoverCraftNOcolor');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Energy.AirBlast');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.SmokePanels2');
    Level.AddPrecacheMaterial(Material'Engine.GRADIENT_Fade');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Fire.SmokeFragment');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Fire.NapalmSpot');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Energy.ElecPanelsP');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Energy.ElecPanels');
    Level.AddPrecacheMaterial(Material'ExplosionTex.Framed.exp2_framesP');
    Level.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockTankEffectCore2');
    Level.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockTankEffectSwirl');
    Level.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockBallTrail');
    Level.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockTankEffectCore2a');
    Level.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockRingTex');
    Level.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ShockTankEffectCore');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Energy.SmoothRing');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Fire.Ripples1P');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Fire.Ripples2P');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.BoloBlob');
    Level.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ElectricShockTexG');
    Level.AddPrecacheMaterial(Material'AW-2k4XP.Weapons.ElectricShockTexG2');
    Level.AddPrecacheMaterial(Material'VehicleFX.Particles.DustyCloud2');
    Level.AddPrecacheMaterial(Material'VMParticleTextures.DirtKICKGROUP.dirtKICKTEX');
    Level.AddPrecacheMaterial(Material'AW-2004Particles.Weapons.SoftFade');
    Level.AddPrecacheMaterial(Material'AbaddonArchitecture.Base.bas27go');

    Super.UpdatePrecacheMaterials();
}

defaultproperties
{
//  Mesh=Mesh'ONSVehicles-A.HoverBike'

//    RedSkin=Shader'VMVehicles-TX.HoverBikeGroup.HoverBikeChassisFinalRED'
//    BlueSkin=Shader'VMVehicles-TX.HoverBikeGroup.HoverBikeChassisFinalBLUE'

    DriverWeapons(0)=(WeaponClass=class'ShockManta.ShockMantaTurret',WeaponBone=PlasmaGunAttachment);
    DriverWeapons(1)=(WeaponClass=class'Onslaught.ONSHoverBikePlasmaGun',WeaponBone=PlasmaGunAttachment);
    DestroyedVehicleMesh=StaticMesh'ONSDeadVehicles-SM.HoverBikeDead'
    DestructionEffectClass=class'Onslaught.ONSVehicleIonExplosionEffect'
    DisintegrationEffectClass=class'Onslaught.ONSVehicleExplosionEffect'
    DestructionLinearMomentum=(Min=62000,Max=100000)
    DestructionAngularMomentum=(Min=25,Max=75)
    ImpactDamageMult=0.0001

    Health=300
    HealthMax=300
    bHasAltFire=True
    RanOverDamageType=class'DamTypeHoverBikeHeadshot'
    CrushedDamageType=class'DamTypeHoverBikePancake'

    IdleSound=sound'ONSVehicleSounds-S.HoverBike.HoverBikeEng02'
    StartUpSound=sound'ONSVehicleSounds-S.HoverBike.HoverBikeStart01'
    ShutDownSound=sound'ONSVehicleSounds-S.HoverBike.HoverBikeStop01'
    MaxPitchSpeed=1000
    SoundVolume=255
    SoundRadius=900

    StartUpForce="HoverBikeStartUp"
    ShutDownForce="HoverBikeShutDown"

    bShowDamageOverlay=True

    FPCamPos=(X=0,Y=0,Z=50)
    TPCamLookat=(X=0,Y=0,Z=0)
    TPCamWorldOffset=(X=0,Y=0,Z=120)
    TPCamDistance=500

    bDrawDriverInTP=True
    bDrawMeshInFP=False
    bTurnInPlace=True
    bScriptedRise=True
    bHasAltFire=False
    bCanStrafe=True
    bShowChargingBar=True

    DrivePos=(X=-18.438,Y=0.0,Z=60.0)

    MaxViewYaw=16000
    MaxViewPitch=16000

    ExitPositions(0)=(X=0,Y=300,Z=100)
    ExitPositions(1)=(X=0,Y=-300,Z=100)
    ExitPositions(2)=(X=350,Y=0,Z=100)
    ExitPositions(3)=(X=-350,Y=0,Z=100)
    ExitPositions(4)=(X=-350,Y=0,Z=-100)
    ExitPositions(5)=(X=350,Y=0,Z=-100)
    ExitPositions(6)=(X=0,Y=300,Z=-100)
    ExitPositions(7)=(X=0,Y=-300,Z=-100)

    EntryPosition=(X=0,Y=0,Z=0)
    EntryRadius=140.0

    ThrusterOffsets(0)=(X=95,Y=0,Z=10)
    ThrusterOffsets(1)=(X=-10,Y=80,Z=10)
    ThrusterOffsets(2)=(X=-10,Y=-80,Z=10)

    BikeDustOffset(0)=(X=25,Y=80,Z=10)
    BikeDustOffset(1)=(X=25,Y=-80,Z=10)
    BikeDustTraceDistance=200

    HoverSoftness=0.09
    HoverPenScale=1.0
    HoverCheckDist=150

    UprightStiffness=500
    UprightDamping=300

    MaxThrustForce=27
    LongDamping=0.02

    MaxStrafeForce=20
    LatDamping=0.1

    TurnTorqueFactor=1000.0
    TurnTorqueMax=125.0
    TurnDamping=40.0
    MaxYawRate=1.5

    PitchTorqueFactor=200.0
    PitchTorqueMax=9.0
    PitchDamping=20.0

    RollTorqueTurnFactor=450.0
    RollTorqueStrafeFactor=50.0
    RollTorqueMax=12.5
    RollDamping=30.0

    StopThreshold=100
    VehicleMass=1.0

    JumpDuration=0.22
    JumpForceMag=100.0
    JumpSound=sound'ONSVehicleSounds-S.HoverBike.HoverBikeJump05'
    JumpForce="HoverBikeJump"
    JumpDelay=3.0

    DuckForceMag=150.0
    DuckSound=sound'ONSVehicleSounds-S.HoverBike.HoverBikeTurbo01'

    HeadlightCoronaOffset(0)=(X=73,Y=10,Z=14)
    HeadlightCoronaOffset(1)=(X=73,Y=-10,Z=14)
    HeadlightCoronaMaterial=Material'EpicParticles.flashflare1'
    HeadlightCoronaMaxSize=60

    DamagedEffectOffset=(X=50,Y=-25,Z=10)
    DamagedEffectScale=0.6

    Begin Object Class=KarmaParamsRBFull Name=KParams0
        KStartEnabled=True
        KFriction=0.5
        KLinearDamping=0.15
        KAngularDamping=0
        bKNonSphericalInertia=False
        KImpactThreshold=700
        bHighDetailOnly=False
        bClientOnly=False
        bKDoubleTickRate=True
        bKStayUpright=True
        bKAllowRotate=True
        KInertiaTensor(0)=1.3
        KInertiaTensor(1)=0.0
        KInertiaTensor(2)=0.0
        KInertiaTensor(3)=4.0
        KInertiaTensor(4)=0.0
        KInertiaTensor(5)=4.5
        KCOMOffset=(X=0.0,Y=0.0,Z=0.0)
        bDestroyOnWorldPenetrate=True
        bDoSafetime=True
        Name="KParams0"
    End Object
    KParams=KarmaParams'KParams0'
    VehiclePositionString="in a Shock Manta"
    VehicleNameString="Shock Manta"
    GroundSpeed=2000
    bDriverHoldsFlag=false
    bCanCarryFlag=false
    FlagOffset=(Z=45.0)
    FlagBone=HoverCraft
    FlagRotation=(Yaw=32768)

    HornSounds(0)=sound'ONSVehicleSounds-S.Horn02'
    HornSounds(1)=sound'ONSVehicleSounds-S.La_Cucharacha_Horn'

    MeleeRange=-100.0
    ObjectiveGetOutDist=750.0
    bTraceWater=True
    MaxDesireability=0.6
}

SolidSnake: What is the point of all this code? It looks almost exactly the same as the manta with a few default properties changed...

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Image Uploads

Random Page

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In