UnrealI
Class PeaceRocket

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

class PeaceRocket
extends Engine.Projectile

//============================================================================= // PeaceRocket. //=============================================================================
Variables
 float ClosestDistance
 Pawn ClosestPawn
 int Count
 vector X,Y,Z


Function Summary
 void Explode(vector HitLocation, vector HitNormal)
 void PostBeginPlay()
 void ProcessTouch(Actor Other, Vector HitLocation)
 void Tick(float DeltaTime)
 void Timer()



Source Code


00001	//=============================================================================
00002	// PeaceRocket.
00003	//=============================================================================
00004	class PeaceRocket extends Projectile;
00005	
00006	#exec MESH IMPORT MESH=perock ANIVFILE=MODELS\perock_a.3D DATAFILE=MODELS\perock_d.3D X=0 Y=0 Z=0
00007	#exec MESH ORIGIN MESH=perock X=0 Y=0 Z=0 YAW=0 ROLL=0 PITCH=-64
00008	#exec MESH SEQUENCE MESH=perock SEQ=All       STARTFRAME=0   NUMFRAMES=16
00009	#exec MESH SEQUENCE MESH=perock SEQ=Ignite    STARTFRAME=0   NUMFRAMES=3
00010	#exec MESH SEQUENCE MESH=perock SEQ=Flying    STARTFRAME=3   NUMFRAMES=13
00011	#exec TEXTURE IMPORT NAME=Jpeace1 FILE=MODELS\peaceg.PCX
00012	#exec MESHMAP SCALE MESHMAP=perock  X=0.07 Y=0.07 Z=0.14
00013	#exec MESHMAP SETTEXTURE MESHMAP=perock NUM=1 TEXTURE=Jpeace1
00014	
00015	var vector X,Y,Z;
00016	var pawn ClosestPawn;
00017	var float ClosestDistance;
00018	var int Count;
00019	
00020	function PostBeginPlay()
00021	{
00022		Super.PostBeginPlay();
00023		PlaySound(SpawnSound);	
00024		Velocity = Vector(Rotation) * 120.0;
00025		Acceleration = Velocity * 1.67;	
00026		Count = 0;
00027		Timer();
00028		SetTimer(1.0,True);
00029	}
00030	
00031	function Timer()
00032	{
00033		local pawn Victims;
00034		local float thisDist;
00035	
00036		ClosestDistance = 100000;
00037		ClosestPawn = None;	
00038		Count++;
00039		if (Count==8)
00040		{
00041			Explode(Location, vect(0,0,0));
00042			return;
00043		}
00044	
00045		//FIXME - use the pawnlist for this
00046		foreach VisibleCollidingActors( class'Pawn', Victims, 500.0 )
00047		{
00048			thisDist = VSize(Victims.Location - Location); 
00049			if ( thisDist < ClosestDistance) 
00050			{
00051				ClosestPawn = Victims;
00052				ClosestDistance = thisDist;
00053			}		
00054		}			
00055	}
00056	function Tick( float DeltaTime )
00057	{
00058		local float MagnitudeVel;
00059		if (ClosestPawn != None)
00060		{
00061			MagnitudeVel = VSize(Velocity);
00062			Velocity =  MagnitudeVel * Normal( Normal(ClosestPawn.Location - Location) 
00063				* MagnitudeVel * DeltaTime * 6 + Velocity);		
00064			SetRotation(rotator(Velocity));
00065		}
00066	}
00067	function ProcessTouch (Actor Other, Vector HitLocation)
00068	{
00069		local int hitdamage;
00070		if ((PeaceRocket(Other) == none)) Explode(HitLocation, HitLocation);
00071	}
00072	
00073	function Explode(vector HitLocation, vector HitNormal)
00074	{
00075		HurtRadius(damage, 200.0, 'exploded', MomentumTransfer, HitLocation);
00076		Spawn(class'BallExplosion');	
00077		Destroy();
00078	}
00079	
00080	defaultproperties
00081	{
00082	     MaxSpeed=600.000000
00083	     Damage=100.000000
00084	     MomentumTransfer=70000
00085	     bNetTemporary=False
00086	     LifeSpan=15.000000
00087	     Mesh=LodMesh'UnrealI.perock'
00088	     AmbientGlow=96
00089	     LightType=LT_Steady
00090	     LightEffect=LE_NonIncidence
00091	     LightBrightness=79
00092	     LightHue=28
00093	     LightSaturation=157
00094	     LightRadius=6
00095	     bBounce=True
00096	}

End Source Code