Core.Object | +--Engine.Actor | +--Engine.Inventory | +--Engine.Weapon | +--UnrealShare.AutoMag
float
AltAccuracy
int
ClipCount
hitdamage
void
AltFire(float Value)
Finish()
PlayAltFiring()
PlayFiring()
PlayPostSelect()
ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)
setHand(float Hand)
// set which hand is holding weapon
Timer()
bool
PutDown()
AnimEnd()
00001 //============================================================================= 00002 // AutoMag. 00003 //============================================================================= 00004 class AutoMag extends Weapon; 00005 00006 // pickup version 00007 #exec MESH IMPORT MESH=AutoMagPickup ANIVFILE=MODELS\pislow_a.3D DATAFILE=MODELS\pislow_d.3D X=0 Y=0 Z=0 00008 #exec MESH ORIGIN MESH=AutoMagPickup X=0 Y=0 Z=0 YAW=64 00009 #exec MESH SEQUENCE MESH=AutoMagPickup SEQ=All STARTFRAME=0 NUMFRAMES=1 00010 #exec TEXTURE IMPORT NAME=Automa1 FILE=MODELS\pistol.PCX GROUP="Skins" 00011 #exec MESHMAP SCALE MESHMAP=AutoMagPickup X=0.04 Y=0.04 Z=0.08 00012 #exec MESHMAP SETTEXTURE MESHMAP=AutoMagPickup NUM=1 TEXTURE=Automa1 00013 00014 // 3rd person perspective version 00015 #exec MESH IMPORT MESH=auto3rd ANIVFILE=MODELS\pis3rd_a.3D DATAFILE=MODELS\pis3rd_d.3D X=0 Y=0 Z=0 00016 #exec MESH ORIGIN MESH=auto3rd X=0 Y=-60 Z=-220 YAW=64 PITCH=0 ROLL=-72 00017 #exec MESH SEQUENCE MESH=auto3rd SEQ=All STARTFRAME=0 NUMFRAMES=5 00018 #exec MESH SEQUENCE MESH=auto3rd SEQ=Still STARTFRAME=0 NUMFRAMES=1 00019 #exec MESH SEQUENCE MESH=auto3rd SEQ=Shoot STARTFRAME=1 NUMFRAMES=4 RATE=30.0 00020 #exec MESH SEQUENCE MESH=auto3rd SEQ=Shot2b STARTFRAME=1 NUMFRAMES=4 RATE=30.0 00021 #exec MESH SEQUENCE MESH=auto3rd SEQ=Shot2a STARTFRAME=1 NUMFRAMES=4 RATE=30.0 00022 #exec TEXTURE IMPORT NAME=Automa1 FILE=MODELS\pistol.PCX GROUP="Skins" 00023 #exec OBJ LOAD FILE=textures\FireEffect18.utx PACKAGE=UnrealShare.Effect18 00024 #exec MESHMAP SCALE MESHMAP=auto3rd X=0.02 Y=0.02 Z=0.04 00025 #exec MESHMAP SETTEXTURE MESHMAP=auto3rd NUM=1 TEXTURE=Automa1 00026 #exec MESHMAP SETTEXTURE MESHMAP=auto3rd NUM=0 TEXTURE=UnrealShare.Effect18.FireEffect18 00027 00028 // player view version 00029 #exec MESH IMPORT MESH=AutoMagL ANIVFILE=MODELS\pistol_a.3D DATAFILE=MODELS\pistol_d.3D X=0 Y=0 Z=0 00030 #exec MESH ORIGIN MESH=AutoMagL X=0 Y=0 Z=0 YAW=64 ROLL=-64 00031 #exec MESH SEQUENCE MESH=AutoMagL SEQ=All STARTFRAME=0 NUMFRAMES=190 00032 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Still STARTFRAME=0 NUMFRAMES=1 00033 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Shoot STARTFRAME=0 NUMFRAMES=4 00034 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Shoot0 STARTFRAME=6 NUMFRAMES=3 00035 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Shoot1 STARTFRAME=7 NUMFRAMES=7 00036 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Shoot2 STARTFRAME=15 NUMFRAMES=5 00037 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Shot2a STARTFRAME=20 NUMFRAMES=5 00038 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Shot2b STARTFRAME=29 NUMFRAMES=3 00039 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Shot2c STARTFRAME=45 NUMFRAMES=5 00040 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Twiddle STARTFRAME=50 NUMFRAMES=25 00041 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Sway1 STARTFRAME=50 NUMFRAMES=2 00042 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Eject STARTFRAME=75 NUMFRAMES=25 00043 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Down STARTFRAME=100 NUMFRAMES=5 00044 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Select STARTFRAME=105 NUMFRAMES=30 RATE=40 GROUP=Select 00045 #exec MESH SEQUENCE MESH=AutoMagL SEQ=T1 STARTFRAME=135 NUMFRAMES=5 00046 #exec MESH SEQUENCE MESH=AutoMagL SEQ=Twirl STARTFRAME=140 NUMFRAMES=45 00047 #exec MESH SEQUENCE MESH=AutoMagL SEQ=T2 STARTFRAME=185 NUMFRAMES=5 00048 #exec TEXTURE IMPORT NAME=Automa1 FILE=MODELS\pistol.PCX GROUP="Skins" 00049 #exec OBJ LOAD FILE=textures\FireEffect18.utx PACKAGE=UnrealShare.Effect18 00050 #exec MESHMAP SCALE MESHMAP=AutoMagL X=0.007 Y=0.005 Z=0.01 00051 #exec MESHMAP SETTEXTURE MESHMAP=AutoMagL NUM=1 TEXTURE=Automa1 00052 #exec MESHMAP SETTEXTURE MESHMAP=AutoMagL NUM=0 TEXTURE=UnrealShare.Effect18.FireEffect18 00053 00054 // right handed player view version 00055 #exec MESH IMPORT MESH=AutoMagR ANIVFILE=MODELS\pistol_a.3D DATAFILE=MODELS\pistol_d.3D unmirror=1 00056 #exec MESH ORIGIN MESH=AutoMagR X=0 Y=0 Z=0 YAW=64 ROLL=-64 00057 #exec MESH SEQUENCE MESH=AutoMagR SEQ=All STARTFRAME=0 NUMFRAMES=190 00058 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Still STARTFRAME=0 NUMFRAMES=1 00059 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Shoot STARTFRAME=0 NUMFRAMES=4 00060 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Shoot0 STARTFRAME=6 NUMFRAMES=3 00061 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Shoot1 STARTFRAME=7 NUMFRAMES=7 00062 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Shoot2 STARTFRAME=15 NUMFRAMES=5 00063 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Shot2a STARTFRAME=20 NUMFRAMES=5 00064 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Shot2b STARTFRAME=29 NUMFRAMES=3 00065 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Shot2c STARTFRAME=45 NUMFRAMES=5 00066 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Twiddle STARTFRAME=50 NUMFRAMES=25 00067 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Sway1 STARTFRAME=50 NUMFRAMES=2 00068 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Eject STARTFRAME=75 NUMFRAMES=25 00069 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Down STARTFRAME=100 NUMFRAMES=5 00070 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Select STARTFRAME=105 NUMFRAMES=30 RATE=40 GROUP=Select 00071 #exec MESH SEQUENCE MESH=AutoMagR SEQ=T1 STARTFRAME=135 NUMFRAMES=5 00072 #exec MESH SEQUENCE MESH=AutoMagR SEQ=Twirl STARTFRAME=140 NUMFRAMES=45 00073 #exec MESH SEQUENCE MESH=AutoMagR SEQ=T2 STARTFRAME=185 NUMFRAMES=5 00074 #exec MESHMAP SCALE MESHMAP=AutoMagR X=0.007 Y=0.005 Z=0.01 00075 #exec MESHMAP SETTEXTURE MESHMAP=AutoMagR NUM=1 TEXTURE=Automa1 00076 #exec MESHMAP SETTEXTURE MESHMAP=AutoMagR NUM=0 TEXTURE=UnrealShare.Effect18.FireEffect18 00077 00078 #exec AUDIO IMPORT FILE="Sounds\automag\cocking.WAV" NAME="Cocking" GROUP="AutoMag" 00079 #exec AUDIO IMPORT FILE="Sounds\automag\shot.WAV" NAME="shot" GROUP="AutoMag" 00080 #exec AUDIO IMPORT FILE="Sounds\flak\click.WAV" NAME="click" GROUP="flak" 00081 #exec AUDIO IMPORT FILE="Sounds\automag\reload1.WAV" NAME="Reload" GROUP="Automag" 00082 00083 var() int hitdamage; 00084 var float AltAccuracy; 00085 var int ClipCount; 00086 00087 function AltFire( float Value ) 00088 { 00089 bPointing=True; 00090 AltAccuracy = 0.4; 00091 CheckVisibility(); 00092 if (AmmoType.AmmoAmount>0) 00093 { 00094 if ( PlayerPawn(Owner) != None ) 00095 PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); 00096 PlayAnim('T1', 1.3, 0.05); 00097 GotoState('AltFiring'); 00098 } 00099 } 00100 00101 function PlayFiring() 00102 { 00103 ClipCount++; 00104 Owner.PlaySound(FireSound, SLOT_None,2.0*Pawn(Owner).SoundDampening); 00105 } 00106 00107 // set which hand is holding weapon 00108 function setHand(float Hand) 00109 { 00110 Super.SetHand(Hand); 00111 if ( Hand == 1 ) 00112 Mesh = mesh'AutoMagL'; 00113 else 00114 Mesh = mesh'AutoMagR'; 00115 } 00116 00117 /////////////////////////////////////////////////////// 00118 state NormalFire 00119 { 00120 Begin: 00121 if (AnimSequence!='Shoot0') 00122 { 00123 PlayAnim('Shoot',2.5, 0.02); 00124 FinishAnim(); 00125 } 00126 PlayAnim('Shoot0',0.26, 0.04); 00127 FinishAnim(); 00128 if (ClipCount>15) Owner.PlaySound(Misc1Sound, SLOT_None, 3.5*Pawn(Owner).SoundDampening); 00129 if ( bChangeWeapon ) 00130 GotoState('DownWeapon'); 00131 else if ( PlayerPawn(Owner) == None ) 00132 Super.Finish(); 00133 else if ( (AmmoType.AmmoAmount<=0) || (Pawn(Owner).Weapon != self) ) 00134 GotoState('Idle'); 00135 else if (ClipCount>=20) GoToState('NewClip'); 00136 else if ( Pawn(Owner).bFire!=0 ) Global.Fire(0); 00137 else if ( Pawn(Owner).bAltFire!=0 )Global.AltFire(0); 00138 PlayAnim('Shoot2',0.8, 0.0); 00139 FinishAnim(); 00140 GoToState('Idle'); 00141 } 00142 00143 00144 //////////////////////////////////////////////////////// 00145 state NewClip 00146 { 00147 ignores Fire, AltFire; 00148 Begin: 00149 PlayAnim('Eject',1.5,0.05); 00150 Owner.PlaySound(Misc2Sound, SLOT_None,1.0*Pawn(Owner).SoundDampening); 00151 FinishAnim(); 00152 PlayAnim('Down',1.2,0.05); 00153 FinishAnim(); 00154 ClipCount = 0; 00155 Owner.PlaySound(SelectSound, SLOT_None,1.0*Pawn(Owner).SoundDampening); 00156 PlayAnim('Select',1.6,0.07); 00157 FinishAnim(); 00158 if ( bChangeWeapon ) 00159 GotoState('DownWeapon'); 00160 else if ( Pawn(Owner).bFire!=0 ) 00161 Global.Fire(0); 00162 else if ( Pawn(Owner).bAltFire!=0 ) 00163 Global.AltFire(0); 00164 else GotoState('Idle'); 00165 } 00166 00167 //////////////////////////////////////////////////////// 00168 state AltFiring 00169 { 00170 ignores Fire, AltFire; 00171 00172 Begin: 00173 FinishAnim(); 00174 PlayAnim('Shot2a', 1.2, 0.05); 00175 FinishAnim(); 00176 Repeater: 00177 if (AmmoType.UseAmmo(1)) 00178 { 00179 if ( PlayerPawn(Owner) != None ) 00180 PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); 00181 ClipCount++; 00182 TraceFire(AltAccuracy); 00183 PlayAltFiring(); 00184 FinishAnim(); 00185 } 00186 if ( AltAccuracy < 3 ) 00187 AltAccuracy += 0.5; 00188 if (ClipCount>15) Owner.PlaySound(Misc1Sound, SLOT_None, 3.5*Pawn(Owner).SoundDampening); 00189 if ( bChangeWeapon ) 00190 GotoState('DownWeapon'); 00191 else if ( Pawn(Owner).Weapon != Self ) 00192 GotoState('Idle'); 00193 else if ( /*bAltFireMem ||*/ (Pawn(Owner).bAltFire!=0) 00194 && AmmoType.AmmoAmount>0 && ClipCount<20) 00195 { 00196 if ( PlayerPawn(Owner) == None ) 00197 Pawn(Owner).bAltFire = int( FRand() < AltReFireRate ); 00198 //bFireMem = false; 00199 //bAltFireMem = false; 00200 Goto('Repeater'); 00201 } 00202 PlayAnim('Shot2c', 0.7, 0.05); 00203 FinishAnim(); 00204 PlayAnim('T2', 0.9, 0.05); 00205 FinishAnim(); 00206 Finish(); 00207 } 00208 00209 function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z) 00210 { 00211 local shellcase s; 00212 local vector realLoc; 00213 00214 realLoc = Owner.Location + CalcDrawOffset(); 00215 s = Spawn(class'ShellCase',Pawn(Owner), '', realLoc + 20 * X + FireOffset.Y * Y + Z); 00216 if ( s != None ) 00217 s.Eject(((FRand()*0.3+0.4)*X + (FRand()*0.2+0.2)*Y + (FRand()*0.3+1.0) * Z)*160); 00218 if (Other == Level) 00219 Spawn(class'WallHitEffect',,, HitLocation+HitNormal*9, Rotator(HitNormal)); 00220 else if ((Other != self) && (Other != Owner) && (Other != None) ) 00221 { 00222 if ( FRand() < 0.2 ) 00223 X *= 5; 00224 Other.TakeDamage(HitDamage, Pawn(Owner), HitLocation, 3000.0*X, 'shot'); 00225 if ( !Other.IsA('Pawn') && !Other.IsA('Carcass') ) 00226 spawn(class'SpriteSmokePuff',,,HitLocation+HitNormal*9); 00227 } 00228 } 00229 00230 function PlayPostSelect() 00231 { 00232 ClipCount = 0; 00233 } 00234 00235 function Finish() 00236 { 00237 if ( bChangeWeapon ) 00238 GotoState('DownWeapon'); 00239 else if ( PlayerPawn(Owner) == None ) 00240 Super.Finish(); 00241 else if ( (AmmoType.AmmoAmount<=0) || (Pawn(Owner).Weapon != self) ) 00242 GotoState('Idle'); 00243 else if (ClipCount>=20) GoToState('NewClip'); 00244 else if ( /*bFireMem ||*/ Pawn(Owner).bFire!=0 ) 00245 Global.Fire(0); 00246 else if ( /*bAltFireMem ||*/ Pawn(Owner).bAltFire!=0 ) 00247 Global.AltFire(0); 00248 else 00249 GotoState('Idle'); 00250 } 00251 00252 function PlayAltFiring() 00253 { 00254 Owner.PlaySound(FireSound, SLOT_None,2.0*Pawn(Owner).SoundDampening); 00255 PlayAnim('Shot2b', 0.4, 0.05); 00256 } 00257 00258 state Idle 00259 { 00260 function AnimEnd() 00261 { 00262 PlayIdleAnim(); 00263 } 00264 00265 function bool PutDown() 00266 { 00267 GotoState('DownWeapon'); 00268 return True; 00269 } 00270 00271 function Timer() 00272 { 00273 if (FRand()>0.8) PlayAnim('Twiddle',0.6,0.3); 00274 else if (AnimSequence == 'Twiddle') LoopAnim('Sway1',0.02, 0.3); 00275 } 00276 00277 Begin: 00278 bPointing=False; 00279 if ( (AmmoType != None) && (AmmoType.AmmoAmount<=0) ) 00280 Pawn(Owner).SwitchToBestWeapon(); //Goto Weapon that has Ammo 00281 Disable('AnimEnd'); 00282 LoopAnim('Sway1',0.02, 0.1); 00283 SetTimer(1.5,True); 00284 if ( /*bFireMem ||*/ Pawn(Owner).bFire!=0 ) Global.Fire(0.0); 00285 if ( /*bAltFireMem ||*/ Pawn(Owner).bAltFire!=0 ) Global.AltFire(0.0); 00286 } 00287 00288 defaultproperties 00289 { 00290 hitdamage=17 00291 AmmoName=Class'UnrealShare.ShellBox' 00292 PickupAmmoCount=20 00293 bInstantHit=True 00294 bAltInstantHit=True 00295 FireOffset=(Y=-10.000000,Z=-4.000000) 00296 shakemag=200.000000 00297 shakevert=4.000000 00298 AIRating=0.200000 00299 RefireRate=0.700000 00300 AltRefireRate=0.900000 00301 FireSound=Sound'UnrealShare.AutoMag.shot' 00302 AltFireSound=Sound'UnrealShare.AutoMag.shot' 00303 CockingSound=Sound'UnrealShare.AutoMag.Cocking' 00304 SelectSound=Sound'UnrealShare.AutoMag.Cocking' 00305 Misc1Sound=Sound'UnrealShare.flak.Click' 00306 Misc2Sound=Sound'UnrealShare.AutoMag.Reload' 00307 DeathMessage="%o got gatted by %k's %w." 00308 AutoSwitchPriority=2 00309 InventoryGroup=2 00310 PickupMessage="You got the AutoMag" 00311 ItemName="Automag" 00312 PlayerViewOffset=(X=4.800000,Y=-1.700000,Z=-2.700000) 00313 PlayerViewMesh=LodMesh'UnrealShare.AutoMagL' 00314 PickupViewMesh=LodMesh'UnrealShare.AutoMagPickup' 00315 ThirdPersonMesh=LodMesh'UnrealShare.auto3rd' 00316 PickupSound=Sound'UnrealShare.Pickups.WeaponPickup' 00317 Mesh=LodMesh'UnrealShare.AutoMagPickup' 00318 bNoSmooth=False 00319 CollisionRadius=25.000000 00320 CollisionHeight=10.000000 00321 Mass=15.000000 00322 }