Core.Object | +--Engine.Actor | +--Engine.Inventory | +--Engine.Weapon | +--UnrealI.Minigun
ShotAccuracy,
Count
bOutOfAmmo,
bFiredShot
OverHeatLight
s
void
AltFire(float Value)
Fire(float Value)
GenerateBullet()
PlayAltFiring()
PlayFiring()
ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)
BeginState()
EndState()
AnimEnd()
Tick(float DeltaTime)
AltFire(float F)
Fire(float F)
00001 //============================================================================= 00002 // Minigun. 00003 //============================================================================= 00004 class Minigun extends Weapon; 00005 00006 #exec AUDIO IMPORT FILE="..\UnrealShare\Sounds\General\Bulletr2.WAV" NAME="Bulletr2" GROUP="General" 00007 00008 #exec MESH IMPORT MESH=minigunM ANIVFILE=MODELS\smini_a.3D DATAFILE=MODELS\smini_d.3D X=0 Y=0 Z=0 00009 #exec MESH ORIGIN MESH=minigunM X=0 Y=0 Z=0 YAW=64 PITCH=-7 ROLL=-62 00010 #exec MESH SEQUENCE MESH=minigunM SEQ=All STARTFRAME=0 NUMFRAMES=119 00011 #exec MESH SEQUENCE MESH=minigunM SEQ=Select STARTFRAME=0 NUMFRAMES=23 RATE=34 GROUP=Select 00012 #exec MESH SEQUENCE MESH=minigunM SEQ=Still STARTFRAME=23 NUMFRAMES=1 00013 #exec MESH SEQUENCE MESH=minigunM SEQ=Fire STARTFRAME=24 NUMFRAMES=30 00014 #exec MESH SEQUENCE MESH=minigunM SEQ=Wind STARTFRAME=24 NUMFRAMES=15 00015 #exec MESH SEQUENCE MESH=minigunM SEQ=Shoot1 STARTFRAME=39 NUMFRAMES=15 00016 #exec MESH SEQUENCE MESH=minigunM SEQ=Shoot2 STARTFRAME=54 NUMFRAMES=20 00017 #exec MESH SEQUENCE MESH=minigunM SEQ=Unwind STARTFRAME=74 NUMFRAMES=15 00018 #exec MESH SEQUENCE MESH=minigunM SEQ=Cock STARTFRAME=89 NUMFRAMES=20 00019 #exec MESH SEQUENCE MESH=minigunM SEQ=Down STARTFRAME=109 NUMFRAMES=10 00020 #exec TEXTURE IMPORT NAME=minigun1 FILE=MODELS\smini.PCX GROUP="Skins" 00021 #exec OBJ LOAD FILE=..\UnrealShare\Textures\fireeffect13.utx PACKAGE=UNREALI.Effect13 00022 #exec MESHMAP SCALE MESHMAP=minigunM X=0.0055 Y=0.0055 Z=0.011 00023 #exec MESHMAP SETTEXTURE MESHMAP=minigunM NUM=1 TEXTURE=minigun1 00024 #exec MESHMAP SETTEXTURE MESHMAP=minigunM NUM=0 TEXTURE=Unreali.Effect13.FireEffect13 00025 00026 #exec MESH IMPORT MESH=minipick ANIVFILE=MODELS\minipi_a.3D DATAFILE=MODELS\minipi_d.3D X=0 Y=0 Z=0 00027 #exec MESH ORIGIN MESH=minipick X=0 Y=-100 Z=-40 YAW=64 PITCH=0 ROLL=0 00028 #exec MESH SEQUENCE MESH=minipick SEQ=All STARTFRAME=0 NUMFRAMES=1 00029 #exec TEXTURE IMPORT NAME=minigun1 FILE=MODELS\smini.PCX GROUP="Skins" 00030 #exec MESHMAP SCALE MESHMAP=minipick X=0.04 Y=0.04 Z=0.08 00031 #exec MESHMAP SETTEXTURE MESHMAP=minipick NUM=1 TEXTURE=minigun1 00032 00033 #exec MESH IMPORT MESH=SMini3 ANIVFILE=MODELS\Smini3_a.3D DATAFILE=MODELS\smini3_d.3D X=0 Y=0 Z=0 00034 #exec MESH ORIGIN MESH=SMini3 X=0 Y=60 Z=0 YAW=64 ROLL=-7 00035 #exec MESH SEQUENCE MESH=SMini3 SEQ=All STARTFRAME=0 NUMFRAMES=11 00036 #exec MESH SEQUENCE MESH=SMini3 SEQ=Fire STARTFRAME=0 NUMFRAMES=10 RATE=20.0 00037 #exec MESH SEQUENCE MESH=SMini3 SEQ=Shoot1 STARTFRAME=0 NUMFRAMES=10 RATE=20.0 00038 #exec MESH SEQUENCE MESH=SMini3 SEQ=Shoot2 STARTFRAME=0 NUMFRAMES=10 RATE=20.0 00039 #exec MESH SEQUENCE MESH=SMini3 SEQ=Still STARTFRAME=10 NUMFRAMES=1 00040 #exec MESH SEQUENCE MESH=SMini3 SEQ=Select STARTFRAME=10 NUMFRAMES=1 00041 #exec MESH SEQUENCE MESH=SMini3 SEQ=Wind STARTFRAME=10 NUMFRAMES=1 00042 #exec MESH SEQUENCE MESH=SMini3 SEQ=UnWind STARTFRAME=10 NUMFRAMES=1 00043 #exec MESH SEQUENCE MESH=SMini3 SEQ=Cock STARTFRAME=10 NUMFRAMES=1 00044 #exec MESH SEQUENCE MESH=SMini3 SEQ=Down STARTFRAME=10 NUMFRAMES=1 00045 #exec TEXTURE IMPORT NAME=minigun1 FILE=MODELS\smini.PCX GROUP="Skins" 00046 #exec OBJ LOAD FILE=..\UnrealShare\textures\FireEffect18.utx PACKAGE=UNREALShare.Effect18 00047 #exec MESHMAP SCALE MESHMAP=SMini3 X=0.30 Y=0.30 Z=0.6 00048 #exec MESHMAP SETTEXTURE MESHMAP=SMini3 NUM=1 TEXTURE=minigun1 00049 #exec MESHMAP SETTEXTURE MESHMAP=SMini3 NUM=0 TEXTURE=UnrealShare.Effect18.FireEffect18 00050 00051 #exec AUDIO IMPORT FILE="Sounds\minigun\MPickup2.WAV" NAME="MiniSelect" GROUP="Minigun" 00052 #exec AUDIO IMPORT FILE="Sounds\minigun\RegF1.WAV" NAME="RegF1" GROUP="Minigun" 00053 #exec AUDIO IMPORT FILE="Sounds\minigun\WindD2.WAV" NAME="WindD2" GROUP="Minigun" 00054 #exec AUDIO IMPORT FILE="Sounds\minigun\AltF1.WAV" NAME="AltF1" GROUP="Minigun" 00055 00056 var float ShotAccuracy, Count; 00057 var bool bOutOfAmmo, bFiredShot; 00058 var OverHeatLight s; 00059 00060 function GenerateBullet() 00061 { 00062 if ( LightType == LT_None ) 00063 LightType = LT_Steady; 00064 else 00065 LightType = LT_None; 00066 bFiredShot = true; 00067 if ( AmmoType.UseAmmo(1) ) 00068 TraceFire(ShotAccuracy); 00069 else 00070 GotoState('FinishFire'); 00071 } 00072 00073 function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) 00074 { 00075 local int rndDam; 00076 00077 if ( PlayerPawn(Owner) != None ) 00078 PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); 00079 00080 if (Other == Level) 00081 Spawn(class'LightWallHitEffect',,, HitLocation+HitNormal*9, Rotator(HitNormal)); 00082 else if ( (Other!=self) && (Other!=Owner) && (Other != None) ) 00083 { 00084 if ( !Other.IsA('Pawn') && !Other.IsA('Carcass') ) 00085 spawn(class'SpriteSmokePuff',,,HitLocation+HitNormal*9); 00086 if ( Other.IsA('ScriptedPawn') && (FRand() < 0.2) ) 00087 Pawn(Other).WarnTarget(Pawn(Owner), 500, X); 00088 rndDam = 8 + Rand(6); 00089 if ( FRand() < 0.2 ) 00090 X *= 2; 00091 Other.TakeDamage(rndDam, Pawn(Owner), HitLocation, rndDam*500.0*X, 'shot'); 00092 } 00093 } 00094 00095 function Fire( float Value ) 00096 { 00097 Enable('Tick'); 00098 if ( (Count<1) && AmmoType.UseAmmo(1) ) 00099 { 00100 CheckVisibility(); 00101 if ( PlayerPawn(Owner) != None ) 00102 PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); 00103 AmbientSound = FireSound; 00104 SoundVolume = 255*Pawn(Owner).SoundDampening; 00105 bPointing=True; 00106 ShotAccuracy = 0.1; 00107 PlayFiring(); 00108 GotoState('NormalFire'); 00109 } 00110 else GoToState('Idle'); 00111 } 00112 00113 function AltFire( float Value ) 00114 { 00115 Enable('Tick'); 00116 if ( (Count<1) && AmmoType.UseAmmo(1) ) 00117 { 00118 CheckVisibility(); 00119 bPointing=True; 00120 ShotAccuracy = 0.8; 00121 AmbientSound = FireSound; 00122 SoundVolume = 255*Pawn(Owner).SoundDampening; 00123 PlayAltFiring(); 00124 GoToState('AltFiring'); 00125 } 00126 else GoToState('Idle'); 00127 } 00128 00129 00130 function PlayFiring() 00131 { 00132 LoopAnim('Shoot1',0.8, 0.05); 00133 } 00134 00135 function PlayAltFiring() 00136 { 00137 PlayAnim('Shoot1',0.8, 0.05); 00138 } 00139 00140 //////////////////////////////////////////////////////// 00141 state FinishFire 00142 { 00143 function Fire(float F) {} 00144 function AltFire(float F) {} 00145 00146 function BeginState() 00147 { 00148 local float Damping; 00149 00150 if ( Pawn(Owner) == None ) 00151 Damping = 1; 00152 else 00153 Damping = Pawn(Owner).SoundDampening; 00154 00155 PlaySound(Misc1Sound, SLOT_Misc, 3.0*Damping); //Finish firing, power down 00156 } 00157 00158 Begin: 00159 PlayAnim('UnWind',0.8, 0.05); 00160 FinishAnim(); 00161 Finish(); 00162 } 00163 00164 /////////////////////////////////////////////////////// 00165 state NormalFire 00166 { 00167 function Tick( float DeltaTime ) 00168 { 00169 if (Owner==None) 00170 AmbientSound = None; 00171 else 00172 SetLocation(Owner.Location); 00173 } 00174 00175 function AnimEnd() 00176 { 00177 if (Pawn(Owner).Weapon != self) GotoState(''); 00178 else if (Pawn(Owner).bFire!=0 && AmmoType.AmmoAmount>0) 00179 { 00180 if ( (PlayerPawn(Owner) != None) || (FRand() < ReFireRate) ) 00181 Global.Fire(0); 00182 else 00183 { 00184 Pawn(Owner).bFire = 0; 00185 GotoState('FinishFire'); 00186 } 00187 } 00188 else if ( Pawn(Owner).bAltFire!=0 && AmmoType.AmmoAmount>0) 00189 Global.AltFire(0); 00190 else 00191 GotoState('FinishFire'); 00192 } 00193 00194 function EndState() 00195 { 00196 LightType = LT_None; 00197 AmbientSound = None; 00198 Super.EndState(); 00199 } 00200 00201 Begin: 00202 SetLocation(Owner.Location); 00203 Sleep(0.13); 00204 GenerateBullet(); 00205 Goto('Begin'); 00206 } 00207 00208 //////////////////////////////////////////////////////// 00209 state AltFiring 00210 { 00211 function Tick( float DeltaTime ) 00212 { 00213 if (Owner==None) 00214 { 00215 AmbientSound = None; 00216 GotoState('Pickup'); 00217 } 00218 else 00219 SetLocation(Owner.Location); 00220 if ( (PlayerPawn(Owner) == None) && bFiredShot && (FRand() < DeltaTime/AltReFireRate) ) 00221 Pawn(Owner).bAltFire = 0; 00222 if ( bFiredShot && ((pawn(Owner).bAltFire==0) || bOutOfAmmo) ) 00223 GoToState('FinishFire'); 00224 } 00225 00226 function AnimEnd() 00227 { 00228 if ( (AnimSequence != 'Shoot2') || !bAnimLoop ) 00229 { 00230 AmbientSound = AltFireSound; 00231 SoundVolume = 255*Pawn(Owner).SoundDampening; 00232 LoopAnim('Shoot2',0.8); 00233 } 00234 } 00235 00236 function EndState() 00237 { 00238 LightType = LT_None; 00239 AmbientSound = None; 00240 Super.EndState(); 00241 } 00242 00243 function BeginState() 00244 { 00245 Super.BeginState(); 00246 bFiredShot = false; 00247 } 00248 00249 Begin: 00250 SetLocation(Owner.Location); 00251 Sleep(0.13); 00252 GenerateBullet(); 00253 if ( AnimSequence == 'Shoot2' ) 00254 Goto('FastShoot'); 00255 Goto('Begin'); 00256 FastShoot: 00257 Sleep(0.07); 00258 GenerateBullet(); 00259 Goto('FastShoot'); 00260 } 00261 00262 00263 00264 /////////////////////////////////////////////////////////// 00265 state Idle 00266 { 00267 00268 00269 Begin: 00270 if (Pawn(Owner).bFire!=0 && AmmoType.AmmoAmount>0) Fire(0.0); 00271 if (Pawn(Owner).bAltFire!=0 && AmmoType.AmmoAmount>0) AltFire(0.0); 00272 PlayAnim('Still'); 00273 bPointing=False; 00274 if ( (AmmoType != None) && (AmmoType.AmmoAmount<=0) ) 00275 Pawn(Owner).SwitchToBestWeapon(); //Goto Weapon that has Ammo 00276 Disable('AnimEnd'); 00277 PlayIdleAnim(); 00278 } 00279 00280 defaultproperties 00281 { 00282 AmmoName=Class'UnrealShare.ShellBox' 00283 PickupAmmoCount=50 00284 bInstantHit=True 00285 bAltInstantHit=True 00286 FireOffset=(Y=-5.000000,Z=-4.000000) 00287 shakemag=135.000000 00288 shakevert=8.000000 00289 AIRating=0.600000 00290 RefireRate=0.900000 00291 AltRefireRate=0.930000 00292 FireSound=Sound'UnrealI.Minigun.RegF1' 00293 AltFireSound=Sound'UnrealI.Minigun.AltF1' 00294 SelectSound=Sound'UnrealI.Minigun.MiniSelect' 00295 Misc1Sound=Sound'UnrealI.Minigun.WindD2' 00296 DeathMessage="%k's %w turned %o into a leaky piece of meat." 00297 AutoSwitchPriority=10 00298 InventoryGroup=10 00299 PickupMessage="You got the Minigun" 00300 ItemName="Minigun" 00301 PlayerViewOffset=(X=5.600000,Y=-1.500000,Z=-1.800000) 00302 PlayerViewMesh=LodMesh'UnrealI.minigunM' 00303 PickupViewMesh=LodMesh'UnrealI.minipick' 00304 ThirdPersonMesh=LodMesh'UnrealI.SMini3' 00305 PickupSound=Sound'UnrealShare.Pickups.WeaponPickup' 00306 Mesh=LodMesh'UnrealI.minipick' 00307 bNoSmooth=False 00308 SoundRadius=64 00309 SoundVolume=255 00310 CollisionRadius=28.000000 00311 CollisionHeight=8.000000 00312 LightEffect=LE_NonIncidence 00313 LightBrightness=250 00314 LightHue=28 00315 LightSaturation=32 00316 LightRadius=6 00317 }