Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified CombinedCD2/Classes/CD_ChatCommander.uc
Binary file not shown.
79 changes: 79 additions & 0 deletions CombinedCD2/Classes/CD_PickupQueryHandler.uc
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
class CD_PickupQueryHandler extends Object
within CD_Survival;

var private CD_DroppedPickup CDDP;
var private KFWeapon Weap;
var private CD_PlayerController CDPC;
var private CD_Pawn_Human Player;
var private class<KFWeaponDefinition> WeapDefClass;

public function Initialize(Pawn OwnerPawn, Actor Pickup)
{
CDDP = CD_DroppedPickup(Pickup);
Weap = KFWeapon(CDDP.Inventory);
WeapDefClass = class<KFDamageType>(Weap.class.default.InstantHitDamageTypes[3]).default.WeaponDef;

CDPC = CD_PlayerController(OwnerPawn.Controller);
Player = CD_Pawn_Human(OwnerPawn);
}

public function bool PickupQuery(optional bool bIgnoreDualQuery)
{
if(CDDP == none || Weap == none || CDPC == none || Player == none || WeapDefClass == none)
{
return true;
}

return ( bIgnoreDualQuery || DualQuery() ) && LowAmmoQuery() && OthersQuery();
}

private function bool DualQuery()
{
return !( Outer.MyKFGRI.bTraderIsOpen && CDPC.bDisableDual && Player.IsGonnaBeDual(Weap) );
}

private function bool LowAmmoQuery()
{
return !( Outer.MyKFGRI.bWaveIsActive && IsDisableLowAmmo() && CDDP.IsLowAmmo() );
}

private function bool OthersQuery()
{
return !( CDDP.OriginalOwner != Player.PlayerReplicationInfo && IsUnobtainableOthers() );
}

private function bool IsDisableLowAmmo()
{
local int index;
local PlayerReplicationInfo PRI;
PRI = Player.PlayerReplicationinfo;

index = Outer.PickupSettings.Find('PRI', PRI);

if(index != INDEX_NONE)
{
return Outer.PickupSettings[index].DisableLowAmmo;
}

return false;
}

private function bool IsUnobtainableOthers()
{
local bool bLocked;
local bool bDisableOthers;
local bool bAuthorized;
local int registryIndex, settingIndex;
local PlayerReplicationinfo PRI;
PRI = Player.PlayerReplicationinfo;

registryIndex = Outer.PickupTracker.WeaponPickupRegistry.Find('KFDP', CDDP);
bLocked = (registryIndex != INDEX_NONE && Outer.PickupTracker.WeaponPickupRegistry[registryIndex].bLocked);

settingIndex = Outer.PickupSettings.Find('PRI', PRI);
bDisableOthers = (settingIndex != INDEX_NONE && Outer.PickupSettings[settingIndex].DisableOthers);

bAuthorized = CDPC.IsAllowedWeapon(WeapDefClass, true, false);

return (bLocked || bDisableOthers || !bAuthorized);
}
Binary file modified CombinedCD2/Classes/CD_PlayerController.uc
Binary file not shown.
207 changes: 207 additions & 0 deletions CombinedCD2/Classes/CD_SettingManager.uc
Original file line number Diff line number Diff line change
@@ -0,0 +1,207 @@
class CD_SettingManager extends Object;

var CD_DynamicSetting
BossHPFakesSetting,
CohortSizeSetting,
WaveSizeFakesSetting,
FleshpoundHPFakesSetting,
QuarterPoundHPFakesSetting,
MaxMonstersSetting,
SpawnPollSetting,
ScrakeHPFakesSetting,
SpawnModSetting,
TrashHPFakesSetting,
ZTSpawnSlowdownSetting;

var CD_BasicSetting
AlbinoAlphasSetting,
AlbinoCrawlersSetting,
AlbinoGorefastsSetting,
AutoPauseSetting,
BossSetting,
CountHeadshotsPerPelletSetting,
FleshpoundRageSpawnsSetting,
SpawnCycleSetting,
TraderTimeSetting,
EnableReadySystemSetting,
ZedsTeleportCloserSetting,
ZTSpawnModeSetting,
StartwithFullAmmoSetting,
StartwithFullGrenadeSetting,
StartwithFullArmorSetting,
StartingWeaponTierSetting,
BossDifficultySetting,
DisableBossMinionsSetting,
DisableSpawnersSetting,
DisableRobotsSetting,
DisableBossSetting;

var array<CD_DynamicSetting> DynamicSettings;
var array<CD_BasicSetting> BasicSettings;
var array<CD_Setting> AllSettings;

public function Initialize(CD_Survival OuterClass, string Options)
{
SetupBasicSettings(OuterClass);
SetupDynamicSettings(OuterClass);
SortAllSettingsByName();
ParseCDGameOptions( Options );
}

private function SortAllSettingsByName()
{
AllSettings.sort(SettingNameComparator);
}

