Botpack
Class Ripper

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

class Ripper
extends Botpack.TournamentWeapon

//============================================================================= // Ripper // A human modification of the Skaarj Razorjack. //=============================================================================
States
AltFiring

Function Summary
 void AltFire(float Value)
 
simulated
PlayAltFiring()
 
simulated
PlayFiring()
 
simulated
PlayIdleAnim()
 float RateSelf(out int)
 float SuggestAttackStyle()
 float SuggestDefenseStyle()


State AltFiring Function Summary
 bool SplashJump()



Source Code


00001	//=============================================================================
00002	// Ripper
00003	// A human modification of the Skaarj Razorjack.
00004	//=============================================================================
00005	class Ripper extends TournamentWeapon;
00006	
00007	#exec MESH IMPORT MESH=Razor2 ANIVFILE=MODELS\razorjack_a.3D DATAFILE=MODELS\razorjack_d.3D X=0 Y=0 Z=0
00008	#exec MESH ORIGIN MESH=Razor2 X=0 Y=0 Z=0 YAW=64 PITCH=0 ROLL=0 
00009	#exec MESH SEQUENCE MESH=razor2 SEQ=All     STARTFRAME=0   NUMFRAMES=76
00010	#exec MESH SEQUENCE MESH=razor2 SEQ=Select  STARTFRAME=0   NUMFRAMES=30  RATE=40 GROUP=Select
00011	#exec MESH SEQUENCE MESH=razor2 SEQ=Fire    STARTFRAME=32  NUMFRAMES=15
00012	#exec MESH SEQUENCE MESH=razor2 SEQ=Load    STARTFRAME=42  NUMFRAMES=5
00013	#exec MESH SEQUENCE MESH=razor2 SEQ=Idle    STARTFRAME=47  NUMFRAMES=19
00014	#exec MESH SEQUENCE MESH=razor2 SEQ=Still   STARTFRAME=47  NUMFRAMES=19
00015	#exec MESH SEQUENCE MESH=razor2 SEQ=Down    STARTFRAME=67  NUMFRAMES=6
00016	#exec TEXTURE IMPORT NAME=JRazor2 FILE=MODELS\raz1.PCX GROUP=Skins LODSET=2
00017	#exec TEXTURE IMPORT NAME=JRazor3 FILE=MODELS\raz2.PCX GROUP=Skins LODSET=2
00018	#exec TEXTURE IMPORT NAME=JRazor4 FILE=MODELS\raz3.pCX GROUP=Skins LODSET=2
00019	#exec TEXTURE IMPORT NAME=JRazor5 FILE=MODELS\raz4.PCX GROUP=Skins LODSET=2
00020	#exec TEXTURE IMPORT NAME=JRazorw FILE=MODELS\razwhole.PCX GROUP=Skins LODSET=2
00021	#exec TEXTURE IMPORT NAME=RazSkin FILE=MODELS\razorskin.PCX GROUP=Skins LODSET=2
00022	#exec MESHMAP SCALE MESHMAP=razor2 X=0.008 Y=0.005 Z=0.016
00023	#exec MESHMAP SETTEXTURE MESHMAP=razor2 NUM=0 TEXTURE=RazSkin
00024	#exec MESHMAP SETTEXTURE MESHMAP=razor2 NUM=1 TEXTURE=Jrazor2
00025	#exec MESHMAP SETTEXTURE MESHMAP=razor2 NUM=2 TEXTURE=Jrazor4
00026	#exec MESHMAP SETTEXTURE MESHMAP=razor2 NUM=3 TEXTURE=Jrazor5 
00027	#exec MESHMAP SETTEXTURE MESHMAP=razor2 NUM=4 TEXTURE=JRazor3
00028	
00029	#exec MESH IMPORT MESH=RazPick2 ANIVFILE=MODELS\razorpick_a.3D DATAFILE=MODELS\razorpick_d.3D X=0 Y=0 Z=0
00030	#exec MESH ORIGIN MESH=RazPick2 X=0 Y=0 Z=-23 YAW=64 PITCH=0 ROLL=0
00031	#exec MESH SEQUENCE MESH=RazPick2 SEQ=All    STARTFRAME=0   NUMFRAMES=1
00032	#exec MESH SEQUENCE MESH=RazPick2 SEQ=Still  STARTFRAME=0   NUMFRAMES=1
00033	#exec MESHMAP SCALE MESHMAP=RazPick2 X=0.1 Y=0.1 Z=0.2
00034	#exec MESHMAP SETTEXTURE MESHMAP=RazPick2 NUM=2 TEXTURE=Jrazorw
00035	
00036	#exec MESH IMPORT MESH=Razor3rd2 ANIVFILE=MODELS\Razorhand_a.3D DATAFILE=MODELS\Razorhand_d.3D X=0 Y=0 Z=0
00037	#exec MESH ORIGIN MESH=Razor3rd2 X=260 Y=0 Z=-80 YAW=128 PITCH=0 ROLL=0
00038	#exec MESH SEQUENCE MESH=Razor3rd2 SEQ=All  STARTFRAME=0  NUMFRAMES=1
00039	#exec MESH SEQUENCE MESH=Razor3rd2 SEQ=Still  STARTFRAME=0  NUMFRAMES=1
00040	#exec MESHMAP SCALE MESHMAP=Razor3rd2 X=0.05 Y=0.05 Z=0.1
00041	#exec MESHMAP SETTEXTURE MESHMAP=Razor3rd2 NUM=2 TEXTURE=JRazorw
00042	
00043	#exec TEXTURE IMPORT NAME=IconRazor FILE=TEXTURES\HUD\WpnRazJk.PCX GROUP="Icons" MIPS=OFF
00044	#exec TEXTURE IMPORT NAME=UseRazor FILE=TEXTURES\HUD\UseRazJk.PCX GROUP="Icons" MIPS=OFF
00045	
00046	function Projectile ProjectileFire(class<projectile> ProjClass, float ProjSpeed, bool bWarn)
00047	{
00048		local Vector Start, X,Y,Z;
00049	
00050		Owner.MakeNoise(Pawn(Owner).SoundDampening);
00051		GetAxes(Pawn(owner).ViewRotation,X,Y,Z);
00052		Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z; 
00053		AdjustedAim = pawn(owner).AdjustAim(ProjSpeed, Start, AimError, True, bWarn);	
00054		return Spawn(ProjClass,,, Start,AdjustedAim);	
00055	}
00056	
00057	simulated function PlayFiring()
00058	{
00059		LoopAnim( 'Fire', 0.7 + 0.6 * FireAdjust, 0.05 );
00060		PlayOwnedSound(class'Razor2'.Default.SpawnSound, SLOT_None,4.2);
00061	}
00062	
00063	
00064	function float RateSelf( out int bUseAltMode )
00065	{
00066		local Pawn P;
00067	
00068		if ( (AmmoType != None) && (AmmoType.AmmoAmount <=0) )
00069			return -2;
00070	
00071		P = Pawn(Owner);
00072		if ( (P.Enemy == None ) || (P.Enemy.Location.Z < Owner.Location.Z - 60) || (FRand() < 0.5) )
00073			bUseAltMode = 1;
00074		else 
00075			bUseAltMode = 0;
00076	
00077		if ( P.Enemy != None )
00078		{
00079			if ( Owner.Location.Z > P.Enemy.Location.Z + 140 )
00080			{
00081				bUseAltMode = 1;
00082				return (AIRating + 0.25);
00083			}
00084			else if ( P.Enemy.Location.Z > Owner.Location.Z + 160 )
00085				return (AIRating - 0.07);
00086		}
00087		return (AIRating + FRand() * 0.05);
00088	}
00089	
00090	function AltFire( float Value )
00091	{
00092		if ( AmmoType == None )
00093		{
00094			// ammocheck
00095			GiveAmmo(Pawn(Owner));
00096		}
00097		if (AmmoType.UseAmmo(1))
00098		{
00099			GotoState('AltFiring');
00100			bCanClientFire = true;
00101			bPointing=True;
00102			Pawn(Owner).PlayRecoil(FiringSpeed);
00103			ClientAltFire(Value);
00104			ProjectileFire(AltProjectileClass, AltProjectileSpeed, bAltWarnTarget);
00105		}
00106	}
00107	
00108	simulated function PlayAltFiring()
00109	{
00110		LoopAnim('Fire', 0.4 + 0.3 * FireAdjust,0.05);
00111		PlayOwnedSound(class'Razor2Alt'.Default.SpawnSound, SLOT_None,4.2);
00112	}
00113	
00114	simulated function PlayIdleAnim()
00115	{
00116		if ( Mesh != PickupViewMesh )
00117			LoopAnim('Idle', 0.3,0.4);
00118	}
00119	
00120	function float SuggestAttackStyle()
00121	{
00122		return -0.2;
00123	}
00124	
00125	function float SuggestDefenseStyle()
00126	{
00127		return -0.2;
00128	}
00129	
00130	state AltFiring
00131	{
00132		function bool SplashJump()
00133		{
00134			return true;
00135		}
00136	}
00137	
00138	defaultproperties
00139	{
00140	     WeaponDescription="Classification: Ballistic Blade Launcher\n\nPrimary Fire: Razor sharp titanium disks are launched at a medium rate of speed. Shots will ricochet off of any surfaces.\n\nSecondary Fire: Explosive disks are launched at a slow rate of fire.\n\nTechniques: Aim for the necks of your opponents."
00141	     InstFlash=-0.300000
00142	     InstFog=(X=400.000000,Y=200.000000)
00143	     AmmoName=Class'Botpack.BladeHopper'
00144	     PickupAmmoCount=15
00145	     bSplashDamage=True
00146	     bRecommendAltSplashDamage=True
00147	     bRapidFire=True
00148	     FiringSpeed=2.000000
00149	     FireOffset=(Y=-15.000000,Z=-13.000000)
00150	     ProjectileClass=Class'Botpack.Razor2'
00151	     AltProjectileClass=Class'Botpack.Razor2Alt'
00152	     shakemag=120.000000
00153	     AIRating=0.500000
00154	     RefireRate=1.000000
00155	     AltRefireRate=0.830000
00156	     SelectSound=Sound'UnrealI.Razorjack.beam'
00157	     DeathMessage="%k ripped a chunk of meat out of %o with the %w."
00158	     NameColor=(R=0)
00159	     AutoSwitchPriority=6
00160	     InventoryGroup=6
00161	     PickupMessage="You got the Ripper."
00162	     ItemName="Ripper"
00163	     PlayerViewOffset=(X=3.000000,Y=-1.600000,Z=-2.400000)
00164	     PlayerViewMesh=LodMesh'Botpack.Razor2'
00165	     PlayerViewScale=1.400000
00166	     BobDamping=0.975000
00167	     PickupViewMesh=LodMesh'Botpack.RazPick2'
00168	     ThirdPersonMesh=LodMesh'Botpack.Razor3rd2'
00169	     StatusIcon=Texture'Botpack.Icons.UseRazor'
00170	     PickupSound=Sound'UnrealShare.Pickups.WeaponPickup'
00171	     Icon=Texture'Botpack.Icons.UseRazor'
00172	     Mesh=LodMesh'Botpack.RazPick2'
00173	     bNoSmooth=False
00174	     CollisionRadius=34.000000
00175	     CollisionHeight=7.000000
00176	     Mass=50.000000
00177	}

End Source Code