Prepare fixtures
This commit is contained in:
parent
797e5ea192
commit
9c94356263
6021 changed files with 722805 additions and 22 deletions
15
kf_sources/KFMod/Classes/AA12Ammo.uc
Normal file
15
kf_sources/KFMod/Classes/AA12Ammo.uc
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
//=============================================================================
|
||||
// AA12 Shotgun Ammo.
|
||||
//=============================================================================
|
||||
class AA12Ammo extends KFAmmunition;
|
||||
|
||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
MaxAmmo=80
|
||||
InitialAmount=60
|
||||
AmmoPickupAmount=20
|
||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||
IconCoords=(X1=451,Y1=445,X2=510,Y2=500)
|
||||
}
|
||||
11
kf_sources/KFMod/Classes/AA12AmmoPickup.uc
Normal file
11
kf_sources/KFMod/Classes/AA12AmmoPickup.uc
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
class AA12AmmoPickup extends KFAmmoPickup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
AmmoAmount=20
|
||||
InventoryType=Class'KFMod.ShotgunAmmo'
|
||||
PickupMessage="12-Gauge Drum"
|
||||
PickupForce="AssaultAmmoPickup"
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=none
|
||||
}
|
||||
69
kf_sources/KFMod/Classes/AA12Attachment.uc
Normal file
69
kf_sources/KFMod/Classes/AA12Attachment.uc
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
class AA12Attachment extends KFWeaponAttachment;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
mMuzFlashClass=Class'ROEffects.MuzzleFlash3rdKar'
|
||||
mShellCaseEmitterClass=Class'KFMod.KFShotgunShellSpewer'
|
||||
MeshRef="KF_Weapons3rd2_Trip.AA12_3rd"
|
||||
|
||||
MovementAnims(0)=JogF_AA12
|
||||
MovementAnims(1)=JogB_AA12
|
||||
MovementAnims(2)=JogL_AA12
|
||||
MovementAnims(3)=JogR_AA12
|
||||
CrouchAnims(0)=CHwalkF_AA12
|
||||
CrouchAnims(1)=CHwalkB_AA12
|
||||
CrouchAnims(2)=CHwalkL_AA12
|
||||
CrouchAnims(3)=CHwalkR_AA12
|
||||
WalkAnims(0)=WalkF_AA12
|
||||
WalkAnims(1)=WalkB_AA12
|
||||
WalkAnims(2)=WalkL_AA12
|
||||
WalkAnims(3)=WalkR_AA12
|
||||
AirStillAnim=JumpF_Mid
|
||||
AirAnims(0)=JumpF_Mid
|
||||
AirAnims(1)=JumpF_Mid
|
||||
AirAnims(2)=JumpL_Mid
|
||||
AirAnims(3)=JumpR_Mid
|
||||
TakeoffStillAnim=JumpF_Takeoff
|
||||
TakeoffAnims(0)=JumpF_Takeoff
|
||||
TakeoffAnims(1)=JumpF_Takeoff
|
||||
TakeoffAnims(2)=JumpL_Takeoff
|
||||
TakeoffAnims(3)=JumpR_Takeoff
|
||||
LandAnims(0)=JumpF_Land
|
||||
LandAnims(1)=JumpF_Land
|
||||
LandAnims(2)=JumpL_Land
|
||||
LandAnims(3)=JumpR_Land
|
||||
|
||||
TurnRightAnim=TurnR_AA12
|
||||
TurnLeftAnim=TurnL_AA12
|
||||
CrouchTurnRightAnim=CH_TurnR_AA12
|
||||
CrouchTurnLeftAnim=CH_TurnL_AA12
|
||||
IdleRestAnim=Idle_AA12//Idle_Rest
|
||||
IdleCrouchAnim=CHIdle_AA12
|
||||
IdleSwimAnim=Swim_Tread
|
||||
IdleWeaponAnim=Idle_AA12//Idle_Rifle
|
||||
IdleHeavyAnim=Idle_AA12//Idle_Biggun
|
||||
IdleRifleAnim=Idle_AA12//Idle_Rifle
|
||||
IdleChatAnim=Idle_AA12
|
||||
FireAnims(0)=Fire_AA12
|
||||
FireAnims(1)=Fire_AA12
|
||||
FireAnims(2)=Fire_AA12
|
||||
FireAnims(3)=Fire_AA12
|
||||
FireAltAnims(0)=Fire_AA12
|
||||
FireAltAnims(1)=Fire_AA12
|
||||
FireAltAnims(2)=Fire_AA12
|
||||
FireAltAnims(3)=Fire_AA12
|
||||
FireCrouchAnims(0)=CHFire_AA12
|
||||
FireCrouchAnims(1)=CHFire_AA12
|
||||
FireCrouchAnims(2)=CHFire_AA12
|
||||
FireCrouchAnims(3)=CHFire_AA12
|
||||
FireCrouchAltAnims(0)=CHFire_AA12
|
||||
FireCrouchAltAnims(1)=CHFire_AA12
|
||||
FireCrouchAltAnims(2)=CHFire_AA12
|
||||
FireCrouchAltAnims(3)=CHFire_AA12
|
||||
HitAnims(0)=HitF_AA12
|
||||
HitAnims(1)=HitB_AA12
|
||||
HitAnims(2)=HitL_AA12
|
||||
HitAnims(3)=HitR_AA12
|
||||
PostFireBlendStandAnim=Blend_AA12
|
||||
PostFireBlendCrouchAnim=CHBlend_AA12
|
||||
}
|
||||
183
kf_sources/KFMod/Classes/AA12AutoShotgun.uc
Normal file
183
kf_sources/KFMod/Classes/AA12AutoShotgun.uc
Normal file
|
|
@ -0,0 +1,183 @@
|
|||
//=============================================================================
|
||||
// AA12 Automatic Shotgun Inventory class
|
||||
//=============================================================================
|
||||
class AA12AutoShotgun extends KFWeapon;
|
||||
|
||||
// Use alt fire to switch fire modes
|
||||
simulated function AltFire(float F)
|
||||
{
|
||||
if(ReadyToFire(0))
|
||||
{
|
||||
DoToggle();
|
||||
}
|
||||
}
|
||||
|
||||
exec function SwitchModes()
|
||||
{
|
||||
DoToggle();
|
||||
}
|
||||
|
||||
simulated function WeaponTick(float dt)
|
||||
{
|
||||
local float LastSeenSeconds,ReloadMulti;
|
||||
|
||||
if( bForceLeaveIronsights )
|
||||
{
|
||||
ZoomOut(true);
|
||||
|
||||
if( Role < ROLE_Authority)
|
||||
ServerZoomOut(false);
|
||||
|
||||
bForceLeaveIronsights = false;
|
||||
}
|
||||
|
||||
if( ForceZoomOutTime > 0 )
|
||||
{
|
||||
if( bAimingRifle )
|
||||
{
|
||||
if( Level.TimeSeconds - ForceZoomOutTime > 0 )
|
||||
{
|
||||
ForceZoomOutTime = 0;
|
||||
|
||||
ZoomOut(true);
|
||||
|
||||
if( Role < ROLE_Authority)
|
||||
ServerZoomOut(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ForceZoomOutTime = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ( (Level.NetMode == NM_Client) || Instigator == None || KFFriendlyAI(Instigator.Controller) == none && Instigator.PlayerReplicationInfo == None)
|
||||
return;
|
||||
|
||||
// Turn it off on death / battery expenditure
|
||||
if (FlashLight != none)
|
||||
{
|
||||
// Keep the 1Pweapon client beam up to date.
|
||||
AdjustLightGraphic();
|
||||
if (FlashLight.bHasLight)
|
||||
{
|
||||
if (Instigator.Health <= 0 || KFHumanPawn(Instigator).TorchBatteryLife <= 0 || Instigator.PendingWeapon != none )
|
||||
{
|
||||
//Log("Killing Light...you're out of batteries, or switched / dropped weapons");
|
||||
KFHumanPawn(Instigator).bTorchOn = false;
|
||||
ServerSpawnLight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UpdateMagCapacity(Instigator.PlayerReplicationInfo);
|
||||
|
||||
if(!bIsReloading)
|
||||
{
|
||||
if(!Instigator.IsHumanControlled())
|
||||
{
|
||||
LastSeenSeconds = Level.TimeSeconds - Instigator.Controller.LastSeenTime;
|
||||
if(MagAmmoRemaining == 0 || ((LastSeenSeconds >= 5 || LastSeenSeconds > MagAmmoRemaining) && MagAmmoRemaining < MagCapacity))
|
||||
ReloadMeNow();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if((Level.TimeSeconds - ReloadTimer) >= ReloadRate)
|
||||
{
|
||||
if(AmmoAmount(0) <= MagCapacity && !bHoldToReload)
|
||||
{
|
||||
MagAmmoRemaining = AmmoAmount(0);
|
||||
ActuallyFinishReloading();
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo) != none && KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill != none )
|
||||
{
|
||||
ReloadMulti = KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill.Static.GetReloadSpeedModifier(KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo), self);
|
||||
}
|
||||
else
|
||||
{
|
||||
ReloadMulti = 1.0;
|
||||
}
|
||||
|
||||
AddReloadedAmmo();
|
||||
|
||||
if( bHoldToReload )
|
||||
{
|
||||
NumLoadedThisReload++;
|
||||
}
|
||||
|
||||
if(MagAmmoRemaining < MagCapacity && MagAmmoRemaining < AmmoAmount(0) && bHoldToReload)
|
||||
ReloadTimer = Level.TimeSeconds;
|
||||
if(MagAmmoRemaining >= MagCapacity || MagAmmoRemaining >= AmmoAmount(0) || !bHoldToReload || bDoSingleReload)
|
||||
ActuallyFinishReloading();
|
||||
else if( Level.NetMode!=NM_Client )
|
||||
Instigator.SetAnimAction(WeaponReloadAnim);
|
||||
}
|
||||
}
|
||||
else if(bIsReloading && !bReloadEffectDone && Level.TimeSeconds - ReloadTimer >= ReloadRate / 2)
|
||||
{
|
||||
bReloadEffectDone = true;
|
||||
ClientReloadEffects();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
SkinRefs(0)="KF_Weapons2_Trip_T.Special.AA12_cmb"
|
||||
SleeveNum=1
|
||||
|
||||
WeaponReloadAnim=Reload_AA12
|
||||
IdleAimAnim=Idle_Iron
|
||||
|
||||
MagCapacity=20
|
||||
ReloadRate=3.133
|
||||
ReloadAnim="Reload"
|
||||
ReloadAnimRate=1.000000
|
||||
|
||||
Weight=10.000000
|
||||
bModeZeroCanDryFire=True
|
||||
FireModeClass(0)=Class'KFMod.AA12Fire'
|
||||
FireModeClass(1)=Class'KFMod.NoFire'
|
||||
PutDownAnim="PutDown"
|
||||
SelectSoundRef="KF_AA12Snd.AA12_Select"
|
||||
SelectForce="SwitchToAssaultRifle"
|
||||
bShowChargingBar=True
|
||||
Description="An advanced automatic shotgun. Fires steel ball shot in semi or full auto."
|
||||
EffectOffset=(X=100.000000,Y=25.000000,Z=-10.000000)
|
||||
Priority=200
|
||||
InventoryGroup=4
|
||||
GroupOffset=10
|
||||
PickupClass=Class'KFMod.AA12Pickup'
|
||||
PlayerViewOffset=(X=25.000000,Y=20.000000,Z=-2.000000)
|
||||
//PlayerViewPivot=(Pitch=400)
|
||||
BobDamping=6.000000
|
||||
AttachmentClass=Class'KFMod.AA12Attachment'
|
||||
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
||||
ItemName="AA12"
|
||||
MeshRef="KF_Weapons2_Trip.AA12_Trip"
|
||||
DrawScale=1.00000
|
||||
TransientSoundVolume=1.250000
|
||||
AmbientGlow=0
|
||||
|
||||
AIRating=0.55
|
||||
CurrentRating=0.55
|
||||
|
||||
DisplayFOV=65.000000
|
||||
StandardDisplayFOV=65.0//60.0
|
||||
PlayerIronSightFOV=80
|
||||
ZoomTime=0.25
|
||||
FastZoomOutTime=0.2
|
||||
ZoomInRotation=(Pitch=-910,Yaw=0,Roll=2910)
|
||||
bHasAimingMode=true
|
||||
ZoomedDisplayFOV=45
|
||||
|
||||
HudImageRef="KillingFloor2HUD.WeaponSelect.AA12_unselected"
|
||||
SelectedHudImageRef="KillingFloor2HUD.WeaponSelect.AA12"
|
||||
TraderInfoTexture=texture'KillingFloor2HUD.Trader_Weapon_Icons.Trader_AA12'
|
||||
|
||||
// Achievement Helpers
|
||||
bIsTier3Weapon=true
|
||||
}
|
||||
27
kf_sources/KFMod/Classes/AA12Bullet.uc
Normal file
27
kf_sources/KFMod/Classes/AA12Bullet.uc
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
//=============================================================================
|
||||
// AA12 Shotgun Bullet
|
||||
//=============================================================================
|
||||
class AA12Bullet extends ShotgunBullet;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
DamageAtten=5.000000
|
||||
MaxPenetrations=2
|
||||
PenDamageReduction=0.750000
|
||||
HeadShotDamageMult=1.500000
|
||||
Speed=3500.000000
|
||||
MaxSpeed=4000.000000
|
||||
bSwitchToZeroCollision=True
|
||||
Damage=30.000000
|
||||
DamageRadius=0.000000
|
||||
MomentumTransfer=60000.000000
|
||||
MyDamageType=Class'KFMod.DamTypeAA12Shotgun'
|
||||
ExplosionDecal=Class'KFMod.ShotgunDecal'
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=StaticMesh'kf_generic_sm.Shotgun_Pellet'
|
||||
CullDistance=3000.000000
|
||||
LifeSpan=3.000000
|
||||
DrawScale=1.5
|
||||
Style=STY_Alpha
|
||||
ImpactEffect=class'ROBulletHitEffect'
|
||||
}
|
||||
184
kf_sources/KFMod/Classes/AA12Fire.uc
Normal file
184
kf_sources/KFMod/Classes/AA12Fire.uc
Normal file
|
|
@ -0,0 +1,184 @@
|
|||
//=============================================================================
|
||||
// Shotgun Fire
|
||||
//=============================================================================
|
||||
class AA12Fire extends KFShotgunFire;
|
||||
|
||||
var() class<Emitter> ShellEjectClass; // class of the shell eject emitter
|
||||
var() Emitter ShellEjectEmitter; // The shell eject emitter
|
||||
var() name ShellEjectBoneName; // name of the shell eject bone
|
||||
|
||||
simulated function bool AllowFire()
|
||||
{
|
||||
if(KFWeapon(Weapon).bIsReloading)
|
||||
return false;
|
||||
if(KFPawn(Instigator).SecondaryItem!=none)
|
||||
return false;
|
||||
if(KFPawn(Instigator).bThrowingNade)
|
||||
return false;
|
||||
|
||||
if(KFWeapon(Weapon).MagAmmoRemaining < 1)
|
||||
{
|
||||
if( Level.TimeSeconds - LastClickTime>FireRate )
|
||||
{
|
||||
LastClickTime = Level.TimeSeconds;
|
||||
}
|
||||
|
||||
if( AIController(Instigator.Controller)!=None )
|
||||
KFWeapon(Weapon).ReloadMeNow();
|
||||
return false;
|
||||
}
|
||||
|
||||
return super(WeaponFire).AllowFire();
|
||||
}
|
||||
|
||||
simulated function InitEffects()
|
||||
{
|
||||
super.InitEffects();
|
||||
|
||||
// don't even spawn on server
|
||||
if ( (Level.NetMode == NM_DedicatedServer) || (AIController(Instigator.Controller) != None) )
|
||||
return;
|
||||
if ( (ShellEjectClass != None) && ((ShellEjectEmitter == None) || ShellEjectEmitter.bDeleteMe) )
|
||||
{
|
||||
ShellEjectEmitter = Weapon.Spawn(ShellEjectClass);
|
||||
Weapon.AttachToBone(ShellEjectEmitter, ShellEjectBoneName);
|
||||
}
|
||||
}
|
||||
|
||||
function DrawMuzzleFlash(Canvas Canvas)
|
||||
{
|
||||
super.DrawMuzzleFlash(Canvas);
|
||||
// Draw shell ejects
|
||||
if (ShellEjectEmitter != None )
|
||||
{
|
||||
Canvas.DrawActor( ShellEjectEmitter, false, false, Weapon.DisplayFOV );
|
||||
}
|
||||
}
|
||||
|
||||
function FlashMuzzleFlash()
|
||||
{
|
||||
super.FlashMuzzleFlash();
|
||||
|
||||
if (ShellEjectEmitter != None)
|
||||
{
|
||||
ShellEjectEmitter.Trigger(Weapon, Instigator);
|
||||
}
|
||||
}
|
||||
|
||||
simulated function DestroyEffects()
|
||||
{
|
||||
super.DestroyEffects();
|
||||
|
||||
if (ShellEjectEmitter != None)
|
||||
ShellEjectEmitter.Destroy();
|
||||
}
|
||||
|
||||
function DoFireEffect()
|
||||
{
|
||||
local Vector StartProj, StartTrace, X,Y,Z;
|
||||
local Rotator R, Aim;
|
||||
local Vector HitLocation, HitNormal;
|
||||
local Actor Other;
|
||||
local int p;
|
||||
local int SpawnCount;
|
||||
local float theta;
|
||||
|
||||
Instigator.MakeNoise(1.0);
|
||||
Weapon.GetViewAxes(X,Y,Z);
|
||||
|
||||
StartTrace = Instigator.Location + Instigator.EyePosition();// + X*Instigator.CollisionRadius;
|
||||
StartProj = StartTrace + X*ProjSpawnOffset.X;
|
||||
if ( !Weapon.WeaponCentered() && !KFWeap.bAimingRifle )
|
||||
StartProj = StartProj + Weapon.Hand * Y*ProjSpawnOffset.Y + Z*ProjSpawnOffset.Z;
|
||||
|
||||
// check if projectile would spawn through a wall and adjust start location accordingly
|
||||
Other = Weapon.Trace(HitLocation, HitNormal, StartProj, StartTrace, false);
|
||||
|
||||
// Collision attachment debugging
|
||||
/* if( Other.IsA('ROCollisionAttachment'))
|
||||
{
|
||||
log(self$"'s trace hit "$Other.Base$" Collision attachment");
|
||||
}*/
|
||||
|
||||
if (Other != None)
|
||||
{
|
||||
StartProj = HitLocation;
|
||||
}
|
||||
|
||||
Aim = AdjustAim(StartProj, AimError);
|
||||
|
||||
SpawnCount = Max(1, ProjPerFire * int(Load));
|
||||
|
||||
switch (SpreadStyle)
|
||||
{
|
||||
case SS_Random:
|
||||
X = Vector(Aim);
|
||||
for (p = 0; p < SpawnCount; p++)
|
||||
{
|
||||
R.Yaw = Spread * (FRand()-0.5);
|
||||
R.Pitch = Spread * (FRand()-0.5);
|
||||
R.Roll = Spread * (FRand()-0.5);
|
||||
SpawnProjectile(StartProj, Rotator(X >> R));
|
||||
}
|
||||
break;
|
||||
case SS_Line:
|
||||
for (p = 0; p < SpawnCount; p++)
|
||||
{
|
||||
theta = Spread*PI/32768*(p - float(SpawnCount-1)/2.0);
|
||||
X.X = Cos(theta);
|
||||
X.Y = Sin(theta);
|
||||
X.Z = 0.0;
|
||||
SpawnProjectile(StartProj, Rotator(X >> Aim));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
SpawnProjectile(StartProj, Aim);
|
||||
}
|
||||
|
||||
if (Instigator != none )
|
||||
{
|
||||
// Really boost the momentum for low grav. AA12 only gets momentum on low grav
|
||||
if( Instigator.Physics == PHYS_Falling
|
||||
&& Instigator.PhysicsVolume.Gravity.Z > class'PhysicsVolume'.default.Gravity.Z)
|
||||
{
|
||||
Instigator.AddVelocity((KickMomentum * 10.0) >> Instigator.GetViewRotation());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
KickMomentum=(X=-35.000000,Z=5.000000)
|
||||
ProjPerFire=5
|
||||
bAttachSmokeEmitter=True
|
||||
TransientSoundVolume=2.0
|
||||
TransientSoundRadius=500.000000
|
||||
FireSoundRef="KF_AA12Snd.AA12_Fire"
|
||||
StereoFireSoundRef="KF_AA12Snd.AA12_FireST"
|
||||
NoAmmoSoundRef="KF_AA12Snd.AA12_DryFire"
|
||||
FireRate=0.2//0.83//1.500000
|
||||
FireAnimRate=1.0
|
||||
AmmoClass=Class'KFMod.AA12Ammo'
|
||||
ProjectileClass=Class'KFMod.AA12Bullet'
|
||||
BotRefireRate=0.250000
|
||||
FlashEmitterClass=Class'ROEffects.MuzzleFlash1stKar'
|
||||
aimerror=1.000000
|
||||
Spread=1125.0//1500.000000
|
||||
maxVerticalRecoilAngle=1000
|
||||
maxHorizontalRecoilAngle=500
|
||||
FireAimedAnim=Fire_Iron
|
||||
|
||||
//** View shake **//
|
||||
ShakeOffsetMag=(X=6.0,Y=2.0,Z=6.0)
|
||||
ShakeOffsetRate=(X=1000.0,Y=1000.0,Z=1000.0)
|
||||
ShakeOffsetTime=1.25
|
||||
ShakeRotMag=(X=50.0,Y=50.0,Z=250.0)
|
||||
ShakeRotRate=(X=12500.0,Y=12500.0,Z=12500.0)
|
||||
ShakeRotTime=3.0
|
||||
bWaitForRelease=false
|
||||
|
||||
ShellEjectClass=class'ROEffects.KFShellEjectShotty'
|
||||
ShellEjectBoneName=Shell_eject
|
||||
bRandomPitchFireSound=false
|
||||
}
|
||||
32
kf_sources/KFMod/Classes/AA12Pickup.uc
Normal file
32
kf_sources/KFMod/Classes/AA12Pickup.uc
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
//=============================================================================
|
||||
// AA12 Shotgun Pickup.
|
||||
//=============================================================================
|
||||
class AA12Pickup extends KFWeaponPickup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Weight=10.000000
|
||||
cost=4000
|
||||
AmmoCost=40
|
||||
BuyClipSize=20
|
||||
PowerValue=85
|
||||
SpeedValue=65
|
||||
RangeValue=20
|
||||
Description="An advanced fully automatic shotgun."
|
||||
ItemName="AA12 Shotgun"
|
||||
ItemShortName="AA12 Shotgun"
|
||||
AmmoItemName="12-gauge drum"
|
||||
AmmoMesh=none
|
||||
InventoryType=Class'KFMod.AA12AutoShotgun'
|
||||
PickupMessage="You got the AA12 auto shotgun."
|
||||
PickupForce="AssaultRiflePickup"
|
||||
StaticMesh=StaticMesh'KF_pickups2_Trip.AA12_Pickup'
|
||||
DrawType=DT_StaticMesh
|
||||
CollisionRadius=35.000000
|
||||
CollisionHeight=5.000000
|
||||
PickupSound=Sound'KF_AA12Snd.AA12_Pickup'
|
||||
EquipmentCategoryID=3
|
||||
CorrespondingPerkIndex=1
|
||||
|
||||
VariantClasses[0]=class'KFMod.GoldenAA12Pickup'
|
||||
}
|
||||
55
kf_sources/KFMod/Classes/ACTION_AddInventory.uc
Normal file
55
kf_sources/KFMod/Classes/ACTION_AddInventory.uc
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
class ACTION_AddInventory extends ScriptedAction;
|
||||
|
||||
var() name InvTag;
|
||||
var() class<Inventory> InventoryType;
|
||||
|
||||
function bool InitActionFor(ScriptedController C)
|
||||
{
|
||||
local Inventory NewInv;
|
||||
local Pawn P;
|
||||
local class<Pickup> PickupClass;
|
||||
local PlayerController PC, OPC;
|
||||
local Controller CLC;
|
||||
|
||||
if( InventoryType == none )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
P = C.GetInstigator();
|
||||
if( P == none || P.FindInventoryType(InventoryType) != none )
|
||||
{
|
||||
return true; // stop right there!
|
||||
}
|
||||
|
||||
NewInv = C.Spawn(InventoryType,P,InvTag,P.Location);
|
||||
if( NewInv == none )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
NewInv.GiveTo( P );
|
||||
|
||||
OPC = PlayerController( P.Controller );
|
||||
|
||||
PickupClass = InventoryType.default.PickupClass;
|
||||
if( PickupClass != none )
|
||||
{
|
||||
P.PlaySound( PickupClass.default.PickupSound, SLOT_Interact );
|
||||
for( CLC = P.Level.ControllerList; CLC != None; CLC = CLC.NextController )
|
||||
{
|
||||
PC = PlayerController(CLC);
|
||||
if(PC != none)
|
||||
{
|
||||
PC.ReceiveLocalizedMessage(PickupClass.default.MessageClass,1,OPC.PlayerReplicationInfo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
ActionString="Add Inventory"
|
||||
}
|
||||
21
kf_sources/KFMod/Classes/ACTION_IfMonsterHasEnemy.uc
Normal file
21
kf_sources/KFMod/Classes/ACTION_IfMonsterHasEnemy.uc
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
//=============================================================================
|
||||
// ACTION_IfMonsterHasEnemy.
|
||||
// Conditional on Pawn.Controller.Enemy != None
|
||||
// by SuperApe -- Dec 2005
|
||||
//=============================================================================
|
||||
class ACTION_IfMonsterHasEnemy extends ScriptedAction;
|
||||
|
||||
function ProceedToNextAction( ScriptedController C )
|
||||
{
|
||||
if ( !C.Pawn.IsA('Monster') )
|
||||
ProceedToSectionEnd( C );
|
||||
|
||||
C.ActionNum += 1;
|
||||
if ( C.Pawn.Controller.Enemy == None )
|
||||
ProceedToSectionEnd( C );
|
||||
}
|
||||
|
||||
function bool StartsSection()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
23
kf_sources/KFMod/Classes/ACTION_IfMonsterIsHurt.uc
Normal file
23
kf_sources/KFMod/Classes/ACTION_IfMonsterIsHurt.uc
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
//=============================================================================
|
||||
// ACTION_IfMonsterIsHurt.
|
||||
// Conditional on Pawn.Health < HealthThreshold
|
||||
// by SuperApe -- Dec 2005
|
||||
//=============================================================================
|
||||
class ACTION_IfMonsterIsHurt extends ScriptedAction;
|
||||
|
||||
var() int HealthThreshold;
|
||||
|
||||
function ProceedToNextAction( ScriptedController C )
|
||||
{
|
||||
if ( !C.Pawn.IsA('Monster') )
|
||||
ProceedToSectionEnd( C );
|
||||
|
||||
C.ActionNum += 1;
|
||||
if ( C.Pawn.Health > HealthThreshold )
|
||||
ProceedToSectionEnd( C );
|
||||
}
|
||||
|
||||
function bool StartsSection()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
21
kf_sources/KFMod/Classes/ACTION_IfMonsterSeesEnemy.uc
Normal file
21
kf_sources/KFMod/Classes/ACTION_IfMonsterSeesEnemy.uc
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
//=============================================================================
|
||||
// ACTION_IfMonsterSeesEnemy.
|
||||
// Conditional on MonsterController.bEnemyIsVisible
|
||||
// by SuperApe -- Dec 2005
|
||||
//=============================================================================
|
||||
class ACTION_IfMonsterSeesEnemy extends ScriptedAction;
|
||||
|
||||
function ProceedToNextAction( ScriptedController C )
|
||||
{
|
||||
if ( !C.Pawn.IsA('Monster') || MonsterController( C.Pawn.Controller ) == None )
|
||||
ProceedToSectionEnd( C );
|
||||
|
||||
C.ActionNum += 1;
|
||||
if ( !MonsterController(C.Pawn.Controller).bEnemyIsVisible )
|
||||
ProceedToSectionEnd( C );
|
||||
}
|
||||
|
||||
function bool StartsSection()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
23
kf_sources/KFMod/Classes/ACTION_KFHardChangeMap.uc
Normal file
23
kf_sources/KFMod/Classes/ACTION_KFHardChangeMap.uc
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
class ACTION_KFHardChangeMap extends ScriptedAction;
|
||||
|
||||
function bool InitActionFor(ScriptedController C)
|
||||
{
|
||||
local PlayerController CP;
|
||||
|
||||
ForEach C.AllActors(class'PlayerController',CP)
|
||||
{
|
||||
CP.ConsoleCommand("DISCONNECT");
|
||||
//CP.ConsoleCommand("OPEN Entry?Game=KFMod.KFCinematicGame");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function string GetActionString()
|
||||
{
|
||||
return ActionString;
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
ActionString="Main menu"
|
||||
}
|
||||
29
kf_sources/KFMod/Classes/ACTION_Monsterize.uc
Normal file
29
kf_sources/KFMod/Classes/ACTION_Monsterize.uc
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
//=============================================================================
|
||||
// ACTION_Monsterize.
|
||||
// Spawn a MonsterController for this Pawn and have it possess the Pawn.
|
||||
// by SuperApe -- Dec 2005
|
||||
//=============================================================================
|
||||
class ACTION_Monsterize extends ScriptedAction;
|
||||
|
||||
var() name MonsterControllerTag;
|
||||
var() class<Controller> ControllerToSpawnFor;
|
||||
|
||||
function bool InitActionFor( ScriptedController C )
|
||||
{
|
||||
local Controller SpawnedController;
|
||||
local Pawn P;
|
||||
|
||||
P = C.Pawn;
|
||||
if( P==None )
|
||||
return false;
|
||||
if( ControllerToSpawnFor==None && Monster(P)!=None && Monster(P).ControllerClass!=None )
|
||||
ControllerToSpawnFor = Monster(P).ControllerClass;
|
||||
SpawnedController = C.spawn( ControllerToSpawnFor, None );
|
||||
if( SpawnedController==None )
|
||||
return false;
|
||||
SpawnedController.Tag = MonsterControllerTag;
|
||||
C.Pawn.Controller = None;
|
||||
C.Pawn = None;
|
||||
SpawnedController.Possess(P);
|
||||
return false;
|
||||
}
|
||||
33
kf_sources/KFMod/Classes/ACTION_PlayKFReplicatedAnim.uc
Normal file
33
kf_sources/KFMod/Classes/ACTION_PlayKFReplicatedAnim.uc
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
--------------------------------------------------------------
|
||||
ACTION_PlayKFReplicatedAnim
|
||||
--------------------------------------------------------------
|
||||
|
||||
Fully Replicated Version of ACTION_PlayAnim for use with KFPawns
|
||||
|
||||
Author : Alex Quick
|
||||
|
||||
--------------------------------------------------------------
|
||||
*/
|
||||
|
||||
class ACTION_PlayKFReplicatedAnim extends ACTION_PlayAnim;
|
||||
|
||||
function bool PawnPlayBaseAnim(ScriptedController C, bool bFirstPlay)
|
||||
{
|
||||
local KFPawn KFP;
|
||||
|
||||
KFP = KFPawn(C.Pawn);
|
||||
if(KFP == none)
|
||||
{
|
||||
log("Warning - Cannot use KFReplicatedAnim Actions with actors that are not children of KFPawn");
|
||||
return false;
|
||||
}
|
||||
|
||||
if ( BaseAnim == '' )
|
||||
return false;
|
||||
|
||||
C.bControlAnimations = true;
|
||||
KFP.SetScriptedAnimData(BaseAnim,BlendInTime,BlendOutTime,AnimRate,AnimIterations,bLoopAnim,StartFrame);
|
||||
|
||||
return false;
|
||||
}
|
||||
37
kf_sources/KFMod/Classes/ACTION_PossessPawn.uc
Normal file
37
kf_sources/KFMod/Classes/ACTION_PossessPawn.uc
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
//=============================================================================
|
||||
// ACTION_PossessPawn.
|
||||
// Possess the Pawn with the PawnTag. Destroy any previous MonsterController.
|
||||
// by SuperApe -- Dec 2005
|
||||
//=============================================================================
|
||||
class ACTION_PossessPawn extends ScriptedAction;
|
||||
|
||||
var() name PawnTag;
|
||||
var bool bPawnExists;
|
||||
|
||||
function bool InitActionFor( ScriptedController C )
|
||||
{
|
||||
local Pawn P;
|
||||
local MonsterController MC;
|
||||
|
||||
bPawnExists = false;
|
||||
forEach C.DynamicActors( class'Pawn', P, PawnTag )
|
||||
{
|
||||
bPawnExists = true;
|
||||
if ( P.Controller.IsA('MonsterController') )
|
||||
MC = MonsterController( P.Controller );
|
||||
P.Controller.Unpossess();
|
||||
|
||||
if ( P.Health > 0 )
|
||||
{
|
||||
C.Possess( P );
|
||||
P.Controller = C;
|
||||
P.AIScriptTag = C.Tag;
|
||||
}
|
||||
else P.AIScriptTag = '';
|
||||
if ( MC != None )
|
||||
MC.Destroy();
|
||||
}
|
||||
if ( !bPawnExists )
|
||||
Warn("No Pawn with tag "$PawnTag$" exists!");
|
||||
return false;
|
||||
}
|
||||
17
kf_sources/KFMod/Classes/AK47Ammo.uc
Normal file
17
kf_sources/KFMod/Classes/AK47Ammo.uc
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
//=============================================================================
|
||||
// AK47 Ammo.
|
||||
//=============================================================================
|
||||
class AK47Ammo extends KFAmmunition;
|
||||
|
||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||
//duplicated by goldenak47ammo
|
||||
defaultproperties
|
||||
{
|
||||
MaxAmmo=300
|
||||
InitialAmount=120
|
||||
AmmoPickupAmount=30
|
||||
PickupClass=Class'KFMod.AK47AmmoPickup'
|
||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
||||
ItemName="AK47 bullets"
|
||||
}
|
||||
11
kf_sources/KFMod/Classes/AK47AmmoPickup.uc
Normal file
11
kf_sources/KFMod/Classes/AK47AmmoPickup.uc
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
class AK47AmmoPickup extends KFAmmoPickup;
|
||||
//duplicated by goldenak47ammopickup
|
||||
defaultproperties
|
||||
{
|
||||
AmmoAmount=30
|
||||
InventoryType=Class'KFMod.AK47Ammo'
|
||||
PickupMessage="Rounds 7.62mm"
|
||||
PickupForce="AssaultAmmoPickup"
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||
}
|
||||
143
kf_sources/KFMod/Classes/AK47AssaultRifle.uc
Normal file
143
kf_sources/KFMod/Classes/AK47AssaultRifle.uc
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
//=============================================================================
|
||||
// AK47 Inventory class
|
||||
//=============================================================================
|
||||
class AK47AssaultRifle extends KFWeapon
|
||||
config(user);
|
||||
|
||||
#exec OBJ LOAD FILE=KillingFloorWeapons.utx
|
||||
#exec OBJ LOAD FILE=KillingFloorHUD.utx
|
||||
#exec OBJ LOAD FILE=Inf_Weapons_Foley.uax
|
||||
|
||||
// Use alt fire to switch fire modes
|
||||
simulated function AltFire(float F)
|
||||
{
|
||||
if(ReadyToFire(0))
|
||||
{
|
||||
DoToggle();
|
||||
}
|
||||
}
|
||||
|
||||
function bool RecommendRangedAttack()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//TODO: LONG ranged?
|
||||
function bool RecommendLongRangedAttack()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
function float SuggestAttackStyle()
|
||||
{
|
||||
return -1.0;
|
||||
}
|
||||
|
||||
exec function SwitchModes()
|
||||
{
|
||||
DoToggle();
|
||||
}
|
||||
|
||||
function float GetAIRating()
|
||||
{
|
||||
local Bot B;
|
||||
|
||||
B = Bot(Instigator.Controller);
|
||||
if ( (B == None) || (B.Enemy == None) )
|
||||
return AIRating;
|
||||
|
||||
return AIRating;
|
||||
}
|
||||
|
||||
function byte BestMode()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
simulated function SetZoomBlendColor(Canvas c)
|
||||
{
|
||||
local Byte val;
|
||||
local Color clr;
|
||||
local Color fog;
|
||||
|
||||
clr.R = 255;
|
||||
clr.G = 255;
|
||||
clr.B = 255;
|
||||
clr.A = 255;
|
||||
|
||||
if( Instigator.Region.Zone.bDistanceFog )
|
||||
{
|
||||
fog = Instigator.Region.Zone.DistanceFogColor;
|
||||
val = 0;
|
||||
val = Max( val, fog.R);
|
||||
val = Max( val, fog.G);
|
||||
val = Max( val, fog.B);
|
||||
if( val > 128 )
|
||||
{
|
||||
val -= 128;
|
||||
clr.R -= val;
|
||||
clr.G -= val;
|
||||
clr.B -= val;
|
||||
}
|
||||
}
|
||||
c.DrawColor = clr;
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
SkinRefs(0)="KF_Weapons2_Trip_T.Rifles.AK47_cmb"
|
||||
SleeveNum=1
|
||||
|
||||
WeaponReloadAnim=Reload_AK47
|
||||
IdleAimAnim=Idle_Iron
|
||||
|
||||
CustomCrosshair=11
|
||||
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
||||
MagCapacity=30
|
||||
ReloadRate=3.0
|
||||
ReloadAnim="Reload"
|
||||
ReloadAnimRate=1.000000
|
||||
|
||||
Weight=6.000000
|
||||
bModeZeroCanDryFire=True
|
||||
FireModeClass(0)=Class'KFMod.AK47Fire'
|
||||
FireModeClass(1)=Class'KFMod.NoFire'
|
||||
PutDownAnim="PutDown"
|
||||
SelectSoundRef="KF_AK47Snd.AK47_Select"
|
||||
SelectForce="SwitchToAssaultRifle"
|
||||
bShowChargingBar=True
|
||||
Description="A classic Russian assault rifle. Can be fired in semi or full auto with nice knock down power but not great accuracy."
|
||||
EffectOffset=(X=100.000000,Y=25.000000,Z=-10.000000)
|
||||
Priority=95
|
||||
InventoryGroup=3
|
||||
GroupOffset=7
|
||||
PickupClass=Class'KFMod.AK47Pickup'
|
||||
PlayerViewOffset=(X=18.000000,Y=22.000000,Z=-6.000000)
|
||||
//PlayerViewPivot=(Pitch=400)
|
||||
BobDamping=6.000000
|
||||
AttachmentClass=Class'KFMod.AK47Attachment'
|
||||
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
||||
ItemName="AK47"
|
||||
MeshRef="KF_Weapons2_Trip.AK47_Trip"
|
||||
DrawScale=1.00000
|
||||
TransientSoundVolume=1.250000
|
||||
AmbientGlow=0
|
||||
|
||||
AIRating=0.55
|
||||
CurrentRating=0.55
|
||||
|
||||
DisplayFOV=60.000000
|
||||
StandardDisplayFOV=60.0
|
||||
PlayerIronSightFOV=65
|
||||
ZoomTime=0.25
|
||||
FastZoomOutTime=0.2
|
||||
ZoomInRotation=(Pitch=-910,Yaw=0,Roll=2910)
|
||||
bHasAimingMode=true
|
||||
ZoomedDisplayFOV=32
|
||||
|
||||
HudImageRef="KillingFloor2HUD.WeaponSelect.Ak_47_unselected"
|
||||
SelectedHudImageRef="KillingFloor2HUD.WeaponSelect.Ak_47"
|
||||
TraderInfoTexture=texture'KillingFloor2HUD.Trader_Weapon_Icons.Trader_AK_47'
|
||||
|
||||
bIsTier2Weapon=true
|
||||
}
|
||||
74
kf_sources/KFMod/Classes/AK47Attachment.uc
Normal file
74
kf_sources/KFMod/Classes/AK47Attachment.uc
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
class AK47Attachment extends KFWeaponAttachment;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
mMuzFlashClass=Class'ROEffects.MuzzleFlash3rdMP'
|
||||
mTracerClass=Class'KFMod.KFNewTracer'
|
||||
mShellCaseEmitterClass=Class'KFMod.KFShellSpewer'
|
||||
bRapidFire=True
|
||||
bAltRapidFire=True
|
||||
SplashEffect=Class'BulletSplashEmitter'
|
||||
CullDistance=5000.000000
|
||||
MeshRef="KF_Weapons3rd_Trip.AK47_3rd"
|
||||
|
||||
MovementAnims(0)=JogF_AK47
|
||||
MovementAnims(1)=JogB_AK47
|
||||
MovementAnims(2)=JogL_AK47
|
||||
MovementAnims(3)=JogR_AK47
|
||||
CrouchAnims(0)=CHwalkF_AK47
|
||||
CrouchAnims(1)=CHwalkB_AK47
|
||||
CrouchAnims(2)=CHwalkL_AK47
|
||||
CrouchAnims(3)=CHwalkR_AK47
|
||||
WalkAnims(0)=WalkF_AK47
|
||||
WalkAnims(1)=WalkB_AK47
|
||||
WalkAnims(2)=WalkL_AK47
|
||||
WalkAnims(3)=WalkR_AK47
|
||||
AirStillAnim=JumpF_Mid
|
||||
AirAnims(0)=JumpF_Mid
|
||||
AirAnims(1)=JumpF_Mid
|
||||
AirAnims(2)=JumpL_Mid
|
||||
AirAnims(3)=JumpR_Mid
|
||||
TakeoffStillAnim=JumpF_Takeoff
|
||||
TakeoffAnims(0)=JumpF_Takeoff
|
||||
TakeoffAnims(1)=JumpF_Takeoff
|
||||
TakeoffAnims(2)=JumpL_Takeoff
|
||||
TakeoffAnims(3)=JumpR_Takeoff
|
||||
LandAnims(0)=JumpF_Land
|
||||
LandAnims(1)=JumpF_Land
|
||||
LandAnims(2)=JumpL_Land
|
||||
LandAnims(3)=JumpR_Land
|
||||
|
||||
TurnRightAnim=TurnR_AK47
|
||||
TurnLeftAnim=TurnL_AK47
|
||||
CrouchTurnRightAnim=CH_TurnR_AK47
|
||||
CrouchTurnLeftAnim=CH_TurnL_AK47
|
||||
IdleRestAnim=Idle_AK47//Idle_Rest
|
||||
IdleCrouchAnim=CHIdle_AK47
|
||||
IdleSwimAnim=Swim_Tread
|
||||
IdleWeaponAnim=Idle_AK47//Idle_Rifle
|
||||
IdleHeavyAnim=Idle_AK47//Idle_Biggun
|
||||
IdleRifleAnim=Idle_AK47//Idle_Rifle
|
||||
IdleChatAnim=Idle_AK47
|
||||
FireAnims(0)=Fire_AK47
|
||||
FireAnims(1)=Fire_AK47
|
||||
FireAnims(2)=Fire_AK47
|
||||
FireAnims(3)=Fire_AK47
|
||||
FireAltAnims(0)=Fire_AK47
|
||||
FireAltAnims(1)=Fire_AK47
|
||||
FireAltAnims(2)=Fire_AK47
|
||||
FireAltAnims(3)=Fire_AK47
|
||||
FireCrouchAnims(0)=CHFire_AK47
|
||||
FireCrouchAnims(1)=CHFire_AK47
|
||||
FireCrouchAnims(2)=CHFire_AK47
|
||||
FireCrouchAnims(3)=CHFire_AK47
|
||||
FireCrouchAltAnims(0)=CHFire_AK47
|
||||
FireCrouchAltAnims(1)=CHFire_AK47
|
||||
FireCrouchAltAnims(2)=CHFire_AK47
|
||||
FireCrouchAltAnims(3)=CHFire_AK47
|
||||
HitAnims(0)=HitF_AK47
|
||||
HitAnims(1)=HitB_AK47
|
||||
HitAnims(2)=HitL_AK47
|
||||
HitAnims(3)=HitR_AK47
|
||||
PostFireBlendStandAnim=Blend_AK47
|
||||
PostFireBlendCrouchAnim=CHBlend_AK47
|
||||
}
|
||||
47
kf_sources/KFMod/Classes/AK47Fire.uc
Normal file
47
kf_sources/KFMod/Classes/AK47Fire.uc
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
//=============================================================================
|
||||
//AK47 Fire
|
||||
//=============================================================================
|
||||
class AK47Fire extends KFFire;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
FireAimedAnim=Fire_Iron
|
||||
FireSoundRef="KF_AK47Snd.AK47_Fire"
|
||||
StereoFireSoundRef="KF_AK47Snd.AK47_FireST"
|
||||
NoAmmoSoundRef="KF_AK47Snd.AK47_DryFire"
|
||||
DamageType=Class'KFMod.DamTypeAK47AssaultRifle'
|
||||
DamageMin=35
|
||||
DamageMax=45
|
||||
Momentum=8500.000000
|
||||
bPawnRapidFireAnim=True
|
||||
TransientSoundVolume=1.8
|
||||
FireLoopAnim="Fire"
|
||||
FireForce="AssaultRifleFire"
|
||||
FireRate=0.109//0.085//0.077
|
||||
RecoilRate=0.07
|
||||
maxVerticalRecoilAngle=500
|
||||
maxHorizontalRecoilAngle=250
|
||||
TweenTime=0.025
|
||||
bAccuracyBonusForSemiAuto=true
|
||||
bRecoilRightOnly=true
|
||||
|
||||
AmmoClass=Class'KFMod.AK47Ammo'
|
||||
AmmoPerFire=1
|
||||
BotRefireRate=0.990000
|
||||
FlashEmitterClass=Class'ROEffects.MuzzleFlash1stSTG'
|
||||
aimerror=42.000000
|
||||
Spread=0.015//0.0085
|
||||
SpreadStyle=SS_Random
|
||||
|
||||
//** View shake **//
|
||||
ShakeOffsetMag=(X=6.0,Y=3.0,Z=7.5)
|
||||
ShakeOffsetRate=(X=1000.0,Y=1000.0,Z=1000.0)
|
||||
ShakeOffsetTime=1.25
|
||||
ShakeRotMag=(X=50.0,Y=50.0,Z=350.0)
|
||||
ShakeRotRate=(X=5000.0,Y=5000.0,Z=5000.0)
|
||||
ShakeRotTime=0.75
|
||||
|
||||
ShellEjectClass=class'ROEffects.KFShellEjectAK'
|
||||
ShellEjectBoneName=Shell_eject
|
||||
bRandomPitchFireSound=false
|
||||
}
|
||||
34
kf_sources/KFMod/Classes/AK47Pickup.uc
Normal file
34
kf_sources/KFMod/Classes/AK47Pickup.uc
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
//=============================================================================
|
||||
// AK47 Pickup.
|
||||
//=============================================================================
|
||||
class AK47Pickup extends KFWeaponPickup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Weight=6.000000
|
||||
cost=1000
|
||||
AmmoCost=10
|
||||
BuyClipSize=30
|
||||
PowerValue=40
|
||||
SpeedValue=80
|
||||
RangeValue=50
|
||||
Description="Standard issue military rifle. Equipped with an integrated 2X scope."
|
||||
ItemName="AK47"
|
||||
ItemShortName="AK47"
|
||||
AmmoItemName="7.62mm Ammo"
|
||||
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||
InventoryType=Class'KFMod.AK47AssaultRifle'
|
||||
PickupMessage="You got the AK47"
|
||||
PickupForce="AssaultRiflePickup"
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=StaticMesh'KF_pickups_Trip.AK47_pickup'
|
||||
DrawScale=1.000000
|
||||
CollisionRadius=25.000000
|
||||
CollisionHeight=5.000000
|
||||
PickupSound=Sound'KF_AK47Snd.AK47_Pickup'
|
||||
EquipmentCategoryID=2
|
||||
CorrespondingPerkIndex=3
|
||||
|
||||
VariantClasses[0]=class'KFMod.GoldenAK47Pickup'
|
||||
VariantClasses[1]=class'KFMod.NeonAK47Pickup'
|
||||
}
|
||||
38
kf_sources/KFMod/Classes/AshHardingSpecies.uc
Normal file
38
kf_sources/KFMod/Classes/AshHardingSpecies.uc
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
//=============================================================================
|
||||
// SteampunkBerserkerSpecies
|
||||
//=============================================================================
|
||||
// Species type for civilian players with Berserker sleeves
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2009 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class AshHardingSpecies extends CivilianSpecies;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
// KFTODO: Replace this
|
||||
//GibGroup="KFmod.KFGibGroup"
|
||||
MaleSoundGroup="KFmod.KFMaleSoundGroup"
|
||||
SpeciesName="Civilian"
|
||||
RaceNum=4
|
||||
MaleVoice="KFMod.KFVoicePackFemale"
|
||||
FemaleVoice="KFMod.KFVoicePackFemale"
|
||||
FemaleSoundGroup="XGame.xMercFemaleSoundGroup"
|
||||
AirControl=+1.0
|
||||
GroundSpeed=+1.0
|
||||
WaterSpeed=+1.0
|
||||
JumpZ=+1.0
|
||||
ReceivedDamageScaling=+1.0
|
||||
DamageScaling=+1.0
|
||||
AccelRate=+1.0
|
||||
WalkingPct=+1.0
|
||||
CrouchedPct=+1.0
|
||||
DodgeSpeedFactor=+1.0
|
||||
DodgeSpeedZ=+1.0
|
||||
|
||||
SleeveTexture=Texture'KF_Weapons6_Trip_T.First_Sleeves.Female_Soldier_FirstPersonSleeve_D'
|
||||
DetachedArmClass = class'SeveredArmAsh'
|
||||
DetachedLegClass = class'SeveredLegAsh'
|
||||
}
|
||||
|
||||
30
kf_sources/KFMod/Classes/AutoGunAI.uc
Normal file
30
kf_sources/KFMod/Classes/AutoGunAI.uc
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
// Changed base class, since this is 99,99 % same as TurretController, why not use it then?
|
||||
class AutoGunAI extends TurretController;
|
||||
|
||||
function bool IsTargetRelevant( Pawn Target )
|
||||
{
|
||||
if ( (Target != None) && (Target.Controller != None) && !Target.IsA('KFHumanPawn')
|
||||
&& (Target.Health > 0) && VSize(Target.Location-Pawn.Location) < Pawn.SightRadius*1.25 )
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
function bool IsTurretFiring()
|
||||
{
|
||||
return Pawn.IsFiring();
|
||||
}
|
||||
|
||||
auto state Searching
|
||||
{
|
||||
event SeeMonster( Pawn Seen )
|
||||
{
|
||||
if ( IsTargetRelevant( Seen ) )
|
||||
{
|
||||
Enemy = Seen;
|
||||
GotoState('Engaged');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
}
|
||||
25
kf_sources/KFMod/Classes/AvoidMarker_MedicNade.uc
Normal file
25
kf_sources/KFMod/Classes/AvoidMarker_MedicNade.uc
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
//=============================================================================
|
||||
// AvoidMarker_MedicNade
|
||||
// AvoidMarkerthat the medic grenade creates, overridden to not affect the
|
||||
// ringmaster
|
||||
//=============================================================================
|
||||
class AvoidMarker_MedicNade extends AvoidMarker
|
||||
placeable;
|
||||
|
||||
function bool RelevantTo(Pawn P)
|
||||
{
|
||||
local bool bRelevant;
|
||||
|
||||
bRelevant = Super.RelevantTo(P);
|
||||
|
||||
if( bRelevant && P.GetTeamNum() > 0 )
|
||||
{
|
||||
bRelevant = false;
|
||||
}
|
||||
|
||||
return bRelevant;
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
}
|
||||
45
kf_sources/KFMod/Classes/Axe.uc
Normal file
45
kf_sources/KFMod/Classes/Axe.uc
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
//=============================================================================
|
||||
// Axe Inventory class
|
||||
//=============================================================================
|
||||
class Axe extends KFMeleeGun;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Skins(0)=Combiner'KF_Weapons_Trip_T.melee.axe_cmb'
|
||||
|
||||
weaponRange=80.000000
|
||||
|
||||
BloodyMaterial=Combiner'KF_Weapons_Trip_T.melee.axe_bloody_cmb'
|
||||
bSpeedMeUp=True
|
||||
|
||||
Weight=5.000000
|
||||
FireModeClass(0)=Class'KFMod.AxeFire'
|
||||
FireModeClass(1)=Class'KFMod.AxeFireB'
|
||||
Description="A common two-handed fireman's axe."
|
||||
Priority=55
|
||||
GroupOffset=3
|
||||
PickupClass=Class'KFMod.AxePickup'
|
||||
BobDamping=8.000000
|
||||
AttachmentClass=Class'KFMod.AxeAttachment'
|
||||
IconCoords=(X1=169,Y1=39,X2=241,Y2=77)
|
||||
ItemName="Axe"
|
||||
Mesh=SkeletalMesh'KF_Weapons_Trip.Axe_Trip'
|
||||
AmbientGlow=0
|
||||
|
||||
AIRating=0.3
|
||||
CurrentRating=0.5
|
||||
|
||||
ChopSlowRate = 0.2
|
||||
|
||||
BloodSkinSwitchArray=0
|
||||
|
||||
DisplayFOV=75.000000
|
||||
StandardDisplayFOV=75.0
|
||||
|
||||
HudImage=Texture'KillingFloorHUD.WeaponSelect.Axe_unselected'
|
||||
SelectedHudImage=Texture'KillingFloorHUD.WeaponSelect.Axe'
|
||||
SelectSound=Sound'KF_AxeSnd.Axe_Select'
|
||||
TraderInfoTexture=texture'KillingFloorHUD.Trader_Weapon_Images.Trader_Axe'
|
||||
|
||||
bIsTier2Weapon=true
|
||||
}
|
||||
67
kf_sources/KFMod/Classes/AxeAttachment.uc
Normal file
67
kf_sources/KFMod/Classes/AxeAttachment.uc
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
class AxeAttachment extends KFMeleeAttachment;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Mesh=SkeletalMesh'KF_Weapons3rd_Trip.Axe_3rd'
|
||||
|
||||
MovementAnims(0)=JogF_Axe
|
||||
MovementAnims(1)=JogB_Axe
|
||||
MovementAnims(2)=JogL_Axe
|
||||
MovementAnims(3)=JogR_Axe
|
||||
CrouchAnims(0)=CHwalkF_Axe
|
||||
CrouchAnims(1)=CHwalkB_Axe
|
||||
CrouchAnims(2)=CHwalkL_Axe
|
||||
CrouchAnims(3)=CHwalkR_Axe
|
||||
// WalkAnims(0)=WalkF
|
||||
// WalkAnims(1)=WalkB
|
||||
// WalkAnims(2)=WalkL
|
||||
// WalkAnims(3)=WalkR
|
||||
AirStillAnim=JumpF_Mid
|
||||
AirAnims(0)=JumpF_Mid
|
||||
AirAnims(1)=JumpF_Mid
|
||||
AirAnims(2)=JumpL_Mid
|
||||
AirAnims(3)=JumpR_Mid
|
||||
TakeoffStillAnim=JumpF_Takeoff
|
||||
TakeoffAnims(0)=JumpF_Takeoff
|
||||
TakeoffAnims(1)=JumpF_Takeoff
|
||||
TakeoffAnims(2)=JumpL_Takeoff
|
||||
TakeoffAnims(3)=JumpR_Takeoff
|
||||
LandAnims(0)=JumpF_Land
|
||||
LandAnims(1)=JumpF_Land
|
||||
LandAnims(2)=JumpL_Land
|
||||
LandAnims(3)=JumpR_Land
|
||||
|
||||
TurnRightAnim=TurnR_Axe
|
||||
TurnLeftAnim=TurnL_Axe
|
||||
CrouchTurnRightAnim=CH_TurnR_Axe
|
||||
CrouchTurnLeftAnim=CH_TurnL_Axe
|
||||
IdleRestAnim=Idle_Axe//Idle_Rest
|
||||
IdleCrouchAnim=CHIdle_Axe
|
||||
IdleSwimAnim=Swim_Tread
|
||||
IdleWeaponAnim=Idle_Axe//Idle_Rifle
|
||||
IdleHeavyAnim=Idle_Axe//Idle_Biggun
|
||||
IdleRifleAnim=Idle_Axe//Idle_Rifle
|
||||
IdleChatAnim=Idle_Axe
|
||||
FireAnims(0)=Attack1_Axe
|
||||
FireAnims(1)=Attack2_Axe
|
||||
FireAnims(2)=Attack3_Axe
|
||||
FireAnims(3)=Attack3_Axe
|
||||
FireAltAnims(0)=Attack1_Axe
|
||||
FireAltAnims(1)=Attack2_Axe
|
||||
FireAltAnims(2)=Attack3_Axe
|
||||
FireAltAnims(3)=Attack3_Axe
|
||||
FireCrouchAnims(0)=CHAttack1_Axe
|
||||
FireCrouchAnims(1)=CHAttack2_Axe
|
||||
FireCrouchAnims(2)=CHAttack3_Axe
|
||||
FireCrouchAnims(3)=CHAttack3_Axe
|
||||
FireCrouchAltAnims(0)=CHAttack1_Axe
|
||||
FireCrouchAltAnims(1)=CHAttack2_Axe
|
||||
FireCrouchAltAnims(2)=CHAttack3_Axe
|
||||
FireCrouchAltAnims(3)=CHAttack3_Axe
|
||||
HitAnims(0)=HitF_Axe
|
||||
HitAnims(1)=HitB_Axe
|
||||
HitAnims(2)=HitL_Axe
|
||||
HitAnims(3)=HitR_Axe
|
||||
PostFireBlendStandAnim=Blend_Axe
|
||||
PostFireBlendCrouchAnim=CHBlend_Axe
|
||||
}
|
||||
38
kf_sources/KFMod/Classes/AxeFire.uc
Normal file
38
kf_sources/KFMod/Classes/AxeFire.uc
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
// Axe Fire //
|
||||
class AxeFire extends KFMeleeFire;
|
||||
|
||||
var() array<name> FireAnims;
|
||||
|
||||
simulated event ModeDoFire()
|
||||
{
|
||||
local int AnimToPlay;
|
||||
|
||||
if(FireAnims.length > 0)
|
||||
{
|
||||
AnimToPlay = rand(FireAnims.length);
|
||||
FireAnim = FireAnims[AnimToPlay];
|
||||
}
|
||||
|
||||
Super.ModeDoFire();
|
||||
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
FireAnims(0)="fire"
|
||||
FireAnims(1)="fire2"
|
||||
FireAnims(2)="fire3"
|
||||
FireAnims(3)="fire4"
|
||||
|
||||
MeleeDamage=175
|
||||
WideDamageMinHitAngle=0.65
|
||||
ProxySize=0.150000
|
||||
weaponRange=90.000000
|
||||
DamagedelayMin=0.60//0.800000
|
||||
DamagedelayMax=0.60//0.800000
|
||||
hitDamageClass=Class'KFMod.DamTypeAxe'
|
||||
FireRate=1.1
|
||||
BotRefireRate=0.850000
|
||||
MeleeHitSounds(0)=Sound'KF_AxeSnd.Axe_HitFlesh'
|
||||
HitEffectClass=class'AxeHitEffect'
|
||||
}
|
||||
20
kf_sources/KFMod/Classes/AxeFireB.uc
Normal file
20
kf_sources/KFMod/Classes/AxeFireB.uc
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
//-----------------------------------------------------------
|
||||
//
|
||||
//-----------------------------------------------------------
|
||||
class AxeFireB extends KFMeleeFire;
|
||||
|
||||
DefaultProperties
|
||||
{
|
||||
MeleeDamage=275
|
||||
WideDamageMinHitAngle=0.9
|
||||
ProxySize=0.150000
|
||||
weaponRange=90.000000
|
||||
DamagedelayMin=0.76//0.800000
|
||||
DamagedelayMax=0.76//0.800000
|
||||
hitDamageClass=Class'KFMod.DamTypeAxe'
|
||||
FireRate=1.333
|
||||
FireAnim="PowerAttack"
|
||||
BotRefireRate=0.850000
|
||||
MeleeHitSounds(0)=Sound'KF_AxeSnd.Axe_HitFlesh'
|
||||
HitEffectClass=class'AxeHitEffect'
|
||||
}
|
||||
37
kf_sources/KFMod/Classes/AxeHitEffect.uc
Normal file
37
kf_sources/KFMod/Classes/AxeHitEffect.uc
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
//=============================================================================
|
||||
// AxeHitEffect
|
||||
//=============================================================================
|
||||
// Hit effect class for axe hits
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 20099 John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
|
||||
class AxeHitEffect extends KFMeleeHitEffect;
|
||||
|
||||
//=============================================================================
|
||||
// defaultproperties
|
||||
//=============================================================================
|
||||
defaultproperties
|
||||
{
|
||||
HitEffects(0)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitRockEffect',HitSound=sound'KF_AxeSnd.Axe_HitDefault') // Default (Dirt?)
|
||||
HitEffects(1)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitRockEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Rock
|
||||
HitEffects(2)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitDirtEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Dirt
|
||||
HitEffects(3)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitMetalEffect',HitSound=sound'KF_AxeSnd.Axe_HitMetal') // Metal
|
||||
HitEffects(4)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitWoodEffect',HitSound=sound'KF_AxeSnd.Axe_HitWood') // Wood
|
||||
HitEffects(5)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitGrassEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Plant
|
||||
HitEffects(6)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitFleshEffect',HitSound=sound'KF_AxeSnd.Axe_HitFlesh') // Flesh (dead animals)
|
||||
HitEffects(7)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitIceEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Ice
|
||||
HitEffects(8)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitSnowEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Snow
|
||||
HitEffects(9)=(HitEffect=class'ROBulletHitWaterEffect',HitSound=sound'KF_AxeSnd.Axe_HitDefault') // Water
|
||||
HitEffects(10)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBreakingGlass',HitSound=sound'KF_AxeSnd.Axe_HitDefault') // Glass
|
||||
HitEffects(11)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitGravelEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Gravel
|
||||
HitEffects(12)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitConcreteEffect',HitSound=sound'KF_AxeSnd.Axe_HitConc') // Concrete
|
||||
HitEffects(13)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitWoodEffect',HitSound=sound'KF_AxeSnd.Axe_HitWood') // HollowWood
|
||||
HitEffects(14)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitMudEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Mud
|
||||
HitEffects(15)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitMetalArmorEffect',HitSound=sound'KF_AxeSnd.Axe_HitMetal') // MetalArmor
|
||||
HitEffects(16)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitPaperEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Paper
|
||||
HitEffects(17)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitClothEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Cloth
|
||||
HitEffects(18)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitRubberEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Rubber
|
||||
HitEffects(19)=(HitDecal=class'KnifeHitDirt',HitEffect=class'ROBulletHitMudEffect',HitSound=sound'KF_AxeSnd.Axe_HitDirt') // Poop
|
||||
}
|
||||
25
kf_sources/KFMod/Classes/AxePickup.uc
Normal file
25
kf_sources/KFMod/Classes/AxePickup.uc
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
//=============================================================================
|
||||
// Axe Pickup.
|
||||
//=============================================================================
|
||||
class AxePickup extends KFWeaponPickup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Weight=5.000000
|
||||
cost=1000
|
||||
PowerValue=56
|
||||
SpeedValue=32
|
||||
RangeValue=-20
|
||||
Description="A sturdy fireman's axe."
|
||||
ItemName="Axe"
|
||||
ItemShortName="Axe"
|
||||
InventoryType=Class'KFMod.Axe'
|
||||
PickupMessage="You got the Fire Axe."
|
||||
PickupForce="AssaultRiflePickup"
|
||||
StaticMesh=StaticMesh'KF_pickups_Trip.Axe_Pickup'
|
||||
CollisionRadius=27.000000
|
||||
CollisionHeight=5.000000
|
||||
PickupSound=Sound'KF_AxeSnd.Axe_Pickup'
|
||||
EquipmentCategoryID=0
|
||||
CorrespondingPerkIndex=4
|
||||
}
|
||||
46
kf_sources/KFMod/Classes/BEControlTrigger.uc
Normal file
46
kf_sources/KFMod/Classes/BEControlTrigger.uc
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
//==============================================
|
||||
// BEControlTrigger - Slinky - 4/28/05
|
||||
//==============================================
|
||||
// Enables/disables a single trigger/whatever
|
||||
// by replacing its event tag with ''/putting
|
||||
// it back.
|
||||
//==============================================
|
||||
// Black Ether Studios, 2005.
|
||||
//==============================================
|
||||
class BEControlTrigger extends Triggers;
|
||||
|
||||
var(Events) bool bInitiallyDisable; //Required if you want
|
||||
//to use this trigger
|
||||
//to activate object
|
||||
|
||||
var Actor ControlledActor;
|
||||
var name stolenEvent;
|
||||
|
||||
function PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
|
||||
if ( Event != '' )
|
||||
ForEach AllActors(class'Actor',ControlledActor, Event)
|
||||
break;
|
||||
if ( ControlledActor != None)
|
||||
{
|
||||
stolenEvent = ControlledActor.Event;
|
||||
if(bInitiallyDisable)
|
||||
ControlledActor.Event = '';
|
||||
}
|
||||
}
|
||||
|
||||
function Trigger( actor Other, pawn EventInstigator )
|
||||
{
|
||||
ControlledActor.Event = stolenEvent;
|
||||
}
|
||||
|
||||
function Untrigger(Actor Other, pawn EventInstigator)
|
||||
{
|
||||
ControlledActor.Event = '';
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
}
|
||||
43
kf_sources/KFMod/Classes/BEPhaseTrigger.uc
Normal file
43
kf_sources/KFMod/Classes/BEPhaseTrigger.uc
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
//==============================================
|
||||
// BEPhaseTrigger - Slinky - 4/28/05
|
||||
//==============================================
|
||||
// Trigger which calls target object back to
|
||||
// its original location/rotation when triggered
|
||||
// DO NOT use this class on dynamically generated
|
||||
// actors. And one Actor per trigger.
|
||||
//==============================================
|
||||
// Black Ether Studios, 2005
|
||||
//==============================================
|
||||
|
||||
class BEPhaseTrigger extends Triggers;
|
||||
|
||||
var Actor PhaseActor;
|
||||
var vector PhaseLocation;
|
||||
var rotator PhaseRotation;
|
||||
|
||||
function PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
|
||||
if ( Event != '' )
|
||||
ForEach AllActors(class'Actor',PhaseActor, Event)
|
||||
break;
|
||||
if ( PhaseActor != None )
|
||||
{
|
||||
PhaseLocation = PhaseActor.Location;
|
||||
PhaseRotation = PhaseActor.Rotation;
|
||||
}
|
||||
}
|
||||
|
||||
event Trigger( Actor Other, Pawn EventInstigator )
|
||||
{
|
||||
if(PhaseActor != None)
|
||||
{
|
||||
PhaseActor.SetRotation(PhaseRotation);
|
||||
PhaseActor.SetLocation(PhaseLocation);
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
}
|
||||
101
kf_sources/KFMod/Classes/BEResettableCounter.uc
Normal file
101
kf_sources/KFMod/Classes/BEResettableCounter.uc
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
//=================================================
|
||||
// BEResettableCounter - Slinky - 4/28/05
|
||||
//=================================================
|
||||
// Just like Counter, but resets itself when
|
||||
// untriggered.
|
||||
//=================================================
|
||||
// Black Ether Studios, 2005.
|
||||
//=================================================
|
||||
class BEResettableCounter extends Counter;
|
||||
|
||||
var () int CountDownInterval; // time between each decrement of the counter when it is in state_TimedCountDown
|
||||
var () string TimeUpMessage;
|
||||
var bool bCounting; // True when counter is counting down. False when it has been halted, via another trigger call.
|
||||
|
||||
event Untrigger( Actor Other, Pawn EventInstigator )
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
|
||||
// Counter was triggered.
|
||||
// Other trigger turns this on.
|
||||
function Trigger( actor Other, pawn EventInstigator )
|
||||
{
|
||||
local string S;
|
||||
local string Num;
|
||||
|
||||
if( NumToCount > 0 )
|
||||
{
|
||||
if( --NumToCount == 0 )
|
||||
{
|
||||
// Trigger all matching actors.
|
||||
if( bShowMessage && (CompleteMessage != ""))
|
||||
Level.Game.Broadcast(Self,CompleteMessage,'CriticalEvent');
|
||||
TriggerEvent(Event,Other,EventInstigator);
|
||||
}
|
||||
else if( bShowMessage && CountMessage != "" )
|
||||
{
|
||||
// Still counting down.
|
||||
switch( NumToCount )
|
||||
{
|
||||
case 1: Num="one"; break;
|
||||
case 2: Num="two"; break;
|
||||
case 3: Num="three"; break;
|
||||
case 4: Num="four"; break;
|
||||
case 5: Num="five"; break;
|
||||
case 6: Num="six"; break;
|
||||
default: Num=string(NumToCount); break;
|
||||
}
|
||||
S = CountMessage;
|
||||
ReplaceText(S,"%i",Num);
|
||||
Level.Game.Broadcast(Self,S,'CriticalEvent');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function Timer()
|
||||
{
|
||||
if (!bCounting)
|
||||
return;
|
||||
|
||||
NumToCount --;
|
||||
|
||||
// Counter made it to zero. we failed.
|
||||
if(NumToCount <= 0)
|
||||
{
|
||||
if( TimeUpMessage!="" )
|
||||
Level.Game.Broadcast(Self,TimeUpMessage,'CriticalEvent');
|
||||
TriggerEvent(Event,self,Instigator);
|
||||
SetTimer(0,false);
|
||||
bCounting = false;
|
||||
}
|
||||
else Level.Game.Broadcast(Self,"00:"$NumToCount,'CriticalEvent');
|
||||
}
|
||||
|
||||
// Other trigger turns this on.
|
||||
state() TimedCountDown
|
||||
{
|
||||
function Trigger( actor Other, pawn EventInstigator )
|
||||
{
|
||||
Instigator = EventInstigator;
|
||||
|
||||
// If we ARE counting down, start the timer. Otherwise, we've been asked to halt. Let the timer know, so it can
|
||||
// stop itself in the next iteration.
|
||||
if (!bCounting)
|
||||
{
|
||||
SetTimer(CountDownInterval,true);
|
||||
bCounting = true;
|
||||
}
|
||||
else if(bCounting)
|
||||
{
|
||||
bCounting = false;
|
||||
SetTimer(0,false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
CountDownInterval=1
|
||||
TimeUpMessage="TIME UP"
|
||||
}
|
||||
33
kf_sources/KFMod/Classes/BESpawnVolume.uc
Normal file
33
kf_sources/KFMod/Classes/BESpawnVolume.uc
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
//=========================================
|
||||
// BESpawnVolume - Slinky - 4/28/05
|
||||
//=========================================
|
||||
// Spawns an actor of the associated type
|
||||
// on trigger. Good for various things.
|
||||
//=========================================
|
||||
// Black Ether Studios, 2005.
|
||||
//=========================================
|
||||
class BESpawnVolume extends Volume;
|
||||
|
||||
var(Events) class<Actor> CreateOnTrigger;
|
||||
var(Events) bool SpawnObjectAtStart;
|
||||
|
||||
var Actor myActor;
|
||||
|
||||
function PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
if(SpawnObjectAtStart && CreateOnTrigger != None)
|
||||
myActor = Spawn(CreateOnTrigger);
|
||||
}
|
||||
|
||||
event Trigger( Actor Other, Pawn EventInstigator )
|
||||
{
|
||||
if(myActor != None)
|
||||
myActor.Destroy();
|
||||
if(CreateOnTrigger != None)
|
||||
myActor = Spawn(CreateOnTrigger);
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
}
|
||||
33
kf_sources/KFMod/Classes/BETimedTrigger.uc
Normal file
33
kf_sources/KFMod/Classes/BETimedTrigger.uc
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
//=========================================================
|
||||
// BETimedTrigger - Slinky - 4/28/05
|
||||
//=========================================================
|
||||
// Triggers the associated event after the listed delay.
|
||||
// Only one delayed event per trigger may be processed
|
||||
// simultaneously.
|
||||
//=========================================================
|
||||
// Black Ether Studios, 2005.
|
||||
//=========================================================
|
||||
class BETimedTrigger extends Triggers;
|
||||
|
||||
var(Events) float eventDelay;
|
||||
var bool processingTrigger;
|
||||
|
||||
function Trigger( actor Other, pawn EventInstigator )
|
||||
{
|
||||
if( processingTrigger )
|
||||
return;
|
||||
Instigator = EventInstigator;
|
||||
processingTrigger = true;
|
||||
SetTimer(eventDelay,false);
|
||||
}
|
||||
|
||||
event Timer()
|
||||
{
|
||||
TriggerEvent(Event,Self,Instigator);
|
||||
processingTrigger = false;
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
eventDelay=1.000000
|
||||
}
|
||||
29
kf_sources/KFMod/Classes/BEUntrigger.uc
Normal file
29
kf_sources/KFMod/Classes/BEUntrigger.uc
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
//======================================
|
||||
// BEUntrigger - Slinky - 4/28/05
|
||||
//======================================
|
||||
// Used as a trigger inverter, for when
|
||||
// you need to pick up untrigger messages
|
||||
// coming from a trigger. Allows filters.
|
||||
//======================================
|
||||
// Black Ether Studios, 2005.
|
||||
//======================================
|
||||
class BEUntrigger extends Triggers;
|
||||
|
||||
var(Events) bool bSendUntrigger,bSendTrigger;
|
||||
|
||||
event Trigger( Actor Other, Pawn EventInstigator )
|
||||
{
|
||||
if(bSendUntrigger)
|
||||
UntriggerEvent(Event,Other,EventInstigator);
|
||||
}
|
||||
event Untrigger( Actor Other, Pawn EventInstigator )
|
||||
{
|
||||
if(bSendTrigger)
|
||||
TriggerEvent(Event,Other,EventInstigator);
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
bSendUntrigger=True
|
||||
bSendTrigger=True
|
||||
}
|
||||
7
kf_sources/KFMod/Classes/BZombieAmmo.uc
Normal file
7
kf_sources/KFMod/Classes/BZombieAmmo.uc
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
class BZombieAmmo extends Ammunition;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
bSplashDamage=True
|
||||
ProjectileClass=Class'KFMod.KFBloatVomit'
|
||||
}
|
||||
41
kf_sources/KFMod/Classes/Bat.uc
Normal file
41
kf_sources/KFMod/Classes/Bat.uc
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
//=============================================================================
|
||||
// Bat Inventory class
|
||||
//=============================================================================
|
||||
class Bat extends KFMeleeGun;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
weaponRange=80.000000
|
||||
bSpeedMeUp=True
|
||||
|
||||
BloodyMaterial=Shader'KillingFloorWeapons.Bat.BatBloodyShader'
|
||||
BloodSkinSwitchArray=0
|
||||
|
||||
Skins(0)=Shader'KillingFloorWeapons.Bat.BatShineShader'
|
||||
Skins(1)=Combiner'KF_Weapons_Trip_T.hands.hands_1stP_military_cmb'
|
||||
Weight=3.000000
|
||||
FireModeClass(0)=Class'KFMod.BatFire'
|
||||
FireModeClass(1)=Class'KFMod.NoFire'
|
||||
Description="This bit of broken pipe looks like it was pried from a gas-line."
|
||||
Priority=3
|
||||
//SmallViewOffset=(X=13.000000,Y=18.000000,Z=-10.000000)
|
||||
GroupOffset=2
|
||||
PickupClass=Class'KFMod.BatPickup'
|
||||
PlayerViewOffset=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
//PlayerViewPivot=(Pitch=400)
|
||||
BobDamping=8.000000
|
||||
AttachmentClass=Class'KFMod.BatAttachment'
|
||||
IconCoords=(Y1=407,X2=118,Y2=442)
|
||||
ItemName="Broken Pipe"
|
||||
Mesh=SkeletalMesh'KF_Weapons_Trip.Pipe_Trip'
|
||||
AmbientGlow=0
|
||||
AIRating=0.4
|
||||
CurrentRating=0.4
|
||||
|
||||
ChopSlowRate = 0.35
|
||||
|
||||
DisplayFOV=70.000000
|
||||
StandardDisplayFOV=70.0
|
||||
|
||||
HudImage=texture'KillingFloorHUD.WeaponSelect.machette'
|
||||
}
|
||||
53
kf_sources/KFMod/Classes/BatAttachment.uc
Normal file
53
kf_sources/KFMod/Classes/BatAttachment.uc
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
class BatAttachment extends KFMeleeAttachment ;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Mesh=SkeletalMesh'KF_Weapons3rd_Trip.Pipe_3rd'
|
||||
|
||||
MovementAnims(0)=JogF_Pipe
|
||||
MovementAnims(1)=JogB_Pipe
|
||||
MovementAnims(2)=JogL_Pipe
|
||||
MovementAnims(3)=JogR_Pipe
|
||||
CrouchAnims(0)=CHwalkF_Pipe
|
||||
CrouchAnims(1)=CHwalkB_Pipe
|
||||
CrouchAnims(2)=CHwalkL_Pipe
|
||||
CrouchAnims(3)=CHwalkR_Pipe
|
||||
// WalkAnims(0)=WalkF
|
||||
// WalkAnims(1)=WalkB
|
||||
// WalkAnims(2)=WalkL
|
||||
// WalkAnims(3)=WalkR
|
||||
AirStillAnim=JumpF_Mid
|
||||
AirAnims(0)=JumpF_Mid
|
||||
AirAnims(1)=JumpF_Mid
|
||||
AirAnims(2)=JumpL_Mid
|
||||
AirAnims(3)=JumpR_Mid
|
||||
TakeoffStillAnim=JumpF_Takeoff
|
||||
TakeoffAnims(0)=JumpF_Takeoff
|
||||
TakeoffAnims(1)=JumpF_Takeoff
|
||||
TakeoffAnims(2)=JumpL_Takeoff
|
||||
TakeoffAnims(3)=JumpR_Takeoff
|
||||
LandAnims(0)=JumpF_Land
|
||||
LandAnims(1)=JumpF_Land
|
||||
LandAnims(2)=JumpL_Land
|
||||
LandAnims(3)=JumpR_Land
|
||||
|
||||
TurnRightAnim=TurnR_Pipe
|
||||
TurnLeftAnim=TurnL_Pipe
|
||||
CrouchTurnRightAnim=CH_TurnR_Pipe
|
||||
CrouchTurnLeftAnim=CH_TurnL_Pipe
|
||||
IdleRestAnim=Idle_Pipe//Idle_Rest
|
||||
IdleCrouchAnim=CHIdle_Pipe
|
||||
IdleSwimAnim=Swim_Tread
|
||||
IdleWeaponAnim=Idle_Pipe//Idle_Rifle
|
||||
IdleHeavyAnim=Idle_Pipe//Idle_Biggun
|
||||
IdleRifleAnim=Idle_Pipe//Idle_Rifle
|
||||
IdleChatAnim=Idle_Pipe
|
||||
FireAnims(0)=Attack1_Pipe
|
||||
FireAnims(1)=Attack2_Pipe
|
||||
FireAnims(2)=Attack3_Pipe
|
||||
FireAnims(3)=Attack4_Pipe
|
||||
FireAltAnims(0)=Attack1_Pipe
|
||||
FireAltAnims(1)=Attack2_Pipe
|
||||
FireAltAnims(2)=Attack3_Pipe
|
||||
FireAltAnims(3)=Attack4_Pipe
|
||||
}
|
||||
33
kf_sources/KFMod/Classes/BatFire.uc
Normal file
33
kf_sources/KFMod/Classes/BatFire.uc
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
// Bat Fire //
|
||||
|
||||
class BatFire extends KFMeleeFire;
|
||||
|
||||
var() Name FireAnim2;
|
||||
|
||||
function PlayFiring()
|
||||
{
|
||||
local name fa;
|
||||
|
||||
if( FRand()<0.7 ) // Randomly swap animations.
|
||||
{
|
||||
fa = FireAnim2;
|
||||
FireAnim2 = FireAnim;
|
||||
FireAnim = fa;
|
||||
}
|
||||
Super.PlayFiring();
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
FireAnim2="Fire2"
|
||||
MeleeDamage=70
|
||||
ProxySize=0.120000
|
||||
DamagedelayMin=0.500000
|
||||
DamagedelayMax=0.500000
|
||||
hitDamageClass=Class'KFMod.DamTypeBat'
|
||||
FireRate=0.710000
|
||||
BotRefireRate=0.710000
|
||||
MeleeHitSounds(0)=Sound'KFPawnDamageSound.MeleeDamageSounds.bathitflesh'
|
||||
MeleeHitSounds(1)=Sound'KFPawnDamageSound.MeleeDamageSounds.bathitflesh2'
|
||||
MeleeHitSounds(2)=Sound'KFPawnDamageSound.MeleeDamageSounds.bathitflesh3'
|
||||
}
|
||||
25
kf_sources/KFMod/Classes/BatPickup.uc
Normal file
25
kf_sources/KFMod/Classes/BatPickup.uc
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
//=============================================================================
|
||||
// Bat Pickup.
|
||||
//=============================================================================
|
||||
class BatPickup extends KFWeaponPickup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Weight=3.000000
|
||||
cost=100
|
||||
PowerValue=35
|
||||
SpeedValue=56
|
||||
RangeValue=-20
|
||||
Description="This bit of broken pipe looks like it was pried from a gas-line."
|
||||
ItemName="Broken Pipe"
|
||||
ItemShortName="Broken Pipe"
|
||||
InventoryType=Class'KFMod.Bat'
|
||||
PickupMessage="You got a broken pipe."
|
||||
PickupSound=Sound'PatchSounds.pickupm2-2'
|
||||
PickupForce="AssaultRiflePickup"
|
||||
StaticMesh=StaticMesh'KillingFloorStatics.BatGround'
|
||||
CollisionRadius=28.000000
|
||||
CollisionHeight=5.000000
|
||||
EquipmentCategoryID=0
|
||||
CorrespondingPerkIndex=4
|
||||
}
|
||||
20
kf_sources/KFMod/Classes/BenelliAmmo.uc
Normal file
20
kf_sources/KFMod/Classes/BenelliAmmo.uc
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
//=============================================================================
|
||||
// BenelliAmmo
|
||||
//=============================================================================
|
||||
// Ammo for the Benelli shotgun primary fire
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2011 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BenelliAmmo extends KFAmmunition;
|
||||
|
||||
//duplicated by goldenbenelliammo
|
||||
defaultproperties
|
||||
{
|
||||
MaxAmmo=48
|
||||
InitialAmount=24
|
||||
AmmoPickupAmount=6
|
||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||
IconCoords=(X1=451,Y1=445,X2=510,Y2=500)
|
||||
}
|
||||
12
kf_sources/KFMod/Classes/BenelliAmmoPickup.uc
Normal file
12
kf_sources/KFMod/Classes/BenelliAmmoPickup.uc
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
class BenelliAmmoPickup extends KFAmmoPickup;
|
||||
|
||||
//duplicated by goldenbenelliammopickup
|
||||
defaultproperties
|
||||
{
|
||||
AmmoAmount=6
|
||||
InventoryType=Class'KFMod.BenelliAmmo'
|
||||
PickupMessage="12-Gauge Shells"
|
||||
PickupForce="AssaultAmmoPickup"
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=none
|
||||
}
|
||||
79
kf_sources/KFMod/Classes/BenelliAttachment.uc
Normal file
79
kf_sources/KFMod/Classes/BenelliAttachment.uc
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
//=============================================================================
|
||||
// BenelliAttachment
|
||||
//=============================================================================
|
||||
// Benelli M4 Shotgun third person attachment class
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2011 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
|
||||
class BenelliAttachment extends ShotgunAttachment;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
mMuzFlashClass=Class'ROEffects.MuzzleFlash3rdKar'
|
||||
mShellCaseEmitterClass=Class'KFMod.KFShotgunShellSpewer'
|
||||
MeshRef="KF_Weapons3rd3_Trip.Benelli_3rd"
|
||||
|
||||
MovementAnims(0)=JogF_Shotgun
|
||||
MovementAnims(1)=JogB_Shotgun
|
||||
MovementAnims(2)=JogL_Shotgun
|
||||
MovementAnims(3)=JogR_Shotgun
|
||||
CrouchAnims(0)=CHwalkF_Shotgun
|
||||
CrouchAnims(1)=CHwalkB_Shotgun
|
||||
CrouchAnims(2)=CHwalkL_Shotgun
|
||||
CrouchAnims(3)=CHwalkR_Shotgun
|
||||
WalkAnims(0)=WalkF_Shotgun
|
||||
WalkAnims(1)=WalkB_Shotgun
|
||||
WalkAnims(2)=WalkL_Shotgun
|
||||
WalkAnims(3)=WalkR_Shotgun
|
||||
AirStillAnim=JumpF_Mid
|
||||
AirAnims(0)=JumpF_Mid
|
||||
AirAnims(1)=JumpF_Mid
|
||||
AirAnims(2)=JumpL_Mid
|
||||
AirAnims(3)=JumpR_Mid
|
||||
TakeoffStillAnim=JumpF_Takeoff
|
||||
TakeoffAnims(0)=JumpF_Takeoff
|
||||
TakeoffAnims(1)=JumpF_Takeoff
|
||||
TakeoffAnims(2)=JumpL_Takeoff
|
||||
TakeoffAnims(3)=JumpR_Takeoff
|
||||
LandAnims(0)=JumpF_Land
|
||||
LandAnims(1)=JumpF_Land
|
||||
LandAnims(2)=JumpL_Land
|
||||
LandAnims(3)=JumpR_Land
|
||||
|
||||
TurnRightAnim=TurnR_Shotgun
|
||||
TurnLeftAnim=TurnL_Shotgun
|
||||
CrouchTurnRightAnim=CH_TurnR_Shotgun
|
||||
CrouchTurnLeftAnim=CH_TurnL_Shotgun
|
||||
IdleRestAnim=Idle_Shotgun//Idle_Rest
|
||||
IdleCrouchAnim=CHIdle_Shotgun
|
||||
IdleSwimAnim=Swim_Tread
|
||||
IdleWeaponAnim=Idle_Shotgun//Idle_Rifle
|
||||
IdleHeavyAnim=Idle_Shotgun//Idle_Biggun
|
||||
IdleRifleAnim=Idle_Shotgun//Idle_Rifle
|
||||
IdleChatAnim=Idle_Shotgun
|
||||
FireAnims(0)=Fire_Benelli
|
||||
FireAnims(1)=Fire_Benelli
|
||||
FireAnims(2)=Fire_Benelli
|
||||
FireAnims(3)=Fire_Benelli
|
||||
FireAltAnims(0)=Fire_Benelli
|
||||
FireAltAnims(1)=Fire_Benelli
|
||||
FireAltAnims(2)=Fire_Benelli
|
||||
FireAltAnims(3)=Fire_Benelli
|
||||
FireCrouchAnims(0)=CHFire_Benelli
|
||||
FireCrouchAnims(1)=CHFire_Benelli
|
||||
FireCrouchAnims(2)=CHFire_Benelli
|
||||
FireCrouchAnims(3)=CHFire_Benelli
|
||||
FireCrouchAltAnims(0)=CHFire_Benelli
|
||||
FireCrouchAltAnims(1)=CHFire_Benelli
|
||||
FireCrouchAltAnims(2)=CHFire_Benelli
|
||||
FireCrouchAltAnims(3)=CHFire_Benelli
|
||||
HitAnims(0)=HitF_Shotgun
|
||||
HitAnims(1)=HitB_Shotgun
|
||||
HitAnims(2)=HitL_Shotgun
|
||||
HitAnims(3)=HitR_Shotgun
|
||||
PostFireBlendStandAnim=Blend_Shotgun
|
||||
PostFireBlendCrouchAnim=CHBlend_Shotgun
|
||||
}
|
||||
33
kf_sources/KFMod/Classes/BenelliBullet.uc
Normal file
33
kf_sources/KFMod/Classes/BenelliBullet.uc
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
//=============================================================================
|
||||
// BenelliBullet
|
||||
//=============================================================================
|
||||
// Benelli shotgun pellet
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2011 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BenelliBullet extends ShotgunBullet;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
DamageAtten=5.000000
|
||||
MaxPenetrations=2
|
||||
PenDamageReduction=0.500000
|
||||
HeadShotDamageMult=1.500000
|
||||
Speed=3500.000000
|
||||
MaxSpeed=4000.000000
|
||||
bSwitchToZeroCollision=True
|
||||
Damage=35.000000
|
||||
DamageRadius=0.000000
|
||||
MomentumTransfer=50000.000000
|
||||
MyDamageType=Class'KFMod.DamTypeBenelli'
|
||||
ExplosionDecal=Class'KFMod.ShotgunDecal'
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=StaticMesh'kf_generic_sm.Shotgun_Pellet'
|
||||
CullDistance=3000.000000
|
||||
LifeSpan=3.000000
|
||||
DrawScale=1.0
|
||||
Style=STY_Alpha
|
||||
ImpactEffect=class'ROBulletHitEffect'
|
||||
}
|
||||
92
kf_sources/KFMod/Classes/BenelliFire.uc
Normal file
92
kf_sources/KFMod/Classes/BenelliFire.uc
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
//=============================================================================
|
||||
// BenelliFire
|
||||
//=============================================================================
|
||||
// Benelli shotgun primary fire class
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2011 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BenelliFire extends KFShotgunFire;
|
||||
|
||||
var() class<Emitter> ShellEjectClass; // class of the shell eject emitter
|
||||
var() Emitter ShellEjectEmitter; // The shell eject emitter
|
||||
var() name ShellEjectBoneName; // name of the shell eject bone
|
||||
|
||||
simulated function InitEffects()
|
||||
{
|
||||
super.InitEffects();
|
||||
|
||||
// don't even spawn on server
|
||||
if ( (Level.NetMode == NM_DedicatedServer) || (AIController(Instigator.Controller) != None) )
|
||||
return;
|
||||
if ( (ShellEjectClass != None) && ((ShellEjectEmitter == None) || ShellEjectEmitter.bDeleteMe) )
|
||||
{
|
||||
ShellEjectEmitter = Weapon.Spawn(ShellEjectClass);
|
||||
Weapon.AttachToBone(ShellEjectEmitter, ShellEjectBoneName);
|
||||
}
|
||||
}
|
||||
|
||||
function DrawMuzzleFlash(Canvas Canvas)
|
||||
{
|
||||
super.DrawMuzzleFlash(Canvas);
|
||||
// Draw shell ejects
|
||||
if (ShellEjectEmitter != None )
|
||||
{
|
||||
Canvas.DrawActor( ShellEjectEmitter, false, false, Weapon.DisplayFOV );
|
||||
}
|
||||
}
|
||||
|
||||
function FlashMuzzleFlash()
|
||||
{
|
||||
super.FlashMuzzleFlash();
|
||||
|
||||
if (ShellEjectEmitter != None)
|
||||
{
|
||||
ShellEjectEmitter.Trigger(Weapon, Instigator);
|
||||
}
|
||||
}
|
||||
|
||||
simulated function DestroyEffects()
|
||||
{
|
||||
super.DestroyEffects();
|
||||
|
||||
if (ShellEjectEmitter != None)
|
||||
ShellEjectEmitter.Destroy();
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
KickMomentum=(X=-45.000000,Z=10.000000)
|
||||
ProjPerFire=7
|
||||
bAttachSmokeEmitter=True
|
||||
TransientSoundVolume=2.0
|
||||
TransientSoundRadius=500.000000
|
||||
FireSoundRef="KF_PumpSGSnd.SG_Fire"
|
||||
StereoFireSoundRef="KF_PumpSGSnd.SG_FireST"
|
||||
NoAmmoSoundRef="KF_PumpSGSnd.SG_DryFire"
|
||||
FireRate=0.2
|
||||
FireAnimRate=1.0
|
||||
AmmoClass=Class'KFMod.BenelliAmmo'
|
||||
ProjectileClass=Class'KFMod.BenelliBullet'
|
||||
BotRefireRate=0.200000
|
||||
FlashEmitterClass=Class'ROEffects.MuzzleFlash1stKar'
|
||||
aimerror=1.000000
|
||||
Spread=1125.0//1500.000000
|
||||
maxVerticalRecoilAngle=1500
|
||||
maxHorizontalRecoilAngle=900
|
||||
FireAimedAnim=Fire_Iron
|
||||
|
||||
//** View shake **//
|
||||
ShakeOffsetMag=(X=6.0,Y=2.0,Z=10.0)
|
||||
ShakeOffsetRate=(X=1000.0,Y=1000.0,Z=1000.0)
|
||||
ShakeOffsetTime=3.0
|
||||
ShakeRotMag=(X=50.0,Y=50.0,Z=400.0)
|
||||
ShakeRotRate=(X=12500.0,Y=12500.0,Z=12500.0)
|
||||
ShakeRotTime=5.0
|
||||
bWaitForRelease=true
|
||||
bRandomPitchFireSound=false
|
||||
|
||||
ShellEjectClass=class'ROEffects.KFShellEjectBenelli'
|
||||
ShellEjectBoneName=Shell_eject
|
||||
}
|
||||
37
kf_sources/KFMod/Classes/BenelliPickup.uc
Normal file
37
kf_sources/KFMod/Classes/BenelliPickup.uc
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
//=============================================================================
|
||||
// BenelliPickup
|
||||
//=============================================================================
|
||||
// Benellie shotgun pickup class
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2011 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BenelliPickup extends KFWeaponPickup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Weight=8.000000
|
||||
cost=2500
|
||||
BuyClipSize=6
|
||||
PowerValue=70
|
||||
SpeedValue=60
|
||||
RangeValue=15
|
||||
Description="A military tactical shotgun with semi automatic fire capability. Holds up to 6 shells. "
|
||||
ItemName="Combat Shotgun"
|
||||
ItemShortName="Combat Shotgun"
|
||||
AmmoItemName="12-gauge shells"
|
||||
AmmoMesh=none
|
||||
InventoryType=Class'KFMod.BenelliShotgun'
|
||||
PickupMessage="You got the combat shotgun."
|
||||
PickupForce="AssaultRiflePickup"
|
||||
StaticMesh=StaticMesh'KF_pickups3_Trip.Benelli_Pickup'
|
||||
DrawType=DT_StaticMesh
|
||||
CollisionRadius=35.000000
|
||||
CollisionHeight=5.000000
|
||||
PickupSound=Sound'KF_M4ShotgunSnd.WEP_Benelli_Foley_Pickup'
|
||||
EquipmentCategoryID=2
|
||||
CorrespondingPerkIndex=1
|
||||
|
||||
VariantClasses[0]=class'KFMod.GoldenBenelliPickup'
|
||||
}
|
||||
194
kf_sources/KFMod/Classes/BenelliShotgun.uc
Normal file
194
kf_sources/KFMod/Classes/BenelliShotgun.uc
Normal file
|
|
@ -0,0 +1,194 @@
|
|||
//=============================================================================
|
||||
// BenelliShotgun
|
||||
//=============================================================================
|
||||
// A Benelli M4 Shotgun
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2011 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BenelliShotgun extends KFWeaponShotgun;
|
||||
|
||||
// Overridden to not take us out of ironsights when firing
|
||||
simulated function WeaponTick(float dt)
|
||||
{
|
||||
local float LastSeenSeconds,ReloadMulti;
|
||||
|
||||
if( bForceLeaveIronsights )
|
||||
{
|
||||
ZoomOut(true);
|
||||
|
||||
if( Role < ROLE_Authority)
|
||||
ServerZoomOut(false);
|
||||
|
||||
bForceLeaveIronsights = false;
|
||||
}
|
||||
|
||||
if( ForceZoomOutTime > 0 )
|
||||
{
|
||||
if( bAimingRifle )
|
||||
{
|
||||
if( Level.TimeSeconds - ForceZoomOutTime > 0 )
|
||||
{
|
||||
ForceZoomOutTime = 0;
|
||||
|
||||
ZoomOut(true);
|
||||
|
||||
if( Role < ROLE_Authority)
|
||||
ServerZoomOut(false);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
ForceZoomOutTime = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ( (Level.NetMode == NM_Client) || Instigator == None || KFFriendlyAI(Instigator.Controller) == none && Instigator.PlayerReplicationInfo == None)
|
||||
return;
|
||||
|
||||
// Turn it off on death / battery expenditure
|
||||
if (FlashLight != none)
|
||||
{
|
||||
// Keep the 1Pweapon client beam up to date.
|
||||
AdjustLightGraphic();
|
||||
if (FlashLight.bHasLight)
|
||||
{
|
||||
if (Instigator.Health <= 0 || KFHumanPawn(Instigator).TorchBatteryLife <= 0 || Instigator.PendingWeapon != none )
|
||||
{
|
||||
//Log("Killing Light...you're out of batteries, or switched / dropped weapons");
|
||||
KFHumanPawn(Instigator).bTorchOn = false;
|
||||
ServerSpawnLight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
UpdateMagCapacity(Instigator.PlayerReplicationInfo);
|
||||
|
||||
if(!bIsReloading)
|
||||
{
|
||||
if(!Instigator.IsHumanControlled())
|
||||
{
|
||||
LastSeenSeconds = Level.TimeSeconds - Instigator.Controller.LastSeenTime;
|
||||
if(MagAmmoRemaining == 0 || ((LastSeenSeconds >= 5 || LastSeenSeconds > MagAmmoRemaining) && MagAmmoRemaining < MagCapacity))
|
||||
ReloadMeNow();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if((Level.TimeSeconds - ReloadTimer) >= ReloadRate)
|
||||
{
|
||||
if(AmmoAmount(0) <= MagCapacity && !bHoldToReload)
|
||||
{
|
||||
MagAmmoRemaining = AmmoAmount(0);
|
||||
ActuallyFinishReloading();
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo) != none && KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill != none )
|
||||
{
|
||||
ReloadMulti = KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill.Static.GetReloadSpeedModifier(KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo), self);
|
||||
}
|
||||
else
|
||||
{
|
||||
ReloadMulti = 1.0;
|
||||
}
|
||||
|
||||
AddReloadedAmmo();
|
||||
|
||||
if( bHoldToReload )
|
||||
{
|
||||
NumLoadedThisReload++;
|
||||
}
|
||||
|
||||
if(MagAmmoRemaining < MagCapacity && MagAmmoRemaining < AmmoAmount(0) && bHoldToReload)
|
||||
ReloadTimer = Level.TimeSeconds;
|
||||
if(MagAmmoRemaining >= MagCapacity || MagAmmoRemaining >= AmmoAmount(0) || !bHoldToReload || bDoSingleReload)
|
||||
ActuallyFinishReloading();
|
||||
else if( Level.NetMode!=NM_Client )
|
||||
Instigator.SetAnimAction(WeaponReloadAnim);
|
||||
}
|
||||
}
|
||||
else if(bIsReloading && !bReloadEffectDone && Level.TimeSeconds - ReloadTimer >= ReloadRate / 2)
|
||||
{
|
||||
bReloadEffectDone = true;
|
||||
ClientReloadEffects();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Copied from KFWeaponShotgun to support Achievements
|
||||
simulated function AddReloadedAmmo()
|
||||
{
|
||||
if(AmmoAmount(0) > 0)
|
||||
++MagAmmoRemaining;
|
||||
|
||||
// Don't do this on a "Hold to reload" weapon, as it can update too quick actually and cause issues maybe - Ramm
|
||||
if( !bHoldToReload )
|
||||
{
|
||||
ClientForceKFAmmoUpdate(MagAmmoRemaining,AmmoAmount(0));
|
||||
}
|
||||
|
||||
if ( PlayerController(Instigator.Controller) != none && KFSteamStatsAndAchievements(PlayerController(Instigator.Controller).SteamStatsAndAchievements) != none )
|
||||
{
|
||||
KFSteamStatsAndAchievements(PlayerController(Instigator.Controller).SteamStatsAndAchievements).OnBenelliReloaded();
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
SkinRefs(0)="KF_Weapons4_Trip_T.Weapons.Benelli_M4_cmb"
|
||||
SkinRefs(1)="KF_Weapons2_Trip_T.Special.Aimpoint_sight_shdr"
|
||||
|
||||
SleeveNum=2
|
||||
|
||||
WeaponReloadAnim=Reload_Shotgun
|
||||
|
||||
MagCapacity=6
|
||||
ReloadRate=0.9//0.80
|
||||
ReloadAnim="Reload"
|
||||
ReloadAnimRate=1.0
|
||||
IdleAimAnim=Idle_Iron
|
||||
Weight=8.000000
|
||||
bModeZeroCanDryFire=True
|
||||
FireModeClass(0)=Class'KFMod.BenelliFire'
|
||||
FireModeClass(1)=Class'KFMod.ShotGunLightFire'
|
||||
PutDownAnim="PutDown"
|
||||
SelectSoundRef="KF_M4ShotgunSnd.WEP_Benelli_Foley_Select"
|
||||
bShowChargingBar=True
|
||||
Description="A military tactical shotgun with semi automatic fire capability. Holds up to 6 shells. "
|
||||
Priority=170
|
||||
InventoryGroup=3
|
||||
GroupOffset=9
|
||||
PickupClass=Class'KFMod.BenelliPickup'
|
||||
|
||||
BobDamping=7.000000
|
||||
AttachmentClass=Class'KFMod.BenelliAttachment'
|
||||
IconCoords=(X1=169,Y1=172,X2=245,Y2=208)
|
||||
ItemName="Combat Shotgun"
|
||||
MeshRef="KF_Wep_Benelli.Benelli_Trip"
|
||||
TransientSoundVolume=1.000000
|
||||
PlayerViewOffset=(X=20.000000,Y=18.750000,Z=-7.500000)
|
||||
AmbientGlow=0
|
||||
AIRating=0.6
|
||||
CurrentRating=0.6
|
||||
|
||||
ZoomTime=0.25
|
||||
FastZoomOutTime=0.2
|
||||
ZoomInRotation=(Pitch=-910,Yaw=0,Roll=2910)
|
||||
bHasAimingMode=true
|
||||
bTorchEnabled=true
|
||||
|
||||
DisplayFOV=65.0
|
||||
StandardDisplayFOV=65.0
|
||||
PlayerIronSightFOV=70
|
||||
ZoomedDisplayFOV=40
|
||||
|
||||
HudImageRef="KillingFloor2HUD.WeaponSelect.Beneli_unselected"
|
||||
SelectedHudImageRef="KillingFloor2HUD.WeaponSelect.Beneli"
|
||||
TraderInfoTexture=texture'KillingFloor2HUD.Trader_Weapon_Icons.Trader_Beneli'
|
||||
FirstPersonFlashlightOffset=(X=-25.000000,Y=-18.000000,Z=8.000000)
|
||||
|
||||
// Achievement Helpers
|
||||
bIsTier2Weapon=true
|
||||
}
|
||||
332
kf_sources/KFMod/Classes/BileExplosion.uc
Normal file
332
kf_sources/KFMod/Classes/BileExplosion.uc
Normal file
|
|
@ -0,0 +1,332 @@
|
|||
class BileExplosion extends FleshHitEmitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter103
|
||||
FadeOut=True
|
||||
RespawnDeadParticles=False
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-500.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=0.200000
|
||||
MaxParticles=2
|
||||
Name="SpriteEmitter103"
|
||||
SizeScale(1)=(RelativeTime=0.070000,RelativeSize=1.000000)
|
||||
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'kf_fx_trip_t.Gore.bloat_explode_blood'
|
||||
LifetimeRange=(Min=1.000000,Max=1.000000)
|
||||
StartVelocityRange=(X=(Min=-50.000000,Max=50.000000),Y=(Min=-50.000000,Max=50.000000),Z=(Min=150.000000,Max=300.000000))
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter103'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter24
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.limbs.bloat_arm_resource'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter24"
|
||||
StartLocationRange=(Z=(Min=10.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(1)=MeshEmitter'MeshEmitter24'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter25
|
||||
StaticMesh=StaticMesh'EffectsSM.PlayerGibbs.Chunk1_Gibb'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=30
|
||||
Name="MeshEmitter25"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=0.500000,Max=2.000000),Y=(Min=0.500000,Max=2.000000),Z=(Min=0.500000,Max=2.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=1000.000000))
|
||||
VelocityLossRange=(Z=(Min=1.000000,Max=1.000000))
|
||||
End Object
|
||||
Emitters(2)=MeshEmitter'MeshEmitter25'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter109
|
||||
RespawnDeadParticles=False
|
||||
SpawnOnlyInDirectionOfNormal=True
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
ScaleSizeYByVelocity=True
|
||||
ScaleSizeZByVelocity=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
Acceleration=(Z=-200.000000)
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=96,G=160,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=1.000000
|
||||
MaxParticles=8
|
||||
Name="SpriteEmitter109"
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=5.000000)
|
||||
StartMassRange=(Min=11.000000,Max=11.000000)
|
||||
UseRotationFrom=PTRS_Normal
|
||||
SpinsPerSecondRange=(X=(Min=-0.300000,Max=0.300000))
|
||||
StartSpinRange=(X=(Min=-0.500000,Max=0.500000))
|
||||
SizeScale(0)=(RelativeSize=1.000000)
|
||||
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.500000)
|
||||
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=3.000000
|
||||
InitialParticlesPerSecond=500.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_b_diff'
|
||||
TextureUSubdivisions=4
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=0.500000,Max=0.500000)
|
||||
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=100.000000,Max=100.000000))
|
||||
End Object
|
||||
Emitters(3)=SpriteEmitter'SpriteEmitter109'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter26
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.limbs.bloat_arm_resource'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter26"
|
||||
StartLocationRange=(X=(Min=-16.000000,Max=16.000000),Y=(Min=-16.000000,Max=16.000000),Z=(Min=12.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(4)=MeshEmitter'MeshEmitter26'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter27
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.limbs.bloat_head'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter27"
|
||||
StartLocationRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=90.000000,Max=90.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(5)=MeshEmitter'MeshEmitter27'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter28
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.gibbs.intestines'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter28"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_Regular
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(6)=MeshEmitter'MeshEmitter28'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter113
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter113"
|
||||
AddLocationFromOtherEmitter=1
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(7)=SpriteEmitter'SpriteEmitter113'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter114
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=60
|
||||
Name="SpriteEmitter114"
|
||||
AddLocationFromOtherEmitter=2
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=60.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(8)=SpriteEmitter'SpriteEmitter114'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter115
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter115"
|
||||
AddLocationFromOtherEmitter=4
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(9)=SpriteEmitter'SpriteEmitter115'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter116
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter116"
|
||||
AddLocationFromOtherEmitter=5
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(10)=SpriteEmitter'SpriteEmitter116'
|
||||
|
||||
AutoDestroy=False
|
||||
// Style=STY_Masked
|
||||
bUnlit=false
|
||||
bDirectional=True
|
||||
bNoDelete=false
|
||||
RemoteRole=ROLE_None
|
||||
// bNetTemporary=true
|
||||
LifeSpan = 10
|
||||
}
|
||||
309
kf_sources/KFMod/Classes/BileExplosionHeadless.uc
Normal file
309
kf_sources/KFMod/Classes/BileExplosionHeadless.uc
Normal file
|
|
@ -0,0 +1,309 @@
|
|||
class BileExplosionHeadless extends FleshHitEmitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter136
|
||||
FadeOut=True
|
||||
RespawnDeadParticles=False
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-500.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=0.200000
|
||||
MaxParticles=2
|
||||
Name="SpriteEmitter136"
|
||||
SizeScale(1)=(RelativeTime=0.070000,RelativeSize=1.000000)
|
||||
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'kf_fx_trip_t.Gore.bloat_explode_blood'
|
||||
LifetimeRange=(Min=1.000000,Max=1.000000)
|
||||
StartVelocityRange=(X=(Min=-50.000000,Max=50.000000),Y=(Min=-50.000000,Max=50.000000),Z=(Min=150.000000,Max=300.000000))
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter136'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter38
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.limbs.bloat_arm_resource'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter38"
|
||||
StartLocationRange=(Z=(Min=10.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(1)=MeshEmitter'MeshEmitter38'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter39
|
||||
StaticMesh=StaticMesh'EffectsSM.PlayerGibbs.Chunk1_Gibb'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=30
|
||||
Name="MeshEmitter39"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=0.500000,Max=2.000000),Y=(Min=0.500000,Max=2.000000),Z=(Min=0.500000,Max=2.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=1000.000000))
|
||||
VelocityLossRange=(Z=(Min=1.000000,Max=1.000000))
|
||||
End Object
|
||||
Emitters(2)=MeshEmitter'MeshEmitter39'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter137
|
||||
RespawnDeadParticles=False
|
||||
SpawnOnlyInDirectionOfNormal=True
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
ScaleSizeYByVelocity=True
|
||||
ScaleSizeZByVelocity=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
Acceleration=(Z=-200.000000)
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=96,G=160,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=1.000000
|
||||
MaxParticles=8
|
||||
Name="SpriteEmitter137"
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=5.000000)
|
||||
StartMassRange=(Min=11.000000,Max=11.000000)
|
||||
UseRotationFrom=PTRS_Normal
|
||||
SpinsPerSecondRange=(X=(Min=-0.300000,Max=0.300000))
|
||||
StartSpinRange=(X=(Min=-0.500000,Max=0.500000))
|
||||
SizeScale(0)=(RelativeSize=1.000000)
|
||||
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.500000)
|
||||
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=3.000000
|
||||
InitialParticlesPerSecond=500.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_b_diff'
|
||||
TextureUSubdivisions=4
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=0.500000,Max=0.500000)
|
||||
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=100.000000,Max=100.000000))
|
||||
End Object
|
||||
Emitters(3)=SpriteEmitter'SpriteEmitter137'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter40
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.limbs.bloat_arm_resource'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter40"
|
||||
StartLocationRange=(X=(Min=-16.000000,Max=16.000000),Y=(Min=-16.000000,Max=16.000000),Z=(Min=12.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(4)=MeshEmitter'MeshEmitter40'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter42
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.gibbs.intestines'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter42"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_Regular
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(5)=MeshEmitter'MeshEmitter42'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter138
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter138"
|
||||
AddLocationFromOtherEmitter=1
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(6)=SpriteEmitter'SpriteEmitter138'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter139
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=60
|
||||
Name="SpriteEmitter139"
|
||||
AddLocationFromOtherEmitter=2
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=60.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(7)=SpriteEmitter'SpriteEmitter139'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter140
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter140"
|
||||
AddLocationFromOtherEmitter=4
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(8)=SpriteEmitter'SpriteEmitter140'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter141
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter141"
|
||||
AddLocationFromOtherEmitter=5
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(9)=SpriteEmitter'SpriteEmitter141'
|
||||
|
||||
AutoDestroy=True
|
||||
// Style=STY_Masked
|
||||
bUnlit=false
|
||||
bDirectional=True
|
||||
bNoDelete=false
|
||||
RemoteRole=ROLE_None
|
||||
bNetTemporary=true
|
||||
LifeSpan = 10
|
||||
}
|
||||
|
||||
309
kf_sources/KFMod/Classes/BileExplosionHeadless_Circus.uc
Normal file
309
kf_sources/KFMod/Classes/BileExplosionHeadless_Circus.uc
Normal file
|
|
@ -0,0 +1,309 @@
|
|||
class BileExplosionHeadless_Circus extends FleshHitEmitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter136
|
||||
FadeOut=True
|
||||
RespawnDeadParticles=False
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-500.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=0.200000
|
||||
MaxParticles=2
|
||||
Name="SpriteEmitter136"
|
||||
SizeScale(1)=(RelativeTime=0.070000,RelativeSize=1.000000)
|
||||
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'kf_fx_trip_t.Gore.bloat_explode_blood'
|
||||
LifetimeRange=(Min=1.000000,Max=1.000000)
|
||||
StartVelocityRange=(X=(Min=-50.000000,Max=50.000000),Y=(Min=-50.000000,Max=50.000000),Z=(Min=150.000000,Max=300.000000))
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter136'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter38
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm_CIRCUS.limbs.bloat_clown_Arm_Gore'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter38"
|
||||
StartLocationRange=(Z=(Min=10.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(1)=MeshEmitter'MeshEmitter38'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter39
|
||||
StaticMesh=StaticMesh'EffectsSM.PlayerGibbs.Chunk1_Gibb'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=30
|
||||
Name="MeshEmitter39"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=0.500000,Max=2.000000),Y=(Min=0.500000,Max=2.000000),Z=(Min=0.500000,Max=2.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=1000.000000))
|
||||
VelocityLossRange=(Z=(Min=1.000000,Max=1.000000))
|
||||
End Object
|
||||
Emitters(2)=MeshEmitter'MeshEmitter39'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter137
|
||||
RespawnDeadParticles=False
|
||||
SpawnOnlyInDirectionOfNormal=True
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
ScaleSizeYByVelocity=True
|
||||
ScaleSizeZByVelocity=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
Acceleration=(Z=-200.000000)
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=96,G=160,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=1.000000
|
||||
MaxParticles=8
|
||||
Name="SpriteEmitter137"
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=5.000000)
|
||||
StartMassRange=(Min=11.000000,Max=11.000000)
|
||||
UseRotationFrom=PTRS_Normal
|
||||
SpinsPerSecondRange=(X=(Min=-0.300000,Max=0.300000))
|
||||
StartSpinRange=(X=(Min=-0.500000,Max=0.500000))
|
||||
SizeScale(0)=(RelativeSize=1.000000)
|
||||
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.500000)
|
||||
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=3.000000
|
||||
InitialParticlesPerSecond=500.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_b_diff'
|
||||
TextureUSubdivisions=4
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=0.500000,Max=0.500000)
|
||||
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=100.000000,Max=100.000000))
|
||||
End Object
|
||||
Emitters(3)=SpriteEmitter'SpriteEmitter137'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter40
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm_CIRCUS.limbs.bloat_clown_Arm_Gore'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter40"
|
||||
StartLocationRange=(X=(Min=-16.000000,Max=16.000000),Y=(Min=-16.000000,Max=16.000000),Z=(Min=12.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(4)=MeshEmitter'MeshEmitter40'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter42
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.gibbs.intestines'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter42"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_Regular
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(5)=MeshEmitter'MeshEmitter42'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter138
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter138"
|
||||
AddLocationFromOtherEmitter=1
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(6)=SpriteEmitter'SpriteEmitter138'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter139
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=60
|
||||
Name="SpriteEmitter139"
|
||||
AddLocationFromOtherEmitter=2
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=60.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(7)=SpriteEmitter'SpriteEmitter139'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter140
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter140"
|
||||
AddLocationFromOtherEmitter=4
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(8)=SpriteEmitter'SpriteEmitter140'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter141
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter141"
|
||||
AddLocationFromOtherEmitter=5
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(9)=SpriteEmitter'SpriteEmitter141'
|
||||
|
||||
AutoDestroy=True
|
||||
// Style=STY_Masked
|
||||
bUnlit=false
|
||||
bDirectional=True
|
||||
bNoDelete=false
|
||||
RemoteRole=ROLE_None
|
||||
bNetTemporary=true
|
||||
LifeSpan = 10
|
||||
}
|
||||
|
||||
309
kf_sources/KFMod/Classes/BileExplosionHeadless_Halloween.uc
Normal file
309
kf_sources/KFMod/Classes/BileExplosionHeadless_Halloween.uc
Normal file
|
|
@ -0,0 +1,309 @@
|
|||
class BileExplosionHeadless_Halloween extends FleshHitEmitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter136
|
||||
FadeOut=True
|
||||
RespawnDeadParticles=False
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-500.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=0.200000
|
||||
MaxParticles=2
|
||||
Name="SpriteEmitter136"
|
||||
SizeScale(1)=(RelativeTime=0.070000,RelativeSize=1.000000)
|
||||
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'kf_fx_trip_t.Gore.bloat_explode_blood'
|
||||
LifetimeRange=(Min=1.000000,Max=1.000000)
|
||||
StartVelocityRange=(X=(Min=-50.000000,Max=50.000000),Y=(Min=-50.000000,Max=50.000000),Z=(Min=150.000000,Max=300.000000))
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter136'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter38
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm_HALLOWEEN.Redneck_Bloat.Bloat_RedneckZombie_ArmGore'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter38"
|
||||
StartLocationRange=(Z=(Min=10.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(1)=MeshEmitter'MeshEmitter38'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter39
|
||||
StaticMesh=StaticMesh'EffectsSM.PlayerGibbs.Chunk1_Gibb'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=30
|
||||
Name="MeshEmitter39"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=0.500000,Max=2.000000),Y=(Min=0.500000,Max=2.000000),Z=(Min=0.500000,Max=2.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=1000.000000))
|
||||
VelocityLossRange=(Z=(Min=1.000000,Max=1.000000))
|
||||
End Object
|
||||
Emitters(2)=MeshEmitter'MeshEmitter39'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter137
|
||||
RespawnDeadParticles=False
|
||||
SpawnOnlyInDirectionOfNormal=True
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
ScaleSizeYByVelocity=True
|
||||
ScaleSizeZByVelocity=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
Acceleration=(Z=-200.000000)
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=96,G=160,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=1.000000
|
||||
MaxParticles=8
|
||||
Name="SpriteEmitter137"
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=5.000000)
|
||||
StartMassRange=(Min=11.000000,Max=11.000000)
|
||||
UseRotationFrom=PTRS_Normal
|
||||
SpinsPerSecondRange=(X=(Min=-0.300000,Max=0.300000))
|
||||
StartSpinRange=(X=(Min=-0.500000,Max=0.500000))
|
||||
SizeScale(0)=(RelativeSize=1.000000)
|
||||
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.500000)
|
||||
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=3.000000
|
||||
InitialParticlesPerSecond=500.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_b_diff'
|
||||
TextureUSubdivisions=4
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=0.500000,Max=0.500000)
|
||||
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=100.000000,Max=100.000000))
|
||||
End Object
|
||||
Emitters(3)=SpriteEmitter'SpriteEmitter137'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter40
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm_HALLOWEEN.Redneck_Bloat.Bloat_RedneckZombie_ArmGore'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter40"
|
||||
StartLocationRange=(X=(Min=-16.000000,Max=16.000000),Y=(Min=-16.000000,Max=16.000000),Z=(Min=12.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(4)=MeshEmitter'MeshEmitter40'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter42
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.gibbs.intestines'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter42"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_Regular
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(5)=MeshEmitter'MeshEmitter42'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter138
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter138"
|
||||
AddLocationFromOtherEmitter=1
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(6)=SpriteEmitter'SpriteEmitter138'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter139
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=60
|
||||
Name="SpriteEmitter139"
|
||||
AddLocationFromOtherEmitter=2
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=60.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(7)=SpriteEmitter'SpriteEmitter139'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter140
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter140"
|
||||
AddLocationFromOtherEmitter=4
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(8)=SpriteEmitter'SpriteEmitter140'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter141
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter141"
|
||||
AddLocationFromOtherEmitter=5
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(9)=SpriteEmitter'SpriteEmitter141'
|
||||
|
||||
AutoDestroy=True
|
||||
// Style=STY_Masked
|
||||
bUnlit=false
|
||||
bDirectional=True
|
||||
bNoDelete=false
|
||||
RemoteRole=ROLE_None
|
||||
bNetTemporary=true
|
||||
LifeSpan = 10
|
||||
}
|
||||
|
||||
332
kf_sources/KFMod/Classes/BileExplosion_Circus.uc
Normal file
332
kf_sources/KFMod/Classes/BileExplosion_Circus.uc
Normal file
|
|
@ -0,0 +1,332 @@
|
|||
class BileExplosion_Circus extends FleshHitEmitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter103
|
||||
FadeOut=True
|
||||
RespawnDeadParticles=False
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-500.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=0.200000
|
||||
MaxParticles=2
|
||||
Name="SpriteEmitter103"
|
||||
SizeScale(1)=(RelativeTime=0.070000,RelativeSize=1.000000)
|
||||
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'kf_fx_trip_t.Gore.bloat_explode_blood'
|
||||
LifetimeRange=(Min=1.000000,Max=1.000000)
|
||||
StartVelocityRange=(X=(Min=-50.000000,Max=50.000000),Y=(Min=-50.000000,Max=50.000000),Z=(Min=150.000000,Max=300.000000))
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter103'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter24
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm_CIRCUS.limbs.bloat_clown_Arm_Gore'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter24"
|
||||
StartLocationRange=(Z=(Min=10.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(1)=MeshEmitter'MeshEmitter24'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter25
|
||||
StaticMesh=StaticMesh'EffectsSM.PlayerGibbs.Chunk1_Gibb'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=30
|
||||
Name="MeshEmitter25"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=0.500000,Max=2.000000),Y=(Min=0.500000,Max=2.000000),Z=(Min=0.500000,Max=2.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=1000.000000))
|
||||
VelocityLossRange=(Z=(Min=1.000000,Max=1.000000))
|
||||
End Object
|
||||
Emitters(2)=MeshEmitter'MeshEmitter25'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter109
|
||||
RespawnDeadParticles=False
|
||||
SpawnOnlyInDirectionOfNormal=True
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
ScaleSizeYByVelocity=True
|
||||
ScaleSizeZByVelocity=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
Acceleration=(Z=-200.000000)
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=96,G=160,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=1.000000
|
||||
MaxParticles=8
|
||||
Name="SpriteEmitter109"
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=5.000000)
|
||||
StartMassRange=(Min=11.000000,Max=11.000000)
|
||||
UseRotationFrom=PTRS_Normal
|
||||
SpinsPerSecondRange=(X=(Min=-0.300000,Max=0.300000))
|
||||
StartSpinRange=(X=(Min=-0.500000,Max=0.500000))
|
||||
SizeScale(0)=(RelativeSize=1.000000)
|
||||
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.500000)
|
||||
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=3.000000
|
||||
InitialParticlesPerSecond=500.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_b_diff'
|
||||
TextureUSubdivisions=4
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=0.500000,Max=0.500000)
|
||||
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=100.000000,Max=100.000000))
|
||||
End Object
|
||||
Emitters(3)=SpriteEmitter'SpriteEmitter109'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter26
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm_CIRCUS.limbs.bloat_clown_Arm_Gore'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter26"
|
||||
StartLocationRange=(X=(Min=-16.000000,Max=16.000000),Y=(Min=-16.000000,Max=16.000000),Z=(Min=12.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(4)=MeshEmitter'MeshEmitter26'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter27
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm_CIRCUS.limbs.bloat_clown_Head_Gore'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter27"
|
||||
StartLocationRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=90.000000,Max=90.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(5)=MeshEmitter'MeshEmitter27'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter28
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.gibbs.intestines'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter28"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_Regular
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(6)=MeshEmitter'MeshEmitter28'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter113
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter113"
|
||||
AddLocationFromOtherEmitter=1
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(7)=SpriteEmitter'SpriteEmitter113'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter114
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=60
|
||||
Name="SpriteEmitter114"
|
||||
AddLocationFromOtherEmitter=2
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=60.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(8)=SpriteEmitter'SpriteEmitter114'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter115
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter115"
|
||||
AddLocationFromOtherEmitter=4
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(9)=SpriteEmitter'SpriteEmitter115'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter116
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter116"
|
||||
AddLocationFromOtherEmitter=5
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(10)=SpriteEmitter'SpriteEmitter116'
|
||||
|
||||
AutoDestroy=False
|
||||
// Style=STY_Masked
|
||||
bUnlit=false
|
||||
bDirectional=True
|
||||
bNoDelete=false
|
||||
RemoteRole=ROLE_None
|
||||
// bNetTemporary=true
|
||||
LifeSpan = 10
|
||||
}
|
||||
332
kf_sources/KFMod/Classes/BileExplosion_Halloween.uc
Normal file
332
kf_sources/KFMod/Classes/BileExplosion_Halloween.uc
Normal file
|
|
@ -0,0 +1,332 @@
|
|||
class BileExplosion_Halloween extends FleshHitEmitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter103
|
||||
FadeOut=True
|
||||
RespawnDeadParticles=False
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-500.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=0.200000
|
||||
MaxParticles=2
|
||||
Name="SpriteEmitter103"
|
||||
SizeScale(1)=(RelativeTime=0.070000,RelativeSize=1.000000)
|
||||
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'kf_fx_trip_t.Gore.bloat_explode_blood'
|
||||
LifetimeRange=(Min=1.000000,Max=1.000000)
|
||||
StartVelocityRange=(X=(Min=-50.000000,Max=50.000000),Y=(Min=-50.000000,Max=50.000000),Z=(Min=150.000000,Max=300.000000))
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter103'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter24
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm_HALLOWEEN.Redneck_Bloat.Bloat_RedneckZombie_ArmGore'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter24"
|
||||
StartLocationRange=(Z=(Min=10.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(1)=MeshEmitter'MeshEmitter24'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter25
|
||||
StaticMesh=StaticMesh'EffectsSM.PlayerGibbs.Chunk1_Gibb'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=30
|
||||
Name="MeshEmitter25"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=0.500000,Max=2.000000),Y=(Min=0.500000,Max=2.000000),Z=(Min=0.500000,Max=2.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=1000.000000))
|
||||
VelocityLossRange=(Z=(Min=1.000000,Max=1.000000))
|
||||
End Object
|
||||
Emitters(2)=MeshEmitter'MeshEmitter25'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter109
|
||||
RespawnDeadParticles=False
|
||||
SpawnOnlyInDirectionOfNormal=True
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
ScaleSizeYByVelocity=True
|
||||
ScaleSizeZByVelocity=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
Acceleration=(Z=-200.000000)
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=96,G=160,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=1.000000
|
||||
MaxParticles=8
|
||||
Name="SpriteEmitter109"
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=5.000000)
|
||||
StartMassRange=(Min=11.000000,Max=11.000000)
|
||||
UseRotationFrom=PTRS_Normal
|
||||
SpinsPerSecondRange=(X=(Min=-0.300000,Max=0.300000))
|
||||
StartSpinRange=(X=(Min=-0.500000,Max=0.500000))
|
||||
SizeScale(0)=(RelativeSize=1.000000)
|
||||
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.500000)
|
||||
StartSizeRange=(X=(Min=30.000000,Max=30.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=3.000000
|
||||
InitialParticlesPerSecond=500.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_b_diff'
|
||||
TextureUSubdivisions=4
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=0.500000,Max=0.500000)
|
||||
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=100.000000,Max=100.000000))
|
||||
End Object
|
||||
Emitters(3)=SpriteEmitter'SpriteEmitter109'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter26
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm_HALLOWEEN.Redneck_Bloat.Bloat_RedneckZombie_ArmGore'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter26"
|
||||
StartLocationRange=(X=(Min=-16.000000,Max=16.000000),Y=(Min=-16.000000,Max=16.000000),Z=(Min=12.000000,Max=64.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(4)=MeshEmitter'MeshEmitter26'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter27
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm_HALLOWEEN.Redneck_Bloat.Bloat_RedneckZombie_HeadGore'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter27"
|
||||
StartLocationRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=90.000000,Max=90.000000))
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSizeRange=(X=(Min=1.150000,Max=1.150000),Y=(Min=1.150000,Max=1.150000),Z=(Min=1.150000,Max=1.150000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
LifetimeRange=(Min=10.000000,Max=10.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(5)=MeshEmitter'MeshEmitter27'
|
||||
|
||||
Begin Object Class=MeshEmitter Name=MeshEmitter28
|
||||
StaticMesh=StaticMesh'kf_gore_trip_sm.gibbs.intestines'
|
||||
UseCollision=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
DampRotation=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-1000.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000,Max=0.500000),Y=(Min=0.200000,Max=0.500000),Z=(Min=0.200000,Max=0.500000))
|
||||
MaxCollisions=(Max=2.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
MaxParticles=1
|
||||
Name="MeshEmitter28"
|
||||
SpinsPerSecondRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
StartSpinRange=(X=(Min=-1.000000,Max=1.000000),Y=(Min=-1.000000,Max=1.000000),Z=(Min=-1.000000,Max=1.000000))
|
||||
InitialParticlesPerSecond=1000.000000
|
||||
DrawStyle=PTDS_Regular
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=250.000000,Max=500.000000))
|
||||
End Object
|
||||
Emitters(6)=MeshEmitter'MeshEmitter28'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter113
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter113"
|
||||
AddLocationFromOtherEmitter=1
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(7)=SpriteEmitter'SpriteEmitter113'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter114
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=60
|
||||
Name="SpriteEmitter114"
|
||||
AddLocationFromOtherEmitter=2
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=60.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(8)=SpriteEmitter'SpriteEmitter114'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter115
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter115"
|
||||
AddLocationFromOtherEmitter=4
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(9)=SpriteEmitter'SpriteEmitter115'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter116
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(2)=(RelativeTime=0.750000,Color=(B=255,G=255,R=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000)
|
||||
FadeOutStartTime=0.850000
|
||||
MaxParticles=30
|
||||
Name="SpriteEmitter116"
|
||||
AddLocationFromOtherEmitter=5
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=1.250000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=30.000000
|
||||
DrawStyle=PTDS_Modulated
|
||||
Texture=Texture'kf_fx_trip_t.Gore.kf_bloodspray_e_diff'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=0.450000,Max=0.850000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(10)=SpriteEmitter'SpriteEmitter116'
|
||||
|
||||
AutoDestroy=False
|
||||
// Style=STY_Masked
|
||||
bUnlit=false
|
||||
bDirectional=True
|
||||
bNoDelete=false
|
||||
RemoteRole=ROLE_None
|
||||
// bNetTemporary=true
|
||||
LifeSpan = 10
|
||||
}
|
||||
37
kf_sources/KFMod/Classes/BileJet.uc
Normal file
37
kf_sources/KFMod/Classes/BileJet.uc
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
//-----------------------------------------------------------
|
||||
//
|
||||
//-----------------------------------------------------------
|
||||
class BileJet extends Actor;
|
||||
|
||||
var() rotator BileRotation;
|
||||
|
||||
function PostBeginPlay()
|
||||
{
|
||||
settimer(0.1, false);
|
||||
}
|
||||
|
||||
simulated function timer()
|
||||
{
|
||||
local vector X,Y,Z;
|
||||
local int i;
|
||||
local rotator R;
|
||||
|
||||
GetAxes(Rotation,X,Y,Z);
|
||||
|
||||
// Randomly chuch out vomit globs
|
||||
for (i = 0; i < 4; i++)
|
||||
{
|
||||
R.Yaw = BileRotation.Yaw * FRand();
|
||||
R.Pitch = BileRotation.Pitch;
|
||||
R.Roll = BileRotation.Roll;
|
||||
Spawn(Class'KFMod.KFBloatVomit',,,Location,Rotator(X >> R));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
bHidden=True
|
||||
LifeSpan=2.500000
|
||||
BileRotation=(Pitch=2000,Yaw=65535,Roll=0)
|
||||
}
|
||||
16
kf_sources/KFMod/Classes/Blinds.uc
Normal file
16
kf_sources/KFMod/Classes/Blinds.uc
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
class Blinds extends Decoration;
|
||||
|
||||
simulated function PostBeginPlay()
|
||||
{
|
||||
if( Level.NetMode!=NM_DedicatedServer )
|
||||
LoopAnim('bLow');
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
bStatic=False
|
||||
bStasis=False
|
||||
Mesh=SkeletalMesh'KFMapObjects.Blinds'
|
||||
bNoDelete=True
|
||||
RemoteRole=ROLE_None
|
||||
}
|
||||
15
kf_sources/KFMod/Classes/BloodySheet.uc
Normal file
15
kf_sources/KFMod/Classes/BloodySheet.uc
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
class BloodySheet extends Decoration;
|
||||
|
||||
simulated function PostBeginPlay()
|
||||
{
|
||||
if( Level.NetMode!=NM_DedicatedServer )
|
||||
LoopAnim('Sway');
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
bStatic=False
|
||||
Mesh=SkeletalMesh'KFMapObjects.BloodySheet'
|
||||
bNoDelete=True
|
||||
RemoteRole=ROLE_None
|
||||
}
|
||||
18
kf_sources/KFMod/Classes/BlowerBileAltProjectile.uc
Normal file
18
kf_sources/KFMod/Classes/BlowerBileAltProjectile.uc
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
//=============================================================================
|
||||
// BlowerBileAltProjectile
|
||||
//=============================================================================
|
||||
// Projectile class for the bloat bile thrower secondary fire
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerBileAltProjectile extends BlowerBileProjectile;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Speed=500.0
|
||||
MaxSpeed=500.0
|
||||
|
||||
TossZ=+100.0
|
||||
}
|
||||
203
kf_sources/KFMod/Classes/BlowerBileProjectile.uc
Normal file
203
kf_sources/KFMod/Classes/BlowerBileProjectile.uc
Normal file
|
|
@ -0,0 +1,203 @@
|
|||
//=============================================================================
|
||||
// BlowerBileProjectile
|
||||
//=============================================================================
|
||||
// Projectile class for the bloat bile thrower
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerBileProjectile extends ShotgunBullet;
|
||||
|
||||
var Emitter ExtraTrail;
|
||||
|
||||
simulated function PostBeginPlay()
|
||||
{
|
||||
SetTimer(0.2, true);
|
||||
|
||||
Velocity = Speed * Vector(Rotation);
|
||||
|
||||
if ( Level.NetMode != NM_DedicatedServer )
|
||||
{
|
||||
if ( !PhysicsVolume.bWaterVolume )
|
||||
{
|
||||
ExtraTrail = Spawn(class'BlowerThrowerSecondaryEmitter',self);
|
||||
Trail = Spawn(class'BlowerThrowerPrimaryEmitter',self);
|
||||
}
|
||||
}
|
||||
|
||||
Velocity.z += TossZ;
|
||||
}
|
||||
|
||||
simulated function PostNetBeginPlay()
|
||||
{
|
||||
local PlayerController PC;
|
||||
|
||||
Super.PostNetBeginPlay();
|
||||
|
||||
if ( Level.NetMode == NM_DedicatedServer )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( Level.bDropDetail || (Level.DetailMode == DM_Low) )
|
||||
{
|
||||
bDynamicLight = false;
|
||||
LightType = LT_None;
|
||||
}
|
||||
else
|
||||
{
|
||||
PC = Level.GetLocalPlayerController();
|
||||
if ( (Instigator != None) && (PC == Instigator.Controller) )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if ( (PC == None) || (PC.ViewTarget == None) || (VSize(PC.ViewTarget.Location - Location) > 3000) )
|
||||
{
|
||||
bDynamicLight = false;
|
||||
LightType = LT_None;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
simulated function Landed( vector HitNormal )
|
||||
{
|
||||
Explode(Location,HitNormal);
|
||||
}
|
||||
|
||||
simulated function Explode(vector HitLocation,vector HitNormal)
|
||||
{
|
||||
if ( Role == ROLE_Authority )
|
||||
{
|
||||
HurtRadius(Damage, DamageRadius, MyDamageType, MomentumTransfer, HitLocation );
|
||||
}
|
||||
|
||||
PlaySound(ImpactSound, SLOT_Misc);
|
||||
|
||||
if ( KFHumanPawn(Instigator) != none )
|
||||
{
|
||||
if ( EffectIsRelevant(Location,false) )
|
||||
{
|
||||
Spawn(ExplosionDecal,self,,Location, rotator(-HitNormal));
|
||||
Spawn(class'KFMod.VomGroundSplash',self,,HitLocation,rotator(HitNormal));
|
||||
}
|
||||
}
|
||||
|
||||
SetCollisionSize(0.0, 0.0);
|
||||
Destroy();
|
||||
}
|
||||
|
||||
simulated function Destroyed()
|
||||
{
|
||||
if ( Trail != none )
|
||||
{
|
||||
Trail.mRegen=False;
|
||||
Trail.SetPhysics(PHYS_None);
|
||||
}
|
||||
|
||||
if ( ExtraTrail != none )
|
||||
{
|
||||
ExtraTrail.Kill();
|
||||
ExtraTrail.SetPhysics(PHYS_None);
|
||||
}
|
||||
|
||||
Super.Destroyed();
|
||||
}
|
||||
|
||||
function ProcessTouch (Actor Other, vector HitLocation)
|
||||
{
|
||||
if ( Other == none || Other == Instigator || Other.Base == Instigator )
|
||||
return;
|
||||
|
||||
// Don't spawn an explosion if low gore is on
|
||||
if ( Other != Instigator && class'GameInfo'.static.UseLowGore() && Other.IsA('KFMonster') )
|
||||
{
|
||||
if ( Role == ROLE_Authority )
|
||||
{
|
||||
HurtRadius(Damage, DamageRadius, MyDamageType, MomentumTransfer, HitLocation );
|
||||
}
|
||||
|
||||
if ( KFHumanPawn(Instigator) != none )
|
||||
{
|
||||
if ( EffectIsRelevant(Location,false) )
|
||||
{
|
||||
Spawn(ExplosionDecal,self,,Location, Rotator(-Location));
|
||||
}
|
||||
}
|
||||
|
||||
SetCollisionSize(0.0, 0.0);
|
||||
Destroy();
|
||||
}
|
||||
|
||||
else if ( Other != Instigator && !Other.IsA('FlameTendril') && !Other.IsA('FuelFlame') && !Other.IsA('PhysicsVolume') )
|
||||
{
|
||||
Explode(self.Location,self.Location);
|
||||
}
|
||||
}
|
||||
|
||||
simulated singular function HitWall(vector HitNormal, actor Wall)
|
||||
{
|
||||
if ( Role == ROLE_Authority )
|
||||
{
|
||||
if ( !Wall.bStatic && !Wall.bWorldGeometry )
|
||||
{
|
||||
if ( Instigator == None || Instigator.Controller == None )
|
||||
{
|
||||
Wall.SetDelayedDamageInstigatorController( InstigatorController );
|
||||
}
|
||||
|
||||
Wall.TakeDamage( Damage, instigator, Location, MomentumTransfer * Normal(Velocity), MyDamageType);
|
||||
|
||||
if ( DamageRadius > 0 && Vehicle(Wall) != None && Vehicle(Wall).Health > 0 )
|
||||
{
|
||||
Vehicle(Wall).DriverRadiusDamage(Damage, DamageRadius, InstigatorController, MyDamageType, MomentumTransfer, Location);
|
||||
}
|
||||
|
||||
HurtWall = Wall;
|
||||
}
|
||||
|
||||
MakeNoise(1.0);
|
||||
}
|
||||
|
||||
Explode(Location + ExploWallOut * HitNormal, HitNormal);
|
||||
|
||||
HurtWall = None;
|
||||
}
|
||||
|
||||
simulated function Timer()
|
||||
{
|
||||
if ( ExtraTrail != none )
|
||||
{
|
||||
ExtraTrail.SetDrawScale(ExtraTrail.DrawScale * 1.5);
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
MaxPenetrations=1
|
||||
PenDamageReduction=0
|
||||
HeadShotDamageMult=1.0
|
||||
Speed=1000.0
|
||||
MaxSpeed=1000.0
|
||||
bSwitchToZeroCollision=True
|
||||
Damage=30
|
||||
DamageRadius=120.000000
|
||||
MomentumTransfer=0.000000
|
||||
MyDamageType=class'KFMod.DamTypeBlowerThrower'
|
||||
ExplosionDecal=class'KFMod.VomitDecal'
|
||||
DrawType=DT_None
|
||||
StaticMesh=none
|
||||
CullDistance=3000.000000
|
||||
LifeSpan=5
|
||||
DrawScale=5.000000
|
||||
Style=STY_None
|
||||
|
||||
Physics=PHYS_Falling
|
||||
TossZ=+200.0
|
||||
|
||||
RemoteRole=ROLE_SimulatedProxy
|
||||
bBlockHitPointTraces=false
|
||||
|
||||
ImpactSound=Sound'KF_EnemiesFinalSnd.Bloat_AcidSplash'
|
||||
}
|
||||
193
kf_sources/KFMod/Classes/BlowerThrower.uc
Normal file
193
kf_sources/KFMod/Classes/BlowerThrower.uc
Normal file
|
|
@ -0,0 +1,193 @@
|
|||
//=============================================================================
|
||||
// BlowerThrower
|
||||
//=============================================================================
|
||||
// Weapon class for the bloat bile thrower
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerThrower extends KFWeapon;
|
||||
|
||||
simulated function bool StartFire(int Mode)
|
||||
{
|
||||
if( Mode == 1 )
|
||||
return super.StartFire(Mode);
|
||||
|
||||
if( !super.StartFire(Mode) ) // returns false when mag is empty
|
||||
return false;
|
||||
|
||||
if( AmmoAmount(0) <= 0 )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
AnimStopLooping();
|
||||
|
||||
if( !FireMode[Mode].IsInState('FireLoop') && (AmmoAmount(0) > 0) )
|
||||
{
|
||||
FireMode[Mode].StartFiring();
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Allow this weapon to auto reload on alt fire
|
||||
simulated function AltFire(float F)
|
||||
{
|
||||
if( MagAmmoRemaining < 1 && !bIsReloading &&
|
||||
FireMode[1].NextFireTime <= Level.TimeSeconds )
|
||||
{
|
||||
// We're dry, ask the server to autoreload
|
||||
ServerRequestAutoReload();
|
||||
|
||||
PlayOwnedSound(FireMode[1].NoAmmoSound,SLOT_None,2.0,,,,false);
|
||||
}
|
||||
|
||||
super.AltFire(F);
|
||||
}
|
||||
|
||||
simulated function AnimEnd(int channel)
|
||||
{
|
||||
if(!FireMode[0].IsInState('FireLoop'))
|
||||
{
|
||||
Super.AnimEnd(channel);
|
||||
}
|
||||
}
|
||||
|
||||
function bool RecommendRangedAttack()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
function float SuggestAttackStyle()
|
||||
{
|
||||
return -1.0;
|
||||
}
|
||||
|
||||
//TODO: LONG ranged?
|
||||
function bool RecommendLongRangedAttack()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
simulated function bool ConsumeAmmo( int Mode, float Load, optional bool bAmountNeededIsMax )
|
||||
{
|
||||
local Inventory Inv;
|
||||
local bool bOutOfAmmo;
|
||||
local KFWeapon KFWeap;
|
||||
|
||||
if ( Super(Weapon).ConsumeAmmo(Mode, Load, bAmountNeededIsMax) )
|
||||
{
|
||||
if ( Load > 0 && (Mode == 0 || bReduceMagAmmoOnSecondaryFire) )
|
||||
MagAmmoRemaining -= Load;
|
||||
|
||||
NetUpdateTime = Level.TimeSeconds - 1;
|
||||
|
||||
if ( FireMode[Mode].AmmoPerFire > 0 && InventoryGroup > 0 && !bMeleeWeapon && bConsumesPhysicalAmmo &&
|
||||
(Ammo[0] == none || FireMode[0] == none || FireMode[0].AmmoPerFire <= 0 || Ammo[0].AmmoAmount < FireMode[0].AmmoPerFire) &&
|
||||
(Ammo[1] == none || FireMode[1] == none || FireMode[1].AmmoPerFire <= 0 || Ammo[1].AmmoAmount < FireMode[1].AmmoPerFire) )
|
||||
{
|
||||
bOutOfAmmo = true;
|
||||
|
||||
for ( Inv = Instigator.Inventory; Inv != none; Inv = Inv.Inventory )
|
||||
{
|
||||
KFWeap = KFWeapon(Inv);
|
||||
|
||||
if ( Inv.InventoryGroup > 0 && KFWeap != none && !KFWeap.bMeleeWeapon && KFWeap.bConsumesPhysicalAmmo &&
|
||||
((KFWeap.Ammo[0] != none && KFWeap.FireMode[0] != none && KFWeap.FireMode[0].AmmoPerFire > 0 &&KFWeap.Ammo[0].AmmoAmount >= KFWeap.FireMode[0].AmmoPerFire) ||
|
||||
(KFWeap.Ammo[1] != none && KFWeap.FireMode[1] != none && KFWeap.FireMode[1].AmmoPerFire > 0 && KFWeap.Ammo[1].AmmoAmount >= KFWeap.FireMode[1].AmmoPerFire)) )
|
||||
{
|
||||
bOutOfAmmo = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if ( bOutOfAmmo )
|
||||
{
|
||||
PlayerController(Instigator.Controller).Speech('AUTO', 3, "");
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
SkinRefs(0)="KF_IJC_Halloween_Weapons2.BlowerThrower.BlowerThrower_cmb"
|
||||
SleeveNum=1
|
||||
WeaponReloadAnim=Reload_IJC_BlowerThrower
|
||||
|
||||
MagCapacity=50
|
||||
ReloadRate=4.14
|
||||
|
||||
ReloadAnim="Reload"
|
||||
ReloadAnimRate=1.0
|
||||
|
||||
Weight=6.000000
|
||||
bModeZeroCanDryFire=True
|
||||
FireModeClass(0)=Class'KFMod.BlowerThrowerFire'
|
||||
FireModeClass(1)=Class'KFMod.BlowerThrowerAltFire'
|
||||
SelectSoundRef="KF_FY_BlowerThrowerSND.WEP_Bile_Foley_Select"
|
||||
|
||||
PutDownAnim="PutDown"
|
||||
|
||||
SelectSound=none//Sound'KFPlayerSound.getweaponout'
|
||||
|
||||
Description="A leaf blower modified to launch deadly bloat bile. Spray it around and watch 'em burn!"
|
||||
|
||||
Priority=103
|
||||
|
||||
InventoryGroup=3
|
||||
GroupOffset=21
|
||||
PickupClass=Class'KFMod.BlowerThrowerPickup'
|
||||
|
||||
BobDamping=6.000000
|
||||
AttachmentClass=Class'KFMod.BlowerThrowerAttachment'
|
||||
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
||||
ItemName="BlowerThrower"
|
||||
MeshRef="KF_IJC_Halloween_Weps_2.BlowerThrower"
|
||||
DrawScale=1.0
|
||||
TransientSoundVolume=1.250000
|
||||
AmbientGlow=0
|
||||
|
||||
PutDownTime = 0.5
|
||||
PutDownAnimRate=1.3636
|
||||
|
||||
QuickPutDownTime=0.25
|
||||
|
||||
PlayerViewOffset=(X=15.000000,Y=20.000000,Z=-3.000000)
|
||||
EffectOffset=(X=100.000000,Y=25.000000,Z=-10.000000)
|
||||
|
||||
AIRating=0.7
|
||||
CurrentRating=0.7
|
||||
|
||||
MinimumFireRange = 300
|
||||
|
||||
ZoomTime=0.25
|
||||
FastZoomOutTime=0.2
|
||||
ZoomInRotation=(Pitch=-1000,Yaw=0,Roll=1500)
|
||||
bHasAimingMode=true
|
||||
IdleAimAnim=Idle
|
||||
|
||||
DisplayFOV=70.000000
|
||||
StandardDisplayFOV=70.0
|
||||
PlayerIronSightFOV=75
|
||||
ZoomedDisplayFOV=60
|
||||
|
||||
HudImageRef="KF_IJC_HUD.WeaponSelect.BlowerThrower_unselected"
|
||||
SelectedHudImageRef="KF_IJC_HUD.WeaponSelect.BlowerThrower"
|
||||
TraderInfoTexture=texture'KF_IJC_HUD.Trader_Weapon_Images.Trader_BlowerThrower'
|
||||
|
||||
bIsTier2Weapon=true
|
||||
|
||||
AppID=258751
|
||||
}
|
||||
127
kf_sources/KFMod/Classes/BlowerThrowerAltFire.uc
Normal file
127
kf_sources/KFMod/Classes/BlowerThrowerAltFire.uc
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
//=============================================================================
|
||||
// BlowerThrowerAltFire
|
||||
//=============================================================================
|
||||
// Secondary fire mode class for the bloat bile thrower
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerThrowerAltFire extends KFShotgunFire;
|
||||
|
||||
simulated function bool AllowFire()
|
||||
{
|
||||
if(KFWeapon(Weapon).bIsReloading)
|
||||
return false;
|
||||
if(KFPawn(Instigator).SecondaryItem!=none)
|
||||
return false;
|
||||
if(KFPawn(Instigator).bThrowingNade)
|
||||
return false;
|
||||
|
||||
if(KFWeapon(Weapon).MagAmmoRemaining < 1)
|
||||
{
|
||||
if( Level.TimeSeconds - LastClickTime>FireRate )
|
||||
{
|
||||
LastClickTime = Level.TimeSeconds;
|
||||
}
|
||||
|
||||
if( AIController(Instigator.Controller)!=None )
|
||||
KFWeapon(Weapon).ReloadMeNow();
|
||||
return false;
|
||||
}
|
||||
|
||||
return super(WeaponFire).AllowFire();
|
||||
}
|
||||
|
||||
// Handle setting new recoil
|
||||
simulated function HandleRecoil(float Rec)
|
||||
{
|
||||
local rotator NewRecoilRotation;
|
||||
local KFPlayerController KFPC;
|
||||
local KFPawn KFPwn;
|
||||
local vector AdjustedVelocity;
|
||||
local float AdjustedSpeed;
|
||||
|
||||
if( Instigator != none )
|
||||
{
|
||||
KFPC = KFPlayerController(Instigator.Controller);
|
||||
KFPwn = KFPawn(Instigator);
|
||||
}
|
||||
|
||||
if( KFPC == none || KFPwn == none )
|
||||
return;
|
||||
|
||||
if( !KFPC.bFreeCamera )
|
||||
{
|
||||
if( Weapon.GetFireMode(1).bIsFiring )
|
||||
{
|
||||
NewRecoilRotation.Pitch = RandRange( maxVerticalRecoilAngle * 0.5, maxVerticalRecoilAngle );
|
||||
NewRecoilRotation.Yaw = RandRange( maxHorizontalRecoilAngle * 0.5, maxHorizontalRecoilAngle );
|
||||
|
||||
if( Rand( 2 ) == 1 )
|
||||
NewRecoilRotation.Yaw *= -1;
|
||||
|
||||
if( Weapon.Owner != none && Weapon.Owner.Physics == PHYS_Falling &&
|
||||
Weapon.Owner.PhysicsVolume.Gravity.Z > class'PhysicsVolume'.default.Gravity.Z )
|
||||
{
|
||||
AdjustedVelocity = Weapon.Owner.Velocity;
|
||||
// Ignore Z velocity in low grav so we don't get massive recoil
|
||||
AdjustedVelocity.Z = 0;
|
||||
AdjustedSpeed = VSize(AdjustedVelocity);
|
||||
//log("AdjustedSpeed = "$AdjustedSpeed$" scale = "$(AdjustedSpeed* RecoilVelocityScale * 0.5));
|
||||
|
||||
// Reduce the falling recoil in low grav
|
||||
NewRecoilRotation.Pitch += (AdjustedSpeed* 3 * 0.5);
|
||||
NewRecoilRotation.Yaw += (AdjustedSpeed* 3 * 0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
//log("Velocity = "$VSize(Weapon.Owner.Velocity)$" scale = "$(VSize(Weapon.Owner.Velocity)* RecoilVelocityScale));
|
||||
NewRecoilRotation.Pitch += (VSize(Weapon.Owner.Velocity)* 3);
|
||||
NewRecoilRotation.Yaw += (VSize(Weapon.Owner.Velocity)* 3);
|
||||
}
|
||||
|
||||
NewRecoilRotation.Pitch += (Instigator.HealthMax / Instigator.Health * 5);
|
||||
NewRecoilRotation.Yaw += (Instigator.HealthMax / Instigator.Health * 5);
|
||||
NewRecoilRotation *= Rec;
|
||||
|
||||
KFPC.SetRecoil(NewRecoilRotation,RecoilRate * (default.FireRate/FireRate));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
KickMomentum=(X=-85.000000,Z=15.000000)
|
||||
ProjPerFire=1
|
||||
bAttachSmokeEmitter=True
|
||||
TransientSoundVolume=2.0
|
||||
TransientSoundRadius=500.000000
|
||||
FireSoundRef="KF_FY_BlowerThrowerSND.WEP_Blower_Secondary_Fire_M"
|
||||
StereoFireSoundRef="KF_FY_BlowerThrowerSND.WEP_Blower_Secondary_Fire_S"
|
||||
NoAmmoSound=Sound'KF_PumpSGSnd.SG_DryFire'
|
||||
FireRate=0.965
|
||||
FireAnimRate=0.95
|
||||
AmmoClass=Class'KFMod.BlowerThrowerAmmo'
|
||||
ProjectileClass=Class'KFMod.BlowerBileAltProjectile'
|
||||
BotRefireRate=1.500000
|
||||
FlashEmitterClass=Class'KFMod.BlowerThroweraAltMuzzleFlash1P'
|
||||
aimerror=1.000000
|
||||
Spread=2000.0
|
||||
SpreadStyle=SS_Line
|
||||
maxVerticalRecoilAngle=1500
|
||||
maxHorizontalRecoilAngle=900
|
||||
FireAnim=FireALL
|
||||
FireAimedAnim=FireALL_Iron
|
||||
AmmoPerFire=7
|
||||
|
||||
//** View shake **//
|
||||
ShakeOffsetMag=(X=6.0,Y=2.0,Z=10.0)
|
||||
ShakeOffsetRate=(X=1000.0,Y=1000.0,Z=1000.0)
|
||||
ShakeOffsetTime=3.0
|
||||
ShakeRotMag=(X=50.0,Y=50.0,Z=400.0)
|
||||
ShakeRotRate=(X=12500.0,Y=12500.0,Z=12500.0)
|
||||
ShakeRotTime=5.0
|
||||
bWaitForRelease=true
|
||||
bRandomPitchFireSound=false
|
||||
}
|
||||
23
kf_sources/KFMod/Classes/BlowerThrowerAmmo.uc
Normal file
23
kf_sources/KFMod/Classes/BlowerThrowerAmmo.uc
Normal file
|
|
@ -0,0 +1,23 @@
|
|||
//=============================================================================
|
||||
// BlowerThrowerAmmo
|
||||
//=============================================================================
|
||||
// Ammunition class for the bloat bile thrower
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerThrowerAmmo extends KFAmmunition;
|
||||
|
||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
MaxAmmo=300
|
||||
InitialAmount=150
|
||||
AmmoPickupAmount=25
|
||||
PickupClass=Class'KFMod.BlowerThrowerAmmoPickup'
|
||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
||||
ItemName="Bloat Bile Canisters"
|
||||
}
|
||||
11
kf_sources/KFMod/Classes/BlowerThrowerAmmoPickup.uc
Normal file
11
kf_sources/KFMod/Classes/BlowerThrowerAmmoPickup.uc
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
class BlowerThrowerAmmoPickup extends KFAmmoPickup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
AmmoAmount=25
|
||||
InventoryType=Class'KFMod.BlowerThrowerAmmo'
|
||||
PickupMessage="ML of Bloat Bile"
|
||||
PickupForce="AssaultAmmoPickup"
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=StaticMesh'KillingFloorStatics.FT_AmmoMesh'
|
||||
}
|
||||
83
kf_sources/KFMod/Classes/BlowerThrowerAttachment.uc
Normal file
83
kf_sources/KFMod/Classes/BlowerThrowerAttachment.uc
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
//=============================================================================
|
||||
// BlowerThrowerAttachment
|
||||
//=============================================================================
|
||||
// Third person attachment class for the bloat bile thrower
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerThrowerAttachment extends KFWeaponAttachment;
|
||||
|
||||
// No dynamic light when firing this
|
||||
simulated function WeaponLight(){}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
mMuzFlashClass=Class'KFMod.BlowerThrowerMuzzleFlash3P'
|
||||
mShellCaseEmitterClass=none
|
||||
MeshRef="KF_Weapons3rd3_IJC.BlowerThrower_3rd"
|
||||
|
||||
MovementAnims(0)=JogF_IJC_BlowerThrower
|
||||
MovementAnims(1)=JogB_IJC_BlowerThrower
|
||||
MovementAnims(2)=JogL_IJC_BlowerThrower
|
||||
MovementAnims(3)=JogR_IJC_BlowerThrower
|
||||
CrouchAnims(0)=CHwalkF_IJC_BlowerThrower
|
||||
CrouchAnims(1)=CHwalkB_IJC_BlowerThrower
|
||||
CrouchAnims(2)=CHwalkL_IJC_BlowerThrower
|
||||
CrouchAnims(3)=CHwalkR_IJC_BlowerThrower
|
||||
WalkAnims(0)=WalkF_IJC_BlowerThrower
|
||||
WalkAnims(1)=WalkB_IJC_BlowerThrower
|
||||
WalkAnims(2)=WalkL_IJC_BlowerThrower
|
||||
WalkAnims(3)=WalkR_IJC_BlowerThrower
|
||||
AirStillAnim=JumpF_Mid
|
||||
AirAnims(0)=JumpF_Mid
|
||||
AirAnims(1)=JumpF_Mid
|
||||
AirAnims(2)=JumpL_Mid
|
||||
AirAnims(3)=JumpR_Mid
|
||||
TakeoffStillAnim=JumpF_Takeoff
|
||||
TakeoffAnims(0)=JumpF_Takeoff
|
||||
TakeoffAnims(1)=JumpF_Takeoff
|
||||
TakeoffAnims(2)=JumpL_Takeoff
|
||||
TakeoffAnims(3)=JumpR_Takeoff
|
||||
LandAnims(0)=JumpF_Land
|
||||
LandAnims(1)=JumpF_Land
|
||||
LandAnims(2)=JumpL_Land
|
||||
LandAnims(3)=JumpR_Land
|
||||
|
||||
TurnRightAnim=TurnR_IJC_BlowerThrower
|
||||
TurnLeftAnim=TurnL_IJC_BlowerThrower
|
||||
CrouchTurnRightAnim=CH_TurnR_IJC_BlowerThrower
|
||||
CrouchTurnLeftAnim=CH_TurnL_IJC_BlowerThrower
|
||||
IdleRestAnim=Idle_IJC_BlowerThrower//Idle_Rest
|
||||
IdleCrouchAnim=CHIdle_IJC_BlowerThrower
|
||||
IdleSwimAnim=Swim_Tread
|
||||
IdleWeaponAnim=Idle_IJC_BlowerThrower//Idle_Rifle
|
||||
IdleHeavyAnim=Idle_IJC_BlowerThrower//Idle_Biggun
|
||||
IdleRifleAnim=Idle_IJC_BlowerThrower//Idle_Rifle
|
||||
IdleChatAnim=Idle_IJC_BlowerThrower
|
||||
FireAnims(0)=Fire_IJC_BlowerThrower
|
||||
FireAnims(1)=Fire_IJC_BlowerThrower
|
||||
FireAnims(2)=Fire_IJC_BlowerThrower
|
||||
FireAnims(3)=Fire_IJC_BlowerThrower
|
||||
FireAltAnims(0)=Fire_IJC_BlowerThrower
|
||||
FireAltAnims(1)=Fire_IJC_BlowerThrower
|
||||
FireAltAnims(2)=Fire_IJC_BlowerThrower
|
||||
FireAltAnims(3)=Fire_IJC_BlowerThrower
|
||||
FireCrouchAnims(0)=CHFire_IJC_BlowerThrower
|
||||
FireCrouchAnims(1)=CHFire_IJC_BlowerThrower
|
||||
FireCrouchAnims(2)=CHFire_IJC_BlowerThrower
|
||||
FireCrouchAnims(3)=CHFire_IJC_BlowerThrower
|
||||
FireCrouchAltAnims(0)=CHFire_IJC_BlowerThrower
|
||||
FireCrouchAltAnims(1)=CHFire_IJC_BlowerThrower
|
||||
FireCrouchAltAnims(2)=CHFire_IJC_BlowerThrower
|
||||
FireCrouchAltAnims(3)=CHFire_IJC_BlowerThrower
|
||||
HitAnims(0)=HitF_IJC_BlowerThrower
|
||||
HitAnims(1)=HitB_IJC_BlowerThrower
|
||||
HitAnims(2)=HitL_IJC_BlowerThrower
|
||||
HitAnims(3)=HitR_IJC_BlowerThrower
|
||||
PostFireBlendStandAnim=Blend_IJC_BlowerThrower
|
||||
PostFireBlendCrouchAnim=CHBlend_IJC_BlowerThrower
|
||||
|
||||
WeaponAmbientScale=2.0
|
||||
}
|
||||
226
kf_sources/KFMod/Classes/BlowerThrowerFire.uc
Normal file
226
kf_sources/KFMod/Classes/BlowerThrowerFire.uc
Normal file
|
|
@ -0,0 +1,226 @@
|
|||
//=============================================================================
|
||||
// BlowerThrowerFire
|
||||
//=============================================================================
|
||||
// Primary fire mode class for the bloat bile thrower
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerThrowerFire extends CrossbowFire ;
|
||||
|
||||
// sound
|
||||
var sound FireEndSound; // The sound to play at the end of the ambient fire sound
|
||||
var sound FireEndStereoSound; // The sound to play at the end of the ambient fire sound in first person stereo
|
||||
var float AmbientFireSoundRadius; // The sound radius for the ambient fire sound
|
||||
var sound AmbientFireSound; // How loud to play the looping ambient fire sound
|
||||
var byte AmbientFireVolume; // The ambient fire sound
|
||||
|
||||
var string FireEndSoundRef;
|
||||
var string FireEndStereoSoundRef;
|
||||
var string AmbientFireSoundRef;
|
||||
|
||||
static function PreloadAssets(LevelInfo LevelInfo, optional KFShotgunFire Spawned)
|
||||
{
|
||||
super.PreloadAssets(LevelInfo, Spawned);
|
||||
|
||||
if ( default.FireEndSoundRef != "" )
|
||||
{
|
||||
default.FireEndSound = sound(DynamicLoadObject(default.FireEndSoundRef, class'sound', true));
|
||||
}
|
||||
|
||||
if ( LevelInfo.bLowSoundDetail || (default.FireEndStereoSoundRef == "" && default.FireEndStereoSound == none) )
|
||||
{
|
||||
default.FireEndStereoSound = default.FireEndSound;
|
||||
}
|
||||
else
|
||||
{
|
||||
default.FireEndStereoSound = sound(DynamicLoadObject(default.FireEndStereoSoundRef, class'Sound', true));
|
||||
}
|
||||
|
||||
if ( default.AmbientFireSoundRef != "" )
|
||||
{
|
||||
default.AmbientFireSound = sound(DynamicLoadObject(default.AmbientFireSoundRef, class'sound', true));
|
||||
}
|
||||
|
||||
if ( BlowerThrowerFire(Spawned) != none )
|
||||
{
|
||||
BlowerThrowerFire(Spawned).FireEndSound = default.FireEndSound;
|
||||
BlowerThrowerFire(Spawned).FireEndStereoSound = default.FireEndStereoSound;
|
||||
BlowerThrowerFire(Spawned).AmbientFireSound = default.AmbientFireSound;
|
||||
}
|
||||
}
|
||||
|
||||
static function bool UnloadAssets()
|
||||
{
|
||||
super.UnloadAssets();
|
||||
|
||||
default.FireEndSound = none;
|
||||
default.FireEndStereoSound = none;
|
||||
default.AmbientFireSound = none;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// Sends the fire class to the looping state
|
||||
function StartFiring()
|
||||
{
|
||||
GotoState('FireLoop');
|
||||
}
|
||||
|
||||
// Handles toggling the weapon attachment's ambient sound on and off
|
||||
function PlayAmbientSound(Sound aSound)
|
||||
{
|
||||
local WeaponAttachment WA;
|
||||
|
||||
WA = WeaponAttachment(Weapon.ThirdPersonActor);
|
||||
|
||||
if ( Weapon == none || (WA == none))
|
||||
return;
|
||||
|
||||
if(aSound == None)
|
||||
{
|
||||
WA.SoundVolume = WA.default.SoundVolume;
|
||||
WA.SoundRadius = WA.default.SoundRadius;
|
||||
}
|
||||
else
|
||||
{
|
||||
WA.SoundVolume = AmbientFireVolume;
|
||||
WA.SoundRadius = AmbientFireSoundRadius;
|
||||
}
|
||||
|
||||
WA.AmbientSound = aSound;
|
||||
}
|
||||
|
||||
// Make sure we are in the fire looping state when we fire
|
||||
event ModeDoFire()
|
||||
{
|
||||
if( AllowFire() && IsInState('FireLoop'))
|
||||
{
|
||||
Super.ModeDoFire();
|
||||
}
|
||||
}
|
||||
|
||||
simulated function bool AllowFire()
|
||||
{
|
||||
if(KFWeapon(Weapon).bIsReloading)
|
||||
return false;
|
||||
if(KFWeapon(Weapon).MagAmmoRemaining < 1)
|
||||
{
|
||||
if(Level.TimeSeconds - LastClickTime > FireRate)
|
||||
{
|
||||
Weapon.PlayOwnedSound(NoAmmoSound, SLOT_Interact, TransientSoundVolume,,,, false);
|
||||
LastClickTime = Level.TimeSeconds;
|
||||
if(Weapon.HasAnim(EmptyAnim))
|
||||
weapon.PlayAnim(EmptyAnim, EmptyAnimRate, 0.0);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
LastClickTime = Level.TimeSeconds;
|
||||
return Super.AllowFire();
|
||||
}
|
||||
|
||||
/* =================================================================================== *
|
||||
* FireLoop
|
||||
* This state handles looping the firing animations and ambient fire sounds as well
|
||||
* as firing rounds.
|
||||
*
|
||||
* modified by: Ramm 1/17/05
|
||||
* =================================================================================== */
|
||||
state FireLoop
|
||||
{
|
||||
function BeginState()
|
||||
{
|
||||
NextFireTime = Level.TimeSeconds - 0.1; //fire now!
|
||||
|
||||
Weapon.LoopAnim(FireLoopAnim, FireLoopAnimRate, TweenTime);
|
||||
|
||||
PlayAmbientSound(AmbientFireSound);
|
||||
}
|
||||
|
||||
// Overriden because we play an anbient fire sound
|
||||
function PlayFiring() {}
|
||||
function ServerPlayFiring() {}
|
||||
|
||||
function EndState()
|
||||
{
|
||||
Weapon.AnimStopLooping();
|
||||
PlayAmbientSound(none);
|
||||
if( Weapon.Instigator != none && Weapon.Instigator.IsLocallyControlled() &&
|
||||
Weapon.Instigator.IsFirstPerson() && StereoFireSound != none )
|
||||
{
|
||||
Weapon.PlayOwnedSound(FireEndStereoSound,SLOT_None,AmbientFireVolume/127,,AmbientFireSoundRadius,,false);
|
||||
}
|
||||
else
|
||||
{
|
||||
Weapon.PlayOwnedSound(FireEndSound,SLOT_None,AmbientFireVolume/127,,AmbientFireSoundRadius);
|
||||
}
|
||||
Weapon.StopFire(ThisModeNum);
|
||||
}
|
||||
|
||||
function StopFiring()
|
||||
{
|
||||
GotoState('');
|
||||
}
|
||||
|
||||
function ModeTick(float dt)
|
||||
{
|
||||
Super.ModeTick(dt);
|
||||
|
||||
if ( !bIsFiring || !AllowFire() ) // stopped firing, magazine empty
|
||||
{
|
||||
GotoState('');
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function float MaxRange()
|
||||
{
|
||||
return 1500;
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
KickMomentum=(X=0,Z=0)
|
||||
ProjPerFire=1
|
||||
bAttachSmokeEmitter=True
|
||||
TransientSoundVolume=1.000000
|
||||
TransientSoundRadius=500.000000
|
||||
FireSound=none
|
||||
FireRate=0.07
|
||||
AmmoClass=Class'KFMod.BlowerThrowerAmmo'
|
||||
ProjectileClass=Class'KFMod.BlowerBileProjectile'
|
||||
BotRefireRate=0.070000
|
||||
aimerror=1.000000
|
||||
Spread=1500
|
||||
FlashEmitterClass=Class'KFMod.BlowerThrowerMuzzleFlash1P'
|
||||
|
||||
SpreadStyle=SS_Random
|
||||
|
||||
ShakeOffsetMag=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ShakeRotMag=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ShakeRotRate=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ShakeOffsetRate=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
|
||||
ProjSpawnOffset=(X=25,Y=5,Z=-6)
|
||||
|
||||
EffectiveRange=1500.000000
|
||||
|
||||
bSplashDamage=true
|
||||
bRecommendSplashDamage=true
|
||||
maxVerticalRecoilAngle=300
|
||||
maxHorizontalRecoilAngle=150
|
||||
bWaitForRelease=false
|
||||
|
||||
FireEndSoundRef="KF_FY_BlowerThrowerSND.WEP_Bile_Fire_End_M"
|
||||
FireEndStereoSoundRef="KF_FY_BlowerThrowerSND.WEP_Bile_Fire_End_S"
|
||||
NoAmmoSoundRef="KF_FlamethrowerSnd.FT_DryFire"
|
||||
AmbientFireSoundRadius=500
|
||||
AmbientFireSoundRef="KF_FY_BlowerThrowerSND.BlowerThrower_Fire_LP"
|
||||
AmbientFireVolume=255
|
||||
FireLoopAnim=Fire
|
||||
FireEndAnim=Fire_End
|
||||
FireAnim=''
|
||||
bRandomPitchFireSound=false
|
||||
}
|
||||
51
kf_sources/KFMod/Classes/BlowerThrowerMuzzleFlash1P.uc
Normal file
51
kf_sources/KFMod/Classes/BlowerThrowerMuzzleFlash1P.uc
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
//=============================================================================
|
||||
// BlowerThrowerMuzzleFlash1P
|
||||
//=============================================================================
|
||||
// First person muzzle flash class for the bloat bile thrower
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerThrowerMuzzleFlash1P extends ROMuzzleFlash1st;
|
||||
|
||||
simulated function Trigger(Actor Other, Pawn EventInstigator)
|
||||
{
|
||||
Emitters[0].SpawnParticle(5);
|
||||
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
|
||||
UseDirectionAs=PTDU_Up
|
||||
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
Acceleration=(Z=-100.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=1.000000
|
||||
MaxParticles=50
|
||||
Name="SpriteEmitter1"
|
||||
StartLocationRange=(X=(Min=10.000000,Max=10.000000))
|
||||
UseRotationFrom=PTRS_Actor
|
||||
SpinsPerSecondRange=(X=(Min=-0.100000,Max=0.100000))
|
||||
StartSpinRange=(X=(Min=-0.200000,Max=0.200000))
|
||||
SizeScale(0)=(RelativeSize=0.500000)
|
||||
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=10.000000,Max=20.000000),Z=(Min=10.000000,Max=20.000000))
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'kf_fx_trip_t.Gore.bloat_vomit_spray_anim'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=0.700000,Max=0.700000)
|
||||
StartVelocityRange=(X=(Min=10.000000,Max=10.000000),Z=(Max=10.000000))
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter1'
|
||||
}
|
||||
51
kf_sources/KFMod/Classes/BlowerThrowerMuzzleFlash3P.uc
Normal file
51
kf_sources/KFMod/Classes/BlowerThrowerMuzzleFlash3P.uc
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
//=============================================================================
|
||||
// BlowerThrowerMuzzleFlash3P
|
||||
//=============================================================================
|
||||
// Third person muzzle flash class for the bloat bile thrower
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerThrowerMuzzleFlash3P extends ROMuzzleFlash3rd;
|
||||
|
||||
simulated function Trigger(Actor Other, Pawn EventInstigator)
|
||||
{
|
||||
Emitters[0].SpawnParticle(10);
|
||||
}
|
||||
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
|
||||
UseDirectionAs=PTDU_Up
|
||||
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
Acceleration=(Z=-100.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=1.000000
|
||||
MaxParticles=50
|
||||
Name="SpriteEmitter1"
|
||||
StartLocationRange=(X=(Min=10.000000,Max=10.000000))
|
||||
UseRotationFrom=PTRS_Actor
|
||||
SpinsPerSecondRange=(X=(Min=-0.100000,Max=0.100000))
|
||||
StartSpinRange=(X=(Min=-0.200000,Max=0.200000))
|
||||
SizeScale(0)=(RelativeSize=0.500000)
|
||||
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
StartSizeRange=(X=(Min=5.000000,Max=25.000000),Y=(Min=5.000000,Max=25.000000),Z=(Min=5.000000,Max=25.000000))
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'kf_fx_trip_t.Gore.bloat_vomit_spray_anim'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=0.700000,Max=0.700000)
|
||||
StartVelocityRange=(X=(Min=10.000000,Max=10.000000),Z=(Max=10.000000))
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter1'
|
||||
}
|
||||
37
kf_sources/KFMod/Classes/BlowerThrowerPickup.uc
Normal file
37
kf_sources/KFMod/Classes/BlowerThrowerPickup.uc
Normal file
|
|
@ -0,0 +1,37 @@
|
|||
//=============================================================================
|
||||
// BlowerThrowerPickup
|
||||
//=============================================================================
|
||||
// Pickup class for the bloat bile thrower
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerThrowerPickup extends KFWeaponPickup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Weight=6.000000
|
||||
cost=1000
|
||||
AmmoCost=15
|
||||
BuyClipSize=25
|
||||
PowerValue=50
|
||||
SpeedValue=80
|
||||
RangeValue=20
|
||||
Description="A leaf blower modified to launch deadly bloat bile. Spray it around and watch 'em burn!"
|
||||
ItemName="Blower Thrower Bile Launcher"
|
||||
ItemShortName="Blower Thrower"
|
||||
AmmoItemName="Bile"
|
||||
AmmoMesh=StaticMesh'KillingFloorStatics.FT_AmmoMesh'
|
||||
InventoryType=Class'KFMod.BlowerThrower'
|
||||
PickupMessage="You got the BlowerThrower"
|
||||
PickupForce="AssaultRiflePickup"
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=StaticMesh'KF_IJC_Halloween_Weps2.BlowerThrower_pickup'
|
||||
DrawScale=0.900000
|
||||
CollisionRadius=30.000000
|
||||
CollisionHeight=5.000000
|
||||
EquipmentCategoryID=3
|
||||
PickupSound=Sound'KF_FY_BlowerThrowerSND.WEP_Bile_Foley_Pickup'
|
||||
CorrespondingPerkIndex=0
|
||||
}
|
||||
76
kf_sources/KFMod/Classes/BlowerThrowerPrimaryEmitter.uc
Normal file
76
kf_sources/KFMod/Classes/BlowerThrowerPrimaryEmitter.uc
Normal file
|
|
@ -0,0 +1,76 @@
|
|||
//=============================================================================
|
||||
// BlowerThrowerPrimaryEmitter
|
||||
//=============================================================================
|
||||
// Primary emitter for the bloat bile thrower projectile
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerThrowerPrimaryEmitter extends HitFlameBig;
|
||||
|
||||
var float LastFlameSpawnTime;
|
||||
var () float FlameSpawnInterval;
|
||||
|
||||
var Emitter SecondaryFlame;
|
||||
|
||||
state Ticking
|
||||
{
|
||||
simulated function Tick( float dt )
|
||||
{
|
||||
if( LifeSpan < 2.0 )
|
||||
{
|
||||
mRegenRange[0] *= LifeSpan * 0.5;
|
||||
mRegenRange[1] = mRegenRange[0];
|
||||
SoundVolume = byte(float(SoundVolume) * (LifeSpan * 0.5));
|
||||
}
|
||||
|
||||
if (Level.TimeSeconds - LastFlameSpawnTime > FlameSpawnInterval)
|
||||
{
|
||||
if( SecondaryFlame != none )
|
||||
{
|
||||
SecondaryFlame.Kill();
|
||||
}
|
||||
SecondaryFlame = Spawn(class'BlowerThrowerSecondaryEmitter',self);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
simulated function Destroyed()
|
||||
{
|
||||
if( SecondaryFlame != none )
|
||||
{
|
||||
SecondaryFlame.Kill();
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
mParticleType=PT_Stream
|
||||
mDirDev=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
mPosDev=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
mSpeedRange(0)=0.000000
|
||||
mSpeedRange(1)=0.000000
|
||||
mRegen=True
|
||||
mRegenRange(0)=60.000000
|
||||
mRegenRange(1)=60.000000
|
||||
mRegenDist=0.000000
|
||||
mStartParticles=0
|
||||
mAttenuate=true
|
||||
Physics=PHYS_Trailer
|
||||
lifespan=2.9
|
||||
mNumTileColumns=1
|
||||
mNumTileRows=1
|
||||
mSpawnVecB=(X=20.0,Y=0.0,Z=0.0)
|
||||
mMaxParticles=100
|
||||
mLifeRange(0)=0.300000
|
||||
mLifeRange(1)=0.300000
|
||||
mGrowthRate=6.000000
|
||||
mColorRange(0)=(B=255,G=255,R=255,A=255)
|
||||
mColorRange(1)=(B=255,G=255,R=255,A=255)
|
||||
mAttenKa=0.000000
|
||||
mSizeRange(0)=6.000000
|
||||
mSizeRange(1)=6.000000
|
||||
Skins(0)=Texture'kf_fx_trip_t.Misc.vomit_trail_d'
|
||||
Style=STY_Alpha
|
||||
}
|
||||
51
kf_sources/KFMod/Classes/BlowerThrowerSecondaryEmitter.uc
Normal file
51
kf_sources/KFMod/Classes/BlowerThrowerSecondaryEmitter.uc
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
//=============================================================================
|
||||
// BlowerThrowerSecondaryEmitter
|
||||
//=============================================================================
|
||||
// Secondary emitter for the bloat bile thrower projectile
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
|
||||
class BlowerThrowerSecondaryEmitter extends Emitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter3
|
||||
UseDirectionAs=PTDU_Up
|
||||
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
BlendBetweenSubdivisions=True
|
||||
Acceleration=(Z=-100.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=.500000
|
||||
Name="SpriteEmitter3"
|
||||
UseRotationFrom=PTRS_Actor
|
||||
SpinsPerSecondRange=(X=(Min=-0.100000,Max=0.100000))
|
||||
StartSpinRange=(X=(Min=-0.200000,Max=0.200000))
|
||||
SizeScale(0)=(RelativeSize=0.500000)
|
||||
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
StartSizeRange=(X=(Min=8.000000,Max=20.000000),Y=(Min=8.000000,Max=20.000000),Z=(Min=8.000000,Max=20.000000))
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'kf_fx_trip_t.Gore.bloat_vomit_spray_anim'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=0.750000,Max=1.000000)
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter3'
|
||||
|
||||
bNetTemporary=True
|
||||
RemoteRole=ROLE_None
|
||||
|
||||
bNoDelete=false
|
||||
Physics=PHYS_Trailer
|
||||
|
||||
DrawScale = 1.0
|
||||
|
||||
|
||||
}
|
||||
51
kf_sources/KFMod/Classes/BlowerThroweraAltMuzzleFlash1P.uc
Normal file
51
kf_sources/KFMod/Classes/BlowerThroweraAltMuzzleFlash1P.uc
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
//=============================================================================
|
||||
// BlowerThroweraAltMuzzleFlash1P
|
||||
//=============================================================================
|
||||
// First person muzzle flash class for the bloat bile thrower secondary fire mode
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2013 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BlowerThroweraAltMuzzleFlash1P extends ROMuzzleFlash1st;
|
||||
|
||||
simulated function Trigger(Actor Other, Pawn EventInstigator)
|
||||
{
|
||||
Emitters[0].SpawnParticle(5);
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
|
||||
UseDirectionAs=PTDU_Up
|
||||
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
Acceleration=(Z=-100.000000)
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=1.000000
|
||||
MaxParticles=50
|
||||
Name="SpriteEmitter1"
|
||||
StartLocationRange=(X=(Min=10.000000,Max=10.000000))
|
||||
UseRotationFrom=PTRS_Actor
|
||||
SpinsPerSecondRange=(X=(Min=-0.100000,Max=0.100000))
|
||||
StartSpinRange=(X=(Min=-0.200000,Max=0.200000))
|
||||
SizeScale(0)=(RelativeSize=0.500000)
|
||||
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
StartSizeRange=(X=(Min=10.000000,Max=20.000000),Y=(Min=10.000000,Max=20.000000),Z=(Min=10.000000,Max=20.000000))
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'kf_fx_trip_t.Gore.bloat_vomit_spray_anim'
|
||||
TextureUSubdivisions=8
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=0.700000,Max=0.700000)
|
||||
StartVelocityRange=(X=(Min=10.000000,Max=10.000000),Z=(Max=10.000000))
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter1'
|
||||
}
|
||||
|
||||
8
kf_sources/KFMod/Classes/BoardAttachment.uc
Normal file
8
kf_sources/KFMod/Classes/BoardAttachment.uc
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
class BoardAttachment extends Actor;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=StaticMesh'KillingFloorLabStatics.ClipBoardProp'
|
||||
DrawScale=0.400000
|
||||
}
|
||||
41
kf_sources/KFMod/Classes/BodyAttacher.uc
Normal file
41
kf_sources/KFMod/Classes/BodyAttacher.uc
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
Class BodyAttacher extends KBSJoint
|
||||
Transient;
|
||||
|
||||
var vector AttachEndPoint;
|
||||
|
||||
simulated function PostBeginPlay()
|
||||
{
|
||||
SetTimer(1,False);
|
||||
}
|
||||
simulated function Timer()
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
simulated function Tick( float Delta )
|
||||
{
|
||||
if( Owner==None )
|
||||
{
|
||||
Destroy();
|
||||
Return;
|
||||
}
|
||||
if( Physics==PHYS_Karma || Owner.Physics!=PHYS_KarmaRagdoll )
|
||||
Return;
|
||||
KConstraintActor1 = Owner;
|
||||
KPos1 = (Location-AttachEndPoint)/50.f;
|
||||
KPos2 = AttachEndPoint/50.f;
|
||||
KPriAxis1 = vect(1,0,0);
|
||||
KSecAxis1 = vect(0,0,1);
|
||||
KPriAxis2 = vect(1,0,0);
|
||||
KSecAxis2 = vect(0,0,1);
|
||||
SetPhysics(PHYS_Karma);
|
||||
SetTimer(0,False);
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
RemoteRole=ROLE_None
|
||||
bHidden=True
|
||||
bNoDelete=False
|
||||
Physics=PHYS_None
|
||||
LifeSpan=20
|
||||
}
|
||||
6
kf_sources/KFMod/Classes/BodySplash.uc
Normal file
6
kf_sources/KFMod/Classes/BodySplash.uc
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
class BodySplash extends FleshHitEmitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
|
||||
}
|
||||
46
kf_sources/KFMod/Classes/BodySplashFX.uc
Normal file
46
kf_sources/KFMod/Classes/BodySplashFX.uc
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
class BodySplashFX extends FleshHitEmitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
// Begin Object Class=SpriteEmitter Name=SpriteEmitterSp
|
||||
// FadeOut=True
|
||||
// RespawnDeadParticles=False
|
||||
// SpawnOnlyInDirectionOfNormal=True
|
||||
// SpinParticles=True
|
||||
// UseSizeScale=True
|
||||
// UseRegularSizeScale=False
|
||||
// UniformSize=True
|
||||
// ScaleSizeYByVelocity=True
|
||||
// ScaleSizeZByVelocity=True
|
||||
// AutomaticInitialSpawning=False
|
||||
// BlendBetweenSubdivisions=True
|
||||
// UseRandomSubdivision=True
|
||||
// Acceleration=(Z=-600.000000)
|
||||
// ColorScale(0)=(Color=(G=255))
|
||||
// ColorScale(1)=(RelativeTime=0.300000,Color=(B=255,G=255,R=255))
|
||||
// ColorScale(2)=(RelativeTime=0.750000,Color=(B=96,G=255,R=255))
|
||||
// ColorScale(3)=(RelativeTime=1.000000)
|
||||
// ColorMultiplierRange=(Z=(Min=0.670000))
|
||||
// FadeOutStartTime=0.255000
|
||||
// MaxParticles=80
|
||||
// Name="SpriteEmitter0"
|
||||
// StartLocationShape=PTLS_Sphere
|
||||
// SphereRadiusRange=(Max=5.000000)
|
||||
// StartMassRange=(Min=11.000000,Max=11.000000)
|
||||
// UseRotationFrom=PTRS_Normal
|
||||
// SpinsPerSecondRange=(X=(Max=1.000000))
|
||||
// SizeScale(0)=(RelativeTime=1.000000,RelativeSize=3.500000)
|
||||
// StartSizeRange=(X=(Min=14.000000,Max=17.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
// ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
// ScaleSizeByVelocityMax=3.000000
|
||||
// InitialParticlesPerSecond=504.949005
|
||||
// DrawStyle=PTDS_Modulated
|
||||
// Texture=Texture'KFX.BloodySpray'
|
||||
// TextureUSubdivisions=4
|
||||
// TextureVSubdivisions=4
|
||||
// LifetimeRange=(Min=0.500000,Max=0.750000)
|
||||
// StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=100.000000,Max=300.000000))
|
||||
// End Object
|
||||
// Emitters(0)=SpriteEmitter'SpriteEmitterSp'
|
||||
// LifeSpan=1.5
|
||||
}
|
||||
17
kf_sources/KFMod/Classes/BombSquadSpecies.uc
Normal file
17
kf_sources/KFMod/Classes/BombSquadSpecies.uc
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
//=============================================================================
|
||||
// BombSquadSpecies
|
||||
//=============================================================================
|
||||
// Species type for bomb squad players
|
||||
//=============================================================================
|
||||
// Killing Floor Source
|
||||
// Copyright (C) 2009 Tripwire Interactive LLC
|
||||
// - John "Ramm-Jaeger" Gibson
|
||||
//=============================================================================
|
||||
class BombSquadSpecies extends HazmatSpecies;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
SleeveTexture=Texture'KF_Weapons2_Trip_T.hands.Bombsquad_Hands_1st_P'
|
||||
DetachedArmClass = class'SeveredArmBombSquad'
|
||||
DetachedLegClass = class'SeveredLegBombSquad'
|
||||
}
|
||||
272
kf_sources/KFMod/Classes/BoomStick.uc
Normal file
272
kf_sources/KFMod/Classes/BoomStick.uc
Normal file
|
|
@ -0,0 +1,272 @@
|
|||
//=============================================================================
|
||||
// BoomStick Inventory class
|
||||
//=============================================================================
|
||||
class BoomStick extends KFWeaponShotgun;
|
||||
|
||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||
|
||||
var bool bWaitingToLoadShotty;
|
||||
var float CurrentReloadCountDown;
|
||||
var() float ReloadCountDown;
|
||||
var int SingleShotCount;
|
||||
var float SingleShotReplicateCountdown;
|
||||
|
||||
replication
|
||||
{
|
||||
reliable if(Role == ROLE_Authority)
|
||||
ClientSetSingleShotCount;
|
||||
}
|
||||
|
||||
simulated function WeaponTick(float dt)
|
||||
{
|
||||
super.WeaponTick(dt);
|
||||
|
||||
if( Role == ROLE_Authority )
|
||||
{
|
||||
if( bWaitingToLoadShotty )
|
||||
{
|
||||
CurrentReloadCountDown -= dt;
|
||||
|
||||
if( CurrentReloadCountDown <= 0 )
|
||||
{
|
||||
if( AmmoAmount(0) > 0 )
|
||||
{
|
||||
MagAmmoRemaining = Min(AmmoAmount(0), 2);
|
||||
SingleShotCount = MagAmmoRemaining;
|
||||
ClientSetSingleShotCount(SingleShotCount);
|
||||
NetUpdateTime = Level.TimeSeconds - 1;
|
||||
bWaitingToLoadShotty = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if( SingleShotReplicateCountdown > 0 )
|
||||
{
|
||||
SingleShotReplicateCountdown -= dt;
|
||||
|
||||
if( SingleShotReplicateCountdown <= 0 )
|
||||
{
|
||||
ClientSetSingleShotCount(SingleShotCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// When someone holding an empty gun picks up ammo, make sure and tell the
|
||||
// weapon that is has some shots it can take
|
||||
function AmmoPickedUp()
|
||||
{
|
||||
if( SingleShotCount == 0 )
|
||||
{
|
||||
MagAmmoRemaining = Min(AmmoAmount(0), 2);
|
||||
SingleShotCount = MagAmmoRemaining;
|
||||
ClientSetSingleShotCount(SingleShotCount);
|
||||
NetUpdateTime = Level.TimeSeconds - 1;
|
||||
}
|
||||
}
|
||||
|
||||
simulated function SetPendingReload()
|
||||
{
|
||||
bWaitingToLoadShotty = true;
|
||||
CurrentReloadCountDown = ReloadCountDown;
|
||||
}
|
||||
|
||||
// Replicate the SingleShotCount on a slight delay. This prevents
|
||||
// it from replicating from the server before the client does
|
||||
// its shooting animation/sound effects which would prevent
|
||||
// those from playing
|
||||
function SetSingleShotReplication()
|
||||
{
|
||||
SingleShotReplicateCountdown=0.05;
|
||||
}
|
||||
|
||||
simulated function ClientSetSingleShotCount(float NewSingleShotCount)
|
||||
{
|
||||
SingleShotCount = NewSingleShotCount;
|
||||
}
|
||||
|
||||
// Overriden to support the special single firing or dual firing of the shotty
|
||||
simulated function bool ConsumeAmmo( int Mode, float Load, optional bool bAmountNeededIsMax )
|
||||
{
|
||||
if( super(Weapon).ConsumeAmmo(0, Load, bAmountNeededIsMax) )
|
||||
{
|
||||
MagAmmoRemaining -= Load;
|
||||
|
||||
NetUpdateTime = Level.TimeSeconds - 1;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//// client only ////
|
||||
// Overriden to force a single shot if we only have 1 in the pipe
|
||||
simulated event ClientStartFire(int Mode)
|
||||
{
|
||||
if ( Pawn(Owner).Controller.IsInState('GameEnded') || Pawn(Owner).Controller.IsInState('RoundEnded') )
|
||||
return;
|
||||
if (Role < ROLE_Authority)
|
||||
{
|
||||
if( Mode == 1 && MagAmmoRemaining == 1 )
|
||||
{
|
||||
Mode = 0;
|
||||
}
|
||||
|
||||
if (StartFire(Mode))
|
||||
{
|
||||
ServerStartFire(Mode);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( Mode == 1 && MagAmmoRemaining == 1 )
|
||||
{
|
||||
Mode = 0;
|
||||
}
|
||||
|
||||
StartFire(Mode);
|
||||
}
|
||||
}
|
||||
|
||||
// Overriden to allow switching between single/dual firing mode on the fly
|
||||
simulated event ClientStopFire(int Mode)
|
||||
{
|
||||
if( Mode == 0 && Instigator != none && Instigator.Controller != none )
|
||||
{
|
||||
if( Instigator.Controller.bAltFire == 1 )
|
||||
return;
|
||||
}
|
||||
|
||||
if (Role < ROLE_Authority)
|
||||
{
|
||||
StopFire(Mode);
|
||||
}
|
||||
|
||||
ServerStopFire(Mode);
|
||||
}
|
||||
|
||||
simulated function bool StartFire(int Mode)
|
||||
{
|
||||
if ( super.StartFire(Mode) )
|
||||
{
|
||||
if ( Instigator != none && PlayerController(Instigator.Controller) != none &&
|
||||
KFSteamStatsAndAchievements(PlayerController(Instigator.Controller).SteamStatsAndAchievements) != none )
|
||||
{
|
||||
KFSteamStatsAndAchievements(PlayerController(Instigator.Controller).SteamStatsAndAchievements).OnShotHuntingShotgun();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
simulated function int AmmoAmount(int mode)
|
||||
{
|
||||
if ( bNoAmmoInstances )
|
||||
{
|
||||
if ( AmmoClass[0] == AmmoClass[mode] )
|
||||
return AmmoCharge[0];
|
||||
return AmmoCharge[mode];
|
||||
}
|
||||
if ( Ammo[0] != None )
|
||||
return Ammo[0].AmmoAmount;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
function bool AllowReload()
|
||||
{
|
||||
if ( MagAmmoRemaining == 1 )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return super.AllowReload();
|
||||
}
|
||||
|
||||
function GiveAmmo(int m, WeaponPickup WP, bool bJustSpawned)
|
||||
{
|
||||
super.GiveAmmo(m,WP,bJustSpawned);
|
||||
|
||||
// Update the singleshotcount if we pick this weapon up
|
||||
if( WP != none )
|
||||
{
|
||||
if( m == 0 && AmmoAmount(0) < 2 )
|
||||
{
|
||||
SingleShotCount = AmmoAmount(0);
|
||||
ClientSetSingleShotCount(SingleShotCount);
|
||||
}
|
||||
else if( BoomStickPickup(WP) != none )
|
||||
{
|
||||
SingleShotCount = BoomStickPickup(WP).SingleShotCount;
|
||||
ClientSetSingleShotCount(SingleShotCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function GiveTo( pawn Other, optional Pickup Pickup )
|
||||
{
|
||||
super.GiveTo( Other, Pickup );
|
||||
|
||||
if( MagAmmoRemaining == 0 && AmmoAmount(0) > 0 )
|
||||
{
|
||||
MagAmmoRemaining = Min(AmmoAmount(0), 2);
|
||||
SingleShotCount = MagAmmoRemaining;
|
||||
ClientSetSingleShotCount(SingleShotCount);
|
||||
NetUpdateTime = Level.TimeSeconds - 1;
|
||||
bWaitingToLoadShotty = false;
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
SkinRefs(0)="KF_Weapons_Trip_T.Shotguns.boomstick_cmb"
|
||||
|
||||
WeaponReloadAnim=Reload_HuntingShotgun
|
||||
|
||||
MagCapacity=2
|
||||
IdleAimAnim=Idle_Iron
|
||||
ReloadRate=0.010000
|
||||
ReloadAnim="Reload"
|
||||
ReloadAnimRate=0.900000
|
||||
FireModeClass(0)=Class'KFMod.BoomStickAltFire'
|
||||
FireModeClass(1)=Class'KFMod.BoomStickFire'
|
||||
PutDownAnim="PutDown"
|
||||
SelectSoundRef="KF_DoubleSGSnd.2Barrel_Select"
|
||||
Description="A double barreled shotgun used by big game hunters. It fires two slugs simultaneously and can bring down even the largest targets, quickly."
|
||||
Priority=160
|
||||
InventoryGroup=4
|
||||
GroupOffset=2
|
||||
PickupClass=Class'KFMod.BoomStickPickup'
|
||||
BobDamping=6.000000
|
||||
AttachmentClass=Class'KFMod.BoomStickAttachment'
|
||||
ItemName="Hunting Shotgun"
|
||||
bUseDynamicLights=True
|
||||
MeshRef="KF_Weapons_Trip.BoomStick_Trip"
|
||||
TransientSoundVolume=1.000000
|
||||
|
||||
AIRating=0.9
|
||||
CurrentRating=0.9
|
||||
bSniping=False
|
||||
|
||||
ZoomTime=0.25
|
||||
FastZoomOutTime=0.2
|
||||
PlayerViewOffset=(X=8.0,Y=14,Z=-8.0)
|
||||
ZoomInRotation=(Pitch=-910,Yaw=0,Roll=2910)
|
||||
bHasAimingMode=true
|
||||
ForceZoomOutOnFireTime=0.01
|
||||
ForceZoomOutOnAltFireTime=0.01
|
||||
|
||||
DisplayFOV=55.000000
|
||||
StandardDisplayFOV=55.0
|
||||
PlayerIronSightFOV=70
|
||||
ZoomedDisplayFOV=40
|
||||
|
||||
HudImageRef="KillingFloorHUD.WeaponSelect.BoomStic_unselected"
|
||||
SelectedHudImageRef="KillingFloorHUD.WeaponSelect.BoomStick"
|
||||
TraderInfoTexture=texture'KillingFloorHUD.Trader_Weapon_Images.Trader_Hunting_Shotgun'
|
||||
ReloadCountDown=2.5
|
||||
SingleShotCount=2
|
||||
|
||||
bIsTier2Weapon=true
|
||||
}
|
||||
326
kf_sources/KFMod/Classes/BoomStickAltFire.uc
Normal file
326
kf_sources/KFMod/Classes/BoomStickAltFire.uc
Normal file
|
|
@ -0,0 +1,326 @@
|
|||
//=============================================================================
|
||||
// BoomStick Single Fire
|
||||
//=============================================================================
|
||||
class BoomStickAltFire extends KFShotgunFire;
|
||||
|
||||
var() name FireLastAnim;
|
||||
var() name FireLastAimedAnim;
|
||||
var() float FireLastRate;
|
||||
|
||||
var() Emitter Flash2Emitter;
|
||||
var() name MuzzleBoneLeft;
|
||||
var() name MuzzleBoneRight;
|
||||
|
||||
var bool bVeryLastShotAnim;
|
||||
|
||||
simulated function InitEffects()
|
||||
{
|
||||
// don't even spawn on server
|
||||
if ( (Level.NetMode == NM_DedicatedServer) || (AIController(Instigator.Controller) != None) )
|
||||
return;
|
||||
if ( (FlashEmitterClass != None) && ((FlashEmitter == None) || FlashEmitter.bDeleteMe) )
|
||||
{
|
||||
FlashEmitter = Weapon.Spawn(FlashEmitterClass);
|
||||
Weapon.AttachToBone(FlashEmitter, MuzzleBoneLeft);
|
||||
}
|
||||
if ( (FlashEmitterClass != None) && ((Flash2Emitter == None) || Flash2Emitter.bDeleteMe) )
|
||||
{
|
||||
Flash2Emitter = Weapon.Spawn(FlashEmitterClass);
|
||||
Weapon.AttachToBone(Flash2Emitter, MuzzleBoneRight);
|
||||
}
|
||||
|
||||
if ( (SmokeEmitterClass != None) && ((SmokeEmitter == None) || SmokeEmitter.bDeleteMe) )
|
||||
{
|
||||
SmokeEmitter = Weapon.Spawn(SmokeEmitterClass);
|
||||
}
|
||||
}
|
||||
|
||||
simulated function DestroyEffects()
|
||||
{
|
||||
super.DestroyEffects();
|
||||
|
||||
if (Flash2Emitter != None)
|
||||
Flash2Emitter.Destroy();
|
||||
}
|
||||
|
||||
function FlashMuzzleFlash()
|
||||
{
|
||||
if( KFWeap.MagAmmoRemaining == 2)
|
||||
{
|
||||
if (Flash2Emitter != None)
|
||||
Flash2Emitter.Trigger(Weapon, Instigator);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (FlashEmitter != None)
|
||||
FlashEmitter.Trigger(Weapon, Instigator);
|
||||
}
|
||||
}
|
||||
|
||||
simulated function bool AllowFire()
|
||||
{
|
||||
return (BoomStick(Weapon).SingleShotCount >= 1);
|
||||
}
|
||||
|
||||
// Overridden to support special anim functionality of the double barreled shotgun
|
||||
function PlayFiring()
|
||||
{
|
||||
local float RandPitch;
|
||||
|
||||
if ( Weapon.Mesh != None )
|
||||
{
|
||||
if ( FireCount > 0 )
|
||||
{
|
||||
if( KFWeap.bAimingRifle )
|
||||
{
|
||||
if ( Weapon.HasAnim(FireLoopAimedAnim) )
|
||||
{
|
||||
Weapon.PlayAnim(FireLoopAimedAnim, FireLoopAnimRate, 0.0);
|
||||
}
|
||||
else if( Weapon.HasAnim(FireAimedAnim) )
|
||||
{
|
||||
Weapon.PlayAnim(FireAimedAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( Weapon.HasAnim(FireLoopAnim) )
|
||||
{
|
||||
Weapon.PlayAnim(FireLoopAnim, FireLoopAnimRate, 0.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( KFWeap.bAimingRifle )
|
||||
{
|
||||
if( !bVeryLastShotAnim && BoomStick(Weapon).SingleShotCount == 0 && Weapon.HasAnim(FireLastAimedAnim))
|
||||
{
|
||||
Weapon.PlayAnim(FireLastAimedAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
else if( Weapon.HasAnim(FireAimedAnim) )
|
||||
{
|
||||
Weapon.PlayAnim(FireAimedAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( !bVeryLastShotAnim && BoomStick(Weapon).SingleShotCount == 0 && Weapon.HasAnim(FireLastAnim))
|
||||
{
|
||||
Weapon.PlayAnim(FireLastAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if( Weapon.Instigator != none && Weapon.Instigator.IsLocallyControlled() &&
|
||||
Weapon.Instigator.IsFirstPerson() && StereoFireSound != none )
|
||||
{
|
||||
if( bRandomPitchFireSound )
|
||||
{
|
||||
RandPitch = FRand() * RandomPitchAdjustAmt;
|
||||
|
||||
if( FRand() < 0.5 )
|
||||
{
|
||||
RandPitch *= -1.0;
|
||||
}
|
||||
}
|
||||
|
||||
Weapon.PlayOwnedSound(StereoFireSound,SLOT_Interact,TransientSoundVolume * 0.85,,TransientSoundRadius,(1.0 + RandPitch),false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if( bRandomPitchFireSound )
|
||||
{
|
||||
RandPitch = FRand() * RandomPitchAdjustAmt;
|
||||
|
||||
if( FRand() < 0.5 )
|
||||
{
|
||||
RandPitch *= -1.0;
|
||||
}
|
||||
}
|
||||
|
||||
Weapon.PlayOwnedSound(FireSound,SLOT_Interact,TransientSoundVolume,,TransientSoundRadius,(1.0 + RandPitch),false);
|
||||
}
|
||||
ClientPlayForceFeedback(FireForce); // jdf
|
||||
|
||||
FireCount++;
|
||||
}
|
||||
|
||||
// Overridden to support special anim functionality of the double barreled shotgun
|
||||
event ModeDoFire()
|
||||
{
|
||||
local float Rec;
|
||||
|
||||
if (!AllowFire())
|
||||
return;
|
||||
|
||||
Spread = Default.Spread;
|
||||
Rec = 1;
|
||||
if ( KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo) != none && KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill != none )
|
||||
{
|
||||
Spread *= KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill.Static.ModifyRecoilSpread(KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo), self, Rec);
|
||||
}
|
||||
|
||||
if( !bFiringDoesntAffectMovement )
|
||||
{
|
||||
if (FireRate > 0.25)
|
||||
{
|
||||
Instigator.Velocity.x *= 0.1;
|
||||
Instigator.Velocity.y *= 0.1;
|
||||
}
|
||||
else
|
||||
{
|
||||
Instigator.Velocity.x *= 0.5;
|
||||
Instigator.Velocity.y *= 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
// Code from WeaponFire we have to override
|
||||
|
||||
if (MaxHoldTime > 0.0)
|
||||
HoldTime = FMin(HoldTime, MaxHoldTime);
|
||||
|
||||
BoomStick(Weapon).SingleShotCount--;
|
||||
|
||||
bVeryLastShotAnim = Weapon.AmmoAmount(0) <= AmmoPerFire;
|
||||
|
||||
// server
|
||||
if (Weapon.Role == ROLE_Authority)
|
||||
{
|
||||
if( BoomStick(Weapon).SingleShotCount < 1 )
|
||||
{
|
||||
BoomStick(Weapon).SetPendingReload();
|
||||
}
|
||||
|
||||
Weapon.ConsumeAmmo(ThisModeNum, Load);
|
||||
DoFireEffect();
|
||||
BoomStick(Weapon).SetSingleShotReplication();
|
||||
HoldTime = 0; // if bot decides to stop firing, HoldTime must be reset first
|
||||
if ( (Instigator == None) || (Instigator.Controller == None) )
|
||||
return;
|
||||
|
||||
if ( AIController(Instigator.Controller) != None )
|
||||
AIController(Instigator.Controller).WeaponFireAgain(BotRefireRate, true);
|
||||
|
||||
Instigator.DeactivateSpawnProtection();
|
||||
}
|
||||
|
||||
// client
|
||||
if (Instigator.IsLocallyControlled())
|
||||
{
|
||||
ShakeView();
|
||||
PlayFiring();
|
||||
FlashMuzzleFlash();
|
||||
StartMuzzleSmoke();
|
||||
}
|
||||
else // server
|
||||
{
|
||||
ServerPlayFiring();
|
||||
}
|
||||
|
||||
Weapon.IncrementFlashCount(ThisModeNum);
|
||||
|
||||
// set the next firing time. must be careful here so client and server do not get out of sync
|
||||
if (bFireOnRelease)
|
||||
{
|
||||
if( BoomStick(Weapon).SingleShotCount == 0 )
|
||||
{
|
||||
if (bIsFiring)
|
||||
NextFireTime += MaxHoldTime + FireLastRate;
|
||||
else
|
||||
NextFireTime = Level.TimeSeconds + FireLastRate;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (bIsFiring)
|
||||
NextFireTime += MaxHoldTime + FireRate;
|
||||
else
|
||||
NextFireTime = Level.TimeSeconds + FireRate;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( BoomStick(Weapon).SingleShotCount == 0 )
|
||||
{
|
||||
NextFireTime += FireLastRate;
|
||||
NextFireTime = FMax(NextFireTime, Level.TimeSeconds);
|
||||
}
|
||||
else
|
||||
{
|
||||
NextFireTime += FireRate;
|
||||
NextFireTime = FMax(NextFireTime, Level.TimeSeconds);
|
||||
}
|
||||
}
|
||||
|
||||
Load = AmmoPerFire;
|
||||
HoldTime = 0;
|
||||
|
||||
if (Instigator.PendingWeapon != Weapon && Instigator.PendingWeapon != None)
|
||||
{
|
||||
bIsFiring = false;
|
||||
Weapon.PutDown();
|
||||
}
|
||||
// end code from WeaponFire
|
||||
|
||||
// client
|
||||
if (Instigator.IsLocallyControlled())
|
||||
{
|
||||
HandleRecoil(Rec);
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
bModeExclusive=true
|
||||
KickMomentum=(X=-50.000000,Z=22.000000)
|
||||
ProjPerFire=10
|
||||
FireAnim=Fire
|
||||
FireAimedAnim=Fire_Iron
|
||||
FireLastAnim=Fire_Last
|
||||
FireLastAimedAnim=Fire_Last_Iron
|
||||
bAttachSmokeEmitter=True
|
||||
TransientSoundVolume=1.8
|
||||
TransientSoundRadius=500.000000
|
||||
FireSoundRef="KF_DoubleSGSnd.2Barrel_Fire"
|
||||
StereoFireSoundRef="KF_DoubleSGSnd.2Barrel_FireST"
|
||||
NoAmmoSoundRef="KF_DoubleSGSnd.2Barrel_DryFire"
|
||||
FireRate=0.25//1.250000
|
||||
FireLastRate=2.75//1.75
|
||||
AmmoClass=Class'KFMod.DBShotgunAmmo'
|
||||
AmmoPerFire=1
|
||||
ProjectileClass=Class'KFMod.BoomStickBullet'
|
||||
BotRefireRate=2.500000
|
||||
FlashEmitterClass=Class'ROEffects.MuzzleFlash1stKar'//Class'ROEffects.MuzzleFlash1stPTRD'
|
||||
MuzzleBoneLeft=Tip_Left
|
||||
MuzzleBoneRight=Tip_Right
|
||||
aimerror=2.000000
|
||||
Spread=3000
|
||||
RecoilRate=0.07
|
||||
maxVerticalRecoilAngle=1500
|
||||
maxHorizontalRecoilAngle=900
|
||||
|
||||
//** View shake **//
|
||||
ShakeOffsetMag=(X=6.0,Y=2.0,Z=10.0)
|
||||
ShakeOffsetRate=(X=1000.0,Y=1000.0,Z=1000.0)
|
||||
ShakeOffsetTime=3.0
|
||||
ShakeRotMag=(X=50.0,Y=50.0,Z=400.0)
|
||||
ShakeRotRate=(X=12500.0,Y=12500.0,Z=12500.0)
|
||||
ShakeRotTime=5.0
|
||||
bWaitForRelease=true
|
||||
}
|
||||
69
kf_sources/KFMod/Classes/BoomStickAttachment.uc
Normal file
69
kf_sources/KFMod/Classes/BoomStickAttachment.uc
Normal file
|
|
@ -0,0 +1,69 @@
|
|||
class BoomStickAttachment extends KFWeaponAttachment;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
mMuzFlashClass=Class'ROEffects.MuzzleFlash3rdKar'
|
||||
mShellCaseEmitterClass=Class'KFMod.KFShotgunShellSpewer'
|
||||
MeshRef="KF_Weapons3rd_Trip.HuntingShot_3rd"
|
||||
|
||||
MovementAnims(0)=JogF_HuntingShotgun
|
||||
MovementAnims(1)=JogB_HuntingShotgun
|
||||
MovementAnims(2)=JogL_HuntingShotgun
|
||||
MovementAnims(3)=JogR_HuntingShotgun
|
||||
CrouchAnims(0)=CHwalkF_HuntingShotgun
|
||||
CrouchAnims(1)=CHwalkB_HuntingShotgun
|
||||
CrouchAnims(2)=CHwalkL_HuntingShotgun
|
||||
CrouchAnims(3)=CHwalkR_HuntingShotgun
|
||||
WalkAnims(0)=WalkF_HuntingShotgun
|
||||
WalkAnims(1)=WalkB_HuntingShotgun
|
||||
WalkAnims(2)=WalkL_HuntingShotgun
|
||||
WalkAnims(3)=WalkR_HuntingShotgun
|
||||
AirStillAnim=JumpF_Mid
|
||||
AirAnims(0)=JumpF_Mid
|
||||
AirAnims(1)=JumpF_Mid
|
||||
AirAnims(2)=JumpL_Mid
|
||||
AirAnims(3)=JumpR_Mid
|
||||
TakeoffStillAnim=JumpF_Takeoff
|
||||
TakeoffAnims(0)=JumpF_Takeoff
|
||||
TakeoffAnims(1)=JumpF_Takeoff
|
||||
TakeoffAnims(2)=JumpL_Takeoff
|
||||
TakeoffAnims(3)=JumpR_Takeoff
|
||||
LandAnims(0)=JumpF_Land
|
||||
LandAnims(1)=JumpF_Land
|
||||
LandAnims(2)=JumpL_Land
|
||||
LandAnims(3)=JumpR_Land
|
||||
|
||||
TurnRightAnim=TurnR_HuntingShotgun
|
||||
TurnLeftAnim=TurnL_HuntingShotgun
|
||||
CrouchTurnRightAnim=CH_TurnR_HuntingShotgun
|
||||
CrouchTurnLeftAnim=CH_TurnL_HuntingShotgun
|
||||
IdleRestAnim=Idle_HuntingShotgun//Idle_Rest
|
||||
IdleCrouchAnim=CHIdle_HuntingShotgun
|
||||
IdleSwimAnim=Swim_Tread
|
||||
IdleWeaponAnim=Idle_HuntingShotgun//Idle_Rifle
|
||||
IdleHeavyAnim=Idle_HuntingShotgun//Idle_Biggun
|
||||
IdleRifleAnim=Idle_HuntingShotgun//Idle_Rifle
|
||||
IdleChatAnim=Idle_HuntingShotgun
|
||||
FireAnims(0)=Fire_HuntingShotgun
|
||||
FireAnims(1)=Fire_HuntingShotgun
|
||||
FireAnims(2)=Fire_HuntingShotgun
|
||||
FireAnims(3)=Fire_HuntingShotgun
|
||||
FireAltAnims(0)=Fire_HuntingShotgun
|
||||
FireAltAnims(1)=Fire_HuntingShotgun
|
||||
FireAltAnims(2)=Fire_HuntingShotgun
|
||||
FireAltAnims(3)=Fire_HuntingShotgun
|
||||
FireCrouchAnims(0)=CHFire_HuntingShotgun
|
||||
FireCrouchAnims(1)=CHFire_HuntingShotgun
|
||||
FireCrouchAnims(2)=CHFire_HuntingShotgun
|
||||
FireCrouchAnims(3)=CHFire_HuntingShotgun
|
||||
FireCrouchAltAnims(0)=CHFire_HuntingShotgun
|
||||
FireCrouchAltAnims(1)=CHFire_HuntingShotgun
|
||||
FireCrouchAltAnims(2)=CHFire_HuntingShotgun
|
||||
FireCrouchAltAnims(3)=CHFire_HuntingShotgun
|
||||
HitAnims(0)=HitF_HuntingShotgun
|
||||
HitAnims(1)=HitB_HuntingShotgun
|
||||
HitAnims(2)=HitL_HuntingShotgun
|
||||
HitAnims(3)=HitR_HuntingShotgun
|
||||
PostFireBlendStandAnim=Blend_HuntingShotgun
|
||||
PostFireBlendCrouchAnim=CHBlend_HuntingShotgun
|
||||
}
|
||||
12
kf_sources/KFMod/Classes/BoomStickBullet.uc
Normal file
12
kf_sources/KFMod/Classes/BoomStickBullet.uc
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
//=============================================================================
|
||||
// THIS IS MAH BOOMSTICK!
|
||||
//=============================================================================
|
||||
class BoomStickBullet extends ShotgunBullet;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
PenDamageReduction=0.650000
|
||||
Damage=50.000000
|
||||
MomentumTransfer=60000.000000
|
||||
MyDamageType=class'KFMod.DamTypeDBShotgun'
|
||||
}
|
||||
271
kf_sources/KFMod/Classes/BoomStickFire.uc
Normal file
271
kf_sources/KFMod/Classes/BoomStickFire.uc
Normal file
|
|
@ -0,0 +1,271 @@
|
|||
//=============================================================================
|
||||
// BoomStick Dual Fire
|
||||
//=============================================================================
|
||||
class BoomStickFire extends KFShotgunFire;
|
||||
|
||||
var() Emitter Flash2Emitter;
|
||||
var() name MuzzleBoneLeft;
|
||||
var() name MuzzleBoneRight;
|
||||
|
||||
var() name FireLastAnim;
|
||||
var() name FireLastAimedAnim;
|
||||
|
||||
var bool bVeryLastShotAnim;
|
||||
|
||||
event ModeDoFire()
|
||||
{
|
||||
if (!AllowFire())
|
||||
return;
|
||||
|
||||
bVeryLastShotAnim = Weapon.AmmoAmount(0) <= AmmoPerFire;
|
||||
|
||||
super.ModeDoFire();
|
||||
|
||||
// server
|
||||
if (Weapon.Role == ROLE_Authority)
|
||||
{
|
||||
BoomStick(Weapon).SingleShotCount = 0;
|
||||
BoomStick(Weapon).SetSingleShotReplication();
|
||||
BoomStick(Weapon).SetPendingReload();
|
||||
}
|
||||
}
|
||||
|
||||
// Overridden to support special anim functionality of the double barreled shotgun
|
||||
function PlayFiring()
|
||||
{
|
||||
local float RandPitch;
|
||||
|
||||
if ( Weapon.Mesh != None )
|
||||
{
|
||||
if ( FireCount > 0 )
|
||||
{
|
||||
if( KFWeap.bAimingRifle )
|
||||
{
|
||||
if ( Weapon.HasAnim(FireLoopAimedAnim) )
|
||||
{
|
||||
Weapon.PlayAnim(FireLoopAimedAnim, FireLoopAnimRate, 0.0);
|
||||
}
|
||||
else if( Weapon.HasAnim(FireAimedAnim) )
|
||||
{
|
||||
Weapon.PlayAnim(FireAimedAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( Weapon.HasAnim(FireLoopAnim) )
|
||||
{
|
||||
Weapon.PlayAnim(FireLoopAnim, FireLoopAnimRate, 0.0);
|
||||
}
|
||||
else
|
||||
{
|
||||
Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( KFWeap.bAimingRifle )
|
||||
{
|
||||
if( bVeryLastShotAnim && Weapon.HasAnim(FireLastAimedAnim))
|
||||
{
|
||||
Weapon.PlayAnim(FireLastAimedAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
else if( Weapon.HasAnim(FireAimedAnim) )
|
||||
{
|
||||
Weapon.PlayAnim(FireAimedAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( bVeryLastShotAnim && Weapon.HasAnim(FireLastAnim))
|
||||
{
|
||||
Weapon.PlayAnim(FireLastAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
Weapon.PlayAnim(FireAnim, FireAnimRate, TweenTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if( Weapon.Instigator != none && Weapon.Instigator.IsLocallyControlled() &&
|
||||
Weapon.Instigator.IsFirstPerson() && StereoFireSound != none )
|
||||
{
|
||||
if( bRandomPitchFireSound )
|
||||
{
|
||||
RandPitch = FRand() * RandomPitchAdjustAmt;
|
||||
|
||||
if( FRand() < 0.5 )
|
||||
{
|
||||
RandPitch *= -1.0;
|
||||
}
|
||||
}
|
||||
|
||||
Weapon.PlayOwnedSound(StereoFireSound,SLOT_Interact,TransientSoundVolume * 0.85,,TransientSoundRadius,(1.0 + RandPitch),false);
|
||||
}
|
||||
else
|
||||
{
|
||||
if( bRandomPitchFireSound )
|
||||
{
|
||||
RandPitch = FRand() * RandomPitchAdjustAmt;
|
||||
|
||||
if( FRand() < 0.5 )
|
||||
{
|
||||
RandPitch *= -1.0;
|
||||
}
|
||||
}
|
||||
|
||||
Weapon.PlayOwnedSound(FireSound,SLOT_Interact,TransientSoundVolume,,TransientSoundRadius,(1.0 + RandPitch),false);
|
||||
}
|
||||
ClientPlayForceFeedback(FireForce); // jdf
|
||||
|
||||
FireCount++;
|
||||
}
|
||||
|
||||
simulated function InitEffects()
|
||||
{
|
||||
// don't even spawn on server
|
||||
if ( (Level.NetMode == NM_DedicatedServer) || (AIController(Instigator.Controller) != None) )
|
||||
return;
|
||||
if ( (FlashEmitterClass != None) && ((FlashEmitter == None) || FlashEmitter.bDeleteMe) )
|
||||
{
|
||||
FlashEmitter = Weapon.Spawn(FlashEmitterClass);
|
||||
Weapon.AttachToBone(FlashEmitter, MuzzleBoneLeft);
|
||||
}
|
||||
if ( (FlashEmitterClass != None) && ((Flash2Emitter == None) || Flash2Emitter.bDeleteMe) )
|
||||
{
|
||||
Flash2Emitter = Weapon.Spawn(FlashEmitterClass);
|
||||
Weapon.AttachToBone(Flash2Emitter, MuzzleBoneRight);
|
||||
}
|
||||
|
||||
if ( (SmokeEmitterClass != None) && ((SmokeEmitter == None) || SmokeEmitter.bDeleteMe) )
|
||||
{
|
||||
SmokeEmitter = Weapon.Spawn(SmokeEmitterClass);
|
||||
}
|
||||
}
|
||||
|
||||
simulated function DestroyEffects()
|
||||
{
|
||||
super.DestroyEffects();
|
||||
|
||||
if (Flash2Emitter != None)
|
||||
Flash2Emitter.Destroy();
|
||||
}
|
||||
|
||||
function FlashMuzzleFlash()
|
||||
{
|
||||
super.FlashMuzzleFlash();
|
||||
|
||||
if (Flash2Emitter != None)
|
||||
Flash2Emitter.Trigger(Weapon, Instigator);
|
||||
}
|
||||
|
||||
simulated function bool AllowFire()
|
||||
{
|
||||
return (BoomStick(Weapon).SingleShotCount >= 2);
|
||||
}
|
||||
|
||||
// Handle setting new recoil
|
||||
simulated function HandleRecoil(float Rec)
|
||||
{
|
||||
local rotator NewRecoilRotation;
|
||||
local KFPlayerController KFPC;
|
||||
local KFPawn KFPwn;
|
||||
local vector AdjustedVelocity;
|
||||
local float AdjustedSpeed;
|
||||
|
||||
if( Instigator != none )
|
||||
{
|
||||
KFPC = KFPlayerController(Instigator.Controller);
|
||||
KFPwn = KFPawn(Instigator);
|
||||
}
|
||||
|
||||
if( KFPC == none || KFPwn == none )
|
||||
return;
|
||||
|
||||
if( !KFPC.bFreeCamera )
|
||||
{
|
||||
// Overridden to support special anim functionality of the double barreled shotgun
|
||||
if( Weapon.GetFireMode(1).bIsFiring )
|
||||
{
|
||||
NewRecoilRotation.Pitch = RandRange( maxVerticalRecoilAngle * 0.75, maxVerticalRecoilAngle );
|
||||
NewRecoilRotation.Yaw = RandRange( maxHorizontalRecoilAngle * 0.5, maxHorizontalRecoilAngle );
|
||||
|
||||
if( Rand( 2 ) == 1 )
|
||||
NewRecoilRotation.Yaw *= -1;
|
||||
|
||||
if( Weapon.Owner != none && Weapon.Owner.Physics == PHYS_Falling &&
|
||||
Weapon.Owner.PhysicsVolume.Gravity.Z > class'PhysicsVolume'.default.Gravity.Z )
|
||||
{
|
||||
AdjustedVelocity = Weapon.Owner.Velocity;
|
||||
// Ignore Z velocity in low grav so we don't get massive recoil
|
||||
AdjustedVelocity.Z = 0;
|
||||
AdjustedSpeed = VSize(AdjustedVelocity);
|
||||
//log("AdjustedSpeed = "$AdjustedSpeed$" scale = "$(AdjustedSpeed* RecoilVelocityScale * 0.5));
|
||||
|
||||
// Reduce the falling recoil in low grav
|
||||
NewRecoilRotation.Pitch += (AdjustedSpeed* 3 * 0.5);
|
||||
NewRecoilRotation.Yaw += (AdjustedSpeed* 3 * 0.5);
|
||||
}
|
||||
else
|
||||
{
|
||||
//log("Velocity = "$VSize(Weapon.Owner.Velocity)$" scale = "$(VSize(Weapon.Owner.Velocity)* RecoilVelocityScale));
|
||||
NewRecoilRotation.Pitch += (VSize(Weapon.Owner.Velocity)* 3);
|
||||
NewRecoilRotation.Yaw += (VSize(Weapon.Owner.Velocity)* 3);
|
||||
}
|
||||
|
||||
NewRecoilRotation.Pitch += (Instigator.HealthMax / Instigator.Health * 5);
|
||||
NewRecoilRotation.Yaw += (Instigator.HealthMax / Instigator.Health * 5);
|
||||
NewRecoilRotation *= Rec;
|
||||
|
||||
KFPC.SetRecoil(NewRecoilRotation,RecoilRate * (default.FireRate/FireRate));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
bModeExclusive=true
|
||||
KickMomentum=(X=-105.000000,Z=55.000000)
|
||||
ProjPerFire=10
|
||||
FireAnim=Fire_Both
|
||||
FireAimedAnim=Fire_Both_Iron
|
||||
FireLastAnim=Fire
|
||||
FireLastAimedAnim=Fire_Iron
|
||||
bAttachSmokeEmitter=True
|
||||
TransientSoundVolume=1.9
|
||||
TransientSoundRadius=500.000000
|
||||
FireSoundRef="KF_DoubleSGSnd.2Barrel_Fire_Dual"
|
||||
StereoFireSoundRef="KF_DoubleSGSnd.2Barrel_Fire_DualST"
|
||||
NoAmmoSoundRef="KF_DoubleSGSnd.2Barrel_DryFire"
|
||||
FireRate=2.750000
|
||||
AmmoClass=Class'KFMod.DBShotgunAmmo'
|
||||
AmmoPerFire=2
|
||||
ProjectileClass=Class'KFMod.BoomStickBullet'
|
||||
BotRefireRate=2.500000
|
||||
FlashEmitterClass=Class'ROEffects.MuzzleFlash1stKar'//Class'ROEffects.MuzzleFlash1stPTRD'
|
||||
MuzzleBoneLeft=Tip_Left
|
||||
MuzzleBoneRight=Tip_Right
|
||||
aimerror=2.000000
|
||||
Spread=3000
|
||||
RecoilRate=0.07
|
||||
maxVerticalRecoilAngle=3200
|
||||
maxHorizontalRecoilAngle=900
|
||||
|
||||
//** View shake **//
|
||||
ShakeOffsetMag=(X=6.0,Y=2.0,Z=10.0)
|
||||
ShakeOffsetRate=(X=1000.0,Y=1000.0,Z=1000.0)
|
||||
ShakeOffsetTime=3.5
|
||||
ShakeRotMag=(X=75.0,Y=75.0,Z=600.0)
|
||||
ShakeRotRate=(X=12500.0,Y=12500.0,Z=12500.0)
|
||||
ShakeRotTime=6.0
|
||||
bWaitForRelease=true
|
||||
}
|
||||
7
kf_sources/KFMod/Classes/BoomStickMuzzFlash.uc
Normal file
7
kf_sources/KFMod/Classes/BoomStickMuzzFlash.uc
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
class BoomStickMuzzFlash extends BullpupMuzzFlash;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
mLifeRange(1)=0.150000
|
||||
DrawScale=2.000000
|
||||
}
|
||||
47
kf_sources/KFMod/Classes/BoomStickPickup.uc
Normal file
47
kf_sources/KFMod/Classes/BoomStickPickup.uc
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
//=============================================================================
|
||||
// BoomStick Pickup.
|
||||
//=============================================================================
|
||||
class BoomStickPickup extends KFWeaponPickup;
|
||||
|
||||
var int SingleShotCount;
|
||||
|
||||
function ShowShotgunInfo(Canvas C)
|
||||
{
|
||||
C.SetPos((C.SizeX - C.SizeY) / 2,0);
|
||||
C.DrawTile( Texture'KillingfloorHUD.ClassMenu.Shotgun', C.SizeY, C.SizeY, 0.0, 0.0, 256, 256);
|
||||
}
|
||||
|
||||
function InitDroppedPickupFor(Inventory Inv)
|
||||
{
|
||||
Super.InitDroppedPickupFor(Inv);
|
||||
|
||||
if ( Boomstick(Inv) != none )
|
||||
{
|
||||
SingleShotCount = BoomStick(Inv).SingleShotCount;
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
cost=750
|
||||
AmmoCost=15 // Adjusted from 25 in Balance Round 2
|
||||
BuyClipSize=6
|
||||
PowerValue=90
|
||||
SpeedValue=30
|
||||
RangeValue=12
|
||||
Description="A double barreled shotgun used by big game hunters."
|
||||
ItemName="Hunting Shotgun"
|
||||
ItemShortName="Hunting Shotgun"
|
||||
AmmoItemName="12-gauge Hunting shells"
|
||||
AmmoMesh=none
|
||||
InventoryType=Class'KFMod.BoomStick'
|
||||
PickupMessage="You got the Hunting Shotgun"
|
||||
PickupForce="AssaultRiflePickup"
|
||||
StaticMesh=StaticMesh'KF_pickups_Trip.boomstick_pickup'
|
||||
PickupSound=Sound'KF_DoubleSGSnd.2Barrel_Pickup'
|
||||
CollisionRadius=35.000000
|
||||
CollisionHeight=5.000000
|
||||
EquipmentCategoryID=3
|
||||
CorrespondingPerkIndex=1
|
||||
SingleShotCount=2
|
||||
}
|
||||
45
kf_sources/KFMod/Classes/BreakWindowGlassEmitter.uc
Normal file
45
kf_sources/KFMod/Classes/BreakWindowGlassEmitter.uc
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
class BreakWindowGlassEmitter extends KFHitEmitter;
|
||||
#exec OBJ LOAD FILE=KFWeaponSound.uax
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
ImpactSounds(0)=Sound'KFWeaponSound.bullethitglass'
|
||||
ImpactSounds(1)=Sound'KFWeaponSound.bullethitglass2'
|
||||
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=GlassExplosionEmitter
|
||||
UseCollision=True
|
||||
FadeOut=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
UseRandomSubdivision=True
|
||||
Acceleration=(Z=-800.000000)
|
||||
DampingFactorRange=(X=(Min=0.000000,Max=0.800000),Y=(Min=0.000000,Max=0.800000),Z=(Min=0.000000,Max=0.400000))
|
||||
ColorScale(0)=(Color=(B=255,G=255,R=255,A=255))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255,A=255))
|
||||
FadeOutStartTime=1.000000
|
||||
MaxParticles=20
|
||||
Name="GlassExplosionEmitter"
|
||||
DetailMode=DM_High
|
||||
StartLocationRange=(X=(Min=-20.000000,Max=20.000000),Y=(Min=-20.000000,Max=20.000000),Z=(Min=-20.000000,Max=20.000000))
|
||||
SpinsPerSecondRange=(X=(Max=0.200000))
|
||||
StartSpinRange=(X=(Min=1.000000))
|
||||
StartSizeRange=(X=(Min=5.000000,Max=7.000000))
|
||||
ParticlesPerSecond=0
|
||||
InitialParticlesPerSecond=200
|
||||
DrawStyle=PTDS_AlphaBlend
|
||||
Texture=Texture'KFMaterials.GlassChips'
|
||||
TextureUSubdivisions=4
|
||||
TextureVSubdivisions=4
|
||||
LifetimeRange=(Min=2.000000)
|
||||
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=-200.000000,Max=200.000000))
|
||||
MaxAbsVelocity=(Z=500.000000)
|
||||
End Object
|
||||
|
||||
Emitters(0)=SpriteEmitter'GlassExplosionEmitter'
|
||||
|
||||
|
||||
}
|
||||
75
kf_sources/KFMod/Classes/Breaker_Damaged_Loop.uc
Normal file
75
kf_sources/KFMod/Classes/Breaker_Damaged_Loop.uc
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
class Breaker_Damaged_Loop extends emitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
|
||||
UseColorScale=True
|
||||
FadeOut=True
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
BlendBetweenSubdivisions=True
|
||||
UseSubdivisionScale=True
|
||||
UseRandomSubdivision=True
|
||||
Acceleration=(Z=25.000000)
|
||||
ColorScale(0)=(Color=(B=192,G=192,R=192))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=128,G=128,R=128,A=255))
|
||||
ColorScale(2)=(RelativeTime=1.000000,Color=(B=128,G=128,R=128))
|
||||
ColorMultiplierRange=(X=(Min=0.500000,Max=0.500000),Y=(Min=0.500000,Max=0.500000),Z=(Min=0.500000,Max=0.500000))
|
||||
FadeOutStartTime=0.920000
|
||||
MaxParticles=25
|
||||
Name="SpriteEmitter0"
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
StartSizeRange=(X=(Min=1.000000,Max=15.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
DrawStyle=PTDS_Brighten
|
||||
Texture=Texture'Effects_Tex_Steampunk.Muzzle_Steampunk_A'
|
||||
TextureUSubdivisions=2
|
||||
TextureVSubdivisions=2
|
||||
SubdivisionEnd=7
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=2.000000,Max=2.000000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter0'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
|
||||
UseDirectionAs=PTDU_Up
|
||||
UseCollision=True
|
||||
UseColorScale=True
|
||||
FadeOut=True
|
||||
UseRegularSizeScale=False
|
||||
ScaleSizeYByVelocity=True
|
||||
Acceleration=(Z=-500.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000),Y=(Min=0.200000),Z=(Min=0.200000,Max=0.500000))
|
||||
ColorScale(0)=(Color=(B=1,G=77,R=254))
|
||||
ColorScale(1)=(RelativeTime=0.414286,Color=(B=118,G=196,R=248,A=255))
|
||||
ColorScale(2)=(RelativeTime=1.000000,Color=(B=128,G=128,R=128,A=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000,Color=(B=131,G=196,R=226,A=255))
|
||||
ColorScale(4)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255))
|
||||
FadeOutStartTime=0.500000
|
||||
Name="SpriteEmitter1"
|
||||
DetailMode=DM_High
|
||||
UseRotationFrom=PTRS_Actor
|
||||
SizeScale(2)=(RelativeTime=0.070000,RelativeSize=1.000000)
|
||||
SizeScale(3)=(RelativeTime=1.000000,RelativeSize=1.000000)
|
||||
StartSizeRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
|
||||
ScaleSizeByVelocityMultiplier=(Y=0.020000)
|
||||
DrawStyle=PTDS_Brighten
|
||||
Texture=Texture'KFX.KFSparkHead'
|
||||
TextureUSubdivisions=1
|
||||
TextureVSubdivisions=1
|
||||
LifetimeRange=(Min=0.700000,Max=1.000000)
|
||||
StartVelocityRange=(X=(Max=100.000000),Y=(Min=-20.000000,Max=20.000000),Z=(Max=100.000000))
|
||||
End Object
|
||||
Emitters(1)=SpriteEmitter'SpriteEmitter1'
|
||||
|
||||
bDirectional=True
|
||||
}
|
||||
87
kf_sources/KFMod/Classes/Breaker_Damaged_OneOff.uc
Normal file
87
kf_sources/KFMod/Classes/Breaker_Damaged_OneOff.uc
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
class Breaker_Damaged_OneOff extends emitter;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
|
||||
UseColorScale=True
|
||||
FadeOut=True
|
||||
RespawnDeadParticles=False
|
||||
SpinParticles=True
|
||||
UseSizeScale=True
|
||||
UseRegularSizeScale=False
|
||||
UniformSize=True
|
||||
AutomaticInitialSpawning=False
|
||||
BlendBetweenSubdivisions=True
|
||||
UseSubdivisionScale=True
|
||||
UseRandomSubdivision=True
|
||||
Acceleration=(Z=25.000000)
|
||||
ColorScale(0)=(Color=(B=192,G=192,R=192))
|
||||
ColorScale(1)=(RelativeTime=1.000000,Color=(B=128,G=128,R=128,A=255))
|
||||
ColorScale(2)=(RelativeTime=1.000000,Color=(B=128,G=128,R=128))
|
||||
ColorMultiplierRange=(X=(Min=0.500000,Max=0.500000),Y=(Min=0.500000,Max=0.500000),Z=(Min=0.500000,Max=0.500000))
|
||||
FadeOutStartTime=0.920000
|
||||
Name="SpriteEmitter0"
|
||||
StartLocationShape=PTLS_Sphere
|
||||
SphereRadiusRange=(Max=1.000000)
|
||||
SpinsPerSecondRange=(X=(Max=0.070000))
|
||||
StartSpinRange=(X=(Max=1.000000))
|
||||
SizeScale(0)=(RelativeTime=1.000000,RelativeSize=2.000000)
|
||||
StartSizeRange=(X=(Min=1.000000,Max=15.000000),Y=(Min=0.000000,Max=0.000000),Z=(Min=0.000000,Max=0.000000))
|
||||
ScaleSizeByVelocityMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||
ScaleSizeByVelocityMax=0.000000
|
||||
InitialParticlesPerSecond=20.000000
|
||||
DrawStyle=PTDS_Brighten
|
||||
Texture=Texture'Effects_Tex_Steampunk.Muzzle_Steampunk_A'
|
||||
TextureUSubdivisions=2
|
||||
TextureVSubdivisions=2
|
||||
SubdivisionEnd=7
|
||||
SecondsBeforeInactive=30.000000
|
||||
LifetimeRange=(Min=2.000000,Max=2.000000)
|
||||
StartVelocityRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=2.000000,Max=25.000000))
|
||||
MaxAbsVelocity=(X=100.000000,Y=100.000000,Z=100.000000)
|
||||
End Object
|
||||
Emitters(0)=SpriteEmitter'SpriteEmitter0'
|
||||
|
||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter1
|
||||
UseDirectionAs=PTDU_Up
|
||||
UseCollision=True
|
||||
UseColorScale=True
|
||||
FadeOut=True
|
||||
RespawnDeadParticles=False
|
||||
UseRegularSizeScale=False
|
||||
ScaleSizeYByVelocity=True
|
||||
AutomaticInitialSpawning=False
|
||||
Acceleration=(Z=-500.000000)
|
||||
DampingFactorRange=(X=(Min=0.200000),Y=(Min=0.200000),Z=(Min=0.200000,Max=0.500000))
|
||||
ColorScale(0)=(Color=(B=1,G=77,R=254))
|
||||
ColorScale(1)=(RelativeTime=0.414286,Color=(B=118,G=196,R=248,A=255))
|
||||
ColorScale(2)=(RelativeTime=1.000000,Color=(B=128,G=128,R=128,A=255))
|
||||
ColorScale(3)=(RelativeTime=1.000000,Color=(B=131,G=196,R=226,A=255))
|
||||
ColorScale(4)=(RelativeTime=1.000000,Color=(B=255,G=255,R=255))
|
||||
FadeOutStartTime=0.500000
|
||||
Name="SpriteEmitter1"
|
||||
DetailMode=DM_High
|
||||
UseRotationFrom=PTRS_Actor
|
||||
SizeScale(2)=(RelativeTime=0.070000,RelativeSize=1.000000)
|
||||
SizeScale(3)=(RelativeTime=1.000000,RelativeSize=1.000000)
|
||||
StartSizeRange=(X=(Min=0.500000,Max=1.000000),Y=(Min=0.500000,Max=1.000000),Z=(Min=0.500000,Max=1.000000))
|
||||
ScaleSizeByVelocityMultiplier=(Y=0.020000)
|
||||
InitialParticlesPerSecond=100.000000
|
||||
DrawStyle=PTDS_Brighten
|
||||
Texture=Texture'KFX.KFSparkHead'
|
||||
TextureUSubdivisions=1
|
||||
TextureVSubdivisions=1
|
||||
LifetimeRange=(Min=0.700000,Max=1.000000)
|
||||
StartVelocityRange=(X=(Max=100.000000),Y=(Min=-20.000000,Max=20.000000),Z=(Max=100.000000))
|
||||
End Object
|
||||
Emitters(1)=SpriteEmitter'SpriteEmitter1'
|
||||
|
||||
AutoDestroy=True
|
||||
Style=STY_Alpha
|
||||
bDirectional=True
|
||||
bNoDelete=false
|
||||
//required because this is spawned on server during netplay.
|
||||
RemoteRole=ROLE_DumbProxy
|
||||
//make sure initial rotation is replicated
|
||||
bNetInitialRotation=true
|
||||
}
|
||||
167
kf_sources/KFMod/Classes/Bullpup.uc
Normal file
167
kf_sources/KFMod/Classes/Bullpup.uc
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
//=============================================================================
|
||||
// L85 Inventory class
|
||||
//=============================================================================
|
||||
class Bullpup extends KFWeapon
|
||||
config(user);
|
||||
|
||||
#exec OBJ LOAD FILE=KillingFloorWeapons.utx
|
||||
#exec OBJ LOAD FILE=KillingFloorHUD.utx
|
||||
#exec OBJ LOAD FILE=Inf_Weapons_Foley.uax
|
||||
|
||||
// Use alt fire to switch fire modes
|
||||
simulated function AltFire(float F)
|
||||
{
|
||||
if(ReadyToFire(0))
|
||||
{
|
||||
DoToggle();
|
||||
}
|
||||
}
|
||||
|
||||
function bool RecommendRangedAttack()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
//TODO: LONG ranged?
|
||||
function bool RecommendLongRangedAttack()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
function float SuggestAttackStyle()
|
||||
{
|
||||
return -1.0;
|
||||
}
|
||||
|
||||
exec function SwitchModes()
|
||||
{
|
||||
DoToggle();
|
||||
}
|
||||
|
||||
function float GetAIRating()
|
||||
{
|
||||
local Bot B;
|
||||
|
||||
B = Bot(Instigator.Controller);
|
||||
if ( (B == None) || (B.Enemy == None) )
|
||||
return AIRating;
|
||||
|
||||
return AIRating;
|
||||
}
|
||||
|
||||
function byte BestMode()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
simulated function SetZoomBlendColor(Canvas c)
|
||||
{
|
||||
local Byte val;
|
||||
local Color clr;
|
||||
local Color fog;
|
||||
|
||||
clr.R = 255;
|
||||
clr.G = 255;
|
||||
clr.B = 255;
|
||||
clr.A = 255;
|
||||
|
||||
if( Instigator.Region.Zone.bDistanceFog )
|
||||
{
|
||||
fog = Instigator.Region.Zone.DistanceFogColor;
|
||||
val = 0;
|
||||
val = Max( val, fog.R);
|
||||
val = Max( val, fog.G);
|
||||
val = Max( val, fog.B);
|
||||
if( val > 128 )
|
||||
{
|
||||
val -= 128;
|
||||
clr.R -= val;
|
||||
clr.G -= val;
|
||||
clr.B -= val;
|
||||
}
|
||||
}
|
||||
c.DrawColor = clr;
|
||||
}
|
||||
|
||||
simulated function AddReloadedAmmo()
|
||||
{
|
||||
super.AddReloadedAmmo();
|
||||
|
||||
ResetReloadAchievement();
|
||||
}
|
||||
|
||||
function ResetReloadAchievement()
|
||||
{
|
||||
local PlayerController PC;
|
||||
local KFSteamStatsAndAchievements KFSteamStats;
|
||||
|
||||
PC = PlayerController( Instigator.Controller );
|
||||
|
||||
if ( PC != none )
|
||||
{
|
||||
KFSteamStats = KFSteamStatsAndAchievements(PC.SteamStatsAndAchievements);
|
||||
|
||||
if ( KFSteamStats != none )
|
||||
{
|
||||
KFSteamStats.OnReloadSPTorBullpup();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
skins(0)=Combiner'KF_Weapons_Trip_T.Rifles.bullpup_cmb'
|
||||
skins(1)=Shader'KF_Weapons_Trip_T.Rifles.reflex_sight_A_unlit'
|
||||
SleeveNum=2
|
||||
|
||||
WeaponReloadAnim=Reload_BullPup
|
||||
IdleAimAnim=Idle_Iron
|
||||
|
||||
CustomCrosshair=11
|
||||
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
||||
MagCapacity=40
|
||||
ReloadRate=1.966667
|
||||
ReloadAnim="Reload"
|
||||
ReloadAnimRate=1.000000
|
||||
|
||||
Weight=6.000000
|
||||
bModeZeroCanDryFire=True
|
||||
FireModeClass(0)=Class'KFMod.BullpupFire'
|
||||
FireModeClass(1)=Class'KFMod.NoFire'
|
||||
PutDownAnim="PutDown"
|
||||
SelectSound=Sound'KF_BullpupSnd.Bullpup_Select'
|
||||
SelectForce="SwitchToAssaultRifle"
|
||||
bShowChargingBar=True
|
||||
Description="A military grade automatic rifle. Can be fired in semi-auto or full auto firemodes and comes equipped with a scope for increased accuracy."
|
||||
EffectOffset=(X=100.000000,Y=25.000000,Z=-10.000000)
|
||||
Priority=70
|
||||
InventoryGroup=3
|
||||
GroupOffset=1
|
||||
PickupClass=Class'KFMod.BullpupPickup'
|
||||
PlayerViewOffset=(X=20.000000,Y=21.500000,Z=-9.000000)
|
||||
//PlayerViewPivot=(Pitch=400)
|
||||
BobDamping=6.000000
|
||||
AttachmentClass=Class'KFMod.BullpupAttachment'
|
||||
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
||||
ItemName="Bullpup"
|
||||
Mesh=SkeletalMesh'KF_Weapons_Trip.Bullpup_Trip'
|
||||
DrawScale=1.00000
|
||||
TransientSoundVolume=1.250000
|
||||
AmbientGlow=0
|
||||
|
||||
AIRating=0.55
|
||||
CurrentRating=0.55
|
||||
|
||||
DisplayFOV=70.000000
|
||||
StandardDisplayFOV=70.0
|
||||
PlayerIronSightFOV=65
|
||||
ZoomTime=0.25
|
||||
FastZoomOutTime=0.2
|
||||
ZoomInRotation=(Pitch=-910,Yaw=0,Roll=2910)
|
||||
bHasAimingMode=true
|
||||
ZoomedDisplayFOV=40
|
||||
|
||||
HudImage=texture'KillingFloorHUD.WeaponSelect.Bullpup_unselected'
|
||||
SelectedHudImage=texture'KillingFloorHUD.WeaponSelect.Bullpup'
|
||||
TraderInfoTexture=texture'KillingFloorHud.Trader_Weapon_Images.Trader_Bullpup'
|
||||
}
|
||||
17
kf_sources/KFMod/Classes/BullpupAmmo.uc
Normal file
17
kf_sources/KFMod/Classes/BullpupAmmo.uc
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
//=============================================================================
|
||||
// L85 Ammo.
|
||||
//=============================================================================
|
||||
class BullpupAmmo extends KFAmmunition;
|
||||
|
||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
MaxAmmo=400
|
||||
InitialAmount=160
|
||||
AmmoPickupAmount=40
|
||||
PickupClass=Class'KFMod.BullpupAmmoPickup'
|
||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
||||
ItemName="Bullpup bullets"
|
||||
}
|
||||
15
kf_sources/KFMod/Classes/BullpupAmmoDM.uc
Normal file
15
kf_sources/KFMod/Classes/BullpupAmmoDM.uc
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
//=============================================================================
|
||||
// L85 Ammo.
|
||||
//=============================================================================
|
||||
class BullpupAmmoDM extends Ammunition;
|
||||
|
||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
MaxAmmo=99999
|
||||
InitialAmount=99999
|
||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
||||
ItemName="Bullpup bullets"
|
||||
}
|
||||
11
kf_sources/KFMod/Classes/BullpupAmmoPickup.uc
Normal file
11
kf_sources/KFMod/Classes/BullpupAmmoPickup.uc
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
class BullpupAmmoPickup extends KFAmmoPickup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
AmmoAmount=40
|
||||
InventoryType=Class'KFMod.BullpupAmmo'
|
||||
PickupMessage="Rounds (5.56 NATO)"
|
||||
PickupForce="AssaultAmmoPickup"
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||
}
|
||||
74
kf_sources/KFMod/Classes/BullpupAttachment.uc
Normal file
74
kf_sources/KFMod/Classes/BullpupAttachment.uc
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
class BullpupAttachment extends KFWeaponAttachment;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
mMuzFlashClass=Class'ROEffects.MuzzleFlash3rdMP'
|
||||
mTracerClass=Class'KFMod.KFNewTracer'
|
||||
mShellCaseEmitterClass=Class'KFMod.KFShellSpewer'
|
||||
bRapidFire=True
|
||||
bAltRapidFire=True
|
||||
SplashEffect=Class'BulletSplashEmitter'
|
||||
CullDistance=5000.000000
|
||||
Mesh=SkeletalMesh'KF_Weapons3rd_Trip.BullPup_3rd'
|
||||
|
||||
MovementAnims(0)=JogF_Bullpup
|
||||
MovementAnims(1)=JogB_Bullpup
|
||||
MovementAnims(2)=JogL_Bullpup
|
||||
MovementAnims(3)=JogR_Bullpup
|
||||
CrouchAnims(0)=CHwalkF_BullPup
|
||||
CrouchAnims(1)=CHwalkB_BullPup
|
||||
CrouchAnims(2)=CHwalkL_BullPup
|
||||
CrouchAnims(3)=CHwalkR_BullPup
|
||||
WalkAnims(0)=WalkF_Bullpup
|
||||
WalkAnims(1)=WalkB_Bullpup
|
||||
WalkAnims(2)=WalkL_Bullpup
|
||||
WalkAnims(3)=WalkR_Bullpup
|
||||
AirStillAnim=JumpF_Mid
|
||||
AirAnims(0)=JumpF_Mid
|
||||
AirAnims(1)=JumpF_Mid
|
||||
AirAnims(2)=JumpL_Mid
|
||||
AirAnims(3)=JumpR_Mid
|
||||
TakeoffStillAnim=JumpF_Takeoff
|
||||
TakeoffAnims(0)=JumpF_Takeoff
|
||||
TakeoffAnims(1)=JumpF_Takeoff
|
||||
TakeoffAnims(2)=JumpL_Takeoff
|
||||
TakeoffAnims(3)=JumpR_Takeoff
|
||||
LandAnims(0)=JumpF_Land
|
||||
LandAnims(1)=JumpF_Land
|
||||
LandAnims(2)=JumpL_Land
|
||||
LandAnims(3)=JumpR_Land
|
||||
|
||||
TurnRightAnim=TurnR_Bullpup
|
||||
TurnLeftAnim=TurnL_Bullpup
|
||||
CrouchTurnRightAnim=CH_TurnR_Bullpup
|
||||
CrouchTurnLeftAnim=CH_TurnL_Bullpup
|
||||
IdleRestAnim=Idle_Bullpup//Idle_Rest
|
||||
IdleCrouchAnim=CHIdle_BullPup
|
||||
IdleSwimAnim=Swim_Tread
|
||||
IdleWeaponAnim=Idle_Bullpup//Idle_Rifle
|
||||
IdleHeavyAnim=Idle_Bullpup//Idle_Biggun
|
||||
IdleRifleAnim=Idle_Bullpup//Idle_Rifle
|
||||
IdleChatAnim=Idle_Bullpup
|
||||
FireAnims(0)=Fire_Bullpup
|
||||
FireAnims(1)=Fire_Bullpup
|
||||
FireAnims(2)=Fire_Bullpup
|
||||
FireAnims(3)=Fire_Bullpup
|
||||
FireAltAnims(0)=Fire_Bullpup
|
||||
FireAltAnims(1)=Fire_Bullpup
|
||||
FireAltAnims(2)=Fire_Bullpup
|
||||
FireAltAnims(3)=Fire_Bullpup
|
||||
FireCrouchAnims(0)=CHFire_BullPup
|
||||
FireCrouchAnims(1)=CHFire_BullPup
|
||||
FireCrouchAnims(2)=CHFire_BullPup
|
||||
FireCrouchAnims(3)=CHFire_BullPup
|
||||
FireCrouchAltAnims(0)=CHFire_BullPup
|
||||
FireCrouchAltAnims(1)=CHFire_BullPup
|
||||
FireCrouchAltAnims(2)=CHFire_BullPup
|
||||
FireCrouchAltAnims(3)=CHFire_BullPup
|
||||
HitAnims(0)=HitF_Bullpup
|
||||
HitAnims(1)=HitB_Bullpup
|
||||
HitAnims(2)=HitL_Bullpup
|
||||
HitAnims(3)=HitR_Bullpup
|
||||
PostFireBlendStandAnim=Blend_Bullpup
|
||||
PostFireBlendCrouchAnim=CHBlend_Bullpup
|
||||
}
|
||||
58
kf_sources/KFMod/Classes/BullpupBurstFire.uc
Normal file
58
kf_sources/KFMod/Classes/BullpupBurstFire.uc
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
//
|
||||
//=============================================================================
|
||||
class BullpupBurstFire extends BullpupFire;
|
||||
|
||||
var() int BurstLength; //How many bullets to fire in one burst
|
||||
var() float BurstRate; //Time between shots (should be smaller than FireRate).
|
||||
var bool bBursting;
|
||||
var int RoundsToFire;
|
||||
|
||||
event ModeDoFire()
|
||||
{
|
||||
if(bBursting && RoundsToFire > 0)
|
||||
RoundsToFire--;
|
||||
|
||||
//If not already firing, start a burst.
|
||||
if(!bBursting && AllowFire())
|
||||
{
|
||||
bBursting = true;
|
||||
RoundsToFire = BurstLength;
|
||||
SetTimer(BurstRate, true);
|
||||
}
|
||||
if(RoundsToFire < 1)
|
||||
{
|
||||
SetTimer(0, false);
|
||||
RoundsToFire = 0;
|
||||
bBursting = false;
|
||||
return;
|
||||
}
|
||||
Super.ModeDoFire();
|
||||
}
|
||||
|
||||
|
||||
simulated function Timer()
|
||||
{
|
||||
if(bBursting)
|
||||
ModeDoFire();
|
||||
else SetTimer(0,false);
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
BurstLength=4
|
||||
BurstRate=0.1
|
||||
DamageMin=16
|
||||
DamageMax=26
|
||||
Momentum=10000.000000
|
||||
// bWaitForRelease=True
|
||||
TransientSoundVolume=1.8
|
||||
FireEndAnim=
|
||||
FireRate=0.5
|
||||
RecoilRate=0.07
|
||||
ShakeRotMag=(X=20.000000,Y=150.000000,Z=20.000000)
|
||||
ShakeOffsetMag=(X=1.000000,Y=1.000000,Z=1.000000)
|
||||
BotRefireRate=1.000000
|
||||
aimerror=50.000000
|
||||
|
||||
|
||||
}
|
||||
9
kf_sources/KFMod/Classes/BullpupDM.uc
Normal file
9
kf_sources/KFMod/Classes/BullpupDM.uc
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
//=============================================================================
|
||||
// L85 DM VERSION Inventory class
|
||||
//=============================================================================
|
||||
class BullpupDM extends Bullpup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
FireModeClass(0)=Class'KFMod.BullpupBurstFire'
|
||||
}
|
||||
45
kf_sources/KFMod/Classes/BullpupFire.uc
Normal file
45
kf_sources/KFMod/Classes/BullpupFire.uc
Normal file
|
|
@ -0,0 +1,45 @@
|
|||
//=============================================================================
|
||||
//L85 Fire
|
||||
//=============================================================================
|
||||
class BullpupFire extends KFFire;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
FireAimedAnim=Fire_Iron
|
||||
FireSound=Sound'KF_BullpupSnd.Bullpup_Fire'
|
||||
StereoFireSoundRef="KF_BullpupSnd.Bullpup_FireST"
|
||||
NoAmmoSound=Sound'KF_9MMSnd.9mm_DryFire'
|
||||
DamageType=Class'KFMod.DamTypeBullpup'
|
||||
DamageMin=16
|
||||
DamageMax=26
|
||||
Momentum=8500.000000
|
||||
bPawnRapidFireAnim=True
|
||||
TransientSoundVolume=1.8
|
||||
FireLoopAnim="Fire"
|
||||
FireForce="AssaultRifleFire"
|
||||
FireRate=0.100000
|
||||
RecoilRate=0.07
|
||||
maxVerticalRecoilAngle=200
|
||||
maxHorizontalRecoilAngle=75
|
||||
TweenTime=0.025
|
||||
bAccuracyBonusForSemiAuto=true
|
||||
|
||||
AmmoClass=Class'KFMod.BullpupAmmo'
|
||||
AmmoPerFire=1
|
||||
BotRefireRate=0.990000
|
||||
FlashEmitterClass=Class'ROEffects.MuzzleFlash1stSTG'
|
||||
aimerror=42.000000
|
||||
Spread=0.0085
|
||||
SpreadStyle=SS_Random
|
||||
|
||||
//** View shake **//
|
||||
ShakeOffsetMag=(X=6.0,Y=3.0,Z=10.0)
|
||||
ShakeOffsetRate=(X=1000.0,Y=1000.0,Z=1000.0)
|
||||
ShakeOffsetTime=1.0
|
||||
ShakeRotMag=(X=75.0,Y=75.0,Z=250.0)
|
||||
ShakeRotRate=(X=10000.0,Y=10000.0,Z=10000.0)
|
||||
ShakeRotTime=0.5
|
||||
|
||||
ShellEjectClass=class'ROEffects.KFShellEjectBullpup'
|
||||
ShellEjectBoneName=Bullpup
|
||||
}
|
||||
15
kf_sources/KFMod/Classes/BullpupFireSP.uc
Normal file
15
kf_sources/KFMod/Classes/BullpupFireSP.uc
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
//=============================================================================
|
||||
//L85 Fire
|
||||
//=============================================================================
|
||||
class BullpupFireSP extends BullpupFire;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
DamageMin=20
|
||||
DamageMax=30
|
||||
|
||||
Momentum=8500.000000
|
||||
aimerror=5.000000
|
||||
SpreadStyle=SS_None
|
||||
Spread=0 //0.020
|
||||
}
|
||||
13
kf_sources/KFMod/Classes/BullpupMuzzFlash.uc
Normal file
13
kf_sources/KFMod/Classes/BullpupMuzzFlash.uc
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
class BullpupMuzzFlash extends FlakMuzFlash1st;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
mLifeRange(1)=0.100000
|
||||
mRandOrient=True
|
||||
mSizeRange(1)=0.050000
|
||||
mGrowthRate=8.000000
|
||||
mTileAnimation=True
|
||||
mMeshNodes(0)=none//StaticMesh'XEffects.MinigunMuzFlash1stMesh' KFTODO: Replace this texture
|
||||
DrawScale=0.900000
|
||||
Skins(0)=none//FinalBlend'XGameShaders.WeaponShaders.MinigunMuzFlash1stFinal' KFTODO: Replace this texture
|
||||
}
|
||||
40
kf_sources/KFMod/Classes/BullpupPickup.uc
Normal file
40
kf_sources/KFMod/Classes/BullpupPickup.uc
Normal file
|
|
@ -0,0 +1,40 @@
|
|||
//=============================================================================
|
||||
// L85 Pickup.
|
||||
//=============================================================================
|
||||
class BullpupPickup extends KFWeaponPickup;
|
||||
|
||||
/*
|
||||
simulated function RenderPickupImage(Canvas C)
|
||||
{
|
||||
C.SetPos((C.SizeX - C.SizeY) / 2,0);
|
||||
C.DrawTile( Texture'KillingfloorHUD.ClassMenu.L85', C.SizeY, C.SizeY, 0.0, 0.0, 256, 256);
|
||||
|
||||
}
|
||||
*/
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
Weight=6.000000
|
||||
cost=400
|
||||
AmmoCost=10
|
||||
BuyClipSize=40
|
||||
PowerValue=24
|
||||
SpeedValue=90
|
||||
RangeValue=60
|
||||
Description="Standard issue military rifle. Equipped with an integrated 2X scope."
|
||||
ItemName="Bullpup"
|
||||
ItemShortName="Bullpup"
|
||||
AmmoItemName="5.56 NATO Ammo"
|
||||
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||
InventoryType=Class'KFMod.Bullpup'
|
||||
PickupMessage="You got the Bullpup"
|
||||
PickupForce="AssaultRiflePickup"
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=StaticMesh'KF_pickups_Trip.Bullpup_Pickup'
|
||||
DrawScale=1.000000
|
||||
CollisionRadius=25.000000
|
||||
CollisionHeight=5.000000
|
||||
PickupSound=Sound'KF_BullpupSnd.Bullpup_Pickup'
|
||||
EquipmentCategoryID=2
|
||||
CorrespondingPerkIndex=3
|
||||
}
|
||||
7
kf_sources/KFMod/Classes/BullpupSP.uc
Normal file
7
kf_sources/KFMod/Classes/BullpupSP.uc
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
//Long range Bullpup for use in the Single player mission...
|
||||
class BullpupSP extends Bullpup;
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
FireModeClass(0)=Class'KFMod.BullpupFireSP'
|
||||
}
|
||||
151
kf_sources/KFMod/Classes/BullpupSuperAmmoPickup.uc
Normal file
151
kf_sources/KFMod/Classes/BullpupSuperAmmoPickup.uc
Normal file
|
|
@ -0,0 +1,151 @@
|
|||
class BullpupSuperAmmoPickup extends KFAmmoPickup;
|
||||
|
||||
simulated Function PostNetBeginPlay()
|
||||
{
|
||||
SetTimer(0.3, False);
|
||||
}
|
||||
|
||||
simulated Function Timer()
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
auto state Pickup
|
||||
{
|
||||
function bool ReadyToPickup(float MaxWait)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/* ValidTouch()
|
||||
Validate touch (if valid return true to let other pick me up and trigger event).
|
||||
*/
|
||||
function bool ValidTouch( actor Other )
|
||||
{
|
||||
// make sure its a live player
|
||||
if ( (Pawn(Other) == None) || !Pawn(Other).bCanPickupInventory || (Pawn(Other).DrivenVehicle == None && Pawn(Other).Controller == None) )
|
||||
return false;
|
||||
|
||||
// make sure not touching through wall
|
||||
if ( !FastTrace(Other.Location, Location) )
|
||||
return false;
|
||||
|
||||
// make sure game will let player pick me up
|
||||
if( Level.Game.PickupQuery(Pawn(Other), self) )
|
||||
{
|
||||
TriggerEvent(Event, self, Pawn(Other));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// When touched by an actor.
|
||||
function Touch( actor Other )
|
||||
{
|
||||
local Inventory Copy;
|
||||
|
||||
// If touched by a player pawn, let him pick this up.
|
||||
if( ValidTouch(Other) )
|
||||
{
|
||||
Copy = SpawnCopy(Pawn(Other));
|
||||
AnnouncePickup(Pawn(Other));
|
||||
SetRespawn();
|
||||
if ( Copy != None )
|
||||
Copy.PickupFunction(Pawn(Other));
|
||||
}
|
||||
else destroy();
|
||||
}
|
||||
|
||||
// Make sure no pawn already touching (while touch was disabled in sleep).
|
||||
function CheckTouching()
|
||||
{
|
||||
local Pawn P;
|
||||
|
||||
ForEach TouchingActors(class'Pawn', P)
|
||||
Touch(P);
|
||||
}
|
||||
|
||||
function Timer()
|
||||
{
|
||||
if ( bDropped )
|
||||
GotoState('FadeOut');
|
||||
}
|
||||
|
||||
function BeginState()
|
||||
{
|
||||
UntriggerEvent(Event, self, None);
|
||||
if ( bDropped )
|
||||
{
|
||||
AddToNavigation();
|
||||
SetTimer(8, false);
|
||||
}
|
||||
}
|
||||
|
||||
function EndState()
|
||||
{
|
||||
if ( bDropped )
|
||||
RemoveFromNavigation();
|
||||
}
|
||||
|
||||
Begin:
|
||||
CheckTouching();
|
||||
}
|
||||
|
||||
|
||||
State Sleeping
|
||||
{
|
||||
ignores Touch;
|
||||
|
||||
function bool ReadyToPickup(float MaxWait)
|
||||
{
|
||||
return ( bPredictRespawns && (LatentFloat < MaxWait) );
|
||||
}
|
||||
|
||||
function StartSleeping() {}
|
||||
|
||||
function BeginState()
|
||||
{
|
||||
Destroy();
|
||||
}
|
||||
|
||||
function EndState()
|
||||
{
|
||||
NetUpdateTime = Level.TimeSeconds - 1;
|
||||
bHidden = false;
|
||||
}
|
||||
|
||||
DelayedSpawn:
|
||||
if ( Level.NetMode == NM_Standalone )
|
||||
Sleep(FMin(30, Level.Game.GameDifficulty * 8));
|
||||
else Sleep(30);
|
||||
Goto('Respawn');
|
||||
Begin:
|
||||
Sleep( GetReSpawnTime() - RespawnEffectTime );
|
||||
Respawn:
|
||||
for ( OtherPlayer=Level.ControllerList; OtherPlayer!=None; OtherPlayer=OtherPlayer.NextController)
|
||||
{
|
||||
if (OtherPlayer.pawn != none)
|
||||
{
|
||||
if(!FastTrace(self.Location,OtherPlayer.Pawn.Location))
|
||||
{
|
||||
RespawnEffect();
|
||||
Sleep(RespawnEffectTime);
|
||||
if (PickUpBase != None)
|
||||
PickUpBase.TurnOn();
|
||||
GotoState('Pickup');
|
||||
}
|
||||
else Sleep(rand(5) + 5); // Crafty randomization...you'll never know when the next respawn attempt will be ! (5-10 seconds)
|
||||
Goto('Respawn');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
AmmoAmount=500
|
||||
InventoryType=Class'KFMod.BullpupAmmo'
|
||||
PickupMessage=""
|
||||
PickupForce="AssaultAmmoPickup"
|
||||
DrawType=DT_StaticMesh
|
||||
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||
}
|
||||
17
kf_sources/KFMod/Classes/BullpupSwitchMessage.uc
Normal file
17
kf_sources/KFMod/Classes/BullpupSwitchMessage.uc
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
class BullpupSwitchMessage extends CriticalEventPlus;
|
||||
|
||||
var() localized string SwitchMessage[10];
|
||||
|
||||
static function string GetString (optional int Switch, optional PlayerReplicationInfo RelatedPRI_1, optional PlayerReplicationInfo RelatedPRI_2, optional Object OptionalObject)
|
||||
{
|
||||
if ( (Switch >= 0) && (Switch <= 9) )
|
||||
return Default.SwitchMessage[Switch];
|
||||
}
|
||||
|
||||
defaultproperties
|
||||
{
|
||||
SwitchMessage(0)="Set to Semi-Automatic."
|
||||
SwitchMessage(1)="Set to Fully Automatic."
|
||||
DrawColor=(B=0,G=0,R=220)
|
||||
FontSize=-2
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue