1
0
This commit is contained in:
2023-10-18 02:03:17 +03:00
parent ce182019df
commit cde088c1f4
38 changed files with 231 additions and 113 deletions

View File

@ -506,7 +506,7 @@ function ReduceDamage(out int Damage, Pawn Injured, Controller InstigatedBy, vec
function StartOutbreakRound(int OutbreakIdx)
{
OutbreakEvent.SetActiveEvent(OutbreakIdx, self);
OutbreakEvent.SetActiveEvent(OutbreakIdx);
OutbreakEvent.UpdateGRI();
OutbreakEvent.SetWorldInfoOverrides();

View File

@ -51,7 +51,9 @@ var protected bool bGunGamePlayerOnLastGun;
var transient array<KFBarmwichBonfireVolume> BonfireVolumes;
// Trader Time modifier for Castle Volter map in the last round
var float CastleVolterTraderLastWaveModifier;
var float CastleVolterTraderModifier;
var bool bIsCastleVolterMap;
/** Whether this game mode should play music from the get-go (lobby) */
static function bool ShouldPlayMusicAtStart()
@ -77,6 +79,8 @@ event PostBeginPlay()
{
super.PostBeginPlay();
bIsCastleVolterMap = Caps(WorldInfo.GetMapName(true)) == "KF-CASTLEVOLTER";
TimeBetweenWaves = GetTraderTime();
bGunGamePlayerOnLastGun = false;
@ -1130,6 +1134,11 @@ function WaveStarted()
UpdateGameSettings();
bWaveStarted = true;
if (bIsCastleVolterMap)
{
TimeBetweenWaves = GetTraderTime();
}
}
/** Do something when there are no AIs left */
@ -1473,17 +1482,7 @@ function DoTraderTimeCleanup();
/** Handle functionality for opening trader */
function OpenTrader()
{
local int UpdatedTimeBetweenWaves;
UpdatedTimeBetweenWaves = TimeBetweenWaves;
// In castle volter the trader needs to have a special time
if (WorldInfo.GetMapName(true) == "KF-CastleVolter" && WaveNum == (WaveMax - 1) )
{
UpdatedTimeBetweenWaves = UpdatedTimeBetweenWaves * CastleVolterTraderModifier;
}
MyKFGRI.OpenTrader(UpdatedTimeBetweenWaves);
MyKFGRI.OpenTrader(TimeBetweenWaves);
NotifyTraderOpened();
}
@ -1929,6 +1928,27 @@ function ClearActorFromBonfire(Actor Other)
}
}
function float GetTraderTime()
{
local float TraderTime;
TraderTime = Super.GetTraderTime();
// In castle volter the trader needs to have a special time
if (bIsCastleVolterMap)
{
if ( WaveNum == (WaveMax - 1) && !bIsEndlessGame )
{
TraderTime *= CastleVolterTraderLastWaveModifier;
}
else
{
TraderTime *= CastleVolterTraderModifier;
}
}
return TraderTime;
}
DefaultProperties
{
TimeBetweenWaves=60 //This is going to be a difficulty setting later
@ -1938,7 +1958,10 @@ DefaultProperties
MaxGameDifficulty=3
bWaveStarted=false
bGunGamePlayerOnLastGun=false
CastleVolterTraderModifier = 1.0f;
CastleVolterTraderLastWaveModifier = 2.5f
CastleVolterTraderModifier = 1.17f
bIsCastleVolterMap = false;
ObjectiveSpawnDelay=5

View File

@ -78,8 +78,13 @@ simulated event OnGameWon(class<GameInfo> GameClass, int Difficulty, int GameLen
}
}
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
if (bKiller == false)
{
return;
}
// kill 1500 zeds on asylum
if (bObjectiveIsValidForMap[3] != 0)
{
@ -107,4 +112,4 @@ defaultproperties
{
EndlessWaveRequired=15
ZedKillsRequired=1500
}
}

View File

@ -44,10 +44,15 @@ private event GrantEventItems()
}
}
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
local int ObjIdx;
if (bKiller == false)
{
return;
}
// Kill 2000 zeds on any map
ObjIdx = 0;
if (bObjectiveIsValidForMap[ObjIdx] != 0)
@ -129,4 +134,4 @@ defaultproperties
EndlessWaveRequired=15
PowerUpsRequired=10
FallEventIndex=SEI_Fall
}
}

View File

@ -116,23 +116,20 @@ simulated function OnTryCompleteObjective(int ObjectiveIndex, int EventIndex)
}
// Kill Hans Volter in 5 different maps
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
local int ObjIdx;
local KFProfileSettings Profile;
ObjIdx = 0;
if (Outer.IsEventObjectiveComplete(ObjIdx))
{
return;
}
if (bObjectiveIsValidForMap[ObjIdx] != 0)
{
if (MonsterClass == class'KFPawn_ZedHansBase'
|| MonsterClass == class'KFPawn_ZedHans')
{
// This event can be heard no matter is bKiller true | false, we count for every player on the objective
if (Outer.GetSeasonalEventStatValue(ObjIdx) < HansVolterKillsRequired) // If we still didn't reach the limit..
{
Profile = KFProfileSettings(Outer.MyKFPC.OnlineSub.PlayerInterface.GetProfileSettings(Outer.MyKFPC.StoredLocalUserNum));

View File

@ -44,8 +44,13 @@ private event GrantEventItems()
}
}
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
if (bKiller == false)
{
return;
}
if (bObjectiveIsValidForMap[2] != 0)
{
IncrementSeasonalEventStat(2, 1);
@ -102,4 +107,4 @@ defaultproperties
ZedKillsRequired=1500
BossDeathsRequired=15
EndlessWaveRequired=15
}
}

View File

@ -69,10 +69,15 @@ simulated event OnGameWon(class<GameInfo> GameClass, int Difficulty, int GameLen
}
}
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
local int ObjIdx;
if (bKiller == false)
{
return;
}
ObjIdx = 0;
if (bObjectiveIsValidForMap[ObjIdx] != 0)
{
@ -115,4 +120,4 @@ defaultproperties
ZedKillsRequired=1500
BloodBlenderKillsRequired=20
TrapDoorKillsRequired=20
}
}

View File

@ -75,10 +75,15 @@ simulated function OnBossDied()
}
}
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
local int ObjIdx;
if (bKiller == false)
{
return;
}
// E.D.A.R kills
ObjIdx = 2;
if (bObjectiveIsValidForMap[ObjIdx] != 0)

View File

@ -58,12 +58,17 @@ simulated event OnGameWon(class<GameInfo> GameClass, int Difficulty, int GameLen
}
}
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
local int ObjIdx;
local KFPlayerController KFPC;
local KFPawn_Human KFP;
if (bKiller == false)
{
return;
}
// Laser Kills
ObjIdx = 2;
if (bObjectiveIsValidForMap[ObjIdx] != 0)

View File

@ -61,10 +61,15 @@ simulated event OnGameWon(class<GameInfo> GameClass, int Difficulty, int GameLen
}
}
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
local int ObjIdx;
if (bKiller == false)
{
return;
}
// Kill 1500 Zeds on any map or mode
ObjIdx = 0;
if (bObjectiveIsValidForMap[ObjIdx] != 0)
@ -149,4 +154,4 @@ defaultproperties
ZedsThrowSeaRequired=50
EndlessWaveRequired=15
LastWaveFinished=-1
}
}

View File

@ -137,10 +137,15 @@ simulated function OnAfflictionCaused(EAfflictionType Type)
}
}
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
local int ObjIdx;
if (bKiller == false)
{
return;
}
// Kill 1500 Zeds with HRG Bombardier
ObjIdx = 0;
if (bObjectiveIsValidForMap[ObjIdx] != 0)
@ -167,4 +172,4 @@ defaultproperties
StandYourGroundRequired=25
EndlessWaveRequired=15
SummerEventIndex=SEI_Summer
}
}

View File

@ -76,8 +76,13 @@ simulated function OnMapObjectiveDeactivated(Actor ObjectiveInterfaceActor)
}
}
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
if (bKiller == false)
{
return;
}
if (bObjectiveIsValidForMap[2] != 0)
{
IncrementSeasonalEventStat(2, 1);
@ -123,4 +128,4 @@ defaultproperties
PerfectEscortsRequired=3
ZedKillsRequired=2500
BossDeathsRequired=25
}
}

View File

@ -68,8 +68,13 @@ simulated event OnGameWon(class<GameInfo> GameClass, int Difficulty, int GameLen
}
}
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
simulated function OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
{
if (bKiller == false)
{
return;
}
if (bObjectiveIsValidForMap[1] != 0)
{
if (DT == class'KFDT_Trap_SanitariumTentacle')
@ -110,4 +115,4 @@ defaultproperties
TentacleTrapKillsRequired=20
SuctionTrapKillsRequired=20
MatriarchKillsRequired=10
}
}

View File

@ -972,7 +972,7 @@ defaultproperties
FlameSprayArchetype = SprayActor_Flame'WEP_Laser_Cutter_ARCH.WEP_Laser_Cutter_Flame'
ChargeTimePerLevel = 0.7f;
ChargeConsumeTime = 0.082f; //Consumes 25 on full charge
ChargeConsumeTime = 0.084f; //Consumes 25 on full charge
OverchargeConsumeTime = 0; //Setting to 0 or below deactivates ammo consumption while holding a charge
// Shooting Animations

View File

