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

View File

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

View File

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

View File

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

View File

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

View File

@ -436,6 +436,11 @@ enum EMonsterProperties
var int SpawnedMonsterProperties[EMonsterProperties];
/************************************************************************************
* @name Force to sort maps by name
***********************************************************************************/
var bool bForceMapSorting;
/************************************************************************************
* @name Native
***********************************************************************************/
@ -2890,6 +2895,21 @@ function string GetNextMap()
for (i = 0; i < GameMapCycles[ActiveMapCycle].Maps.length; ++i)
{
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]) )
{
SaveConfig();
@ -3875,4 +3895,6 @@ defaultproperties
DebugForcedOutbreakIdx=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 Num;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -65,8 +65,6 @@ simulated event PostBeginPlay()
{
SetTimer(FuseTime, false, 'Timer_Detonate');
}
AdjustCanDisintigrate();
}
/**
@ -181,14 +179,6 @@ simulated function Disintegrate( rotator InDisintegrateEffectRotation )
super.Disintegrate(InDisintegrateEffectRotation);
}
// for nukes && concussive force
simulated protected function PrepareExplosionTemplate()
{
class'KFPerk_Demolitionist'.static.PrepareExplosive(Instigator, self);
super.PrepareExplosionTemplate();
}
simulated function SyncOriginalLocation()
{
// 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. */
simulated function bool CanOverrideMagReload(byte FireModeNum)
{
return false;
return true;
}
/** Returns animation to play based on reload type and status */
@ -553,6 +553,23 @@ simulated function ModifyRecoil( out float 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
{
bCanRefillSecondaryAmmo = true;
@ -592,7 +609,7 @@ defaultproperties
IronSightPosition=(X=0,Y=0,Z=0)
// Ammo
MagazineCapacity[0]=24
MagazineCapacity[0]=30 //24
SpareAmmoCapacity[0]=240
InitialSpareMags[0]=3
bCanBeReloaded=true
@ -632,6 +649,7 @@ defaultproperties
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_AssaultRifle'
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_FAMAS_Rifle'
PenetrationPower(DEFAULT_FIREMODE)=1.0
FireInterval(DEFAULT_FIREMODE)=+0.0667 // 900 RPM
InstantHitDamage(DEFAULT_FIREMODE)=35.0
Spread(DEFAULT_FIREMODE)=0.005 //0.0085
@ -649,11 +667,11 @@ defaultproperties
WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_Projectile
WeaponProjectiles(ALTFIRE_FIREMODE)=class'KFProj_Bullet_Pellet'
InstantHitDamageTypes(ALTFIRE_FIREMODE)=class'KFDT_Ballistic_FAMAS_Shotgun'
InstantHitDamage(ALTFIRE_FIREMODE)=25.0
PenetrationPower(DEFAULT_FIREMODE)=2.0
FireInterval(ALTFIRE_FIREMODE)=+1.2 //0.5 //0.7 //85 RPM
NumPellets(ALTFIRE_FIREMODE)=6
Spread(ALTFIRE_FIREMODE)=0.12 //0.07
InstantHitDamage(ALTFIRE_FIREMODE)=30.0 //25.0
PenetrationPower(ALTFIRE_FIREMODE)=2.0
FireInterval(ALTFIRE_FIREMODE)=+1.2 //50 RPM
NumPellets(ALTFIRE_FIREMODE)=7 //6
Spread(ALTFIRE_FIREMODE)=0.10 //0.12
SecondaryAmmoTexture=Texture2D'ui_firemodes_tex.UI_FireModeSelect_ShotgunSingle'
// BASH_FIREMODE

View File

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

View File

@ -416,7 +416,7 @@ defaultproperties
// Shotgun Ammo
MagazineCapacity[0]=4 //3
SpareAmmoCapacity[0]=36 //28
SpareAmmoCapacity[0]=40 //36 //28
InitialSpareMags[0]=2
AmmoPickupScale[0]=1.5 //2.0
@ -438,12 +438,13 @@ defaultproperties
WeaponProjectiles(CUSTOM_FIREMODE)=class'KFProj_Bullet_BlastBrawlers'
FireInterval(CUSTOM_FIREMODE)=0.1f
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
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')
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)))
FireModeIconPaths(DEFAULT_FIREMODE)=Texture2D'ui_firemodes_tex.UI_FireModeSelect_ShotgunSingle'
@ -467,7 +468,7 @@ defaultproperties
ParryStrength=5
ParryDamageMitigationPercent=0.40
BlockDamageMitigation=0.40
BlockDamageMitigation=0.50 //0.40
bWaitingForSecondShot = false
NumAttacks = 0

View File

@ -252,7 +252,7 @@ defaultproperties
// Zooming/Position
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
bWarnAIWhenAiming=true