1
0

fix style

This commit is contained in:
GenZmeY 2023-05-14 05:49:12 +03:00
parent 47ed596664
commit 7175a6c7b6
181 changed files with 979 additions and 1882 deletions
Localization
PublicationContent
ServerExt/Classes
ExtAutoPurchaseHelper.ucExtCharDataInfo.ucExtCharacterInfo.ucExtEmoteList.ucExtExplosion_SirenScream.ucExtGUI_PerkSelectionPage.ucExtHUD_PlayerBackpack.ucExtHUD_PlayerStatus.ucExtHUD_SpectatorInfo.ucExtHUD_WeaponSelectWidget.ucExtHumanPawn.ucExtInventoryManager.ucExtMenu_Gear.ucExtMenu_Inventory.ucExtMenu_Perks.ucExtMenu_Trader.ucExtMoviePlayer_HUD.ucExtMoviePlayer_Manager.ucExtPawn_Customization.ucExtPawn_ZedHans_Pet.ucExtPerkManager.ucExtPerksContainer_Header.ucExtPerksContainer_Selection.ucExtPlayerController.ucExtPlayerReplicationInfo.ucExtProj_CrackerGrenade.ucExtProj_SUPERMedGrenade.ucExtProj_SUPERMolotov.ucExtProj_SUPERMolotovS.ucExtSM_Player_Emote.ucExtSM_Siren_Scream.ucExtSpawnPointHelper.ucExtTraderContainer_Filter.ucExtTraderContainer_PlayerInfo.ucExtTraderContainer_Store.ucExtWeapDef_9mm.ucExtWeapDef_MedicPistol.ucExtWeap_Pistol_9mm.ucExtWeap_Pistol_Dual9mm.ucExtWeap_Pistol_MedicS.ucExtWeaponSkinList.ucExtWebAdmin_UI.ucExtWidget_PartyInGame.ucExt_AICommandBasePet.ucExt_AINoTaunt.ucExt_PerkBase.ucExt_PerkBerserker.ucExt_PerkCommando.ucExt_PerkDemolition.ucExt_PerkFieldMedic.ucExt_PerkFirebug.ucExt_PerkGunslinger.ucExt_PerkRhythmPerkBase.ucExt_PerkSharpshooter.ucExt_PerkSupport.ucExt_TGroupMonster.ucExt_TGroupRegen.ucExt_TGroupZEDTime.ucExt_T_AutoFireHelper.ucExt_T_GhostHelper.ucExt_T_HealthRegHelp.ucExt_T_SupplierInteract.ucExt_T_ZEDHelper.ucExt_TraitAirborneAgent.ucExt_TraitAmmoReg.ucExt_TraitArmorReg.ucExt_TraitBase.ucExt_TraitDataStore.ucExt_TraitDemoNuke.ucExt_TraitDemoProfessional.ucExt_TraitHealthReg.ucExt_TraitHeavyArmor.ucExt_TraitPenetrator.ucExt_TraitRagdoll.ucExt_TraitRetali.ucExt_TraitSupply.ucExt_TraitSupplyData.ucExt_TraitSupplyGren.ucExt_TraitTactician.ucExt_TraitUnCloak.ucExt_TraitWPBers.ucExt_TraitWPDemo.ucExt_TraitWPFire.ucExt_TraitWeapons.ucExt_TraitZEDBase.ucExt_TraitZED_Damage.ucExt_TraitZED_Health.ucExt_TraitZED_Summon.ucExt_TraitZED_SummonExt.ucExt_TraitZedative.ucGUIStyleBase.ucKF2GUIController.ucKF2GUIInput.ucKF2GUINetwork.uc

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -24,7 +24,7 @@ The full changelog is available [url=https://steamcommunity.com/sharedfiles/file
[h1]Usage (single player)[/h1]
[olist]
[*]Subscribe to this mutator;
[*]Start KF2;
[*]Start KF2;
[*]Open console (`) and input:
[code]open KF-BioticsLab?Mutator=ServerExtMut.ServerExtMut[/code]
(You can add some options or replace KF-BioticsLab with the map you want)
@ -44,7 +44,7 @@ The full changelog is available [url=https://steamcommunity.com/sharedfiles/file
[/olist]
[h1]Mutator setup[/h1]
[url=https://steamcommunity.com/workshop/filedetails/discussion/2085786712/4241773359646835902/][u]Look here[/u][/url]
[url=https://steamcommunity.com/workshop/filedetails/discussion/2085786712/4241773359646835902/][u]Look here[/u][/url]
[h1]Is it possible to make the game harder?[/h1]
It will be more efficient to use ServerExt together with other mutators (which add new zeds or game modes).

@ -48,7 +48,7 @@ function DoAutoPurchase()
PotentialDosh = GetPotentialDosh();
bUpgradeSuccess = AttemptUpgrade(PotentialDosh+TotalDosh, OnPerkWeapons);
}
bAutoFillPurchasedItem = StartAutoFill();
if (DoIOwnThisWeapon(TopTierWeapon))
{
@ -56,7 +56,7 @@ function DoAutoPurchase()
{
bSecondaryWeaponPurchased = true;
AttemptToPurchaseNextLowerTier(TotalDosh, OnPerkWeapons);
}
}
}
MyKFIM.ServerCloseTraderMenu();
@ -73,11 +73,11 @@ function DoAutoPurchase()
{
AutoFillMessageString = class'KFCommon_LocalizedStrings'.default.AutoFillCompleteString;
}
else
else
{
AutoFillMessageString = class'KFCommon_LocalizedStrings'.default.NoItemsPurchasedString;
}
if (MyGFxHUD != none)
{
@ -89,7 +89,7 @@ function SellOnPerkWeapons()
{
local int i;
local class<KFPerk> Perk;
Perk = GetBasePerk();
if (Perk!=None)
{
@ -108,7 +108,7 @@ function SellOffPerkWeapons()
{
local int i;
local Ext_PerkBase EP;
EP = GetExtPerk();
for (i = 0; i < OwnedItemList.length; i++)
@ -166,7 +166,7 @@ function InitializeOwnedItemList()
if (MyGfxManager != none && MyGfxManager.TraderMenu != none)
{
MyGfxManager.TraderMenu.OwnedItemList = OwnedItemList;
MyGfxManager.TraderMenu.OwnedItemList = OwnedItemList;
}
}
}
@ -177,7 +177,7 @@ function int AddItemByPriority(out SItemInformation WeaponInfo)
local byte WeaponGroup, WeaponPriority;
local byte BestIndex;
local class<KFPerk> Perk;
Perk = GetBasePerk();
BestIndex = 0;
@ -225,7 +225,7 @@ function int AddItemByPriority(out SItemInformation WeaponInfo)
if (MyGfxManager != none && MyGfxManager.TraderMenu != none)
{
MyGfxManager.TraderMenu.OwnedItemList = OwnedItemList;
MyGfxManager.TraderMenu.OwnedItemList = OwnedItemList;
}
return BestIndex;
@ -234,7 +234,7 @@ function int AddItemByPriority(out SItemInformation WeaponInfo)
function bool CanCarry(const out STraderItem Item, optional int OverrideLevelValue = INDEX_NONE)
{
local int Result;
Result = TotalBlocks + MyKFIM.GetDisplayedBlocksRequiredfor (Item);
if (Result > MaxBlocks)
{

@ -8,7 +8,7 @@ var config int HeadMeshIndex,HeadSkinIndex,BodyMeshIndex,BodySkinIndex,Attachmen
final function FMyCustomChar LoadData()
{
local FMyCustomChar R;
if (HasInit==0)
{
AttachmentMesh0 = `CLEARED_ATTACHMENT_INDEX;
@ -46,4 +46,5 @@ final function SaveData(FMyCustomChar R)
defaultproperties
{
}

@ -5,7 +5,7 @@ class ExtCharacterInfo extends Object
static final function Object SafeLoadObject(string S, Class ObjClass)
{
local Object O;
O = FindObject(S,ObjClass);
return O!=None ? O : DynamicLoadObject(S,ObjClass);
}
@ -46,7 +46,7 @@ static function InitCharacterMICs(KFCharacterInfo_Human C, KFPawn P, optional bo
{
P.CharacterMICs.AddItem(P.ThirdPersonAttachments[i].CreateAndSetMaterialInstanceConstant(0));
}
if (P.FirstPersonAttachments[i] != none)
{
P.CharacterMICs.AddItem(P.FirstPersonAttachments[i].CreateAndSetMaterialInstanceConstant(0));
@ -86,7 +86,7 @@ static final function SetCharacterMeshFromArch(KFCharacterInfo_Human C, KFPawn K
// skip dedicated for purely cosmetic stuff
if (KFP.WorldInfo.NetMode != NM_DedicatedServer)
{
// Must clear all attachments before trying to attach new ones,
// Must clear all attachments before trying to attach new ones,
// otherwise we might accidentally remove things we're not supposed to
for (AttachmentIdx=0; AttachmentIdx < `MAX_COSMETIC_ATTACHMENTS; AttachmentIdx++)
{
@ -136,7 +136,7 @@ static final function SetBodyMeshAndSkin(KFCharacterInfo_Human C,
{
// Assign a skin to the body mesh as a material override
CurrentBodyMeshIndex = (CurrentBodyMeshIndex < C.BodyVariants.length) ? CurrentBodyMeshIndex : 0;
if (KFPRI.StartLoadCosmeticContent(C, ECOSMETICTYPE_Body, CurrentBodyMeshIndex))
{
return;
@ -224,7 +224,7 @@ static final function SetHeadMeshAndSkin(KFCharacterInfo_Human C,
if (C.HeadVariants.length > 0)
{
CurrentHeadMeshIndex = (CurrentHeadMeshIndex < C.HeadVariants.length) ? CurrentHeadMeshIndex : 0;
if (KFPRI.StartLoadCosmeticContent(C, ECOSMETICTYPE_Head, CurrentHeadMeshIndex))
{
return;
@ -332,7 +332,7 @@ static final function SetAttachmentMeshAndSkin(KFCharacterInfo_Human C,
//DetachConflictingAttachments(CurrentAttachmentMeshIndex, KFP, KFPRI);
// Get a slot where this attachment could fit
AttachmentSlotIndex = GetAttachmentSlotIndex(C, CurrentAttachmentMeshIndex, KFP, KFPRI);
if (AttachmentSlotIndex == INDEX_NONE)
{
return;
@ -347,7 +347,7 @@ static final function SetAttachmentMeshAndSkin(KFCharacterInfo_Human C,
{
return;
}
// Cache values from character info
CharAttachmentMeshName = bIsFirstPerson ? C.Get1pMeshByIndex(CurrentAttachmentMeshIndex) : C.GetMeshByIndex(CurrentAttachmentMeshIndex);
CharAttachmentSocketName = bIsFirstPerson ? C.CosmeticVariants[CurrentAttachmentMeshIndex].AttachmentItem.SocketName1p : C.CosmeticVariants[CurrentAttachmentMeshIndex].AttachmentItem.SocketName;
@ -517,8 +517,8 @@ static final function SetAttachmentMesh(KFCharacterInfo_Human C, int CurrentAtta
}
/**
* Removes any attachments that exist in the same socket or have overriding cases
* Network: Local Player
* Removes any attachments that exist in the same socket or have overriding cases
* Network: Local Player
*/
static final function DetachConflictingAttachments(KFCharacterInfo_Human C, int NewAttachmentMeshIndex, KFPawn KFP, optional KFPlayerReplicationInfo KFPRI, optional out array<int> out_RemovedAttachments)
{
@ -546,7 +546,7 @@ static final function DetachConflictingAttachments(KFCharacterInfo_Human C, int
if (KFP.ThirdPersonAttachmentSocketNames[i] != '' &&
KFP.ThirdPersonAttachmentSocketNames[i] == NewAttachmentSocketName)
{
C.RemoveAttachmentMeshAndSkin(i, KFP, KFPRI);
C.RemoveAttachmentMeshAndSkin(i, KFP, KFPRI);
out_RemovedAttachments.AddItem(i);
continue;
}
@ -585,14 +585,14 @@ static final function SetFirstPersonArmsFromArch(KFCharacterInfo_Human C, KFPawn
EPRI = ExtPlayerReplicationInfo(KFPRI);
bCustom = (EPRI!=None ? EPRI.UsesCustomChar() : false);
// First person arms mesh and skin are based on body mesh & skin.
// First person arms mesh and skin are based on body mesh & skin.
// Index of 255 implies use index 0 (default).
C.SetArmsMeshAndSkin(
bCustom ? EPRI.CustomCharacter.BodyMeshIndex : KFPRI.RepCustomizationInfo.BodyMeshIndex,
bCustom ? EPRI.CustomCharacter.BodySkinIndex : KFPRI.RepCustomizationInfo.BodySkinIndex,
KFP,
KFPRI);
for (AttachmentIdx = 0; AttachmentIdx < `MAX_COSMETIC_ATTACHMENTS; AttachmentIdx++)
{
CosmeticMeshIdx = bCustom ? EPRI.CustomCharacter.AttachmentMeshIndices[AttachmentIdx] : KFPRI.RepCustomizationInfo.AttachmentMeshIndices[AttachmentIdx];
@ -623,10 +623,10 @@ static function int GetAttachmentSlotIndex(
`warn("GetAttachmentSlotIndex - NO KFPRI");
return INDEX_NONE;
}
EPRI = ExtPlayerReplicationInfo(KFPRI);
bCustom = (EPRI!=None ? EPRI.UsesCustomChar() : false);
// Return the next available attachment index or the index that matches this mesh
for (AttachmentIdx = 0; AttachmentIdx < `MAX_COSMETIC_ATTACHMENTS; AttachmentIdx++)
{
@ -647,4 +647,4 @@ static function bool IsAttachmentAvailable(KFCharacterInfo_Human C, const out At
}
return true;
}
}

@ -8,16 +8,16 @@ static final function name GetUnlockedEmote(int ItemId, ExtPlayerController PC)
local int i;
local name Anim;
local ExtPlayerReplicationInfo PRI;
i = default.Emotes.Find('Id', ItemId);
if (i > -1)
{
Anim = default.Emotes[i].AnimName;
PRI = ExtPlayerReplicationInfo(PC.PlayerReplicationInfo);
if (PRI == None)
return Anim;
else return Anim;
}
@ -28,7 +28,7 @@ static final function SaveEquippedEmote(int ItemId, ExtPlayerController PC)
{
if (PC == None)
return;
PC.SelectedEmoteIndex = ItemId;
PC.SaveConfig();
}
@ -52,7 +52,7 @@ static final function int GetEquippedEmoteId(ExtPlayerController PC)
{
if (PC == None)
return -1;
return PC.SelectedEmoteIndex;
}

@ -7,4 +7,5 @@ protected function SpecialCringeEffectsfor (Actor Victim, float VictimDist)
defaultproperties
{
}

@ -4,10 +4,10 @@ function InitMenu()
{
local byte i;
local KFGUI_Button B;
PageSwitcher = KFGUI_SwitchMenuBar(FindComponentID('Pager'));
Super(KFGUI_Page).InitMenu();
for (i=0; i<Pages.Length; ++i)
{
PageSwitcher.AddPage(Pages[i],B).InitMenu();
@ -23,9 +23,9 @@ function PreDraw()
{
local GameViewportClient Viewport;
local ExtMoviePlayer_Manager MovieManager;
Super.PreDraw();
Viewport = LocalPlayer(GetPlayer().Player).ViewportClient;
MovieManager = ExtMoviePlayer_Manager(KFPlayerController(GetPlayer()).MyGFxManager);
if (CaptureMouse())
@ -39,7 +39,7 @@ function PreDraw()
{
Viewport.bDisplayHardwareMouseCursor = false;
Viewport.ForceUpdateMouseCursor(true);
MovieManager.SetMovieCanReceiveInput(true);
}
}
@ -52,7 +52,7 @@ defaultproperties
XPosition=0.01
XSize=0.73
YSize=0.73
Pages.Empty
Pages.Add(Class'UIP_PerkSelectionLobby')
}

@ -14,7 +14,7 @@ function UpdateGrenades()
if (ExtPlayerController(MyKFPC)!=None)
{
PM = ExtPlayerController(MyKFPC).ActivePerkManager;
if (PM!=None && PM.CurrentPerk!=None && EPerkClass!=PM.CurrentPerk.Class)
{
SetString("backpackGrenadeType", "img://"$PM.CurrentPerk.GrenadeWeaponDef.Static.GetImagePath());
@ -31,4 +31,5 @@ function UpdateGrenades()
defaultproperties
{
}

@ -22,16 +22,16 @@ function UpdatePerk()
CurrentPerk = ExPC.ActivePerkManager.CurrentPerk;
CurrentPerkLevel = CurrentPerk.CurrentLevel;
CurrentPerkEXP = CurrentPerk.CurrentEXP;
// Update the perk class.
if ((ExLastPerkClass != CurrentPerk.Class) || (LastPerkLevel != CurrentPerkLevel))
{
CurPerkPath = CurrentPerk.GetPerkIconPath(CurrentPerkLevel);
PerkIconObject = CreateObject("Object");
PerkIconObject.SetString("perkIcon", CurPerkPath);
SetObject("playerPerkIcon", PerkIconObject);
SetInt("playerPerkXPPercent", CurrentPerk.GetProgressPercent() * 100.f);
if (LastPerkLevel != CurrentPerkLevel && ExLastPerkClass==CurrentPerk.Class)
{

@ -19,10 +19,10 @@ function UpdatePlayerInfo(optional bool bForceUpdate)
{
local GFxObject TempObject;
local ExtPlayerReplicationInfo E;
if (SpectatedKFPRI == None)
return;
E = ExtPlayerReplicationInfo(SpectatedKFPRI);
if (LastPerkLevel != E.ECurrentPerkLevel || LastPerkLevel != E.ECurrentPerkLevel || bForceUpdate)
@ -44,4 +44,5 @@ function UpdatePlayerInfo(optional bool bForceUpdate)
defaultproperties
{
}

@ -57,7 +57,7 @@ simulated function SetWeaponGroupList(out array<KFWeapon> WeaponList, byte Group
TempObj.SetString("weaponName", WeaponGroup[i].static.GetItemLocalization("ItemName"));
TempObj.SetString("texturePath", "img://"$WeaponGroup[i].static.GetImagePath());
}
else
else
{
TempObj.SetString("weaponName", WeaponList[i].ItemName);
TempObj.SetString("texturePath", "img://"$PathName(WeaponList[i].WeaponSelectTexture));
@ -88,4 +88,5 @@ simulated function SetWeaponGroupList(out array<KFWeapon> WeaponList, byte Group
defaultproperties
{
}

@ -79,10 +79,10 @@ simulated function bool Died(Controller Killer, class<DamageType> damageType, ve
if (Controller != None)
WorldInfo.Game.Killed(Killer, Controller, self, damageType);
else WorldInfo.Game.Killed(Killer, Controller(Owner), self, damageType);
if (InvManager != None)
InvManager.OwnerDied();
Health = 1;
if (!bFeigningDeath)
PlayFeignDeath(true,,true);
@ -124,10 +124,10 @@ event bool HealDamage(int Amount, Controller Healer, class<DamageType> DamageTyp
InstigatorPC = ExtPlayerController(Healer);
InstigatorPerk = InstigatorPC.GetPerk();
if (InstigatorPerk != None && bCanRepairArmor)
bRepairedArmor = InstigatorPC.GetPerk().RepairArmor(self);
EPRI = ExtPlayerReplicationInfo(InstigatorPC.PlayerReplicationInfo);
if (EPRI != none)
{
@ -432,7 +432,7 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
}
WeaponAttachmentTemplate = None;
WeaponAttachmentChanged();
bPlayingFeignDeathRecovery = false;
ClearTimer('OnWakeUpFinished');
if (!bTransformMode)
@ -452,21 +452,21 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
// Move into post so that we are hitting physics from last frame, rather than animated from this
SetTickGroup(TG_PostAsyncWork);
// Turn collision on for skelmeshcomp and off for cylinder
CylinderComponent.SetActorCollision(false, false);
Mesh.SetActorCollision(true, true);
Mesh.SetTraceBlocking(true, true);
Mesh.SetHasPhysicsAssetInstance(false);
if (!InitRagdoll()) // Ragdoll error!
{
if (PlayerController(Controller)!=None)
PlayerController(Controller).ClientMessage("Error: InitRagdoll() failed!");
return;
}
// Ensure we are always updating kinematic
Mesh.MinDistFactorForKinematicUpdate = 0.0;
@ -516,7 +516,7 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
return;
}
}
PreRagdollCollisionComponent = None;
// Calculate how far we just moved the actor up.
@ -530,7 +530,7 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
UnfeignFailedCount = 0;
bPlayingFeignDeathRecovery = true;
// Reset collision.
Mesh.SetActorCollision(true, false);
Mesh.SetTraceBlocking(true, false);
@ -545,7 +545,7 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
// physics weight interpolated to 0 in C++, then StartFeignDeathRecoveryAnim() is called
Mesh.PhysicsWeight = 1.0;
// force rotation to match the body's direction so the blend to the getup animation looks more natural
NewRotation = Rotation;
NewRotation.Yaw = rotator(Mesh.GetBoneAxis(HeadBoneName, AXIS_X)).Yaw;
@ -558,13 +558,13 @@ simulated function PlayFeignDeath(bool bEnable, optional bool bForce, optional b
FeignRecoverAnim = 'Getup_B_V1';
}
else FeignRecoverAnim = 'Getup_F_V1';
// Init wakeup anim.
if (Mesh.AnimSets.Find(WakeUpAnimSet)==-1)
Mesh.AnimSets.AddItem(WakeUpAnimSet);
BodyStanceNodes[EAS_FullBody].bNoNotifies = true;
BodyStanceNodes[EAS_FullBody].PlayCustomAnim(FeignRecoverAnim,0.025f,,,,true);
SetRotation(NewRotation);
}
}
@ -573,7 +573,7 @@ final function vector PickNearestNode()
{
local NavigationPoint N,Best;
local float Dist,BestDist;
foreach WorldInfo.AllNavigationPoints(class'NavigationPoint',N)
{
Dist = VSizeSq(N.Location-Location);
@ -674,7 +674,7 @@ simulated function PlayRagdollDeath(class<DamageType> DamageType, vector HitLoc)
bFPLegsAttached = false;
DetachComponent(FPBodyMesh);
}
// Ensure we are always updating kinematic
Mesh.MinDistFactorForKinematicUpdate = 0.0;
@ -935,7 +935,7 @@ ignores FaceRotation, SetMovementPhysics;
{
bNoWeaponFiring = default.bNoWeaponFiring;
bCanPickupInventory = default.bCanPickupInventory;
UTWeap = KFWeapon(Weapon);
if (UTWeap != None)
{
@ -952,7 +952,7 @@ ignores FaceRotation, SetMovementPhysics;
else if (Controller!=None)
Controller.ReplicatedEvent('EndRagdollMove');
}
Global.WeaponAttachmentChanged();
}
}
@ -1027,11 +1027,11 @@ simulated final function InitFPLegs()
local int i;
bFPLegsInit = true;
FPBodyMesh.AnimSets = CharacterArch.AnimSets;
FPBodyMesh.SetAnimTreeTemplate(CharacterArch.AnimTreeTemplate);
FPBodyMesh.SetSkeletalMesh(Mesh.SkeletalMesh);
FPBodyMesh.SetActorCollision(false, false);
FPBodyMesh.SetNotifyRigidBodyCollision(false);
FPBodyMesh.SetTraceBlocking(false, false);
@ -1067,7 +1067,7 @@ simulated final function UpdateFPLegs()
{
bFPLegsAttached = true;
AttachComponent(FPBodyMesh);
if (!bFPLegsInit && CharacterArch!=None)
InitFPLegs();
}
@ -1106,12 +1106,12 @@ simulated final function SetBackpackWeapon(class<KFWeapon> WC)
{
AttachedBackItem.SetMaterial(i, WC.Default.AttachmentArchetype.SkelMesh.Materials[i]);
}
Mesh.DetachComponent(AttachedBackItem);
MyCharacter = KFPlayerReplicationInfo(PlayerReplicationInfo).CharacterArchetypes[KFPlayerReplicationInfo(PlayerReplicationInfo).RepCustomizationInfo.CharacterIndex];
WM = WC.Default.AttachmentArchetype.SkelMesh.Name;
if (ClassIsChildOf(WC, class'KFWeap_Edged_Knife'))
{
MyPos = vect(0,0,10);
@ -1129,10 +1129,10 @@ simulated final function SetBackpackWeapon(class<KFWeapon> WC)
{
MyPos = vect(-5,15,0);
MyRot = rot(0,0,0);
if (class<KFWeap_Edged_Katana>(WC) != none || class<KFWeap_Edged_Zweihander>(WC) != none)
MyPos.Z = -20;
B = 'Spine';
}
else
@ -1142,7 +1142,7 @@ simulated final function SetBackpackWeapon(class<KFWeapon> WC)
if (MyCharacter == KFCharacterInfo_Human'CHR_Playable_ARCH.chr_DJSkully_archetype')
MyRot.Roll = 8192;
switch (WM)
{
case 'Wep_3rdP_MB500_Rig':
@ -1159,7 +1159,7 @@ simulated final function SetBackpackWeapon(class<KFWeapon> WC)
MyPos.X = 10;
break;
}
B = 'Spine2';
}
@ -1211,14 +1211,14 @@ simulated function PlayWeaponswitch (Weapon OldWeapon, Weapon NewWeapon)
simulated function UpdateHealingSpeedBoostMod(ExtPlayerController Healer)
{
local Ext_PerkFieldMedic MedPerk;
MedPerk = GetMedicPerk(Healer);
if (MedPerk == None)
return;
HealingSpeedBoostMod = Min(HealingSpeedBoostMod + MedPerk.GetHealingSpeedBoost(), MedPerk.GetMaxHealingSpeedBoost());
SetTimer(MedPerk.GetHealingSpeedBoostDuration(),, nameOf(ResetHealingSpeedBoost));
UpdateGroundSpeed();
}
@ -1239,11 +1239,11 @@ simulated function ResetHealingSpeedBoost()
simulated function UpdateHealingDamageBoostMod(ExtPlayerController Healer)
{
local Ext_PerkFieldMedic MedPerk;
MedPerk = GetMedicPerk(Healer);
if (MedPerk == None)
return;
HealingDamageBoostMod = Min(HealingDamageBoostMod + MedPerk.GetHealingDamageBoost(), MedPerk.GetMaxHealingDamageBoost());
SetTimer(MedPerk.GetHealingDamageBoostDuration(),, nameOf(ResetHealingDamageBoost));
}
@ -1263,11 +1263,11 @@ simulated function ResetHealingDamageBoost()
simulated function UpdateHealingShieldMod(ExtPlayerController Healer)
{
local Ext_PerkFieldMedic MedPerk;
MedPerk = GetMedicPerk(Healer);
if (MedPerk == None)
return;
HealingShieldMod = Min(HealingShieldMod + MedPerk.GetHealingShield(), MedPerk.GetMaxHealingShield());
SetTimer(MedPerk.GetHealingShieldDuration(),, nameOf(ResetHealingShield));
}
@ -1287,9 +1287,9 @@ simulated function ResetHealingShield()
function SacrificeExplode()
{
local Ext_PerkDemolition DemoPerk;
Super.SacrificeExplode();
DemoPerk = Ext_PerkDemolition(ExtPlayerController(Controller).ActivePerkManager.CurrentPerk);
if (DemoPerk != none)
DemoPerk.bUsedSacrifice = true;
@ -1298,23 +1298,23 @@ function SacrificeExplode()
simulated function Ext_PerkFieldMedic GetMedicPerk(ExtPlayerController Healer)
{
local Ext_PerkFieldMedic MedPerk;
MedPerk = Ext_PerkFieldMedic(ExtPlayerController(Controller).ActivePerkManager.CurrentPerk);
if (MedPerk != None)
if (MedPerk != None)
return MedPerk;
return None;
}
function ThrowActiveWeapon(optional bool bDestroyWeap)
{
local KFWeapon TempWeapon;
if( Role < ROLE_Authority )
{
return;
}
if (Health <= 0 && bThrowAllWeaponsOnDeath)
{
if (InvManager != none)
@ -1337,11 +1337,11 @@ defaultproperties
bCanBecomeRagdoll=true
InventoryManagerClass=class'ExtInventoryManager'
WakeUpAnimSet=AnimSet'ZED_Clot_Anim.Alpha_Clot_Master'
Begin Object Name=SpecialMoveHandler_0
SpecialMoveClasses(SM_Emote)=class'ServerExt.ExtSM_Player_Emote'
End Object
DefaultInventory.Empty()
DefaultInventory.Add(class'ExtWeap_Pistol_9mm')
// DefaultInventory.Add(class'KFWeap_Pistol_9mm')

@ -25,10 +25,10 @@ simulated function Inventory CreateInventory(class<Inventory> NewInventoryItemCl
{
local KFWeapon Wep;
local Inventory SupClass;
SupClass = Super.CreateInventory(NewInventoryItemClass, bDoNotActivate);
Wep = KFWeapon(SupClass);
if (Wep != none)
{
if (KFWeap_Pistol_Dual9mm(Wep) != None && ExtWeap_Pistol_Dual9mm(Wep) == None)
@ -36,17 +36,17 @@ simulated function Inventory CreateInventory(class<Inventory> NewInventoryItemCl
Wep.Destroy();
return Super.CreateInventory(class'ExtWeap_Pistol_Dual9mm', bDoNotActivate);
}
return Wep;
}
return SupClass;
}
simulated function CheckForExcessRemoval(KFWeapon NewWeap)
{
local Inventory RemoveInv, Inv;
if (KFWeap_Pistol_Dual9mm(NewWeap) != None)
{
for (Inv = InventoryChain; Inv != None; Inv = Inv.Inventory)
@ -59,6 +59,6 @@ simulated function CheckForExcessRemoval(KFWeapon NewWeap)
}
}
}
Super.CheckForExcessRemoval(NewWeap);
}

@ -23,7 +23,7 @@ function InitializeMenu(KFGFxMoviePlayer_Manager InManager)
function InitCharacterMenu()
{
ExtPRI = ExtPlayerReplicationInfo(GetPC().PlayerReplicationInfo);
if (ExtPRI!=None && ExtPRI.bClientInitChars)
CharListRecieved();
else if (ExtPRI==None)
@ -43,7 +43,7 @@ function InitCharacterMenu()
}
event bool WidgetInitialized(name WidgetName, name WidgetPath, GFxObject Widget)
{
{
switch (WidgetName)
{
case 'perkSelectionContainer':
@ -65,9 +65,9 @@ function OnOpen()
PC = GetPC();
if (PC == none)
return;
CheckForCustomizationPawn(PC);
if (PC.PlayerReplicationInfo.bReadyToPlay && PC.WorldInfo.GRI.bMatchHasBegun)
{
// Players cannot change characters if they are in a game
@ -87,7 +87,7 @@ function CheckForCustomizationPawn(PlayerController PC)
{
KFPC.SpawnMidGameCustomizationPawn();
}
}
}
}
function LocalizeText()
@ -114,7 +114,7 @@ function LocalizeText()
simulated function CharListRecieved()
{
UpdateCharacterList();
UpdateCharacterList();
UpdateGear();
}
@ -145,7 +145,7 @@ function UpdateEmoteList()
//`log(MyKFPRI.EmoteList[i] @ "is not purchased.");
}
}
SetObject("emoteArray", DataProvider);
}
@ -183,7 +183,7 @@ function UpdateCharacterList()
ItemIndex++;
}
}
SetObject("characterArray", DataProvider);
}
@ -202,7 +202,7 @@ function UpdateGear()
UpdateMeshList(class'KFGFxMenu_Gear'.Default.HeadMeshKey, class'KFGFxMenu_Gear'.Default.HeadSkinKey, CurrentCharInfo.HeadVariants, "headsArray");
// Set the list of usable attachments for this character
UpdateAttachmentsList(CurrentCharInfo.CosmeticVariants);
UpdateEmoteList();
SetCurrentCharacterButtons();
@ -216,7 +216,7 @@ final function string GetMenuName(Object Obj)
final function string GetMenuNameStr(string ObjName)
{
local int i;
i = InStr(ObjName,".",true);
if (i!=-1)
ObjName = Mid(ObjName,i+1);
@ -230,20 +230,20 @@ function UpdateMeshList(string OutfitKey, string SkinKey, array<OutfitVariants>
local string TexturePath, OutfitName;
local OutfitVariants Outfit;
local SkinVariant FirstSkin;
ItemIndex = 0;
DataProvider = CreateArray();
for (i = 0; i < Outfits.Length; i++)
{
Outfit = Outfits[i];
OutfitName = Localize(CharInfoPath, OutfitKey$i, class'KFGFxMenu_Gear'.Default.KFCharacterInfoString);
if (bIsCustomChar)
OutfitName = GetMenuNameStr(Outfit.MeshName);
if (InStr(OutfitName, "?INT?") != -1)
continue;
SlotObject = CreateObject("Object");
SlotObject.SetInt("ItemIndex", i);
SlotObject.SetString("label", OutfitName);
@ -251,14 +251,14 @@ function UpdateMeshList(string OutfitKey, string SkinKey, array<OutfitVariants>
FirstSkin = UpdateOutfitVariants(OutfitKey, SkinKey, Outfit.SkinVariations, i, SlotObject);
if (string(FirstSkin.UITexture) == "Bad")
continue;
TexturePath = "img://"$PathName(FirstSkin.UITexture);
SlotObject.SetString("source", TexturePath);
DataProvider.SetElementObject(ItemIndex, SlotObject);
ItemIndex++;
}
SetObject(DataArrayString, DataProvider);
}
@ -274,7 +274,7 @@ function SkinVariant UpdateOutfitVariants(string OutfitKey, string KeyName, out
ItemIndex = 0;
DataProvider = CreateArray();
SectionPath = CharInfoPath$"."$OutfitKey$OutfitIndex;
SectionPath = CharInfoPath$"."$OutfitKey$OutfitIndex;
for (i = 0; i < SkinVariations.length; i++)
{
@ -308,7 +308,7 @@ function UpdateAttachmentsList(array<AttachmentVariants> Attachments)
local Pawn MyPawn;
local SkinVariant FirstSkin;
local string AttachmentName;
ItemIndex = 0;
DataProvider = CreateArray();
MyPawn = GetPC().Pawn;
@ -335,12 +335,12 @@ function UpdateAttachmentsList(array<AttachmentVariants> Attachments)
SlotObject.SetBool("enabled", true);
TexturePath = "img://"$PathName(FirstSkin.UITexture);
SlotObject.SetString("source", TexturePath);
DataProvider.SetElementObject(ItemIndex, SlotObject);
ItemIndex++;
}
}
SetObject("attachmentsArray", DataProvider);
}
@ -389,7 +389,7 @@ function SetCurrentCharacterButtons()
bCustom = ExtPRI.UsesCustomChar();
DataObject = CreateObject("Object");
CharacterIndex = ExtPRI.RepCustomizationInfo.CharacterIndex;
HeadMeshIndex = ExtPRI.RepCustomizationInfo.HeadMeshIndex;
HeadSkinIndex = ExtPRI.RepCustomizationInfo.HeadSkinIndex;
@ -416,7 +416,7 @@ function SetCurrentCharacterButtons()
SetGearButtons(BodyMeshIndex, BodySkinIndex, class'KFGFxMenu_Gear'.Default.BodyMeshKey, class'KFGFxMenu_Gear'.Default.BodySkinKey, class'KFGFxMenu_Gear'.Default.BodyFunctionKey);
//set attachments
SetAttachmentButtons(class'KFGFxMenu_Gear'.Default.AttachmentKey, class'KFGFxMenu_Gear'.Default.AttachmentFunctionKey);
SetEmoteButton();
}
@ -438,7 +438,7 @@ function SetEmoteButton()
DataObject.SetString("selectedEmote", Localize(EmoteList[EmoteIndex].ItemName, "EmoteName", class'KFGFxMenu_Gear'.Default.KFCharacterInfoString));
DataObject.SetInt("selectedEmoteIndex", 0);
}
SetObject("selectedEmote", DataObject);
}
@ -472,7 +472,7 @@ function SetGearButtons(int MeshIndex, int SkinIndex, string MeshKey, string Ski
SkinName = GetMenuName(CurrentCharInfo.BodyVariants[MeshIndex].SkinVariations[SkinIndex].Skin);
MeshName = GetMenuNameStr(CurrentCharInfo.BodyVariants[MeshIndex].MeshName);
}
DataObject.SetString(sectionFunctionName, MeshName @"\n" @SkinName);
}
else
@ -497,16 +497,16 @@ function SetAttachmentButtons(string AttachmentMeshKey, string sectionFunctionNa
local GFxObject DataObject;
local int i, AttachmentIndex;
local bool bCustom;
if (bWaitingCharList)
return;
bCustom = ExtPRI.UsesCustomChar();
DataObject = CreateObject("Object");
for (i = 0; i < `MAX_COSMETIC_ATTACHMENTS; i++)
{
AttachmentIndex = bCustom ? ExtPRI.CustomCharacter.AttachmentMeshIndices[i] : ExtPRI.RepCustomizationInfo.AttachmentMeshIndices[i];
AttachmentIndex = bCustom ? ExtPRI.CustomCharacter.AttachmentMeshIndices[i] : ExtPRI.RepCustomizationInfo.AttachmentMeshIndices[i];
if (AttachmentIndex == `CLEARED_ATTACHMENT_INDEX)
{
DataObject.SetString("selectedAttachment_"$i, "----");
@ -515,7 +515,7 @@ function SetAttachmentButtons(string AttachmentMeshKey, string sectionFunctionNa
{
DataObject.SetString("selectedAttachment_"$i, bIsCustomChar ? GetMenuNameStr(CurrentCharInfo.CosmeticVariants[AttachmentIndex].MeshName) : Localize(string(CurrentCharInfo.CosmeticVariants[AttachmentIndex].AttachmentItem.Name), AttachmentMeshKey, class'KFGFxMenu_Gear'.default.KFCharacterInfoString));
}
}
}
SetObject(sectionFunctionName, DataObject);
}
@ -578,7 +578,7 @@ function Callback_Emote(int Index)
function Callback_RotateCamera(int RotationDirection)
{
local KFPlayerCamera PlayerCamera;
PlayerCamera = KFPlayerCamera(GetPC().PlayerCamera);
if (PlayerCamera != none)
PlayerCamera.CustomizationCam.RotatedCamera(RotationDirection);
@ -632,9 +632,9 @@ function Callback_Body(int MeshIndex, int SkinIndex)
{
if (!ExtPRI.UsesCustomChar()) // Force client to setup custom character now for this server.
ExtPRI.ChangeCharacter(ExtPRI.RepCustomizationInfo.CharacterIndex,true);
ExtPRI.UpdateCustomization(CO_Body, MeshIndex, SkinIndex);
// When assigning a new body mesh we may need to remove certain attachments
// refresh filters, and update the equipped accessories list
UpdateAttachmentsList(CurrentCharInfo.CosmeticVariants);
@ -698,7 +698,7 @@ function Callback_Attachment(int MeshIndex, int SkinIndex)
{
return;
}
ExtPRI.UpdateCustomization(CO_Attachment, MeshIndex, SkinIndex, SlotIndex);
}
SetAttachmentButtons(class'KFGFxMenu_Gear'.Default.AttachmentKey, class'KFGFxMenu_Gear'.Default.AttachmentFunctionKey);

@ -62,4 +62,5 @@ function Callback_Equip(int ItemDefinition)
defaultproperties
{
}

@ -19,7 +19,7 @@ function OnOpen()
if (ExtPrevPerk==None)
ExtPrevPerk = ExtKFPC.ActivePerkManager.CurrentPerk;
ExUpdateContainers(ExtPrevPerk);
ExUpdateContainers(ExtPrevPerk);
SetBool("locked", true);
}
@ -65,7 +65,7 @@ function Callback_PerkSelected(byte NewPerkIndex, bool bClickedIndex)
{
ExtPrevPerk = ExtKFPC.ActivePerkManager.UserPerks[NewPerkIndex];
ExUpdateContainers(ExtPrevPerk);
ExtKFPC.PendingPerkClass = ExtPrevPerk.Class;
ExtKFPC.SwitchToPerk(ExtPrevPerk.Class);
}

@ -34,7 +34,7 @@ function Callback_PerkChanged(int PerkIndex)
{
ExtKFPC.PendingPerkClass = ExtKFPC.ActivePerkManager.UserPerks[PerkIndex].Class;
ExtKFPC.SwitchToPerk(ExtKFPC.PendingPerkClass);
if (PlayerInventoryContainer != none)
{
PlayerInventoryContainer.UpdateLock();

@ -13,9 +13,9 @@ final function ShowKillMessageX(PlayerReplicationInfo PRI1, PlayerReplicationInf
{
local GFxObject DataObject;
local bool bHumanDeath;
local string KilledName, KillerName, KilledIconpath, KillerIconPath;
local string KilledName, KillerName, KilledIconpath, KillerIconPath;
local string KillerTextColor, KilledTextColor;
if (KFPC == none)
return;
@ -47,14 +47,14 @@ final function ShowKillMessageX(PlayerReplicationInfo PRI1, PlayerReplicationInf
if (ExtPlayerReplicationInfo(PRI1)!=None && ExtPlayerReplicationInfo(PRI1).ECurrentPerk!=None)
KillerIconpath = ExtPlayerReplicationInfo(PRI1).ECurrentPerk.static.GetPerkIconPath(0);
}
KillerName = PRI1.PlayerName;
KillerName = PRI1.PlayerName;
}
if (PRI2 != none)
{
if (PRI2.GetTeamNum() == class'KFTeamInfo_Human'.default.TeamIndex)
{
bHumanDeath = true;
bHumanDeath = true;
KilledTextColor = HumanTeamTextColor;
}
else

@ -73,14 +73,14 @@ function LaunchMenus(optional bool bForceSkipLobby)
function OpenMenu(byte NewMenuIndex, optional bool bShowWidgets = true)
{
local KF2GUIController GUIController;
GUIController = class'KF2GUIController'.Static.GetGUIController(GetPC());
Super.OpenMenu(NewMenuIndex, bShowWidgets);
if (bAfterLobby)
return;
if (NewMenuIndex == UI_Perks)
{
PerksPage = GUIController.OpenMenu(class'ExtGUI_PerkSelectionPage');
@ -93,20 +93,20 @@ function OpenMenu(byte NewMenuIndex, optional bool bShowWidgets = true)
function CloseMenus(optional bool bForceClose=false)
{
local KF2GUIController GUIController;
if (PerksPage != None)
{
GUIController = class'KF2GUIController'.Static.GetGUIController(GetPC());
GUIController.CloseMenu(class'ExtGUI_PerkSelectionPage');
}
Super.CloseMenus(bForceClose);
}
function OnMenuOpen(name WidgetPath, KFGFxObject_Menu Widget)
{
Super.OnMenuOpen(WidgetPath, Widget);
if (!bAfterLobby && Widget == PerksMenu)
PerksMenu.ActionScriptVoid("closeContainer");
}
@ -114,10 +114,10 @@ function OnMenuOpen(name WidgetPath, KFGFxObject_Menu Widget)
defaultproperties
{
InGamePartyWidgetClass=class'ExtWidget_PartyInGame'
WidgetPaths.Remove("../UI_Widgets/PartyWidget_SWF.swf")
WidgetPaths.Add("../UI_Widgets/VersusLobbyWidget_SWF.swf")
WidgetBindings.Remove((WidgetName="PerksMenu",WidgetClass=class'KFGFxMenu_Perks'))
WidgetBindings.Add((WidgetName="PerksMenu",WidgetClass=class'ExtMenu_Perks'))
WidgetBindings.Remove((WidgetName="gearMenu",WidgetClass=class'KFGFxMenu_Gear'))

@ -54,7 +54,7 @@ simulated function PlayEmoteAnimation(optional bool bNewCharacter)
local name AnimName;
local float BlendInTime;
AnimName = class'ExtEmoteList'.static.GetUnlockedEmote(class'ExtEmoteList'.static.GetEquippedEmoteId(ExtPlayerController(Controller)), ExtPlayerController(Controller));
AnimName = class'ExtEmoteList'.static.GetUnlockedEmote(class'ExtEmoteList'.static.GetEquippedEmoteId(ExtPlayerController(Controller)), ExtPlayerController(Controller));
BlendInTime = (bNewCharacter) ? 0.f : 0.4;
@ -88,17 +88,16 @@ function AttachWeaponByItemDefinition(int ItemDefinition)
return;
}
//load in and add object .
//load in and add object .
WeaponPreview = KFWeaponAttachment (DynamicLoadObject(WeaponDef.default.AttachmentArchtypePath, class'KFWeaponAttachment'));
//attatch it to player
WeaponAttachmentTemplate = WeaponPreview;
WeaponAttachmentChanged();
WeaponAttachmentChanged();
//setweapon skin
WeaponAttachment.SetWeaponSkin(ItemDefinition);
}
defaultproperties

@ -7,4 +7,5 @@ static simulated event bool IsABoss()
defaultproperties
{
}

@ -62,7 +62,7 @@ simulated reliable client function ClientSetGrenadeCap(byte NewCap)
function bool ApplyPerkClass(class<Ext_PerkBase> P)
{
local int i;
for (i=0; i<UserPerks.Length; ++i)
if (UserPerks[i].Class==P)
{
@ -75,7 +75,7 @@ function bool ApplyPerkClass(class<Ext_PerkBase> P)
function bool ApplyPerkName(string S)
{
local int i;
for (i=0; i<UserPerks.Length; ++i)
if (string(UserPerks[i].Class.Name)~=S)
{
@ -91,39 +91,39 @@ function ApplyPerk(Ext_PerkBase P)
local KFInventoryManager InvMan;
local Ext_T_ZEDHelper H;
local int i;
if (P==None)
return;
if (PlayerOwner.Pawn != None)
{
InvMan = KFInventoryManager(PlayerOwner.Pawn.InvManager);
if (InvMan != None)
InvMan.MaxCarryBlocks = InvMan.Default.MaxCarryBlocks;
foreach PlayerOwner.Pawn.ChildActors(class'Ext_T_ZEDHelper',H)
{
H.Destroy();
}
HP = KFPawn_Human(PlayerOwner.Pawn);
if (HP != None)
HP.DefaultInventory = HP.Default.DefaultInventory;
}
if (CurrentPerk != None)
{
CurrentPerk.DeactivateTraits();
for (i=0; i<CurrentPerk.PerkTraits.Length; ++i)
{
CurrentPerk.PerkTraits[i].TraitType.Static.CancelEffectOn(KFPawn_Human(PlayerOwner.Pawn),CurrentPerk,CurrentPerk.PerkTraits[i].CurrentLevel,CurrentPerk.PerkTraits[i].Data);
}
}
bStatsDirty = true;
CurrentPerk = P;
if (PRIOwner!=None)
{
PRIOwner.ECurrentPerk = P.Class;
@ -131,11 +131,11 @@ function ApplyPerk(Ext_PerkBase P)
PRIOwner.CurrentPerkClass = P.BasePerk;
P.UpdatePRILevel();
}
if (CurrentPerk!=None)
{
CurrentPerk.ActivateTraits();
if (PlayerOwner.Pawn != None)
{
HP = KFPawn_Human(PlayerOwner.Pawn);
@ -143,11 +143,11 @@ function ApplyPerk(Ext_PerkBase P)
{
HP.HealthMax = HP.default.Health;
HP.MaxArmor = HP.default.MaxArmor;
ModifyHealth(HP.HealthMax);
ModifyArmor(HP.MaxArmor);
CurrentPerk.UpdateAmmoStatus(HP.InvManager);
if (HP.Health > HP.HealthMax) HP.Health = HP.HealthMax;
if (HP.Armor > HP.MaxArmor) HP.Armor = HP.MaxArmor;
}
@ -158,7 +158,7 @@ function ApplyPerk(Ext_PerkBase P)
simulated final function Ext_PerkBase FindPerk(class<Ext_PerkBase> P)
{
local int i;
for (i=0; i<UserPerks.Length; ++i)
if (UserPerks[i].Class==P)
return UserPerks[i];
@ -175,7 +175,7 @@ simulated function PostBeginPlay()
simulated function InitPerks()
{
local Ext_PerkBase P;
if (WorldInfo.NetMode==NM_Client)
{
foreach DynamicActors(class'Ext_PerkBase',P)
@ -209,7 +209,7 @@ function CheckPlayTime()
function ServerInitPerks()
{
local int i;
for (i=0; i<UserPerks.Length; ++i)
UserPerks[i].SetInitialLevel();
bServerReady = true;
@ -235,7 +235,7 @@ simulated function UnregisterPerk(Ext_PerkBase P)
function Destroyed()
{
local int i;
for (i=(UserPerks.Length-1); i>=0; --i)
{
UserPerks[i].PerkManager = None;
@ -310,7 +310,7 @@ function SaveData(ExtSaveDataBase Data)
Data.SaveInt(TotalEXP,3);
Data.SaveInt(TotalKills,3);
Data.SaveInt(TotalPlayTime,3);
// Write character.
if (PRIOwner!=None)
PRIOwner.SaveCustomCharacter(Data);
@ -326,10 +326,10 @@ function SaveData(ExtSaveDataBase Data)
for (i=0; i<UserPerks.Length; ++i)
if (UserPerks[i].HasAnyProgress())
++o;
// Then write count we have.
Data.SaveInt(o);
// Then perk stats.
for (i=0; i<UserPerks.Length; ++i)
{
@ -508,7 +508,7 @@ simulated function ModifyRecoil(out float CurrentRecoilModifier, KFWeapon KFW)
}
simulated function float GetCameraViewShakeModifier(KFWeapon KFW)
{
{
return (CurrentPerk!=None ? CurrentPerk.GetCameraViewShakeModifier(KFW) : 1.f);
}
@ -855,7 +855,7 @@ simulated function bool GetHealingShieldActive()
}
simulated function float GetSelfHealingSurgePct()
{
{
return (Ext_PerkFieldMedic(CurrentPerk)!=None ? Ext_PerkFieldMedic(CurrentPerk).GetSelfHealingSurgePct() : 0.f);
}
@ -889,7 +889,7 @@ simulated function float GetPenetrationModifier(byte Level, class<KFDamageType>
{
return (Ext_PerkSupport(CurrentPerk)!=None ? Ext_PerkSupport(CurrentPerk).GetPenetrationModifier(Level, DamageType, bForce) : 0.f);
}
simulated function float GetTightChokeModifier()
{
return (CurrentPerk!=None ? CurrentPerk.GetTightChokeModifier() : 1.f);
@ -921,7 +921,7 @@ defaultproperties
{
bTickIsDisabled=false
NetPriority=3.5
// SWAT bumping
BumpCooldown = 0.1f
BumpMomentum=1.f

@ -1,7 +1,7 @@
class ExtPerksContainer_Header extends KFGFxPerksContainer_Header;
final function ExUpdatePerkHeader(Ext_PerkBase PerkClass)
{
{
local GFxObject PerkDataProvider;
PerkDataProvider = CreateObject("Object");

@ -8,7 +8,7 @@ function UpdatePerkSelection(byte SelectedPerkIndex)
local GFxObject DataProvider;
local GFxObject TempObj;
local ExtPlayerController KFPC;
local Ext_PerkBase PerkClass;
local Ext_PerkBase PerkClass;
KFPC = ExtPlayerController(GetPC());
@ -21,12 +21,12 @@ function UpdatePerkSelection(byte SelectedPerkIndex)
PerkClass = KFPC.ActivePerkManager.UserPerks[i];
TempObj = CreateObject("Object");
TempObj.SetInt("PerkLevel", PerkClass.CurrentLevel);
TempObj.SetString("Title", PerkClass.PerkName);
TempObj.SetString("Title", PerkClass.PerkName);
TempObj.SetString("iconSource", PerkClass.GetPerkIconPath(PerkClass.CurrentLevel));
TempObj.SetBool("bTierUnlocked", true);
DataProvider.SetElementObject(i, TempObj);
}
}
SetObject("perkData", DataProvider);
SetInt("SelectedIndex", SelectedPerkIndex);

@ -108,7 +108,7 @@ function CheckPerk()
reliable client function AddAdminCmd(string S)
{
local int i,j;
j = InStr(S,":");
i = AdminCommands.Length;
AdminCommands.Length = i+1;
@ -344,7 +344,7 @@ reliable client event TeamMessage(PlayerReplicationInfo PRI, coerce string S, na
S = PRI.GetHumanReadableName()$": "$S;
LocalPlayer(Player).ViewportClient.ViewportConsole.OutputText("("$Type$") "$S);
}
if (MyGFxManager != none && MyGFxManager.PartyWidget != none)
{
if (!MyGFxManager.PartyWidget.ReceiveMessage(S)) //Fails if message is for updating perks in a steam lobby
@ -392,16 +392,16 @@ final function PopScreenMsg(string S)
local int i;
local string L;
local float T;
T = 4.f;
// Get lower part.
i = InStr(S,"|");
if (i!=-1)
{
L = Mid(S,i+1);
S = Left(S,i);
// Get time.
i = InStr(L,"|");
if (i!=-1)
@ -420,7 +420,7 @@ reliable client function ClientKillMessage(class<DamageType> DamType, PlayerRepl
if (Player==None || Victim==None)
return;
if (bUseKF2DeathMessages && MyGFxHUD!=None)
{
if (Victim==KillerPRI || (KillerPRI==None && KillerPawn==None)) // Suicide
@ -559,7 +559,7 @@ simulated final function ToggleFPBody(bool bEnable)
{
bShowFPLegs = bEnable;
Class'ExtPlayerController'.Default.bShowFPLegs = bEnable;
if (ExtHumanPawn(Pawn)!=None)
ExtHumanPawn(Pawn).UpdateFPLegs();
}
@ -654,7 +654,7 @@ function ShowBossNameplate(KFInterface_MonsterBoss KFBoss, optional string Playe
}
function HideBossNameplate()
{
{
if (!bNamePlateHidden)
{
bNamePlateHidden = false;
@ -759,7 +759,7 @@ reliable server function ServerViewPlayerID(int ID)
}
if (PRI==None || PRI.PlayerID!=ID || Controller(PRI.Owner)==None || Controller(PRI.Owner).Pawn==None || !WorldInfo.Game.CanSpectate(self, PRI))
return;
SetViewTarget(PRI);
ClientMessage(NowViewingFrom@PRI.GetHumanReadableName());
if (CurrentSpectateMode==SMODE_Roaming)
@ -769,7 +769,7 @@ reliable server function ServerViewPlayerID(int ID)
reliable server function SpectateRoaming()
{
local Pawn P;
P = Pawn(ViewTarget);
ClientMessage(ViewingFromOwnCamera);
Super.SpectateRoaming();
@ -851,7 +851,7 @@ state Spectating
if (Role < ROLE_Authority) // then save this move and replicate it
{
ReplicateMove(DeltaTime, Acceleration, DCLICK_None, rot(0,0,0));
// only done for clients, as LastActiveTime only affects idle kicking
if ((!IsZero(Acceleration) || OldRotation != Rotation) && LastUpdateSpectatorActiveTime<WorldInfo.TimeSeconds)
{
@ -917,7 +917,7 @@ simulated function EndGameCamFocus(vector Pos)
EndGameCamFocusPos[1] = CamPos;
EndGameCamRot = CamRot;
EndGameCamTimer = WorldInfo.RealTimeSeconds;
if (LocalPlayer(Player)==None)
ClientFocusView(Pos);
else if (KFPawn(ViewTarget)!=None)
@ -939,7 +939,7 @@ final function bool CalcEndGameCam()
return true;
T = WorldInfo.RealTimeSeconds-EndGameCamTimer;
if (T>=20.f) // Finished view.
{
bEndGameCamFocus = false;
@ -1090,7 +1090,7 @@ Ignores NotifyPhysicsVolumeChange,ServerCamera,ResetCameraMode;
TheViewTarget = Self;
out_Location = TheViewTarget.Location;
EndOffset = out_Location-vector(Rotation)*250.f;
if (TheViewTarget.Trace(HL,HN,EndOffset,out_Location,false,vect(16,16,16))!=None)
out_Location = HL;
else out_Location = EndOffset;
@ -1174,7 +1174,7 @@ state Dead
bPressedJump = false;
FindGoodView();
CleanOutSavedMoves();
if (KFPawn(ViewTarget)!=none)
{
KFPawn(ViewTarget).SetMeshVisibility(true);
@ -1213,7 +1213,7 @@ state Dead
TheViewTarget = Self;
out_Location = TheViewTarget.Location;
EndOffset = out_Location-vector(Rotation)*400.f;
if (TheViewTarget.Trace(HL,HN,EndOffset,out_Location,false,vect(16,16,16))!=None)
out_Location = HL;
else out_Location = EndOffset;
@ -1239,7 +1239,7 @@ defaultproperties
MidGameMenuClass=class'UI_MidGameMenu'
PerkList.Empty()
PerkList.Add((PerkClass=Class'ExtPerkManager'))
NVG_DOF_FocalDistance=3800.0
NVG_DOF_SharpRadius=2500.0
NVG_DOF_FocalRadius=3500.0

@ -9,7 +9,7 @@ struct FCustomCharEntry
struct FMyCustomChar // Now without constant.
{
var int CharacterIndex,HeadMeshIndex,HeadSkinIndex,BodyMeshIndex,BodySkinIndex,AttachmentMeshIndices[`MAX_COSMETIC_ATTACHMENTS],AttachmentSkinIndices[`MAX_COSMETIC_ATTACHMENTS];
structdefaultproperties
{
AttachmentMeshIndices[0]=`CLEARED_ATTACHMENT_INDEX
@ -101,7 +101,7 @@ simulated function ClientInitialize(Controller C)
local ExtPlayerReplicationInfo PRI;
Super.ClientInitialize(C);
if (WorldInfo.NetMode!=NM_DedicatedServer)
{
LocalOwnerPRI = Self;
@ -189,7 +189,7 @@ simulated final function color PickPerkColor()
{
local float P;
local byte i;
if (RepLevelProgress==0)
return MakeColor(255,255,255,255);
P = float(RepLevelProgress) / 255.f;
@ -331,7 +331,7 @@ function ClearFixed()
simulated final function string GetDesc()
{
local string S;
if ((FixedData & 1)!=0)
S = "A.";
if ((FixedData & 2)!=0)
@ -595,13 +595,13 @@ final function SaveCustomCharacter(ExtSaveDataBase Data)
Data.SaveStr(S);
if (S=="")
return;
// Write selected accessories.
Data.SaveInt(CustomCharacter.HeadMeshIndex);
Data.SaveInt(CustomCharacter.HeadSkinIndex);
Data.SaveInt(CustomCharacter.BodyMeshIndex);
Data.SaveInt(CustomCharacter.BodySkinIndex);
c = 0;
for (i=0; i<`MAX_COSMETIC_ATTACHMENTS; ++i)
{
@ -611,7 +611,7 @@ final function SaveCustomCharacter(ExtSaveDataBase Data)
// Write attachments count.
Data.SaveInt(c);
// Write attachments.
for (i=0; i<`MAX_COSMETIC_ATTACHMENTS; ++i)
{
@ -639,7 +639,7 @@ final function LoadCustomCharacter(ExtSaveDataBase Data)
if (string(CharacterArchetypes[i].Name)~=S)
break;
}
if (i==CharacterArchetypes.Length)
{
for (i=0; i<CustomCharList.Length; ++i)
@ -741,4 +741,4 @@ defaultproperties
RespawnCounter=-1
AdminType=AT_Player
TaggedPlayerName="Player"
}
}

@ -96,4 +96,4 @@ defaultproperties
FuseTime=0.35
NumCrackers=6
bNetTemporary=true
}
}

@ -58,4 +58,4 @@ defaultproperties
Damage=170
DamageRadius=800
End Object
}
}

@ -9,13 +9,13 @@ defaultproperties
bCanDisintegrate=false
DrawScale=2.5
NumResidualFlames=10
ResidualFlameProjClass=class'ExtProj_SUPERMolotovS'
// explosion
Begin Object Name=ExploTemplate0
Damage=750
DamageRadius=500
End Object
}
}

@ -9,4 +9,4 @@ defaultproperties
Damage=40
DamageRadius=200
End Object
}
}

@ -12,7 +12,7 @@ function PlayAnimation()
PlaySpecialMoveAnim(AnimName, AnimStance, BlendInTime, BlendOutTime, 1.f);
if (KFPOwner.Role == ROLE_Authority)
{
{
KFGameInfo(KFPOwner.WorldInfo.Game).DialogManager.PlayDialogEvent(KFPOwner, 31);
}
@ -47,4 +47,5 @@ function PlayAnimation()
defaultproperties
{
}

@ -8,9 +8,9 @@ function SpawnProjectileShield()
defaultproperties
{
ExplosionActorClass=class'ExtExplosion_SirenScream'
// explosion
Begin Object Name=ExploTemplate0
ActorClassToIgnoreForDamage=class'KFPawn_ZedSirenX'
End Object
}
}

@ -8,7 +8,7 @@ var array<Actor> ValidSpawnSpots;
static final function ExtSpawnPointHelper FindHelper(WorldInfo Level)
{
local ExtSpawnPointHelper H;
foreach Level.DynamicActors(class'ExtSpawnPointHelper',H)
return H;
return Level.Spawn(class'ExtSpawnPointHelper');
@ -20,7 +20,7 @@ final function Actor PickBestSpawn()
local KFPawn P;
local float Score,BestScore,Dist;
local KFPawn_Human H;
BestN = None;
BestScore = 0;
foreach ValidSpawnSpots(N)
@ -132,7 +132,7 @@ final function CheckSpawn(NavigationPoint N)
ValidSpawnSpots.AddItem(N);
}
CheckedList.AddItem(N);
foreach N.PathList(R)
{
E = R.GetEnd();

@ -2,7 +2,7 @@ class ExtTraderContainer_Filter extends KFGFxTraderContainer_Filter;
function SetPerkFilterData(byte FilterIndex)
{
local int i;
local int i;
local GFxObject DataProvider;
local GFxObject FilterObject;
local ExtPlayerController KFPC;

@ -52,4 +52,5 @@ function SetPerkList()
defaultproperties
{
}

@ -52,11 +52,11 @@ function RefreshWeaponListByPerk(byte FilterIndex, const out array<STraderItem>
case 0: //primary perk
OnPerkWeapons.AddItem(ItemList[i]);
break;
case 1: //secondary perk
SecondaryWeapons.AddItem(ItemList[i]);
break;
default: //off perk
OffPerkWeapons.AddItem(ItemList[i]);
break;
@ -68,7 +68,7 @@ function RefreshWeaponListByPerk(byte FilterIndex, const out array<STraderItem>
for (i = 0; i < OnPerkWeapons.length; i++)
{
SetItemInfo(ItemDataArray, OnPerkWeapons[i], SlotIndex);
SlotIndex++;
SlotIndex++;
}
for (i = 0; i < SecondaryWeapons.length; i++)
@ -81,7 +81,7 @@ function RefreshWeaponListByPerk(byte FilterIndex, const out array<STraderItem>
{
SetItemInfo(ItemDataArray, OffPerkWeapons[i], SlotIndex);
SlotIndex++;
}
}
SetObject("shopData", ItemDataArray);
}

@ -7,4 +7,4 @@ defaultproperties
AmmoPricePerMag=0
WeaponClassPath="ServerExt.ExtWeap_Pistol_9mm"
}
}

@ -16,4 +16,4 @@ defaultproperties
UpgradeSellPrice[1] = 0
UpgradeSellPrice[2] = 0
UpgradeSellPrice[3] = 0
}
}

@ -4,7 +4,7 @@ defaultproperties
{
SpareAmmoCapacity[0]=-1
InitialSpareMags[0]=0
bInfiniteSpareAmmo=True
// DualClass=class'ServerExt.ExtWeap_Pistol_MedicS'
@ -35,4 +35,4 @@ simulated function KFPerk GetPerk()
if (KFPlayer != None)
return KFPlayer.GetPerk();
return super.GetPerk();
}
}

@ -4,7 +4,7 @@ defaultproperties
{
SpareAmmoCapacity[0]=-1
InitialSpareMags[0]=0
bInfiniteSpareAmmo=True
SingleClass=class'ExtWeap_Pistol_9mm'
@ -19,7 +19,7 @@ simulated static function bool AllowedForAllPerks()
simulated function ConsumeAmmo(byte FireModeNum)
{
}
simulated static event class<KFPerk> GetWeaponPerkClass(class<KFPerk> InstigatorPerkClass)
@ -28,4 +28,4 @@ simulated static event class<KFPerk> GetWeaponPerkClass(class<KFPerk> Instigator
return InstigatorPerkClass;
return default.AssociatedPerkClasses[0];
}
}

@ -3,14 +3,14 @@ class ExtWeap_Pistol_MedicS extends KFWeap_Pistol_Medic;
defaultproperties
{
bCanThrow=false
SpareAmmoCapacity[0]=-1
InitialSpareMags[0]=0
bInfiniteSpareAmmo=True
// Remove weight bcs of replacing 9mm
InventorySize=0
InstantHitDamageTypes(DEFAULT_FIREMODE)=class'ExtDT_Ballistic_Pistol_Medic'
WeaponUpgrades[1]=(Stats=((Stat=EWUS_Damage0, Scale=1.7f), (Stat=EWUS_HealFullRecharge, Scale=0.9f)))
@ -43,4 +43,4 @@ simulated function KFPerk GetPerk()
if (KFPlayer != None)
return KFPlayer.GetPerk();
return super.GetPerk();
}
}

@ -25,7 +25,7 @@ static function array<MaterialInterface> GetWeaponSkin(int ItemId, EWeaponSkinTy
local array<MaterialInterface> Mats;
local MaterialInterface LoadedMat;
local string FirstPMat;
i = default.Skins.Find('Id', ItemId);
if (i > -1)
{
@ -38,38 +38,38 @@ static function array<MaterialInterface> GetWeaponSkin(int ItemId, EWeaponSkinTy
if (LoadedMat != None)
Mats.AddItem(LoadedMat);
}
break;
case WST_ThirdPerson:
LoadedMat = MaterialInterface(DynamicLoadObject(default.Skins[i].MIC_3P, class'MaterialInterface'));
if (LoadedMat != None)
Mats.AddItem(LoadedMat);
break;
case WST_Pickup:
LoadedMat = MaterialInterface(DynamicLoadObject(default.Skins[i].MIC_Pickup, class'MaterialInterface'));
if (LoadedMat != None)
Mats.AddItem(LoadedMat);
break;
}
}
return Mats;
}
static function SaveWeaponSkin(class<KFWeaponDefinition> WeaponDef, int ID, ExtPlayerController PC)
{
local int ALen, i;
i = PC.SavedWeaponSkins.Find('WepDef', WeaponDef);
if (i > -1)
PC.SavedWeaponSkins.Remove(i, 1);
ALen = PC.SavedWeaponSkins.Length;
PC.SavedWeaponSkins[ALen].ID = ID;
PC.SavedWeaponSkins[ALen].WepDef = WeaponDef;
PC.SaveConfig();
}
@ -1107,7 +1107,7 @@ defaultproperties
Skins.Add((Id=4815, Weapondef=class'KFWeapDef_FlareGun', MIC_1P=("WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_1P_Mint_MIC"), MIC_3P="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Pickup_MIC"))
Skins.Add((Id=4814, Weapondef=class'KFWeapDef_FlareGun', MIC_1P=("WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Pickup_MIC"))
Skins.Add((Id=4813, Weapondef=class'KFWeapDef_FlareGun', MIC_1P=("WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet11_MAT.flamered_flaregun.FlameRed_FlareGun_3P_Pickup_MIC"))
//Vietnam AK12
Skins.Add((Id=4970, Weapondef=class'KFWeapDef_Ak12', MIC_1P=("WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_1P_Mint_MIC", "WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_Pickup_MIC"))
Skins.Add((Id=4969, Weapondef=class'KFWeapDef_Ak12', MIC_1P=("WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_1P_FieldTested_MIC", "WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet12_MAT.vietnam_ak12.Vietnam_AK12_3P_Pickup_MIC"))
@ -1347,5 +1347,4 @@ defaultproperties
Skins.Add((Id=5303, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_1P_Mint_MIC"), MIC_3P="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Pickup_MIC"))
Skins.Add((Id=5302, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Pickup_MIC"))
Skins.Add((Id=5301, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet17_MAT.sports_aa12.Vault_Sports_AA12_3P_Pickup_MIC"))
}

@ -15,7 +15,7 @@ struct FWebAdminConfigInfo
var name PropName;
var string UIName,UIDesc;
var int NumElements;
structdefaultproperties
{
NumElements=1
@ -44,7 +44,7 @@ final function Cleanup()
final function AddSettingsPage(string PageName, class<Object> Obj, const out array<FWebAdminConfigInfo> Configs, delegate<OnGetValue> GetFunc, delegate<OnSetValue> SetFunc)
{
local int i;
i = ConfigList.Find('PageName',PageName);
if (i>=0) // Make sure no dupe pages.
PageName $= "_"$(ConfigList[i].Dupes++);

@ -6,7 +6,7 @@ var byte PPerkLevels[6];
struct ExtMemberSlotStruct
{
var class<Ext_PerkBase> PerkClass;
structdefaultproperties
{
PerkClass=none
@ -16,7 +16,7 @@ var ExtMemberSlotStruct ExtMemberSlots[13];
function GFxObject RefreshSlot(int SlotIndex, KFPlayerReplicationInfo KFPRI)
{
local string PlayerName;
local string PlayerName;
local UniqueNetId AdminId;
local bool bIsLeader;
local bool bIsMyPlayer;
@ -26,7 +26,7 @@ function GFxObject RefreshSlot(int SlotIndex, KFPlayerReplicationInfo KFPRI)
PlayerInfoObject = CreateObject("Object");
EPC = ExtPlayerController(GetPC());
if (KFPRI != none)
{
EPRI = ExtPlayerReplicationInfo(KFPRI);
@ -45,12 +45,12 @@ function GFxObject RefreshSlot(int SlotIndex, KFPlayerReplicationInfo KFPRI)
PerkIconObject = CreateObject("Object");
PerkIconObject.SetString("perkIcon", ExtMemberSlots[SlotIndex].PerkClass.static.GetPerkIconPath(EPRI.ECurrentPerkLevel));
PlayerInfoObject.SetObject("perkImageSource", PerkIconObject);
PlayerInfoObject.SetString("perkLevel", string(EPRI.ECurrentPerkLevel));
}
if (!bIsMyPlayer)
{
PlayerInfoObject.SetBool("muted", EPC.IsPlayerMuted(EPRI.UniqueId));
PlayerInfoObject.SetBool("muted", EPC.IsPlayerMuted(EPRI.UniqueId));
}
if (class'WorldInfo'.static.IsE3Build())
{
@ -68,13 +68,13 @@ function GFxObject RefreshSlot(int SlotIndex, KFPlayerReplicationInfo KFPRI)
else
{
PlayerInfoObject.SetString("profileImageSource", "img://"$KFPC.GetSteamAvatar(EPRI.UniqueId));
}
}
if (KFGRI != none)
{
PlayerInfoObject.SetBool("ready", EPRI.bReadyToPlay && !KFGRI.bMatchHasBegun);
}
return PlayerInfoObject;
return PlayerInfoObject;
}
defaultproperties

@ -7,7 +7,7 @@ final function vector PickPointNearOwner()
{
local byte i;
local vector V,HL,HN,Start;
Start = OwnerPawn.Location;
if (OwnerPawn.Physics==PHYS_Falling)
{
@ -20,10 +20,10 @@ final function vector PickPointNearOwner()
V.X = FRand()-0.5;
V.Y = FRand()-0.5;
V = Start + Normal2D(V) * (100.f+FRand()*500.f);
if (i<20 && !FastTrace(V,Start)) // Destination is inside a wall.
continue;
if (i<20 && FastTrace(V-vect(0,0,100),V)) // Destination is above a pit.
continue;
break;
@ -35,7 +35,7 @@ final function vector PickPointNearOwner()
final function bool CanSeeOwner()
{
local Pawn P;
NextSightCheckTime = WorldInfo.TimeSeconds+1.f + FRand();
P = Ext_T_MonsterPRI(PlayerReplicationInfo)!=None ? Ext_T_MonsterPRI(PlayerReplicationInfo).OwnerController.Pawn : None;
if (P!=None && !LineOfSightTo(P))
@ -66,7 +66,7 @@ Begin:
UpdateHistoryString("[Attacking : "$DoorEnemy$" at "$WorldInfo.TimeSeconds$"]");
class'AICommand_Attack_Melee'.static.Melee(Outer, DoorEnemy);
}
// See if we are close to our owner
RecheckOwner:
OwnerPawn = None;
@ -80,7 +80,7 @@ RecheckOwner:
if (Enemy!=None && LineOfSightTo(OwnerPawn) && LineOfSightTo(Enemy)) // We have sight to our owner and can see enemy, go for it!
{
OwnerPawn = None;
bWaitingOnMovementPlugIn = true;
SetEnemyMoveGoal(self, true,,, ShouldAttackWhileMoving());
NextSightCheckTime = WorldInfo.TimeSeconds+2.f;

@ -7,6 +7,7 @@ function SpecialMoveStarted(bool bForced, Name PrevMove)
function SpecialMoveEnded(Name PrevMove, Name NextMove)
{
}
defaultproperties

@ -155,7 +155,7 @@ simulated final function bool IsWeaponOnPerk(KFWeapon W)
//if (W.AllowedForAllPerks())
// return true;
return W!=None && W.GetWeaponPerkClass(BasePerk)==BasePerk;
}
@ -186,7 +186,7 @@ simulated function PostBeginPlay()
return;
}
bOwnerNetClient = (PlayerController(Owner)!=None && LocalPlayer(PlayerController(Owner).Player)==None);
// Load trait classes.
j = 0;
for (i=0; i<TraitClasses.Length; ++i)
@ -198,7 +198,7 @@ simulated function PostBeginPlay()
PerkTraits[j].TraitType = T;
++j;
}
// Setup serverside stat info (for XML log files).
for (j=0; j<PerkStats.Length; ++j)
{
@ -327,7 +327,7 @@ reliable client simulated function ClientReceiveTraitLvl(int Index, byte NewLeve
final function SetPerkStat(name Type, int Value)
{
local int i;
i = PerkStats.Find('StatType',Type);
if (i>=0)
PerkStats[i].CurrentValue = Value;
@ -336,7 +336,7 @@ final function SetPerkStat(name Type, int Value)
final function int GetPerkStat(name Type)
{
local int i;
i = PerkStats.Find('StatType',Type);
if (i==-1)
return 0;
@ -385,7 +385,7 @@ function OutputXML(ExtStatWriter Data)
Data.WriteValue("points",string(CurrentSP));
Data.WriteValue("exptilnext",string(NextLevelEXP));
Data.WriteValue("exponprev",string(LastLevelEXP));
for (i=0; i<PerkStats.Length; ++i)
{
if (PerkStats[i].CurrentValue>0)
@ -397,7 +397,7 @@ function OutputXML(ExtStatWriter Data)
Data.EndIntendent();
}
}
for (i=0; i<PerkTraits.Length; ++i)
{
if (PerkTraits[i].CurrentLevel>0)
@ -416,10 +416,10 @@ function OutputXML(ExtStatWriter Data)
function SaveData(ExtSaveDataBase Data)
{
local int i,j;
// Write current EXP.
Data.SaveInt(CurrentEXP,3);
// Write current prestige
Data.SaveInt(CurrentPrestige,3);
@ -439,7 +439,7 @@ function SaveData(ExtSaveDataBase Data)
Data.SaveInt(PerkStats[i].CurrentValue,1);
}
}
// Count bought traits.
j = 0;
for (i=0; i<PerkTraits.Length; ++i)
@ -471,7 +471,7 @@ function LoadData(ExtSaveDataBase Data)
// if (i > CurrentEXP)
// CurrentEXP = i
// }
if (Data.GetArVer()>=1)
CurrentPrestige = Data.ReadInt(3);
@ -487,7 +487,7 @@ function LoadData(ExtSaveDataBase Data)
break;
}
}
l = Data.ReadInt(); // Traits stats length.
for (i=0; i<l; ++i)
{
@ -543,7 +543,7 @@ function SetInitialLevel()
CurrentSP = CurrentLevel*(StarPointsPerLevel+CurrentPrestige*PrestigeSPIncrease);
NextLevelEXP = GetNeededExp(CurrentLevel);
LastLevelEXP = (CurrentLevel>MinimumLevel ? GetNeededExp(CurrentLevel-1) : 0);
// Now verify the points player used on individual stats.
for (i=0; i<PerkStats.Length; ++i)
{
@ -571,7 +571,7 @@ function SetInitialLevel()
if (PerkTraits[i].CurrentLevel>0)
{
PerkTraits[i].CurrentLevel = Min(PerkTraits[i].CurrentLevel,PerkTraits[i].TraitType.Default.NumLevels);
if (PerkTraits[i].TraitType.Default.LoadPriority>0)
MT = Max(MT,PerkTraits[i].TraitType.Default.LoadPriority);
else
@ -596,7 +596,7 @@ function SetInitialLevel()
if (PerkTraits[i].CurrentLevel==0 && PerkTraits[i].Data!=None)
PerkTraits[i].TraitType.Static.CleanupTrait(ExtPlayerController(Owner),Self,PerkTraits[i].Data);
}
// Delayed loads.
for (j=1; j<=MT; ++j)
{
@ -674,14 +674,14 @@ static function UpdateConfigs(int OldVer)
Default.MinimumLevel = 0;
Default.MaximumLevel = 150;
Default.StarPointsPerLevel = 15;
// Prestige.
Default.MinLevelForPrestige = 140;
Default.PrestigeSPIncrease = 1;
Default.MaxPrestige = 20;
Default.MinimalDataLevel = 0;
Default.PrestigeXPReduce = 0.05;
Default.PerkStats.Length = 0;
AddStatsCfg(0);
Default.TraitClasses.Length = Default.DefTraitList.Length;
@ -754,7 +754,7 @@ static function InitWebAdmin(ExtWebAdmin_UI UI)
local int i;
UI.AddSettingsPage("Perk "$Default.PerkName,Default.Class,Default.WebConfigs,GetValue,ApplyValue);
for (i=0; i<Default.TraitClasses.Length; ++i)
{
T = class<Ext_TraitBase>(DynamicLoadObject(Default.TraitClasses[i],Class'Class'));
@ -887,7 +887,7 @@ function bool IncrementStat(int iStat, int Amount)
simulated function ApplyEffects()
{
local int i;
for (i=0; i<PerkStats.Length; ++i)
{
if (PerkStats[i].CurrentValue!=PerkStats[i].OldValue)
@ -903,7 +903,7 @@ function ApplyEffectsTo(KFPawn_Human P)
{
local int i;
local bool bSec;
for (i=0; i<PerkTraits.Length; ++i)
{
if (PerkTraits[i].CurrentLevel>0)
@ -929,7 +929,7 @@ function ActivateTraits()
local int i;
local KFPawn_Human KFP;
local bool bSec;
KFP = KFPawn_Human(PlayerOwner.Pawn);
if (KFP!=None && !KFP.IsAliveAndWell())
KFP = None;
@ -961,7 +961,7 @@ function ActivateTraits()
function DeactivateTraits()
{
local int i;
for (i=0; i<PerkTraits.Length; ++i)
{
if (PerkTraits[i].CurrentLevel>0)
@ -1114,7 +1114,7 @@ function FullReset(optional bool bNotPrestige)
CurrentSP = CurrentLevel*(StarPointsPerLevel+CurrentPrestige*PrestigeSPIncrease);
NextLevelEXP = GetNeededExp(CurrentLevel);
LastLevelEXP = 0;
if (PerkManager.CurrentPerk==Self && PerkManager.PRIOwner!=None)
{
PerkManager.PRIOwner.SetLevelProgress(CurrentLevel,CurrentPrestige,MinimumLevel,MaximumLevel);
@ -1127,7 +1127,7 @@ function FullReset(optional bool bNotPrestige)
function bool PreventDeath(KFPawn_Human Player, Controller Killer, Class<DamageType> DamType)
{
local int i;
// Doing 2 passes of this so that things don't go out of order (spawn retaliation effect when you get redeemed etc)
for (i=0; i<PerkTraits.Length; ++i)
{
@ -1160,7 +1160,7 @@ simulated function PlayerDied()
simulated function float ApplyEffect(name Type, float Value, float Progress)
{
local bool bActivePerk;
bActivePerk = (PerkManager!=None && PerkManager.CurrentPerk==Self);
switch (Type)
{
@ -1243,7 +1243,7 @@ simulated function float ApplyEffect(name Type, float Value, float Progress)
break;
case 'Switch':
Modifiers[21] = 1.f / (1.f+Value*Progress);
break;
break;
}
return (Value*Progress);
}
@ -1301,7 +1301,7 @@ simulated function float GetReloadRateScale(KFWeapon KFW)
}
simulated function float GetCameraViewShakeModifier(KFWeapon KFW)
{
{
return Modifiers[2];
}
@ -1341,7 +1341,7 @@ function AddDefaultInventory(KFPawn P)
P.DefaultInventory.AddItem(PrimaryMelee);
if (KFInventoryManager(P.InvManager)!=None)
KFInventoryManager(P.InvManager).MaxCarryBlocks = KFInventoryManager(P.InvManager).Default.MaxCarryBlocks+Modifiers[10];
for (i=0; i<PerkTraits.Length; ++i)
{
if (PerkTraits[i].CurrentLevel>0)
@ -1409,7 +1409,7 @@ simulated final function DrawEnemyHealth(Canvas C)
{
local KFPawn_Monster KFPM;
local vector X,CameraLocation;
X = vector(PlayerOwner.Pawn.GetViewRotation());
CameraLocation = PlayerOwner.Pawn.GetPawnViewLocation();
@ -1515,11 +1515,11 @@ defaultproperties
WeldExpUpNum=180
ToxicDartDamage=15
NetPriority=4
SecondaryWeaponDef=class'KFWeapDef_9mm'
KnifeWeaponDef=class'KFWeapDef_Knife_Commando'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Support'
DefTraitList.Add(class'Ext_TraitGrenadeUpg')
DefTraitList.Add(class'Ext_TraitNightvision')
DefTraitList.Add(class'Ext_TraitAmmoReg')
@ -1553,7 +1553,7 @@ defaultproperties
WebConfigs.Add((PropType=0,PropName="MaxPrestige",UIName="Max Prestige",UIDesc="Maximum prestige level"))
WebConfigs.Add((PropType=0,PropName="PrestigeXPReduce",UIName="Prestige XP Reduce",UIDesc="Percent amount of XP cost is reduced for each prestige (1.0 = 1/2, or 50 % of XP)"))
// WebConfigs.Add((PropType=0,PropName="MinimalDataLevel",UIName="Minimal Real Level",UIDesc="Minimal level for new players or who loads from saves"))
DefPerkStats(0)=(MaxValue=50,CostPerValue=1,StatType="Speed",Progress=0.4)
DefPerkStats(1)=(MaxValue=1000,CostPerValue=1,StatType="Damage",Progress=0.5)
DefPerkStats(2)=(MaxValue=90,CostPerValue=1,StatType="Recoil",Progress=1)
@ -1599,7 +1599,7 @@ defaultproperties
Modifiers.Add(0.f)
Modifiers.Add(1.f)
Modifiers.Add(1.f)
EnemyDistDraw.Add(500)
EnemyDistDraw.Add(700)
EnemyDistDraw.Add(1000)

@ -45,12 +45,12 @@ defaultproperties
PrimaryMelee=class'KFWeap_Knife_Berserker'
PrimaryWeapon=class'KFWeap_Blunt_Crovel'
PerkGrenade=class'KFProj_EMPGrenade'
PrimaryWeaponDef=class'KFWeapDef_Crovel'
KnifeWeaponDef=class'KFweapDef_Knife_Berserker'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Berserker'
AutoBuyLoadOutPath=(class'KFWeapDef_Crovel', class'KFWeapDef_Nailgun', class'KFWeapDef_Pulverizer', class'KFWeapDef_Eviscerator')
ZedTimeMeleeAtkRate=1.0
}

@ -22,7 +22,7 @@ simulated function ModifyDamageGiven(out int InDamage, optional Actor DamageCaus
if (bUseMachineGunner && WorldInfo.TimeDilation < 1.f)
InDamage += InDamage * 0.03;
}
Super.ModifyDamageGiven(InDamage, DamageCauser, MyKFPM, DamageInstigator, DamageType, HitZoneIdx);
}
@ -61,7 +61,7 @@ defaultproperties
DefTraitList.Add(class'Ext_TraitTactician')
DefTraitList.Add(class'Ext_TraitMachineGunner')
BasePerk=class'KFPerk_Commando'
ZTExtCount=1.f;
PrimaryMelee=class'KFWeap_Knife_Commando'
@ -71,6 +71,6 @@ defaultproperties
PrimaryWeaponDef=class'KFWeapDef_AR15'
KnifeWeaponDef=class'KFweapDef_Knife_Commando'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Commando'
AutoBuyLoadOutPath=(class'KFWeapDef_AR15', class'KFWeapDef_Bullpup', class'KFWeapDef_AK12', class'KFWeapDef_SCAR')
}

@ -25,13 +25,13 @@ simulated function float ApplyEffect(name Type, float Value, float Progress)
{
local KFPlayerReplicationInfo MyPRI;
local float DefValue;
DefValue = Super.ApplyEffect(Type, Value, Progress);
MyPRI = KFPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo);
if (MyPRI != None && Type == 'KnockDown')
MyPRI.bConcussiveActive = Modifiers[7] > 1.5;
return DefValue;
}
@ -50,10 +50,10 @@ simulated function ModifyDamageGiven(out int InDamage, optional Actor DamageCaus
if (bCriticalHit && MyKFPM != none && IsCriticalHitZone(MyKFPM, HitZoneIdx))
InDamage *= 1.5f;
}
if (class<KFDT_DemoNuke_Toxic_Lingering>(DamageType) != None)
InDamage *= NukeDamageMult;
Super.ModifyDamageGiven(InDamage, DamageCauser, MyKFPM, DamageInstigator, DamageType, HitZoneIdx);
}
@ -69,7 +69,7 @@ simulated function ModifySpareAmmoAmount(KFWeapon KFW, out int PrimarySpareAmmo,
{
if (KFW != None && KFWeap_Thrown_C4(KFW) != None)
PrimarySpareAmmo += (1 + Modifiers[11]);
Super.ModifySpareAmmoAmount(KFW, PrimarySpareAmmo, TraderItem, bSecondary);
}
@ -88,20 +88,20 @@ defaultproperties
DefTraitList.Add(class'Ext_TraitDemoNuke')
DefTraitList.Add(class'Ext_TraitDemoProfessional')
BasePerk=class'KFPerk_Demolitionist'
AOEMult=1.0f
NukeDamageMult=1.0f
PrimaryMelee=class'KFWeap_Knife_Demolitionist'
PrimaryWeapon=class'KFWeap_GrenadeLauncher_HX25'
PerkGrenade=class'KFProj_DynamiteGrenade'
PrimaryWeaponDef=class'KFWeapDef_HX25'
KnifeWeaponDef=class'KFWeapDef_Knife_Demo'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Demo'
AutoBuyLoadOutPath=(class'KFWeapDef_HX25', class'KFWeapDef_M79', class'KFWeapDef_M16M203', class'KFWeapDef_RPG7')
DefPerkStats(10)=(bHiddenConfig=true) // No support for mag size on demo.
DefPerkStats(13)=(bHiddenConfig=false) // Self damage.
}

@ -22,7 +22,7 @@ simulated function ModifyDamageGiven(out int InDamage, optional Actor DamageCaus
TempDamage += InDamage * 100;
InDamage = Round(TempDamage);
Super.ModifyDamageGiven(InDamage, DamageCauser, MyKFPM, DamageInstigator, DamageType, HitZoneIdx);
}
@ -57,7 +57,7 @@ function bool ModifyHealAmount(out float HealAmount)
// Di
// simulated function ModifyHealerRechargeTime(out float RechargeRate)
// {
// super.ModifyHealerRechargeTime(RechargeRate)
// super.ModifyHealerRechargeTime(RechargeRate)
// RechargeRate /= Clamp(Modifiers[9] * 2, 1.f, 3.f);
// }
@ -79,7 +79,7 @@ function GiveMedicAirborneAgentHealth(KFPawn HealTarget, class<DamageType> DamTy
if (KFP.IsAliveAndWell() && WorldInfo.GRI.OnSameTeam(HealTarget, KFP))
{
if (HealTarget == KFP)
KFP.HealDamage(RoundedExtraHealAmount, PlayerOwner, DamType);
KFP.HealDamage(RoundedExtraHealAmount, PlayerOwner, DamType);
else KFP.HealDamage(RoundedExtraHealAmount + HealAmount, PlayerOwner, DamType);
}
}
@ -101,9 +101,9 @@ static function int ModifyToxicDmg(int ToxicDamage)
function NotifyZedTimeStarted()
{
local KFPawn_Human HPawn;
HPawn = KFPawn_Human(PlayerOwner.Pawn);
if (bUseAirborneAgent && HPawn != none && HPawn.IsAliveAndWell())
HPawn.StartAirBorneAgentEvent();
}
@ -186,8 +186,8 @@ simulated function float GetHealingShieldDuration()
}
simulated function float GetSelfHealingSurgePct()
{
return SelfHealingSurgePct;
{
return SelfHealingSurgePct;
}
defaultproperties
@ -205,13 +205,13 @@ defaultproperties
DefTraitList.Add(class'Ext_TraitArmorRep')
BasePerk=class'KFPerk_FieldMedic'
HealExpUpNum=3
HealingSpeedBoostPct = 10.0f
HealingDamageBoostPct = 5.0f
HealingShieldPct = 10.0f
ToxicDmgTypeClass=class'KFDT_Toxic_AcidicRounds'
SelfHealingSurgePct=0.1f
MaxHealingSpeedBoost=30
@ -219,26 +219,26 @@ defaultproperties
MaxHealingDamageBoost=20
HealingDamageBoostDuration=5.f
MaxHealingShield=30
HealingShieldDuration=5.0f
DefPerkStats(0)=(MaxValue=70)
DefPerkStats(9)=(bHiddenConfig=false) // Heal efficiency
DefPerkStats(15)=(bHiddenConfig=false) // Toxic resistance
DefPerkStats(16)=(bHiddenConfig=false) // Sonic resistance
DefPerkStats(17)=(bHiddenConfig=false) // Fire resistance
DefPerkStats(20)=(bHiddenConfig=false) // Heal recharge
PrimaryMelee=class'KFWeap_Knife_FieldMedic'
PrimaryWeapon=None
PerkGrenade=class'KFProj_MedicGrenade'
SuperGrenade=class'ExtProj_SUPERMedGrenade'
SecondaryWeaponDef=class'ExtWeapDef_MedicPistol'
PrimaryWeaponDef=None
KnifeWeaponDef=class'KFWeapDef_Knife_Medic'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Medic'
AutoBuyLoadOutPath=(class'KFWeapDef_MedicSMG', class'KFWeapDef_MedicShotgun', class'KFWeapDef_MedicRifle')
}

@ -17,9 +17,9 @@ defaultproperties
PrimaryWeaponDef=class'KFWeapDef_CaulkBurn'
KnifeWeaponDef=class'KFWeapDef_Knife_Firebug'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Firebug'
AutoBuyLoadOutPath=(class'KFWeapDef_CaulkBurn', class'KFWeapDef_DragonsBreath', class'KFWeapDef_FlameThrower', class'KFWeapDef_MicrowaveGun')
DefPerkStats(13)=(Progress=3,bHiddenConfig=false) // Self damage.
DefPerkStats(17)=(bHiddenConfig=false) // Fire resistance
}

@ -22,7 +22,7 @@ simulated function bool GetIsUberAmmoActive(KFWeapon KFW)
simulated function float GetZedTimeModifier(KFWeapon W)
{
local name StateName;
if (bHasFanfire && IsWeaponOnPerk(W))
{
StateName = W.GetStateName();
@ -45,10 +45,10 @@ defaultproperties
PrimaryMelee=class'KFWeap_Knife_Gunslinger'
PrimaryWeapon=class'KFWeap_Revolver_DualRem1858'
PerkGrenade=class'KFProj_NailBombGrenade'
PrimaryWeaponDef=class'KFWeapDef_Remington1858Dual'
KnifeWeaponDef=class'KFWeapDef_Knife_Gunslinger'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Gunslinger'
AutoBuyLoadOutPath=(class'KFWeapDef_Remington1858', class'KFWeapDef_Remington1858Dual', class'KFWeapDef_Colt1911', class'KFWeapDef_Colt1911Dual',class'KFWeapDef_Deagle', class'KFWeapDef_DeagleDual', class'KFWeapDef_SW500', class'KFWeapDef_SW500Dual')
}

@ -52,16 +52,16 @@ final function UpdateDmgScale(bool bUp)
function UpdatePerkHeadShots(ImpactInfo Impact, class<DamageType> DamageType, int NumHit)
{
local int HitZoneIdx;
local KFPawn_Monster KFPM;
local KFPawn_Monster KFPM;
if (MaxRhythmCombo<=0)
return;
KFPM = KFPawn_Monster(Impact.HitActor);
if (KFPM==none || KFPM.GetTeamNum()==0)
return;
KFPM = KFPawn_Monster(Impact.HitActor);
if (KFPM==none || KFPM.GetTeamNum()==0)
return;
HitZoneIdx = KFPM.HitZones.Find('ZoneName', Impact.HitInfo.BoneName);
if (HitZoneIdx == HZI_Head && KFPM.IsAliveAndWell())
HitZoneIdx = KFPM.HitZones.Find('ZoneName', Impact.HitInfo.BoneName);
if (HitZoneIdx == HZI_Head && KFPM.IsAliveAndWell())
{
if (class<KFDamageType>(DamageType)!=None && (class<KFDamageType>(DamageType).Default.ModifierPerkList.Find(BasePerk)>=0))
UpdateDmgScale(true);
@ -87,7 +87,7 @@ reliable client function HeadShotMessage(byte HeadShotNum, bool bMissed, byte Ma
else if (HeadShotNum<MaxHits)
{
if (!bMissed)
{
{
//PC.ClientSpawnCameraLensEffect(class'KFCameraLensEmit_RackemHeadShot');
TempAkEvent = AkEvent'WW_UI_PlayerCharacter.Play_R_Method_Hit';
}

@ -38,12 +38,12 @@ defaultproperties
PrimaryMelee=class'KFWeap_Knife_Sharpshooter'
PrimaryWeapon=class'KFWeap_Rifle_Winchester1894'
PerkGrenade=class'KFProj_FreezeGrenade'
PrimaryWeaponDef=class'KFWeapDef_Winchester1894'
KnifeWeaponDef=class'KFWeapDef_Knife_Sharpshooter'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Sharpshooter'
AutoBuyLoadOutPath=(class'KFWeapDef_Winchester1894', class'KFWeapDef_Crossbow', class'KFWeapDef_M14EBR', class'KFWeapDef_RailGun')
DireReloadSpeed=0.25f
}

@ -54,10 +54,10 @@ defaultproperties
PrimaryMelee=class'KFWeap_Knife_Support'
PrimaryWeapon=class'KFWeap_Shotgun_MB500'
PrimaryWeaponDef=class'KFWeapDef_MB500'
KnifeWeaponDef=class'KFWeapDef_Knife_Support'
GrenadeWeaponDef=class'KFWeapDef_Grenade_Support'
AutoBuyLoadOutPath=(class'KFWeapDef_MB500', class'KFWeapDef_DoubleBarrel', class'KFWeapDef_M4', class'KFWeapDef_AA12')
}

@ -2,4 +2,5 @@ class Ext_TGroupMonster extends Ext_TGroupBase;
defaultproperties
{
}

@ -33,4 +33,5 @@ static final function byte GetMaxLimit(Ext_PerkBase Perk)
defaultproperties
{
}

@ -2,4 +2,5 @@ class Ext_TGroupZEDTime extends Ext_TGroupBase;
defaultproperties
{
}

@ -34,7 +34,7 @@ simulated function Tick(float Delta)
|| KFWeapon(PawnOwner.Weapon)==None
|| (KFWeapon(PawnOwner.Weapon).GetWeaponPerkClass(AssociatedPerkClass) != AssociatedPerkClass && AssociatedPerkClass != class'KFPerk_Survivalist'))
return;
// Find local playercontroller.
if (LocalPC==None)
{

@ -9,7 +9,7 @@ var bool bTeleporting,bIsDelayed;
function bool CanResPlayer(KFPawn_Human Other, byte Level)
{
local Actor SpawnPoint;
if (bTeleporting)
{
if (LastDied!=None)
@ -27,14 +27,14 @@ function bool CanResPlayer(KFPawn_Human Other, byte Level)
if (SpawnPointer==None)
SpawnPointer = class'ExtSpawnPointHelper'.Static.FindHelper(WorldInfo);
SpawnPoint = SpawnPointer.PickBestSpawn();
if (SpawnPoint == None)
return false;
LastDied = Other;
bTeleporting = true;
ResPoint = SpawnPoint.Location;
LastDied.FindSpot(vect(36,36,86),ResPoint);
if (VSizeSq(LastDied.Location-ResPoint)<1.f) // Prevent division by zero errors in future.
@ -49,7 +49,7 @@ final function StartResurrect()
TeleStartPoint = LastDied.Location;
LastDied.Health = 9999;
LastDied.LastStartTime = WorldInfo.TimeSeconds;
if (ExtHumanPawn(LastDied)!=None)
{
ExtHumanPawn(LastDied).bCanBecomeRagdoll = false;

@ -24,4 +24,5 @@ function Timer()
defaultproperties
{
}

@ -84,12 +84,12 @@ simulated function bool GetCanInteract(Pawn User, optional bool bInteractIfTrue
PRI = ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo);
if (!User.IsLocallyControlled() || PRI==None || !PRI.CanUseSupply(User))
return false;
if (bInteractIfTrue)
{
PRI.UsedSupply(User,ReuseTime);
SetTimer(ReuseTime+0.1,false,'RecheckUser');
if (KFPlayerController(User.Controller)!=None)
KFPlayerController(User.Controller).SetPendingInteractionMessage();
}
@ -99,7 +99,7 @@ simulated function bool GetCanInteract(Pawn User, optional bool bInteractIfTrue
i = ActiveUsers.Find('Player',User);
if (i>=0 && ActiveUsers[i].NextUseTime>WorldInfo.TimeSeconds)
return false;
if (bInteractIfTrue)
{
if (i==-1)
@ -112,7 +112,7 @@ simulated function bool GetCanInteract(Pawn User, optional bool bInteractIfTrue
ActiveUsers[i].NextUseTime = WorldInfo.TimeSeconds+ReuseTime;
}
}
if (bInteractIfTrue && WorldInfo.NetMode!=NM_Client)
{
GiveAmmunition(KFPawn_Human(User));
@ -123,7 +123,7 @@ simulated function bool GetCanInteract(Pawn User, optional bool bInteractIfTrue
function CleanupUsers()
{
local int i;
for (i=(ActiveUsers.Length-1); i>=0; --i)
if (ActiveUsers[i].Player==None || ActiveUsers[i].Player.Health<=0 || ActiveUsers[i].NextUseTime<WorldInfo.TimeSeconds)
ActiveUsers.Remove(i,1);
@ -178,7 +178,7 @@ simulated final function UsedOnClient(Pawn User)
if (PRI!=None)
PRI.UsedSupply(User,ReuseTime);
SetTimer(ReuseTime+0.1,false,'RecheckUser');
if (WorldInfo.NetMode==NM_Client && KFPlayerController(User.Controller)!=None)
KFPlayerController(User.Controller).SetPendingInteractionMessage();
}
@ -202,7 +202,7 @@ defaultproperties
bHidden=false
ReuseTime=90
bProjTarget=false
Components.Empty()
Components.Add(CollisionCylinder)
}

@ -75,7 +75,7 @@ function Destroyed()
final function bool HasLiveZeds()
{
local KFPawn_Monster M;
if (KFGameReplicationInfo(WorldInfo.GRI).WaveNum>=KFGameReplicationInfo(WorldInfo.GRI).WaveMax) // No pets on possible bonus waves.
return false;
@ -95,7 +95,7 @@ final function SpawnHelper()
local Ext_T_MonsterPRI PRI;
local AkBaseSoundObject TempSound;
local bool bFinalWave;
if (PawnOwner.PlayerReplicationInfo==None || !HasLiveZeds())
{
RespawnHelperTime = 3;
@ -137,7 +137,7 @@ final function SpawnHelper()
// Downscale.
LiveHelper.SetDrawScale(LiveHelper.DrawScale*FriendlyScalar);
LiveHelper.SetCollisionSize(LiveHelper.GetCollisionRadius()*FriendlyScalar,LiveHelper.GetCollisionHeight()*FriendlyScalar);
// Setup AI
C = Spawn(LiveHelper.ControllerClass);
if (KFAIController(C)!=None)
@ -157,7 +157,7 @@ final function SpawnHelper()
LiveHelper.SetWeakGrabCoolDown(28800.f); // Never get grabbed (for 80 hours).
LiveHelper.bWeakZedGrab = true;
LiveHelper.bCanGrabAttack = false;
// Scale by previous zed HP.
if (PrevMonster!=None)
{
@ -203,14 +203,14 @@ static final function LoadMonsterList()
local int i,j;
local array<string> SA;
local class<KFPawn_Monster> C;
Default.ZedTypes.Length = class'Ext_TraitZED_Summon'.Default.ZedTypes.Length;
for (i=0; i<Default.ZedTypes.Length; ++i)
{
SA.Length = 0;
ParseStringIntoArray(class'Ext_TraitZED_Summon'.Default.ZedTypes[i],SA,",",true);
for (j=0; j<SA.Length; ++j)
{
C = class<KFPawn_Monster>(DynamicLoadObject(SA[j],Class'Class'));
@ -227,7 +227,7 @@ static final function class<KFPawn_Monster> PickRandomMonster(byte Level, bool b
{
local byte i;
local class<KFPawn_Monster> Res;
Level = Min(Default.ZedTypes.Length-1,Level);
for (i=0; i<5; ++i)
{

@ -17,7 +17,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<1)
return false;
for (i=0; i<Perk.PerkTraits.Length; ++i)
{
if (Perk.PerkTraits[i].TraitType==Class'Ext_TraitGrenadeUpg')
@ -27,7 +27,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
else break;
}
}
return true;
}

@ -5,7 +5,7 @@ var array<float> RegenValues;
static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{
local Ext_T_AmmoRegHelp H;
H = Player.Spawn(class'Ext_T_AmmoRegHelp',Player);
if (H!=None)
H.RegCount = Default.RegenValues[Level-1];

@ -3,7 +3,7 @@ Class Ext_TraitArmorReg extends Ext_TraitHealthReg;
static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{
local Ext_T_ArmorRegHelp H;
H = Player.Spawn(class'Ext_T_ArmorRegHelp',Player);
if (H!=None)
H.RegCount = Default.RegenValues[Level-1];

@ -42,7 +42,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
// First check level.
if (Perk.CurrentLevel<Default.MinLevel)
return false;
// Then check grouping.
if (Lvl==0 && Default.TraitGroup!=None && Default.TraitGroup.Static.GroupLimited(Perk,Default.Class))
return false;
@ -54,7 +54,7 @@ function string GetPerkDescription()
{
local string S;
local byte i;
for (i=0; i<Default.NumLevels; ++i)
{
if (i==0)
@ -163,7 +163,7 @@ static final function string GetInlineStr(out string S) // Reverse.
{
local int l;
local string Res;
l = StrToInt(S);
Res = Left(S,l);
S = Mid(S,l);
@ -174,7 +174,7 @@ static function string GetRepData()
{
local string S;
local int i;
S = IntToStr(Default.MinLevel)$IntToStr(Default.LevelCosts.Length);
for (i=0; i<Default.LevelCosts.Length; ++i)
S $= IntToStr(Default.LevelCosts[i]);

@ -8,4 +8,5 @@ var class<Ext_TraitBase> TraitClass;
defaultproperties
{
}

@ -17,25 +17,25 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<3)
return false;
if (Lvl==0)
{
i = Perk.PerkStats.Find('StatType','Damage');
if (i>=0)
return (Perk.PerkStats[i].CurrentValue>=30);
}
return true;
}
static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{
local ExtPlayerReplicationInfo MyPRI;
MyPRI = ExtPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo);
if (MyPRI == None || Ext_PerkDemolition(Perk) == None)
return;
MyPRI.bNukeActive = true;
Ext_PerkDemolition(Perk).NukeDamageMult = 1.0 + (((float(Level) - 1.f) * 5.f) / 100.f);
}
@ -43,11 +43,11 @@ static function TraitActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitD
static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{
local ExtPlayerReplicationInfo MyPRI;
MyPRI = ExtPlayerReplicationInfo(Perk.PlayerOwner.PlayerReplicationInfo);
if (MyPRI == None || Ext_PerkDemolition(Perk) == None)
return;
MyPRI.bNukeActive = false;
Ext_PerkDemolition(Perk).NukeDamageMult = 1.0;
}

@ -17,14 +17,14 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<3)
return false;
if (Lvl==0)
{
i = Perk.PerkStats.Find('StatType','Reload');
if (i>=0)
return (Perk.PerkStats[i].CurrentValue>=30);
}
return true;
}

@ -5,7 +5,7 @@ var array<byte> RegenValues;
static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{
local Ext_T_HealthRegHelp H;
H = Player.Spawn(class'Ext_T_HealthRegHelp',Player);
if (H!=None)
H.RegCount = Default.RegenValues[Level-1];

@ -14,7 +14,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
{
if (Level <= 1)
return;
Level == 2 ? Player.AddArmor(50) : Player.AddArmor(Player.MaxArmor);
}

@ -17,7 +17,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<2)
return false;
for (i=0; i<Perk.PerkTraits.Length; ++i)
{
if (Perk.PerkTraits[i].TraitType==Class'Ext_TraitAPShots')
@ -27,7 +27,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
else break;
}
}
return true;
}

@ -21,7 +21,7 @@ defaultproperties
DefLevelCosts(1)=30
DefLevelCosts(2)=40
DefMinLevel=100
ChanceValues(0)=0.2
ChanceValues(1)=0.5
ChanceValues(2)=0.8

@ -3,7 +3,7 @@ Class Ext_TraitRetali extends Ext_TraitBase;
static function bool PreventDeath(KFPawn_Human Player, Controller Instigator, Class<DamageType> DamType, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{
local ExtProj_SUPERGrenade P;
P = Player.Spawn(class'ExtProj_SUPERGrenade');
if (P!=None)
{

@ -21,6 +21,6 @@ defaultproperties
{
DefLevelCosts(0)=50
TraitData=class'Ext_TraitSupplyData'
SupplyIcon=Texture2D'UI_World_TEX.Support_Supplier_HUD'
}

@ -12,7 +12,7 @@ final function SpawnSupplier(KFPawn_Human H, optional bool bGrenades)
SupplyInteraction.PlayerOwner = H;
SupplyInteraction.PerkOwner = Perk;
SupplyInteraction.bGrenades = bGrenades;
if (PlayerOwner!=None && ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo)!=None)
ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).HasSupplier = class<Ext_TraitSupply>(TraitClass);
}
@ -21,7 +21,7 @@ final function RemoveSupplier()
{
if (SupplyInteraction!=None)
SupplyInteraction.Destroy();
if (PlayerOwner!=None && ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo)!=None)
ExtPlayerReplicationInfo(PlayerOwner.PlayerReplicationInfo).HasSupplier = None;
}

@ -6,6 +6,6 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
}
defaultproperties
{
{
SupplyIcon=Texture2D'UI_World_TEX.Demolitionist_Supplier_HUD'
}

@ -17,14 +17,14 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<1)
return false;
if (Lvl==0)
{
i = Perk.PerkStats.Find('StatType','Damage');
if (i>=0)
return (Perk.PerkStats[i].CurrentValue>=30);
}
return true;
}

@ -5,7 +5,7 @@ var array<float> RadiusValues;
static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data)
{
local Ext_T_UnCloakHelper H;
H = Player.Spawn(class'Ext_T_UnCloakHelper',Player);
if (H!=None)
H.HandleRadius = Default.RadiusValues[Level-1];

@ -1,7 +1,7 @@
Class Ext_TraitWPBers extends Ext_TraitWeapons;
defaultproperties
{
{
LevelEffects(0)=(LoadoutClasses=(class'KFWeap_Blunt_Pulverizer'))
LevelEffects(1)=(LoadoutClasses=(class'KFWeap_Shotgun_Nailgun'))
LevelEffects(2)=(LoadoutClasses=(class'KFWeap_Eviscerator'))

@ -1,7 +1,7 @@
Class Ext_TraitWPDemo extends Ext_TraitWeapons;
defaultproperties
{
{
LevelEffects(0)=(LoadoutClasses=(class'KFWeap_Thrown_C4'))
LevelEffects(1)=(LoadoutClasses=(class'KFWeap_GrenadeLauncher_M79'))
LevelEffects(2)=(LoadoutClasses=(class'KFWeap_RocketLauncher_RPG7'))

@ -1,7 +1,7 @@
Class Ext_TraitWPFire extends Ext_TraitWeapons;
defaultproperties
{
{
LevelEffects(0)=(LoadoutClasses=(class'KFWeap_Shotgun_DragonsBreath'))
LevelEffects(1)=(LoadoutClasses=(class'KFWeap_Flame_Flamethrower'))
LevelEffects(2)=(LoadoutClasses=(class'KFWeap_Beam_Microwave'))

@ -18,7 +18,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
static final function bool HasMaxCarry(Ext_PerkBase Perk)
{
local int i;
i = Perk.PerkTraits.Find('TraitType',Class'Ext_TraitCarryCap');
return (i==-1 || Perk.PerkTraits[i].CurrentLevel>=3);
}

@ -10,7 +10,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
// First check level.
if (Perk.CurrentLevel<Default.MinLevel)
return false;
// Then check stats.
if (Lvl==0 && Default.BaseTrait!=None)
{

@ -27,7 +27,7 @@ defaultproperties
DefLevelCosts(3)=40
DefLevelCosts(4)=60
bPostApplyEffect=true
DamList.Add(1.1)
DamList.Add(1.25)
DamList.Add(1.5)

@ -27,7 +27,7 @@ defaultproperties
DefLevelCosts(2)=25
DefLevelCosts(3)=40
DefLevelCosts(4)=60
HPList.Add(1.25)
HPList.Add(1.5)
HPList.Add(1.75)

@ -74,7 +74,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
// First check level.
if (Perk.CurrentLevel<Default.MinLevel || (Lvl>=5 && Perk.CurrentPrestige<Default.FinalLevelPrestige))
return false;
// Then check base trait.
if (Lvl==0 && Default.BaseTrait!=None)
{
@ -93,7 +93,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
H = Player.Spawn(class'Ext_T_ZEDHelper',Player);
if (H!=None)
H.CurLevel = Level-1;
// Make other traits refresh (apply HP/damage scalers).
for (i=0; i<Perk.PerkTraits.Length; ++i)
if (Perk.PerkTraits[i].CurrentLevel>0 && Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType)!=None && !Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType).Default.bIsSummoner)
@ -113,7 +113,7 @@ static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Leve
static function string GetRepData()
{
local string S;
S = Super.GetRepData();
S $= IntToStr(Default.FinalLevelPrestige);
return S;
@ -173,14 +173,14 @@ defaultproperties
DefLevelCosts(4)=30
DefLevelCosts(5)=100
DefMinLevel=20
DefZedTypes.Add((Zeds=(Class'KFPawn_ZedClot_Alpha',Class'KFPawn_ZedClot_Slasher',Class'KFPawn_ZedClot_Cyst',Class'KFPawn_ZedCrawler')))
DefZedTypes.Add((Zeds=(Class'KFPawn_ZedClot_Slasher',Class'KFPawn_ZedGorefast',Class'KFPawn_ZedStalker')))
DefZedTypes.Add((Zeds=(Class'KFPawn_ZedBloat',Class'KFPawn_ZedStalker',Class'KFPawn_ZedGorefast')))
DefZedTypes.Add((Zeds=(Class'KFPawn_ZedHusk',Class'KFPawn_ZedSirenX',Class'KFPawn_ZedScrake')))
DefZedTypes.Add((Zeds=(Class'KFPawn_ZedSirenX',Class'KFPawn_ZedFleshpound',Class'KFPawn_ZedScrake')))
DefZedTypes.Add((Zeds=(Class'ExtPawn_ZedHans_Pet')))
WebConfigs.Add((PropType=2,PropName="ZedTypes",UIName="Zed Types",UIDesc="Type of zeds each level can spawn (separate types with a comma)",NumElements=-1))
WebConfigs.Add((PropType=0,PropName="ZedRespawnTime",UIName="Zed RespawnTime",UIDesc="Time in seconds it takes for zeds to respawn"))
WebConfigs.Add((PropType=0,PropName="FinalLevelPrestige",UIName="Final Level Prestige",UIDesc="Prestige level required for this perks final level"))

@ -26,7 +26,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level
AddHelperType(MaxLevel*0.8,Player);
break;
}
// Make other traits refresh (apply HP/damage scalers).
for (i=0; i<Perk.PerkTraits.Length; ++i)
if (Perk.PerkTraits[i].CurrentLevel>0 && Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType)!=None && !Class<Ext_TraitZEDBase>(Perk.PerkTraits[i].TraitType).Default.bIsSummoner)
@ -45,7 +45,7 @@ static function CancelEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Leve
static final function AddHelperType(byte Lv, KFPawn_Human Player)
{
local Ext_T_ZEDHelper H;
H = Player.Spawn(class'Ext_T_ZEDHelper',Player);
if (H!=None)
{

@ -17,14 +17,14 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk)
if (Perk.CurrentLevel<Default.MinLevel || Perk.CurrentPrestige<2)
return false;
if (Lvl==0)
{
i = Perk.PerkStats.Find('StatType','Heal');
if (i>=0)
return (Perk.PerkStats[i].CurrentValue>=25);
}
return true;
}

@ -50,7 +50,7 @@ function PickDefaultFontSize(float YRes)
final function DrawText(byte Res, string S)
{
local float Scale;
Canvas.Font = PickFont(Res,Scale);
Canvas.DrawText(S,,Scale,Scale);
}
@ -105,7 +105,7 @@ final function DrawRectBox(int X, int Y, int XS, int YS, int Edge, optional byte
// Top left
Canvas.SetPos(X,Y);
DrawCornerTex(Edge,0);
if (Extrav<=1)
{
if (Extrav==0)
@ -113,11 +113,11 @@ final function DrawRectBox(int X, int Y, int XS, int YS, int Edge, optional byte
// Top right
Canvas.SetPos(X+XS-Edge,Y);
DrawCornerTex(Edge,1);
// Bottom right
Canvas.SetPos(X+XS-Edge,Y+YS-Edge);
DrawCornerTex(Edge,3);
// Fill
Canvas.SetPos(X+Edge,Y);
DrawWhiteBox(XS-Edge*2,YS);
@ -131,7 +131,7 @@ final function DrawRectBox(int X, int Y, int XS, int YS, int Edge, optional byte
// Top right
Canvas.SetPos(X+XS,Y);
DrawCornerTex(Edge,3);
// Bottom right
Canvas.SetPos(X+XS,Y+YS-Edge);
DrawCornerTex(Edge,1);
@ -142,7 +142,7 @@ final function DrawRectBox(int X, int Y, int XS, int YS, int Edge, optional byte
Canvas.SetPos(X,Y+Edge);
DrawWhiteBox(Edge,YS-Edge*2);
}
// Bottom left
Canvas.SetPos(X,Y+YS-Edge);
DrawCornerTex(Edge,2);
@ -152,15 +152,15 @@ final function DrawRectBox(int X, int Y, int XS, int YS, int Edge, optional byte
// Top right
Canvas.SetPos(X+XS-Edge,Y);
DrawCornerTex(Edge,1);
// Bottom right
Canvas.SetPos(X+XS-Edge,Y+YS);
DrawCornerTex(Edge,2);
// Bottom left
Canvas.SetPos(X,Y+YS);
DrawCornerTex(Edge,3);
// Fill
Canvas.SetPos(X,Y+Edge);
DrawWhiteBox(XS,YS-Edge);

@ -58,7 +58,7 @@ simulated function HandleDrawMenu()
{
OrgConsole = ClientViewport.ViewportConsole;
ClientViewport.ViewportConsole = HackConsole;
// Make sure nothing overrides these settings while menu is being open.
PlayerOwner.PlayerInput = CustomInput;
if (!ClientViewport.bDisplayHardwareMouseCursor)
@ -111,7 +111,7 @@ simulated function RenderMenu(Canvas C)
}
C.SetOrigin(OrgX,OrgY);
C.SetClip(ClipX,ClipY);
if (OrgConsole!=None)
OrgConsole.PostRender_Console(C);
OrgConsole = None;
@ -194,7 +194,7 @@ simulated function MenuInput(float DeltaTime)
InputFocus.MenuTick(DeltaTime);
for (i=0; i<ActiveMenus.Length; ++i)
ActiveMenus[i].MenuTick(DeltaTime);
// Check idle.
if (Abs(MousePosition.X-OldMousePos.X)>5.f || Abs(MousePosition.Y-OldMousePos.Y)>5.f || (bMouseWasIdle && MousePauseTime<0.5f))
{
@ -223,9 +223,9 @@ simulated function MouseMove(float MouseX, float MouseY)
local int i;
local KFGUI_Base F;
// Handle mouse
MousePosition.X = Clamp(MouseX, 0, ScreenSize.X);
MousePosition.Y = Clamp(MouseY, 0, ScreenSize.Y);
// Handle mouse
MousePosition.X = Clamp(MouseX, 0, ScreenSize.X);
MousePosition.Y = Clamp(MouseY, 0, ScreenSize.Y);
// Capture mouse for GUI
if (InputFocus!=None && InputFocus.bCanFocus)
@ -280,7 +280,7 @@ simulated function MouseMove(float MouseX, float MouseY)
simulated final function int GetFreeIndex(bool bNewAlwaysTop) // Find first allowed top index of the stack.
{
local int i;
for (i=0; i<ActiveMenus.Length; ++i)
if (bNewAlwaysTop || !ActiveMenus[i].bAlwaysTop)
{
@ -296,7 +296,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
{
local int i;
local KFGUI_Page M;
if (MenuClass==None)
return None;
@ -310,7 +310,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
// Enable mouse on UI if disabled.
SetMenuState(true);
// Check if should use pre-excisting menu.
if (MenuClass.Default.bUnique)
{
@ -326,7 +326,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
}
return M;
}
if (MenuClass.Default.bPersistant)
{
for (i=0; i<PersistentMenus.Length; ++i)
@ -345,7 +345,7 @@ simulated function KFGUI_Page OpenMenu(class<KFGUI_Page> MenuClass)
if (M==None) // Probably abstract class.
return None;
i = GetFreeIndex(M.bAlwaysTop);
ActiveMenus[i] = M;
M.Owner = Self;
@ -361,7 +361,7 @@ simulated function CloseMenu(class<KFGUI_Page> MenuClass, optional bool bCloseAl
if (!bCloseAll && MenuClass==None)
return;
if (KeyboardFocus!=None)
GrabInputFocus(None);
if (InputFocus!=None)
@ -375,7 +375,7 @@ simulated function CloseMenu(class<KFGUI_Page> MenuClass, optional bool bCloseAl
M = ActiveMenus[i];
ActiveMenus.Remove(i,1);
M.CloseMenu();
// Cache menu.
if (M.bPersistant && M.bUnique)
PersistentMenus[PersistentMenus.Length] = M;
@ -391,7 +391,7 @@ simulated function PopCloseMenu(KFGUI_Base Item)
if (Item==None)
return;
if (KeyboardFocus!=None)
GrabInputFocus(None);
if (InputFocus!=None)
@ -405,7 +405,7 @@ simulated function PopCloseMenu(KFGUI_Base Item)
M = ActiveMenus[i];
ActiveMenus.Remove(i,1);
M.CloseMenu();
// Cache menu.
if (M.bPersistant && M.bUnique)
PersistentMenus[PersistentMenus.Length] = M;
@ -418,7 +418,7 @@ simulated function PopCloseMenu(KFGUI_Base Item)
simulated function BringMenuToFront(KFGUI_Page Page)
{
local int i;
if (ActiveMenus[0].bAlwaysTop && !Page.bAlwaysTop)
return; // Can't override this menu.
@ -431,7 +431,7 @@ simulated function BringMenuToFront(KFGUI_Page Page)
}
if (i==-1)
return; // Page isn't open.
// Put on front of stack.
ActiveMenus.Insert(0,1);
ActiveMenus[0] = Page;
@ -440,7 +440,7 @@ simulated function BringMenuToFront(KFGUI_Page Page)
simulated final function bool MenuIsOpen(optional class<KFGUI_Page> MenuClass)
{
local int i;
for (i=(ActiveMenus.Length-1); i>=0; --i)
if (MenuClass==None || ActiveMenus[i].Class==MenuClass)
return true;
@ -473,7 +473,7 @@ simulated final function GUI_InputMouse(bool bPressed, bool bRight)
local byte i;
MousePauseTime = 0;
if (bPressed)
{
if (KeyboardFocus!=None && KeyboardFocus!=MouseFocus)
@ -606,4 +606,4 @@ defaultproperties
{
DefaultStyle=class'KF2Style'
bAbsorbInput=true
}
}

@ -21,7 +21,7 @@ function PlayerInput(float DeltaTime)
{
// Do not move.
ControllerOwner.MenuInput(DeltaTime);
if (!ControllerOwner.bAbsorbInput)
{
aMouseX = 0;
@ -59,4 +59,5 @@ function PreClientTravel(string PendingURL, ETravelType TravelType, bool bIsSeam
defaultproperties
{
}

@ -9,7 +9,7 @@ var bool bLocalClient;
static function OpenMenuForClient(PlayerController PC, class<KFGUI_Page> Page)
{
local KF2GUINetwork G;
foreach PC.ChildActors(class'KF2GUINetwork',G)
break;
if (G==None)
@ -20,7 +20,7 @@ static function OpenMenuForClient(PlayerController PC, class<KFGUI_Page> Page)
static function CloseMenuForClient(PlayerController PC, class<KFGUI_Page> Page, optional bool bCloseAll)
{
local KF2GUINetwork G;
foreach PC.ChildActors(class'KF2GUINetwork',G)
break;
if (G==None)
@ -61,4 +61,4 @@ defaultproperties
{
bAlwaysRelevant=false
bOnlyRelevantToOwner=true
}
}

Some files were not shown because too many files have changed in this diff Show More