@ -166,7 +166,8 @@ function StartHealRecharge()
if (Role == ROLE_Authority)
{
InstigatorPerk = GetPerk();
UsedHealRechargeTime = HealFullRechargeSeconds * static.GetUpgradeHealRechargeMod(CurrentWeaponUpgradeIndex);
UsedHealRechargeTime = HealFullRechargeSeconds;
UsedHealRechargeTime *= static.GetUpgradeHealRechargeMod(CurrentWeaponUpgradeIndex);
InstigatorPerk.ModifyHealerRechargeTime(UsedHealRechargeTime);
// Set the healing recharge rate whenever we start charging

View File

@ -42,10 +42,10 @@ defaultproperties
bReloadFromMagazine=true
// Recoil
maxRecoilPitch=250
minRecoilPitch=200
maxRecoilYaw=100
minRecoilYaw=-100
maxRecoilPitch=160
minRecoilPitch=140
maxRecoilYaw=60
minRecoilYaw=-60
RecoilRate=0.01
RecoilMaxYawLimit=500
RecoilMinYawLimit=65035
@ -61,7 +61,7 @@ defaultproperties
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_Pistol9mm'
FireInterval(DEFAULT_FIREMODE)=+0.08 //0.175
InstantHitDamage(DEFAULT_FIREMODE)=12.f //15
InstantHitDamage(DEFAULT_FIREMODE)=15.f //15
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_HRG_93R'
Spread(DEFAULT_FIREMODE)=0.015
FireOffset=(X=20,Y=4.0,Z=-3)

View File

@ -58,10 +58,10 @@ defaultproperties
bReloadFromMagazine=true
// Recoil
maxRecoilPitch=250
minRecoilPitch=200
maxRecoilYaw=100
minRecoilYaw=-100
maxRecoilPitch=160
minRecoilPitch=140
maxRecoilYaw=60
minRecoilYaw=-60
RecoilRate=0.01
RecoilMaxYawLimit=500
RecoilMinYawLimit=65035
@ -77,7 +77,7 @@ defaultproperties
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_Pistol9mm'
FireInterval(DEFAULT_FIREMODE)=+0.08
InstantHitDamage(DEFAULT_FIREMODE)=12.0 //15
InstantHitDamage(DEFAULT_FIREMODE)=15.0 //15
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_HRG_93R'
Spread(DEFAULT_FIREMODE)=0.015
BurstAmount=3
@ -89,7 +89,7 @@ defaultproperties
WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_InstantHit
WeaponProjectiles(ALTFIRE_FIREMODE)=class'KFProj_Bullet_Pistol9mm'
FireInterval(ALTFIRE_FIREMODE)=+0.08 // about twice as fast as single
InstantHitDamage(ALTFIRE_FIREMODE)=12.0 //15
InstantHitDamage(ALTFIRE_FIREMODE)=15.0 //15
InstantHitDamageTypes(ALTFIRE_FIREMODE)=class'KFDT_Ballistic_HRG_93R'
Spread(ALTFIRE_FIREMODE)=0.015

View File

@ -417,7 +417,6 @@ function StartHealRecharge()
UsedHealRechargeTime = HealFullRechargeSeconds;
UsedHealRechargeTime *= static.GetUpgradeHealRechargeMod(CurrentWeaponUpgradeIndex);
UsedHealRechargeTime *= InstigatorPerk.GetHealRechargeMod();
InstigatorPerk.ModifyHealerRechargeTime(UsedHealRechargeTime);
// Set the healing recharge rate whenever we start charging

View File

@ -104,7 +104,7 @@ defaultproperties
FiringStatesArray(DEFAULT_FIREMODE)=WeaponFiring
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_Projectile
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_HRG_Stunner'
InstantHitDamage(DEFAULT_FIREMODE)=60.0 //65.0
InstantHitDamage(DEFAULT_FIREMODE)=80.0 //65.0
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_HRG_Stunner'
PenetrationPower(DEFAULT_FIREMODE)=2.0
FireInterval(DEFAULT_FIREMODE)=0.15

View File

@ -485,7 +485,7 @@ defaultproperties
LastAmmoCount=-1
NumAltBullets=5
SpreadWidthDegrees=30
SpreadWidthDegrees=20
StartingAltBulletPosition=0.0f
SpreadMaxOffset=(X=1.2f, Y=1.5f)
}

View File

@ -376,7 +376,7 @@ defaultproperties
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_G18'
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_G18'
FireInterval(DEFAULT_FIREMODE)=+.05455 // 1100 RPM
Spread(DEFAULT_FIREMODE)=0.06
Spread(DEFAULT_FIREMODE)=0.045
InstantHitDamage(DEFAULT_FIREMODE)=28
FireOffset=(X=30,Y=6.5,Z=-4)