private function int SettingNameComparator( CD_Setting a, CD_Setting b )
{
local string an, bn;

an = a.GetOptionName();
bn = b.GetOptionName();

if ( an < bn )
{
return 1;
}
else if ( an > bn )
{
return -1;
}
return 0;
}

private function SetupBasicSettings(CD_Survival OuterClass)
{
AlbinoAlphasSetting = new(OuterClass) class'CD_BasicSetting_AlbinoAlphas';
RegisterBasicSetting( AlbinoAlphasSetting );

AlbinoCrawlersSetting = new(OuterClass) class'CD_BasicSetting_AlbinoCrawlers';
RegisterBasicSetting( AlbinoCrawlersSetting );

AlbinoGorefastsSetting = new(OuterClass) class'CD_BasicSetting_AlbinoGorefasts';
RegisterBasicSetting( AlbinoGorefastsSetting );

AutoPauseSetting = new(OuterClass) class'CD_BasicSetting_AutoPause';
RegisterBasicSetting( AutoPauseSetting );

BossSetting = new(OuterClass) class'CD_BasicSetting_Boss';
RegisterBasicSetting( BossSetting );

BossDifficultySetting = new(OuterClass) class'CD_BasicSetting_BossDifficulty';
RegisterBasicSetting( BossDifficultySetting );

CountHeadshotsPerPelletSetting = new(OuterClass) class'CD_BasicSetting_CountHeadshotsPerPellet';
RegisterBasicSetting( CountHeadshotsPerPelletSetting );

DisableBossSetting = new(OuterClass) class'CD_BasicSetting_DisableBoss';
RegisterBasicSetting( DisableBossSetting );

DisableBossMinionsSetting = new(OuterClass) class'CD_BasicSetting_DisableBossMinions';
RegisterBasicSetting( DisableBossMinionsSetting );

DisableRobotsSetting = new(OuterClass) class'CD_BasicSetting_DisableRobots';
RegisterBasicSetting( DisableRobotsSetting );

DisableSpawnersSetting = new(OuterClass) class'CD_BasicSetting_DisableSpawners';
RegisterBasicSetting( DisableSpawnersSetting );

EnableReadySystemSetting = new(OuterClass) class'CD_BasicSetting_EnableReadySystem';
RegisterBasicSetting( EnableReadySystemSetting );

FleshpoundRageSpawnsSetting = new(OuterClass) class'CD_BasicSetting_FleshpoundRageSpawns';
RegisterBasicSetting( FleshpoundRageSpawnsSetting );

StartingWeaponTierSetting = new(OuterClass) class'CD_BasicSetting_StartingWeaponTier';
RegisterBasicSetting( StartingWeaponTierSetting );

StartwithFullAmmoSetting = new(OuterClass) class'CD_BasicSetting_StartwithFullAmmo';
RegisterBasicSetting( StartwithFullAmmoSetting );

StartwithFullArmorSetting = new(OuterClass) class'CD_BasicSetting_StartwithFullArmor';
RegisterBasicSetting( StartwithFullArmorSetting );

StartwithFullGrenadeSetting = new(OuterClass) class'CD_BasicSetting_StartwithFullGrenade';
RegisterBasicSetting( StartwithFullGrenadeSetting );

SpawnCycleSetting = new(OuterClass) class'CD_BasicSetting_SpawnCycle';
RegisterBasicSetting( SpawnCycleSetting );

TraderTimeSetting = new(OuterClass) class'CD_BasicSetting_TraderTime';
RegisterBasicSetting( TraderTimeSetting );

ZedsTeleportCloserSetting = new(OuterClass) class'CD_BasicSetting_ZedsTeleportCloser';
RegisterBasicSetting( ZedsTeleportCloserSetting );

ZTSpawnModeSetting = new(OuterClass) class'CD_BasicSetting_ZTSpawnMode';
RegisterBasicSetting( ZTSpawnModeSetting );
}

