RuneI
Class FireRadius

source: c:\runehov\RuneI\Classes\FireRadius.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Effects
         |
         +--RuneI.FireRadius
Direct Known Subclasses:None

class FireRadius
extends Engine.Effects

//============================================================================= // FireRadius. //=============================================================================
Variables
 float TimePassed


Function Summary
 void DoRadiusEffect()
 
simulated
Spawned()
 
simulated
Tick(float DeltaTime)



Source Code


00001	//=============================================================================
00002	// FireRadius.
00003	//=============================================================================
00004	class FireRadius expands Effects;
00005	
00006	var float TimePassed;
00007	const StartRadius = 22.0;
00008	const EndRadius=125.0;
00009	const EffectTime=0.75;
00010	
00011	simulated function Spawned()
00012	{
00013		TimePassed=0.0;
00014		ScaleGlow = EffectTime * 2;
00015	
00016		DoRadiusEffect();
00017	}
00018	
00019	function DoRadiusEffect()
00020	{
00021		local actor A;
00022		local int i;
00023		local bool bCollisionJoints;
00024	
00025		foreach RadiusActors(class'actor', A, EndRadius * 2, Location)
00026		{
00027			if (A == self || A==Owner || A.Owner==Owner)
00028					continue;
00029	
00030			if (A.bHidden)
00031				continue;
00032	
00033			if (ScriptPawn(A) != None && ScriptPawn(A).bIsBoss)
00034				continue;
00035	
00036			if (!FastTrace(Location, A.Location))
00037				continue;
00038	
00039			if (A.IsA('Pawn'))
00040			{
00041				// Set on fire
00042				Pawn(A).PowerupBlaze(Pawn(Owner));
00043	
00044				// Do some damage
00045				A.JointDamaged(10, Pawn(Owner), A.Location, Normal(A.Location-Owner.Location)*50, 'fire', 0);
00046	//			A.AddVelocity((Normal(A.Location-Owner.Location)+vect(0,0,1))*300);
00047			}
00048			else if (A.IsA('Decoration') || A.IsA('Inventory'))
00049			{
00050				// Set all collision joints on fire
00051				for (i=0; i<A.NumJoints(); i++)
00052				{
00053					if ((A.JointFlags[i] & JOINT_FLAG_COLLISION)!=0)
00054					{
00055						bCollisionJoints = true;
00056						A.SetOnFire(Pawn(Owner), i);
00057					}
00058				}
00059				if (!bCollisionJoints)
00060					A.SetOnFire(Pawn(Owner), 1);
00061			}
00062		}
00063	}
00064	
00065	simulated function Tick(float DeltaTime)
00066	{
00067		local float newRadius;
00068	
00069		TimePassed += DeltaTime;
00070		newRadius = StartRadius + (EndRadius-StartRadius) * (TimePassed/EffectTime);
00071		DrawScale = newRadius/StartRadius;
00072		
00073		// Fade the blast radius out
00074		ScaleGlow -= DeltaTime * 2;
00075		if(ScaleGlow <= 0)
00076			Destroy();
00077	//	SetCollisionSize(newRadius, CollisionHeight);
00078	}
00079	
00080	defaultproperties
00081	{
00082	     RemoteRole=ROLE_SimulatedProxy
00083	     DrawType=DT_VerticalSprite
00084	     Style=STY_Translucent
00085	     Texture=FireTexture'RuneFX2.FireRing'
00086	     CollisionRadius=22.000000
00087	     CollisionHeight=22.000000
00088	     bCollideActors=True
00089	}

End Source Code