Patch [Version 0.3.4 "Private balance round #3"]
This commit is contained in:
parent
78b4dfeb29
commit
c536198a52
@ -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;
|
||||||
|
@ -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,31 +611,36 @@ 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;
|
||||||
local NicePlayerController nicePlayer;
|
local NicePlayerController nicePlayer;
|
||||||
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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."
|
||||||
}
|
}
|
||||||
|
@ -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."
|
||||||
|
}
|
@ -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."
|
||||||
|
}
|
@ -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;
|
||||||
|
@ -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."
|
||||||
|
}
|
@ -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."
|
||||||
|
}
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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){
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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'
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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"
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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"
|
||||||
|
@ -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
|
||||||
|
@ -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=
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)."
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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)."
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user