Fix new line symbol issues
This commit is contained in:
parent
51bb9add5b
commit
d66d86b2b1
@ -1,4 +1,8 @@
|
|||||||
class NiceBlockHitEmitter extends MetalHitEmitter;
|
class NiceBlockHitEmitter extends MetalHitEmitter;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
ImpactSounds(0)=None
ImpactSounds(1)=None
ImpactSounds(2)=None
RemoteRole=ROLE_SimulatedProxy
|
{
|
||||||
|
ImpactSounds(0)=None
|
||||||
|
ImpactSounds(1)=None
|
||||||
|
ImpactSounds(2)=None
|
||||||
|
RemoteRole=ROLE_SimulatedProxy
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
// ScrN copy
|
// ScrN copy
|
||||||
class NiceFreezeParticlesBase extends Emitter;
|
class NiceFreezeParticlesBase extends Emitter;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
bNoDelete=False
|
{
|
||||||
|
bNoDelete=False
|
||||||
}
|
}
|
||||||
|
@ -4,5 +4,8 @@ simulated function Trigger(Actor other, Pawn eventInstigator){
|
|||||||
emitters[0].SpawnParticle(1);
|
emitters[0].SpawnParticle(1);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
Style=STY_Additive
bHardAttach=True
bDirectional=True
|
{
|
||||||
|
Style=STY_Additive
|
||||||
|
bHardAttach=True
|
||||||
|
bDirectional=True
|
||||||
}
|
}
|
||||||
|
@ -6,16 +6,343 @@ simulated function PostBeginPlay(){
|
|||||||
}
|
}
|
||||||
// NICETODO: change linksfrom HTeac_A to NicePackSM (and change that file)
|
// NICETODO: change linksfrom HTeac_A to NicePackSM (and change that file)
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
ImpactSounds(0)=Sound'KFWeaponSound.bullethitglass'
ImpactSounds(1)=Sound'KFWeaponSound.bullethitglass2'
Begin Object Class=MeshEmitter Name=MeshEmitter0
StaticMesh=StaticMesh'HTec_A.IceChunk1'
UseCollision=True
RespawnDeadParticles=False
SpinParticles=True
DampRotation=True
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-1000.000000)
DampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
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=5
SpinsPerSecondRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(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))
RotationDampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
StartSizeRange=(X=(Min=5.000000,Max=8.000000),Y=(Min=5.000000,Max=8.000000),Z=(Min=5.000000,Max=8.000000))
InitialParticlesPerSecond=10000.000000
StartVelocityRange=(X=(Min=-75.000000,Max=75.000000),Y=(Min=-75.000000,Max=75.000000),Z=(Min=-100.000000,Max=300.000000))
End Object
Emitters(0)=MeshEmitter'NicePack.NiceIceChunkEmitter.MeshEmitter0'
|
{
|
||||||
Begin Object Class=MeshEmitter Name=MeshEmitter2
StaticMesh=StaticMesh'HTec_A.IceChunk2'
UseCollision=True
RespawnDeadParticles=False
SpinParticles=True
DampRotation=True
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-1000.000000)
DampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
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=8
DetailMode=DM_High
SpinsPerSecondRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(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))
RotationDampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
StartSizeRange=(X=(Min=3.000000,Max=6.000000),Y=(Min=3.000000,Max=6.000000),Z=(Min=3.000000,Max=6.000000))
InitialParticlesPerSecond=10000.000000
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=-100.000000,Max=500.000000))
End Object
Emitters(1)=MeshEmitter'NicePack.NiceIceChunkEmitter.MeshEmitter2'
|
ImpactSounds(0)=Sound'KFWeaponSound.bullethitglass'
|
||||||
Begin Object Class=MeshEmitter Name=MeshEmitter3
StaticMesh=StaticMesh'HTec_A.IceChunk3'
UseCollision=True
RespawnDeadParticles=False
SpinParticles=True
DampRotation=True
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-1000.000000)
DampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
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=12
DetailMode=DM_High
SpinsPerSecondRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(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))
RotationDampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
StartSizeRange=(X=(Min=2.000000,Max=5.000000),Y=(Min=2.000000,Max=5.000000),Z=(Min=2.000000,Max=5.000000))
InitialParticlesPerSecond=10000.000000
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=-100.000000,Max=500.000000))
End Object
Emitters(2)=MeshEmitter'NicePack.NiceIceChunkEmitter.MeshEmitter3'
|
ImpactSounds(1)=Sound'KFWeaponSound.bullethitglass2'
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter8
UseCollision=True
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
UniformSize=True
AutomaticInitialSpawning=False
UseRandomSubdivision=True
Acceleration=(Z=-1000.000000)
ExtentMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
DampingFactorRange=(X=(Min=0.250000,Max=0.250000),Y=(Min=0.250000,Max=0.250000),Z=(Min=0.250000,Max=0.250000))
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.500000
MaxParticles=55
DetailMode=DM_SuperHigh
UseRotationFrom=PTRS_Actor
StartSizeRange=(X=(Min=0.700000,Max=1.700000))
InitialParticlesPerSecond=10000.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'Effects_Tex.BulletHits.snowchunksfinal'
TextureUSubdivisions=2
TextureVSubdivisions=2
LifetimeRange=(Min=1.400000,Max=1.400000)
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=-300.000000,Max=350.000000))
End Object
Emitters(3)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter8'
|
Begin Object Class=MeshEmitter Name=MeshEmitter0
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter9
ProjectionNormal=(Y=1.000000,Z=0.000000)
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-1000.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))
Opacity=0.500000
FadeOutStartTime=0.442500
FadeInEndTime=0.007500
MaxParticles=25
DetailMode=DM_High
UseRotationFrom=PTRS_Actor
SpinCCWorCW=(X=0.000000)
SpinsPerSecondRange=(X=(Max=0.300000))
StartSpinRange=(X=(Min=-0.300000,Max=0.300000))
SizeScale(0)=(RelativeSize=0.400000)
SizeScale(1)=(RelativeTime=0.500000,RelativeSize=0.700000)
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=1.300000)
StartSizeRange=(X=(Min=20.000000,Max=40.000000),Y=(Min=20.000000,Max=40.000000),Z=(Min=20.000000,Max=40.000000))
InitialParticlesPerSecond=10000.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'Effects_Tex.BulletHits.watersplatter2'
TextureUSubdivisions=2
TextureVSubdivisions=2
LifetimeRange=(Min=0.750000,Max=0.750000)
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=-25.000000,Max=300.000000))
End Object
Emitters(4)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter9'
|
StaticMesh=StaticMesh'HTec_A.IceChunk1'
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter10
ProjectionNormal=(Y=1.000000,Z=0.000000)
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
Acceleration=(Z=-15.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))
Opacity=0.250000
FadeOutStartTime=0.175000
MaxParticles=5
StartLocationRange=(X=(Min=10.000000,Max=10.000000))
AddLocationFromOtherEmitter=0
UseRotationFrom=PTRS_Actor
SpinCCWorCW=(X=0.000000)
SpinsPerSecondRange=(X=(Max=0.200000))
StartSpinRange=(X=(Min=-0.300000,Max=0.300000))
SizeScale(0)=(RelativeSize=0.400000)
SizeScale(1)=(RelativeTime=0.560000,RelativeSize=1.000000)
StartSizeRange=(X=(Min=6.000000,Max=60.000000),Y=(Min=6.000000,Max=60.000000),Z=(Min=6.000000,Max=60.000000))
InitialParticlesPerSecond=1.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'kf_fx_trip_t.Misc.smoke_animated'
TextureUSubdivisions=8
TextureVSubdivisions=8
LifetimeRange=(Min=0.350000,Max=0.350000)
End Object
Emitters(5)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter10'
|
UseCollision=True
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter11
ProjectionNormal=(Y=1.000000,Z=0.000000)
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
Acceleration=(Z=-15.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))
Opacity=0.250000
FadeOutStartTime=0.175000
MaxParticles=8
StartLocationRange=(X=(Min=10.000000,Max=10.000000))
AddLocationFromOtherEmitter=1
UseRotationFrom=PTRS_Actor
SpinCCWorCW=(X=0.000000)
SpinsPerSecondRange=(X=(Max=0.200000))
StartSpinRange=(X=(Min=-0.300000,Max=0.300000))
SizeScale(0)=(RelativeSize=0.400000)
SizeScale(1)=(RelativeTime=0.560000,RelativeSize=1.000000)
StartSizeRange=(X=(Min=6.000000,Max=60.000000),Y=(Min=6.000000,Max=60.000000),Z=(Min=6.000000,Max=60.000000))
InitialParticlesPerSecond=1.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'kf_fx_trip_t.Misc.smoke_animated'
TextureUSubdivisions=8
TextureVSubdivisions=8
LifetimeRange=(Min=0.350000,Max=0.350000)
End Object
Emitters(6)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter11'
|
RespawnDeadParticles=False
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter12
ProjectionNormal=(Y=1.000000,Z=0.000000)
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
Acceleration=(Z=-15.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))
Opacity=0.250000
FadeOutStartTime=0.175000
MaxParticles=12
DetailMode=DM_High
StartLocationRange=(X=(Min=10.000000,Max=10.000000))
AddLocationFromOtherEmitter=2
UseRotationFrom=PTRS_Actor
SpinCCWorCW=(X=0.000000)
SpinsPerSecondRange=(X=(Max=0.200000))
StartSpinRange=(X=(Min=-0.300000,Max=0.300000))
SizeScale(0)=(RelativeSize=0.400000)
SizeScale(1)=(RelativeTime=0.560000,RelativeSize=1.000000)
StartSizeRange=(X=(Min=6.000000,Max=60.000000),Y=(Min=6.000000,Max=60.000000),Z=(Min=6.000000,Max=60.000000))
InitialParticlesPerSecond=1.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'kf_fx_trip_t.Misc.smoke_animated'
TextureUSubdivisions=8
TextureVSubdivisions=8
LifetimeRange=(Min=0.350000,Max=0.350000)
End Object
Emitters(7)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter12'
|
SpinParticles=True
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter13
ProjectionNormal=(Y=1.000000,Z=0.000000)
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-1000.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))
Opacity=0.250000
FadeOutStartTime=0.442500
FadeInEndTime=0.007500
MaxParticles=12
StartLocationRange=(X=(Min=20.000000,Max=20.000000))
UseRotationFrom=PTRS_Actor
SpinCCWorCW=(X=0.000000)
SpinsPerSecondRange=(X=(Max=0.300000))
StartSpinRange=(X=(Min=-0.300000,Max=0.300000))
SizeScale(0)=(RelativeSize=0.400000)
SizeScale(1)=(RelativeTime=0.500000,RelativeSize=0.900000)
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=1.300000)
StartSizeRange=(X=(Min=25.000000,Max=45.000000),Y=(Min=25.000000,Max=45.000000),Z=(Min=25.000000,Max=45.000000))
InitialParticlesPerSecond=10000.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'Effects_Tex.BulletHits.watersplashcloud'
TextureUSubdivisions=1
TextureVSubdivisions=1
LifetimeRange=(Min=0.750000,Max=0.750000)
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=-5.000000,Max=150.000000))
End Object
Emitters(8)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter13'
|
DampRotation=True
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter14
ProjectionNormal=(Y=1.000000,Z=0.000000)
FadeOut=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
Acceleration=(Z=-22.000000)
DampingFactorRange=(X=(Min=0.250000,Max=0.250000),Y=(Min=0.250000,Max=0.250000),Z=(Min=0.250000,Max=0.250000))
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))
Opacity=0.500000
FadeOutStartTime=2.720000
MaxParticles=25
DetailMode=DM_High
StartLocationRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=-10.000000,Max=10.000000))
UseRotationFrom=PTRS_Actor
SpinCCWorCW=(X=0.000000)
SpinsPerSecondRange=(X=(Max=0.150000))
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
SizeScale(0)=(RelativeSize=2.200000)
SizeScale(1)=(RelativeTime=0.500000,RelativeSize=3.200000)
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=4.000000)
StartSizeRange=(X=(Min=1.000000,Max=20.000000),Y=(Min=1.000000,Max=20.000000),Z=(Min=1.000000,Max=20.000000))
InitialParticlesPerSecond=10000.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'Effects_Tex.explosions.DSmoke_2'
TextureUSubdivisions=1
TextureVSubdivisions=1
StartVelocityRange=(X=(Min=-350.000000,Max=350.000000),Y=(Min=-350.000000,Max=350.000000),Z=(Min=-5.000000,Max=50.000000))
VelocityLossRange=(X=(Min=3.000000,Max=3.000000),Y=(Min=3.000000,Max=3.000000))
End Object
Emitters(9)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter14'
|
UniformSize=True
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter15
UseCollision=True
UseColorScale=True
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
UniformSize=True
AutomaticInitialSpawning=False
UseRandomSubdivision=True
Acceleration=(Z=-1000.000000)
ExtentMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
DampingFactorRange=(X=(Min=0.250000,Max=0.250000),Y=(Min=0.250000,Max=0.250000),Z=(Min=0.250000,Max=0.250000))
ColorScale(0)=(Color=(B=174,G=174,R=205,A=255))
ColorScale(1)=(RelativeTime=1.000000,Color=(B=174,G=174,R=205,A=255))
FadeOutStartTime=0.500000
MaxParticles=15
UseRotationFrom=PTRS_Actor
StartSizeRange=(X=(Min=0.700000,Max=1.700000))
InitialParticlesPerSecond=10000.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'Effects_Tex.BulletHits.snowchunksfinal'
TextureUSubdivisions=2
TextureVSubdivisions=2
LifetimeRange=(Min=1.400000,Max=1.400000)
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=-300.000000,Max=350.000000))
End Object
Emitters(10)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter15'
|
AutomaticInitialSpawning=False
|
||||||
AutoDestroy=True
bNoDelete=False
bNetTemporary=True
RemoteRole=ROLE_SimulatedProxy
LifeSpan=5.000000
TransientSoundVolume=150.000000
TransientSoundRadius=80.000000
|
Acceleration=(Z=-1000.000000)
|
||||||
|
DampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
|
||||||
|
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=5
|
||||||
|
SpinsPerSecondRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(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))
|
||||||
|
RotationDampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
|
||||||
|
StartSizeRange=(X=(Min=5.000000,Max=8.000000),Y=(Min=5.000000,Max=8.000000),Z=(Min=5.000000,Max=8.000000))
|
||||||
|
InitialParticlesPerSecond=10000.000000
|
||||||
|
StartVelocityRange=(X=(Min=-75.000000,Max=75.000000),Y=(Min=-75.000000,Max=75.000000),Z=(Min=-100.000000,Max=300.000000))
|
||||||
|
End Object
|
||||||
|
Emitters(0)=MeshEmitter'NicePack.NiceIceChunkEmitter.MeshEmitter0'
|
||||||
|
|
||||||
|
Begin Object Class=MeshEmitter Name=MeshEmitter2
|
||||||
|
StaticMesh=StaticMesh'HTec_A.IceChunk2'
|
||||||
|
UseCollision=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
SpinParticles=True
|
||||||
|
DampRotation=True
|
||||||
|
UniformSize=True
|
||||||
|
AutomaticInitialSpawning=False
|
||||||
|
Acceleration=(Z=-1000.000000)
|
||||||
|
DampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
|
||||||
|
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=8
|
||||||
|
DetailMode=DM_High
|
||||||
|
SpinsPerSecondRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(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))
|
||||||
|
RotationDampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
|
||||||
|
StartSizeRange=(X=(Min=3.000000,Max=6.000000),Y=(Min=3.000000,Max=6.000000),Z=(Min=3.000000,Max=6.000000))
|
||||||
|
InitialParticlesPerSecond=10000.000000
|
||||||
|
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=-100.000000,Max=500.000000))
|
||||||
|
End Object
|
||||||
|
Emitters(1)=MeshEmitter'NicePack.NiceIceChunkEmitter.MeshEmitter2'
|
||||||
|
|
||||||
|
Begin Object Class=MeshEmitter Name=MeshEmitter3
|
||||||
|
StaticMesh=StaticMesh'HTec_A.IceChunk3'
|
||||||
|
UseCollision=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
SpinParticles=True
|
||||||
|
DampRotation=True
|
||||||
|
UniformSize=True
|
||||||
|
AutomaticInitialSpawning=False
|
||||||
|
Acceleration=(Z=-1000.000000)
|
||||||
|
DampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
|
||||||
|
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=12
|
||||||
|
DetailMode=DM_High
|
||||||
|
SpinsPerSecondRange=(X=(Max=1.000000),Y=(Max=1.000000),Z=(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))
|
||||||
|
RotationDampingFactorRange=(X=(Min=0.200000,Max=0.200000),Y=(Min=0.200000,Max=0.200000),Z=(Min=0.200000,Max=0.200000))
|
||||||
|
StartSizeRange=(X=(Min=2.000000,Max=5.000000),Y=(Min=2.000000,Max=5.000000),Z=(Min=2.000000,Max=5.000000))
|
||||||
|
InitialParticlesPerSecond=10000.000000
|
||||||
|
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=-100.000000,Max=500.000000))
|
||||||
|
End Object
|
||||||
|
Emitters(2)=MeshEmitter'NicePack.NiceIceChunkEmitter.MeshEmitter3'
|
||||||
|
|
||||||
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter8
|
||||||
|
UseCollision=True
|
||||||
|
FadeOut=True
|
||||||
|
FadeIn=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
UniformSize=True
|
||||||
|
AutomaticInitialSpawning=False
|
||||||
|
UseRandomSubdivision=True
|
||||||
|
Acceleration=(Z=-1000.000000)
|
||||||
|
ExtentMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||||
|
DampingFactorRange=(X=(Min=0.250000,Max=0.250000),Y=(Min=0.250000,Max=0.250000),Z=(Min=0.250000,Max=0.250000))
|
||||||
|
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.500000
|
||||||
|
MaxParticles=55
|
||||||
|
DetailMode=DM_SuperHigh
|
||||||
|
UseRotationFrom=PTRS_Actor
|
||||||
|
StartSizeRange=(X=(Min=0.700000,Max=1.700000))
|
||||||
|
InitialParticlesPerSecond=10000.000000
|
||||||
|
DrawStyle=PTDS_AlphaBlend
|
||||||
|
Texture=Texture'Effects_Tex.BulletHits.snowchunksfinal'
|
||||||
|
TextureUSubdivisions=2
|
||||||
|
TextureVSubdivisions=2
|
||||||
|
LifetimeRange=(Min=1.400000,Max=1.400000)
|
||||||
|
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=-300.000000,Max=350.000000))
|
||||||
|
End Object
|
||||||
|
Emitters(3)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter8'
|
||||||
|
|
||||||
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter9
|
||||||
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
|
FadeOut=True
|
||||||
|
FadeIn=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
SpinParticles=True
|
||||||
|
UseSizeScale=True
|
||||||
|
UseRegularSizeScale=False
|
||||||
|
UniformSize=True
|
||||||
|
AutomaticInitialSpawning=False
|
||||||
|
Acceleration=(Z=-1000.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))
|
||||||
|
Opacity=0.500000
|
||||||
|
FadeOutStartTime=0.442500
|
||||||
|
FadeInEndTime=0.007500
|
||||||
|
MaxParticles=25
|
||||||
|
DetailMode=DM_High
|
||||||
|
UseRotationFrom=PTRS_Actor
|
||||||
|
SpinCCWorCW=(X=0.000000)
|
||||||
|
SpinsPerSecondRange=(X=(Max=0.300000))
|
||||||
|
StartSpinRange=(X=(Min=-0.300000,Max=0.300000))
|
||||||
|
SizeScale(0)=(RelativeSize=0.400000)
|
||||||
|
SizeScale(1)=(RelativeTime=0.500000,RelativeSize=0.700000)
|
||||||
|
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=1.300000)
|
||||||
|
StartSizeRange=(X=(Min=20.000000,Max=40.000000),Y=(Min=20.000000,Max=40.000000),Z=(Min=20.000000,Max=40.000000))
|
||||||
|
InitialParticlesPerSecond=10000.000000
|
||||||
|
DrawStyle=PTDS_AlphaBlend
|
||||||
|
Texture=Texture'Effects_Tex.BulletHits.watersplatter2'
|
||||||
|
TextureUSubdivisions=2
|
||||||
|
TextureVSubdivisions=2
|
||||||
|
LifetimeRange=(Min=0.750000,Max=0.750000)
|
||||||
|
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=-25.000000,Max=300.000000))
|
||||||
|
End Object
|
||||||
|
Emitters(4)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter9'
|
||||||
|
|
||||||
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter10
|
||||||
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
|
FadeOut=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
SpinParticles=True
|
||||||
|
UseSizeScale=True
|
||||||
|
UseRegularSizeScale=False
|
||||||
|
UniformSize=True
|
||||||
|
Acceleration=(Z=-15.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))
|
||||||
|
Opacity=0.250000
|
||||||
|
FadeOutStartTime=0.175000
|
||||||
|
MaxParticles=5
|
||||||
|
StartLocationRange=(X=(Min=10.000000,Max=10.000000))
|
||||||
|
AddLocationFromOtherEmitter=0
|
||||||
|
UseRotationFrom=PTRS_Actor
|
||||||
|
SpinCCWorCW=(X=0.000000)
|
||||||
|
SpinsPerSecondRange=(X=(Max=0.200000))
|
||||||
|
StartSpinRange=(X=(Min=-0.300000,Max=0.300000))
|
||||||
|
SizeScale(0)=(RelativeSize=0.400000)
|
||||||
|
SizeScale(1)=(RelativeTime=0.560000,RelativeSize=1.000000)
|
||||||
|
StartSizeRange=(X=(Min=6.000000,Max=60.000000),Y=(Min=6.000000,Max=60.000000),Z=(Min=6.000000,Max=60.000000))
|
||||||
|
InitialParticlesPerSecond=1.000000
|
||||||
|
DrawStyle=PTDS_AlphaBlend
|
||||||
|
Texture=Texture'kf_fx_trip_t.Misc.smoke_animated'
|
||||||
|
TextureUSubdivisions=8
|
||||||
|
TextureVSubdivisions=8
|
||||||
|
LifetimeRange=(Min=0.350000,Max=0.350000)
|
||||||
|
End Object
|
||||||
|
Emitters(5)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter10'
|
||||||
|
|
||||||
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter11
|
||||||
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
|
FadeOut=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
SpinParticles=True
|
||||||
|
UseSizeScale=True
|
||||||
|
UseRegularSizeScale=False
|
||||||
|
UniformSize=True
|
||||||
|
Acceleration=(Z=-15.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))
|
||||||
|
Opacity=0.250000
|
||||||
|
FadeOutStartTime=0.175000
|
||||||
|
MaxParticles=8
|
||||||
|
StartLocationRange=(X=(Min=10.000000,Max=10.000000))
|
||||||
|
AddLocationFromOtherEmitter=1
|
||||||
|
UseRotationFrom=PTRS_Actor
|
||||||
|
SpinCCWorCW=(X=0.000000)
|
||||||
|
SpinsPerSecondRange=(X=(Max=0.200000))
|
||||||
|
StartSpinRange=(X=(Min=-0.300000,Max=0.300000))
|
||||||
|
SizeScale(0)=(RelativeSize=0.400000)
|
||||||
|
SizeScale(1)=(RelativeTime=0.560000,RelativeSize=1.000000)
|
||||||
|
StartSizeRange=(X=(Min=6.000000,Max=60.000000),Y=(Min=6.000000,Max=60.000000),Z=(Min=6.000000,Max=60.000000))
|
||||||
|
InitialParticlesPerSecond=1.000000
|
||||||
|
DrawStyle=PTDS_AlphaBlend
|
||||||
|
Texture=Texture'kf_fx_trip_t.Misc.smoke_animated'
|
||||||
|
TextureUSubdivisions=8
|
||||||
|
TextureVSubdivisions=8
|
||||||
|
LifetimeRange=(Min=0.350000,Max=0.350000)
|
||||||
|
End Object
|
||||||
|
Emitters(6)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter11'
|
||||||
|
|
||||||
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter12
|
||||||
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
|
FadeOut=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
SpinParticles=True
|
||||||
|
UseSizeScale=True
|
||||||
|
UseRegularSizeScale=False
|
||||||
|
UniformSize=True
|
||||||
|
Acceleration=(Z=-15.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))
|
||||||
|
Opacity=0.250000
|
||||||
|
FadeOutStartTime=0.175000
|
||||||
|
MaxParticles=12
|
||||||
|
DetailMode=DM_High
|
||||||
|
StartLocationRange=(X=(Min=10.000000,Max=10.000000))
|
||||||
|
AddLocationFromOtherEmitter=2
|
||||||
|
UseRotationFrom=PTRS_Actor
|
||||||
|
SpinCCWorCW=(X=0.000000)
|
||||||
|
SpinsPerSecondRange=(X=(Max=0.200000))
|
||||||
|
StartSpinRange=(X=(Min=-0.300000,Max=0.300000))
|
||||||
|
SizeScale(0)=(RelativeSize=0.400000)
|
||||||
|
SizeScale(1)=(RelativeTime=0.560000,RelativeSize=1.000000)
|
||||||
|
StartSizeRange=(X=(Min=6.000000,Max=60.000000),Y=(Min=6.000000,Max=60.000000),Z=(Min=6.000000,Max=60.000000))
|
||||||
|
InitialParticlesPerSecond=1.000000
|
||||||
|
DrawStyle=PTDS_AlphaBlend
|
||||||
|
Texture=Texture'kf_fx_trip_t.Misc.smoke_animated'
|
||||||
|
TextureUSubdivisions=8
|
||||||
|
TextureVSubdivisions=8
|
||||||
|
LifetimeRange=(Min=0.350000,Max=0.350000)
|
||||||
|
End Object
|
||||||
|
Emitters(7)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter12'
|
||||||
|
|
||||||
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter13
|
||||||
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
|
FadeOut=True
|
||||||
|
FadeIn=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
SpinParticles=True
|
||||||
|
UseSizeScale=True
|
||||||
|
UseRegularSizeScale=False
|
||||||
|
UniformSize=True
|
||||||
|
AutomaticInitialSpawning=False
|
||||||
|
Acceleration=(Z=-1000.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))
|
||||||
|
Opacity=0.250000
|
||||||
|
FadeOutStartTime=0.442500
|
||||||
|
FadeInEndTime=0.007500
|
||||||
|
MaxParticles=12
|
||||||
|
StartLocationRange=(X=(Min=20.000000,Max=20.000000))
|
||||||
|
UseRotationFrom=PTRS_Actor
|
||||||
|
SpinCCWorCW=(X=0.000000)
|
||||||
|
SpinsPerSecondRange=(X=(Max=0.300000))
|
||||||
|
StartSpinRange=(X=(Min=-0.300000,Max=0.300000))
|
||||||
|
SizeScale(0)=(RelativeSize=0.400000)
|
||||||
|
SizeScale(1)=(RelativeTime=0.500000,RelativeSize=0.900000)
|
||||||
|
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=1.300000)
|
||||||
|
StartSizeRange=(X=(Min=25.000000,Max=45.000000),Y=(Min=25.000000,Max=45.000000),Z=(Min=25.000000,Max=45.000000))
|
||||||
|
InitialParticlesPerSecond=10000.000000
|
||||||
|
DrawStyle=PTDS_AlphaBlend
|
||||||
|
Texture=Texture'Effects_Tex.BulletHits.watersplashcloud'
|
||||||
|
TextureUSubdivisions=1
|
||||||
|
TextureVSubdivisions=1
|
||||||
|
LifetimeRange=(Min=0.750000,Max=0.750000)
|
||||||
|
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=-5.000000,Max=150.000000))
|
||||||
|
End Object
|
||||||
|
Emitters(8)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter13'
|
||||||
|
|
||||||
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter14
|
||||||
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
|
FadeOut=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
SpinParticles=True
|
||||||
|
UseSizeScale=True
|
||||||
|
UseRegularSizeScale=False
|
||||||
|
UniformSize=True
|
||||||
|
AutomaticInitialSpawning=False
|
||||||
|
Acceleration=(Z=-22.000000)
|
||||||
|
DampingFactorRange=(X=(Min=0.250000,Max=0.250000),Y=(Min=0.250000,Max=0.250000),Z=(Min=0.250000,Max=0.250000))
|
||||||
|
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))
|
||||||
|
Opacity=0.500000
|
||||||
|
FadeOutStartTime=2.720000
|
||||||
|
MaxParticles=25
|
||||||
|
DetailMode=DM_High
|
||||||
|
StartLocationRange=(X=(Min=-10.000000,Max=10.000000),Y=(Min=-10.000000,Max=10.000000),Z=(Min=-10.000000,Max=10.000000))
|
||||||
|
UseRotationFrom=PTRS_Actor
|
||||||
|
SpinCCWorCW=(X=0.000000)
|
||||||
|
SpinsPerSecondRange=(X=(Max=0.150000))
|
||||||
|
StartSpinRange=(X=(Min=-1.000000,Max=1.000000))
|
||||||
|
SizeScale(0)=(RelativeSize=2.200000)
|
||||||
|
SizeScale(1)=(RelativeTime=0.500000,RelativeSize=3.200000)
|
||||||
|
SizeScale(2)=(RelativeTime=1.000000,RelativeSize=4.000000)
|
||||||
|
StartSizeRange=(X=(Min=1.000000,Max=20.000000),Y=(Min=1.000000,Max=20.000000),Z=(Min=1.000000,Max=20.000000))
|
||||||
|
InitialParticlesPerSecond=10000.000000
|
||||||
|
DrawStyle=PTDS_AlphaBlend
|
||||||
|
Texture=Texture'Effects_Tex.explosions.DSmoke_2'
|
||||||
|
TextureUSubdivisions=1
|
||||||
|
TextureVSubdivisions=1
|
||||||
|
StartVelocityRange=(X=(Min=-350.000000,Max=350.000000),Y=(Min=-350.000000,Max=350.000000),Z=(Min=-5.000000,Max=50.000000))
|
||||||
|
VelocityLossRange=(X=(Min=3.000000,Max=3.000000),Y=(Min=3.000000,Max=3.000000))
|
||||||
|
End Object
|
||||||
|
Emitters(9)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter14'
|
||||||
|
|
||||||
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter15
|
||||||
|
UseCollision=True
|
||||||
|
UseColorScale=True
|
||||||
|
FadeOut=True
|
||||||
|
FadeIn=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
UniformSize=True
|
||||||
|
AutomaticInitialSpawning=False
|
||||||
|
UseRandomSubdivision=True
|
||||||
|
Acceleration=(Z=-1000.000000)
|
||||||
|
ExtentMultiplier=(X=0.000000,Y=0.000000,Z=0.000000)
|
||||||
|
DampingFactorRange=(X=(Min=0.250000,Max=0.250000),Y=(Min=0.250000,Max=0.250000),Z=(Min=0.250000,Max=0.250000))
|
||||||
|
ColorScale(0)=(Color=(B=174,G=174,R=205,A=255))
|
||||||
|
ColorScale(1)=(RelativeTime=1.000000,Color=(B=174,G=174,R=205,A=255))
|
||||||
|
FadeOutStartTime=0.500000
|
||||||
|
MaxParticles=15
|
||||||
|
UseRotationFrom=PTRS_Actor
|
||||||
|
StartSizeRange=(X=(Min=0.700000,Max=1.700000))
|
||||||
|
InitialParticlesPerSecond=10000.000000
|
||||||
|
DrawStyle=PTDS_AlphaBlend
|
||||||
|
Texture=Texture'Effects_Tex.BulletHits.snowchunksfinal'
|
||||||
|
TextureUSubdivisions=2
|
||||||
|
TextureVSubdivisions=2
|
||||||
|
LifetimeRange=(Min=1.400000,Max=1.400000)
|
||||||
|
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=-300.000000,Max=350.000000))
|
||||||
|
End Object
|
||||||
|
Emitters(10)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter15'
|
||||||
|
|
||||||
|
AutoDestroy=True
|
||||||
|
bNoDelete=False
|
||||||
|
bNetTemporary=True
|
||||||
|
RemoteRole=ROLE_SimulatedProxy
|
||||||
|
LifeSpan=5.000000
|
||||||
|
TransientSoundVolume=150.000000
|
||||||
|
TransientSoundRadius=80.000000
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,14 @@
|
|||||||
class NiceNitroDecal extends ProjectedDecal;
|
class NiceNitroDecal extends ProjectedDecal;
|
||||||
#exec OBJ LOAD FILE=HTec_A.ukx
|
#exec OBJ LOAD FILE=HTec_A.ukx
|
||||||
simulated function BeginPlay(){
|
simulated function BeginPlay(){
|
||||||
if(!level.bDropDetail && FRand() < 0.4)
projTexture = Texture'HTec_A.Nitro.NitroSplat';
|
if(!level.bDropDetail && FRand() < 0.4)
|
||||||
|
projTexture = Texture'HTec_A.Nitro.NitroSplat';
|
||||||
super.BeginPlay();
|
super.BeginPlay();
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
bClipStaticMesh=True
CullDistance=7000.000000
LifeSpan=5.000000
DrawScale=0.500000
|
{
|
||||||
|
bClipStaticMesh=True
|
||||||
|
CullDistance=7000.000000
|
||||||
|
LifeSpan=5.000000
|
||||||
|
DrawScale=0.500000
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,37 @@
|
|||||||
// ScrN copy
|
// ScrN copy
|
||||||
class NiceNitroGroundEffect extends NiceFreezeParticlesDirectional;
|
class NiceNitroGroundEffect extends NiceFreezeParticlesDirectional;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
FadeOut=True
FadeIn=True
RespawnDeadParticles=False
SpinParticles=True
UseSizeScale=True
UseRegularSizeScale=False
UniformSize=True
AutomaticInitialSpawning=False
ExtentMultiplier=(X=0.000000,Y=0.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))
Opacity=0.470000
FadeOutStartTime=0.940000
FadeInEndTime=0.300000
MaxParticles=50
StartLocationShape=PTLS_Polar
SpinsPerSecondRange=(X=(Max=0.035000))
StartSpinRange=(X=(Min=-0.200000,Max=0.300000))
SizeScale(0)=(RelativeTime=0.500000,RelativeSize=0.900000)
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=0.500000)
StartSizeRange=(X=(Min=15.000000,Max=35.000000),Y=(Min=15.000000,Max=35.000000),Z=(Min=15.000000,Max=35.000000))
InitialParticlesPerSecond=60.000000
DrawStyle=PTDS_AlphaBlend
Texture=Texture'Effects_Tex.explosions.DSmoke_2'
LifetimeRange=(Min=2.000000,Max=2.000000)
StartVelocityRange=(X=(Min=-85.000000,Max=85.000000),Y=(Min=-85.000000,Max=85.000000))
StartVelocityRadialRange=(Min=-40.000000,Max=40.000000)
End Object
Emitters(0)=SpriteEmitter'NicePack.NiceNitroGroundEffect.SpriteEmitter0'
|
{
|
||||||
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter0
|
||||||
|
FadeOut=True
|
||||||
|
FadeIn=True
|
||||||
|
RespawnDeadParticles=False
|
||||||
|
SpinParticles=True
|
||||||
|
UseSizeScale=True
|
||||||
|
UseRegularSizeScale=False
|
||||||
|
UniformSize=True
|
||||||
|
AutomaticInitialSpawning=False
|
||||||
|
ExtentMultiplier=(X=0.000000,Y=0.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))
|
||||||
|
Opacity=0.470000
|
||||||
|
FadeOutStartTime=0.940000
|
||||||
|
FadeInEndTime=0.300000
|
||||||
|
MaxParticles=50
|
||||||
|
StartLocationShape=PTLS_Polar
|
||||||
|
SpinsPerSecondRange=(X=(Max=0.035000))
|
||||||
|
StartSpinRange=(X=(Min=-0.200000,Max=0.300000))
|
||||||
|
SizeScale(0)=(RelativeTime=0.500000,RelativeSize=0.900000)
|
||||||
|
SizeScale(1)=(RelativeTime=1.000000,RelativeSize=0.500000)
|
||||||
|
StartSizeRange=(X=(Min=15.000000,Max=35.000000),Y=(Min=15.000000,Max=35.000000),Z=(Min=15.000000,Max=35.000000))
|
||||||
|
InitialParticlesPerSecond=60.000000
|
||||||
|
DrawStyle=PTDS_AlphaBlend
|
||||||
|
Texture=Texture'Effects_Tex.explosions.DSmoke_2'
|
||||||
|
LifetimeRange=(Min=2.000000,Max=2.000000)
|
||||||
|
StartVelocityRange=(X=(Min=-85.000000,Max=85.000000),Y=(Min=-85.000000,Max=85.000000))
|
||||||
|
StartVelocityRadialRange=(Min=-40.000000,Max=40.000000)
|
||||||
|
End Object
|
||||||
|
Emitters(0)=SpriteEmitter'NicePack.NiceNitroGroundEffect.SpriteEmitter0'
|
||||||
|
|
||||||
LifeSpan=5.000000
|
LifeSpan=5.000000
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,8 @@ event Opened(GUIComponent Sender)
|
|||||||
c_Tabs.ActivateTabByName(PanelCaption[0], true);
|
c_Tabs.ActivateTabByName(PanelCaption[0], true);
|
||||||
// Tell the controller that he is on a shopping spree
|
// Tell the controller that he is on a shopping spree
|
||||||
if ( KFPlayerController(PlayerOwner()) != none )
|
if ( KFPlayerController(PlayerOwner()) != none )
|
||||||
{
KFPlayerController(PlayerOwner()).bShopping = true;
|
{
|
||||||
|
KFPlayerController(PlayerOwner()).bShopping = true;
|
||||||
}
|
}
|
||||||
if ( KFWeapon(KFHumanPawn(PlayerOwner().Pawn).Weapon).bAimingRifle )
|
if ( KFWeapon(KFHumanPawn(PlayerOwner().Pawn).Weapon).bAimingRifle )
|
||||||
{
|
{
|
||||||
@ -149,7 +150,8 @@ function KFBuyMenuClosed(optional bool bCanceled)
|
|||||||
PlayerOwner().SetRotation(NewRot);
|
PlayerOwner().SetRotation(NewRot);
|
||||||
Super.OnClose(bCanceled);
|
Super.OnClose(bCanceled);
|
||||||
if ( KFPlayerController(PlayerOwner()) != none )
|
if ( KFPlayerController(PlayerOwner()) != none )
|
||||||
{
KFPlayerController(PlayerOwner()).bShopping = false;
|
{
|
||||||
|
KFPlayerController(PlayerOwner()).bShopping = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function CloseSale(bool savePurchases)
|
function CloseSale(bool savePurchases)
|
||||||
@ -169,22 +171,206 @@ function bool ButtonClicked(GUIComponent Sender)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
Begin Object Class=GUIImage Name=HBGLeft
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
ImageStyle=ISTY_Stretched
Hint="Perk Quick Select"
WinTop=0.001000
WinLeft=0.001000
WinWidth=0.332300
WinHeight=0.100000
End Object
HeaderBG_Left=GUIImage'NicePack.NiceGUIBuyMenu.HBGLeft'
|
{
|
||||||
Begin Object Class=GUIImage Name=HBGCenter
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
ImageStyle=ISTY_Stretched
Hint="Trading Time Left"
WinTop=0.001000
WinLeft=0.334000
WinWidth=0.331023
WinHeight=0.100000
End Object
HeaderBG_Center=GUIImage'NicePack.NiceGUIBuyMenu.HBGCenter'
|
Begin Object Class=GUIImage Name=HBGLeft
|
||||||
Begin Object Class=GUIImage Name=HBGRight
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
ImageStyle=ISTY_Stretched
Hint="Current Perk"
WinTop=0.001000
WinLeft=0.666000
WinWidth=0.332000
WinHeight=0.100000
End Object
HeaderBG_Right=GUIImage'NicePack.NiceGUIBuyMenu.HBGRight'
|
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
|
||||||
Begin Object Class=GUILabel Name=Perk
TextAlign=TXTA_Center
TextColor=(B=158,G=176,R=175)
WinTop=0.010000
WinLeft=0.665000
WinWidth=0.329761
WinHeight=0.050000
End Object
CurrentPerkLabel=GUILabel'NicePack.NiceGUIBuyMenu.Perk'
|
ImageStyle=ISTY_Stretched
|
||||||
Begin Object Class=GUILabel Name=Time
Caption="Trader closes in 00:31"
TextAlign=TXTA_Center
TextColor=(B=158,G=176,R=175)
TextFont="UT2LargeFont"
WinTop=0.020952
WinLeft=0.335000
WinWidth=0.330000
WinHeight=0.035000
End Object
TimeLeftLabel=GUILabel'NicePack.NiceGUIBuyMenu.Time'
|
Hint="Perk Quick Select"
|
||||||
Begin Object Class=GUILabel Name=Wave
Caption="Wave: 7/10"
TextAlign=TXTA_Center
TextColor=(B=158,G=176,R=175)
WinTop=0.052857
WinLeft=0.336529
WinWidth=0.327071
WinHeight=0.035000
End Object
WaveLabel=GUILabel'NicePack.NiceGUIBuyMenu.Wave'
|
WinTop=0.001000
|
||||||
Begin Object Class=GUILabel Name=HBGLL
Caption="Quick Perk Select"
TextAlign=TXTA_Center
TextColor=(B=158,G=176,R=175)
TextFont="UT2ServerListFont"
WinTop=0.007238
WinLeft=0.024937
WinWidth=0.329761
WinHeight=0.019524
End Object
HeaderBG_Left_Label=GUILabel'NicePack.NiceGUIBuyMenu.HBGLL'
|
WinLeft=0.001000
|
||||||
Begin Object Class=KFQuickPerkSelect Name=QS
WinTop=0.011906
WinLeft=0.008008
WinWidth=0.316601
WinHeight=0.082460
OnDraw=QS.MyOnDraw
End Object
QuickPerkSelect=KFQuickPerkSelect'NicePack.NiceGUIBuyMenu.QS'
|
WinWidth=0.332300
|
||||||
Begin Object Class=KFBuyMenuFilter Name=filter
WinTop=0.051000
WinLeft=0.670000
WinWidth=0.305000
WinHeight=0.082460
OnDraw=filter.MyOnDraw
End Object
BuyMenuFilter=KFBuyMenuFilter'NicePack.NiceGUIBuyMenu.filter'
|
WinHeight=0.100000
|
||||||
Begin Object Class=GUIButton Name=StoreTabB
Caption="Store"
FontScale=FNS_Small
WinTop=0.072762
WinLeft=0.202801
WinWidth=0.050000
WinHeight=0.022000
OnClick=NiceGUIBuyMenu.ButtonClicked
OnKeyEvent=StoreTabB.InternalOnKeyEvent
End Object
StoreTabButton=GUIButton'NicePack.NiceGUIBuyMenu.StoreTabB'
|
End Object
|
||||||
Begin Object Class=GUIButton Name=PerkTabB
Caption="Perk"
FontScale=FNS_Small
WinTop=0.072762
WinLeft=0.127234
WinWidth=0.050000
WinHeight=0.022000
OnClick=NiceGUIBuyMenu.ButtonClicked
OnKeyEvent=PerkTabB.InternalOnKeyEvent
End Object
PerkTabButton=GUIButton'NicePack.NiceGUIBuyMenu.PerkTabB'
|
HeaderBG_Left=GUIImage'NicePack.NiceGUIBuyMenu.HBGLeft'
|
||||||
Begin Object Class=GUIImage Name=Weight
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
ImageStyle=ISTY_Stretched
WinTop=0.934206
WinLeft=0.001000
WinWidth=0.663086
WinHeight=0.065828
End Object
WeightBG=GUIImage'NicePack.NiceGUIBuyMenu.Weight'
|
|
||||||
Begin Object Class=GUIImage Name=WeightIco
Image=Texture'KillingFloorHUD.HUD.Hud_Weight'
ImageStyle=ISTY_Scaled
WinTop=0.946166
WinLeft=0.009961
WinWidth=0.033672
WinHeight=0.048992
RenderWeight=0.460000
End Object
WeightIcon=GUIImage'NicePack.NiceGUIBuyMenu.WeightIco'
|
Begin Object Class=GUIImage Name=HBGCenter
|
||||||
Begin Object Class=GUIImage Name=WeightIcoBG
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
ImageStyle=ISTY_Scaled
WinTop=0.942416
WinLeft=0.006055
WinWidth=0.041484
WinHeight=0.054461
RenderWeight=0.450000
End Object
WeightIconBG=GUIImage'NicePack.NiceGUIBuyMenu.WeightIcoBG'
|
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
|
||||||
Begin Object Class=KFWeightBar Name=WeightB
WinTop=0.945302
WinLeft=0.055266
WinWidth=0.443888
WinHeight=0.053896
OnDraw=WeightB.MyOnDraw
End Object
WeightBar=KFWeightBar'NicePack.NiceGUIBuyMenu.WeightB'
|
ImageStyle=ISTY_Stretched
|
||||||
RedColor=(R=255,A=255)
GreenGreyColor=(B=158,G=176,R=175,A=255)
CurrentPerk="Current Perk"
NoActivePerk="No Active Perk!"
TraderClose="Trader Closes in"
WaveString="Wave"
LvAbbrString="Lv"
Begin Object Class=GUITabControl Name=PageTabs
bDockPanels=True
TabHeight=0.025000
BackgroundStyleName="TabBackground"
WinTop=0.078000
WinLeft=0.005000
WinWidth=0.990000
WinHeight=0.025000
RenderWeight=0.490000
TabOrder=0
bAcceptsInput=True
OnActivate=PageTabs.InternalOnActivate
OnChange=NiceGUIBuyMenu.InternalOnChange
End Object
c_Tabs=GUITabControl'NicePack.NiceGUIBuyMenu.PageTabs'
|
Hint="Trading Time Left"
|
||||||
Begin Object Class=BackgroundImage Name=PageBackground
Image=Texture'Engine.WhiteSquareTexture'
ImageColor=(B=20,G=20,R=20)
ImageStyle=ISTY_Tiled
RenderWeight=0.001000
End Object
i_Background=BackgroundImage'NicePack.NiceGUIBuyMenu.PageBackground'
|
WinTop=0.001000
|
||||||
PanelClass(0)="KFGUI.KFTab_BuyMenu"
PanelClass(1)="KFGUI.KFTab_Perks"
PanelCaption(0)="Store"
PanelCaption(1)="Perks"
PanelHint(0)="Trade equipment and ammunition"
PanelHint(1)="Select your current Perk"
bAllowedAsLast=True
OnClose=NiceGUIBuyMenu.KFBuyMenuClosed
WhiteColor=(B=255,G=255,R=255)
|
WinLeft=0.334000
|
||||||
|
WinWidth=0.331023
|
||||||
|
WinHeight=0.100000
|
||||||
|
End Object
|
||||||
|
HeaderBG_Center=GUIImage'NicePack.NiceGUIBuyMenu.HBGCenter'
|
||||||
|
|
||||||
|
Begin Object Class=GUIImage Name=HBGRight
|
||||||
|
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
|
||||||
|
ImageStyle=ISTY_Stretched
|
||||||
|
Hint="Current Perk"
|
||||||
|
WinTop=0.001000
|
||||||
|
WinLeft=0.666000
|
||||||
|
WinWidth=0.332000
|
||||||
|
WinHeight=0.100000
|
||||||
|
End Object
|
||||||
|
HeaderBG_Right=GUIImage'NicePack.NiceGUIBuyMenu.HBGRight'
|
||||||
|
|
||||||
|
Begin Object Class=GUILabel Name=Perk
|
||||||
|
TextAlign=TXTA_Center
|
||||||
|
TextColor=(B=158,G=176,R=175)
|
||||||
|
WinTop=0.010000
|
||||||
|
WinLeft=0.665000
|
||||||
|
WinWidth=0.329761
|
||||||
|
WinHeight=0.050000
|
||||||
|
End Object
|
||||||
|
CurrentPerkLabel=GUILabel'NicePack.NiceGUIBuyMenu.Perk'
|
||||||
|
|
||||||
|
Begin Object Class=GUILabel Name=Time
|
||||||
|
Caption="Trader closes in 00:31"
|
||||||
|
TextAlign=TXTA_Center
|
||||||
|
TextColor=(B=158,G=176,R=175)
|
||||||
|
TextFont="UT2LargeFont"
|
||||||
|
WinTop=0.020952
|
||||||
|
WinLeft=0.335000
|
||||||
|
WinWidth=0.330000
|
||||||
|
WinHeight=0.035000
|
||||||
|
End Object
|
||||||
|
TimeLeftLabel=GUILabel'NicePack.NiceGUIBuyMenu.Time'
|
||||||
|
|
||||||
|
Begin Object Class=GUILabel Name=Wave
|
||||||
|
Caption="Wave: 7/10"
|
||||||
|
TextAlign=TXTA_Center
|
||||||
|
TextColor=(B=158,G=176,R=175)
|
||||||
|
WinTop=0.052857
|
||||||
|
WinLeft=0.336529
|
||||||
|
WinWidth=0.327071
|
||||||
|
WinHeight=0.035000
|
||||||
|
End Object
|
||||||
|
WaveLabel=GUILabel'NicePack.NiceGUIBuyMenu.Wave'
|
||||||
|
|
||||||
|
Begin Object Class=GUILabel Name=HBGLL
|
||||||
|
Caption="Quick Perk Select"
|
||||||
|
TextAlign=TXTA_Center
|
||||||
|
TextColor=(B=158,G=176,R=175)
|
||||||
|
TextFont="UT2ServerListFont"
|
||||||
|
WinTop=0.007238
|
||||||
|
WinLeft=0.024937
|
||||||
|
WinWidth=0.329761
|
||||||
|
WinHeight=0.019524
|
||||||
|
End Object
|
||||||
|
HeaderBG_Left_Label=GUILabel'NicePack.NiceGUIBuyMenu.HBGLL'
|
||||||
|
|
||||||
|
Begin Object Class=KFQuickPerkSelect Name=QS
|
||||||
|
WinTop=0.011906
|
||||||
|
WinLeft=0.008008
|
||||||
|
WinWidth=0.316601
|
||||||
|
WinHeight=0.082460
|
||||||
|
OnDraw=QS.MyOnDraw
|
||||||
|
End Object
|
||||||
|
QuickPerkSelect=KFQuickPerkSelect'NicePack.NiceGUIBuyMenu.QS'
|
||||||
|
|
||||||
|
Begin Object Class=KFBuyMenuFilter Name=filter
|
||||||
|
WinTop=0.051000
|
||||||
|
WinLeft=0.670000
|
||||||
|
WinWidth=0.305000
|
||||||
|
WinHeight=0.082460
|
||||||
|
OnDraw=filter.MyOnDraw
|
||||||
|
End Object
|
||||||
|
BuyMenuFilter=KFBuyMenuFilter'NicePack.NiceGUIBuyMenu.filter'
|
||||||
|
|
||||||
|
Begin Object Class=GUIButton Name=StoreTabB
|
||||||
|
Caption="Store"
|
||||||
|
FontScale=FNS_Small
|
||||||
|
WinTop=0.072762
|
||||||
|
WinLeft=0.202801
|
||||||
|
WinWidth=0.050000
|
||||||
|
WinHeight=0.022000
|
||||||
|
OnClick=NiceGUIBuyMenu.ButtonClicked
|
||||||
|
OnKeyEvent=StoreTabB.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
StoreTabButton=GUIButton'NicePack.NiceGUIBuyMenu.StoreTabB'
|
||||||
|
|
||||||
|
Begin Object Class=GUIButton Name=PerkTabB
|
||||||
|
Caption="Perk"
|
||||||
|
FontScale=FNS_Small
|
||||||
|
WinTop=0.072762
|
||||||
|
WinLeft=0.127234
|
||||||
|
WinWidth=0.050000
|
||||||
|
WinHeight=0.022000
|
||||||
|
OnClick=NiceGUIBuyMenu.ButtonClicked
|
||||||
|
OnKeyEvent=PerkTabB.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
PerkTabButton=GUIButton'NicePack.NiceGUIBuyMenu.PerkTabB'
|
||||||
|
|
||||||
|
Begin Object Class=GUIImage Name=Weight
|
||||||
|
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
|
||||||
|
ImageStyle=ISTY_Stretched
|
||||||
|
WinTop=0.934206
|
||||||
|
WinLeft=0.001000
|
||||||
|
WinWidth=0.663086
|
||||||
|
WinHeight=0.065828
|
||||||
|
End Object
|
||||||
|
WeightBG=GUIImage'NicePack.NiceGUIBuyMenu.Weight'
|
||||||
|
|
||||||
|
Begin Object Class=GUIImage Name=WeightIco
|
||||||
|
Image=Texture'KillingFloorHUD.HUD.Hud_Weight'
|
||||||
|
ImageStyle=ISTY_Scaled
|
||||||
|
WinTop=0.946166
|
||||||
|
WinLeft=0.009961
|
||||||
|
WinWidth=0.033672
|
||||||
|
WinHeight=0.048992
|
||||||
|
RenderWeight=0.460000
|
||||||
|
End Object
|
||||||
|
WeightIcon=GUIImage'NicePack.NiceGUIBuyMenu.WeightIco'
|
||||||
|
|
||||||
|
Begin Object Class=GUIImage Name=WeightIcoBG
|
||||||
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
||||||
|
ImageStyle=ISTY_Scaled
|
||||||
|
WinTop=0.942416
|
||||||
|
WinLeft=0.006055
|
||||||
|
WinWidth=0.041484
|
||||||
|
WinHeight=0.054461
|
||||||
|
RenderWeight=0.450000
|
||||||
|
End Object
|
||||||
|
WeightIconBG=GUIImage'NicePack.NiceGUIBuyMenu.WeightIcoBG'
|
||||||
|
|
||||||
|
Begin Object Class=KFWeightBar Name=WeightB
|
||||||
|
WinTop=0.945302
|
||||||
|
WinLeft=0.055266
|
||||||
|
WinWidth=0.443888
|
||||||
|
WinHeight=0.053896
|
||||||
|
OnDraw=WeightB.MyOnDraw
|
||||||
|
End Object
|
||||||
|
WeightBar=KFWeightBar'NicePack.NiceGUIBuyMenu.WeightB'
|
||||||
|
|
||||||
|
RedColor=(R=255,A=255)
|
||||||
|
GreenGreyColor=(B=158,G=176,R=175,A=255)
|
||||||
|
CurrentPerk="Current Perk"
|
||||||
|
NoActivePerk="No Active Perk!"
|
||||||
|
TraderClose="Trader Closes in"
|
||||||
|
WaveString="Wave"
|
||||||
|
LvAbbrString="Lv"
|
||||||
|
Begin Object Class=GUITabControl Name=PageTabs
|
||||||
|
bDockPanels=True
|
||||||
|
TabHeight=0.025000
|
||||||
|
BackgroundStyleName="TabBackground"
|
||||||
|
WinTop=0.078000
|
||||||
|
WinLeft=0.005000
|
||||||
|
WinWidth=0.990000
|
||||||
|
WinHeight=0.025000
|
||||||
|
RenderWeight=0.490000
|
||||||
|
TabOrder=0
|
||||||
|
bAcceptsInput=True
|
||||||
|
OnActivate=PageTabs.InternalOnActivate
|
||||||
|
OnChange=NiceGUIBuyMenu.InternalOnChange
|
||||||
|
End Object
|
||||||
|
c_Tabs=GUITabControl'NicePack.NiceGUIBuyMenu.PageTabs'
|
||||||
|
|
||||||
|
Begin Object Class=BackgroundImage Name=PageBackground
|
||||||
|
Image=Texture'Engine.WhiteSquareTexture'
|
||||||
|
ImageColor=(B=20,G=20,R=20)
|
||||||
|
ImageStyle=ISTY_Tiled
|
||||||
|
RenderWeight=0.001000
|
||||||
|
End Object
|
||||||
|
i_Background=BackgroundImage'NicePack.NiceGUIBuyMenu.PageBackground'
|
||||||
|
|
||||||
|
PanelClass(0)="KFGUI.KFTab_BuyMenu"
|
||||||
|
PanelClass(1)="KFGUI.KFTab_Perks"
|
||||||
|
PanelCaption(0)="Store"
|
||||||
|
PanelCaption(1)="Perks"
|
||||||
|
PanelHint(0)="Trade equipment and ammunition"
|
||||||
|
PanelHint(1)="Select your current Perk"
|
||||||
|
bAllowedAsLast=True
|
||||||
|
OnClose=NiceGUIBuyMenu.KFBuyMenuClosed
|
||||||
|
WhiteColor=(B=255,G=255,R=255)
|
||||||
}
|
}
|
||||||
|
@ -19,52 +19,263 @@ function InitComponent(GUIController MyController, GUIComponent MyOwner){
|
|||||||
function InternalOnLoadINI(GUIComponent sender, string s){
|
function InternalOnLoadINI(GUIComponent sender, string s){
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
nicePlayer = NicePlayerController(PlayerOwner());
|
nicePlayer = NicePlayerController(PlayerOwner());
|
||||||
if(nicePlayer == none)
return;
|
if(nicePlayer == none)
|
||||||
|
return;
|
||||||
switch(sender){
|
switch(sender){
|
||||||
case ch_WeapManagement:
ch_WeapManagement.Checked(nicePlayer.bNiceWeaponManagement);
break;
|
case ch_WeapManagement:
|
||||||
case ch_AltSwitches:
ch_AltSwitches.Checked(nicePlayer.bFlagAltSwitchesModes);
break;
|
ch_WeapManagement.Checked(nicePlayer.bNiceWeaponManagement);
|
||||||
case ch_DispCounters:
ch_DispCounters.Checked(nicePlayer.bFlagDisplayCounters);
break;
|
break;
|
||||||
case ch_DisWeapProgress:
ch_DisWeapProgress.Checked(nicePlayer.bFlagDisplayWeaponProgress);
break;
|
case ch_AltSwitches:
|
||||||
case ch_ShowHLMessages:
ch_ShowHLMessages.Checked(nicePlayer.bFlagShowHLMessages);
break;
|
ch_AltSwitches.Checked(nicePlayer.bFlagAltSwitchesModes);
|
||||||
case ch_CancelFire:
ch_CancelFire.Checked(nicePlayer.bRelCancelByFire);
break;
|
break;
|
||||||
case ch_CancelSwitching:
ch_CancelSwitching.Checked(nicePlayer.bRelCancelBySwitching);
break;
|
case ch_DispCounters:
|
||||||
case ch_CancelNades:
ch_CancelNades.Checked(nicePlayer.bRelCancelByNades);
break;
|
ch_DispCounters.Checked(nicePlayer.bFlagDisplayCounters);
|
||||||
case ch_CancelAiming:
ch_CancelAiming.Checked(nicePlayer.bRelCancelByAiming);
break;
|
break;
|
||||||
case ch_ReloadWontWork:
ch_ReloadWontWork.Checked(nicePlayer.bFlagUseServerReload);
break;
|
case ch_DisWeapProgress:
|
||||||
|
ch_DisWeapProgress.Checked(nicePlayer.bFlagDisplayWeaponProgress);
|
||||||
|
break;
|
||||||
|
case ch_ShowHLMessages:
|
||||||
|
ch_ShowHLMessages.Checked(nicePlayer.bFlagShowHLMessages);
|
||||||
|
break;
|
||||||
|
case ch_CancelFire:
|
||||||
|
ch_CancelFire.Checked(nicePlayer.bRelCancelByFire);
|
||||||
|
break;
|
||||||
|
case ch_CancelSwitching:
|
||||||
|
ch_CancelSwitching.Checked(nicePlayer.bRelCancelBySwitching);
|
||||||
|
break;
|
||||||
|
case ch_CancelNades:
|
||||||
|
ch_CancelNades.Checked(nicePlayer.bRelCancelByNades);
|
||||||
|
break;
|
||||||
|
case ch_CancelAiming:
|
||||||
|
ch_CancelAiming.Checked(nicePlayer.bRelCancelByAiming);
|
||||||
|
break;
|
||||||
|
case ch_ReloadWontWork:
|
||||||
|
ch_ReloadWontWork.Checked(nicePlayer.bFlagUseServerReload);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function InternalOnChange(GUIComponent Sender){
|
function InternalOnChange(GUIComponent Sender){
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
super.InternalOnChange(Sender);
|
super.InternalOnChange(Sender);
|
||||||
nicePlayer = NicePlayerController(PlayerOwner());
|
nicePlayer = NicePlayerController(PlayerOwner());
|
||||||
if(nicePlayer == none)
return;
|
if(nicePlayer == none)
|
||||||
|
return;
|
||||||
switch(sender){
|
switch(sender){
|
||||||
case ch_WeapManagement:
nicePlayer.bNiceWeaponManagement = ch_WeapManagement.IsChecked();
break;
|
case ch_WeapManagement:
|
||||||
case ch_AltSwitches:
nicePlayer.ServerSetAltSwitchesModes(ch_AltSwitches.IsChecked());
break;
|
nicePlayer.bNiceWeaponManagement = ch_WeapManagement.IsChecked();
|
||||||
case ch_DispCounters:
nicePlayer.ServerSetDisplayCounters(ch_DispCounters.IsChecked());
break;
|
break;
|
||||||
case ch_DisWeapProgress:
nicePlayer.ServerSetDisplayWeaponProgress(ch_DisWeapProgress.IsChecked());
break;
|
case ch_AltSwitches:
|
||||||
case ch_ShowHLMessages:
nicePlayer.ServerSetHLMessages(ch_ShowHLMessages.IsChecked());
break;
|
nicePlayer.ServerSetAltSwitchesModes(ch_AltSwitches.IsChecked());
|
||||||
case ch_CancelFire:
nicePlayer.bRelCancelByFire = ch_CancelFire.IsChecked();
break;
|
break;
|
||||||
case ch_CancelSwitching:
nicePlayer.bRelCancelBySwitching = ch_CancelSwitching.IsChecked();
break;
|
case ch_DispCounters:
|
||||||
case ch_CancelNades:
nicePlayer.bRelCancelByNades = ch_CancelNades.IsChecked();
break;
|
nicePlayer.ServerSetDisplayCounters(ch_DispCounters.IsChecked());
|
||||||
case ch_CancelAiming:
nicePlayer.bRelCancelByAiming = ch_CancelAiming.IsChecked();
break;
|
break;
|
||||||
case ch_ReloadWontWork:
nicePlayer.ServerSetUseServerReload(ch_ReloadWontWork.IsChecked());
break;
|
case ch_DisWeapProgress:
|
||||||
|
nicePlayer.ServerSetDisplayWeaponProgress(ch_DisWeapProgress.IsChecked());
|
||||||
|
break;
|
||||||
|
case ch_ShowHLMessages:
|
||||||
|
nicePlayer.ServerSetHLMessages(ch_ShowHLMessages.IsChecked());
|
||||||
|
break;
|
||||||
|
case ch_CancelFire:
|
||||||
|
nicePlayer.bRelCancelByFire = ch_CancelFire.IsChecked();
|
||||||
|
break;
|
||||||
|
case ch_CancelSwitching:
|
||||||
|
nicePlayer.bRelCancelBySwitching = ch_CancelSwitching.IsChecked();
|
||||||
|
break;
|
||||||
|
case ch_CancelNades:
|
||||||
|
nicePlayer.bRelCancelByNades = ch_CancelNades.IsChecked();
|
||||||
|
break;
|
||||||
|
case ch_CancelAiming:
|
||||||
|
nicePlayer.bRelCancelByAiming = ch_CancelAiming.IsChecked();
|
||||||
|
break;
|
||||||
|
case ch_ReloadWontWork:
|
||||||
|
nicePlayer.ServerSetUseServerReload(ch_ReloadWontWork.IsChecked());
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
nicePlayer.ClientSaveConfig();
|
nicePlayer.ClientSaveConfig();
|
||||||
}
|
}
|
||||||
// size = (x=0.0125, y=0.0) ; (w=1.0, h=0.865)
|
// size = (x=0.0125, y=0.0) ; (w=1.0, h=0.865)
|
||||||
// tab order
|
// tab order
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
Begin Object Class=moCheckBox Name=WeaponManagement
CaptionWidth=0.955000
Caption="Nice weapon management"
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
OnCreateComponent=WeaponManagement.InternalOnCreateComponent
IniOption="@Internal"
Hint="If checked, NicePack will use it's own system to manage weapon switching"
WinTop=0.050000
WinLeft=0.012500
WinWidth=0.278000
TabOrder=4
OnChange=NiceGUISettings.InternalOnChange
OnLoadINI=NiceGUISettings.InternalOnLoadINI
End Object
ch_WeapManagement=moCheckBox'NicePack.NiceGUISettings.WeaponManagement'
|
{
|
||||||
Begin Object Class=moCheckBox Name=AltSwitches
CaptionWidth=0.955000
Caption="Alt fire switches modes"
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
OnCreateComponent=AltSwitches.InternalOnCreateComponent
IniOption="@Internal"
Hint="Assault-rifle only; if enabled - alt fire button switches between fire modes, otherwise - acts as an alt fire"
WinTop=0.100000
WinLeft=0.012500
WinWidth=0.278000
TabOrder=6
OnChange=NiceGUISettings.InternalOnChange
OnLoadINI=NiceGUISettings.InternalOnLoadINI
End Object
ch_AltSwitches=moCheckBox'NicePack.NiceGUISettings.AltSwitches'
|
Begin Object Class=moCheckBox Name=WeaponManagement
|
||||||
Begin Object Class=moCheckBox Name=DispCounters
CaptionWidth=0.955000
Caption="Display counters"
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
OnCreateComponent=DispCounters.InternalOnCreateComponent
IniOption="@Internal"
Hint="Toggles display of the various counters used by skills"
WinTop=0.150000
WinLeft=0.012500
WinWidth=0.278000
TabOrder=7
OnChange=NiceGUISettings.InternalOnChange
OnLoadINI=NiceGUISettings.InternalOnLoadINI
End Object
ch_DispCounters=moCheckBox'NicePack.NiceGUISettings.DispCounters'
|
CaptionWidth=0.955000
|
||||||
Begin Object Class=moCheckBox Name=DispWeapProgress
CaptionWidth=0.955000
Caption="Display weapon progress"
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
OnCreateComponent=DispWeapProgress.InternalOnCreateComponent
IniOption="@Internal"
Hint="Displays weapon progress rate, whoever it's defined by a skill that's using this functionality"
WinTop=0.200000
WinLeft=0.012500
WinWidth=0.278000
TabOrder=8
OnChange=NiceGUISettings.InternalOnChange
OnLoadINI=NiceGUISettings.InternalOnLoadINI
End Object
ch_DisWeapProgress=moCheckBox'NicePack.NiceGUISettings.DispWeapProgress'
|
Caption="Nice weapon management"
|
||||||
Begin Object Class=moCheckBox Name=ShowHLMessages
CaptionWidth=0.955000
Caption="Show Hardcore Level messages"
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
OnCreateComponent=ShowHLMessages.InternalOnCreateComponent
IniOption="@Internal"
Hint="Enable to be notified each time Hardcore Level is changed"
WinTop=0.300000
WinLeft=0.012500
WinWidth=0.278000
TabOrder=9
OnChange=NiceGUISettings.InternalOnChange
OnLoadINI=NiceGUISettings.InternalOnLoadINI
End Object
ch_ShowHLMessages=moCheckBox'NicePack.NiceGUISettings.ShowHLMessages'
|
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
|
||||||
Begin Object Class=moCheckBox Name=CancelFire
CaptionWidth=0.955000
Caption="Cancel reload by shooting"
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
OnCreateComponent=CancelFire.InternalOnCreateComponent
IniOption="@Internal"
Hint="If checked, you'll be able to cancel reload of converted weapons by shooting (when you have ammo)"
WinTop=0.050000
WinLeft=0.517500
WinWidth=0.287000
TabOrder=11
OnChange=NiceGUISettings.InternalOnChange
OnLoadINI=NiceGUISettings.InternalOnLoadINI
End Object
ch_CancelFire=moCheckBox'NicePack.NiceGUISettings.CancelFire'
|
OnCreateComponent=WeaponManagement.InternalOnCreateComponent
|
||||||
Begin Object Class=moCheckBox Name=CancelSwitching
CaptionWidth=0.955000
Caption="Cancel reload by switching weapons"
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
OnCreateComponent=CancelSwitching.InternalOnCreateComponent
IniOption="@Internal"
Hint="If checked, you'll be able to cancel reload of converted weapons by switching to different weapon"
WinTop=0.100000
WinLeft=0.517500
WinWidth=0.287000
TabOrder=12
OnChange=NiceGUISettings.InternalOnChange
OnLoadINI=NiceGUISettings.InternalOnLoadINI
End Object
ch_CancelSwitching=moCheckBox'NicePack.NiceGUISettings.CancelSwitching'
|
IniOption="@Internal"
|
||||||
Begin Object Class=moCheckBox Name=CancelNades
CaptionWidth=0.955000
Caption="Cancel reload by throwing grenades"
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
OnCreateComponent=CancelNades.InternalOnCreateComponent
IniOption="@Internal"
Hint="If checked, you'll be able to cancel reload of converted weapons by throwing a grenade"
WinTop=0.150000
WinLeft=0.517500
WinWidth=0.287000
TabOrder=13
OnChange=NiceGUISettings.InternalOnChange
OnLoadINI=NiceGUISettings.InternalOnLoadINI
End Object
ch_CancelNades=moCheckBox'NicePack.NiceGUISettings.CancelNades'
|
Hint="If checked, NicePack will use it's own system to manage weapon switching"
|
||||||
Begin Object Class=moCheckBox Name=CancelAiming
CaptionWidth=0.955000
Caption="Cancel reload by aiming"
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
OnCreateComponent=CancelAiming.InternalOnCreateComponent
IniOption="@Internal"
Hint="If checked, you'll be able to cancel reload of converted weapons by going into iron sights (when you have ammo)"
WinTop=0.200000
WinLeft=0.517500
WinWidth=0.287000
TabOrder=14
OnChange=NiceGUISettings.InternalOnChange
OnLoadINI=NiceGUISettings.InternalOnLoadINI
End Object
ch_CancelAiming=moCheckBox'NicePack.NiceGUISettings.CancelAiming'
|
WinTop=0.050000
|
||||||
Begin Object Class=moCheckBox Name=ServerReload
CaptionWidth=0.955000
Caption="My reload doesn't work"
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
OnCreateComponent=ServerReload.InternalOnCreateComponent
IniOption="@Internal"
Hint="Check this option ONLY in case converted weapons don't reload at all for you; this option should fix the problem, but then latency will affect both reload and active reload"
WinTop=0.250000
WinLeft=0.517500
WinWidth=0.287000
TabOrder=15
OnChange=NiceGUISettings.InternalOnChange
OnLoadINI=NiceGUISettings.InternalOnLoadINI
End Object
ch_ReloadWontWork=moCheckBox'NicePack.NiceGUISettings.ServerReload'
|
WinLeft=0.012500
|
||||||
Begin Object Class=GUISectionBackground Name=WEAPBG
Caption="General weapon settings"
WinTop=0.012500
WinWidth=0.495000
WinHeight=0.287500
RenderWeight=0.100100
OnPreDraw=WeaponsBG.InternalPreDraw
End Object
bg_WEAP=GUISectionBackground'NicePack.NiceGUISettings.WEAPBG'
|
WinWidth=0.278000
|
||||||
Begin Object Class=GUISectionBackground Name=RELOADBG
Caption="Weapon reload settings"
WinTop=0.012500
WinLeft=0.505000
WinWidth=0.495000
WinHeight=0.287500
RenderWeight=0.100100
OnPreDraw=WeaponsBG.InternalPreDraw
End Object
bg_RELOAD=GUISectionBackground'NicePack.NiceGUISettings.RELOADBG'
|
TabOrder=4
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_WeapManagement=moCheckBox'NicePack.NiceGUISettings.WeaponManagement'
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=AltSwitches
|
||||||
|
CaptionWidth=0.955000
|
||||||
|
Caption="Alt fire switches modes"
|
||||||
|
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
|
||||||
|
OnCreateComponent=AltSwitches.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="Assault-rifle only; if enabled - alt fire button switches between fire modes, otherwise - acts as an alt fire"
|
||||||
|
WinTop=0.100000
|
||||||
|
WinLeft=0.012500
|
||||||
|
WinWidth=0.278000
|
||||||
|
TabOrder=6
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_AltSwitches=moCheckBox'NicePack.NiceGUISettings.AltSwitches'
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=DispCounters
|
||||||
|
CaptionWidth=0.955000
|
||||||
|
Caption="Display counters"
|
||||||
|
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
|
||||||
|
OnCreateComponent=DispCounters.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="Toggles display of the various counters used by skills"
|
||||||
|
WinTop=0.150000
|
||||||
|
WinLeft=0.012500
|
||||||
|
WinWidth=0.278000
|
||||||
|
TabOrder=7
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_DispCounters=moCheckBox'NicePack.NiceGUISettings.DispCounters'
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=DispWeapProgress
|
||||||
|
CaptionWidth=0.955000
|
||||||
|
Caption="Display weapon progress"
|
||||||
|
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
|
||||||
|
OnCreateComponent=DispWeapProgress.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="Displays weapon progress rate, whoever it's defined by a skill that's using this functionality"
|
||||||
|
WinTop=0.200000
|
||||||
|
WinLeft=0.012500
|
||||||
|
WinWidth=0.278000
|
||||||
|
TabOrder=8
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_DisWeapProgress=moCheckBox'NicePack.NiceGUISettings.DispWeapProgress'
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=ShowHLMessages
|
||||||
|
CaptionWidth=0.955000
|
||||||
|
Caption="Show Hardcore Level messages"
|
||||||
|
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
|
||||||
|
OnCreateComponent=ShowHLMessages.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="Enable to be notified each time Hardcore Level is changed"
|
||||||
|
WinTop=0.300000
|
||||||
|
WinLeft=0.012500
|
||||||
|
WinWidth=0.278000
|
||||||
|
TabOrder=9
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_ShowHLMessages=moCheckBox'NicePack.NiceGUISettings.ShowHLMessages'
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=CancelFire
|
||||||
|
CaptionWidth=0.955000
|
||||||
|
Caption="Cancel reload by shooting"
|
||||||
|
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
|
||||||
|
OnCreateComponent=CancelFire.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="If checked, you'll be able to cancel reload of converted weapons by shooting (when you have ammo)"
|
||||||
|
WinTop=0.050000
|
||||||
|
WinLeft=0.517500
|
||||||
|
WinWidth=0.287000
|
||||||
|
TabOrder=11
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_CancelFire=moCheckBox'NicePack.NiceGUISettings.CancelFire'
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=CancelSwitching
|
||||||
|
CaptionWidth=0.955000
|
||||||
|
Caption="Cancel reload by switching weapons"
|
||||||
|
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
|
||||||
|
OnCreateComponent=CancelSwitching.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="If checked, you'll be able to cancel reload of converted weapons by switching to different weapon"
|
||||||
|
WinTop=0.100000
|
||||||
|
WinLeft=0.517500
|
||||||
|
WinWidth=0.287000
|
||||||
|
TabOrder=12
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_CancelSwitching=moCheckBox'NicePack.NiceGUISettings.CancelSwitching'
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=CancelNades
|
||||||
|
CaptionWidth=0.955000
|
||||||
|
Caption="Cancel reload by throwing grenades"
|
||||||
|
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
|
||||||
|
OnCreateComponent=CancelNades.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="If checked, you'll be able to cancel reload of converted weapons by throwing a grenade"
|
||||||
|
WinTop=0.150000
|
||||||
|
WinLeft=0.517500
|
||||||
|
WinWidth=0.287000
|
||||||
|
TabOrder=13
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_CancelNades=moCheckBox'NicePack.NiceGUISettings.CancelNades'
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=CancelAiming
|
||||||
|
CaptionWidth=0.955000
|
||||||
|
Caption="Cancel reload by aiming"
|
||||||
|
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
|
||||||
|
OnCreateComponent=CancelAiming.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="If checked, you'll be able to cancel reload of converted weapons by going into iron sights (when you have ammo)"
|
||||||
|
WinTop=0.200000
|
||||||
|
WinLeft=0.517500
|
||||||
|
WinWidth=0.287000
|
||||||
|
TabOrder=14
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_CancelAiming=moCheckBox'NicePack.NiceGUISettings.CancelAiming'
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=ServerReload
|
||||||
|
CaptionWidth=0.955000
|
||||||
|
Caption="My reload doesn't work"
|
||||||
|
ComponentClassName="ScrnBalanceSrv.ScrnGUICheckBoxButton"
|
||||||
|
OnCreateComponent=ServerReload.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="Check this option ONLY in case converted weapons don't reload at all for you; this option should fix the problem, but then latency will affect both reload and active reload"
|
||||||
|
WinTop=0.250000
|
||||||
|
WinLeft=0.517500
|
||||||
|
WinWidth=0.287000
|
||||||
|
TabOrder=15
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_ReloadWontWork=moCheckBox'NicePack.NiceGUISettings.ServerReload'
|
||||||
|
|
||||||
|
Begin Object Class=GUISectionBackground Name=WEAPBG
|
||||||
|
Caption="General weapon settings"
|
||||||
|
WinTop=0.012500
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.287500
|
||||||
|
RenderWeight=0.100100
|
||||||
|
OnPreDraw=WeaponsBG.InternalPreDraw
|
||||||
|
End Object
|
||||||
|
bg_WEAP=GUISectionBackground'NicePack.NiceGUISettings.WEAPBG'
|
||||||
|
|
||||||
|
Begin Object Class=GUISectionBackground Name=RELOADBG
|
||||||
|
Caption="Weapon reload settings"
|
||||||
|
WinTop=0.012500
|
||||||
|
WinLeft=0.505000
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.287500
|
||||||
|
RenderWeight=0.100100
|
||||||
|
OnPreDraw=WeaponsBG.InternalPreDraw
|
||||||
|
End Object
|
||||||
|
bg_RELOAD=GUISectionBackground'NicePack.NiceGUISettings.RELOADBG'
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,10 @@ function RegisterMutator(NicePack activePack){
|
|||||||
}
|
}
|
||||||
function bool isPoisoned(ScrnHumanPawn pwn){
|
function bool isPoisoned(ScrnHumanPawn pwn){
|
||||||
local Inventory I;
|
local Inventory I;
|
||||||
if(pwn.Inventory != none)
for(I = pwn.Inventory; I != none; I = I.Inventory)
if(I != none && MeanPoisonInventory(I) != none)
return true;
|
if(pwn.Inventory != none)
|
||||||
|
for(I = pwn.Inventory; I != none; I = I.Inventory)
|
||||||
|
if(I != none && MeanPoisonInventory(I) != none)
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
function PostRender(Canvas C){
|
function PostRender(Canvas C){
|
||||||
@ -41,31 +44,108 @@ function PostRender(Canvas C){
|
|||||||
if(C.ViewPort.Actor.Pawn == none) return;
|
if(C.ViewPort.Actor.Pawn == none) return;
|
||||||
nicePlayer = NicePlayerController(C.ViewPort.Actor.Pawn.Controller);
|
nicePlayer = NicePlayerController(C.ViewPort.Actor.Pawn.Controller);
|
||||||
niceWeap = NiceWeapon(C.ViewPort.Actor.Pawn.Weapon);
|
niceWeap = NiceWeapon(C.ViewPort.Actor.Pawn.Weapon);
|
||||||
if(nicePlayer == none)
return;
|
if(nicePlayer == none)
|
||||||
|
return;
|
||||||
scrnHUDInstance = ScrnHUD(nicePlayer.myHUD);
|
scrnHUDInstance = ScrnHUD(nicePlayer.myHUD);
|
||||||
//// Draw bleed and poison icons
|
//// Draw bleed and poison icons
|
||||||
C.SetDrawColor(255, 255, 255);
|
C.SetDrawColor(255, 255, 255);
|
||||||
szRI = class'MeanReplicationInfo'.static.findSZri(ViewportOwner.Actor.PlayerReplicationInfo);
|
szRI = class'MeanReplicationInfo'.static.findSZri(ViewportOwner.Actor.PlayerReplicationInfo);
|
||||||
offset = 4;
|
offset = 4;
|
||||||
if(szRI != none){
if(szRI.isBleeding){
x = C.ClipX * 0.007;
y = C.ClipY * 0.93 - size * offset;
C.SetPos(x, y);
C.DrawTile(bleedIcon, size, size, 0, 0, bleedIcon.MaterialUSize(), bleedIcon.MaterialVSize());
}
offset++;
if(isPoisoned(ScrnHumanPawn(C.ViewPort.Actor.Pawn))){
x = C.ClipX * 0.007;
y = C.ClipY * 0.93 - size * offset;
C.SetPos(x, y);
C.DrawTile(poisonIcon, size, size, 0, 0, poisonIcon.MaterialUSize(), poisonIcon.MaterialVSize());
}
|
if(szRI != none){
|
||||||
|
if(szRI.isBleeding){
|
||||||
|
x = C.ClipX * 0.007;
|
||||||
|
y = C.ClipY * 0.93 - size * offset;
|
||||||
|
C.SetPos(x, y);
|
||||||
|
C.DrawTile(bleedIcon, size, size, 0, 0, bleedIcon.MaterialUSize(), bleedIcon.MaterialVSize());
|
||||||
}
|
}
|
||||||
if(niceWeap != none && niceWeap.bShowSecondaryCharge && scrnHUDInstance != none){
C.ColorModulate.X = 1;
C.ColorModulate.Y = 1;
C.ColorModulate.Z = 1;
C.ColorModulate.W = scrnHUDInstance.HudOpacity / 255;
if(!scrnHUDInstance.bLightHud)
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsBG);
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsIcon);
scrnHUDInstance.SecondaryClipsDigits.value = niceWeap.secondaryCharge;
scrnHUDInstance.DrawNumericWidget(C, scrnHUDInstance.SecondaryClipsDigits, scrnHUDInstance.DigitsSmall);
|
offset++;
|
||||||
|
if(isPoisoned(ScrnHumanPawn(C.ViewPort.Actor.Pawn))){
|
||||||
|
x = C.ClipX * 0.007;
|
||||||
|
y = C.ClipY * 0.93 - size * offset;
|
||||||
|
C.SetPos(x, y);
|
||||||
|
C.DrawTile(poisonIcon, size, size, 0, 0, poisonIcon.MaterialUSize(), poisonIcon.MaterialVSize());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(niceWeap != none && niceWeap.bShowSecondaryCharge && scrnHUDInstance != none){
|
||||||
|
C.ColorModulate.X = 1;
|
||||||
|
C.ColorModulate.Y = 1;
|
||||||
|
C.ColorModulate.Z = 1;
|
||||||
|
C.ColorModulate.W = scrnHUDInstance.HudOpacity / 255;
|
||||||
|
if(!scrnHUDInstance.bLightHud)
|
||||||
|
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsBG);
|
||||||
|
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsIcon);
|
||||||
|
scrnHUDInstance.SecondaryClipsDigits.value = niceWeap.secondaryCharge;
|
||||||
|
scrnHUDInstance.DrawNumericWidget(C, scrnHUDInstance.SecondaryClipsDigits, scrnHUDInstance.DigitsSmall);
|
||||||
}
|
}
|
||||||
niceMutator = class'NicePack'.static.Myself(C.ViewPort.Actor.Pawn.Level);
|
niceMutator = class'NicePack'.static.Myself(C.ViewPort.Actor.Pawn.Level);
|
||||||
if(niceMutator == none)
return;
|
if(niceMutator == none)
|
||||||
|
return;
|
||||||
//// Draw counters
|
//// Draw counters
|
||||||
if(nicePlayer != none && nicePlayer.bFlagDisplayCounters){
x = C.ClipX * 0.5 - (64 + 2) * niceMutator.GetVisibleCountersAmount();
y = C.ClipY * 0.01;
for(i = 0;i < niceMutator.niceCounterSet.Length;i ++)
if(niceMutator.niceCounterSet[i].value != 0 || niceMutator.niceCounterSet[i].bShowZeroValue){
DrawCounter(C, niceMutator.niceCounterSet[i], x, y, C.ViewPort.Actor.Pawn.PlayerReplicationInfo.Team);
x += 128 + 4;
}
|
if(nicePlayer != none && nicePlayer.bFlagDisplayCounters){
|
||||||
|
x = C.ClipX * 0.5 - (64 + 2) * niceMutator.GetVisibleCountersAmount();
|
||||||
|
y = C.ClipY * 0.01;
|
||||||
|
for(i = 0;i < niceMutator.niceCounterSet.Length;i ++)
|
||||||
|
if(niceMutator.niceCounterSet[i].value != 0 || niceMutator.niceCounterSet[i].bShowZeroValue){
|
||||||
|
DrawCounter(C, niceMutator.niceCounterSet[i], x, y, C.ViewPort.Actor.Pawn.PlayerReplicationInfo.Team);
|
||||||
|
x += 128 + 4;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//// Draw weapons progress bars
|
//// Draw weapons progress bars
|
||||||
if(nicePlayer != none && nicePlayer.bFlagDisplayWeaponProgress){
x = C.ClipX - InventoryBoxWidth * C.ClipX - 5;
y = C.ClipY * 0.5 - 0.5 * (InventoryBoxHeight * C.ClipX + 4) * niceMutator.niceWeapProgressSet.Length;
for(i = 0;i < niceMutator.niceWeapProgressSet.Length;i ++){
DrawWeaponProgress(C, niceMutator.niceWeapProgressSet[i], x, y,
C.ViewPort.Actor.Pawn.PlayerReplicationInfo.Team);
y += (InventoryBoxHeight * C.ClipX + 4);
}
|
if(nicePlayer != none && nicePlayer.bFlagDisplayWeaponProgress){
|
||||||
|
x = C.ClipX - InventoryBoxWidth * C.ClipX - 5;
|
||||||
|
y = C.ClipY * 0.5 - 0.5 * (InventoryBoxHeight * C.ClipX + 4) * niceMutator.niceWeapProgressSet.Length;
|
||||||
|
for(i = 0;i < niceMutator.niceWeapProgressSet.Length;i ++){
|
||||||
|
DrawWeaponProgress(C, niceMutator.niceWeapProgressSet[i], x, y,
|
||||||
|
C.ViewPort.Actor.Pawn.PlayerReplicationInfo.Team);
|
||||||
|
y += (InventoryBoxHeight * C.ClipX + 4);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//// Draw invincibility bar
|
//// Draw invincibility bar
|
||||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||||
if(nicePawn != none && nicePawn.invincibilityTimer != 0.0){
C.SetDrawColor(255, 255, 255);
if(nicePawn.invincibilityTimer > 0)
barTexture = greenBar;
else
barTexture = redBar;
center = C.ClipX * 0.5;
y = C.ClipY * 0.75;
barWidth = C.ClipX * 0.2;
niceVet = class'NiceVeterancyTypes'.static.
GetVeterancy(nicePawn.PlayerReplicationInfo);
if(niceVet != none){
if(nicePawn.invincibilityTimer > 0){
barWidth *= nicePawn.invincibilityTimer
/ niceVet.static.GetInvincibilityDuration(nicePawn.KFPRI);
}
else{
barWidth *= nicePawn.invincibilityTimer /
class'NiceSkillZerkGunzerker'.default.cooldown;
}
}
else
barWidth = 0;
x = center - (barWidth / 2);
C.SetPos(x, y);
C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize());
if(nicePawn.safeMeleeMisses <= 0)
return;
missesSpace = 10;//64x64 => 16x16
missesHeight = 16;
missesWidth = nicePawn.safeMeleeMisses * 16
+ (nicePawn.safeMeleeMisses - 1) * missesSpace;
missesX = center - (missesWidth / 2);
missesY = y + (32 - missesHeight) * 0.5;
for(i = 0;i < nicePawn.safeMeleeMisses;i ++){
C.SetPos(missesX + i * (16 + missesSpace), missesY);
C.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize());
}
|
if(nicePawn != none && nicePawn.invincibilityTimer != 0.0){
|
||||||
|
C.SetDrawColor(255, 255, 255);
|
||||||
|
if(nicePawn.invincibilityTimer > 0)
|
||||||
|
barTexture = greenBar;
|
||||||
|
else
|
||||||
|
barTexture = redBar;
|
||||||
|
center = C.ClipX * 0.5;
|
||||||
|
y = C.ClipY * 0.75;
|
||||||
|
barWidth = C.ClipX * 0.2;
|
||||||
|
niceVet = class'NiceVeterancyTypes'.static.
|
||||||
|
GetVeterancy(nicePawn.PlayerReplicationInfo);
|
||||||
|
if(niceVet != none){
|
||||||
|
if(nicePawn.invincibilityTimer > 0){
|
||||||
|
barWidth *= nicePawn.invincibilityTimer
|
||||||
|
/ niceVet.static.GetInvincibilityDuration(nicePawn.KFPRI);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
barWidth *= nicePawn.invincibilityTimer /
|
||||||
|
class'NiceSkillZerkGunzerker'.default.cooldown;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
barWidth = 0;
|
||||||
|
x = center - (barWidth / 2);
|
||||||
|
C.SetPos(x, y);
|
||||||
|
C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize());
|
||||||
|
if(nicePawn.safeMeleeMisses <= 0)
|
||||||
|
return;
|
||||||
|
missesSpace = 10;//64x64 => 16x16
|
||||||
|
missesHeight = 16;
|
||||||
|
missesWidth = nicePawn.safeMeleeMisses * 16
|
||||||
|
+ (nicePawn.safeMeleeMisses - 1) * missesSpace;
|
||||||
|
missesX = center - (missesWidth / 2);
|
||||||
|
missesY = y + (32 - missesHeight) * 0.5;
|
||||||
|
for(i = 0;i < nicePawn.safeMeleeMisses;i ++){
|
||||||
|
C.SetPos(missesX + i * (16 + missesSpace), missesY);
|
||||||
|
C.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Draw cooldowns
|
// Draw cooldowns
|
||||||
if(nicePlayer.abilityManager == none)
return;
|
if(nicePlayer.abilityManager == none)
|
||||||
for(i = 0;i < nicePlayer.abilityManager.currentAbilitiesAmount;i ++)
DrawAbilityCooldown(C, i);
|
return;
|
||||||
|
for(i = 0;i < nicePlayer.abilityManager.currentAbilitiesAmount;i ++)
|
||||||
|
DrawAbilityCooldown(C, i);
|
||||||
}
|
}
|
||||||
function DrawCounter(Canvas C, NicePack.CounterDisplay counter, int x, int y, TeamInfo team){
|
function DrawCounter(Canvas C, NicePack.CounterDisplay counter, int x, int y, TeamInfo team){
|
||||||
local float borderSpace;
|
local float borderSpace;
|
||||||
@ -80,8 +160,10 @@ function DrawCounter(Canvas C, NicePack.CounterDisplay counter, int x, int y, Te
|
|||||||
backgroundHeight = 64;
|
backgroundHeight = 64;
|
||||||
borderSpace = 8;
|
borderSpace = 8;
|
||||||
// Reset color
|
// Reset color
|
||||||
if(team.teamIndex == 0)
C.SetDrawColor(255, 64, 64);
|
if(team.teamIndex == 0)
|
||||||
else
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B);
|
C.SetDrawColor(255, 64, 64);
|
||||||
|
else
|
||||||
|
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B);
|
||||||
// Draw background
|
// Draw background
|
||||||
C.SetPos(x, y);
|
C.SetPos(x, y);
|
||||||
textureToDraw = Texture(class'HUDKillingFloor'.default.HealthBG.WidgetTexture);
|
textureToDraw = Texture(class'HUDKillingFloor'.default.HealthBG.WidgetTexture);
|
||||||
@ -89,7 +171,8 @@ function DrawCounter(Canvas C, NicePack.CounterDisplay counter, int x, int y, Te
|
|||||||
// Draw appropriate icon
|
// Draw appropriate icon
|
||||||
C.SetPos(x + borderSpace, y + borderSpace);
|
C.SetPos(x + borderSpace, y + borderSpace);
|
||||||
textureToDraw = counter.icon;
|
textureToDraw = counter.icon;
|
||||||
C.DrawTile(textureToDraw, 64 - 2*borderSpace, 64 - 2 * borderSpace, 0, 0,
textureToDraw.MaterialUSize(), textureToDraw.MaterialVSize());
|
C.DrawTile(textureToDraw, 64 - 2*borderSpace, 64 - 2 * borderSpace, 0, 0,
|
||||||
|
textureToDraw.MaterialUSize(), textureToDraw.MaterialVSize());
|
||||||
// Draw numbers
|
// Draw numbers
|
||||||
textToDraw = string(counter.value);
|
textToDraw = string(counter.value);
|
||||||
C.Font = class'ROHUD'.Static.LoadSmallFontStatic(1);
|
C.Font = class'ROHUD'.Static.LoadSmallFontStatic(1);
|
||||||
@ -111,11 +194,16 @@ function DrawAbilityCooldown(Canvas C, int abilityIndex){
|
|||||||
if(C.ViewPort.Actor == none) return;
|
if(C.ViewPort.Actor == none) return;
|
||||||
nicePawn = NiceHumanPawn(C.ViewPort.Actor.Pawn);
|
nicePawn = NiceHumanPawn(C.ViewPort.Actor.Pawn);
|
||||||
nicePlayer = NicePlayerController(C.ViewPort.Actor.Pawn.Controller);
|
nicePlayer = NicePlayerController(C.ViewPort.Actor.Pawn.Controller);
|
||||||
if(nicePawn == none)
return;
|
if(nicePawn == none)
|
||||||
if(nicePlayer == none || nicePlayer.abilityManager == none)
return;
|
return;
|
||||||
|
if(nicePlayer == none || nicePlayer.abilityManager == none)
|
||||||
|
return;
|
||||||
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(nicePawn.KFPRI);
|
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(nicePawn.KFPRI);
|
||||||
skillTexture =
nicePlayer.abilityManager.currentAbilities[abilityIndex].
description.icon;
|
skillTexture =
|
||||||
if(skillTexture == none)
return;
|
nicePlayer.abilityManager.currentAbilities[abilityIndex].
|
||||||
|
description.icon;
|
||||||
|
if(skillTexture == none)
|
||||||
|
return;
|
||||||
// Set stuff up
|
// Set stuff up
|
||||||
x = C.ClipX * 0.265;
|
x = C.ClipX * 0.265;
|
||||||
x += abilityIndex * (10 + 64);
|
x += abilityIndex * (10 + 64);
|
||||||
@ -130,13 +218,24 @@ function DrawAbilityCooldown(Canvas C, int abilityIndex){
|
|||||||
C.SetPos(x, y);
|
C.SetPos(x, y);
|
||||||
C.DrawTile(skillTexture, 64, 64, 0, 0, skillTexture.MaterialUSize(), skillTexture.MaterialVSize());
|
C.DrawTile(skillTexture, 64, 64, 0, 0, skillTexture.MaterialUSize(), skillTexture.MaterialVSize());
|
||||||
// Draw additional background
|
// Draw additional background
|
||||||
abilityState =
nicePlayer.abilityManager.currentAbilities[abilityIndex].myState;
|
abilityState =
|
||||||
if(abilityState == ASTATE_ACTIVE)
C.SetDrawColor(255, 0, 0, 128);
|
nicePlayer.abilityManager.currentAbilities[abilityIndex].myState;
|
||||||
if(abilityState == ASTATE_COOLDOWN)
C.SetDrawColor(0, 0, 0, 192);
|
if(abilityState == ASTATE_ACTIVE)
|
||||||
if(abilityState != ASTATE_READY){
C.SetPos(x, y);
C.DrawTileStretched(Material'KillingFloorHUD.HUD.WhiteTexture', 64, 64);
|
C.SetDrawColor(255, 0, 0, 128);
|
||||||
|
if(abilityState == ASTATE_COOLDOWN)
|
||||||
|
C.SetDrawColor(0, 0, 0, 192);
|
||||||
|
if(abilityState != ASTATE_READY){
|
||||||
|
C.SetPos(x, y);
|
||||||
|
C.DrawTileStretched(Material'KillingFloorHUD.HUD.WhiteTexture', 64, 64);
|
||||||
}
|
}
|
||||||
// Draw cooldown stuff
|
// Draw cooldown stuff
|
||||||
if(abilityState == ASTATE_COOLDOWN){
C.SetDrawColor(255, 192, 192);
C.Font = class'ROHUD'.static.LoadSmallFontStatic(1);
C.TextSize(textToDraw, textWidth, textHeight);
C.SetPos(x, y);
C.SetPos(x + (64 - textWidth) / 2, y + (64 - textHeight) / 2 + 2);
C.DrawText(textToDraw);
|
if(abilityState == ASTATE_COOLDOWN){
|
||||||
|
C.SetDrawColor(255, 192, 192);
|
||||||
|
C.Font = class'ROHUD'.static.LoadSmallFontStatic(1);
|
||||||
|
C.TextSize(textToDraw, textWidth, textHeight);
|
||||||
|
C.SetPos(x, y);
|
||||||
|
C.SetPos(x + (64 - textWidth) / 2, y + (64 - textHeight) / 2 + 2);
|
||||||
|
C.DrawText(textToDraw);
|
||||||
}
|
}
|
||||||
// Draw calibration GUI
|
// Draw calibration GUI
|
||||||
DrawCalibrationStars(C);
|
DrawCalibrationStars(C);
|
||||||
@ -151,17 +250,26 @@ function DrawCalibrationStars(Canvas C){
|
|||||||
if(C.ViewPort == none) return;
|
if(C.ViewPort == none) return;
|
||||||
if(C.ViewPort.Actor == none) return;
|
if(C.ViewPort.Actor == none) return;
|
||||||
nicePawn = NiceHumanPawn(C.ViewPort.Actor.Pawn);
|
nicePawn = NiceHumanPawn(C.ViewPort.Actor.Pawn);
|
||||||
if(nicePawn == none)
return;
|
if(nicePawn == none)
|
||||||
if(nicePawn.currentCalibrationState == CALSTATE_NOABILITY)
return;
|
return;
|
||||||
|
if(nicePawn.currentCalibrationState == CALSTATE_NOABILITY)
|
||||||
|
return;
|
||||||
nicePlayer = NicePlayerController(nicePawn.controller);
|
nicePlayer = NicePlayerController(nicePawn.controller);
|
||||||
if(nicePlayer == none)
return;
|
if(nicePlayer == none)
|
||||||
|
return;
|
||||||
starsAmount = nicePawn.calibrationScore;
|
starsAmount = nicePawn.calibrationScore;
|
||||||
x = C.ClipX * 0.5;
|
x = C.ClipX * 0.5;
|
||||||
x -= 0.5 * (starsAmount * 32 + (starsAmount - 1) * 16);
|
x -= 0.5 * (starsAmount * 32 + (starsAmount - 1) * 16);
|
||||||
if(nicePawn.currentCalibrationState == CALSTATE_ACTIVE)
y = C.ClipY * 0.6;
|
if(nicePawn.currentCalibrationState == CALSTATE_ACTIVE)
|
||||||
else
y = C.ClipY * 0.02;
|
y = C.ClipY * 0.6;
|
||||||
|
else
|
||||||
|
y = C.ClipY * 0.02;
|
||||||
starTexture = Texture'KillingFloorHUD.HUD.Hud_Perk_Star';
|
starTexture = Texture'KillingFloorHUD.HUD.Hud_Perk_Star';
|
||||||
for(i = 0;i < starsAmount;i ++){
C.SetPos(x, y);
C.SetDrawColor(255, 255, 255);
C.DrawTile(starTexture, 32, 32, 0, 0, starTexture.MaterialUSize(), starTexture.MaterialVSize());
x += 32 + 16;
|
for(i = 0;i < starsAmount;i ++){
|
||||||
|
C.SetPos(x, y);
|
||||||
|
C.SetDrawColor(255, 255, 255);
|
||||||
|
C.DrawTile(starTexture, 32, 32, 0, 0, starTexture.MaterialUSize(), starTexture.MaterialVSize());
|
||||||
|
x += 32 + 16;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function DrawWeaponProgress(Canvas C, NicePack.WeaponProgressDisplay weapProgress, int x, int y, TeamInfo team){
|
function DrawWeaponProgress(Canvas C, NicePack.WeaponProgressDisplay weapProgress, int x, int y, TeamInfo team){
|
||||||
@ -172,23 +280,36 @@ function DrawWeaponProgress(Canvas C, NicePack.WeaponProgressDisplay weapProgres
|
|||||||
TempHeight = InventoryBoxHeight * C.ClipX;
|
TempHeight = InventoryBoxHeight * C.ClipX;
|
||||||
TempBorder = BorderSize * C.ClipX;
|
TempBorder = BorderSize * C.ClipX;
|
||||||
// Draw background bar
|
// Draw background bar
|
||||||
if(team.teamIndex == 0)
C.SetDrawColor(255, 64, 64, 64);
|
if(team.teamIndex == 0)
|
||||||
else
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B, 64);
|
C.SetDrawColor(255, 64, 64, 64);
|
||||||
|
else
|
||||||
|
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B, 64);
|
||||||
C.SetPos(x, y);
|
C.SetPos(x, y);
|
||||||
C.DrawTile(Texture'Engine.WhiteSquareTexture', TempWidth * weapProgress.progress, TempHeight, 0, 0, 2, 2);
|
C.DrawTile(Texture'Engine.WhiteSquareTexture', TempWidth * weapProgress.progress, TempHeight, 0, 0, 2, 2);
|
||||||
// Draw this item's Background
|
// Draw this item's Background
|
||||||
if(team.teamIndex == 0)
C.SetDrawColor(255, 64, 64);
|
if(team.teamIndex == 0)
|
||||||
else
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B);
|
C.SetDrawColor(255, 64, 64);
|
||||||
|
else
|
||||||
|
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B);
|
||||||
C.SetPos(x, y);
|
C.SetPos(x, y);
|
||||||
C.DrawTileStretched(Texture'KillingFloorHUD.HUD.HUD_Rectangel_W_Stroke', TempWidth, TempHeight);
|
C.DrawTileStretched(Texture'KillingFloorHUD.HUD.HUD_Rectangel_W_Stroke', TempWidth, TempHeight);
|
||||||
// Draw the Weapon's Icon over the Background
|
// Draw the Weapon's Icon over the Background
|
||||||
C.SetDrawColor(255, 255, 255);
|
C.SetDrawColor(255, 255, 255);
|
||||||
C.SetPos(x + TempBorder, y + TempBorder);
|
C.SetPos(x + TempBorder, y + TempBorder);
|
||||||
if(weapProgress.weapClass.default.HudImage != none)
C.DrawTile(weapProgress.weapClass.default.HudImage,
TempWidth - (2.0 * TempBorder), TempHeight - (2.0 * TempBorder), 0, 0, 256, 192);
|
if(weapProgress.weapClass.default.HudImage != none)
|
||||||
|
C.DrawTile(weapProgress.weapClass.default.HudImage,
|
||||||
|
TempWidth - (2.0 * TempBorder), TempHeight - (2.0 * TempBorder), 0, 0, 256, 192);
|
||||||
// Draw counter, if needed
|
// Draw counter, if needed
|
||||||
if(team.teamIndex == 0)
C.SetDrawColor(255, 64, 64);
|
if(team.teamIndex == 0)
|
||||||
else
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B);
|
C.SetDrawColor(255, 64, 64);
|
||||||
if(weapProgress.bShowCounter){
textToDraw = string(weapProgress.counter);
C.Font = class'ROHUD'.Static.LoadSmallFontStatic(5);
C.TextSize(textToDraw, textWidth, textHeight);
C.SetPos(x + TempWidth - TempBorder - textWidth, y + TempHeight - TempBorder - textHeight + 2);
C.DrawText(textToDraw);
|
else
|
||||||
|
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B);
|
||||||
|
if(weapProgress.bShowCounter){
|
||||||
|
textToDraw = string(weapProgress.counter);
|
||||||
|
C.Font = class'ROHUD'.Static.LoadSmallFontStatic(5);
|
||||||
|
C.TextSize(textToDraw, textWidth, textHeight);
|
||||||
|
C.SetPos(x + TempWidth - TempBorder - textWidth, y + TempHeight - TempBorder - textHeight + 2);
|
||||||
|
C.DrawText(textToDraw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta){
|
function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta){
|
||||||
@ -198,19 +319,54 @@ function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta){
|
|||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
// Find controller and current weapon
|
// Find controller and current weapon
|
||||||
nicePlayer = NicePlayerController(ViewportOwner.Actor);
|
nicePlayer = NicePlayerController(ViewportOwner.Actor);
|
||||||
if(nicePlayer == none)
return false;
|
if(nicePlayer == none)
|
||||||
if(nicePlayer.Pawn != none)
niceWeap = NiceWeapon(nicePlayer.Pawn.Weapon);
|
return false;
|
||||||
|
if(nicePlayer.Pawn != none)
|
||||||
|
niceWeap = NiceWeapon(nicePlayer.Pawn.Weapon);
|
||||||
// If this is a button press - detect alias
|
// If this is a button press - detect alias
|
||||||
if(Action == IST_Press){
// Check for reload command
Alias = nicePlayer.ConsoleCommand("KEYBINDING" @ nicePlayer.ConsoleCommand("KEYNAME" @ Key));
if(nicePlayer.bAdvReloadCheck)
bNeedsReload = InStr(Caps(Alias), "RELOADMENOW") > -1 || InStr(Caps(Alias), "RELOADWEAPON") > -1;
if(Divide(Alias, " ", LeftPart, RigthPart))
Alias = LeftPart;
if(Key == IK_MouseWheelUp || Key == IK_MouseWheelDown){
nicePlayer.UpdateSelectors();
if(nicePlayer.hasZeroSelector && nicePlayer.bUsesMouseWheel && nicePlayer.bNiceWeaponManagement){
nicePlayer.ScrollSelector(0, nicePlayer.bMouseWheelLoops, Key == IK_MouseWheelUp);
return true;
}
}
|
if(Action == IST_Press){
|
||||||
|
// Check for reload command
|
||||||
|
Alias = nicePlayer.ConsoleCommand("KEYBINDING" @ nicePlayer.ConsoleCommand("KEYNAME" @ Key));
|
||||||
|
if(nicePlayer.bAdvReloadCheck)
|
||||||
|
bNeedsReload = InStr(Caps(Alias), "RELOADMENOW") > -1 || InStr(Caps(Alias), "RELOADWEAPON") > -1;
|
||||||
|
if(Divide(Alias, " ", LeftPart, RigthPart))
|
||||||
|
Alias = LeftPart;
|
||||||
|
if(Key == IK_MouseWheelUp || Key == IK_MouseWheelDown){
|
||||||
|
nicePlayer.UpdateSelectors();
|
||||||
|
if(nicePlayer.hasZeroSelector && nicePlayer.bUsesMouseWheel && nicePlayer.bNiceWeaponManagement){
|
||||||
|
nicePlayer.ScrollSelector(0, nicePlayer.bMouseWheelLoops, Key == IK_MouseWheelUp);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
// Open trader on movement
|
// Open trader on movement
|
||||||
if(Alias ~= "MoveForward" || Alias ~= "MoveBackward" || Alias ~= "TurnLeft" || Alias ~= "TurnRight"
|| Alias ~= "StrafeLeft" || Alias ~= "StrafeRight" || Alias ~= "Axis"){
|
if(Alias ~= "MoveForward" || Alias ~= "MoveBackward" || Alias ~= "TurnLeft" || Alias ~= "TurnRight"
|
||||||
// Open trader if it's a pre-game
if(NicePackMutator.bIsPreGame && NicePackMutator.bInitialTrader && (NicePackMutator.bStillDuringInitTrader || !nicePlayer.bOpenedInitTrader) && nicePlayer.Pawn != none){
nicePlayer.ShowBuyMenu("Initial trader", KFHumanPawn(nicePlayer.Pawn).MaxCarryWeight);
nicePlayer.bOpenedInitTrader = true;
return true;
}
//nicePlayer.ClientOpenMenu("NicePack.NiceGUIBuyMenu",,"Test stuff",string(15));
|
|| Alias ~= "StrafeLeft" || Alias ~= "StrafeRight" || Alias ~= "Axis"){
|
||||||
|
|
||||||
|
// Open trader if it's a pre-game
|
||||||
|
if(NicePackMutator.bIsPreGame && NicePackMutator.bInitialTrader && (NicePackMutator.bStillDuringInitTrader || !nicePlayer.bOpenedInitTrader) && nicePlayer.Pawn != none){
|
||||||
|
nicePlayer.ShowBuyMenu("Initial trader", KFHumanPawn(nicePlayer.Pawn).MaxCarryWeight);
|
||||||
|
nicePlayer.bOpenedInitTrader = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
//nicePlayer.ClientOpenMenu("NicePack.NiceGUIBuyMenu",,"Test stuff",string(15));
|
||||||
}
|
}
|
||||||
// Reload if we've detected a reload alias in this button's command
|
// Reload if we've detected a reload alias in this button's command
|
||||||
if(niceWeap != none && !nicePlayer.bUseServerReload &&
(bNeedsReload || Alias ~= "ReloadMeNow" || Alias ~= "ReloadWeapon"))
niceWeap.ClientReloadMeNow();
|
if(niceWeap != none && !nicePlayer.bUseServerReload &&
|
||||||
|
(bNeedsReload || Alias ~= "ReloadMeNow" || Alias ~= "ReloadWeapon"))
|
||||||
|
niceWeap.ClientReloadMeNow();
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
bleedIcon=Texture'NicePackT.MeanZeds.bleedIcon'
poisonIcon=Texture'NicePackT.MeanZeds.poisonIcon'
greenBar=Texture'KFStoryGame_Tex.HUD.Batter_Fill'
redBar=Texture'KFStoryGame_Tex.HUD.BarFill_Red'
Shield=Texture'KillingFloorHUD.HUD.Hud_Shield'
Size=75.599998
InventoryBoxWidth=0.100000
InventoryBoxHeight=0.075000
BorderSize=0.005000
bVisible=True
|
{
|
||||||
|
bleedIcon=Texture'NicePackT.MeanZeds.bleedIcon'
|
||||||
|
poisonIcon=Texture'NicePackT.MeanZeds.poisonIcon'
|
||||||
|
greenBar=Texture'KFStoryGame_Tex.HUD.Batter_Fill'
|
||||||
|
redBar=Texture'KFStoryGame_Tex.HUD.BarFill_Red'
|
||||||
|
Shield=Texture'KillingFloorHUD.HUD.Hud_Shield'
|
||||||
|
Size=75.599998
|
||||||
|
InventoryBoxWidth=0.100000
|
||||||
|
InventoryBoxHeight=0.075000
|
||||||
|
BorderSize=0.005000
|
||||||
|
bVisible=True
|
||||||
}
|
}
|
||||||
|
@ -31,19 +31,37 @@ function InitComponent(GUIController MyController, GUIComponent MyOwner){
|
|||||||
Panels[4].ClassName = "ScrnBalanceSrv.ScrnTab_Achievements";
|
Panels[4].ClassName = "ScrnBalanceSrv.ScrnTab_Achievements";
|
||||||
Panels[4].Caption = "Achievements";
|
Panels[4].Caption = "Achievements";
|
||||||
Panels[4].Hint = "ScrN server-side achievements";
|
Panels[4].Hint = "ScrN server-side achievements";
|
||||||
if(default.bShowScrnMenu){
Panels[5].ClassName = "ScrnBalanceSrv.ScrnTab_UserSettings";
Panels[5].Caption = "ScrN Features";
Panels[5].Hint = "ScrN Balance features, settings and info";
indexAfterScrn = 6;
|
if(default.bShowScrnMenu){
|
||||||
|
Panels[5].ClassName = "ScrnBalanceSrv.ScrnTab_UserSettings";
|
||||||
|
Panels[5].Caption = "ScrN Features";
|
||||||
|
Panels[5].Hint = "ScrN Balance features, settings and info";
|
||||||
|
indexAfterScrn = 6;
|
||||||
}
|
}
|
||||||
else
indexAfterScrn = 5;
|
else
|
||||||
|
indexAfterScrn = 5;
|
||||||
Panels[indexAfterScrn].ClassName = "NicePack.NiceGUISettings";
|
Panels[indexAfterScrn].ClassName = "NicePack.NiceGUISettings";
|
||||||
Panels[indexAfterScrn].Caption = "Nice settings";
|
Panels[indexAfterScrn].Caption = "Nice settings";
|
||||||
Panels[indexAfterScrn].Hint = "Settings specific to NicePack mutator";
|
Panels[indexAfterScrn].Hint = "Settings specific to NicePack mutator";
|
||||||
Panels.Length = indexAfterScrn + 1;
|
Panels.Length = indexAfterScrn + 1;
|
||||||
Super(UT2K4PlayerLoginMenu).InitComponent(MyController, MyOwner);
|
Super(UT2K4PlayerLoginMenu).InitComponent(MyController, MyOwner);
|
||||||
// Mod menus
|
// Mod menus
|
||||||
foreach MyController.ViewportOwner.Actor.DynamicActors(class'SRMenuAddition',M)
if( M.bHasInit )
{
AddOnList[AddOnList.Length] = M;
M.NotifyMenuOpen(Self,MyController);
}
|
foreach MyController.ViewportOwner.Actor.DynamicActors(class'SRMenuAddition',M)
|
||||||
|
if( M.bHasInit )
|
||||||
|
{
|
||||||
|
AddOnList[AddOnList.Length] = M;
|
||||||
|
M.NotifyMenuOpen(Self,MyController);
|
||||||
|
}
|
||||||
|
|
||||||
s = GetSizingCaption();
|
s = GetSizingCaption();
|
||||||
for ( i = 0; i < Controls.Length; i++ )
|
for ( i = 0; i < Controls.Length; i++ )
|
||||||
{
if (GUIButton(Controls[i]) != none)
{
GUIButton(Controls[i]).bAutoSize = true;
GUIButton(Controls[i]).SizingCaption = s;
GUIButton(Controls[i]).AutoSizePadding.HorzPerc = 0.04;
GUIButton(Controls[i]).AutoSizePadding.VertPerc = 0.5;
}
|
{
|
||||||
|
if (GUIButton(Controls[i]) != none)
|
||||||
|
{
|
||||||
|
GUIButton(Controls[i]).bAutoSize = true;
|
||||||
|
GUIButton(Controls[i]).SizingCaption = s;
|
||||||
|
GUIButton(Controls[i]).AutoSizePadding.HorzPerc = 0.04;
|
||||||
|
GUIButton(Controls[i]).AutoSizePadding.VertPerc = 0.5;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
s = class'KFTab_MidGamePerks'.default.PlayerStyleName;
|
s = class'KFTab_MidGamePerks'.default.PlayerStyleName;
|
||||||
PlayerStyle = MyController.GetStyle(s, fs);
|
PlayerStyle = MyController.GetStyle(s, fs);
|
||||||
|
@ -1,13 +1,22 @@
|
|||||||
class NiceLobbyFooter extends ScrnLobbyFooter;
|
class NiceLobbyFooter extends ScrnLobbyFooter;
|
||||||
function bool OnFooterClick(GUIComponent Sender)
|
function bool OnFooterClick(GUIComponent Sender)
|
||||||
{
|
{
|
||||||
if (Sender == b_Perks){
PlayerOwner().ClientOpenMenu(string(Class'NicePack.NiceInvasionLoginMenu'), false);
return false;
|
if (Sender == b_Perks){
|
||||||
|
PlayerOwner().ClientOpenMenu(string(Class'NicePack.NiceInvasionLoginMenu'), false);
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
else if(Sender == b_ViewMap){
if(KF_StoryGRI(PlayerOwner().Level.GRI) == none){
LobbyMenu(PageOwner).bAllowClose = true;
PlayerOwner().ClientCloseMenu(true, false);
LobbyMenu(PageOwner).bAllowClose = false;
}
|
else if(Sender == b_ViewMap){
|
||||||
|
if(KF_StoryGRI(PlayerOwner().Level.GRI) == none){
|
||||||
|
LobbyMenu(PageOwner).bAllowClose = true;
|
||||||
|
PlayerOwner().ClientCloseMenu(true, false);
|
||||||
|
LobbyMenu(PageOwner).bAllowClose = false;
|
||||||
}
|
}
|
||||||
else if(Sender == b_Ready){
return super(LobbyFooter).OnFooterClick(Sender); // bypass serverperks
|
|
||||||
}
|
}
|
||||||
else
return super.OnFooterClick(Sender);
|
else if(Sender == b_Ready){
|
||||||
|
return super(LobbyFooter).OnFooterClick(Sender); // bypass serverperks
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return super.OnFooterClick(Sender);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,12 @@
|
|||||||
class NiceLobbyMenu extends ScrnLobbyMenu;
|
class NiceLobbyMenu extends ScrnLobbyMenu;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
Begin Object Class=NiceLobbyFooter Name=BuyFooter
RenderWeight=0.300000
TabOrder=8
bBoundToParent=False
bScaleToParent=False
OnPreDraw=BuyFooter.InternalOnPreDraw
End Object
t_Footer=NiceLobbyFooter'NicePack.NiceLobbyMenu.BuyFooter'
|
{
|
||||||
|
Begin Object Class=NiceLobbyFooter Name=BuyFooter
|
||||||
|
RenderWeight=0.300000
|
||||||
|
TabOrder=8
|
||||||
|
bBoundToParent=False
|
||||||
|
bScaleToParent=False
|
||||||
|
OnPreDraw=BuyFooter.InternalOnPreDraw
|
||||||
|
End Object
|
||||||
|
t_Footer=NiceLobbyFooter'NicePack.NiceLobbyMenu.BuyFooter'
|
||||||
}
|
}
|
||||||
|
@ -6,21 +6,167 @@ function ShowPanel(bool bShow){
|
|||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
Super.ShowPanel(bShow);
|
Super.ShowPanel(bShow);
|
||||||
nicePlayer = NicePlayerController(PlayerOwner());
|
nicePlayer = NicePlayerController(PlayerOwner());
|
||||||
if(nicePlayer != none)
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(nicePlayer.PlayerReplicationInfo);
|
if(nicePlayer != none)
|
||||||
if(niceVet != none){
for(i = 0;i < 5;i ++){
skillButtonA[i].skillIndex = i;
skillButtonB[i].skillIndex = i;
skillButtonA[i].skillPerkIndex = niceVet.default.PerkIndex;
skillButtonB[i].skillPerkIndex = niceVet.default.PerkIndex;
skillButtonA[i].isAltSkill = false;
skillButtonB[i].isAltSkill = true;
skillButtonA[i].associatedSkill = niceVet.default.SkillGroupA[i];
skillButtonB[i].associatedSkill = niceVet.default.SkillGroupB[i];
}
|
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(nicePlayer.PlayerReplicationInfo);
|
||||||
|
if(niceVet != none){
|
||||||
|
for(i = 0;i < 5;i ++){
|
||||||
|
skillButtonA[i].skillIndex = i;
|
||||||
|
skillButtonB[i].skillIndex = i;
|
||||||
|
skillButtonA[i].skillPerkIndex = niceVet.default.PerkIndex;
|
||||||
|
skillButtonB[i].skillPerkIndex = niceVet.default.PerkIndex;
|
||||||
|
skillButtonA[i].isAltSkill = false;
|
||||||
|
skillButtonB[i].isAltSkill = true;
|
||||||
|
skillButtonA[i].associatedSkill = niceVet.default.SkillGroupA[i];
|
||||||
|
skillButtonB[i].associatedSkill = niceVet.default.SkillGroupB[i];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// size = (x=0.0125, y=0.0) ; (w=1.0, h=0.865)
|
// size = (x=0.0125, y=0.0) ; (w=1.0, h=0.865)
|
||||||
// setup caption
|
// setup caption
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
Begin Object Class=NiceGUIPerkButton Name=btn1A
WinTop=0.012500
WinWidth=0.495000
WinHeight=0.160000
RenderWeight=2.000000
TabOrder=1
bBoundToParent=True
bScaleToParent=True
bMouseOverSound=False
OnClickSound=CS_None
OnKeyEvent=btn1A.InternalOnKeyEvent
End Object
skillButtonA(0)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn1A'
|
{
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn2A
WinTop=0.188500
WinWidth=0.495000
WinHeight=0.160000
RenderWeight=2.000000
TabOrder=3
bBoundToParent=True
bScaleToParent=True
bMouseOverSound=False
OnClickSound=CS_None
OnKeyEvent=btn2A.InternalOnKeyEvent
End Object
skillButtonA(1)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn2A'
|
Begin Object Class=NiceGUIPerkButton Name=btn1A
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn3A
WinTop=0.364500
WinWidth=0.495000
WinHeight=0.160000
RenderWeight=2.000000
TabOrder=5
bBoundToParent=True
bScaleToParent=True
bMouseOverSound=False
OnClickSound=CS_None
OnKeyEvent=btn3A.InternalOnKeyEvent
End Object
skillButtonA(2)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn3A'
|
WinTop=0.012500
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn4A
WinTop=0.540500
WinWidth=0.495000
WinHeight=0.160000
RenderWeight=2.000000
TabOrder=7
bBoundToParent=True
bScaleToParent=True
bMouseOverSound=False
OnClickSound=CS_None
OnKeyEvent=btn4A.InternalOnKeyEvent
End Object
skillButtonA(3)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn4A'
|
WinWidth=0.495000
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn5A
WinTop=0.716500
WinWidth=0.495000
WinHeight=0.160000
RenderWeight=2.000000
TabOrder=9
bBoundToParent=True
bScaleToParent=True
bMouseOverSound=False
OnClickSound=CS_None
OnKeyEvent=btn5A.InternalOnKeyEvent
End Object
skillButtonA(4)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn5A'
|
WinHeight=0.160000
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn1B
WinTop=0.012500
WinLeft=0.505000
WinWidth=0.495000
WinHeight=0.160000
RenderWeight=2.000000
TabOrder=2
bBoundToParent=True
bScaleToParent=True
bMouseOverSound=False
OnClickSound=CS_None
OnKeyEvent=btn1B.InternalOnKeyEvent
End Object
skillButtonB(0)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn1B'
|
RenderWeight=2.000000
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn2B
WinTop=0.188500
WinLeft=0.505000
WinWidth=0.495000
WinHeight=0.160000
RenderWeight=2.000000
TabOrder=4
bBoundToParent=True
bScaleToParent=True
bMouseOverSound=False
OnClickSound=CS_None
OnKeyEvent=btn2B.InternalOnKeyEvent
End Object
skillButtonB(1)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn2B'
|
TabOrder=1
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn3B
WinTop=0.364500
WinLeft=0.505000
WinWidth=0.495000
WinHeight=0.160000
RenderWeight=2.000000
TabOrder=6
bBoundToParent=True
bScaleToParent=True
bMouseOverSound=False
OnClickSound=CS_None
OnKeyEvent=btn3B.InternalOnKeyEvent
End Object
skillButtonB(2)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn3B'
|
bBoundToParent=True
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn4B
WinTop=0.540500
WinLeft=0.505000
WinWidth=0.495000
WinHeight=0.160000
RenderWeight=2.000000
TabOrder=8
bBoundToParent=True
bScaleToParent=True
bMouseOverSound=False
OnClickSound=CS_None
OnKeyEvent=btn4B.InternalOnKeyEvent
End Object
skillButtonB(3)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn4B'
|
bScaleToParent=True
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn5B
WinTop=0.716500
WinLeft=0.505000
WinWidth=0.495000
WinHeight=0.160000
RenderWeight=2.000000
TabOrder=10
bBoundToParent=True
bScaleToParent=True
bMouseOverSound=False
OnClickSound=CS_None
OnKeyEvent=btn5B.InternalOnKeyEvent
End Object
skillButtonB(4)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn5B'
|
bMouseOverSound=False
|
||||||
|
OnClickSound=CS_None
|
||||||
|
OnKeyEvent=btn1A.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
skillButtonA(0)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn1A'
|
||||||
|
|
||||||
|
Begin Object Class=NiceGUIPerkButton Name=btn2A
|
||||||
|
WinTop=0.188500
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.160000
|
||||||
|
RenderWeight=2.000000
|
||||||
|
TabOrder=3
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
bMouseOverSound=False
|
||||||
|
OnClickSound=CS_None
|
||||||
|
OnKeyEvent=btn2A.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
skillButtonA(1)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn2A'
|
||||||
|
|
||||||
|
Begin Object Class=NiceGUIPerkButton Name=btn3A
|
||||||
|
WinTop=0.364500
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.160000
|
||||||
|
RenderWeight=2.000000
|
||||||
|
TabOrder=5
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
bMouseOverSound=False
|
||||||
|
OnClickSound=CS_None
|
||||||
|
OnKeyEvent=btn3A.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
skillButtonA(2)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn3A'
|
||||||
|
|
||||||
|
Begin Object Class=NiceGUIPerkButton Name=btn4A
|
||||||
|
WinTop=0.540500
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.160000
|
||||||
|
RenderWeight=2.000000
|
||||||
|
TabOrder=7
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
bMouseOverSound=False
|
||||||
|
OnClickSound=CS_None
|
||||||
|
OnKeyEvent=btn4A.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
skillButtonA(3)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn4A'
|
||||||
|
|
||||||
|
Begin Object Class=NiceGUIPerkButton Name=btn5A
|
||||||
|
WinTop=0.716500
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.160000
|
||||||
|
RenderWeight=2.000000
|
||||||
|
TabOrder=9
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
bMouseOverSound=False
|
||||||
|
OnClickSound=CS_None
|
||||||
|
OnKeyEvent=btn5A.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
skillButtonA(4)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn5A'
|
||||||
|
|
||||||
|
Begin Object Class=NiceGUIPerkButton Name=btn1B
|
||||||
|
WinTop=0.012500
|
||||||
|
WinLeft=0.505000
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.160000
|
||||||
|
RenderWeight=2.000000
|
||||||
|
TabOrder=2
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
bMouseOverSound=False
|
||||||
|
OnClickSound=CS_None
|
||||||
|
OnKeyEvent=btn1B.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
skillButtonB(0)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn1B'
|
||||||
|
|
||||||
|
Begin Object Class=NiceGUIPerkButton Name=btn2B
|
||||||
|
WinTop=0.188500
|
||||||
|
WinLeft=0.505000
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.160000
|
||||||
|
RenderWeight=2.000000
|
||||||
|
TabOrder=4
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
bMouseOverSound=False
|
||||||
|
OnClickSound=CS_None
|
||||||
|
OnKeyEvent=btn2B.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
skillButtonB(1)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn2B'
|
||||||
|
|
||||||
|
Begin Object Class=NiceGUIPerkButton Name=btn3B
|
||||||
|
WinTop=0.364500
|
||||||
|
WinLeft=0.505000
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.160000
|
||||||
|
RenderWeight=2.000000
|
||||||
|
TabOrder=6
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
bMouseOverSound=False
|
||||||
|
OnClickSound=CS_None
|
||||||
|
OnKeyEvent=btn3B.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
skillButtonB(2)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn3B'
|
||||||
|
|
||||||
|
Begin Object Class=NiceGUIPerkButton Name=btn4B
|
||||||
|
WinTop=0.540500
|
||||||
|
WinLeft=0.505000
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.160000
|
||||||
|
RenderWeight=2.000000
|
||||||
|
TabOrder=8
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
bMouseOverSound=False
|
||||||
|
OnClickSound=CS_None
|
||||||
|
OnKeyEvent=btn4B.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
skillButtonB(3)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn4B'
|
||||||
|
|
||||||
|
Begin Object Class=NiceGUIPerkButton Name=btn5B
|
||||||
|
WinTop=0.716500
|
||||||
|
WinLeft=0.505000
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.160000
|
||||||
|
RenderWeight=2.000000
|
||||||
|
TabOrder=10
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
bMouseOverSound=False
|
||||||
|
OnClickSound=CS_None
|
||||||
|
OnKeyEvent=btn5B.InternalOnKeyEvent
|
||||||
|
End Object
|
||||||
|
skillButtonB(4)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn5B'
|
||||||
}
|
}
|
||||||
|
@ -7,13 +7,21 @@ function RegisterMutator(NicePack activePack){
|
|||||||
function OverrideMonsterHealth(KFMonster M){}
|
function OverrideMonsterHealth(KFMonster M){}
|
||||||
/*event InitGame(string Options, out string Error){
|
/*event InitGame(string Options, out string Error){
|
||||||
local int i, j;
|
local int i, j;
|
||||||
if(ScrnGameLength == none)
ScrnGameLength = new(none, string(KFGameLength)) class'ScrnGameLength';
|
if(ScrnGameLength == none)
|
||||||
|
ScrnGameLength = new(none, string(KFGameLength)) class'ScrnGameLength';
|
||||||
for(i = 0;i < ScrnGameLength.
|
for(i = 0;i < ScrnGameLength.
|
||||||
}*/
|
}*/
|
||||||
function int SpawnSquad(ZombieVolume ZVol, out array< class<KFMonster> > Squad, optional bool bLogSpawned ){
|
function int SpawnSquad(ZombieVolume ZVol, out array< class<KFMonster> > Squad, optional bool bLogSpawned ){
|
||||||
local int i, j;
|
local int i, j;
|
||||||
local array<NicePack.ZedRecord> zedDatabase;
|
local array<NicePack.ZedRecord> zedDatabase;
|
||||||
if(NicePackMutator != none){
zedDatabase = NicePackMutator.zedDatabase;
for(i = 0;i < zedDatabase.Length;i ++){
for(j = 0;j < Squad.Length;j ++){
if(zedDatabase[i].bNeedsReplacement && zedDatabase[i].ZedType == Squad[j])
Squad[j] = zeddatabase[i].MeanZedType;
}
}
|
if(NicePackMutator != none){
|
||||||
|
zedDatabase = NicePackMutator.zedDatabase;
|
||||||
|
for(i = 0;i < zedDatabase.Length;i ++){
|
||||||
|
for(j = 0;j < Squad.Length;j ++){
|
||||||
|
if(zedDatabase[i].bNeedsReplacement && zedDatabase[i].ZedType == Squad[j])
|
||||||
|
Squad[j] = zeddatabase[i].MeanZedType;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return super.SpawnSquad(ZVol, Squad, bLogSpawned);
|
return super.SpawnSquad(ZVol, Squad, bLogSpawned);
|
||||||
}
|
}
|
||||||
@ -24,18 +32,37 @@ function SetupWave(){
|
|||||||
}
|
}
|
||||||
function RestartPlayer(Controller aPlayer){
|
function RestartPlayer(Controller aPlayer){
|
||||||
Super.RestartPlayer(aPlayer);
|
Super.RestartPlayer(aPlayer);
|
||||||
if(aPlayer.Pawn != none && NicePlayerController(aPlayer) != none)
NicePlayerController(aPlayer).PawnSpawned();
|
if(aPlayer.Pawn != none && NicePlayerController(aPlayer) != none)
|
||||||
|
NicePlayerController(aPlayer).PawnSpawned();
|
||||||
}
|
}
|
||||||
State MatchInProgress{
|
State MatchInProgress{
|
||||||
function BeginState(){
Super(Invasion).BeginState();
|
function BeginState(){
|
||||||
WaveNum = InitialWave;
InvasionGameReplicationInfo(GameReplicationInfo).WaveNumber = WaveNum;
|
Super(Invasion).BeginState();
|
||||||
if(NicePackMutator.bInitialTrader)
WaveCountDown = NicePackMutator.initialTraderTime + 5;
else
WaveCountDown = 10;
|
|
||||||
SetupPickups();
if(ScrnGameLength != none && !ScrnGameLength.LoadWave(WaveNum))
DoWaveEnd();
|
WaveNum = InitialWave;
|
||||||
// Event call
NicePackMutator.MatchBegan();
|
InvasionGameReplicationInfo(GameReplicationInfo).WaveNumber = WaveNum;
|
||||||
|
|
||||||
|
if(NicePackMutator.bInitialTrader)
|
||||||
|
WaveCountDown = NicePackMutator.initialTraderTime + 5;
|
||||||
|
else
|
||||||
|
WaveCountDown = 10;
|
||||||
|
|
||||||
|
SetupPickups();
|
||||||
|
if(ScrnGameLength != none && !ScrnGameLength.LoadWave(WaveNum))
|
||||||
|
DoWaveEnd();
|
||||||
|
|
||||||
|
// Event call
|
||||||
|
NicePackMutator.MatchBegan();
|
||||||
}
|
}
|
||||||
function DoWaveEnd(){
Super.DoWaveEnd();
// Event call
NicePackMutator.TraderStart();
|
function DoWaveEnd(){
|
||||||
|
Super.DoWaveEnd();
|
||||||
|
// Event call
|
||||||
|
NicePackMutator.TraderStart();
|
||||||
}
|
}
|
||||||
function StartWaveBoss(){
Super.StartWaveBoss();
// Event call
NicePackMutator.WaveStart();
|
function StartWaveBoss(){
|
||||||
|
Super.StartWaveBoss();
|
||||||
|
// Event call
|
||||||
|
NicePackMutator.WaveStart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function DramaticEvent(float BaseZedTimePossibility, optional float DesiredZedTimeDuration){
|
function DramaticEvent(float BaseZedTimePossibility, optional float DesiredZedTimeDuration){
|
||||||
@ -43,13 +70,34 @@ function DramaticEvent(float BaseZedTimePossibility, optional float DesiredZedTi
|
|||||||
bWasZedTime = bZEDTimeActive;
|
bWasZedTime = bZEDTimeActive;
|
||||||
Super.DramaticEvent(BaseZedTimePossibility, DesiredZedTimeDuration);
|
Super.DramaticEvent(BaseZedTimePossibility, DesiredZedTimeDuration);
|
||||||
// Call event
|
// Call event
|
||||||
if(!bWasZedTime && bZEDTimeActive)
NicePackMutator.ZedTimeActivated();
|
if(!bWasZedTime && bZEDTimeActive)
|
||||||
|
NicePackMutator.ZedTimeActivated();
|
||||||
}
|
}
|
||||||
event Tick(float DeltaTime){
|
event Tick(float DeltaTime){
|
||||||
local float TrueTimeFactor;
|
local float TrueTimeFactor;
|
||||||
local Controller C;
|
local Controller C;
|
||||||
if(bZEDTimeActive){
TrueTimeFactor = 1.1 / Level.TimeDilation;
CurrentZEDTimeDuration -= DeltaTime * TrueTimeFactor;
if(CurrentZEDTimeDuration < (ZEDTimeDuration*0.166) && CurrentZEDTimeDuration > 0 ){
if(!bSpeedingBackUp){
bSpeedingBackUp = true;
|
if(bZEDTimeActive){
|
||||||
for(C = Level.ControllerList;C != none;C = C.NextController){
if(KFPlayerController(C)!= none)
KFPlayerController(C).ClientExitZedTime();
}
}
SetGameSpeed(Lerp( (CurrentZEDTimeDuration/(ZEDTimeDuration*0.166)), 1.0, 0.2 ));
}
if(CurrentZEDTimeDuration <= 0){
if(bZEDTimeActive)
NicePackMutator.ZedTimeDeactivated();
bZEDTimeActive = false;
bSpeedingBackUp = false;
SetGameSpeed(1.0);
ZedTimeExtensionsUsed = 0;
}
|
TrueTimeFactor = 1.1 / Level.TimeDilation;
|
||||||
|
CurrentZEDTimeDuration -= DeltaTime * TrueTimeFactor;
|
||||||
|
if(CurrentZEDTimeDuration < (ZEDTimeDuration*0.166) && CurrentZEDTimeDuration > 0 ){
|
||||||
|
if(!bSpeedingBackUp){
|
||||||
|
bSpeedingBackUp = true;
|
||||||
|
|
||||||
|
for(C = Level.ControllerList;C != none;C = C.NextController){
|
||||||
|
if(KFPlayerController(C)!= none)
|
||||||
|
KFPlayerController(C).ClientExitZedTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetGameSpeed(Lerp( (CurrentZEDTimeDuration/(ZEDTimeDuration*0.166)), 1.0, 0.2 ));
|
||||||
|
}
|
||||||
|
if(CurrentZEDTimeDuration <= 0){
|
||||||
|
if(bZEDTimeActive)
|
||||||
|
NicePackMutator.ZedTimeDeactivated();
|
||||||
|
bZEDTimeActive = false;
|
||||||
|
bSpeedingBackUp = false;
|
||||||
|
SetGameSpeed(1.0);
|
||||||
|
ZedTimeExtensionsUsed = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function Killed(Controller Killer, Controller Killed, Pawn KilledPawn, class<DamageType> dmgType){
|
function Killed(Controller Killer, Controller Killed, Pawn KilledPawn, class<DamageType> dmgType){
|
||||||
@ -57,7 +105,29 @@ function Killed(Controller Killer, Controller Killed, Pawn KilledPawn, class<Dam
|
|||||||
local ScrnGameRules scrnRules;
|
local ScrnGameRules scrnRules;
|
||||||
local KFSteamStatsAndAchievements StatsAndAchievements;
|
local KFSteamStatsAndAchievements StatsAndAchievements;
|
||||||
Super.Killed(Killer, Killed, KilledPawn, dmgType);
|
Super.Killed(Killer, Killed, KilledPawn, dmgType);
|
||||||
if(PlayerController(Killer) != none){
if(NiceMonster(KilledPawn) != none && Killed != Killer){
StatsAndAchievements = KFSteamStatsAndAchievements(PlayerController(Killer).SteamStatsAndAchievements);
if(StatsAndAchievements != none){
if(KilledPawn.IsA('NiceZombieStalker') || KilledPawn.IsA('MeanZombieStalker')){
if(class<NiceDamTypeWinchester>(dmgType) != none)
StatsAndAchievements.AddStalkerKillWithLAR();
}
else if(KilledPawn.IsA('NiceZombieClot') || KilledPawn.IsA('MeanZombieClot')){
if(class<NiceDamTypeWinchester>(dmgType) != none)
KFSteamStatsAndAchievements(PlayerController(Killer).SteamStatsAndAchievements).AddClotKillWithLAR();
}
if(class<NiceWeaponDamageType>(dmgType) != none){
for(rules = Level.Game.GameRulesModifiers;rules != none;rules = rules.NextGameRules)
if(ScrnGameRules(rules) != none){
scrnRules = ScrnGameRules(rules);
break;
}
if(scrnRules != none)
class<NiceWeaponDamageType>(dmgType).Static.AwardNiceKill(StatsAndAchievements, KFPlayerController(Killer), KFMonster(KilledPawn), scrnRules.HardcoreLevel);
}
}
}
|
if(PlayerController(Killer) != none){
|
||||||
|
if(NiceMonster(KilledPawn) != none && Killed != Killer){
|
||||||
|
StatsAndAchievements = KFSteamStatsAndAchievements(PlayerController(Killer).SteamStatsAndAchievements);
|
||||||
|
if(StatsAndAchievements != none){
|
||||||
|
if(KilledPawn.IsA('NiceZombieStalker') || KilledPawn.IsA('MeanZombieStalker')){
|
||||||
|
if(class<NiceDamTypeWinchester>(dmgType) != none)
|
||||||
|
StatsAndAchievements.AddStalkerKillWithLAR();
|
||||||
|
}
|
||||||
|
else if(KilledPawn.IsA('NiceZombieClot') || KilledPawn.IsA('MeanZombieClot')){
|
||||||
|
if(class<NiceDamTypeWinchester>(dmgType) != none)
|
||||||
|
KFSteamStatsAndAchievements(PlayerController(Killer).SteamStatsAndAchievements).AddClotKillWithLAR();
|
||||||
|
}
|
||||||
|
if(class<NiceWeaponDamageType>(dmgType) != none){
|
||||||
|
for(rules = Level.Game.GameRulesModifiers;rules != none;rules = rules.NextGameRules)
|
||||||
|
if(ScrnGameRules(rules) != none){
|
||||||
|
scrnRules = ScrnGameRules(rules);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(scrnRules != none)
|
||||||
|
class<NiceWeaponDamageType>(dmgType).Static.AwardNiceKill(StatsAndAchievements, KFPlayerController(Killer), KFMonster(KilledPawn), scrnRules.HardcoreLevel);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Reloaded to award damage
|
// Reloaded to award damage
|
||||||
@ -65,10 +135,17 @@ function int ReduceDamage(int Damage, pawn injured, pawn instigatedBy, vector Hi
|
|||||||
local NiceMonster niceZed;
|
local NiceMonster niceZed;
|
||||||
local KFPlayerController PC;
|
local KFPlayerController PC;
|
||||||
niceZed = NiceMonster(Injured);
|
niceZed = NiceMonster(Injured);
|
||||||
if(niceZed != none){
if(instigatedBy != none){
PC = KFPlayerController(instigatedBy.Controller);
if(class<NiceWeaponDamageType>(damageType) != none && PC != none)
class<NiceWeaponDamageType>(damageType).Static.AwardNiceDamage(KFSteamStatsAndAchievements(PC.SteamStatsAndAchievements), Clamp(Damage, 1, Injured.Health), niceZed.scrnRules.HardcoreLevel);
}
|
if(niceZed != none){
|
||||||
|
if(instigatedBy != none){
|
||||||
|
PC = KFPlayerController(instigatedBy.Controller);
|
||||||
|
if(class<NiceWeaponDamageType>(damageType) != none && PC != none)
|
||||||
|
class<NiceWeaponDamageType>(damageType).Static.AwardNiceDamage(KFSteamStatsAndAchievements(PC.SteamStatsAndAchievements), Clamp(Damage, 1, Injured.Health), niceZed.scrnRules.HardcoreLevel);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return Super.ReduceDamage(Damage, injured, InstigatedBy, HitLocation, Momentum, DamageType);
|
return Super.ReduceDamage(Damage, injured, InstigatedBy, HitLocation, Momentum, DamageType);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
GameName="Nice Floor"
Description="Nice Edition of ScrN Killing Floor game mode (ScrnGameType)."
|
{
|
||||||
|
GameName="Nice Floor"
|
||||||
|
Description="Nice Edition of ScrN Killing Floor game mode (ScrnGameType)."
|
||||||
}
|
}
|
||||||
|
@ -1,23 +1,39 @@
|
|||||||
class NiceRules extends GameRules;
|
class NiceRules extends GameRules;
|
||||||
var ScrnGameRules ScrnRules;
|
var ScrnGameRules ScrnRules;
|
||||||
function PostBeginPlay(){
|
function PostBeginPlay(){
|
||||||
if(Level.Game.GameRulesModifiers == none)
Level.Game.GameRulesModifiers = Self;
|
if(Level.Game.GameRulesModifiers == none)
|
||||||
else{
// We need to be the ones giving achievements first
Self.AddGameRules(Level.Game.GameRulesModifiers);
Level.Game.GameRulesModifiers = Self;
|
Level.Game.GameRulesModifiers = Self;
|
||||||
|
else{
|
||||||
|
// We need to be the ones giving achievements first
|
||||||
|
Self.AddGameRules(Level.Game.GameRulesModifiers);
|
||||||
|
Level.Game.GameRulesModifiers = Self;
|
||||||
}
|
}
|
||||||
if(NicePack(Owner) != none)
ScrnRules = NicePack(Owner).ScrnMut.GameRules;
|
if(NicePack(Owner) != none)
|
||||||
else{
Log("Wrong owner! Owner must be NicePack!");
Destroy();
|
ScrnRules = NicePack(Owner).ScrnMut.GameRules;
|
||||||
|
else{
|
||||||
|
Log("Wrong owner! Owner must be NicePack!");
|
||||||
|
Destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function bool CheckEndGame(PlayerReplicationInfo Winner, string Reason){
|
function bool CheckEndGame(PlayerReplicationInfo Winner, string Reason){
|
||||||
local bool bWin;
|
local bool bWin;
|
||||||
local string MapName;
|
local string MapName;
|
||||||
if(Level.Game.IsInState('PendingMatch'))
return false;
|
if(Level.Game.IsInState('PendingMatch'))
|
||||||
if(Level.Game.bGameEnded)
return true;
|
return false;
|
||||||
if(NextGameRules != none && !NextGameRules.CheckEndGame(Winner,Reason))
return false;
|
if(Level.Game.bGameEnded)
|
||||||
if(ScrnRules.Mut.bStoryMode)
bWin = Reason ~= "WinAction";
|
return true;
|
||||||
else{
bWin = KFGameReplicationInfo(Level.GRI) != none && KFGameReplicationInfo(Level.GRI).EndGameType == 2;
|
if(NextGameRules != none && !NextGameRules.CheckEndGame(Winner,Reason))
|
||||||
|
return false;
|
||||||
|
if(ScrnRules.Mut.bStoryMode)
|
||||||
|
bWin = Reason ~= "WinAction";
|
||||||
|
else{
|
||||||
|
bWin = KFGameReplicationInfo(Level.GRI) != none && KFGameReplicationInfo(Level.GRI).EndGameType == 2;
|
||||||
}
|
}
|
||||||
if(bWin){
// Map achievements
MapName = ScrnRules.Mut.KF.GetCurrentMapName(Level);
ScrnRules.CheckMapAlias(MapName);
GiveMapAchievements(MapName);
|
if(bWin){
|
||||||
|
// Map achievements
|
||||||
|
MapName = ScrnRules.Mut.KF.GetCurrentMapName(Level);
|
||||||
|
ScrnRules.CheckMapAlias(MapName);
|
||||||
|
GiveMapAchievements(MapName);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -28,18 +44,71 @@ function GiveMapAchievements(optional String MapName){
|
|||||||
local ClientPerkRepLink PerkLink;
|
local ClientPerkRepLink PerkLink;
|
||||||
local TeamInfo WinnerTeam;
|
local TeamInfo WinnerTeam;
|
||||||
WinnerTeam = TeamInfo(Level.Game.GameReplicationInfo.Winner);
|
WinnerTeam = TeamInfo(Level.Game.GameReplicationInfo.Winner);
|
||||||
if(ScrnRules.Mut.bStoryMode){
bGiveHardAch = Level.Game.GameDifficulty >= 4;
bGiveSuiAch = Level.Game.GameDifficulty >= 5;
bGiveHoeAch = Level.Game.GameDifficulty >= 7;
|
if(ScrnRules.Mut.bStoryMode){
|
||||||
|
bGiveHardAch = Level.Game.GameDifficulty >= 4;
|
||||||
|
bGiveSuiAch = Level.Game.GameDifficulty >= 5;
|
||||||
|
bGiveHoeAch = Level.Game.GameDifficulty >= 7;
|
||||||
}
|
}
|
||||||
else{
bGiveHardAch = ScrnRules.HardcoreLevel >= 5;
bGiveSuiAch = ScrnRules.HardcoreLevel >= 10;
bGiveHoeAch = ScrnRules.HardcoreLevel >= 15;
|
else{
|
||||||
|
bGiveHardAch = ScrnRules.HardcoreLevel >= 5;
|
||||||
|
bGiveSuiAch = ScrnRules.HardcoreLevel >= 10;
|
||||||
|
bGiveHoeAch = ScrnRules.HardcoreLevel >= 15;
|
||||||
|
}
|
||||||
|
for (SPI = ScrnRules.PlayerInfo;SPI != none;SPI = SPI.NextPlayerInfo){
|
||||||
|
if (SPI.PlayerOwner == none || SPI.PlayerOwner.PlayerReplicationInfo == none)
|
||||||
|
continue;
|
||||||
|
PerkLink = SPI.GetRep();
|
||||||
|
if(PerkLink == none)
|
||||||
|
continue;
|
||||||
|
if(WinnerTeam != none && SPI.PlayerOwner.PlayerReplicationInfo.Team != WinnerTeam)
|
||||||
|
continue; // no candies for loosers
|
||||||
|
// additional achievements that are granted only when surviving the game
|
||||||
|
if(ScrnPlayerController(SPI.PlayerOwner) != none && !ScrnPlayerController(SPI.PlayerOwner).bChangedPerkDuringGame)
|
||||||
|
SPI.ProgressAchievement('PerkFavorite', 1);
|
||||||
|
|
||||||
|
//unlock "Normal" achievement and see if the map is found
|
||||||
|
bCustomMap = ScrnRules.MapAchClass.static.UnlockMapAchievement(PerkLink, MapName, 0) == -2;
|
||||||
|
bNewAch = false;
|
||||||
|
if(bCustomMap){
|
||||||
|
//map not found - progress custom map achievements
|
||||||
|
if(bGiveHardAch)
|
||||||
|
ScrnRules.AchClass.static.ProgressAchievementByID(PerkLink, 'WinCustomMapsHard', 1);
|
||||||
|
if(bGiveSuiAch)
|
||||||
|
ScrnRules.AchClass.static.ProgressAchievementByID(PerkLink, 'WinCustomMapsSui', 1);
|
||||||
|
if(bGiveHoeAch)
|
||||||
|
ScrnRules.AchClass.static.ProgressAchievementByID(PerkLink, 'WinCustomMapsHoE', 1);
|
||||||
|
ScrnRules.AchClass.static.ProgressAchievementByID(PerkLink, 'WinCustomMapsNormal', 1);
|
||||||
|
ScrnRules.AchClass.static.ProgressAchievementByID(PerkLink, 'WinCustomMaps', 1);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
//map found - give related achievements
|
||||||
|
if(bGiveHardAch)
|
||||||
|
ScrnRules.MapAchClass.static.UnlockMapAchievement(PerkLink, MapName, 1);
|
||||||
|
if(bGiveSuiAch)
|
||||||
|
ScrnRules.MapAchClass.static.UnlockMapAchievement(PerkLink, MapName, 2);
|
||||||
|
if(bGiveHoeAch)
|
||||||
|
ScrnRules.MapAchClass.static.UnlockMapAchievement(PerkLink, MapName, 3);
|
||||||
}
|
}
|
||||||
for (SPI = ScrnRules.PlayerInfo;SPI != none;SPI = SPI.NextPlayerInfo){
if (SPI.PlayerOwner == none || SPI.PlayerOwner.PlayerReplicationInfo == none)
continue;
PerkLink = SPI.GetRep();
if(PerkLink == none)
continue;
if(WinnerTeam != none && SPI.PlayerOwner.PlayerReplicationInfo.Team != WinnerTeam)
continue; // no candies for loosers
// additional achievements that are granted only when surviving the game
if(ScrnPlayerController(SPI.PlayerOwner) != none && !ScrnPlayerController(SPI.PlayerOwner).bChangedPerkDuringGame)
SPI.ProgressAchievement('PerkFavorite', 1);
|
|
||||||
//unlock "Normal" achievement and see if the map is found
bCustomMap = ScrnRules.MapAchClass.static.UnlockMapAchievement(PerkLink, MapName, 0) == -2;
bNewAch = false;
if(bCustomMap){
//map not found - progress custom map achievements
if(bGiveHardAch)
ScrnRules.AchClass.static.ProgressAchievementByID(PerkLink, 'WinCustomMapsHard', 1);
if(bGiveSuiAch)
ScrnRules.AchClass.static.ProgressAchievementByID(PerkLink, 'WinCustomMapsSui', 1);
if(bGiveHoeAch)
ScrnRules.AchClass.static.ProgressAchievementByID(PerkLink, 'WinCustomMapsHoE', 1);
ScrnRules.AchClass.static.ProgressAchievementByID(PerkLink, 'WinCustomMapsNormal', 1);
ScrnRules.AchClass.static.ProgressAchievementByID(PerkLink, 'WinCustomMaps', 1);
}
else{
//map found - give related achievements
if(bGiveHardAch)
ScrnRules.MapAchClass.static.UnlockMapAchievement(PerkLink, MapName, 1);
if(bGiveSuiAch)
ScrnRules.MapAchClass.static.UnlockMapAchievement(PerkLink, MapName, 2);
if(bGiveHoeAch)
ScrnRules.MapAchClass.static.UnlockMapAchievement(PerkLink, MapName, 3);
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function int NetDamage(int OriginalDamage, int Damage, pawn injured, pawn instigatedBy, vector HitLocation, out vector Momentum, class<DamageType> DamageType){
|
function int NetDamage(int OriginalDamage, int Damage, pawn injured, pawn instigatedBy, vector HitLocation, out vector Momentum, class<DamageType> DamageType){
|
||||||
local TeamGame TG;
|
local TeamGame TG;
|
||||||
TG = TeamGame(Level.Game);
|
TG = TeamGame(Level.Game);
|
||||||
if(KFPawn(injured) != none && TG != none && Damage > 0 && class<DamTypeEnemyBase>(DamageType) == none){
if((KFPawn(instigatedBy) != none || FakePlayerPawn(instigatedBy) != none) && (instigatedBy.PlayerReplicationInfo == none || instigatedBy.PlayerReplicationInfo.bOnlySpectator)){
Momentum = vect(0,0,0);
if(NoFF(injured, TG.FriendlyFireScale))
return 0;
else if(OriginalDamage == Damage)
return Damage * TG.FriendlyFireScale;
}
else if(instigatedBy == none && !DamageType.default.bCausedByWorld){
Momentum = vect(0,0,0);
if(NoFF(injured, TG.FriendlyFireScale))
return 0;
else if(OriginalDamage == Damage)
return Damage * TG.FriendlyFireScale;
}
|
if(KFPawn(injured) != none && TG != none && Damage > 0 && class<DamTypeEnemyBase>(DamageType) == none){
|
||||||
|
if((KFPawn(instigatedBy) != none || FakePlayerPawn(instigatedBy) != none) && (instigatedBy.PlayerReplicationInfo == none || instigatedBy.PlayerReplicationInfo.bOnlySpectator)){
|
||||||
|
Momentum = vect(0,0,0);
|
||||||
|
if(NoFF(injured, TG.FriendlyFireScale))
|
||||||
|
return 0;
|
||||||
|
else if(OriginalDamage == Damage)
|
||||||
|
return Damage * TG.FriendlyFireScale;
|
||||||
|
}
|
||||||
|
else if(instigatedBy == none && !DamageType.default.bCausedByWorld){
|
||||||
|
Momentum = vect(0,0,0);
|
||||||
|
if(NoFF(injured, TG.FriendlyFireScale))
|
||||||
|
return 0;
|
||||||
|
else if(OriginalDamage == Damage)
|
||||||
|
return Damage * TG.FriendlyFireScale;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return super.NetDamage(OriginalDamage, Damage, injured, instigatedBy, HitLocation, Momentum, DamageType);
|
return super.NetDamage(OriginalDamage, Damage, injured, instigatedBy, HitLocation, Momentum, DamageType);
|
||||||
}
|
}
|
||||||
@ -51,7 +120,8 @@ function RaiseHardcoreLevel(float inc, string reason){
|
|||||||
local Controller P;
|
local Controller P;
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
|
|
||||||
if(ScrnRules.HardcoreLevelFloat < ScrnRules.HardcoreLevel)
ScrnRules.HardcoreLevelFloat = ScrnRules.HardcoreLevel;
|
if(ScrnRules.HardcoreLevelFloat < ScrnRules.HardcoreLevel)
|
||||||
|
ScrnRules.HardcoreLevelFloat = ScrnRules.HardcoreLevel;
|
||||||
ScrnRules.HardcoreLevelFloat += inc;
|
ScrnRules.HardcoreLevelFloat += inc;
|
||||||
ScrnRules.HardcoreLevel = int(ScrnRules.HardcoreLevelFloat + 0.01);
|
ScrnRules.HardcoreLevel = int(ScrnRules.HardcoreLevelFloat + 0.01);
|
||||||
ScrnRules.Mut.HardcoreLevel = clamp(ScrnRules.HardcoreLevel, 0, 255);
|
ScrnRules.Mut.HardcoreLevel = clamp(ScrnRules.HardcoreLevel, 0, 255);
|
||||||
@ -61,7 +131,10 @@ function RaiseHardcoreLevel(float inc, string reason){
|
|||||||
ReplaceText(s, "%a", String(ScrnRules.HardcoreLevel));
|
ReplaceText(s, "%a", String(ScrnRules.HardcoreLevel));
|
||||||
ReplaceText(s, "%i", String(inc));
|
ReplaceText(s, "%i", String(inc));
|
||||||
ReplaceText(s, "%r", reason);
|
ReplaceText(s, "%r", reason);
|
||||||
for(P = Level.ControllerList; P != none; P = P.nextController){
nicePlayer = NicePlayerController(P);
if(nicePlayer != none && nicePlayer.bFlagShowHLMessages)
nicePlayer.ClientMessage(s);
|
for(P = Level.ControllerList; P != none; P = P.nextController){
|
||||||
|
nicePlayer = NicePlayerController(P);
|
||||||
|
if(nicePlayer != none && nicePlayer.bFlagShowHLMessages)
|
||||||
|
nicePlayer.ClientMessage(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function bool PreventDeath(Pawn Killed, Controller Killer, class<DamageType> damageType, vector HitLocation){
|
function bool PreventDeath(Pawn Killed, Controller Killer, class<DamageType> damageType, vector HitLocation){
|
||||||
@ -69,9 +142,20 @@ function bool PreventDeath(Pawn Killed, Controller Killer, class<DamageType> dam
|
|||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
nicePlayer = NicePlayerController(Killed.controller);
|
nicePlayer = NicePlayerController(Killed.controller);
|
||||||
nicePawn = NiceHumanPawn(Killed);
|
nicePawn = NiceHumanPawn(Killed);
|
||||||
if(nicePawn != none && (!nicePawn.bReactiveArmorUsed)
&& class'NiceVeterancyTypes'.static.HasSkill(nicePlayer, class'NiceSkillDemoReactiveArmor')){
nicePawn.bReactiveArmorUsed = true;
nicePlayer.niceRI.ServerExplode(class'NiceSkillDemoReactiveArmor'.default.baseDamage,
class'NiceSkillDemoReactiveArmor'.default.explRadius,
class'NiceSkillDemoReactiveArmor'.default.explExponent,
class'NiceDamTypeDemoSafeExplosion',
class'NiceSkillDemoReactiveArmor'.default.explMomentum,
killed.location, killed, true
);
return true;
|
if(nicePawn != none && (!nicePawn.bReactiveArmorUsed)
|
||||||
|
&& class'NiceVeterancyTypes'.static.HasSkill(nicePlayer, class'NiceSkillDemoReactiveArmor')){
|
||||||
|
nicePawn.bReactiveArmorUsed = true;
|
||||||
|
nicePlayer.niceRI.ServerExplode(class'NiceSkillDemoReactiveArmor'.default.baseDamage,
|
||||||
|
class'NiceSkillDemoReactiveArmor'.default.explRadius,
|
||||||
|
class'NiceSkillDemoReactiveArmor'.default.explExponent,
|
||||||
|
class'NiceDamTypeDemoSafeExplosion',
|
||||||
|
class'NiceSkillDemoReactiveArmor'.default.explMomentum,
|
||||||
|
killed.location, killed, true
|
||||||
|
);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if(NextGameRules != none)
return NextGameRules.PreventDeath(Killed, Killer, damageType, HitLocation);
|
if(NextGameRules != none)
|
||||||
|
return NextGameRules.PreventDeath(Killed, Killer, damageType, HitLocation);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
|
@ -2,8 +2,11 @@ class NiceSoundCls extends Effects;
|
|||||||
var Sound effectSound;
|
var Sound effectSound;
|
||||||
var float effectVolume;
|
var float effectVolume;
|
||||||
simulated function PostBeginPlay(){
|
simulated function PostBeginPlay(){
|
||||||
if(effectSound != none)
PlaySound(effectSound,, effectVolume);
|
if(effectSound != none)
|
||||||
|
PlaySound(effectSound,, effectVolume);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
DrawType=DT_None
LifeSpan=0.100000
|
{
|
||||||
|
DrawType=DT_None
|
||||||
|
LifeSpan=0.100000
|
||||||
}
|
}
|
||||||
|
@ -11,10 +11,15 @@
|
|||||||
//==============================================================================
|
//==============================================================================
|
||||||
class NiceAbilitiesAdapter extends Object;
|
class NiceAbilitiesAdapter extends Object;
|
||||||
var LevelInfo level;
|
var LevelInfo level;
|
||||||
static function AbilityActivated( string abilityID,
NicePlayerController relatedPlayer);
|
static function AbilityActivated( string abilityID,
|
||||||
static function AbilityAdded( string abilityID,
NicePlayerController relatedPlayer);
|
NicePlayerController relatedPlayer);
|
||||||
static function AbilityRemoved( string abilityID,
NicePlayerController relatedPlayer);
|
static function AbilityAdded( string abilityID,
|
||||||
static function ModAbilityCooldown( string abilityID,
NicePlayerController relatedPlayer,
out float cooldown);
|
NicePlayerController relatedPlayer);
|
||||||
|
static function AbilityRemoved( string abilityID,
|
||||||
|
NicePlayerController relatedPlayer);
|
||||||
|
static function ModAbilityCooldown( string abilityID,
|
||||||
|
NicePlayerController relatedPlayer,
|
||||||
|
out float cooldown);
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@ -11,10 +11,13 @@
|
|||||||
class NiceAbilitiesEvents extends Object;
|
class NiceAbilitiesEvents extends Object;
|
||||||
var array< class<NiceAbilitiesAdapter> > adapters;
|
var array< class<NiceAbilitiesAdapter> > adapters;
|
||||||
// If adapter was already added also returns 'false'.
|
// If adapter was already added also returns 'false'.
|
||||||
static function bool AddAdapter(class<NiceAbilitiesAdapter> newAdapter,
optional LevelInfo level){
|
static function bool AddAdapter(class<NiceAbilitiesAdapter> newAdapter,
|
||||||
|
optional LevelInfo level){
|
||||||
local int i;
|
local int i;
|
||||||
if(newAdapter == none) return false;
|
if(newAdapter == none) return false;
|
||||||
for(i = 0;i < default.adapters.length;i ++)
if(default.adapters[i] == newAdapter)
return false;
|
for(i = 0;i < default.adapters.length;i ++)
|
||||||
|
if(default.adapters[i] == newAdapter)
|
||||||
|
return false;
|
||||||
newAdapter.default.level = level;
|
newAdapter.default.level = level;
|
||||||
default.adapters[default.adapters.length] = newAdapter;
|
default.adapters[default.adapters.length] = newAdapter;
|
||||||
return true;
|
return true;
|
||||||
@ -23,33 +26,52 @@ static function bool AddAdapter(class<NiceAbilitiesAdapter> newAdapter,
|
|||||||
static function bool RemoveAdapter(class<NiceAbilitiesAdapter> adapter){
|
static function bool RemoveAdapter(class<NiceAbilitiesAdapter> adapter){
|
||||||
local int i;
|
local int i;
|
||||||
if(adapter == none) return false;
|
if(adapter == none) return false;
|
||||||
for(i = 0;i < default.adapters.length;i ++){
if(default.adapters[i] == adapter){
default.adapters.Remove(i, 1);
return true;
}
|
for(i = 0;i < default.adapters.length;i ++){
|
||||||
|
if(default.adapters[i] == adapter){
|
||||||
|
default.adapters.Remove(i, 1);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
static function CallAbilityActivated
|
static function CallAbilityActivated
|
||||||
(
string abilityID,
NicePlayerController relatedPlayer
|
(
|
||||||
|
string abilityID,
|
||||||
|
NicePlayerController relatedPlayer
|
||||||
){
|
){
|
||||||
local int i;
|
local int i;
|
||||||
for(i = 0;i < default.adapters.length;i ++)
default.adapters[i].static.AbilityActivated(abilityID, relatedPlayer);
|
for(i = 0;i < default.adapters.length;i ++)
|
||||||
|
default.adapters[i].static.AbilityActivated(abilityID, relatedPlayer);
|
||||||
}
|
}
|
||||||
static function CallAbilityAdded
|
static function CallAbilityAdded
|
||||||
(
string abilityID,
NicePlayerController relatedPlayer
|
(
|
||||||
|
string abilityID,
|
||||||
|
NicePlayerController relatedPlayer
|
||||||
){
|
){
|
||||||
local int i;
|
local int i;
|
||||||
for(i = 0;i < default.adapters.length;i ++)
default.adapters[i].static.AbilityAdded(abilityID, relatedPlayer);
|
for(i = 0;i < default.adapters.length;i ++)
|
||||||
|
default.adapters[i].static.AbilityAdded(abilityID, relatedPlayer);
|
||||||
}
|
}
|
||||||
static function CallAbilityRemoved
|
static function CallAbilityRemoved
|
||||||
(
string abilityID,
NicePlayerController relatedPlayer
|
(
|
||||||
|
string abilityID,
|
||||||
|
NicePlayerController relatedPlayer
|
||||||
){
|
){
|
||||||
local int i;
|
local int i;
|
||||||
for(i = 0;i < default.adapters.length;i ++)
default.adapters[i].static.AbilityRemoved(abilityID, relatedPlayer);
|
for(i = 0;i < default.adapters.length;i ++)
|
||||||
|
default.adapters[i].static.AbilityRemoved(abilityID, relatedPlayer);
|
||||||
}
|
}
|
||||||
static function CallModAbilityCooldown
|
static function CallModAbilityCooldown
|
||||||
(
string abilityID,
NicePlayerController relatedPlayer,
out float cooldown
|
(
|
||||||
|
string abilityID,
|
||||||
|
NicePlayerController relatedPlayer,
|
||||||
|
out float cooldown
|
||||||
){
|
){
|
||||||
local int i;
|
local int i;
|
||||||
for(i = 0;i < default.adapters.length;i ++){
default.adapters[i].static.ModAbilityCooldown( abilityID,
relatedPlayer,
cooldown);
|
for(i = 0;i < default.adapters.length;i ++){
|
||||||
|
default.adapters[i].static.ModAbilityCooldown( abilityID,
|
||||||
|
relatedPlayer,
|
||||||
|
cooldown);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
|
@ -51,7 +51,8 @@ var const class<NiceAbilitiesEvents> events;
|
|||||||
// Unfortunately this hackk is required to force replication of structure array
|
// Unfortunately this hackk is required to force replication of structure array
|
||||||
var int hackCounter;
|
var int hackCounter;
|
||||||
replication{
|
replication{
|
||||||
reliable if(Role == ROLE_Authority)
currentAbilities, currentAbilitiesAmount, hackCounter;
|
reliable if(Role == ROLE_Authority)
|
||||||
|
currentAbilities, currentAbilitiesAmount, hackCounter;
|
||||||
}
|
}
|
||||||
simulated function PostBeginPlay(){
|
simulated function PostBeginPlay(){
|
||||||
relatedPlayer = NicePlayerController(owner);
|
relatedPlayer = NicePlayerController(owner);
|
||||||
@ -60,7 +61,9 @@ function AddAbility(NiceAbilityDescription description){
|
|||||||
local int i;
|
local int i;
|
||||||
local NiceAbilityStatus newRecord;
|
local NiceAbilityStatus newRecord;
|
||||||
if(currentAbilitiesAmount >= maxAbilitiesAmount) return;
|
if(currentAbilitiesAmount >= maxAbilitiesAmount) return;
|
||||||
for(i = 0;i < currentAbilitiesAmount;i ++)
if(currentAbilities[i].description.ID ~= description.ID)
return;
|
for(i = 0;i < currentAbilitiesAmount;i ++)
|
||||||
|
if(currentAbilities[i].description.ID ~= description.ID)
|
||||||
|
return;
|
||||||
newRecord.description = description;
|
newRecord.description = description;
|
||||||
newRecord.cooldown = 0.0;
|
newRecord.cooldown = 0.0;
|
||||||
newRecord.myState = ASTATE_READY;
|
newRecord.myState = ASTATE_READY;
|
||||||
@ -73,10 +76,17 @@ function RemoveAbility(string abilityID){
|
|||||||
local int i, j;
|
local int i, j;
|
||||||
local bool wasRemoved;
|
local bool wasRemoved;
|
||||||
j = 0;
|
j = 0;
|
||||||
for(i = 0;i < currentAbilitiesAmount;i ++){
if(currentAbilities[i].description.ID ~= abilityID){
wasRemoved = true;
continue;
}
currentAbilities[j] = currentAbilities[i];
j += 1;
|
for(i = 0;i < currentAbilitiesAmount;i ++){
|
||||||
|
if(currentAbilities[i].description.ID ~= abilityID){
|
||||||
|
wasRemoved = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
currentAbilities[j] = currentAbilities[i];
|
||||||
|
j += 1;
|
||||||
}
|
}
|
||||||
currentAbilitiesAmount = j;
|
currentAbilitiesAmount = j;
|
||||||
if(wasRemoved)
events.static.CallAbilityRemoved(abilityID, relatedPlayer);
|
if(wasRemoved)
|
||||||
|
events.static.CallAbilityRemoved(abilityID, relatedPlayer);
|
||||||
netUpdateTime = level.timeSeconds - 1;
|
netUpdateTime = level.timeSeconds - 1;
|
||||||
}
|
}
|
||||||
function ClearAbilities(){
|
function ClearAbilities(){
|
||||||
@ -87,13 +97,16 @@ function ClearAbilities(){
|
|||||||
// Returns '-1' if such ability doesn't exist.
|
// Returns '-1' if such ability doesn't exist.
|
||||||
simulated function int GetAbilityIndex(string abilityID){
|
simulated function int GetAbilityIndex(string abilityID){
|
||||||
local int i;
|
local int i;
|
||||||
for(i = 0;i < currentAbilitiesAmount;i ++)
if(currentAbilities[i].description.ID ~= abilityID)
return i;
|
for(i = 0;i < currentAbilitiesAmount;i ++)
|
||||||
|
if(currentAbilities[i].description.ID ~= abilityID)
|
||||||
|
return i;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
simulated function bool IsAbilityActive(string abilityID){
|
simulated function bool IsAbilityActive(string abilityID){
|
||||||
local int index;
|
local int index;
|
||||||
index = GetAbilityIndex(abilityID);
|
index = GetAbilityIndex(abilityID);
|
||||||
if(index < 0)
return false;
|
if(index < 0)
|
||||||
|
return false;
|
||||||
return (currentAbilities[index].myState == ASTATE_ACTIVE);
|
return (currentAbilities[index].myState == ASTATE_ACTIVE);
|
||||||
}
|
}
|
||||||
// Sets ability to a proper state.
|
// Sets ability to a proper state.
|
||||||
@ -106,15 +119,29 @@ function SetAbilityState(int abilityIndex, EAbilityState newState){
|
|||||||
local EAbilityState currentState;
|
local EAbilityState currentState;
|
||||||
if(abilityIndex < 0 || abilityIndex >= currentAbilitiesAmount) return;
|
if(abilityIndex < 0 || abilityIndex >= currentAbilitiesAmount) return;
|
||||||
currentState = currentAbilities[abilityIndex].myState;
|
currentState = currentAbilities[abilityIndex].myState;
|
||||||
if(currentState == newState)
return;
|
if(currentState == newState)
|
||||||
if( currentState == ASTATE_ACTIVE && newState == ASTATE_READY
&& !currentAbilities[abilityIndex].description.canBeCancelled)
return;
|
return;
|
||||||
|
if( currentState == ASTATE_ACTIVE && newState == ASTATE_READY
|
||||||
|
&& !currentAbilities[abilityIndex].description.canBeCancelled)
|
||||||
|
return;
|
||||||
currentAbilities[abilityIndex].myState = newState;
|
currentAbilities[abilityIndex].myState = newState;
|
||||||
if(newState == ASTATE_COOLDOWN){
cooldown = currentAbilities[abilityIndex].description.cooldownLength;
events.static.CallModAbilityCooldown(
currentAbilities[abilityIndex].description.ID,
relatedPlayer,
cooldown
);
currentAbilities[abilityIndex].cooldown = cooldown;
|
if(newState == ASTATE_COOLDOWN){
|
||||||
|
cooldown = currentAbilities[abilityIndex].description.cooldownLength;
|
||||||
|
events.static.CallModAbilityCooldown(
|
||||||
|
currentAbilities[abilityIndex].description.ID,
|
||||||
|
relatedPlayer,
|
||||||
|
cooldown
|
||||||
|
);
|
||||||
|
currentAbilities[abilityIndex].cooldown = cooldown;
|
||||||
}
|
}
|
||||||
hackCounter ++;
|
hackCounter ++;
|
||||||
netUpdateTime = level.timeSeconds - 1;
|
netUpdateTime = level.timeSeconds - 1;
|
||||||
// Fire off events
|
// Fire off events
|
||||||
if(newState == ASTATE_ACTIVE){
events.static.CallAbilityActivated(
currentAbilities[abilityIndex].description.ID,
relatedPlayer
);
|
if(newState == ASTATE_ACTIVE){
|
||||||
|
events.static.CallAbilityActivated(
|
||||||
|
currentAbilities[abilityIndex].description.ID,
|
||||||
|
relatedPlayer
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Changes ability's cooldown by a given amount.
|
// Changes ability's cooldown by a given amount.
|
||||||
@ -124,14 +151,19 @@ function AddToCooldown(int abilityIndex, float delta){
|
|||||||
if(abilityIndex < 0 || abilityIndex >= currentAbilitiesAmount) return;
|
if(abilityIndex < 0 || abilityIndex >= currentAbilitiesAmount) return;
|
||||||
if(currentAbilities[abilityIndex].myState != ASTATE_COOLDOWN) return;
|
if(currentAbilities[abilityIndex].myState != ASTATE_COOLDOWN) return;
|
||||||
currentAbilities[abilityIndex].cooldown += delta;
|
currentAbilities[abilityIndex].cooldown += delta;
|
||||||
if(currentAbilities[abilityIndex].cooldown <= 0)
SetAbilityState(abilityIndex, ASTATE_READY);
|
if(currentAbilities[abilityIndex].cooldown <= 0)
|
||||||
|
SetAbilityState(abilityIndex, ASTATE_READY);
|
||||||
hackCounter ++;
|
hackCounter ++;
|
||||||
}
|
}
|
||||||
function Tick(float deltaTime){
|
function Tick(float deltaTime){
|
||||||
local int i;
|
local int i;
|
||||||
if(Role != Role_AUTHORITY) return;
|
if(Role != Role_AUTHORITY) return;
|
||||||
for(i = 0;i < currentAbilitiesAmount;i ++)
AddToCooldown(i, -deltaTime);
|
for(i = 0;i < currentAbilitiesAmount;i ++)
|
||||||
|
AddToCooldown(i, -deltaTime);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
maxAbilitiesAmount=5
Events=Class'NicePack.NiceAbilitiesEvents'
DrawType=DT_None
|
{
|
||||||
|
maxAbilitiesAmount=5
|
||||||
|
Events=Class'NicePack.NiceAbilitiesEvents'
|
||||||
|
DrawType=DT_None
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,24 @@
|
|||||||
class NiceDamageTypeVetBerserker extends NiceWeaponDamageType
|
class NiceDamageTypeVetBerserker extends NiceWeaponDamageType
|
||||||
abstract;
|
abstract;
|
||||||
static function AwardNiceDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount, int HL){
|
static function AwardNiceDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount, int HL){
|
||||||
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetBerserkerExp', Int(Float(Amount) * class'NicePack'.default.vetZerkDamageExpCost * getScale(HL)));
|
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
|
||||||
|
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetBerserkerExp', Int(Float(Amount) * class'NicePack'.default.vetZerkDamageExpCost * getScale(HL)));
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
HeadShotDamageMult=1.250000
bIsMeleeDamage=True
DeathString="%o was beat down by %k."
FemaleSuicide="%o beat herself down."
MaleSuicide="%o beat himself down."
bRagdollBullet=True
bBulletHit=True
PawnDamageEmitter=Class'ROEffects.ROBloodPuff'
LowGoreDamageEmitter=Class'ROEffects.ROBloodPuffNoGore'
LowDetailEmitter=Class'ROEffects.ROBloodPuffSmall'
FlashFog=(X=600.000000)
KDamageImpulse=2000.000000
KDeathVel=100.000000
KDeathUpKick=25.000000
VehicleDamageScaling=0.600000
|
{
|
||||||
|
HeadShotDamageMult=1.250000
|
||||||
|
bIsMeleeDamage=True
|
||||||
|
DeathString="%o was beat down by %k."
|
||||||
|
FemaleSuicide="%o beat herself down."
|
||||||
|
MaleSuicide="%o beat himself down."
|
||||||
|
bRagdollBullet=True
|
||||||
|
bBulletHit=True
|
||||||
|
PawnDamageEmitter=Class'ROEffects.ROBloodPuff'
|
||||||
|
LowGoreDamageEmitter=Class'ROEffects.ROBloodPuffNoGore'
|
||||||
|
LowDetailEmitter=Class'ROEffects.ROBloodPuffSmall'
|
||||||
|
FlashFog=(X=600.000000)
|
||||||
|
KDamageImpulse=2000.000000
|
||||||
|
KDeathVel=100.000000
|
||||||
|
KDeathUpKick=25.000000
|
||||||
|
VehicleDamageScaling=0.600000
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
class NiceVetBerserkerExp extends SRCustomProgressInt;
|
class NiceVetBerserkerExp extends SRCustomProgressInt;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
ProgressName="Berserker exp."
|
{
|
||||||
|
ProgressName="Berserker exp."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillZerkBrawler extends NiceSkill
|
class NiceSkillZerkBrawler extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Brawler"
SkillEffects="Clots can't grab you."
|
{
|
||||||
|
SkillName="Brawler"
|
||||||
|
SkillEffects="Clots can't grab you."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillZerkCleave extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float bonusDegrees;
|
var float bonusDegrees;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
bonusDegrees=0.523599
SkillName="Cleave"
SkillEffects="Add 30 degrees to wide attacks with melee weapons."
|
{
|
||||||
|
bonusDegrees=0.523599
|
||||||
|
SkillName="Cleave"
|
||||||
|
SkillEffects="Add 30 degrees to wide attacks with melee weapons."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillZerkColossus extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float timeBonus;
|
var float timeBonus;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
timeBonus=1.000000
SkillName="Colossus"
SkillEffects="Invincibility period lasts 1 second longer."
|
{
|
||||||
|
timeBonus=1.000000
|
||||||
|
SkillName="Colossus"
|
||||||
|
SkillEffects="Invincibility period lasts 1 second longer."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillZerkFury extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float attackSpeedBonus;
|
var float attackSpeedBonus;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
attackSpeedBonus=1.500000
SkillName="Fury"
SkillEffects="Attack 50% faster during invincibility."
|
{
|
||||||
|
attackSpeedBonus=1.500000
|
||||||
|
SkillName="Fury"
|
||||||
|
SkillEffects="Attack 50% faster during invincibility."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillZerkGunzerker extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float cooldown;
|
var float cooldown;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
cooldown=-2.000000
SkillName="Gunzerker"
SkillEffects="You're able to activate melee-invincibility with non-melee headshots, but your misses are punished by a 2 second cooldown, during which you cannot activate invincibility."
|
{
|
||||||
|
cooldown=-2.000000
|
||||||
|
SkillName="Gunzerker"
|
||||||
|
SkillEffects="You're able to activate melee-invincibility with non-melee headshots, but your misses are punished by a 2 second cooldown, during which you cannot activate invincibility."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillZerkUndead extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var int addedSafeMisses;
|
var int addedSafeMisses;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
addedSafeMisses=1
SkillName="Undead"
SkillEffects="Get additional safe melee-miss during invincibility period."
|
{
|
||||||
|
addedSafeMisses=1
|
||||||
|
SkillName="Undead"
|
||||||
|
SkillEffects="Get additional safe melee-miss during invincibility period."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillZerkVorpalBlade extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float damageBonus;
|
var float damageBonus;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
damageBonus=2.000000
SkillName="Vorpal blade"
SkillEffects="Your head-shot deals double damage on your first invincibility extension against the zed."
|
{
|
||||||
|
damageBonus=2.000000
|
||||||
|
SkillName="Vorpal blade"
|
||||||
|
SkillEffects="Your head-shot deals double damage on your first invincibility extension against the zed."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillZerkWhirlwind extends NiceSkill
|
class NiceSkillZerkWhirlwind extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Whirlwind"
SkillEffects="Move twice as fast during invincibility."
|
{
|
||||||
|
SkillName="Whirlwind"
|
||||||
|
SkillEffects="Move twice as fast during invincibility."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillZerkWindCutter extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float rangeBonus;
|
var float rangeBonus;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
rangeBonus=1.500000
SkillName="Wind cutter"
SkillEffects="Increase your reach with melee-weapons by 50%."
|
{
|
||||||
|
rangeBonus=1.500000
|
||||||
|
SkillName="Wind cutter"
|
||||||
|
SkillEffects="Increase your reach with melee-weapons by 50%."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillZerkZEDAccelerate extends NiceSkill
|
class NiceSkillZerkZEDAccelerate extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Accelerate"
SkillEffects="Move and attack at the same speed during zed-time."
|
{
|
||||||
|
SkillName="Accelerate"
|
||||||
|
SkillEffects="Move and attack at the same speed during zed-time."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillZerkZEDUnbreakable extends NiceSkill
|
class NiceSkillZerkZEDUnbreakable extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Unbreakable"
SkillEffects="You resist all damage during zed time."
|
{
|
||||||
|
SkillName="Unbreakable"
|
||||||
|
SkillEffects="You resist all damage during zed time."
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,15 @@
|
|||||||
class NiceDamageTypeVetCommando extends NiceWeaponDamageType
|
class NiceDamageTypeVetCommando extends NiceWeaponDamageType
|
||||||
abstract;
|
abstract;
|
||||||
static function AwardKill(KFSteamStatsAndAchievements KFStatsAndAchievements, KFPlayerController Killer, KFMonster Killed ){
|
static function AwardKill(KFSteamStatsAndAchievements KFStatsAndAchievements, KFPlayerController Killer, KFMonster Killed ){
|
||||||
if(Killed.IsA('ZombieStalker'))
KFStatsAndAchievements.AddStalkerKill();
|
if(Killed.IsA('ZombieStalker'))
|
||||||
|
KFStatsAndAchievements.AddStalkerKill();
|
||||||
}
|
}
|
||||||
static function AwardDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount){
|
static function AwardDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount){
|
||||||
KFStatsAndAchievements.AddBullpupDamage(Amount);
|
KFStatsAndAchievements.AddBullpupDamage(Amount);
|
||||||
}
|
}
|
||||||
static function AwardNiceDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount, int HL){
|
static function AwardNiceDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount, int HL){
|
||||||
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetCommandoExp', Int(Float(Amount) * class'NicePack'.default.vetCommandoDamageExpCost * getScale(HL)));
|
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
|
||||||
|
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetCommandoExp', Int(Float(Amount) * class'NicePack'.default.vetCommandoDamageExpCost * getScale(HL)));
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
class NiceVetCommandoExp extends SRCustomProgressInt;
|
class NiceVetCommandoExp extends SRCustomProgressInt;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
ProgressName="Commando exp."
|
{
|
||||||
|
ProgressName="Commando exp."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillCommandoExplosivePower extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float dmgMod;
|
var float dmgMod;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
dmgMod=1.200000
SkillName="Explosive power"
SkillEffects="Burst fire deals 20% more damage and has reduced delay between shots."
|
{
|
||||||
|
dmgMod=1.200000
|
||||||
|
SkillName="Explosive power"
|
||||||
|
SkillEffects="Burst fire deals 20% more damage and has reduced delay between shots."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillCommandoLargerMags extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float sizeBonus;
|
var float sizeBonus;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
sizeBonus=1.500000
SkillName="Larger mags"
SkillEffects="50% larger assault rifles' magazines."
|
{
|
||||||
|
sizeBonus=1.500000
|
||||||
|
SkillName="Larger mags"
|
||||||
|
SkillEffects="50% larger assault rifles' magazines."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillCommandoPerfectExecution extends NiceSkill
|
class NiceSkillCommandoPerfectExecution extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Perfect execution"
SkillEffects="Raging scrake or fleshpound activates zed-time."
|
{
|
||||||
|
SkillName="Perfect execution"
|
||||||
|
SkillEffects="Raging scrake or fleshpound activates zed-time."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,9 @@ class NiceSkillCommandoStrategist extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float visionRadius; // 1.0 ~ 16m
|
var float visionRadius; // 1.0 ~ 16m
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
visionRadius=1.000000
bBroadcast=True
SkillName="Strategist"
SkillEffects="You and your teammates can see enemies' health and invisible zeds from 16 meters."
|
{
|
||||||
|
visionRadius=1.000000
|
||||||
|
bBroadcast=True
|
||||||
|
SkillName="Strategist"
|
||||||
|
SkillEffects="You and your teammates can see enemies' health and invisible zeds from 16 meters."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillCommandoTactitian extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var int bonusExt;
|
var int bonusExt;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
bonusExt=2
SkillName="Tactician"
SkillEffects="Gain two additional zed-time extensions."
|
{
|
||||||
|
bonusExt=2
|
||||||
|
SkillName="Tactician"
|
||||||
|
SkillEffects="Gain two additional zed-time extensions."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillCommandoZEDProfessional extends NiceSkill
|
class NiceSkillCommandoZEDProfessional extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Professionalism"
SkillEffects="Your reloads aren't slowed down during zed-time."
|
{
|
||||||
|
SkillName="Professionalism"
|
||||||
|
SkillEffects="Your reloads aren't slowed down during zed-time."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,17 @@
|
|||||||
class NiceDamTypeDemoBlunt extends NiceDamageTypeVetDemolitions
|
class NiceDamTypeDemoBlunt extends NiceDamageTypeVetDemolitions
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
HeadShotDamageMult=2.000000
bSniperWeapon=True
DeathString="%k killed %o (LAW Impact)."
FemaleSuicide="%o shot herself in the foot."
MaleSuicide="%o shot himself in the foot."
bRagdollBullet=True
bBulletHit=True
FlashFog=(X=600.000000)
KDamageImpulse=5000.000000
KDeathVel=200.000000
KDeathUpKick=50.000000
VehicleDamageScaling=0.700000
|
{
|
||||||
|
HeadShotDamageMult=2.000000
|
||||||
|
bSniperWeapon=True
|
||||||
|
DeathString="%k killed %o (LAW Impact)."
|
||||||
|
FemaleSuicide="%o shot herself in the foot."
|
||||||
|
MaleSuicide="%o shot himself in the foot."
|
||||||
|
bRagdollBullet=True
|
||||||
|
bBulletHit=True
|
||||||
|
FlashFog=(X=600.000000)
|
||||||
|
KDamageImpulse=5000.000000
|
||||||
|
KDeathVel=200.000000
|
||||||
|
KDeathUpKick=50.000000
|
||||||
|
VehicleDamageScaling=0.700000
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,26 @@
|
|||||||
class NiceDamTypeDemoExplosion extends NiceDamageTypeVetDemolitions;
|
class NiceDamTypeDemoExplosion extends NiceDamageTypeVetDemolitions;
|
||||||
static function GetHitEffects(out class<xEmitter> HitEffects[4], int VictimHealth){
|
static function GetHitEffects(out class<xEmitter> HitEffects[4], int VictimHealth){
|
||||||
HitEffects[0] = class'HitSmoke';
|
HitEffects[0] = class'HitSmoke';
|
||||||
if(VictimHealth <= 0)
HitEffects[1] = class'KFHitFlame';
|
if(VictimHealth <= 0)
|
||||||
else if(FRand() < 0.8)
HitEffects[1] = class'KFHitFlame';
|
HitEffects[1] = class'KFHitFlame';
|
||||||
|
else if(FRand() < 0.8)
|
||||||
|
HitEffects[1] = class'KFHitFlame';
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
stunMultiplier=0.600000
bIsExplosive=True
DeathString="%o filled %k's body with shrapnel."
FemaleSuicide="%o blew up."
MaleSuicide="%o blew up."
bLocationalHit=False
bThrowRagdoll=True
bExtraMomentumZ=True
DamageThreshold=1
DeathOverlayMaterial=Combiner'Effects_Tex.GoreDecals.PlayerDeathOverlay'
DeathOverlayTime=999.000000
KDamageImpulse=3000.000000
KDeathVel=300.000000
KDeathUpKick=250.000000
HumanObliterationThreshhold=150
|
{
|
||||||
|
stunMultiplier=0.600000
|
||||||
|
bIsExplosive=True
|
||||||
|
DeathString="%o filled %k's body with shrapnel."
|
||||||
|
FemaleSuicide="%o blew up."
|
||||||
|
MaleSuicide="%o blew up."
|
||||||
|
bLocationalHit=False
|
||||||
|
bThrowRagdoll=True
|
||||||
|
bExtraMomentumZ=True
|
||||||
|
DamageThreshold=1
|
||||||
|
DeathOverlayMaterial=Combiner'Effects_Tex.GoreDecals.PlayerDeathOverlay'
|
||||||
|
DeathOverlayTime=999.000000
|
||||||
|
KDamageImpulse=3000.000000
|
||||||
|
KDeathVel=300.000000
|
||||||
|
KDeathUpKick=250.000000
|
||||||
|
HumanObliterationThreshhold=150
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
class NiceDamageTypeVetDemolitions extends NiceWeaponDamageType
|
class NiceDamageTypeVetDemolitions extends NiceWeaponDamageType
|
||||||
abstract;
|
abstract;
|
||||||
static function AwardNiceDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount, int HL){
|
static function AwardNiceDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount, int HL){
|
||||||
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetDemolitionsExp', Int(Float(Amount) * class'NicePack'.default.vetDemoDamageExpCost * getScale(HL)));
|
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
|
||||||
|
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetDemolitionsExp', Int(Float(Amount) * class'NicePack'.default.vetDemoDamageExpCost * getScale(HL)));
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
class NiceVetDemolitionsExp extends SRCustomProgressInt;
|
class NiceVetDemolitionsExp extends SRCustomProgressInt;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
ProgressName="Demolitions exp."
|
{
|
||||||
|
ProgressName="Demolitions exp."
|
||||||
}
|
}
|
||||||
|
@ -3,5 +3,9 @@ class NiceSkillDemoAPShot extends NiceSkill
|
|||||||
var float minCos;
|
var float minCos;
|
||||||
var float damageRatio;
|
var float damageRatio;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
minCos=0.707000
damageRatio=1.000000
SkillName="AP shot"
SkillEffects="Deal full blast damage behind the target you've hit."
|
{
|
||||||
|
minCos=0.707000
|
||||||
|
damageRatio=1.000000
|
||||||
|
SkillName="AP shot"
|
||||||
|
SkillEffects="Deal full blast damage behind the target you've hit."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillDemoConcussion extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float durationMult;
|
var float durationMult;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
durationMult=2.000000
SkillName="Concussion"
SkillEffects="You stun zeds for twice longer time than usual."
|
{
|
||||||
|
durationMult=2.000000
|
||||||
|
SkillName="Concussion"
|
||||||
|
SkillEffects="You stun zeds for twice longer time than usual."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillDemoDirectApproach extends NiceSkill
|
class NiceSkillDemoDirectApproach extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Direct approach"
SkillEffects="Your explosives will first hit target zed as a blunt before exploding."
|
{
|
||||||
|
SkillName="Direct approach"
|
||||||
|
SkillEffects="Your explosives will first hit target zed as a blunt before exploding."
|
||||||
}
|
}
|
||||||
|
@ -6,23 +6,31 @@ function static SkillSelected(NicePlayerController nicePlayer){
|
|||||||
local NicePack niceMutator;
|
local NicePack niceMutator;
|
||||||
super.SkillSelected(nicePlayer);
|
super.SkillSelected(nicePlayer);
|
||||||
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
||||||
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
return;
|
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
|
||||||
|
return;
|
||||||
niceMutator.AddCounter("npDemoManiac", Texture'NicePackT.HudCounter.demo', false, default.class);
|
niceMutator.AddCounter("npDemoManiac", Texture'NicePackT.HudCounter.demo', false, default.class);
|
||||||
}
|
}
|
||||||
function static SkillDeSelected(NicePlayerController nicePlayer){
|
function static SkillDeSelected(NicePlayerController nicePlayer){
|
||||||
local NicePack niceMutator;
|
local NicePack niceMutator;
|
||||||
super.SkillDeSelected(nicePlayer);
|
super.SkillDeSelected(nicePlayer);
|
||||||
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
||||||
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
return;
|
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
|
||||||
|
return;
|
||||||
niceMutator.RemoveCounter("npDemoManiac");
|
niceMutator.RemoveCounter("npDemoManiac");
|
||||||
}
|
}
|
||||||
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
if(nicePlayer == none || counterName != "npDemoManiac")
return 0;
|
if(nicePlayer == none || counterName != "npDemoManiac")
|
||||||
|
return 0;
|
||||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||||
if(nicePawn == none || nicePawn.maniacTimeout <= 0.0)
return 0;
|
if(nicePawn == none || nicePawn.maniacTimeout <= 0.0)
|
||||||
|
return 0;
|
||||||
return Ceil(nicePawn.maniacTimeout);
|
return Ceil(nicePawn.maniacTimeout);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
reloadBoostTime=5.000000
reloadSpeedup=1.500000
SkillName="Maniac"
SkillEffects="Reload 50% faster for 5 seconds after killing something."
|
{
|
||||||
|
reloadBoostTime=5.000000
|
||||||
|
reloadSpeedup=1.500000
|
||||||
|
SkillName="Maniac"
|
||||||
|
SkillEffects="Reload 50% faster for 5 seconds after killing something."
|
||||||
}
|
}
|
||||||
|
@ -4,5 +4,10 @@ var float damageBonus;
|
|||||||
var float reloadBonus;
|
var float reloadBonus;
|
||||||
var int weightBound;
|
var int weightBound;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
damageBonus=1.250000
ReloadBonus=1.250000
weightBound=4
SkillName="Offperk"
SkillEffects="Reload light weapons (less than 5 pounds) 25% faster and do 25% more damage with them."
|
{
|
||||||
|
damageBonus=1.250000
|
||||||
|
ReloadBonus=1.250000
|
||||||
|
weightBound=4
|
||||||
|
SkillName="Offperk"
|
||||||
|
SkillEffects="Reload light weapons (less than 5 pounds) 25% faster and do 25% more damage with them."
|
||||||
}
|
}
|
||||||
|
@ -3,5 +3,10 @@ class NiceSkillDemoOnperk extends NiceSkill
|
|||||||
var float damageBonus;
|
var float damageBonus;
|
||||||
var float speedBonus;
|
var float speedBonus;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
damageBonus=1.200000
speedBonus=1.500000
bBroadcast=True
SkillName="Onperk"
SkillEffects="Deal 20% more damage with your blunts and make your perk weapon's projectiles fly 50% faster."
|
{
|
||||||
|
damageBonus=1.200000
|
||||||
|
speedBonus=1.500000
|
||||||
|
bBroadcast=True
|
||||||
|
SkillName="Onperk"
|
||||||
|
SkillEffects="Deal 20% more damage with your blunts and make your perk weapon's projectiles fly 50% faster."
|
||||||
}
|
}
|
||||||
|
@ -6,5 +6,11 @@ var float explRadius;
|
|||||||
var float explExponent;
|
var float explExponent;
|
||||||
var float explMomentum;
|
var float explMomentum;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
BaseDamage=3000.000000
explRadius=1000.000000
explExponent=1.000000
explMomentum=150000.000000
SkillName="Reactive armor"
SkillEffects="Once per wave your death will be prevented, while zeds all around you will be blown to bits."
|
{
|
||||||
|
BaseDamage=3000.000000
|
||||||
|
explRadius=1000.000000
|
||||||
|
explExponent=1.000000
|
||||||
|
explMomentum=150000.000000
|
||||||
|
SkillName="Reactive armor"
|
||||||
|
SkillEffects="Once per wave your death will be prevented, while zeds all around you will be blown to bits."
|
||||||
}
|
}
|
||||||
|
@ -4,5 +4,10 @@ var float safeDistanceMult;
|
|||||||
var float explRangeMult;
|
var float explRangeMult;
|
||||||
var float falloffMult;
|
var float falloffMult;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
safeDistanceMult=0.500000
explRangeMult=1.000000
falloffMult=0.500000
SkillName="Volatile"
SkillEffects="Safe range for your explosives is halved and explosion damage experiences smaller fall off."
|
{
|
||||||
|
safeDistanceMult=0.500000
|
||||||
|
explRangeMult=1.000000
|
||||||
|
falloffMult=0.500000
|
||||||
|
SkillName="Volatile"
|
||||||
|
SkillEffects="Safe range for your explosives is halved and explosion damage experiences smaller fall off."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillDemoZEDDuckAndCover extends NiceSkill
|
class NiceSkillDemoZEDDuckAndCover extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Duck and cover"
SkillEffects="During zed time you can't deal yourself any damage."
|
{
|
||||||
|
SkillName="Duck and cover"
|
||||||
|
SkillEffects="During zed time you can't deal yourself any damage."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillDemoZEDFullBlast extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float explRadiusMult;
|
var float explRadiusMult;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
explRadiusMult=1.350000
SkillName="Full blast"
SkillEffects="During zed time your explosions have 35% larger radius and their damage doesn't suffer from a fall off."
|
{
|
||||||
|
explRadiusMult=1.350000
|
||||||
|
SkillName="Full blast"
|
||||||
|
SkillEffects="During zed time your explosions have 35% larger radius and their damage doesn't suffer from a fall off."
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,13 @@ class NiceDamageTypeVetEnforcer extends NiceWeaponDamageType
|
|||||||
abstract;
|
abstract;
|
||||||
|
|
||||||
static function AwardNiceDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount, int HL){
|
static function AwardNiceDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount, int HL){
|
||||||
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetSupportExp', Int(Float(Amount) * class'NicePack'.default.vetSupportDamageExpCost * getScale(HL)));
|
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
|
||||||
|
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetSupportExp', Int(Float(Amount) * class'NicePack'.default.vetSupportDamageExpCost * getScale(HL)));
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
badDecapMod=1.000000
bIsProjectile=True
HeadShotDamageMult=1.500000
|
{
|
||||||
|
badDecapMod=1.000000
|
||||||
|
bIsProjectile=True
|
||||||
|
HeadShotDamageMult=1.500000
|
||||||
}
|
}
|
@ -3,5 +3,8 @@ class NiceDamageTypeVetEnforcerBullets extends NiceDamageTypeVetEnforcer
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
badDecapMod=0.2500000
goodDecapMod=0.500000
bodyDestructionMult=1.000000
HeadShotDamageMult=1.000000
|
badDecapMod=0.2500000
|
||||||
|
goodDecapMod=0.500000
|
||||||
|
bodyDestructionMult=1.000000
|
||||||
|
HeadShotDamageMult=1.000000
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
class NiceVetSupportExp extends SRCustomProgressInt;
|
class NiceVetSupportExp extends SRCustomProgressInt;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
ProgressName="Enforcer exp."
|
{
|
||||||
|
ProgressName="Enforcer exp."
|
||||||
}
|
}
|
||||||
|
@ -3,5 +3,9 @@ class NiceSkillEnforcerBombard extends NiceSkill
|
|||||||
var float stunMult;
|
var float stunMult;
|
||||||
var float spreadMult;
|
var float spreadMult;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
stunMult=3.000000
spreadMult=0.500000
SkillName="Bombard"
SkillEffects="Your perked weapons are 3 times as good at stunning."
|
{
|
||||||
|
stunMult=3.000000
|
||||||
|
spreadMult=0.500000
|
||||||
|
SkillName="Bombard"
|
||||||
|
SkillEffects="Your perked weapons are 3 times as good at stunning."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillEnforcerMultitasker extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float reloadSlowDown;
|
var float reloadSlowDown;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
reloadSlowDown=5.000000
SkillName="Multitasker"
SkillEffects="Reload holstered weapons at five times as much time."
|
{
|
||||||
|
reloadSlowDown=5.000000
|
||||||
|
SkillName="Multitasker"
|
||||||
|
SkillEffects="Reload holstered weapons at five times as much time."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillSupportAntiZed extends NiceSkill
|
class NiceSkillSupportAntiZed extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Anti-zed rounds"
SkillEffects="When shotgun pellets pass screaming siren, they gain x4 damage boost."
|
{
|
||||||
|
SkillName="Anti-zed rounds"
|
||||||
|
SkillEffects="When shotgun pellets pass screaming siren, they gain x4 damage boost."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
class NiceSkillSupportArmory extends NiceSkill
|
class NiceSkillSupportArmory extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
bBroadcast=True
SkillName="Armory"
SkillEffects="Once per wave your team-mates will receive armored jacket when they run out of armor."
|
{
|
||||||
|
bBroadcast=True
|
||||||
|
SkillName="Armory"
|
||||||
|
SkillEffects="Once per wave your team-mates will receive armored jacket when they run out of armor."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillSupportBigGameHunter extends NiceSkillGenAmmo
|
|||||||
abstract;
|
abstract;
|
||||||
var float damageBonus;
|
var float damageBonus;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
damageBonus=1.600000
SkillName="Big-game hunter"
SkillEffects="Gain 60% damage bonus with grenades, but carry 5 grenades less."
|
{
|
||||||
|
damageBonus=1.600000
|
||||||
|
SkillName="Big-game hunter"
|
||||||
|
SkillEffects="Gain 60% damage bonus with grenades, but carry 5 grenades less."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillSupportCautious extends NiceSkill
|
class NiceSkillSupportCautious extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Cautious"
SkillEffects="Your grenades won't explode if you're too close to them."
|
{
|
||||||
|
SkillName="Cautious"
|
||||||
|
SkillEffects="Your grenades won't explode if you're too close to them."
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,8 @@ static function UpdateWeight(NicePlayerController nicePlayer){
|
|||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
if(nicePawn == none || nicePawn.KFPRI == none) return;
|
if(nicePawn == none || nicePawn.KFPRI == none) return;
|
||||||
nicePawn.maxCarryWeight = nicePawn.default.maxCarryWeight;
|
nicePawn.maxCarryWeight = nicePawn.default.maxCarryWeight;
|
||||||
if(nicePawn.KFPRI.clientVeteranSkill != none)
nicePawn.maxCarryWeight += nicePawn.KFPRI.clientVeteranSkill.static.AddCarryMaxWeight(nicePawn.KFPRI);
|
if(nicePawn.KFPRI.clientVeteranSkill != none)
|
||||||
|
nicePawn.maxCarryWeight += nicePawn.KFPRI.clientVeteranSkill.static.AddCarryMaxWeight(nicePawn.KFPRI);
|
||||||
}
|
}
|
||||||
function static SkillSelected(NicePlayerController nicePlayer){
|
function static SkillSelected(NicePlayerController nicePlayer){
|
||||||
UpdateWeight(nicePlayer);
|
UpdateWeight(nicePlayer);
|
||||||
@ -14,5 +15,8 @@ function static SkillDeSelected(NicePlayerController nicePlayer){
|
|||||||
UpdateWeight(nicePlayer);
|
UpdateWeight(nicePlayer);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
bonusWeight=5
SkillName="Diversity"
SkillEffects="Gain +5 weight slots."
|
{
|
||||||
|
bonusWeight=5
|
||||||
|
SkillName="Diversity"
|
||||||
|
SkillEffects="Gain +5 weight slots."
|
||||||
}
|
}
|
||||||
|
@ -3,5 +3,9 @@ class NiceSkillSupportGraze extends NiceSkill
|
|||||||
var float hsBonusZoneMult;
|
var float hsBonusZoneMult;
|
||||||
var float grazeDamageMult;
|
var float grazeDamageMult;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
hsBonusZoneMult=1.500000
grazeDamageMult=0.750000
SkillName="Graze"
SkillEffects="Your perked projectile can hit zeds' extended head zone for 75% of damage even if they miss the normal one."
|
{
|
||||||
|
hsBonusZoneMult=1.500000
|
||||||
|
grazeDamageMult=0.750000
|
||||||
|
SkillName="Graze"
|
||||||
|
SkillEffects="Your perked projectile can hit zeds' extended head zone for 75% of damage even if they miss the normal one."
|
||||||
}
|
}
|
||||||
|
@ -3,5 +3,9 @@ class NiceSkillSupportObsessive extends NiceSkill
|
|||||||
var float reloadLevel;
|
var float reloadLevel;
|
||||||
var float reloadBonus;
|
var float reloadBonus;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
reloadLevel=0.650000
ReloadBonus=1.500000
SkillName="Obsessive"
SkillEffects="Reload 50% faster when you lack at most 35% of bullets in the magazine."
|
{
|
||||||
|
reloadLevel=0.650000
|
||||||
|
ReloadBonus=1.500000
|
||||||
|
SkillName="Obsessive"
|
||||||
|
SkillEffects="Reload 50% faster when you lack at most 35% of bullets in the magazine."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillSupportSlugs extends NiceSkill
|
class NiceSkillSupportSlugs extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Slugs"
SkillEffects="Pellets shots replaced by slugs on shotguns."
|
{
|
||||||
|
SkillName="Slugs"
|
||||||
|
SkillEffects="Pellets shots replaced by slugs on shotguns."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillSupportStubbornness extends NiceSkillGenAmmo
|
|||||||
abstract;
|
abstract;
|
||||||
var float penLossRed;
|
var float penLossRed;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
penLossRed=0.500000
SkillName="Stubbornness"
SkillEffects="50% better penetration."
|
{
|
||||||
|
penLossRed=0.500000
|
||||||
|
SkillName="Stubbornness"
|
||||||
|
SkillEffects="50% better penetration."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillSupportZEDBore extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float minHeadshotPrecision;
|
var float minHeadshotPrecision;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
minHeadshotPrecision=0.100000
SkillName="Bore"
SkillEffects="During zed time your bullets' bounce between a zed's body and head 2 times before leaving it."
|
{
|
||||||
|
minHeadshotPrecision=0.100000
|
||||||
|
SkillName="Bore"
|
||||||
|
SkillEffects="During zed time your bullets' bounce between a zed's body and head 2 times before leaving it."
|
||||||
}
|
}
|
||||||
|
@ -3,5 +3,9 @@ class NiceSkillSupportZEDBulletStorm extends NiceSkill
|
|||||||
var float damageCut;
|
var float damageCut;
|
||||||
var float projCountMult;
|
var float projCountMult;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
damageCut=0.500000
projCountMult=7.000000
SkillName="Bullet storm"
SkillEffects="During zed time you fire seven times as much projectiles, that deal half as much damage."
|
{
|
||||||
|
damageCut=0.500000
|
||||||
|
projCountMult=7.000000
|
||||||
|
SkillName="Bullet storm"
|
||||||
|
SkillEffects="During zed time you fire seven times as much projectiles, that deal half as much damage."
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
class NiceDamageTypeVetMedic extends NiceWeaponDamageType
|
class NiceDamageTypeVetMedic extends NiceWeaponDamageType
|
||||||
abstract;
|
abstract;
|
||||||
static function AwardNiceDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount, int HL){
|
static function AwardNiceDamage(KFSteamStatsAndAchievements KFStatsAndAchievements, int Amount, int HL){
|
||||||
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetFieldMedicExp', Int(Float(Amount) * class'NicePack'.default.vetFieldMedicDmgExpCost * getScale(HL)));
|
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
|
||||||
|
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetFieldMedicExp', Int(Float(Amount) * class'NicePack'.default.vetFieldMedicDmgExpCost * getScale(HL)));
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
class NiceVetFieldMedicExp extends SRCustomProgressInt;
|
class NiceVetFieldMedicExp extends SRCustomProgressInt;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
ProgressName="Field Medic exp."
|
{
|
||||||
|
ProgressName="Field Medic exp."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
class NiceDamTypeDrug extends NiceWeaponDamageType
|
class NiceDamTypeDrug extends NiceWeaponDamageType
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
FemaleSuicide="%o overdosed."
MaleSuicide="%o overdosed."
bArmorStops=False
|
{
|
||||||
|
FemaleSuicide="%o overdosed."
|
||||||
|
MaleSuicide="%o overdosed."
|
||||||
|
bArmorStops=False
|
||||||
}
|
}
|
||||||
|
@ -4,5 +4,11 @@ var float boostTime;
|
|||||||
var float minHealth;
|
var float minHealth;
|
||||||
var float speedBoost, resistBoost;
|
var float speedBoost, resistBoost;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
boostTime=1.000000
minHealth=50.000000
speedBoost=2.000000
resistBoost=1.500000
SkillName="Adrenaline shot"
SkillEffects="Wounded players healed by you gain boost in speed (up to 100%) and damage resistance (up to 50%) for one second."
|
{
|
||||||
|
boostTime=1.000000
|
||||||
|
minHealth=50.000000
|
||||||
|
speedBoost=2.000000
|
||||||
|
resistBoost=1.500000
|
||||||
|
SkillName="Adrenaline shot"
|
||||||
|
SkillEffects="Wounded players healed by you gain boost in speed (up to 100%) and damage resistance (up to 50%) for one second."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillMedicAimAssistance extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float headIncrease;
|
var float headIncrease;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
headIncrease=1.500000
SkillName="Aim assistance"
SkillEffects="Zeds' critical points are 50% bigger for you."
|
{
|
||||||
|
headIncrease=1.500000
|
||||||
|
SkillName="Aim assistance"
|
||||||
|
SkillEffects="Zeds' critical points are 50% bigger for you."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillMedicArmament extends NiceSkill
|
class NiceSkillMedicArmament extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Armament"
SkillEffects="Your grenades restore armor of the other players, but you can't refill them with ammoboxes."
|
{
|
||||||
|
SkillName="Armament"
|
||||||
|
SkillEffects="Your grenades restore armor of the other players, but you can't refill them with ammoboxes."
|
||||||
}
|
}
|
||||||
|
@ -4,5 +4,14 @@ var float boostTime, painTime;
|
|||||||
var float withdrawalDamage, healthBoost;
|
var float withdrawalDamage, healthBoost;
|
||||||
var float bonusAccuracy, bonusMeleeDmg, bonusSpeed, bonusReload;
|
var float bonusAccuracy, bonusMeleeDmg, bonusSpeed, bonusReload;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
boostTime=30.000000
painTime=60.000000
withdrawalDamage=5.000000
bonusAccuracy=3.000000
bonusMeleeDmg=2.000000
bonusSpeed=2.000000
bonusReload=2.000000
SkillName="Injection"
SkillEffects="Once a wave your teammates can pickup a drug from you that will greatly boost their performance for 30 seconds, but suffer from withdrawal afterwards."
|
{
|
||||||
|
boostTime=30.000000
|
||||||
|
painTime=60.000000
|
||||||
|
withdrawalDamage=5.000000
|
||||||
|
bonusAccuracy=3.000000
|
||||||
|
bonusMeleeDmg=2.000000
|
||||||
|
bonusSpeed=2.000000
|
||||||
|
bonusReload=2.000000
|
||||||
|
SkillName="Injection"
|
||||||
|
SkillEffects="Once a wave your teammates can pickup a drug from you that will greatly boost their performance for 30 seconds, but suffer from withdrawal afterwards."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillMedicPesticide extends NiceSkill
|
class NiceSkillMedicPesticide extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Pesticide"
SkillEffects="Your grenades effect lasts only half the original time, but they drive small zeds to fight each other."
|
{
|
||||||
|
SkillName="Pesticide"
|
||||||
|
SkillEffects="Your grenades effect lasts only half the original time, but they drive small zeds to fight each other."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillMedicRegeneration extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float regenFrequency;
|
var float regenFrequency;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
regenFrequency=0.500000
SkillName="Regeneration"
SkillEffects="You regenerate 2 hp per second."
|
{
|
||||||
|
regenFrequency=0.500000
|
||||||
|
SkillName="Regeneration"
|
||||||
|
SkillEffects="You regenerate 2 hp per second."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillMedicSymbioticHealth extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float selfBoost;
|
var float selfBoost;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
selfBoost=0.250000
SkillName="Symbiotic health"
SkillEffects="Healing teammates will heal you 25% of your total health."
|
{
|
||||||
|
selfBoost=0.250000
|
||||||
|
SkillName="Symbiotic health"
|
||||||
|
SkillEffects="Healing teammates will heal you 25% of your total health."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,7 @@ class NiceSkillMedicTranquilizer extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float healingDebuff;
|
var float healingDebuff;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Tranquilizer"
SkillEffects="Zeds hit by your darts can be stunned by head-damage, but your darts lose 25% of their healing efficiency."
|
{
|
||||||
|
SkillName="Tranquilizer"
|
||||||
|
SkillEffects="Zeds hit by your darts can be stunned by head-damage, but your darts lose 25% of their healing efficiency."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillMedicZEDFrenzy extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float madnessTime;
|
var float madnessTime;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
madnessTime=30.000000
SkillName="Frenzy"
SkillEffects="Zeds hit by your darts during zed time will become rabid and attack anything indiscriminately for 30 seconds."
|
{
|
||||||
|
madnessTime=30.000000
|
||||||
|
SkillName="Frenzy"
|
||||||
|
SkillEffects="Zeds hit by your darts during zed time will become rabid and attack anything indiscriminately for 30 seconds."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillMedicZEDHeavenCanceller extends NiceSkill
|
class NiceSkillMedicZEDHeavenCanceller extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Heaven canceller"
SkillEffects="During zed-time your darts instantlyrestore health of your teammates and make them invincible for the duration."
|
{
|
||||||
|
SkillName="Heaven canceller"
|
||||||
|
SkillEffects="During zed-time your darts instantlyrestore health of your teammates and make them invincible for the duration."
|
||||||
}
|
}
|
||||||
|
@ -3,5 +3,9 @@ class NiceSkillEnforcerDetermination extends NiceSkill
|
|||||||
var int healthBound;
|
var int healthBound;
|
||||||
var float addedResist;
|
var float addedResist;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
healthBound=50
addedResist=0.500000
SkillName="Determination"
SkillEffects="Receive 50% less damage when your health falls below 50 mark."
|
{
|
||||||
|
healthBound=50
|
||||||
|
addedResist=0.500000
|
||||||
|
SkillName="Determination"
|
||||||
|
SkillEffects="Receive 50% less damage when your health falls below 50 mark."
|
||||||
}
|
}
|
||||||
|
@ -9,25 +9,35 @@ function static SkillSelected(NicePlayerController nicePlayer){
|
|||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
super.SkillSelected(nicePlayer);
|
super.SkillSelected(nicePlayer);
|
||||||
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
||||||
if(nicePlayer != none)
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
if(nicePlayer != none)
|
||||||
if(nicePawn != none)
nicePawn.hmgShieldLevel = default.layersAmount;
|
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||||
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
return;
|
if(nicePawn != none)
|
||||||
|
nicePawn.hmgShieldLevel = default.layersAmount;
|
||||||
|
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
|
||||||
|
return;
|
||||||
niceMutator.AddCounter("npHMGFullCounter", Texture'NicePackT.HudCounter.fullCounter', true, default.class);
|
niceMutator.AddCounter("npHMGFullCounter", Texture'NicePackT.HudCounter.fullCounter', true, default.class);
|
||||||
}
|
}
|
||||||
function static SkillDeSelected(NicePlayerController nicePlayer){
|
function static SkillDeSelected(NicePlayerController nicePlayer){
|
||||||
local NicePack niceMutator;
|
local NicePack niceMutator;
|
||||||
super.SkillDeSelected(nicePlayer);
|
super.SkillDeSelected(nicePlayer);
|
||||||
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
||||||
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
return;
|
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
|
||||||
|
return;
|
||||||
niceMutator.RemoveCounter("npHMGFullCounter");
|
niceMutator.RemoveCounter("npHMGFullCounter");
|
||||||
}
|
}
|
||||||
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
if(nicePlayer == none || counterName != "npHMGFullCounter")
return 0;
|
if(nicePlayer == none || counterName != "npHMGFullCounter")
|
||||||
|
return 0;
|
||||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||||
if(nicePawn == none)
return 0;
|
if(nicePawn == none)
|
||||||
|
return 0;
|
||||||
return nicePawn.hmgShieldLevel;
|
return nicePawn.hmgShieldLevel;
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
layersAmount=5
cooldown=15.000000
SkillName="Full counter"
SkillEffects="Gives you 5 protection layers, each of which can block a weak hit. One layer restores 15 seconds after you've been hit. Can't withstand strong attacks or attacks of huge enough zeds."
|
{
|
||||||
|
layersAmount=5
|
||||||
|
cooldown=15.000000
|
||||||
|
SkillName="Full counter"
|
||||||
|
SkillEffects="Gives you 5 protection layers, each of which can block a weak hit. One layer restores 15 seconds after you've been hit. Can't withstand strong attacks or attacks of huge enough zeds."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillEnforcerUnshakable extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float skillResist;
|
var float skillResist;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
skillResist=0.150000
SkillName="Unshakable"
SkillEffects="Your screen doesn't shake or blur, and you gain 15% resistance to all damage."
|
{
|
||||||
|
skillResist=0.150000
|
||||||
|
SkillName="Unshakable"
|
||||||
|
SkillEffects="Your screen doesn't shake or blur, and you gain 15% resistance to all damage."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillEnforcerUnstoppable extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float speedMult;
|
var float speedMult;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
speedMult=0.750000
SkillName="Unstoppable"
SkillEffects="Your speed doesn't decrease from additional weight, low health, poison or siren's pull, but you also receive -25% speed penalty."
|
{
|
||||||
|
speedMult=0.750000
|
||||||
|
SkillName="Unstoppable"
|
||||||
|
SkillEffects="Your speed doesn't decrease from additional weight, low health, poison or siren's pull, but you also receive -25% speed penalty."
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
class NiceSkillEnforcerZEDBarrage extends NiceSkill
|
class NiceSkillEnforcerZEDBarrage extends NiceSkill
|
||||||
abstract;
|
abstract;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="Barrage"
SkillEffects="Shoot without any recoil during zed-time."
|
{
|
||||||
|
SkillName="Barrage"
|
||||||
|
SkillEffects="Shoot without any recoil during zed-time."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillEnforcerZEDJuggernaut extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float distance;
|
var float distance;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
Distance=800.000000
SkillName="Juggernaut"
SkillEffects="You startle zeds around you upon entering zed-time."
|
{
|
||||||
|
Distance=800.000000
|
||||||
|
SkillName="Juggernaut"
|
||||||
|
SkillEffects="You startle zeds around you upon entering zed-time."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillHeavyCoating extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float huskResist;
|
var float huskResist;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
huskResist=1.000000
SkillName="Coating"
SkillEffects="You get immunity from fire and electricity for as long as you wear armor, and your armor can absorb damage from every source."
|
{
|
||||||
|
huskResist=1.000000
|
||||||
|
SkillName="Coating"
|
||||||
|
SkillEffects="You get immunity from fire and electricity for as long as you wear armor, and your armor can absorb damage from every source."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillHeavyOverclocking extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float fireSpeedMult;
|
var float fireSpeedMult;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
fireSpeedMult=1.300000
SkillName="Overclocking"
SkillEffects="+30% fire speed with perked weapons."
|
{
|
||||||
|
fireSpeedMult=1.300000
|
||||||
|
SkillName="Overclocking"
|
||||||
|
SkillEffects="+30% fire speed with perked weapons."
|
||||||
}
|
}
|
||||||
|
@ -2,5 +2,8 @@ class NiceSkillHeavySafeguard extends NiceSkill
|
|||||||
abstract;
|
abstract;
|
||||||
var float healingCost;
|
var float healingCost;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
healingCost=0.250000
SkillName="Safeguard"
SkillEffects="Your armor no longer protects you, but it heals you when your health falls too low."
|
{
|
||||||
|
healingCost=0.250000
|
||||||
|
SkillName="Safeguard"
|
||||||
|
SkillEffects="Your armor no longer protects you, but it heals you when your health falls too low."
|
||||||
}
|
}
|
||||||
|
@ -5,23 +5,30 @@ function static SkillSelected(NicePlayerController nicePlayer){
|
|||||||
local NicePack niceMutator;
|
local NicePack niceMutator;
|
||||||
super.SkillSelected(nicePlayer);
|
super.SkillSelected(nicePlayer);
|
||||||
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
||||||
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
return;
|
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
|
||||||
|
return;
|
||||||
niceMutator.AddCounter("npHMGStablePosition", Texture'NicePackT.HudCounter.stability', false, default.class);
|
niceMutator.AddCounter("npHMGStablePosition", Texture'NicePackT.HudCounter.stability', false, default.class);
|
||||||
}
|
}
|
||||||
function static SkillDeSelected(NicePlayerController nicePlayer){
|
function static SkillDeSelected(NicePlayerController nicePlayer){
|
||||||
local NicePack niceMutator;
|
local NicePack niceMutator;
|
||||||
super.SkillDeSelected(nicePlayer);
|
super.SkillDeSelected(nicePlayer);
|
||||||
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
niceMutator = class'NicePack'.static.Myself(nicePlayer.Level);
|
||||||
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
return;
|
if(niceMutator == none || niceMutator.Role == Role_AUTHORITY)
|
||||||
|
return;
|
||||||
niceMutator.RemoveCounter("npHMGStablePosition");
|
niceMutator.RemoveCounter("npHMGStablePosition");
|
||||||
}
|
}
|
||||||
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
if(nicePlayer == none || counterName != "npHMGStablePosition")
return 0;
|
if(nicePlayer == none || counterName != "npHMGStablePosition")
|
||||||
|
return 0;
|
||||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||||
if(nicePawn == none || nicePawn.stationaryTime <= 0.0)
return 0;
|
if(nicePawn == none || nicePawn.stationaryTime <= 0.0)
|
||||||
|
return 0;
|
||||||
return Min(10, Ceil(2 * nicePawn.stationaryTime) - 1);
|
return Min(10, Ceil(2 * nicePawn.stationaryTime) - 1);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
recoilDampeningBonus=0.100000
SkillName="Stable position"
SkillEffects="Each half-second you're crouching and now moving - you gain 10% recoil dampening bonus."
|
{
|
||||||
|
recoilDampeningBonus=0.100000
|
||||||
|
SkillName="Stable position"
|
||||||
|
SkillEffects="Each half-second you're crouching and now moving - you gain 10% recoil dampening bonus."
|
||||||
}
|
}
|
||||||
|
@ -6,18 +6,26 @@ var string SkillName, SkillEffects;
|
|||||||
function static SkillSelected(NicePlayerController nicePlayer){
|
function static SkillSelected(NicePlayerController nicePlayer){
|
||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
nicePawn = NiceHumanPawn(nicePlayer.Pawn);
|
nicePawn = NiceHumanPawn(nicePlayer.Pawn);
|
||||||
if(nicePawn != none){
nicePawn.RecalcAmmo();
if(nicePawn.Role < Role_AUTHORITY)
nicePawn.ApplyWeaponStats(nicePawn.weapon);
|
if(nicePawn != none){
|
||||||
|
nicePawn.RecalcAmmo();
|
||||||
|
if(nicePawn.Role < Role_AUTHORITY)
|
||||||
|
nicePawn.ApplyWeaponStats(nicePawn.weapon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function static SkillDeSelected(NicePlayerController nicePlayer){
|
function static SkillDeSelected(NicePlayerController nicePlayer){
|
||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
nicePawn = NiceHumanPawn(nicePlayer.Pawn);
|
nicePawn = NiceHumanPawn(nicePlayer.Pawn);
|
||||||
if(nicePawn != none){
nicePawn.RecalcAmmo();
if(nicePawn.Role < Role_AUTHORITY)
nicePawn.ApplyWeaponStats(nicePawn.weapon);
|
if(nicePawn != none){
|
||||||
|
nicePawn.RecalcAmmo();
|
||||||
|
if(nicePawn.Role < Role_AUTHORITY)
|
||||||
|
nicePawn.ApplyWeaponStats(nicePawn.weapon);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
function static int UpdateCounterValue(string counterName, NicePlayerController nicePlayer){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillName="All Fiction"
SkillEffects="Does nothing!"
|
{
|
||||||
|
SkillName="All Fiction"
|
||||||
|
SkillEffects="Does nothing!"
|
||||||
}
|
}
|
||||||
|
@ -4,11 +4,13 @@ class NiceSkillAbility extends NiceSkill
|
|||||||
var NiceAbilityManager.NiceAbilityDescription skillAbility;
|
var NiceAbilityManager.NiceAbilityDescription skillAbility;
|
||||||
// Functions that are called when skills becomes active / deactivated
|
// Functions that are called when skills becomes active / deactivated
|
||||||
function static SkillSelected(NicePlayerController nicePlayer){
|
function static SkillSelected(NicePlayerController nicePlayer){
|
||||||
if(nicePlayer != none && nicePlayer.abilityManager != none)
nicePlayer.abilityManager.AddAbility(default.skillAbility);
|
if(nicePlayer != none && nicePlayer.abilityManager != none)
|
||||||
|
nicePlayer.abilityManager.AddAbility(default.skillAbility);
|
||||||
super.SkillSelected(nicePlayer);
|
super.SkillSelected(nicePlayer);
|
||||||
}
|
}
|
||||||
function static SkillDeSelected(NicePlayerController nicePlayer){
|
function static SkillDeSelected(NicePlayerController nicePlayer){
|
||||||
if(nicePlayer != none && nicePlayer.abilityManager != none)
nicePlayer.abilityManager.RemoveAbility(default.skillAbility.ID);
|
if(nicePlayer != none && nicePlayer.abilityManager != none)
|
||||||
|
nicePlayer.abilityManager.RemoveAbility(default.skillAbility.ID);
|
||||||
super.SkillDeSelected(nicePlayer);
|
super.SkillDeSelected(nicePlayer);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
|
@ -4,7 +4,19 @@ function static UpdateWeapons(NicePlayerController nicePlayer){
|
|||||||
local Inventory I;
|
local Inventory I;
|
||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
nicePawn = NiceHumanPawn(nicePlayer.Pawn);
|
nicePawn = NiceHumanPawn(nicePlayer.Pawn);
|
||||||
if(nicePawn != none){
for(I = nicePawn.Inventory; I != none; I = I.Inventory)
if(NiceWeapon(I) != none){
NiceWeapon(I).UpdateWeaponAmmunition();
NiceWeapon(I).ClientUpdateWeaponMag();
}
else if(FragAmmo(I) != none){
FragAmmo(I).MaxAmmo = FragAmmo(I).default.MaxAmmo;
if(KFPlayerReplicationInfo(nicePawn.PlayerReplicationInfo) != none && KFPlayerReplicationInfo(nicePawn.PlayerReplicationInfo).ClientVeteranSkill != none)
FragAmmo(I).MaxAmmo = float(FragAmmo(I).MaxAmmo)
* KFPlayerReplicationInfo(nicePawn.PlayerReplicationInfo).ClientVeteranSkill.static.AddExtraAmmoFor(KFPlayerReplicationInfo(nicePawn.PlayerReplicationInfo), class'FragAmmo');
FragAmmo(I).AmmoAmount = Min(FragAmmo(I).AmmoAmount, FragAmmo(I).MaxAmmo);
}
|
if(nicePawn != none){
|
||||||
|
for(I = nicePawn.Inventory; I != none; I = I.Inventory)
|
||||||
|
if(NiceWeapon(I) != none){
|
||||||
|
NiceWeapon(I).UpdateWeaponAmmunition();
|
||||||
|
NiceWeapon(I).ClientUpdateWeaponMag();
|
||||||
|
}
|
||||||
|
else if(FragAmmo(I) != none){
|
||||||
|
FragAmmo(I).MaxAmmo = FragAmmo(I).default.MaxAmmo;
|
||||||
|
if(KFPlayerReplicationInfo(nicePawn.PlayerReplicationInfo) != none && KFPlayerReplicationInfo(nicePawn.PlayerReplicationInfo).ClientVeteranSkill != none)
|
||||||
|
FragAmmo(I).MaxAmmo = float(FragAmmo(I).MaxAmmo)
|
||||||
|
* KFPlayerReplicationInfo(nicePawn.PlayerReplicationInfo).ClientVeteranSkill.static.AddExtraAmmoFor(KFPlayerReplicationInfo(nicePawn.PlayerReplicationInfo), class'FragAmmo');
|
||||||
|
FragAmmo(I).AmmoAmount = Min(FragAmmo(I).AmmoAmount, FragAmmo(I).MaxAmmo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function static SkillSelected(NicePlayerController nicePlayer){
|
function static SkillSelected(NicePlayerController nicePlayer){
|
||||||
|
@ -14,11 +14,14 @@ static function bool CanUseSkill(NicePlayerController nicePlayer, class<NiceSkil
|
|||||||
local class<NiceVeterancyTypes> niceVet;
|
local class<NiceVeterancyTypes> niceVet;
|
||||||
// Get necessary variables
|
// Get necessary variables
|
||||||
KFPRI = KFPlayerReplicationInfo(nicePlayer.PlayerReplicationInfo);
|
KFPRI = KFPlayerReplicationInfo(nicePlayer.PlayerReplicationInfo);
|
||||||
if(KFPRI == none)
return false;
|
if(KFPRI == none)
|
||||||
|
return false;
|
||||||
niceVet = GetVeterancy(nicePlayer.PlayerReplicationInfo);
|
niceVet = GetVeterancy(nicePlayer.PlayerReplicationInfo);
|
||||||
currentLevel = GetClientVeteranSkillLevel(KFPRI);
|
currentLevel = GetClientVeteranSkillLevel(KFPRI);
|
||||||
// Check if we have that skill at appropriate level
|
// Check if we have that skill at appropriate level
|
||||||
for(i = 0;i < 5 && i < currentLevel;i ++)
if(niceVet.default.SkillGroupA[i] == skill || niceVet.default.SkillGroupB[i] == skill)
return true;
|
for(i = 0;i < 5 && i < currentLevel;i ++)
|
||||||
|
if(niceVet.default.SkillGroupA[i] == skill || niceVet.default.SkillGroupB[i] == skill)
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Checks if player is using given skill
|
// Checks if player is using given skill
|
||||||
@ -29,23 +32,37 @@ static function bool HasSkill(NicePlayerController nicePlayer, class<NiceSkill>
|
|||||||
local class<NiceVeterancyTypes> niceVet;
|
local class<NiceVeterancyTypes> niceVet;
|
||||||
local NicePlayerController.SkillChoices choices;
|
local NicePlayerController.SkillChoices choices;
|
||||||
// Get necessary variables
|
// Get necessary variables
|
||||||
if(nicePlayer == none || skill == none || !CanUseSkill(nicePlayer, skill))
return false;
|
if(nicePlayer == none || skill == none || !CanUseSkill(nicePlayer, skill))
|
||||||
|
return false;
|
||||||
KFPRI = KFPlayerReplicationInfo(nicePlayer.PlayerReplicationInfo);
|
KFPRI = KFPlayerReplicationInfo(nicePlayer.PlayerReplicationInfo);
|
||||||
if(KFPRI == none)
return false;
|
if(KFPRI == none)
|
||||||
|
return false;
|
||||||
currentLevel = GetClientVeteranSkillLevel(KFPRI);
|
currentLevel = GetClientVeteranSkillLevel(KFPRI);
|
||||||
niceVet = GetVeterancy(nicePlayer.PlayerReplicationInfo);
|
niceVet = GetVeterancy(nicePlayer.PlayerReplicationInfo);
|
||||||
choices = nicePlayer.currentSkills[niceVet.default.PerkIndex];
|
choices = nicePlayer.currentSkills[niceVet.default.PerkIndex];
|
||||||
// Check our skill is chosen at some level; (since there shouldn't be any duplicates and it can be chosen at some level -> it's active)
|
// Check our skill is chosen at some level; (since there shouldn't be any duplicates and it can be chosen at some level -> it's active)
|
||||||
for(i = 0;i < 5 && i < currentLevel;i ++)
if((niceVet.default.SkillGroupA[i] == skill && choices.isAltChoice[i] == 0)
|| (niceVet.default.SkillGroupB[i] == skill && choices.isAltChoice[i] > 0))
return true;
|
for(i = 0;i < 5 && i < currentLevel;i ++)
|
||||||
|
if((niceVet.default.SkillGroupA[i] == skill && choices.isAltChoice[i] == 0)
|
||||||
|
|| (niceVet.default.SkillGroupB[i] == skill && choices.isAltChoice[i] > 0))
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
static function bool SomeoneHasSkill(NicePlayerController player, class<NiceSkill> skill){
|
static function bool SomeoneHasSkill(NicePlayerController player, class<NiceSkill> skill){
|
||||||
local int i;
|
local int i;
|
||||||
local Controller P;
|
local Controller P;
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
if(player == none)
return false;
|
if(player == none)
|
||||||
if(player.Pawn.Role == ROLE_Authority)
for(P = player.Level.ControllerList; P != none; P = P.nextController){
nicePlayer = NicePlayerController(P);
if(nicePlayer != none && HasSkill(nicePlayer, skill) && nicePlayer.Pawn.Health > 0 && !nicePlayer.Pawn.bPendingDelete
&& nicePlayer.PlayerReplicationInfo.Team == player.PlayerReplicationInfo.Team)
return true;
}
|
return false;
|
||||||
else for(i = 0;i < player.broadcastedSkills.Length;i ++)
if(player.broadcastedSkills[i] == skill)
return true;
|
if(player.Pawn.Role == ROLE_Authority)
|
||||||
|
for(P = player.Level.ControllerList; P != none; P = P.nextController){
|
||||||
|
nicePlayer = NicePlayerController(P);
|
||||||
|
if(nicePlayer != none && HasSkill(nicePlayer, skill) && nicePlayer.Pawn.Health > 0 && !nicePlayer.Pawn.bPendingDelete
|
||||||
|
&& nicePlayer.PlayerReplicationInfo.Team == player.PlayerReplicationInfo.Team)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else for(i = 0;i < player.broadcastedSkills.Length;i ++)
|
||||||
|
if(player.broadcastedSkills[i] == skill)
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Checks if player will automatically chose given skill at the next opportunity
|
// Checks if player will automatically chose given skill at the next opportunity
|
||||||
@ -56,30 +73,41 @@ static function bool IsSkillPending(NicePlayerController nicePlayer, class<NiceS
|
|||||||
local class<NiceVeterancyTypes> niceVet;
|
local class<NiceVeterancyTypes> niceVet;
|
||||||
local NicePlayerController.SkillChoices choices;
|
local NicePlayerController.SkillChoices choices;
|
||||||
// Get necessary variables
|
// Get necessary variables
|
||||||
if(nicePlayer == none || skill == none || !CanUseSkill(nicePlayer, skill))
return false;
|
if(nicePlayer == none || skill == none || !CanUseSkill(nicePlayer, skill))
|
||||||
|
return false;
|
||||||
KFPRI = KFPlayerReplicationInfo(nicePlayer.PlayerReplicationInfo);
|
KFPRI = KFPlayerReplicationInfo(nicePlayer.PlayerReplicationInfo);
|
||||||
if(KFPRI == none)
return false;
|
if(KFPRI == none)
|
||||||
|
return false;
|
||||||
currentLevel = GetClientVeteranSkillLevel(KFPRI);
|
currentLevel = GetClientVeteranSkillLevel(KFPRI);
|
||||||
niceVet = GetVeterancy(nicePlayer.PlayerReplicationInfo);
|
niceVet = GetVeterancy(nicePlayer.PlayerReplicationInfo);
|
||||||
choices = nicePlayer.pendingSkills[niceVet.default.PerkIndex];
|
choices = nicePlayer.pendingSkills[niceVet.default.PerkIndex];
|
||||||
// Check our skill is chosen at some level; (since there shouldn't be any duplicates and it can be chosen at some level -> it's active)
|
// Check our skill is chosen at some level; (since there shouldn't be any duplicates and it can be chosen at some level -> it's active)
|
||||||
for(i = 0;i < 5;i ++)
if((niceVet.default.SkillGroupA[i] == skill && choices.isAltChoice[i] == 0)
|| (niceVet.default.SkillGroupB[i] == skill && choices.isAltChoice[i] > 0))
return true;
|
for(i = 0;i < 5;i ++)
|
||||||
|
if((niceVet.default.SkillGroupA[i] == skill && choices.isAltChoice[i] == 0)
|
||||||
|
|| (niceVet.default.SkillGroupB[i] == skill && choices.isAltChoice[i] > 0))
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// Function that checks if given pickup class is marked as perked for current veterancy
|
// Function that checks if given pickup class is marked as perked for current veterancy
|
||||||
static function bool IsPerkedPickup(class<NiceWeaponPickup> pickup){
|
static function bool IsPerkedPickup(class<NiceWeaponPickup> pickup){
|
||||||
local int i;
|
local int i;
|
||||||
if(pickup == none)
return false;
|
if(pickup == none)
|
||||||
if(pickup.default.CorrespondingPerkIndex == default.PerkIndex)
return true;
|
return false;
|
||||||
else for(i = 0;i < pickup.default.crossPerkIndecies.Length;i ++)
if(pickup.default.crossPerkIndecies[i] == default.PerkIndex)
return true;
|
if(pickup.default.CorrespondingPerkIndex == default.PerkIndex)
|
||||||
|
return true;
|
||||||
|
else for(i = 0;i < pickup.default.crossPerkIndecies.Length;i ++)
|
||||||
|
if(pickup.default.crossPerkIndecies[i] == default.PerkIndex)
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
static function bool IsPickupLight(class<NiceWeaponPickup> pickup){
|
static function bool IsPickupLight(class<NiceWeaponPickup> pickup){
|
||||||
if(pickup != none && pickup.default.Weight <= 8)
return true;
|
if(pickup != none && pickup.default.Weight <= 8)
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
static function bool IsPickupBackup(class<NiceWeaponPickup> pickup){
|
static function bool IsPickupBackup(class<NiceWeaponPickup> pickup){
|
||||||
if(pickup != none && pickup.default.bBackupWeapon)
return true;
|
if(pickup != none && pickup.default.bBackupWeapon)
|
||||||
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -87,38 +115,44 @@ static function bool IsPickupBackup(class<NiceWeaponPickup> pickup){
|
|||||||
static function class<NiceWeaponPickup> GetPickupFromWeapon(class<Weapon> inputClass){
|
static function class<NiceWeaponPickup> GetPickupFromWeapon(class<Weapon> inputClass){
|
||||||
local class<NiceWeapon> niceWeaponClass;
|
local class<NiceWeapon> niceWeaponClass;
|
||||||
niceWeaponClass = class<NiceWeapon>(inputClass);
|
niceWeaponClass = class<NiceWeapon>(inputClass);
|
||||||
if(niceWeaponClass == none)
return none;
|
if(niceWeaponClass == none)
|
||||||
|
return none;
|
||||||
return class<NiceWeaponPickup>(niceWeaponClass.default.PickupClass);
|
return class<NiceWeaponPickup>(niceWeaponClass.default.PickupClass);
|
||||||
}
|
}
|
||||||
static function class<NiceWeaponPickup> GetPickupFromAmmo(Class<Ammunition> inputClass){
|
static function class<NiceWeaponPickup> GetPickupFromAmmo(Class<Ammunition> inputClass){
|
||||||
local class<NiceAmmo> niceAmmoClass;
|
local class<NiceAmmo> niceAmmoClass;
|
||||||
niceAmmoClass = class<NiceAmmo>(inputClass);
|
niceAmmoClass = class<NiceAmmo>(inputClass);
|
||||||
if(niceAmmoClass == none)
return none;
|
if(niceAmmoClass == none)
|
||||||
|
return none;
|
||||||
return niceAmmoClass.default.WeaponPickupClass;
|
return niceAmmoClass.default.WeaponPickupClass;
|
||||||
}
|
}
|
||||||
static function class<NiceWeapon> GetWeaponFromAmmo(Class<Ammunition> inputClass){
|
static function class<NiceWeapon> GetWeaponFromAmmo(Class<Ammunition> inputClass){
|
||||||
local class<NiceWeaponPickup> nicePickupClass;
|
local class<NiceWeaponPickup> nicePickupClass;
|
||||||
nicePickupClass = GetPickupFromAmmo(inputClass);
|
nicePickupClass = GetPickupFromAmmo(inputClass);
|
||||||
if(nicePickupClass == none)
return none;
|
if(nicePickupClass == none)
|
||||||
|
return none;
|
||||||
return class<NiceWeapon>(nicePickupClass.default.InventoryType);
|
return class<NiceWeapon>(nicePickupClass.default.InventoryType);
|
||||||
}
|
}
|
||||||
static function class<NiceWeaponPickup> GetPickupFromDamageType(class<DamageType> inputClass){
|
static function class<NiceWeaponPickup> GetPickupFromDamageType(class<DamageType> inputClass){
|
||||||
local class<NiceWeaponDamageType> niceDmgTypeClass;
|
local class<NiceWeaponDamageType> niceDmgTypeClass;
|
||||||
niceDmgTypeClass = class<NiceWeaponDamageType>(inputClass);
|
niceDmgTypeClass = class<NiceWeaponDamageType>(inputClass);
|
||||||
if(niceDmgTypeClass == none)
return none;
|
if(niceDmgTypeClass == none)
|
||||||
|
return none;
|
||||||
return GetPickupFromWeapon(class<NiceWeapon>(niceDmgTypeClass.default.WeaponClass));
|
return GetPickupFromWeapon(class<NiceWeapon>(niceDmgTypeClass.default.WeaponClass));
|
||||||
}
|
}
|
||||||
static function class<NiceWeaponPickup> GetPickupFromWeaponFire(WeaponFire fireInstance){
|
static function class<NiceWeaponPickup> GetPickupFromWeaponFire(WeaponFire fireInstance){
|
||||||
local NiceFire niceFire;
|
local NiceFire niceFire;
|
||||||
niceFire = NiceFire(fireInstance);
|
niceFire = NiceFire(fireInstance);
|
||||||
if(niceFire == none)
return none;
|
if(niceFire == none)
|
||||||
|
return none;
|
||||||
return GetPickupFromAmmo(class<NiceAmmo>(niceFire.AmmoClass));
|
return GetPickupFromAmmo(class<NiceAmmo>(niceFire.AmmoClass));
|
||||||
}
|
}
|
||||||
// Finds correct veterancy for a player
|
// Finds correct veterancy for a player
|
||||||
static function class<NiceVeterancyTypes> GetVeterancy(PlayerReplicationInfo PRI){
|
static function class<NiceVeterancyTypes> GetVeterancy(PlayerReplicationInfo PRI){
|
||||||
local KFPlayerReplicationInfo KFPRI;
|
local KFPlayerReplicationInfo KFPRI;
|
||||||
KFPRI = KFPlayerReplicationInfo(PRI);
|
KFPRI = KFPlayerReplicationInfo(PRI);
|
||||||
if(KFPRI == none || KFPRI.ClientVeteranSkill == none)
return none;
|
if(KFPRI == none || KFPRI.ClientVeteranSkill == none)
|
||||||
|
return none;
|
||||||
return class<NiceVeterancyTypes>(KFPRI.ClientVeteranSkill);
|
return class<NiceVeterancyTypes>(KFPRI.ClientVeteranSkill);
|
||||||
}
|
}
|
||||||
// New perk progress function
|
// New perk progress function
|
||||||
@ -127,8 +161,25 @@ static function int GetPerkProgressInt(ClientPerkRepLink StatOther, out int Fina
|
|||||||
local int filledLevels;
|
local int filledLevels;
|
||||||
local array<int> ProgressArray;
|
local array<int> ProgressArray;
|
||||||
local int DoubleScalingBase;
|
local int DoubleScalingBase;
|
||||||
if(!default.bNewTypePerk)
return Super.GetPerkProgressInt(StatOther, FinalInt, CurLevel, ReqNum);
|
if(!default.bNewTypePerk)
|
||||||
else{
ProgressArray = GetProgressArray(ReqNum, DoubleScalingBase);
filledLevels = ProgressArray.Length;
if(filledLevels > 1)
delta = ProgressArray[filledLevels - 1] - ProgressArray[filledLevels - 2];
else if(filledLevels == 1)
delta = ProgressArray[0];
else
delta = 10;
if(filledLevels > 0)
highestFilled = ProgressArray[filledLevels - 1];
else
highestFilled = 10;
if(CurLevel < filledLevels)
FinalInt = ProgressArray[CurLevel];
else
FinalInt = highestFilled + (CurLevel - filledLevels) * delta;
|
return Super.GetPerkProgressInt(StatOther, FinalInt, CurLevel, ReqNum);
|
||||||
|
else{
|
||||||
|
ProgressArray = GetProgressArray(ReqNum, DoubleScalingBase);
|
||||||
|
filledLevels = ProgressArray.Length;
|
||||||
|
if(filledLevels > 1)
|
||||||
|
delta = ProgressArray[filledLevels - 1] - ProgressArray[filledLevels - 2];
|
||||||
|
else if(filledLevels == 1)
|
||||||
|
delta = ProgressArray[0];
|
||||||
|
else
|
||||||
|
delta = 10;
|
||||||
|
if(filledLevels > 0)
|
||||||
|
highestFilled = ProgressArray[filledLevels - 1];
|
||||||
|
else
|
||||||
|
highestFilled = 10;
|
||||||
|
if(CurLevel < filledLevels)
|
||||||
|
FinalInt = ProgressArray[CurLevel];
|
||||||
|
else
|
||||||
|
FinalInt = highestFilled + (CurLevel - filledLevels) * delta;
|
||||||
}
|
}
|
||||||
return Min(GetStatValueInt(StatOther, ReqNum), FinalInt);
|
return Min(GetStatValueInt(StatOther, ReqNum), FinalInt);
|
||||||
}
|
}
|
||||||
@ -154,7 +205,8 @@ static function int AddRegDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injure
|
|||||||
}
|
}
|
||||||
// Allows to buff only fire component of damage.
|
// Allows to buff only fire component of damage.
|
||||||
static function int AddFireDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<NiceWeaponDamageType> DmgType){
|
static function int AddFireDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, int InDamage, class<NiceWeaponDamageType> DmgType){
|
||||||
if(DmgType != none)
return InDamage * DmgType.default.heatPart;
|
if(DmgType != none)
|
||||||
|
return InDamage * DmgType.default.heatPart;
|
||||||
return InDamage;
|
return InDamage;
|
||||||
}
|
}
|
||||||
static function float stunDurationMult(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, class<NiceWeaponDamageType> DmgType){
|
static function float stunDurationMult(KFPlayerReplicationInfo KFPRI, KFMonster Injured, KFPawn DamageTaker, class<NiceWeaponDamageType> DmgType){
|
||||||
@ -177,7 +229,8 @@ static function bool CanBePulled(KFPlayerReplicationInfo KFPRI){
|
|||||||
}
|
}
|
||||||
// What weight value should be used when calculation Pawn's speed?
|
// What weight value should be used when calculation Pawn's speed?
|
||||||
static function float GetPerceivedWeight(KFPlayerReplicationInfo KFPRI, KFWeapon other){
|
static function float GetPerceivedWeight(KFPlayerReplicationInfo KFPRI, KFWeapon other){
|
||||||
if(other != none)
return other.weight;
|
if(other != none)
|
||||||
|
return other.weight;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
// A new, universal, penetration reduction function that is used by all 'NiceWeapon' subclasses
|
// A new, universal, penetration reduction function that is used by all 'NiceWeapon' subclasses
|
||||||
@ -188,19 +241,22 @@ static function float GetPenetrationDamageMulti(KFPlayerReplicationInfo KFPRI, f
|
|||||||
static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item){
|
static function float GetCostScaling(KFPlayerReplicationInfo KFPRI, class<Pickup> Item){
|
||||||
/*local class<NiceWeaponPickup> pickupClass;
|
/*local class<NiceWeaponPickup> pickupClass;
|
||||||
pickupClass = class<NiceWeaponPickup>(Item);
|
pickupClass = class<NiceWeaponPickup>(Item);
|
||||||
if(IsPerkedPickup(pickupClass))
return 0.5;*/
|
if(IsPerkedPickup(pickupClass))
|
||||||
|
return 0.5;*/
|
||||||
return 1.0;
|
return 1.0;
|
||||||
}
|
}
|
||||||
static function bool ShowStalkers(KFPlayerReplicationInfo KFPRI){
|
static function bool ShowStalkers(KFPlayerReplicationInfo KFPRI){
|
||||||
return GetStalkerViewDistanceMulti(KFPRI) > 0;
|
return GetStalkerViewDistanceMulti(KFPRI) > 0;
|
||||||
}
|
}
|
||||||
static function float GetStalkerViewDistanceMulti(KFPlayerReplicationInfo KFPRI){
|
static function float GetStalkerViewDistanceMulti(KFPlayerReplicationInfo KFPRI){
|
||||||
if(SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoStrategist'))
return class'NiceSkillCommandoStrategist'.default.visionRadius;
|
if(SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoStrategist'))
|
||||||
|
return class'NiceSkillCommandoStrategist'.default.visionRadius;
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
// Modify distance at which health bars can be seen; 1.0 = 800 units, max = 2000 units = 2.5
|
// Modify distance at which health bars can be seen; 1.0 = 800 units, max = 2000 units = 2.5
|
||||||
static function float GetHealthBarsDistanceMulti(KFPlayerReplicationInfo KFPRI){
|
static function float GetHealthBarsDistanceMulti(KFPlayerReplicationInfo KFPRI){
|
||||||
if(KFPRI != none && SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoStrategist'))
return class'NiceSkillCommandoStrategist'.default.visionRadius;
|
if(KFPRI != none && SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoStrategist'))
|
||||||
|
return class'NiceSkillCommandoStrategist'.default.visionRadius;
|
||||||
return 0.0;
|
return 0.0;
|
||||||
}
|
}
|
||||||
static function int GetAdditionalPenetrationAmount(KFPlayerReplicationInfo KFPRI){
|
static function int GetAdditionalPenetrationAmount(KFPlayerReplicationInfo KFPRI){
|
||||||
@ -222,25 +278,32 @@ static function SpecialHUDInfo(KFPlayerReplicationInfo KFPRI, Canvas C){
|
|||||||
MaxDistanceSquared = 640000;
|
MaxDistanceSquared = 640000;
|
||||||
MaxDistanceSquared *= GetHealthBarsDistanceMulti(KFPRI)**2;
|
MaxDistanceSquared *= GetHealthBarsDistanceMulti(KFPRI)**2;
|
||||||
HKF = HUDKillingFloor(C.ViewPort.Actor.myHUD);
|
HKF = HUDKillingFloor(C.ViewPort.Actor.myHUD);
|
||||||
if(HKF == none || C.ViewPort.Actor.Pawn == none || MaxDistanceSquared <= 0)
return;
|
if(HKF == none || C.ViewPort.Actor.Pawn == none || MaxDistanceSquared <= 0)
|
||||||
foreach C.ViewPort.Actor.DynamicActors(class'KFMonster', KFEnemy){
if(KFEnemy.Health > 0 && (!KFEnemy.Cloaked() || KFEnemy.bZapped || KFEnemy.bSpotted) && VSizeSquared(KFEnemy.Location - C.ViewPort.Actor.Pawn.Location) < MaxDistanceSquared)
HKF.DrawHealthBar(C, KFEnemy, KFEnemy.Health, KFEnemy.HealthMax , 50.0);
|
return;
|
||||||
|
foreach C.ViewPort.Actor.DynamicActors(class'KFMonster', KFEnemy){
|
||||||
|
if(KFEnemy.Health > 0 && (!KFEnemy.Cloaked() || KFEnemy.bZapped || KFEnemy.bSpotted) && VSizeSquared(KFEnemy.Location - C.ViewPort.Actor.Pawn.Location) < MaxDistanceSquared)
|
||||||
|
HKF.DrawHealthBar(C, KFEnemy, KFEnemy.Health, KFEnemy.HealthMax , 50.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Is player standing still?
|
// Is player standing still?
|
||||||
static function bool IsStandingStill(KFPlayerReplicationInfo KFPRI){
|
static function bool IsStandingStill(KFPlayerReplicationInfo KFPRI){
|
||||||
if(KFPRI != none && PlayerController(KFPRI.Owner) != none && PlayerController(KFPRI.Owner).Pawn != none && VSize(PlayerController(KFPRI.Owner).Pawn.Velocity) > 0.0)
return false;
|
if(KFPRI != none && PlayerController(KFPRI.Owner) != none && PlayerController(KFPRI.Owner).Pawn != none && VSize(PlayerController(KFPRI.Owner).Pawn.Velocity) > 0.0)
|
||||||
|
return false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
// Is player aiming?
|
// Is player aiming?
|
||||||
static function bool IsAiming(KFPlayerReplicationInfo KFPRI){
|
static function bool IsAiming(KFPlayerReplicationInfo KFPRI){
|
||||||
local KFWeapon kfWeap;
|
local KFWeapon kfWeap;
|
||||||
if(KFPRI != none && PlayerController(KFPRI.Owner) != none && PlayerController(KFPRI.Owner).Pawn != none)
kfWeap = KFWeapon(PlayerController(KFPRI.Owner).Pawn.weapon);
|
if(KFPRI != none && PlayerController(KFPRI.Owner) != none && PlayerController(KFPRI.Owner).Pawn != none)
|
||||||
if(kfWeap == none)
return false;
|
kfWeap = KFWeapon(PlayerController(KFPRI.Owner).Pawn.weapon);
|
||||||
|
if(kfWeap == none)
|
||||||
|
return false;
|
||||||
return kfWeap.bAimingRifle;
|
return kfWeap.bAimingRifle;
|
||||||
}
|
}
|
||||||
// Just display the same fixed bonuses for the new type perks
|
// Just display the same fixed bonuses for the new type perks
|
||||||
static function string GetVetInfoText(byte Level, byte Type, optional byte RequirementNum){
|
static function string GetVetInfoText(byte Level, byte Type, optional byte RequirementNum){
|
||||||
if(Type == 1 && default.bNewTypePerk)
return default.CustomLevelInfo;
|
if(Type == 1 && default.bNewTypePerk)
|
||||||
|
return default.CustomLevelInfo;
|
||||||
return Super.GetVetInfoText(Level, Type, RequirementNum);
|
return Super.GetVetInfoText(Level, Type, RequirementNum);
|
||||||
}
|
}
|
||||||
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
||||||
@ -248,5 +311,15 @@ static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
|||||||
}
|
}
|
||||||
static function SetupAbilities(KFPlayerReplicationInfo KFPRI){}
|
static function SetupAbilities(KFPlayerReplicationInfo KFPRI){}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
SkillGroupA(0)=Class'NicePack.NiceSkill'
SkillGroupA(1)=Class'NicePack.NiceSkill'
SkillGroupA(2)=Class'NicePack.NiceSkill'
SkillGroupA(3)=Class'NicePack.NiceSkill'
SkillGroupA(4)=Class'NicePack.NiceSkill'
SkillGroupB(0)=Class'NicePack.NiceSkill'
SkillGroupB(1)=Class'NicePack.NiceSkill'
SkillGroupB(2)=Class'NicePack.NiceSkill'
SkillGroupB(3)=Class'NicePack.NiceSkill'
SkillGroupB(4)=Class'NicePack.NiceSkill'
|
{
|
||||||
|
SkillGroupA(0)=Class'NicePack.NiceSkill'
|
||||||
|
SkillGroupA(1)=Class'NicePack.NiceSkill'
|
||||||
|
SkillGroupA(2)=Class'NicePack.NiceSkill'
|
||||||
|
SkillGroupA(3)=Class'NicePack.NiceSkill'
|
||||||
|
SkillGroupA(4)=Class'NicePack.NiceSkill'
|
||||||
|
SkillGroupB(0)=Class'NicePack.NiceSkill'
|
||||||
|
SkillGroupB(1)=Class'NicePack.NiceSkill'
|
||||||
|
SkillGroupB(2)=Class'NicePack.NiceSkill'
|
||||||
|
SkillGroupB(3)=Class'NicePack.NiceSkill'
|
||||||
|
SkillGroupB(4)=Class'NicePack.NiceSkill'
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
class NiceDamageTypeVetSharpshooter extends NiceWeaponDamageType
|
class NiceDamageTypeVetSharpshooter extends NiceWeaponDamageType
|
||||||
abstract;
|
abstract;
|
||||||
static function ScoredNiceHeadshot(KFSteamStatsAndAchievements KFStatsAndAchievements, class<KFMonster> monsterClass, int HL){
|
static function ScoredNiceHeadshot(KFSteamStatsAndAchievements KFStatsAndAchievements, class<KFMonster> monsterClass, int HL){
|
||||||
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetSharpshooterExp', Int(class'NicePack'.default.vetSharpHeadshotExpCost * getScale(HL)));
|
if(SRStatsBase(KFStatsAndAchievements) != none && SRStatsBase(KFStatsAndAchievements).Rep != none)
|
||||||
|
SRStatsBase(KFStatsAndAchievements).Rep.ProgressCustomValue(Class'NiceVetSharpshooterExp', Int(class'NicePack'.default.vetSharpHeadshotExpCost * getScale(HL)));
|
||||||
super.ScoredNiceHeadshot(KFStatsAndAchievements, monsterClass, HL);
|
super.ScoredNiceHeadshot(KFStatsAndAchievements, monsterClass, HL);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
class NiceVetSharpshooterExp extends SRCustomProgressInt;
|
class NiceVetSharpshooterExp extends SRCustomProgressInt;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
ProgressName="Sharpshooter exp."
|
{
|
||||||
|
ProgressName="Sharpshooter exp."
|
||||||
}
|
}
|
||||||
|
@ -11,15 +11,29 @@ function SetupWave(){
|
|||||||
}
|
}
|
||||||
function RestartPlayer(Controller aPlayer){
|
function RestartPlayer(Controller aPlayer){
|
||||||
Super.RestartPlayer(aPlayer);
|
Super.RestartPlayer(aPlayer);
|
||||||
if(aPlayer.Pawn != none && NicePlayerController(aPlayer) != none)
NicePlayerController(aPlayer).PawnSpawned();
|
if(aPlayer.Pawn != none && NicePlayerController(aPlayer) != none)
|
||||||
|
NicePlayerController(aPlayer).PawnSpawned();
|
||||||
}
|
}
|
||||||
State MatchInProgress{
|
State MatchInProgress{
|
||||||
function BeginState(){
Super(Invasion).BeginState();
|
function BeginState(){
|
||||||
WaveNum = InitialWave;
InvasionGameReplicationInfo(GameReplicationInfo).WaveNumber = WaveNum;
|
Super(Invasion).BeginState();
|
||||||
if(NicePackMutator.bInitialTrader)
WaveCountDown = NicePackMutator.initialTraderTime + 10;
else
WaveCountDown = 10;
|
|
||||||
SetupPickups();
// Event call
NicePackMutator.MatchBegan();
|
WaveNum = InitialWave;
|
||||||
|
InvasionGameReplicationInfo(GameReplicationInfo).WaveNumber = WaveNum;
|
||||||
|
|
||||||
|
if(NicePackMutator.bInitialTrader)
|
||||||
|
WaveCountDown = NicePackMutator.initialTraderTime + 10;
|
||||||
|
else
|
||||||
|
WaveCountDown = 10;
|
||||||
|
|
||||||
|
SetupPickups();
|
||||||
|
// Event call
|
||||||
|
NicePackMutator.MatchBegan();
|
||||||
}
|
}
|
||||||
function DoWaveEnd(){
Super.DoWaveEnd();
// Event call
NicePackMutator.TraderStart();
|
function DoWaveEnd(){
|
||||||
|
Super.DoWaveEnd();
|
||||||
|
// Event call
|
||||||
|
NicePackMutator.TraderStart();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function DramaticEvent(float BaseZedTimePossibility, optional float DesiredZedTimeDuration){
|
function DramaticEvent(float BaseZedTimePossibility, optional float DesiredZedTimeDuration){
|
||||||
@ -27,19 +41,53 @@ function DramaticEvent(float BaseZedTimePossibility, optional float DesiredZedTi
|
|||||||
bWasZedTime = bZEDTimeActive;
|
bWasZedTime = bZEDTimeActive;
|
||||||
Super.DramaticEvent(BaseZedTimePossibility, DesiredZedTimeDuration);
|
Super.DramaticEvent(BaseZedTimePossibility, DesiredZedTimeDuration);
|
||||||
// Call events
|
// Call events
|
||||||
if(!bWasZedTime && bZEDTimeActive)
NicePackMutator.ZedTimeActivated();
|
if(!bWasZedTime && bZEDTimeActive)
|
||||||
|
NicePackMutator.ZedTimeActivated();
|
||||||
}
|
}
|
||||||
event Tick(float DeltaTime){
|
event Tick(float DeltaTime){
|
||||||
local float TrueTimeFactor;
|
local float TrueTimeFactor;
|
||||||
local Controller C;
|
local Controller C;
|
||||||
if(bZEDTimeActive){
TrueTimeFactor = 1.1 / Level.TimeDilation;
CurrentZEDTimeDuration -= DeltaTime * TrueTimeFactor;
if(CurrentZEDTimeDuration < (ZEDTimeDuration*0.166) && CurrentZEDTimeDuration > 0 ){
if(!bSpeedingBackUp){
bSpeedingBackUp = true;
|
if(bZEDTimeActive){
|
||||||
for(C = Level.ControllerList;C != none;C = C.NextController){
if(KFPlayerController(C)!= none)
KFPlayerController(C).ClientExitZedTime();
}
}
SetGameSpeed(Lerp( (CurrentZEDTimeDuration/(ZEDTimeDuration*0.166)), 1.0, 0.2 ));
}
if(CurrentZEDTimeDuration <= 0){
if(bZEDTimeActive)
NicePackMutator.ZedTimeDeactivated();
bZEDTimeActive = false;
bSpeedingBackUp = false;
SetGameSpeed(1.0);
ZedTimeExtensionsUsed = 0;
}
|
TrueTimeFactor = 1.1 / Level.TimeDilation;
|
||||||
|
CurrentZEDTimeDuration -= DeltaTime * TrueTimeFactor;
|
||||||
|
if(CurrentZEDTimeDuration < (ZEDTimeDuration*0.166) && CurrentZEDTimeDuration > 0 ){
|
||||||
|
if(!bSpeedingBackUp){
|
||||||
|
bSpeedingBackUp = true;
|
||||||
|
|
||||||
|
for(C = Level.ControllerList;C != none;C = C.NextController){
|
||||||
|
if(KFPlayerController(C)!= none)
|
||||||
|
KFPlayerController(C).ClientExitZedTime();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SetGameSpeed(Lerp( (CurrentZEDTimeDuration/(ZEDTimeDuration*0.166)), 1.0, 0.2 ));
|
||||||
|
}
|
||||||
|
if(CurrentZEDTimeDuration <= 0){
|
||||||
|
if(bZEDTimeActive)
|
||||||
|
NicePackMutator.ZedTimeDeactivated();
|
||||||
|
bZEDTimeActive = false;
|
||||||
|
bSpeedingBackUp = false;
|
||||||
|
SetGameSpeed(1.0);
|
||||||
|
ZedTimeExtensionsUsed = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function Killed(Controller Killer, Controller Killed, Pawn KilledPawn, class<DamageType> dmgType){
|
function Killed(Controller Killer, Controller Killed, Pawn KilledPawn, class<DamageType> dmgType){
|
||||||
local KFSteamStatsAndAchievements StatsAndAchievements;
|
local KFSteamStatsAndAchievements StatsAndAchievements;
|
||||||
Super.Killed(Killer, Killed, KilledPawn, dmgType);
|
Super.Killed(Killer, Killed, KilledPawn, dmgType);
|
||||||
if(PlayerController(Killer) != none){
if (NiceMonster(KilledPawn) != none && Killed != Killer){
StatsAndAchievements = KFSteamStatsAndAchievements(PlayerController(Killer).SteamStatsAndAchievements);
if(StatsAndAchievements != none){
if(KilledPawn.IsA('NiceZombieStalker') || KilledPawn.IsA('MeanZombieStalker')){
if(class<NiceDamTypeWinchester>(dmgType) != none)
StatsAndAchievements.AddStalkerKillWithLAR();
}
else if(KilledPawn.IsA('NiceZombieClot') || KilledPawn.IsA('MeanZombieClot')){
if(class<NiceDamTypeWinchester>(dmgType) != none)
KFSteamStatsAndAchievements(PlayerController(Killer).SteamStatsAndAchievements).AddClotKillWithLAR();
}
}
}
|
if(PlayerController(Killer) != none){
|
||||||
|
if (NiceMonster(KilledPawn) != none && Killed != Killer){
|
||||||
|
StatsAndAchievements = KFSteamStatsAndAchievements(PlayerController(Killer).SteamStatsAndAchievements);
|
||||||
|
if(StatsAndAchievements != none){
|
||||||
|
if(KilledPawn.IsA('NiceZombieStalker') || KilledPawn.IsA('MeanZombieStalker')){
|
||||||
|
if(class<NiceDamTypeWinchester>(dmgType) != none)
|
||||||
|
StatsAndAchievements.AddStalkerKillWithLAR();
|
||||||
|
}
|
||||||
|
else if(KilledPawn.IsA('NiceZombieClot') || KilledPawn.IsA('MeanZombieClot')){
|
||||||
|
if(class<NiceDamTypeWinchester>(dmgType) != none)
|
||||||
|
KFSteamStatsAndAchievements(PlayerController(Killer).SteamStatsAndAchievements).AddClotKillWithLAR();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Reloaded to award damage
|
// Reloaded to award damage
|
||||||
@ -47,10 +95,17 @@ function int ReduceDamage(int Damage, pawn injured, pawn instigatedBy, vector Hi
|
|||||||
local NiceMonster niceZed;
|
local NiceMonster niceZed;
|
||||||
local KFPlayerController PC;
|
local KFPlayerController PC;
|
||||||
niceZed = NiceMonster(Injured);
|
niceZed = NiceMonster(Injured);
|
||||||
if(niceZed != none){
if(instigatedBy != none){
PC = KFPlayerController(instigatedBy.Controller);
if(class<NiceWeaponDamageType>(damageType) != none && PC != none)
class<NiceWeaponDamageType>(damageType).Static.AwardNiceDamage(KFSteamStatsAndAchievements(PC.SteamStatsAndAchievements), Clamp(Damage, 1, Injured.Health), niceZed.scrnRules.HardcoreLevel);
}
|
if(niceZed != none){
|
||||||
|
if(instigatedBy != none){
|
||||||
|
PC = KFPlayerController(instigatedBy.Controller);
|
||||||
|
if(class<NiceWeaponDamageType>(damageType) != none && PC != none)
|
||||||
|
class<NiceWeaponDamageType>(damageType).Static.AwardNiceDamage(KFSteamStatsAndAchievements(PC.SteamStatsAndAchievements), Clamp(Damage, 1, Injured.Health), niceZed.scrnRules.HardcoreLevel);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return Super.ReduceDamage(Damage, injured, InstigatedBy, HitLocation, Momentum, DamageType);
|
return Super.ReduceDamage(Damage, injured, InstigatedBy, HitLocation, Momentum, DamageType);
|
||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
GameName="Nice Team Survival Competition"
Description="Nice Edition of Team Survival Competition (TSCGame)."
|
{
|
||||||
|
GameName="Nice Team Survival Competition"
|
||||||
|
Description="Nice Edition of Team Survival Competition (TSCGame)."
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user