Legacy:VitalOverdose/ONSVehicleFXTagger
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
<Uscript>
//================================================================================
//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
}
</uscript>
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
- Vehicles
- ONSVehicle
- AllMapVehicleFactory
- QuickVehicleSpawner
- ONSVehicleTeleporter
- ONSVehicleBooster
- ONSVehicleEjectionTrigger
- ONSVehicleSpeedTrap