Core.Object | +--Engine.Actor | +--Engine.Projectile | +--Botpack.flakslug
vector
initialDir
void
Explode(vector HitLocation, vector HitNormal)
simulated
HitWall(vector HitNormal, Actor Wall)
Landed(vector HitNormal)
PostBeginPlay()
ProcessTouch(Actor Other, vector HitLocation)
Timer()
00001 //============================================================================= 00002 // flakslug. 00003 //============================================================================= 00004 class flakslug extends Projectile; 00005 00006 #exec MESH IMPORT MESH=flakslugm ANIVFILE=MODELS\flakslug_a.3D DATAFILE=MODELS\flakslug_d.3D 00007 #exec MESH LODPARAMS MESH=flakslugm STRENGTH=0.3 00008 #exec MESH ORIGIN MESH=flakslugm X=0 Y=0 Z=0 YAW=128 PITCH=64 00009 #exec MESH SEQUENCE MESH=flakslugm SEQ=All STARTFRAME=0 NUMFRAMES=1 00010 #exec MESH SEQUENCE MESH=flakslugm SEQ=Still STARTFRAME=0 NUMFRAMES=1 00011 #exec TEXTURE IMPORT NAME=Jflakslugel1 FILE=MODELS\flakslug.PCX 00012 #exec MESHMAP SCALE MESHMAP=flakslugm X=0.019 Y=0.019 Z=0.038 00013 #exec MESHMAP SETTEXTURE MESHMAP=flakslugm NUM=1 TEXTURE=Jflakslugel1 TLOD=50 00014 00015 var chunktrail trail; 00016 var vector initialDir; 00017 00018 simulated function PostBeginPlay() 00019 { 00020 if ( !Region.Zone.bWaterZone && (Level.NetMode != NM_DedicatedServer) ) 00021 Trail = Spawn(class'ChunkTrail',self); 00022 00023 Super.PostBeginPlay(); 00024 Velocity = Vector(Rotation) * Speed; 00025 initialDir = Velocity; 00026 Velocity.z += 200; 00027 initialDir = Velocity; 00028 if ( Level.bHighDetailMode && !Level.bDropDetail ) 00029 SetTimer(0.04,True); 00030 else 00031 SetTimer(0.25,True); 00032 } 00033 00034 function ProcessTouch (Actor Other, vector HitLocation) 00035 { 00036 if ( Other != instigator ) 00037 Explode(HitLocation,Normal(HitLocation-Other.Location)); 00038 } 00039 00040 simulated function Landed( vector HitNormal ) 00041 { 00042 local DirectionalBlast D; 00043 00044 if ( Level.NetMode != NM_DedicatedServer ) 00045 { 00046 D = Spawn(class'Botpack.DirectionalBlast',self); 00047 if ( D != None ) 00048 D.DirectionalAttach(initialDir, HitNormal); 00049 } 00050 Explode(Location,HitNormal); 00051 } 00052 00053 simulated function HitWall (vector HitNormal, actor Wall) 00054 { 00055 local DirectionalBlast D; 00056 00057 if ( Level.NetMode != NM_DedicatedServer ) 00058 { 00059 D = Spawn(class'Botpack.DirectionalBlast',self); 00060 if ( D != None ) 00061 D.DirectionalAttach(initialDir, HitNormal); 00062 } 00063 Super.HitWall(HitNormal, Wall); 00064 } 00065 00066 simulated function Timer() 00067 { 00068 local ut_SpriteSmokePuff s; 00069 00070 initialDir = Velocity; 00071 if (Level.NetMode!=NM_DedicatedServer) 00072 { 00073 s = Spawn(class'ut_SpriteSmokePuff'); 00074 s.RemoteRole = ROLE_None; 00075 } 00076 if ( Level.bDropDetail ) 00077 SetTimer(0.25,True); 00078 else if ( Level.bHighDetailMode ) 00079 SetTimer(0.04,True); 00080 } 00081 00082 function Explode(vector HitLocation, vector HitNormal) 00083 { 00084 local vector start; 00085 00086 HurtRadius(damage, 150, 'FlakDeath', MomentumTransfer, HitLocation); 00087 start = Location + 10 * HitNormal; 00088 Spawn( class'ut_FlameExplosion',,,Start); 00089 Spawn( class 'UTChunk2',, '', Start); 00090 Spawn( class 'UTChunk3',, '', Start); 00091 Spawn( class 'UTChunk4',, '', Start); 00092 Spawn( class 'UTChunk1',, '', Start); 00093 Spawn( class 'UTChunk2',, '', Start); 00094 Destroy(); 00095 } 00096 00097 defaultproperties 00098 { 00099 speed=1200.000000 00100 Damage=70.000000 00101 MomentumTransfer=75000 00102 bNetTemporary=False 00103 Physics=PHYS_Falling 00104 RemoteRole=ROLE_SimulatedProxy 00105 LifeSpan=6.000000 00106 Mesh=LodMesh'Botpack.flakslugm' 00107 AmbientGlow=67 00108 bUnlit=True 00109 }