Botpack
Class SuperShockRifle

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

class SuperShockRifle
extends Botpack.ShockRifle

//============================================================================= // SuperShockRifle. //=============================================================================

Function Summary
 void AltFire(float Value)
 void Fire(float Value)
 
simulated
PlayAltFiring()
 
simulated
PlayFiring()
 void ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)
 float RateSelf(out int)
 void SpawnEffect(vector HitLocation, vector SmokeLocation)



Source Code


00001	//=============================================================================
00002	// SuperShockRifle.
00003	//=============================================================================
00004	class SuperShockRifle extends ShockRifle;
00005	
00006	#exec MESH IMPORT MESH=sshockm ANIVFILE=MODELS\ASMD2_a.3D DATAFILE=MODELS\ASMD2_d.3D X=0 Y=0 Z=0
00007	#exec MESH ORIGIN MESH=sshockm X=0 Y=0 Z=0 YAW=64 PITCH=0
00008	#exec MESH SEQUENCE MESH=sshockm SEQ=All       STARTFRAME=0  NUMFRAMES=52
00009	#exec MESH SEQUENCE MESH=sshockm SEQ=Select    STARTFRAME=0  NUMFRAMES=15 RATE=30 GROUP=Select
00010	#exec MESH SEQUENCE MESH=sshockm SEQ=Still     STARTFRAME=15 NUMFRAMES=1
00011	#exec MESH SEQUENCE MESH=sshockm SEQ=Down      STARTFRAME=17 NUMFRAMES=7  RATE=27
00012	#exec MESH SEQUENCE MESH=sshockm SEQ=Still2    STARTFRAME=28 NUMFRAMES=2
00013	#exec MESH SEQUENCE MESH=sshockm SEQ=Fire1     STARTFRAME=30 NUMFRAMES=10  RATE=22
00014	#exec MESH SEQUENCE MESH=sshockm SEQ=Fire2     STARTFRAME=40 NUMFRAMES=10  RATE=24
00015	#exec TEXTURE IMPORT NAME=SASMD_t FILE=MODELS\ASMDS.PCX GROUP="Skins" LODSET=2
00016	#exec TEXTURE IMPORT NAME=SASMD_t1 FILE=MODELS\ASMDS1.PCX GROUP="Skins" LODSET=2
00017	#exec TEXTURE IMPORT NAME=SASMD_t2 FILE=MODELS\ASMD2.PCX GROUP="Skins" LODSET=2
00018	#exec TEXTURE IMPORT NAME=SASMD_t3 FILE=MODELS\ASMDS3.PCX GROUP="Skins" LODSET=2
00019	#exec TEXTURE IMPORT NAME=SASMD_t4 FILE=MODELS\ASMDS4.PCX GROUP="Skins" LODSET=2
00020	#exec MESHMAP SCALE MESHMAP=sshockm X=0.004 Y=0.003 Z=0.008
00021	#exec MESHMAP SETTEXTURE MESHMAP=sshockm NUM=0 TEXTURE=SASMD_t1
00022	#exec MESHMAP SETTEXTURE MESHMAP=sshockm NUM=1 TEXTURE=SASMD_t2
00023	#exec MESHMAP SETTEXTURE MESHMAP=sshockm NUM=2 TEXTURE=SASMD_t3
00024	#exec MESHMAP SETTEXTURE MESHMAP=sshockm NUM=3 TEXTURE=SASMD_t4
00025	
00026	#exec MESH IMPORT MESH=SASMD2hand ANIVFILE=MODELS\ASMDhand_a.3D DATAFILE=MODELS\asmdhand_d.3D X=0 Y=0 Z=0
00027	#exec MESH ORIGIN MESH=SASMD2hand X=25 Y=600 Z=-40 YAW=64 PITCH=0
00028	#exec MESH SEQUENCE MESH=SASMD2hand SEQ=All   STARTFRAME=0  NUMFRAMES=10
00029	#exec MESH SEQUENCE MESH=SASMD2hand SEQ=Still STARTFRAME=0  NUMFRAMES=1
00030	#exec MESH SEQUENCE MESH=SASMD2hand SEQ=Fire1 STARTFRAME=1  NUMFRAMES=9  RATE=24
00031	#exec MESH SEQUENCE MESH=SASMD2hand SEQ=Fire2 STARTFRAME=1  NUMFRAMES=9  RATE=24
00032	#exec MESHMAP SCALE MESHMAP=SASMD2hand X=0.05 Y=0.05 Z=0.1
00033	#exec MESHMAP SETTEXTURE MESHMAP=SASMD2hand NUM=1 TEXTURE=SASMD_t
00034	
00035	
00036	function Fire( float Value )
00037	{
00038		GotoState('NormalFire');
00039		bCanClientFire = true;
00040		bPointing=True;
00041		ClientFire(value);
00042		if ( bRapidFire || (FiringSpeed > 0) )
00043			Pawn(Owner).PlayRecoil(FiringSpeed);
00044		if ( bInstantHit )
00045			TraceFire(0.0);
00046		else
00047			ProjectileFire(ProjectileClass, ProjectileSpeed, bWarnTarget);
00048	}
00049	
00050	function AltFire( float Value )
00051	{
00052		local actor HitActor;
00053		local vector HitLocation, HitNormal, Start; 
00054	
00055		if ( Owner == None )
00056			return;
00057	
00058		GotoState('AltFiring');
00059		Pawn(Owner).PlayRecoil(FiringSpeed);
00060		bCanClientFire = true;
00061		bPointing=True;
00062		TraceFire(0.0);
00063		ClientAltFire(value);
00064	}
00065	
00066	function float RateSelf( out int bUseAltMode )
00067	{
00068		local Pawn P;
00069		local bool bNovice;
00070	
00071		if ( AmmoType.AmmoAmount <=0 )
00072			return -2;
00073	
00074		P = Pawn(Owner);
00075	
00076		bUseAltMode = 0;
00077		return AIRating;
00078	}
00079	
00080	simulated function PlayFiring()
00081	{
00082		PlayOwnedSound(FireSound, SLOT_None, Pawn(Owner).SoundDampening*4.0);
00083		LoopAnim('Fire1', 0.20 + 0.20 * FireAdjust,0.05);
00084	}
00085	
00086	simulated function PlayAltFiring()
00087	{
00088		PlayOwnedSound(FireSound, SLOT_None, Pawn(Owner).SoundDampening*4.0);
00089		LoopAnim('Fire1', 0.20 + 0.20 * FireAdjust,0.05);
00090	}
00091	
00092	function ProcessTraceHit(Actor Other, Vector HitLocation, Vector HitNormal, Vector X, Vector Y, Vector Z)
00093	{
00094		if (Other==None)
00095		{
00096			HitNormal = -X;
00097			HitLocation = Owner.Location + X*10000.0;
00098		}
00099	
00100		SpawnEffect(HitLocation, Owner.Location + CalcDrawOffset() + (FireOffset.X + 20) * X + FireOffset.Y * Y + FireOffset.Z * Z);
00101	
00102		Spawn(class'ut_SuperRing2',,, HitLocation+HitNormal*8,rotator(HitNormal));
00103	
00104		if ( (Other != self) && (Other != Owner) && (Other != None) ) 
00105			Other.TakeDamage(HitDamage, Pawn(Owner), HitLocation, 60000.0*X, MyDamageType);
00106	}
00107	
00108	
00109	function SpawnEffect(vector HitLocation, vector SmokeLocation)
00110	{
00111		local SuperShockBeam Smoke,shock;
00112		local Vector DVector;
00113		local int NumPoints;
00114		local rotator SmokeRotation;
00115	
00116		DVector = HitLocation - SmokeLocation;
00117		NumPoints = VSize(DVector)/135.0;
00118		if ( NumPoints < 1 )
00119			return;
00120		SmokeRotation = rotator(DVector);
00121		SmokeRotation.roll = Rand(65535);
00122		
00123		Smoke = Spawn(class'SuperShockBeam',,,SmokeLocation,SmokeRotation);
00124		Smoke.MoveAmount = DVector/NumPoints;
00125		Smoke.NumPuffs = NumPoints - 1;	
00126	}
00127	
00128	defaultproperties
00129	{
00130	     hitdamage=1000
00131	     InstFog=(X=800.000000,Z=0.000000)
00132	     AmmoName=Class'Botpack.SuperShockCore'
00133	     aimerror=650.000000
00134	     DeathMessage="%k electrified %o with the %w."
00135	     PickupMessage="You got the enhanced Shock Rifle."
00136	     ItemName="Enhanced Shock Rifle"
00137	     PlayerViewMesh=LodMesh'Botpack.sshockm'
00138	     ThirdPersonMesh=LodMesh'Botpack.SASMD2hand'
00139	}

End Source Code