private function SetupDynamicSettings(CD_Survival OuterClass)
{
BossHPFakesSetting = new(OuterClass) class'CD_DynamicSetting_BossHPFakes';
BossHPFakesSetting.IniDefsArray = OuterClass.BossHPFakesDefs;
RegisterDynamicSetting( BossHPFakesSetting );

CohortSizeSetting = new(OuterClass) class'CD_DynamicSetting_CohortSize';
CohortSizeSetting.IniDefsArray = OuterClass.CohortSizeDefs;
RegisterDynamicSetting( CohortSizeSetting );

WaveSizeFakesSetting = new(OuterClass) class'CD_DynamicSetting_WaveSizeFakes';
WaveSizeFakesSetting.IniDefsArray = OuterClass.WaveSizeFakesDefs;
RegisterDynamicSetting( WaveSizeFakesSetting );

MaxMonstersSetting = new(OuterClass) class'CD_DynamicSetting_MaxMonsters';
MaxMonstersSetting.IniDefsArray = OuterClass.MaxMonstersDefs;
RegisterDynamicSetting( MaxMonstersSetting );

SpawnModSetting = new(OuterClass) class'CD_DynamicSetting_SpawnMod';
SpawnModSetting.IniDefsArray = OuterClass.SpawnModDefs;
RegisterDynamicSetting( SpawnModSetting );

SpawnPollSetting = new(OuterClass) class'CD_DynamicSetting_SpawnPoll';
SpawnPollSetting.IniDefsArray = OuterClass.SpawnPollDefs;
RegisterDynamicSetting( SpawnPollSetting );

ScrakeHPFakesSetting = new(OuterClass) class'CD_DynamicSetting_ScrakeHPFakes';
ScrakeHPFakesSetting.IniDefsArray = OuterClass.ScrakeHPFakesDefs;
RegisterDynamicSetting( ScrakeHPFakesSetting );

FleshpoundHPFakesSetting = new(OuterClass) class'CD_DynamicSetting_FleshpoundHPFakes';
FleshpoundHPFakesSetting.IniDefsArray = OuterClass.FleshpoundHPFakesDefs;
RegisterDynamicSetting( FleshpoundHPFakesSetting );

QuarterPoundHPFakesSetting = new(OuterClass) class'CD_DynamicSetting_QuarterPoundHPFakes';
QuarterPoundHPFakesSetting.IniDefsArray = OuterClass.QuarterPoundHPFakesDefs;
RegisterDynamicSetting( QuarterPoundHPFakesSetting );

TrashHPFakesSetting = new(OuterClass) class'CD_DynamicSetting_TrashHPFakes';
TrashHPFakesSetting.IniDefsArray = OuterClass.TrashHPFakesDefs;
RegisterDynamicSetting( TrashHPFakesSetting );

ZTSpawnSlowdownSetting = new(OuterClass) class'CD_DynamicSetting_ZTSpawnSlowdown';
ZTSpawnSlowdownSetting.IniDefsArray = OuterClass.ZTSpawnSlowdownDefs;
RegisterDynamicSetting( ZTSpawnSlowdownSetting );
}

private function RegisterBasicSetting( const out CD_BasicSetting BasicSetting )
{
BasicSettings.AddItem( BasicSetting );
AllSettings.AddItem( BasicSetting );
}

private function RegisterDynamicSetting( const out CD_DynamicSetting DynamicSetting )
{
DynamicSettings.AddItem( DynamicSetting );
AllSettings.AddItem( DynamicSetting );
}

private function ParseCDGameOptions( const out string Options )
{
local int i;

for ( i = 0; i < AllSettings.Length; i++ )
{
AllSettings[i].InitFromOptions( Options );
}
}
54 changes: 54 additions & 0 deletions CombinedCD2/Classes/CD_SettingSynchronizer.uc
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
class CD_SettingSynchronizer extends Object
within CD_Survival;

// Perk, skill, weapon, auth level
public function SynchSettings(CD_PlayerController CDPC)
{
local CD_PerkInfo PerkRestriction;
local CD_SkillInfo SkillRestriction;
local CD_WeaponInfo WeaponRestriction;

CDPC.ResetSettings();
CDPC.ReceiveAuthority(Outer.AuthorityHandler.GetAuthorityLevel(CDPC));
CDPC.GetCDPRI().AuthorityLevel = Outer.AuthorityHandler.GetAuthorityLevel(CDPC);
CDPC.ReceiveLevelRestriction(Outer.AuthorityHandler.bRequireLv25);
CDPC.ReceiveAntiOvercap(Outer.AuthorityHandler.bAntiOvercap);

foreach Outer.AuthorityHandler.PerkRestrictions(PerkRestriction)
{
CDPC.ReceivePerkRestrictions(PerkRestriction);
}

foreach Outer.AuthorityHandler.SkillRestrictions(SkillRestriction)
{
CDPC.ReceiveSkillRestrictions(SkillRestriction);
}

foreach Outer.AuthorityHandler.WeaponRestrictions(WeaponRestriction)
{
CDPC.ReceiveWeaponRestrictions(WeaponRestriction);
}

CDPC.SynchFinished();
}

public function ResynchSettings()
{
local CD_PlayerController CDPC;

foreach Outer.WorldInfo.AllControllers(class'CD_PlayerController', CDPC)
{
SynchSettings(CDPC);
}
}

public function SendAuthList(CD_PlayerController CDPC)
{
local int i;

for(i=0; i<AuthorityHandler.AuthorityInfo.length; i++)
{
CDPC.ReceiveAuthList(AuthorityHandler.AuthorityInfo[i]);
}
CDPC.CompleteAuthList();
}
Binary file modified CombinedCD2/Classes/CD_Survival.uc
Binary file not shown.
Loading