Legacy:VitalOverdose/ONSVehicleFXTagger - Unreal Wiki

# Legacy:VitalOverdose/ONSVehicleFXTagger

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

< Legacy:VitalOverdose
UT2004 :: Actor >> Decoration >> ONSVehicleFXTagger (Package: custom)

by VitalOverdose

### Overview

A is a modified Decoration that reacts when hit by a vehicle. There is no static mesh for this actor and it wont block the vehicle in any way . When the ONSVehicleFXTagger is triggered it will spawn an emitter and hard attach it to the actor that initiated the event (the vehicle) and any other vehicles inside a radius that can be set by the mapper : TagRadius.

### game use

This is great for adding realism when a vehicle drives though fire or across lava etc.

## The script

    //================================================================================

    //Class ONSVehicleFXTagger by vitaloverdose Oct2007 http://www.vitaloverdose.com

    //A modified decoration actor used to attach emitters to vehicles

    //================================================================================

    class ONSVehicleFXTagger extends Decoration

    Placeable;

    var () class<Actor>               EmitterType;

    var () float                      TagRadius;

    var () float                      ResetTime;

    var () sound                      ResetSoundFX;

    var    Actor                      SpawnedActor;

    function Landed(vector HitNormal);

    function HitWall (vector HitNormal, actor Wall);

    singular function PhysicsVolumeChange( PhysicsVolume NewVolume );

    singular function BaseChange();

    function PostBeginPlay()

    {

    super.PostBeginPlay();

    if ( ResetTime <5 && ResetTime > 0 )
         return;

    ResetTime = 5;

    log("the min time allowed for a reset is 5 seconds. -1 shuts the reset off");

    }

    function TakeDamage( int NDamage, Pawn instigatedBy, Vector hitlocation,Vector momentum, class<DamageType> damageType)

    {

    local ONSVehicle FoundONSVehicle;

    if ( !bDamageable )
         return;

    if ( damagetype == None )
         DamageType = class'DamageType';

    if ( InstigatedBy != None )
         Instigator = InstigatedBy;

    if ( Instigator != None )
         MakeNoise(1.0);

    if ( EffectWhenDestroyed != None )
       {
         foreach RadiusActors(Class'ONSVehicle',FoundONSVehicle,TagRadius,location)
                 {
                  NetUpdateTime = Level.TimeSeconds - 1;
                  Spawn( EffectWhenDestroyed, Owner,, FoundONSVehicle.Location );
                  SpawnedActor = Spawn( EmitterType, Owner,, FoundONSVehicle.Location );

                  if (SpawnedActor != none)
                      SpawnedActor.SetBase( FoundONSVehicle );
                  }
         }

    setcollision(false,false,false);

    if (ResetTime > 0 )
        setTimer(ResetTime,false);

    }

    simulated function timer()

    {

    Reset();

    }

    function Reset()

    {

    super.Reset();

    NetUpdateTime = Level.TimeSeconds - 1;

    setcollision(true,true,true);

    if (resetSoundFX != none)
        playsound(ResetSoundFX);

    }

    function Bump( actor Other )

    {

    if (( Mover(Other) != None && Mover(Other).bResetting ) || Other.IsA('ONSVehicle') == false || (

    VSize(Other.Velocity) < 50 ) )
          return;

    Instigator = Pawn(Other);

    if ( Instigator != None && Instigator.Controller != None )
         TakeDamage( VSize(Other.Velocity)*0.03, Instigator, Location, vect(0,0,0), class'Crushed');

    super.Bump(other);

    }

    event EncroachedBy(Actor Other)

    {

    if ( Mover(Other) != None && Mover(Other).bResetting )
         return;

    Instigator = Pawn(Other);

    if ( Instigator != None && Instigator.Controller != None )
         TakeDamage( 1000, Instigator, Location, vect(0,0,0), class'Crushed');

    }

    function bool EncroachingOn(Actor Other)

    {

    if ( Mover(Other) != None && Mover(Other).bResetting )
         return false;

    Instigator = Pawn(Other);

    if ( Instigator != None && Instigator.Controller != None )
         TakeDamage( 1000, Instigator, Location, vect(0,0,0), class'Crushed');

    return false;

    }

    defaultproperties

    {
         TagRadius=200.000000
         ResetTime=10.000000
         bDamageable=True
         bStatic=False
         NetUpdateFrequency=1.000000
         AmbientGlow=48
         bMovable=False
         CollisionHeight=50.000000
         bCollideActors=True
         bCollideWorld=True
         bUseCylinderCollision=True
         bEdShouldSnap=True

    }

### SFX Emitters

The ONSVehicleFXTagger can be used as a 'spawner' for any of the SFX emitter scripts which where designed to reduce the workload on this actor for complicated special FX by getting the emitter actor to act as a kind of controller of the vehicle its attached to for the duration of its life.

- SFXSelfScaling Particles that automatically scale to the actor they are attached to.
- SFXUltraLight Particles that can change the weight of an ONSVehicle for a set amount of time allowing it to be boosted over longer distances.

## Related Topics

- Vehicle
- ONSVehicle
- WormHole
- ONSVehicleBooster
- ONSVehicleTeleporter

## Discussion

Category: Legacy Custom Class (UT2004)

##### Views

- Legacy
- Discussion
- Current revision

##### Search