UnrealI
Class FlakShell

source: e:\games\UnrealTournament\UnrealI\Classes\FlakShell.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Projectile
         |
         +--UnrealI.FlakShell
Direct Known Subclasses:None

class FlakShell
extends Engine.Projectile

//============================================================================= // FlakShell. //=============================================================================

Function Summary
 void Explode(vector HitLocation, vector HitNormal)
 void Landed(vector HitNormal)
 
simulated
PostBeginPlay()
 void ProcessTouch(Actor Other, vector HitLocation)
 
simulated
Timer()



Source Code


00001	//=============================================================================
00002	// FlakShell.
00003	//=============================================================================
00004	class FlakShell extends Projectile;
00005	
00006	#exec MESH IMPORT MESH=FlakSh ANIVFILE=MODELS\FlakSh_a.3D DATAFILE=MODELS\FlakSh_d.3D X=0 Y=0 Z=0
00007	#exec MESH LODPARAMS MESH=FlakSh STRENGTH=0.3
00008	#exec MESH ORIGIN MESH=FlakSh X=0 Y=0 Z=-0 YAW=-64
00009	#exec MESH SEQUENCE MESH=FlakSh SEQ=All    STARTFRAME=0   NUMFRAMES=1
00010	#exec MESH SEQUENCE MESH=FlakSh SEQ=Still  STARTFRAME=0   NUMFRAMES=1
00011	#exec TEXTURE IMPORT NAME=Jflakshel1 FILE=..\unrealshare\MODELS\FlakShel.PCX
00012	#exec MESHMAP SCALE MESHMAP=FlakSh X=0.12 Y=0.12 Z=0.24
00013	#exec MESHMAP SETTEXTURE MESHMAP=FlakSh NUM=1 TEXTURE=Jflakshel1 TLOD=50
00014	
00015		simulated function PostBeginPlay()
00016		{
00017			Super.PostBeginPlay();
00018			Velocity = Vector(Rotation) * Speed;     
00019			Velocity.z += 200; 
00020			if (Level.bHighDetailMode) SetTimer(0.05,True);
00021			else SetTimer(0.25,True);
00022		}
00023	
00024		function ProcessTouch (Actor Other, vector HitLocation)
00025		{
00026			if ((Other != instigator) && (FlakShell(Other) == none)) 
00027				Explode(HitLocation,Normal(HitLocation-Other.Location));
00028		}
00029	
00030		function Landed( vector HitNormal )
00031		{
00032			Explode(Location,HitNormal);
00033		}
00034	
00035		simulated function Timer()
00036		{
00037			local SpriteSmokePuff s;
00038	
00039			if (Level.NetMode!=NM_DedicatedServer) 
00040			{
00041				s = Spawn(class'SpriteSmokePuff');
00042				s.RemoteRole = ROLE_None;
00043			}	
00044		}
00045	
00046		function Explode(vector HitLocation, vector HitNormal)
00047		{
00048			local vector start;
00049	
00050			HurtRadius(damage, 150, 'exploded', MomentumTransfer, HitLocation);	
00051			start = Location + 10 * HitNormal;
00052	 		Spawn( class'FlameExplosion',,,Start);
00053			Spawn(class 'MasterChunk',,,Start);
00054			Spawn( class 'Chunk2',, '', Start);
00055			Spawn( class 'Chunk3',, '', Start);
00056			Spawn( class 'Chunk4',, '', Start);
00057			Spawn( class 'Chunk1',, '', Start);
00058			Spawn( class 'Chunk2',, '', Start);
00059	 		Destroy();
00060		}
00061	
00062	defaultproperties
00063	{
00064	     speed=1200.000000
00065	     Damage=70.000000
00066	     MomentumTransfer=75000
00067	     bNetTemporary=False
00068	     Physics=PHYS_Falling
00069	     RemoteRole=ROLE_SimulatedProxy
00070	     LifeSpan=6.000000
00071	     Mesh=LodMesh'UnrealI.FlakSh'
00072	     AmbientGlow=67
00073	     bUnlit=True
00074	}

End Source Code