Merge branch 'master' of http://www.insultplayers.ru/git/dkanus/NicePack
This commit is contained in:
commit
4f4455f9b1
@ -6,6 +6,44 @@ All notable changes to this project will be documented in this file.
|
|||||||
List of changes for version 0.2.0 may be incomplete.
|
List of changes for version 0.2.0 may be incomplete.
|
||||||
Weapon and perk changes are described relative to ScrN versions.
|
Weapon and perk changes are described relative to ScrN versions.
|
||||||
|
|
||||||
|
## [Update 404] - 00.00.2022
|
||||||
|
|
||||||
|
### General
|
||||||
|
|
||||||
|
- NicePakc bundle is now in 7z.
|
||||||
|
- Code break: `meanreplicationinfo` disabled.
|
||||||
|
- Less scrnbalance hardcode.
|
||||||
|
- TSC and all it's classes removed.
|
||||||
|
- README, changelog, file directory updates.
|
||||||
|
- HUGE amount of accessed none fixes.
|
||||||
|
- Tabs -> x4 spaces.
|
||||||
|
- All hardcoded classes / subobjects removed. Now Kaio can compile his fpp 😂
|
||||||
|
|
||||||
|
#### Zeds
|
||||||
|
|
||||||
|
- Disable all zed collisions on death. Now jumping crawlers, running gorefasts won't interupt your movement.
|
||||||
|
- Siren has faster iterator.
|
||||||
|
- Siren won't spawn emitter on death.
|
||||||
|
- Siren won't scream at low hp zeds, will try to melee instead.
|
||||||
|
- Husk doesn't shoot if headless, dying, falling, being moved by other husks.
|
||||||
|
- Husk ignores zeds that the he can't actually see.
|
||||||
|
- Husk's projectile won't detonate multiple times during slomo.
|
||||||
|
|
||||||
|
### GUI
|
||||||
|
|
||||||
|
- New lobby footer from base class. New fancy buttons!
|
||||||
|
- New lobby menu! Much cleaner and doesn't have ad square.
|
||||||
|
- Skill menu has new backgrounds.
|
||||||
|
- NiceGUISettings: New dropdown list to control Commando's zed health bars:
|
||||||
|
- All zeds.
|
||||||
|
- Only big zeds (>1000hp).
|
||||||
|
- Disabled.
|
||||||
|
|
||||||
|
### Weapons
|
||||||
|
|
||||||
|
- Fix for nade throwing if you hold non nice weapon.
|
||||||
|
- Machete pickup removed, axe spawns instead.
|
||||||
|
|
||||||
## [Update 008] - 14.01.2022
|
## [Update 008] - 14.01.2022
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
64
README.md
64
README.md
@ -2,22 +2,19 @@
|
|||||||
|
|
||||||
This repo contains sources for the last public NicePack release.
|
This repo contains sources for the last public NicePack release.
|
||||||
|
|
||||||
It is a haphazard bunch of changes that were made to customize ScrN for ourselves. It is unfinished, but due to some reasons I don't want to release it publicly anymore.
|
It is a haphazard bunch of changes that were made to customize [ScrN](https://github.com/poosh/KF-ScrnBalance) for ourselves. It is unfinished, but due to some reasons I don't want to release it publicly anymore.
|
||||||
|
|
||||||
The link to the compiled NicePack, along with all necessary files, is here: <http://www.insultplayers.ru/killingfloor/downloads/nicepack/NiceBundle.zip>
|
## Documentation
|
||||||
|
|
||||||
## Config Files
|
- [Config file](Configs/NicePack.ini).
|
||||||
|
- [Changelog](Docs/CHANGELOG.md).
|
||||||
Only 1 file atm: [NicePack.ini](Configs/NicePack.ini)
|
|
||||||
|
|
||||||
## Changelog
|
|
||||||
|
|
||||||
Complete changelog lies [here](Docs/CHANGELOG.md).
|
|
||||||
|
|
||||||
## Build Info
|
## Build Info
|
||||||
|
|
||||||
> N.B. `NiceNameHack` is required for scrn testmap only!
|
> N.B. `NiceNameHack` is required for scrn testmap only!
|
||||||
|
|
||||||
|
You can use this [bat file](Docs/Compile%20Scripts/Compilation.bat) for basic compilation.
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
EditPackages=ServerPerks
|
EditPackages=ServerPerks
|
||||||
EditPackages=ServerPerksMut
|
EditPackages=ServerPerksMut
|
||||||
@ -31,4 +28,51 @@ EditPackages=NicePack
|
|||||||
EditPackages=NiceNameHack
|
EditPackages=NiceNameHack
|
||||||
```
|
```
|
||||||
|
|
||||||
You can use [this](Docs/Compile%20Scripts/Compilation.bat) bat file for basic compilation.
|
## Installation
|
||||||
|
|
||||||
|
The link to the compiled NicePack, along with all necessary files, is here: <http://www.insultplayers.ru/killingfloor/downloads/nicepack/NiceBundle.7z>
|
||||||
|
|
||||||
|
```text
|
||||||
|
NicePack Assets:
|
||||||
|
├── Animations
|
||||||
|
│ └── NicePackA.ukx
|
||||||
|
├── Sounds
|
||||||
|
│ └── NicePackSnd.uax
|
||||||
|
├── StaticMeshes
|
||||||
|
│ └── NicePackSM.usx
|
||||||
|
└── Textures
|
||||||
|
├── MeanZedSkins.utx
|
||||||
|
└── NicePackT.utx
|
||||||
|
```
|
||||||
|
|
||||||
|
```text
|
||||||
|
Requirements Assets
|
||||||
|
|-- Animations
|
||||||
|
| |-- HMG_A.ukx.ukx
|
||||||
|
| |-- HTec_A.ukx
|
||||||
|
| |-- ScrnAnims.ukx
|
||||||
|
| |-- ScrnWeaponPack_A.ukx
|
||||||
|
| `-- ScrnZedPack_A.ukx
|
||||||
|
|-- Maps
|
||||||
|
| |-- KFO-Foundry-SE.rom
|
||||||
|
| `-- KF-ScrnTestGrounds.rom
|
||||||
|
|-- Sounds
|
||||||
|
| |-- HMG_S.uax
|
||||||
|
| |-- ScrNFoundry.uax
|
||||||
|
| |-- ScrnSnd.uax
|
||||||
|
| |-- ScrnWeaponPack_SND.uax
|
||||||
|
| `-- ScrnZedPack_S.uax
|
||||||
|
|-- StaticMeshes
|
||||||
|
| |-- ScrnWeaponPack_SM.usx
|
||||||
|
| `-- ScrnZedPack_SM.usx
|
||||||
|
`-- Textures
|
||||||
|
|-- BDFonts.utx
|
||||||
|
|-- CountryFlagsTex.utx
|
||||||
|
|-- GunSkins_T.utx
|
||||||
|
|-- HMG_T.utx
|
||||||
|
|-- ScrnAch_T.utx
|
||||||
|
|-- ScrnTex.utx
|
||||||
|
|-- ScrnWeaponPack_T.utx
|
||||||
|
|-- ScrnZedPack_T.utx
|
||||||
|
`-- TSC_T.utx
|
||||||
|
```
|
||||||
|
@ -1,14 +1,17 @@
|
|||||||
class NiceIceChunkEmitter extends Emitter;
|
class NiceIceChunkEmitter extends Emitter;
|
||||||
|
|
||||||
var() array<Sound> ImpactSounds;
|
var() array<Sound> ImpactSounds;
|
||||||
simulated function PostBeginPlay(){
|
simulated function PostBeginPlay(){
|
||||||
if(ImpactSounds.Length > 0)
|
if(ImpactSounds.Length > 0)
|
||||||
PlaySound(ImpactSounds[Rand(ImpactSounds.Length)]);
|
PlaySound(ImpactSounds[Rand(ImpactSounds.Length)]);
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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(0)=Sound'KFWeaponSound.bullethitglass'
|
||||||
ImpactSounds(1)=Sound'KFWeaponSound.bullethitglass2'
|
ImpactSounds(1)=Sound'KFWeaponSound.bullethitglass2'
|
||||||
|
|
||||||
Begin Object Class=MeshEmitter Name=MeshEmitter0
|
Begin Object Class=MeshEmitter Name=MeshEmitter0
|
||||||
StaticMesh=StaticMesh'HTec_A.IceChunk1'
|
StaticMesh=StaticMesh'HTec_A.IceChunk1'
|
||||||
UseCollision=True
|
UseCollision=True
|
||||||
@ -29,7 +32,7 @@ defaultproperties
|
|||||||
InitialParticlesPerSecond=10000.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))
|
StartVelocityRange=(X=(Min=-75.000000,Max=75.000000),Y=(Min=-75.000000,Max=75.000000),Z=(Min=-100.000000,Max=300.000000))
|
||||||
End Object
|
End Object
|
||||||
Emitters(0)=MeshEmitter'NicePack.NiceIceChunkEmitter.MeshEmitter0'
|
Emitters(0)=MeshEmitter0
|
||||||
|
|
||||||
Begin Object Class=MeshEmitter Name=MeshEmitter2
|
Begin Object Class=MeshEmitter Name=MeshEmitter2
|
||||||
StaticMesh=StaticMesh'HTec_A.IceChunk2'
|
StaticMesh=StaticMesh'HTec_A.IceChunk2'
|
||||||
@ -52,7 +55,7 @@ defaultproperties
|
|||||||
InitialParticlesPerSecond=10000.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))
|
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=-100.000000,Max=500.000000))
|
||||||
End Object
|
End Object
|
||||||
Emitters(1)=MeshEmitter'NicePack.NiceIceChunkEmitter.MeshEmitter2'
|
Emitters(1)=MeshEmitter2
|
||||||
|
|
||||||
Begin Object Class=MeshEmitter Name=MeshEmitter3
|
Begin Object Class=MeshEmitter Name=MeshEmitter3
|
||||||
StaticMesh=StaticMesh'HTec_A.IceChunk3'
|
StaticMesh=StaticMesh'HTec_A.IceChunk3'
|
||||||
@ -75,7 +78,7 @@ defaultproperties
|
|||||||
InitialParticlesPerSecond=10000.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))
|
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=-100.000000,Max=500.000000))
|
||||||
End Object
|
End Object
|
||||||
Emitters(2)=MeshEmitter'NicePack.NiceIceChunkEmitter.MeshEmitter3'
|
Emitters(2)=MeshEmitter3
|
||||||
|
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter8
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter8
|
||||||
UseCollision=True
|
UseCollision=True
|
||||||
@ -103,7 +106,7 @@ defaultproperties
|
|||||||
LifetimeRange=(Min=1.400000,Max=1.400000)
|
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))
|
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=-300.000000,Max=350.000000))
|
||||||
End Object
|
End Object
|
||||||
Emitters(3)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter8'
|
Emitters(3)=SpriteEmitter8
|
||||||
|
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter9
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter9
|
||||||
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
@ -139,7 +142,7 @@ defaultproperties
|
|||||||
LifetimeRange=(Min=0.750000,Max=0.750000)
|
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))
|
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=-25.000000,Max=300.000000))
|
||||||
End Object
|
End Object
|
||||||
Emitters(4)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter9'
|
Emitters(4)=SpriteEmitter9
|
||||||
|
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter10
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter10
|
||||||
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
@ -171,7 +174,7 @@ defaultproperties
|
|||||||
TextureVSubdivisions=8
|
TextureVSubdivisions=8
|
||||||
LifetimeRange=(Min=0.350000,Max=0.350000)
|
LifetimeRange=(Min=0.350000,Max=0.350000)
|
||||||
End Object
|
End Object
|
||||||
Emitters(5)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter10'
|
Emitters(5)=SpriteEmitter10
|
||||||
|
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter11
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter11
|
||||||
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
@ -203,7 +206,7 @@ defaultproperties
|
|||||||
TextureVSubdivisions=8
|
TextureVSubdivisions=8
|
||||||
LifetimeRange=(Min=0.350000,Max=0.350000)
|
LifetimeRange=(Min=0.350000,Max=0.350000)
|
||||||
End Object
|
End Object
|
||||||
Emitters(6)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter11'
|
Emitters(6)=SpriteEmitter11
|
||||||
|
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter12
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter12
|
||||||
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
@ -236,7 +239,7 @@ defaultproperties
|
|||||||
TextureVSubdivisions=8
|
TextureVSubdivisions=8
|
||||||
LifetimeRange=(Min=0.350000,Max=0.350000)
|
LifetimeRange=(Min=0.350000,Max=0.350000)
|
||||||
End Object
|
End Object
|
||||||
Emitters(7)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter12'
|
Emitters(7)=SpriteEmitter12
|
||||||
|
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter13
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter13
|
||||||
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
@ -272,7 +275,7 @@ defaultproperties
|
|||||||
LifetimeRange=(Min=0.750000,Max=0.750000)
|
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))
|
StartVelocityRange=(X=(Min=-150.000000,Max=150.000000),Y=(Min=-150.000000,Max=150.000000),Z=(Min=-5.000000,Max=150.000000))
|
||||||
End Object
|
End Object
|
||||||
Emitters(8)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter13'
|
Emitters(8)=SpriteEmitter13
|
||||||
|
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter14
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter14
|
||||||
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
ProjectionNormal=(Y=1.000000,Z=0.000000)
|
||||||
@ -308,7 +311,7 @@ defaultproperties
|
|||||||
StartVelocityRange=(X=(Min=-350.000000,Max=350.000000),Y=(Min=-350.000000,Max=350.000000),Z=(Min=-5.000000,Max=50.000000))
|
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))
|
VelocityLossRange=(X=(Min=3.000000,Max=3.000000),Y=(Min=3.000000,Max=3.000000))
|
||||||
End Object
|
End Object
|
||||||
Emitters(9)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter14'
|
Emitters(9)=SpriteEmitter14
|
||||||
|
|
||||||
Begin Object Class=SpriteEmitter Name=SpriteEmitter15
|
Begin Object Class=SpriteEmitter Name=SpriteEmitter15
|
||||||
UseCollision=True
|
UseCollision=True
|
||||||
@ -336,7 +339,7 @@ defaultproperties
|
|||||||
LifetimeRange=(Min=1.400000,Max=1.400000)
|
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))
|
StartVelocityRange=(X=(Min=-200.000000,Max=200.000000),Y=(Min=-200.000000,Max=200.000000),Z=(Min=-300.000000,Max=350.000000))
|
||||||
End Object
|
End Object
|
||||||
Emitters(10)=SpriteEmitter'NicePack.NiceIceChunkEmitter.SpriteEmitter15'
|
Emitters(10)=SpriteEmitter15
|
||||||
|
|
||||||
AutoDestroy=True
|
AutoDestroy=True
|
||||||
bNoDelete=False
|
bNoDelete=False
|
||||||
|
@ -31,7 +31,7 @@ defaultproperties
|
|||||||
StartVelocityRange=(X=(Min=-85.000000,Max=85.000000),Y=(Min=-85.000000,Max=85.000000))
|
StartVelocityRange=(X=(Min=-85.000000,Max=85.000000),Y=(Min=-85.000000,Max=85.000000))
|
||||||
StartVelocityRadialRange=(Min=-40.000000,Max=40.000000)
|
StartVelocityRadialRange=(Min=-40.000000,Max=40.000000)
|
||||||
End Object
|
End Object
|
||||||
Emitters(0)=SpriteEmitter'NicePack.NiceNitroGroundEffect.SpriteEmitter0'
|
Emitters(0)=SpriteEmitter0
|
||||||
|
|
||||||
LifeSpan=5.000000
|
LifeSpan=5.000000
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
class NiceGUIBuyMenu extends UT2k4MainPage;
|
class NiceGUIBuyMenu extends UT2k4MainPage;
|
||||||
//The "Header"
|
|
||||||
|
// The "Header"
|
||||||
var automated GUIImage HeaderBG_Left;
|
var automated GUIImage HeaderBG_Left;
|
||||||
var automated GUIImage HeaderBG_Center;
|
var automated GUIImage HeaderBG_Center;
|
||||||
var automated GUIImage HeaderBG_Right;
|
var automated GUIImage HeaderBG_Right;
|
||||||
@ -11,12 +12,12 @@ var automated KFQuickPerkSelect QuickPerkSelect;
|
|||||||
var automated KFBuyMenuFilter BuyMenuFilter;
|
var automated KFBuyMenuFilter BuyMenuFilter;
|
||||||
var automated GUIButton StoreTabButton;
|
var automated GUIButton StoreTabButton;
|
||||||
var automated GUIButton PerkTabButton;
|
var automated GUIButton PerkTabButton;
|
||||||
//The "Footer"
|
// The "Footer"
|
||||||
var automated GUIImage WeightBG;
|
var automated GUIImage WeightBG;
|
||||||
var automated GUIImage WeightIcon;
|
var automated GUIImage WeightIcon;
|
||||||
var automated GUIImage WeightIconBG;
|
var automated GUIImage WeightIconBG;
|
||||||
var automated KFWeightBar WeightBar;
|
var automated KFWeightBar WeightBar;
|
||||||
//const BUYLIST_CATS =7;
|
// const BUYLIST_CATS =7;
|
||||||
var() editconst noexport float SavedPitch;
|
var() editconst noexport float SavedPitch;
|
||||||
var color RedColor;
|
var color RedColor;
|
||||||
var color GreenGreyColor;
|
var color GreenGreyColor;
|
||||||
@ -26,9 +27,11 @@ var localized string NoActivePerk;
|
|||||||
var localized string TraderClose;
|
var localized string TraderClose;
|
||||||
var localized string WaveString;
|
var localized string WaveString;
|
||||||
var localized string LvAbbrString;
|
var localized string LvAbbrString;
|
||||||
|
|
||||||
function InitComponent(GUIController MyC, GUIComponent MyO)
|
function InitComponent(GUIController MyC, GUIComponent MyO)
|
||||||
{
|
{
|
||||||
local int i;
|
local int i;
|
||||||
|
|
||||||
super.InitComponent(MyC, MyO);
|
super.InitComponent(MyC, MyO);
|
||||||
c_Tabs.BackgroundImage = none;
|
c_Tabs.BackgroundImage = none;
|
||||||
c_Tabs.BackgroundStyle = none;
|
c_Tabs.BackgroundStyle = none;
|
||||||
@ -39,14 +42,17 @@ function InitComponent(GUIController MyC, GUIComponent MyO)
|
|||||||
}
|
}
|
||||||
UpdateWeightBar();
|
UpdateWeightBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
function InitTabs()
|
function InitTabs()
|
||||||
{
|
{
|
||||||
local int i;
|
local int i;
|
||||||
|
|
||||||
for ( i = 0; i < PanelCaption.Length && i < PanelClass.Length && i < PanelHint.Length; i++ )
|
for ( i = 0; i < PanelCaption.Length && i < PanelClass.Length && i < PanelHint.Length; i++ )
|
||||||
{
|
{
|
||||||
c_Tabs.AddTab(PanelCaption[i], PanelClass[i],, PanelHint[i]);
|
c_Tabs.AddTab(PanelCaption[i], PanelClass[i],, PanelHint[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function UpdateWeightBar()
|
function UpdateWeightBar()
|
||||||
{
|
{
|
||||||
if ( KFHumanPawn(PlayerOwner().Pawn) != none )
|
if ( KFHumanPawn(PlayerOwner().Pawn) != none )
|
||||||
@ -55,9 +61,11 @@ function UpdateWeightBar()
|
|||||||
WeightBar.CurBoxes = KFHumanPawn(PlayerOwner().Pawn).CurrentWeight;
|
WeightBar.CurBoxes = KFHumanPawn(PlayerOwner().Pawn).CurrentWeight;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
event Opened(GUIComponent Sender)
|
event Opened(GUIComponent Sender)
|
||||||
{
|
{
|
||||||
local rotator PlayerRot;
|
local rotator PlayerRot;
|
||||||
|
|
||||||
super.Opened(Sender);
|
super.Opened(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
|
||||||
@ -78,29 +86,37 @@ event Opened(GUIComponent Sender)
|
|||||||
PlayerOwner().SetRotation(PlayerRot);
|
PlayerOwner().SetRotation(PlayerRot);
|
||||||
SetTimer(0.05f, true);
|
SetTimer(0.05f, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
function Timer()
|
function Timer()
|
||||||
{
|
{
|
||||||
UpdateHeader();
|
UpdateHeader();
|
||||||
UpdateWeightBar();
|
UpdateWeightBar();
|
||||||
}
|
}
|
||||||
|
|
||||||
function InternalOnClose(optional bool bCanceled)
|
function InternalOnClose(optional bool bCanceled)
|
||||||
{
|
{
|
||||||
local rotator NewRot;
|
local rotator NewRot;
|
||||||
|
|
||||||
// Reset player
|
// Reset player
|
||||||
NewRot = PlayerOwner().Rotation;
|
NewRot = PlayerOwner().Rotation;
|
||||||
NewRot.Pitch = SavedPitch;
|
NewRot.Pitch = SavedPitch;
|
||||||
PlayerOwner().SetRotation(NewRot);
|
PlayerOwner().SetRotation(NewRot);
|
||||||
Super.OnClose(bCanceled);
|
super.OnClose(bCanceled);
|
||||||
}
|
}
|
||||||
|
|
||||||
function UpdateHeader()
|
function UpdateHeader()
|
||||||
{
|
{
|
||||||
local int TimeLeftMin, TimeLeftSec;
|
local int TimeLeftMin, TimeLeftSec;
|
||||||
local string TimeString;
|
local string TimeString;
|
||||||
|
local KFGameReplicationInfo KFGRI;
|
||||||
|
|
||||||
if ( KFPlayerController(PlayerOwner()) == none || PlayerOwner().PlayerReplicationInfo == none ||
|
if ( KFPlayerController(PlayerOwner()) == none || PlayerOwner().PlayerReplicationInfo == none ||
|
||||||
PlayerOwner().GameReplicationInfo == none )
|
PlayerOwner().GameReplicationInfo == none )
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
KFGRI = KFGameReplicationInfo(PlayerOwner().GameReplicationInfo);
|
||||||
|
|
||||||
// Current Perk
|
// Current Perk
|
||||||
if ( KFPlayerController(PlayerOwner()).SelectedVeterancy != none )
|
if ( KFPlayerController(PlayerOwner()).SelectedVeterancy != none )
|
||||||
{
|
{
|
||||||
@ -110,9 +126,10 @@ function UpdateHeader()
|
|||||||
{
|
{
|
||||||
CurrentPerkLabel.Caption = CurrentPerk$":" @ NoActivePerk;
|
CurrentPerkLabel.Caption = CurrentPerk$":" @ NoActivePerk;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Trader time left
|
// Trader time left
|
||||||
TimeLeftMin = KFGameReplicationInfo(PlayerOwner().GameReplicationInfo).TimeToNextWave / 60;
|
TimeLeftMin = KFGRI.TimeToNextWave / 60;
|
||||||
TimeLeftSec = KFGameReplicationInfo(PlayerOwner().GameReplicationInfo).TimeToNextWave % 60;
|
TimeLeftSec = KFGRI.TimeToNextWave % 60;
|
||||||
if ( TimeLeftMin < 1 )
|
if ( TimeLeftMin < 1 )
|
||||||
{
|
{
|
||||||
TimeString = "00:";
|
TimeString = "00:";
|
||||||
@ -121,6 +138,7 @@ function UpdateHeader()
|
|||||||
{
|
{
|
||||||
TimeString = "0" $ TimeLeftMin $ ":";
|
TimeString = "0" $ TimeLeftMin $ ":";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( TimeLeftSec >= 10 )
|
if ( TimeLeftSec >= 10 )
|
||||||
{
|
{
|
||||||
TimeString = TimeString $ TimeLeftSec;
|
TimeString = TimeString $ TimeLeftSec;
|
||||||
@ -129,8 +147,9 @@ function UpdateHeader()
|
|||||||
{
|
{
|
||||||
TimeString = TimeString $ "0" $ TimeLeftSec;
|
TimeString = TimeString $ "0" $ TimeLeftSec;
|
||||||
}
|
}
|
||||||
|
|
||||||
TimeLeftLabel.Caption = TraderClose @ TimeString;
|
TimeLeftLabel.Caption = TraderClose @ TimeString;
|
||||||
if ( KFGameReplicationInfo(PlayerOwner().GameReplicationInfo).TimeToNextWave < 10 )
|
if ( KFGRI.TimeToNextWave < 10 )
|
||||||
{
|
{
|
||||||
TimeLeftLabel.TextColor = RedColor;
|
TimeLeftLabel.TextColor = RedColor;
|
||||||
}
|
}
|
||||||
@ -138,26 +157,31 @@ function UpdateHeader()
|
|||||||
{
|
{
|
||||||
TimeLeftLabel.TextColor = GreenGreyColor;
|
TimeLeftLabel.TextColor = GreenGreyColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wave Counter
|
// Wave Counter
|
||||||
WaveLabel.Caption = WaveString$":" @ (KFGameReplicationInfo(PlayerOwner().GameReplicationInfo).WaveNumber + 1)$"/"$KFGameReplicationInfo(PlayerOwner().GameReplicationInfo).FinalWave;
|
WaveLabel.Caption = WaveString $ ":" @ (KFGRI.WaveNumber + 1) $ "/" $ KFGRI.FinalWave;
|
||||||
}
|
}
|
||||||
|
|
||||||
function KFBuyMenuClosed(optional bool bCanceled)
|
function KFBuyMenuClosed(optional bool bCanceled)
|
||||||
{
|
{
|
||||||
local rotator NewRot;
|
local rotator NewRot;
|
||||||
|
|
||||||
// Reset player
|
// Reset player
|
||||||
NewRot = PlayerOwner().Rotation;
|
NewRot = PlayerOwner().Rotation;
|
||||||
NewRot.Pitch = SavedPitch;
|
NewRot.Pitch = SavedPitch;
|
||||||
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)
|
||||||
{
|
{
|
||||||
Controller.CloseMenu(!savePurchases);
|
Controller.CloseMenu(!savePurchases);
|
||||||
}
|
}
|
||||||
|
|
||||||
function bool ButtonClicked(GUIComponent Sender)
|
function bool ButtonClicked(GUIComponent Sender)
|
||||||
{
|
{
|
||||||
if ( Sender == PerkTabButton )
|
if ( Sender == PerkTabButton )
|
||||||
@ -170,6 +194,7 @@ function bool ButtonClicked(GUIComponent Sender)
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
Begin Object Class=GUIImage Name=HBGLeft
|
Begin Object Class=GUIImage Name=HBGLeft
|
||||||
@ -181,7 +206,7 @@ defaultproperties
|
|||||||
WinWidth=0.332300
|
WinWidth=0.332300
|
||||||
WinHeight=0.100000
|
WinHeight=0.100000
|
||||||
End Object
|
End Object
|
||||||
HeaderBG_Left=GUIImage'NicePack.NiceGUIBuyMenu.HBGLeft'
|
HeaderBG_Left=HBGLeft
|
||||||
|
|
||||||
Begin Object Class=GUIImage Name=HBGCenter
|
Begin Object Class=GUIImage Name=HBGCenter
|
||||||
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
|
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
|
||||||
@ -192,7 +217,7 @@ defaultproperties
|
|||||||
WinWidth=0.331023
|
WinWidth=0.331023
|
||||||
WinHeight=0.100000
|
WinHeight=0.100000
|
||||||
End Object
|
End Object
|
||||||
HeaderBG_Center=GUIImage'NicePack.NiceGUIBuyMenu.HBGCenter'
|
HeaderBG_Center=HBGCenter
|
||||||
|
|
||||||
Begin Object Class=GUIImage Name=HBGRight
|
Begin Object Class=GUIImage Name=HBGRight
|
||||||
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
|
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
|
||||||
@ -203,7 +228,7 @@ defaultproperties
|
|||||||
WinWidth=0.332000
|
WinWidth=0.332000
|
||||||
WinHeight=0.100000
|
WinHeight=0.100000
|
||||||
End Object
|
End Object
|
||||||
HeaderBG_Right=GUIImage'NicePack.NiceGUIBuyMenu.HBGRight'
|
HeaderBG_Right=HBGRight
|
||||||
|
|
||||||
Begin Object Class=GUILabel Name=Perk
|
Begin Object Class=GUILabel Name=Perk
|
||||||
TextAlign=TXTA_Center
|
TextAlign=TXTA_Center
|
||||||
@ -213,7 +238,7 @@ defaultproperties
|
|||||||
WinWidth=0.329761
|
WinWidth=0.329761
|
||||||
WinHeight=0.050000
|
WinHeight=0.050000
|
||||||
End Object
|
End Object
|
||||||
CurrentPerkLabel=GUILabel'NicePack.NiceGUIBuyMenu.Perk'
|
CurrentPerkLabel=Perk
|
||||||
|
|
||||||
Begin Object Class=GUILabel Name=Time
|
Begin Object Class=GUILabel Name=Time
|
||||||
Caption="Trader closes in 00:31"
|
Caption="Trader closes in 00:31"
|
||||||
@ -225,7 +250,7 @@ defaultproperties
|
|||||||
WinWidth=0.330000
|
WinWidth=0.330000
|
||||||
WinHeight=0.035000
|
WinHeight=0.035000
|
||||||
End Object
|
End Object
|
||||||
TimeLeftLabel=GUILabel'NicePack.NiceGUIBuyMenu.Time'
|
TimeLeftLabel=Time
|
||||||
|
|
||||||
Begin Object Class=GUILabel Name=Wave
|
Begin Object Class=GUILabel Name=Wave
|
||||||
Caption="Wave: 7/10"
|
Caption="Wave: 7/10"
|
||||||
@ -236,7 +261,7 @@ defaultproperties
|
|||||||
WinWidth=0.327071
|
WinWidth=0.327071
|
||||||
WinHeight=0.035000
|
WinHeight=0.035000
|
||||||
End Object
|
End Object
|
||||||
WaveLabel=GUILabel'NicePack.NiceGUIBuyMenu.Wave'
|
WaveLabel=Wave
|
||||||
|
|
||||||
Begin Object Class=GUILabel Name=HBGLL
|
Begin Object Class=GUILabel Name=HBGLL
|
||||||
Caption="Quick Perk Select"
|
Caption="Quick Perk Select"
|
||||||
@ -248,7 +273,7 @@ defaultproperties
|
|||||||
WinWidth=0.329761
|
WinWidth=0.329761
|
||||||
WinHeight=0.019524
|
WinHeight=0.019524
|
||||||
End Object
|
End Object
|
||||||
HeaderBG_Left_Label=GUILabel'NicePack.NiceGUIBuyMenu.HBGLL'
|
HeaderBG_Left_Label=HBGLL
|
||||||
|
|
||||||
Begin Object Class=KFQuickPerkSelect Name=QS
|
Begin Object Class=KFQuickPerkSelect Name=QS
|
||||||
WinTop=0.011906
|
WinTop=0.011906
|
||||||
@ -257,7 +282,7 @@ defaultproperties
|
|||||||
WinHeight=0.082460
|
WinHeight=0.082460
|
||||||
OnDraw=QS.MyOnDraw
|
OnDraw=QS.MyOnDraw
|
||||||
End Object
|
End Object
|
||||||
QuickPerkSelect=KFQuickPerkSelect'NicePack.NiceGUIBuyMenu.QS'
|
QuickPerkSelect=QS
|
||||||
|
|
||||||
Begin Object Class=KFBuyMenuFilter Name=filter
|
Begin Object Class=KFBuyMenuFilter Name=filter
|
||||||
WinTop=0.051000
|
WinTop=0.051000
|
||||||
@ -266,7 +291,7 @@ defaultproperties
|
|||||||
WinHeight=0.082460
|
WinHeight=0.082460
|
||||||
OnDraw=filter.MyOnDraw
|
OnDraw=filter.MyOnDraw
|
||||||
End Object
|
End Object
|
||||||
BuyMenuFilter=KFBuyMenuFilter'NicePack.NiceGUIBuyMenu.filter'
|
BuyMenuFilter=filter
|
||||||
|
|
||||||
Begin Object Class=GUIButton Name=StoreTabB
|
Begin Object Class=GUIButton Name=StoreTabB
|
||||||
Caption="Store"
|
Caption="Store"
|
||||||
@ -278,7 +303,7 @@ defaultproperties
|
|||||||
OnClick=NiceGUIBuyMenu.ButtonClicked
|
OnClick=NiceGUIBuyMenu.ButtonClicked
|
||||||
OnKeyEvent=StoreTabB.InternalOnKeyEvent
|
OnKeyEvent=StoreTabB.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
StoreTabButton=GUIButton'NicePack.NiceGUIBuyMenu.StoreTabB'
|
StoreTabButton=StoreTabB
|
||||||
|
|
||||||
Begin Object Class=GUIButton Name=PerkTabB
|
Begin Object Class=GUIButton Name=PerkTabB
|
||||||
Caption="Perk"
|
Caption="Perk"
|
||||||
@ -290,7 +315,7 @@ defaultproperties
|
|||||||
OnClick=NiceGUIBuyMenu.ButtonClicked
|
OnClick=NiceGUIBuyMenu.ButtonClicked
|
||||||
OnKeyEvent=PerkTabB.InternalOnKeyEvent
|
OnKeyEvent=PerkTabB.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
PerkTabButton=GUIButton'NicePack.NiceGUIBuyMenu.PerkTabB'
|
PerkTabButton=PerkTabB
|
||||||
|
|
||||||
Begin Object Class=GUIImage Name=Weight
|
Begin Object Class=GUIImage Name=Weight
|
||||||
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
|
Image=Texture'KF_InterfaceArt_tex.Menu.Thin_border'
|
||||||
@ -300,7 +325,7 @@ defaultproperties
|
|||||||
WinWidth=0.663086
|
WinWidth=0.663086
|
||||||
WinHeight=0.065828
|
WinHeight=0.065828
|
||||||
End Object
|
End Object
|
||||||
WeightBG=GUIImage'NicePack.NiceGUIBuyMenu.Weight'
|
WeightBG=Weight
|
||||||
|
|
||||||
Begin Object Class=GUIImage Name=WeightIco
|
Begin Object Class=GUIImage Name=WeightIco
|
||||||
Image=Texture'KillingFloorHUD.HUD.Hud_Weight'
|
Image=Texture'KillingFloorHUD.HUD.Hud_Weight'
|
||||||
@ -311,7 +336,7 @@ defaultproperties
|
|||||||
WinHeight=0.048992
|
WinHeight=0.048992
|
||||||
RenderWeight=0.460000
|
RenderWeight=0.460000
|
||||||
End Object
|
End Object
|
||||||
WeightIcon=GUIImage'NicePack.NiceGUIBuyMenu.WeightIco'
|
WeightIcon=WeightIco
|
||||||
|
|
||||||
Begin Object Class=GUIImage Name=WeightIcoBG
|
Begin Object Class=GUIImage Name=WeightIcoBG
|
||||||
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
||||||
@ -322,7 +347,7 @@ defaultproperties
|
|||||||
WinHeight=0.054461
|
WinHeight=0.054461
|
||||||
RenderWeight=0.450000
|
RenderWeight=0.450000
|
||||||
End Object
|
End Object
|
||||||
WeightIconBG=GUIImage'NicePack.NiceGUIBuyMenu.WeightIcoBG'
|
WeightIconBG=WeightIcoBG
|
||||||
|
|
||||||
Begin Object Class=KFWeightBar Name=WeightB
|
Begin Object Class=KFWeightBar Name=WeightB
|
||||||
WinTop=0.945302
|
WinTop=0.945302
|
||||||
@ -331,7 +356,7 @@ defaultproperties
|
|||||||
WinHeight=0.053896
|
WinHeight=0.053896
|
||||||
OnDraw=WeightB.MyOnDraw
|
OnDraw=WeightB.MyOnDraw
|
||||||
End Object
|
End Object
|
||||||
WeightBar=KFWeightBar'NicePack.NiceGUIBuyMenu.WeightB'
|
WeightBar=WeightB
|
||||||
|
|
||||||
RedColor=(R=255,A=255)
|
RedColor=(R=255,A=255)
|
||||||
GreenGreyColor=(B=158,G=176,R=175,A=255)
|
GreenGreyColor=(B=158,G=176,R=175,A=255)
|
||||||
@ -340,6 +365,7 @@ defaultproperties
|
|||||||
TraderClose="Trader Closes in"
|
TraderClose="Trader Closes in"
|
||||||
WaveString="Wave"
|
WaveString="Wave"
|
||||||
LvAbbrString="Lv"
|
LvAbbrString="Lv"
|
||||||
|
|
||||||
Begin Object Class=GUITabControl Name=PageTabs
|
Begin Object Class=GUITabControl Name=PageTabs
|
||||||
bDockPanels=True
|
bDockPanels=True
|
||||||
TabHeight=0.025000
|
TabHeight=0.025000
|
||||||
@ -354,7 +380,7 @@ defaultproperties
|
|||||||
OnActivate=PageTabs.InternalOnActivate
|
OnActivate=PageTabs.InternalOnActivate
|
||||||
OnChange=NiceGUIBuyMenu.InternalOnChange
|
OnChange=NiceGUIBuyMenu.InternalOnChange
|
||||||
End Object
|
End Object
|
||||||
c_Tabs=GUITabControl'NicePack.NiceGUIBuyMenu.PageTabs'
|
c_Tabs=PageTabs
|
||||||
|
|
||||||
Begin Object Class=BackgroundImage Name=PageBackground
|
Begin Object Class=BackgroundImage Name=PageBackground
|
||||||
Image=Texture'Engine.WhiteSquareTexture'
|
Image=Texture'Engine.WhiteSquareTexture'
|
||||||
@ -362,7 +388,7 @@ defaultproperties
|
|||||||
ImageStyle=ISTY_Tiled
|
ImageStyle=ISTY_Tiled
|
||||||
RenderWeight=0.001000
|
RenderWeight=0.001000
|
||||||
End Object
|
End Object
|
||||||
i_Background=BackgroundImage'NicePack.NiceGUIBuyMenu.PageBackground'
|
i_Background=PageBackground
|
||||||
|
|
||||||
PanelClass(0)="KFGUI.KFTab_BuyMenu"
|
PanelClass(0)="KFGUI.KFTab_BuyMenu"
|
||||||
PanelClass(1)="KFGUI.KFTab_Perks"
|
PanelClass(1)="KFGUI.KFTab_Perks"
|
||||||
|
13
sources/GUI/NiceGUICheckBoxButton.uc
Normal file
13
sources/GUI/NiceGUICheckBoxButton.uc
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
class NiceGUICheckBoxButton extends GUICheckBoxButton;
|
||||||
|
|
||||||
|
defaultproperties
|
||||||
|
{
|
||||||
|
CheckedOverlay(0)=Texture'KF_InterfaceArt_tex.Menu.Checkbox' // checked
|
||||||
|
CheckedOverlay(1)=Texture'KF_InterfaceArt_tex.Menu.checkbox_highlight' // checked, mouse over
|
||||||
|
CheckedOverlay(2)=Texture'KF_InterfaceArt_tex.Menu.checkbox_highlight' // checked, focused
|
||||||
|
CheckedOverlay(3)=Texture'KF_InterfaceArt_tex.Menu.checkbox_dark' // checked, clicked
|
||||||
|
CheckedOverlay(4)=Texture'KF_InterfaceArt_tex.Menu.checkbox_dark' // checked, disabled
|
||||||
|
ImageIndex=0
|
||||||
|
bAllOverlay=False
|
||||||
|
StyleName="CheckBox"
|
||||||
|
}
|
@ -1,27 +1,61 @@
|
|||||||
class NiceGUISettings extends Settings_Tabs;
|
class NiceGUISettings extends UT2K4TabPanel;
|
||||||
//var automated GUIButton skillButtonA;
|
|
||||||
var array<string> ForceProjItems;
|
// GENERAL WEAPON SETTINGS
|
||||||
|
var automated GUISectionBackground bg_WEAP;
|
||||||
var automated moCheckBox ch_WeapManagement;
|
var automated moCheckBox ch_WeapManagement;
|
||||||
var automated moCheckBox ch_AltSwitches;
|
var automated moCheckBox ch_AltSwitches;
|
||||||
var automated moCheckBox ch_DispCounters;
|
var automated moCheckBox ch_DispCounters;
|
||||||
var automated moCheckBox ch_DisWeapProgress;
|
var automated moCheckBox ch_DisWeapProgress;
|
||||||
var automated moCheckBox ch_ShowHLMessages;
|
var automated moCheckBox ch_ShowHLMessages;
|
||||||
|
|
||||||
|
// WEAPON RELOAD SETTINGS
|
||||||
|
var automated GUISectionBackground bg_RELOAD;
|
||||||
var automated moCheckBox ch_CancelFire;
|
var automated moCheckBox ch_CancelFire;
|
||||||
var automated moCheckBox ch_CancelSwitching;
|
var automated moCheckBox ch_CancelSwitching;
|
||||||
var automated moCheckBox ch_CancelNades;
|
var automated moCheckBox ch_CancelNades;
|
||||||
var automated moCheckBox ch_CancelAiming;
|
var automated moCheckBox ch_CancelAiming;
|
||||||
var automated moCheckBox ch_ReloadWontWork;
|
var automated moCheckBox ch_ReloadWontWork;
|
||||||
var automated GUISectionBackground bg_WEAP;
|
|
||||||
var automated GUISectionBackground bg_RELOAD;
|
// RANDOM SETTINGS
|
||||||
function InitComponent(GUIController MyController, GUIComponent MyOwner){
|
var automated GUISectionBackground bg_RANDOM;
|
||||||
|
var automated MoComboBox mo_ZedHPBars;
|
||||||
|
|
||||||
|
function InitComponent(GUIController MyController, GUIComponent MyOwner)
|
||||||
|
{
|
||||||
super.InitComponent(MyController, MyOwner);
|
super.InitComponent(MyController, MyOwner);
|
||||||
|
|
||||||
|
mo_ZedHPBars.AddItem("Big Zeds");
|
||||||
|
mo_ZedHPBars.AddItem("All Zeds");
|
||||||
|
mo_ZedHPBars.AddItem("Disable");
|
||||||
|
|
||||||
|
// GENERAL WEAPON SETTINGS
|
||||||
|
bg_WEAP.ManageComponent(ch_WeapManagement);
|
||||||
|
bg_WEAP.ManageComponent(ch_AltSwitches);
|
||||||
|
bg_WEAP.ManageComponent(ch_DispCounters);
|
||||||
|
bg_WEAP.ManageComponent(ch_DisWeapProgress);
|
||||||
|
bg_WEAP.ManageComponent(ch_ShowHLMessages);
|
||||||
|
|
||||||
|
// WEAPON RELOAD SETTINGS
|
||||||
|
bg_RELOAD.ManageComponent(ch_CancelFire);
|
||||||
|
bg_RELOAD.ManageComponent(ch_CancelSwitching);
|
||||||
|
bg_RELOAD.ManageComponent(ch_CancelNades);
|
||||||
|
bg_RELOAD.ManageComponent(ch_CancelAiming);
|
||||||
|
bg_RELOAD.ManageComponent(ch_ReloadWontWork);
|
||||||
|
|
||||||
|
// RANDOM SETTINGS
|
||||||
|
bg_RANDOM.ManageComponent(mo_ZedHPBars);
|
||||||
}
|
}
|
||||||
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)
|
if (nicePlayer == none)
|
||||||
return;
|
return;
|
||||||
switch(sender){
|
|
||||||
|
switch(sender)
|
||||||
|
{
|
||||||
case ch_WeapManagement:
|
case ch_WeapManagement:
|
||||||
ch_WeapManagement.Checked(nicePlayer.bNiceWeaponManagement);
|
ch_WeapManagement.Checked(nicePlayer.bNiceWeaponManagement);
|
||||||
break;
|
break;
|
||||||
@ -52,15 +86,22 @@ function InternalOnLoadINI(GUIComponent sender, string s){
|
|||||||
case ch_ReloadWontWork:
|
case ch_ReloadWontWork:
|
||||||
ch_ReloadWontWork.Checked(nicePlayer.bFlagUseServerReload);
|
ch_ReloadWontWork.Checked(nicePlayer.bFlagUseServerReload);
|
||||||
break;
|
break;
|
||||||
|
case mo_ZedHPBars:
|
||||||
|
mo_ZedHPBars.SetIndex(nicePlayer.ZedHPBarStyle);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function InternalOnChange(GUIComponent Sender){
|
|
||||||
|
function InternalOnChange(GUIComponent Sender)
|
||||||
|
{
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
super.InternalOnChange(Sender);
|
|
||||||
nicePlayer = NicePlayerController(PlayerOwner());
|
nicePlayer = NicePlayerController(PlayerOwner());
|
||||||
if(nicePlayer == none)
|
if (nicePlayer == none)
|
||||||
return;
|
return;
|
||||||
switch(sender){
|
|
||||||
|
switch(sender)
|
||||||
|
{
|
||||||
case ch_WeapManagement:
|
case ch_WeapManagement:
|
||||||
nicePlayer.bNiceWeaponManagement = ch_WeapManagement.IsChecked();
|
nicePlayer.bNiceWeaponManagement = ch_WeapManagement.IsChecked();
|
||||||
break;
|
break;
|
||||||
@ -91,183 +132,85 @@ function InternalOnChange(GUIComponent Sender){
|
|||||||
case ch_ReloadWontWork:
|
case ch_ReloadWontWork:
|
||||||
nicePlayer.ServerSetUseServerReload(ch_ReloadWontWork.IsChecked());
|
nicePlayer.ServerSetUseServerReload(ch_ReloadWontWork.IsChecked());
|
||||||
break;
|
break;
|
||||||
|
case mo_ZedHPBars:
|
||||||
|
nicePlayer.ZedHPBarStyle = mo_ZedHPBars.GetIndex();
|
||||||
|
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
|
// GENERAL WEAPON SETTINGS
|
||||||
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=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, however 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
|
Begin Object Class=GUISectionBackground Name=WEAPBG
|
||||||
Caption="General weapon settings"
|
Caption="General weapon settings"
|
||||||
WinTop=0.012500
|
WinTop=0.012500
|
||||||
WinWidth=0.495000
|
WinWidth=0.495000
|
||||||
WinHeight=0.287500
|
WinHeight=0.287500
|
||||||
RenderWeight=0.100100
|
RenderWeight=0.100100
|
||||||
OnPreDraw=WeaponsBG.InternalPreDraw
|
// OnPreDraw=WeaponsBG.InternalPreDraw
|
||||||
|
OnPreDraw=WEAPBG.InternalPreDraw
|
||||||
End Object
|
End Object
|
||||||
bg_WEAP=GUISectionBackground'NicePack.NiceGUISettings.WEAPBG'
|
bg_WEAP=WEAPBG
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=WeaponManagement
|
||||||
|
Caption="Nice weapon management"
|
||||||
|
ComponentClassName="NicePack.NiceGUICheckBoxButton"
|
||||||
|
OnCreateComponent=WeaponManagement.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="If checked, NicePack will use it's own system to manage weapon switching"
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_WeapManagement=WeaponManagement
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=AltSwitches
|
||||||
|
Caption="Alt fire switches modes"
|
||||||
|
ComponentClassName="NicePack.NiceGUICheckBoxButton"
|
||||||
|
OnCreateComponent=AltSwitches.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="Assault-rifle only; if enabled - alt fire button switches between fire modes, otherwise - acts as an alt fire"
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_AltSwitches=AltSwitches
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=DispCounters
|
||||||
|
Caption="Display counters"
|
||||||
|
ComponentClassName="NicePack.NiceGUICheckBoxButton"
|
||||||
|
OnCreateComponent=DispCounters.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="Toggles display of the various counters used by skills"
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_DispCounters=DispCounters
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=DispWeapProgress
|
||||||
|
Caption="Display weapon progress"
|
||||||
|
ComponentClassName="NicePack.NiceGUICheckBoxButton"
|
||||||
|
OnCreateComponent=DispWeapProgress.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="Displays weapon progress rate, however it's defined by a skill that's using this functionality"
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_DisWeapProgress=DispWeapProgress
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=ShowHLMessages
|
||||||
|
Caption="Show Hardcore Level messages"
|
||||||
|
ComponentClassName="NicePack.NiceGUICheckBoxButton"
|
||||||
|
OnCreateComponent=ShowHLMessages.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="Enable to be notified each time Hardcore Level is changed"
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_ShowHLMessages=ShowHLMessages
|
||||||
|
|
||||||
|
// WEAPON RELOAD SETTINGS
|
||||||
Begin Object Class=GUISectionBackground Name=RELOADBG
|
Begin Object Class=GUISectionBackground Name=RELOADBG
|
||||||
Caption="Weapon reload settings"
|
Caption="Weapon reload settings"
|
||||||
WinTop=0.012500
|
WinTop=0.012500
|
||||||
@ -275,7 +218,87 @@ defaultproperties
|
|||||||
WinWidth=0.495000
|
WinWidth=0.495000
|
||||||
WinHeight=0.287500
|
WinHeight=0.287500
|
||||||
RenderWeight=0.100100
|
RenderWeight=0.100100
|
||||||
OnPreDraw=WeaponsBG.InternalPreDraw
|
// OnPreDraw=WeaponsBG.InternalPreDraw
|
||||||
|
OnPreDraw=RELOADBG.InternalPreDraw
|
||||||
End Object
|
End Object
|
||||||
bg_RELOAD=GUISectionBackground'NicePack.NiceGUISettings.RELOADBG'
|
bg_RELOAD=RELOADBG
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=CancelFire
|
||||||
|
Caption="Cancel reload by shooting"
|
||||||
|
ComponentClassName="NicePack.NiceGUICheckBoxButton"
|
||||||
|
OnCreateComponent=CancelFire.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="If checked, you'll be able to cancel reload of converted weapons by shooting (when you have ammo)"
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_CancelFire=CancelFire
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=CancelSwitching
|
||||||
|
Caption="Cancel reload by switching weapons"
|
||||||
|
ComponentClassName="NicePack.NiceGUICheckBoxButton"
|
||||||
|
OnCreateComponent=CancelSwitching.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="If checked, you'll be able to cancel reload of converted weapons by switching to different weapon"
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_CancelSwitching=CancelSwitching
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=CancelNades
|
||||||
|
Caption="Cancel reload by throwing grenades"
|
||||||
|
ComponentClassName="NicePack.NiceGUICheckBoxButton"
|
||||||
|
OnCreateComponent=CancelNades.InternalOnCreateComponent
|
||||||
|
IniOption="@Internal"
|
||||||
|
Hint="If checked, you'll be able to cancel reload of converted weapons by throwing a grenade"
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_CancelNades=CancelNades
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=CancelAiming
|
||||||
|
Caption="Cancel reload by aiming"
|
||||||
|
ComponentClassName="NicePack.NiceGUICheckBoxButton"
|
||||||
|
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)"
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_CancelAiming=CancelAiming
|
||||||
|
|
||||||
|
Begin Object Class=moCheckBox Name=ServerReload
|
||||||
|
Caption="My reload doesn't work"
|
||||||
|
ComponentClassName="NicePack.NiceGUICheckBoxButton"
|
||||||
|
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"
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
ch_ReloadWontWork=ServerReload
|
||||||
|
|
||||||
|
// RANDOM SETTINGS
|
||||||
|
Begin Object Class=GUISectionBackground Name=randbg
|
||||||
|
Caption="Random settings"
|
||||||
|
WinTop=0.300000
|
||||||
|
WinWidth=0.495000
|
||||||
|
WinHeight=0.287500
|
||||||
|
WinLeft=0.505000
|
||||||
|
RenderWeight=0.100100
|
||||||
|
// OnPreDraw=WeaponsBG.InternalPreDraw
|
||||||
|
OnPreDraw=randbg.InternalPreDraw
|
||||||
|
End Object
|
||||||
|
bg_RANDOM=randbg
|
||||||
|
|
||||||
|
Begin Object class=moComboBox Name=zedhbarpmethod
|
||||||
|
bReadOnly=true
|
||||||
|
CaptionWidth=0.000000
|
||||||
|
Caption="Zed health bars"
|
||||||
|
Hint="Choose what health bars you want to see"
|
||||||
|
OnCreateComponent=zedhbarpmethod.InternalOnCreateComponent
|
||||||
|
OnChange=NiceGUISettings.InternalOnChange
|
||||||
|
OnLoadINI=NiceGUISettings.InternalOnLoadINI
|
||||||
|
End Object
|
||||||
|
mo_ZedHPBars=zedhbarpmethod
|
||||||
}
|
}
|
@ -1,8 +1,10 @@
|
|||||||
class NiceInteraction extends Interaction
|
class NiceInteraction extends Interaction
|
||||||
dependson(NicePack)
|
dependson(NicePack)
|
||||||
dependson(NiceAbilityManager);
|
dependson(NiceAbilityManager);
|
||||||
|
|
||||||
#exec OBJ LOAD FILE=KillingFloorHUD.utx
|
#exec OBJ LOAD FILE=KillingFloorHUD.utx
|
||||||
#exec OBJ LOAD FILE=KillingFloor2HUD.utx
|
#exec OBJ LOAD FILE=KillingFloor2HUD.utx
|
||||||
|
|
||||||
var NicePack NicePackMutator;
|
var NicePack NicePackMutator;
|
||||||
var Material bleedIcon, poisonIcon;
|
var Material bleedIcon, poisonIcon;
|
||||||
var Texture greenBar, redBar;
|
var Texture greenBar, redBar;
|
||||||
@ -12,99 +14,211 @@ var float size;
|
|||||||
var float InventoryBoxWidth;
|
var float InventoryBoxWidth;
|
||||||
var float InventoryBoxHeight;
|
var float InventoryBoxHeight;
|
||||||
var float BorderSize;
|
var float BorderSize;
|
||||||
event NotifyLevelChange(){
|
|
||||||
|
// weapons list for `MultiTasker` skill
|
||||||
|
struct WeaponProgressDisplay
|
||||||
|
{
|
||||||
|
var class<NiceWeapon> weapClass;
|
||||||
|
var float progress;
|
||||||
|
var bool bShowCounter;
|
||||||
|
var int counter;
|
||||||
|
};
|
||||||
|
var array<WeaponProgressDisplay> niceWeapProgressSet;
|
||||||
|
|
||||||
|
event NotifyLevelChange()
|
||||||
|
{
|
||||||
Master.RemoveInteraction(self);
|
Master.RemoveInteraction(self);
|
||||||
}
|
}
|
||||||
function RegisterMutator(NicePack activePack){
|
|
||||||
|
function RegisterMutator(NicePack activePack)
|
||||||
|
{
|
||||||
NicePackMutator = activePack;
|
NicePackMutator = activePack;
|
||||||
}
|
}
|
||||||
function bool isPoisoned(ScrnHumanPawn pwn){
|
|
||||||
|
final private function bool bIsPoisoned(NiceHumanPawn pwn)
|
||||||
|
{
|
||||||
local Inventory I;
|
local Inventory I;
|
||||||
if(pwn.Inventory != none)
|
|
||||||
for(I = pwn.Inventory; I != none; I = I.Inventory)
|
if (pwn.Inventory != none)
|
||||||
if(I != none && MeanPoisonInventory(I) != none)
|
{
|
||||||
|
for (I = pwn.Inventory; I != none; I = I.Inventory)
|
||||||
|
{
|
||||||
|
if (I.IsA('MeanPoisonInventory'))
|
||||||
return true;
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
function PostRender(Canvas C){
|
|
||||||
|
final private function bool bIsBleeding(NiceHumanPawn pwn)
|
||||||
|
{
|
||||||
|
local Inventory I;
|
||||||
|
|
||||||
|
if (pwn.Inventory != none)
|
||||||
|
{
|
||||||
|
for (I = pwn.Inventory; I != none; I = I.Inventory)
|
||||||
|
{
|
||||||
|
if (I.IsA('MeanBleedInventory'))
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
final private function UpdateNiceWeapProgressSet(NiceHumanPawn pwn)
|
||||||
|
{
|
||||||
|
local Inventory I;
|
||||||
|
local NiceWeapon niceWeap;
|
||||||
|
local WeaponProgressDisplay newProgress;
|
||||||
|
|
||||||
|
// clean this!
|
||||||
|
niceWeapProgressSet.Length = 0;
|
||||||
|
|
||||||
|
if (pwn.Inventory != none)
|
||||||
|
{
|
||||||
|
for (I = pwn.Inventory; I != none; I = I.Inventory)
|
||||||
|
{
|
||||||
|
niceWeap = NiceWeapon(I);
|
||||||
|
if (niceWeap != none && niceWeap != pwn.weapon && !niceWeap.IsMagazineFull())
|
||||||
|
{
|
||||||
|
newProgress.weapClass = niceWeap.class;
|
||||||
|
newProgress.progress = niceWeap.holsteredCompletition;
|
||||||
|
newProgress.bShowCounter = true;
|
||||||
|
newProgress.counter = niceWeap.GetMagazineAmmo();
|
||||||
|
|
||||||
|
niceWeapProgressSet[niceWeapProgressSet.Length] = newProgress;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function PostRender(Canvas C)
|
||||||
|
{
|
||||||
local int i;
|
local int i;
|
||||||
local NicePack niceMutator;
|
local NicePack niceMutator;
|
||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
local class<NiceVeterancyTypes> niceVet;
|
local class<NiceVeterancyTypes> niceVet;
|
||||||
local MeanReplicationInfo szRI;
|
|
||||||
local NiceWeapon niceWeap;
|
local NiceWeapon niceWeap;
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
local ScrnHUD scrnHUDInstance;
|
local ScrnHUD scrnHUDInstance;
|
||||||
|
// TODO maybe use scrnhud?
|
||||||
|
// local HUDKillingFloor kfHud;
|
||||||
local Texture barTexture;
|
local Texture barTexture;
|
||||||
local int x, y, center, barWidth, offset;
|
local int x, y, center, barWidth, offset;
|
||||||
local int missesWidth, missesHeight, missesSpace;
|
local int missesWidth, missesHeight, missesSpace;
|
||||||
local int missesX, missesY;
|
local int missesX, missesY;
|
||||||
if(C == none) return;
|
// local Vector CamPos, ViewDir;
|
||||||
if(C.ViewPort == none) return;
|
// local Rotator CamRot;
|
||||||
if(C.ViewPort.Actor == none) return;
|
// local float OffsetX, BarLength, BarHeight, XL, YL, posY;
|
||||||
if(C.ViewPort.Actor.Pawn == none) return;
|
|
||||||
|
if (C == none || C.ViewPort == none || C.ViewPort.Actor == none || 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)
|
if (nicePlayer == none)
|
||||||
return;
|
return;
|
||||||
scrnHUDInstance = ScrnHUD(nicePlayer.myHUD);
|
|
||||||
//// Draw bleed and poison icons
|
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
||||||
szRI = class'MeanReplicationInfo'.static.findSZri(ViewportOwner.Actor.PlayerReplicationInfo);
|
|
||||||
|
//// Draw bleed and poison icons for OWNER
|
||||||
offset = 4;
|
offset = 4;
|
||||||
if(szRI != none){
|
// BLEED!!!
|
||||||
if(szRI.isBleeding){
|
if (bIsBleeding(nicePawn))
|
||||||
|
{
|
||||||
x = C.ClipX * 0.007;
|
x = C.ClipX * 0.007;
|
||||||
y = C.ClipY * 0.93 - size * offset;
|
y = C.ClipY * 0.93 - size * offset;
|
||||||
C.SetPos(x, y);
|
C.SetPos(x, y);
|
||||||
C.DrawTile(bleedIcon, size, size, 0, 0, bleedIcon.MaterialUSize(), bleedIcon.MaterialVSize());
|
C.DrawTile(bleedIcon, size, size, 0, 0, bleedIcon.MaterialUSize(), bleedIcon.MaterialVSize());
|
||||||
}
|
}
|
||||||
offset++;
|
offset++;
|
||||||
if(isPoisoned(ScrnHumanPawn(C.ViewPort.Actor.Pawn))){
|
// POISON!!!
|
||||||
|
if (bIsPoisoned(nicePawn))
|
||||||
|
{
|
||||||
x = C.ClipX * 0.007;
|
x = C.ClipX * 0.007;
|
||||||
y = C.ClipY * 0.93 - size * offset;
|
y = C.ClipY * 0.93 - size * offset;
|
||||||
C.SetPos(x, y);
|
C.SetPos(x, y);
|
||||||
C.DrawTile(poisonIcon, size, size, 0, 0, poisonIcon.MaterialUSize(), poisonIcon.MaterialVSize());
|
C.DrawTile(poisonIcon, size, size, 0, 0, poisonIcon.MaterialUSize(), poisonIcon.MaterialVSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO draw bleed and poison icons for TEAMMATES
|
||||||
|
// C.GetCAmeraLocation(CamPos, CamRot);
|
||||||
|
// ViewDir = vector(CamRot);
|
||||||
|
// kfHud = HUDKillingFloor(ViewportOwner.Actor.myHUD);
|
||||||
|
// OffsetX = (36.f * kfHud.default.VeterancyMatScaleFactor * 0.6) - (kfHud.default.HealthIconSize + 2.0);
|
||||||
|
// BarLength = FMin(kfHud.default.BarLength * (float(C.SizeX) / 1024.f), kfHud.default.BarLength);
|
||||||
|
// BarHeight = FMin(kfHud.default.BarHeight * (float(C.SizeX) / 1024.f), kfHud.default.BarHeight);
|
||||||
|
// for (i = 0; i < kfHUD.PlayerInfoPawns.Length; i++)
|
||||||
|
// {
|
||||||
|
// if (kfHUD.PlayerInfoPawns[i].Pawn != none && kfHUD.PlayerInfoPawns[i].Pawn.Health > 0 &&
|
||||||
|
// (kfHUD.PlayerInfoPawns[i].Pawn.Location - kfHUD.PawnOwner.Location) dot ViewDir > 0.8 &&
|
||||||
|
// kfHUD.PlayerInfoPawns[i].RendTime > ViewportOwner.Actor.Level.TimeSeconds)
|
||||||
|
// {
|
||||||
|
// C.StrLen(Left(kfHUD.PlayerInfoPawns[i].Pawn.PlayerReplicationInfo.PlayerName, 16), XL, YL);
|
||||||
|
// if (kfHUD.PlayerInfoPawns[i].Pawn.ShieldStrength <= 0)
|
||||||
|
// {
|
||||||
|
// posY = (kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosY - YL) - 2.75 * BarHeight -
|
||||||
|
// kfHUD.default.ArmorIconSize * 0.5;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// posY = (kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosY - YL) - 3.8 * BarHeight -
|
||||||
|
// kfHUD.default.ArmorIconSize * 0.5;
|
||||||
|
// }
|
||||||
|
// offset = 0;
|
||||||
|
|
||||||
|
// if (bIsBleeding(ScrnHumanPawn(kfHUD.PlayerInfoPawns[i].Pawn)))
|
||||||
|
// {
|
||||||
|
// C.SetPos(kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosX - OffsetX - 0.15 * BarLength -
|
||||||
|
// kfHUD.default.ArmorIconSize - 2.0, posY);
|
||||||
|
// C.DrawTileScaled(bleedIcon, 0.1875, 0.1875);
|
||||||
|
// }
|
||||||
|
// if (bIsPoisoned(ScrnHumanPawn(kfHUD.PlayerInfoPawns[i].Pawn)))
|
||||||
|
// {
|
||||||
|
// C.SetPos(kfHUD.PlayerInfoPawns[i].PlayerInfoScreenPosX - OffsetX + 0.15 * BarLength -
|
||||||
|
// kfHUD.default.ArmorIconSize - 2.0, posY);
|
||||||
|
// C.DrawTileScaled(poisonIcon, 0.1875, 0.1875);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
|
//// Draw weapons progress bars
|
||||||
|
// at first update weapon info
|
||||||
|
UpdateNiceWeapProgressSet(nicePawn);
|
||||||
|
|
||||||
|
if (nicePawn != none && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillEnforcerMultitasker')
|
||||||
|
&& nicePlayer.bFlagDisplayWeaponProgress && niceWeapProgressSet.length > 0)
|
||||||
|
{
|
||||||
|
x = C.ClipX - InventoryBoxWidth * C.ClipX - 5;
|
||||||
|
y = C.ClipY * 0.5 - 0.5 * (InventoryBoxHeight * C.ClipX + 4) * niceWeapProgressSet.Length;
|
||||||
|
|
||||||
|
for (i = 0; i < niceWeapProgressSet.Length; i++)
|
||||||
|
{
|
||||||
|
DrawWeaponProgress(C, niceWeapProgressSet[i], x, y, nicePawn.PlayerReplicationInfo.Team);
|
||||||
|
y += (InventoryBoxHeight * C.ClipX + 4);
|
||||||
}
|
}
|
||||||
if(niceWeap != none && niceWeap.bShowSecondaryCharge && scrnHUDInstance != none){
|
}
|
||||||
|
|
||||||
|
scrnHUDInstance = ScrnHUD(nicePlayer.myHUD);
|
||||||
|
|
||||||
|
if (niceWeap != none && niceWeap.bShowSecondaryCharge && scrnHUDInstance != none)
|
||||||
|
{
|
||||||
C.ColorModulate.X = 1;
|
C.ColorModulate.X = 1;
|
||||||
C.ColorModulate.Y = 1;
|
C.ColorModulate.Y = 1;
|
||||||
C.ColorModulate.Z = 1;
|
C.ColorModulate.Z = 1;
|
||||||
C.ColorModulate.W = scrnHUDInstance.HudOpacity / 255;
|
C.ColorModulate.W = scrnHUDInstance.HudOpacity / 255;
|
||||||
if(!scrnHUDInstance.bLightHud)
|
if (!scrnHUDInstance.bLightHud)
|
||||||
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsBG);
|
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsBG);
|
||||||
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsIcon);
|
scrnHUDInstance.DrawSpriteWidget(C, scrnHUDInstance.SecondaryClipsIcon);
|
||||||
scrnHUDInstance.SecondaryClipsDigits.value = niceWeap.secondaryCharge;
|
scrnHUDInstance.SecondaryClipsDigits.value = niceWeap.secondaryCharge;
|
||||||
scrnHUDInstance.DrawNumericWidget(C, scrnHUDInstance.SecondaryClipsDigits, scrnHUDInstance.DigitsSmall);
|
scrnHUDInstance.DrawNumericWidget(C, scrnHUDInstance.SecondaryClipsDigits, scrnHUDInstance.DigitsSmall);
|
||||||
}
|
}
|
||||||
niceMutator = class'NicePack'.static.Myself(C.ViewPort.Actor.Pawn.Level);
|
|
||||||
if(niceMutator == none)
|
|
||||||
return;
|
|
||||||
//// 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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//// 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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//// Draw invincibility bar
|
//// Draw invincibility bar
|
||||||
nicePawn = NiceHumanPawn(nicePlayer.pawn);
|
if (nicePawn != none && nicePawn.invincibilityTimer != 0.0)
|
||||||
if(nicePawn != none && nicePawn.invincibilityTimer != 0.0){
|
{
|
||||||
C.SetDrawColor(255, 255, 255);
|
C.SetDrawColor(255, 255, 255);
|
||||||
if(nicePawn.invincibilityTimer > 0)
|
if (nicePawn.invincibilityTimer > 0)
|
||||||
barTexture = greenBar;
|
barTexture = greenBar;
|
||||||
else
|
else
|
||||||
barTexture = redBar;
|
barTexture = redBar;
|
||||||
@ -113,40 +227,58 @@ function PostRender(Canvas C){
|
|||||||
barWidth = C.ClipX * 0.2;
|
barWidth = C.ClipX * 0.2;
|
||||||
niceVet = class'NiceVeterancyTypes'.static.
|
niceVet = class'NiceVeterancyTypes'.static.
|
||||||
GetVeterancy(nicePawn.PlayerReplicationInfo);
|
GetVeterancy(nicePawn.PlayerReplicationInfo);
|
||||||
if(niceVet != none){
|
if (niceVet != none)
|
||||||
if(nicePawn.invincibilityTimer > 0){
|
{
|
||||||
barWidth *= nicePawn.invincibilityTimer
|
if (nicePawn.invincibilityTimer > 0)
|
||||||
/ niceVet.static.GetInvincibilityDuration(nicePawn.KFPRI);
|
barWidth *= nicePawn.invincibilityTimer / niceVet.static.GetInvincibilityDuration(nicePawn.KFPRI);
|
||||||
}
|
else
|
||||||
else{
|
barWidth *= nicePawn.invincibilityTimer / class'NiceSkillZerkGunzerker'.default.cooldown;
|
||||||
barWidth *= nicePawn.invincibilityTimer /
|
|
||||||
class'NiceSkillZerkGunzerker'.default.cooldown;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
barWidth = 0;
|
barWidth = 0;
|
||||||
|
|
||||||
x = center - (barWidth / 2);
|
x = center - (barWidth / 2);
|
||||||
C.SetPos(x, y);
|
C.SetPos(x, y);
|
||||||
C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize());
|
C.DrawTile(barTexture, barWidth, 32, 0, 0, barTexture.MaterialUSize(), barTexture.MaterialVSize());
|
||||||
if(nicePawn.safeMeleeMisses <= 0)
|
if (nicePawn.safeMeleeMisses <= 0)
|
||||||
return;
|
return;
|
||||||
missesSpace = 10;//64x64 => 16x16
|
missesSpace = 10; // 64x64 => 16x16
|
||||||
missesHeight = 16;
|
missesHeight = 16;
|
||||||
missesWidth = nicePawn.safeMeleeMisses * 16
|
missesWidth = nicePawn.safeMeleeMisses * 16 + (nicePawn.safeMeleeMisses - 1) * missesSpace;
|
||||||
+ (nicePawn.safeMeleeMisses - 1) * missesSpace;
|
|
||||||
missesX = center - (missesWidth / 2);
|
missesX = center - (missesWidth / 2);
|
||||||
missesY = y + (32 - missesHeight) * 0.5;
|
missesY = y + (32 - missesHeight) * 0.5;
|
||||||
for(i = 0;i < nicePawn.safeMeleeMisses;i ++){
|
|
||||||
|
for (i = 0; i < nicePawn.safeMeleeMisses; i++)
|
||||||
|
{
|
||||||
C.SetPos(missesX + i * (16 + missesSpace), missesY);
|
C.SetPos(missesX + i * (16 + missesSpace), missesY);
|
||||||
C.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize());
|
C.DrawTile(shield, 16, 16, 0, 0, shield.MaterialUSize(), shield.MaterialVSize());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Draw cooldowns
|
|
||||||
if(nicePlayer.abilityManager == none)
|
//// Draw cooldowns
|
||||||
|
if (nicePlayer.abilityManager == none)
|
||||||
return;
|
return;
|
||||||
for(i = 0;i < nicePlayer.abilityManager.currentAbilitiesAmount;i ++)
|
for (i = 0; i < nicePlayer.abilityManager.currentAbilitiesAmount; i++)
|
||||||
DrawAbilityCooldown(C, i);
|
DrawAbilityCooldown(C, i);
|
||||||
|
|
||||||
|
//// Draw counters
|
||||||
|
niceMutator = class'NicePack'.static.Myself(nicePawn.Level);
|
||||||
|
|
||||||
|
if (niceMutator != none && 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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;
|
||||||
local Texture textureToDraw;
|
local Texture textureToDraw;
|
||||||
@ -272,15 +404,18 @@ function DrawCalibrationStars(Canvas C){
|
|||||||
x += 32 + 16;
|
x += 32 + 16;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function DrawWeaponProgress(Canvas C, NicePack.WeaponProgressDisplay weapProgress, int x, int y, TeamInfo team){
|
|
||||||
|
function DrawWeaponProgress(Canvas C, WeaponProgressDisplay weapProgress, int x, int y, TeamInfo team)
|
||||||
|
{
|
||||||
local float textWidth, textHeight;
|
local float textWidth, textHeight;
|
||||||
local string textToDraw;
|
local string textToDraw;
|
||||||
local float TempWidth, TempHeight, TempBorder;
|
local float TempWidth, TempHeight, TempBorder;
|
||||||
|
|
||||||
TempWidth = InventoryBoxWidth * C.ClipX;
|
TempWidth = InventoryBoxWidth * C.ClipX;
|
||||||
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)
|
if (team.teamIndex == 0)
|
||||||
C.SetDrawColor(255, 64, 64, 64);
|
C.SetDrawColor(255, 64, 64, 64);
|
||||||
else
|
else
|
||||||
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B, 64);
|
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B, 64);
|
||||||
@ -304,7 +439,8 @@ function DrawWeaponProgress(Canvas C, NicePack.WeaponProgressDisplay weapProgres
|
|||||||
C.SetDrawColor(255, 64, 64);
|
C.SetDrawColor(255, 64, 64);
|
||||||
else
|
else
|
||||||
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B);
|
C.SetDrawColor(team.teamColor.R, team.teamColor.G, team.teamColor.B);
|
||||||
if(weapProgress.bShowCounter){
|
if(weapProgress.bShowCounter)
|
||||||
|
{
|
||||||
textToDraw = string(weapProgress.counter);
|
textToDraw = string(weapProgress.counter);
|
||||||
C.Font = class'ROHUD'.Static.LoadSmallFontStatic(5);
|
C.Font = class'ROHUD'.Static.LoadSmallFontStatic(5);
|
||||||
C.TextSize(textToDraw, textWidth, textHeight);
|
C.TextSize(textToDraw, textWidth, textHeight);
|
||||||
@ -312,51 +448,61 @@ function DrawWeaponProgress(Canvas C, NicePack.WeaponProgressDisplay weapProgres
|
|||||||
C.DrawText(textToDraw);
|
C.DrawText(textToDraw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta){
|
|
||||||
|
function bool KeyEvent(EInputKey Key, EInputAction Action, float Delta)
|
||||||
|
{
|
||||||
local bool bNeedsReload;
|
local bool bNeedsReload;
|
||||||
local string Alias, LeftPart, RigthPart;
|
local string Alias, LeftPart, RigthPart;
|
||||||
local NiceWeapon niceWeap;
|
local NiceWeapon niceWeap;
|
||||||
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)
|
if (nicePlayer == none)
|
||||||
return false;
|
return false;
|
||||||
if(nicePlayer.Pawn != none)
|
if (nicePlayer.Pawn != none)
|
||||||
niceWeap = NiceWeapon(nicePlayer.Pawn.Weapon);
|
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){
|
if (Action == IST_Press)
|
||||||
|
{
|
||||||
// Check for reload command
|
// Check for reload command
|
||||||
Alias = nicePlayer.ConsoleCommand("KEYBINDING" @ nicePlayer.ConsoleCommand("KEYNAME" @ Key));
|
Alias = nicePlayer.ConsoleCommand("KEYBINDING" @ nicePlayer.ConsoleCommand("KEYNAME" @ Key));
|
||||||
if(nicePlayer.bAdvReloadCheck)
|
if (nicePlayer.bAdvReloadCheck)
|
||||||
bNeedsReload = InStr(Caps(Alias), "RELOADMENOW") > -1 || InStr(Caps(Alias), "RELOADWEAPON") > -1;
|
bNeedsReload = InStr(Caps(Alias), "RELOADMENOW") > -1 || InStr(Caps(Alias), "RELOADWEAPON") > -1;
|
||||||
if(Divide(Alias, " ", LeftPart, RigthPart))
|
if (Divide(Alias, " ", LeftPart, RigthPart))
|
||||||
Alias = LeftPart;
|
Alias = LeftPart;
|
||||||
if(Key == IK_MouseWheelUp || Key == IK_MouseWheelDown){
|
if (Key == IK_MouseWheelUp || Key == IK_MouseWheelDown)
|
||||||
|
{
|
||||||
nicePlayer.UpdateSelectors();
|
nicePlayer.UpdateSelectors();
|
||||||
if(nicePlayer.hasZeroSelector && nicePlayer.bUsesMouseWheel && nicePlayer.bNiceWeaponManagement){
|
if (nicePlayer.hasZeroSelector && nicePlayer.bUsesMouseWheel && nicePlayer.bNiceWeaponManagement)
|
||||||
|
{
|
||||||
nicePlayer.ScrollSelector(0, nicePlayer.bMouseWheelLoops, Key == IK_MouseWheelUp);
|
nicePlayer.ScrollSelector(0, nicePlayer.bMouseWheelLoops, Key == IK_MouseWheelUp);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Open trader on movement
|
|
||||||
if(Alias ~= "MoveForward" || Alias ~= "MoveBackward" || Alias ~= "TurnLeft" || Alias ~= "TurnRight"
|
|
||||||
|| Alias ~= "StrafeLeft" || Alias ~= "StrafeRight" || Alias ~= "Axis"){
|
|
||||||
|
|
||||||
// Open trader if it's a pre-game
|
// Open trader on movement if it's a pre-game
|
||||||
if(NicePackMutator.bIsPreGame && NicePackMutator.bInitialTrader && (NicePackMutator.bStillDuringInitTrader || !nicePlayer.bOpenedInitTrader) && nicePlayer.Pawn != none){
|
if (NicePackMutator.bIsPreGame && NicePackMutator.bInitialTrader && (NicePackMutator.bStillDuringInitTrader || !nicePlayer.bOpenedInitTrader) && nicePlayer.Pawn != none)
|
||||||
|
{
|
||||||
|
if (Alias ~= "MoveForward" || Alias ~= "MoveBackward" || Alias ~= "TurnLeft" || Alias ~= "TurnRight"
|
||||||
|
|| Alias ~= "StrafeLeft" || Alias ~= "StrafeRight" || Alias ~= "Axis")
|
||||||
|
{
|
||||||
|
// nicePlayer.ClientOpenMenu("NicePack.NiceGUIBuyMenu",,"Test stuff",string(15));
|
||||||
nicePlayer.ShowBuyMenu("Initial trader", KFHumanPawn(nicePlayer.Pawn).MaxCarryWeight);
|
nicePlayer.ShowBuyMenu("Initial trader", KFHumanPawn(nicePlayer.Pawn).MaxCarryWeight);
|
||||||
nicePlayer.bOpenedInitTrader = true;
|
nicePlayer.bOpenedInitTrader = true;
|
||||||
return 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 &&
|
if (niceWeap != none && !nicePlayer.bUseServerReload &&
|
||||||
(bNeedsReload || Alias ~= "ReloadMeNow" || Alias ~= "ReloadWeapon"))
|
(bNeedsReload || Alias ~= "ReloadMeNow" || Alias ~= "ReloadWeapon"))
|
||||||
niceWeap.ClientReloadMeNow();
|
niceWeap.ClientReloadMeNow();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
bleedIcon=Texture'NicePackT.MeanZeds.bleedIcon'
|
bleedIcon=Texture'NicePackT.MeanZeds.bleedIcon'
|
||||||
|
@ -8,16 +8,16 @@ function InitComponent(GUIController MyController, GUIComponent MyOwner){
|
|||||||
local SRMenuAddition M;
|
local SRMenuAddition M;
|
||||||
local int indexAfterScrn;
|
local int indexAfterScrn;
|
||||||
// Setup panel classes.
|
// Setup panel classes.
|
||||||
Panels[0].ClassName = string(Class'ScrnBalanceSrv.ScrnTab_MidGamePerks');
|
Panels[0].ClassName = string(class'ScrnTab_MidGamePerks');
|
||||||
Panels[1].ClassName = string(Class'NicePack.NicePanelSkills');
|
Panels[1].ClassName = string(class'NicePanelSkills');
|
||||||
Panels[2].ClassName = string(Class'SRTab_MidGameVoiceChat');
|
Panels[2].ClassName = string(class'SRTab_MidGameVoiceChat');
|
||||||
Panels[3].ClassName = string(Class'SRTab_MidGameStats');
|
Panels[3].ClassName = string(class'SRTab_MidGameStats');
|
||||||
Panels[0].Caption = Class'KFInvasionLoginMenu'.Default.Panels[1].Caption;
|
Panels[0].Caption = class'KFInvasionLoginMenu'.Default.Panels[1].Caption;
|
||||||
Panels[1].Caption = "Skills";
|
Panels[1].Caption = "Skills";
|
||||||
Panels[2].Caption = Class'KFInvasionLoginMenu'.Default.Panels[2].Caption;
|
Panels[2].Caption = class'KFInvasionLoginMenu'.Default.Panels[2].Caption;
|
||||||
Panels[0].Hint = Class'KFInvasionLoginMenu'.Default.Panels[1].Hint;
|
Panels[0].Hint = class'KFInvasionLoginMenu'.Default.Panels[1].Hint;
|
||||||
Panels[1].Hint = "Customize your perk";
|
Panels[1].Hint = "Customize your perk";
|
||||||
Panels[2].Hint = Class'KFInvasionLoginMenu'.Default.Panels[2].Hint;
|
Panels[2].Hint = class'KFInvasionLoginMenu'.Default.Panels[2].Hint;
|
||||||
b_Spec.Caption=class'KFTab_MidGamePerks'.default.b_Spec.Caption;
|
b_Spec.Caption=class'KFTab_MidGamePerks'.default.b_Spec.Caption;
|
||||||
b_MatchSetup.Caption=class'KFTab_MidGamePerks'.default.b_MatchSetup.Caption;
|
b_MatchSetup.Caption=class'KFTab_MidGamePerks'.default.b_MatchSetup.Caption;
|
||||||
b_KickVote.Caption=class'KFTab_MidGamePerks'.default.b_KickVote.Caption;
|
b_KickVote.Caption=class'KFTab_MidGamePerks'.default.b_KickVote.Caption;
|
||||||
@ -28,18 +28,19 @@ function InitComponent(GUIController MyController, GUIComponent MyOwner){
|
|||||||
b_Settings.Caption=class'KFTab_MidGamePerks'.default.b_Settings.Caption;
|
b_Settings.Caption=class'KFTab_MidGamePerks'.default.b_Settings.Caption;
|
||||||
b_Browser.Caption=class'KFTab_MidGamePerks'.default.b_Browser.Caption;
|
b_Browser.Caption=class'KFTab_MidGamePerks'.default.b_Browser.Caption;
|
||||||
// Other panels
|
// Other panels
|
||||||
Panels[4].ClassName = "ScrnBalanceSrv.ScrnTab_Achievements";
|
Panels[4].ClassName = string(class'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){
|
if (default.bShowScrnMenu)
|
||||||
Panels[5].ClassName = "ScrnBalanceSrv.ScrnTab_UserSettings";
|
{
|
||||||
|
Panels[5].ClassName = string(class'ScrnTab_UserSettings');
|
||||||
Panels[5].Caption = "ScrN Features";
|
Panels[5].Caption = "ScrN Features";
|
||||||
Panels[5].Hint = "ScrN Balance features, settings and info";
|
Panels[5].Hint = "ScrN Balance features, settings and info";
|
||||||
indexAfterScrn = 6;
|
indexAfterScrn = 6;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
indexAfterScrn = 5;
|
indexAfterScrn = 5;
|
||||||
Panels[indexAfterScrn].ClassName = "NicePack.NiceGUISettings";
|
Panels[indexAfterScrn].ClassName = string(class'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;
|
||||||
|
21
sources/GUI/NiceLobbyChat.uc
Normal file
21
sources/GUI/NiceLobbyChat.uc
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
class NiceLobbyChat extends KFLobbyChat;
|
||||||
|
|
||||||
|
function InitComponent(GUIController MyController, GUIComponent MyOwner)
|
||||||
|
{
|
||||||
|
Super(PopupPageBase).InitComponent( MyController, MyOwner );
|
||||||
|
|
||||||
|
TextColor[0] = class'SayMessagePlus'.default.RedTeamColor;
|
||||||
|
TextColor[1] = class'SayMessagePlus'.default.BlueTeamColor;
|
||||||
|
TextColor[2] = class'SayMessagePlus'.default.DrawColor;
|
||||||
|
|
||||||
|
eb_Send.MyEditBox.OnKeyEvent = InternalOnKeyEvent;
|
||||||
|
lb_Chat.MyScrollText.bNeverFocus=true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function bool NotifyLevelChange() // Don't keep this one around...
|
||||||
|
{
|
||||||
|
bPersistent = false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultproperties{}
|
@ -1,12 +1,884 @@
|
|||||||
class NiceLobbyMenu extends ScrnLobbyMenu;
|
// base class, not vanilla
|
||||||
|
class NiceLobbyMenu extends UT2k4MainPage;
|
||||||
|
|
||||||
|
|
||||||
|
// some constants
|
||||||
|
const MaxPlayersOnList=18;
|
||||||
|
|
||||||
|
// RIGHT part lables
|
||||||
|
var private string str_Beginner, str_Normal, str_Hard, str_Sui, str_HOE;
|
||||||
|
var private string str_CurrentMap, str_Difficulty, str_ServerName;
|
||||||
|
var private string SelectPerkInformationString, PerksDisabledString;
|
||||||
|
// LEFT part labels
|
||||||
|
var private string str_LvlAbbr;
|
||||||
|
var private string WaitingForServerStatus, WaitingForOtherPlayers, AutoCommence;
|
||||||
|
|
||||||
|
// player name-perk-ready boxes
|
||||||
|
struct FPlayerBoxEntry
|
||||||
|
{
|
||||||
|
var moCheckBox ReadyBox;
|
||||||
|
var KFPlayerReadyBar PlayerBox;
|
||||||
|
var GUIImage PlayerPerk;
|
||||||
|
var GUILabel PlayerVetLabel;
|
||||||
|
var bool bIsEmpty;
|
||||||
|
};
|
||||||
|
var array<FPlayerBoxEntry> PlayerBoxes;
|
||||||
|
|
||||||
|
var bool bShowProfilePage;
|
||||||
|
|
||||||
|
// swapped class
|
||||||
|
var automated KFLobbyChat t_ChatBox;
|
||||||
|
|
||||||
|
// diffculty / map name label
|
||||||
|
var automated AltSectionBackground GameInfoBG;
|
||||||
|
var automated GUILabel CurrentMapLabel;
|
||||||
|
var automated GUILabel DifficultyLabel;
|
||||||
|
var automated GUILabel ServerNameLabel;
|
||||||
|
|
||||||
|
// circle and current wave label
|
||||||
|
var automated GUIImage WaveBG;
|
||||||
|
var automated GUILabel WaveLabel;
|
||||||
|
|
||||||
|
var automated GUILabel label_TimeOutCounter;
|
||||||
|
var automated GUILabel PerkClickLabel;
|
||||||
|
|
||||||
|
var bool bAllowClose;
|
||||||
|
|
||||||
|
// Perks / Profile
|
||||||
|
var() string sChar, sCharD;
|
||||||
|
var() xUtil.PlayerRecord PlayerRec;
|
||||||
|
|
||||||
|
var automated GUISectionBackground i_BGPerk;
|
||||||
|
|
||||||
|
var automated GUISectionBackground i_BGPerkEffects;
|
||||||
|
var automated GUIScrollTextBox lb_PerkEffects;
|
||||||
|
|
||||||
|
var automated GUIImage i_Portrait;
|
||||||
|
var automated GUISectionBackground PlayerPortraitBG;
|
||||||
|
|
||||||
|
var float IconBorder; // Percent of Height to leave blank inside Icon Background
|
||||||
|
var float ItemBorder; // Percent of Height to leave blank inside Item Background
|
||||||
|
var float ItemSpacing; // Number of Pixels between Items
|
||||||
|
var float ProgressBarHeight; // Percent of Height to make Progress Bar's Height
|
||||||
|
var float TextTopOffset; // Percent of Height to off Progress String from top of Progress Bar(typically negative)
|
||||||
|
var float IconToInfoSpacing; // Percent of Width to offset Info from right side of Icon
|
||||||
|
|
||||||
|
//var bool bAdminUse; // If you're not an admin, gtfo!
|
||||||
|
|
||||||
|
var int ActivateTimeoutTime; // When was the lobby timeout turned on?
|
||||||
|
var bool bTimeoutTimeLogged; // Was it already logged once?
|
||||||
|
var bool bTimedOut; // Have we timed out out successfully?
|
||||||
|
|
||||||
|
var bool bShouldUpdateVeterancy;
|
||||||
|
var class<KFVeterancyTypes> CurrentVeterancy;
|
||||||
|
var int CurrentVeterancyLevel;
|
||||||
|
|
||||||
|
|
||||||
|
function InitComponent(GUIController MyC, GUIComponent MyO)
|
||||||
|
{
|
||||||
|
super(UT2k4MainPage).InitComponent(MyC, MyO);
|
||||||
|
|
||||||
|
FixPortrait();
|
||||||
|
t_ChatBox.FocusInstead = PerkClickLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
event ResolutionChanged(int ResX, int ResY)
|
||||||
|
{
|
||||||
|
super.ResolutionChanged(ResX, ResY);
|
||||||
|
FixPortrait();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// FUCKING TWI, YOUR FUCKING BUGS
|
||||||
|
final private function bool FixPortrait()
|
||||||
|
{
|
||||||
|
i_Portrait.WinTop = PlayerPortraitBG.RelativeTop(i_Portrait.WinTop); // ActualTop() + 30;
|
||||||
|
i_Portrait.WinHeight = PlayerPortraitBG.RelativeHeight(i_Portrait.WinHeight); // ActualHeight() - 36;
|
||||||
|
// log(">>> HideLobbyMenu: FixPortrait() called!!!");
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Called when the Menu Owner is opened
|
||||||
|
event Opened(GUIComponent Sender)
|
||||||
|
{
|
||||||
|
bShouldUpdateVeterancy = true;
|
||||||
|
|
||||||
|
// disable some shit for story mode
|
||||||
|
if (PlayerOwner().GameReplicationInfo.IsA('KF_StoryGRI'))
|
||||||
|
{
|
||||||
|
// disable background
|
||||||
|
WaveBG.Image = none;
|
||||||
|
WaveBG.DisableMe();
|
||||||
|
// disable waves text
|
||||||
|
WaveLabel.Caption = "";
|
||||||
|
WaveLabel.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
SetTimer(1, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// if we don't reset persistence, playerboxes will continue to pile
|
||||||
|
function bool NotifyLevelChange()
|
||||||
|
{
|
||||||
|
bPersistent = false;
|
||||||
|
bAllowClose = true;
|
||||||
|
Controller.CloseMenu(true);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function bool InternalOnKeyEvent(out byte Key, out byte State, float delta)
|
||||||
|
{
|
||||||
|
local int i;
|
||||||
|
local bool bVoiceChatKey;
|
||||||
|
local array<string> BindKeyNames, LocalizedBindKeyNames;
|
||||||
|
|
||||||
|
Controller.GetAssignedKeys("VoiceTalk", BindKeyNames, LocalizedBindKeyNames);
|
||||||
|
|
||||||
|
for (i = 0; i < BindKeyNames.Length; i++)
|
||||||
|
{
|
||||||
|
if (Mid(GetEnum(enum'EInputKey', Key), 3) ~= BindKeyNames[i])
|
||||||
|
{
|
||||||
|
bVoiceChatKey = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bVoiceChatKey)
|
||||||
|
{
|
||||||
|
if (state == 1 || state == 2)
|
||||||
|
{
|
||||||
|
if (PlayerOwner() != none)
|
||||||
|
{
|
||||||
|
PlayerOwner().bVoiceTalk = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (PlayerOwner() != none)
|
||||||
|
{
|
||||||
|
PlayerOwner().bVoiceTalk = 0;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function TimedOut()
|
||||||
|
{
|
||||||
|
bTimedOut = true;
|
||||||
|
PlayerOwner().ServerRestartPlayer();
|
||||||
|
bAllowClose = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function bool InternalOnPreDraw(Canvas C)
|
||||||
|
{
|
||||||
|
local int i, j;
|
||||||
|
local string StoryString;
|
||||||
|
local String SkillString;
|
||||||
|
local KFGameReplicationInfo KFGRI;
|
||||||
|
local PlayerController PC;
|
||||||
|
|
||||||
|
PC = PlayerOwner();
|
||||||
|
|
||||||
|
if (PC == none || PC.Level == none) // Error?
|
||||||
|
return false;
|
||||||
|
|
||||||
|
if ((PC.PlayerReplicationInfo != none && (!PC.PlayerReplicationInfo.bWaitingPlayer || PC.PlayerReplicationInfo.bOnlySpectator)) || PC.Outer.Name == 'Entry')
|
||||||
|
{
|
||||||
|
bAllowClose = true;
|
||||||
|
PC.ClientCloseMenu(true,false);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
t_Footer.InternalOnPreDraw(C);
|
||||||
|
KFGRI = KFGameReplicationInfo(PC.GameReplicationInfo);
|
||||||
|
|
||||||
|
if (KFGRI != none)
|
||||||
|
{
|
||||||
|
WaveLabel.Caption = string(KFGRI.WaveNumber + 1) $ "/" $ string(KFGRI.FinalWave);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
WaveLabel.Caption = "?/?";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
C.DrawColor.A = 255;
|
||||||
|
|
||||||
|
// CHECK ME LATER
|
||||||
|
if (KFPlayerController(PC) != none && bShouldUpdateVeterancy)
|
||||||
|
{
|
||||||
|
if (KFPlayerController(PC).SelectedVeterancy == none)
|
||||||
|
{
|
||||||
|
bShowProfilePage = true;
|
||||||
|
|
||||||
|
if (PC.SteamStatsAndAchievements == none)
|
||||||
|
{
|
||||||
|
if (PC.Level.NetMode != NM_Client)
|
||||||
|
{
|
||||||
|
PC.SteamStatsAndAchievements = PC.Spawn(PC.default.SteamStatsAndAchievementsClass, PC);
|
||||||
|
if (!PC.SteamStatsAndAchievements.Initialize(PC))
|
||||||
|
{
|
||||||
|
Controller.OpenMenu(Controller.QuestionMenuClass);
|
||||||
|
GUIQuestionPage(Controller.TopPage()).SetupQuestion(class'KFMainMenu'.default.UnknownSteamErrorText, QBTN_Ok, QBTN_Ok);
|
||||||
|
PC.SteamStatsAndAchievements.Destroy();
|
||||||
|
PC.SteamStatsAndAchievements = none;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PC.SteamStatsAndAchievements.OnDataInitialized = OnSteamStatsAndAchievementsReady;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bShowProfilePage = false;
|
||||||
|
}
|
||||||
|
else if (!PC.SteamStatsAndAchievements.bInitialized)
|
||||||
|
{
|
||||||
|
PC.SteamStatsAndAchievements.OnDataInitialized = OnSteamStatsAndAchievementsReady;
|
||||||
|
PC.SteamStatsAndAchievements.GetStatsAndAchievements();
|
||||||
|
bShowProfilePage = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (KFSteamStatsAndAchievements(PC.SteamStatsAndAchievements) != none)
|
||||||
|
{
|
||||||
|
for (i = 0; i < class'KFGameType'.default.LoadedSkills.Length; i++)
|
||||||
|
{
|
||||||
|
if (KFSteamStatsAndAchievements(PC.SteamStatsAndAchievements).GetPerkProgress(i) < 0.0)
|
||||||
|
{
|
||||||
|
PC.SteamStatsAndAchievements.OnDataInitialized = OnSteamStatsAndAchievementsReady;
|
||||||
|
PC.SteamStatsAndAchievements.GetStatsAndAchievements();
|
||||||
|
bShowProfilePage = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bShowProfilePage)
|
||||||
|
{
|
||||||
|
OnSteamStatsAndAchievementsReady();
|
||||||
|
}
|
||||||
|
|
||||||
|
bShouldUpdateVeterancy = false;
|
||||||
|
}
|
||||||
|
else if (PC.SteamStatsAndAchievements != none && PC.SteamStatsAndAchievements.bInitialized)
|
||||||
|
{
|
||||||
|
KFPlayerController(PC).SendSelectedVeterancyToServer();
|
||||||
|
bShouldUpdateVeterancy = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// First fill in non-ready players.
|
||||||
|
for (i = 0; i < KFGRI.PRIArray.Length; i++)
|
||||||
|
{
|
||||||
|
if (!bValidPRI(KFGRI.PRIArray[i]) || KFGRI.PRIArray[i].bReadyToPlay)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// start from 0
|
||||||
|
AddPlayer(KFPlayerReplicationInfo(KFGRI.PRIArray[i]), j, C);
|
||||||
|
if (++j >= MaxPlayersOnList)
|
||||||
|
GoTo'DoneIt';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Then comes rest.
|
||||||
|
for (i = 0; i < KFGRI.PRIArray.Length; i++)
|
||||||
|
{
|
||||||
|
if (!bValidPRI(KFGRI.PRIArray[i]) || !KFGRI.PRIArray[i].bReadyToPlay)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (KFGRI.PRIArray[i].bReadyToPlay)
|
||||||
|
{
|
||||||
|
if (!bTimeoutTimeLogged)
|
||||||
|
{
|
||||||
|
ActivateTimeoutTime = PC.Level.TimeSeconds;
|
||||||
|
bTimeoutTimeLogged = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// continue from last idx
|
||||||
|
AddPlayer(KFPlayerReplicationInfo(KFGRI.PRIArray[i]), j, C);
|
||||||
|
if (++j >= MaxPlayersOnList)
|
||||||
|
GoTo'DoneIt';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (j < MaxPlayersOnList)
|
||||||
|
EmptyPlayers(j);
|
||||||
|
|
||||||
|
DoneIt:
|
||||||
|
StoryString = PC.Level.Description;
|
||||||
|
|
||||||
|
if (KFGRI.BaseDifficulty <= 1)
|
||||||
|
SkillString = str_Beginner;
|
||||||
|
else if (KFGRI.BaseDifficulty <= 2)
|
||||||
|
SkillString = str_Normal;
|
||||||
|
else if (KFGRI.BaseDifficulty <= 4)
|
||||||
|
SkillString = str_Hard;
|
||||||
|
else if (KFGRI.BaseDifficulty <= 5)
|
||||||
|
SkillString = str_Sui;
|
||||||
|
else
|
||||||
|
SkillString = str_HOE;
|
||||||
|
|
||||||
|
CurrentMapLabel.Caption = str_CurrentMap @ PC.Level.Title;
|
||||||
|
DifficultyLabel.Caption = str_Difficulty @ SkillString;
|
||||||
|
|
||||||
|
// UT2K4PlayerLoginMenu copy-cat
|
||||||
|
if (PC.Level.NetMode == NM_StandAlone || PC.GameReplicationInfo == None || PC.GameReplicationInfo.ServerName == "")
|
||||||
|
ServerNameLabel.Caption = str_ServerName @ "SOLO MODE ACTIVE!";
|
||||||
|
else
|
||||||
|
ServerNameLabel.Caption = str_ServerName @ PC.GameReplicationInfo.ServerName;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// filter none, spectators, non-KFPRI ones
|
||||||
|
final private function bool bValidPRI(PlayerReplicationInfo PRI)
|
||||||
|
{
|
||||||
|
if (PRI == none || PRI.bOnlySpectator || KFPlayerReplicationInfo(PRI) == none)
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
final private function AddPlayer(KFPlayerReplicationInfo PRI, int Index, Canvas C)
|
||||||
|
{
|
||||||
|
local float Top;
|
||||||
|
local Material M;
|
||||||
|
local ScrnBalance Mut;
|
||||||
|
local String PlayerName;
|
||||||
|
|
||||||
|
if (Index >= PlayerBoxes.Length)
|
||||||
|
{
|
||||||
|
Top = Index * 0.045;
|
||||||
|
PlayerBoxes.Length = Index + 1;
|
||||||
|
// create GUIComponents and set defaults
|
||||||
|
PlayerBoxes[Index].ReadyBox = new (none) Class'moCheckBox';
|
||||||
|
PlayerBoxes[Index].ReadyBox.bValueReadOnly = true;
|
||||||
|
PlayerBoxes[Index].ReadyBox.ComponentJustification = TXTA_Left;
|
||||||
|
PlayerBoxes[Index].ReadyBox.CaptionWidth = 0.82;
|
||||||
|
PlayerBoxes[Index].ReadyBox.LabelColor.B = 0;
|
||||||
|
PlayerBoxes[Index].ReadyBox.WinTop = 0.0475+Top;
|
||||||
|
PlayerBoxes[Index].ReadyBox.WinLeft = 0.075;
|
||||||
|
PlayerBoxes[Index].ReadyBox.WinWidth = 0.4;
|
||||||
|
PlayerBoxes[Index].ReadyBox.WinHeight = 0.045;
|
||||||
|
PlayerBoxes[Index].ReadyBox.RenderWeight = 0.55;
|
||||||
|
PlayerBoxes[Index].ReadyBox.bAcceptsInput = false;
|
||||||
|
PlayerBoxes[Index].PlayerBox = new (none) Class'KFPlayerReadyBar';
|
||||||
|
PlayerBoxes[Index].PlayerBox.WinTop = 0.04+Top;
|
||||||
|
PlayerBoxes[Index].PlayerBox.WinLeft = 0.04;
|
||||||
|
PlayerBoxes[Index].PlayerBox.WinWidth = 0.35;
|
||||||
|
PlayerBoxes[Index].PlayerBox.WinHeight = 0.045;
|
||||||
|
PlayerBoxes[Index].PlayerBox.RenderWeight = 0.35;
|
||||||
|
PlayerBoxes[Index].PlayerPerk = new (none) Class'GUIImage';
|
||||||
|
PlayerBoxes[Index].PlayerPerk.ImageStyle = ISTY_Justified;
|
||||||
|
PlayerBoxes[Index].PlayerPerk.WinTop = 0.043+Top;
|
||||||
|
PlayerBoxes[Index].PlayerPerk.WinLeft = 0.0418;
|
||||||
|
PlayerBoxes[Index].PlayerPerk.WinWidth = 0.039;
|
||||||
|
PlayerBoxes[Index].PlayerPerk.WinHeight = 0.039;
|
||||||
|
PlayerBoxes[Index].PlayerPerk.RenderWeight = 0.56;
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel = new (none) Class'GUILabel';
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.TextAlign = TXTA_Right;
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.TextColor = Class'Canvas'.Static.MakeColor(19,19,19);
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.TextFont = "UT2SmallFont";
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.WinTop = 0.04+Top;
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.WinLeft = 0.22907;
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.WinWidth = 0.151172;
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.WinHeight = 0.045;
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.RenderWeight = 0.5;
|
||||||
|
|
||||||
|
// finally add the GUIComponents
|
||||||
|
AppendComponent(PlayerBoxes[Index].ReadyBox, true);
|
||||||
|
AppendComponent(PlayerBoxes[Index].PlayerBox, true);
|
||||||
|
AppendComponent(PlayerBoxes[Index].PlayerPerk, true);
|
||||||
|
AppendComponent(PlayerBoxes[Index].PlayerVetLabel, true);
|
||||||
|
|
||||||
|
Top = (PlayerBoxes[Index].PlayerBox.WinTop + PlayerBoxes[Index].PlayerBox.WinHeight);
|
||||||
|
}
|
||||||
|
PlayerBoxes[Index].ReadyBox.Checked(PRI.bReadyToPlay);
|
||||||
|
Mut = class'ScrnBalance'.default.Mut;
|
||||||
|
if ( Mut != none )
|
||||||
|
PlayerName = Mut.LeftCol(Mut.ColoredPlayerName(PRI), 20);
|
||||||
|
else
|
||||||
|
PlayerName = Left(PRI.PlayerName, 20);
|
||||||
|
|
||||||
|
PlayerBoxes[Index].ReadyBox.SetCaption(" "$PlayerName);
|
||||||
|
|
||||||
|
if (PRI.ClientVeteranSkill != none)
|
||||||
|
{
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.Caption = str_LvlAbbr @ PRI.ClientVeteranSkillLevel @ PRI.ClientVeteranSkill.default.VeterancyName;
|
||||||
|
if (Class<SRVeterancyTypes>(PRI.ClientVeteranSkill) != None)
|
||||||
|
{
|
||||||
|
Class<SRVeterancyTypes>(PRI.ClientVeteranSkill).Static.PreDrawPerk(C,PRI.ClientVeteranSkillLevel,PlayerBoxes[Index].PlayerPerk.Image,M);
|
||||||
|
PlayerBoxes[Index].PlayerPerk.ImageColor = C.DrawColor;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PlayerBoxes[Index].PlayerPerk.Image = PRI.ClientVeteranSkill.default.OnHUDIcon;
|
||||||
|
PlayerBoxes[Index].PlayerPerk.ImageColor = Class'Canvas'.Static.MakeColor(255,255,255);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PlayerBoxes[Index].PlayerPerk.Image = None;
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.Caption = "";
|
||||||
|
}
|
||||||
|
PlayerBoxes[Index].bIsEmpty = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
final private function EmptyPlayers(int Index)
|
||||||
|
{
|
||||||
|
local int i;
|
||||||
|
|
||||||
|
while (Index < PlayerBoxes.Length && !PlayerBoxes[Index].bIsEmpty)
|
||||||
|
{
|
||||||
|
PlayerBoxes[Index].ReadyBox.Checked(false);
|
||||||
|
PlayerBoxes[Index].PlayerPerk.Image = none;
|
||||||
|
PlayerBoxes[Index].PlayerVetLabel.Caption = "";
|
||||||
|
PlayerBoxes[Index].ReadyBox.SetCaption("");
|
||||||
|
PlayerBoxes[Index].bIsEmpty = true;
|
||||||
|
++Index;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i = 0; i < PlayerBoxes.Length; i++)
|
||||||
|
{
|
||||||
|
if (PlayerBoxes[i].bIsEmpty)
|
||||||
|
{
|
||||||
|
// remove GUIComponents
|
||||||
|
RemoveComponent(PlayerBoxes[i].ReadyBox, false);
|
||||||
|
RemoveComponent(PlayerBoxes[i].PlayerBox, false);
|
||||||
|
RemoveComponent(PlayerBoxes[i].PlayerPerk, false);
|
||||||
|
RemoveComponent(PlayerBoxes[i].PlayerVetLabel, false);
|
||||||
|
// remove refs
|
||||||
|
PlayerBoxes[i].ReadyBox = none;
|
||||||
|
PlayerBoxes[i].PlayerBox = none;
|
||||||
|
PlayerBoxes[i].PlayerPerk = none;
|
||||||
|
PlayerBoxes[i].PlayerVetLabel = none;
|
||||||
|
// remove from array
|
||||||
|
PlayerBoxes.remove(i, 1);
|
||||||
|
// everything works fine this way, do not log
|
||||||
|
// log(">>> NiceLobbyMenu: EmptyPlayers executed.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function bool StopClose(optional bool bCancelled)
|
||||||
|
{
|
||||||
|
// clean chat box
|
||||||
|
t_ChatBox.lb_Chat.SetContent("");
|
||||||
|
|
||||||
|
// this is for the OnCanClose delegate
|
||||||
|
// can't close now unless done by call to CloseAll,
|
||||||
|
// or the bool has been set to true by LobbyFooter
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function InternalOnClosed(bool bCancelled)
|
||||||
|
{
|
||||||
|
if (PlayerOwner() != none)
|
||||||
|
{
|
||||||
|
PlayerOwner().Advertising_ExitZone();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
event Timer()
|
||||||
|
{
|
||||||
|
local KFGameReplicationInfo KF;
|
||||||
|
|
||||||
|
if (PlayerOwner().PlayerReplicationInfo == none)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (PlayerOwner().PlayerReplicationInfo.bOnlySpectator)
|
||||||
|
{
|
||||||
|
label_TimeOutCounter.caption = "You are a spectator.";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
KF = KFGameReplicationInfo(PlayerOwner().GameReplicationInfo);
|
||||||
|
|
||||||
|
if (KF == none)
|
||||||
|
{
|
||||||
|
label_TimeOutCounter.caption = WaitingForServerStatus;
|
||||||
|
}
|
||||||
|
else if (KF.LobbyTimeout <= 0)
|
||||||
|
{
|
||||||
|
label_TimeOutCounter.caption = WaitingForOtherPlayers;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
label_TimeOutCounter.caption = AutoCommence $ KF.LobbyTimeout;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
final private function DrawPerk(Canvas Canvas)
|
||||||
|
{
|
||||||
|
local float X, Y, Width, Height;
|
||||||
|
local int LevelIndex;
|
||||||
|
local float TempX, TempY;
|
||||||
|
local float TempWidth, TempHeight;
|
||||||
|
local float IconSize, ProgressBarWidth;
|
||||||
|
local string PerkName, PerkLevelString;
|
||||||
|
local KFPlayerReplicationInfo KFPRI;
|
||||||
|
local Material M, SM;
|
||||||
|
|
||||||
|
DrawPortrait();
|
||||||
|
|
||||||
|
KFPRI = KFPlayerReplicationInfo(PlayerOwner().PlayerReplicationInfo);
|
||||||
|
|
||||||
|
if (KFPRI == none || KFPRI.ClientVeteranSkill == None)
|
||||||
|
{
|
||||||
|
if (CurrentVeterancyLevel != 255)
|
||||||
|
{
|
||||||
|
CurrentVeterancyLevel = 255;
|
||||||
|
lb_PerkEffects.SetContent("None perk active");
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LevelIndex = KFPRI.ClientVeteranSkillLevel;
|
||||||
|
PerkName = KFPRI.ClientVeteranSkill.default.VeterancyName;
|
||||||
|
PerkLevelString = str_LvlAbbr @ LevelIndex;
|
||||||
|
|
||||||
|
//Get the position size etc in pixels
|
||||||
|
X = (i_BGPerk.WinLeft + 0.003) * Canvas.ClipX;
|
||||||
|
Y = (i_BGPerk.WinTop + 0.040) * Canvas.ClipY;
|
||||||
|
|
||||||
|
Width = (i_BGPerk.WinWidth - 0.006) * Canvas.ClipX;
|
||||||
|
Height = (i_BGPerk.WinHeight - 0.043) * Canvas.ClipY;
|
||||||
|
|
||||||
|
// Offset for the Background
|
||||||
|
TempX = X;
|
||||||
|
TempY = Y;
|
||||||
|
|
||||||
|
// Initialize the Canvas
|
||||||
|
Canvas.Style = 1;
|
||||||
|
Canvas.Font = class'ROHUD'.Static.GetSmallMenuFont(Canvas);
|
||||||
|
Canvas.SetDrawColor(255, 255, 255, 255);
|
||||||
|
|
||||||
|
// Draw Item Background
|
||||||
|
Canvas.SetPos(TempX, TempY);
|
||||||
|
|
||||||
|
// Offset and Calculate Icon's Size
|
||||||
|
TempX += ItemBorder * Height;
|
||||||
|
TempY += ItemBorder * Height;
|
||||||
|
IconSize = Height - (ItemBorder * 2.0 * Height);
|
||||||
|
|
||||||
|
// Draw Icon
|
||||||
|
Canvas.SetPos(TempX, TempY);
|
||||||
|
if( Class<SRVeterancyTypes>(KFPRI.ClientVeteranSkill)!=None )
|
||||||
|
Class<SRVeterancyTypes>(KFPRI.ClientVeteranSkill).Static.PreDrawPerk(Canvas,KFPRI.ClientVeteranSkillLevel,M,SM);
|
||||||
|
else M = KFPRI.ClientVeteranSkill.default.OnHUDIcon;
|
||||||
|
Canvas.DrawTile(M, IconSize, IconSize, 0, 0, M.MaterialUSize(), M.MaterialVSize());
|
||||||
|
|
||||||
|
TempX += IconSize + (IconToInfoSpacing * Width);
|
||||||
|
TempY += TextTopOffset * Height;
|
||||||
|
|
||||||
|
ProgressBarWidth = Width - (TempX - X) - (IconToInfoSpacing * Width);
|
||||||
|
|
||||||
|
// Select Text Color
|
||||||
|
Canvas.SetDrawColor(255, 255, 255, 255);
|
||||||
|
|
||||||
|
// Draw the Perk's Level name
|
||||||
|
Canvas.StrLen(PerkName, TempWidth, TempHeight);
|
||||||
|
Canvas.SetPos(TempX, TempY);
|
||||||
|
Canvas.DrawText(PerkName);
|
||||||
|
|
||||||
|
// Draw the Perk's Level
|
||||||
|
if (PerkLevelString != "")
|
||||||
|
{
|
||||||
|
Canvas.StrLen(PerkLevelString, TempWidth, TempHeight);
|
||||||
|
Canvas.SetPos(TempX + ProgressBarWidth - TempWidth, TempY);
|
||||||
|
Canvas.DrawText(PerkLevelString);
|
||||||
|
}
|
||||||
|
|
||||||
|
TempY += TempHeight + (0.01 * Height);
|
||||||
|
|
||||||
|
if (CurrentVeterancy != KFPRI.ClientVeteranSkill || CurrentVeterancyLevel != LevelIndex)
|
||||||
|
{
|
||||||
|
CurrentVeterancy = KFPRI.ClientVeteranSkill;
|
||||||
|
CurrentVeterancyLevel = LevelIndex;
|
||||||
|
lb_PerkEffects.SetContent(Class<SRVeterancyTypes>(KFPRI.ClientVeteranSkill).Static.GetVetInfoText(LevelIndex,1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
final private function DrawPortrait()
|
||||||
|
{
|
||||||
|
if (PlayerOwner().PlayerReplicationInfo != none)
|
||||||
|
sChar = PlayerOwner().PlayerReplicationInfo.CharacterName;
|
||||||
|
else
|
||||||
|
sChar = PlayerOwner().GetUrlOption("Character");
|
||||||
|
|
||||||
|
if (sCharD != sChar)
|
||||||
|
{
|
||||||
|
sCharD = sChar;
|
||||||
|
SetPlayerRec();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
final private function SetPlayerRec()
|
||||||
|
{
|
||||||
|
PlayerRec = Class'xUtil'.Static.FindPlayerRecord(sChar);
|
||||||
|
i_Portrait.Image = PlayerRec.Portrait;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
final private function bool ShowPerkMenu(GUIComponent Sender)
|
||||||
|
{
|
||||||
|
if (PlayerOwner() != none)
|
||||||
|
{
|
||||||
|
if (ScrnPlayerController(PlayerOwner()) != none )
|
||||||
|
PlayerOwner().ClientOpenMenu(ScrnPlayerController(PlayerOwner()).ProfilePageClassString, false);
|
||||||
|
else
|
||||||
|
PlayerOwner().ClientOpenMenu(string(class'ScrnProfilePage'), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
final private function OnSteamStatsAndAchievementsReady()
|
||||||
|
{
|
||||||
|
Controller.OpenMenu("KFGUI.KFProfilePage");
|
||||||
|
|
||||||
|
Controller.OpenMenu(Controller.QuestionMenuClass);
|
||||||
|
GUIQuestionPage(Controller.TopPage()).SetupQuestion(SelectPerkInformationString, QBTN_Ok, QBTN_Ok);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//=============================================================================
|
||||||
|
// DEFAULTPROPERTIES
|
||||||
|
//=============================================================================
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
str_Beginner="Beginner"
|
||||||
|
str_Normal="Normal"
|
||||||
|
str_Hard="Hard"
|
||||||
|
str_Sui="Suicidal"
|
||||||
|
str_HOE="Hell on Earth"
|
||||||
|
|
||||||
|
str_LvlAbbr="Lv"
|
||||||
|
str_CurrentMap="Current Map:"
|
||||||
|
str_Difficulty="Difficulty:"
|
||||||
|
str_ServerName="Server Name:"
|
||||||
|
|
||||||
|
SelectPerkInformationString="Perks enhance certain abilities of your character.|There are 6 Perks to choose from in the center of the screen.|Each has different Effects shown in the upper right.|Perks improve as you complete the Level Requirements shown on the right."
|
||||||
|
PerksDisabledString="Perk Progress has been disabled because the Game Length is set to Custom, Sandbox Mode is on, or you have previously used Cheats."
|
||||||
|
|
||||||
|
WaitingForServerStatus="Awaiting server status..."
|
||||||
|
WaitingForOtherPlayers="Waiting for players to be ready..."
|
||||||
|
AutoCommence="Game will auto-commence in: "
|
||||||
|
|
||||||
|
// replace LobbyChat
|
||||||
|
Begin Object Class=NiceLobbyChat Name=ChatBox
|
||||||
|
OnCreateComponent=ChatBox.InternalOnCreateComponent
|
||||||
|
TabOrder=1
|
||||||
|
RenderWeight=0.01
|
||||||
|
OnHover=ChatBox.FloatingHover
|
||||||
|
WinTop=0.80760
|
||||||
|
WinLeft=0.016090
|
||||||
|
WinWidth=0.971410
|
||||||
|
WinHeight=0.100000
|
||||||
|
ToolTip=none
|
||||||
|
End Object
|
||||||
|
t_ChatBox=ChatBox
|
||||||
|
|
||||||
|
// replace LobbyFooter
|
||||||
Begin Object Class=NiceLobbyFooter Name=BuyFooter
|
Begin Object Class=NiceLobbyFooter Name=BuyFooter
|
||||||
RenderWeight=0.300000
|
RenderWeight=0.300000
|
||||||
TabOrder=8
|
TabOrder=8
|
||||||
bBoundToParent=False
|
bBoundToParent=false
|
||||||
bScaleToParent=False
|
bScaleToParent=false
|
||||||
OnPreDraw=BuyFooter.InternalOnPreDraw
|
OnPreDraw=BuyFooter.InternalOnPreDraw
|
||||||
End Object
|
End Object
|
||||||
t_Footer=NiceLobbyFooter'NicePack.NiceLobbyMenu.BuyFooter'
|
t_Footer=BuyFooter
|
||||||
|
|
||||||
|
// RIGHT part, server name - map name - difficulty - waves
|
||||||
|
Begin Object Class=AltSectionBackground Name=GameInfoB
|
||||||
|
WinTop=0.037851
|
||||||
|
WinLeft=0.489062
|
||||||
|
WinWidth=0.487374
|
||||||
|
WinHeight=0.100000
|
||||||
|
OnPreDraw=GameInfoB.InternalPreDraw
|
||||||
|
End Object
|
||||||
|
GameInfoBG=GameInfoB
|
||||||
|
|
||||||
|
Begin Object Class=GUILabel Name=ServerNameL
|
||||||
|
Caption="tmp name"
|
||||||
|
TextColor=(B=158,G=176,R=175)
|
||||||
|
WinTop=0.042179
|
||||||
|
WinLeft=0.496524
|
||||||
|
WinWidth=0.360000
|
||||||
|
WinHeight=0.035714
|
||||||
|
RenderWeight=0.900000
|
||||||
|
End Object
|
||||||
|
ServerNameLabel=ServerNameL
|
||||||
|
|
||||||
|
Begin Object Class=GUILabel Name=CurrentMapL
|
||||||
|
Caption="tmp Map"
|
||||||
|
TextColor=(B=158,G=176,R=175)
|
||||||
|
WinTop=0.072381
|
||||||
|
WinLeft=0.496524
|
||||||
|
WinWidth=0.360000
|
||||||
|
WinHeight=0.035714
|
||||||
|
RenderWeight=0.900000
|
||||||
|
End Object
|
||||||
|
CurrentMapLabel=CurrentMapL
|
||||||
|
|
||||||
|
Begin Object Class=GUILabel Name=DifficultyL
|
||||||
|
Caption="tmp diff"
|
||||||
|
TextColor=(B=158,G=176,R=175)
|
||||||
|
WinTop=0.102583
|
||||||
|
WinLeft=0.496524
|
||||||
|
WinWidth=0.360000
|
||||||
|
WinHeight=0.035714
|
||||||
|
RenderWeight=0.900000
|
||||||
|
End Object
|
||||||
|
DifficultyLabel=DifficultyL
|
||||||
|
|
||||||
|
Begin Object Class=GUIImage Name=WaveB
|
||||||
|
Image=Texture'KillingFloorHUD.HUD.Hud_Bio_Circle'
|
||||||
|
ImageStyle=ISTY_Justified
|
||||||
|
ImageRenderStyle=MSTY_Normal
|
||||||
|
WinTop=0.043810
|
||||||
|
WinLeft=0.923238
|
||||||
|
WinWidth=0.051642
|
||||||
|
WinHeight=0.061783
|
||||||
|
RenderWeight=0.800000
|
||||||
|
End Object
|
||||||
|
WaveBG=WaveB
|
||||||
|
|
||||||
|
Begin Object Class=GUILabel Name=WaveL
|
||||||
|
Caption="1/4"
|
||||||
|
TextAlign=TXTA_Center
|
||||||
|
TextColor=(B=158,G=176,R=175)
|
||||||
|
VertAlign=TXTA_Center
|
||||||
|
FontScale=FNS_Small
|
||||||
|
WinTop=0.043810
|
||||||
|
WinLeft=0.923238
|
||||||
|
WinWidth=0.051642
|
||||||
|
WinHeight=0.061783
|
||||||
|
RenderWeight=0.900000
|
||||||
|
End Object
|
||||||
|
WaveLabel=WaveL
|
||||||
|
|
||||||
|
// LEFT part
|
||||||
|
Begin Object Class=GUILabel Name=TimeOutCounter
|
||||||
|
Caption="Game will auto-commence in: "
|
||||||
|
TextAlign=TXTA_Center
|
||||||
|
TextColor=(B=158,G=176,R=175)
|
||||||
|
WinTop=0.000010
|
||||||
|
WinLeft=0.059552
|
||||||
|
WinWidth=0.346719
|
||||||
|
WinHeight=0.045704
|
||||||
|
TabOrder=6
|
||||||
|
End Object
|
||||||
|
label_TimeOutCounter=TimeOutCounter
|
||||||
|
|
||||||
|
Begin Object Class=GUILabel Name=PerkClickArea
|
||||||
|
WinTop=0.432395
|
||||||
|
WinLeft=0.488851
|
||||||
|
WinWidth=0.444405
|
||||||
|
WinHeight=0.437312
|
||||||
|
bAcceptsInput=true
|
||||||
|
OnClickSound=CS_Click
|
||||||
|
OnClick=NiceLobbyMenu.ShowPerkMenu
|
||||||
|
End Object
|
||||||
|
PerkClickLabel=PerkClickArea
|
||||||
|
|
||||||
|
Begin Object Class=GUISectionBackground Name=BGPerk
|
||||||
|
bFillClient=true
|
||||||
|
Caption="Current Perk"
|
||||||
|
WinTop=0.432291
|
||||||
|
WinLeft=0.650976
|
||||||
|
WinWidth=0.325157
|
||||||
|
WinHeight=0.138086
|
||||||
|
OnPreDraw=BGPerk.InternalPreDraw
|
||||||
|
End Object
|
||||||
|
i_BGPerk=BGPerk
|
||||||
|
|
||||||
|
Begin Object Class=GUISectionBackground Name=BGPerkEffects
|
||||||
|
bFillClient=true
|
||||||
|
Caption="Perk Effects"
|
||||||
|
WinTop=0.568448
|
||||||
|
WinLeft=0.650976
|
||||||
|
WinWidth=0.325157
|
||||||
|
WinHeight=0.307442
|
||||||
|
OnPreDraw=BGPerkEffects.InternalPreDraw
|
||||||
|
End Object
|
||||||
|
i_BGPerkEffects=BGPerkEffects
|
||||||
|
|
||||||
|
Begin Object Class=GUIScrollTextBox Name=PerkEffectsScroll
|
||||||
|
CharDelay=0.002500
|
||||||
|
EOLDelay=0.100000
|
||||||
|
OnCreateComponent=PerkEffectsScroll.InternalOnCreateComponent
|
||||||
|
WinTop=0.626094
|
||||||
|
WinLeft=0.659687
|
||||||
|
WinWidth=0.309454
|
||||||
|
WinHeight=0.244961
|
||||||
|
TabOrder=9
|
||||||
|
ToolTip=none
|
||||||
|
End Object
|
||||||
|
lb_PerkEffects=PerkEffectsScroll
|
||||||
|
|
||||||
|
Begin Object Class=GUIImage Name=PlayerPortrait
|
||||||
|
Image=Texture'InterfaceArt_tex.Menu.changeme_texture'
|
||||||
|
ImageStyle=ISTY_Scaled
|
||||||
|
ImageRenderStyle=MSTY_Normal
|
||||||
|
IniOption="@Internal"
|
||||||
|
WinTop=0.472396
|
||||||
|
WinLeft=0.492522
|
||||||
|
WinWidth=0.156368
|
||||||
|
WinHeight=0.397022
|
||||||
|
RenderWeight=0.300000
|
||||||
|
End Object
|
||||||
|
i_Portrait=PlayerPortrait
|
||||||
|
|
||||||
|
Begin Object Class=GUISectionBackground Name=PlayerPortraitB
|
||||||
|
WinTop=0.432291
|
||||||
|
WinLeft=0.489062
|
||||||
|
WinWidth=0.163305
|
||||||
|
WinHeight=0.443451
|
||||||
|
OnPreDraw=PlayerPortraitB.InternalPreDraw
|
||||||
|
End Object
|
||||||
|
PlayerPortraitBG=PlayerPortraitB
|
||||||
|
|
||||||
|
IconBorder=0.050000
|
||||||
|
ItemBorder=0.110000
|
||||||
|
ProgressBarHeight=0.300000
|
||||||
|
TextTopOffset=0.050000
|
||||||
|
IconToInfoSpacing=0.050000
|
||||||
|
|
||||||
|
c_Tabs=GUITabControl'KFGui.GUILibraryMenu.PageTabs'
|
||||||
|
|
||||||
|
Begin Object Class=GUIHeader Name=ServerBrowserHeader
|
||||||
|
bVisible=false
|
||||||
|
End Object
|
||||||
|
t_Header=ServerBrowserHeader
|
||||||
|
|
||||||
|
i_Background=none
|
||||||
|
i_bkChar=none
|
||||||
|
|
||||||
|
bRenderWorld=true
|
||||||
|
bAllowedAsLast=true
|
||||||
|
OnClose=NiceLobbyMenu.InternalOnClosed
|
||||||
|
OnCanClose=NiceLobbyMenu.StopClose
|
||||||
|
WinHeight=0.500000
|
||||||
|
OnPreDraw=NiceLobbyMenu.InternalOnPreDraw
|
||||||
|
OnRendered=NiceLobbyMenu.DrawPerk
|
||||||
|
OnKeyEvent=NiceLobbyMenu.InternalOnKeyEvent
|
||||||
}
|
}
|
@ -1,15 +1,36 @@
|
|||||||
class NicePanelSkills extends Settings_Tabs;
|
class NicePanelSkills extends UT2K4TabPanel;
|
||||||
|
|
||||||
var automated NiceGUIPerkButton skillButtonA[5], skillButtonB[5];
|
var automated NiceGUIPerkButton skillButtonA[5], skillButtonB[5];
|
||||||
function ShowPanel(bool bShow){
|
var automated GUISectionBackground sb_big_left, sb_big_right;
|
||||||
|
|
||||||
|
function ShowPanel(bool bShow)
|
||||||
|
{
|
||||||
local int i;
|
local int i;
|
||||||
local class<NiceVeterancyTypes> niceVet;
|
local class<NiceVeterancyTypes> niceVet;
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
Super.ShowPanel(bShow);
|
|
||||||
|
super.ShowPanel(bShow);
|
||||||
|
|
||||||
|
// loops are for puss
|
||||||
|
sb_big_left.ManageComponent(skillButtonA[0]);
|
||||||
|
sb_big_left.ManageComponent(skillButtonA[1]);
|
||||||
|
sb_big_left.ManageComponent(skillButtonA[2]);
|
||||||
|
sb_big_left.ManageComponent(skillButtonA[3]);
|
||||||
|
sb_big_left.ManageComponent(skillButtonA[4]);
|
||||||
|
|
||||||
|
sb_big_right.ManageComponent(skillButtonB[0]);
|
||||||
|
sb_big_right.ManageComponent(skillButtonB[1]);
|
||||||
|
sb_big_right.ManageComponent(skillButtonB[2]);
|
||||||
|
sb_big_right.ManageComponent(skillButtonB[3]);
|
||||||
|
sb_big_right.ManageComponent(skillButtonB[4]);
|
||||||
|
|
||||||
nicePlayer = NicePlayerController(PlayerOwner());
|
nicePlayer = NicePlayerController(PlayerOwner());
|
||||||
if(nicePlayer != none)
|
if (nicePlayer != none)
|
||||||
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(nicePlayer.PlayerReplicationInfo);
|
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(nicePlayer.PlayerReplicationInfo);
|
||||||
if(niceVet != none){
|
if (niceVet != none)
|
||||||
for(i = 0;i < 5;i ++){
|
{
|
||||||
|
for (i = 0;i < 5;i ++)
|
||||||
|
{
|
||||||
skillButtonA[i].skillIndex = i;
|
skillButtonA[i].skillIndex = i;
|
||||||
skillButtonB[i].skillIndex = i;
|
skillButtonB[i].skillIndex = i;
|
||||||
skillButtonA[i].skillPerkIndex = niceVet.default.PerkIndex;
|
skillButtonA[i].skillPerkIndex = niceVet.default.PerkIndex;
|
||||||
@ -21,79 +42,116 @@ function ShowPanel(bool bShow){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 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
|
||||||
{
|
{
|
||||||
|
// BACKGROUNDS
|
||||||
|
Begin Object Class=AltSectionBackground Name=skillbckgrndl
|
||||||
|
Caption="LEFT SKILLS"
|
||||||
|
// bNoCaption=true
|
||||||
|
LeftPadding=0.000000
|
||||||
|
RightPadding=0.030000
|
||||||
|
TopPadding=0.000000
|
||||||
|
BottomPadding=0.000000
|
||||||
|
WinTop=0.000000
|
||||||
|
WinLeft=0.000000
|
||||||
|
WinWidth=0.500000
|
||||||
|
WinHeight=0.87
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
OnPreDraw=skillbckgrndl.InternalPreDraw
|
||||||
|
End Object
|
||||||
|
sb_big_left=skillbckgrndl
|
||||||
|
|
||||||
|
Begin Object Class=AltSectionBackground Name=skillbckgrndr
|
||||||
|
Caption="OBVIOUSLY RIGHT SKILLS"
|
||||||
|
// bNoCaption=true
|
||||||
|
LeftPadding=0.000000
|
||||||
|
RightPadding=0.030000
|
||||||
|
TopPadding=0.000000
|
||||||
|
BottomPadding=0.000000
|
||||||
|
WinTop=0.000000
|
||||||
|
WinLeft=0.500000
|
||||||
|
WinWidth=0.500000
|
||||||
|
WinHeight=0.87
|
||||||
|
bBoundToParent=True
|
||||||
|
bScaleToParent=True
|
||||||
|
OnPreDraw=skillbckgrndr.InternalPreDraw
|
||||||
|
End Object
|
||||||
|
sb_big_right=skillbckgrndr
|
||||||
|
|
||||||
|
// buttons
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn1A
|
Begin Object Class=NiceGUIPerkButton Name=btn1A
|
||||||
WinTop=0.012500
|
// WinTop=0.012500
|
||||||
WinWidth=0.495000
|
WinWidth=0.495000
|
||||||
WinHeight=0.160000
|
WinHeight=0.160000
|
||||||
RenderWeight=2.000000
|
// RenderWeight=2.000000
|
||||||
TabOrder=1
|
// TabOrder=1
|
||||||
bBoundToParent=True
|
bBoundToParent=True
|
||||||
bScaleToParent=True
|
bScaleToParent=True
|
||||||
bMouseOverSound=False
|
bMouseOverSound=False
|
||||||
OnClickSound=CS_None
|
OnClickSound=CS_None
|
||||||
OnKeyEvent=btn1A.InternalOnKeyEvent
|
OnKeyEvent=btn1A.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
skillButtonA(0)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn1A'
|
skillButtonA(0)=btn1A
|
||||||
|
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn2A
|
Begin Object Class=NiceGUIPerkButton Name=btn2A
|
||||||
WinTop=0.188500
|
// WinTop=0.188500
|
||||||
WinWidth=0.495000
|
WinWidth=0.495000
|
||||||
WinHeight=0.160000
|
WinHeight=0.160000
|
||||||
RenderWeight=2.000000
|
// RenderWeight=2.000000
|
||||||
TabOrder=3
|
// TabOrder=3
|
||||||
bBoundToParent=True
|
bBoundToParent=True
|
||||||
bScaleToParent=True
|
bScaleToParent=True
|
||||||
bMouseOverSound=False
|
bMouseOverSound=False
|
||||||
OnClickSound=CS_None
|
OnClickSound=CS_None
|
||||||
OnKeyEvent=btn2A.InternalOnKeyEvent
|
OnKeyEvent=btn2A.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
skillButtonA(1)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn2A'
|
skillButtonA(1)=btn2A
|
||||||
|
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn3A
|
Begin Object Class=NiceGUIPerkButton Name=btn3A
|
||||||
WinTop=0.364500
|
// WinTop=0.364500
|
||||||
WinWidth=0.495000
|
WinWidth=0.495000
|
||||||
WinHeight=0.160000
|
WinHeight=0.160000
|
||||||
RenderWeight=2.000000
|
// RenderWeight=2.000000
|
||||||
TabOrder=5
|
// TabOrder=5
|
||||||
bBoundToParent=True
|
bBoundToParent=True
|
||||||
bScaleToParent=True
|
bScaleToParent=True
|
||||||
bMouseOverSound=False
|
bMouseOverSound=False
|
||||||
OnClickSound=CS_None
|
OnClickSound=CS_None
|
||||||
OnKeyEvent=btn3A.InternalOnKeyEvent
|
OnKeyEvent=btn3A.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
skillButtonA(2)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn3A'
|
skillButtonA(2)=btn3A
|
||||||
|
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn4A
|
Begin Object Class=NiceGUIPerkButton Name=btn4A
|
||||||
WinTop=0.540500
|
// WinTop=0.540500
|
||||||
WinWidth=0.495000
|
WinWidth=0.495000
|
||||||
WinHeight=0.160000
|
WinHeight=0.160000
|
||||||
RenderWeight=2.000000
|
// RenderWeight=2.000000
|
||||||
TabOrder=7
|
// TabOrder=7
|
||||||
bBoundToParent=True
|
bBoundToParent=True
|
||||||
bScaleToParent=True
|
bScaleToParent=True
|
||||||
bMouseOverSound=False
|
bMouseOverSound=False
|
||||||
OnClickSound=CS_None
|
OnClickSound=CS_None
|
||||||
OnKeyEvent=btn4A.InternalOnKeyEvent
|
OnKeyEvent=btn4A.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
skillButtonA(3)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn4A'
|
skillButtonA(3)=btn4A
|
||||||
|
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn5A
|
Begin Object Class=NiceGUIPerkButton Name=btn5A
|
||||||
WinTop=0.716500
|
// WinTop=0.716500
|
||||||
WinWidth=0.495000
|
WinWidth=0.495000
|
||||||
WinHeight=0.160000
|
WinHeight=0.160000
|
||||||
RenderWeight=2.000000
|
// RenderWeight=2.000000
|
||||||
TabOrder=9
|
// TabOrder=9
|
||||||
bBoundToParent=True
|
bBoundToParent=True
|
||||||
bScaleToParent=True
|
bScaleToParent=True
|
||||||
bMouseOverSound=False
|
bMouseOverSound=False
|
||||||
OnClickSound=CS_None
|
OnClickSound=CS_None
|
||||||
OnKeyEvent=btn5A.InternalOnKeyEvent
|
OnKeyEvent=btn5A.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
skillButtonA(4)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn5A'
|
skillButtonA(4)=btn5A
|
||||||
|
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn1B
|
Begin Object Class=NiceGUIPerkButton Name=btn1B
|
||||||
WinTop=0.012500
|
WinTop=0.012500
|
||||||
@ -108,7 +166,7 @@ defaultproperties
|
|||||||
OnClickSound=CS_None
|
OnClickSound=CS_None
|
||||||
OnKeyEvent=btn1B.InternalOnKeyEvent
|
OnKeyEvent=btn1B.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
skillButtonB(0)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn1B'
|
skillButtonB(0)=btn1B
|
||||||
|
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn2B
|
Begin Object Class=NiceGUIPerkButton Name=btn2B
|
||||||
WinTop=0.188500
|
WinTop=0.188500
|
||||||
@ -123,7 +181,7 @@ defaultproperties
|
|||||||
OnClickSound=CS_None
|
OnClickSound=CS_None
|
||||||
OnKeyEvent=btn2B.InternalOnKeyEvent
|
OnKeyEvent=btn2B.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
skillButtonB(1)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn2B'
|
skillButtonB(1)=btn2B
|
||||||
|
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn3B
|
Begin Object Class=NiceGUIPerkButton Name=btn3B
|
||||||
WinTop=0.364500
|
WinTop=0.364500
|
||||||
@ -138,7 +196,7 @@ defaultproperties
|
|||||||
OnClickSound=CS_None
|
OnClickSound=CS_None
|
||||||
OnKeyEvent=btn3B.InternalOnKeyEvent
|
OnKeyEvent=btn3B.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
skillButtonB(2)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn3B'
|
skillButtonB(2)=btn3B
|
||||||
|
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn4B
|
Begin Object Class=NiceGUIPerkButton Name=btn4B
|
||||||
WinTop=0.540500
|
WinTop=0.540500
|
||||||
@ -153,7 +211,7 @@ defaultproperties
|
|||||||
OnClickSound=CS_None
|
OnClickSound=CS_None
|
||||||
OnKeyEvent=btn4B.InternalOnKeyEvent
|
OnKeyEvent=btn4B.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
skillButtonB(3)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn4B'
|
skillButtonB(3)=btn4B
|
||||||
|
|
||||||
Begin Object Class=NiceGUIPerkButton Name=btn5B
|
Begin Object Class=NiceGUIPerkButton Name=btn5B
|
||||||
WinTop=0.716500
|
WinTop=0.716500
|
||||||
@ -168,5 +226,5 @@ defaultproperties
|
|||||||
OnClickSound=CS_None
|
OnClickSound=CS_None
|
||||||
OnKeyEvent=btn5B.InternalOnKeyEvent
|
OnKeyEvent=btn5B.InternalOnKeyEvent
|
||||||
End Object
|
End Object
|
||||||
skillButtonB(4)=NiceGUIPerkButton'NicePack.NicePanelSkills.btn5B'
|
skillButtonB(4)=btn5B
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
// made to fix KFStoryGameInfo loading for KFO maps
|
// made to fix KFStoryGameInfo loading for KFO maps
|
||||||
class NiceGameType extends ScrnGameType;
|
class NiceGameType extends ScrnGameType;
|
||||||
|
|
||||||
var NicePack NicePackMutator;
|
var NicePack NicePackMutator;
|
||||||
var bool lessDramatic;
|
var bool lessDramatic;
|
||||||
var float LesserZedTimeSlomoScale;
|
var float LesserZedTimeSlomoScale;
|
||||||
|
|
||||||
function RegisterMutator(NicePack activePack){
|
function RegisterMutator(NicePack activePack){
|
||||||
NicePackMutator = activePack;
|
NicePackMutator = activePack;
|
||||||
}
|
}
|
||||||
@ -77,7 +79,7 @@ function ScoreKill(Controller Killer, Controller Other)
|
|||||||
local Controller C;
|
local Controller C;
|
||||||
|
|
||||||
OtherPRI = Other.PlayerReplicationInfo;
|
OtherPRI = Other.PlayerReplicationInfo;
|
||||||
if ( OtherPRI != None )
|
if ( OtherPRI != none )
|
||||||
{
|
{
|
||||||
OtherPRI.NumLives++;
|
OtherPRI.NumLives++;
|
||||||
OtherPRI.Score -= (OtherPRI.Score * (GameDifficulty * 0.05)); // you Lose 35% of your current cash on Hell on Earth, 15% on normal.
|
OtherPRI.Score -= (OtherPRI.Score * (GameDifficulty * 0.05)); // you Lose 35% of your current cash on Hell on Earth, 15% on normal.
|
||||||
@ -90,23 +92,23 @@ function ScoreKill(Controller Killer, Controller Other)
|
|||||||
|
|
||||||
OtherPRI.Team.NetUpdateTime = Level.TimeSeconds - 1;
|
OtherPRI.Team.NetUpdateTime = Level.TimeSeconds - 1;
|
||||||
OtherPRI.bOutOfLives = true;
|
OtherPRI.bOutOfLives = true;
|
||||||
if( Killer!=None && Killer.PlayerReplicationInfo!=None && Killer.bIsPlayer )
|
if( Killer!=none && Killer.PlayerReplicationInfo!=none && Killer.bIsPlayer )
|
||||||
BroadcastLocalizedMessage(class'KFInvasionMessage',1,OtherPRI,Killer.PlayerReplicationInfo);
|
BroadcastLocalizedMessage(class'KFInvasionMessage',1,OtherPRI,Killer.PlayerReplicationInfo);
|
||||||
else if( Killer==None || Monster(Killer.Pawn)==None )
|
else if( Killer==none || Monster(Killer.Pawn)==none )
|
||||||
BroadcastLocalizedMessage(class'KFInvasionMessage',1,OtherPRI);
|
BroadcastLocalizedMessage(class'KFInvasionMessage',1,OtherPRI);
|
||||||
else BroadcastLocalizedMessage(class'KFInvasionMessage',1,OtherPRI,,Killer.Pawn.Class);
|
else BroadcastLocalizedMessage(class'KFInvasionMessage',1,OtherPRI,,Killer.Pawn.Class);
|
||||||
CheckScore(None);
|
CheckScore(none);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( GameRulesModifiers != None )
|
if ( GameRulesModifiers != none )
|
||||||
GameRulesModifiers.ScoreKill(Killer, Other);
|
GameRulesModifiers.ScoreKill(Killer, Other);
|
||||||
|
|
||||||
if ( MonsterController(Killer) != None )
|
if ( MonsterController(Killer) != none )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if( (killer == Other) || (killer == None) )
|
if( (killer == Other) || (killer == none) )
|
||||||
{
|
{
|
||||||
if ( Other.PlayerReplicationInfo != None )
|
if ( Other.PlayerReplicationInfo != none )
|
||||||
{
|
{
|
||||||
Other.PlayerReplicationInfo.Score -= 1;
|
Other.PlayerReplicationInfo.Score -= 1;
|
||||||
Other.PlayerReplicationInfo.NetUpdateTime = Level.TimeSeconds - 1;
|
Other.PlayerReplicationInfo.NetUpdateTime = Level.TimeSeconds - 1;
|
||||||
@ -114,7 +116,7 @@ function ScoreKill(Controller Killer, Controller Other)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( Killer==None || !Killer.bIsPlayer || (Killer==Other) )
|
if ( Killer==none || !Killer.bIsPlayer || (Killer==Other) )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if ( Other.bIsPlayer )
|
if ( Other.bIsPlayer )
|
||||||
@ -126,7 +128,7 @@ function ScoreKill(Controller Killer, Controller Other)
|
|||||||
ScoreEvent(Killer.PlayerReplicationInfo, -5, "team_frag");
|
ScoreEvent(Killer.PlayerReplicationInfo, -5, "team_frag");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if ( LastKilledMonsterClass == None )
|
if ( LastKilledMonsterClass == none )
|
||||||
KillScore = 1;
|
KillScore = 1;
|
||||||
else if(Killer.PlayerReplicationInfo !=none)
|
else if(Killer.PlayerReplicationInfo !=none)
|
||||||
{
|
{
|
||||||
@ -179,9 +181,9 @@ function ScoreKill(Controller Killer, Controller Other)
|
|||||||
if( Class'HUDKillingFloor'.Default.MessageHealthLimit<=Other.Pawn.Default.Health ||
|
if( Class'HUDKillingFloor'.Default.MessageHealthLimit<=Other.Pawn.Default.Health ||
|
||||||
Class'HUDKillingFloor'.Default.MessageMassLimit<=Other.Pawn.Default.Mass )
|
Class'HUDKillingFloor'.Default.MessageMassLimit<=Other.Pawn.Default.Mass )
|
||||||
{
|
{
|
||||||
for( C=Level.ControllerList; C!=None; C=C.nextController )
|
for( C=Level.ControllerList; C!=none; C=C.nextController )
|
||||||
{
|
{
|
||||||
if( C.bIsPlayer && xPlayer(C)!=None )
|
if( C.bIsPlayer && xPlayer(C)!=none )
|
||||||
{
|
{
|
||||||
xPlayer(C).ReceiveLocalizedMessage(Class'KillsMessage',1,Killer.PlayerReplicationInfo,,Other.Pawn.Class);
|
xPlayer(C).ReceiveLocalizedMessage(Class'KillsMessage',1,Killer.PlayerReplicationInfo,,Other.Pawn.Class);
|
||||||
}
|
}
|
||||||
@ -189,7 +191,7 @@ function ScoreKill(Controller Killer, Controller Other)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( xPlayer(Killer)!=None )
|
if( xPlayer(Killer)!=none )
|
||||||
{
|
{
|
||||||
xPlayer(Killer).ReceiveLocalizedMessage(Class'KillsMessage',,,,Other.Pawn.Class);
|
xPlayer(Killer).ReceiveLocalizedMessage(Class'KillsMessage',,,,Other.Pawn.Class);
|
||||||
}
|
}
|
||||||
@ -261,8 +263,8 @@ function Killed(Controller Killer, Controller Killed, Pawn KilledPawn, class<Dam
|
|||||||
AvoidArea = Spawn(class'NiceAvoidMarkerCarnage', killer.pawn);
|
AvoidArea = Spawn(class'NiceAvoidMarkerCarnage', killer.pawn);
|
||||||
AvoidArea.SetLocation(KilledPawn.location);
|
AvoidArea.SetLocation(KilledPawn.location);
|
||||||
AvoidArea.healthLevel = killedPawn.default.health;
|
AvoidArea.healthLevel = killedPawn.default.health;
|
||||||
AvoidArea.SetCollisionSize( class'NicePack.NiceSkillEnforcerBrutalCarnageA'.default.avoidRadius,
|
AvoidArea.SetCollisionSize( class'NiceSkillEnforcerBrutalCarnageA'.default.avoidRadius,
|
||||||
class'NicePack.NiceSkillEnforcerBrutalCarnageA'.default.avoidRadius);
|
class'NiceSkillEnforcerBrutalCarnageA'.default.avoidRadius);
|
||||||
AvoidArea.StartleBots();
|
AvoidArea.StartleBots();
|
||||||
}
|
}
|
||||||
// Rest
|
// Rest
|
||||||
@ -303,10 +305,31 @@ function int ReduceDamage(int Damage, pawn injured, pawn instigatedBy, vector Hi
|
|||||||
}
|
}
|
||||||
return Super.ReduceDamage(Damage, injured, InstigatedBy, HitLocation, Momentum, DamageType);
|
return Super.ReduceDamage(Damage, injured, InstigatedBy, HitLocation, Momentum, DamageType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HINTS: override to make fancy loading creen hints
|
||||||
|
static function string GetLoadingHint(PlayerController pc, string MapName, Color ColorHint)
|
||||||
|
{
|
||||||
|
// call super code just to draw the map icon and description
|
||||||
|
super.GetLoadingHint(pc, MapName, ColorHint);
|
||||||
|
// return colored and custom HINTS
|
||||||
|
return class'Utility'.static.GetNiceHint();
|
||||||
|
}
|
||||||
|
|
||||||
|
// HINTS: override to make fancy ingame menu hints
|
||||||
|
static function array<string> GetAllLoadHints(optional bool bThisClassOnly)
|
||||||
|
{
|
||||||
|
return class'Utility'.static.GetNiceHintArray();
|
||||||
|
}
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
GameName="Nice Floor"
|
GameName="Nice Floor"
|
||||||
Description="Nice Edition of ScrN Killing Floor game mode (ScrnGameType)."
|
Description="Nice Edition of ScrN Killing Floor game mode (ScrnGameType)."
|
||||||
|
// custom player controller
|
||||||
|
PlayerControllerClass=class'NicePlayerController'
|
||||||
|
PlayerControllerClassName="NicePack.NicePlayerController"
|
||||||
|
// skills menu
|
||||||
|
LoginMenuClass="NicePack.NiceInvasionLoginMenu"
|
||||||
ZedTimeSlomoScale=0.4
|
ZedTimeSlomoScale=0.4
|
||||||
LesserZedTimeSlomoScale=0.6
|
LesserZedTimeSlomoScale=0.6
|
||||||
}
|
}
|
@ -63,14 +63,17 @@ simulated function bool IsZedExtentionsRecorded(NiceMonster niceZed){
|
|||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
function ReplaceRequiredEquipment(){
|
|
||||||
Super.ReplaceRequiredEquipment();
|
// TODO remove this Scrn func
|
||||||
RequiredEquipment[0] = String(class'NicePack.NiceMachete');
|
function ReplaceRequiredEquipment()
|
||||||
RequiredEquipment[1] = String(class'NicePack.Nice9mmPlus');
|
{
|
||||||
RequiredEquipment[2] = String(class'ScrnBalanceSrv.ScrnFrag');
|
RequiredEquipment[0] = string(class'NiceMachete');
|
||||||
RequiredEquipment[3] = String(class'ScrnBalanceSrv.ScrnSyringe');
|
RequiredEquipment[1] = string(class'Nice9mmPlus');
|
||||||
RequiredEquipment[4] = String(class'KFMod.Welder');
|
RequiredEquipment[2] = string(class'ScrnFrag');
|
||||||
|
RequiredEquipment[3] = string(class'ScrnSyringe');
|
||||||
|
RequiredEquipment[4] = string(class'KFMod.Welder');
|
||||||
}
|
}
|
||||||
|
|
||||||
simulated function int CalculateCalibrationScore(){
|
simulated function int CalculateCalibrationScore(){
|
||||||
local float accuracy;
|
local float accuracy;
|
||||||
accuracy = (float(calibrationHits)) / (float(calibrationTotalShots));
|
accuracy = (float(calibrationHits)) / (float(calibrationTotalShots));
|
||||||
@ -218,16 +221,20 @@ function ServerCooldownAbility(string abilityID){
|
|||||||
if(index >= 0)
|
if(index >= 0)
|
||||||
nicePlayer.abilityManager.SetAbilityState(index, ASTATE_COOLDOWN);
|
nicePlayer.abilityManager.SetAbilityState(index, ASTATE_COOLDOWN);
|
||||||
}
|
}
|
||||||
simulated function Tick(float deltaTime){
|
|
||||||
|
simulated function Tick(float deltaTime)
|
||||||
|
{
|
||||||
local int index;
|
local int index;
|
||||||
local Inventory Item;
|
local Inventory Item;
|
||||||
local NiceWeapon niceWeap;
|
local NiceWeapon niceWeap;
|
||||||
local WeaponTimePair newPair;
|
local WeaponTimePair newPair;
|
||||||
local array<WeaponTimePair> newWTPList;
|
local array<WeaponTimePair> newWTPList;
|
||||||
local NicePack niceMutator;
|
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
|
|
||||||
nicePlayer = NicePlayerController(Controller);
|
nicePlayer = NicePlayerController(Controller);
|
||||||
if(Role == Role_AUTHORITY){
|
|
||||||
|
if (Role == Role_AUTHORITY)
|
||||||
|
{
|
||||||
// Brutal carnage
|
// Brutal carnage
|
||||||
if (brutalCranageTimer > 0)
|
if (brutalCranageTimer > 0)
|
||||||
{
|
{
|
||||||
@ -326,33 +333,10 @@ simulated function Tick(float deltaTime){
|
|||||||
forcedZedTimeCountDown -= deltaTime;
|
forcedZedTimeCountDown -= deltaTime;
|
||||||
else
|
else
|
||||||
forcedZedTimeCountDown = 0.0;
|
forcedZedTimeCountDown = 0.0;
|
||||||
niceMutator = class'NicePack'.static.Myself(Level);
|
|
||||||
if(niceMutator != none)
|
|
||||||
niceMutator.ClearWeapProgress();
|
|
||||||
if(!class'NiceVeterancyTypes'.static.hasSkill(NicePlayerController(Controller), class'NiceSkillEnforcerMultitasker'))
|
if(!class'NiceVeterancyTypes'.static.hasSkill(NicePlayerController(Controller), class'NiceSkillEnforcerMultitasker'))
|
||||||
return;
|
return;
|
||||||
if ( Role < ROLE_Authority && nicePlayer != none
|
|
||||||
&& nicePlayer.bFlagDisplayWeaponProgress)
|
|
||||||
{
|
|
||||||
// Update weapon progress for this skill
|
|
||||||
if(niceMutator == none) {
|
|
||||||
Log("Failed to update holstered progress, because no mut! :(");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
for(Item = Inventory; Item != none; Item = Item.Inventory){
|
|
||||||
niceWeap = NiceWeapon(Item);
|
|
||||||
if(niceWeap != none && niceWeap != weapon && !niceWeap.IsMagazineFull()){
|
|
||||||
niceMutator.AddWeapProgress(niceWeap.class, niceWeap.holsteredCompletition,
|
|
||||||
true, niceWeap.GetMagazineAmmo());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
else if (Role < ROLE_Authority)
|
|
||||||
{
|
|
||||||
Log( "Failed to update holstered progress, checked variables:"
|
|
||||||
@ nicePlayer @ nicePlayer.bFlagDisplayWeaponProgress);
|
|
||||||
}
|
|
||||||
// Auto-reload holstered weapons
|
// Auto-reload holstered weapons
|
||||||
holsteredReloadCountDown -= deltaTime;
|
holsteredReloadCountDown -= deltaTime;
|
||||||
if(holsteredReloadCountDown <= 0.0){
|
if(holsteredReloadCountDown <= 0.0){
|
||||||
@ -487,19 +471,21 @@ simulated function ClientChangeWeapon(NiceWeapon newWeap){
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Validate that client is not hacking.
|
// Validate that client is not hacking.
|
||||||
function bool CanBuyNow(){
|
function bool CanBuyNow()
|
||||||
local NicePlayerController niceController;
|
{
|
||||||
niceController = NicePlayerController(Controller);
|
local NiceGameType NiceGT;
|
||||||
if(niceController == none)
|
|
||||||
|
NiceGT = NiceGameType(Level.Game);
|
||||||
|
if (NicePlayerController(Controller) == none)
|
||||||
return false;
|
return false;
|
||||||
if(NiceGameType(Level.Game) != none && NiceGameType(Level.Game).NicePackMutator != none
|
if (NiceGT != none && NiceGT.NicePackMutator != none
|
||||||
&& NiceGameType(Level.Game).NicePackMutator.bIsPreGame)
|
&& NiceGT.NicePackMutator.bIsPreGame)
|
||||||
return true;
|
return true;
|
||||||
if(NiceTSCGame(Level.Game) != none && NiceTSCGame(Level.Game).NicePackMutator != none
|
|
||||||
&& NiceTSCGame(Level.Game).NicePackMutator.bIsPreGame)
|
// skip Scrn code!
|
||||||
return true;
|
return super(KFPawn).CanBuyNow();
|
||||||
return Super.CanBuyNow();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Overridden to not modify dual pistols' weapon group
|
// Overridden to not modify dual pistols' weapon group
|
||||||
function bool AddInventory(inventory NewItem){
|
function bool AddInventory(inventory NewItem){
|
||||||
local KFWeapon weap;
|
local KFWeapon weap;
|
||||||
@ -510,7 +496,7 @@ function bool AddInventory(inventory NewItem){
|
|||||||
if((DualDeagle(weap) != none || Dual44Magnum(weap) != none || DualMK23Pistol(weap) != none)
|
if((DualDeagle(weap) != none || Dual44Magnum(weap) != none || DualMK23Pistol(weap) != none)
|
||||||
&& weap.InventoryGroup != 4 ) {
|
&& weap.InventoryGroup != 4 ) {
|
||||||
if(KFPRI != none &&
|
if(KFPRI != none &&
|
||||||
ClassIsChildOf(KFPRI.ClientVeteranSkill, class'ScrnBalanceSrv.ScrnVetGunslinger'))
|
ClassIsChildOf(KFPRI.ClientVeteranSkill, class'ScrnVetGunslinger'))
|
||||||
weap.InventoryGroup = 3;
|
weap.InventoryGroup = 3;
|
||||||
else
|
else
|
||||||
weap.InventoryGroup = 2;
|
weap.InventoryGroup = 2;
|
||||||
@ -555,16 +541,21 @@ simulated function CookGrenade(){
|
|||||||
niceWeap.ClientGrenadeState = GN_TempDown;
|
niceWeap.ClientGrenadeState = GN_TempDown;
|
||||||
niceWeap.PutDown();
|
niceWeap.PutDown();
|
||||||
}
|
}
|
||||||
simulated function ThrowGrenade(){
|
simulated function ThrowGrenade()
|
||||||
|
{
|
||||||
local NiceWeapon niceWeap;
|
local NiceWeapon niceWeap;
|
||||||
niceWeap = NiceWeapon(Weapon);
|
niceWeap = NiceWeapon(Weapon);
|
||||||
if(niceWeap != none)
|
if(niceWeap != none)
|
||||||
niceWeap.ClientForceInterruptReload(CANCEL_NADE);
|
niceWeap.ClientForceInterruptReload(CANCEL_NADE);
|
||||||
if(bThrowingNade || SecondaryItem != none)
|
if(bThrowingNade || SecondaryItem != none)
|
||||||
return;
|
return;
|
||||||
if( niceWeap == none
|
|
||||||
|| (niceWeap.bIsReloading && !niceWeap.InterruptReload()))
|
if(niceWeap == none || (niceWeap.bIsReloading && !niceWeap.InterruptReload()))
|
||||||
|
{
|
||||||
|
super.ThrowGrenade();
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(playerGrenade == none)
|
if(playerGrenade == none)
|
||||||
playerGrenade = FindPlayerGrenade();
|
playerGrenade = FindPlayerGrenade();
|
||||||
if(playerGrenade != none && playerGrenade.HasAmmo()){
|
if(playerGrenade != none && playerGrenade.HasAmmo()){
|
||||||
@ -863,6 +854,40 @@ simulated function AltFire(optional float F){
|
|||||||
super.AltFire(F);
|
super.AltFire(F);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// added copy-cated function to disable some log
|
||||||
|
simulated function Setup(xUtil.PlayerRecord rec, optional bool bLoadNow)
|
||||||
|
{
|
||||||
|
local ScrnPlayerController PC;
|
||||||
|
local string CN;
|
||||||
|
|
||||||
|
PC = ScrnPlayerController(Controller);
|
||||||
|
if ( PC != none && IsLocallyControlled() )
|
||||||
|
{
|
||||||
|
// check this only on player side, because it stores
|
||||||
|
// RedCharacter & BlueCharacter in the config
|
||||||
|
CN = rec.DefaultName;
|
||||||
|
if ( !PC.ValidateCharacter(CN) ) {
|
||||||
|
// character invalid, change it valid one, which was set up in ValidateCharacter()
|
||||||
|
rec = class'xUtil'.static.FindPlayerRecord(CN);
|
||||||
|
PC.ChangeCharacter(CN);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
super(KFPawn).Setup(rec, bLoadNow);
|
||||||
|
|
||||||
|
if( class<SoldierSpeciesRobot>(Species) != none )
|
||||||
|
{
|
||||||
|
BreathingSound = class'KFDARSoundGroup'.default.BreathingSound;
|
||||||
|
}
|
||||||
|
else if( class<AshHardingSpecies>(Species) != none )
|
||||||
|
{
|
||||||
|
BreathingSound = class'KFFemaleSoundGroup'.default.BreathingSound;
|
||||||
|
}
|
||||||
|
// disable the log!!!
|
||||||
|
// log(BreathingSound);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
defaultInvincibilityDuration=2.000000
|
defaultInvincibilityDuration=2.000000
|
||||||
|
@ -39,7 +39,6 @@ var config int mediumZedMinHealth;
|
|||||||
|
|
||||||
var int maxPlayersInGame;
|
var int maxPlayersInGame;
|
||||||
|
|
||||||
var bool bSpawnRateEnforced; // Set to true after spawn rate was altered
|
|
||||||
// 'Adrenaline junkie' zed-time extensions
|
// 'Adrenaline junkie' zed-time extensions
|
||||||
var int junkieDoneGoals; // How many times we collected enough head-shots to trigger zed-time extension
|
var int junkieDoneGoals; // How many times we collected enough head-shots to trigger zed-time extension
|
||||||
var int junkieNextGoal; // How many head-shots we need for next zed-time extension
|
var int junkieNextGoal; // How many head-shots we need for next zed-time extension
|
||||||
@ -54,11 +53,9 @@ var int deadBodyCounter;
|
|||||||
var ScrnBalance ScrnMut;
|
var ScrnBalance ScrnMut;
|
||||||
var ScrnGameType ScrnGT;
|
var ScrnGameType ScrnGT;
|
||||||
var NiceGameType NiceGT;
|
var NiceGameType NiceGT;
|
||||||
var NiceTSCGame NiceTSC;
|
|
||||||
var NicePack Mut;
|
var NicePack Mut;
|
||||||
var NiceRules GameRules;
|
var NiceRules GameRules;
|
||||||
var NiceStorageServer serverStorage;
|
var NiceStorageServer serverStorage;
|
||||||
var bool bClientLinkEstablished;
|
|
||||||
var bool interactionAdded;
|
var bool interactionAdded;
|
||||||
var bool bIsPreGame;
|
var bool bIsPreGame;
|
||||||
var bool bIsTraderTime;
|
var bool bIsTraderTime;
|
||||||
@ -98,15 +95,7 @@ struct CounterDisplay{
|
|||||||
var class<NiceSkill> ownerSkill;
|
var class<NiceSkill> ownerSkill;
|
||||||
};
|
};
|
||||||
var array<CounterDisplay> niceCounterSet;
|
var array<CounterDisplay> niceCounterSet;
|
||||||
struct WeaponProgressDisplay{
|
|
||||||
var class<NiceWeapon> weapClass;
|
|
||||||
var float progress;
|
|
||||||
var bool bShowCounter;
|
|
||||||
var int counter;
|
|
||||||
};
|
|
||||||
var array<WeaponProgressDisplay> niceWeapProgressSet;
|
|
||||||
// Map Description array
|
|
||||||
var const array<localized string> NiceUniversalDescriptions[4];
|
|
||||||
// Replication of config between player and server
|
// Replication of config between player and server
|
||||||
var int SrvFlags;
|
var int SrvFlags;
|
||||||
var array<NicePlayerController> playersList;
|
var array<NicePlayerController> playersList;
|
||||||
@ -165,189 +154,76 @@ function PreBeginPlay()
|
|||||||
AddToPackageMap("NicePackSnd.uax");
|
AddToPackageMap("NicePackSnd.uax");
|
||||||
AddToPackageMap("NicePackT.utx");
|
AddToPackageMap("NicePackT.utx");
|
||||||
}
|
}
|
||||||
simulated function PostBeginPlay(){
|
|
||||||
local int i;
|
simulated function PostBeginPlay()
|
||||||
local ZedRecord record;
|
{
|
||||||
local ScrnVotingHandlerMut VH;
|
local ScrnVotingHandlerMut VH;
|
||||||
local MeanVoting VO;
|
local MeanVoting VO;
|
||||||
local NiceFFVoting FFVO;
|
local NiceFFVoting FFVO;
|
||||||
|
|
||||||
super.PostBeginPlay();
|
super.PostBeginPlay();
|
||||||
|
|
||||||
class'ScrnLightVestPickup'.default.cost = 50;
|
class'ScrnLightVestPickup'.default.cost = 50;
|
||||||
class'ScrnHorzineVestPickup'.default.weight = 2;
|
class'ScrnHorzineVestPickup'.default.weight = 2;
|
||||||
class'ScrnHorzineVestPickup'.default.cost = 750;
|
class'ScrnHorzineVestPickup'.default.cost = 750;
|
||||||
class'NicePack'.default.Mut = self;
|
class'NicePack'.default.Mut = self;
|
||||||
// Gun skins
|
|
||||||
class'NicePack.NiceMaulerPickup'.default.VariantClasses[class'NicePack.NiceMaulerPickup'.default.VariantClasses.length] = class'ScrnBalanceSrv.ScrnSPSniperPickup';
|
|
||||||
class'NicePack.NiceDeaglePickup'.default.VariantClasses[class'NicePack.NiceDeaglePickup'.default.VariantClasses.length] = class'NicePack.SkinExecutionerPickup';
|
|
||||||
class'NicePack.NiceDualDeaglePickup'.default.VariantClasses[class'NicePack.NiceDualDeaglePickup'.default.VariantClasses.length] = class'NicePack.SkinDualExecutionerPickup';
|
|
||||||
class'NicePack.NiceMagnumPickup'.default.VariantClasses[class'NicePack.NiceMagnumPickup'.default.VariantClasses.length] = class'NicePack.SkinCowboyMagnumPickup';
|
|
||||||
class'NicePack.NiceDualMagnumPickup'.default.VariantClasses[class'NicePack.NiceDualMagnumPickup'.default.VariantClasses.length] = class'NicePack.SkinDualCowboyMagnumPickup';
|
|
||||||
class'NicePack.NiceWinchesterPickup'.default.VariantClasses[class'NicePack.NiceWinchesterPickup'.default.VariantClasses.length] = class'NicePack.SkinRetroLARPickup';
|
|
||||||
class'NicePack.NiceM14EBRPickup'.default.VariantClasses[class'NicePack.NiceM14EBRPickup'.default.VariantClasses.length] = class'NicePack.SkinM14EBR2ProPickup';
|
|
||||||
class'ScrnBalanceSrv.ScrnKrissMPickup'.default.VariantClasses[class'ScrnBalanceSrv.ScrnKrissMPickup'.default.VariantClasses.length] = class'NicePack.SkinGoldenKrissPickup';
|
|
||||||
class'NicePack.NiceSCARMK17Pickup'.default.VariantClasses[class'NicePack.NiceSCARMK17Pickup'.default.VariantClasses.length] = class'NicePack.SkinCamoSCARMK17Pickup';
|
|
||||||
// Abilities
|
// Abilities
|
||||||
class'NiceAbilityManager'.default.events.static.AddAdapter(class'NiceSharpshooterAbilitiesAdapter', level);
|
class'NiceAbilityManager'.default.events.static.AddAdapter(class'NiceSharpshooterAbilitiesAdapter', level);
|
||||||
class'NiceAbilityManager'.default.events.static.AddAdapter(class'NiceEnforcerAbilitiesAdapter', level);
|
class'NiceAbilityManager'.default.events.static.AddAdapter(class'NiceEnforcerAbilitiesAdapter', level);
|
||||||
|
|
||||||
SetTimer(0.25, true);
|
SetTimer(0.25, true);
|
||||||
if(Role < ROLE_Authority)
|
if (Role < ROLE_Authority)
|
||||||
return;
|
return;
|
||||||
// Create sync node
|
// Create sync node
|
||||||
serverStorage = new class'NicePack.NiceStorageServer';
|
serverStorage = new class'NiceStorageServer';
|
||||||
default.serverStorage = serverStorage;
|
default.serverStorage = serverStorage;
|
||||||
serverStorage.events.static.AddAdapter(class'NiceRemoteDataAdapter', Level);
|
serverStorage.events.static.AddAdapter(class'NiceRemoteDataAdapter', Level);
|
||||||
// Find game type and ScrN mutator
|
// Find game type and ScrN mutator
|
||||||
ScrnGT = ScrnGameType(Level.Game);
|
ScrnGT = ScrnGameType(Level.Game);
|
||||||
NiceGT = NiceGameType(Level.Game);
|
NiceGT = NiceGameType(Level.Game);
|
||||||
NiceTSC = NiceTSCGame(Level.Game);
|
if (NiceGT == none)
|
||||||
if(ScrnGT == none){
|
{
|
||||||
Log("ERROR: Wrong GameType (requires at least ScrnGameType)", Class.Outer.Name);
|
Log("ERROR: Wrong GameType (requires NiceGameType)", class.Outer.Name);
|
||||||
Destroy();
|
Destroy();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Skills menu
|
// FIXME poosh forces this variable in his mutator...
|
||||||
ScrnGT.LoginMenuClass = string(Class'NicePack.NiceInvasionLoginMenu');
|
NiceGT.LoginMenuClass = string(class'NiceInvasionLoginMenu');
|
||||||
if(NiceGT != none)
|
NiceGT.RegisterMutator(self);
|
||||||
NiceGT.RegisterMutator(Self);
|
ScrnMut = NiceGT.ScrnBalanceMut;
|
||||||
if(NiceTSC != none)
|
|
||||||
NiceTSC.RegisterMutator(Self);
|
|
||||||
ScrnMut = ScrnGT.ScrnBalanceMut;
|
|
||||||
if(bReplacePickups)
|
if(bReplacePickups)
|
||||||
ScrnMut.bReplacePickups = false;
|
ScrnMut.bReplacePickups = false;
|
||||||
// Replication of some variables
|
// Replication of some variables
|
||||||
SetReplicationData();
|
SetReplicationData();
|
||||||
// New player controller class
|
|
||||||
if(!ClassIsChildOf(ScrnGT.PlayerControllerClass, class'NicePack.NicePlayerController')){
|
|
||||||
ScrnGT.PlayerControllerClass = class'NicePack.NicePlayerController';
|
|
||||||
ScrnGT.PlayerControllerClassName = string(Class'NicePack.NicePlayerController');
|
|
||||||
}
|
|
||||||
// Game rules
|
// Game rules
|
||||||
GameRules = Spawn(Class'NicePack.NiceRules', self);
|
GameRules = Spawn(class'NiceRules', self);
|
||||||
// -- Lower starting HL
|
// -- Lower starting HL
|
||||||
ScrnMut.GameRules.HardcoreLevel -= 7;
|
ScrnMut.GameRules.HardcoreLevel -= 7;
|
||||||
ScrnMut.GameRules.HardcoreLevelFloat -= 7;
|
ScrnMut.GameRules.HardcoreLevelFloat -= 7;
|
||||||
|
|
||||||
// -- Fill-in zed info
|
// -- Fill-in zed info
|
||||||
i = 0;
|
|
||||||
// - Clot
|
// - Clot
|
||||||
record.ZedName = "Clot";
|
ZedDatabase[0].bNeedsReplacement = bReplaceClot;
|
||||||
record.ZedType = class'NicePack.NiceZombieClot';
|
|
||||||
record.MeanZedType = class'NicePack.MeanZombieClot';
|
|
||||||
record.HL = 0.0;
|
|
||||||
record.MeanHLBonus = 0.5;
|
|
||||||
record.bNeedsReplacement = bReplaceClot;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Crawler
|
// - Crawler
|
||||||
record.ZedName = "Crawler";
|
ZedDatabase[1].bNeedsReplacement = bReplaceCrawler;
|
||||||
record.ZedType = class'NicePack.NiceZombieCrawler';
|
|
||||||
record.MeanZedType = class'NicePack.MeanZombieCrawler';
|
|
||||||
record.HL = 0.5;
|
|
||||||
record.MeanHLBonus = 1.5;
|
|
||||||
record.bNeedsReplacement = bReplaceCrawler;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Stalker
|
// - Stalker
|
||||||
record.ZedName = "Stalker";
|
ZedDatabase[2].bNeedsReplacement = bReplaceStalker;
|
||||||
record.ZedType = class'NicePack.NiceZombieStalker';
|
|
||||||
record.MeanZedType = class'NicePack.MeanZombieStalker';
|
|
||||||
record.HL = 0.5;
|
|
||||||
record.MeanHLBonus = 0.5;
|
|
||||||
record.bNeedsReplacement = bReplaceStalker;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Gorefast
|
// - Gorefast
|
||||||
record.ZedName = "Gorefast";
|
ZedDatabase[3].bNeedsReplacement = bReplaceGorefast;
|
||||||
record.ZedType = class'NicePack.NiceZombieGorefast';
|
|
||||||
record.MeanZedType = class'NicePack.MeanZombieGorefast';
|
|
||||||
record.HL = 0.0;
|
|
||||||
record.MeanHLBonus = 0.5;
|
|
||||||
record.bNeedsReplacement = bReplaceGorefast;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Bloat
|
// - Bloat
|
||||||
record.ZedName = "Bloat";
|
ZedDatabase[4].bNeedsReplacement = bReplaceBloat;
|
||||||
record.ZedType = class'NicePack.NiceZombieBloat';
|
|
||||||
record.MeanZedType = class'NicePack.MeanZombieBloat';
|
|
||||||
record.HL = 0.0;
|
|
||||||
record.MeanHLBonus = 0.5;
|
|
||||||
record.bNeedsReplacement = bReplaceBloat;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Siren
|
// - Siren
|
||||||
record.ZedName = "Siren";
|
ZedDatabase[5].bNeedsReplacement = bReplaceSiren;
|
||||||
record.ZedType = class'NicePack.NiceZombieSiren';
|
|
||||||
record.MeanZedType = class'NicePack.MeanZombieSiren';
|
|
||||||
record.HL = 1.0;
|
|
||||||
record.MeanHLBonus = 1.0;
|
|
||||||
record.bNeedsReplacement = bReplaceSiren;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Husk
|
// - Husk
|
||||||
record.ZedName = "Husk";
|
ZedDatabase[6].bNeedsReplacement = bReplaceHusk;
|
||||||
record.ZedType = class'NicePack.NiceZombieHusk';
|
|
||||||
record.MeanZedType = class'NicePack.MeanZombieHusk';
|
|
||||||
record.HL = 1.0;
|
|
||||||
record.MeanHLBonus = 1.5;
|
|
||||||
record.bNeedsReplacement = bReplaceHusk;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Scrake
|
// - Scrake
|
||||||
record.ZedName = "Scrake";
|
ZedDatabase[7].bNeedsReplacement = bReplaceScrake;
|
||||||
record.ZedType = class'NicePack.NiceZombieScrake';
|
|
||||||
record.MeanZedType = class'NicePack.MeanZombieScrake';
|
|
||||||
record.HL = 1.5;
|
|
||||||
record.MeanHLBonus = 1.5;
|
|
||||||
record.bNeedsReplacement = bReplaceScrake;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Fleshpound
|
// - Fleshpound
|
||||||
lastStandardZed = i;
|
ZedDatabase[8].bNeedsReplacement = bReplaceFleshpound;
|
||||||
record.ZedName = "Fleshpound";
|
// FIXME!!!
|
||||||
record.ZedType = class'NicePack.NiceZombieFleshPound';
|
lastStandardZed = 8;
|
||||||
record.MeanZedType = class'NicePack.MeanZombieFleshPound';
|
|
||||||
record.HL = 2.5;
|
|
||||||
record.MeanHLBonus = 1.5;
|
|
||||||
record.bNeedsReplacement = bReplaceFleshpound;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Shiver
|
|
||||||
record.ZedName = "Shiver";
|
|
||||||
record.ZedType = class'NicePack.NiceZombieShiver';
|
|
||||||
record.MeanZedType = none;
|
|
||||||
record.HL = 1;
|
|
||||||
record.bNeedsReplacement = false;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Jason
|
|
||||||
record.ZedName = "Jason";
|
|
||||||
record.ZedType = class'NicePack.NiceZombieJason';
|
|
||||||
record.MeanZedType = none;
|
|
||||||
record.HL = 1.5;
|
|
||||||
record.bNeedsReplacement = false;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Tesla Husk
|
|
||||||
record.ZedName = "Tesla husk";
|
|
||||||
record.ZedType = class'NicePack.NiceZombieTeslaHusk';
|
|
||||||
record.MeanZedType = none;
|
|
||||||
record.HL = 1.5;
|
|
||||||
record.bNeedsReplacement = false;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Brute
|
|
||||||
record.ZedName = "Brute";
|
|
||||||
record.ZedType = class'NicePack.NiceZombieBrute';
|
|
||||||
record.MeanZedType = none;
|
|
||||||
record.HL = 2;
|
|
||||||
record.bNeedsReplacement = false;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Ghost
|
|
||||||
record.ZedName = "Ghost";
|
|
||||||
record.ZedType = class'NicePack.NiceZombieGhost';
|
|
||||||
record.MeanZedType = none;
|
|
||||||
record.HL = 0.5;
|
|
||||||
record.bNeedsReplacement = false;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// - Sick
|
|
||||||
record.ZedName = "Sick";
|
|
||||||
record.ZedType = class'NicePack.NiceZombieSick';
|
|
||||||
record.MeanZedType = none;
|
|
||||||
record.HL = 1.0;
|
|
||||||
record.bNeedsReplacement = false;
|
|
||||||
ZedDatabase[i++] = record;
|
|
||||||
// Nothing has yet spawned
|
|
||||||
for(i = 0;i < ZedDatabase.length;i ++){
|
|
||||||
ZedDatabase[i].bAlreadySpawned = false;
|
|
||||||
ZedDatabase[i].bMeanAlreadySpawned = false;
|
|
||||||
}
|
|
||||||
// Add voting for mean zeds
|
// Add voting for mean zeds
|
||||||
VH = class'ScrnVotingHandlerMut'.static.GetVotingHandler(Level.Game);
|
VH = class'ScrnVotingHandlerMut'.static.GetVotingHandler(Level.Game);
|
||||||
if(VH == none){
|
if(VH == none){
|
||||||
@ -365,25 +241,30 @@ simulated function PostBeginPlay(){
|
|||||||
else
|
else
|
||||||
log("Unable to spawn voting handler mutator", class.outer.name);
|
log("Unable to spawn voting handler mutator", class.outer.name);
|
||||||
}
|
}
|
||||||
|
|
||||||
simulated function PostNetBeginPlay()
|
simulated function PostNetBeginPlay()
|
||||||
{
|
{
|
||||||
super.PostNetBeginPlay();
|
super.PostNetBeginPlay();
|
||||||
if(Role < ROLE_Authority)
|
|
||||||
|
if (Role < ROLE_Authority)
|
||||||
LoadReplicationData();
|
LoadReplicationData();
|
||||||
}
|
}
|
||||||
function SetReplicationData(){
|
|
||||||
SrvFlags = 0;
|
simulated function LoadReplicationData()
|
||||||
if(bInitialTrader)
|
{
|
||||||
SrvFlags = SrvFlags | 0x00000001;
|
|
||||||
if(bStillDuringInitTrader)
|
|
||||||
SrvFlags = SrvFlags | 0x00000002;
|
|
||||||
}
|
|
||||||
simulated function LoadReplicationData(){
|
|
||||||
if(Role == ROLE_Authority)
|
|
||||||
return;
|
|
||||||
bInitialTrader = (SrvFlags & 0x00000001) > 0;
|
bInitialTrader = (SrvFlags & 0x00000001) > 0;
|
||||||
bStillDuringInitTrader = (SrvFlags & 0x00000002) > 0;
|
bStillDuringInitTrader = (SrvFlags & 0x00000002) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function SetReplicationData()
|
||||||
|
{
|
||||||
|
SrvFlags = 0;
|
||||||
|
if (bInitialTrader)
|
||||||
|
SrvFlags = SrvFlags | 0x00000001;
|
||||||
|
if (bStillDuringInitTrader)
|
||||||
|
SrvFlags = SrvFlags | 0x00000002;
|
||||||
|
}
|
||||||
|
|
||||||
simulated function Timer(){
|
simulated function Timer(){
|
||||||
local KFHumanPawn nextPawn;
|
local KFHumanPawn nextPawn;
|
||||||
local int currentPlayersMax;
|
local int currentPlayersMax;
|
||||||
@ -413,30 +294,69 @@ simulated function Timer(){
|
|||||||
}
|
}
|
||||||
maxPlayersInGame = Max(maxPlayersInGame, currentPlayersMax);
|
maxPlayersInGame = Max(maxPlayersInGame, currentPlayersMax);
|
||||||
}
|
}
|
||||||
simulated function Tick(float Delta){
|
|
||||||
local int i;
|
// initial tick, does some job and shuts down
|
||||||
|
auto state loadInteractionnSpawnRate
|
||||||
|
{
|
||||||
|
// state tick, overrides global
|
||||||
|
simulated function Tick(float Delta)
|
||||||
|
{
|
||||||
local NiceInteraction niceInt;
|
local NiceInteraction niceInt;
|
||||||
local NicePlayerController localPlayer;
|
local NicePlayerController localPlayer;
|
||||||
super.Tick(Delta);
|
|
||||||
if(ScrnGT != none && ScrnGT.WaveCountDown <= 5)
|
if (level.netMode == NM_DedicatedServer)
|
||||||
bIsPreGame = false;
|
{
|
||||||
if(ScrnMut != none && !bSpawnRateEnforced && ScrnMut.bTickExecuted){
|
// set spawn rate!
|
||||||
bSpawnRateEnforced = true;
|
if (ScrnMut != none)
|
||||||
ScrnMut.OriginalWaveSpawnPeriod = FMax(minSpawnRate, FMin(maxSpawnRate, ScrnMut.OriginalWaveSpawnPeriod));
|
ScrnMut.OriginalWaveSpawnPeriod = FMax(minSpawnRate, FMin(maxSpawnRate, ScrnMut.OriginalWaveSpawnPeriod));
|
||||||
}
|
// do not execute below code on dedicated servers!
|
||||||
localPlayer = NicePlayerController(Level.GetLocalPlayerController());
|
GoToState('');
|
||||||
// Check if the local PlayerController is available yet
|
DisableServerGlobalTick();
|
||||||
if(localPlayer == none)
|
|
||||||
return;
|
return;
|
||||||
if( Role < Role_AUTHORITY && !bClientLinkEstablished
|
}
|
||||||
&& localPlayer.storageClient != none && localPlayer.remoteRI != none){
|
|
||||||
bClientLinkEstablished = true;
|
localPlayer = NicePlayerController(Level.GetLocalPlayerController());
|
||||||
|
if (localPlayer == none)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// spawn some magic
|
||||||
|
if (localPlayer.storageClient != none && localPlayer.remoteRI != none)
|
||||||
|
{
|
||||||
localPlayer.storageClient.remoteRI = localPlayer.remoteRI;
|
localPlayer.storageClient.remoteRI = localPlayer.remoteRI;
|
||||||
localPlayer.storageClient.events.static.CallLinkEstablished();
|
localPlayer.storageClient.events.static.CallLinkEstablished();
|
||||||
}
|
}
|
||||||
if(localPlayer.bFlagDisplayCounters){
|
|
||||||
for(i = 0;i < niceCounterSet.Length;i ++){
|
// Actually add the interaction
|
||||||
if(niceCounterSet[i].ownerSkill == none)
|
niceInt = NiceInteraction(localPlayer.Player.InteractionMaster.AddInteraction(string(class'NiceInteraction'), localPlayer.Player));
|
||||||
|
niceInt.RegisterMutator(Self);
|
||||||
|
|
||||||
|
// break this state and go to global
|
||||||
|
GoToState('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// disable tick for servers!
|
||||||
|
final private function DisableServerGlobalTick()
|
||||||
|
{
|
||||||
|
Disable('Tick');
|
||||||
|
}
|
||||||
|
|
||||||
|
// global tick
|
||||||
|
simulated function Tick(float Delta)
|
||||||
|
{
|
||||||
|
local int i;
|
||||||
|
local NicePlayerController localPlayer;
|
||||||
|
|
||||||
|
localPlayer = NicePlayerController(Level.GetLocalPlayerController());
|
||||||
|
// Check if the local PlayerController is available yet
|
||||||
|
if (localPlayer == none)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (localPlayer.bFlagDisplayCounters)
|
||||||
|
{
|
||||||
|
for (i = 0; i < niceCounterSet.Length; i++)
|
||||||
|
{
|
||||||
|
if (niceCounterSet[i].ownerSkill == none)
|
||||||
niceCounterSet[i].value = UpdateCounterValue(niceCounterSet[i].cName);
|
niceCounterSet[i].value = UpdateCounterValue(niceCounterSet[i].cName);
|
||||||
else if(class'NiceVeterancyTypes'.static.hasSkill(localPlayer, niceCounterSet[i].ownerSkill))
|
else if(class'NiceVeterancyTypes'.static.hasSkill(localPlayer, niceCounterSet[i].ownerSkill))
|
||||||
niceCounterSet[i].value = niceCounterSet[i].ownerSkill.static.
|
niceCounterSet[i].value = niceCounterSet[i].ownerSkill.static.
|
||||||
@ -448,21 +368,16 @@ simulated function Tick(float Delta){
|
|||||||
// Reset tick counter for traces
|
// Reset tick counter for traces
|
||||||
localPlayer.tracesThisTick = 0;
|
localPlayer.tracesThisTick = 0;
|
||||||
// Manage resetting of effects' limits
|
// Manage resetting of effects' limits
|
||||||
if(Level.TimeSeconds >= localPlayer.nextEffectsResetTime){
|
if (Level.TimeSeconds >= localPlayer.nextEffectsResetTime)
|
||||||
|
{
|
||||||
localPlayer.nextEffectsResetTime = Level.TimeSeconds + 0.1;
|
localPlayer.nextEffectsResetTime = Level.TimeSeconds + 0.1;
|
||||||
localPlayer.currentEffectTimeWindow ++;
|
localPlayer.currentEffectTimeWindow ++;
|
||||||
if(localPlayer.currentEffectTimeWindow >= 10)
|
if (localPlayer.currentEffectTimeWindow >= 10)
|
||||||
localPlayer.currentEffectTimeWindow = 0;
|
localPlayer.currentEffectTimeWindow = 0;
|
||||||
localPlayer.effectsSpawned[localPlayer.currentEffectTimeWindow] = 0;
|
localPlayer.effectsSpawned[localPlayer.currentEffectTimeWindow] = 0;
|
||||||
}
|
}
|
||||||
// Add interaction
|
|
||||||
if(interactionAdded)
|
|
||||||
return;
|
|
||||||
// Actually add the interaction
|
|
||||||
niceInt = NiceInteraction(localPlayer.Player.InteractionMaster.AddInteraction("NicePack.NiceInteraction", localPlayer.Player));
|
|
||||||
niceInt.RegisterMutator(Self);
|
|
||||||
interactionAdded = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
simulated function bool CheckReplacement(Actor Other, out byte bSuperRelevant){
|
simulated function bool CheckReplacement(Actor Other, out byte bSuperRelevant){
|
||||||
local int i;
|
local int i;
|
||||||
local NiceMonster niceMonster;
|
local NiceMonster niceMonster;
|
||||||
@ -472,15 +387,14 @@ simulated function bool CheckReplacement(Actor Other, out byte bSuperRelevant){
|
|||||||
local NicePlayerController playerContr;
|
local NicePlayerController playerContr;
|
||||||
local NiceRepInfoRemoteData remoteRI;
|
local NiceRepInfoRemoteData remoteRI;
|
||||||
local NiceReplicationInfo niceRI;
|
local NiceReplicationInfo niceRI;
|
||||||
local MeanReplicationInfo meanRI;
|
|
||||||
local PlayerReplicationInfo pri;
|
local PlayerReplicationInfo pri;
|
||||||
// Replace loot on levels
|
// Replace loot on levels
|
||||||
if(Other.class == class'KFRandomItemSpawn' || Other.class == class'ScrnBalanceSrv.ScrnRandomItemSpawn'){
|
if(Other.class == class'KFRandomItemSpawn' || Other.class == class'ScrnRandomItemSpawn'){
|
||||||
ReplaceWith(Other, "NicePack.NiceRandomItemSpawn");
|
ReplaceWith(Other, string(class'NiceRandomItemSpawn'));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if(Other.class == class'KFAmmoPickup' || Other.class == class'ScrnBalanceSrv.ScrnAmmoPickup') {
|
else if(Other.class == class'KFAmmoPickup' || Other.class == class'ScrnAmmoPickup') {
|
||||||
ReplaceWith(Other, "NicePack.NiceAmmoPickup");
|
ReplaceWith(Other, string(class'NiceAmmoPickup'));
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if(bReplacePickups && Pickup(Other) != none){
|
else if(bReplacePickups && Pickup(Other) != none){
|
||||||
@ -497,8 +411,6 @@ simulated function bool CheckReplacement(Actor Other, out byte bSuperRelevant){
|
|||||||
niceRI = spawn(class'NiceReplicationInfo', pri.Owner);
|
niceRI = spawn(class'NiceReplicationInfo', pri.Owner);
|
||||||
niceRI.Mut = self;
|
niceRI.Mut = self;
|
||||||
remoteRI = spawn(class'NiceRepInfoRemoteData', pri.Owner);
|
remoteRI = spawn(class'NiceRepInfoRemoteData', pri.Owner);
|
||||||
meanRI = spawn(class'MeanReplicationInfo', pri.Owner);
|
|
||||||
meanRI.ownerPRI = pri;
|
|
||||||
playerContr = NicePlayerController(PlayerReplicationInfo(Other).Owner);
|
playerContr = NicePlayerController(PlayerReplicationInfo(Other).Owner);
|
||||||
playerContr.niceRI = niceRI;
|
playerContr.niceRI = niceRI;
|
||||||
playerContr.remoteRI = remoteRI;
|
playerContr.remoteRI = remoteRI;
|
||||||
@ -584,18 +496,7 @@ simulated function int GetVisibleCountersAmount(){
|
|||||||
simulated function int UpdateCounterValue(string cName){
|
simulated function int UpdateCounterValue(string cName){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
simulated function AddWeapProgress(class<NiceWeapon> weapClass, float progress,
|
|
||||||
optional bool bShowCounter, optional int counter){
|
|
||||||
local WeaponProgressDisplay newProgress;
|
|
||||||
newProgress.weapClass = weapClass;
|
|
||||||
newProgress.progress = progress;
|
|
||||||
newProgress.bShowCounter = bShowCounter;
|
|
||||||
newProgress.counter = counter;
|
|
||||||
niceWeapProgressSet[niceWeapProgressSet.Length] = newProgress;
|
|
||||||
}
|
|
||||||
simulated function ClearWeapProgress(){
|
|
||||||
niceWeapProgressSet.Length = 0;
|
|
||||||
}
|
|
||||||
// Returns cash per wave based on current difficulty
|
// Returns cash per wave based on current difficulty
|
||||||
// Returns cash per wave based on current difficulty
|
// Returns cash per wave based on current difficulty
|
||||||
function int GetWaveCash(int lastCashWave, int nextWave){
|
function int GetWaveCash(int lastCashWave, int nextWave){
|
||||||
@ -626,7 +527,9 @@ function GiveProgressiveDosh(NicePlayerController nicePlayer){
|
|||||||
record.lastCashWave = nextWave;
|
record.lastCashWave = nextWave;
|
||||||
UpdatePlayerRecord(record);
|
UpdatePlayerRecord(record);
|
||||||
}
|
}
|
||||||
simulated function Mutate(string MutateString, PlayerController kfPlayer){
|
|
||||||
|
simulated function Mutate(string MutateString, PlayerController kfPlayer)
|
||||||
|
{
|
||||||
local int i, readLenght;
|
local int i, readLenght;
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
local NiceServerData remoteData;
|
local NiceServerData remoteData;
|
||||||
@ -640,10 +543,13 @@ simulated function Mutate(string MutateString, PlayerController kfPlayer){
|
|||||||
// Always contains at least 10 elements, that may be empty strings if there wasn't enough modifiers.
|
// Always contains at least 10 elements, that may be empty strings if there wasn't enough modifiers.
|
||||||
// Done for safe access without the need to check for bounds.
|
// Done for safe access without the need to check for bounds.
|
||||||
local array<String> modArray;
|
local array<String> modArray;
|
||||||
|
|
||||||
|
super.Mutate(MutateString, kfPlayer);
|
||||||
|
|
||||||
// Helpful sequence
|
// Helpful sequence
|
||||||
white = chr(27)$chr(200)$chr(200)$chr(200);
|
white = chr(27)$chr(200)$chr(200)$chr(200);
|
||||||
// Transform our command into array for convenience
|
// Transform our command into array for convenience
|
||||||
wordsArray = SplitString(MutateString, " ");
|
Split(MutateString, " ", wordsArray);
|
||||||
// Exit if command is empty
|
// Exit if command is empty
|
||||||
if(wordsArray.Length == 0)
|
if(wordsArray.Length == 0)
|
||||||
return;
|
return;
|
||||||
@ -738,7 +644,6 @@ simulated function Mutate(string MutateString, PlayerController kfPlayer){
|
|||||||
nicePlayer.ClientMessage("Compressed lenght:" @ string(inputStream.GetSizeInBytes()) );
|
nicePlayer.ClientMessage("Compressed lenght:" @ string(inputStream.GetSizeInBytes()) );
|
||||||
nicePlayer.ClientMessage("Output:"@outputStream.ReadClassName(readLenght));
|
nicePlayer.ClientMessage("Output:"@outputStream.ReadClassName(readLenght));
|
||||||
}
|
}
|
||||||
Super.Mutate(MutateString, kfPlayer);
|
|
||||||
}
|
}
|
||||||
/* Good test for writer
|
/* Good test for writer
|
||||||
else if(command ~= "TEST"){
|
else if(command ~= "TEST"){
|
||||||
@ -926,48 +831,7 @@ function BroadcastSkills(){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Function for string splitting, because why would we have it as a standard function? It would be silly, right?
|
|
||||||
function array<string> SplitString(string inputString, string div){
|
|
||||||
local array<string> parts;
|
|
||||||
local bool bEOL;
|
|
||||||
local string tempChar;
|
|
||||||
local int preCount, curCount, partCount, strLength;
|
|
||||||
strLength = Len(inputString);
|
|
||||||
if(strLength == 0)
|
|
||||||
return parts;
|
|
||||||
bEOL = false;
|
|
||||||
preCount = 0;
|
|
||||||
curCount = 0;
|
|
||||||
partCount = 0;
|
|
||||||
while(!bEOL)
|
|
||||||
{
|
|
||||||
tempChar = Mid(inputString, curCount, 1);
|
|
||||||
if(tempChar != div)
|
|
||||||
curCount ++;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(curCount == preCount)
|
|
||||||
{
|
|
||||||
curCount ++;
|
|
||||||
preCount ++;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
parts[partCount] = Mid(inputString, preCount, curCount - preCount);
|
|
||||||
partCount ++;
|
|
||||||
preCount = curCount + 1;
|
|
||||||
curCount = preCount;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(curCount == strLength)
|
|
||||||
{
|
|
||||||
if(preCount != strLength)
|
|
||||||
parts[partCount] = Mid(inputString, preCount, curCount);
|
|
||||||
bEOL = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return parts;
|
|
||||||
}
|
|
||||||
// Function for broadcasting messages to players
|
// Function for broadcasting messages to players
|
||||||
function BroadcastToAll(string message){
|
function BroadcastToAll(string message){
|
||||||
local Controller P;
|
local Controller P;
|
||||||
@ -1037,8 +901,34 @@ static function string GetDescriptionText(string SettingName){
|
|||||||
}
|
}
|
||||||
return Super.GetDescriptionText(SettingName);
|
return Super.GetDescriptionText(SettingName);
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
GroupName="KFNicePack"
|
||||||
|
FriendlyName="Package for nice/mean servers"
|
||||||
|
Description="Does stuff."
|
||||||
|
bAlwaysRelevant=True
|
||||||
|
RemoteRole=ROLE_SimulatedProxy
|
||||||
|
bAddToServerPackages=True
|
||||||
|
|
||||||
|
// used in scrn voting and HL calculation
|
||||||
|
// TODO remove HL!
|
||||||
|
ZedDatabase(00)=(ZedName="Clot",ZedType=class'NiceZombieClot',MeanZedType=class'MeanZombieClot',HL=0.0,MeanHLBonus=0.5)
|
||||||
|
ZedDatabase(01)=(ZedName="Crawler",ZedType=class'NiceZombieCrawler',MeanZedType=class'MeanZombieCrawler',HL=0.5,MeanHLBonus=1.5)
|
||||||
|
ZedDatabase(02)=(ZedName="Stalker",ZedType=class'NiceZombieStalker',MeanZedType=class'MeanZombieStalker',HL=0.5,MeanHLBonus=0.5)
|
||||||
|
ZedDatabase(03)=(ZedName="Gorefast",ZedType=class'NiceZombieGorefast',MeanZedType=class'MeanZombieGorefast',HL=0.0,MeanHLBonus=0.5)
|
||||||
|
ZedDatabase(04)=(ZedName="Bloat",ZedType=class'NiceZombieBloat',MeanZedType=class'MeanZombieBloat',HL=0.0,MeanHLBonus=0.5)
|
||||||
|
ZedDatabase(05)=(ZedName="Siren",ZedType=class'NiceZombieSiren',MeanZedType=class'MeanZombieSiren',HL=1.0,MeanHLBonus=1.0)
|
||||||
|
ZedDatabase(06)=(ZedName="Husk",ZedType=class'NiceZombieHusk',MeanZedType=class'MeanZombieHusk',HL=1.0,MeanHLBonus=1.5)
|
||||||
|
ZedDatabase(07)=(ZedName="Scrake",ZedType=class'NiceZombieScrake',MeanZedType=class'MeanZombieScrake',HL=1.5,MeanHLBonus=1.5)
|
||||||
|
ZedDatabase(08)=(ZedName="Fleshpound",ZedType=class'NiceZombieFleshPound',MeanZedType=class'MeanZombieFleshPound',HL=2.5,MeanHLBonus=1.5)
|
||||||
|
ZedDatabase(09)=(ZedName="Shiver",ZedType=class'NiceZombieShiver',HL=1.0)
|
||||||
|
ZedDatabase(10)=(ZedName="Jason",ZedType=class'NiceZombieJason',HL=1.5)
|
||||||
|
ZedDatabase(11)=(ZedName="Tesla Husk",ZedType=class'NiceZombieTeslaHusk',HL=1.5)
|
||||||
|
ZedDatabase(12)=(ZedName="Brute",ZedType=class'NiceZombieBrute',HL=2.0)
|
||||||
|
ZedDatabase(13)=(ZedName="Ghost",ZedType=class'NiceZombieGhost',HL=0.5)
|
||||||
|
ZedDatabase(14)=(ZedName="Sick",ZedType=class'NiceZombieSick',HL=1.0)
|
||||||
|
|
||||||
bScaleZedHealth=True
|
bScaleZedHealth=True
|
||||||
bReplacePickups=True
|
bReplacePickups=True
|
||||||
bInitialTrader=True
|
bInitialTrader=True
|
||||||
@ -1071,26 +961,19 @@ defaultproperties
|
|||||||
bNoLateFFIncrease=True
|
bNoLateFFIncrease=True
|
||||||
junkieNextGoal=1
|
junkieNextGoal=1
|
||||||
bIsPreGame=True
|
bIsPreGame=True
|
||||||
pickupReplaceArray(0)=(vanillaClass=Class'KFMod.MAC10Pickup',scrnClass=Class'ScrnBalanceSrv.ScrnMAC10Pickup',NewClass=Class'NicePack.NiceMAC10Pickup')
|
|
||||||
pickupReplaceArray(1)=(vanillaClass=Class'KFMod.WinchesterPickup',scrnClass=Class'ScrnBalanceSrv.ScrnWinchesterPickup',NewClass=Class'NicePack.NiceWinchesterPickup')
|
// replace pickups that map spawn's itself
|
||||||
pickupReplaceArray(2)=(vanillaClass=Class'KFMod.CrossbowPickup',scrnClass=Class'ScrnBalanceSrv.ScrnCrossbowPickup',NewClass=Class'NicePack.NiceCrossbowPickup')
|
pickupReplaceArray(00)=(vanillaClass=Class'KFMod.MAC10Pickup',scrnClass=Class'ScrnMAC10Pickup',NewClass=class'NiceMAC10Pickup')
|
||||||
pickupReplaceArray(3)=(vanillaClass=Class'KFMod.SPSniperPickup',scrnClass=Class'ScrnBalanceSrv.ScrnSPSniperPickup',NewClass=Class'NicePack.NiceMaulerPickup')
|
pickupReplaceArray(01)=(vanillaClass=Class'KFMod.WinchesterPickup',scrnClass=Class'ScrnWinchesterPickup',NewClass=class'NiceWinchesterPickup')
|
||||||
pickupReplaceArray(4)=(vanillaClass=Class'KFMod.M14EBRPickup',scrnClass=Class'ScrnBalanceSrv.ScrnM14EBRPickup',NewClass=Class'NicePack.NiceM14EBRPickup')
|
pickupReplaceArray(02)=(vanillaClass=Class'KFMod.CrossbowPickup',scrnClass=Class'ScrnCrossbowPickup',NewClass=class'NiceCrossbowPickup')
|
||||||
pickupReplaceArray(5)=(vanillaClass=Class'KFMod.M99Pickup',scrnClass=Class'ScrnBalanceSrv.ScrnM99Pickup',NewClass=Class'NicePack.NiceM99Pickup')
|
pickupReplaceArray(03)=(vanillaClass=Class'KFMod.SPSniperPickup',scrnClass=Class'ScrnSPSniperPickup',NewClass=class'NiceMaulerPickup')
|
||||||
pickupReplaceArray(6)=(vanillaClass=Class'KFMod.ShotgunPickup',scrnClass=Class'ScrnBalanceSrv.ScrnShotgunPickup',NewClass=Class'NicePack.NiceShotgunPickup')
|
pickupReplaceArray(04)=(vanillaClass=Class'KFMod.M14EBRPickup',scrnClass=Class'ScrnM14EBRPickup',NewClass=class'NiceM14EBRPickup')
|
||||||
pickupReplaceArray(7)=(vanillaClass=Class'KFMod.BoomStickPickup',scrnClass=Class'ScrnBalanceSrv.ScrnBoomStickPickup',NewClass=Class'NicePack.NiceBoomStickPickup')
|
pickupReplaceArray(05)=(vanillaClass=Class'KFMod.M99Pickup',scrnClass=Class'ScrnM99Pickup',NewClass=class'NiceM99Pickup')
|
||||||
pickupReplaceArray(8)=(vanillaClass=Class'KFMod.NailGunPickup',scrnClass=Class'ScrnBalanceSrv.ScrnNailGunPickup',NewClass=Class'NicePack.NiceNailGunPickup')
|
pickupReplaceArray(06)=(vanillaClass=Class'KFMod.ShotgunPickup',scrnClass=Class'ScrnShotgunPickup',NewClass=class'NiceShotgunPickup')
|
||||||
pickupReplaceArray(9)=(vanillaClass=Class'KFMod.KSGPickup',scrnClass=Class'ScrnBalanceSrv.ScrnKSGPickup',NewClass=Class'NicePack.NiceKSGPickup')
|
pickupReplaceArray(07)=(vanillaClass=Class'KFMod.BoomStickPickup',scrnClass=Class'ScrnBoomStickPickup',NewClass=class'NiceBoomStickPickup')
|
||||||
pickupReplaceArray(10)=(vanillaClass=Class'KFMod.BenelliPickup',scrnClass=Class'ScrnBalanceSrv.ScrnBenelliPickup',NewClass=Class'NicePack.NiceBenelliPickup')
|
pickupReplaceArray(08)=(vanillaClass=Class'KFMod.NailGunPickup',scrnClass=Class'ScrnNailGunPickup',NewClass=class'NiceNailGunPickup')
|
||||||
pickupReplaceArray(11)=(vanillaClass=Class'KFMod.AA12Pickup',scrnClass=Class'ScrnBalanceSrv.ScrnAA12Pickup',NewClass=Class'NicePack.NiceAA12Pickup')
|
pickupReplaceArray(09)=(vanillaClass=Class'KFMod.KSGPickup',scrnClass=Class'ScrnKSGPickup',NewClass=class'NiceKSGPickup')
|
||||||
NiceUniversalDescriptions(0)="Survive on %m in ScrN Balance mode"
|
pickupReplaceArray(10)=(vanillaClass=Class'KFMod.BenelliPickup',scrnClass=Class'ScrnBenelliPickup',NewClass=class'NiceBenelliPickup')
|
||||||
NiceUniversalDescriptions(1)="Survive on %m in ScrN Balance mode with Hardcore Level 5+"
|
pickupReplaceArray(11)=(vanillaClass=Class'KFMod.AA12Pickup',scrnClass=Class'ScrnAA12Pickup',NewClass=class'NiceAA12Pickup')
|
||||||
NiceUniversalDescriptions(2)="Survive on %m in ScrN Balance mode with Hardcore Level 10+"
|
pickupReplaceArray(12)=(vanillaClass=Class'KFMod.MachetePickup',scrnClass=Class'ScrnMachetePickup',NewClass=class'NiceMachetePickup')
|
||||||
NiceUniversalDescriptions(3)="Survive on %m in ScrN Balance mode with Hardcore Level 15+"
|
|
||||||
bAddToServerPackages=True
|
|
||||||
GroupName="KFNicePack"
|
|
||||||
FriendlyName="Package for nice/mean servers"
|
|
||||||
Description="Does stuff."
|
|
||||||
bAlwaysRelevant=True
|
|
||||||
RemoteRole=ROLE_SimulatedProxy
|
|
||||||
}
|
}
|
@ -2,6 +2,8 @@ class NicePlayerController extends ScrnPlayerController
|
|||||||
config(NiceUser)
|
config(NiceUser)
|
||||||
dependson(NicePack)
|
dependson(NicePack)
|
||||||
dependson(NiceFire);
|
dependson(NiceFire);
|
||||||
|
|
||||||
|
var globalconfig int ZedHPBarStyle; // 0 - big zeds, 1 - all, 2 - disabled
|
||||||
var globalconfig int nicePlayerInfoVersionNumber;
|
var globalconfig int nicePlayerInfoVersionNumber;
|
||||||
// These are values stored in a settings file
|
// These are values stored in a settings file
|
||||||
var globalconfig bool bDebug;
|
var globalconfig bool bDebug;
|
||||||
@ -134,16 +136,17 @@ replication{
|
|||||||
ServerSetHLMessages, ServerMarkSettingsLoaded, ServerStartleZeds, ServerSetDisplayCounters,
|
ServerSetHLMessages, ServerMarkSettingsLoaded, ServerStartleZeds, ServerSetDisplayCounters,
|
||||||
ServerSetDisplayWeaponProgress, ActivateAbility;
|
ServerSetDisplayWeaponProgress, ActivateAbility;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Called on server only!
|
// Called on server only!
|
||||||
function PostLogin(){
|
function PostLogin()
|
||||||
|
{
|
||||||
local NicePack.PlayerRecord record;
|
local NicePack.PlayerRecord record;
|
||||||
local NiceGameType NiceGT;
|
local NiceGameType NiceGT;
|
||||||
local NiceTSCGame TSCGT;
|
|
||||||
local ScrnCustomPRI ScrnPRI;
|
local ScrnCustomPRI ScrnPRI;
|
||||||
|
|
||||||
Super.PostLogin();
|
Super.PostLogin();
|
||||||
// Restore data
|
// Restore data
|
||||||
NiceGT = NiceGameType(Level.Game);
|
NiceGT = NiceGameType(Level.Game);
|
||||||
TSCGT = NiceTSCGame(Level.Game);
|
|
||||||
ScrnPRI = class'ScrnCustomPRI'.static.FindMe(PlayerReplicationInfo);
|
ScrnPRI = class'ScrnCustomPRI'.static.FindMe(PlayerReplicationInfo);
|
||||||
if(ScrnPRI != none)
|
if(ScrnPRI != none)
|
||||||
SteamID64 = ScrnPRI.GetSteamID64();
|
SteamID64 = ScrnPRI.GetSteamID64();
|
||||||
@ -167,6 +170,7 @@ function PostLogin(){
|
|||||||
// Spawn ability manager
|
// Spawn ability manager
|
||||||
abilityManager = Spawn(class'NiceAbilityManager', self);
|
abilityManager = Spawn(class'NiceAbilityManager', self);
|
||||||
}
|
}
|
||||||
|
|
||||||
simulated function ClientPostLogin(){
|
simulated function ClientPostLogin(){
|
||||||
local int i, j, k;
|
local int i, j, k;
|
||||||
local bool bEntryExists;
|
local bool bEntryExists;
|
||||||
@ -198,7 +202,7 @@ simulated function ClientPostLogin(){
|
|||||||
playedWithDatabase = newPlayedWithData;
|
playedWithDatabase = newPlayedWithData;
|
||||||
UpdateDefaultWeaponSettings();
|
UpdateDefaultWeaponSettings();
|
||||||
// Create sync node
|
// Create sync node
|
||||||
storageClient = new class'NicePack.NiceStorageClient';
|
storageClient = new class'NiceStorageClient';
|
||||||
storageClient.events.static.AddAdapter(class'NiceRemoteDataAdapter', level);
|
storageClient.events.static.AddAdapter(class'NiceRemoteDataAdapter', level);
|
||||||
// Init collisions
|
// Init collisions
|
||||||
if(Role < ROLE_Authority)
|
if(Role < ROLE_Authority)
|
||||||
@ -401,12 +405,12 @@ simulated event Destroyed(){
|
|||||||
// Screw that
|
// Screw that
|
||||||
simulated function ClientWeaponDestroyed(class<Weapon> WClass){}
|
simulated function ClientWeaponDestroyed(class<Weapon> WClass){}
|
||||||
// This event is generated when new pawn spawns
|
// This event is generated when new pawn spawns
|
||||||
function PawnSpawned(){
|
function PawnSpawned()
|
||||||
|
{
|
||||||
local bool bFoundExp;
|
local bool bFoundExp;
|
||||||
local float convertedExp;
|
local float convertedExp;
|
||||||
local ClientPerkRepLink R;
|
local ClientPerkRepLink R;
|
||||||
local SRCustomProgress exp;
|
local SRCustomProgress exp;
|
||||||
local MeanReplicationInfo meanRI;
|
|
||||||
local NicePack.PlayerRecord record;
|
local NicePack.PlayerRecord record;
|
||||||
//local NiceHumanPawn nicePawn;
|
//local NiceHumanPawn nicePawn;
|
||||||
// Make sure our health is at it's top
|
// Make sure our health is at it's top
|
||||||
@ -494,10 +498,6 @@ function PawnSpawned(){
|
|||||||
exp.IncrementProgress(convertedExp);
|
exp.IncrementProgress(convertedExp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Stop after-death bleeding
|
|
||||||
meanRI = class'MeanReplicationInfo'.static.findSZri(PlayerReplicationInfo);
|
|
||||||
if(meanRI != none)
|
|
||||||
meanRI.stopBleeding();
|
|
||||||
// Give necessary dosh to the player
|
// Give necessary dosh to the player
|
||||||
if(NicePackMutator != none)
|
if(NicePackMutator != none)
|
||||||
NicePackMutator.GiveProgressiveDosh(self);
|
NicePackMutator.GiveProgressiveDosh(self);
|
||||||
@ -601,23 +601,32 @@ simulated function ClientLog(String logStr){
|
|||||||
if(bFlagDebug)
|
if(bFlagDebug)
|
||||||
Log("NiceDebug:"$logStr);
|
Log("NiceDebug:"$logStr);
|
||||||
}
|
}
|
||||||
function ServerUse(){
|
|
||||||
|
function ServerUse()
|
||||||
|
{
|
||||||
local NiceHumanPawn myPawn;
|
local NiceHumanPawn myPawn;
|
||||||
|
|
||||||
myPawn = NiceHumanPawn(Pawn);
|
myPawn = NiceHumanPawn(Pawn);
|
||||||
if(myPawn == none){
|
if (myPawn == none)
|
||||||
|
{
|
||||||
super.ServerUse();
|
super.ServerUse();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle initial shop / medic drugs
|
// Handle initial shop / medic drugs
|
||||||
if(NicePackMutator != none && NicePackMutator.bIsPreGame && NicePackMutator.bInitialTrader){
|
if (NicePackMutator != none && NicePackMutator.bIsPreGame && NicePackMutator.bInitialTrader)
|
||||||
if(VSize(Pawn.Velocity) <= 0.0){
|
{
|
||||||
|
if (VSize(Pawn.Velocity) <= 0.0)
|
||||||
|
{
|
||||||
ShowBuyMenu("Initial trader", myPawn.MaxCarryWeight);
|
ShowBuyMenu("Initial trader", myPawn.MaxCarryWeight);
|
||||||
bOpenedInitTrader = true;
|
bOpenedInitTrader = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
|
||||||
|
// call this anyways, so we can use doors!
|
||||||
super.ServerUse();
|
super.ServerUse();
|
||||||
}
|
}
|
||||||
|
|
||||||
simulated function ClientUpdatePawnMaxHealth(NiceHumanPawn updatePawn, int newHealthMax){
|
simulated function ClientUpdatePawnMaxHealth(NiceHumanPawn updatePawn, int newHealthMax){
|
||||||
updatePawn.HealthMax = newHealthMax;
|
updatePawn.HealthMax = newHealthMax;
|
||||||
}
|
}
|
||||||
@ -1440,8 +1449,104 @@ exec simulated function Siren(float value)
|
|||||||
sirenScreamMod = value;
|
sirenScreamMod = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// copy-cat to fix MyTrader accessed none log spam
|
||||||
|
function ClientLocationalVoiceMessage(PlayerReplicationInfo Sender,
|
||||||
|
PlayerReplicationInfo Recipient,
|
||||||
|
name MessageType, byte MessageID,
|
||||||
|
optional Pawn SenderPawn, optional vector SenderLocation)
|
||||||
|
{
|
||||||
|
local VoicePack Voice;
|
||||||
|
local ShopVolume Shop;
|
||||||
|
|
||||||
|
if (Sender == none || Sender.VoiceType == none || Player.Console == none || Level.NetMode == NM_DedicatedServer)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Voice = Spawn(Sender.VoiceType, self);
|
||||||
|
if (KFVoicePack(Voice) != none)
|
||||||
|
{
|
||||||
|
if (MessageType == 'TRADER')
|
||||||
|
{
|
||||||
|
if (Pawn != none && MessageID >= 4)
|
||||||
|
{
|
||||||
|
foreach Pawn.TouchingActors(class'ShopVolume', Shop)
|
||||||
|
{
|
||||||
|
// fix this
|
||||||
|
if (Shop.MyTrader != none)
|
||||||
|
SenderLocation = Shop.MyTrader.Location;
|
||||||
|
else
|
||||||
|
SenderLocation = Shop.Location;
|
||||||
|
|
||||||
|
// Only play the 30 Seconds remaining messages come across as Locational Speech if we're in the Shop
|
||||||
|
if (MessageID == 4)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (MessageID == 5)
|
||||||
|
{
|
||||||
|
MessageID = 999;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Only play the 10 Seconds remaining message if we are in the Shop
|
||||||
|
// and only play the 30 seconds remaning message if we haven't been to the Shop
|
||||||
|
if (MessageID == 5 || (MessageID == 4 && bHasHeardTraderWelcomeMessage))
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (MessageID == 999)
|
||||||
|
{
|
||||||
|
MessageID = 5;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Store the fact that we've heard the Trader's Welcome message on the client
|
||||||
|
if (MessageID == 7)
|
||||||
|
{
|
||||||
|
bHasHeardTraderWelcomeMessage = true;
|
||||||
|
}
|
||||||
|
// If we're hearing the Shop's Closed Message, reset the Trader's Welcome message flag
|
||||||
|
else if (MessageID == 6)
|
||||||
|
{
|
||||||
|
bHasHeardTraderWelcomeMessage = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
KFVoicePack(Voice).ClientInitializeLocational(Sender, Recipient, MessageType, MessageID, SenderPawn, SenderLocation);
|
||||||
|
|
||||||
|
if (MessageID > 6 /*&& bBuyMenuIsOpen*/)
|
||||||
|
{
|
||||||
|
// TODO: Show KFVoicePack(Voice).GetClientParsedMessage() in the Buy Menu
|
||||||
|
}
|
||||||
|
else if (KFVoicePack(Voice).GetClientParsedMessage() != "")
|
||||||
|
{
|
||||||
|
// Radio commands print to Text
|
||||||
|
TeamMessage(Sender, KFVoicePack(Voice).GetClientParsedMessage(), 'Trader');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
KFVoicePack(Voice).ClientInitializeLocational(Sender, Recipient, MessageType, MessageID, SenderPawn, SenderLocation);
|
||||||
|
|
||||||
|
if (KFVoicePack(Voice).GetClientParsedMessage() != "")
|
||||||
|
{
|
||||||
|
TeamMessage(Sender, KFVoicePack(Voice).GetClientParsedMessage(), 'Voice');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (Voice != none)
|
||||||
|
{
|
||||||
|
Voice.ClientInitialize(Sender, Recipient, MessageType, MessageID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
|
MidGameMenuClass="NicePack.NiceInvasionLoginMenu"
|
||||||
nicePlayerInfoVersionNumber=1
|
nicePlayerInfoVersionNumber=1
|
||||||
bAltSwitchesModes=True
|
bAltSwitchesModes=True
|
||||||
bAdvReloadCheck=True
|
bAdvReloadCheck=True
|
||||||
@ -1465,7 +1570,6 @@ defaultproperties
|
|||||||
effectsLimitSoft=100
|
effectsLimitSoft=100
|
||||||
effectsLimitHard=200
|
effectsLimitHard=200
|
||||||
sirenScreamMod=1.000000
|
sirenScreamMod=1.000000
|
||||||
TSCLobbyMenuClassString="NicePack.NiceTSCLobbyMenu"
|
|
||||||
LobbyMenuClassString="NicePack.NiceLobbyMenu"
|
LobbyMenuClassString="NicePack.NiceLobbyMenu"
|
||||||
PawnClass=Class'NicePack.NiceHumanPawn'
|
PawnClass=class'NiceHumanPawn'
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
class NiceRandomItemSpawn extends ScrnRandomItemSpawn;
|
class NiceRandomItemSpawn extends ScrnRandomItemSpawn;
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
PickupClasses(0)=Class'NicePack.NiceWinchesterPickup'
|
PickupClasses(0)=Class'NiceWinchesterPickup'
|
||||||
PickupClasses(1)=Class'NicePack.NiceShotgunPickup'
|
PickupClasses(1)=Class'NiceShotgunPickup'
|
||||||
PickupClasses(2)=Class'NicePack.NiceBullpupPickup'
|
PickupClasses(2)=Class'NiceBullpupPickup'
|
||||||
PickupClasses(3)=Class'NicePack.NiceMagnumPickup'
|
PickupClasses(3)=Class'NiceMagnumPickup'
|
||||||
PickupClasses(4)=Class'NicePack.NiceWinchesterPickup'
|
PickupClasses(4)=Class'NiceWinchesterPickup'
|
||||||
PickupClasses(5)=Class'NicePack.NiceM79Pickup'
|
PickupClasses(5)=Class'NiceM79Pickup'
|
||||||
PickupClasses(8)=Class'NicePack.NiceMAC10Pickup'
|
PickupClasses(6)=Class'NiceAxePickup'
|
||||||
|
// mut's checkreplcmt will change this to proper class!
|
||||||
|
PickupClasses(7)=Class'KFMod.Vest'
|
||||||
|
PickupClasses(8)=class'NiceMAC10Pickup'
|
||||||
}
|
}
|
@ -186,24 +186,18 @@ simulated function HandleNiceHealingMechanicsAndSkills
|
|||||||
simulated function RemovePoisonAndBleed(NiceHumanPawn healed)
|
simulated function RemovePoisonAndBleed(NiceHumanPawn healed)
|
||||||
{
|
{
|
||||||
local Inventory I;
|
local Inventory I;
|
||||||
local MeanReplicationInfo MRI;
|
|
||||||
|
|
||||||
// log spam fix
|
// log spam fix
|
||||||
if (healed == none)
|
if (healed == none)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// No bleeding
|
// No poison and bleed
|
||||||
MRI = class'MeanReplicationInfo'.static.
|
|
||||||
findSZri(healed.PlayerReplicationInfo);
|
|
||||||
if (MRI != none)
|
|
||||||
MRI.stopBleeding();
|
|
||||||
// No poison
|
|
||||||
if (healed.inventory == none)
|
if (healed.inventory == none)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
for (I = healed.inventory; I != none; I = I.inventory)
|
for (I = healed.inventory; I != none; I = I.inventory)
|
||||||
{
|
{
|
||||||
if (MeanPoisonInventory(I) != none)
|
if (MeanPoisonInventory(I) != none || MeanBleedInventory(I) != none)
|
||||||
I.Destroy();
|
I.Destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -164,6 +164,6 @@ function Tick(float deltaTime){
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
maxAbilitiesAmount=5
|
maxAbilitiesAmount=5
|
||||||
Events=Class'NicePack.NiceAbilitiesEvents'
|
Events=class'NiceAbilitiesEvents'
|
||||||
DrawType=DT_None
|
DrawType=DT_None
|
||||||
}
|
}
|
||||||
|
@ -98,16 +98,16 @@ static function string GetCustomLevelInfo(byte Level){
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
bNewTypePerk=True
|
bNewTypePerk=True
|
||||||
SkillGroupA(0)=Class'NicePack.NiceSkillZerkWindCutter'
|
SkillGroupA(0)=class'NiceSkillZerkWindCutter'
|
||||||
SkillGroupA(1)=Class'NicePack.NiceSkillZerkWhirlwind'
|
SkillGroupA(1)=class'NiceSkillZerkWhirlwind'
|
||||||
SkillGroupA(2)=Class'NicePack.NiceSkillZerkColossus'
|
SkillGroupA(2)=class'NiceSkillZerkColossus'
|
||||||
SkillGroupA(3)=Class'NicePack.NiceSkillZerkUndead'
|
SkillGroupA(3)=class'NiceSkillZerkUndead'
|
||||||
SkillGroupA(4)=Class'NicePack.NiceSkillZerkZEDAccelerate'
|
SkillGroupA(4)=class'NiceSkillZerkZEDAccelerate'
|
||||||
SkillGroupB(0)=Class'NicePack.NiceSkillZerkCleave'
|
SkillGroupB(0)=class'NiceSkillZerkCleave'
|
||||||
SkillGroupB(1)=Class'NicePack.NiceSkillZerkFury'
|
SkillGroupB(1)=class'NiceSkillZerkFury'
|
||||||
SkillGroupB(2)=Class'NicePack.NiceSkillZerkGunzerker'
|
SkillGroupB(2)=class'NiceSkillZerkGunzerker'
|
||||||
SkillGroupB(3)=Class'NicePack.NiceSkillZerkVorpalBlade'
|
SkillGroupB(3)=class'NiceSkillZerkVorpalBlade'
|
||||||
SkillGroupB(4)=Class'NicePack.NiceSkillZerkZEDUnbreakable'
|
SkillGroupB(4)=class'NiceSkillZerkZEDUnbreakable'
|
||||||
progressArray0(0)=100
|
progressArray0(0)=100
|
||||||
progressArray0(1)=1000
|
progressArray0(1)=1000
|
||||||
progressArray0(2)=3000
|
progressArray0(2)=3000
|
||||||
@ -115,7 +115,7 @@ defaultproperties
|
|||||||
progressArray0(4)=30000
|
progressArray0(4)=30000
|
||||||
progressArray0(5)=100000
|
progressArray0(5)=100000
|
||||||
progressArray0(6)=200000
|
progressArray0(6)=200000
|
||||||
DefaultDamageType=Class'NicePack.NiceDamageTypeVetBerserker'
|
DefaultDamageType=class'NiceDamageTypeVetBerserker'
|
||||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Berserker',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Berserker',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Berserker_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Berserker_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_Berserker_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_Berserker_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
|
@ -11,9 +11,9 @@ static function array<int> GetProgressArray(byte ReqNum, optional out int Double
|
|||||||
}
|
}
|
||||||
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
||||||
/*if(KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicArmament'))
|
/*if(KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicArmament'))
|
||||||
return class'NicePack.NiceMedicNade';*/
|
return class'NiceMedicNade';*/
|
||||||
//return class'NiceMedicNadePoison';
|
//return class'NiceMedicNadePoison';
|
||||||
return class'NicePack.NiceNade';
|
return class'NiceNade';
|
||||||
}
|
}
|
||||||
static function float GetHealthBarsDistanceMulti(KFPlayerReplicationInfo KFPRI){
|
static function float GetHealthBarsDistanceMulti(KFPlayerReplicationInfo KFPRI){
|
||||||
/*if(KFPRI != none && SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoStrategist'))
|
/*if(KFPRI != none && SomeoneHasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoStrategist'))
|
||||||
@ -26,7 +26,7 @@ static function float GetStalkerViewDistanceMulti(KFPlayerReplicationInfo KFPRI)
|
|||||||
return 1.0;
|
return 1.0;
|
||||||
}
|
}
|
||||||
static function bool CanCookNade(KFPlayerReplicationInfo KFPRI, Weapon Weap){
|
static function bool CanCookNade(KFPlayerReplicationInfo KFPRI, Weapon Weap){
|
||||||
return GetNadeType(KFPRI) != class'NicePack.NiceMedicNadePoison';
|
return GetNadeType(KFPRI) != class'NiceMedicNadePoison';
|
||||||
}
|
}
|
||||||
static function float GetMagCapacityMod(KFPlayerReplicationInfo KFPRI, KFWeapon Other){
|
static function float GetMagCapacityMod(KFPlayerReplicationInfo KFPRI, KFWeapon Other){
|
||||||
local class<NiceWeaponPickup> pickupClass;
|
local class<NiceWeaponPickup> pickupClass;
|
||||||
@ -78,16 +78,16 @@ static function string GetCustomLevelInfo(byte Level){
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
bNewTypePerk=True
|
bNewTypePerk=True
|
||||||
SkillGroupA(0)=Class'NicePack.NiceSkillCommandoExplosivePower'
|
SkillGroupA(0)=class'NiceSkillCommandoExplosivePower'
|
||||||
SkillGroupA(1)=Class'NicePack.NiceSkillCommandoLargerMags'
|
SkillGroupA(1)=class'NiceSkillCommandoLargerMags'
|
||||||
SkillGroupA(2)=Class'NicePack.NiceSkillCommandoPerfectExecution'
|
SkillGroupA(2)=class'NiceSkillCommandoPerfectExecution'
|
||||||
//SkillGroupA(3)=Class'NicePack.'
|
//SkillGroupA(3)=class''
|
||||||
SkillGroupA(4)=Class'NicePack.NiceSkillCommandoZEDProfessional'
|
SkillGroupA(4)=class'NiceSkillCommandoZEDProfessional'
|
||||||
SkillGroupB(0)=Class'NicePack.NiceSkillCommandoRegeneration'
|
SkillGroupB(0)=class'NiceSkillCommandoRegeneration'
|
||||||
SkillGroupB(1)=Class'NicePack.NiceSkillCommandoQuickermags'
|
SkillGroupB(1)=class'NiceSkillCommandoQuickermags'
|
||||||
SkillGroupB(2)=Class'NicePack.NiceSkillCommandoOverclocking'
|
SkillGroupB(2)=class'NiceSkillCommandoOverclocking'
|
||||||
//SkillGroupB(3)=Class'NicePack.'
|
//SkillGroupB(3)=class''
|
||||||
SkillGroupB(4)=Class'NicePack.NiceSkillCommandoZEDHeavenCanceller'
|
SkillGroupB(4)=class'NiceSkillCommandoZEDHeavenCanceller'
|
||||||
progressArray0(0)=100
|
progressArray0(0)=100
|
||||||
progressArray0(1)=1000
|
progressArray0(1)=1000
|
||||||
progressArray0(2)=3000
|
progressArray0(2)=3000
|
||||||
@ -95,7 +95,7 @@ defaultproperties
|
|||||||
progressArray0(4)=30000
|
progressArray0(4)=30000
|
||||||
progressArray0(5)=100000
|
progressArray0(5)=100000
|
||||||
progressArray0(6)=200000
|
progressArray0(6)=200000
|
||||||
DefaultDamageType=Class'NicePack.NiceDamageTypeVetCommando'
|
DefaultDamageType=class'NiceDamageTypeVetCommando'
|
||||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Commando',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Commando',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Commando_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Commando_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_Commando_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_Commando_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
|
@ -37,7 +37,7 @@ static function int AddDamage(KFPlayerReplicationInfo KFPRI, KFMonster Injured,
|
|||||||
local class<NiceWeaponPickup> pickupClass;
|
local class<NiceWeaponPickup> pickupClass;
|
||||||
pickupClass = GetPickupFromDamageType(DmgType);
|
pickupClass = GetPickupFromDamageType(DmgType);
|
||||||
perkDamage = float(InDamage);
|
perkDamage = float(InDamage);
|
||||||
if(DmgType == class'NicePack.NiceDamTypeDemoExplosion')
|
if(DmgType == class'NiceDamTypeDemoExplosion')
|
||||||
return 1.6 * perkDamage;
|
return 1.6 * perkDamage;
|
||||||
if(IsPerkedPickup(pickupClass))
|
if(IsPerkedPickup(pickupClass))
|
||||||
perkDamage *= 1.25;
|
perkDamage *= 1.25;
|
||||||
@ -81,16 +81,16 @@ static function string GetCustomLevelInfo(byte Level){
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
bNewTypePerk=True
|
bNewTypePerk=True
|
||||||
SkillGroupA(0)=Class'NicePack.NiceSkillDemoConcussion'
|
SkillGroupA(0)=class'NiceSkillDemoConcussion'
|
||||||
SkillGroupA(1)=Class'NicePack.NiceSkillDemoOnperk'
|
SkillGroupA(1)=class'NiceSkillDemoOnperk'
|
||||||
SkillGroupA(2)=Class'NicePack.NiceSkillDemoDirectApproach'
|
SkillGroupA(2)=class'NiceSkillDemoDirectApproach'
|
||||||
SkillGroupA(3)=Class'NicePack.NiceSkillDemoReactiveArmor'
|
SkillGroupA(3)=class'NiceSkillDemoReactiveArmor'
|
||||||
SkillGroupA(4)=Class'NicePack.NiceSkillDemoZEDDuckAndCover'
|
SkillGroupA(4)=class'NiceSkillDemoZEDDuckAndCover'
|
||||||
SkillGroupB(0)=Class'NicePack.NiceSkillDemoOffperk'
|
SkillGroupB(0)=class'NiceSkillDemoOffperk'
|
||||||
SkillGroupB(1)=Class'NicePack.NiceSkillDemoManiac'
|
SkillGroupB(1)=class'NiceSkillDemoManiac'
|
||||||
SkillGroupB(2)=Class'NicePack.NiceSkillDemoAPShot'
|
SkillGroupB(2)=class'NiceSkillDemoAPShot'
|
||||||
SkillGroupB(3)=Class'NicePack.NiceSkillDemoVolatile'
|
SkillGroupB(3)=class'NiceSkillDemoVolatile'
|
||||||
SkillGroupB(4)=Class'NicePack.NiceSkillDemoZEDFullBlast'
|
SkillGroupB(4)=class'NiceSkillDemoZEDFullBlast'
|
||||||
progressArray0(0)=100
|
progressArray0(0)=100
|
||||||
progressArray0(1)=1000
|
progressArray0(1)=1000
|
||||||
progressArray0(2)=3000
|
progressArray0(2)=3000
|
||||||
@ -98,7 +98,7 @@ defaultproperties
|
|||||||
progressArray0(4)=30000
|
progressArray0(4)=30000
|
||||||
progressArray0(5)=100000
|
progressArray0(5)=100000
|
||||||
progressArray0(6)=200000
|
progressArray0(6)=200000
|
||||||
DefaultDamageType=Class'NicePack.NiceDamageTypeVetDemolitions'
|
DefaultDamageType=class'NiceDamageTypeVetDemolitions'
|
||||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Demolition_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_Demolition_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_Demolition_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
|
@ -27,10 +27,10 @@ static function AbilityActivated( string abilityID,
|
|||||||
}
|
}
|
||||||
if(abilityID == class'NiceSkillEnforcerStuporA'.default.abilityID){
|
if(abilityID == class'NiceSkillEnforcerStuporA'.default.abilityID){
|
||||||
relatedPlayer.abilityManager.SetAbilityState(1, ASTATE_COOLDOWN);
|
relatedPlayer.abilityManager.SetAbilityState(1, ASTATE_COOLDOWN);
|
||||||
foreach relatedPlayer.CollidingActors(class'NiceMonster', victim, class'NicePack.NiceSkillEnforcerStuporA'.default.radius, relatedPlayer.pawn.location)
|
foreach relatedPlayer.CollidingActors(class'NiceMonster', victim, class'NiceSkillEnforcerStuporA'.default.radius, relatedPlayer.pawn.location)
|
||||||
{
|
{
|
||||||
if (victim == none) continue;
|
if (victim == none) continue;
|
||||||
victim.DoRightPainReaction(class'NicePack.NiceSkillEnforcerStuporA'.default.painScore,
|
victim.DoRightPainReaction(class'NiceSkillEnforcerStuporA'.default.painScore,
|
||||||
relatedPlayer.pawn, victim.location, Vect(0,0,0), none, 0.0,
|
relatedPlayer.pawn, victim.location, Vect(0,0,0), none, 0.0,
|
||||||
KFPlayerReplicationInfo(relatedPlayer.PlayerReplicationInfo));
|
KFPlayerReplicationInfo(relatedPlayer.PlayerReplicationInfo));
|
||||||
}
|
}
|
||||||
|
@ -37,9 +37,9 @@ static function int AddStunScore(KFPlayerReplicationInfo KFPRI, KFMonster Injure
|
|||||||
|
|
||||||
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
||||||
/*if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillSupportCautious'))
|
/*if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillSupportCautious'))
|
||||||
return class'NicePack.NiceDelayedNade';
|
return class'NiceDelayedNade';
|
||||||
return class'NicePack.NiceNailNade';*/
|
return class'NiceNailNade';*/
|
||||||
return class'NicePack.NiceCryoNade';
|
return class'NiceCryoNade';
|
||||||
}
|
}
|
||||||
|
|
||||||
static function float AddExtraAmmoFor(KFPlayerReplicationInfo KFPRI, Class<Ammunition> AmmoType){
|
static function float AddExtraAmmoFor(KFPlayerReplicationInfo KFPRI, Class<Ammunition> AmmoType){
|
||||||
@ -97,7 +97,7 @@ static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFi
|
|||||||
niceWeap = class<NiceWeapon>(other);
|
niceWeap = class<NiceWeapon>(other);
|
||||||
if(niceWeap != none && niceWeap.default.reloadType == RTYPE_MAG)
|
if(niceWeap != none && niceWeap.default.reloadType == RTYPE_MAG)
|
||||||
return 1.5;
|
return 1.5;
|
||||||
if(other == class'NicePack.NiceM41AAssaultRifle' || other == class'NicePack.NiceChainGun' || other == class'NicePack.NiceStinger' )
|
if(other == class'NiceM41AAssaultRifle' || other == class'NiceChainGun' || other == class'NiceStinger' )
|
||||||
return 1.5;
|
return 1.5;
|
||||||
return 1.0;
|
return 1.0;
|
||||||
}*/
|
}*/
|
||||||
@ -140,16 +140,16 @@ static function SetupAbilities(KFPlayerReplicationInfo KFPRI){
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
bNewTypePerk=True
|
bNewTypePerk=True
|
||||||
SkillGroupA(0)=Class'NicePack.NiceSkillEnforcerUnstoppable'
|
SkillGroupA(0)=class'NiceSkillEnforcerUnstoppable'
|
||||||
SkillGroupA(1)=Class'NicePack.NiceSkillEnforcerBombard'
|
SkillGroupA(1)=class'NiceSkillEnforcerBombard'
|
||||||
SkillGroupA(2)=Class'NicePack.NiceSkillEnforcerCoating'
|
SkillGroupA(2)=class'NiceSkillEnforcerCoating'
|
||||||
SkillGroupA(3)=Class'NicePack.NiceSkillEnforcerStuporA'
|
SkillGroupA(3)=class'NiceSkillEnforcerStuporA'
|
||||||
SkillGroupA(4)=Class'NicePack.NiceSkillEnforcerZEDBarrage'
|
SkillGroupA(4)=class'NiceSkillEnforcerZEDBarrage'
|
||||||
SkillGroupB(0)=Class'NicePack.NiceSkillEnforcerUnshakable'
|
SkillGroupB(0)=class'NiceSkillEnforcerUnshakable'
|
||||||
SkillGroupB(1)=Class'NicePack.NiceSkillEnforcerMultitasker'
|
SkillGroupB(1)=class'NiceSkillEnforcerMultitasker'
|
||||||
SkillGroupB(2)=Class'NicePack.NiceSkillEnforcerDetermination'
|
SkillGroupB(2)=class'NiceSkillEnforcerDetermination'
|
||||||
SkillGroupB(3)=Class'NicePack.NiceSkillEnforcerBrutalCarnageA'
|
SkillGroupB(3)=class'NiceSkillEnforcerBrutalCarnageA'
|
||||||
SkillGroupB(4)=Class'NicePack.NiceSkillEnforcerZEDJuggernaut'
|
SkillGroupB(4)=class'NiceSkillEnforcerZEDJuggernaut'
|
||||||
progressArray0(0)=100
|
progressArray0(0)=100
|
||||||
progressArray0(1)=1000
|
progressArray0(1)=1000
|
||||||
progressArray0(2)=3000
|
progressArray0(2)=3000
|
||||||
@ -157,7 +157,7 @@ defaultproperties
|
|||||||
progressArray0(4)=30000
|
progressArray0(4)=30000
|
||||||
progressArray0(5)=100000
|
progressArray0(5)=100000
|
||||||
progressArray0(6)=200000
|
progressArray0(6)=200000
|
||||||
DefaultDamageType=Class'NicePack.NiceDamageTypeVetEnforcer'
|
DefaultDamageType=class'NiceDamageTypeVetEnforcer'
|
||||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Support',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Support',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Support_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Support_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_Support_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_Support_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
|
@ -18,7 +18,7 @@ static function float GetHeadshotCheckMultiplier(KFPlayerReplicationInfo KFPRI,
|
|||||||
// Give Medic normal hand nades again - he should buy medic nade lauchers for healing nades
|
// Give Medic normal hand nades again - he should buy medic nade lauchers for healing nades
|
||||||
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI){
|
||||||
if(KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicArmament'))
|
if(KFPRI != none && class'NiceVetFieldMedic'.static.hasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillMedicArmament'))
|
||||||
return class'NicePack.NiceMedicNade';
|
return class'NiceMedicNade';
|
||||||
return class'NiceMedicNadePoison';
|
return class'NiceMedicNadePoison';
|
||||||
}
|
}
|
||||||
static function float GetAmmoPickupMod(KFPlayerReplicationInfo KFPRI, KFAmmunition Other){
|
static function float GetAmmoPickupMod(KFPlayerReplicationInfo KFPRI, KFAmmunition Other){
|
||||||
@ -29,7 +29,7 @@ static function float GetAmmoPickupMod(KFPlayerReplicationInfo KFPRI, KFAmmuniti
|
|||||||
}
|
}
|
||||||
//can't cook medic nades
|
//can't cook medic nades
|
||||||
static function bool CanCookNade(KFPlayerReplicationInfo KFPRI, Weapon Weap){
|
static function bool CanCookNade(KFPlayerReplicationInfo KFPRI, Weapon Weap){
|
||||||
return GetNadeType(KFPRI) != class'NicePack.NiceMedicNade';
|
return GetNadeType(KFPRI) != class'NiceMedicNade';
|
||||||
}
|
}
|
||||||
static function float GetSyringeChargeRate(KFPlayerReplicationInfo KFPRI){
|
static function float GetSyringeChargeRate(KFPlayerReplicationInfo KFPRI){
|
||||||
return 3.0;
|
return 3.0;
|
||||||
@ -63,16 +63,16 @@ static function string GetCustomLevelInfo(byte Level){
|
|||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
SkillGroupA(0)=Class'NicePack.NiceSkillMedicSymbioticHealth'
|
SkillGroupA(0)=class'NiceSkillMedicSymbioticHealth'
|
||||||
SkillGroupA(1)=Class'NicePack.NiceSkillMedicArmament'
|
SkillGroupA(1)=class'NiceSkillMedicArmament'
|
||||||
SkillGroupA(2)=Class'NicePack.NiceSkillMedicAdrenalineShot'
|
SkillGroupA(2)=class'NiceSkillMedicAdrenalineShot'
|
||||||
SkillGroupA(3)=Class'NicePack.NiceSkillMedicInjection'
|
SkillGroupA(3)=class'NiceSkillMedicInjection'
|
||||||
SkillGroupA(4)=Class'NicePack.NiceSkillMedicZEDHeavenCanceller'
|
SkillGroupA(4)=class'NiceSkillMedicZEDHeavenCanceller'
|
||||||
SkillGroupB(0)=Class'NicePack.NiceSkillMedicAimAssistance'
|
SkillGroupB(0)=class'NiceSkillMedicAimAssistance'
|
||||||
SkillGroupB(1)=Class'NicePack.NiceSkillMedicPesticide'
|
SkillGroupB(1)=class'NiceSkillMedicPesticide'
|
||||||
SkillGroupB(2)=Class'NicePack.NiceSkillMedicRegeneration'
|
SkillGroupB(2)=class'NiceSkillMedicRegeneration'
|
||||||
SkillGroupB(3)=Class'NicePack.NiceSkillMedicTranquilizer'
|
SkillGroupB(3)=class'NiceSkillMedicTranquilizer'
|
||||||
SkillGroupB(4)=Class'NicePack.NiceSkillMedicZEDFrenzy'
|
SkillGroupB(4)=class'NiceSkillMedicZEDFrenzy'
|
||||||
progressArray0(0)=100
|
progressArray0(0)=100
|
||||||
progressArray0(1)=1000
|
progressArray0(1)=1000
|
||||||
progressArray0(2)=3000
|
progressArray0(2)=3000
|
||||||
|
@ -89,14 +89,14 @@ static function int ReduceDamage(KFPlayerReplicationInfo KFPRI, KFPawn Injured,
|
|||||||
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI)
|
static function class<Grenade> GetNadeType(KFPlayerReplicationInfo KFPRI)
|
||||||
{
|
{
|
||||||
if ( GetClientVeteranSkillLevel(KFPRI) >= 3 ) {
|
if ( GetClientVeteranSkillLevel(KFPRI) >= 3 ) {
|
||||||
return class'NicePack.NiceFlameNade';
|
return class'NiceFlameNade';
|
||||||
}
|
}
|
||||||
return super.GetNadeType(KFPRI);
|
return super.GetNadeType(KFPRI);
|
||||||
}
|
}
|
||||||
//can't cook fire nades
|
//can't cook fire nades
|
||||||
static function bool CanCookNade(KFPlayerReplicationInfo KFPRI, Weapon Weap)
|
static function bool CanCookNade(KFPlayerReplicationInfo KFPRI, Weapon Weap)
|
||||||
{
|
{
|
||||||
return GetNadeType(KFPRI) != class'ScrnBalanceSrv.ScrnFlameNade';
|
return GetNadeType(KFPRI) != class'ScrnFlameNade';
|
||||||
}
|
}
|
||||||
//v2.60: +60% faster charge with Husk Gun
|
//v2.60: +60% faster charge with Husk Gun
|
||||||
static function float GetReloadSpeedModifierStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> Other)
|
static function float GetReloadSpeedModifierStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> Other)
|
||||||
@ -160,7 +160,7 @@ static function string GetCustomLevelInfo( byte Level )
|
|||||||
}
|
}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
DefaultDamageType=Class'NicePack.NiceDamTypeFire'
|
DefaultDamageType=class'NiceDamTypeFire'
|
||||||
DefaultDamageTypeNoBonus=Class'KFMod.DamTypeMAC10MPInc'
|
DefaultDamageTypeNoBonus=Class'KFMod.DamTypeMAC10MPInc'
|
||||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Firebug',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_Firebug',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Firebug_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_Firebug_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
|
@ -285,20 +285,39 @@ static function int GetInvincibilityDuration(KFPlayerReplicationInfo KFPRI){
|
|||||||
static function int GetInvincibilitySafeMisses(KFPlayerReplicationInfo KFPRI){
|
static function int GetInvincibilitySafeMisses(KFPlayerReplicationInfo KFPRI){
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
static function SpecialHUDInfo(KFPlayerReplicationInfo KFPRI, Canvas C){
|
|
||||||
|
static function SpecialHUDInfo(KFPlayerReplicationInfo KFPRI, Canvas C)
|
||||||
|
{
|
||||||
local KFMonster KFEnemy;
|
local KFMonster KFEnemy;
|
||||||
local HUDKillingFloor HKF;
|
local HUDKillingFloor HKF;
|
||||||
|
local int i, hp;
|
||||||
local float MaxDistanceSquared;
|
local float MaxDistanceSquared;
|
||||||
|
|
||||||
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)
|
if (HKF == none || C.ViewPort.Actor.Pawn == none || MaxDistanceSquared <= 0)
|
||||||
return;
|
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)
|
// read and use player settings
|
||||||
|
// 0 - big zeds, 1 - all, 2 - disabled
|
||||||
|
i = NicePlayerController(C.ViewPort.actor).ZedHPBarStyle;
|
||||||
|
|
||||||
|
if (i == 2)
|
||||||
|
return;
|
||||||
|
else if (i == 1)
|
||||||
|
hp = 0;
|
||||||
|
else
|
||||||
|
hp = 1000;
|
||||||
|
|
||||||
|
foreach C.ViewPort.Actor.DynamicActors(class'KFMonster', KFEnemy)
|
||||||
|
{
|
||||||
|
// check with stopwatch
|
||||||
|
if (KFEnemy.Health > hp && (!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);
|
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)
|
if(KFPRI != none && PlayerController(KFPRI.Owner) != none && PlayerController(KFPRI.Owner).Pawn != none && VSize(PlayerController(KFPRI.Owner).Pawn.Velocity) > 0.0)
|
||||||
@ -321,19 +340,19 @@ static function string GetVetInfoText(byte Level, byte Type, optional byte Requi
|
|||||||
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){
|
||||||
return class'NicePack.NiceNade';
|
return class'NiceNade';
|
||||||
}
|
}
|
||||||
static function SetupAbilities(KFPlayerReplicationInfo KFPRI){}
|
static function SetupAbilities(KFPlayerReplicationInfo KFPRI){}
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
SkillGroupA(0)=Class'NicePack.NiceSkill'
|
SkillGroupA(0)=class'NiceSkill'
|
||||||
SkillGroupA(1)=Class'NicePack.NiceSkill'
|
SkillGroupA(1)=class'NiceSkill'
|
||||||
SkillGroupA(2)=Class'NicePack.NiceSkill'
|
SkillGroupA(2)=class'NiceSkill'
|
||||||
SkillGroupA(3)=Class'NicePack.NiceSkill'
|
SkillGroupA(3)=class'NiceSkill'
|
||||||
SkillGroupA(4)=Class'NicePack.NiceSkill'
|
SkillGroupA(4)=class'NiceSkill'
|
||||||
SkillGroupB(0)=Class'NicePack.NiceSkill'
|
SkillGroupB(0)=class'NiceSkill'
|
||||||
SkillGroupB(1)=Class'NicePack.NiceSkill'
|
SkillGroupB(1)=class'NiceSkill'
|
||||||
SkillGroupB(2)=Class'NicePack.NiceSkill'
|
SkillGroupB(2)=class'NiceSkill'
|
||||||
SkillGroupB(3)=Class'NicePack.NiceSkill'
|
SkillGroupB(3)=class'NiceSkill'
|
||||||
SkillGroupB(4)=Class'NicePack.NiceSkill'
|
SkillGroupB(4)=class'NiceSkill'
|
||||||
}
|
}
|
||||||
|
@ -141,16 +141,16 @@ static function SetupAbilities(KFPlayerReplicationInfo KFPRI){
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
bNewTypePerk=True
|
bNewTypePerk=True
|
||||||
SkillGroupA(0)=Class'NicePack.NiceSkillSharpshooterKillConfirmed'
|
SkillGroupA(0)=class'NiceSkillSharpshooterKillConfirmed'
|
||||||
SkillGroupA(1)=Class'NicePack.NiceSkillSharpshooterDamage'
|
SkillGroupA(1)=class'NiceSkillSharpshooterDamage'
|
||||||
SkillGroupA(2)=Class'NicePack.NiceSkillSharpshooterDieAlready'
|
SkillGroupA(2)=class'NiceSkillSharpshooterDieAlready'
|
||||||
SkillGroupA(3)=Class'NicePack.NiceSkillSharpshooterReaperA'
|
SkillGroupA(3)=class'NiceSkillSharpshooterReaperA'
|
||||||
SkillGroupA(4)=Class'NicePack.NiceSkillSharpshooterZEDAdrenaline'
|
SkillGroupA(4)=class'NiceSkillSharpshooterZEDAdrenaline'
|
||||||
SkillGroupB(0)=Class'NicePack.NiceSkillSharpshooterSurgical'
|
SkillGroupB(0)=class'NiceSkillSharpshooterSurgical'
|
||||||
SkillGroupB(1)=Class'NicePack.NiceSkillSharpshooterControl'
|
SkillGroupB(1)=class'NiceSkillSharpshooterControl'
|
||||||
SkillGroupB(2)=Class'NicePack.NiceSkillSharpshooterArdour'
|
SkillGroupB(2)=class'NiceSkillSharpshooterArdour'
|
||||||
SkillGroupB(3)=Class'NicePack.NiceSkillSharpshooterGunslingerA'
|
SkillGroupB(3)=class'NiceSkillSharpshooterGunslingerA'
|
||||||
SkillGroupB(4)=Class'NicePack.NiceSkillSharpshooterZEDHundredGauntlets'
|
SkillGroupB(4)=class'NiceSkillSharpshooterZEDHundredGauntlets'
|
||||||
progressArray0(0)=100
|
progressArray0(0)=100
|
||||||
progressArray0(1)=1000
|
progressArray0(1)=1000
|
||||||
progressArray0(2)=3000
|
progressArray0(2)=3000
|
||||||
@ -158,7 +158,7 @@ defaultproperties
|
|||||||
progressArray0(4)=30000
|
progressArray0(4)=30000
|
||||||
progressArray0(5)=100000
|
progressArray0(5)=100000
|
||||||
progressArray0(6)=200000
|
progressArray0(6)=200000
|
||||||
DefaultDamageType=Class'NicePack.NiceDamageTypeVetSharpshooter'
|
DefaultDamageType=class'NiceDamageTypeVetSharpshooter'
|
||||||
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_SharpShooter',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(0)=(PerkIcon=Texture'KillingFloorHUD.Perks.Perk_SharpShooter',StarIcon=Texture'KillingFloorHUD.HUD.Hud_Perk_Star',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_SharpShooter_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(1)=(PerkIcon=Texture'KillingFloor2HUD.Perk_Icons.Perk_SharpShooter_Gold',StarIcon=Texture'KillingFloor2HUD.Perk_Icons.Hud_Perk_Star_Gold',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_SharpShooter_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
OnHUDIcons(2)=(PerkIcon=Texture'ScrnTex.Perks.Perk_SharpShooter_Green',StarIcon=Texture'ScrnTex.Perks.Hud_Perk_Star_Green',DrawColor=(B=255,G=255,R=255,A=255))
|
||||||
|
@ -1,111 +0,0 @@
|
|||||||
class NiceTSCGame extends TSCGame;
|
|
||||||
// Copy-pasted from NiceGameType
|
|
||||||
var NicePack NicePackMutator;
|
|
||||||
function RegisterMutator(NicePack activePack){
|
|
||||||
NicePackMutator = activePack;
|
|
||||||
}
|
|
||||||
function SetupWave(){
|
|
||||||
Super.SetupWave();
|
|
||||||
// Event call
|
|
||||||
NicePackMutator.WaveStart();
|
|
||||||
}
|
|
||||||
function RestartPlayer(Controller aPlayer){
|
|
||||||
Super.RestartPlayer(aPlayer);
|
|
||||||
if(aPlayer.Pawn != none && NicePlayerController(aPlayer) != none)
|
|
||||||
NicePlayerController(aPlayer).PawnSpawned();
|
|
||||||
}
|
|
||||||
State MatchInProgress{
|
|
||||||
function BeginState(){
|
|
||||||
Super(Invasion).BeginState();
|
|
||||||
|
|
||||||
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 DramaticEvent(float BaseZedTimePossibility, optional float DesiredZedTimeDuration){
|
|
||||||
local bool bWasZedTime;
|
|
||||||
bWasZedTime = bZEDTimeActive;
|
|
||||||
Super.DramaticEvent(BaseZedTimePossibility, DesiredZedTimeDuration);
|
|
||||||
// Call events
|
|
||||||
if(!bWasZedTime && bZEDTimeActive)
|
|
||||||
NicePackMutator.ZedTimeActivated();
|
|
||||||
}
|
|
||||||
event Tick(float DeltaTime){
|
|
||||||
local float TrueTimeFactor;
|
|
||||||
local Controller C;
|
|
||||||
if(bZEDTimeActive){
|
|
||||||
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){
|
|
||||||
local KFSteamStatsAndAchievements StatsAndAchievements;
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Reloaded to award damage
|
|
||||||
function int ReduceDamage(int Damage, pawn injured, pawn instigatedBy, vector HitLocation, out vector Momentum, class<DamageType> DamageType){
|
|
||||||
local NiceMonster niceZed;
|
|
||||||
local KFPlayerController PC;
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Super.ReduceDamage(Damage, injured, InstigatedBy, HitLocation, Momentum, DamageType);
|
|
||||||
}
|
|
||||||
defaultproperties
|
|
||||||
{
|
|
||||||
GameName="Nice Team Survival Competition"
|
|
||||||
Description="Nice Edition of Team Survival Competition (TSCGame)."
|
|
||||||
}
|
|
@ -1,22 +0,0 @@
|
|||||||
class NiceTSCLobbyFooter extends NiceLobbyFooter;
|
|
||||||
defaultproperties
|
|
||||||
{
|
|
||||||
Begin Object Class=GUIButton Name=ReadyButton
|
|
||||||
Caption="Ready"
|
|
||||||
MenuState=MSAT_Disabled
|
|
||||||
Hint="Click to indicate you are ready to play"
|
|
||||||
WinTop=0.966146
|
|
||||||
WinLeft=0.280000
|
|
||||||
WinWidth=0.120000
|
|
||||||
WinHeight=0.033203
|
|
||||||
RenderWeight=2.000000
|
|
||||||
TabOrder=4
|
|
||||||
bBoundToParent=True
|
|
||||||
bVisible=False
|
|
||||||
ToolTip=None
|
|
||||||
|
|
||||||
OnClick=TSCLobbyFooter.OnFooterClick
|
|
||||||
OnKeyEvent=ReadyButton.InternalOnKeyEvent
|
|
||||||
End Object
|
|
||||||
b_Ready=GUIButton'NicePack.NiceTSCLobbyFooter.ReadyButton'
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
class NiceTSCLobbyMenu extends TSCLobbyMenu;
|
|
||||||
defaultproperties
|
|
||||||
{
|
|
||||||
Begin Object Class=NiceTSCLobbyFooter Name=BuyFooter
|
|
||||||
RenderWeight=0.300000
|
|
||||||
TabOrder=8
|
|
||||||
bBoundToParent=False
|
|
||||||
bScaleToParent=False
|
|
||||||
OnPreDraw=BuyFooter.InternalOnPreDraw
|
|
||||||
End Object
|
|
||||||
t_Footer=NiceTSCLobbyFooter'NicePack.NiceTSCLobbyMenu.BuyFooter'
|
|
||||||
}
|
|
50
sources/Utility.uc
Normal file
50
sources/Utility.uc
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
class Utility extends object
|
||||||
|
abstract;
|
||||||
|
|
||||||
|
// custom, colored hints
|
||||||
|
var const array<string> NiceHints;
|
||||||
|
|
||||||
|
final static function string GetNiceHint()
|
||||||
|
{
|
||||||
|
local string white, blue;
|
||||||
|
|
||||||
|
white = chr(27) $ chr(200) $ chr(200) $ chr(200);
|
||||||
|
blue = chr(27) $ chr(1) $ chr(100) $ chr(200);
|
||||||
|
|
||||||
|
return white $ "Nice Floor: " $ blue $ default.NiceHints[rand(default.NiceHints.Length)];
|
||||||
|
}
|
||||||
|
|
||||||
|
final static function array<string> GetNiceHintArray()
|
||||||
|
{
|
||||||
|
local int i;
|
||||||
|
local string white, blue;
|
||||||
|
local array<string> Hints;
|
||||||
|
|
||||||
|
white = chr(27) $ chr(200) $ chr(200) $ chr(200);
|
||||||
|
blue = chr(27) $ chr(1) $ chr(100) $ chr(200);
|
||||||
|
|
||||||
|
for ( i = 0; i < default.NiceHints.Length; i++ )
|
||||||
|
Hints[Hints.Length] = white $ "Nice Floor: " $ blue $ default.NiceHints[i];
|
||||||
|
|
||||||
|
return Hints;
|
||||||
|
}
|
||||||
|
|
||||||
|
defaultproperties
|
||||||
|
{
|
||||||
|
// 'funny', customized hints
|
||||||
|
NiceHints[00]="Most weapons are clientside, so aim for the heads!"
|
||||||
|
NiceHints[01]="If you feel this is hard, you are not alone."
|
||||||
|
NiceHints[02]="This mode will always be in alpha state. Kill your hope."
|
||||||
|
NiceHints[03]="Only KAIO is able to compile this."
|
||||||
|
NiceHints[04]="We really hate kiting, so we made camping much harder."
|
||||||
|
NiceHints[05]="We love camping, so we made kiting almost impossible."
|
||||||
|
NiceHints[06]="You can play this if you beat 5 faked / 6p HP zeds."
|
||||||
|
NiceHints[07]="Hold or Die!"
|
||||||
|
NiceHints[08]="The Wipe Train has no breaks."
|
||||||
|
NiceHints[09]="You're welcome with requests. Just remember we are super lazy."
|
||||||
|
NiceHints[10]="If nothing works - it's intended."
|
||||||
|
NiceHints[11]="If you find any bug, we can make it a feature."
|
||||||
|
NiceHints[12]="Play this only if you don't have real life."
|
||||||
|
NiceHints[13]="You suck and we hate you."
|
||||||
|
NiceHints[14]="GITGUD"
|
||||||
|
}
|
@ -189,11 +189,11 @@ simulated function DoToggle(){
|
|||||||
ServerApplyFireModes();
|
ServerApplyFireModes();
|
||||||
PlayOwnedSound(ToggleSound, SLOT_none, 2.0,,,, false);
|
PlayOwnedSound(ToggleSound, SLOT_none, 2.0,,,, false);
|
||||||
if(MainFire == ETYPE_AUTO)
|
if(MainFire == ETYPE_AUTO)
|
||||||
player.ReceiveLocalizedMessage(class'NicePack.NiceAssaultRifleMessage', 1);
|
player.ReceiveLocalizedMessage(class'NiceAssaultRifleMessage', 1);
|
||||||
else if(MainFire == ETYPE_SEMI)
|
else if(MainFire == ETYPE_SEMI)
|
||||||
player.ReceiveLocalizedMessage(class'NicePack.NiceAssaultRifleMessage', 0);
|
player.ReceiveLocalizedMessage(class'NiceAssaultRifleMessage', 0);
|
||||||
else if(MainFire == ETYPE_BURST)
|
else if(MainFire == ETYPE_BURST)
|
||||||
player.ReceiveLocalizedMessage(class'NicePack.NiceAssaultRifleMessage', 2);
|
player.ReceiveLocalizedMessage(class'NiceAssaultRifleMessage', 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
simulated function SecondDoToggle(){
|
simulated function SecondDoToggle(){
|
||||||
@ -226,9 +226,9 @@ simulated function SecondDoToggle(){
|
|||||||
ServerApplyFireModes();
|
ServerApplyFireModes();
|
||||||
PlayOwnedSound(ToggleSound, SLOT_none, 2.0,,,, false);
|
PlayOwnedSound(ToggleSound, SLOT_none, 2.0,,,, false);
|
||||||
if(choosenType == ETYPE_SEMI)
|
if(choosenType == ETYPE_SEMI)
|
||||||
nicePlayer.ReceiveLocalizedMessage(class'NicePack.NiceAssaultRifleMessage', 4);
|
nicePlayer.ReceiveLocalizedMessage(class'NiceAssaultRifleMessage', 4);
|
||||||
else
|
else
|
||||||
nicePlayer.ReceiveLocalizedMessage(class'NicePack.NiceAssaultRifleMessage', 5);
|
nicePlayer.ReceiveLocalizedMessage(class'NiceAssaultRifleMessage', 5);
|
||||||
}
|
}
|
||||||
simulated function ClientNiceChangeFireMode(bool bNewWaitForRelease, bool bNewSemiMustBurst){
|
simulated function ClientNiceChangeFireMode(bool bNewWaitForRelease, bool bNewSemiMustBurst){
|
||||||
local NiceFire niceF;
|
local NiceFire niceF;
|
||||||
|
@ -34,7 +34,7 @@ simulated function ReduceAmmoClient(){
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
ProjectileSpeed=12500.000000
|
ProjectileSpeed=12500.000000
|
||||||
bulletClass=Class'NicePack.NiceMedicProjectile'
|
bulletClass=class'NiceMedicProjectile'
|
||||||
FireAimedAnim="Fire_Iron"
|
FireAimedAnim="Fire_Iron"
|
||||||
FireSoundRef="KF_MP7Snd.Medicgun_Fire"
|
FireSoundRef="KF_MP7Snd.Medicgun_Fire"
|
||||||
StereoFireSoundRef="KF_MP7Snd.Medicgun_FireST"
|
StereoFireSoundRef="KF_MP7Snd.Medicgun_FireST"
|
||||||
|
@ -9,7 +9,7 @@ defaultproperties
|
|||||||
heatPart=1.000000
|
heatPart=1.000000
|
||||||
bDealBurningDamage=True
|
bDealBurningDamage=True
|
||||||
bCheckForHeadShots=False
|
bCheckForHeadShots=False
|
||||||
//WeaponClass=Class'NicePack.NiceFlame9mm'
|
//WeaponClass=class'NiceFlame9mm'
|
||||||
DeathString="%k incinerated %o."
|
DeathString="%k incinerated %o."
|
||||||
FemaleSuicide="%o roasted herself alive."
|
FemaleSuicide="%o roasted herself alive."
|
||||||
MaleSuicide="%o roasted himself alive."
|
MaleSuicide="%o roasted himself alive."
|
||||||
|
@ -428,7 +428,7 @@ function GiveAmmo(int m, WeaponPickup WP, bool bJustSpawned){
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
SingleClass=Class'NicePack.NiceSingle'
|
SingleClass=class'NiceSingle'
|
||||||
altFlashBoneName="Tip_Left"
|
altFlashBoneName="Tip_Left"
|
||||||
altTPAnim="DualiesAttackLeft"
|
altTPAnim="DualiesAttackLeft"
|
||||||
altWeaponAttach="Bone_weapon2"
|
altWeaponAttach="Bone_weapon2"
|
||||||
@ -460,7 +460,7 @@ defaultproperties
|
|||||||
TraderInfoTexture=Texture'KillingFloorHUD.Trader_Weapon_Images.Trader_Dual_9mm'
|
TraderInfoTexture=Texture'KillingFloorHUD.Trader_Weapon_Images.Trader_Dual_9mm'
|
||||||
ZoomInRotation=(Pitch=0,Roll=0)
|
ZoomInRotation=(Pitch=0,Roll=0)
|
||||||
ZoomedDisplayFOV=65.000000
|
ZoomedDisplayFOV=65.000000
|
||||||
FireModeClass(0)=Class'NicePack.NiceDualiesFire'
|
FireModeClass(0)=class'NiceDualiesFire'
|
||||||
FireModeClass(1)=Class'KFMod.NoFire'
|
FireModeClass(1)=Class'KFMod.NoFire'
|
||||||
PutDownAnim="PutDown"
|
PutDownAnim="PutDown"
|
||||||
AIRating=0.440000
|
AIRating=0.440000
|
||||||
@ -472,10 +472,10 @@ defaultproperties
|
|||||||
Priority=65
|
Priority=65
|
||||||
InventoryGroup=2
|
InventoryGroup=2
|
||||||
GroupOffset=2
|
GroupOffset=2
|
||||||
PickupClass=Class'NicePack.NiceDualiesPickup'
|
PickupClass=class'NiceDualiesPickup'
|
||||||
PlayerViewOffset=(X=20.000000,Z=-7.000000)
|
PlayerViewOffset=(X=20.000000,Z=-7.000000)
|
||||||
BobDamping=7.000000
|
BobDamping=7.000000
|
||||||
AttachmentClass=Class'NicePack.NiceDualiesAttachment'
|
AttachmentClass=class'NiceDualiesAttachment'
|
||||||
IconCoords=(X1=229,Y1=258,X2=296,Y2=307)
|
IconCoords=(X1=229,Y1=258,X2=296,Y2=307)
|
||||||
ItemName="!!!Dual something"
|
ItemName="!!!Dual something"
|
||||||
DrawScale=0.900000
|
DrawScale=0.900000
|
||||||
|
@ -6,7 +6,7 @@ defaultproperties
|
|||||||
AmmoPickupAmount=30
|
AmmoPickupAmount=30
|
||||||
MaxAmmo=480
|
MaxAmmo=480
|
||||||
InitialAmount=240
|
InitialAmount=240
|
||||||
PickupClass=Class'NicePack.NiceDualiesAmmoPickup'
|
PickupClass=class'NiceDualiesAmmoPickup'
|
||||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||||
IconCoords=(X1=413,Y1=82,X2=457,Y2=125)
|
IconCoords=(X1=413,Y1=82,X2=457,Y2=125)
|
||||||
ItemName="Dualies bullets"
|
ItemName="Dualies bullets"
|
||||||
|
@ -3,7 +3,7 @@ class NiceDualiesAmmoPickup extends NiceAmmoPickup;
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
AmmoAmount=30
|
AmmoAmount=30
|
||||||
InventoryType=Class'NicePack.NiceDualiesAmmo'
|
InventoryType=class'NiceDualiesAmmo'
|
||||||
PickupMessage="Rounds (9mm)"
|
PickupMessage="Rounds (9mm)"
|
||||||
StaticMesh=StaticMesh'KillingFloorStatics.DualiesAmmo'
|
StaticMesh=StaticMesh'KillingFloorStatics.DualiesAmmo'
|
||||||
}
|
}
|
||||||
|
@ -234,7 +234,7 @@ defaultproperties
|
|||||||
TweenTime=0.025000
|
TweenTime=0.025000
|
||||||
FireForce="AssaultRifleFire"
|
FireForce="AssaultRifleFire"
|
||||||
FireRate=0.087500
|
FireRate=0.087500
|
||||||
AmmoClass=Class'NicePack.NiceSingleAmmo'
|
AmmoClass=class'NiceSingleAmmo'
|
||||||
ShakeRotMag=(X=75.000000,Y=75.000000,Z=250.000000)
|
ShakeRotMag=(X=75.000000,Y=75.000000,Z=250.000000)
|
||||||
ShakeRotRate=(X=10000.000000,Y=10000.000000,Z=10000.000000)
|
ShakeRotRate=(X=10000.000000,Y=10000.000000,Z=10000.000000)
|
||||||
ShakeRotTime=3.000000
|
ShakeRotTime=3.000000
|
||||||
|
@ -30,7 +30,7 @@ defaultproperties
|
|||||||
AmmoMesh=StaticMesh'KillingFloorStatics.DualiesAmmo'
|
AmmoMesh=StaticMesh'KillingFloorStatics.DualiesAmmo'
|
||||||
CorrespondingPerkIndex=2
|
CorrespondingPerkIndex=2
|
||||||
EquipmentCategoryID=1
|
EquipmentCategoryID=1
|
||||||
InventoryType=Class'NicePack.NiceDualies'
|
InventoryType=class'NiceDualies'
|
||||||
PickupMessage="You found another 9mm handgun"
|
PickupMessage="You found another 9mm handgun"
|
||||||
PickupForce="AssaultRiflePickup"
|
PickupForce="AssaultRiflePickup"
|
||||||
StaticMesh=StaticMesh'KF_pickups_Trip.pistol.double9mm_pickup'
|
StaticMesh=StaticMesh'KF_pickups_Trip.pistol.double9mm_pickup'
|
||||||
|
@ -180,7 +180,7 @@ function GiveTo(Pawn other, optional Pickup Pickup){
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
DualClass=Class'NicePack.NiceDualies'
|
DualClass=class'NiceDualies'
|
||||||
bHasChargePhase=False
|
bHasChargePhase=False
|
||||||
FirstPersonFlashlightOffset=(X=-20.000000,Y=-22.000000,Z=8.000000)
|
FirstPersonFlashlightOffset=(X=-20.000000,Y=-22.000000,Z=8.000000)
|
||||||
MagCapacity=15
|
MagCapacity=15
|
||||||
@ -195,7 +195,7 @@ defaultproperties
|
|||||||
StandardDisplayFOV=70.000000
|
StandardDisplayFOV=70.000000
|
||||||
TraderInfoTexture=Texture'KillingFloorHUD.Trader_Weapon_Images.Trader_9mm'
|
TraderInfoTexture=Texture'KillingFloorHUD.Trader_Weapon_Images.Trader_9mm'
|
||||||
ZoomedDisplayFOV=65.000000
|
ZoomedDisplayFOV=65.000000
|
||||||
FireModeClass(0)=Class'NicePack.NiceSingleFire'
|
FireModeClass(0)=class'NiceSingleFire'
|
||||||
FireModeClass(1)=Class'KFMod.NoFire'
|
FireModeClass(1)=Class'KFMod.NoFire'
|
||||||
PutDownAnim="PutDown"
|
PutDownAnim="PutDown"
|
||||||
AIRating=0.250000
|
AIRating=0.250000
|
||||||
@ -206,10 +206,10 @@ defaultproperties
|
|||||||
Priority=60
|
Priority=60
|
||||||
InventoryGroup=2
|
InventoryGroup=2
|
||||||
GroupOffset=1
|
GroupOffset=1
|
||||||
PickupClass=Class'NicePack.NiceSinglePickup'
|
PickupClass=class'NiceSinglePickup'
|
||||||
PlayerViewOffset=(X=20.000000,Y=25.000000,Z=-10.000000)
|
PlayerViewOffset=(X=20.000000,Y=25.000000,Z=-10.000000)
|
||||||
BobDamping=6.000000
|
BobDamping=6.000000
|
||||||
AttachmentClass=Class'NicePack.NiceSingleAttachment'
|
AttachmentClass=class'NiceSingleAttachment'
|
||||||
IconCoords=(X1=434,Y1=253,X2=506,Y2=292)
|
IconCoords=(X1=434,Y1=253,X2=506,Y2=292)
|
||||||
ItemName="Just a single pistol"
|
ItemName="Just a single pistol"
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ class NiceSingleAmmoPickup extends NiceAmmoPickup;
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
AmmoAmount=20
|
AmmoAmount=20
|
||||||
InventoryType=Class'NicePack.NiceSingleAmmo'
|
InventoryType=class'NiceSingleAmmo'
|
||||||
RespawnTime=0.000000
|
RespawnTime=0.000000
|
||||||
PickupMessage="Rounds (9mm)"
|
PickupMessage="Rounds (9mm)"
|
||||||
StaticMesh=StaticMesh'KillingFloorStatics.DualiesAmmo'
|
StaticMesh=StaticMesh'KillingFloorStatics.DualiesAmmo'
|
||||||
|
@ -33,7 +33,7 @@ defaultproperties
|
|||||||
TweenTime=0.025000
|
TweenTime=0.025000
|
||||||
FireForce="AssaultRifleFire"
|
FireForce="AssaultRifleFire"
|
||||||
FireRate=0.175000
|
FireRate=0.175000
|
||||||
AmmoClass=Class'NicePack.NiceSingleAmmo'
|
AmmoClass=class'NiceSingleAmmo'
|
||||||
ShakeRotMag=(X=75.000000,Y=75.000000,Z=250.000000)
|
ShakeRotMag=(X=75.000000,Y=75.000000,Z=250.000000)
|
||||||
ShakeRotRate=(X=10000.000000,Y=10000.000000,Z=10000.000000)
|
ShakeRotRate=(X=10000.000000,Y=10000.000000,Z=10000.000000)
|
||||||
ShakeRotTime=3.000000
|
ShakeRotTime=3.000000
|
||||||
|
@ -74,7 +74,7 @@ defaultproperties
|
|||||||
AmmoMesh=StaticMesh'KillingFloorStatics.DualiesAmmo'
|
AmmoMesh=StaticMesh'KillingFloorStatics.DualiesAmmo'
|
||||||
CorrespondingPerkIndex=2
|
CorrespondingPerkIndex=2
|
||||||
EquipmentCategoryID=1
|
EquipmentCategoryID=1
|
||||||
InventoryType=Class'NicePack.NiceSingle'
|
InventoryType=class'NiceSingle'
|
||||||
PickupMessage="You got the 9mm handgun"
|
PickupMessage="You got the 9mm handgun"
|
||||||
PickupSound=Sound'KF_9MMSnd.9mm_Pickup'
|
PickupSound=Sound'KF_9MMSnd.9mm_Pickup'
|
||||||
PickupForce="AssaultRiflePickup"
|
PickupForce="AssaultRiflePickup"
|
||||||
|
@ -12,8 +12,8 @@ simulated function ReleaseNails(optional bool bServerOnly){
|
|||||||
shotParams.damage = 52;
|
shotParams.damage = 52;
|
||||||
shotParams.projSpeed = 3500.0;
|
shotParams.projSpeed = 3500.0;
|
||||||
shotParams.momentum = 50000;
|
shotParams.momentum = 50000;
|
||||||
shotParams.shotDamageType = class'NicePack.NiceDamTypeNailGun';
|
shotParams.shotDamageType = class'NiceDamTypeNailGun';
|
||||||
shotParams.bulletClass = class'NicePack.NiceNail';
|
shotParams.bulletClass = class'NiceNail';
|
||||||
shotParams.bCausePain = true;
|
shotParams.bCausePain = true;
|
||||||
if(fireContext.instigator != none)
|
if(fireContext.instigator != none)
|
||||||
niceMut = class'NicePack'.static.Myself(fireContext.Instigator.Level);
|
niceMut = class'NicePack'.static.Myself(fireContext.Instigator.Level);
|
||||||
|
@ -450,44 +450,55 @@ function PlayFiring(){
|
|||||||
if(!currentContext.bIsBursting)
|
if(!currentContext.bIsBursting)
|
||||||
FireCount ++;
|
FireCount ++;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Handle setting new recoil
|
// Handle setting new recoil
|
||||||
simulated function HandleRecoil(float Rec){
|
simulated function HandleRecoil(float Rec)
|
||||||
|
{
|
||||||
local int stationarySeconds;
|
local int stationarySeconds;
|
||||||
local rotator NewRecoilRotation;
|
local rotator NewRecoilRotation;
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
local NiceHumanPawn nicePawn;
|
local NiceHumanPawn nicePawn;
|
||||||
local vector AdjustedVelocity;
|
local vector AdjustedVelocity;
|
||||||
local float AdjustedSpeed;
|
local float AdjustedSpeed;
|
||||||
local KFWeapon kfWeap;
|
local KFWeapon KFW;
|
||||||
if(Instigator != none){
|
|
||||||
|
if(Instigator != none)
|
||||||
|
{
|
||||||
nicePlayer = NicePlayerController(Instigator.Controller);
|
nicePlayer = NicePlayerController(Instigator.Controller);
|
||||||
nicePawn = NiceHumanPawn(Instigator);
|
nicePawn = NiceHumanPawn(Instigator);
|
||||||
}
|
}
|
||||||
if(nicePlayer == none || nicePawn == none)
|
if(nicePlayer == none || nicePawn == none)
|
||||||
return;
|
return;
|
||||||
if(bResetRecoil || nicePlayer.IsZedTimeActive() && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillEnforcerZEDBarrage')){
|
if(bResetRecoil || nicePlayer.IsZedTimeActive() && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillEnforcerZEDBarrage'))
|
||||||
|
{
|
||||||
Rec = 0.0;
|
Rec = 0.0;
|
||||||
bResetRecoil = false;
|
bResetRecoil = false;
|
||||||
}
|
}
|
||||||
kfWeap= KFWeapon(Weapon);
|
KFW= KFWeapon(Weapon);
|
||||||
if (kfWeap.bAimingRifle) {
|
if (KFW.bAimingRifle)
|
||||||
|
{
|
||||||
Rec *= 0.5;
|
Rec *= 0.5;
|
||||||
}
|
}
|
||||||
if(nicePawn.stationaryTime > 0.0 && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillHeavyStablePosition')){
|
if (nicePawn.stationaryTime > 0.0 && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillHeavyStablePosition'))
|
||||||
|
{
|
||||||
stationarySeconds = Ceil(2 * nicePawn.stationaryTime) - 1;
|
stationarySeconds = Ceil(2 * nicePawn.stationaryTime) - 1;
|
||||||
Rec *= FMax(0.0, 1.0 - (stationarySeconds * class'NiceSkillHeavyStablePosition'.default.recoilDampeningBonus));
|
Rec *= FMax(0.0, 1.0 - (stationarySeconds * class'NiceSkillHeavyStablePosition'.default.recoilDampeningBonus));
|
||||||
}
|
}
|
||||||
if(!nicePlayer.bFreeCamera){
|
if (!nicePlayer.bFreeCamera)
|
||||||
if(Weapon.GetFireMode(ThisModeNum).bIsFiring || currentContext.bIsBursting){
|
{
|
||||||
|
if (Weapon.GetFireMode(ThisModeNum).bIsFiring || currentContext.bIsBursting)
|
||||||
|
{
|
||||||
NewRecoilRotation.Pitch = RandRange(maxVerticalRecoilAngle * 0.5, maxVerticalRecoilAngle);
|
NewRecoilRotation.Pitch = RandRange(maxVerticalRecoilAngle * 0.5, maxVerticalRecoilAngle);
|
||||||
NewRecoilRotation.Yaw = RandRange(maxHorizontalRecoilAngle * 0.5, maxHorizontalRecoilAngle);
|
NewRecoilRotation.Yaw = RandRange(maxHorizontalRecoilAngle * 0.5, maxHorizontalRecoilAngle);
|
||||||
|
|
||||||
if(!bRecoilRightOnly && Rand(2) == 1)
|
if (!bRecoilRightOnly && Rand(2) == 1)
|
||||||
NewRecoilRotation.Yaw *= -1;
|
NewRecoilRotation.Yaw *= -1;
|
||||||
|
|
||||||
if(RecoilVelocityScale > 0){
|
if (RecoilVelocityScale > 0)
|
||||||
if(Weapon.Owner != none && Weapon.Owner.Physics == PHYS_Falling &&
|
{
|
||||||
Weapon.Owner.PhysicsVolume.Gravity.Z > class'PhysicsVolume'.default.Gravity.Z){
|
if (Weapon.Owner != none && Weapon.Owner.Physics == PHYS_Falling &&
|
||||||
|
Weapon.Owner.PhysicsVolume.Gravity.Z > class'PhysicsVolume'.default.Gravity.Z)
|
||||||
|
{
|
||||||
AdjustedVelocity = Weapon.Owner.Velocity;
|
AdjustedVelocity = Weapon.Owner.Velocity;
|
||||||
// Ignore Z velocity in low grav so we don't get massive recoil
|
// Ignore Z velocity in low grav so we don't get massive recoil
|
||||||
AdjustedVelocity.Z = 0;
|
AdjustedVelocity.Z = 0;
|
||||||
@ -497,7 +508,8 @@ simulated function HandleRecoil(float Rec){
|
|||||||
NewRecoilRotation.Pitch += (AdjustedSpeed * RecoilVelocityScale * 0.5);
|
NewRecoilRotation.Pitch += (AdjustedSpeed * RecoilVelocityScale * 0.5);
|
||||||
NewRecoilRotation.Yaw += (AdjustedSpeed * RecoilVelocityScale * 0.5);
|
NewRecoilRotation.Yaw += (AdjustedSpeed * RecoilVelocityScale * 0.5);
|
||||||
}
|
}
|
||||||
else{
|
else
|
||||||
|
{
|
||||||
NewRecoilRotation.Pitch += (VSize(Weapon.Owner.Velocity) * RecoilVelocityScale);
|
NewRecoilRotation.Pitch += (VSize(Weapon.Owner.Velocity) * RecoilVelocityScale);
|
||||||
NewRecoilRotation.Yaw += (VSize(Weapon.Owner.Velocity) * RecoilVelocityScale);
|
NewRecoilRotation.Yaw += (VSize(Weapon.Owner.Velocity) * RecoilVelocityScale);
|
||||||
}
|
}
|
||||||
@ -507,13 +519,14 @@ simulated function HandleRecoil(float Rec){
|
|||||||
NewRecoilRotation.Yaw += (Instigator.HealthMax / Instigator.Health * 5);
|
NewRecoilRotation.Yaw += (Instigator.HealthMax / Instigator.Health * 5);
|
||||||
NewRecoilRotation *= Rec;
|
NewRecoilRotation *= Rec;
|
||||||
|
|
||||||
if(default.FireRate <= 0)
|
if (default.FireRate <= 0)
|
||||||
nicePlayer.SetRecoil(NewRecoilRotation, RecoilRate);
|
nicePlayer.SetRecoil(NewRecoilRotation, RecoilRate);
|
||||||
else
|
else
|
||||||
nicePlayer.SetRecoil(NewRecoilRotation, RecoilRate * (FireRate / default.FireRate));
|
nicePlayer.SetRecoil(NewRecoilRotation, RecoilRate * (FireRate / default.FireRate));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function DoFireEffect(){
|
function DoFireEffect(){
|
||||||
local bool bIsShotgunBullet, bForceComplexTraj;
|
local bool bIsShotgunBullet, bForceComplexTraj;
|
||||||
local bool bPinpoint;
|
local bool bPinpoint;
|
||||||
@ -541,7 +554,7 @@ function DoFireEffect(){
|
|||||||
activeSpread *= class'NiceSkillEnforcerBombard'.default.spreadMult;
|
activeSpread *= class'NiceSkillEnforcerBombard'.default.spreadMult;
|
||||||
}
|
}
|
||||||
bIsShotgunBullet = ClassIsChildOf(fireShots[currentShot].bulletClass, class'NiceShotgunPellet');
|
bIsShotgunBullet = ClassIsChildOf(fireShots[currentShot].bulletClass, class'NiceShotgunPellet');
|
||||||
if( bIsShotgunBullet && weapon.class != class'NicePack.NiceSpas' && weapon.class != class'NiceNailGun'
|
if( bIsShotgunBullet && weapon.class != class'NiceSpas' && weapon.class != class'NiceNailGun'
|
||||||
&& class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillSupportSlugs') )
|
&& class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillSupportSlugs') )
|
||||||
activeSpread = 0.0;
|
activeSpread = 0.0;
|
||||||
if(bIsShotgunBullet && activeSpread <= 0.0 && !bPinpoint)
|
if(bIsShotgunBullet && activeSpread <= 0.0 && !bPinpoint)
|
||||||
@ -696,7 +709,7 @@ defaultproperties
|
|||||||
ProjPerFire=1
|
ProjPerFire=1
|
||||||
ProjectileSpeed=1524.000000
|
ProjectileSpeed=1524.000000
|
||||||
MaxBurstLength=3
|
MaxBurstLength=3
|
||||||
bulletClass=Class'NicePack.NiceBullet'
|
bulletClass=class'NiceBullet'
|
||||||
contBonus=1.200000
|
contBonus=1.200000
|
||||||
contBonusReset=True
|
contBonusReset=True
|
||||||
maxBonusContLenght=1
|
maxBonusContLenght=1
|
||||||
|
@ -1331,55 +1331,75 @@ function SetNiceData(NicePlainData.Data transferData, optional NiceHumanPawn new
|
|||||||
secondaryCharge = class'NicePlainData'.static.GetInt(transferData, "ChargeAmount", 1);
|
secondaryCharge = class'NicePlainData'.static.GetInt(transferData, "ChargeAmount", 1);
|
||||||
ClientSetSndCharge(secondaryCharge);
|
ClientSetSndCharge(secondaryCharge);
|
||||||
}
|
}
|
||||||
simulated function ApplyLaserState(){
|
|
||||||
|
simulated function ApplyLaserState()
|
||||||
|
{
|
||||||
bLaserActive = LaserType > 0;
|
bLaserActive = LaserType > 0;
|
||||||
if(Role < ROLE_Authority)
|
if (Role < ROLE_Authority)
|
||||||
ServerSetLaserType(LaserType);
|
ServerSetLaserType(LaserType);
|
||||||
if(NiceAttachment(ThirdPersonActor) != none)
|
if (NiceAttachment(ThirdPersonActor) != none)
|
||||||
NiceAttachment(ThirdPersonActor).SetLaserType(LaserType);
|
NiceAttachment(ThirdPersonActor).SetLaserType(LaserType);
|
||||||
|
|
||||||
if(!Instigator.IsLocallyControlled())
|
// Instigator accessed none fix
|
||||||
|
if (Instigator == none || !Instigator.IsLocallyControlled())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(bLaserActive){
|
if (bLaserActive)
|
||||||
if(LaserDot == none)
|
{
|
||||||
|
if (LaserDot == none)
|
||||||
LaserDot = Spawn(LaserDotClass, self);
|
LaserDot = Spawn(LaserDotClass, self);
|
||||||
LaserDot.SetLaserType(LaserType);
|
LaserDot.SetLaserType(LaserType);
|
||||||
if(altLaserAttachmentBone != ''){
|
if (altLaserAttachmentBone != '')
|
||||||
if(altLaserDot == none)
|
{
|
||||||
|
if (altLaserDot == none)
|
||||||
altLaserDot = Spawn(LaserDotClass, self);
|
altLaserDot = Spawn(LaserDotClass, self);
|
||||||
altLaserDot.SetLaserType(LaserType);
|
altLaserDot.SetLaserType(LaserType);
|
||||||
}
|
}
|
||||||
//spawn 1-st person laser attachment for weapon owner
|
// spawn 1-st person laser attachment for weapon owner
|
||||||
if(LaserAttachment == none){
|
if (LaserAttachment == none)
|
||||||
|
{
|
||||||
SetBoneRotation(LaserAttachmentBone, LaserAttachmentRotation);
|
SetBoneRotation(LaserAttachmentBone, LaserAttachmentRotation);
|
||||||
LaserAttachment = Spawn(LaserAttachmentClass,,,,);
|
LaserAttachment = Spawn(LaserAttachmentClass,,,,);
|
||||||
|
if (LaserAttachment != none)
|
||||||
|
{
|
||||||
AttachToBone(LaserAttachment, LaserAttachmentBone);
|
AttachToBone(LaserAttachment, LaserAttachmentBone);
|
||||||
if(LaserAttachment != none)
|
|
||||||
LaserAttachment.SetRelativeLocation(LaserAttachmentOffset);
|
LaserAttachment.SetRelativeLocation(LaserAttachmentOffset);
|
||||||
}
|
}
|
||||||
if(altLaserAttachment == none && altLaserAttachmentBone != ''){
|
}
|
||||||
|
else
|
||||||
|
LaserAttachment.bHidden = false;
|
||||||
|
|
||||||
|
if (altLaserAttachment == none)
|
||||||
|
{
|
||||||
|
if (altLaserAttachmentBone != '')
|
||||||
|
{
|
||||||
SetBoneRotation(altLaserAttachmentBone, altLaserAttachmentRotation);
|
SetBoneRotation(altLaserAttachmentBone, altLaserAttachmentRotation);
|
||||||
altLaserAttachment = Spawn(LaserAttachmentClass,,,,);
|
altLaserAttachment = Spawn(LaserAttachmentClass,,,,);
|
||||||
|
if (altLaserAttachment != none)
|
||||||
|
{
|
||||||
AttachToBone(altLaserAttachment, altLaserAttachmentBone);
|
AttachToBone(altLaserAttachment, altLaserAttachmentBone);
|
||||||
if(altLaserAttachment != none)
|
|
||||||
altLaserAttachment.SetRelativeLocation(altLaserAttachmentOffset);
|
altLaserAttachment.SetRelativeLocation(altLaserAttachmentOffset);
|
||||||
}
|
}
|
||||||
ConstantColor'ScrnTex.Laser.LaserColor'.Color = LaserDot.GetLaserColor();
|
|
||||||
LaserAttachment.bHidden = false;
|
|
||||||
altLaserAttachment.bHidden = false;
|
|
||||||
}
|
}
|
||||||
else{
|
}
|
||||||
if(LaserAttachment != none)
|
else
|
||||||
|
altLaserAttachment.bHidden = false;
|
||||||
|
|
||||||
|
ConstantColor'ScrnTex.Laser.LaserColor'.Color = LaserDot.GetLaserColor();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (LaserAttachment != none)
|
||||||
LaserAttachment.bHidden = true;
|
LaserAttachment.bHidden = true;
|
||||||
if(altLaserAttachment != none)
|
if (altLaserAttachment != none)
|
||||||
altLaserAttachment.bHidden = true;
|
altLaserAttachment.bHidden = true;
|
||||||
if(LaserDot != none)
|
if (LaserDot != none)
|
||||||
LaserDot.Destroy();
|
LaserDot.Destroy();
|
||||||
if(altLaserDot != none)
|
if (altLaserDot != none)
|
||||||
altLaserDot.Destroy();
|
altLaserDot.Destroy();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
simulated function ToggleLaser(){
|
simulated function ToggleLaser(){
|
||||||
if(!Instigator.IsLocallyControlled())
|
if(!Instigator.IsLocallyControlled())
|
||||||
return;
|
return;
|
||||||
@ -1578,12 +1598,36 @@ simulated function Destroyed(){
|
|||||||
super(KFWeapon).Destroyed();
|
super(KFWeapon).Destroyed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
simulated function float GetAmmoMulti()
|
||||||
|
{
|
||||||
|
if (NextAmmoCheckTime > Level.TimeSeconds)
|
||||||
|
{
|
||||||
|
return LastAmmoResult;
|
||||||
|
}
|
||||||
|
|
||||||
|
NextAmmoCheckTime = Level.TimeSeconds + 1;
|
||||||
|
|
||||||
|
// Instigator accessed none fix
|
||||||
|
if (FireMode[0] != none && FireMode[0].AmmoClass != none && Instigator != none && KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo) != none &&
|
||||||
|
KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill != none )
|
||||||
|
{
|
||||||
|
LastAmmoResult = KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo).ClientVeteranSkill.static.AddExtraAmmoFor(KFPlayerReplicationInfo(Instigator.PlayerReplicationInfo), FireMode[0].AmmoClass);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
LastAmmoResult = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return LastAmmoResult;
|
||||||
|
}
|
||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
recordedZoomTime=-1.000000
|
recordedZoomTime=-1.000000
|
||||||
SecondaryCharge=1
|
SecondaryCharge=1
|
||||||
LaserAttachmentClass=Class'ScrnBalanceSrv.ScrnLaserAttachmentFirstPerson'
|
LaserAttachmentClass=Class'ScrnLaserAttachmentFirstPerson'
|
||||||
LaserDotClass=Class'ScrnBalanceSrv.ScrnLocalLaserDot'
|
LaserDotClass=Class'ScrnLocalLaserDot'
|
||||||
LaserAttachmentBone="LightBone"
|
LaserAttachmentBone="LightBone"
|
||||||
MagazineBone="Magazine"
|
MagazineBone="Magazine"
|
||||||
bHasChargePhase=True
|
bHasChargePhase=True
|
||||||
|
@ -2,11 +2,11 @@ class NiceAK12Ammo extends NiceAmmo;
|
|||||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
WeaponPickupClass=Class'NicePack.NiceAK12Pickup'
|
WeaponPickupClass=class'NiceAK12Pickup'
|
||||||
AmmoPickupAmount=30
|
AmmoPickupAmount=30
|
||||||
MaxAmmo=270
|
MaxAmmo=270
|
||||||
InitialAmount=60
|
InitialAmount=60
|
||||||
PickupClass=Class'NicePack.NiceAK12AmmoPickup'
|
PickupClass=class'NiceAK12AmmoPickup'
|
||||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||||
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
||||||
ItemName="5.45x39mm"
|
ItemName="5.45x39mm"
|
||||||
|
@ -2,7 +2,7 @@ class NiceAK12AmmoPickup extends NiceAmmoPickup;
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
AmmoAmount=30
|
AmmoAmount=30
|
||||||
InventoryType=Class'NicePack.NiceAK12Ammo'
|
InventoryType=class'NiceAK12Ammo'
|
||||||
PickupMessage="Rounds 5.45x39mm"
|
PickupMessage="Rounds 5.45x39mm"
|
||||||
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ defaultproperties
|
|||||||
SelectedHudImageRef="ScrnWeaponPack_T.AK12.AK12_select"
|
SelectedHudImageRef="ScrnWeaponPack_T.AK12.AK12_select"
|
||||||
PlayerIronSightFOV=65.000000
|
PlayerIronSightFOV=65.000000
|
||||||
ZoomedDisplayFOV=20.000000
|
ZoomedDisplayFOV=20.000000
|
||||||
FireModeClass(0)=Class'NicePack.NiceAK12Fire'
|
FireModeClass(0)=class'NiceAK12Fire'
|
||||||
FireModeClass(1)=Class'KFMod.NoFire'
|
FireModeClass(1)=Class'KFMod.NoFire'
|
||||||
PutDownAnim="PutDown"
|
PutDownAnim="PutDown"
|
||||||
SelectAnimRate=1.300000
|
SelectAnimRate=1.300000
|
||||||
@ -52,10 +52,10 @@ defaultproperties
|
|||||||
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
||||||
InventoryGroup=4
|
InventoryGroup=4
|
||||||
GroupOffset=7
|
GroupOffset=7
|
||||||
PickupClass=Class'NicePack.NiceAK12Pickup'
|
PickupClass=class'NiceAK12Pickup'
|
||||||
PlayerViewOffset=(X=-0.500000,Y=20.000000,Z=-3.000000)
|
PlayerViewOffset=(X=-0.500000,Y=20.000000,Z=-3.000000)
|
||||||
BobDamping=6.000000
|
BobDamping=6.000000
|
||||||
AttachmentClass=Class'NicePack.NiceAK12Attachment'
|
AttachmentClass=class'NiceAK12Attachment'
|
||||||
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
||||||
ItemName="AK12"
|
ItemName="AK12"
|
||||||
TransientSoundVolume=1.250000
|
TransientSoundVolume=1.250000
|
||||||
|
@ -15,7 +15,7 @@ defaultproperties
|
|||||||
FireSoundRef="ScrnWeaponPack_SND.AK12.AK12_shot"
|
FireSoundRef="ScrnWeaponPack_SND.AK12.AK12_shot"
|
||||||
StereoFireSoundRef="ScrnWeaponPack_SND.AK12.AK12_shot"
|
StereoFireSoundRef="ScrnWeaponPack_SND.AK12.AK12_shot"
|
||||||
NoAmmoSoundRef="ScrnWeaponPack_SND.AK12.AK12_empty"
|
NoAmmoSoundRef="ScrnWeaponPack_SND.AK12.AK12_empty"
|
||||||
DamageType=Class'NicePack.NiceDamTypeAK12AssaultRifle'
|
DamageType=class'NiceDamTypeAK12AssaultRifle'
|
||||||
DamageMax=68
|
DamageMax=68
|
||||||
Momentum=18500.000000
|
Momentum=18500.000000
|
||||||
bPawnRapidFireAnim=True
|
bPawnRapidFireAnim=True
|
||||||
@ -24,7 +24,7 @@ defaultproperties
|
|||||||
TweenTime=0.025000
|
TweenTime=0.025000
|
||||||
FireForce="AssaultRifleFire"
|
FireForce="AssaultRifleFire"
|
||||||
FireRate=0.095000
|
FireRate=0.095000
|
||||||
AmmoClass=Class'NicePack.NiceAK12Ammo'
|
AmmoClass=class'NiceAK12Ammo'
|
||||||
ShakeRotMag=(X=50.000000,Y=50.000000,Z=350.000000)
|
ShakeRotMag=(X=50.000000,Y=50.000000,Z=350.000000)
|
||||||
ShakeRotRate=(X=5000.000000,Y=5000.000000,Z=5000.000000)
|
ShakeRotRate=(X=5000.000000,Y=5000.000000,Z=5000.000000)
|
||||||
ShakeRotTime=0.750000
|
ShakeRotTime=0.750000
|
||||||
|
@ -15,7 +15,7 @@ defaultproperties
|
|||||||
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
CorrespondingPerkIndex=3
|
CorrespondingPerkIndex=3
|
||||||
EquipmentCategoryID=2
|
EquipmentCategoryID=2
|
||||||
InventoryType=Class'NicePack.NiceAK12AssaultRifle'
|
InventoryType=class'NiceAK12AssaultRifle'
|
||||||
PickupMessage="You got the AK-12"
|
PickupMessage="You got the AK-12"
|
||||||
PickupSound=Sound'ScrnWeaponPack_SND.AK12.AK12_select'
|
PickupSound=Sound'ScrnWeaponPack_SND.AK12.AK12_select'
|
||||||
PickupForce="AssaultRiflePickup"
|
PickupForce="AssaultRiflePickup"
|
||||||
|
@ -5,7 +5,7 @@ defaultproperties
|
|||||||
bPenetrationHSOnly=True
|
bPenetrationHSOnly=True
|
||||||
MaxPenetrations=3
|
MaxPenetrations=3
|
||||||
HeadShotDamageMult=1.300000
|
HeadShotDamageMult=1.300000
|
||||||
WeaponClass=Class'NicePack.NiceAK12AssaultRifle'
|
WeaponClass=class'NiceAK12AssaultRifle'
|
||||||
DeathString="%k killed %o (AK12)."
|
DeathString="%k killed %o (AK12)."
|
||||||
FemaleSuicide="%o shot herself in the foot."
|
FemaleSuicide="%o shot herself in the foot."
|
||||||
MaleSuicide="%o shot himself in the foot."
|
MaleSuicide="%o shot himself in the foot."
|
||||||
|
@ -2,11 +2,11 @@ class NiceAK47Ammo extends NiceAmmo;
|
|||||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
WeaponPickupClass=Class'NicePack.NiceAK47Pickup'
|
WeaponPickupClass=class'NiceAK47Pickup'
|
||||||
AmmoPickupAmount=30
|
AmmoPickupAmount=30
|
||||||
MaxAmmo=240
|
MaxAmmo=240
|
||||||
InitialAmount=90
|
InitialAmount=90
|
||||||
PickupClass=Class'NicePack.NiceAK47AmmoPickup'
|
PickupClass=class'NiceAK47AmmoPickup'
|
||||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||||
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
||||||
ItemName="AK47 bullets"
|
ItemName="AK47 bullets"
|
||||||
|
@ -2,7 +2,7 @@ class NiceAK47AmmoPickup extends NiceAmmoPickup;
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
AmmoAmount=30
|
AmmoAmount=30
|
||||||
InventoryType=Class'NicePack.NiceAK47Ammo'
|
InventoryType=class'NiceAK47Ammo'
|
||||||
PickupMessage="Rounds 7.62mm"
|
PickupMessage="Rounds 7.62mm"
|
||||||
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ defaultproperties
|
|||||||
SelectedHudImageRef="KillingFloor2HUD.WeaponSelect.Ak_47"
|
SelectedHudImageRef="KillingFloor2HUD.WeaponSelect.Ak_47"
|
||||||
PlayerIronSightFOV=65.000000
|
PlayerIronSightFOV=65.000000
|
||||||
ZoomedDisplayFOV=32.000000
|
ZoomedDisplayFOV=32.000000
|
||||||
FireModeClass(0)=Class'NicePack.NiceAK47Fire'
|
FireModeClass(0)=class'NiceAK47Fire'
|
||||||
FireModeClass(1)=Class'KFMod.NoFire'
|
FireModeClass(1)=Class'KFMod.NoFire'
|
||||||
PutDownAnim="PutDown"
|
PutDownAnim="PutDown"
|
||||||
SelectForce="SwitchToAssaultRifle"
|
SelectForce="SwitchToAssaultRifle"
|
||||||
@ -45,10 +45,10 @@ defaultproperties
|
|||||||
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
||||||
InventoryGroup=3
|
InventoryGroup=3
|
||||||
GroupOffset=7
|
GroupOffset=7
|
||||||
PickupClass=Class'NicePack.NiceAK47Pickup'
|
PickupClass=class'NiceAK47Pickup'
|
||||||
PlayerViewOffset=(X=18.000000,Y=22.000000,Z=-6.000000)
|
PlayerViewOffset=(X=18.000000,Y=22.000000,Z=-6.000000)
|
||||||
BobDamping=6.000000
|
BobDamping=6.000000
|
||||||
AttachmentClass=Class'NicePack.NiceAK47Attachment'
|
AttachmentClass=class'NiceAK47Attachment'
|
||||||
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
||||||
ItemName="AK47"
|
ItemName="AK47"
|
||||||
TransientSoundVolume=1.250000
|
TransientSoundVolume=1.250000
|
||||||
|
@ -14,7 +14,7 @@ defaultproperties
|
|||||||
FireSoundRef="KF_AK47Snd.AK47_Fire"
|
FireSoundRef="KF_AK47Snd.AK47_Fire"
|
||||||
StereoFireSoundRef="KF_AK47Snd.AK47_FireST"
|
StereoFireSoundRef="KF_AK47Snd.AK47_FireST"
|
||||||
NoAmmoSoundRef="KF_AK47Snd.AK47_DryFire"
|
NoAmmoSoundRef="KF_AK47Snd.AK47_DryFire"
|
||||||
DamageType=Class'NicePack.NiceDamTypeAK47AssaultRifle'
|
DamageType=class'NiceDamTypeAK47AssaultRifle'
|
||||||
DamageMin=60
|
DamageMin=60
|
||||||
DamageMax=60
|
DamageMax=60
|
||||||
Momentum=8500.000000
|
Momentum=8500.000000
|
||||||
@ -24,7 +24,7 @@ defaultproperties
|
|||||||
TweenTime=0.025000
|
TweenTime=0.025000
|
||||||
FireForce="AssaultRifleFire"
|
FireForce="AssaultRifleFire"
|
||||||
FireRate=0.109000
|
FireRate=0.109000
|
||||||
AmmoClass=Class'NicePack.NiceAK47Ammo'
|
AmmoClass=class'NiceAK47Ammo'
|
||||||
ShakeRotMag=(X=50.000000,Y=50.000000,Z=350.000000)
|
ShakeRotMag=(X=50.000000,Y=50.000000,Z=350.000000)
|
||||||
ShakeRotRate=(X=5000.000000,Y=5000.000000,Z=5000.000000)
|
ShakeRotRate=(X=5000.000000,Y=5000.000000,Z=5000.000000)
|
||||||
ShakeRotTime=0.750000
|
ShakeRotTime=0.750000
|
||||||
|
@ -17,7 +17,7 @@ defaultproperties
|
|||||||
EquipmentCategoryID=2
|
EquipmentCategoryID=2
|
||||||
VariantClasses(0)=Class'KFMod.GoldenAK47pickup'
|
VariantClasses(0)=Class'KFMod.GoldenAK47pickup'
|
||||||
VariantClasses(1)=Class'KFMod.NeonAK47Pickup'
|
VariantClasses(1)=Class'KFMod.NeonAK47Pickup'
|
||||||
InventoryType=Class'NicePack.NiceAK47AssaultRifle'
|
InventoryType=class'NiceAK47AssaultRifle'
|
||||||
PickupMessage="You got the AK47"
|
PickupMessage="You got the AK47"
|
||||||
PickupSound=Sound'KF_AK47Snd.AK47_Pickup'
|
PickupSound=Sound'KF_AK47Snd.AK47_Pickup'
|
||||||
PickupForce="AssaultRiflePickup"
|
PickupForce="AssaultRiflePickup"
|
||||||
|
@ -4,7 +4,7 @@ defaultproperties
|
|||||||
{
|
{
|
||||||
MaxPenetrations=1
|
MaxPenetrations=1
|
||||||
HeadShotDamageMult=2.000000
|
HeadShotDamageMult=2.000000
|
||||||
WeaponClass=Class'NicePack.NiceAK47AssaultRifle'
|
WeaponClass=class'NiceAK47AssaultRifle'
|
||||||
DeathString="%k killed %o (AK47)."
|
DeathString="%k killed %o (AK47)."
|
||||||
FemaleSuicide="%o shot herself in the foot."
|
FemaleSuicide="%o shot herself in the foot."
|
||||||
MaleSuicide="%o shot himself in the foot."
|
MaleSuicide="%o shot himself in the foot."
|
||||||
|
@ -3,7 +3,7 @@ class NiceDamTypeVALDT extends NiceDamageTypeVetCommando
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
HeadShotDamageMult=1.500000
|
HeadShotDamageMult=1.500000
|
||||||
WeaponClass=Class'NicePack.NiceVALDTAssaultRifle'
|
WeaponClass=class'NiceVALDTAssaultRifle'
|
||||||
DeathString="%k killed %o (AS 'VAL')."
|
DeathString="%k killed %o (AS 'VAL')."
|
||||||
FemaleSuicide="%o shot herself in the foot."
|
FemaleSuicide="%o shot herself in the foot."
|
||||||
MaleSuicide="%o shot himself in the foot."
|
MaleSuicide="%o shot himself in the foot."
|
||||||
|
@ -2,11 +2,11 @@ class NiceVALDTAmmo extends NiceAmmo;
|
|||||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
WeaponPickupClass=Class'NicePack.NiceVALDTPickup'
|
WeaponPickupClass=class'NiceVALDTPickup'
|
||||||
AmmoPickupAmount=20
|
AmmoPickupAmount=20
|
||||||
MaxAmmo=300
|
MaxAmmo=300
|
||||||
InitialAmount=75
|
InitialAmount=75
|
||||||
PickupClass=Class'NicePack.NiceVALDTAmmoPickup'
|
PickupClass=class'NiceVALDTAmmoPickup'
|
||||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||||
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
||||||
ItemName="9x39mm"
|
ItemName="9x39mm"
|
||||||
|
@ -2,7 +2,7 @@ class NiceVALDTAmmoPickup extends NiceAmmoPickup;
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
AmmoAmount=20
|
AmmoAmount=20
|
||||||
InventoryType=Class'NicePack.NiceVALDTAmmo'
|
InventoryType=class'NiceVALDTAmmo'
|
||||||
PickupMessage="9x39mm"
|
PickupMessage="9x39mm"
|
||||||
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
}
|
}
|
||||||
|
@ -29,8 +29,8 @@ defaultproperties
|
|||||||
SelectedHudImageRef="ScrnWeaponPack_T.VAL.ValDT_selected"
|
SelectedHudImageRef="ScrnWeaponPack_T.VAL.ValDT_selected"
|
||||||
PlayerIronSightFOV=65.000000
|
PlayerIronSightFOV=65.000000
|
||||||
ZoomedDisplayFOV=32.000000
|
ZoomedDisplayFOV=32.000000
|
||||||
FireModeClass(0)=Class'NicePack.NiceVALDTFire'
|
FireModeClass(0)=class'NiceVALDTFire'
|
||||||
FireModeClass(1)=Class'NicePack.NiceVALDTFire'
|
FireModeClass(1)=class'NiceVALDTFire'
|
||||||
PutDownAnim="PutDown"
|
PutDownAnim="PutDown"
|
||||||
SelectForce="SwitchToAssaultRifle"
|
SelectForce="SwitchToAssaultRifle"
|
||||||
AIRating=0.550000
|
AIRating=0.550000
|
||||||
@ -44,7 +44,7 @@ defaultproperties
|
|||||||
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
||||||
InventoryGroup=3
|
InventoryGroup=3
|
||||||
GroupOffset=7
|
GroupOffset=7
|
||||||
PickupClass=Class'NicePack.NiceVALDTPickup'
|
PickupClass=class'NiceVALDTPickup'
|
||||||
PlayerViewOffset=(X=10.000000,Y=10.000000,Z=-5.000000)
|
PlayerViewOffset=(X=10.000000,Y=10.000000,Z=-5.000000)
|
||||||
BobDamping=5.000000
|
BobDamping=5.000000
|
||||||
AttachmentClass=Class'ScrnWeaponPack.VALDTAttachment'
|
AttachmentClass=Class'ScrnWeaponPack.VALDTAttachment'
|
||||||
|
@ -12,7 +12,7 @@ defaultproperties
|
|||||||
FireSoundRef="ScrnWeaponPack_SND.VSS.VSS_Fire"
|
FireSoundRef="ScrnWeaponPack_SND.VSS.VSS_Fire"
|
||||||
StereoFireSoundRef="ScrnWeaponPack_SND.VSS.VSS_Fire"
|
StereoFireSoundRef="ScrnWeaponPack_SND.VSS.VSS_Fire"
|
||||||
NoAmmoSoundRef="KF_AK47Snd.AK47_DryFire"
|
NoAmmoSoundRef="KF_AK47Snd.AK47_DryFire"
|
||||||
DamageType=Class'NicePack.NiceDamTypeVALDT'
|
DamageType=class'NiceDamTypeVALDT'
|
||||||
DamageMin=40
|
DamageMin=40
|
||||||
DamageMax=40
|
DamageMax=40
|
||||||
Momentum=18500.000000
|
Momentum=18500.000000
|
||||||
@ -22,7 +22,7 @@ defaultproperties
|
|||||||
TweenTime=0.025000
|
TweenTime=0.025000
|
||||||
FireForce="AssaultRifleFire"
|
FireForce="AssaultRifleFire"
|
||||||
FireRate=0.089000
|
FireRate=0.089000
|
||||||
AmmoClass=Class'NicePack.NiceVALDTAmmo'
|
AmmoClass=class'NiceVALDTAmmo'
|
||||||
ShakeRotMag=(X=50.000000,Y=50.000000,Z=350.000000)
|
ShakeRotMag=(X=50.000000,Y=50.000000,Z=350.000000)
|
||||||
ShakeRotRate=(X=5000.000000,Y=5000.000000,Z=5000.000000)
|
ShakeRotRate=(X=5000.000000,Y=5000.000000,Z=5000.000000)
|
||||||
ShakeRotTime=0.750000
|
ShakeRotTime=0.750000
|
||||||
|
@ -14,7 +14,7 @@ defaultproperties
|
|||||||
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
CorrespondingPerkIndex=3
|
CorrespondingPerkIndex=3
|
||||||
EquipmentCategoryID=2
|
EquipmentCategoryID=2
|
||||||
InventoryType=Class'NicePack.NiceVALDTAssaultRifle'
|
InventoryType=class'NiceVALDTAssaultRifle'
|
||||||
PickupMessage="You've got a AS 'VAL'"
|
PickupMessage="You've got a AS 'VAL'"
|
||||||
PickupSound=Sound'KF_AK47Snd.AK47_Pickup'
|
PickupSound=Sound'KF_AK47Snd.AK47_Pickup'
|
||||||
PickupForce="AssaultRiflePickup"
|
PickupForce="AssaultRiflePickup"
|
||||||
|
@ -28,7 +28,7 @@ defaultproperties
|
|||||||
SelectedHudImageRef="KillingFloorHUD.WeaponSelect.Bullpup"
|
SelectedHudImageRef="KillingFloorHUD.WeaponSelect.Bullpup"
|
||||||
PlayerIronSightFOV=65.000000
|
PlayerIronSightFOV=65.000000
|
||||||
ZoomedDisplayFOV=40.000000
|
ZoomedDisplayFOV=40.000000
|
||||||
FireModeClass(0)=Class'NicePack.NiceBullpupFire'
|
FireModeClass(0)=class'NiceBullpupFire'
|
||||||
FireModeClass(1)=Class'KFMod.NoFire'
|
FireModeClass(1)=Class'KFMod.NoFire'
|
||||||
PutDownAnim="PutDown"
|
PutDownAnim="PutDown"
|
||||||
SelectForce="SwitchToAssaultRifle"
|
SelectForce="SwitchToAssaultRifle"
|
||||||
@ -43,10 +43,10 @@ defaultproperties
|
|||||||
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
||||||
InventoryGroup=3
|
InventoryGroup=3
|
||||||
GroupOffset=1
|
GroupOffset=1
|
||||||
PickupClass=Class'NicePack.NiceBullpupPickup'
|
PickupClass=class'NiceBullpupPickup'
|
||||||
PlayerViewOffset=(X=20.000000,Y=21.500000,Z=-9.000000)
|
PlayerViewOffset=(X=20.000000,Y=21.500000,Z=-9.000000)
|
||||||
BobDamping=6.000000
|
BobDamping=6.000000
|
||||||
AttachmentClass=Class'NicePack.NiceBullpupAttachment'
|
AttachmentClass=class'NiceBullpupAttachment'
|
||||||
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
||||||
ItemName="Bullpup"
|
ItemName="Bullpup"
|
||||||
TransientSoundVolume=1.250000
|
TransientSoundVolume=1.250000
|
||||||
|
@ -2,11 +2,11 @@ class NiceBullpupAmmo extends NiceAmmo;
|
|||||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
WeaponPickupClass=Class'NicePack.NiceBullpupPickup'
|
WeaponPickupClass=class'NiceBullpupPickup'
|
||||||
AmmoPickupAmount=30
|
AmmoPickupAmount=30
|
||||||
MaxAmmo=240
|
MaxAmmo=240
|
||||||
InitialAmount=45
|
InitialAmount=45
|
||||||
PickupClass=Class'NicePack.NiceBullpupAmmoPickup'
|
PickupClass=class'NiceBullpupAmmoPickup'
|
||||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||||
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
||||||
ItemName="Bullpup bullets"
|
ItemName="Bullpup bullets"
|
||||||
|
@ -2,7 +2,7 @@ class NiceBullpupAmmoPickup extends NiceAmmoPickup;
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
AmmoAmount=30
|
AmmoAmount=30
|
||||||
InventoryType=Class'NicePack.NiceBullpupAmmo'
|
InventoryType=class'NiceBullpupAmmo'
|
||||||
PickupMessage="Rounds (5.56 NATO)"
|
PickupMessage="Rounds (5.56 NATO)"
|
||||||
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ defaultproperties
|
|||||||
FireSoundRef="KF_BullpupSnd.Bullpup_Fire"
|
FireSoundRef="KF_BullpupSnd.Bullpup_Fire"
|
||||||
StereoFireSoundRef="KF_BullpupSnd.Bullpup_FireST"
|
StereoFireSoundRef="KF_BullpupSnd.Bullpup_FireST"
|
||||||
NoAmmoSoundRef="KF_9MMSnd.9mm_DryFire"
|
NoAmmoSoundRef="KF_9MMSnd.9mm_DryFire"
|
||||||
DamageType=Class'NicePack.NiceDamTypeBullpup'
|
DamageType=class'NiceDamTypeBullpup'
|
||||||
DamageMin=48
|
DamageMin=48
|
||||||
DamageMax=48
|
DamageMax=48
|
||||||
Momentum=8500.000000
|
Momentum=8500.000000
|
||||||
@ -23,7 +23,7 @@ defaultproperties
|
|||||||
TweenTime=0.025000
|
TweenTime=0.025000
|
||||||
FireForce="AssaultRifleFire"
|
FireForce="AssaultRifleFire"
|
||||||
FireRate=0.100000
|
FireRate=0.100000
|
||||||
AmmoClass=Class'NicePack.NiceBullpupAmmo'
|
AmmoClass=class'NiceBullpupAmmo'
|
||||||
ShakeRotMag=(X=75.000000,Y=75.000000,Z=250.000000)
|
ShakeRotMag=(X=75.000000,Y=75.000000,Z=250.000000)
|
||||||
ShakeRotRate=(X=10000.000000,Y=10000.000000,Z=10000.000000)
|
ShakeRotRate=(X=10000.000000,Y=10000.000000,Z=10000.000000)
|
||||||
ShakeRotTime=0.500000
|
ShakeRotTime=0.500000
|
||||||
|
@ -16,7 +16,7 @@ defaultproperties
|
|||||||
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
CorrespondingPerkIndex=3
|
CorrespondingPerkIndex=3
|
||||||
EquipmentCategoryID=2
|
EquipmentCategoryID=2
|
||||||
InventoryType=Class'NicePack.NiceBullpup'
|
InventoryType=class'NiceBullpup'
|
||||||
PickupMessage="You got the Bullpup"
|
PickupMessage="You got the Bullpup"
|
||||||
PickupForce="AssaultRiflePickup"
|
PickupForce="AssaultRiflePickup"
|
||||||
StaticMesh=StaticMesh'KF_pickups_Trip.Rifle.Bullpup_Pickup'
|
StaticMesh=StaticMesh'KF_pickups_Trip.Rifle.Bullpup_Pickup'
|
||||||
|
@ -3,7 +3,7 @@ class NiceDamTypeBullpup extends NiceDamageTypeVetCommando
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
HeadShotDamageMult=1.500000
|
HeadShotDamageMult=1.500000
|
||||||
WeaponClass=Class'NicePack.NiceBullpup'
|
WeaponClass=class'NiceBullpup'
|
||||||
DeathString="%k killed %o (Bullpup)."
|
DeathString="%k killed %o (Bullpup)."
|
||||||
FemaleSuicide="%o shot herself in the foot."
|
FemaleSuicide="%o shot herself in the foot."
|
||||||
MaleSuicide="%o shot himself in the foot."
|
MaleSuicide="%o shot himself in the foot."
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
class NiceCZ805M extends CZ805M;
|
class NiceCZ805M extends CZ805M;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
FireModeClass(0)=Class'NicePack.NiceCZ805MFire'
|
FireModeClass(0)=class'NiceCZ805MFire'
|
||||||
FireModeClass(1)=Class'NicePack.NiceCZ805MAltFire'
|
FireModeClass(1)=class'NiceCZ805MAltFire'
|
||||||
PickupClass=Class'NicePack.NiceCZ805MPickup'
|
PickupClass=class'NiceCZ805MPickup'
|
||||||
ItemName="CZ-805M Medic/Assault Rifle NW"
|
ItemName="CZ-805M Medic/Assault Rifle NW"
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
class NiceCZ805MAltFire extends CZ805MAltFire;
|
class NiceCZ805MAltFire extends CZ805MAltFire;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
ProjectileClass=Class'NicePack.NiceCZ805MHealingProjectile'
|
ProjectileClass=class'NiceCZ805MHealingProjectile'
|
||||||
}
|
}
|
||||||
|
@ -3,5 +3,5 @@ defaultproperties
|
|||||||
{
|
{
|
||||||
MaxAmmo=300
|
MaxAmmo=300
|
||||||
InitialAmount=150
|
InitialAmount=150
|
||||||
PickupClass=Class'NicePack.NiceCZ805MAmmoPickup'
|
PickupClass=class'NiceCZ805MAmmoPickup'
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
class NiceCZ805MAmmoPickup extends CZ805MAmmoPickup;
|
class NiceCZ805MAmmoPickup extends CZ805MAmmoPickup;
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
InventoryType=Class'NicePack.NiceCZ805MAmmo'
|
InventoryType=class'NiceCZ805MAmmo'
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ defaultproperties
|
|||||||
{
|
{
|
||||||
maxVerticalRecoilAngle=270
|
maxVerticalRecoilAngle=270
|
||||||
maxHorizontalRecoilAngle=135
|
maxHorizontalRecoilAngle=135
|
||||||
DamageType=Class'NicePack.NiceDamTypeCZ805M'
|
DamageType=class'NiceDamTypeCZ805M'
|
||||||
DamageMax=40
|
DamageMax=40
|
||||||
AmmoClass=Class'NicePack.NiceCZ805MAmmo'
|
AmmoClass=class'NiceCZ805MAmmo'
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,6 @@ defaultproperties
|
|||||||
Description="Horzine's modification of CZ-805 BREN rifle with attached healing dart launcher. Useful for both Medic and Commando perks."
|
Description="Horzine's modification of CZ-805 BREN rifle with attached healing dart launcher. Useful for both Medic and Commando perks."
|
||||||
ItemName="CZ-805M NW"
|
ItemName="CZ-805M NW"
|
||||||
ItemShortName="CZ-805M NW"
|
ItemShortName="CZ-805M NW"
|
||||||
InventoryType=Class'NicePack.NiceCZ805M'
|
InventoryType=class'NiceCZ805M'
|
||||||
PickupMessage="You got the CZ-805M NW"
|
PickupMessage="You got the CZ-805M NW"
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ class NiceDamTypeCZ805M extends NiceDamageTypeVetCommando
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
HeadShotDamageMult=1.500000
|
HeadShotDamageMult=1.500000
|
||||||
WeaponClass=Class'NicePack.NiceCZ805M'
|
WeaponClass=class'NiceCZ805M'
|
||||||
DeathString="%k killed %o (CZ 805)."
|
DeathString="%k killed %o (CZ 805)."
|
||||||
FemaleSuicide="%o shot herself in the foot."
|
FemaleSuicide="%o shot herself in the foot."
|
||||||
MaleSuicide="%o shot himself in the foot."
|
MaleSuicide="%o shot himself in the foot."
|
||||||
|
@ -5,7 +5,7 @@ defaultproperties
|
|||||||
MaxPenetrations=3
|
MaxPenetrations=3
|
||||||
flinchMultiplier=0.800000
|
flinchMultiplier=0.800000
|
||||||
HeadShotDamageMult=2.250000
|
HeadShotDamageMult=2.250000
|
||||||
WeaponClass=Class'NicePack.NiceFNFAL_ACOG_AssaultRifle'
|
WeaponClass=class'NiceFNFAL_ACOG_AssaultRifle'
|
||||||
DeathString="%k killed %o (FNFAL ACOG)."
|
DeathString="%k killed %o (FNFAL ACOG)."
|
||||||
FemaleSuicide="%o shot herself in the foot."
|
FemaleSuicide="%o shot herself in the foot."
|
||||||
MaleSuicide="%o shot himself in the foot."
|
MaleSuicide="%o shot himself in the foot."
|
||||||
|
@ -2,11 +2,11 @@ class NiceFNFALAmmo extends NiceAmmo;
|
|||||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
WeaponPickupClass=Class'NicePack.NiceFNFAL_ACOG_Pickup'
|
WeaponPickupClass=class'NiceFNFAL_ACOG_Pickup'
|
||||||
AmmoPickupAmount=20
|
AmmoPickupAmount=20
|
||||||
MaxAmmo=180
|
MaxAmmo=180
|
||||||
InitialAmount=45
|
InitialAmount=45
|
||||||
PickupClass=Class'NicePack.NiceFNFALAmmoPickup'
|
PickupClass=class'NiceFNFALAmmoPickup'
|
||||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||||
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
||||||
ItemName="FNFAL bullets"
|
ItemName="FNFAL bullets"
|
||||||
|
@ -2,7 +2,7 @@ class NiceFNFALAmmoPickup extends NiceAmmoPickup;
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
AmmoAmount=20
|
AmmoAmount=20
|
||||||
InventoryType=Class'NicePack.NiceFNFALAmmo'
|
InventoryType=class'NiceFNFALAmmo'
|
||||||
PickupMessage="Rounds 7.62x51mm"
|
PickupMessage="Rounds 7.62x51mm"
|
||||||
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ defaultproperties
|
|||||||
FireSoundRef="KF_FNFALSnd.FNFAL_Fire_Single_M"
|
FireSoundRef="KF_FNFALSnd.FNFAL_Fire_Single_M"
|
||||||
StereoFireSoundRef="KF_FNFALSnd.FNFAL_Fire_Single_S"
|
StereoFireSoundRef="KF_FNFALSnd.FNFAL_Fire_Single_S"
|
||||||
NoAmmoSoundRef="KF_SCARSnd.SCAR_DryFire"
|
NoAmmoSoundRef="KF_SCARSnd.SCAR_DryFire"
|
||||||
DamageType=Class'NicePack.NiceDamTypeFNFALAssaultRifle'
|
DamageType=class'NiceDamTypeFNFALAssaultRifle'
|
||||||
DamageMin=66
|
DamageMin=66
|
||||||
DamageMax=66
|
DamageMax=66
|
||||||
Momentum=8500.000000
|
Momentum=8500.000000
|
||||||
@ -27,7 +27,7 @@ defaultproperties
|
|||||||
TweenTime=0.025000
|
TweenTime=0.025000
|
||||||
FireForce="AssaultRifleFire"
|
FireForce="AssaultRifleFire"
|
||||||
FireRate=0.100000
|
FireRate=0.100000
|
||||||
AmmoClass=Class'NicePack.NiceFNFALAmmo'
|
AmmoClass=class'NiceFNFALAmmo'
|
||||||
ShakeRotMag=(X=80.000000,Y=80.000000,Z=450.000000)
|
ShakeRotMag=(X=80.000000,Y=80.000000,Z=450.000000)
|
||||||
ShakeRotRate=(X=7500.000000,Y=7500.000000,Z=7500.000000)
|
ShakeRotRate=(X=7500.000000,Y=7500.000000,Z=7500.000000)
|
||||||
ShakeRotTime=0.650000
|
ShakeRotTime=0.650000
|
||||||
|
@ -26,7 +26,7 @@ defaultproperties
|
|||||||
SelectedHudImageRef="KillingFloor2HUD.WeaponSelect.FNFAL"
|
SelectedHudImageRef="KillingFloor2HUD.WeaponSelect.FNFAL"
|
||||||
PlayerIronSightFOV=55.000000
|
PlayerIronSightFOV=55.000000
|
||||||
ZoomedDisplayFOV=15.000000
|
ZoomedDisplayFOV=15.000000
|
||||||
FireModeClass(0)=Class'NicePack.NiceFNFALFire'
|
FireModeClass(0)=class'NiceFNFALFire'
|
||||||
FireModeClass(1)=Class'KFMod.NoFire'
|
FireModeClass(1)=Class'KFMod.NoFire'
|
||||||
PutDownAnim="PutDown"
|
PutDownAnim="PutDown"
|
||||||
SelectForce="SwitchToAssaultRifle"
|
SelectForce="SwitchToAssaultRifle"
|
||||||
@ -41,10 +41,10 @@ defaultproperties
|
|||||||
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
||||||
InventoryGroup=4
|
InventoryGroup=4
|
||||||
GroupOffset=12
|
GroupOffset=12
|
||||||
PickupClass=Class'NicePack.NiceFNFAL_ACOG_Pickup'
|
PickupClass=class'NiceFNFAL_ACOG_Pickup'
|
||||||
PlayerViewOffset=(X=3.000000,Y=15.000000,Z=-6.000000)
|
PlayerViewOffset=(X=3.000000,Y=15.000000,Z=-6.000000)
|
||||||
BobDamping=6.000000
|
BobDamping=6.000000
|
||||||
AttachmentClass=Class'NicePack.NiceFNFAL_ACOG_Attachment'
|
AttachmentClass=class'NiceFNFAL_ACOG_Attachment'
|
||||||
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
||||||
ItemName="FNFAL"
|
ItemName="FNFAL"
|
||||||
TransientSoundVolume=1.250000
|
TransientSoundVolume=1.250000
|
||||||
|
@ -15,7 +15,7 @@ defaultproperties
|
|||||||
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
CorrespondingPerkIndex=3
|
CorrespondingPerkIndex=3
|
||||||
EquipmentCategoryID=3
|
EquipmentCategoryID=3
|
||||||
InventoryType=Class'NicePack.NiceFNFAL_ACOG_AssaultRifle'
|
InventoryType=class'NiceFNFAL_ACOG_AssaultRifle'
|
||||||
PickupMessage="You got the FN FAL with ACOG Sight"
|
PickupMessage="You got the FN FAL with ACOG Sight"
|
||||||
PickupSound=Sound'KF_FNFALSnd.FNFAL_Pickup'
|
PickupSound=Sound'KF_FNFALSnd.FNFAL_Pickup'
|
||||||
PickupForce="AssaultRiflePickup"
|
PickupForce="AssaultRiflePickup"
|
||||||
|
@ -3,7 +3,7 @@ defaultproperties
|
|||||||
{
|
{
|
||||||
MaxPenetrations=2
|
MaxPenetrations=2
|
||||||
HeadShotDamageMult=2.000000
|
HeadShotDamageMult=2.000000
|
||||||
WeaponClass=Class'NicePack.NiceHK417AR'
|
WeaponClass=class'NiceHK417AR'
|
||||||
DeathString="%k killed %o (HK-417)."
|
DeathString="%k killed %o (HK-417)."
|
||||||
FemaleSuicide="%o shot herself in the foot."
|
FemaleSuicide="%o shot herself in the foot."
|
||||||
MaleSuicide="%o shot himself in the foot."
|
MaleSuicide="%o shot himself in the foot."
|
||||||
|
@ -41,7 +41,7 @@ defaultproperties
|
|||||||
SelectedHudImageRef="ScrnWeaponPack_T.HK417AR.HK417_selected"
|
SelectedHudImageRef="ScrnWeaponPack_T.HK417AR.HK417_selected"
|
||||||
PlayerIronSightFOV=32.000000
|
PlayerIronSightFOV=32.000000
|
||||||
ZoomedDisplayFOV=60.000000
|
ZoomedDisplayFOV=60.000000
|
||||||
FireModeClass(0)=Class'NicePack.NiceHK417Fire'
|
FireModeClass(0)=class'NiceHK417Fire'
|
||||||
FireModeClass(1)=Class'KFMod.NoFire'
|
FireModeClass(1)=Class'KFMod.NoFire'
|
||||||
PutDownAnim="PutDown"
|
PutDownAnim="PutDown"
|
||||||
SelectAnimRate=2.000000
|
SelectAnimRate=2.000000
|
||||||
@ -56,10 +56,10 @@ defaultproperties
|
|||||||
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
||||||
InventoryGroup=4
|
InventoryGroup=4
|
||||||
GroupOffset=3
|
GroupOffset=3
|
||||||
PickupClass=Class'NicePack.NiceHK417Pickup'
|
PickupClass=class'NiceHK417Pickup'
|
||||||
PlayerViewOffset=(X=14.000000,Y=7.000000,Z=-4.000000)
|
PlayerViewOffset=(X=14.000000,Y=7.000000,Z=-4.000000)
|
||||||
BobDamping=6.000000
|
BobDamping=6.000000
|
||||||
AttachmentClass=Class'NicePack.NiceHK417Attachment'
|
AttachmentClass=class'NiceHK417Attachment'
|
||||||
IconCoords=(X1=253,Y1=146,X2=333,Y2=181)
|
IconCoords=(X1=253,Y1=146,X2=333,Y2=181)
|
||||||
ItemName="HK-417"
|
ItemName="HK-417"
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ class NiceHK417Ammo extends NiceAmmo;
|
|||||||
#EXEC OBJ LOAD FILE=InterfaceContent.utx
|
#EXEC OBJ LOAD FILE=InterfaceContent.utx
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
WeaponPickupClass=Class'NicePack.NiceHK417Pickup'
|
WeaponPickupClass=class'NiceHK417Pickup'
|
||||||
AmmoPickupAmount=20
|
AmmoPickupAmount=20
|
||||||
MaxAmmo=180
|
MaxAmmo=180
|
||||||
InitialAmount=45
|
InitialAmount=45
|
||||||
|
@ -2,6 +2,6 @@ class NiceHK417AmmoPickup extends NiceAmmoPickup;
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
AmmoAmount=20
|
AmmoAmount=20
|
||||||
InventoryType=Class'NicePack.NiceHK417Ammo'
|
InventoryType=class'NiceHK417Ammo'
|
||||||
PickupMessage="7.62x51mm NATO"
|
PickupMessage="7.62x51mm NATO"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ defaultproperties
|
|||||||
FireSoundRef="ScrnWeaponPack_SND.HK417AR.HK417_shot"
|
FireSoundRef="ScrnWeaponPack_SND.HK417AR.HK417_shot"
|
||||||
StereoFireSoundRef="ScrnWeaponPack_SND.HK417AR.HK417_shot"
|
StereoFireSoundRef="ScrnWeaponPack_SND.HK417AR.HK417_shot"
|
||||||
NoAmmoSoundRef="ScrnWeaponPack_SND.HK417AR.HK417_empty"
|
NoAmmoSoundRef="ScrnWeaponPack_SND.HK417AR.HK417_empty"
|
||||||
DamageType=Class'NicePack.NiceDamTypeHK417AR'
|
DamageType=class'NiceDamTypeHK417AR'
|
||||||
DamageMin=75
|
DamageMin=75
|
||||||
DamageMax=75
|
DamageMax=75
|
||||||
Momentum=20000.000000
|
Momentum=20000.000000
|
||||||
@ -22,7 +22,7 @@ defaultproperties
|
|||||||
TweenTime=0.025000
|
TweenTime=0.025000
|
||||||
FireForce="AssaultRifleFire"
|
FireForce="AssaultRifleFire"
|
||||||
FireRate=0.230000
|
FireRate=0.230000
|
||||||
AmmoClass=Class'NicePack.NiceHK417Ammo'
|
AmmoClass=class'NiceHK417Ammo'
|
||||||
ShakeRotMag=(X=50.000000,Y=50.000000,Z=300.000000)
|
ShakeRotMag=(X=50.000000,Y=50.000000,Z=300.000000)
|
||||||
ShakeRotRate=(X=9500.000000,Y=9500.000000,Z=9500.000000)
|
ShakeRotRate=(X=9500.000000,Y=9500.000000,Z=9500.000000)
|
||||||
ShakeRotTime=0.650000
|
ShakeRotTime=0.650000
|
||||||
|
@ -13,7 +13,7 @@ defaultproperties
|
|||||||
AmmoItemName="7.62x51mm NATO"
|
AmmoItemName="7.62x51mm NATO"
|
||||||
CorrespondingPerkIndex=3
|
CorrespondingPerkIndex=3
|
||||||
EquipmentCategoryID=2
|
EquipmentCategoryID=2
|
||||||
InventoryType=Class'NicePack.NiceHK417AR'
|
InventoryType=class'NiceHK417AR'
|
||||||
PickupMessage="You've got a HK-417"
|
PickupMessage="You've got a HK-417"
|
||||||
PickupSound=Sound'ScrnWeaponPack_SND.HK417AR.HK417_pickup'
|
PickupSound=Sound'ScrnWeaponPack_SND.HK417AR.HK417_pickup'
|
||||||
PickupForce="AssaultRiflePickup"
|
PickupForce="AssaultRiflePickup"
|
||||||
|
@ -5,7 +5,7 @@ defaultproperties
|
|||||||
badDecapMod=0.8000
|
badDecapMod=0.8000
|
||||||
HeadShotDamageMult=1.400000
|
HeadShotDamageMult=1.400000
|
||||||
bSniperWeapon=True
|
bSniperWeapon=True
|
||||||
WeaponClass=Class'NicePack.NiceL85A2Z'
|
WeaponClass=class'NiceL85A2Z'
|
||||||
DeathString="%k killed %o."
|
DeathString="%k killed %o."
|
||||||
FemaleSuicide="%o shot herself in the foot."
|
FemaleSuicide="%o shot herself in the foot."
|
||||||
MaleSuicide="%o shot himself in the foot."
|
MaleSuicide="%o shot himself in the foot."
|
||||||
|
@ -2,11 +2,11 @@ class NiceL85A2Ammo extends NiceAmmo;
|
|||||||
#EXEC OBJ LOAD FILE=InterfaceContent.utx
|
#EXEC OBJ LOAD FILE=InterfaceContent.utx
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
WeaponPickupClass=Class'NicePack.NiceL85A2Pickup'
|
WeaponPickupClass=class'NiceL85A2Pickup'
|
||||||
AmmoPickupAmount=30
|
AmmoPickupAmount=30
|
||||||
MaxAmmo=210
|
MaxAmmo=210
|
||||||
InitialAmount=45
|
InitialAmount=45
|
||||||
PickupClass=Class'NicePack.NiceL85A2AmmoPickup'
|
PickupClass=class'NiceL85A2AmmoPickup'
|
||||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||||
IconCoords=(X1=413,Y1=82,X2=457,Y2=125)
|
IconCoords=(X1=413,Y1=82,X2=457,Y2=125)
|
||||||
ItemName="Stanag Magazines"
|
ItemName="Stanag Magazines"
|
||||||
|
@ -2,7 +2,7 @@ class NiceL85A2AmmoPickup extends NiceAmmoPickup;
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
AmmoAmount=30
|
AmmoAmount=30
|
||||||
InventoryType=Class'NicePack.NiceL85A2Ammo'
|
InventoryType=class'NiceL85A2Ammo'
|
||||||
RespawnTime=0.000000
|
RespawnTime=0.000000
|
||||||
PickupMessage="Mag (5.56mm)"
|
PickupMessage="Mag (5.56mm)"
|
||||||
StaticMesh=StaticMesh'KillingFloorStatics.DualiesAmmo'
|
StaticMesh=StaticMesh'KillingFloorStatics.DualiesAmmo'
|
||||||
|
@ -14,7 +14,7 @@ defaultproperties
|
|||||||
FireSoundRef="KF_M4RifleSnd.M4Rifle_Fire_Single_M"
|
FireSoundRef="KF_M4RifleSnd.M4Rifle_Fire_Single_M"
|
||||||
StereoFireSoundRef="KF_M4RifleSnd.M4Rifle_Fire_Single_S"
|
StereoFireSoundRef="KF_M4RifleSnd.M4Rifle_Fire_Single_S"
|
||||||
NoAmmoSoundRef="KF_AK47Snd.AK47_DryFire"
|
NoAmmoSoundRef="KF_AK47Snd.AK47_DryFire"
|
||||||
DamageType=Class'NicePack.NiceDamTypeL85A2Z'
|
DamageType=class'NiceDamTypeL85A2Z'
|
||||||
DamageMin=81
|
DamageMin=81
|
||||||
DamageMax=81
|
DamageMax=81
|
||||||
Momentum=10000.000000
|
Momentum=10000.000000
|
||||||
@ -25,7 +25,7 @@ defaultproperties
|
|||||||
TweenTime=0.025000
|
TweenTime=0.025000
|
||||||
FireForce="AssaultRifleFire"
|
FireForce="AssaultRifleFire"
|
||||||
FireRate=0.250000
|
FireRate=0.250000
|
||||||
AmmoClass=Class'NicePack.NiceL85A2Ammo'
|
AmmoClass=class'NiceL85A2Ammo'
|
||||||
ShakeRotMag=(X=75.000000,Y=75.000000,Z=250.000000)
|
ShakeRotMag=(X=75.000000,Y=75.000000,Z=250.000000)
|
||||||
ShakeRotRate=(X=10000.000000,Y=10000.000000,Z=10000.000000)
|
ShakeRotRate=(X=10000.000000,Y=10000.000000,Z=10000.000000)
|
||||||
ShakeRotTime=3.000000
|
ShakeRotTime=3.000000
|
||||||
|
@ -15,7 +15,7 @@ defaultproperties
|
|||||||
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
AmmoMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
CorrespondingPerkIndex=3
|
CorrespondingPerkIndex=3
|
||||||
EquipmentCategoryID=3
|
EquipmentCategoryID=3
|
||||||
InventoryType=Class'NicePack.NiceL85A2Z'
|
InventoryType=class'NiceL85A2Z'
|
||||||
PickupMessage="You got the L85A2"
|
PickupMessage="You got the L85A2"
|
||||||
PickupSound=Sound'KF_FNFALSnd.FNFAL_Pickup'
|
PickupSound=Sound'KF_FNFALSnd.FNFAL_Pickup'
|
||||||
PickupForce="AssaultRiflePickup"
|
PickupForce="AssaultRiflePickup"
|
||||||
|
@ -37,7 +37,7 @@ defaultproperties
|
|||||||
SelectedHudImageRef="NicePackT.L85A2.L85A2_Selected"
|
SelectedHudImageRef="NicePackT.L85A2.L85A2_Selected"
|
||||||
PlayerIronSightFOV=40.000000
|
PlayerIronSightFOV=40.000000
|
||||||
ZoomedDisplayFOV=65.000000
|
ZoomedDisplayFOV=65.000000
|
||||||
FireModeClass(0)=Class'NicePack.NiceL85A2Fire'
|
FireModeClass(0)=class'NiceL85A2Fire'
|
||||||
FireModeClass(1)=Class'KFMod.NoFire'
|
FireModeClass(1)=Class'KFMod.NoFire'
|
||||||
PutDownAnim="PutDown"
|
PutDownAnim="PutDown"
|
||||||
SelectAnimRate=1.500000
|
SelectAnimRate=1.500000
|
||||||
@ -53,10 +53,10 @@ defaultproperties
|
|||||||
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
||||||
InventoryGroup=3
|
InventoryGroup=3
|
||||||
GroupOffset=1
|
GroupOffset=1
|
||||||
PickupClass=Class'NicePack.NiceL85A2Pickup'
|
PickupClass=class'NiceL85A2Pickup'
|
||||||
PlayerViewOffset=(X=20.000000,Y=25.000000,Z=-10.000000)
|
PlayerViewOffset=(X=20.000000,Y=25.000000,Z=-10.000000)
|
||||||
BobDamping=6.000000
|
BobDamping=6.000000
|
||||||
AttachmentClass=Class'NicePack.NiceL85A2Attachment'
|
AttachmentClass=class'NiceL85A2Attachment'
|
||||||
IconCoords=(X1=434,Y1=253,X2=506,Y2=292)
|
IconCoords=(X1=434,Y1=253,X2=506,Y2=292)
|
||||||
ItemName="L85A2"
|
ItemName="L85A2"
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,7 @@ class NiceDamTypeM4AssaultRifle extends NiceDamageTypeVetCommando
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
HeadShotDamageMult=1.500000
|
HeadShotDamageMult=1.500000
|
||||||
WeaponClass=Class'NicePack.NiceM4AssaultRifle'
|
WeaponClass=class'NiceM4AssaultRifle'
|
||||||
DeathString="%k killed %o (M4)."
|
DeathString="%k killed %o (M4)."
|
||||||
FemaleSuicide="%o shot herself in the foot."
|
FemaleSuicide="%o shot herself in the foot."
|
||||||
MaleSuicide="%o shot himself in the foot."
|
MaleSuicide="%o shot himself in the foot."
|
||||||
|
@ -2,11 +2,11 @@ class NiceM4Ammo extends NiceAmmo;
|
|||||||
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
#EXEC OBJ LOAD FILE=KillingFloorHUD.utx
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
WeaponPickupClass=Class'NicePack.NiceM4Pickup'
|
WeaponPickupClass=class'NiceM4Pickup'
|
||||||
AmmoPickupAmount=30
|
AmmoPickupAmount=30
|
||||||
MaxAmmo=240
|
MaxAmmo=240
|
||||||
InitialAmount=60
|
InitialAmount=60
|
||||||
PickupClass=Class'NicePack.NiceM4AmmoPickup'
|
PickupClass=class'NiceM4AmmoPickup'
|
||||||
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
|
||||||
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
IconCoords=(X1=336,Y1=82,X2=382,Y2=125)
|
||||||
ItemName="M4 bullets"
|
ItemName="M4 bullets"
|
||||||
|
@ -2,7 +2,7 @@ class NiceM4AmmoPickup extends NiceAmmoPickup;
|
|||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
AmmoAmount=30
|
AmmoAmount=30
|
||||||
InventoryType=Class'NicePack.NiceM4Ammo'
|
InventoryType=class'NiceM4Ammo'
|
||||||
PickupMessage="Rounds 5.56mm"
|
PickupMessage="Rounds 5.56mm"
|
||||||
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
StaticMesh=StaticMesh'KillingFloorStatics.L85Ammo'
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ defaultproperties
|
|||||||
SelectedHudImageRef="KillingFloor2HUD.WeaponSelect.M4"
|
SelectedHudImageRef="KillingFloor2HUD.WeaponSelect.M4"
|
||||||
PlayerIronSightFOV=65.000000
|
PlayerIronSightFOV=65.000000
|
||||||
ZoomedDisplayFOV=45.000000
|
ZoomedDisplayFOV=45.000000
|
||||||
FireModeClass(0)=Class'NicePack.NiceM4Fire'
|
FireModeClass(0)=class'NiceM4Fire'
|
||||||
FireModeClass(1)=Class'KFMod.NoFire'
|
FireModeClass(1)=Class'KFMod.NoFire'
|
||||||
PutDownAnim="PutDown"
|
PutDownAnim="PutDown"
|
||||||
SelectForce="SwitchToAssaultRifle"
|
SelectForce="SwitchToAssaultRifle"
|
||||||
@ -44,10 +44,10 @@ defaultproperties
|
|||||||
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
CustomCrossHairTextureName="Crosshairs.HUD.Crosshair_Cross5"
|
||||||
InventoryGroup=3
|
InventoryGroup=3
|
||||||
GroupOffset=10
|
GroupOffset=10
|
||||||
PickupClass=Class'NicePack.NiceM4Pickup'
|
PickupClass=class'NiceM4Pickup'
|
||||||
PlayerViewOffset=(X=25.000000,Y=18.000000,Z=-6.000000)
|
PlayerViewOffset=(X=25.000000,Y=18.000000,Z=-6.000000)
|
||||||
BobDamping=6.000000
|
BobDamping=6.000000
|
||||||
AttachmentClass=Class'NicePack.NiceM4Attachment'
|
AttachmentClass=class'NiceM4Attachment'
|
||||||
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
IconCoords=(X1=245,Y1=39,X2=329,Y2=79)
|
||||||
ItemName="M4"
|
ItemName="M4"
|
||||||
TransientSoundVolume=1.250000
|
TransientSoundVolume=1.250000
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user