upload
This commit is contained in:
parent
ce182019df
commit
cde088c1f4
@ -163,7 +163,7 @@ function KillOwner()
|
|||||||
|
|
||||||
defaultproperties
|
defaultproperties
|
||||||
{
|
{
|
||||||
DissipationRate=10 //20
|
DissipationRate=200 //20
|
||||||
bNeedsTick=true
|
bNeedsTick=true
|
||||||
|
|
||||||
MaxEffect=10.f;
|
MaxEffect=10.f;
|
||||||
@ -171,7 +171,7 @@ defaultproperties
|
|||||||
EffectAppliedByStack=1.0f
|
EffectAppliedByStack=1.0f
|
||||||
|
|
||||||
ApplyEffectVel=100.0f // % per second
|
ApplyEffectVel=100.0f // % per second
|
||||||
RemoveEffectVel=0.5f // % per second
|
RemoveEffectVel=0.25f // % per second
|
||||||
|
|
||||||
CurrentEffect=0.0f
|
CurrentEffect=0.0f
|
||||||
CurrentEffectApplied=0.0f
|
CurrentEffectApplied=0.0f
|
||||||
|
@ -198,14 +198,6 @@ function TickHud(float DeltaTime)
|
|||||||
local int bStatusWarning, bStatusNotification;
|
local int bStatusWarning, bStatusNotification;
|
||||||
local string StatusMessage;
|
local string StatusMessage;
|
||||||
local GFxObject DataObject;
|
local GFxObject DataObject;
|
||||||
local KFGameReplicationInfo KFGRI;
|
|
||||||
|
|
||||||
KFGRI=KFGameReplicationInfo(KFPC.WorldInfo.GRI);
|
|
||||||
|
|
||||||
if (KFGRI.IsContaminationMode())
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (CurrentObjectiveInterface != none)
|
if (CurrentObjectiveInterface != none)
|
||||||
{
|
{
|
||||||
|
@ -518,14 +518,17 @@ function TickHud(float DeltaTime)
|
|||||||
{
|
{
|
||||||
bBountyHuntVisibility = KFPC.CanUseBountyHunt();
|
bBountyHuntVisibility = KFPC.CanUseBountyHunt();
|
||||||
|
|
||||||
if (KFGRI.bWaveIsActive == false)
|
if (KFGRI != none)
|
||||||
{
|
{
|
||||||
bBountyHuntVisibility = false;
|
if (KFGRI.bWaveIsActive == false)
|
||||||
|
{
|
||||||
|
bBountyHuntVisibility = false;
|
||||||
|
}
|
||||||
|
else if (KFGRI.WaveNum == KFGRI.WaveMax)
|
||||||
|
{
|
||||||
|
bBountyHuntVisibility = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (KFGRI.WaveNum == KFGRI.WaveMax)
|
|
||||||
{
|
|
||||||
bBountyHuntVisibility = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bBountyHuntVisibility != bLastBountyHuntVisibility)
|
if (bBountyHuntVisibility != bLastBountyHuntVisibility)
|
||||||
{
|
{
|
||||||
|
@ -684,8 +684,6 @@ event InitGame( string Options, out string ErrorMessage )
|
|||||||
KFGameEngine(class'Engine'.static.GetEngine()).SetWeeklyEventIndex(KFGameEngine(class'Engine'.static.GetEngine()).GetIntendedWeeklyEventIndex());
|
KFGameEngine(class'Engine'.static.GetEngine()).SetWeeklyEventIndex(KFGameEngine(class'Engine'.static.GetEngine()).GetIntendedWeeklyEventIndex());
|
||||||
}
|
}
|
||||||
|
|
||||||
`Log("TEST - InitGame : " $WeeklySelectorIndex);
|
|
||||||
|
|
||||||
Super.InitGame( Options, ErrorMessage );
|
Super.InitGame( Options, ErrorMessage );
|
||||||
|
|
||||||
if (UsesModifiedDifficulty())
|
if (UsesModifiedDifficulty())
|
||||||
@ -1182,8 +1180,6 @@ function InitGRIVariables()
|
|||||||
MyKFGRI.NotifyAllowSeasonalSkins(AllowSeasonalSkinsIndex);
|
MyKFGRI.NotifyAllowSeasonalSkins(AllowSeasonalSkinsIndex);
|
||||||
MyKFGRI.NotifyWeeklySelector(WeeklySelectorIndex);
|
MyKFGRI.NotifyWeeklySelector(WeeklySelectorIndex);
|
||||||
|
|
||||||
`Log("TEST - InitGRIVariables- NotifyWeeklySelector : " $WeeklySelectorIndex);
|
|
||||||
|
|
||||||
SetBossIndex();
|
SetBossIndex();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2321,8 +2321,6 @@ simulated function NotifyWeeklySelector(int WeeklySelectorIndex_)
|
|||||||
WeeklySelectorIndex = WeeklySelectorIndex_;
|
WeeklySelectorIndex = WeeklySelectorIndex_;
|
||||||
|
|
||||||
bNetDirty = true;
|
bNetDirty = true;
|
||||||
|
|
||||||
`Log("TEST - NotifyWeeklySelector : " $WeeklySelectorIndex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** VIP weekly */
|
/** VIP weekly */
|
||||||
|
@ -1945,8 +1945,9 @@ simulated function final BuyAmmo( float AmountPurchased, EItemType ItemType, opt
|
|||||||
{
|
{
|
||||||
local STraderItem WeaponItem;
|
local STraderItem WeaponItem;
|
||||||
local KFWeapon KFW;
|
local KFWeapon KFW;
|
||||||
local byte MagAmmoCount;
|
local int MagAmmoCount;
|
||||||
|
|
||||||
|
// Keep 255 because what else?
|
||||||
MagAmmoCount = 255;
|
MagAmmoCount = 255;
|
||||||
|
|
||||||
if ( ItemType == EIT_Weapon )
|
if ( ItemType == EIT_Weapon )
|
||||||
@ -1973,7 +1974,7 @@ simulated function final BuyAmmo( float AmountPurchased, EItemType ItemType, opt
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Receive weapon ammo */
|
/** Receive weapon ammo */
|
||||||
reliable server final private function ServerBuyAmmo(int AmountPurchased, byte ClientAmmoCount, byte ItemIndex, bool bSecondaryAmmo)
|
reliable server final private function ServerBuyAmmo(int AmountPurchased, int ClientAmmoCount, byte ItemIndex, bool bSecondaryAmmo)
|
||||||
{
|
{
|
||||||
local STraderItem WeaponItem;
|
local STraderItem WeaponItem;
|
||||||
local KFWeapon KFW;
|
local KFWeapon KFW;
|
||||||
|
@ -144,8 +144,8 @@ function StartHealRecharge()
|
|||||||
if (Role == ROLE_Authority)
|
if (Role == ROLE_Authority)
|
||||||
{
|
{
|
||||||
InstigatorPerk = KFW.GetPerk();
|
InstigatorPerk = KFW.GetPerk();
|
||||||
UsedHealRechargeTime =
|
UsedHealRechargeTime = HealFullRechargeSeconds;
|
||||||
HealFullRechargeSeconds * KFW.static.GetUpgradeHealRechargeMod(KFW.CurrentWeaponUpgradeIndex);
|
UsedHealRechargeTime *= KFW.static.GetUpgradeHealRechargeMod(KFW.CurrentWeaponUpgradeIndex);
|
||||||
|
|
||||||
InstigatorPerk.ModifyHealerRechargeTime(UsedHealRechargeTime);
|
InstigatorPerk.ModifyHealerRechargeTime(UsedHealRechargeTime);
|
||||||
HealRechargePerSecond = KFW.MagazineCapacity[ALTFIRE_FIREMODE] / UsedHealRechargeTime;
|
HealRechargePerSecond = KFW.MagazineCapacity[ALTFIRE_FIREMODE] / UsedHealRechargeTime;
|
||||||
|
@ -1130,7 +1130,7 @@ private event AddToHitsGiven(class<DamageType> DT)
|
|||||||
private event AddToKills( class<KFPawn_Monster> MonsterClass, byte Difficulty, class<DamageType> DT, bool bKiller )
|
private event AddToKills( class<KFPawn_Monster> MonsterClass, byte Difficulty, class<DamageType> DT, bool bKiller )
|
||||||
{
|
{
|
||||||
// seasonal event hook
|
// seasonal event hook
|
||||||
SeasonalEventStats_OnZedKilled(MonsterClass, Difficulty, DT);
|
SeasonalEventStats_OnZedKilled(MonsterClass, Difficulty, DT, bKiller);
|
||||||
|
|
||||||
if (!bKiller)
|
if (!bKiller)
|
||||||
{
|
{
|
||||||
@ -1878,11 +1878,11 @@ final simulated function SeasonalEventStats_OnHitGiven(class<DamageType> DT)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
final simulated function SeasonalEventStats_OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT)
|
final simulated function SeasonalEventStats_OnZedKilled(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT, bool bKiller)
|
||||||
{
|
{
|
||||||
if (SeasonalEventIsValid())
|
if (SeasonalEventIsValid())
|
||||||
{
|
{
|
||||||
SeasonalEvent.OnZedKilled(MonsterClass, Difficulty, DT);
|
SeasonalEvent.OnZedKilled(MonsterClass, Difficulty, DT, bKiller);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -656,7 +656,7 @@ var WeeklyOverrides ActiveEvent;
|
|||||||
/** Stored values of World Info and GRI items incase we need to reset it. */
|
/** Stored values of World Info and GRI items incase we need to reset it. */
|
||||||
var CachedOutbreakInfo CachedItems;
|
var CachedOutbreakInfo CachedItems;
|
||||||
|
|
||||||
function int SetActiveEvent(int ActiveEventIdx, KFGameInfo GameInfo)
|
function int SetActiveEvent(int ActiveEventIdx, optional KFGameInfo GameInfoForWeeklyIndex = none)
|
||||||
{
|
{
|
||||||
`if(`notdefined(ShippingPC))
|
`if(`notdefined(ShippingPC))
|
||||||
local string LocalURL;
|
local string LocalURL;
|
||||||
@ -667,17 +667,21 @@ function int SetActiveEvent(int ActiveEventIdx, KFGameInfo GameInfo)
|
|||||||
LocalURL = WorldInfo.GetLocalURL();
|
LocalURL = WorldInfo.GetLocalURL();
|
||||||
LocalURL = Split(LocalURL, "?"); //remove map name
|
LocalURL = Split(LocalURL, "?"); //remove map name
|
||||||
|
|
||||||
if (GameInfo.WeeklySelectorIndex == -1) // WeeklySelectorIndex overrides the ActiveEventIdx if any
|
// WeeklySelectorIndex overrides the ActiveEventIdx if any
|
||||||
|
if (GameInfoForWeeklyIndex == none || GameInfoForWeeklyIndex.WeeklySelectorIndex == -1)
|
||||||
{
|
{
|
||||||
ActiveEventIdx = GetIntOption(LocalURL, "ActiveEventIdx", ActiveEventIdx);
|
ActiveEventIdx = GetIntOption(LocalURL, "ActiveEventIdx", ActiveEventIdx);
|
||||||
|
|
||||||
// Set WeeklySelectorIndex to the value (ActiveEventIdx is not replicated), so all the flow of the game works the same
|
// Set WeeklySelectorIndex to the value (ActiveEventIdx is not replicated), so all the flow of the game works the same
|
||||||
GameInfo.WeeklySelectorIndex = ActiveEventIdx + 1;
|
if (GameInfoForWeeklyIndex != none)
|
||||||
|
{
|
||||||
|
GameInfoForWeeklyIndex.WeeklySelectorIndex = ActiveEventIdx + 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (GameInfo.WeeklySelectorIndex > 0)
|
else if (GameInfoForWeeklyIndex != none && GameInfoForWeeklyIndex.WeeklySelectorIndex > 0)
|
||||||
{
|
{
|
||||||
// 0 is default, we move one index to the left so it matches first Weekly Mode
|
// 0 is default, we move one index to the left so it matches first Weekly Mode
|
||||||
ActiveEventIdx = GameInfo.WeeklySelectorIndex - 1;
|
ActiveEventIdx = GameInfoForWeeklyIndex.WeeklySelectorIndex - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//If our override is out of bounds, see if it's a valid test event
|
//If our override is out of bounds, see if it's a valid test event
|
||||||
@ -694,10 +698,10 @@ function int SetActiveEvent(int ActiveEventIdx, KFGameInfo GameInfo)
|
|||||||
ActiveEvent = SetEvents[ActiveEventIdx];
|
ActiveEvent = SetEvents[ActiveEventIdx];
|
||||||
}
|
}
|
||||||
`else
|
`else
|
||||||
if (GameInfo.WeeklySelectorIndex > 0)
|
if (GameInfoForWeeklyIndex != none && GameInfoForWeeklyIndex.WeeklySelectorIndex > 0)
|
||||||
{
|
{
|
||||||
// 0 is default, we move one index to the left so it matches first Weekly Mode
|
// 0 is default, we move one index to the left so it matches first Weekly Mode
|
||||||
ActiveEventIdx = GameInfo.WeeklySelectorIndex - 1;
|
ActiveEventIdx = GameInfoForWeeklyIndex.WeeklySelectorIndex - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ActiveEventIdx < SetEvents.length)
|
if(ActiveEventIdx < SetEvents.length)
|
||||||
@ -706,9 +710,11 @@ function int SetActiveEvent(int ActiveEventIdx, KFGameInfo GameInfo)
|
|||||||
}
|
}
|
||||||
`endif
|
`endif
|
||||||
|
|
||||||
`Log("TEST - SetActiveEvent : " $ActiveEventIdx);
|
// Override this only if we can force a new index via GameInfo
|
||||||
|
if (GameInfoForWeeklyIndex != none)
|
||||||
KFGameEngine(class'Engine'.static.GetEngine()).SetWeeklyEventIndex(ActiveEventIdx);
|
{
|
||||||
|
KFGameEngine(class'Engine'.static.GetEngine()).SetWeeklyEventIndex(ActiveEventIdx);
|
||||||
|
}
|
||||||
|
|
||||||
return ActiveEventIdx;
|
return ActiveEventIdx;
|
||||||
}
|
}
|
||||||
|
@ -1316,7 +1316,6 @@ native function bool CanRepairDoors();
|
|||||||
function bool RepairArmor( Pawn HealTarget );
|
function bool RepairArmor( Pawn HealTarget );
|
||||||
function bool IsToxicDmgActive() { return false; }
|
function bool IsToxicDmgActive() { return false; }
|
||||||
static function class<KFDamageType> GetToxicDmgTypeClass(){ return default.ToxicDmgTypeClass; }
|
static function class<KFDamageType> GetToxicDmgTypeClass(){ return default.ToxicDmgTypeClass; }
|
||||||
static function float GetHealRechargeMod();
|
|
||||||
static function ModifyToxicDmg( out int ToxicDamage );
|
static function ModifyToxicDmg( out int ToxicDamage );
|
||||||
simulated function float GetSirenScreamStrength(){ return 1.f; }
|
simulated function float GetSirenScreamStrength(){ return 1.f; }
|
||||||
simulated function bool IsHealingSurgeActive(){ return false; }
|
simulated function bool IsHealingSurgeActive(){ return false; }
|
||||||
@ -1327,7 +1326,7 @@ simulated function bool GetHealingShieldActive(){ return false; }
|
|||||||
simulated function bool IsZedativeActive(){ return false; }
|
simulated function bool IsZedativeActive(){ return false; }
|
||||||
function bool CouldBeZedToxicCloud( class<KFDamageType> KFDT ){ return false; }
|
function bool CouldBeZedToxicCloud( class<KFDamageType> KFDT ){ return false; }
|
||||||
function ToxicCloudExplode( Controller Killer, Pawn ZedKilled );
|
function ToxicCloudExplode( Controller Killer, Pawn ZedKilled );
|
||||||
|
simulated function float GetDartAmmoCostModifier() { return 1.0f; }
|
||||||
|
|
||||||
/** Firebug functions */
|
/** Firebug functions */
|
||||||
simulated function bool IsFlarotovActive(){ return false; }
|
simulated function bool IsFlarotovActive(){ return false; }
|
||||||
|
@ -47,6 +47,7 @@ var int ZedativeDamage;
|
|||||||
var class<KFDamageType> ZedativeDamageType;
|
var class<KFDamageType> ZedativeDamageType;
|
||||||
var class<KFDamageType> ZedativeHealingType;
|
var class<KFDamageType> ZedativeHealingType;
|
||||||
var int ZedativeEffectRadius;
|
var int ZedativeEffectRadius;
|
||||||
|
var float DartAmmoCostModifier;
|
||||||
|
|
||||||
enum EMedicPerkSkills
|
enum EMedicPerkSkills
|
||||||
{
|
{
|
||||||
@ -324,11 +325,6 @@ simulated function ModifyDamageGiven( out int InDamage, optional Actor DamageCau
|
|||||||
InDamage = Round(TempDamage);
|
InDamage = Round(TempDamage);
|
||||||
}
|
}
|
||||||
|
|
||||||
static function float GetHealRechargeMod()
|
|
||||||
{
|
|
||||||
return GetSkillValue( default.PerkSkills[EMedicAcidicCompound] );
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Takes the weapons primary damage and calculates the poisoning over time value */
|
/** Takes the weapons primary damage and calculates the poisoning over time value */
|
||||||
/**
|
/**
|
||||||
* @brief Takes the weapons primary damage and calculates the bleeding over time value
|
* @brief Takes the weapons primary damage and calculates the bleeding over time value
|
||||||
@ -339,7 +335,7 @@ static function ModifyToxicDmg( out int ToxicDamage )
|
|||||||
{
|
{
|
||||||
local float TempDamage;
|
local float TempDamage;
|
||||||
|
|
||||||
TempDamage = float(ToxicDamage) * GetHealRechargeMod();
|
TempDamage = float(ToxicDamage) * GetSkillValue( default.PerkSkills[EMedicAcidicCompound] );
|
||||||
ToxicDamage = FCeil( TempDamage );
|
ToxicDamage = FCeil( TempDamage );
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -588,6 +584,14 @@ static function float GetZedativeEffectRadius()
|
|||||||
return default.ZedativeEffectRadius;
|
return default.ZedativeEffectRadius;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
simulated function float GetDartAmmoCostModifier()
|
||||||
|
{
|
||||||
|
if (IsAcidicCompoundActive())
|
||||||
|
{
|
||||||
|
return DartAmmoCostModifier;
|
||||||
|
}
|
||||||
|
return Super.GetDartAmmoCostModifier();
|
||||||
|
}
|
||||||
/*********************************************************************************************
|
/*********************************************************************************************
|
||||||
* @name HUD / UI
|
* @name HUD / UI
|
||||||
********************************************************************************************* */
|
********************************************************************************************* */
|
||||||
@ -639,6 +643,7 @@ simulated function LogPerkSkills()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
DefaultProperties
|
DefaultProperties
|
||||||
{
|
{
|
||||||
PerkIcon=Texture2D'UI_PerkIcons_TEX.UI_PerkIcon_Medic'
|
PerkIcon=Texture2D'UI_PerkIcons_TEX.UI_PerkIcon_Medic'
|
||||||
@ -672,6 +677,8 @@ DefaultProperties
|
|||||||
|
|
||||||
ToxicDmgTypeClass=class'KFDT_Toxic_AcidicRounds'
|
ToxicDmgTypeClass=class'KFDT_Toxic_AcidicRounds'
|
||||||
|
|
||||||
|
DartAmmoCostModifier=0.8f
|
||||||
|
|
||||||
// explosion
|
// explosion
|
||||||
Begin Object Class=KFGameExplosion Name=ExploTemplate0
|
Begin Object Class=KFGameExplosion Name=ExploTemplate0
|
||||||
Damage=50 //50
|
Damage=50 //50
|
||||||
|
@ -216,6 +216,8 @@ function ModifyDamageTaken( out int InDamage, optional class<DamageType> DamageT
|
|||||||
{
|
{
|
||||||
TempDamage -= TempDamage * FortitudeDamageResistance;
|
TempDamage -= TempDamage * FortitudeDamageResistance;
|
||||||
`QALog( "Fortitude Damage Resistance =" @ FortitudeDamageResistance, bLogPerk );
|
`QALog( "Fortitude Damage Resistance =" @ FortitudeDamageResistance, bLogPerk );
|
||||||
|
|
||||||
|
InDamage = Round(TempDamage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -928,5 +930,5 @@ DefaultProperties
|
|||||||
AdditionalOnPerkDTNames(2)="KFDT_Ballistic_NailShotgun"
|
AdditionalOnPerkDTNames(2)="KFDT_Ballistic_NailShotgun"
|
||||||
|
|
||||||
FortitudeDamageResistance=0.1f
|
FortitudeDamageResistance=0.1f
|
||||||
APDamageModifier=0.05f
|
APDamageModifier=0.1f
|
||||||
}
|
}
|
||||||
|
@ -1014,17 +1014,21 @@ reliable server event PushV()
|
|||||||
simulated function bool GetAllowSeasonalSkins()
|
simulated function bool GetAllowSeasonalSkins()
|
||||||
{
|
{
|
||||||
local KFGameReplicationInfo KFGRI;
|
local KFGameReplicationInfo KFGRI;
|
||||||
local bool bIsWWLWeekly, bIsAllowSeasonalSkins; // Situations that shouldn't allow seasonal overrides
|
local bool bIsWWLWeekly, bIsCastleVolter, bIsAllowSeasonalSkins; // Situations that shouldn't allow seasonal overrides
|
||||||
|
|
||||||
KFGRI = KFGameReplicationInfo(WorldInfo.GRI);
|
KFGRI = KFGameReplicationInfo(WorldInfo.GRI);
|
||||||
|
|
||||||
bIsWWLWeekly = KFGRI != none && KFGRI.bIsWeeklyMode && KFGRI.CurrentWeeklyIndex == 12;
|
bIsWWLWeekly = KFGRI != none && KFGRI.bIsWeeklyMode && KFGRI.CurrentWeeklyIndex == 12;
|
||||||
|
|
||||||
|
bIsCastleVolter = Caps(WorldInfo.GetMapName(true)) == "KF-CASTLEVOLTER";
|
||||||
|
|
||||||
bIsAllowSeasonalSkins = KFGRI != none && KFGRI.bAllowSeasonalSkins;
|
bIsAllowSeasonalSkins = KFGRI != none && KFGRI.bAllowSeasonalSkins;
|
||||||
//`Log("GetAllowSeasonalSkins: AllowSeasonalSkins: "$bIsAllowSeasonalSkins$" WWLWeekly "$bIsWWLWeekly);
|
|
||||||
if(bIsWWLWeekly || bIsAllowSeasonalSkins == false)
|
if(bIsWWLWeekly || bIsCastleVolter || bIsAllowSeasonalSkins == false)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7255,8 +7259,12 @@ simulated event InitializeStats()
|
|||||||
local class<KFOnlineStatsRead> StatsReadClass;
|
local class<KFOnlineStatsRead> StatsReadClass;
|
||||||
local class<KFOnlineStatsWrite> StatsWriteClass;
|
local class<KFOnlineStatsWrite> StatsWriteClass;
|
||||||
|
|
||||||
if ( StatsRead == none && WorldInfo.NetMode != NM_DedicatedServer )
|
`Log("InitializeStats()");
|
||||||
|
|
||||||
|
if ( ( StatsRead == none || StatsWrite == none ) && WorldInfo.NetMode != NM_DedicatedServer )
|
||||||
{
|
{
|
||||||
|
`Log("InitializeStats() - Create objects");
|
||||||
|
|
||||||
// BWJ - 1-4-17 - Different stats read for dingo
|
// BWJ - 1-4-17 - Different stats read for dingo
|
||||||
if( WorldInfo.IsConsoleBuild( CONSOLE_Durango ) )
|
if( WorldInfo.IsConsoleBuild( CONSOLE_Durango ) )
|
||||||
{
|
{
|
||||||
@ -7638,7 +7646,23 @@ native reliable client private function ClientNotifyHitGiven(class<DamageType> D
|
|||||||
/** Kill stat */
|
/** Kill stat */
|
||||||
function AddZedKill( class<KFPawn_Monster> MonsterClass, byte Difficulty, class<DamageType> DT, bool bKiller )
|
function AddZedKill( class<KFPawn_Monster> MonsterClass, byte Difficulty, class<DamageType> DT, bool bKiller )
|
||||||
{
|
{
|
||||||
|
local KFPlayerController KFPC;
|
||||||
|
|
||||||
ClientAddZedKill( MonsterClass, Difficulty, DT, bKiller );
|
ClientAddZedKill( MonsterClass, Difficulty, DT, bKiller );
|
||||||
|
|
||||||
|
if (bKiller)
|
||||||
|
{
|
||||||
|
foreach WorldInfo.AllControllers(class'KFPlayerController', KFPC)
|
||||||
|
{
|
||||||
|
if (KFPC != none
|
||||||
|
&& KFPC != self
|
||||||
|
&& KFPC.IsInState('Spectating') == false
|
||||||
|
&& KFPC.PlayerReplicationInfo.bOnlySpectator == false)
|
||||||
|
{
|
||||||
|
KFPC.AddZedKill(MonsterClass, Difficulty, DT, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
native reliable client private function ClientAddZedKill( class<KFPawn_Monster> MonsterClass, byte Difficulty, class<DamageType> DT, bool bKiller );
|
native reliable client private function ClientAddZedKill( class<KFPawn_Monster> MonsterClass, byte Difficulty, class<DamageType> DT, bool bKiller );
|
||||||
|
|
||||||
@ -7666,9 +7690,25 @@ function AddAfflictionCaused(EAfflictionType Type)
|
|||||||
}
|
}
|
||||||
native reliable client private function ClientAddAfflictionCaused(EAfflictionType Type);
|
native reliable client private function ClientAddAfflictionCaused(EAfflictionType Type);
|
||||||
|
|
||||||
function AddCollectibleFound(int Limit)
|
function AddCollectibleFound(int Limit, optional bool bBroadcast = true)
|
||||||
{
|
{
|
||||||
|
local KFPlayerController KFPC;
|
||||||
|
|
||||||
ClientAddCollectibleFound(Limit);
|
ClientAddCollectibleFound(Limit);
|
||||||
|
|
||||||
|
if (bBroadcast)
|
||||||
|
{
|
||||||
|
foreach WorldInfo.AllControllers(class'KFPlayerController', KFPC)
|
||||||
|
{
|
||||||
|
if (KFPC != none
|
||||||
|
&& KFPC != self
|
||||||
|
&& KFPC.IsInState('Spectating') == false
|
||||||
|
&& KFPC.PlayerReplicationInfo.bOnlySpectator == false)
|
||||||
|
{
|
||||||
|
KFPC.AddCollectibleFound(Limit, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
native reliable client private function ClientAddCollectibleFound(int Limit);
|
native reliable client private function ClientAddCollectibleFound(int Limit);
|
||||||
|
|
||||||
|
@ -68,7 +68,7 @@ final protected simulated function FinishedObjective(int EventIndex, int Objecti
|
|||||||
}
|
}
|
||||||
|
|
||||||
simulated function OnMapObjectiveDeactivated(Actor ObjectiveInterfaceActor);
|
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);
|
||||||
simulated function OnZedKilledByHeadshot(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT);
|
simulated function OnZedKilledByHeadshot(class<KFPawn_Monster> MonsterClass, int Difficulty, class<DamageType> DT);
|
||||||
simulated function OnMapCollectibleFound(PlayerReplicationInfo FinderPRI, int CollectibleID);
|
simulated function OnMapCollectibleFound(PlayerReplicationInfo FinderPRI, int CollectibleID);
|
||||||
simulated event OnGameWon(class<GameInfo> GameClass, int Difficulty, int GameLength, bool bCoOp);
|
simulated event OnGameWon(class<GameInfo> GameClass, int Difficulty, int GameLength, bool bCoOp);
|
||||||
|
@ -15,7 +15,7 @@ defaultproperties
|
|||||||
{
|
{
|
||||||
WeaponClassPath="KFGameContent.KFWeap_AssaultRifle_FAMAS"
|
WeaponClassPath="KFGameContent.KFWeap_AssaultRifle_FAMAS"
|
||||||
|
|
||||||
BuyPrice=1200
|
BuyPrice=1000
|
||||||
|
|
||||||
AmmoPricePerMag=25
|
AmmoPricePerMag=25
|
||||||
SecondaryAmmoMagPrice=15 //13
|
SecondaryAmmoMagPrice=15 //13
|
||||||
|
@ -214,6 +214,8 @@ simulated function AltFireMode()
|
|||||||
/** @see KFWeapon::ConsumeAmmo */
|
/** @see KFWeapon::ConsumeAmmo */
|
||||||
simulated function ConsumeAmmo( byte FireModeNum )
|
simulated function ConsumeAmmo( byte FireModeNum )
|
||||||
{
|
{
|
||||||
|
local KFPerk Perk;
|
||||||
|
local float DartAmmoCostModifier;
|
||||||
// If its not the healing fire mode, return
|
// If its not the healing fire mode, return
|
||||||
if( FireModeNum != ALTFIRE_FIREMODE )
|
if( FireModeNum != ALTFIRE_FIREMODE )
|
||||||
{
|
{
|
||||||
@ -231,11 +233,14 @@ simulated function ConsumeAmmo( byte FireModeNum )
|
|||||||
// If AmmoCount is being replicated, don't allow the client to modify it here
|
// If AmmoCount is being replicated, don't allow the client to modify it here
|
||||||
if (Role == ROLE_Authority || bAllowClientAmmoTracking)
|
if (Role == ROLE_Authority || bAllowClientAmmoTracking)
|
||||||
{
|
{
|
||||||
|
Perk = GetPerk();
|
||||||
|
DartAmmoCostModifier = Perk != none ? Perk.GetDartAmmoCostModifier() : 1.0f;
|
||||||
|
|
||||||
// Don't consume ammo if magazine size is 0 (infinite ammo with no reload)
|
// Don't consume ammo if magazine size is 0 (infinite ammo with no reload)
|
||||||
if (MagazineCapacity[1] > 0 && AmmoCount[1] > 0)
|
if (MagazineCapacity[1] > 0 && AmmoCount[1] > 0)
|
||||||
{
|
{
|
||||||
// Reduce ammo amount by heal ammo cost
|
// Reduce ammo amount by heal ammo cost
|
||||||
AmmoCount[1] = Max(AmmoCount[1] - AmmoCost[1], 0);
|
AmmoCount[1] = Max(AmmoCount[1] - AmmoCost[1] * DartAmmoCostModifier, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -411,7 +416,6 @@ function StartHealRecharge()
|
|||||||
|
|
||||||
UsedHealRechargeTime = HealFullRechargeSeconds;
|
UsedHealRechargeTime = HealFullRechargeSeconds;
|
||||||
UsedHealRechargeTime *= static.GetUpgradeHealRechargeMod(CurrentWeaponUpgradeIndex);
|
UsedHealRechargeTime *= static.GetUpgradeHealRechargeMod(CurrentWeaponUpgradeIndex);
|
||||||
UsedHealRechargeTime *= InstigatorPerk.GetHealRechargeMod();
|
|
||||||
|
|
||||||
InstigatorPerk.ModifyHealerRechargeTime( UsedHealRechargeTime );
|
InstigatorPerk.ModifyHealerRechargeTime( UsedHealRechargeTime );
|
||||||
// Set the healing recharge rate whenever we start charging
|
// Set the healing recharge rate whenever we start charging
|
||||||
|
@ -4663,7 +4663,7 @@ function int AddSecondaryAmmo(int Amount)
|
|||||||
*
|
*
|
||||||
* @param bAmmoSync - If performing a sync the lowest value is typically the most correct
|
* @param bAmmoSync - If performing a sync the lowest value is typically the most correct
|
||||||
*/
|
*/
|
||||||
reliable client function ClientForceAmmoUpdate(byte NewAmmoCount, int NewSpareAmmoCount, optional bool bAmmoSync)
|
reliable client function ClientForceAmmoUpdate(int NewAmmoCount, int NewSpareAmmoCount, optional bool bAmmoSync)
|
||||||
{
|
{
|
||||||
if ( Role < ROLE_Authority )
|
if ( Role < ROLE_Authority )
|
||||||
{
|
{
|
||||||
@ -6614,7 +6614,7 @@ simulated state WeaponFiring
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unreliable server function SyncCurrentAmmoCount(byte FireMode, byte CurrentAmmoCount)
|
unreliable server function SyncCurrentAmmoCount(byte FireMode, int CurrentAmmoCount)
|
||||||
{
|
{
|
||||||
if(AmmoCount[FireMode] != CurrentAmmoCount)
|
if(AmmoCount[FireMode] != CurrentAmmoCount)
|
||||||
{
|
{
|
||||||
|
@ -506,7 +506,7 @@ function ReduceDamage(out int Damage, Pawn Injured, Controller InstigatedBy, vec
|
|||||||
|
|
||||||
function StartOutbreakRound(int OutbreakIdx)
|
function StartOutbreakRound(int OutbreakIdx)
|
||||||
{
|
{
|
||||||
OutbreakEvent.SetActiveEvent(OutbreakIdx, self);
|
OutbreakEvent.SetActiveEvent(OutbreakIdx);
|
||||||
OutbreakEvent.UpdateGRI();
|
OutbreakEvent.UpdateGRI();
|
||||||
OutbreakEvent.SetWorldInfoOverrides();
|
OutbreakEvent.SetWorldInfoOverrides();
|
||||||
|
|
||||||
|
@ -51,7 +51,9 @@ var protected bool bGunGamePlayerOnLastGun;
|
|||||||
var transient array<KFBarmwichBonfireVolume> BonfireVolumes;
|
var transient array<KFBarmwichBonfireVolume> BonfireVolumes;
|
||||||
|
|
||||||
// Trader Time modifier for Castle Volter map in the last round
|
// Trader Time modifier for Castle Volter map in the last round
|
||||||
|
var float CastleVolterTraderLastWaveModifier;
|
||||||
var float CastleVolterTraderModifier;
|
var float CastleVolterTraderModifier;
|
||||||
|
var bool bIsCastleVolterMap;
|
||||||
|
|
||||||
/** Whether this game mode should play music from the get-go (lobby) */
|
/** Whether this game mode should play music from the get-go (lobby) */
|
||||||
static function bool ShouldPlayMusicAtStart()
|
static function bool ShouldPlayMusicAtStart()
|
||||||
@ -77,6 +79,8 @@ event PostBeginPlay()
|
|||||||
{
|
{
|
||||||
super.PostBeginPlay();
|
super.PostBeginPlay();
|
||||||
|
|
||||||
|
bIsCastleVolterMap = Caps(WorldInfo.GetMapName(true)) == "KF-CASTLEVOLTER";
|
||||||
|
|
||||||
TimeBetweenWaves = GetTraderTime();
|
TimeBetweenWaves = GetTraderTime();
|
||||||
|
|
||||||
bGunGamePlayerOnLastGun = false;
|
bGunGamePlayerOnLastGun = false;
|
||||||
@ -1130,6 +1134,11 @@ function WaveStarted()
|
|||||||
UpdateGameSettings();
|
UpdateGameSettings();
|
||||||
|
|
||||||
bWaveStarted = true;
|
bWaveStarted = true;
|
||||||
|
|
||||||
|
if (bIsCastleVolterMap)
|
||||||
|
{
|
||||||
|
TimeBetweenWaves = GetTraderTime();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Do something when there are no AIs left */
|
/** Do something when there are no AIs left */
|
||||||
@ -1473,17 +1482,7 @@ function DoTraderTimeCleanup();
|
|||||||
/** Handle functionality for opening trader */
|
/** Handle functionality for opening trader */
|
||||||
function OpenTrader()
|
function OpenTrader()
|
||||||
{
|
{
|
||||||
local int UpdatedTimeBetweenWaves;
|
MyKFGRI.OpenTrader(TimeBetweenWaves);
|
||||||
|
|
||||||
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);
|
|
||||||
NotifyTraderOpened();
|
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
|
DefaultProperties
|
||||||
{
|
{
|
||||||
TimeBetweenWaves=60 //This is going to be a difficulty setting later
|
TimeBetweenWaves=60 //This is going to be a difficulty setting later
|
||||||
@ -1938,7 +1958,10 @@ DefaultProperties
|
|||||||
MaxGameDifficulty=3
|
MaxGameDifficulty=3
|
||||||
bWaveStarted=false
|
bWaveStarted=false
|
||||||
bGunGamePlayerOnLastGun=false
|
bGunGamePlayerOnLastGun=false
|
||||||
CastleVolterTraderModifier = 1.0f;
|
|
||||||
|
CastleVolterTraderLastWaveModifier = 2.5f
|
||||||
|
CastleVolterTraderModifier = 1.17f
|
||||||
|
bIsCastleVolterMap = false;
|
||||||
|
|
||||||
ObjectiveSpawnDelay=5
|
ObjectiveSpawnDelay=5
|
||||||
|
|
||||||
|
@ -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
|
// kill 1500 zeds on asylum
|
||||||
if (bObjectiveIsValidForMap[3] != 0)
|
if (bObjectiveIsValidForMap[3] != 0)
|
||||||
{
|
{
|
||||||
@ -107,4 +112,4 @@ defaultproperties
|
|||||||
{
|
{
|
||||||
EndlessWaveRequired=15
|
EndlessWaveRequired=15
|
||||||
ZedKillsRequired=1500
|
ZedKillsRequired=1500
|
||||||
}
|
}
|
||||||
|
@ -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;
|
local int ObjIdx;
|
||||||
|
|
||||||
|
if (bKiller == false)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Kill 2000 zeds on any map
|
// Kill 2000 zeds on any map
|
||||||
ObjIdx = 0;
|
ObjIdx = 0;
|
||||||
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
||||||
@ -129,4 +134,4 @@ defaultproperties
|
|||||||
EndlessWaveRequired=15
|
EndlessWaveRequired=15
|
||||||
PowerUpsRequired=10
|
PowerUpsRequired=10
|
||||||
FallEventIndex=SEI_Fall
|
FallEventIndex=SEI_Fall
|
||||||
}
|
}
|
||||||
|
@ -116,23 +116,20 @@ simulated function OnTryCompleteObjective(int ObjectiveIndex, int EventIndex)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Kill Hans Volter in 5 different maps
|
// 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 int ObjIdx;
|
||||||
local KFProfileSettings Profile;
|
local KFProfileSettings Profile;
|
||||||
|
|
||||||
ObjIdx = 0;
|
ObjIdx = 0;
|
||||||
|
|
||||||
if (Outer.IsEventObjectiveComplete(ObjIdx))
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
||||||
{
|
{
|
||||||
if (MonsterClass == class'KFPawn_ZedHansBase'
|
if (MonsterClass == class'KFPawn_ZedHansBase'
|
||||||
|| MonsterClass == class'KFPawn_ZedHans')
|
|| 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..
|
if (Outer.GetSeasonalEventStatValue(ObjIdx) < HansVolterKillsRequired) // If we still didn't reach the limit..
|
||||||
{
|
{
|
||||||
Profile = KFProfileSettings(Outer.MyKFPC.OnlineSub.PlayerInterface.GetProfileSettings(Outer.MyKFPC.StoredLocalUserNum));
|
Profile = KFProfileSettings(Outer.MyKFPC.OnlineSub.PlayerInterface.GetProfileSettings(Outer.MyKFPC.StoredLocalUserNum));
|
||||||
|
@ -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)
|
if (bObjectiveIsValidForMap[2] != 0)
|
||||||
{
|
{
|
||||||
IncrementSeasonalEventStat(2, 1);
|
IncrementSeasonalEventStat(2, 1);
|
||||||
@ -102,4 +107,4 @@ defaultproperties
|
|||||||
ZedKillsRequired=1500
|
ZedKillsRequired=1500
|
||||||
BossDeathsRequired=15
|
BossDeathsRequired=15
|
||||||
EndlessWaveRequired=15
|
EndlessWaveRequired=15
|
||||||
}
|
}
|
||||||
|
@ -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;
|
local int ObjIdx;
|
||||||
|
|
||||||
|
if (bKiller == false)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
ObjIdx = 0;
|
ObjIdx = 0;
|
||||||
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
||||||
{
|
{
|
||||||
@ -115,4 +120,4 @@ defaultproperties
|
|||||||
ZedKillsRequired=1500
|
ZedKillsRequired=1500
|
||||||
BloodBlenderKillsRequired=20
|
BloodBlenderKillsRequired=20
|
||||||
TrapDoorKillsRequired=20
|
TrapDoorKillsRequired=20
|
||||||
}
|
}
|
||||||
|
@ -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;
|
local int ObjIdx;
|
||||||
|
|
||||||
|
if (bKiller == false)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// E.D.A.R kills
|
// E.D.A.R kills
|
||||||
ObjIdx = 2;
|
ObjIdx = 2;
|
||||||
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
||||||
|
@ -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 int ObjIdx;
|
||||||
local KFPlayerController KFPC;
|
local KFPlayerController KFPC;
|
||||||
local KFPawn_Human KFP;
|
local KFPawn_Human KFP;
|
||||||
|
|
||||||
|
if (bKiller == false)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Laser Kills
|
// Laser Kills
|
||||||
ObjIdx = 2;
|
ObjIdx = 2;
|
||||||
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
||||||
|
@ -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;
|
local int ObjIdx;
|
||||||
|
|
||||||
|
if (bKiller == false)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Kill 1500 Zeds on any map or mode
|
// Kill 1500 Zeds on any map or mode
|
||||||
ObjIdx = 0;
|
ObjIdx = 0;
|
||||||
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
||||||
@ -149,4 +154,4 @@ defaultproperties
|
|||||||
ZedsThrowSeaRequired=50
|
ZedsThrowSeaRequired=50
|
||||||
EndlessWaveRequired=15
|
EndlessWaveRequired=15
|
||||||
LastWaveFinished=-1
|
LastWaveFinished=-1
|
||||||
}
|
}
|
||||||
|
@ -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;
|
local int ObjIdx;
|
||||||
|
|
||||||
|
if (bKiller == false)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Kill 1500 Zeds with HRG Bombardier
|
// Kill 1500 Zeds with HRG Bombardier
|
||||||
ObjIdx = 0;
|
ObjIdx = 0;
|
||||||
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
if (bObjectiveIsValidForMap[ObjIdx] != 0)
|
||||||
@ -167,4 +172,4 @@ defaultproperties
|
|||||||
StandYourGroundRequired=25
|
StandYourGroundRequired=25
|
||||||
EndlessWaveRequired=15
|
EndlessWaveRequired=15
|
||||||
SummerEventIndex=SEI_Summer
|
SummerEventIndex=SEI_Summer
|
||||||
}
|
}
|
||||||
|
@ -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)
|
if (bObjectiveIsValidForMap[2] != 0)
|
||||||
{
|
{
|
||||||
IncrementSeasonalEventStat(2, 1);
|
IncrementSeasonalEventStat(2, 1);
|
||||||
@ -123,4 +128,4 @@ defaultproperties
|
|||||||
PerfectEscortsRequired=3
|
PerfectEscortsRequired=3
|
||||||
ZedKillsRequired=2500
|
ZedKillsRequired=2500
|
||||||
BossDeathsRequired=25
|
BossDeathsRequired=25
|
||||||
}
|
}
|
||||||
|
@ -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 (bObjectiveIsValidForMap[1] != 0)
|
||||||
{
|
{
|
||||||
if (DT == class'KFDT_Trap_SanitariumTentacle')
|
if (DT == class'KFDT_Trap_SanitariumTentacle')
|
||||||
@ -110,4 +115,4 @@ defaultproperties
|
|||||||
TentacleTrapKillsRequired=20
|
TentacleTrapKillsRequired=20
|
||||||
SuctionTrapKillsRequired=20
|
SuctionTrapKillsRequired=20
|
||||||
MatriarchKillsRequired=10
|
MatriarchKillsRequired=10
|
||||||
}
|
}
|
||||||
|
@ -972,7 +972,7 @@ defaultproperties
|
|||||||
FlameSprayArchetype = SprayActor_Flame'WEP_Laser_Cutter_ARCH.WEP_Laser_Cutter_Flame'
|
FlameSprayArchetype = SprayActor_Flame'WEP_Laser_Cutter_ARCH.WEP_Laser_Cutter_Flame'
|
||||||
|
|
||||||
ChargeTimePerLevel = 0.7f;
|
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
|
OverchargeConsumeTime = 0; //Setting to 0 or below deactivates ammo consumption while holding a charge
|
||||||
|
|
||||||
// Shooting Animations
|
// Shooting Animations
|
||||||
|
@ -166,7 +166,8 @@ function StartHealRecharge()
|
|||||||
if (Role == ROLE_Authority)
|
if (Role == ROLE_Authority)
|
||||||
{
|
{
|
||||||
InstigatorPerk = GetPerk();
|
InstigatorPerk = GetPerk();
|
||||||
UsedHealRechargeTime = HealFullRechargeSeconds * static.GetUpgradeHealRechargeMod(CurrentWeaponUpgradeIndex);
|
UsedHealRechargeTime = HealFullRechargeSeconds;
|
||||||
|
UsedHealRechargeTime *= static.GetUpgradeHealRechargeMod(CurrentWeaponUpgradeIndex);
|
||||||
|
|
||||||
InstigatorPerk.ModifyHealerRechargeTime(UsedHealRechargeTime);
|
InstigatorPerk.ModifyHealerRechargeTime(UsedHealRechargeTime);
|
||||||
// Set the healing recharge rate whenever we start charging
|
// Set the healing recharge rate whenever we start charging
|
||||||
|
@ -42,10 +42,10 @@ defaultproperties
|
|||||||
bReloadFromMagazine=true
|
bReloadFromMagazine=true
|
||||||
|
|
||||||
// Recoil
|
// Recoil
|
||||||
maxRecoilPitch=250
|
maxRecoilPitch=160
|
||||||
minRecoilPitch=200
|
minRecoilPitch=140
|
||||||
maxRecoilYaw=100
|
maxRecoilYaw=60
|
||||||
minRecoilYaw=-100
|
minRecoilYaw=-60
|
||||||
RecoilRate=0.01
|
RecoilRate=0.01
|
||||||
RecoilMaxYawLimit=500
|
RecoilMaxYawLimit=500
|
||||||
RecoilMinYawLimit=65035
|
RecoilMinYawLimit=65035
|
||||||
@ -61,7 +61,7 @@ defaultproperties
|
|||||||
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit
|
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit
|
||||||
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_Pistol9mm'
|
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_Pistol9mm'
|
||||||
FireInterval(DEFAULT_FIREMODE)=+0.08 //0.175
|
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'
|
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_HRG_93R'
|
||||||
Spread(DEFAULT_FIREMODE)=0.015
|
Spread(DEFAULT_FIREMODE)=0.015
|
||||||
FireOffset=(X=20,Y=4.0,Z=-3)
|
FireOffset=(X=20,Y=4.0,Z=-3)
|
||||||
|
@ -58,10 +58,10 @@ defaultproperties
|
|||||||
bReloadFromMagazine=true
|
bReloadFromMagazine=true
|
||||||
|
|
||||||
// Recoil
|
// Recoil
|
||||||
maxRecoilPitch=250
|
maxRecoilPitch=160
|
||||||
minRecoilPitch=200
|
minRecoilPitch=140
|
||||||
maxRecoilYaw=100
|
maxRecoilYaw=60
|
||||||
minRecoilYaw=-100
|
minRecoilYaw=-60
|
||||||
RecoilRate=0.01
|
RecoilRate=0.01
|
||||||
RecoilMaxYawLimit=500
|
RecoilMaxYawLimit=500
|
||||||
RecoilMinYawLimit=65035
|
RecoilMinYawLimit=65035
|
||||||
@ -77,7 +77,7 @@ defaultproperties
|
|||||||
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit
|
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_InstantHit
|
||||||
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_Pistol9mm'
|
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_Pistol9mm'
|
||||||
FireInterval(DEFAULT_FIREMODE)=+0.08
|
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'
|
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_HRG_93R'
|
||||||
Spread(DEFAULT_FIREMODE)=0.015
|
Spread(DEFAULT_FIREMODE)=0.015
|
||||||
BurstAmount=3
|
BurstAmount=3
|
||||||
@ -89,7 +89,7 @@ defaultproperties
|
|||||||
WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_InstantHit
|
WeaponFireTypes(ALTFIRE_FIREMODE)=EWFT_InstantHit
|
||||||
WeaponProjectiles(ALTFIRE_FIREMODE)=class'KFProj_Bullet_Pistol9mm'
|
WeaponProjectiles(ALTFIRE_FIREMODE)=class'KFProj_Bullet_Pistol9mm'
|
||||||
FireInterval(ALTFIRE_FIREMODE)=+0.08 // about twice as fast as single
|
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'
|
InstantHitDamageTypes(ALTFIRE_FIREMODE)=class'KFDT_Ballistic_HRG_93R'
|
||||||
Spread(ALTFIRE_FIREMODE)=0.015
|
Spread(ALTFIRE_FIREMODE)=0.015
|
||||||
|
|
||||||
|
@ -417,7 +417,6 @@ function StartHealRecharge()
|
|||||||
|
|
||||||
UsedHealRechargeTime = HealFullRechargeSeconds;
|
UsedHealRechargeTime = HealFullRechargeSeconds;
|
||||||
UsedHealRechargeTime *= static.GetUpgradeHealRechargeMod(CurrentWeaponUpgradeIndex);
|
UsedHealRechargeTime *= static.GetUpgradeHealRechargeMod(CurrentWeaponUpgradeIndex);
|
||||||
UsedHealRechargeTime *= InstigatorPerk.GetHealRechargeMod();
|
|
||||||
|
|
||||||
InstigatorPerk.ModifyHealerRechargeTime(UsedHealRechargeTime);
|
InstigatorPerk.ModifyHealerRechargeTime(UsedHealRechargeTime);
|
||||||
// Set the healing recharge rate whenever we start charging
|
// Set the healing recharge rate whenever we start charging
|
||||||
|
@ -104,7 +104,7 @@ defaultproperties
|
|||||||
FiringStatesArray(DEFAULT_FIREMODE)=WeaponFiring
|
FiringStatesArray(DEFAULT_FIREMODE)=WeaponFiring
|
||||||
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_Projectile
|
WeaponFireTypes(DEFAULT_FIREMODE)=EWFT_Projectile
|
||||||
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_HRG_Stunner'
|
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'
|
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_HRG_Stunner'
|
||||||
PenetrationPower(DEFAULT_FIREMODE)=2.0
|
PenetrationPower(DEFAULT_FIREMODE)=2.0
|
||||||
FireInterval(DEFAULT_FIREMODE)=0.15
|
FireInterval(DEFAULT_FIREMODE)=0.15
|
||||||
|
@ -485,7 +485,7 @@ defaultproperties
|
|||||||
LastAmmoCount=-1
|
LastAmmoCount=-1
|
||||||
|
|
||||||
NumAltBullets=5
|
NumAltBullets=5
|
||||||
SpreadWidthDegrees=30
|
SpreadWidthDegrees=20
|
||||||
StartingAltBulletPosition=0.0f
|
StartingAltBulletPosition=0.0f
|
||||||
SpreadMaxOffset=(X=1.2f, Y=1.5f)
|
SpreadMaxOffset=(X=1.2f, Y=1.5f)
|
||||||
}
|
}
|
||||||
|
@ -376,7 +376,7 @@ defaultproperties
|
|||||||
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_G18'
|
WeaponProjectiles(DEFAULT_FIREMODE)=class'KFProj_Bullet_G18'
|
||||||
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_G18'
|
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'KFDT_Ballistic_G18'
|
||||||
FireInterval(DEFAULT_FIREMODE)=+.05455 // 1100 RPM
|
FireInterval(DEFAULT_FIREMODE)=+.05455 // 1100 RPM
|
||||||
Spread(DEFAULT_FIREMODE)=0.06
|
Spread(DEFAULT_FIREMODE)=0.045
|
||||||
InstantHitDamage(DEFAULT_FIREMODE)=28
|
InstantHitDamage(DEFAULT_FIREMODE)=28
|
||||||
FireOffset=(X=30,Y=6.5,Z=-4)
|
FireOffset=(X=30,Y=6.5,Z=-4)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user