Botpack
Class PulseGun

source: e:\games\UnrealTournament\Botpack\Classes\PulseGun.uc
Core.Object
   |
   +--Engine.Actor
      |
      +--Engine.Inventory
         |
         +--Engine.Weapon
            |
            +--Botpack.TournamentWeapon
               |
               +--Botpack.PulseGun
Direct Known Subclasses:None

class PulseGun
extends Botpack.TournamentWeapon

//============================================================================= // PulseGun. //=============================================================================
Variables
 Angle, Count
 sound DownSound
 PBolt PlasmaBeam

States
Idle, AltFiring, ClientAltFiring, ClientFiring, NormalFire

Function Summary
 void AltFire(float Value)
 
simulated
AnimEnd()
 
simulated
Destroyed()
 
simulated
PlayAltFiring()
 
simulated
PlayFiring()
 float RateSelf(out int)
 float SuggestAttackStyle()
     
// return delta to combat style
 void setHand(float Hand)
     
// set which hand is holding weapon


State Idle Function Summary


State AltFiring Function Summary
 void EndState()
 void Tick(float DeltaTime)


State ClientAltFiring Function Summary


State ClientFiring Function Summary


State NormalFire Function Summary
 void EndState()
 void BeginState()
 void Tick(float DeltaTime)



Source Code


