My program doesn't have bugs. It just develops random features.

UE1:BruteProjectile (UT)

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search
UT Object >> Actor >> Projectile >> BruteProjectile
Package: 
UnrealShare
Direct subclass:
MercRocket
This class in other games:
RTNP, U1

BruteProjectile.

Properties[edit]

TimerDelay[edit]

Type: float


Default values[edit]

Property Value
AmbientGlow 9
AmbientSound Sound'UnrealShare.General.BRocket'
bUnlit True
Damage 30.0
DrawScale 0.12
ImpactSound Sound'UnrealShare.flak.Explode1'
LifeSpan 8.0
LightBrightness 154
LightHue 24
LightRadius 2
LightSaturation 207
LightType LT_Steady
MaxSpeed 900.0
Mesh LodMesh'UnrealShare.srocket'
MomentumTransfer 50000
RemoteRole ROLE_SimulatedProxy
SoundPitch 73
SoundRadius 15
SoundVolume 255
SpawnSound Sound'UnrealShare.Eightball.Ignite'
Speed 700.0
Texture None

States[edit]

Flying[edit]

Modifiers: auto

Flying.AnimEnd[edit]

simulated event AnimEnd ()

Overrides: Actor.AnimEnd (global)


Flying.BeginState[edit]

simulated event BeginState ()

Overrides: Object.BeginState (global)


Flying.Timer[edit]

simulated event Timer ()

Overrides: Actor.Timer (global)


Flying.BlowUp[edit]

function BlowUp (Object.Vector HitLocation)

Sub routine for function Explode(). (See also Bugs.)

Flying.Explode[edit]

simulated function Explode (Object.Vector HitLocation, Object.Vector HitNormal)

Overrides: Projectile.Explode (global)


Flying.ProcessTouch[edit]

simulated function ProcessTouch (Actor Other, Object.Vector HitLocation)

Overrides: Projectile.ProcessTouch (global)


Flying.SetUp[edit]

function SetUp ()

Initialisation of the projectile, called by BeginState. (See also Bugs.)

Bugs[edit]

ScriptedPawn(Instigator).ProjectileSpeed[edit]

If the instigator is a ScriptedPawn, its ProjectileSpeed is not taken into account. A correct version of function SetUp could be:

function SetUp()
{
	PlaySound(SpawnSound);
	if ( ScriptedPawn(Instigator) != None )
	{
		Speed = ScriptedPawn(Instigator).ProjectileSpeed;
		if ( Instigator.IsA('LesserBrute') )
			Damage *= 0.7;
	}
	Velocity = Vector(Rotation) * speed; // this assignment needs to be after modifying *speed*
}

Access Nones[edit]

If the instigator is destroyed before the projectile explodes, a ScriptWarning is issued when the projectile explodes. A possible better version of function BlowUp could be:

function BlowUp(vector HitLocation)
{
local float DamageRadius;
	if (instigator != None) DamageRadius = instigator.skill * 45;
	HurtRadius(damage, 50 + DamageRadius, 'exploded', MomentumTransfer, HitLocation);
	MakeNoise(1.0);
	PlaySound(ImpactSound);
}