Legacy:VitalOverdose/SFXUltraLight
Overview
this custom emitter actor changes the weight of any ONSVehicle its attached to. + Boost and FX
<uscript> class SFXUltralight Extends Emitter placeable;
Var () bool bLockPlayersTo; Var () float LandedLockTime; Var () float TimerFrequency; var () float ultralightTime; Var (slide_in) float slidein; Var (slide_in) Float IncSteps; Var (slide_in) Sound UltralightMax_Snd; Var (slide_Out) float Slidout; Var (slide_Out) float DecSteps; Var (slide_Out) Sound UltralightDec_Snd; Var (OnCreation) bool bTagSuddenDeathFx; Var (OnCreation) Sound OnCreation_Sound; Var (OnCreation) Array< Class< Emitter > > OnCreation_FxPool; Var (suddenstop) sound SudenDeath_Sound; var (suddenstop) Array< Class< Emitter > > SudenDeath_FxPool; Var Bool bScanningTargetVec; Var Array< float > TimeKeeper; Var float Incamount; Var float DecAmount;
Function PostBeginPlay() { if (( base == none )&&(!Owner.IsA('OnsVehicle')))
{ Destroyed(); Return; }
SetBase( Owner );
If ((!OnsVehicle(Owner).Driver.IsA('xBot')) && ( bLockPlayersTo == false ))
Return;
TimeKeeper.Length = 4; TimeKeeper[0] = slidein; TimeKeeper[1] = ultralightTime; TimeKeeper[2] = slidout; TimeKeeper[3] = OnsVehicle(Owner).KGetActorGravScale(); TogglelBotock(); SetTimer(TimerFrequency,True);
}
Function Timer() {
if (vehicle(base).Driver == none) SuddenDeath()
If (TimeKeeper[0] > 0 ) { TimeKeeper[0]-=TimerFrequency; if (TimeKeeper[0]<0.1) SetTimer( TimeKeeper[1],False ); Return; }
if ( TimeKeeper[1] > 0 ) { TimeKeeper[1] = 0; SetTimer(TimerFrequency,True); Return; }
if ( TimeKeeper[2] > 0 ) { TimeKeeper[2] -= TimerFrequency; if (TimeKeeper[2] < 0.1) Disable('Timer'); }
}
function SuddenDeath() {
SpawnRND(SudenDeath_FxPool,bTagSuddenDeathFx); Disable('Timer'); TogglelBotock();
}
Function SpawnRND(Array< Class< Emitter > > AvailableFx,Bool bTagFx) {
Local int RNDPickedNumb; local Class< Emitter > RNDPickedEmitter; local Emitter SpawnedEmitter;
if ( AvailableFx.Length!=0 ) { RNDPickedNumb = Rand( AvailableFx.Length ); RNDPickedEmitter = AvailableFx[RNDPickedNumb]; SpawnedEmitter = Spawn( RNDPickedEmitter , self ,, Owner.Location , Owner.Rotation );
if ( ( SpawnedEmitter == none ) && ( bTagFx == True) ) SpawnedEmitter.SetBase( Owner ); }
}
Function TogglelBotock() { If ( OnsVehicle(Owner).bDriverCannotLeaveVehicle == False )
{ OnsVehicle(Owner).bDriverCannotLeaveVehicle = True; Return; } OnsVehicle(Owner).bDriverCannotLeaveVehicle = False;
}
Function Bool checkGrounded() {
Local Int counter; for ( counter=0 ; counter < OnsVehicle(Owner).wheels.Length ; counter++ ) If ( OnsVehicle(Owner).Wheels[counter].bWheelOnGround == False ) return False; Return True;
} </uscript>
Related Topcs
- Vehicles
- Emitter
- Particle System
- ParticleEmitter
- ParticleEmitter Cookbook
- udn2:EmittersReference
- udn2:EmittersExamples
More custom emitter scipts
- SFXVehicleTeleporting
- SFXPainful
- SFXBoosting
- SFXTriggering
- SFXEjecting
- SFXMonsterSpawning
- SFXHealing
- SFXSelfScaling
- InventoryFlare
- ExampleFlares