//============================================================================= // KFCharacterInfo_ScriptedPawn //============================================================================= // Character info for scripted pawns //============================================================================= // Killing Floor 2 // Copyright (C) 2018 Tripwire Interactive LLC //============================================================================= class KFCharacterInfo_ScriptedPawn extends KFCharacterInfoBase; enum FXTransitionType { /** Always play regardless of the previous state */ FXTransitionType_PlayAlways, /** In EnterState FROM a greater numbered state or in ExitState TO a greater numbered state */ FXTransitionType_PlayGreaterStateTransition, /** In EnterState FROM a lower numbered state or in ExitState TO a lower numbered state */ FXTransitionType_PlayLesserStateTransition }; struct ScriptedPawnStateFX { /** Particles to play */ var() ParticleSystem VFX; /** Sound event to play */ var() AkEvent SFX; /** Socket to attach particles or sounds to, if desired (otherwise plays at root) */ var() name SocketName; /** Whether to play this FX based on the previous state FXTransitionType_PlayAlways - Always play regardless of the previous state FXTransitionType_PlayGreaterStateTransition - In EnterState FROM a greater (health) state or in ExitState TO a greater (health) state FXTransitionType_PlayLesserStateTransition - In EnterState FROM a lower (health) state or in ExitState TO a lower (health) state */ var() FXTransitionType TransitionType; }; struct ScriptedPawnStateInfo { // Percentage of health at which to activate this state var() float HealthPctThreshold; // How much to scale the speed by for this state var() float SpeedScalar; // Whether the pawn can be targeted by zeds in this state var() bool bCanBeTargetedByZeds; // FX to play upon entering state var() array EnterFX; // FX to play upon exiting state var() array ExitFX; // Anim to play upon entering state var() name EnterAnim; // Anim to play upon exiting state var() name ExitAnim; // Icon that represents this state and gets displayed above pawn var() Texture2D Icon; // Material for this state, None will set to default material var() MaterialInstance DefaultStateMaterial; // Material for this state when highlighted, Non will set to default StateMaterial var() MaterialInstance HighlightedStateMaterial; // Color of the scripted pawn health bar during this state var() Color PawnHealthBarColor; structdefaultproperties { HealthPctThreshold=1.0 SpeedScalar=1.0 bCanBeTargetedByZeds=true } }; var() array States; // events to play when the scripted pawn reaches the finish (including stop events) var() array FinishSoundEvents; // How fast the pawn should move var() float PawnSpeed; // Whether pawn should fly or walk var() bool bIsFlyingPawn; // Whether pawn can be bumped or pushed var() bool bPawnHandlesMomentum; // How hard pawn bumps other pawns var() float PawnBumpImpulse; // Whether pawn can be grabbed by zeds var() bool bPawnCanBeGrabbed; // Whether to enable weldable options below var() bool bEnableWeldOptions; // Whether pawn can be welded var() bool bPawnCanBeWelded; // Whether pawn can be unwelded var() bool bPawnCanBeUnwelded; // How much pawn can be welded var() float PawnMaxWeldIntegrityPerPlayer[6]; // How much to scale the pawn's weldable collision component (default radius is 1m/100uu) var() float PawnWeldableComponentScale; // Whether pawn can be healed var() bool bPawnCanBeHealed; // Whether the pawn can die and be cleaned-up in code when health reaches zero var() bool bPawnCanBeKilled; // Whether proximity options are enabled var() bool bEnableProximityOptions; // How much to scale the pawn's proximity trigger for zeds (default radius is 1m/100uu) var() float ZedProximityTriggerScale; // How much to scale the pawn's proximity trigger for players (default radius is 1m/100uu) var() float PlayerProximityTriggerScale; // Whether pawn/zed behavior changes when zeds are close var() bool bUseZedProximityTrigger; // How pawn's speed should scale when zeds are close var() float SpeedScalarForZedProximity; // Whether pawn/player behavior changes when players are close var() bool bUsePlayerProximityTrigger; // How pawn's speed should scale when players are close var() float SpeedScalarForPlayerProximity; // Whether the pawn should remove collision when reaching the goal and then become hidden when finished var() bool bHideOnFinish; // Whether pawn should have no collision until it hits the start point var() bool bDisableCollisionOnStart; /** Character mesh to use */ var(ThirdPerson) SkeletalMesh CharacterMesh; /** Aggressively optimized mesh for the server with minimal bones */ var(Server) SkeletalMesh ServerMesh; /** Sets the pawns character mesh from it's CharacterInfo, and updates instance of player in map if there is one. */ simulated function SetCharacterMeshFromArch( KFPawn KFP, optional KFPlayerReplicationInfo KFPRI ) { super.SetCharacterMeshFromArch( KFP, KFPRI ); if( CharacterMesh != none ) { // Assign the body mesh to the pawn if ( KFP.WorldInfo.NetMode == NM_DedicatedServer && ServerMesh != None ) { KFP.Mesh.SetSkeletalMesh(ServerMesh); } else { KFP.Mesh.SetSkeletalMesh(CharacterMesh); } KFP.Mesh.SetScale(DefaultMeshScale); KFP.PitchAudio(DefaultMeshScale); } } defaultproperties { PawnSpeed=150 PawnBumpImpulse=100 PawnWeldableComponentScale=2.f PawnMaxWeldIntegrityPerPlayer(0)=1500 PawnMaxWeldIntegrityPerPlayer(1)=1500 PawnMaxWeldIntegrityPerPlayer(2)=1500 PawnMaxWeldIntegrityPerPlayer(3)=1500 PawnMaxWeldIntegrityPerPlayer(4)=1500 PawnMaxWeldIntegrityPerPlayer(5)=1500 ZedProximityTriggerScale=2.f PlayerProximityTriggerScale=2.f SpeedScalarForZedProximity=1.f SpeedScalarForPlayerProximity=1.f bHideOnFinish=true bDisableCollisionOnStart=true }