Core.Object | +--Engine.Actor | +--Engine.Inventory | +--Engine.Weapon | +--UnrealI.FlakCannon
void
AltFire(float Value)
Fire(float Value)
// Fire chunks
PlayIdleAnim()
PlayPostSelect()
float
RateSelf(out int)
//------------------------------------------------------- // AI related functions
SuggestAttackStyle()
// return delta to combat style
SuggestDefenseStyle()
TweenDown()
///////////////////////////////////////////////////////////
00001 //============================================================================= 00002 // FlakCannon. 00003 //============================================================================= 00004 class FlakCannon extends Weapon; 00005 00006 #exec MESH IMPORT MESH=flak ANIVFILE=MODELS\flak_a.3D DATAFILE=MODELS\flak_d.3D X=0 Y=0 Z=0 00007 #exec MESH ORIGIN MESH=flak X=0 Y=0 Z=0 YAW=-64 ROLL=0 PITCH=0 00008 #exec MESH SEQUENCE MESH=Flak SEQ=All STARTFRAME=0 NUMFRAMES=105 00009 #exec MESH SEQUENCE MESH=Flak SEQ=Select STARTFRAME=0 NUMFRAMES=30 RATE=45 GROUP=Select 00010 #exec MESH SEQUENCE MESH=Flak SEQ=Loading STARTFRAME=30 NUMFRAMES=15 00011 #exec MESH SEQUENCE MESH=Flak SEQ=Still STARTFRAME=45 NUMFRAMES=1 00012 #exec MESH SEQUENCE MESH=Flak SEQ=Fire STARTFRAME=46 NUMFRAMES=10 00013 #exec MESH SEQUENCE MESH=Flak SEQ=AltFire STARTFRAME=56 NUMFRAMES=11 RATE=24 00014 #exec MESH SEQUENCE MESH=Flak SEQ=Eject STARTFRAME=67 NUMFRAMES=19 00015 #exec MESH SEQUENCE MESH=Flak SEQ=Down2 STARTFRAME=86 NUMFRAMES=15 00016 #exec MESH SEQUENCE MESH=Flak SEQ=Still2 STARTFRAME=101 NUMFRAMES=1 00017 #exec MESH SEQUENCE MESH=Flak SEQ=Sway STARTFRAME=102 NUMFRAMES=2 00018 #exec MESH SEQUENCE MESH=Flak SEQ=Down STARTFRAME=104 NUMFRAMES=6 00019 #exec TEXTURE IMPORT NAME=Jflak1 FILE=MODELS\flak.PCX GROUP=Skins 00020 #exec OBJ LOAD FILE=..\UnrealShare\Textures\fireeffect13.utx PACKAGE=UNREALI.Effect13 00021 #exec MESHMAP SCALE MESHMAP=flak X=0.005 Y=0.005 Z=0.01 00022 #exec MESHMAP SETTEXTURE MESHMAP=flak NUM=1 TEXTURE=Jflak1 00023 #exec MESHMAP SETTEXTURE MESHMAP=flak NUM=0 TEXTURE=Unreali.Effect13.FireEffect13 00024 00025 #exec MESH IMPORT MESH=FlakPick ANIVFILE=MODELS\flakpi_a.3D DATAFILE=MODELS\flakpi_d.3D X=0 Y=0 Z=0 00026 #exec MESH ORIGIN MESH=FlakPick X=0 Y=0 Z=0 YAW=64 00027 #exec MESH SEQUENCE MESH=Flakpick SEQ=All STARTFRAME=0 NUMFRAMES=1 00028 #exec MESH SEQUENCE MESH=Flakpick SEQ=Still STARTFRAME=0 NUMFRAMES=1 00029 #exec MESHMAP SCALE MESHMAP=Flakpick X=0.06 Y=0.06 Z=0.12 00030 #exec MESHMAP SETTEXTURE MESHMAP=Flakpick NUM=1 TEXTURE=JFlak1 00031 00032 #exec MESH IMPORT MESH=Flak3rd ANIVFILE=MODELS\flak3_a.3D DATAFILE=MODELS\flak3_d.3D X=0 Y=0 Z=0 00033 #exec MESH ORIGIN MESH=Flak3rd X=-28 Y=-350 Z=-50 YAW=-64 ROLL=9 00034 #exec MESH SEQUENCE MESH=Flak3rd SEQ=All STARTFRAME=0 NUMFRAMES=10 00035 #exec MESH SEQUENCE MESH=Flak3rd SEQ=Still STARTFRAME=0 NUMFRAMES=1 00036 #exec MESH SEQUENCE MESH=Flak3rd SEQ=Fire STARTFRAME=1 NUMFRAMES=9 RATE=40.0 00037 #exec MESH SEQUENCE MESH=Flak3rd SEQ=AltFire STARTFRAME=1 NUMFRAMES=9 RATE=40.0 00038 #exec TEXTURE IMPORT NAME=JFlak1 FILE=MODELS\flak.PCX GROUP="Skins" 00039 #exec OBJ LOAD FILE=..\UnrealShare\textures\FireEffect18.utx PACKAGE=UNREALSHARE.Effect18 00040 #exec MESHMAP SCALE MESHMAP=Flak3rd X=0.045 Y=0.045 Z=0.09 00041 #exec MESHMAP SETTEXTURE MESHMAP=Flak3rd NUM=1 TEXTURE=JFlak1 00042 #exec MESHMAP SETTEXTURE MESHMAP=Flak3rd NUM=0 TEXTURE=UnrealShare.Effect18.FireEffect18 00043 00044 #exec AUDIO IMPORT FILE="..\UnrealShare\Sounds\flak\Explode1.WAV" NAME="Explode1" GROUP="flak" 00045 #exec AUDIO IMPORT FILE="..\UnrealShare\Sounds\flak\hidraul2.WAV" NAME="Hidraul2" GROUP="flak" 00046 #exec AUDIO IMPORT FILE="..\UnrealShare\Sounds\flak\load1.WAV" NAME="load1" GROUP="flak" 00047 #exec AUDIO IMPORT FILE="..\UnrealShare\Sounds\flak\click.WAV" NAME="click" GROUP="flak" 00048 #exec AUDIO IMPORT FILE="..\UnrealShare\Sounds\flak\shot1.WAV" NAME="shot1" GROUP="flak" 00049 #exec AUDIO IMPORT FILE="..\UnrealShare\Sounds\flak\shot2.WAV" NAME="shot2" GROUP="flak" 00050 #exec AUDIO IMPORT FILE="..\UnrealShare\Sounds\flak\barrelm1.WAV" NAME="barrelm1" GROUP="flak" 00051 #exec AUDIO IMPORT FILE="..\UnrealShare\Sounds\flak\pdown.WAV" NAME="pdown" GROUP="flak" 00052 #exec AUDIO IMPORT FILE="..\UnrealShare\Sounds\flak\expl2.WAV" NAME="expl2" GROUP="flak" 00053 00054 //------------------------------------------------------- 00055 // AI related functions 00056 00057 function float RateSelf( out int bUseAltMode ) 00058 { 00059 local float EnemyDist, rating; 00060 local vector EnemyDir; 00061 00062 if ( AmmoType.AmmoAmount <=0 ) 00063 return -2; 00064 if ( Pawn(Owner).Enemy == None ) 00065 { 00066 bUseAltMode = 0; 00067 return AIRating; 00068 } 00069 EnemyDir = Pawn(Owner).Enemy.Location - Owner.Location; 00070 EnemyDist = VSize(EnemyDir); 00071 rating = FClamp(AIRating - (EnemyDist - 450) * 0.001, 0.2, AIRating); 00072 if ( EnemyDist > 600 ) 00073 { 00074 if ( EnemyDir.Z < -0.5 * EnemyDist ) 00075 { 00076 bUseAltMode = 1; 00077 return (AIRating - 0.3); 00078 } 00079 bUseAltMode = 0; 00080 } 00081 else if ( (EnemyDist < 300) || (EnemyDir.Z > 30) ) 00082 bUseAltMode = 0; 00083 else 00084 bUseAltMode = int( FRand() < 0.65 ); 00085 return rating; 00086 } 00087 00088 // return delta to combat style 00089 function float SuggestAttackStyle() 00090 { 00091 return 0.4; 00092 } 00093 00094 function float SuggestDefenseStyle() 00095 { 00096 return -0.3; 00097 } 00098 00099 //------------------------------------------------------- 00100 00101 // Fire chunks 00102 function Fire( float Value ) 00103 { 00104 local Vector Start, X,Y,Z; 00105 00106 //bFireMem = false; 00107 //bAltFireMem = false; 00108 if (AmmoType.UseAmmo(1)) 00109 { 00110 CheckVisibility(); 00111 bPointing=True; 00112 Start = Owner.Location + CalcDrawOffset(); 00113 if ( PlayerPawn(Owner) != None ) 00114 { 00115 PlayerPawn(Owner).ClientInstantFlash( -0.4, vect(650, 450, 190)); 00116 PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); 00117 } 00118 Owner.MakeNoise(2.0 * Pawn(Owner).SoundDampening); 00119 AdjustedAim = pawn(owner).AdjustAim(AltProjectileSpeed, Start, AimError, True, bWarnTarget); 00120 GetAxes(AdjustedAim,X,Y,Z); 00121 Spawn(class'WeaponLight',,'',Start+X*20,rot(0,0,0)); 00122 Start = Start + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; 00123 Spawn( class 'MasterChunk',, '', Start, AdjustedAim); 00124 Spawn( class 'Chunk2',, '', Start - Z, AdjustedAim); 00125 Spawn( class 'Chunk3',, '', Start + 2 * Y + Z, AdjustedAim); 00126 Spawn( class 'Chunk4',, '', Start - Y, AdjustedAim); 00127 Spawn( class 'Chunk1',, '', Start + 2 * Y - Z, AdjustedAim); 00128 Spawn( class 'Chunk2',, '', Start, AdjustedAim); 00129 Spawn( class 'Chunk3',, '', Start + Y - Z, AdjustedAim); 00130 Spawn( class 'Chunk4',, '', Start + 2 * Y + Z, AdjustedAim); 00131 PlayAnim( 'Fire', 0.9, 0.05); 00132 Owner.PlaySound(FireSound, SLOT_None,Pawn(Owner).SoundDampening*4.0); 00133 GoToState('NormalFire'); 00134 } 00135 } 00136 00137 function AltFire( float Value ) 00138 { 00139 local Vector Start, X,Y,Z; 00140 00141 //bFireMem = false; 00142 //bAltFireMem = false; 00143 if (AmmoType.UseAmmo(1)) 00144 { 00145 CheckVisibility(); 00146 Owner.PlaySound(Misc1Sound, SLOT_None, 0.6*Pawn(Owner).SoundDampening); 00147 Owner.PlaySound(AltFireSound, SLOT_None,Pawn(Owner).SoundDampening*4.0); 00148 PlayAnim('AltFire', 1.3, 0.05); 00149 bPointing=True; 00150 Owner.MakeNoise(Pawn(Owner).SoundDampening); 00151 GetAxes(Pawn(owner).ViewRotation,X,Y,Z); 00152 Start = Owner.Location + CalcDrawOffset(); 00153 Spawn(class'WeaponLight',,'',Start+X*20,rot(0,0,0)); 00154 Start = Start + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; 00155 AdjustedAim = pawn(owner).AdjustToss(AltProjectileSpeed, Start, AimError, True, bAltWarnTarget); //TIM - syntax fixme 00156 Spawn(class'FlakShell',,, Start,AdjustedAim); 00157 if ( PlayerPawn(Owner) != None ) 00158 { 00159 PlayerPawn(Owner).ClientInstantFlash( -0.4, vect(650, 450, 190)); 00160 PlayerPawn(Owner).ShakeView(ShakeTime, ShakeMag, ShakeVert); 00161 } 00162 GoToState('AltFiring'); 00163 } 00164 } 00165 00166 //////////////////////////////////////////////////////////// 00167 state AltFiring 00168 { 00169 Begin: 00170 FinishAnim(); 00171 Owner.PlaySound(CockingSound, SLOT_None,0.5*Pawn(Owner).SoundDampening); 00172 PlayAnim('Loading',0.65, 0.05); 00173 FinishAnim(); 00174 Finish(); 00175 } 00176 00177 ///////////////////////////////////////////////////////////// 00178 state NormalFire 00179 { 00180 Begin: 00181 FinishAnim(); 00182 PlayAnim('Eject',1.5, 0.05); 00183 Owner.PlaySound(Misc3Sound, SLOT_None,0.6*Pawn(Owner).SoundDampening); 00184 FinishAnim(); 00185 PlayAnim('Loading',1.4, 0.05); 00186 Owner.PlaySound(CockingSound, SLOT_None,0.5*Pawn(Owner).SoundDampening); 00187 FinishAnim(); 00188 Finish(); 00189 } 00190 00191 /////////////////////////////////////////////////////////// 00192 function TweenDown() 00193 { 00194 if ( GetAnimGroup(AnimSequence) == 'Select' ) 00195 TweenAnim( AnimSequence, AnimFrame * 0.4 ); 00196 else 00197 { 00198 if (AmmoType.AmmoAmount<=0) PlayAnim('Down2',1.0, 0.05); 00199 else PlayAnim('Down',1.0, 0.05); 00200 } 00201 } 00202 00203 00204 function PlayIdleAnim() 00205 { 00206 // if (VSize(Pawn(Owner).Velocity)>20 && AnimSequence=='Still') 00207 // LoopAnim('Still',0.1); 00208 // else if (VSize(Pawn(Owner).Velocity)<20 && AnimSequence!='Still') 00209 LoopAnim('Sway',0.01,0.3); 00210 } 00211 00212 function PlayPostSelect() 00213 { 00214 PlayAnim('Loading', 1.3, 0.05); 00215 Owner.PlaySound(Misc2Sound, SLOT_None,1.3*Pawn(Owner).SoundDampening); 00216 } 00217 00218 defaultproperties 00219 { 00220 AmmoName=Class'UnrealI.FlakBox' 00221 PickupAmmoCount=10 00222 bWarnTarget=True 00223 bAltWarnTarget=True 00224 bSplashDamage=True 00225 FireOffset=(X=10.000000,Y=-12.000000,Z=-15.000000) 00226 ProjectileClass=Class'UnrealI.MasterChunk' 00227 AltProjectileClass=Class'UnrealI.FlakShell' 00228 shakemag=350.000000 00229 shaketime=0.150000 00230 shakevert=8.500000 00231 AIRating=0.800000 00232 FireSound=Sound'UnrealShare.flak.shot1' 00233 AltFireSound=Sound'UnrealShare.flak.Explode1' 00234 CockingSound=Sound'UnrealI.flak.load1' 00235 SelectSound=Sound'UnrealI.flak.pdown' 00236 Misc2Sound=Sound'UnrealI.flak.Hidraul2' 00237 Misc3Sound=Sound'UnrealShare.flak.Click' 00238 DeathMessage="%o was ripped to shreds by %k's %w." 00239 AutoSwitchPriority=6 00240 InventoryGroup=6 00241 PickupMessage="You got the Flak Cannon" 00242 ItemName="Flak Cannon" 00243 PlayerViewOffset=(X=2.100000,Y=-1.500000,Z=-1.250000) 00244 PlayerViewMesh=LodMesh'UnrealI.flak' 00245 PlayerViewScale=1.200000 00246 PickupViewMesh=LodMesh'UnrealI.FlakPick' 00247 ThirdPersonMesh=LodMesh'UnrealI.Flak3rd' 00248 PickupSound=Sound'UnrealShare.Pickups.WeaponPickup' 00249 Mesh=LodMesh'UnrealI.FlakPick' 00250 bNoSmooth=False 00251 CollisionRadius=27.000000 00252 CollisionHeight=23.000000 00253 LightBrightness=228 00254 LightHue=30 00255 LightSaturation=71 00256 LightRadius=14 00257 }