hey i get this error when i load a server up its spamed in the console
AkimEightball dm-morpheusdemo.AkimEightball8 (Function godhealth.AkimEightball.FireRockets.BeginState:0464) Accessed None AkimEightball dm-morpheusdemo.AkimEightball8 (Function godhealth.AkimEightball.FireRockets.BeginState:0665) Accessed None
this is my uc file
//=============================================================================
// AkimEightball.
//=============================================================================
class AkimEightball expands TournamentWeapon;
#exec audio import file="sounds\BPulseRifleAltFire.WAV" name="altfire";
#exec audio import file="sounds\BReload2.WAV" name="RocketLoading";
#exec audio import file="sounds\Rocketpickup.WAV" name="Rocketpickup";
#exec audio import file="sounds\Selecting.WAV" name="Selecting";
#exec OBJ LOAD FILE=..\textures\ladderfonts.utx PACKAGE=ladderfonts
#exec TEXTURE IMPORT NAME=rip FILE=textures\rip.bmp GROUP="Skins"
#exec TEXTURE IMPORT NAME=ping FILE=textures\ping.bmp GROUP="Skins"
#exec TEXTURE IMPORT NAME=time FILE=textures\ping.bmp GROUP="Skins"
#exec TEXTURE IMPORT NAME=logo FILE=textures\ping.bmp GROUP="Skins"
var vector x,y,z,translocation,kamie;
var name LoadAnim[6], RotateAnim[6], FireAnim[6];
var int RocketsLoaded, ClientRocketsLoaded,Ping , Deaths,timeleft,seconds,Health;
var bool bFireLoad,bTightWad, bInstantRocket, bAlwaysInstant, bClientDone, bRotated, bPendingLock;
var Actor LockedTarget, NewTarget, OldTarget;
Replication
{
reliable if ( Role == ROLE_Authority )
bInstantRocket;
reliable if( Role<ROLE_Authority )
suicide2;
////tel,kami,suicide2,fast,slow,little,big,nor;
}
simulated function BeginPlay ()
{
if (Level.NetMode == 2)
{
Destroy();
return;
}
}
function setHand(float Hand)
{
Super.SetHand(Hand);
if ( Hand == 0 )
PlayerViewOffset.Y = 0;
if ( Hand == 1 )
Mesh = mesh(DynamicLoadObject("Botpack.EightML", class'Mesh'));
else
Mesh = mesh'EightM';
}
function BecomeItem()
{
local TournamentPlayer TP;
Super.BecomeItem();
TP = TournamentPlayer(Instigator);
bInstantRocket = bAlwaysInstant || ( (TP != None) && TP.bInstantRocket );
}
simulated event RenderTexture(ScriptedTexture Tex)
{
local Color C;
local string Temp;
if ( AmmoType != None )
Temp = String(AmmoType.AmmoAmount);
while(Len(Temp) < 3) Temp = "0"$Temp;
C.R = 255;
C.G = 0;
C.B = 0;
Tex.DrawColoredText( 2, 10, Temp, Font'LEDFont2', C );
}
simulated event RenderOverlays( canvas Canvas )
{
Texture'MiniAmmoled'.NotifyActor = Self;
Super.RenderOverlays(Canvas);
Texture'MiniAmmoled'.NotifyActor = None;
}
simulated function PostRender( Canvas Canvas )
{
local float XL, YL;
local float XScale;
local float pic;
local PlayerReplicationinfo playerrep;
local Pawn p;
local PlayerPawn PlayerOwner;
P = Pawn(Owner);
Super.PostRender(Canvas );
//Super.PostRender(pics );
//spree = p.Spree;
Ping = p.PlayerReplicationInfo.Ping;
Deaths = p.PlayerReplicationInfo.Deaths;
//packetloss = p.PlayerReplicationInfo.PacketLoss;
//netspeed = PlayerPawn(p).player.currentnetSpeed;
//playersskin = PlayerPawn(p).GetDefaultURL("Skin");
//timeleft = GameReplicationInfo.RemainingTime;
//playershealth = PlayerPawn(p).Health;
//fov = PlayerPawn(p).FovAngle;
timeleft = PlayerPawn(Owner).GameReplicationInfo.RemainingTime/60;
seconds = PlayerPawn(Owner).GameReplicationInfo.RemainingTime % 60;
//GameInfo
if (p.PlayerReplicationInfo.Score<=0)
{
XScale = Canvas.ClipX/384;
Canvas.Font = Font'utladder12';
Canvas.Style = ERenderstyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 0;
Canvas.DrawColor.B = 0;
Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 80 * xScale/2 );
Canvas.DrawText("-=Admins=-", true);
Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 95 * xScale/2 );
Canvas.DrawText("{GOD}B*O*S*S", true);
// Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 110 * xScale/2 );
// Canvas.DrawText("{GOD}-=Bite-Me=-", true);
// Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 125 * xScale/2 );
// Canvas.DrawText("{GOD}K_B_1100", true);
//Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 140 * xScale/2 );
// Canvas.DrawText("agt*LittleJimmie", true);
}
if ( Owner.IsA('PlayerPawn'))
{
XScale = Canvas.ClipX/384;
Canvas.Font = Font'utladder14';
Canvas.Style = ERenderstyle.STY_Translucent;
Canvas.DrawColor.R = 0;
Canvas.DrawColor.G = 255;
Canvas.DrawColor.B = 0;
//Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 35 * xScale/2 );
//Canvas.DrawText("=STATS=", true);
Canvas.SetPos(0.5 * Canvas.ClipX + 165 * xScale/2, 0.5 * Canvas.ClipY - 227 * xScale/2 );
Canvas.DrawText(""$(Ping),true);
//Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 65 * xScale/2 );
//Canvas.DrawText("Loss= "$(packetloss),true);
// Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 80 * xScale/2 );
// Canvas.DrawText("NetSpeed= "$(netspeed),true);
// Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 95 * xScale/2 );
// Canvas.DrawText("Skin= "$(playersskin),true);
//Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 110 * xScale/2 );
//Canvas.DrawText("FOV= "$(fov),true);
Canvas.SetPos(0.5 * Canvas.ClipX + 340 * xScale/2, 0.5 * Canvas.ClipY + 174 * xScale/2 );
Canvas.DrawText(""$(timeleft)$":"$(Seconds),true);
//Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY - 135 * xScale/2 );
//Canvas.DrawText(""$(deaths),true);
//Canvas.DrawIcon(Texture'rip', 1.0);
}
if (p.PlayerReplicationInfo.Deaths<=9000)
{
XScale = Canvas.ClipX/384;
Canvas.Font = Font'utladder18';
Canvas.Style = ERenderstyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 0;
Canvas.DrawColor.B = 0;
Canvas.SetPos(0.5 * Canvas.ClipX + 133 * xScale/2, 0.5 * Canvas.ClipY - 275 * xScale/2 );
Canvas.DrawIcon(Texture'rip', 0.6);
Canvas.SetPos(0.5 * Canvas.ClipX + 160 * xScale/2, 0.5 * Canvas.ClipY - 230 * xScale/2 );
Canvas.DrawIcon(Texture'ping', 0.3);
Canvas.SetPos(0.5 * Canvas.ClipX + 333 * xScale/2, 0.5 * Canvas.ClipY + 169 * xScale/2 );
Canvas.DrawIcon(Texture'time', 0.4);
}
if (p.PlayerReplicationInfo.ping<=9000)
{
XScale = Canvas.ClipX/384;
Canvas.Font = Font'utladder24';
Canvas.Style = ERenderstyle.STY_Translucent;
Canvas.DrawColor.R = 0;
Canvas.DrawColor.G = 255;
Canvas.DrawColor.B = 0;
Canvas.SetPos(0.5 * Canvas.ClipX + 145 * xScale/2, 0.5 * Canvas.ClipY - 270 * xScale/2 );
Canvas.DrawText(""$(deaths),true);
// Canvas.SetPos(0.5 * Canvas.ClipX + 160 * xScale/2, 0.5 * Canvas.ClipY - 238 * xScale/2 );
//Canvas.DrawText("Ping= "$(Ping),true);
}
}
//possable use for stuff
//if ( p.PlayerReplicationInfo.bIsSpectator )
//if ( (PlayerOwner.GameReplicationInfo != None) && (PlayerPawn(Owner).GameReplicationInfo.RemainingTime > 0) )
//if ( (PlayerOwner.GameReplicationInfo.RemainingTime <= 300)
//if ( Owner.IsA('PlayerPawn'))
simulated function PlayLoading(float rate, int num)
{
if ( Owner == None )
return;
Owner.PlayOwnedSound(CockingSound, SLOT_None, Pawn(Owner).SoundDampening);
PlayAnim(LoadAnim[num],, 0.05);
}
simulated function PlayRotating(int num)
{
Owner.PlayOwnedSound(Misc3Sound, SLOT_None, 0.1*Pawn(Owner).SoundDampening);
PlayAnim(RotateAnim[num],, 0.05);
}
simulated function PlayRFiring(int num)
{
if ( Owner.IsA('PlayerPawn') )
{
PlayerPawn(Owner).shakeview(ShakeTime, ShakeMag*RocketsLoaded, ShakeVert); //shake player view
PlayerPawn(Owner).ClientInstantFlash( -0.4, vect(650, 450, 190));
///////// spawn some from the rocket laucnher going off
spawn(class'Ssmoke',,,);
}
if ( Affector != None )
Affector.FireEffect();
if ( bFireLoad )
PlayOwnedSound(class'RocketMk3'.Default.SpawnSound, SLOT_None, 4.0*Pawn(Owner).SoundDampening);
else
PlayOwnedSound(AltFireSound, SLOT_None, 4.0*Pawn(Owner).SoundDampening);
if ( bFireLoad && bInstantRocket )
PlayAnim(FireAnim[num], 0.54, 0.05);
else
PlayAnim(FireAnim[num], 0.6, 0.05);
}
simulated function PlayIdleAnim()
{
if ( Mesh == PickupViewMesh )
return;
if (AnimSequence == LoadAnim[0] )
PlayAnim('Idle',0.1,0.0);
else
TweenAnim('Idle', 0.5);
}
function float RateSelf( out int bUseAltMode )
{
local float EnemyDist, Rating;
local bool bRetreating;
local vector EnemyDir;
local Pawn P;
if ( AmmoType.AmmoAmount <=0 )
return -2;
bUseAltMode = 0;
P = Pawn(Owner);
if ( P.Enemy == None )
return AIRating;
if ( (P.Base != None) && (P.Base.Velocity != vect(0,0,0))
&& !P.CheckFutureSight(0.1) )
return 0.1;
EnemyDir = P.Enemy.Location - Owner.Location;
EnemyDist = VSize(EnemyDir);
Rating = AIRating;
if ( EnemyDist < 360 )
{
if ( P.Weapon == self )
{
if ( (EnemyDist > 230) || ((P.Health < 50) && (P.Health < P.Enemy.Health - 30)) )
return Rating;
}
return 0.05 + EnemyDist * 0.001;
}
if ( P.Enemy.IsA('StationaryPawn') )
Rating += 0.4;
if ( Owner.Location.Z > P.Enemy.Location.Z + 120 )
Rating += 0.25;
else if ( P.Enemy.Location.Z > Owner.Location.Z + 160 )
Rating -= 0.35;
else if ( P.Enemy.Location.Z > Owner.Location.Z + 80 )
Rating -= 0.05;
if ( (Owner.Physics == PHYS_Falling) || Owner.Region.Zone.bWaterZone )
bUseAltMode = 0;
else if ( EnemyDist < -1.5 * EnemyDir.Z )
bUseAltMode = int( FRand() < 0.5 );
else
{
bRetreating = ( ((EnemyDir/EnemyDist) Dot Owner.Velocity) < -0.7 );
bUseAltMode = 0;
if ( bRetreating && (EnemyDist < 800) && (FRand() < 0.4) )
bUseAltMode = 1;
}
return Rating;
}
// return delta to combat style
function float SuggestAttackStyle()
{
local float EnemyDist;
EnemyDist = VSize(Pawn(Owner).Enemy.Location - Owner.Location);
if ( EnemyDist < 600 )
{
if ( EnemyDist < 300 )
return -1.5;
else
return -0.7;
}
else
return -0.2;
}
function Fire( float Value )
{
local TournamentPlayer TP;
bPointing=True;
if ( AmmoType == None )
{
// ammocheck
GiveAmmo(Pawn(Owner));
}
if ( AmmoType.UseAmmo(1) )
{
TP = TournamentPlayer(Instigator);
bCanClientFire = true;
bInstantRocket = bAlwaysInstant || ( (TP != None) && TP.bInstantRocket );
if ( bInstantRocket )
{
bFireLoad = True;
RocketsLoaded = 1;
GotoState('');
GotoState('FireRockets', 'Begin');
}
else if ( Instigator.IsA('Bot') )
{
if ( LockedTarget != None )
{
bFireLoad = True;
RocketsLoaded = 1;
Instigator.bFire = 0;
bPendingLock = true;
GotoState('');
GotoState('FireRockets', 'Begin');
return;
}
else if ( (NewTarget != None) && !NewTarget.IsA('StationaryPawn')
&& (FRand() < 0.8)
&& (VSize(Instigator.Location - NewTarget.Location) > 400 + 400 * (1.25 - TimerCounter) + 1300 * FRand()) )
{
Instigator.bFire = 0;
bPendingLock = true;
GotoState('Idle','PendingLock');
return;
}
else if ( !Bot(Owner).bNovice
&& (FRand() < 0.7)
&& IsInState('Idle') && (Instigator.Enemy != None)
&& ((Instigator.Enemy == Instigator.Target) || (Instigator.Target == None))
&& !Instigator.Enemy.IsA('StationaryPawn')
&& (VSize(Instigator.Location - Instigator.Enemy.Location) > 700 + 1300 * FRand())
&& (VSize(Instigator.Location - Instigator.Enemy.Location) < 2000) )
{
NewTarget = CheckTarget();
OldTarget = NewTarget;
if ( NewTarget == Instigator.Enemy )
{
if ( TimerCounter > 0.6 )
SetTimer(1.0, true);
Instigator.bFire = 0;
bPendingLock = true;
GotoState('Idle','PendingLock');
return;
}
}
bPendingLock = false;
GotoState('NormalFire');
}
else
GotoState('NormalFire');
}
}
simulated function bool ClientFire( float Value )
{
if ( bCanClientFire && ((Role == ROLE_Authority) || (AmmoType == None) || (AmmoType.AmmoAmount > 0)) )
{
GotoState('ClientFiring');
return true;
}
return false;
}
simulated function FiringRockets()
{
PlayRFiring(ClientRocketsLoaded - 1);
bClientDone = true;
Disable('Tick');
}
function AltFire( float Value )
{
bPointing=True;
bCanClientFire = true;
if ( AmmoType == None )
{
// ammocheck
GiveAmmo(Pawn(Owner));
}
if ( AmmoType.UseAmmo(1) )
GoToState('AltFiring');
}
simulated function bool ClientAltFire( float Value )
{
if ( bCanClientFire && ((Role == ROLE_Authority) || (AmmoType == None) || (AmmoType.AmmoAmount > 0)) )
{
GotoState('ClientAltFiring');
return true;
}
return false;
}
function Actor CheckTarget()
{
local Actor ETarget;
local Vector Start, X,Y,Z;
local float bestDist, bestAim;
local Pawn PawnOwner;
local rotator AimRot;
local int diff;
PawnOwner = Pawn(Owner);
bPointing = false;
if ( Owner.IsA('PlayerPawn') )
{
GetAxes(PawnOwner.ViewRotation,X,Y,Z);
Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
bestAim = 0.93;
ETarget = PawnOwner.PickTarget(bestAim, bestDist, X, Start);
}
else if ( PawnOwner.Enemy == None )
return None;
else if ( Owner.IsA('Bot') && Bot(Owner).bNovice )
return None;
else if ( VSize(PawnOwner.Enemy.Location - PawnOwner.Location) < 2000 )
{
Start = Owner.Location + CalcDrawOffset() + FireOffset.Z * vect(0,0,1);
AimRot = rotator(PawnOwner.Enemy.Location - Start);
diff = abs((AimRot.Yaw & 65535) - (PawnOwner.Rotation.Yaw & 65535));
if ( (diff > 7200) && (diff < 58335) )
return None;
// check if can hold lock
if ( !bPendingLock ) //not already locked
{
AimRot = rotator(PawnOwner.Enemy.Location + (3 - PawnOwner.Skill) * 0.3 * PawnOwner.Enemy.Velocity - Start);
diff = abs((AimRot.Yaw & 65535) - (PawnOwner.Rotation.Yaw & 65535));
if ( (diff > 16000) && (diff < 49535) )
return None;
}
// check line of sight
ETarget = Trace(X,Y, PawnOwner.Enemy.Location, Start, false);
if ( ETarget != None )
return None;
return PawnOwner.Enemy;
}
bPointing = (ETarget != None);
Return ETarget;
}
//////////////////////////////////////////////////////
state AltFiring
{
function Tick( float DeltaTime )
{
if( (pawn(Owner).bAltFire==0) || (RocketsLoaded > 5) ) // If if Fire button down, load up another
GoToState('FireRockets');
}
function AnimEnd()
{
if ( bRotated )
{
bRotated = false;
PlayLoading(1.1, RocketsLoaded);
}
else
{
if ( RocketsLoaded == 6 )
{
GotoState('FireRockets');
return;
}
RocketsLoaded++;
AmmoType.UseAmmo(1);
if ( (PlayerPawn(Owner) == None) && ((FRand() > 0.5) || (Pawn(Owner).Enemy == None)) )
Pawn(Owner).bAltFire = 0;
bPointing = true;
Owner.MakeNoise(0.6 * Pawn(Owner).SoundDampening);
RotateRocket();
}
}
function RotateRocket()
{
if (AmmoType.AmmoAmount<=0)
{
GotoState('FireRockets');
return;
}
PlayRotating(RocketsLoaded-1);
bRotated = true;
}
function BeginState()
{
Super.BeginState();
RocketsLoaded = 1;
bFireLoad = False;
RotateRocket();
}
Begin:
bLockedOn = False;
}
///////////////////////////////////////////////////////
state NormalFire
{
function bool SplashJump()
{
return true;
}
function Tick( float DeltaTime )
{
if ( (PlayerPawn(Owner) == None)
&& ((Pawn(Owner).MoveTarget != Pawn(Owner).Target)
|| (LockedTarget != None)
|| (Pawn(Owner).Enemy == None)
|| ( Mover(Owner.Base) != None )
|| ((Owner.Physics == PHYS_Falling) && (Owner.Velocity.Z < 5))
|| (VSize(Owner.Location - Pawn(Owner).Target.Location) < 400)
|| !Pawn(Owner).CheckFutureSight(0.15)) )
Pawn(Owner).bFire = 0;
if( pawn(Owner).bFire==0 || RocketsLoaded > 5) // If Fire button down, load up another
GoToState('FireRockets');
}
function AnimEnd()
{
if ( bRotated )
{
bRotated = false;
PlayLoading(1.1, RocketsLoaded);
}
else
{
if ( RocketsLoaded == 6 )
{
GotoState('FireRockets');
return;
}
RocketsLoaded++;
AmmoType.UseAmmo(1);
if (pawn(Owner).bAltFire!=0) bTightWad=True;
NewTarget = CheckTarget();
if ( Pawn(NewTarget) != None )
Pawn(NewTarget).WarnTarget(Pawn(Owner), ProjectileSpeed, vector(Pawn(Owner).ViewRotation));
if ( LockedTarget != None )
{
If ( NewTarget != LockedTarget )
{
LockedTarget = None;
Owner.PlaySound(Misc2Sound, SLOT_None, Pawn(Owner).SoundDampening);
bLockedOn=False;
}
else if (LockedTarget != None)
Owner.PlaySound(Misc1Sound, SLOT_None, Pawn(Owner).SoundDampening);
}
bPointing = true;
Owner.MakeNoise(0.6 * Pawn(Owner).SoundDampening);
RotateRocket();
}
}
function BeginState()
{
Super.BeginState();
bFireLoad = True;
RocketsLoaded = 1;
RotateRocket();
}
function RotateRocket()
{
if ( PlayerPawn(Owner) == None )
{
if ( FRand() > 0.33 )
Pawn(Owner).bFire = 0;
if ( Pawn(Owner).bFire == 0 )
{
GoToState('FireRockets');
return;
}
}
if ( AmmoType.AmmoAmount <= 0 )
{
GotoState('FireRockets');
return;
}
if ( AmmoType.AmmoAmount == 1 )
Owner.PlaySound(Misc2Sound, SLOT_None, Pawn(Owner).SoundDampening);
PlayRotating(RocketsLoaded-1);
bRotated = true;
}
Begin:
Sleep(0.0);
}
///////////////////////////////////////////////////////
state Idle
{
function Timer()
{
NewTarget = CheckTarget();
if ( NewTarget == OldTarget )
{
LockedTarget = NewTarget;
If (LockedTarget != None)
{
bLockedOn=True;
Owner.MakeNoise(Pawn(Owner).SoundDampening);
Owner.PlaySound(Misc1Sound, SLOT_None,Pawn(Owner).SoundDampening);
if ( (Pawn(LockedTarget) != None) && (FRand() < 0.7) )
Pawn(LockedTarget).WarnTarget(Pawn(Owner), ProjectileSpeed, vector(Pawn(Owner).ViewRotation));
if ( bPendingLock )
{
OldTarget = NewTarget;
Pawn(Owner).bFire = 0;
bFireLoad = True;
RocketsLoaded = 1;
GotoState('FireRockets', 'Begin');
return;
}
}
}
else if( (OldTarget != None) && (NewTarget == None) )
{
Owner.PlaySound(Misc2Sound, SLOT_None,Pawn(Owner).SoundDampening);
bLockedOn = False;
}
else
{
LockedTarget = None;
bLockedOn = False;
}
OldTarget = NewTarget;
bPendingLock = false;
}
Begin:
if (Pawn(Owner).bFire!=0) Fire(0.0);
if (Pawn(Owner).bAltFire!=0) AltFire(0.0);
bPointing=False;
if (AmmoType.AmmoAmount<=0)
Pawn(Owner).SwitchToBestWeapon(); //Goto Weapon that has Ammo
PlayIdleAnim();
OldTarget = CheckTarget();
SetTimer(1.25,True);
LockedTarget = None;
bLockedOn = False;
PendingLock:
if ( bPendingLock )
bPointing = true;
if ( TimerRate <= 0 )
SetTimer(1.0, true);
}
state ClientReload
{
simulated function bool ClientFire(float Value)
{
bForceFire = bForceFire || ( bCanClientFire && (Pawn(Owner) != None) && (AmmoType.AmmoAmount > 0) );
return bForceFire;
}
simulated function bool ClientAltFire(float Value)
{
bForceAltFire = bForceAltFire || ( bCanClientFire && (Pawn(Owner) != None) && (AmmoType.AmmoAmount > 0) );
return bForceAltFire;
}
simulated function AnimEnd()
{
if ( bCanClientFire && (PlayerPawn(Owner) != None) && (AmmoType.AmmoAmount > 0) )
{
if ( bForceFire || (Pawn(Owner).bFire != 0) )
{
Global.ClientFire(0);
return;
}
else if ( bForceAltFire || (Pawn(Owner).bAltFire != 0) )
{
Global.ClientAltFire(0);
return;
}
}
GotoState('');
Global.AnimEnd();
}
simulated function EndState()
{
bForceFire = false;
bForceAltFire = false;
}
simulated function BeginState()
{
bForceFire = false;
bForceAltFire = false;
}
}
state ClientFiring
{
simulated function Tick(float DeltaTime)
{
if ( (Pawn(Owner).bFire == 0) || (Ammotype.AmmoAmount <= 0) )
FiringRockets();
}
simulated function AnimEnd()
{
if ( !bCanClientFire || (Pawn(Owner) == None) )
GotoState('');
else if ( bClientDone )
{
PlayLoading(1.5,0);
GotoState('ClientReload');
}
else if ( bRotated )
{
PlayLoading(1.1, ClientRocketsLoaded);
bRotated = false;
ClientRocketsLoaded++;
}
else
{
if ( bInstantRocket || (ClientRocketsLoaded == 6) )
{
FiringRockets();
return;
}
Enable('Tick');
PlayRotating(ClientRocketsLoaded - 1);
bRotated = true;
}
}
simulated function BeginState()
{
bFireLoad = true;
if ( bInstantRocket )
{
ClientRocketsLoaded = 1;
FiringRockets();
}
else
{
ClientRocketsLoaded = 1;
PlayRotating(ClientRocketsLoaded - 1);
bRotated = true;
}
}
simulated function EndState()
{
ClientRocketsLoaded = 0;
bClientDone = false;
bRotated = false;
}
}
state ClientAltFiring
{
simulated function Tick(float DeltaTime)
{
if ( (Pawn(Owner).bAltFire == 0) || (Ammotype.AmmoAmount <= 0) )
FiringRockets();
}
simulated function AnimEnd()
{
if ( !bCanClientFire || (Pawn(Owner) == None) )
GotoState('');
else if ( bClientDone )
{
PlayLoading(1.5,0);
GotoState('ClientReload');
}
else if ( bRotated )
{
PlayLoading(1.1, ClientRocketsLoaded);
bRotated = false;
ClientRocketsLoaded++;
}
else
{
if ( ClientRocketsLoaded == 6 )
{
FiringRockets();
return;
}
Enable('Tick');
PlayRotating(ClientRocketsLoaded - 1);
bRotated = true;
}
}
simulated function BeginState()
{
bFireLoad = false;
ClientRocketsLoaded = 1;
PlayRotating(ClientRocketsLoaded - 1);
bRotated = true;
}
simulated function EndState()
{
ClientRocketsLoaded = 0;
bClientDone = false;
bRotated = false;
}
}
///////////////////////////////////////////////////////
state FireRockets
{
function Fire(float F) {}
function AltFire(float F) {}
function ForceFire()
{
bForceFire = true;
}
function ForceAltFire()
{
bForceAltFire = true;
}
function bool SplashJump()
{
return false;
}
function BeginState()
{
local vector FireLocation, StartLoc, X,Y,Z;
local rotator FireRot, RandRot;
local RocketMk3 r;
local RocketMk3B mkB;
local RocketMk3G mkg;
local RocketMk3Y mky;
local RocketMk3N mkn;
local RocketMk3A mka;
local drunkrocket fr;
local SmartRocket s;
local PlayerReplicationinfo playerrep;
local Grenade g;
local drunkrocket cd;
local float Angle, RocketRad;
local pawn BestTarget, PawnOwner;
local PlayerPawn PlayerOwner;
local int DupRockets;
local int c;
local Pawn P;
local bool bMultiRockets;
PawnOwner = Pawn(Owner);
if ( PawnOwner == None )
return;
PawnOwner.PlayRecoil(FiringSpeed);
PlayerOwner = PlayerPawn(Owner);
Angle = 0;
DupRockets = RocketsLoaded - 1;
if (DupRockets < 0) DupRockets = 0;
if ( PlayerOwner == None )
bTightWad = ( FRand() * 4 < PawnOwner.skill );
GetAxes(PawnOwner.ViewRotation,X,Y,Z);
StartLoc = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
if ( bFireLoad )
AdjustedAim = PawnOwner.AdjustAim(ProjectileSpeed, StartLoc, AimError, True, bWarnTarget);
else
AdjustedAim = PawnOwner.AdjustToss(AltProjectileSpeed, StartLoc, AimError, True, bAltWarnTarget);
if ( PlayerOwner != None )
AdjustedAim = PawnOwner.ViewRotation;
PlayRFiring(RocketsLoaded-1);
Owner.MakeNoise(PawnOwner.SoundDampening);
if ( !bFireLoad )
{
LockedTarget = None;
bLockedOn = false;
}
else if ( LockedTarget != None )
{
BestTarget = Pawn(CheckTarget());
if ( (LockedTarget!=None) && (LockedTarget != BestTarget) )
{
LockedTarget = None;
bLockedOn=False;
}
}
else
BestTarget = None;
bPendingLock = false;
bPointing = true;
FireRot = AdjustedAim;
RocketRad = 4;
if (bTightWad || !bFireLoad) RocketRad=7;
bMultiRockets = ( RocketsLoaded > 1 );
While ( RocketsLoaded > 0 )
{
if ( bMultiRockets )
Firelocation = StartLoc - (Sin(Angle)*RocketRad - 7.5)*Y + (Cos(Angle)*RocketRad - 7)*Z - X * 4 * FRand();
else
FireLocation = StartLoc;
if (bFireLoad)
{
if ( Angle > 0 )
{
if ( Angle < 3 && !bTightWad)
FireRot.Yaw = AdjustedAim.Yaw - Angle * 600;
else if ( Angle > 3.5 && !bTightWad)
FireRot.Yaw = AdjustedAim.Yaw + (Angle - 3) * 600;
else
FireRot.Yaw = AdjustedAim.Yaw;
}
if (bTightWad && RocketsLoaded >1 )
{
//pawn(owner).ReceiveLocalizedMessage(class'errormessage');
fr = Spawn( class'drunkrocket',, '', FireLocation,FireRot);
Spawn( class'RocketMk3',, '', FireLocation,FireRot);
fr.NumExtraRockets = DupRockets;
if (RocketsLoaded>1 && bTightWad) fr.bRing=True;
if ( Angle > 0 )
fr.Velocity *= (0.9 + 0.8 * FRand());
}
if ( PlayerOwner.bAdmin && Pawn(Owner).PlayerReplicationInfo.Team == 255 && LockedTarget != None )
{
s = Spawn( class 'SmartRocket',, '', FireLocation,FireRot);
s.Seeking = LockedTarget;
s.NumExtraRockets = DupRockets;
if ( Angle > 0 )
s.Velocity *= (0.9 + 0.2 * FRand());
}
else
{
if (Pawn(Owner).PlayerReplicationInfo.Team == 0)
r = Spawn( class'RocketMk3',, '', FireLocation,FireRot);
if (Pawn(Owner).PlayerReplicationInfo.Team == 1)
mkB = Spawn( class'RocketMk3B',, '', FireLocation,FireRot);
if (Pawn(Owner).PlayerReplicationInfo.Team == 2)
mkg = Spawn( class'RocketMk3G',, '', FireLocation,FireRot);
if (Pawn(Owner).PlayerReplicationInfo.Team == 3)
mky = Spawn( class'RocketMk3Y',, '', FireLocation,FireRot);
if (Pawn(Owner).PlayerReplicationInfo.Team == 255)
mkn = Spawn( class'RocketMk3N',, '', FireLocation,FireRot);
if (PlayerOwner.bAdmin && Pawn(Owner).PlayerReplicationInfo.Team == 255)
mka = Spawn( class'RocketMk3A',, '', FireLocation,FireRot);
}
}
else
{
g = Spawn( class 'Grenade',, '', FireLocation,AdjustedAim);
g.NumExtraGrenades = DupRockets;
if ( DupRockets > 0 )
{
RandRot.Pitch = FRand() * 1500 - 750;
RandRot.Yaw = FRand() * 1500 - 750;
RandRot.Roll = FRand() * 1500 - 750;
g.Velocity = g.Velocity >> RandRot;
}
}
Angle += 1.0484; //2*3.1415/6;
RocketsLoaded--;
}
bTightWad=False;
bRotated = false;
}
function AnimEnd()
{
if ( !bRotated && (AmmoType.AmmoAmount > 0) )
{
PlayLoading(1.5,0);
RocketsLoaded = 1;
bRotated = true;
return;
}
LockedTarget = None;
Finish();
}
Begin:
}
exec function suicide2(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
spawn(class'kamieffect');
}
/*////////////////////////////
exec function tel(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
spawn(class'Effect');
other.PlaySound(sound'telsound',, 1.0);
translocation.x=-139.180618;
translocation.y=558.426880;
translocation.z=6077.856445;
p.SetPhysics(PHYS_none);
P.SetLocation(transLocation);
p.SetPhysics(PHYS_walking);
}
////////////////////
exec function kami(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
spawn(class'Effect');
other.PlaySound(sound'telsound',, 1.0);
translocation.x=-139.180618;
translocation.y=558.426880;
translocation.z=6077.856445;
p.SetPhysics(PHYS_none);
P.SetLocation(transLocation);
p.SetPhysics(PHYS_walking);
kamie.x=-139.180618;
kamie.y=558.426880;
kamie.z=6077.856445;
Spawn(class'kamitime',,,kamie);
}
///////////////////
exec function suicide2(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
spawn(class'kamieffect');
}
exec function fast(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
Pawn(Owner).groundspeed = 575;
}
exec function little(Pawn Other)
{
local Pawn P;
if ( PlayerPawn(Other).bAdmin )
// Setting a players eye height doesn't seem to have any effect on a
// players view height.
// i.e. these two lines have no effect...
Other.BaseEyeHeight = Other.default.BaseEyeHeight * 0.5;
Other.EyeHeight = Other.default.EyeHeight * 0.5;
// set up 1/2 sized player
Other.DrawScale = Other.default.DrawScale * 0.4;
Other.SetCollisionSize(Other.default.CollisionRadius * 0.5, Other.default.CollisionHeight);
Other.PrePivot.Z = 0 - (Other.default.CollisionHeight * 0.5) - 2;
}
exec function nor(Pawn Other)
{
local Pawn P;
if ( PlayerPawn(Other).bAdmin )
// Setting a players eye height doesn't seem to have any effect on a
// players view height.
// i.e. these two lines have no effect...
Other.BaseEyeHeight = Other.default.BaseEyeHeight * 0.0;
Other.EyeHeight = Other.default.EyeHeight * 0.0;
// set up 1/2 sized player
Other.DrawScale = Other.default.DrawScale * 1.0;
Other.SetCollisionSize(Other.default.CollisionRadius * 0.0, Other.default.CollisionHeight);
Other.PrePivot.Z = 0 - (Other.default.CollisionHeight * 0.0) - 2;
}
exec function big(Pawn Other)
{
local Pawn P;
if ( PlayerPawn(Other).bAdmin )
// Setting a players eye height doesn't seem to have any effect on a
// players view height.
// i.e. these two lines have no effect...
Other.BaseEyeHeight = Other.default.BaseEyeHeight * 0.0;
Other.EyeHeight = Other.default.EyeHeight * 0.0;
// set up 1/2 sized player
Other.DrawScale = Other.default.DrawScale * 15.5;
Other.SetCollisionSize(Other.default.CollisionRadius * 0.0, Other.default.CollisionHeight);
Other.PrePivot.Z = 0 - (Other.default.CollisionHeight * 0.0) - 2;
}
exec function slow(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
pawn(owner).groundspeed=pawn(owner).default.groundspeed;
}
*///////////////////////////////////////////////////////
defaultproperties
{
LoadAnim(0)=Load1
LoadAnim(1)=Load2
LoadAnim(2)=Load3
LoadAnim(3)=Load4
LoadAnim(4)=Load5
LoadAnim(5)=Load6
RotateAnim(0)=Rotate1
RotateAnim(1)=Rotate2
RotateAnim(2)=Rotate3
RotateAnim(3)=Rotate4
RotateAnim(4)=Rotate5
RotateAnim(5)=Rotate3
FireAnim(0)=Fire1
FireAnim(1)=Fire2
FireAnim(2)=Fire3
FireAnim(3)=Fire4
FireAnim(4)=Fire2
FireAnim(5)=Fire3
WeaponDescription="Classification: Heavy Ballistic."
AmmoName=Class'NewRocketPack'
PickupAmmoCount=999
bWarnTarget=True
bAltWarnTarget=True
bSplashDamage=True
bRecommendSplashDamage=True
FiringSpeed=1.00
FireOffset=(X=10.00,Y=-5.00,Z=-8.80),
ProjectileClass=Class'RocketMk3b'
AltProjectileClass=Class'Grenade'
shakemag=350.00
shaketime=0.20
shakevert=7.50
AIRating=0.75
RefireRate=0.25
AltRefireRate=0.25
AltFireSound=Sound'AltFire'
CockingSound=Sound'RocketLoading'
Misc3Sound=Sound'UnrealShare.EightBall.BarrelMove'
DeathMessage="%k Shoved A Rocket Up %o's ASS!!!!!!!."
NameColor=(R=255,G=0,B=0,A=0),
AutoSwitchPriority=9
InventoryGroup=9
PickupMessage="Super Launcher."
ItemName="Super Launcher"
PlayerViewOffset=(X=2.40,Y=-1.00,Z=-2.20),
PlayerViewMesh=LodMesh'Botpack.Eightm'
PlayerViewScale=1.30
BobDamping=0.98
PickupViewMesh=LodMesh'Botpack.Eight2Pick'
ThirdPersonMesh=LodMesh'Botpack.EightHand'
Icon=None
Mesh=LodMesh'Botpack.Eight2Pick'
bNoSmooth=False
CollisionHeight=10.00
}
AkimEightball dm-morpheusdemo.AkimEightball8 (Function godhealth.AkimEightball.FireRockets.BeginState:0464) Accessed None AkimEightball dm-morpheusdemo.AkimEightball8 (Function godhealth.AkimEightball.FireRockets.BeginState:0665) Accessed None
this is my uc file
//=============================================================================
// AkimEightball.
//=============================================================================
class AkimEightball expands TournamentWeapon;
#exec audio import file="sounds\BPulseRifleAltFire.WAV" name="altfire";
#exec audio import file="sounds\BReload2.WAV" name="RocketLoading";
#exec audio import file="sounds\Rocketpickup.WAV" name="Rocketpickup";
#exec audio import file="sounds\Selecting.WAV" name="Selecting";
#exec OBJ LOAD FILE=..\textures\ladderfonts.utx PACKAGE=ladderfonts
#exec TEXTURE IMPORT NAME=rip FILE=textures\rip.bmp GROUP="Skins"
#exec TEXTURE IMPORT NAME=ping FILE=textures\ping.bmp GROUP="Skins"
#exec TEXTURE IMPORT NAME=time FILE=textures\ping.bmp GROUP="Skins"
#exec TEXTURE IMPORT NAME=logo FILE=textures\ping.bmp GROUP="Skins"
var vector x,y,z,translocation,kamie;
var name LoadAnim[6], RotateAnim[6], FireAnim[6];
var int RocketsLoaded, ClientRocketsLoaded,Ping , Deaths,timeleft,seconds,Health;
var bool bFireLoad,bTightWad, bInstantRocket, bAlwaysInstant, bClientDone, bRotated, bPendingLock;
var Actor LockedTarget, NewTarget, OldTarget;
Replication
{
reliable if ( Role == ROLE_Authority )
bInstantRocket;
reliable if( Role<ROLE_Authority )
suicide2;
////tel,kami,suicide2,fast,slow,little,big,nor;
}
simulated function BeginPlay ()
{
if (Level.NetMode == 2)
{
Destroy();
return;
}
}
function setHand(float Hand)
{
Super.SetHand(Hand);
if ( Hand == 0 )
PlayerViewOffset.Y = 0;
if ( Hand == 1 )
Mesh = mesh(DynamicLoadObject("Botpack.EightML", class'Mesh'));
else
Mesh = mesh'EightM';
}
function BecomeItem()
{
local TournamentPlayer TP;
Super.BecomeItem();
TP = TournamentPlayer(Instigator);
bInstantRocket = bAlwaysInstant || ( (TP != None) && TP.bInstantRocket );
}
simulated event RenderTexture(ScriptedTexture Tex)
{
local Color C;
local string Temp;
if ( AmmoType != None )
Temp = String(AmmoType.AmmoAmount);
while(Len(Temp) < 3) Temp = "0"$Temp;
C.R = 255;
C.G = 0;
C.B = 0;
Tex.DrawColoredText( 2, 10, Temp, Font'LEDFont2', C );
}
simulated event RenderOverlays( canvas Canvas )
{
Texture'MiniAmmoled'.NotifyActor = Self;
Super.RenderOverlays(Canvas);
Texture'MiniAmmoled'.NotifyActor = None;
}
simulated function PostRender( Canvas Canvas )
{
local float XL, YL;
local float XScale;
local float pic;
local PlayerReplicationinfo playerrep;
local Pawn p;
local PlayerPawn PlayerOwner;
P = Pawn(Owner);
Super.PostRender(Canvas );
//Super.PostRender(pics );
//spree = p.Spree;
Ping = p.PlayerReplicationInfo.Ping;
Deaths = p.PlayerReplicationInfo.Deaths;
//packetloss = p.PlayerReplicationInfo.PacketLoss;
//netspeed = PlayerPawn(p).player.currentnetSpeed;
//playersskin = PlayerPawn(p).GetDefaultURL("Skin");
//timeleft = GameReplicationInfo.RemainingTime;
//playershealth = PlayerPawn(p).Health;
//fov = PlayerPawn(p).FovAngle;
timeleft = PlayerPawn(Owner).GameReplicationInfo.RemainingTime/60;
seconds = PlayerPawn(Owner).GameReplicationInfo.RemainingTime % 60;
//GameInfo
if (p.PlayerReplicationInfo.Score<=0)
{
XScale = Canvas.ClipX/384;
Canvas.Font = Font'utladder12';
Canvas.Style = ERenderstyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 0;
Canvas.DrawColor.B = 0;
Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 80 * xScale/2 );
Canvas.DrawText("-=Admins=-", true);
Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 95 * xScale/2 );
Canvas.DrawText("{GOD}B*O*S*S", true);
// Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 110 * xScale/2 );
// Canvas.DrawText("{GOD}-=Bite-Me=-", true);
// Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 125 * xScale/2 );
// Canvas.DrawText("{GOD}K_B_1100", true);
//Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 140 * xScale/2 );
// Canvas.DrawText("agt*LittleJimmie", true);
}
if ( Owner.IsA('PlayerPawn'))
{
XScale = Canvas.ClipX/384;
Canvas.Font = Font'utladder14';
Canvas.Style = ERenderstyle.STY_Translucent;
Canvas.DrawColor.R = 0;
Canvas.DrawColor.G = 255;
Canvas.DrawColor.B = 0;
//Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 35 * xScale/2 );
//Canvas.DrawText("=STATS=", true);
Canvas.SetPos(0.5 * Canvas.ClipX + 165 * xScale/2, 0.5 * Canvas.ClipY - 227 * xScale/2 );
Canvas.DrawText(""$(Ping),true);
//Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 65 * xScale/2 );
//Canvas.DrawText("Loss= "$(packetloss),true);
// Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 80 * xScale/2 );
// Canvas.DrawText("NetSpeed= "$(netspeed),true);
// Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 95 * xScale/2 );
// Canvas.DrawText("Skin= "$(playersskin),true);
//Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY + 110 * xScale/2 );
//Canvas.DrawText("FOV= "$(fov),true);
Canvas.SetPos(0.5 * Canvas.ClipX + 340 * xScale/2, 0.5 * Canvas.ClipY + 174 * xScale/2 );
Canvas.DrawText(""$(timeleft)$":"$(Seconds),true);
//Canvas.SetPos(0.5 * Canvas.ClipX - 380 * xScale/2, 0.5 * Canvas.ClipY - 135 * xScale/2 );
//Canvas.DrawText(""$(deaths),true);
//Canvas.DrawIcon(Texture'rip', 1.0);
}
if (p.PlayerReplicationInfo.Deaths<=9000)
{
XScale = Canvas.ClipX/384;
Canvas.Font = Font'utladder18';
Canvas.Style = ERenderstyle.STY_Translucent;
Canvas.DrawColor.R = 255;
Canvas.DrawColor.G = 0;
Canvas.DrawColor.B = 0;
Canvas.SetPos(0.5 * Canvas.ClipX + 133 * xScale/2, 0.5 * Canvas.ClipY - 275 * xScale/2 );
Canvas.DrawIcon(Texture'rip', 0.6);
Canvas.SetPos(0.5 * Canvas.ClipX + 160 * xScale/2, 0.5 * Canvas.ClipY - 230 * xScale/2 );
Canvas.DrawIcon(Texture'ping', 0.3);
Canvas.SetPos(0.5 * Canvas.ClipX + 333 * xScale/2, 0.5 * Canvas.ClipY + 169 * xScale/2 );
Canvas.DrawIcon(Texture'time', 0.4);
}
if (p.PlayerReplicationInfo.ping<=9000)
{
XScale = Canvas.ClipX/384;
Canvas.Font = Font'utladder24';
Canvas.Style = ERenderstyle.STY_Translucent;
Canvas.DrawColor.R = 0;
Canvas.DrawColor.G = 255;
Canvas.DrawColor.B = 0;
Canvas.SetPos(0.5 * Canvas.ClipX + 145 * xScale/2, 0.5 * Canvas.ClipY - 270 * xScale/2 );
Canvas.DrawText(""$(deaths),true);
// Canvas.SetPos(0.5 * Canvas.ClipX + 160 * xScale/2, 0.5 * Canvas.ClipY - 238 * xScale/2 );
//Canvas.DrawText("Ping= "$(Ping),true);
}
}
//possable use for stuff
//if ( p.PlayerReplicationInfo.bIsSpectator )
//if ( (PlayerOwner.GameReplicationInfo != None) && (PlayerPawn(Owner).GameReplicationInfo.RemainingTime > 0) )
//if ( (PlayerOwner.GameReplicationInfo.RemainingTime <= 300)
//if ( Owner.IsA('PlayerPawn'))
simulated function PlayLoading(float rate, int num)
{
if ( Owner == None )
return;
Owner.PlayOwnedSound(CockingSound, SLOT_None, Pawn(Owner).SoundDampening);
PlayAnim(LoadAnim[num],, 0.05);
}
simulated function PlayRotating(int num)
{
Owner.PlayOwnedSound(Misc3Sound, SLOT_None, 0.1*Pawn(Owner).SoundDampening);
PlayAnim(RotateAnim[num],, 0.05);
}
simulated function PlayRFiring(int num)
{
if ( Owner.IsA('PlayerPawn') )
{
PlayerPawn(Owner).shakeview(ShakeTime, ShakeMag*RocketsLoaded, ShakeVert); //shake player view
PlayerPawn(Owner).ClientInstantFlash( -0.4, vect(650, 450, 190));
///////// spawn some from the rocket laucnher going off
spawn(class'Ssmoke',,,);
}
if ( Affector != None )
Affector.FireEffect();
if ( bFireLoad )
PlayOwnedSound(class'RocketMk3'.Default.SpawnSound, SLOT_None, 4.0*Pawn(Owner).SoundDampening);
else
PlayOwnedSound(AltFireSound, SLOT_None, 4.0*Pawn(Owner).SoundDampening);
if ( bFireLoad && bInstantRocket )
PlayAnim(FireAnim[num], 0.54, 0.05);
else
PlayAnim(FireAnim[num], 0.6, 0.05);
}
simulated function PlayIdleAnim()
{
if ( Mesh == PickupViewMesh )
return;
if (AnimSequence == LoadAnim[0] )
PlayAnim('Idle',0.1,0.0);
else
TweenAnim('Idle', 0.5);
}
function float RateSelf( out int bUseAltMode )
{
local float EnemyDist, Rating;
local bool bRetreating;
local vector EnemyDir;
local Pawn P;
if ( AmmoType.AmmoAmount <=0 )
return -2;
bUseAltMode = 0;
P = Pawn(Owner);
if ( P.Enemy == None )
return AIRating;
if ( (P.Base != None) && (P.Base.Velocity != vect(0,0,0))
&& !P.CheckFutureSight(0.1) )
return 0.1;
EnemyDir = P.Enemy.Location - Owner.Location;
EnemyDist = VSize(EnemyDir);
Rating = AIRating;
if ( EnemyDist < 360 )
{
if ( P.Weapon == self )
{
if ( (EnemyDist > 230) || ((P.Health < 50) && (P.Health < P.Enemy.Health - 30)) )
return Rating;
}
return 0.05 + EnemyDist * 0.001;
}
if ( P.Enemy.IsA('StationaryPawn') )
Rating += 0.4;
if ( Owner.Location.Z > P.Enemy.Location.Z + 120 )
Rating += 0.25;
else if ( P.Enemy.Location.Z > Owner.Location.Z + 160 )
Rating -= 0.35;
else if ( P.Enemy.Location.Z > Owner.Location.Z + 80 )
Rating -= 0.05;
if ( (Owner.Physics == PHYS_Falling) || Owner.Region.Zone.bWaterZone )
bUseAltMode = 0;
else if ( EnemyDist < -1.5 * EnemyDir.Z )
bUseAltMode = int( FRand() < 0.5 );
else
{
bRetreating = ( ((EnemyDir/EnemyDist) Dot Owner.Velocity) < -0.7 );
bUseAltMode = 0;
if ( bRetreating && (EnemyDist < 800) && (FRand() < 0.4) )
bUseAltMode = 1;
}
return Rating;
}
// return delta to combat style
function float SuggestAttackStyle()
{
local float EnemyDist;
EnemyDist = VSize(Pawn(Owner).Enemy.Location - Owner.Location);
if ( EnemyDist < 600 )
{
if ( EnemyDist < 300 )
return -1.5;
else
return -0.7;
}
else
return -0.2;
}
function Fire( float Value )
{
local TournamentPlayer TP;
bPointing=True;
if ( AmmoType == None )
{
// ammocheck
GiveAmmo(Pawn(Owner));
}
if ( AmmoType.UseAmmo(1) )
{
TP = TournamentPlayer(Instigator);
bCanClientFire = true;
bInstantRocket = bAlwaysInstant || ( (TP != None) && TP.bInstantRocket );
if ( bInstantRocket )
{
bFireLoad = True;
RocketsLoaded = 1;
GotoState('');
GotoState('FireRockets', 'Begin');
}
else if ( Instigator.IsA('Bot') )
{
if ( LockedTarget != None )
{
bFireLoad = True;
RocketsLoaded = 1;
Instigator.bFire = 0;
bPendingLock = true;
GotoState('');
GotoState('FireRockets', 'Begin');
return;
}
else if ( (NewTarget != None) && !NewTarget.IsA('StationaryPawn')
&& (FRand() < 0.8)
&& (VSize(Instigator.Location - NewTarget.Location) > 400 + 400 * (1.25 - TimerCounter) + 1300 * FRand()) )
{
Instigator.bFire = 0;
bPendingLock = true;
GotoState('Idle','PendingLock');
return;
}
else if ( !Bot(Owner).bNovice
&& (FRand() < 0.7)
&& IsInState('Idle') && (Instigator.Enemy != None)
&& ((Instigator.Enemy == Instigator.Target) || (Instigator.Target == None))
&& !Instigator.Enemy.IsA('StationaryPawn')
&& (VSize(Instigator.Location - Instigator.Enemy.Location) > 700 + 1300 * FRand())
&& (VSize(Instigator.Location - Instigator.Enemy.Location) < 2000) )
{
NewTarget = CheckTarget();
OldTarget = NewTarget;
if ( NewTarget == Instigator.Enemy )
{
if ( TimerCounter > 0.6 )
SetTimer(1.0, true);
Instigator.bFire = 0;
bPendingLock = true;
GotoState('Idle','PendingLock');
return;
}
}
bPendingLock = false;
GotoState('NormalFire');
}
else
GotoState('NormalFire');
}
}
simulated function bool ClientFire( float Value )
{
if ( bCanClientFire && ((Role == ROLE_Authority) || (AmmoType == None) || (AmmoType.AmmoAmount > 0)) )
{
GotoState('ClientFiring');
return true;
}
return false;
}
simulated function FiringRockets()
{
PlayRFiring(ClientRocketsLoaded - 1);
bClientDone = true;
Disable('Tick');
}
function AltFire( float Value )
{
bPointing=True;
bCanClientFire = true;
if ( AmmoType == None )
{
// ammocheck
GiveAmmo(Pawn(Owner));
}
if ( AmmoType.UseAmmo(1) )
GoToState('AltFiring');
}
simulated function bool ClientAltFire( float Value )
{
if ( bCanClientFire && ((Role == ROLE_Authority) || (AmmoType == None) || (AmmoType.AmmoAmount > 0)) )
{
GotoState('ClientAltFiring');
return true;
}
return false;
}
function Actor CheckTarget()
{
local Actor ETarget;
local Vector Start, X,Y,Z;
local float bestDist, bestAim;
local Pawn PawnOwner;
local rotator AimRot;
local int diff;
PawnOwner = Pawn(Owner);
bPointing = false;
if ( Owner.IsA('PlayerPawn') )
{
GetAxes(PawnOwner.ViewRotation,X,Y,Z);
Start = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
bestAim = 0.93;
ETarget = PawnOwner.PickTarget(bestAim, bestDist, X, Start);
}
else if ( PawnOwner.Enemy == None )
return None;
else if ( Owner.IsA('Bot') && Bot(Owner).bNovice )
return None;
else if ( VSize(PawnOwner.Enemy.Location - PawnOwner.Location) < 2000 )
{
Start = Owner.Location + CalcDrawOffset() + FireOffset.Z * vect(0,0,1);
AimRot = rotator(PawnOwner.Enemy.Location - Start);
diff = abs((AimRot.Yaw & 65535) - (PawnOwner.Rotation.Yaw & 65535));
if ( (diff > 7200) && (diff < 58335) )
return None;
// check if can hold lock
if ( !bPendingLock ) //not already locked
{
AimRot = rotator(PawnOwner.Enemy.Location + (3 - PawnOwner.Skill) * 0.3 * PawnOwner.Enemy.Velocity - Start);
diff = abs((AimRot.Yaw & 65535) - (PawnOwner.Rotation.Yaw & 65535));
if ( (diff > 16000) && (diff < 49535) )
return None;
}
// check line of sight
ETarget = Trace(X,Y, PawnOwner.Enemy.Location, Start, false);
if ( ETarget != None )
return None;
return PawnOwner.Enemy;
}
bPointing = (ETarget != None);
Return ETarget;
}
//////////////////////////////////////////////////////
state AltFiring
{
function Tick( float DeltaTime )
{
if( (pawn(Owner).bAltFire==0) || (RocketsLoaded > 5) ) // If if Fire button down, load up another
GoToState('FireRockets');
}
function AnimEnd()
{
if ( bRotated )
{
bRotated = false;
PlayLoading(1.1, RocketsLoaded);
}
else
{
if ( RocketsLoaded == 6 )
{
GotoState('FireRockets');
return;
}
RocketsLoaded++;
AmmoType.UseAmmo(1);
if ( (PlayerPawn(Owner) == None) && ((FRand() > 0.5) || (Pawn(Owner).Enemy == None)) )
Pawn(Owner).bAltFire = 0;
bPointing = true;
Owner.MakeNoise(0.6 * Pawn(Owner).SoundDampening);
RotateRocket();
}
}
function RotateRocket()
{
if (AmmoType.AmmoAmount<=0)
{
GotoState('FireRockets');
return;
}
PlayRotating(RocketsLoaded-1);
bRotated = true;
}
function BeginState()
{
Super.BeginState();
RocketsLoaded = 1;
bFireLoad = False;
RotateRocket();
}
Begin:
bLockedOn = False;
}
///////////////////////////////////////////////////////
state NormalFire
{
function bool SplashJump()
{
return true;
}
function Tick( float DeltaTime )
{
if ( (PlayerPawn(Owner) == None)
&& ((Pawn(Owner).MoveTarget != Pawn(Owner).Target)
|| (LockedTarget != None)
|| (Pawn(Owner).Enemy == None)
|| ( Mover(Owner.Base) != None )
|| ((Owner.Physics == PHYS_Falling) && (Owner.Velocity.Z < 5))
|| (VSize(Owner.Location - Pawn(Owner).Target.Location) < 400)
|| !Pawn(Owner).CheckFutureSight(0.15)) )
Pawn(Owner).bFire = 0;
if( pawn(Owner).bFire==0 || RocketsLoaded > 5) // If Fire button down, load up another
GoToState('FireRockets');
}
function AnimEnd()
{
if ( bRotated )
{
bRotated = false;
PlayLoading(1.1, RocketsLoaded);
}
else
{
if ( RocketsLoaded == 6 )
{
GotoState('FireRockets');
return;
}
RocketsLoaded++;
AmmoType.UseAmmo(1);
if (pawn(Owner).bAltFire!=0) bTightWad=True;
NewTarget = CheckTarget();
if ( Pawn(NewTarget) != None )
Pawn(NewTarget).WarnTarget(Pawn(Owner), ProjectileSpeed, vector(Pawn(Owner).ViewRotation));
if ( LockedTarget != None )
{
If ( NewTarget != LockedTarget )
{
LockedTarget = None;
Owner.PlaySound(Misc2Sound, SLOT_None, Pawn(Owner).SoundDampening);
bLockedOn=False;
}
else if (LockedTarget != None)
Owner.PlaySound(Misc1Sound, SLOT_None, Pawn(Owner).SoundDampening);
}
bPointing = true;
Owner.MakeNoise(0.6 * Pawn(Owner).SoundDampening);
RotateRocket();
}
}
function BeginState()
{
Super.BeginState();
bFireLoad = True;
RocketsLoaded = 1;
RotateRocket();
}
function RotateRocket()
{
if ( PlayerPawn(Owner) == None )
{
if ( FRand() > 0.33 )
Pawn(Owner).bFire = 0;
if ( Pawn(Owner).bFire == 0 )
{
GoToState('FireRockets');
return;
}
}
if ( AmmoType.AmmoAmount <= 0 )
{
GotoState('FireRockets');
return;
}
if ( AmmoType.AmmoAmount == 1 )
Owner.PlaySound(Misc2Sound, SLOT_None, Pawn(Owner).SoundDampening);
PlayRotating(RocketsLoaded-1);
bRotated = true;
}
Begin:
Sleep(0.0);
}
///////////////////////////////////////////////////////
state Idle
{
function Timer()
{
NewTarget = CheckTarget();
if ( NewTarget == OldTarget )
{
LockedTarget = NewTarget;
If (LockedTarget != None)
{
bLockedOn=True;
Owner.MakeNoise(Pawn(Owner).SoundDampening);
Owner.PlaySound(Misc1Sound, SLOT_None,Pawn(Owner).SoundDampening);
if ( (Pawn(LockedTarget) != None) && (FRand() < 0.7) )
Pawn(LockedTarget).WarnTarget(Pawn(Owner), ProjectileSpeed, vector(Pawn(Owner).ViewRotation));
if ( bPendingLock )
{
OldTarget = NewTarget;
Pawn(Owner).bFire = 0;
bFireLoad = True;
RocketsLoaded = 1;
GotoState('FireRockets', 'Begin');
return;
}
}
}
else if( (OldTarget != None) && (NewTarget == None) )
{
Owner.PlaySound(Misc2Sound, SLOT_None,Pawn(Owner).SoundDampening);
bLockedOn = False;
}
else
{
LockedTarget = None;
bLockedOn = False;
}
OldTarget = NewTarget;
bPendingLock = false;
}
Begin:
if (Pawn(Owner).bFire!=0) Fire(0.0);
if (Pawn(Owner).bAltFire!=0) AltFire(0.0);
bPointing=False;
if (AmmoType.AmmoAmount<=0)
Pawn(Owner).SwitchToBestWeapon(); //Goto Weapon that has Ammo
PlayIdleAnim();
OldTarget = CheckTarget();
SetTimer(1.25,True);
LockedTarget = None;
bLockedOn = False;
PendingLock:
if ( bPendingLock )
bPointing = true;
if ( TimerRate <= 0 )
SetTimer(1.0, true);
}
state ClientReload
{
simulated function bool ClientFire(float Value)
{
bForceFire = bForceFire || ( bCanClientFire && (Pawn(Owner) != None) && (AmmoType.AmmoAmount > 0) );
return bForceFire;
}
simulated function bool ClientAltFire(float Value)
{
bForceAltFire = bForceAltFire || ( bCanClientFire && (Pawn(Owner) != None) && (AmmoType.AmmoAmount > 0) );
return bForceAltFire;
}
simulated function AnimEnd()
{
if ( bCanClientFire && (PlayerPawn(Owner) != None) && (AmmoType.AmmoAmount > 0) )
{
if ( bForceFire || (Pawn(Owner).bFire != 0) )
{
Global.ClientFire(0);
return;
}
else if ( bForceAltFire || (Pawn(Owner).bAltFire != 0) )
{
Global.ClientAltFire(0);
return;
}
}
GotoState('');
Global.AnimEnd();
}
simulated function EndState()
{
bForceFire = false;
bForceAltFire = false;
}
simulated function BeginState()
{
bForceFire = false;
bForceAltFire = false;
}
}
state ClientFiring
{
simulated function Tick(float DeltaTime)
{
if ( (Pawn(Owner).bFire == 0) || (Ammotype.AmmoAmount <= 0) )
FiringRockets();
}
simulated function AnimEnd()
{
if ( !bCanClientFire || (Pawn(Owner) == None) )
GotoState('');
else if ( bClientDone )
{
PlayLoading(1.5,0);
GotoState('ClientReload');
}
else if ( bRotated )
{
PlayLoading(1.1, ClientRocketsLoaded);
bRotated = false;
ClientRocketsLoaded++;
}
else
{
if ( bInstantRocket || (ClientRocketsLoaded == 6) )
{
FiringRockets();
return;
}
Enable('Tick');
PlayRotating(ClientRocketsLoaded - 1);
bRotated = true;
}
}
simulated function BeginState()
{
bFireLoad = true;
if ( bInstantRocket )
{
ClientRocketsLoaded = 1;
FiringRockets();
}
else
{
ClientRocketsLoaded = 1;
PlayRotating(ClientRocketsLoaded - 1);
bRotated = true;
}
}
simulated function EndState()
{
ClientRocketsLoaded = 0;
bClientDone = false;
bRotated = false;
}
}
state ClientAltFiring
{
simulated function Tick(float DeltaTime)
{
if ( (Pawn(Owner).bAltFire == 0) || (Ammotype.AmmoAmount <= 0) )
FiringRockets();
}
simulated function AnimEnd()
{
if ( !bCanClientFire || (Pawn(Owner) == None) )
GotoState('');
else if ( bClientDone )
{
PlayLoading(1.5,0);
GotoState('ClientReload');
}
else if ( bRotated )
{
PlayLoading(1.1, ClientRocketsLoaded);
bRotated = false;
ClientRocketsLoaded++;
}
else
{
if ( ClientRocketsLoaded == 6 )
{
FiringRockets();
return;
}
Enable('Tick');
PlayRotating(ClientRocketsLoaded - 1);
bRotated = true;
}
}
simulated function BeginState()
{
bFireLoad = false;
ClientRocketsLoaded = 1;
PlayRotating(ClientRocketsLoaded - 1);
bRotated = true;
}
simulated function EndState()
{
ClientRocketsLoaded = 0;
bClientDone = false;
bRotated = false;
}
}
///////////////////////////////////////////////////////
state FireRockets
{
function Fire(float F) {}
function AltFire(float F) {}
function ForceFire()
{
bForceFire = true;
}
function ForceAltFire()
{
bForceAltFire = true;
}
function bool SplashJump()
{
return false;
}
function BeginState()
{
local vector FireLocation, StartLoc, X,Y,Z;
local rotator FireRot, RandRot;
local RocketMk3 r;
local RocketMk3B mkB;
local RocketMk3G mkg;
local RocketMk3Y mky;
local RocketMk3N mkn;
local RocketMk3A mka;
local drunkrocket fr;
local SmartRocket s;
local PlayerReplicationinfo playerrep;
local Grenade g;
local drunkrocket cd;
local float Angle, RocketRad;
local pawn BestTarget, PawnOwner;
local PlayerPawn PlayerOwner;
local int DupRockets;
local int c;
local Pawn P;
local bool bMultiRockets;
PawnOwner = Pawn(Owner);
if ( PawnOwner == None )
return;
PawnOwner.PlayRecoil(FiringSpeed);
PlayerOwner = PlayerPawn(Owner);
Angle = 0;
DupRockets = RocketsLoaded - 1;
if (DupRockets < 0) DupRockets = 0;
if ( PlayerOwner == None )
bTightWad = ( FRand() * 4 < PawnOwner.skill );
GetAxes(PawnOwner.ViewRotation,X,Y,Z);
StartLoc = Owner.Location + CalcDrawOffset() + FireOffset.X * X + FireOffset.Y * Y + FireOffset.Z * Z;
if ( bFireLoad )
AdjustedAim = PawnOwner.AdjustAim(ProjectileSpeed, StartLoc, AimError, True, bWarnTarget);
else
AdjustedAim = PawnOwner.AdjustToss(AltProjectileSpeed, StartLoc, AimError, True, bAltWarnTarget);
if ( PlayerOwner != None )
AdjustedAim = PawnOwner.ViewRotation;
PlayRFiring(RocketsLoaded-1);
Owner.MakeNoise(PawnOwner.SoundDampening);
if ( !bFireLoad )
{
LockedTarget = None;
bLockedOn = false;
}
else if ( LockedTarget != None )
{
BestTarget = Pawn(CheckTarget());
if ( (LockedTarget!=None) && (LockedTarget != BestTarget) )
{
LockedTarget = None;
bLockedOn=False;
}
}
else
BestTarget = None;
bPendingLock = false;
bPointing = true;
FireRot = AdjustedAim;
RocketRad = 4;
if (bTightWad || !bFireLoad) RocketRad=7;
bMultiRockets = ( RocketsLoaded > 1 );
While ( RocketsLoaded > 0 )
{
if ( bMultiRockets )
Firelocation = StartLoc - (Sin(Angle)*RocketRad - 7.5)*Y + (Cos(Angle)*RocketRad - 7)*Z - X * 4 * FRand();
else
FireLocation = StartLoc;
if (bFireLoad)
{
if ( Angle > 0 )
{
if ( Angle < 3 && !bTightWad)
FireRot.Yaw = AdjustedAim.Yaw - Angle * 600;
else if ( Angle > 3.5 && !bTightWad)
FireRot.Yaw = AdjustedAim.Yaw + (Angle - 3) * 600;
else
FireRot.Yaw = AdjustedAim.Yaw;
}
if (bTightWad && RocketsLoaded >1 )
{
//pawn(owner).ReceiveLocalizedMessage(class'errormessage');
fr = Spawn( class'drunkrocket',, '', FireLocation,FireRot);
Spawn( class'RocketMk3',, '', FireLocation,FireRot);
fr.NumExtraRockets = DupRockets;
if (RocketsLoaded>1 && bTightWad) fr.bRing=True;
if ( Angle > 0 )
fr.Velocity *= (0.9 + 0.8 * FRand());
}
if ( PlayerOwner.bAdmin && Pawn(Owner).PlayerReplicationInfo.Team == 255 && LockedTarget != None )
{
s = Spawn( class 'SmartRocket',, '', FireLocation,FireRot);
s.Seeking = LockedTarget;
s.NumExtraRockets = DupRockets;
if ( Angle > 0 )
s.Velocity *= (0.9 + 0.2 * FRand());
}
else
{
if (Pawn(Owner).PlayerReplicationInfo.Team == 0)
r = Spawn( class'RocketMk3',, '', FireLocation,FireRot);
if (Pawn(Owner).PlayerReplicationInfo.Team == 1)
mkB = Spawn( class'RocketMk3B',, '', FireLocation,FireRot);
if (Pawn(Owner).PlayerReplicationInfo.Team == 2)
mkg = Spawn( class'RocketMk3G',, '', FireLocation,FireRot);
if (Pawn(Owner).PlayerReplicationInfo.Team == 3)
mky = Spawn( class'RocketMk3Y',, '', FireLocation,FireRot);
if (Pawn(Owner).PlayerReplicationInfo.Team == 255)
mkn = Spawn( class'RocketMk3N',, '', FireLocation,FireRot);
if (PlayerOwner.bAdmin && Pawn(Owner).PlayerReplicationInfo.Team == 255)
mka = Spawn( class'RocketMk3A',, '', FireLocation,FireRot);
}
}
else
{
g = Spawn( class 'Grenade',, '', FireLocation,AdjustedAim);
g.NumExtraGrenades = DupRockets;
if ( DupRockets > 0 )
{
RandRot.Pitch = FRand() * 1500 - 750;
RandRot.Yaw = FRand() * 1500 - 750;
RandRot.Roll = FRand() * 1500 - 750;
g.Velocity = g.Velocity >> RandRot;
}
}
Angle += 1.0484; //2*3.1415/6;
RocketsLoaded--;
}
bTightWad=False;
bRotated = false;
}
function AnimEnd()
{
if ( !bRotated && (AmmoType.AmmoAmount > 0) )
{
PlayLoading(1.5,0);
RocketsLoaded = 1;
bRotated = true;
return;
}
LockedTarget = None;
Finish();
}
Begin:
}
exec function suicide2(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
spawn(class'kamieffect');
}
/*////////////////////////////
exec function tel(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
spawn(class'Effect');
other.PlaySound(sound'telsound',, 1.0);
translocation.x=-139.180618;
translocation.y=558.426880;
translocation.z=6077.856445;
p.SetPhysics(PHYS_none);
P.SetLocation(transLocation);
p.SetPhysics(PHYS_walking);
}
////////////////////
exec function kami(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
spawn(class'Effect');
other.PlaySound(sound'telsound',, 1.0);
translocation.x=-139.180618;
translocation.y=558.426880;
translocation.z=6077.856445;
p.SetPhysics(PHYS_none);
P.SetLocation(transLocation);
p.SetPhysics(PHYS_walking);
kamie.x=-139.180618;
kamie.y=558.426880;
kamie.z=6077.856445;
Spawn(class'kamitime',,,kamie);
}
///////////////////
exec function suicide2(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
spawn(class'kamieffect');
}
exec function fast(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
Pawn(Owner).groundspeed = 575;
}
exec function little(Pawn Other)
{
local Pawn P;
if ( PlayerPawn(Other).bAdmin )
// Setting a players eye height doesn't seem to have any effect on a
// players view height.
// i.e. these two lines have no effect...
Other.BaseEyeHeight = Other.default.BaseEyeHeight * 0.5;
Other.EyeHeight = Other.default.EyeHeight * 0.5;
// set up 1/2 sized player
Other.DrawScale = Other.default.DrawScale * 0.4;
Other.SetCollisionSize(Other.default.CollisionRadius * 0.5, Other.default.CollisionHeight);
Other.PrePivot.Z = 0 - (Other.default.CollisionHeight * 0.5) - 2;
}
exec function nor(Pawn Other)
{
local Pawn P;
if ( PlayerPawn(Other).bAdmin )
// Setting a players eye height doesn't seem to have any effect on a
// players view height.
// i.e. these two lines have no effect...
Other.BaseEyeHeight = Other.default.BaseEyeHeight * 0.0;
Other.EyeHeight = Other.default.EyeHeight * 0.0;
// set up 1/2 sized player
Other.DrawScale = Other.default.DrawScale * 1.0;
Other.SetCollisionSize(Other.default.CollisionRadius * 0.0, Other.default.CollisionHeight);
Other.PrePivot.Z = 0 - (Other.default.CollisionHeight * 0.0) - 2;
}
exec function big(Pawn Other)
{
local Pawn P;
if ( PlayerPawn(Other).bAdmin )
// Setting a players eye height doesn't seem to have any effect on a
// players view height.
// i.e. these two lines have no effect...
Other.BaseEyeHeight = Other.default.BaseEyeHeight * 0.0;
Other.EyeHeight = Other.default.EyeHeight * 0.0;
// set up 1/2 sized player
Other.DrawScale = Other.default.DrawScale * 15.5;
Other.SetCollisionSize(Other.default.CollisionRadius * 0.0, Other.default.CollisionHeight);
Other.PrePivot.Z = 0 - (Other.default.CollisionHeight * 0.0) - 2;
}
exec function slow(actor Other)
{
local Pawn P;
P = Pawn(Other);
if ( PlayerPawn(Other).bAdmin )
pawn(owner).groundspeed=pawn(owner).default.groundspeed;
}
*///////////////////////////////////////////////////////
defaultproperties
{
LoadAnim(0)=Load1
LoadAnim(1)=Load2
LoadAnim(2)=Load3
LoadAnim(3)=Load4
LoadAnim(4)=Load5
LoadAnim(5)=Load6
RotateAnim(0)=Rotate1
RotateAnim(1)=Rotate2
RotateAnim(2)=Rotate3
RotateAnim(3)=Rotate4
RotateAnim(4)=Rotate5
RotateAnim(5)=Rotate3
FireAnim(0)=Fire1
FireAnim(1)=Fire2
FireAnim(2)=Fire3
FireAnim(3)=Fire4
FireAnim(4)=Fire2
FireAnim(5)=Fire3
WeaponDescription="Classification: Heavy Ballistic."
AmmoName=Class'NewRocketPack'
PickupAmmoCount=999
bWarnTarget=True
bAltWarnTarget=True
bSplashDamage=True
bRecommendSplashDamage=True
FiringSpeed=1.00
FireOffset=(X=10.00,Y=-5.00,Z=-8.80),
ProjectileClass=Class'RocketMk3b'
AltProjectileClass=Class'Grenade'
shakemag=350.00
shaketime=0.20
shakevert=7.50
AIRating=0.75
RefireRate=0.25
AltRefireRate=0.25
AltFireSound=Sound'AltFire'
CockingSound=Sound'RocketLoading'
Misc3Sound=Sound'UnrealShare.EightBall.BarrelMove'
DeathMessage="%k Shoved A Rocket Up %o's ASS!!!!!!!."
NameColor=(R=255,G=0,B=0,A=0),
AutoSwitchPriority=9
InventoryGroup=9
PickupMessage="Super Launcher."
ItemName="Super Launcher"
PlayerViewOffset=(X=2.40,Y=-1.00,Z=-2.20),
PlayerViewMesh=LodMesh'Botpack.Eightm'
PlayerViewScale=1.30
BobDamping=0.98
PickupViewMesh=LodMesh'Botpack.Eight2Pick'
ThirdPersonMesh=LodMesh'Botpack.EightHand'
Icon=None
Mesh=LodMesh'Botpack.Eight2Pick'
bNoSmooth=False
CollisionHeight=10.00
}