Patch [Version 0.3.4 "Private balance round #3"]

This commit is contained in:
Anton Tarasenko 2021-06-11 21:10:09 +07:00
parent 78b4dfeb29
commit c536198a52
76 changed files with 376 additions and 154 deletions

View File

@ -44,8 +44,10 @@ State MatchInProgress{
WaveNum = InitialWave; WaveNum = InitialWave;
InvasionGameReplicationInfo(GameReplicationInfo).WaveNumber = WaveNum; InvasionGameReplicationInfo(GameReplicationInfo).WaveNumber = WaveNum;
if(NicePackMutator.bInitialTrader) if(NicePackMutator.bInitialTrader) {
WaveCountDown = NicePackMutator.initialTraderTime + 5; WaveCountDown = NicePackMutator.initialTraderTime + 5;
NicePackMutator.TraderStart();
}
else else
WaveCountDown = 10; WaveCountDown = 10;
@ -67,6 +69,136 @@ State MatchInProgress{
NicePackMutator.WaveStart(); NicePackMutator.WaveStart();
} }
} }
function ScoreKill(Controller Killer, Controller Other)
{
local PlayerReplicationInfo OtherPRI;
local float KillScore;
local Controller C;
OtherPRI = Other.PlayerReplicationInfo;
if ( OtherPRI != None )
{
OtherPRI.NumLives++;
OtherPRI.Score -= (OtherPRI.Score * (GameDifficulty * 0.05)); // you Lose 35% of your current cash on Hell on Earth, 15% on normal.
OtherPRI.Team.Score -= (OtherPRI.Score * (GameDifficulty * 0.05));
if (OtherPRI.Score < 0 )
OtherPRI.Score = 0;
if (OtherPRI.Team.Score < 0 )
OtherPRI.Team.Score = 0;
OtherPRI.Team.NetUpdateTime = Level.TimeSeconds - 1;
OtherPRI.bOutOfLives = true;
if( Killer!=None && Killer.PlayerReplicationInfo!=None && Killer.bIsPlayer )
BroadcastLocalizedMessage(class'KFInvasionMessage',1,OtherPRI,Killer.PlayerReplicationInfo);
else if( Killer==None || Monster(Killer.Pawn)==None )
BroadcastLocalizedMessage(class'KFInvasionMessage',1,OtherPRI);
else BroadcastLocalizedMessage(class'KFInvasionMessage',1,OtherPRI,,Killer.Pawn.Class);
CheckScore(None);
}
if ( GameRulesModifiers != None )
GameRulesModifiers.ScoreKill(Killer, Other);
if ( MonsterController(Killer) != None )
return;
if( (killer == Other) || (killer == None) )
{
if ( Other.PlayerReplicationInfo != None )
{
Other.PlayerReplicationInfo.Score -= 1;
Other.PlayerReplicationInfo.NetUpdateTime = Level.TimeSeconds - 1;
ScoreEvent(Other.PlayerReplicationInfo,-1,"self_frag");
}
}
if ( Killer==None || !Killer.bIsPlayer || (Killer==Other) )
return;
if ( Other.bIsPlayer )
{
Killer.PlayerReplicationInfo.Score -= 5;
Killer.PlayerReplicationInfo.Team.Score -= 2;
Killer.PlayerReplicationInfo.NetUpdateTime = Level.TimeSeconds - 1;
Killer.PlayerReplicationInfo.Team.NetUpdateTime = Level.TimeSeconds - 1;
ScoreEvent(Killer.PlayerReplicationInfo, -5, "team_frag");
return;
}
if ( LastKilledMonsterClass == None )
KillScore = 1;
else if(Killer.PlayerReplicationInfo !=none)
{
KillScore = LastKilledMonsterClass.Default.ScoringValue;
// Scale killscore by difficulty
if ( GameDifficulty >= 5.0 ) // Suicidal and Hell on Earth
{
KillScore *= 0.65;
}
else if ( GameDifficulty >= 4.0 ) // Hard
{
KillScore *= 0.85;
}
else if ( GameDifficulty >= 2.0 ) // Normal
{
KillScore *= 1.0;
}
else //if ( GameDifficulty == 1.0 ) // Beginner
{
KillScore *= 2.0;
}
// Increase score in a short game, so the player can afford to buy cool stuff by the end
if( KFGameLength == GL_Short )
{
KillScore *= 1.75;
}
KillScore = Max(1,int(KillScore));
if (NicePackMutator.bUseProgresiveCash) {
KillScore = 0;
}
Killer.PlayerReplicationInfo.Kills++;
ScoreKillAssists(KillScore, Other, Killer);
Killer.PlayerReplicationInfo.Team.Score += KillScore;
Killer.PlayerReplicationInfo.NetUpdateTime = Level.TimeSeconds - 1;
Killer.PlayerReplicationInfo.Team.NetUpdateTime = Level.TimeSeconds - 1;
TeamScoreEvent(Killer.PlayerReplicationInfo.Team.TeamIndex, 1, "tdm_frag");
}
if (Killer.PlayerReplicationInfo !=none && Killer.PlayerReplicationInfo.Score < 0)
Killer.PlayerReplicationInfo.Score = 0;
/* Begin Marco's Kill Messages */
if( Class'HUDKillingFloor'.Default.MessageHealthLimit<=Other.Pawn.Default.Health ||
Class'HUDKillingFloor'.Default.MessageMassLimit<=Other.Pawn.Default.Mass )
{
for( C=Level.ControllerList; C!=None; C=C.nextController )
{
if( C.bIsPlayer && xPlayer(C)!=None )
{
xPlayer(C).ReceiveLocalizedMessage(Class'KillsMessage',1,Killer.PlayerReplicationInfo,,Other.Pawn.Class);
}
}
}
else
{
if( xPlayer(Killer)!=None )
{
xPlayer(Killer).ReceiveLocalizedMessage(Class'KillsMessage',,,,Other.Pawn.Class);
}
}
/* End Marco's Kill Messages */
}
function DramaticEvent(float BaseZedTimePossibility, optional float DesiredZedTimeDuration){ function DramaticEvent(float BaseZedTimePossibility, optional float DesiredZedTimeDuration){
local bool bWasZedTime; local bool bWasZedTime;
bWasZedTime = bZEDTimeActive; bWasZedTime = bZEDTimeActive;

View File

@ -11,8 +11,8 @@ var config bool bStillDuringInitTrader; // Force players to stand still duri
var config int initialTraderTime; // How much time should be allowed for initial trade? var config int initialTraderTime; // How much time should be allowed for initial trade?
// Progressive dosh config // Progressive dosh config
var config bool bUseProgresiveCash; // Use progressive dosh system? var config bool bUseProgresiveCash; // Use progressive dosh system?
var config int startupCashBeg, startupCashNormal, startupCashHard, startupCashSui, startupCashHOE; // Cash given to player for joining for the first time on current map var config array<int> waveCash;
var config int waveCashBeg, waveCashNormal, waveCashHard, waveCashSui, waveCashHOE; // Cash that should be given to players for each wave they've skipped var config float lateMultiplier;
// Experience-conversion controlling variables // Experience-conversion controlling variables
var config bool bConvertExp; // Should we even convert old exp into a new one? var config bool bConvertExp; // Should we even convert old exp into a new one?
var config float vetFieldMedicExpCost; // Amount of exp per HP healed var config float vetFieldMedicExpCost; // Amount of exp per HP healed
@ -504,6 +504,9 @@ simulated function bool CheckReplacement(Actor Other, out byte bSuperRelevant){
} }
niceMonster = NiceMonster(Other); niceMonster = NiceMonster(Other);
if(niceMonster != none){ if(niceMonster != none){
if (bUseProgresiveCash) {
niceMonster.ScoringValue = 0;
}
// Add hardcore level // Add hardcore level
for(i = 0;i < ZedDatabase.Length;i ++){ for(i = 0;i < ZedDatabase.Length;i ++){
HLBonus = 0.0; HLBonus = 0.0;
@ -608,30 +611,35 @@ simulated function AddWeapProgress(class<NiceWeapon> weapClass, float progress,
simulated function ClearWeapProgress(){ simulated function ClearWeapProgress(){
niceWeapProgressSet.Length = 0; niceWeapProgressSet.Length = 0;
} }
// Returns cash per wave based on current difficulty
// Returns cash per wave based on current difficulty
function int GetWaveCash(int lastCashWave, int nextWave){
local int i;
local int accumulatedDosh;
for (i = lastCashWave; i < nextWave; i += 1) {
accumulatedDosh += waveCash[i];
}
if (lastCashWave + 1 < nextWave) {
accumulatedDosh *= lateMultiplier;
}
return accumulatedDosh;
}
// Gives out appropriate (for the wave he entered) amount of dosh to the player // Gives out appropriate (for the wave he entered) amount of dosh to the player
function GiveProgressiveDosh(NicePlayerController nicePlayer){ function GiveProgressiveDosh(NicePlayerController nicePlayer){
local int wavesPassed; local int nextWave;
local PlayerRecord record; local PlayerRecord record;
local class<NiceVeterancyTypes> niceVet;
// Too early to give dosh // Too early to give dosh
if(!ScrnGT.IsInState('MatchInProgress')) if(!ScrnGT.IsInState('MatchInProgress'))
return; return;
// Real spectators shouldn't be affected // Real spectators shouldn't be affected
if(!nicePlayer.PlayerReplicationInfo.bOnlySpectator){ if(nicePlayer == none) return;
if(nicePlayer.PlayerReplicationInfo.bIsSpectator) return;
if(nicePlayer.PlayerReplicationInfo.bOnlySpectator) return;
record = FindPlayerRecord(nicePlayer.steamID64); record = FindPlayerRecord(nicePlayer.steamID64);
if(record.lastCashWave == -1){ nextWave = ScrnGT.WaveNum + 1;
nicePlayer.PlayerReplicationInfo.Score += GetStartupCash(); nicePlayer.PlayerReplicationInfo.Score += GetWaveCash(record.lastCashWave, nextWave);
record.lastCashWave = 0; record.lastCashWave = nextWave;
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(nicePlayer.PlayerReplicationInfo);
if(niceVet != none && niceVet.default.bNewTypePerk)
nicePlayer.PlayerReplicationInfo.Score += 100;
}
wavesPassed = ScrnGT.WaveNum; // At a trader (and that's the only time this function should be called) 'WaveNum' is already a number of the next wave, so no need for '+1' here
if(wavesPassed > record.lastCashWave)
nicePlayer.PlayerReplicationInfo.Score += (wavesPassed - record.lastCashWave) * GetWaveCash();
record.lastCashWave = wavesPassed;
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;
@ -669,6 +677,7 @@ simulated function Mutate(string MutateString, PlayerController kfPlayer){
i ++; i ++;
} }
nicePlayer = NicePlayerController(kfPlayer); nicePlayer = NicePlayerController(kfPlayer);
Log("UMBRA" @ command);
if(command ~= "ECHO") if(command ~= "ECHO")
kfPlayer.ClientMessage(Mid(MutateString, 5)); kfPlayer.ClientMessage(Mid(MutateString, 5));
else if(command ~= "ZED" && bAlwaysAllowSkillChange) else if(command ~= "ZED" && bAlwaysAllowSkillChange)
@ -786,7 +795,6 @@ function MatchBegan(){
// Called when new wave begins // Called when new wave begins
function WaveStart(){ function WaveStart(){
local Controller P; local Controller P;
local PlayerRecord record;
local NiceHumanPawn nicePawn; local NiceHumanPawn nicePawn;
local NicePlayerController nicePlayer; local NicePlayerController nicePlayer;
bIsPreGame = false; bIsPreGame = false;
@ -794,12 +802,6 @@ function WaveStart(){
for(P = Level.ControllerList; P != none; P = P.nextController){ for(P = Level.ControllerList; P != none; P = P.nextController){
nicePlayer = NicePlayerController(P); nicePlayer = NicePlayerController(P);
if(nicePlayer != none){ if(nicePlayer != none){
// Update records
if(!nicePlayer.PlayerReplicationInfo.bIsSpectator && !nicePlayer.PlayerReplicationInfo.bOnlySpectator){
record = FindPlayerRecord(nicePlayer.steamID64);
record.lastCashWave = ScrnGT.WaveNum + 1;
UpdatePlayerRecord(record);
}
// Give out armor // Give out armor
nicePawn = NiceHumanPawn(nicePlayer.Pawn); nicePawn = NiceHumanPawn(nicePlayer.Pawn);
if(nicePawn != none && nicePawn.Health > 0){ if(nicePawn != none && nicePawn.Health > 0){
@ -817,7 +819,7 @@ function WaveStart(){
GameRules.RaiseHardcoreLevel(0.5 * ScrnMut.GameRules.HardcoreLevelFloat, "low player count"); GameRules.RaiseHardcoreLevel(0.5 * ScrnMut.GameRules.HardcoreLevelFloat, "low player count");
} }
} }
// Called when trader time begins (not the initial one) // Called when trader time begins
simulated function TraderStart(){ simulated function TraderStart(){
local Controller P; local Controller P;
local NiceHumanPawn nicePawn; local NiceHumanPawn nicePawn;
@ -829,6 +831,9 @@ simulated function TraderStart(){
nicePlayer.TryActivatePendingSkills(); nicePlayer.TryActivatePendingSkills();
nicePlayer.ClientSaveConfig(); nicePlayer.ClientSaveConfig();
nicePawn = NiceHumanPawn(nicePlayer.Pawn); nicePawn = NiceHumanPawn(nicePlayer.Pawn);
if (bUseProgresiveCash) {
GiveProgressiveDosh(nicePlayer);
}
} }
} }
} }
@ -848,33 +853,6 @@ simulated function ZedTimeDeactivated(){
Player.bJunkieExtFailed = false; Player.bJunkieExtFailed = false;
} }
} }
// Utility functions
// Returns startup cash based on current difficulty
function int GetStartupCash(){
if(Level.Game.GameDifficulty < 2.0)
return startupCashBeg;
else if(Level.Game.GameDifficulty < 4.0)
return startupCashNormal;
else if(Level.Game.GameDifficulty < 5.0)
return startupCashHard;
else if(Level.Game.GameDifficulty < 7.0)
return startupCashSui;
else
return startupCashHOE;
}
// Returns cash per wave based on current difficulty
function int GetWaveCash(){
if(Level.Game.GameDifficulty < 2.0)
return waveCashBeg;
else if(Level.Game.GameDifficulty < 4.0)
return waveCashNormal;
else if(Level.Game.GameDifficulty < 5.0)
return waveCashHard;
else if(Level.Game.GameDifficulty < 7.0)
return waveCashSui;
else
return waveCashHOE;
}
// Returns player record, corresponding to the given steam id // Returns player record, corresponding to the given steam id
function PlayerRecord FindPlayerRecord(string steamID){ function PlayerRecord FindPlayerRecord(string steamID){
local int i; local int i;
@ -884,7 +862,7 @@ function PlayerRecord FindPlayerRecord(string steamID){
return PlayerDatabase[i]; return PlayerDatabase[i];
newRecord.steamID = steamID; newRecord.steamID = steamID;
newRecord.bHasSpawned = false; newRecord.bHasSpawned = false;
newRecord.lastCashWave = -1; newRecord.lastCashWave = 0;
newRecord.kills = 0; newRecord.kills = 0;
newRecord.assists = 0; newRecord.assists = 0;
newRecord.deaths = 0; newRecord.deaths = 0;
@ -1089,16 +1067,15 @@ defaultproperties
bInitialTrader=True bInitialTrader=True
initialTraderTime=10 initialTraderTime=10
bUseProgresiveCash=True bUseProgresiveCash=True
startupCashBeg=500 waveCash(0)=1000
startupCashNormal=500 waveCash(1)=900
startupCashHard=500 waveCash(2)=800
startupCashSui=400 waveCash(3)=650
startupCashHOE=400 waveCash(4)=600
waveCashBeg=350 waveCash(5)=450
waveCashNormal=300 waveCash(6)=350
waveCashHard=200 waveCash(7)=250
waveCashSui=150 lateMultiplier=0.5
waveCashHOE=150
bConvertExp=True bConvertExp=True
vetFieldMedicExpCost=2.000000 vetFieldMedicExpCost=2.000000
vetFieldMedicDmgExpCost=0.025000 vetFieldMedicDmgExpCost=0.025000

View File

@ -44,6 +44,29 @@ static function float GetMovementSpeedModifier(KFPlayerReplicationInfo KFPRI, KF
static function float GetReloadSpeedModifierStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> Other){ static function float GetReloadSpeedModifierStatic(KFPlayerReplicationInfo KFPRI, class<KFWeapon> Other){
return 1.3; return 1.3;
} }
static function float GetFireSpeedModStatic(KFPlayerReplicationInfo KFPRI, class<Weapon> other){
local float fireSpeed;
local NicePlayerController nicePlayer;
local class<NiceWeaponPickup> pickupClass;
pickupClass = GetPickupFromWeapon(other);
if(KFPRI.Owner == none)
return 1.0;
if(IsPerkedPickup(pickupClass) && HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoOverclocking'))
fireSpeed = class'NiceSkillHeavyOverclocking'.default.fireSpeedMult;
else
fireSpeed = 1.0;
nicePlayer = NicePlayerController(KFPRI.Owner);
return fireSpeed;
}
static function float ModifyRecoilSpread(KFPlayerReplicationInfo KFPRI, WeaponFire other, out float Recoil){
local class<NiceWeaponPickup> pickupClass;
pickupClass = GetPickupFromWeaponFire(other);
if(IsPerkedPickup(pickupClass) && HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoOverclocking'))
Recoil = class'NiceSkillCommandoOverclocking'.default.fireSpeedMult;
else
Recoil = 1.0;
return Recoil;
}
static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI){ static function int ZedTimeExtensions(KFPlayerReplicationInfo KFPRI){
/*if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoTactitian')) /*if(HasSkill(NicePlayerController(KFPRI.Owner), class'NiceSkillCommandoTactitian'))
return class'NiceSkillCommandoTactitian'.default.bonusExt + 3;*/ return class'NiceSkillCommandoTactitian'.default.bonusExt + 3;*/
@ -60,9 +83,9 @@ defaultproperties
SkillGroupA(2)=Class'NicePack.NiceSkillCommandoPerfectExecution' SkillGroupA(2)=Class'NicePack.NiceSkillCommandoPerfectExecution'
//SkillGroupA(3)=Class'NicePack.' //SkillGroupA(3)=Class'NicePack.'
SkillGroupA(4)=Class'NicePack.NiceSkillCommandoZEDProfessional' SkillGroupA(4)=Class'NicePack.NiceSkillCommandoZEDProfessional'
SkillGroupB(0)=Class'NicePack.NiceSkillCommandoAdrenalineShot' SkillGroupB(0)=Class'NicePack.NiceSkillCommandoRegeneration'
SkillGroupB(1)=Class'NicePack.NiceSkillCommandoRegeneration' SkillGroupB(1)=Class'NicePack.NiceSkillCommandoQuickermags'
SkillGroupB(2)=Class'NicePack.NiceSkillCommandoTranquilizer' SkillGroupB(2)=Class'NicePack.NiceSkillCommandoOverclocking'
//SkillGroupB(3)=Class'NicePack.' //SkillGroupB(3)=Class'NicePack.'
SkillGroupB(4)=Class'NicePack.NiceSkillCommandoZEDHeavenCanceller' SkillGroupB(4)=Class'NicePack.NiceSkillCommandoZEDHeavenCanceller'
progressArray0(0)=100 progressArray0(0)=100

View File

@ -3,7 +3,7 @@ class NiceSkillCommandoExplosivePower extends NiceSkill
var float dmgMod; var float dmgMod;
defaultproperties defaultproperties
{ {
dmgMod=1.200000 dmgMod=1.000000
SkillName="Explosive power" SkillName="Explosive power"
SkillEffects="Burst fire deals 20% more damage and has reduced delay between shots." SkillEffects="Burst fire shots one more bullet."
} }

View File

@ -0,0 +1,9 @@
class NiceSkillCommandoOverclocking extends NiceSkill
abstract;
var float fireSpeedMult;
defaultproperties
{
fireSpeedMult=1.300000
SkillName="Overclocking"
SkillEffects="+30% fire speed with perked weapons. Don't ask, it just works."
}

View File

@ -0,0 +1,9 @@
class NiceSkillCommandoQuickerMags extends NiceSkill
abstract;
var float speedBonus;
defaultproperties
{
speedBonus=2.000000
SkillName="Quicker mags"
SkillEffects="Active reload speed is twice as fast."
}

View File

@ -4,8 +4,11 @@ class NiceVeterancyTypes extends ScrnVeterancyTypes
// Temporarily needed variable to distinguish between new and old type perks // Temporarily needed variable to distinguish between new and old type perks
var bool bNewTypePerk; var bool bNewTypePerk;
// Skills // Skills
var bool isDualPerk;
var class<NiceSkill> SkillGroupA[5]; var class<NiceSkill> SkillGroupA[5];
var class<NiceSkill> SkillGroupB[5]; var class<NiceSkill> SkillGroupB[5];
var class<NiceSkill> AltSkillGroupA[4];
var class<NiceSkill> AltSkillGroupB[4];
// Checks if player is can use given skill // Checks if player is can use given skill
static function bool CanUseSkill(NicePlayerController nicePlayer, class<NiceSkill> skill){ static function bool CanUseSkill(NicePlayerController nicePlayer, class<NiceSkill> skill){
local int i; local int i;

View File

@ -0,0 +1,13 @@
class NiceSkillSpecialtyGunslinger extends NiceSkill
abstract;
var float reloadMultiplier;
var float movementMultiplier;
defaultproperties
{
reloadMultiplier = 1.25
movementMultiplier = 1.15;
SkillName="Gunslinger"
SkillEffects="Specialization in handling your guns comes with 25% faster reload and 15% faster movement."
}

View File

@ -0,0 +1,11 @@
class NiceSkillSpecialtySharpshooter extends NiceSkill
abstract;
var float hsMultiplier;
defaultproperties
{
hsMultiplier = 1.25;
SkillName="Sharpshooter"
SkillEffects="Specialization in making calculated, precision shots comes with 25% more headshot damage."
}

View File

@ -1,4 +1,5 @@
class NiceDualies extends NiceWeapon; class NiceDualies extends NiceWeapon;
var bool startedWithFullPistol;
var class<NiceSingle> SingleClass; var class<NiceSingle> SingleClass;
var name altFlashBoneName; var name altFlashBoneName;
var name altTPAnim; var name altTPAnim;
@ -45,6 +46,22 @@ simulated function SetupDualReloadEvents(){
record.eventFrame = rightInsert; record.eventFrame = rightInsert;
relEvents[relEvents.Length] = record; relEvents[relEvents.Length] = record;
} }
exec simulated function ClientReloadMeNow(){
startedWithFullPistol = false;
if ( MagAmmoRemLeftClient >= GetSingleMagCapacity()
|| MagAmmoRemRightClient >= GetSingleMagCapacity()) {
startedWithFullPistol = true;
}
super.ClientReloadMeNow();
}
simulated function float GetCurrentReloadMult(){
local float normalMultiplier;
normalMultiplier = super.GetCurrentReloadMult();
if (startedWithFullPistol) {
return normalMultiplier * 2;
}
return normalMultiplier;
}
// Don't use that one for dualies // Don't use that one for dualies
simulated function AddReloadedAmmo(){} simulated function AddReloadedAmmo(){}
// Use this one // Use this one

View File

@ -50,7 +50,7 @@ function ServerSwitchToOtherSingle(){
MagAmmoRemaining = otherMagazine; MagAmmoRemaining = otherMagazine;
otherMagazine = swap; otherMagazine = swap;
ClientSetMagSize(MagAmmoRemaining, bRoundInChamber); ClientSetMagSize(MagAmmoRemaining, bRoundInChamber);
//nicePawn.ClientChangeWeapon(self); nicePawn.ClientChangeWeapon(self);
} }
function ServerSwitchToDual(){ function ServerSwitchToDual(){
local int m; local int m;

View File

@ -144,6 +144,12 @@ simulated function PostBeginPlay(){
super.PostBeginPlay(); super.PostBeginPlay();
} }
simulated function int GetBurstLength(){ simulated function int GetBurstLength(){
local NicePlayerController nicePlayer;
if(Instigator != none)
nicePlayer = NicePlayerController(Instigator.Controller);
if(nicePlayer != none && class'NiceVeterancyTypes'.static.hasSkill(nicePlayer, class'NiceSkillCommandoExplosivePower')) {
return currentContext.burstLength + 1;
}
return currentContext.burstLength; return currentContext.burstLength;
} }
simulated function ModeTick(float delta){ simulated function ModeTick(float delta){

View File

@ -1122,6 +1122,7 @@ exec function ReloadMeNow(){
} }
simulated function float GetCurrentReloadMult(){ simulated function float GetCurrentReloadMult(){
local float ReloadMulti; local float ReloadMulti;
local float actualActiveSpeedUp;
local float timeDilationSpeedup; local float timeDilationSpeedup;
local NiceHumanPawn nicePawn; local NiceHumanPawn nicePawn;
local NicePlayerController nicePlayer; local NicePlayerController nicePlayer;
@ -1137,12 +1138,16 @@ simulated function float GetCurrentReloadMult(){
if(bGiveObsessiveBonus) if(bGiveObsessiveBonus)
ReloadMulti *= class'NiceSkillSupportObsessive'.default.reloadBonus; ReloadMulti *= class'NiceSkillSupportObsessive'.default.reloadBonus;
// Active reload speedup // Active reload speedup
actualActiveSpeedUp = activeSpeedup;
if (nicePlayer != none && niceVet.static.hasSkill(nicePlayer, class'NiceSkillCommandoQuickerMags')) {
actualActiveSpeedUp *= 2;
}
if(activeReloadState == ACTR_SUCCESS) if(activeReloadState == ACTR_SUCCESS)
ReloadMulti *= activeSpeedup; ReloadMulti *= actualActiveSpeedUp;
else if(activeReloadState == ACTR_FAIL) else if(activeReloadState == ACTR_FAIL)
ReloadMulti *= activeSlowdown; ReloadMulti *= activeSlowdown;
else if(bCanActiveReload && reloadType == RTYPE_SINGLE && subReloadStage == 0) else if(bCanActiveReload && reloadType == RTYPE_SINGLE && subReloadStage == 0)
ReloadMulti *= activeSpeedup; ReloadMulti *= actualActiveSpeedUp;
if(nicePlayer != none && niceVet.static.hasSkill(nicePlayer, class'NiceSkillCommandoZEDProfessional')) { if(nicePlayer != none && niceVet.static.hasSkill(nicePlayer, class'NiceSkillCommandoZEDProfessional')) {
timeDilationSpeedup = (1.1 / Level.TimeDilation); timeDilationSpeedup = (1.1 / Level.TimeDilation);
} }

View File

@ -9,7 +9,7 @@ defaultproperties
reloadMagStartFrame=0.363000 reloadMagStartFrame=0.363000
reloadChargeStartFrame=0.726000 reloadChargeStartFrame=0.726000
MagazineBone="Bone_Magazine" MagazineBone="Bone_Magazine"
MagCapacity=30 MagCapacity=40
ReloadRate=3.000000 ReloadRate=3.000000
ReloadAnim="Reload" ReloadAnim="Reload"
ReloadAnimRate=1.000000 ReloadAnimRate=1.000000

View File

@ -1,12 +1,13 @@
class NiceAK12Fire extends NiceFire; class NiceAK12Fire extends NiceFire;
defaultproperties defaultproperties
{ {
MaxBurstLength=4
zedTimeFireSpeedUp=1.500000 zedTimeFireSpeedUp=1.500000
ProjectileSpeed=44000.000000 ProjectileSpeed=44000.000000
FireAimedAnim="Fire_Iron" FireAimedAnim="Fire_Iron"
RecoilRate=0.040000 RecoilRate=0.040000
maxVerticalRecoilAngle=240 maxVerticalRecoilAngle=160
maxHorizontalRecoilAngle=120 maxHorizontalRecoilAngle=80
ShellEjectClass=Class'ScrnWeaponPack.KFShellEjectAK12AR' ShellEjectClass=Class'ScrnWeaponPack.KFShellEjectAK12AR'
ShellEjectBoneName="Shell_eject" ShellEjectBoneName="Shell_eject"
bAccuracyBonusForSemiAuto=True bAccuracyBonusForSemiAuto=True

View File

@ -3,7 +3,8 @@ defaultproperties
{ {
Weight=6.000000 Weight=6.000000
cost=750 cost=750
BuyClipSize=30 AmmoCost=19
BuyClipSize=40
PowerValue=55 PowerValue=55
SpeedValue=80 SpeedValue=80
RangeValue=30 RangeValue=30

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=6.000000 Weight=6.000000
cost=750 cost=750
AmmoCost=30 AmmoCost=19
BuyClipSize=30 BuyClipSize=30
PowerValue=40 PowerValue=40
SpeedValue=80 SpeedValue=80

View File

@ -4,6 +4,7 @@ defaultproperties
bBackupWeapon=True bBackupWeapon=True
Weight=5.000000 Weight=5.000000
cost=200 cost=200
AmmoCost=6
BuyClipSize=30 BuyClipSize=30
PowerValue=24 PowerValue=24
SpeedValue=90 SpeedValue=90

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=8.000000 Weight=8.000000
cost=1250 cost=1250
AmmoCost=40 AmmoCost=28
BuyClipSize=20 BuyClipSize=20
PowerValue=45 PowerValue=45
SpeedValue=90 SpeedValue=90

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=5.000000 Weight=5.000000
cost=250 cost=250
AmmoCost=10 AmmoCost=7
BuyClipSize=15 BuyClipSize=15
PowerValue=45 PowerValue=45
SpeedValue=60 SpeedValue=60

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=5.000000 Weight=5.000000
cost=500 cost=500
AmmoCost=20 AmmoCost=16
BuyClipSize=30 BuyClipSize=30
PowerValue=30 PowerValue=30
SpeedValue=90 SpeedValue=90

View File

@ -2,9 +2,9 @@ class NiceM4M203NadeAmmo extends NiceAmmo;
defaultproperties defaultproperties
{ {
WeaponPickupClass=Class'NicePack.NiceM4M203Pickup' WeaponPickupClass=Class'NicePack.NiceM4M203Pickup'
AmmoPickupAmount=2 AmmoPickupAmount=1
MaxAmmo=12 MaxAmmo=15
InitialAmount=3 InitialAmount=4
PickupClass=Class'NicePack.NiceM4M203AmmoPickup' PickupClass=Class'NicePack.NiceM4M203AmmoPickup'
IconMaterial=Texture'KillingFloorHUD.Generic.HUD' IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
IconCoords=(X1=4,Y1=350,X2=110,Y2=395) IconCoords=(X1=4,Y1=350,X2=110,Y2=395)

View File

@ -4,7 +4,7 @@ defaultproperties
crossPerkIndecies(0)=3 crossPerkIndecies(0)=3
Weight=6.000000 Weight=6.000000
cost=750 cost=750
AmmoCost=40 AmmoCost=4
BuyClipSize=1 BuyClipSize=1
PowerValue=30 PowerValue=30
SpeedValue=90 SpeedValue=90

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=6.000000 Weight=6.000000
cost=750 cost=750
AmmoCost=30 AmmoCost=22
BuyClipSize=30 BuyClipSize=30
PowerValue=40 PowerValue=40
SpeedValue=85 SpeedValue=85

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=8.000000 Weight=8.000000
cost=1250 cost=1250
AmmoCost=40 AmmoCost=28
BuyClipSize=20 BuyClipSize=20
PowerValue=45 PowerValue=45
SpeedValue=85 SpeedValue=85

View File

@ -2,8 +2,8 @@ class NiceCLGLAmmo extends NiceAmmo;
defaultproperties defaultproperties
{ {
AmmoPickupAmount=4 AmmoPickupAmount=4
MaxAmmo=36 MaxAmmo=30
InitialAmount=9 InitialAmount=6
PickupClass=Class'NicePack.NiceCLGLAmmoPickup' PickupClass=Class'NicePack.NiceCLGLAmmoPickup'
IconMaterial=Texture'KillingFloorHUD.Generic.HUD' IconMaterial=Texture'KillingFloorHUD.Generic.HUD'
IconCoords=(X1=4,Y1=350,X2=110,Y2=395) IconCoords=(X1=4,Y1=350,X2=110,Y2=395)

View File

@ -1,7 +1,7 @@
class NiceCLGLAmmoPickup extends NiceAmmoPickup; class NiceCLGLAmmoPickup extends NiceAmmoPickup;
defaultproperties defaultproperties
{ {
AmmoAmount=6 AmmoAmount=4
InventoryType=Class'NicePack.NiceCLGLAmmo' InventoryType=Class'NicePack.NiceCLGLAmmo'
PickupMessage="CLGL Grenades" PickupMessage="CLGL Grenades"
StaticMesh=StaticMesh'KillingFloorStatics.FragPickup' StaticMesh=StaticMesh'KillingFloorStatics.FragPickup'

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=6.000000 Weight=6.000000
cost=500 cost=500
AmmoCost=28 AmmoCost=16
BuyClipSize=4 BuyClipSize=4
PowerValue=85 PowerValue=85
SpeedValue=65 SpeedValue=65

View File

@ -4,7 +4,7 @@ defaultproperties
{ {
Weight=9.000000 Weight=9.000000
cost=1250 cost=1250
AmmoCost=30 AmmoCost=13
BuyClipSize=1 BuyClipSize=1
PowerValue=100 PowerValue=100
SpeedValue=20 SpeedValue=20

View File

@ -2,7 +2,7 @@ class NiceM32Pickup extends NiceWeaponPickup;
defaultproperties defaultproperties
{ {
Weight=7.000000 Weight=7.000000
AmmoCost=60 AmmoCost=33
cost=1000 cost=1000
BuyClipSize=6 BuyClipSize=6
PowerValue=85 PowerValue=85

View File

@ -4,8 +4,8 @@ defaultproperties
crossPerkIndecies(0)=10 crossPerkIndecies(0)=10
Weight=4.000000 Weight=4.000000
cost=250 cost=250
AmmoCost=10 AmmoCost=4
BuyClipSize=3 BuyClipSize=1
PowerValue=85 PowerValue=85
SpeedValue=5 SpeedValue=5
RangeValue=75 RangeValue=75

View File

@ -1,8 +1,8 @@
class NicePipeBombPickup extends ScrnPipeBombPickup; class NicePipeBombPickup extends ScrnPipeBombPickup;
defaultproperties defaultproperties
{ {
cost=100 cost=50
AmmoCost=100 AmmoCost=50
ItemName="Pipe Bomb NW" ItemName="Pipe Bomb NW"
ItemShortName="Pipe Bomb NW" ItemShortName="Pipe Bomb NW"
AmmoItemName="Pipe Bomb NW" AmmoItemName="Pipe Bomb NW"

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=6.000000 Weight=6.000000
cost=750 cost=750
AmmoCost=30 AmmoCost=22
BuyClipSize=3 BuyClipSize=3
PowerValue=90 PowerValue=90
SpeedValue=35 SpeedValue=35

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=7.000000 Weight=7.000000
cost=1250 cost=1250
AmmoCost=250 AmmoCost=125
BuyClipSize=80 BuyClipSize=80
PowerValue=62 PowerValue=62
SpeedValue=92 SpeedValue=92

View File

@ -4,7 +4,7 @@ defaultproperties
{ {
cost=250 cost=250
Weight=8.000000 Weight=8.000000
AmmoCost=45 AmmoCost=12
BuyClipSize=30 BuyClipSize=30
PowerValue=49 PowerValue=49
SpeedValue=86 SpeedValue=86

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
cost=200 cost=200
Weight=5.000000 Weight=5.000000
AmmoCost=30 AmmoCost=5
BuyClipSize=30 BuyClipSize=30
PowerValue=41 PowerValue=41
SpeedValue=60 SpeedValue=60

View File

@ -8,7 +8,7 @@ defaultproperties
{ {
Weight=7.000000 Weight=7.000000
cost=1000 cost=1000
AmmoCost=100 AmmoCost=33
BuyClipSize=80 BuyClipSize=80
PowerValue=40 PowerValue=40
SpeedValue=100 SpeedValue=100

View File

@ -3,7 +3,8 @@ defaultproperties
{ {
bBackupWeapon=True bBackupWeapon=True
cost=100 cost=100
AmmoCost=8 AmmoCost=5
BuyClipSize=15
Description="A 9mm handgun, with a functional laser sight and flashlight. The barrel has been replaced with one that can chamber hotter ammunition loads, meaning faster bullets, meaning more damage!" Description="A 9mm handgun, with a functional laser sight and flashlight. The barrel has been replaced with one that can chamber hotter ammunition loads, meaning faster bullets, meaning more damage!"
ItemName="Beretta" ItemName="Beretta"
ItemShortName="9mm" ItemShortName="9mm"

View File

@ -3,7 +3,8 @@ defaultproperties
{ {
bBackupWeapon=True bBackupWeapon=True
cost=200 cost=200
AmmoCost=16 BuyClipSize=30
AmmoCost=10
Description="A pair of custom 9mm handguns. These have been improved with a laser sight and more powerful ammunition" Description="A pair of custom 9mm handguns. These have been improved with a laser sight and more powerful ammunition"
ItemName="Dual Berettas" ItemName="Dual Berettas"
ItemShortName="Dual Berettas" ItemShortName="Dual Berettas"

View File

@ -2,7 +2,7 @@ class NiceContenderPickup extends NiceWeaponPickup;
defaultproperties defaultproperties
{ {
Weight=3.000000 Weight=3.000000
AmmoCost=8 AmmoCost=5
cost=1000 cost=1000
BuyClipSize=1 BuyClipSize=1
PowerValue=60 PowerValue=60

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=2.000000 Weight=2.000000
cost=250 cost=250
AmmoCost=11 AmmoCost=14
BuyClipSize=8 BuyClipSize=8
PowerValue=65 PowerValue=65
SpeedValue=35 SpeedValue=35

View File

@ -3,8 +3,8 @@ defaultproperties
{ {
Weight=4.000000 Weight=4.000000
cost=500 cost=500
AmmoCost=22 AmmoCost=28
BuyClipSize=8 BuyClipSize=16
PowerValue=85 PowerValue=85
SpeedValue=35 SpeedValue=35
RangeValue=60 RangeValue=60

View File

@ -3,8 +3,9 @@ defaultproperties
{ {
bBackupWeapon=True bBackupWeapon=True
Weight=4.000000 Weight=4.000000
cost=250 cost=200
BuyClipSize=12 AmmoCost=6
BuyClipSize=24
PowerValue=70 PowerValue=70
SpeedValue=45 SpeedValue=45
RangeValue=60 RangeValue=60

View File

@ -3,7 +3,8 @@ defaultproperties
{ {
bBackupWeapon=True bBackupWeapon=True
Weight=2.000000 Weight=2.000000
cost=125 cost=100
AmmoCost=3
BuyClipSize=12 BuyClipSize=12
PowerValue=50 PowerValue=50
SpeedValue=45 SpeedValue=45

View File

@ -9,10 +9,11 @@ defaultproperties
StereoFireSoundRef="KF_MK23Snd.MK23_Fire_S" StereoFireSoundRef="KF_MK23Snd.MK23_Fire_S"
NoAmmoSoundRef="KF_HandcannonSnd.50AE_DryFire" NoAmmoSoundRef="KF_HandcannonSnd.50AE_DryFire"
DamageType=Class'NicePack.NiceDamTypeMK23Pistol' DamageType=Class'NicePack.NiceDamTypeMK23Pistol'
DamageMin=55 DamageMin=42
DamageMax=55 DamageMax=42
Momentum=18000.000000 Momentum=18000.000000
NoAmmoSound=None NoAmmoSound=None
bWaitForRelease=False
FireRate=0.175000 FireRate=0.175000
AmmoClass=Class'NicePack.NiceDualMK23Ammo' AmmoClass=Class'NicePack.NiceDualMK23Ammo'
ShakeRotMag=(Z=290.000000) ShakeRotMag=(Z=290.000000)

View File

@ -3,8 +3,8 @@ defaultproperties
{ {
Weight=4.000000 Weight=4.000000
cost=500 cost=500
AmmoCost=32 AmmoCost=20
BuyClipSize=12 BuyClipSize=24
PowerValue=70 PowerValue=70
SpeedValue=45 SpeedValue=45
RangeValue=60 RangeValue=60

View File

@ -26,6 +26,7 @@ defaultproperties
LaserAttachmentBone="Tip_Right" LaserAttachmentBone="Tip_Right"
altLaserAttachmentBone="Tip_Left" altLaserAttachmentBone="Tip_Left"
MagCapacity=24 MagCapacity=24
ReloadAnimRate=1.2
ReloadRate=4.466700 ReloadRate=4.466700
Weight=4.000000 Weight=4.000000
StandardDisplayFOV=60.000000 StandardDisplayFOV=60.000000

View File

@ -8,12 +8,13 @@ defaultproperties
StereoFireSoundRef="KF_MK23Snd.MK23_Fire_S" StereoFireSoundRef="KF_MK23Snd.MK23_Fire_S"
NoAmmoSoundRef="KF_HandcannonSnd.50AE_DryFire" NoAmmoSoundRef="KF_HandcannonSnd.50AE_DryFire"
DamageType=Class'NicePack.NiceDamTypeMK23Pistol' DamageType=Class'NicePack.NiceDamTypeMK23Pistol'
DamageMin=55 DamageMin=42
DamageMax=55 DamageMax=42
Momentum=18000.000000 Momentum=18000.000000
FireLoopAnim= FireLoopAnim=
FireEndAnim= FireEndAnim=
FireRate=0.350000 FireRate=0.350000
bWaitForRelease=False
AmmoClass=Class'NicePack.NiceMK23Ammo' AmmoClass=Class'NicePack.NiceMK23Ammo'
ShakeRotMag=(Z=290.000000) ShakeRotMag=(Z=290.000000)
ShakeRotRate=(X=10080.000000,Y=10080.000000) ShakeRotRate=(X=10080.000000,Y=10080.000000)

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=2.000000 Weight=2.000000
cost=250 cost=250
AmmoCost=16 AmmoCost=10
BuyClipSize=12 BuyClipSize=12
PowerValue=50 PowerValue=50
SpeedValue=45 SpeedValue=45

View File

@ -30,6 +30,7 @@ defaultproperties
reloadMagStartFrame=0.286000 reloadMagStartFrame=0.286000
reloadChargeStartFrame=-1.000000 reloadChargeStartFrame=-1.000000
MagCapacity=12 MagCapacity=12
ReloadAnimRate=1.2
ReloadRate=2.600000 ReloadRate=2.600000
Weight=2.000000 Weight=2.000000
StandardDisplayFOV=60.000000 StandardDisplayFOV=60.000000

View File

@ -1,8 +1,8 @@
class NiceDamTypeMagnumPistol extends NiceDamageTypeVetSharpshooter; class NiceDamTypeMagnumPistol extends NiceDamageTypeVetSharpshooter;
defaultproperties defaultproperties
{ {
flinchMultiplier=2.5 flinchMultiplier=2
stunMultiplier=6.0 stunMultiplier=3.75
MaxPenetrations=2 MaxPenetrations=2
PenDmgReduction=0.990000 PenDmgReduction=0.990000
HeadShotDamageMult=1.35 HeadShotDamageMult=1.35

View File

@ -7,7 +7,7 @@ defaultproperties
leftInsert=0.800000 leftInsert=0.800000
rightInsert=0.375000 rightInsert=0.375000
MagCapacity=12 MagCapacity=12
Weight=2.000000 Weight=4.000000
ReloadRate=2.23125 ReloadRate=2.23125
ReloadAnimRate=1.5 ReloadAnimRate=1.5
WeaponReloadAnim="Reload_DualRevolver" WeaponReloadAnim="Reload_DualRevolver"

View File

@ -1,10 +1,10 @@
class NiceDualMagnumPickup extends NiceDualiesPickup; class NiceDualMagnumPickup extends NiceDualiesPickup;
defaultproperties defaultproperties
{ {
Weight=2.000000 Weight=4.000000
cost=250 cost=250
AmmoCost=16 AmmoCost=10
BuyClipSize=6 BuyClipSize=12
PowerValue=80 PowerValue=80
SpeedValue=50 SpeedValue=50
RangeValue=65 RangeValue=65

View File

@ -9,9 +9,10 @@ defaultproperties
StereoFireSoundRef="KF_RevolverSnd.Revolver_Fire_S" StereoFireSoundRef="KF_RevolverSnd.Revolver_Fire_S"
NoAmmoSoundRef="KF_HandcannonSnd.50AE_DryFire" NoAmmoSoundRef="KF_HandcannonSnd.50AE_DryFire"
DamageType=Class'NicePack.NiceDamTypeMagnumPistol' DamageType=Class'NicePack.NiceDamTypeMagnumPistol'
DamageMin=61 DamageMin=82
DamageMax=61 DamageMax=82
Momentum=15000.000000 Momentum=15000.000000
bWaitForRelease=False
bPawnRapidFireAnim=False bPawnRapidFireAnim=False
FireLoopAnim= FireLoopAnim=
FireEndAnim= FireEndAnim=

View File

@ -1,9 +1,9 @@
class NiceMagnumPickup extends NiceSinglePickup; class NiceMagnumPickup extends NiceSinglePickup;
defaultproperties defaultproperties
{ {
Weight=1.000000 Weight=2.000000
cost=125 cost=125
AmmoCost=8 AmmoCost=5
BuyClipSize=6 BuyClipSize=6
PowerValue=60 PowerValue=60
SpeedValue=40 SpeedValue=40

View File

@ -11,7 +11,7 @@ defaultproperties
ReloadRate=1.2625 ReloadRate=1.2625
ReloadAnimRate=1.5 ReloadAnimRate=1.5
WeaponReloadAnim="Reload_Revolver" WeaponReloadAnim="Reload_Revolver"
Weight=1.000000 Weight=2.000000
StandardDisplayFOV=60.000000 StandardDisplayFOV=60.000000
TraderInfoTexture=Texture'KillingFloor2HUD.Trader_Weapon_Icons.Trader_Revolver' TraderInfoTexture=Texture'KillingFloor2HUD.Trader_Weapon_Icons.Trader_Revolver'
bIsTier2Weapon=True bIsTier2Weapon=True

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=4.000000 Weight=4.000000
cost=750 cost=750
AmmoCost=50 AmmoCost=22
BuyClipSize=33 BuyClipSize=33
PowerValue=50 PowerValue=50
SpeedValue=90 SpeedValue=90

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=5.000000 Weight=5.000000
cost=1250 cost=1250
AmmoCost=50 AmmoCost=33
BuyClipSize=30 BuyClipSize=30
PowerValue=45 PowerValue=45
SpeedValue=60 SpeedValue=60

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=4.000000 Weight=4.000000
cost=250 cost=250
AmmoCost=20 AmmoCost=10
BuyClipSize=30 BuyClipSize=30
PowerValue=30 PowerValue=30
SpeedValue=85 SpeedValue=85

View File

@ -4,7 +4,7 @@ defaultproperties
bBackupWeapon=True bBackupWeapon=True
Weight=3.000000 Weight=3.000000
cost=200 cost=200
AmmoCost=20 AmmoCost=10
BuyClipSize=40 BuyClipSize=40
PowerValue=22 PowerValue=22
SpeedValue=95 SpeedValue=95

View File

@ -2,7 +2,7 @@ class NiceAA12Pickup extends NiceWeaponPickup;
defaultproperties defaultproperties
{ {
cost=1250 cost=1250
AmmoCost=80 AmmoCost=50
BuyClipSize=20 BuyClipSize=20
PowerValue=85 PowerValue=85
SpeedValue=65 SpeedValue=65

View File

@ -3,6 +3,7 @@ defaultproperties
{ {
Weight=8.000000 Weight=8.000000
cost=500 cost=500
AmmoCost=13
BuyClipSize=6 BuyClipSize=6
PowerValue=70 PowerValue=70
SpeedValue=60 SpeedValue=60

View File

@ -2,7 +2,8 @@ class NiceBoomStickPickup extends NiceWeaponPickup;
var int SingleShotCount; var int SingleShotCount;
defaultproperties defaultproperties
{ {
cost=500 cost=750
AmmoCost=5
BuyClipSize=2 BuyClipSize=2
PowerValue=90 PowerValue=90
SpeedValue=30 SpeedValue=30

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=8.000000 Weight=8.000000
cost=250 cost=250
AmmoCost=20 AmmoCost=17
BuyClipSize=28 BuyClipSize=28
PowerValue=70 PowerValue=70
SpeedValue=55 SpeedValue=55

View File

@ -5,7 +5,7 @@ defaultproperties
bBackupWeapon=True bBackupWeapon=True
Weight=6.000000 Weight=6.000000
cost=200 cost=200
AmmoCost=15 AmmoCost=12
BuyClipSize=8 BuyClipSize=8
PowerValue=70 PowerValue=70
SpeedValue=40 SpeedValue=40

View File

@ -2,7 +2,7 @@ class NiceSpasPickup extends NiceWeaponPickup;
defaultproperties defaultproperties
{ {
cost=750 cost=500
Weight=8.000000 Weight=8.000000
BuyClipSize=10 BuyClipSize=10
PowerValue=55 PowerValue=55

View File

@ -6,7 +6,7 @@ defaultproperties
MaxPenetrations=5 MaxPenetrations=5
BigZedPenDmgReduction=0.750000 BigZedPenDmgReduction=0.750000
MediumZedPenDmgReduction=1.000000 MediumZedPenDmgReduction=1.000000
HeadShotDamageMult=1.900000 HeadShotDamageMult=2.6
bSniperWeapon=True bSniperWeapon=True
WeaponClass=Class'NicePack.NiceHuntingRifle' WeaponClass=Class'NicePack.NiceHuntingRifle'
DeathString="%k killed %o (Hunting Rifle)." DeathString="%k killed %o (Hunting Rifle)."

View File

@ -6,7 +6,7 @@ defaultproperties
{ {
Weight=6.000000 Weight=6.000000
cost=750 cost=750
AmmoCost=35 AmmoCost=34
BuyClipSize=5 BuyClipSize=5
PowerValue=55 PowerValue=55
SpeedValue=42 SpeedValue=42

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=8.000000 Weight=8.000000
cost=1000 cost=1000
AmmoCost=15 AmmoCost=25
BuyClipSize=20 BuyClipSize=20
PowerValue=55 PowerValue=55
SpeedValue=20 SpeedValue=20

View File

@ -2,7 +2,7 @@ class NiceM99Pickup extends NiceWeaponPickup;
defaultproperties defaultproperties
{ {
cost=1250 cost=1250
AmmoCost=60 AmmoCost=13
BuyClipSize=1 BuyClipSize=1
PowerValue=95 PowerValue=95
SpeedValue=30 SpeedValue=30

View File

@ -8,7 +8,7 @@ static function ScoredNiceHeadshot(KFSteamStatsAndAchievements KFStatsAndAchieve
defaultproperties defaultproperties
{ {
stunMultiplier=1.250000 stunMultiplier=1.250000
HeadShotDamageMult=4.000000 HeadShotDamageMult=4.75
bSniperWeapon=True bSniperWeapon=True
WeaponClass=Class'NicePack.NiceMaulerRifle' WeaponClass=Class'NicePack.NiceMaulerRifle'
DeathString="%k killed %o (S.P. Mauler)." DeathString="%k killed %o (S.P. Mauler)."

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=6.000000 Weight=6.000000
cost=750 cost=750
AmmoCost=50 AmmoCost=22
BuyClipSize=10 BuyClipSize=10
PowerValue=60 PowerValue=60
SpeedValue=10 SpeedValue=10

View File

@ -5,7 +5,7 @@ defaultproperties
{ {
Weight=8.000000 Weight=8.000000
cost=1250 cost=1250
AmmoCost=50 AmmoCost=42
BuyClipSize=10 BuyClipSize=10
PowerValue=90 PowerValue=90
SpeedValue=40 SpeedValue=40

View File

@ -3,7 +3,7 @@ defaultproperties
{ {
Weight=7.000000 Weight=7.000000
cost=1000 cost=1000
AmmoCost=15 AmmoCost=25
BuyClipSize=10 BuyClipSize=10
PowerValue=80 PowerValue=80
SpeedValue=40 SpeedValue=40

View File

@ -3,7 +3,8 @@ class NiceWinchesterPickup extends NiceWeaponPickup;
defaultproperties defaultproperties
{ {
Weight=6.000000 Weight=6.000000
cost=200 AmmoCost=13
cost=250
BuyClipSize=10 BuyClipSize=10
PowerValue=50 PowerValue=50
SpeedValue=35 SpeedValue=35

View File

@ -152,7 +152,7 @@ state RunningState
} }
defaultproperties defaultproperties
{ {
RageHealthPct=0.750000 RageHealthPct=1.1
RegenDelay=5.000000 RegenDelay=5.000000
RegenRate=4.000000 RegenRate=4.000000
SawAttackLoopSound=Sound'KF_BaseGorefast.Attack.Gorefast_AttackSwish3' SawAttackLoopSound=Sound'KF_BaseGorefast.Attack.Gorefast_AttackSwish3'
@ -160,11 +160,13 @@ defaultproperties
StunThreshold=1.000000 StunThreshold=1.000000
MoanVoice=None MoanVoice=None
StunsRemaining=5 StunsRemaining=5
BleedOutDuration=7.000000 BleedOutDuration=4.000000
MeleeDamage=25 MeleeDamage=25
MeleeAttackHitSound=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_HitPlayer' MeleeAttackHitSound=SoundGroup'KF_EnemiesFinalSnd.GoreFast.Gorefast_HitPlayer'
JumpSound=None JumpSound=None
HeadHealth=800.000000 HeadHealth=300.000000
HealthMax=500.000000
Health=500
HitSound(0)=None HitSound(0)=None
DeathSound(0)=None DeathSound(0)=None
ChallengeSound(0)=None ChallengeSound(0)=None