1
0
This commit is contained in:
GenZmeY 2021-06-23 01:34:46 +03:00
parent 90e235396c
commit 9a5bfed23e
17 changed files with 95 additions and 49 deletions

View File

@ -13,6 +13,8 @@ var name SoundCueName;
var float LastProgress; var float LastProgress;
var bool bLastMissionCritical; var bool bLastMissionCritical;
var bool bPrevCompleted;
function InitializeHUD() function InitializeHUD()
{ {
KFPC = KFPlayerController(GetPC()); KFPC = KFPlayerController(GetPC());
@ -77,10 +79,16 @@ function SetCompleted(bool bComplete)
DataObject.SetString("completeString", bComplete ? Localize("Objectives", "SuccessString", "KFGame") : ""); DataObject.SetString("completeString", bComplete ? Localize("Objectives", "SuccessString", "KFGame") : "");
SetObject("completeStatus", DataObject); SetObject("completeStatus", DataObject);
if (!bComplete)
{
bPrevCompleted = false;
}
//play sound queue //play sound queue
if (KFPC != none && KFPC.MyGFxHUD != none && bComplete) if (KFPC != none && KFPC.MyGFxHUD != none && bComplete && bComplete != bPrevCompleted)
{ {
KFPC.MyGFxHUD.PlaySoundFromTheme(SoundCueName, SoundThemeName); KFPC.MyGFxHUD.PlaySoundFromTheme(SoundCueName, SoundThemeName);
bPrevCompleted = true;
} }
} }
@ -192,7 +200,7 @@ DefaultProperties
{ {
LastProgress=-0.0f LastProgress=-0.0f
UpdateRate=0.1f UpdateRate=0.1f
bPrevCompleted=false
SoundThemeName=UI SoundThemeName=UI
SoundCueName=TraderTime_Countdown SoundCueName=TraderTime_Countdown
} }

View File

