Core.Object | +--Engine.Actor | +--Engine.Effects | +--RuneI.Geyser
float
GStateTime
ParticleSystem
PSSteam
class
SpawnSystem
void
PostBeginPlay()
// FUNCTIONS ------------------------------------------------------------------
00001 //============================================================================= 00002 // Geyser. 00003 //============================================================================= 00004 class Geyser expands Effects; 00005 00006 // 00007 // To do: 00008 // 00009 // - Add sounds 00010 // 00011 00012 // EDITABLE INSTANCE VARIABLES ------------------------------------------------ 00013 00014 // INSTANCE VARIABLES --------------------------------------------------------- 00015 00016 var ParticleSystem PSSteam; 00017 var float GStateTime; 00018 var() class<ParticleSystem> SpawnSystem; 00019 00020 // FUNCTIONS ------------------------------------------------------------------ 00021 00022 function PostBeginPlay() 00023 { 00024 Super.PostBeginPlay(); 00025 00026 // PSSteam = Spawn(class'SteamGeyser'); 00027 PSSteam = Spawn(SpawnSystem); 00028 if(PSSteam == None) 00029 return; 00030 // PSSteam.ParticleCount = 1; 00031 PSSteam.bHidden = true; 00032 PSSteam.AlphaStart = 0; 00033 SoundVolume = 0; 00034 } 00035 00036 // STATES --------------------------------------------------------------------- 00037 00038 auto state GeyserDelay 00039 { 00040 event BeginState() 00041 { 00042 if(PSSteam == None) 00043 GotoState(''); 00044 PSSteam.bHidden = true; 00045 } 00046 00047 begin: 00048 Sleep(4+FRand()*4); 00049 GotoState('BeginEmission'); 00050 } 00051 00052 state BeginEmission 00053 { 00054 event BeginState() 00055 { 00056 //slog("BeginEmission"); 00057 GStateTime = 0.0; 00058 PSSteam.bHidden = false; 00059 } 00060 00061 event Tick(float deltaTime) 00062 { 00063 GStateTime += deltaTime; 00064 00065 PSSteam.ParticleCount = 1+GStateTime*100; 00066 PSSteam.AlphaStart = GStateTime*125; 00067 SoundVolume = Clamp(GStateTime*425, 0, 255); 00068 if(PSSteam.ParticleCount > 59) 00069 GotoState('ContinuousEmission'); 00070 } 00071 } 00072 00073 state ContinuousEmission 00074 { 00075 //event BeginState() 00076 //{ 00077 // slog("ContinuousEmission"); 00078 //} 00079 00080 begin: 00081 Sleep(5+FRand()*6); 00082 GotoState('EndEmission'); 00083 } 00084 00085 state EndEmission 00086 { 00087 event BeginState() 00088 { 00089 //slog("EndEmission"); 00090 GStateTime = 0.0; 00091 } 00092 00093 event Tick(float deltaTime) 00094 { 00095 GStateTime += deltaTime; 00096 00097 PSSteam.ParticleCount = 60-(GStateTime*20); 00098 PSSteam.AlphaStart = 75-(GStateTime*25); 00099 SoundVolume = Clamp(254 - (GStateTime*85), 0, 255); 00100 if(PSSteam.ParticleCount < 2) 00101 { 00102 PSSteam.AlphaStart = 0; 00103 GotoState('GeyserDelay'); 00104 } 00105 } 00106 } 00107 00108 defaultproperties 00109 { 00110 bHidden=True 00111 DrawType=DT_Sprite 00112 SoundRadius=48 00113 }