00001	//=============================================================================
00002	// PulseGun.
00003	//=============================================================================
00004	class PulseGun extends TournamentWeapon;
00005	
00006	#exec MESH IMPORT MESH=PulseGunL ANIVFILE=MODELS\PulseGun_a.3d DATAFILE=MODELS\PulseGun_d.3d X=0 Y=0 Z=0
00007	#exec MESH ORIGIN MESH=PulseGunL X=0 Y=0 Z=0 YAW=64 ROLL=0 PITCH=0
00008	
00009	#exec MESH DROPFRAMES MESH=PulseGunL STARTFRAME=65    NUMFRAMES=50
00010	#exec MESH DROPFRAMES MESH=PulseGunL STARTFRAME=86    NUMFRAMES=79
00011	
00012	#exec MESH SEQUENCE MESH=PulseGunL SEQ=All          STARTFRAME=0     NUMFRAMES=126
00013	#exec MESH SEQUENCE MESH=PulseGunL SEQ=Down		    STARTFRAME=8     NUMFRAMES=1
00014	#exec MESH SEQUENCE MESH=PulseGunL SEQ=Select       STARTFRAME=9     NUMFRAMES=16 RATE=36 GROUP=Select
00015	#exec MESH SEQUENCE MESH=PulseGunL SEQ=Still        STARTFRAME=25    NUMFRAMES=1
00016	#exec MESH SEQUENCE MESH=PulseGunL SEQ=shoot1       STARTFRAME=25    NUMFRAMES=5
00017	#exec MESH SEQUENCE MESH=PulseGunL SEQ=shoot2       STARTFRAME=30    NUMFRAMES=5
00018	#exec MESH SEQUENCE MESH=PulseGunL SEQ=shoot3       STARTFRAME=35    NUMFRAMES=5
00019	#exec MESH SEQUENCE MESH=PulseGunL SEQ=spindown     STARTFRAME=40    NUMFRAMES=25
00020	#exec MESH SEQUENCE MESH=PulseGunL SEQ=bolt         STARTFRAME=65   NUMFRAMES=20
00021	#exec MESH SEQUENCE MESH=PulseGunL SEQ=boltstart    STARTFRAME=65   NUMFRAMES=15
00022	#exec MESH SEQUENCE MESH=PulseGunL SEQ=boltloop     STARTFRAME=70   NUMFRAMES=10
00023	#exec MESH SEQUENCE MESH=PulseGunL SEQ=boltend      STARTFRAME=80   NUMFRAMES=5
00024	#exec MESH SEQUENCE MESH=PulseGunL SEQ=idle         STARTFRAME=85   NUMFRAMES=1 
00025	#exec MESH SEQUENCE MESH=PulseGunL SEQ=Shootloop    STARTFRAME=86   NUMFRAMES=40   
00026	
00027	#exec MESHMAP NEW   MESHMAP=PulseGunL MESH=PulseGunL
00028	#exec MESHMAP SCALE MESHMAP=PulseGunL X=0.013 Y=0.013 Z=0.026
00029	
00030	#exec OBJ LOAD FILE=Textures\Ammocount.utx  PACKAGE=Botpack.Ammocount
00031	#exec TEXTURE IMPORT NAME=JPulseGun_02 FILE=Textures\Pulse-tex.PCX GROUP=Skins LODSET=2
00032	#exec TEXTURE IMPORT NAME=JPulseGun_03 FILE=Textures\Hand.PCX GROUP=Skins LODSET=2
00033	
00034	#exec MESHMAP SETTEXTURE MESHMAP=PulseGunL NUM=1 TEXTURE=Botpack.Ammocount.Ammoled
00035	#exec MESHMAP SETTEXTURE MESHMAP=PulseGunL NUM=2 TEXTURE=JPulseGun_02
00036	#exec MESHMAP SETTEXTURE MESHMAP=PulseGunL NUM=3 TEXTURE=JPulseGun_03
00037	
00038	// right handed view version
00039	#exec MESH IMPORT MESH=PulseGunR ANIVFILE=MODELS\PulseGun_a.3d DATAFILE=MODELS\PulseGun_d.3d unmirror=1 unmirrortex=1
00040	#exec MESH ORIGIN MESH=PulseGunR X=0 Y=0 Z=0 YAW=64 ROLL=0 PITCH=0
00041	
00042	#exec MESH DROPFRAMES MESH=PulseGunR STARTFRAME=65    NUMFRAMES=50
00043	#exec MESH DROPFRAMES MESH=PulseGunR STARTFRAME=86    NUMFRAMES=79
00044	
00045	#exec MESH SEQUENCE MESH=PulseGunR SEQ=All          STARTFRAME=0     NUMFRAMES=255
00046	#exec MESH SEQUENCE MESH=PulseGunR SEQ=Down         STARTFRAME=8     NUMFRAMES=1
00047	#exec MESH SEQUENCE MESH=PulseGunR SEQ=Select       STARTFRAME=9     NUMFRAMES=16 RATE=36 GROUP=Select
00048	#exec MESH SEQUENCE MESH=PulseGunR SEQ=Still        STARTFRAME=25    NUMFRAMES=1
00049	#exec MESH SEQUENCE MESH=PulseGunR SEQ=shoot1       STARTFRAME=25    NUMFRAMES=5
00050	#exec MESH SEQUENCE MESH=PulseGunR SEQ=shoot2       STARTFRAME=30    NUMFRAMES=5
00051	#exec MESH SEQUENCE MESH=PulseGunR SEQ=shoot3       STARTFRAME=35    NUMFRAMES=5
00052	#exec MESH SEQUENCE MESH=PulseGunR SEQ=spindown     STARTFRAME=40    NUMFRAMES=25
00053	#exec MESH SEQUENCE MESH=PulseGunR SEQ=bolt         STARTFRAME=65   NUMFRAMES=20
00054	#exec MESH SEQUENCE MESH=PulseGunR SEQ=boltstart    STARTFRAME=65   NUMFRAMES=15
00055	#exec MESH SEQUENCE MESH=PulseGunR SEQ=boltloop     STARTFRAME=70   NUMFRAMES=10
00056	#exec MESH SEQUENCE MESH=PulseGunR SEQ=boltend      STARTFRAME=80   NUMFRAMES=5
00057	#exec MESH SEQUENCE MESH=PulseGunR SEQ=idle         STARTFRAME=85   NUMFRAMES=1 
00058	#exec MESH SEQUENCE MESH=PulseGunR SEQ=Shootloop    STARTFRAME=86   NUMFRAMES=40   
00059	
00060	#exec MESHMAP NEW   MESHMAP=PulseGunR MESH=PulseGun
00061	#exec MESHMAP SCALE MESHMAP=PulseGunR X=0.013 Y=0.013 Z=0.026
00062	
00063	#exec MESHMAP SETTEXTURE MESHMAP=PulseGunR NUM=1 TEXTURE=Botpack.Ammocount.Ammoled
00064	#exec MESHMAP SETTEXTURE MESHMAP=PulseGunR NUM=2 TEXTURE=JPulseGun_02
00065	#exec MESHMAP SETTEXTURE MESHMAP=PulseGunR NUM=3 TEXTURE=JPulseGun_03
00066	
00067	
00068	// 3rd person view
00069	#exec MESH IMPORT MESH=PulseGun3rd ANIVFILE=MODELS\Pulse3rd_a.3d DATAFILE=MODELS\Pulse3rd_d.3d X=0 Y=0 Z=0
00070	#exec MESH ORIGIN MESH=PulseGun3rd X=0 Y=200 Z=-50 YAW=64 ROLL=0 PITCH=0
00071	#exec MESH SEQUENCE MESH=PulseGun3rd SEQ=All                      STARTFRAME=0 NUMFRAMES=50
00072	#exec MESH SEQUENCE MESH=PulseGun3rd SEQ=still                      STARTFRAME=0 NUMFRAMES=1
00073	#exec MESH SEQUENCE MESH=PulseGun3rd SEQ=shootloop                  STARTFRAME=5 NUMFRAMES=20
00074	#exec MESH SEQUENCE MESH=PulseGun3rd SEQ=spindown                   STARTFRAME=0 NUMFRAMES=1
00075	#exec MESHMAP NEW   MESHMAP=PulseGun3rd MESH=PulseGun3rd
00076	#exec MESHMAP SCALE MESHMAP=PulseGun3rd X=0.1 Y=0.1 Z=0.2
00077	#exec TEXTURE IMPORT NAME=JPulse3rd_01 FILE=MODELS\Pulse-3rd.PCX GROUP=Skins LODSET=2
00078	#exec MESHMAP SETTEXTURE MESHMAP=PulseGun3rd NUM=1 TEXTURE=JPulse3rd_01
00079	
00080	// Pickup view
00081	#exec MESH IMPORT MESH=PulsePickup ANIVFILE=MODELS\PulsePickup_a.3d DATAFILE=MODELS\PulsePickup_d.3d X=0 Y=0 Z=0
00082	#exec MESH ORIGIN MESH=PulsePickup X=0 Y=0 Z=0
00083	#exec MESH SEQUENCE MESH=PulsePickup SEQ=All                      STARTFRAME=0 NUMFRAMES=1
00084	#exec MESHMAP NEW   MESHMAP=PulsePickup MESH=PulsePickup
00085	#exec MESHMAP SCALE MESHMAP=PulsePickup X=0.08 Y=0.08 Z=0.16
00086	#exec TEXTURE IMPORT NAME=JPulsePickup_01 FILE=MODELS\P-pickup.pcx GROUP=Skins LODSET=2
00087	#exec MESHMAP SETTEXTURE MESHMAP=PulsePickup NUM=1 TEXTURE=JPulsePickup_01
00088	
00089	#exec AUDIO IMPORT FILE="Sounds\Pulsegun\PulseFire.WAV" NAME="PulseFire" GROUP="PulseGun"
00090	#exec AUDIO IMPORT FILE="Sounds\Pulsegun\PulseBolt.WAV" NAME="PulseBolt" GROUP="PulseGun"
00091	#exec AUDIO IMPORT FILE="Sounds\Pulsegun\PulseDown.WAV" NAME="PulseDown" GROUP="PulseGun"
00092	#exec AUDIO IMPORT FILE="Sounds\Pulsegun\PulsePickup.WAV" NAME="PulsePickup" GROUP="PulseGun"
00093	
00094	#exec TEXTURE IMPORT NAME=IconPulse FILE=TEXTURES\HUD\WpnPulse.PCX GROUP="Icons" MIPS=OFF
00095	#exec TEXTURE IMPORT NAME=UsePulse FILE=TEXTURES\HUD\UsePulse.PCX GROUP="Icons" MIPS=OFF
00096	
00097	#exec MESH IMPORT MESH=muzzPF3 ANIVFILE=MODELS\muzzle2_a.3d DATAFILE=MODELS\muzzle2_d.3d X=0 Y=0 Z=0
00098	#exec MESH LODPARAMS MESH=muzzPF3 MINVERTS=8 STRENGTH=0.7 ZDISP=800.0
00099	#exec MESH ORIGIN MESH=muzzPF3 X=0 Y=890 Z=-10 YAW=64
00100	#exec MESH SEQUENCE MESH=muzzPF3 SEQ=All                      STARTFRAME=0 NUMFRAMES=9
00101	#exec MESHMAP NEW   MESHMAP=muzzPF3 MESH=muzzPF3
00102	#exec MESHMAP SCALE MESHMAP=muzzPF3 X=0.08 Y=0.05 Z=0.16
00103	#exec TEXTURE IMPORT NAME=MuzzyPulse FILE=MODELS\Pulseflash.PCX GROUP=Skins
00104	
00105	
00106	
00107	var float Angle, Count;
00108	var PBolt PlasmaBeam;
00109	var() sound DownSound;
00110	
00111	simulated event RenderOverlays( canvas Canvas )
00112	{
00113		Texture'Ammoled'.NotifyActor = Self;
00114		Super.RenderOverlays(Canvas);
00115		Texture'Ammoled'.NotifyActor = None;
00116	}
00117	
00118	simulated function Destroyed()
00119	{
00120		if ( PlasmaBeam != None )
00121			PlasmaBeam.Destroy();
00122	
00123		Super.Destroyed();
00124	}
00125	
00126	simulated function AnimEnd()
00127	{
00128		if ( (Level.NetMode == NM_Client) && (Mesh != PickupViewMesh) )
00129		{
00130			if ( AnimSequence == 'SpinDown' )
00131				AnimSequence = 'Idle';
00132			PlayIdleAnim();
00133		}
00134	}
00135	// set which hand is holding weapon
00136	function setHand(float Hand)
00137	{
00138		if ( Hand == 2 )
00139		{
00140			FireOffset.Y = 0;
00141			bHideWeapon = true;
00142			if ( PlasmaBeam != None )
00143				PlasmaBeam.bCenter = true;
00144			return;
00145		}
00146		else
00147			bHideWeapon = false;
00148		PlayerViewOffset = Default.PlayerViewOffset * 100;
00149		if ( Hand == 1 )
00150		{
00151			if ( PlasmaBeam != None )
00152			{
00153				PlasmaBeam.bCenter = false;
00154				PlasmaBeam.bRight = false;
00155			}
00156			FireOffset.Y = Default.FireOffset.Y;
00157			Mesh = mesh(DynamicLoadObject("Botpack.PulseGunL", class'Mesh'));
00158		}
00159		else
00160		{
00161			if ( PlasmaBeam != None )
00162			{
00163				PlasmaBeam.bCenter = false;
00164				PlasmaBeam.bRight = true;
00165			}
00166			FireOffset.Y = -1 * Default.FireOffset.Y;
00167			Mesh = mesh'PulseGunR';
00168		}
00169	}
00170	
00171	// return delta to combat style
00172	function float SuggestAttackStyle()
00173	{
00174		local float EnemyDist;
00175	
00176		EnemyDist = VSize(Pawn(Owner).Enemy.Location - Owner.Location);
00177		if ( EnemyDist < 1000 )
00178			return 0.4;
00179		else
00180			return 0;
00181	}
00182	
00183	function float RateSelf( out int bUseAltMode )
00184	{
00185		local Pawn P;
00186	
00187		if ( AmmoType.AmmoAmount <=0 )
00188			return -2;
00189	
00190		P = Pawn(Owner);
00191		if ( (P.Enemy == None) || (Owner.IsA('Bot') && Bot(Owner).bQuickFire) )
00192		{
00193			bUseAltMode = 0;
00194			return AIRating;
00195		}
00196	
00197		if ( P.Enemy.IsA('StationaryPawn') )
00198		{
00199			bUseAltMode = 0;
00200			return (AIRating + 0.4);
00201		}
00202		else
00203			bUseAltMode = int( 700 > VSize(P.Enemy.Location - Owner.Location) );
00204	
00205		AIRating *= FMin(Pawn(Owner).DamageScaling, 1.5);
00206		return AIRating;
00207	}
00208	
00209	simulated function PlayFiring()
00210	{
00211		FlashCount++;
00212		AmbientSound = FireSound;
00213		SoundVolume = Pawn(Owner).SoundDampening*255;
00214		LoopAnim( 'shootLOOP', 1 + 0.5 * FireAdjust, 0.0);
00215		bWarnTarget = (FRand() < 0.2);
00216	}
00217	
00218	simulated function PlayAltFiring()
00219	{
00220		
00221		AmbientSound = AltFireSound;
00222		if ( (AnimSequence == 'BoltLoop') || (AnimSequence == 'BoltStart') )		
00223			PlayAnim( 'boltloop');
00224		else
00225			PlayAnim( 'boltstart' );
00226	}
00227	
00228	function AltFire( float Value )
00229	{
00230		if ( AmmoType == None )
00231		{
00232			// ammocheck
00233			GiveAmmo(Pawn(Owner));
00234		}
00235		if (AmmoType.UseAmmo(1))
00236		{
00237			GotoState('AltFiring');
00238			bCanClientFire = true;
00239			bPointing=True;
00240			Pawn(Owner).PlayRecoil(FiringSpeed);
00241			ClientAltFire(value);
00242			if ( PlasmaBeam == None )
00243			{
00244				PlasmaBeam = PBolt(ProjectileFire(AltProjectileClass, AltProjectileSpeed, bAltWarnTarget));
00245				if ( FireOffset.Y == 0 )
00246					PlasmaBeam.bCenter = true;
00247				else if ( Mesh == mesh'PulseGunR' )
00248					PlasmaBeam.bRight = false;
00249			}
00250		}
00251	}
00252	
00253	simulated event RenderTexture(ScriptedTexture Tex)
00254	{
00255		local Color C;
00256		local string Temp;
00257		
00258		Temp = String(AmmoType.AmmoAmount);
00259	
00260		while(Len(Temp) < 3) Temp = "0"$Temp;
00261	
00262		Tex.DrawTile( 30, 100, (Min(AmmoType.AmmoAmount,AmmoType.Default.AmmoAmount)*196)/AmmoType.Default.AmmoAmount, 10, 0, 0, 1, 1, Texture'AmmoCountBar', False );
00263	
00264		if(AmmoType.AmmoAmount < 10)
00265		{
00266			C.R = 255;
00267			C.G = 0;
00268			C.B = 0;	
00269		}
00270		else
00271		{
00272			C.R = 0;
00273			C.G = 0;
00274			C.B = 255;
00275		}
00276	
00277		Tex.DrawColoredText( 56, 14, Temp, Font'LEDFont', C );	
00278	}
00279	
00280	///////////////////////////////////////////////////////
00281	state NormalFire
00282	{
00283		ignores AnimEnd;
00284	
00285		function Projectile ProjectileFire(class<projectile> ProjClass, float ProjSpeed, bool bWarn)
00286		{
00287			local Vector Start, X,Y,Z;
00288	
00289			Owner.MakeNoise(Pawn(Owner).SoundDampening);
00290			GetAxes(Pawn(owner).ViewRotation,X,Y,Z);
00291			Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; 
00292			AdjustedAim = pawn(owner).AdjustAim(ProjSpeed, Start, AimError, True, bWarn);	
00293			Start = Start - Sin(Angle)*Y*4 + (Cos(Angle)*4 - 10.78)*Z;
00294			Angle += 1.8;
00295			return Spawn(ProjClass,,, Start,AdjustedAim);	
00296		}
00297	
00298		function Tick( float DeltaTime )
00299		{
00300			if (Owner==None) 
00301				GotoState('Pickup');
00302		}
00303	
00304		function BeginState()
00305		{
00306			Super.BeginState();
00307			Angle = 0;
00308			AmbientGlow = 200;
00309		}
00310	
00311		function EndState()
00312		{
00313			PlaySpinDown();
00314			AmbientSound = None;
00315			AmbientGlow = 0;	
00316			OldFlashCount = FlashCount;	
00317			Super.EndState();
00318		}
00319	
00320	Begin:
00321		Sleep(0.18);
00322		Finish();
00323	}
00324	
00325	simulated function PlaySpinDown()
00326	{
00327		if ( (Mesh != PickupViewMesh) && (Owner != None) )
00328		{
00329			PlayAnim('Spindown', 1.0, 0.0);
00330			Owner.PlayOwnedSound(DownSound, SLOT_None,1.0*Pawn(Owner).SoundDampening);
00331		}
00332	}	
00333	
00334	state ClientFiring
00335	{
00336		simulated function Tick( float DeltaTime )
00337		{
00338			if ( (Pawn(Owner) != None) && (Pawn(Owner).bFire != 0) )
00339				AmbientSound = FireSound;
00340			else
00341				AmbientSound = None;
00342		}
00343	
00344		simulated function AnimEnd()
00345		{
00346			if ( (AmmoType != None) && (AmmoType.AmmoAmount <= 0) )
00347			{
00348				PlaySpinDown();
00349				GotoState('');
00350			}
00351			else if ( !bCanClientFire )
00352				GotoState('');
00353			else if ( Pawn(Owner) == None )
00354			{
00355				PlaySpinDown();
00356				GotoState('');
00357			}
00358			else if ( Pawn(Owner).bFire != 0 )
00359				Global.ClientFire(0);
00360			else if ( Pawn(Owner).bAltFire != 0 )
00361				Global.ClientAltFire(0);
00362			else
00363			{
00364				PlaySpinDown();
00365				GotoState('');
00366			}
00367		}
00368	}
00369	
00370	///////////////////////////////////////////////////////////////
00371	state ClientAltFiring
00372	{
00373		simulated function AnimEnd()
00374		{
00375			if ( AmmoType.AmmoAmount <= 0 )
00376			{
00377				PlayIdleAnim();
00378				GotoState('');
00379			}
00380			else if ( !bCanClientFire )
00381				GotoState('');
00382			else if ( Pawn(Owner) == None )
00383			{
00384				PlayIdleAnim();
00385				GotoState('');
00386			}
00387			else if ( Pawn(Owner).bAltFire != 0 )
00388				LoopAnim('BoltLoop');
00389			else if ( Pawn(Owner).bFire != 0 )
00390				Global.ClientFire(0);
00391			else
00392			{
00393				PlayIdleAnim();
00394				GotoState('');
00395			}
00396		}
00397	}
00398	
00399	state AltFiring
00400	{
00401		ignores AnimEnd;
00402	
00403		function Tick(float DeltaTime)
00404		{
00405			local Pawn P;
00406	
00407			P = Pawn(Owner);
00408			if ( P == None )
00409			{
00410				GotoState('Pickup');
00411				return;
00412			}
00413			if ( (P.bAltFire == 0) || (P.IsA('Bot')
00414						&& ((P.Enemy == None) || (Level.TimeSeconds - Bot(P).LastSeenTime > 5))) )
00415			{
00416				P.bAltFire = 0;
00417				Finish();
00418				return;
00419			}
00420	
00421			Count += Deltatime;
00422			if ( Count > 0.24 )
00423			{
00424				if ( Owner.IsA('PlayerPawn') )
00425					PlayerPawn(Owner).ClientInstantFlash( InstFlash,InstFog);
00426				if ( Affector != None )
00427					Affector.FireEffect();
00428				Count -= 0.24;
00429				if ( !AmmoType.UseAmmo(1) )
00430					Finish();
00431			}
00432		}
00433		
00434		function EndState()
00435		{
00436			AmbientGlow = 0;
00437			AmbientSound = None;
00438			if ( PlasmaBeam != None )
00439			{
00440				PlasmaBeam.Destroy();
00441				PlasmaBeam = None;
00442			}
00443			Super.EndState();
00444		}
00445	
00446	Begin:
00447		AmbientGlow = 200;
00448		FinishAnim();	
00449		LoopAnim( 'boltloop');
00450	}
00451	
00452	state Idle
00453	{
00454	Begin:
00455		bPointing=False;
00456		if ( (AmmoType != None) && (AmmoType.AmmoAmount<=0) ) 
00457			Pawn(Owner).SwitchToBestWeapon();  //Goto Weapon that has Ammo
00458		if ( Pawn(Owner).bFire!=0 ) Fire(0.0);
00459		if ( Pawn(Owner).bAltFire!=0 ) AltFire(0.0);	
00460	
00461		Disable('AnimEnd');
00462		PlayIdleAnim();
00463	}
00464	
00465	///////////////////////////////////////////////////////////
00466	simulated function PlayIdleAnim()
00467	{
00468		if ( Mesh == PickupViewMesh )
00469			return;
00470	
00471		if ( (AnimSequence == 'BoltLoop') || (AnimSequence == 'BoltStart') )
00472			PlayAnim('BoltEnd');		
00473		else if ( AnimSequence != 'SpinDown' )
00474			TweenAnim('Idle', 0.1);
00475	}
00476	
00477	simulated function TweenDown()
00478	{
00479		if ( IsAnimating() && (AnimSequence != '') && (GetAnimGroup(AnimSequence) == 'Select') )
00480			TweenAnim( AnimSequence, AnimFrame * 0.4 );
00481		else
00482			TweenAnim('Down', 0.26);
00483	}
00484	
00485	defaultproperties
00486	{
00487	     DownSound=Sound'Botpack.PulseGun.PulseDown'
00488	     WeaponDescription="Classification: Plasma Rifle\n\nPrimary Fire: Medium sized, fast moving plasma balls are fired at a fast rate of fire.\n\nSecondary Fire: A bolt of green lightning is expelled for 100 meters, which will shock all opponents.\n\nTechniques: Firing and keeping the secondary fire's lightning on an opponent will melt them in seconds."
00489	     InstFlash=-0.150000
00490	     InstFog=(X=139.000000,Y=218.000000,Z=72.000000)
00491	     AmmoName=Class'Botpack.PAmmo'
00492	     PickupAmmoCount=60
00493	     bRapidFire=True
00494	     FireOffset=(X=15.000000,Y=-15.000000,Z=2.000000)
00495	     ProjectileClass=Class'Botpack.PlasmaSphere'
00496	     AltProjectileClass=Class'Botpack.StarterBolt'
00497	     shakemag=135.000000
00498	     shakevert=8.000000
00499	     AIRating=0.700000
00500	     RefireRate=0.950000
00501	     AltRefireRate=0.990000
00502	     FireSound=Sound'Botpack.PulseGun.PulseFire'
00503	     AltFireSound=Sound'Botpack.PulseGun.PulseBolt'
00504	     SelectSound=Sound'Botpack.PulseGun.PulsePickup'
00505	     MessageNoAmmo=" has no Plasma."
00506	     DeathMessage="%o ate %k's burning plasma death."
00507	     NameColor=(R=128,B=128)
00508	     FlashLength=0.020000
00509	     AutoSwitchPriority=5
00510	     InventoryGroup=5
00511	     PickupMessage="You got a Pulse Gun"
00512	     ItemName="Pulse Gun"
00513	     PlayerViewOffset=(X=1.500000,Z=-2.000000)
00514	     PlayerViewMesh=LodMesh'Botpack.PulseGunR'
00515	     PickupViewMesh=LodMesh'Botpack.PulsePickup'
00516	     ThirdPersonMesh=LodMesh'Botpack.PulseGun3rd'
00517	     ThirdPersonScale=0.400000
00518	     StatusIcon=Texture'Botpack.Icons.UsePulse'
00519	     bMuzzleFlashParticles=True
00520	     MuzzleFlashStyle=STY_Translucent
00521	     MuzzleFlashMesh=LodMesh'Botpack.muzzPF3'
00522	     MuzzleFlashScale=0.400000
00523	     MuzzleFlashTexture=Texture'Botpack.Skins.MuzzyPulse'
00524	     PickupSound=Sound'UnrealShare.Pickups.WeaponPickup'
00525	     Icon=Texture'Botpack.Icons.UsePulse'
00526	     Mesh=LodMesh'Botpack.PulsePickup'
00527	     bNoSmooth=False
00528	     SoundRadius=64
00529	     SoundVolume=255
00530	     CollisionRadius=32.000000
00531	}

End Source Code