@ -177,17 +177,18 @@ function UpdatePlayerData()
local GFxObject DataProvider,TempData, PerkIconObject; local GFxObject DataProvider,TempData, PerkIconObject;
local int i; local int i;
local KFPlayerReplicationinfo KFPRI; local KFPlayerReplicationinfo KFPRI;
local KFGameReplicationInfo KFGRI;
local KFPlayerController KFPC; local KFPlayerController KFPC;
local int PlayerIndex; local int PlayerIndex;
KFPC = KFPlayerController(GetPC()); KFPC = KFPlayerController(GetPC());
KFGRI = KFGameReplicationInfo(GetPC().Worldinfo.GRI);
PlayerIndex=0; PlayerIndex=0;
DataProvider = CreateArray(); DataProvider = CreateArray();
for(i = 0 ; i < CurrentPlayerList.length; i ++) for(i = 0 ; i < CurrentPlayerList.length; i ++)
{ {
KFPRI = CurrentPlayerList[i]; KFPRI = CurrentPlayerList[i];
if(KFPRI.GetTeamNum() != 255 && KFPRI.bHasSpawnedIn) if(KFPRI.GetTeamNum() != 255 && (KFPRI.bHasSpawnedIn || (KFGRI != none && KFGRI.bVersusGame)))
{ {
TempData = CreateObject("Object"); TempData = CreateObject("Object");

View File

@ -52,7 +52,7 @@ function SetMapOptions()
if(KFGRI != none && KFGRI.VoteCollector != none) if(KFGRI != none && KFGRI.VoteCollector != none)
{ {
ServerMapList = KFGRI.VoteCollector.MapList; ServerMapList = KFGRI.VoteCollector.MapList;
IsBrokenTrader = class'KFGameEngine'.static.GetWeeklyEventIndex() == 11; IsBrokenTrader = KFGRI.IsA('KFGameReplicationInfo_WeeklySurvival') && class'KFGameEngine'.static.GetWeeklyEventIndexMod() == 11;
//gfx //gfx
MapList = CreateArray(); MapList = CreateArray();

View File

@ -270,7 +270,7 @@ function FilterWeeklyMaps(out array<string> List)
} }
// Scavenger index = 11 // Scavenger index = 11
if (class'KFGameEngine'.static.GetWeeklyEventIndex() == 11) if (class'KFGameEngine'.static.GetWeeklyEventIndexMod() == 11)
{ {
List.RemoveItem("KF-Biolapse"); List.RemoveItem("KF-Biolapse");
List.RemoveItem("KF-Nightmare"); List.RemoveItem("KF-Nightmare");

View File

@ -470,6 +470,7 @@ function ClearOnlineDelegates()
/** Static because these are both called on default object */ /** Static because these are both called on default object */
native static function int GetSeasonalEventID(); native static function int GetSeasonalEventID();
native static function int GetWeeklyEventIndex(); native static function int GetWeeklyEventIndex();
native static function int GetWeeklyEventIndexMod();
native static function bool IsSalesEventActive(); native static function bool IsSalesEventActive();
native static function bool IsSalesEventChecked(); native static function bool IsSalesEventChecked();
/*********************************************************************************** /***********************************************************************************

View File

@ -436,6 +436,11 @@ enum EMonsterProperties
var int SpawnedMonsterProperties[EMonsterProperties]; var int SpawnedMonsterProperties[EMonsterProperties];
/************************************************************************************
* @name Force to sort maps by name
***********************************************************************************/
var bool bForceMapSorting;
/************************************************************************************ /************************************************************************************
* @name Native * @name Native
***********************************************************************************/ ***********************************************************************************/
@ -2890,6 +2895,21 @@ function string GetNextMap()
for (i = 0; i < GameMapCycles[ActiveMapCycle].Maps.length; ++i) for (i = 0; i < GameMapCycles[ActiveMapCycle].Maps.length; ++i)
{ {
MapCycleIndex = MapCycleIndex + 1 < GameMapCycles[ActiveMapCycle].Maps.length ? (MapCycleIndex + 1) : 0; MapCycleIndex = MapCycleIndex + 1 < GameMapCycles[ActiveMapCycle].Maps.length ? (MapCycleIndex + 1) : 0;
if (class'KFGameEngine'.static.GetWeeklyEventIndexMod() == 11)
{
if (MyKFGRI.IsA('KFGameReplicationInfo_WeeklySurvival') &&
GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex] == "KF-Biolapse" ||
GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex] == "KF-Nightmare" ||
GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex] == "KF-PowerCore_Holdout" ||
GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex] == "KF-TheDescent" ||
GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex] == "KF-KrampusLair")
{
continue;
}
}
if ( IsMapAllowedInCycle(GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex]) ) if ( IsMapAllowedInCycle(GameMapCycles[ActiveMapCycle].Maps[MapCycleIndex]) )
{ {
SaveConfig(); SaveConfig();
@ -3875,4 +3895,6 @@ defaultproperties
DebugForcedOutbreakIdx=INDEX_NONE DebugForcedOutbreakIdx=INDEX_NONE
DebugForceSpecialWaveZedType=INDEX_NONE DebugForceSpecialWaveZedType=INDEX_NONE
bForceMapSorting=True
} }

View File

@ -802,7 +802,7 @@ exec reliable client function ShowPreGameServerWelcomeScreen()
} }
simulated function GetKFPRIArray(out array<KFPlayerReplicationInfo> KFPRIArray, optional bool bGetSpectators, optional bool bGetZedPlayers) simulated function GetKFPRIArray(out array<KFPlayerReplicationInfo> KFPRIArray, optional bool bGetSpectators, optional bool bGetZedPlayers = true)
{ {
local int i; local int i;
local int Num; local int Num;

View File

@ -973,7 +973,7 @@ static function PrepareExplosive( Pawn ProjOwner, KFProjectile Proj, optional fl
DefaultProperties DefaultProperties
{ {
ParryDuration=6.f //10.f ParryDuration=8.f //6.f //10.f
ParrySpeed=0.05 ParrySpeed=0.05
FurySpeed=0.05 FurySpeed=0.05
NinjaSprintModifer=0.25 NinjaSprintModifer=0.25
@ -982,7 +982,7 @@ DefaultProperties
SpeedDamageModifier=0.2 SpeedDamageModifier=0.2
SmashHeadDamageModifier=0.25 SmashHeadDamageModifier=0.25
VampireAttackSpeedModifier=0.2f VampireAttackSpeedModifier=0.2f
ParryDamageReduction=0.25f //0.4f //0.75 ParryDamageReduction=0.3f //0.25f //0.4f //0.75
RageRadius=1000 //300 RageRadius=1000 //300
RageFleeDuration=5.f //3 RageFleeDuration=5.f //3
RageFleeDistance=2500 //5000 RageFleeDistance=2500 //5000

View File

@ -465,7 +465,7 @@ function ServerStartVoteSkipTrader(PlayerReplicationInfo PRI)
CurrentVoteTime = min(VoteTime, TraderTimeRemaining - SkipTraderVoteLimit); CurrentVoteTime = min(VoteTime, TraderTimeRemaining - SkipTraderVoteLimit);
GetKFPRIArray(PRIs); GetKFPRIArray(PRIs, , false);
for (i = 0; i < PRIs.Length; i++) for (i = 0; i < PRIs.Length; i++)
{ {
PRIs[i].ShowSkipTraderVote(PRI, CurrentVoteTime, !(PRIs[i] == PRI) && PRI.GetTeamNum() != 255); PRIs[i].ShowSkipTraderVote(PRI, CurrentVoteTime, !(PRIs[i] == PRI) && PRI.GetTeamNum() != 255);
@ -491,7 +491,7 @@ reliable server function UpdateTimer()
local int i; local int i;
CurrentVoteTime -= 1; CurrentVoteTime -= 1;
GetKFPRIArray(PRIs); GetKFPRIArray(PRIs, , false);
for (i = 0; i < PRIs.Length; i++) for (i = 0; i < PRIs.Length; i++)
{ {
PRIs[i].UpdateSkipTraderTime(CurrentVoteTime); PRIs[i].UpdateSkipTraderTime(CurrentVoteTime);
@ -586,7 +586,7 @@ function bool ShouldConcludeSkipTraderVote()
local array<KFPlayerReplicationInfo> PRIs; local array<KFPlayerReplicationInfo> PRIs;
local int NumPRIs; local int NumPRIs;
GetKFPRIArray(PRIs); GetKFPRIArray(PRIs, , false);
NumPRIs = PRIs.Length; NumPRIs = PRIs.Length;
if( YesVotes + NoVotes >= NumPRIs || NoVotes > 0 ) if( YesVotes + NoVotes >= NumPRIs || NoVotes > 0 )
@ -607,7 +607,7 @@ reliable server function ConcludeVoteSkipTrader()
if(bIsSkipTraderVoteInProgress) if(bIsSkipTraderVoteInProgress)
{ {
GetKFPRIArray(PRIs); GetKFPRIArray(PRIs, , false);
for (i = 0; i < PRIs.Length; i++) for (i = 0; i < PRIs.Length; i++)
{ {
@ -680,7 +680,7 @@ function ResetSkipTraderBeforeWaveStarts()
local array<KFPlayerReplicationInfo> PRIs; local array<KFPlayerReplicationInfo> PRIs;
local int i; local int i;
GetKFPRIArray(PRIs); GetKFPRIArray(PRIs, , false);
for (i = 0; i < PRIs.Length; i++) for (i = 0; i < PRIs.Length; i++)
{ {
PRIs[i].bAlreadyStartedASkipTraderVote = false; PRIs[i].bAlreadyStartedASkipTraderVote = false;

View File

@ -24,8 +24,11 @@ var localized array<string> DescriptionStrings;
//List of any modifer information we need specific to the mode //List of any modifer information we need specific to the mode
var localized array<string> ModifierDescriptions; var localized array<string> ModifierDescriptions;
cpptext
{
/** Num of Weekly events available */
static const int NumWeeklyEvents = 12;
}
DefaultProperties DefaultProperties
{ {

View File

@ -16,7 +16,7 @@ var() ParticleSystem LoopingParticleEffectWall;
DefaultProperties DefaultProperties
{ {
Interval=0.5 Interval=0.5
MaxTime=10 MaxTime=7 //10
bDoFullDamage=true bDoFullDamage=true

View File

@ -475,7 +475,7 @@ defaultproperties
TraderWeaponList=KFGFxObject_TraderItems'GP_Trader_ARCH.BrokenTraderWeeklyTraderList', TraderWeaponList=KFGFxObject_TraderItems'GP_Trader_ARCH.BrokenTraderWeeklyTraderList',
PickupResetTime=PRS_Wave, PickupResetTime=PRS_Wave,
bDisableTraders=false, bDisableTraders=false,
DroppedItemLifespan=10.0f, // 300 default DroppedItemLifespan=20.0f, //10.0f, // 300 default
DoshOnKillGlobalModifier=0.2, DoshOnKillGlobalModifier=0.2,
//Pickup Notes for when you're modifying: //Pickup Notes for when you're modifying:
// NumPickups = Actors * OverridePickupModifer * WavePickupModifier // NumPickups = Actors * OverridePickupModifer * WavePickupModifier

View File

@ -65,8 +65,6 @@ simulated event PostBeginPlay()
{ {
SetTimer(FuseTime, false, 'Timer_Detonate'); SetTimer(FuseTime, false, 'Timer_Detonate');
} }
AdjustCanDisintigrate();
} }
/** /**
@ -181,14 +179,6 @@ simulated function Disintegrate( rotator InDisintegrateEffectRotation )
super.Disintegrate(InDisintegrateEffectRotation); super.Disintegrate(InDisintegrateEffectRotation);
} }
// for nukes && concussive force
simulated protected function PrepareExplosionTemplate()
{
class'KFPerk_Demolitionist'.static.PrepareExplosive(Instigator, self);
super.PrepareExplosionTemplate();
}
simulated function SyncOriginalLocation() simulated function SyncOriginalLocation()
{ {
// IMPORTANT NOTE: We aren't actually syncing to the original location (or calling the super). // IMPORTANT NOTE: We aren't actually syncing to the original location (or calling the super).

View File

@ -419,7 +419,7 @@ simulated state AltReloading extends Reloading
/** Make sure we can inturrupt secondary reload with anything. */ /** Make sure we can inturrupt secondary reload with anything. */
simulated function bool CanOverrideMagReload(byte FireModeNum) simulated function bool CanOverrideMagReload(byte FireModeNum)
{ {
return false; return true;
} }
/** Returns animation to play based on reload type and status */ /** Returns animation to play based on reload type and status */
@ -553,6 +553,23 @@ simulated function ModifyRecoil( out float CurrentRecoilModifier )
super.ModifyRecoil( CurrentRecoilModifier ); super.ModifyRecoil( CurrentRecoilModifier );
} }
/** Spawn projectile is called once for each shot pellet fired */
simulated function KFProjectile SpawnAllProjectiles(class<KFProjectile> KFProjClass, vector RealStartLoc, vector AimDir)
{
local KFPerk InstigatorPerk;
if (CurrentFireMode == ALTFIRE_FIREMODE)
{
InstigatorPerk = GetPerk();
if (InstigatorPerk != none)
{
Spread[CurrentFireMode] = default.Spread[CurrentFireMode] * InstigatorPerk.GetTightChokeModifier();
}
}
return super.SpawnAllProjectiles(KFProjClass, RealStartLoc, AimDir);
}
defaultproperties defaultproperties
{ {
bCanRefillSecondaryAmmo = true; bCanRefillSecondaryAmmo = true;
@ -592,7 +609,7 @@ defaultproperties
IronSightPosition=(X=0,Y=0,Z=0) IronSightPosition=(X=0,Y=0,Z=0)
// Ammo // Ammo
MagazineCapacity[0]=24 MagazineCapacity[0]=30 //24
SpareAmmoCapacity[0]=240 SpareAmmoCapacity[0]=240
InitialSpareMags[0]=3 InitialSpareMags[0]=3
bCanBeReloaded=true bCanBeReloaded=true
@ -632,6 +649,7 @@ defaultproperties
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_AssaultRifle' WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_AssaultRifle'
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_FAMAS_Rifle' InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_FAMAS_Rifle'
PenetrationPower(DEFAULT_FIREMODE)=1.0
FireInterval(DEFAULT_FIREMODE)=+0.0667 // 900 RPM FireInterval(DEFAULT_FIREMODE)=+0.0667 // 900 RPM
InstantHitDamage(DEFAULT_FIREMODE)=35.0 InstantHitDamage(DEFAULT_FIREMODE)=35.0
Spread(DEFAULT_FIREMODE)=0.005 //0.0085 Spread(DEFAULT_FIREMODE)=0.005 //0.0085
@ -649,11 +667,11 @@ defaultproperties
WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_Projectile WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_Projectile
WeaponProjectiles(ALTFIRE_FIREMODE)=class'KFProj_Bullet_Pellet' WeaponProjectiles(ALTFIRE_FIREMODE)=class'KFProj_Bullet_Pellet'
InstantHitDamageTypes(ALTFIRE_FIREMODE)=class'KFDT_Ballistic_FAMAS_Shotgun' InstantHitDamageTypes(ALTFIRE_FIREMODE)=class'KFDT_Ballistic_FAMAS_Shotgun'
InstantHitDamage(ALTFIRE_FIREMODE)=25.0 InstantHitDamage(ALTFIRE_FIREMODE)=30.0 //25.0
PenetrationPower(DEFAULT_FIREMODE)=2.0 PenetrationPower(ALTFIRE_FIREMODE)=2.0
FireInterval(ALTFIRE_FIREMODE)=+1.2 //0.5 //0.7 //85 RPM FireInterval(ALTFIRE_FIREMODE)=+1.2 //50 RPM
NumPellets(ALTFIRE_FIREMODE)=6 NumPellets(ALTFIRE_FIREMODE)=7 //6
Spread(ALTFIRE_FIREMODE)=0.12 //0.07 Spread(ALTFIRE_FIREMODE)=0.10 //0.12
SecondaryAmmoTexture=Texture2D'ui_firemodes_tex.UI_FireModeSelect_ShotgunSingle' SecondaryAmmoTexture=Texture2D'ui_firemodes_tex.UI_FireModeSelect_ShotgunSingle'
// BASH_FIREMODE // BASH_FIREMODE

View File

@ -80,7 +80,7 @@ var protected transient float OverlayDelta;
var WeaponFireSndInfo ShieldActivateSound; var WeaponFireSndInfo ShieldActivateSound;
var WeaponFireSndInfo ShieldDeactivateSound; var WeaponFireSndInfo ShieldDeactivateSound;
var (Shield) AkBaseSoundObject ShieldEndSound; var WeaponFireSndInfo ShieldEndSound;
var repnotify byte ShieldAmmo; var repnotify byte ShieldAmmo;
@ -170,7 +170,7 @@ simulated function CustomFire()
simulated function ActivateShield() simulated function ActivateShield()
{ {
PlaySoundBase(ShieldActivateSound.FirstPersonCue); WeaponPlayFireSound(ShieldActivateSound.DefaultCue, ShieldActivateSound.FirstPersonCue);
bActivatingShield = true; bActivatingShield = true;
bDeactivatingShield = false; bDeactivatingShield = false;
bNetDirty = true; bNetDirty = true;
@ -180,7 +180,7 @@ simulated function ActivateShield()
simulated function DeactivateShield() simulated function DeactivateShield()
{ {
PlaySoundBase(ShieldDeactivateSound.FirstPersonCue); WeaponPlayFireSound(ShieldDeactivateSound.DefaultCue, ShieldDeactivateSound.FirstPersonCue);
bDeactivatingShield = true; bDeactivatingShield = true;
bActivatingShield = false; bActivatingShield = false;
bCanRechargeShield = false; bCanRechargeShield = false;
@ -304,7 +304,7 @@ simulated function OnShieldDepleted()
ShieldAmmo = 0; ShieldAmmo = 0;
bNetDirty = true; bNetDirty = true;
NotifyShieldActive(false); NotifyShieldActive(false);
PlaySoundBase(ShieldEndSound); WeaponPlayFireSound(ShieldEndSound.DefaultCue, ShieldEndSound.FirstPersonCue);
SetTimer(CooldownAfterShieldDepleted, false, nameof(ShieldRepletedTimerCompleted)); SetTimer(CooldownAfterShieldDepleted, false, nameof(ShieldRepletedTimerCompleted));
} }
@ -325,7 +325,7 @@ simulated function OnShieldDestroyed()
ShieldAmmo = 0; ShieldAmmo = 0;
bNetDirty = true; bNetDirty = true;
NotifyShieldActive(false); NotifyShieldActive(false);
PlaySoundBase(ShieldEndSound); WeaponPlayFireSound(ShieldEndSound.DefaultCue, ShieldEndSound.FirstPersonCue);
SetTimer(CooldownAfterShieldDestroyed, false, nameof(ShieldDestroyedTimerCompleted)); SetTimer(CooldownAfterShieldDestroyed, false, nameof(ShieldDestroyedTimerCompleted));
} }
@ -519,6 +519,8 @@ simulated state WeaponEquipping
{ {
simulated function BeginState(Name PreviousStateName) simulated function BeginState(Name PreviousStateName)
{ {
UpdateShieldFXValue(0.0f);
FXDelta = 0.0f;
bShieldActionAvailable = true; bShieldActionAvailable = true;
super.BeginState(PreviousStateName); super.BeginState(PreviousStateName);
} }
@ -689,9 +691,9 @@ defaultproperties
CooldownAfterShieldDepleted=3.0f //3.0f CooldownAfterShieldDepleted=3.0f //3.0f
CooldownAfterShieldDestroyed=3.0f //5.0f CooldownAfterShieldDestroyed=3.0f //5.0f
ShieldActivateSound=(DefaultCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_On', FirstPersonCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_On') ShieldActivateSound=(DefaultCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_3P_Shield_On', FirstPersonCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_On')
ShieldDeactivateSound=(DefaultCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_Off', FirstPersonCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_Off') ShieldDeactivateSound=(DefaultCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_3P_Shield_Off', FirstPersonCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_Off')
ShieldEndSound=AKEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_End'; ShieldEndSound=(DefaultCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_3P_Shield_End', FirstPersonCue=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_End')
BlockSound=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_Impact' BlockSound=AkEvent'WW_WEP_HRG_BarrierRifle.Play_WEP_HRG_BarrierRifle_1P_Shield_Impact'
BlockParticleSystem=ParticleSystem'FX_Impacts_EMIT.FX_Block_melee_01' BlockParticleSystem=ParticleSystem'FX_Impacts_EMIT.FX_Block_melee_01'

View File

@ -416,7 +416,7 @@ defaultproperties
// Shotgun Ammo // Shotgun Ammo
MagazineCapacity[0]=4 //3 MagazineCapacity[0]=4 //3
SpareAmmoCapacity[0]=36 //28 SpareAmmoCapacity[0]=40 //36 //28
InitialSpareMags[0]=2 InitialSpareMags[0]=2
AmmoPickupScale[0]=1.5 //2.0 AmmoPickupScale[0]=1.5 //2.0
@ -438,12 +438,13 @@ defaultproperties
WeaponProjectiles(CUSTOM_FIREMODE)=class'KFProj_Bullet_BlastBrawlers' WeaponProjectiles(CUSTOM_FIREMODE)=class'KFProj_Bullet_BlastBrawlers'
FireInterval(CUSTOM_FIREMODE)=0.1f FireInterval(CUSTOM_FIREMODE)=0.1f
InstantHitDamageTypes(CUSTOM_FIREMODE)=class'KFDT_Ballistic_BlastBrawlersShotgun' InstantHitDamageTypes(CUSTOM_FIREMODE)=class'KFDT_Ballistic_BlastBrawlersShotgun'
InstantHitDamage(CUSTOM_FIREMODE)=36.0 //30.0 InstantHitDamage(CUSTOM_FIREMODE)=39.0 //36.0 //30.0
AmmoCost(CUSTOM_FIREMODE)=0 AmmoCost(CUSTOM_FIREMODE)=0
NumPellets(CUSTOM_FIREMODE)=5 NumPellets(CUSTOM_FIREMODE)=5
Spread(CUSTOM_FIREMODE)=0.1 //0.15 Spread(CUSTOM_FIREMODE)=0.12 //0.1 //0.15
WeaponFireSnd(CUSTOM_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_HRG_BlastBrawlers.Play_WEP_HRG_BlastBrawlers_Shoot_3P', FirstPersonCue=AkEvent'WW_WEP_HRG_BlastBrawlers.Play_WEP_HRG_BlastBrawlers_Shoot_1P') WeaponFireSnd(CUSTOM_FIREMODE)=(DefaultCue=AkEvent'WW_WEP_HRG_BlastBrawlers.Play_WEP_HRG_BlastBrawlers_Shoot_3P', FirstPersonCue=AkEvent'WW_WEP_HRG_BlastBrawlers.Play_WEP_HRG_BlastBrawlers_Shoot_1P')
InstantHitMomentum(CUSTOM_FIREMODE)=1.0 InstantHitMomentum(CUSTOM_FIREMODE)=1.0
PenetrationPower(CUSTOM_FIREMODE)=2.0
PenetrationDamageReductionCurve(CUSTOM_FIREMODE)=(Points=((InVal=0.f,OutVal=0.f),(InVal=1.f, OutVal=1.f))) PenetrationDamageReductionCurve(CUSTOM_FIREMODE)=(Points=((InVal=0.f,OutVal=0.f),(InVal=1.f, OutVal=1.f)))
FireModeIconPaths(DEFAULT_FIREMODE)=Texture2D'ui_firemodes_tex.UI_FireModeSelect_ShotgunSingle' FireModeIconPaths(DEFAULT_FIREMODE)=Texture2D'ui_firemodes_tex.UI_FireModeSelect_ShotgunSingle'
@ -467,7 +468,7 @@ defaultproperties
ParryStrength=5 ParryStrength=5
ParryDamageMitigationPercent=0.40 ParryDamageMitigationPercent=0.40
BlockDamageMitigation=0.40 BlockDamageMitigation=0.50 //0.40
bWaitingForSecondShot = false bWaitingForSecondShot = false
NumAttacks = 0 NumAttacks = 0

View File

@ -252,7 +252,7 @@ defaultproperties
// Zooming/Position // Zooming/Position
PlayerViewOffset=(X=11.0,Y=8,Z=-2) PlayerViewOffset=(X=11.0,Y=8,Z=-2)
IronSightPosition=(X=10,Y=0,Z=0) IronSightPosition=(X=10,Y=-0.15,Z=0.7)
// AI warning system // AI warning system
bWarnAIWhenAiming=true bWarnAIWhenAiming=true