128 lines
3.2 KiB
Ucode
128 lines
3.2 KiB
Ucode
|
//=============================================================================
|
||
|
// KFSM_Siren_Scream
|
||
|
//=============================================================================
|
||
|
//
|
||
|
//=============================================================================
|
||
|
// Killing Floor 2
|
||
|
// Copyright (C) 2016 Tripwire Interactive LLC
|
||
|
//=============================================================================
|
||
|
class KFSM_Siren_Scream extends KFSM_ScreamBase;
|
||
|
|
||
|
/** Cached pawn reference */
|
||
|
var KFPawn_ZedSiren MySirenPawn;
|
||
|
|
||
|
/**
|
||
|
* Can a new special move override this one before it is finished?
|
||
|
* This is only if CanDoSpecialMove() == TRUE && !bForce when starting it.
|
||
|
*/
|
||
|
function bool CanOverrideMoveWith( Name NewMove )
|
||
|
{
|
||
|
if ( bCanBeInterrupted && (NewMove == 'KFSM_Stunned' || NewMove == 'KFSM_Stumble' || NewMove == 'KFSM_Knockdown' || NewMove == 'KFSM_Frozen') )
|
||
|
{
|
||
|
return TRUE;
|
||
|
}
|
||
|
return FALSE;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Can the special move be chained after the current one finishes?
|
||
|
*/
|
||
|
function bool CanChainMove( Name NextMove )
|
||
|
{
|
||
|
if( NextMove == 'KFSM_MeleeAttack' )
|
||
|
{
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
return super.CanChainMove( NextMove );
|
||
|
}
|
||
|
|
||
|
function SpecialMoveStarted( bool bForced, name PrevMove )
|
||
|
{
|
||
|
super.SpecialMoveStarted( bForced, PrevMove );
|
||
|
|
||
|
if (MySirenPawn == none)
|
||
|
{
|
||
|
MySirenPawn = KFPawn_ZedSiren(KFPOwner);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** Create and initialize projectile shield */
|
||
|
function SpawnProjectileShield()
|
||
|
{
|
||
|
super.SpawnProjectileShield();
|
||
|
|
||
|
// Flicker neck light as a visual cue
|
||
|
if ( MySirenPawn != none )
|
||
|
{
|
||
|
MySirenPawn.EnableScreamFlicker( true );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** Destroys the projectile shield based on position in animation */
|
||
|
function Timer_DestroyProjectileShield()
|
||
|
{
|
||
|
DestroyProjectileShield();
|
||
|
}
|
||
|
|
||
|
/** Destroy and clear proectile shield */
|
||
|
function DestroyProjectileShield()
|
||
|
{
|
||
|
super.DestroyProjectileShield();
|
||
|
|
||
|
// Turn off flicker when projectile shield goes down
|
||
|
if( MySirenPawn != none )
|
||
|
{
|
||
|
MySirenPawn.EnableScreamFlicker( false );
|
||
|
}
|
||
|
}
|
||
|
|
||
|
DefaultProperties
|
||
|
{
|
||
|
// SpecialMove
|
||
|
ProjectileShieldLifetime=2.2 // 0.52
|
||
|
|
||
|
AnimName=Atk_Combo1_V1
|
||
|
Handle=KFSM_Siren_Scream
|
||
|
bDisableSteering=false
|
||
|
bDisableMovement=false
|
||
|
AnimStance=EAS_UpperBody
|
||
|
bCanBeInterrupted=true
|
||
|
|
||
|
ScreamDamage=15
|
||
|
ScreamDamageFrequency=0.5f //1.0
|
||
|
ScreamInterruptSound=AkEvent'WW_ZED_Siren.Stop_Siren_Scream'
|
||
|
|
||
|
bDrawProjectileShield=false
|
||
|
bDrawWaveRadius=false
|
||
|
|
||
|
ExplosionActorClass=class'KFExplosion_SirenScream'
|
||
|
|
||
|
// explosion
|
||
|
Begin Object Class=KFGameExplosion Name=ExploTemplate0
|
||
|
//Damage=15 @NOTE: This is now set using the ScreamDamage variable -MattF
|
||
|
DamageRadius=600 //800
|
||
|
DamageFalloffExponent=1f
|
||
|
DamageDelay=0.f
|
||
|
|
||
|
MomentumTransferScale=100//-100000 Reactivate this to add siren pull
|
||
|
|
||
|
ActorClassToIgnoreForDamage=class'KFPawn_Monster'
|
||
|
|
||
|
// Damage Effects
|
||
|
MyDamageType=class'KFDT_Sonic'
|
||
|
KnockDownStrength=0
|
||
|
FractureMeshRadius=200.0
|
||
|
FracturePartVel=500.0
|
||
|
ExplosionEffects=none
|
||
|
ExplosionSound=none
|
||
|
|
||
|
// Camera Shake
|
||
|
CamShake=CameraShake'FX_CameraShake_Arch.Misc_Explosions.SirenScream'
|
||
|
CamShakeInnerRadius=450
|
||
|
CamShakeOuterRadius=700 //900
|
||
|
CamShakeFalloff=1.f
|
||
|
bOrientCameraShakeTowardsEpicenter=true
|
||
|
End Object
|
||
|
ExplosionTemplate=ExploTemplate0
|
||
|
}
|