Core.Object | +--Engine.Actor | +--Engine.Inventory | +--Engine.Weapon | +--Botpack.TournamentWeapon | +--Botpack.PulseGun
Angle,
Count
sound
DownSound
PBolt
PlasmaBeam
void
AltFire(float Value)
simulated
AnimEnd()
Destroyed()
PlayAltFiring()
PlayFiring()
float
RateSelf(out int)
SuggestAttackStyle()
// return delta to combat style
setHand(float Hand)
// set which hand is holding weapon
EndState()
Tick(float DeltaTime)
BeginState()
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 }