Core.Object | +--Engine.Actor | +--Engine.Keypoint | +--UnrealI.RockSlide | +--UnrealI.MagmaBurst
int
AngularDeviation
float
MaxBrightness
MaxBurnTime
MaxSpawnSpeed
MaxSpawnedAtOnce
MinBrightness
MinBurnTime
MinSpawnSpeed
MinSpawnedAtOnce
rotator
SpawnCenterDir
void
MakeRock()
MoreMagma()
Trigger(Actor Other, Pawn EventInstigator)
00001 //============================================================================= 00002 // MagmaBurst. 00003 //============================================================================= 00004 class MagmaBurst extends Rockslide; 00005 00006 // Spawns off a number of Magma elements, which all die out 00007 // within a random amount of time. This code modified from 00008 // Sparks. MZM 00009 // Reasonable defaults 00010 var() int MinSpawnedAtOnce; // 1 00011 var() int MaxSpawnedAtOnce; // 3 00012 var() float MinSpawnSpeed; // 200 00013 var() float MaxSpawnSpeed; // 300 00014 var() float MinBurnTime; // 0.4 00015 var() float MaxBurnTime; // 1.0 00016 var() float MinBrightness; // 0.7 (values can only go from 0.0 -> 1.0) 00017 var() float MaxBrightness; // 1.0 " " 00018 var() rotator SpawnCenterDir; 00019 var() int AngularDeviation; // approx. 0x2000 -> 8192 00020 00021 function MoreMagma () 00022 { 00023 local vector SpawnLoc; 00024 local Magma TempMagma; 00025 local FlameBall TempFlame; 00026 local rotator SpawnDir; 00027 00028 SpawnLoc = Location - (CubeDimensions*0.5); 00029 SpawnLoc.X += FRand()*CubeDimensions.X; 00030 SpawnLoc.Y += FRand()*CubeDimensions.Y; 00031 SpawnLoc.Z += FRand()*CubeDimensions.Z; 00032 00033 // Time to generate another Magma Rock. 00034 TempMagma = Spawn (class 'Magma', , '', SpawnLoc); 00035 00036 // Spawn a lava burst as the magma flies out 00037 TempFlame = Spawn (class 'FlameBall', , '', SpawnLoc); 00038 00039 SpawnDir = SpawnCenterDir; 00040 SpawnDir.Pitch += -AngularDeviation + Rand(AngularDeviation*2); 00041 SpawnDir.Yaw += -AngularDeviation + Rand(AngularDeviation*2); 00042 TempMagma.SetRotation(SpawnDir); 00043 TempMagma.RotationRate = RotRand(); 00044 TempMagma.Speed = (MinSpawnSpeed + 00045 FRand()*(MaxSpawnSpeed-MinSpawnSpeed)); 00046 00047 TempMagma.BurnTime = MinBurnTime + FRand()*(MaxBurnTime-MinBurnTime); 00048 00049 // 0=dark 1=bright 00050 TempMagma.InitialBrightness = MinBrightness + 00051 FRand()*(MaxBrightness-MinBrightness); 00052 00053 TempMagma.DrawScale = (MaxScaleFactor-MinScaleFactor)*FRand()+MinScaleFactor; 00054 } 00055 00056 00057 state() Active 00058 { 00059 function MakeRock() 00060 { 00061 local int i, NumSpawnedNow; 00062 00063 NumSpawnedNow = Rand(MaxSpawnedAtOnce-MinSpawnedAtOnce+1)+MinSpawnedAtOnce; 00064 for (i=0; i<NumSpawnedNow; i++) 00065 MoreMagma(); 00066 } 00067 } 00068 00069 00070 auto state() Triggered 00071 { 00072 function Trigger (actor Other, pawn EventInstigator) 00073 { 00074 GotoState ('Active'); 00075 } 00076 } 00077 00078 defaultproperties 00079 { 00080 MinSpawnedAtOnce=1 00081 MaxSpawnedAtOnce=4 00082 MinSpawnSpeed=200.000000 00083 MaxSpawnSpeed=1000.000000 00084 MinBurnTime=20.000000 00085 MaxBurnTime=25.000000 00086 MinBrightness=190.000000 00087 MaxBrightness=240.000000 00088 SpawnCenterDir=(Pitch=20000) 00089 AngularDeviation=36000 00090 CubeDimensions=(X=60.000000,Y=60.000000,Z=60.000000) 00091 MinBetweenTime=0.700000 00092 MaxBetweenTime=1.700000 00093 MinScaleFactor=0.600000 00094 MaxScaleFactor=1.300000 00095 Tag=MagmaTest1 00096 }