I'm a doctor, not a mechanic

Legacy:NukeRifleProjectile

From Unreal Wiki, The Unreal Engine Documentation Site
Jump to: navigation, search

NukeRifles

NukeRifleProjectile

//=============================================================================
// Nukerifle projectile, gets spawned instantly on whatever gets hit
//=============================================================================
class NukeRifleProjectile extends Projectile;
 
 
// camera shakes //
var() vector ShakeRotMag;           // how far to rot view
var() vector ShakeRotRate;          // how fast to rot view
var() float  ShakeRotTime;          // how much time to rot the instigator's view
var() vector ShakeOffsetMag;        // max view offset vertically
var() vector ShakeOffsetRate;       // how fast to offset view vertically
var() float  ShakeOffsetTime;       // how much time to offset view
var bool bExploded;
 
simulated function Destroyed() 
{
	Super.Destroyed();
}
 
simulated function PostBeginPlay()
{
	local vector Dir;
 
	if ( bDeleteMe || IsInState('Dying') )
		return;
 
	Dir = vector(Rotation);
	Velocity = speed * Dir;
}
 
event bool EncroachingOn( actor Other )
{
	if ( Other.bWorldGeometry )
		return true;
 
	return false;
}
simulated function ProcessTouch (Actor Other, Vector HitLocation)
{
	if ( Other != instigator ) 
		Explode(HitLocation,Vect(0,0,1));
}
 
simulated function Explode(vector HitLocation, vector HitNormal) 
{
	BlowUp(HitLocation);
}
 
simulated function PhysicsVolumeChange( PhysicsVolume Volume )
{
}
 
simulated function Landed( vector HitNormal )
{
	BlowUp(Location);
}
 
simulated function HitWall(vector HitNormal, actor Wall)
{
	BlowUp(Location);
}
 
function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, 
							Vector momentum, class<DamageType> damageType) 
{
	if ( Damage > 0 )
	{
		BlowUp(Location);
	}
}
 
simulated event FellOutOfWorld(eKillZType KillType)
{
	BlowUp(Location);
}	
 
function BlowUp(vector HitLocation)
{
    Spawn(class'RedeemerExplosion',,, HitLocation - 100 * Normal(Velocity), Rot(0,16384,0));
	MakeNoise(1.0);
	SetPhysics(PHYS_None);
	bHidden = true;
    GotoState('Dying'); 
}
 
state Dying
{
	function TakeDamage( int Damage, Pawn instigatedBy, Vector hitlocation, 
							Vector momentum, class<DamageType> damageType) {}
 
    function BeginState()
    {
		bHidden = true;
		SetPhysics(PHYS_None);
		SetCollision(false,false,false);
		if ( !bExploded )
		{
			Spawn(class'IonCore',,, Location, Rotation);
			ShakeView();
		}
		InitialState = 'Dying';
    }
 
    function ShakeView()
    {
        local Controller C;
        local PlayerController PC;
        local float Dist, Scale;
 
        for ( C=Level.ControllerList; C!=None; C=C.NextController )
        {
            PC = PlayerController(C);
            if ( PC != None && PC.ViewTarget != None )
            {
                Dist = VSize(Location - PC.ViewTarget.Location);
                if ( Dist < DamageRadius * 2.0)
                {
                    if (Dist < DamageRadius)
                        Scale = 1.0;
                    else
                        Scale = (DamageRadius*2.0 - Dist) / (DamageRadius);
                    C.ShakeView(ShakeRotMag*Scale, ShakeRotRate, ShakeRotTime, ShakeOffsetMag*Scale, ShakeOffsetRate, ShakeOffsetTime);
                }
            }
        }
    }
 
Begin:
    PlaySound(sound'WeaponSounds.redeemer_explosionsound');
    HurtRadius(Damage, DamageRadius*0.125, MyDamageType, MomentumTransfer, Location);
    Sleep(0.5);
    HurtRadius(Damage, DamageRadius*0.300, MyDamageType, MomentumTransfer, Location);
    Sleep(0.2);
    HurtRadius(Damage, DamageRadius*0.475, MyDamageType, MomentumTransfer, Location);
    Sleep(0.2);
    HurtRadius(Damage, DamageRadius*0.650, MyDamageType, MomentumTransfer, Location);
    Sleep(0.2);
    HurtRadius(Damage, DamageRadius*0.825, MyDamageType, MomentumTransfer, Location);
    Sleep(0.2);
    HurtRadius(Damage, DamageRadius*1.000, MyDamageType, MomentumTransfer, Location);
    Destroy();
}
 
defaultproperties
{
    bNetTemporary=false
 
//    DrawType=DT_StaticMesh
//    StaticMesh=StaticMesh'WeaponStaticMesh.RedeemerMissile'
    DrawScale=0.5
    AmbientGlow=96
    bUnlit=false
 
    bDynamicLight=true
    LightType=LT_Steady
    LightEffect=LE_QuadraticNonIncidence
    LightBrightness=255
    LightHue=28
    LightRadius=6
 
    ForceType=FT_DragAlong
    ForceScale=5.0
    ForceRadius=100.0
 
    Damage=200.0
    DamageRadius=1500.0
    MomentumTransfer=100000
    MyDamageType=class'my_mod2.DamTypeNukeRifle'
 
 
    bCollideActors=true
    bCollideWorld=true
    CollisionHeight=12.0
    CollisionRadius=12.0
 
    ShakeRotMag=(Z=250)
    ShakeRotRate=(Z=2500)
    ShakeRotTime=6
    ShakeOffsetMag=(Z=10)
    ShakeOffsetRate=(Z=200)
    ShakeOffsetTime=10
 
	bProjTarget=true
    speed=200
    MaxSpeed=500
 
    bBounce=false
    bFixedRotationDir=True
    RotationRate=(Roll=50000)
    DesiredRotation=(Roll=30000)
 
    TransientSoundVolume=1.0
    TransientSoundRadius=5000.0
}