From 7175a6c7b6a300023f1229136f670aa67dc00e4f Mon Sep 17 00:00:00 2001 From: GenZmeY Date: Sun, 14 May 2023 05:49:12 +0300 Subject: [PATCH] fix style --- Localization/CHT/ServerExt.CHT | Bin 38428 -> 36922 bytes Localization/ESN/ServerExt.esn | Bin 62042 -> 60534 bytes Localization/INT/ServerExt.int | Bin 56312 -> 54806 bytes Localization/JPN/ServerExt.jpn | Bin 41220 -> 39714 bytes Localization/RUS/ServerExt.rus | Bin 57136 -> 55630 bytes PublicationContent/description.txt | 4 +- ServerExt/Classes/ExtAutoPurchaseHelper.uc | 20 +- ServerExt/Classes/ExtCharDataInfo.uc | 3 +- ServerExt/Classes/ExtCharacterInfo.uc | 30 +- ServerExt/Classes/ExtEmoteList.uc | 10 +- ServerExt/Classes/ExtExplosion_SirenScream.uc | 1 + ServerExt/Classes/ExtGUI_PerkSelectionPage.uc | 12 +- ServerExt/Classes/ExtHUD_PlayerBackpack.uc | 3 +- ServerExt/Classes/ExtHUD_PlayerStatus.uc | 6 +- ServerExt/Classes/ExtHUD_SpectatorInfo.uc | 5 +- .../Classes/ExtHUD_WeaponSelectWidget.uc | 3 +- ServerExt/Classes/ExtHumanPawn.uc | 86 +- ServerExt/Classes/ExtInventoryManager.uc | 12 +- ServerExt/Classes/ExtMenu_Gear.uc | 64 +- ServerExt/Classes/ExtMenu_Inventory.uc | 1 + ServerExt/Classes/ExtMenu_Perks.uc | 4 +- ServerExt/Classes/ExtMenu_Trader.uc | 2 +- ServerExt/Classes/ExtMoviePlayer_HUD.uc | 8 +- ServerExt/Classes/ExtMoviePlayer_Manager.uc | 18 +- ServerExt/Classes/ExtPawn_Customization.uc | 7 +- ServerExt/Classes/ExtPawn_ZedHans_Pet.uc | 1 + ServerExt/Classes/ExtPerkManager.uc | 50 +- ServerExt/Classes/ExtPerksContainer_Header.uc | 2 +- .../Classes/ExtPerksContainer_Selection.uc | 8 +- ServerExt/Classes/ExtPlayerController.uc | 34 +- ServerExt/Classes/ExtPlayerReplicationInfo.uc | 18 +- ServerExt/Classes/ExtProj_CrackerGrenade.uc | 2 +- ServerExt/Classes/ExtProj_SUPERMedGrenade.uc | 2 +- ServerExt/Classes/ExtProj_SUPERMolotov.uc | 6 +- ServerExt/Classes/ExtProj_SUPERMolotovS.uc | 2 +- ServerExt/Classes/ExtSM_Player_Emote.uc | 3 +- ServerExt/Classes/ExtSM_Siren_Scream.uc | 4 +- ServerExt/Classes/ExtSpawnPointHelper.uc | 6 +- .../Classes/ExtTraderContainer_Filter.uc | 2 +- .../Classes/ExtTraderContainer_PlayerInfo.uc | 1 + ServerExt/Classes/ExtTraderContainer_Store.uc | 8 +- ServerExt/Classes/ExtWeapDef_9mm.uc | 2 +- ServerExt/Classes/ExtWeapDef_MedicPistol.uc | 2 +- ServerExt/Classes/ExtWeap_Pistol_9mm.uc | 4 +- ServerExt/Classes/ExtWeap_Pistol_Dual9mm.uc | 6 +- ServerExt/Classes/ExtWeap_Pistol_MedicS.uc | 6 +- ServerExt/Classes/ExtWeaponSkinList.uc | 19 +- ServerExt/Classes/ExtWebAdmin_UI.uc | 4 +- ServerExt/Classes/ExtWidget_PartyInGame.uc | 14 +- ServerExt/Classes/Ext_AICommandBasePet.uc | 12 +- ServerExt/Classes/Ext_AINoTaunt.uc | 1 + ServerExt/Classes/Ext_PerkBase.uc | 66 +- ServerExt/Classes/Ext_PerkBerserker.uc | 6 +- ServerExt/Classes/Ext_PerkCommando.uc | 6 +- ServerExt/Classes/Ext_PerkDemolition.uc | 20 +- ServerExt/Classes/Ext_PerkFieldMedic.uc | 30 +- ServerExt/Classes/Ext_PerkFirebug.uc | 4 +- ServerExt/Classes/Ext_PerkGunslinger.uc | 6 +- ServerExt/Classes/Ext_PerkRhythmPerkBase.uc | 14 +- ServerExt/Classes/Ext_PerkSharpshooter.uc | 6 +- ServerExt/Classes/Ext_PerkSupport.uc | 4 +- ServerExt/Classes/Ext_TGroupMonster.uc | 1 + ServerExt/Classes/Ext_TGroupRegen.uc | 1 + ServerExt/Classes/Ext_TGroupZEDTime.uc | 1 + ServerExt/Classes/Ext_T_AutoFireHelper.uc | 2 +- ServerExt/Classes/Ext_T_GhostHelper.uc | 10 +- ServerExt/Classes/Ext_T_HealthRegHelp.uc | 1 + ServerExt/Classes/Ext_T_SupplierInteract.uc | 14 +- ServerExt/Classes/Ext_T_ZEDHelper.uc | 16 +- ServerExt/Classes/Ext_TraitAirborneAgent.uc | 4 +- ServerExt/Classes/Ext_TraitAmmoReg.uc | 2 +- ServerExt/Classes/Ext_TraitArmorReg.uc | 2 +- ServerExt/Classes/Ext_TraitBase.uc | 8 +- ServerExt/Classes/Ext_TraitDataStore.uc | 1 + ServerExt/Classes/Ext_TraitDemoNuke.uc | 12 +- .../Classes/Ext_TraitDemoProfessional.uc | 4 +- ServerExt/Classes/Ext_TraitHealthReg.uc | 2 +- ServerExt/Classes/Ext_TraitHeavyArmor.uc | 2 +- ServerExt/Classes/Ext_TraitPenetrator.uc | 4 +- ServerExt/Classes/Ext_TraitRagdoll.uc | 2 +- ServerExt/Classes/Ext_TraitRetali.uc | 2 +- ServerExt/Classes/Ext_TraitSupply.uc | 2 +- ServerExt/Classes/Ext_TraitSupplyData.uc | 4 +- ServerExt/Classes/Ext_TraitSupplyGren.uc | 2 +- ServerExt/Classes/Ext_TraitTactician.uc | 4 +- ServerExt/Classes/Ext_TraitUnCloak.uc | 2 +- ServerExt/Classes/Ext_TraitWPBers.uc | 2 +- ServerExt/Classes/Ext_TraitWPDemo.uc | 2 +- ServerExt/Classes/Ext_TraitWPFire.uc | 2 +- ServerExt/Classes/Ext_TraitWeapons.uc | 2 +- ServerExt/Classes/Ext_TraitZEDBase.uc | 2 +- ServerExt/Classes/Ext_TraitZED_Damage.uc | 2 +- ServerExt/Classes/Ext_TraitZED_Health.uc | 2 +- ServerExt/Classes/Ext_TraitZED_Summon.uc | 10 +- ServerExt/Classes/Ext_TraitZED_SummonExt.uc | 4 +- ServerExt/Classes/Ext_TraitZedative.uc | 4 +- ServerExt/Classes/GUIStyleBase.uc | 18 +- ServerExt/Classes/KF2GUIController.uc | 40 +- ServerExt/Classes/KF2GUIInput.uc | 3 +- ServerExt/Classes/KF2GUINetwork.uc | 6 +- ServerExt/Classes/KF2Style.uc | 60 +- ServerExt/Classes/KFDT_ZombieHit.uc | 2 +- ServerExt/Classes/KFExtendedHUD.uc | 78 +- ServerExt/Classes/KFGUI_Base.uc | 10 +- ServerExt/Classes/KFGUI_Button.uc | 2 +- ServerExt/Classes/KFGUI_Button_CD.uc | 5 +- ServerExt/Classes/KFGUI_CheckBox.uc | 2 +- ServerExt/Classes/KFGUI_Clickable.uc | 1 + ServerExt/Classes/KFGUI_ColumnList.uc | 48 +- ServerExt/Classes/KFGUI_ColumnTop.uc | 14 +- ServerExt/Classes/KFGUI_ComboBox.uc | 2 +- ServerExt/Classes/KFGUI_ComboSelector.uc | 2 +- ServerExt/Classes/KFGUI_ComponentList.uc | 12 +- ServerExt/Classes/KFGUI_EditBox.uc | 10 +- ServerExt/Classes/KFGUI_EditControl.uc | 4 +- ServerExt/Classes/KFGUI_FloatingWindow.uc | 3 +- .../Classes/KFGUI_FloatingWindowHeader.uc | 2 +- ServerExt/Classes/KFGUI_HTMLTextBox.txt | 928 ------------------ ServerExt/Classes/KFGUI_List.uc | 8 +- ServerExt/Classes/KFGUI_List_CD.uc | 4 +- ServerExt/Classes/KFGUI_MultiComponent.uc | 12 +- ServerExt/Classes/KFGUI_NumericBox.uc | 2 +- ServerExt/Classes/KFGUI_Page.uc | 2 +- ServerExt/Classes/KFGUI_RightClickMenu.uc | 6 +- ServerExt/Classes/KFGUI_RightClickMenu_CD.uc | 9 +- ServerExt/Classes/KFGUI_ScrollBarBase.uc | 4 +- ServerExt/Classes/KFGUI_ScrollBarH.uc | 1 + ServerExt/Classes/KFGUI_ScrollBarV.uc | 2 +- ServerExt/Classes/KFGUI_ScrollBarV_CD.uc | 9 +- ServerExt/Classes/KFGUI_SwitchComponent.uc | 2 +- ServerExt/Classes/KFGUI_SwitchMenuBar.uc | 12 +- ServerExt/Classes/KFGUI_TextField.uc | 26 +- ServerExt/Classes/KFGUI_TextLable.uc | 4 +- ServerExt/Classes/KFGUI_Tooltip.uc | 2 +- ServerExt/Classes/KFGUI_Tooltip_CD.uc | 7 +- ServerExt/Classes/KFPawn_ZedSirenX.uc | 2 +- ServerExt/Classes/MS_Game.uc | 2 +- ServerExt/Classes/MS_HUD.uc | 3 +- ServerExt/Classes/MS_Input.uc | 2 +- ServerExt/Classes/MS_PC.uc | 2 +- ServerExt/Classes/MS_TMPUI.uc | 2 +- ServerExt/Classes/MX_MiniGameBase.uc | 10 +- ServerExt/Classes/MX_PongGame.uc | 22 +- ServerExt/Classes/SRPerkManager.uc | 1 + ServerExt/Classes/UIP_About.uc | 6 +- ServerExt/Classes/UIP_AdminMenu.uc | 20 +- ServerExt/Classes/UIP_MiniGame.uc | 8 +- ServerExt/Classes/UIP_News.uc | 6 +- ServerExt/Classes/UIP_PerkSelection.uc | 36 +- ServerExt/Classes/UIP_PerkSelectionLobby.uc | 4 +- ServerExt/Classes/UIP_PlayerSpecs.uc | 18 +- ServerExt/Classes/UIP_Settings.uc | 14 +- ServerExt/Classes/UIR_PerkStat.uc | 6 +- ServerExt/Classes/UIR_PerkTraitList.uc | 18 +- ServerExt/Classes/UIR_TraitInfoPopup.uc | 8 +- ServerExt/Classes/UI_AdminMOTD.uc | 14 +- ServerExt/Classes/UI_AdminPerkLevel.uc | 2 +- ServerExt/Classes/UI_MidGameMenu.uc | 22 +- ServerExt/Classes/UI_PrestigeNote.uc | 2 +- ServerExt/Classes/UI_ResetWarning.uc | 8 +- ServerExt/Classes/UI_Scoreboard.uc | 60 +- ServerExt/Classes/UI_Scoreboard_CD.uc | 66 +- ServerExt/Classes/UI_UnloadInfo.uc | 12 +- ServerExt/Classes/VSFPZedHands.uc | 2 +- ServerExt/Classes/VSZombie.uc | 14 +- ServerExt/Classes/VS_ZedClotBase.uc | 2 +- ServerExt/Classes/VS_ZedRecentZed.uc | 6 +- ServerExt/Classes/xUI_MapRank.uc | 8 +- ServerExt/Classes/xUI_MapVote.uc | 22 +- ServerExt/Classes/xVotingReplication.uc | 6 +- ServerExtMut/Classes/CtryDatabase.uc | 2 +- ServerExtMut/Classes/ExtPlayerStat.uc | 13 +- ServerExtMut/Classes/ExtStatList.uc | 4 +- ServerExtMut/Classes/ExtWebApp.uc | 20 +- ServerExtMut/Classes/ExtXMLOutput.uc | 2 +- ServerExtMut/Classes/KFGI_Access.uc | 2 +- ServerExtMut/Classes/ServerExtMut.uc | 130 +-- ServerExtMut/Classes/xMapVoteHistory.uc | 2 +- ServerExtMut/Classes/xVoteBroadcast.uc | 1 + ServerExtMut/Classes/xVoteWebApp.uc | 8 +- ServerExtMut/Classes/xVotingHandler.uc | 60 +- 181 files changed, 979 insertions(+), 1882 deletions(-) delete mode 100644 ServerExt/Classes/KFGUI_HTMLTextBox.txt diff --git a/Localization/CHT/ServerExt.CHT b/Localization/CHT/ServerExt.CHT index d66b345343dc09d03be0f7a025f0d11c53fc88bd..7121e1abc9e9c706772b39d391a309756b8d1df6 100644 GIT binary patch delta 4810 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 diff --git a/Localization/ESN/ServerExt.esn b/Localization/ESN/ServerExt.esn index 2d64d2a2d1eb1ea235a99e52c65512440bbf79af..4c748ea7cc815e6c32d9efbc674a82fbf046eda5 100644 GIT binary patch delta 4697 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 delta 6044 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 b8v8(bqFWv+ul-kLNZ%8{c7BxV2)+IbI-3U2 diff --git a/Localization/INT/ServerExt.int b/Localization/INT/ServerExt.int index ebae82379ec35c8a3ef77bf9c15adfc7454925eb..3e1d577288bac88c987f8ea14f07f9c258072887 100644 GIT binary patch delta 4492 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 delta 6417 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 WE`9eySIbJ}3kf?u`F)~2wEKU3H10V7 diff --git a/Localization/JPN/ServerExt.jpn b/Localization/JPN/ServerExt.jpn index ad323954be53413d908fbceedcf06d85f4375991..f2ef2dfb49de281fcc538d33b0277ccf9d1e6a4a 100644 GIT binary patch delta 4858 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 RT{;{;F@XE)`4kOK?4R!=VC(<@ diff --git a/Localization/RUS/ServerExt.rus b/Localization/RUS/ServerExt.rus index f6de03615f8127cbd3ae94e5e0d51f02d37e88f6..e153000b09b243de28abe0ce4bf27d3ada05d7c6 100644 GIT binary patch delta 4573 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 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 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) { diff --git a/ServerExt/Classes/ExtCharDataInfo.uc b/ServerExt/Classes/ExtCharDataInfo.uc index f2c11ea..d880585 100644 --- a/ServerExt/Classes/ExtCharDataInfo.uc +++ b/ServerExt/Classes/ExtCharDataInfo.uc @@ -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 { + } \ No newline at end of file diff --git a/ServerExt/Classes/ExtCharacterInfo.uc b/ServerExt/Classes/ExtCharacterInfo.uc index 54d6c0c..887fce8 100644 --- a/ServerExt/Classes/ExtCharacterInfo.uc +++ b/ServerExt/Classes/ExtCharacterInfo.uc @@ -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 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; -} \ No newline at end of file +} diff --git a/ServerExt/Classes/ExtEmoteList.uc b/ServerExt/Classes/ExtEmoteList.uc index bc57831..afcf4e4 100644 --- a/ServerExt/Classes/ExtEmoteList.uc +++ b/ServerExt/Classes/ExtEmoteList.uc @@ -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; } diff --git a/ServerExt/Classes/ExtExplosion_SirenScream.uc b/ServerExt/Classes/ExtExplosion_SirenScream.uc index 4119c7b..eeee37f 100644 --- a/ServerExt/Classes/ExtExplosion_SirenScream.uc +++ b/ServerExt/Classes/ExtExplosion_SirenScream.uc @@ -7,4 +7,5 @@ protected function SpecialCringeEffectsfor (Actor Victim, float VictimDist) defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/ExtGUI_PerkSelectionPage.uc b/ServerExt/Classes/ExtGUI_PerkSelectionPage.uc index 5ea1950..513049b 100644 --- a/ServerExt/Classes/ExtGUI_PerkSelectionPage.uc +++ b/ServerExt/Classes/ExtGUI_PerkSelectionPage.uc @@ -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 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 WeaponList, byte Group defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/ExtHumanPawn.uc b/ServerExt/Classes/ExtHumanPawn.uc index 4a19fbc..5bbd5fc 100644 --- a/ServerExt/Classes/ExtHumanPawn.uc +++ b/ServerExt/Classes/ExtHumanPawn.uc @@ -79,10 +79,10 @@ simulated function bool Died(Controller Killer, class 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 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, 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 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 WC) { MyPos = vect(-5,15,0); MyRot = rot(0,0,0); - + if (class(WC) != none || class(WC) != none) MyPos.Z = -20; - + B = 'Spine'; } else @@ -1142,7 +1142,7 @@ simulated final function SetBackpackWeapon(class 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 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') diff --git a/ServerExt/Classes/ExtInventoryManager.uc b/ServerExt/Classes/ExtInventoryManager.uc index 0bfa274..f408db0 100644 --- a/ServerExt/Classes/ExtInventoryManager.uc +++ b/ServerExt/Classes/ExtInventoryManager.uc @@ -25,10 +25,10 @@ simulated function Inventory CreateInventory(class 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 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); } \ No newline at end of file diff --git a/ServerExt/Classes/ExtMenu_Gear.uc b/ServerExt/Classes/ExtMenu_Gear.uc index e6fd815..44ad4a1 100644 --- a/ServerExt/Classes/ExtMenu_Gear.uc +++ b/ServerExt/Classes/ExtMenu_Gear.uc @@ -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 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 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 Attachments) local Pawn MyPawn; local SkinVariant FirstSkin; local string AttachmentName; - + ItemIndex = 0; DataProvider = CreateArray(); MyPawn = GetPC().Pawn; @@ -335,12 +335,12 @@ function UpdateAttachmentsList(array 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); diff --git a/ServerExt/Classes/ExtMenu_Inventory.uc b/ServerExt/Classes/ExtMenu_Inventory.uc index 5cf1565..94c5108 100644 --- a/ServerExt/Classes/ExtMenu_Inventory.uc +++ b/ServerExt/Classes/ExtMenu_Inventory.uc @@ -62,4 +62,5 @@ function Callback_Equip(int ItemDefinition) defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/ExtMenu_Perks.uc b/ServerExt/Classes/ExtMenu_Perks.uc index 82882eb..787d34e 100644 --- a/ServerExt/Classes/ExtMenu_Perks.uc +++ b/ServerExt/Classes/ExtMenu_Perks.uc @@ -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); } diff --git a/ServerExt/Classes/ExtMenu_Trader.uc b/ServerExt/Classes/ExtMenu_Trader.uc index ac0c30e..c938781 100644 --- a/ServerExt/Classes/ExtMenu_Trader.uc +++ b/ServerExt/Classes/ExtMenu_Trader.uc @@ -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(); diff --git a/ServerExt/Classes/ExtMoviePlayer_HUD.uc b/ServerExt/Classes/ExtMoviePlayer_HUD.uc index 73598e4..65ebff1 100644 --- a/ServerExt/Classes/ExtMoviePlayer_HUD.uc +++ b/ServerExt/Classes/ExtMoviePlayer_HUD.uc @@ -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 diff --git a/ServerExt/Classes/ExtMoviePlayer_Manager.uc b/ServerExt/Classes/ExtMoviePlayer_Manager.uc index 1030ee1..0d371c1 100644 --- a/ServerExt/Classes/ExtMoviePlayer_Manager.uc +++ b/ServerExt/Classes/ExtMoviePlayer_Manager.uc @@ -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')) diff --git a/ServerExt/Classes/ExtPawn_Customization.uc b/ServerExt/Classes/ExtPawn_Customization.uc index a92b602..de70544 100644 --- a/ServerExt/Classes/ExtPawn_Customization.uc +++ b/ServerExt/Classes/ExtPawn_Customization.uc @@ -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 diff --git a/ServerExt/Classes/ExtPawn_ZedHans_Pet.uc b/ServerExt/Classes/ExtPawn_ZedHans_Pet.uc index 4d849fa..c7d44d2 100644 --- a/ServerExt/Classes/ExtPawn_ZedHans_Pet.uc +++ b/ServerExt/Classes/ExtPawn_ZedHans_Pet.uc @@ -7,4 +7,5 @@ static simulated event bool IsABoss() defaultproperties { + } diff --git a/ServerExt/Classes/ExtPerkManager.uc b/ServerExt/Classes/ExtPerkManager.uc index ebec5db..d3c5c89 100644 --- a/ServerExt/Classes/ExtPerkManager.uc +++ b/ServerExt/Classes/ExtPerkManager.uc @@ -62,7 +62,7 @@ simulated reliable client function ClientSetGrenadeCap(byte NewCap) function bool ApplyPerkClass(class P) { local int i; - + for (i=0; i P) function bool ApplyPerkName(string S) { local int i; - + for (i=0; i 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 P) { local int i; - + for (i=0; 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 { 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 diff --git a/ServerExt/Classes/ExtPerksContainer_Header.uc b/ServerExt/Classes/ExtPerksContainer_Header.uc index 99c60ca..3682079 100644 --- a/ServerExt/Classes/ExtPerksContainer_Header.uc +++ b/ServerExt/Classes/ExtPerksContainer_Header.uc @@ -1,7 +1,7 @@ class ExtPerksContainer_Header extends KFGFxPerksContainer_Header; final function ExUpdatePerkHeader(Ext_PerkBase PerkClass) -{ +{ local GFxObject PerkDataProvider; PerkDataProvider = CreateObject("Object"); diff --git a/ServerExt/Classes/ExtPerksContainer_Selection.uc b/ServerExt/Classes/ExtPerksContainer_Selection.uc index ffbc651..f3d9c87 100644 --- a/ServerExt/Classes/ExtPerksContainer_Selection.uc +++ b/ServerExt/Classes/ExtPerksContainer_Selection.uc @@ -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); diff --git a/ServerExt/Classes/ExtPlayerController.uc b/ServerExt/Classes/ExtPlayerController.uc index 3d49d5e..67605fd 100644 --- a/ServerExt/Classes/ExtPlayerController.uc +++ b/ServerExt/Classes/ExtPlayerController.uc @@ -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 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=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 diff --git a/ServerExt/Classes/ExtPlayerReplicationInfo.uc b/ServerExt/Classes/ExtPlayerReplicationInfo.uc index 28f14ed..b9bad05 100644 --- a/ServerExt/Classes/ExtPlayerReplicationInfo.uc +++ b/ServerExt/Classes/ExtPlayerReplicationInfo.uc @@ -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 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(); diff --git a/ServerExt/Classes/ExtTraderContainer_Filter.uc b/ServerExt/Classes/ExtTraderContainer_Filter.uc index 7d1a425..0eeb25c 100644 --- a/ServerExt/Classes/ExtTraderContainer_Filter.uc +++ b/ServerExt/Classes/ExtTraderContainer_Filter.uc @@ -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; diff --git a/ServerExt/Classes/ExtTraderContainer_PlayerInfo.uc b/ServerExt/Classes/ExtTraderContainer_PlayerInfo.uc index a65fa6c..207ea62 100644 --- a/ServerExt/Classes/ExtTraderContainer_PlayerInfo.uc +++ b/ServerExt/Classes/ExtTraderContainer_PlayerInfo.uc @@ -52,4 +52,5 @@ function SetPerkList() defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/ExtTraderContainer_Store.uc b/ServerExt/Classes/ExtTraderContainer_Store.uc index 6674776..ddde305 100644 --- a/ServerExt/Classes/ExtTraderContainer_Store.uc +++ b/ServerExt/Classes/ExtTraderContainer_Store.uc @@ -52,11 +52,11 @@ function RefreshWeaponListByPerk(byte FilterIndex, const out array 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 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 { SetItemInfo(ItemDataArray, OffPerkWeapons[i], SlotIndex); SlotIndex++; - } + } SetObject("shopData", ItemDataArray); } diff --git a/ServerExt/Classes/ExtWeapDef_9mm.uc b/ServerExt/Classes/ExtWeapDef_9mm.uc index ba79511..405b24a 100644 --- a/ServerExt/Classes/ExtWeapDef_9mm.uc +++ b/ServerExt/Classes/ExtWeapDef_9mm.uc @@ -7,4 +7,4 @@ defaultproperties AmmoPricePerMag=0 WeaponClassPath="ServerExt.ExtWeap_Pistol_9mm" -} \ No newline at end of file +} diff --git a/ServerExt/Classes/ExtWeapDef_MedicPistol.uc b/ServerExt/Classes/ExtWeapDef_MedicPistol.uc index ea800b3..4a4b93d 100644 --- a/ServerExt/Classes/ExtWeapDef_MedicPistol.uc +++ b/ServerExt/Classes/ExtWeapDef_MedicPistol.uc @@ -16,4 +16,4 @@ defaultproperties UpgradeSellPrice[1] = 0 UpgradeSellPrice[2] = 0 UpgradeSellPrice[3] = 0 -} \ No newline at end of file +} diff --git a/ServerExt/Classes/ExtWeap_Pistol_9mm.uc b/ServerExt/Classes/ExtWeap_Pistol_9mm.uc index 302be76..6b98dd8 100644 --- a/ServerExt/Classes/ExtWeap_Pistol_9mm.uc +++ b/ServerExt/Classes/ExtWeap_Pistol_9mm.uc @@ -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(); -} \ No newline at end of file +} diff --git a/ServerExt/Classes/ExtWeap_Pistol_Dual9mm.uc b/ServerExt/Classes/ExtWeap_Pistol_Dual9mm.uc index 4a1abd6..56c0549 100644 --- a/ServerExt/Classes/ExtWeap_Pistol_Dual9mm.uc +++ b/ServerExt/Classes/ExtWeap_Pistol_Dual9mm.uc @@ -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 GetWeaponPerkClass(class InstigatorPerkClass) @@ -28,4 +28,4 @@ simulated static event class GetWeaponPerkClass(class Instigator return InstigatorPerkClass; return default.AssociatedPerkClasses[0]; -} \ No newline at end of file +} diff --git a/ServerExt/Classes/ExtWeap_Pistol_MedicS.uc b/ServerExt/Classes/ExtWeap_Pistol_MedicS.uc index 9f3347d..589ba17 100644 --- a/ServerExt/Classes/ExtWeap_Pistol_MedicS.uc +++ b/ServerExt/Classes/ExtWeap_Pistol_MedicS.uc @@ -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(); -} \ No newline at end of file +} diff --git a/ServerExt/Classes/ExtWeaponSkinList.uc b/ServerExt/Classes/ExtWeaponSkinList.uc index f7dae85..0bd9856 100644 --- a/ServerExt/Classes/ExtWeaponSkinList.uc +++ b/ServerExt/Classes/ExtWeaponSkinList.uc @@ -25,7 +25,7 @@ static function array GetWeaponSkin(int ItemId, EWeaponSkinTy local array Mats; local MaterialInterface LoadedMat; local string FirstPMat; - + i = default.Skins.Find('Id', ItemId); if (i > -1) { @@ -38,38 +38,38 @@ static function array 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 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")) - } \ No newline at end of file diff --git a/ServerExt/Classes/ExtWebAdmin_UI.uc b/ServerExt/Classes/ExtWebAdmin_UI.uc index 717f35f..47b28b3 100644 --- a/ServerExt/Classes/ExtWebAdmin_UI.uc +++ b/ServerExt/Classes/ExtWebAdmin_UI.uc @@ -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 Obj, const out array Configs, delegate GetFunc, delegate SetFunc) { local int i; - + i = ConfigList.Find('PageName',PageName); if (i>=0) // Make sure no dupe pages. PageName $= "_"$(ConfigList[i].Dupes++); diff --git a/ServerExt/Classes/ExtWidget_PartyInGame.uc b/ServerExt/Classes/ExtWidget_PartyInGame.uc index 76ffe6e..dbef36f 100644 --- a/ServerExt/Classes/ExtWidget_PartyInGame.uc +++ b/ServerExt/Classes/ExtWidget_PartyInGame.uc @@ -6,7 +6,7 @@ var byte PPerkLevels[6]; struct ExtMemberSlotStruct { var class 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 diff --git a/ServerExt/Classes/Ext_AICommandBasePet.uc b/ServerExt/Classes/Ext_AICommandBasePet.uc index 5693841..78486f4 100644 --- a/ServerExt/Classes/Ext_AICommandBasePet.uc +++ b/ServerExt/Classes/Ext_AICommandBasePet.uc @@ -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; diff --git a/ServerExt/Classes/Ext_AINoTaunt.uc b/ServerExt/Classes/Ext_AINoTaunt.uc index 495acf0..c214fea 100644 --- a/ServerExt/Classes/Ext_AINoTaunt.uc +++ b/ServerExt/Classes/Ext_AINoTaunt.uc @@ -7,6 +7,7 @@ function SpecialMoveStarted(bool bForced, Name PrevMove) function SpecialMoveEnded(Name PrevMove, Name NextMove) { + } defaultproperties diff --git a/ServerExt/Classes/Ext_PerkBase.uc b/ServerExt/Classes/Ext_PerkBase.uc index 5f9485d..8109c4a 100644 --- a/ServerExt/Classes/Ext_PerkBase.uc +++ b/ServerExt/Classes/Ext_PerkBase.uc @@ -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=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; i0) @@ -397,7 +397,7 @@ function OutputXML(ExtStatWriter Data) Data.EndIntendent(); } } - + for (i=0; i0) @@ -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 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; iMinimumLevel ? GetNeededExp(CurrentLevel-1) : 0); - + // Now verify the points player used on individual stats. for (i=0; i0) { 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(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; i0) @@ -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; i0) @@ -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 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; i0) @@ -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) diff --git a/ServerExt/Classes/Ext_PerkBerserker.uc b/ServerExt/Classes/Ext_PerkBerserker.uc index cf42e9f..581a7c4 100644 --- a/ServerExt/Classes/Ext_PerkBerserker.uc +++ b/ServerExt/Classes/Ext_PerkBerserker.uc @@ -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 } \ No newline at end of file diff --git a/ServerExt/Classes/Ext_PerkCommando.uc b/ServerExt/Classes/Ext_PerkCommando.uc index 94f78c0..45c7185 100644 --- a/ServerExt/Classes/Ext_PerkCommando.uc +++ b/ServerExt/Classes/Ext_PerkCommando.uc @@ -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') } \ No newline at end of file diff --git a/ServerExt/Classes/Ext_PerkDemolition.uc b/ServerExt/Classes/Ext_PerkDemolition.uc index 4d3497b..9aaa7d0 100644 --- a/ServerExt/Classes/Ext_PerkDemolition.uc +++ b/ServerExt/Classes/Ext_PerkDemolition.uc @@ -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(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. } \ No newline at end of file diff --git a/ServerExt/Classes/Ext_PerkFieldMedic.uc b/ServerExt/Classes/Ext_PerkFieldMedic.uc index cdd9e61..fa7459f 100644 --- a/ServerExt/Classes/Ext_PerkFieldMedic.uc +++ b/ServerExt/Classes/Ext_PerkFieldMedic.uc @@ -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 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') } \ No newline at end of file diff --git a/ServerExt/Classes/Ext_PerkFirebug.uc b/ServerExt/Classes/Ext_PerkFirebug.uc index 358bab2..15a8e38 100644 --- a/ServerExt/Classes/Ext_PerkFirebug.uc +++ b/ServerExt/Classes/Ext_PerkFirebug.uc @@ -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 } \ No newline at end of file diff --git a/ServerExt/Classes/Ext_PerkGunslinger.uc b/ServerExt/Classes/Ext_PerkGunslinger.uc index 2cd5f6b..5dfe142 100644 --- a/ServerExt/Classes/Ext_PerkGunslinger.uc +++ b/ServerExt/Classes/Ext_PerkGunslinger.uc @@ -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') } \ No newline at end of file diff --git a/ServerExt/Classes/Ext_PerkRhythmPerkBase.uc b/ServerExt/Classes/Ext_PerkRhythmPerkBase.uc index 54f0fbd..0efe631 100644 --- a/ServerExt/Classes/Ext_PerkRhythmPerkBase.uc +++ b/ServerExt/Classes/Ext_PerkRhythmPerkBase.uc @@ -52,16 +52,16 @@ final function UpdateDmgScale(bool bUp) function UpdatePerkHeadShots(ImpactInfo Impact, class 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(DamageType)!=None && (class(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=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=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 SA; local class C; - + Default.ZedTypes.Length = class'Ext_TraitZED_Summon'.Default.ZedTypes.Length; - + for (i=0; i(DynamicLoadObject(SA[j],Class'Class')); @@ -227,7 +227,7 @@ static final function class PickRandomMonster(byte Level, bool b { local byte i; local class Res; - + Level = Min(Default.ZedTypes.Length-1,Level); for (i=0; i<5; ++i) { diff --git a/ServerExt/Classes/Ext_TraitAirborneAgent.uc b/ServerExt/Classes/Ext_TraitAirborneAgent.uc index 01b0a2e..f68500f 100644 --- a/ServerExt/Classes/Ext_TraitAirborneAgent.uc +++ b/ServerExt/Classes/Ext_TraitAirborneAgent.uc @@ -17,7 +17,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk) if (Perk.CurrentLevel 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]; diff --git a/ServerExt/Classes/Ext_TraitArmorReg.uc b/ServerExt/Classes/Ext_TraitArmorReg.uc index acf4f30..e56e0f8 100644 --- a/ServerExt/Classes/Ext_TraitArmorReg.uc +++ b/ServerExt/Classes/Ext_TraitArmorReg.uc @@ -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]; diff --git a/ServerExt/Classes/Ext_TraitBase.uc b/ServerExt/Classes/Ext_TraitBase.uc index e6558f4..ce05f03 100644 --- a/ServerExt/Classes/Ext_TraitBase.uc +++ b/ServerExt/Classes/Ext_TraitBase.uc @@ -42,7 +42,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk) // First check level. if (Perk.CurrentLevel TraitClass; defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/Ext_TraitDemoNuke.uc b/ServerExt/Classes/Ext_TraitDemoNuke.uc index 305b808..93bfb6c 100644 --- a/ServerExt/Classes/Ext_TraitDemoNuke.uc +++ b/ServerExt/Classes/Ext_TraitDemoNuke.uc @@ -17,25 +17,25 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk) if (Perk.CurrentLevel=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; } diff --git a/ServerExt/Classes/Ext_TraitDemoProfessional.uc b/ServerExt/Classes/Ext_TraitDemoProfessional.uc index 07b5e56..8190e30 100644 --- a/ServerExt/Classes/Ext_TraitDemoProfessional.uc +++ b/ServerExt/Classes/Ext_TraitDemoProfessional.uc @@ -17,14 +17,14 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk) if (Perk.CurrentLevel=0) return (Perk.PerkStats[i].CurrentValue>=30); } - + return true; } diff --git a/ServerExt/Classes/Ext_TraitHealthReg.uc b/ServerExt/Classes/Ext_TraitHealthReg.uc index 045271e..c9e403a 100644 --- a/ServerExt/Classes/Ext_TraitHealthReg.uc +++ b/ServerExt/Classes/Ext_TraitHealthReg.uc @@ -5,7 +5,7 @@ var array 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]; diff --git a/ServerExt/Classes/Ext_TraitHeavyArmor.uc b/ServerExt/Classes/Ext_TraitHeavyArmor.uc index 368169b..c961639 100644 --- a/ServerExt/Classes/Ext_TraitHeavyArmor.uc +++ b/ServerExt/Classes/Ext_TraitHeavyArmor.uc @@ -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); } diff --git a/ServerExt/Classes/Ext_TraitPenetrator.uc b/ServerExt/Classes/Ext_TraitPenetrator.uc index fe4b39b..bbf4c3a 100644 --- a/ServerExt/Classes/Ext_TraitPenetrator.uc +++ b/ServerExt/Classes/Ext_TraitPenetrator.uc @@ -17,7 +17,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk) if (Perk.CurrentLevel DamType, Ext_PerkBase Perk, byte Level, optional Ext_TraitDataStore Data) { local ExtProj_SUPERGrenade P; - + P = Player.Spawn(class'ExtProj_SUPERGrenade'); if (P!=None) { diff --git a/ServerExt/Classes/Ext_TraitSupply.uc b/ServerExt/Classes/Ext_TraitSupply.uc index 49e00b9..301ec4a 100644 --- a/ServerExt/Classes/Ext_TraitSupply.uc +++ b/ServerExt/Classes/Ext_TraitSupply.uc @@ -21,6 +21,6 @@ defaultproperties { DefLevelCosts(0)=50 TraitData=class'Ext_TraitSupplyData' - + SupplyIcon=Texture2D'UI_World_TEX.Support_Supplier_HUD' } \ No newline at end of file diff --git a/ServerExt/Classes/Ext_TraitSupplyData.uc b/ServerExt/Classes/Ext_TraitSupplyData.uc index 16eb5ae..9d45fc7 100644 --- a/ServerExt/Classes/Ext_TraitSupplyData.uc +++ b/ServerExt/Classes/Ext_TraitSupplyData.uc @@ -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(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; } diff --git a/ServerExt/Classes/Ext_TraitSupplyGren.uc b/ServerExt/Classes/Ext_TraitSupplyGren.uc index 10cff13..b7b7395 100644 --- a/ServerExt/Classes/Ext_TraitSupplyGren.uc +++ b/ServerExt/Classes/Ext_TraitSupplyGren.uc @@ -6,6 +6,6 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level } defaultproperties -{ +{ SupplyIcon=Texture2D'UI_World_TEX.Demolitionist_Supplier_HUD' } \ No newline at end of file diff --git a/ServerExt/Classes/Ext_TraitTactician.uc b/ServerExt/Classes/Ext_TraitTactician.uc index c8dc143..0c4e904 100644 --- a/ServerExt/Classes/Ext_TraitTactician.uc +++ b/ServerExt/Classes/Ext_TraitTactician.uc @@ -17,14 +17,14 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk) if (Perk.CurrentLevel=0) return (Perk.PerkStats[i].CurrentValue>=30); } - + return true; } diff --git a/ServerExt/Classes/Ext_TraitUnCloak.uc b/ServerExt/Classes/Ext_TraitUnCloak.uc index 51873af..761f19f 100644 --- a/ServerExt/Classes/Ext_TraitUnCloak.uc +++ b/ServerExt/Classes/Ext_TraitUnCloak.uc @@ -5,7 +5,7 @@ var array 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]; diff --git a/ServerExt/Classes/Ext_TraitWPBers.uc b/ServerExt/Classes/Ext_TraitWPBers.uc index dfc8567..75937f1 100644 --- a/ServerExt/Classes/Ext_TraitWPBers.uc +++ b/ServerExt/Classes/Ext_TraitWPBers.uc @@ -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')) diff --git a/ServerExt/Classes/Ext_TraitWPDemo.uc b/ServerExt/Classes/Ext_TraitWPDemo.uc index 3403a4c..b6e412c 100644 --- a/ServerExt/Classes/Ext_TraitWPDemo.uc +++ b/ServerExt/Classes/Ext_TraitWPDemo.uc @@ -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')) diff --git a/ServerExt/Classes/Ext_TraitWPFire.uc b/ServerExt/Classes/Ext_TraitWPFire.uc index 9b37839..a24e9a4 100644 --- a/ServerExt/Classes/Ext_TraitWPFire.uc +++ b/ServerExt/Classes/Ext_TraitWPFire.uc @@ -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')) diff --git a/ServerExt/Classes/Ext_TraitWeapons.uc b/ServerExt/Classes/Ext_TraitWeapons.uc index ddf0b4e..1e33d48 100644 --- a/ServerExt/Classes/Ext_TraitWeapons.uc +++ b/ServerExt/Classes/Ext_TraitWeapons.uc @@ -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); } diff --git a/ServerExt/Classes/Ext_TraitZEDBase.uc b/ServerExt/Classes/Ext_TraitZEDBase.uc index bdaee5b..885a65d 100644 --- a/ServerExt/Classes/Ext_TraitZEDBase.uc +++ b/ServerExt/Classes/Ext_TraitZEDBase.uc @@ -10,7 +10,7 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk) // First check level. if (Perk.CurrentLevel=5 && Perk.CurrentPrestige0 && Class(Perk.PerkTraits[i].TraitType)!=None && !Class(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")) diff --git a/ServerExt/Classes/Ext_TraitZED_SummonExt.uc b/ServerExt/Classes/Ext_TraitZED_SummonExt.uc index dd695f0..586b591 100644 --- a/ServerExt/Classes/Ext_TraitZED_SummonExt.uc +++ b/ServerExt/Classes/Ext_TraitZED_SummonExt.uc @@ -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; i0 && Class(Perk.PerkTraits[i].TraitType)!=None && !Class(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) { diff --git a/ServerExt/Classes/Ext_TraitZedative.uc b/ServerExt/Classes/Ext_TraitZedative.uc index 85486a5..b3d3894 100644 --- a/ServerExt/Classes/Ext_TraitZedative.uc +++ b/ServerExt/Classes/Ext_TraitZedative.uc @@ -17,14 +17,14 @@ static function bool MeetsRequirements(byte Lvl, Ext_PerkBase Perk) if (Perk.CurrentLevel=0) return (Perk.PerkStats[i].CurrentValue>=25); } - + return true; } diff --git a/ServerExt/Classes/GUIStyleBase.uc b/ServerExt/Classes/GUIStyleBase.uc index e4f088a..3bb75e4 100644 --- a/ServerExt/Classes/GUIStyleBase.uc +++ b/ServerExt/Classes/GUIStyleBase.uc @@ -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); diff --git a/ServerExt/Classes/KF2GUIController.uc b/ServerExt/Classes/KF2GUIController.uc index f2897d0..cbc1d47 100644 --- a/ServerExt/Classes/KF2GUIController.uc +++ b/ServerExt/Classes/KF2GUIController.uc @@ -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; i5.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 MenuClass) { local int i; local KFGUI_Page M; - + if (MenuClass==None) return None; @@ -310,7 +310,7 @@ simulated function KFGUI_Page OpenMenu(class 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 MenuClass) } return M; } - + if (MenuClass.Default.bPersistant) { for (i=0; i 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 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 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 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 -} \ No newline at end of file +} diff --git a/ServerExt/Classes/KF2GUIInput.uc b/ServerExt/Classes/KF2GUIInput.uc index 5c8eb62..26141c4 100644 --- a/ServerExt/Classes/KF2GUIInput.uc +++ b/ServerExt/Classes/KF2GUIInput.uc @@ -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 { + } \ No newline at end of file diff --git a/ServerExt/Classes/KF2GUINetwork.uc b/ServerExt/Classes/KF2GUINetwork.uc index adebe2f..adef22d 100644 --- a/ServerExt/Classes/KF2GUINetwork.uc +++ b/ServerExt/Classes/KF2GUINetwork.uc @@ -9,7 +9,7 @@ var bool bLocalClient; static function OpenMenuForClient(PlayerController PC, class Page) { local KF2GUINetwork G; - + foreach PC.ChildActors(class'KF2GUINetwork',G) break; if (G==None) @@ -20,7 +20,7 @@ static function OpenMenuForClient(PlayerController PC, class Page) static function CloseMenuForClient(PlayerController PC, class 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 -} \ No newline at end of file +} diff --git a/ServerExt/Classes/KF2Style.uc b/ServerExt/Classes/KF2Style.uc index dab6fe0..fc00aee 100644 --- a/ServerExt/Classes/KF2Style.uc +++ b/ServerExt/Classes/KF2Style.uc @@ -10,7 +10,7 @@ function InitStyle() local byte i; Super.InitStyle(); - + LoadedTex[0] = Texture2D(DynamicLoadObject("EditorMaterials.CASC_ModuleEnable",class'Texture2D')); LoadedTex[1] = Texture2D(DynamicLoadObject("EditorMaterials.Tick",class'Texture2D')); for (i=0; iTT.Owner.ScreenSize.Y) Y = TT.CompPos[1]-TY; - + if (TT.CurrentAlpha<255) TT.CurrentAlpha = Min(TT.CurrentAlpha+25,255); @@ -184,7 +184,7 @@ function RenderButton(KFGUI_Button B) else if (B.bFocused) Canvas.SetDrawColor(180,45,45,255); else Canvas.SetDrawColor(164,8,8,255); - + if (B.bIsHighlighted) { Canvas.DrawColor.R = Min(Canvas.DrawColor.R+25,255); @@ -246,10 +246,10 @@ function RenderEditBox(KFGUI_EditBox E) Canvas.SetDrawColor(50,50,186,255); C = MakeColor(8,8,50,255); } - + Canvas.SetPos(0.f,0.f); DrawRectBox(0,0,E.CompPos[2],E.CompPos[3],E.TextHeight*0.15,1); - + Canvas.SetPos(3.f,3.f); Canvas.DrawColor = C; DrawWhiteBox(E.CompPos[2]-6,E.CompPos[3]-6); @@ -268,23 +268,23 @@ function RenderScrollBar(KFGUI_ScrollBarBase S) Canvas.SetPos(0.f,0.f); DrawWhiteBox(S.CompPos[2],S.CompPos[3]); - + if (S.bDisabled) return; if (S.bVertical) i = 3; else i = 2; - + S.SliderScale = FMax(S.PageStep * (S.CompPos[i] - 32.f) / (S.MaxRange + S.PageStep),S.CalcButtonScale); - + if (S.bGrabbedScroller) { // Track mouse. if (S.bVertical) A = S.Owner.MousePosition.Y - S.CompPos[1] - S.GrabbedOffset; else A = S.Owner.MousePosition.X - S.CompPos[0] - S.GrabbedOffset; - + A /= ((S.CompPos[i]-S.SliderScale) / float(S.MaxRange)); S.SetValue(A); } @@ -331,7 +331,7 @@ function RenderColumnHeader(KFGUI_ColumnTop C, float XPos, float Width, int Inde DrawWhiteBox(Width-(XS*2),C.CompPos[3]); Canvas.SetPos(XPos+Width-(XS*2),0.f); DrawCornerTexNU(XS,C.CompPos[3],1); - + Canvas.SetDrawColor(250,250,250,255); Canvas.SetPos(XPos+XS,(C.CompPos[3]-C.ListOwner.TextHeight)*0.5f); C.ListOwner.DrawStrClipped(C.ListOwner.Columns[Index].Text); @@ -346,7 +346,7 @@ function RenderCheckbox(KFGUI_CheckBox C) else if (C.bFocused) Canvas.SetDrawColor(150,200,128,255); else Canvas.SetDrawColor(128,186,128,255); - + Canvas.SetPos(0.f,0.f); Canvas.DrawTileStretched(LoadedTex[0],C.CompPos[2],C.CompPos[3],0,0,LoadedTex[0].GetSurfaceWidth(),LoadedTex[0].GetSurfaceHeight()); @@ -369,7 +369,7 @@ function RenderComboBox(KFGUI_ComboBox C) else if (C.bFocused) Canvas.SetDrawColor(190,48,48,255); else Canvas.SetDrawColor(186,4,4,255); - + Canvas.SetPos(0.f,0.f); DrawWhiteBox(C.CompPos[2],C.CompPos[3]); @@ -390,7 +390,7 @@ function RenderComboList(KFGUI_ComboSelector C) local float X,Y,YL,YP,Edge; local int i; local bool bCheckMouse; - + // Draw background. Edge = C.Combo.BorderSize; Canvas.SetPos(0.f,0.f); @@ -403,9 +403,9 @@ function RenderComboList(KFGUI_ComboSelector C) // While rendering, figure out mouse focus row. X = C.Owner.MousePosition.X - Canvas.OrgX; Y = C.Owner.MousePosition.Y - Canvas.OrgY; - + bCheckMouse = (X>0.f && X0.f && Y0.f && X0.f && Y Victim, int Value, PlayerReplicationIn { local int i; local bool bDmg,bLcl; - + bDmg = (Type==2); bLcl = (Type==0); for (i=0; i Victim, int Value, PlayerReplicationIn KillMessages[i].MsgColor = GetMsgColor(bDmg,KillMessages[i].Counter); return; } - + KillMessages.Length = i+1; KillMessages[i].bDamage = bDmg; KillMessages[i].bLocal = bLcl; @@ -186,7 +186,7 @@ static final function string GetNameOf(class Other) if (Class(Other)!=None) return Class(Other).Default.ZombieName; - + KFM = class(Other); if (KFM!=None && KFM.default.LocalizationKey != '') return Localize("Zeds", string(KFM.default.LocalizationKey), "KFGame"); @@ -219,7 +219,7 @@ static final function string GetNameArticle(string S) static final function string StripMsgColors(string S) { local int i; - + while (true) { i = InStr(S,Chr(6)); @@ -281,12 +281,12 @@ event PostRender() } GUIStyle.Canvas = Canvas; GUIStyle.PickDefaultFontSize(Canvas.ClipY); - + DrawDamage(); //RenderKFHUD(); // TODO later... super.PostRender(); - + // Camera position. PlayerOwner.GetPlayerViewPoint(PLCameraLoc,PLCameraRot); PLCameraDir = vector(PLCameraRot); @@ -364,13 +364,13 @@ final function RenderKillMsg() local float Sc,YL,T,X,Y; local string S; local int i; - + Canvas.Font = GUIStyle.PickFont(GUIStyle.DefaultFontSize,Sc); Canvas.TextSize("A",X,YL,Sc,Sc); X = Canvas.ClipX*0.015; Y = Canvas.ClipY*0.24; - + for (i=0; i0.f && ThisDot<10000.f) { @@ -688,10 +688,10 @@ simulated function DrawFriendlyHUDZ(KFPawn_Monster KFPH) //Draw player name (Top) FontScale = class'KFGameEngine'.Static.GetKFFontScale() * FriendlyHudScale; Canvas.Font = class'KFGameEngine'.Static.GetKFCanvasFont(); - + Canvas.DrawColor = PlayerBarTextColor; Canvas.DrawColor.A = FadeAlpha; - + Canvas.SetPos(ScreenPos.X - (BarLength *0.5f), ScreenPos.Y - BarHeight * 2); Canvas.DrawText(KFPH.PlayerReplicationInfo.PlayerName,,FontScale,FontScale, MyFontRenderInfo); } @@ -747,15 +747,15 @@ simulated function bool DrawFriendlyHumanPlayerInfo(KFPawn_Human KFPH) TextColor = KFPRI.GetAdminColorC(); } else TextColor = PlayerBarTextColor; - + if (bMeAdmin && KFPRI.FixedData>0) { TextColor = MakeColor(255,0,0,255); S @= "-"$KFPRI.GetDesc(); } - + TextColor.A = FadeAlpha; - + Canvas.DrawColor = PlayerBarShadowColor; Canvas.DrawColor.A = FadeAlpha; Canvas.SetPos(ScreenPos.X - (BarLength * 0.5f) + 1, ScreenPos.Y + 8); @@ -834,13 +834,13 @@ simulated final function DrawPlayerInfoBar(KFPawn P, float BarPercentage, float Canvas.DrawColor.A = FadeAlpha; Canvas.SetPos(XPos, YPos); Canvas.DrawTileStretched(PlayerStatusBarBGTexture, BarLength * BarPercentage, BarHeight, 0, 0, 32, 32); - + if (bDrawingHealth && ExtHumanPawn(P) != None && P.Health0) { // Draw to-regen bar. XPos+=(BarLength * BarPercentage); BarPercentage = FMin(float(ExtHumanPawn(P).RepRegenHP) / float(P.HealthMax),1.f-BarPercentage); - + Canvas.DrawColor = MakeColor(255,128,128,FadeAlpha); Canvas.SetPos(XPos, YPos); Canvas.DrawTileStretched(PlayerStatusBarBGTexture, BarLength * BarPercentage, BarHeight, 0, 0, 32, 32); @@ -960,7 +960,7 @@ simulated function DrawPetInfo() local float X,Y,Sc,XL,YL,YS; local string S; local int i; - + X = Canvas.ClipX*0.165; Y = Canvas.ClipY*0.925; Canvas.Font = GUIStyle.PickFont(GUIStyle.DefaultFontSize,Sc); @@ -968,17 +968,17 @@ simulated function DrawPetInfo() S = "Current Pet(s)"; // TODO: Localization. (for some reason, if i try to replace this var with localized version - the border around the text disappears) Canvas.TextSize(S,XL,YL,Sc,Sc); Y-=(YS*MyCurrentPet.Length); - + Canvas.SetDrawColor(120,0,0,145); - GUIStyle.DrawRectBox(X, Y, BestPetXL * 1.04, YL, 4); - + GUIStyle.DrawRectBox(X, Y, BestPetXL * 1.04, YL, 4); + Canvas.DrawColor = MakeColor(255,255,255,255); Canvas.SetPos(X,Y); Canvas.DrawText(S,,Sc,Sc); - + Canvas.SetDrawColor(8,8,8,145); GUIStyle.DrawRectBox(X, Y + YS, BestPetXL * 1.04, YL * MyCurrentPet.Length, 4); - + Canvas.DrawColor = MakeColor(32,250,32,255); for (i=0; i BestPetXL) BestPetXL = XL; if (YL > BestPetYL) @@ -1008,7 +1008,7 @@ function byte DrawToDistance(Actor A, optional float StartAlpha=255.f, optional if (Dist <= HealthBarFullVisDist || PlayerOwner.PlayerReplicationInfo.bOnlySpectator) fZoom = 1.0; else fZoom = FMax(1.0 - (Dist - HealthBarFullVisDist) / (HealthBarCutoffDist - HealthBarFullVisDist), 0.0); - + return Clamp(StartAlpha * fZoom, MinAlpha, StartAlpha); } @@ -1029,7 +1029,7 @@ final function AddNumberMsg(int Amount, vector Pos, byte Type) C.R = 220; C.G = 0; C.B = 0; - } + } else if (Type == 1) { C.R = 255; C.G = 255; @@ -1073,17 +1073,17 @@ final function DrawDamage() Canvas.Font = class'Engine'.Static.GetMediumFont(); Sc = 1; - + KFPlayerController(Owner).GetPlayerViewPoint(CameraLocation, CameraRotation); CamDir = vector(CameraRotation); - - for (i=0; i < DAMAGEPOPUP_COUNT ; i++) + + for (i=0; i < DAMAGEPOPUP_COUNT ; i++) { TimeSinceHit = WorldInfo.TimeSeconds - DamagePopups[i].HitTime; if (TimeSinceHit > DamagePopupFadeOutTime || (Normal(DamagePopups[i].HitLocation - CameraLocation) dot Normal(CamDir) < 0.1)) //don't draw if player faced back to the hit location continue; - + switch (DamagePopups[i].Type) { case 0: // Pawn damage. @@ -1167,7 +1167,7 @@ simulated final function DrawItemsList() { local int i; local float T,FontScale,XS,YS,YSize,XPos,YPos; - + FontScale = Canvas.ClipY / 660.f; Canvas.Font = GetFontSizeIndex(0); Canvas.TextSize("ABC",XS,YSize,FontScale,FontScale); @@ -1189,7 +1189,7 @@ simulated final function DrawItemsList() Canvas.SetDrawColor(255,255,255,T); } else Canvas.SetDrawColor(255,255,255,255); - + Canvas.TextSize(NewItems[i].Item,XS,YS,FontScale,FontScale); /*if (NewItems[i].Icon!=None) @@ -1199,7 +1199,7 @@ simulated final function DrawItemsList() XS = XPos-(YSize*1.1)-XS; } else */XS = XPos-XS; - + Canvas.SetPos(XS,YPos); Canvas.DrawText(NewItemText,,FontScale,FontScale); Canvas.SetPos(XS,YPos+(YSize*0.5)); @@ -1231,7 +1231,7 @@ defaultproperties RedBGColor=(R=164,G=32,B=32,A=186) HUDTextColor=(R=250,G=250,B=250,A=186) HUDClass=class'ExtMoviePlayer_HUD' - + HealthBarFullVisDist=350 HealthBarCutoffDist=3500 DamagePopupFadeOutTime=3.000000 diff --git a/ServerExt/Classes/KFGUI_Base.uc b/ServerExt/Classes/KFGUI_Base.uc index 904c16f..ccc4c61 100644 --- a/ServerExt/Classes/KFGUI_Base.uc +++ b/ServerExt/Classes/KFGUI_Base.uc @@ -120,7 +120,7 @@ function bool CaptureMouse() final function KFGUI_Base GetMouseFocus() { local KFGUI_Base M; - + for (M=Self; M.MouseArea!=None; M=M.MouseArea) {} return M; @@ -160,7 +160,7 @@ final function bool IsTopMenu() final function KFGUI_Page GetPageTop() { local KFGUI_Base M; - + for (M=Self; M.ParentComponent!=None; M=M.ParentComponent) {} return KFGUI_Page(M); @@ -244,7 +244,7 @@ final function GetRealtivePos(out float X, out float Y) simulated final function PlayMenuSound(EMenuSound Slot) { /*local SoundCue S; - + switch (Slot) { case MN_Focus: @@ -288,7 +288,7 @@ static final function string MakeSortStr(int Value) { local string S; local int i; - + // Prefix with zeroes to properly sort this string. S = string(Value); i = Len(S); @@ -302,4 +302,4 @@ defaultproperties XSize=1 YSize=1 bCanFocus=true -} \ No newline at end of file +} diff --git a/ServerExt/Classes/KFGUI_Button.uc b/ServerExt/Classes/KFGUI_Button.uc index 4dbfd7e..4f282a1 100644 --- a/ServerExt/Classes/KFGUI_Button.uc +++ b/ServerExt/Classes/KFGUI_Button.uc @@ -29,4 +29,4 @@ defaultproperties TextColor=(R=255,G=255,B=255,A=255) TextFontInfo=(bClipText=true,bEnableShadow=true) FontScale=1 -} \ No newline at end of file +} diff --git a/ServerExt/Classes/KFGUI_Button_CD.uc b/ServerExt/Classes/KFGUI_Button_CD.uc index 2ee539b..6928f72 100644 --- a/ServerExt/Classes/KFGUI_Button_CD.uc +++ b/ServerExt/Classes/KFGUI_Button_CD.uc @@ -4,7 +4,7 @@ function DrawMenu() { local float XL,YL,TS; local byte i, FrameOpacity; - + FrameOpacity = 200; if (bDisabled) Canvas.SetDrawColor(10, 10, 10, FrameOpacity); @@ -13,7 +13,7 @@ function DrawMenu() else if (bFocused) Canvas.SetDrawColor(75, 75, 75, FrameOpacity); else Canvas.SetDrawColor(45, 45, 45, FrameOpacity); - + if (bIsHighlighted) { Canvas.DrawColor.R = Min(Canvas.DrawColor.R + 25, FrameOpacity); @@ -53,4 +53,5 @@ function DrawMenu() defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/KFGUI_CheckBox.uc b/ServerExt/Classes/KFGUI_CheckBox.uc index 5f4edd5..d7e34b0 100644 --- a/ServerExt/Classes/KFGUI_CheckBox.uc +++ b/ServerExt/Classes/KFGUI_CheckBox.uc @@ -30,4 +30,4 @@ defaultproperties { bForceUniform=true LableWidth=0.85 -} \ No newline at end of file +} diff --git a/ServerExt/Classes/KFGUI_Clickable.uc b/ServerExt/Classes/KFGUI_Clickable.uc index bbc112e..af6ae68 100644 --- a/ServerExt/Classes/KFGUI_Clickable.uc +++ b/ServerExt/Classes/KFGUI_Clickable.uc @@ -90,4 +90,5 @@ function HandleMouseClick(bool bRight); defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/KFGUI_ColumnList.uc b/ServerExt/Classes/KFGUI_ColumnList.uc index a8c7ba4..73b6102 100644 --- a/ServerExt/Classes/KFGUI_ColumnList.uc +++ b/ServerExt/Classes/KFGUI_ColumnList.uc @@ -5,7 +5,7 @@ struct FColumnItem { var() string Text; var() float Width; - + var transient bool bHidden; var transient int X,XSize; }; @@ -35,7 +35,7 @@ function KFGUI_ListItem AddLine(string Value, optional int iValue, optional stri { local KFGUI_ListItem N,O; local int i; - + // Allocate list item object. if (UnusedItem!=None) { @@ -44,7 +44,7 @@ function KFGUI_ListItem AddLine(string Value, optional int iValue, optional stri N.Next = None; } else N = new (None) ListItemClass; - + // Setup column text value. N.SetValue(Value,iValue,SortValue); @@ -52,7 +52,7 @@ function KFGUI_ListItem AddLine(string Value, optional int iValue, optional stri if (bShouldSortList && Index==-1) { N.Temp = N.GetSortStr(LastSortedColumn); - + if (ListCount==0) // No sorting needed yet. { N.Next = FirstItem; @@ -117,17 +117,17 @@ function KFGUI_ListItem AddLine(string Value, optional int iValue, optional stri } } UpdateListSize(); - + return N; } final function RemoveLine(KFGUI_ListItem I) { local KFGUI_ListItem N; - + if (I.Index==-1) return; - + // Update selected row info. if (SelectedRowIndex==I.Index) SelectedRowIndex = -1; @@ -146,7 +146,7 @@ final function RemoveLine(KFGUI_ListItem I) break; } } - + // Add to unused list. I.Next = UnusedItem; UnusedItem = I; @@ -162,7 +162,7 @@ final function EmptyList() for (I=FirstItem; I!=None; I=N) { N = I.Next; - + // Add to unused list. I.Next = UnusedItem; UnusedItem = I; @@ -190,7 +190,7 @@ function SortColumn(int Column, optional bool bReverse) local array List; local KFGUI_ListItem Sel,N,P; local int i; - + if (!bCanSortColumn || Column<0 || Column>=Columns.Length) return; @@ -201,11 +201,11 @@ function SortColumn(int Column, optional bool bReverse) // Allocate memory space first. List.Length = ListCount; List.Length = 0; - + // Grab current selected line. Sel = GetFromIndex(SelectedRowIndex); SelectedRowIndex = -1; - + // Slow, sort it all. for (N=FirstItem; N!=None; N=N.Next) { @@ -226,7 +226,7 @@ function SortColumn(int Column, optional bool bReverse) List.Insert(i,1); List[i] = N; } - + // Rebuild list. FirstItem = None; P = None; @@ -249,7 +249,7 @@ function ChangeListSize(int NewSize); final function UpdateListSize() { local KFGUI_ListItem N; - + ListCount = 0; for (N=FirstItem; N!=None; N=N.Next) N.Index = ListCount++; @@ -280,7 +280,7 @@ function DrawMenu() Canvas.DrawColor = BackgroundColor; Canvas.SetPos(0.f,0.f); Owner.CurrentStyle.DrawWhiteBox(CompPos[2],CompPos[3]); - + // Mouse focused item check. bCheckMouse = bClickable && bFocused; FocusMouseItem = -1; @@ -307,7 +307,7 @@ function DrawMenu() FocusMouseItem = n; else MouseYHit-=ItemHeight; } - + // Draw selection background. if (SelectedRowIndex==n) // Selected { @@ -323,7 +323,7 @@ function DrawMenu() Owner.CurrentStyle.DrawWhiteBox(CompPos[2],ItemHeight); Canvas.SetDrawColor(250,250,250,255); } - + // Draw columns of text for (j=0; j=0) { ListOwner.SortColumn(MouseColumn,(PrevSortedColumn==MouseColumn)); diff --git a/ServerExt/Classes/KFGUI_ComboBox.uc b/ServerExt/Classes/KFGUI_ComboBox.uc index b2843da..635bd67 100644 --- a/ServerExt/Classes/KFGUI_ComboBox.uc +++ b/ServerExt/Classes/KFGUI_ComboBox.uc @@ -49,7 +49,7 @@ final function string GetCurrent() final function bool SetValue(string S) { local int i; - + i = Values.Find(S); if (i==-1) return false; diff --git a/ServerExt/Classes/KFGUI_ComboSelector.uc b/ServerExt/Classes/KFGUI_ComboSelector.uc index f8f507c..76667ca 100644 --- a/ServerExt/Classes/KFGUI_ComboSelector.uc +++ b/ServerExt/Classes/KFGUI_ComboSelector.uc @@ -24,4 +24,4 @@ defaultproperties CurrentRow=-1 OldRow=-1 bFocusedPostDrawItem=true -} \ No newline at end of file +} diff --git a/ServerExt/Classes/KFGUI_ComponentList.uc b/ServerExt/Classes/KFGUI_ComponentList.uc index d7e1432..b9c6edd 100644 --- a/ServerExt/Classes/KFGUI_ComponentList.uc +++ b/ServerExt/Classes/KFGUI_ComponentList.uc @@ -9,7 +9,7 @@ var array ItemComponents; final function KFGUI_Base AddListComponent(class CompClass, optional float XS=1.f, optional float YS=1.f) { local KFGUI_Base G; - + G = new(Self)CompClass; if (G==None) return None; @@ -49,7 +49,7 @@ function PreDraw() local float XS,YS; ComputeCoords(); - + // Update list size i = ItemComponents.Length / NumColumns; if (i!=NumColumns) @@ -68,7 +68,7 @@ function PreDraw() } ScrollBar.Canvas = Canvas; ScrollBar.PreDraw(); - + // Then downscale our selves to give room for scrollbar. CompPos[2] -= ScrollBar.CompPos[2]; Canvas.SetOrigin(CompPos[0],CompPos[1]); @@ -121,7 +121,7 @@ function MouseEnter() function bool CaptureMouse() { local int i; - + for (i=VisRange[0]; i0.5f) XS = (1.f-XS); Canvas.DrawColor = C*(Sin(XS*2.f*Pi)*0.45f); - + if (bAllSelected) { Canvas.TextSize(Mid(Value,ScrollOffset),XS,YS,TextScale,TextScale); @@ -76,7 +76,7 @@ Retry: if (ScrollOffset>5) ScrollOffset = Min(ScrollOffset,Len(Value)-6); DrawClippedText(Mid(Value,ScrollOffset),TextScale,CompPos[2]); - + // FIXME: PushMaskRegion is broken in KF2?! //Canvas.PushMaskRegion(Canvas.OrgX,Canvas.OrgY,Canvas.ClipX-4,Canvas.ClipY); //Canvas.DrawText(Mid(Value,ScrollOffset),,TextScale,TextScale,TextFontInfo); @@ -192,7 +192,7 @@ function bool NotifyInputKey(int ControllerId, name Key, EInputEvent Event, floa final function PasteText() { local string S; - + S = GetPlayer().PasteFromClipboard(); if ((bAllSelected ? (Len(Value)+Len(S)) : Len(S))>MaxTextLength) return; @@ -262,4 +262,4 @@ defaultproperties { MaxTextLength=2147483638 TextColor=(R=255,G=255,B=255,A=255) -} \ No newline at end of file +} diff --git a/ServerExt/Classes/KFGUI_EditControl.uc b/ServerExt/Classes/KFGUI_EditControl.uc index 99f76ee..d0eb082 100644 --- a/ServerExt/Classes/KFGUI_EditControl.uc +++ b/ServerExt/Classes/KFGUI_EditControl.uc @@ -49,7 +49,7 @@ function PreDraw() Canvas.Font = Owner.CurrentStyle.PickFont(Min(FontScale+Owner.CurrentStyle.DefaultFontSize,Owner.CurrentStyle.MaxFontScale),TextScale); TextFont = Canvas.Font; Canvas.TextSize("ABC",XS,TextHeight,TextScale,TextScale); - + UpdateSizes(); Super.PreDraw(); @@ -67,7 +67,7 @@ final function DrawClippedText(string S, float TScale, float MaxX) { local int i,l; local float X,XL,YL; - + l = Len(S); for (i=0; i ImgList; - var bool bHasURL,bSplit; -}; -var array Lines; - -struct FImageEntry -{ - var Surface Img; - var int X,Y,XS,YS,YOffset,XOffset; - var byte Align,Style; -}; -var array Images; - -var FImageEntry BgImage; -var float OldXSize,OldYSize; -var int YSize,HoverOverLinkLine,OldHoverLine; -var() Color BGColor,WhiteColor,BlueColor,RedColor; -var KFGUI_ScrollBarV MyScrollBar; -var string TitleString; -var int CurTab; -var byte DefaultFontSize; -var bool bNeedsInit,bHasSplitLines,bNeedScrollbar; - -function InitMenu() -{ - Super.InitMenu(); - - MyScrollBar = KFGUI_ScrollBarV(FindComponentID('Scrollbar')); -} - -final function int AddText( string Input, color TextColor, byte TextAlign, byte FontSize, out byte NumSkips ) -{ - local int i; - - i = Lines.Length; - Lines.Length = i+1; - Lines[i].Text = Input; - Lines[i].Color = TextColor; - Lines[i].Align = TextAlign; - Lines[i].FontSize = FontSize; - Lines[i].LineSkips = NumSkips; - Lines[i].Tab = CurTab; - NumSkips = 0; - return i; -} -final function string ParseLinkType( string URL ) -{ - if( InStr(URL,"//")>0 ) - return URL; - if( Left(URL,4)~="ftp." ) - return "ftp://"$URL; - return "http://"$URL; -} -final function AddImage( string Input ) -{ - local string Temp; - local byte Align,Sty; - local Material M; - local int X,Y,XS,YS,i,j,z; - - Align = 3; - Temp = GetOption(Input, "ALIGN="); - if (Temp != "") - { - switch( Caps(Temp) ) - { - case "LEFT": - case "0": - Align = 0; - break; - case "CENTER": - case "1": - Align = 1; - break; - case "RIGHT": - case "2": - Align = 2; - break; - } - } - Temp = GetOption(Input, "STYLE="); - if (Temp != "") - { - switch( Caps(Temp) ) - { - case "NORMAL": - case "0": - Sty = 0; - break; - case "STRETCH": - case "1": - Sty = 1; - break; - case "TILEDX": - case "2": - Sty = 2; - break; - case "TILEDY": - case "3": - Sty = 3; - break; - case "TILED": - case "4": - Sty = 4; - break; - } - } - Temp = GetOption(Input, "SRC="); - if (Temp != "") - M = Surface(DynamicLoadObject(Temp,Class'Surface')); - if( M==None ) - M = class'Canvas'.Default.DefaultTexture; - X = int(GetOption(Input, "VSPACE=")); - Y = int(GetOption(Input, "HSPACE=")); - XS = int(GetOption(Input, "WIDTH=")); - YS = int(GetOption(Input, "HEIGHT=")); - - if( XS==0 ) - XS = M.GetSurfaceWidth(); - if( YS==0 ) - YS = M.GetSurfaceHeight(); - - i = Images.Length; - Images.Length = i+1; - Images[i].Img = M; - Images[i].XOffset = X; - Images[i].YOffset = Y; - Images[i].XS = XS; - Images[i].YS = YS; - Images[i].Style = Sty; - Images[i].Align = Align; - j = Lines.Length-1; - z = Lines[j].ImgList.Length; - Lines[j].ImgList.Length = z+1; - Lines[j].ImgList[z] = i; -} -final function SetContents( string Input ) -{ - local string LeftText,HTML,RightText,Output,Temp,Link; - local int Index; - local color TextColor,LinkColor,ALinkColor,OrgTextColor; - local byte Alignment,FontScaler,NextLineSkips; - - CurTab = 0; - BGColor.A = 0; - BgImage.Img = None; - Lines.Length = 0; - Images.Length = 0; - TitleString = ""; - bHasSplitLines = false; - bNeedsInit = true; - - // First remove new liners - Input = Repl(Input, Chr(13)$Chr(10), ""); - Input = Repl(Input, Chr(13), ""); - Input = Repl(Input, Chr(10), ""); - Input = Repl(Input, Chr(9), " "); - Input = Repl(Input, "\\n", "
"); - - TextColor = WhiteColor; - OrgTextColor = WhiteColor; - LinkColor = BlueColor; - ALinkColor = RedColor; - FontScaler = 3; - DefaultFontSize = 3; - Index = -1; - - while (Input != "") - { - ParseHTML(Input, LeftText, HTML, RightText); - - switch (GetTag(HTML)) - { - // multiline HTML tags - case "P": - Output $= LeftText; - if( Output!="" ) - { - Index = AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - NextLineSkips = 2; - Output = ""; - } - else ++NextLineSkips; - break; - case "BR": - Output $= LeftText; - if( Output!="" ) - { - Index = AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - NextLineSkips = 1; - Output = ""; - } - else ++NextLineSkips; - break; - case "BODY": - Temp = GetOption(HTML, "BGCOLOR="); - if (Temp != "") - BGColor = ParseColor(Temp); - - Temp = GetOption(HTML, "LINK="); - if (Temp != "") - LinkColor = ParseColor(Temp); - - Temp = GetOption(HTML, "ALINK="); - if (Temp != "") - ALinkColor = ParseColor(Temp); - - Temp = GetOption(HTML, "TEXT="); - if (Temp != "") - { - TextColor = ParseColor(Temp); - OrgTextColor = TextColor; - } - - Temp = GetOption(HTML, "SIZE="); - if (Temp != "") - { - FontScaler = int(Temp); - DefaultFontSize = FontScaler; - } - - Temp = GetOption(Input, "IMG="); - if (Temp != "") - { - if( BGColor.A==0 ) - BGColor = Class'Hud'.Default.WhiteColor; - BgImage.Img = Surface(DynamicLoadObject(Temp,Class'Surface')); - if( BgImage.Img==None ) - BgImage.Img = Class'Canvas'.Default.DefaultTexture; - BgImage.X = BgImage.Img.GetSurfaceWidth(); - BgImage.Y = BgImage.Img.GetSurfaceHeight(); - switch( Caps(GetOption(Input, "IMGSTYLE=")) ) - { - case "TILED": - BgImage.XS = BgImage.X; - BgImage.YS = BgImage.Y; - BgImage.Style = 1; - Temp = GetOption(Input, "TILEX="); - if (Temp != "") - BgImage.XS = int(Temp); - Temp = GetOption(Input, "TILEY="); - if (Temp != "") - BgImage.YS = int(Temp); - break; - case "FITX": - BgImage.Style = 2; - break; - case "FITY": - BgImage.Style = 3; - break; - default: // FIT - BgImage.Style = 0; - } - BgImage.Align = 0; - if( GetOption(Input, "IMGLOCK=")=="0" ) - BgImage.Align = 1; - } - Output $= LeftText; - break; - case "CENTER": - Output $= LeftText; - if ( Output!="" ) - { - Index = AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - Output = ""; - } - NextLineSkips = Max(NextLineSkips,1); - Alignment = 1; - break; - case "RIGHT": - Output $= LeftText; - if ( Output!="" ) - { - Index = AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - Output = ""; - } - NextLineSkips = Max(NextLineSkips,1); - Alignment = 2; - break; - case "/CENTER": - case "/RIGHT": - Index = AddText(Output $ LeftText,TextColor,Alignment,FontScaler,NextLineSkips); - ++NextLineSkips; - Alignment = 0; - Output = ""; - break; - // Inline HTML tags - case "H1": - Output $= LeftText; - if ( Output!="" ) - { - Index = AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - Output = ""; - } - NextLineSkips = Max(NextLineSkips,1); - FontScaler = 5; - Alignment = 1; - break; - case "/H1": - Index = AddText(Output $ LeftText,TextColor,Alignment,FontScaler,NextLineSkips); - ++NextLineSkips; - Output = ""; - FontScaler = DefaultFontSize; - Alignment = 0; - break; - case "FONT": - Output $= LeftText; - if( Output!="" ) - { - Index = AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - Output = ""; - } - Temp = GetOption(HTML, "COLOR="); - if (Temp != "") - TextColor = ParseColor(Temp); - Temp = GetOption(HTML, "SIZE="); - if (Temp != "") - FontScaler = int(Temp); - break; - case "/FONT": - Output $= LeftText; - if( Output!="" ) - { - Index = AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - Output = ""; - } - TextColor = OrgTextColor; - FontScaler = DefaultFontSize; - break; - case "TAB": - Output $= LeftText; - if( Output!="" ) - { - Index = AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - Output = ""; - } - CurTab = int(GetOption(HTML, "X=")); - break; - case "/TAB": - Output $= LeftText; - if( Output!="" ) - { - Index = AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - Output = ""; - } - CurTab = 0; - break; - case "TITLE": - Output $= LeftText; - break; - case "/TITLE": - TitleString = LeftText; - break; - case "A": - Output $= LeftText; - if( Output!="" ) - { - Index = AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - Output = ""; - } - Link = GetOption(HTML, "HREF="); - break; - case "/A": - Output $= LeftText; - Index = AddText(Output,LinkColor,Alignment,FontScaler,NextLineSkips); - Lines[Index].ALColor = ALinkColor; - Lines[Index].bHasURL = true; - if( Link=="" ) - Lines[Index].URL = ParseLinkType(Output); - else Lines[Index].URL = ParseLinkType(Link); - Output = ""; - FontScaler = DefaultFontSize; - Alignment = 0; - break; - case "IMG": - Output $= LeftText; - if( Output!="" || NextLineSkips>0 ) - AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); - Output = ""; - AddImage(HTML); - break; - default: - Output = Output $ LeftText; - break; - } - Input = RightText; - } - AddText(Output,TextColor,Alignment,FontScaler,NextLineSkips); -} - -// Get the next HTML tag, the text before it and everthing after it. -final function ParseHTML(string Input, out string LeftText, out string HTML, out string RightText) -{ - local int i; - - i = InStr(Input, "<"); - if (i == -1) - { - LeftText = Input; - HTML = ""; - RightText = ""; - return; - } - - LeftText = Left(Input, i); - HTML = Mid(Input, i); - - i = InStr(HTML, ">"); - if (i == -1) - { - RightText = ""; - return; - } - - RightText = Mid(HTML, i+1); - HTML = Left(HTML, i+1); -} -final function string GetTag(string HTML) -{ - local int i; - - if (HTML == "") - return ""; - - HTML = Mid(HTML, 1); // lose < - - i = FirstMatching(InStr(HTML, ">"), InStr(HTML, " ")); - if (i == -1) - return Caps(HTML); - else - return Caps(Left(HTML, i)); -} -final function string GetOption(string HTML, string Option) -{ - local int i, j; - local string s; - - i = InStr(Caps(HTML), Caps(Option)); - - if (i == 1 || Mid(HTML, i-1, 1) == " ") - { - s = Mid(HTML, i+Len(Option)); - j = FirstMatching(InStr(s, ">"), InStr(s, " ")); - s = Left(s, j); - - if (Left(s, 1) == "\"") - s = Mid(s, 1); - - if (Right(s, 1) == "\"") - s = Left(s, Len(s) - 1); - - return s; - } - return ""; -} -final function int FirstMatching(int i, int j) -{ - if (i == -1) - return j; - if (j == -1) - return i; - return Min(i, j); -} -final function Color ParseColor(string S) -{ - local Color C; - local int i; - - S = Caps(S); - if (Left(S, 1) == "#") - { - C.R = (GetHexDigit(Mid(S, 1, 1)) << 4) + GetHexDigit(Mid(S, 2, 1)); - C.G = (GetHexDigit(Mid(S, 3, 1)) << 4) + GetHexDigit(Mid(S, 4, 1)); - C.B = (GetHexDigit(Mid(S, 5, 1)) << 4) + GetHexDigit(Mid(S, 6, 1)); - } - else if (Left(S, 4) == "RGB(") - { - S = Mid(S, 4); - i = InStr(S,","); - C.R = int(Left(S,i)); - S = Mid(S,i+1); - i = InStr(S,","); - C.G = int(Left(S,i)); - C.B = int(Mid(S,i+1)); - } - else - { - switch( S ) - { - case "RED": - C.R = 255; - C.G = 0; - C.B = 0; - break; - case "BLUE": - C.R = 0; - C.G = 0; - C.B = 255; - break; - case "GREEN": - C.R = 0; - C.G = 255; - C.B = 0; - break; - case "YELLOW": - C.R = 255; - C.G = 255; - C.B = 0; - break; - case "BLACK": - C.R = 0; - C.G = 0; - C.B = 0; - break; - default: // WHITE - C.R = 255; - C.G = 255; - C.B = 255; - } - } - C.A = 255; - - return C; -} -final function byte GetHexDigit(string D) -{ - local byte i; - - i = Asc(D); - if( i>=48 && i<=57 ) // i>='0' && i<='9' - return (i-48); // i-'0' - return Min(i-55,15); // i-('A'-10) -} - -final function SplitLine( int iLine, int iOffset ) -{ - local int i; - local string S; - - ++iLine; - Lines.Insert(iLine,1); - S = Lines[iLine-1].Text; - for( i=iOffset; i0 ) - { - while( true ) - { - if( i>=Lines.Length || (i>0 && Lines[i].LineSkips>0) ) - { - for( j=iStart; j=Lines.Length ) - break; - X = 0; - iStart = i; - PrevY = BestHeight; - BestHeight = 0; - } - if( Lines[i].FontSize>=247 ) - Lines[i].Font = Owner.CurrentStyle.PickFont(Max(Lines[i].FontSize-247,0),Lines[i].FontScale); - else Lines[i].Font = Owner.CurrentStyle.PickFont(Max(FontSize+Lines[i].FontSize,0),Lines[i].FontScale); - Canvas.Font = Lines[i].Font; - if( Lines[i].Text=="" ) - { - Canvas.TextSize("ABC",XS,YS,Lines[i].FontScale,Lines[i].FontScale); - XS = 0; - } - else Canvas.TextSize(Lines[i].Text,XS,YS,Lines[i].FontScale,Lines[i].FontScale); - if( Lines[i].LineSkips>0 ) - { - if( PrevY==0 ) - PrevY = YS; - Y+=(PrevY*Lines[i].LineSkips); - } - X = Max(X,Lines[i].Tab); - Lines[i].TOffset = X; - Lines[i].Y = Y; - Lines[i].YS = YS; - BestHeight = Max(BestHeight,YS); - if( (X+XS)>Canvas.ClipX ) - { - // Split to next row. - Remain = Canvas.ClipX-X; - iLastWord = 0; - iLen = Len(Lines[i].Text); - for( j=1; jCanvas.ClipY); - if( bNeedScrollbar ) - { - MyScrollBar.SetDisabled(false); - MyScrollBar.UpdateScrollSize(0,YSize,Canvas.ClipY,512); - } - else MyScrollBar.SetDisabled(true); -} -simulated final function DrawTileStretchedClipped( Surface M, float XS, float YS ) -{ - Canvas.CurX += Canvas.OrgX; - Canvas.CurY += Canvas.OrgY; - if( Canvas.CurXCanvas.ClipX ) - XS = (Canvas.ClipX-Canvas.CurX); - if( (Canvas.CurY+YS)>Canvas.ClipY ) - YS = (Canvas.ClipY-Canvas.CurY); - if( Texture(M)!=None ) - Canvas.DrawTileStretched(Texture(M),XS,YS); -} -function DrawMenu() -{ - local float YS; - local int i,YOffset,MX,MY; - local bool bMouseOnClient; - - if( bNeedsInit || OldXSize!=CompPos[2] || OldYSize!=CompPos[3] ) - { - bNeedsInit = false; - InitHTMLArea(); - } - if( bNeedScrollbar ) - YOffset = MyScrollBar.CurrentScroll; - - if( BGColor.A>0 ) - { - C.SetPos(0,0); - C.DrawColor = BGColor; - - if( BgImage.Img!=None ) - { - if( BgImage.Align==1 ) // not locked on screen. - MX = YOffset; - switch( BgImage.Style ) - { - case 0: // Stretched to fit - C.DrawTileClipped(BgImage.Img,C.ClipX,C.ClipY,0,MX,BgImage.X,BgImage.Y); - break; - case 1: // Tiled - C.DrawTileClipped(BgImage.Img,C.ClipX,C.ClipY,0,MX,BgImage.XOffset,BgImage.YOffset); - break; - case 2: // Fit X - C.DrawTileClipped(BgImage.Img,C.ClipX,C.ClipY,0,MX,BgImage.X,BgImage.YS); - break; - case 3: // Fit Y - C.DrawTileClipped(BgImage.Img,C.ClipX,C.ClipY,0,MX,BgImage.XS,BgImage.Y); - break; - } - } - else C.DrawTile(Texture'WhiteTexture',C.ClipX,C.ClipY,0,0,1,1); - } - MX = Controller.MouseX-C.OrgX; - MY = Controller.MouseY-C.OrgY; - bMouseOnClient = (MX>=0 && MX<=C.ClipX && MY>=0 && MY<=C.ClipY); - HoverOverLinkLine = -1; - MY+=YOffset; - - C.DrawColor = Class'HUD'.Default.WhiteColor; - for( i=0; iC.ClipY ) - continue; - switch( Images[i].Align ) - { - case 0: // Left - case 3: // Unaligned, postition after text. - C.CurX = 0; - break; - case 1: // Center - C.CurX = (C.ClipX-Images[i].XS)/2; - break; - case 1: // Right - C.CurX = C.ClipX-Images[i].XS; - break; - } - C.CurX += Images[i].X; - switch( Images[i].Style ) - { - case 1: // Stretched - DrawTileStretchedClipped(C,Images[i].Img,Images[i].XS,Images[i].YS); - break; - case 2: // Tiled on X axis - C.DrawTileClipped(Images[i].Img,Images[i].XS,Images[i].YS,0,0,Images[i].XS,Images[i].Img.MaterialVSize()); - break; - case 3: // Tiled on Y axis - C.DrawTileClipped(Images[i].Img,Images[i].XS,Images[i].YS,0,0,Images[i].Img.MaterialUSize(),Images[i].YS); - break; - case 4: // Fully tiled - C.DrawTileClipped(Images[i].Img,Images[i].XS,Images[i].YS,0,0,Images[i].XS,Images[i].YS); - break; - default: // Normal - C.DrawTileClipped(Images[i].Img,Images[i].XS,Images[i].YS,0,0,Images[i].Img.MaterialUSize(),Images[i].Img.MaterialVSize()); - } - } - - for( i=0; iC.ClipY ) - break; - - // Check if mouse hovers over URL - if( bMouseOnClient && Lines[i].bHasURL && MX>=Lines[i].X && MX<=(Lines[i].X+Lines[i].XS) - && MY>=Lines[i].Y && MY<=(Lines[i].Y+Lines[i].YS) ) - { - HoverOverLinkLine = i; - bMouseOnClient = false; // No need to check on rest anymore. - C.DrawColor = Lines[i].ALColor; - } - else C.DrawColor = Lines[i].Color; - - C.Font = Lines[i].Font; - C.DrawTextClipped(Lines[i].Text); - if( Lines[i].bHasURL ) - { - YS = Max(Lines[i].YS/15,1); - C.SetPos(Lines[i].X,Lines[i].Y+Lines[i].YS-(YS*2)-YOffset); - if( C.CurY=0 ) - { - Controller.PlayInterfaceSound(CS_Hover); - SetToolTipText(Lines[HoverOverLinkLine].URL); - } - else SetToolTipText(""); - } -} - -function bool LaunchURL(GUIComponent Sender) -{ - if( HoverOverLinkLine>=0 ) - { - if( Left(Lines[HoverOverLinkLine].URL,8)~="kfurl://" ) - LaunchKFURL(Mid(Lines[HoverOverLinkLine].URL,8)); - else if( Left(Lines[HoverOverLinkLine].URL,5)~="kf://" ) - ChangeGameURL(Mid(Lines[HoverOverLinkLine].URL,5)); - else LaunchURLPage(Lines[HoverOverLinkLine].URL); - } -} - -delegate LaunchKFURL( string URL ); -delegate ChangeGameURL( string URL ) -{ - Class'SRLevelCleanup'.Static.AddSafeCleanup(PlayerOwner(),URL); -} -delegate LaunchURLPage( string URL ) -{ - PlayerOwner().Player.Console.DelayedConsoleCommand("START "$URL); -} - -defaultproperties -{ - bNeedsInit=true - - PropagateVisibility=true - OnDraw=RenderHTMLText - OnClick=LaunchURL - Begin Object Class=GUIVertScrollBar Name=TheScrollbar - bBoundToParent=true - bScaleToParent=true - WinWidth=0.03 - WinLeft=0.97 - WinTop=0.0 - WinHeight=1.0 - bVisible=true - PropagateVisibility=true - OnPreDraw=TheScrollbar.GripPreDraw - End Object - MyScrollBar=TheScrollbar - StyleName="NoBackground" - bAcceptsInput=True - Begin Object Class=GUIToolTip Name=GUIListBoxBaseToolTip - ExpirationSeconds=0 - End Object - ToolTip=GUIListBoxBaseToolTip - - WhiteColor=(R=255,G=255,B=255,A=255) - BlueColor=(R=0,G=0,B=255,A=255) - RedColor=(R=255,G=0,B=0,A=255) -} \ No newline at end of file diff --git a/ServerExt/Classes/KFGUI_List.uc b/ServerExt/Classes/KFGUI_List.uc index 7dfa466..76deeeb 100644 --- a/ServerExt/Classes/KFGUI_List.uc +++ b/ServerExt/Classes/KFGUI_List.uc @@ -76,7 +76,7 @@ function PreDraw() local byte j; ComputeCoords(); - + // First draw scrollbar to allow it to resize itself. for (j=0; j<4; ++j) ScrollBar.InputPos[j] = CompPos[j]; @@ -87,14 +87,14 @@ function PreDraw() } ScrollBar.Canvas = Canvas; ScrollBar.PreDraw(); - + // Then downscale our selves to give room for scrollbar. CompPos[2] -= ScrollBar.CompPos[2]; Canvas.SetOrigin(CompPos[0],CompPos[1]); Canvas.SetClip(CompPos[0]+CompPos[2],CompPos[1]+CompPos[3]); DrawMenu(); CompPos[2] += ScrollBar.CompPos[2]; - + // Then draw rest of components. for (i=0; i Components; function InitMenu() { local int i; - + for (i=0; i Res) function RemoveComponent(KFGUI_Base B) { local int i; - + for (i=0; i0.f && X0.f && Y=(CompPos[1]+ButtonOffset) && Owner.MousePosition.Y<=(CompPos[1]+ButtonOffset+SliderScale)) // Grabbed scrollbar! @@ -119,4 +119,4 @@ defaultproperties ScrollStride=1 PageStep=10 ButtonScale=1 -} \ No newline at end of file +} diff --git a/ServerExt/Classes/KFGUI_ScrollBarH.uc b/ServerExt/Classes/KFGUI_ScrollBarH.uc index 6b304ff..c5f8283 100644 --- a/ServerExt/Classes/KFGUI_ScrollBarH.uc +++ b/ServerExt/Classes/KFGUI_ScrollBarH.uc @@ -2,4 +2,5 @@ Class KFGUI_ScrollBarH extends KFGUI_ScrollBarBase; defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/KFGUI_ScrollBarV.uc b/ServerExt/Classes/KFGUI_ScrollBarV.uc index 54364ff..550a33d 100644 --- a/ServerExt/Classes/KFGUI_ScrollBarV.uc +++ b/ServerExt/Classes/KFGUI_ScrollBarV.uc @@ -3,4 +3,4 @@ Class KFGUI_ScrollBarV extends KFGUI_ScrollBarBase; defaultproperties { bVertical=true -} \ No newline at end of file +} diff --git a/ServerExt/Classes/KFGUI_ScrollBarV_CD.uc b/ServerExt/Classes/KFGUI_ScrollBarV_CD.uc index dd1148d..5d49635 100644 --- a/ServerExt/Classes/KFGUI_ScrollBarV_CD.uc +++ b/ServerExt/Classes/KFGUI_ScrollBarV_CD.uc @@ -12,23 +12,23 @@ function DrawMenu() else Canvas.SetDrawColor(30, 30, 30, 160); Owner.CurrentStyle.DrawRectBox (0.f, 0.f, CompPos[2], CompPos[3], 4); - + if (bDisabled) return; if (bVertical) i = 3; else i = 2; - + SliderScale = FMax(PageStep * (CompPos[i] - 32.f) / (MaxRange + PageStep),CalcButtonScale); - + if (bGrabbedScroller) { // Track mouse. if (bVertical) A = Owner.MousePosition.Y - CompPos[1] - GrabbedOffset; else A = Owner.MousePosition.X - CompPos[0] - GrabbedOffset; - + A /= ((CompPos[i]-SliderScale) / float(MaxRange)); SetValue(A); } @@ -49,4 +49,5 @@ function DrawMenu() defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/KFGUI_SwitchComponent.uc b/ServerExt/Classes/KFGUI_SwitchComponent.uc index 5c14669..88b3ac9 100644 --- a/ServerExt/Classes/KFGUI_SwitchComponent.uc +++ b/ServerExt/Classes/KFGUI_SwitchComponent.uc @@ -42,7 +42,7 @@ final function name GetSelectedPageID() final function bool SelectPageID(name PageID) { local int i; - + if (Components[CurrentComponent].ID==PageID) return false; diff --git a/ServerExt/Classes/KFGUI_SwitchMenuBar.uc b/ServerExt/Classes/KFGUI_SwitchMenuBar.uc index 126577d..507db7f 100644 --- a/ServerExt/Classes/KFGUI_SwitchMenuBar.uc +++ b/ServerExt/Classes/KFGUI_SwitchMenuBar.uc @@ -14,9 +14,9 @@ final function KFGUI_Base AddPage(class PageClass, optional out KFGU local KFGUI_Base P; local KFGUI_Base C; local KFGUI_Button B; - + C = new PageClass; - + // Add page. P = new (Self) PageClass; P.Owner = Owner; @@ -30,7 +30,7 @@ final function KFGUI_Base AddPage(class PageClass, optional out KFGU B.OnClickLeft = PageSwitched; B.OnClickRight = PageSwitched; B.IDValue = NumButtons; - + if (ButtonPosition<2) { B.XPosition = NumButtons*ButtonAxisSize; @@ -40,7 +40,7 @@ final function KFGUI_Base AddPage(class PageClass, optional out KFGU B.YPosition = 0.f; else B.YPosition = YSize-BorderWidth*0.99; B.YSize = BorderWidth*0.99; - + if (NumButtons>0) PageButtons[PageButtons.Length-1].ExtravDir = 1; } @@ -50,7 +50,7 @@ final function KFGUI_Base AddPage(class PageClass, optional out KFGU B.XPosition = 0.f; else B.XPosition = XSize-BorderWidth*0.99; B.XSize = BorderWidth*0.99; - + B.YPosition = NumButtons*ButtonAxisSize; B.YSize = ButtonAxisSize*0.99; if (NumButtons>0) @@ -136,4 +136,4 @@ defaultproperties ButtonAxisSize=0.08 CurrentPageNum=-1 PageComponentIndex=-1 -} \ No newline at end of file +} diff --git a/ServerExt/Classes/KFGUI_TextField.uc b/ServerExt/Classes/KFGUI_TextField.uc index 66f8703..41e92e5 100644 --- a/ServerExt/Classes/KFGUI_TextField.uc +++ b/ServerExt/Classes/KFGUI_TextField.uc @@ -55,7 +55,7 @@ final function ParseTextLines() S = SA[i]; if (S=="") continue; - + z = 0; while (true) { @@ -95,7 +95,7 @@ final function ParseTextLines() final function byte GrabHexValue(string S) { local byte n; - + n = (HexToInt(Asc(Left(S,1)))<<4) | HexToInt(Asc(Right(S,1))); S = Mid(S,2); return n; @@ -127,7 +127,7 @@ function InitSize() else Lines = OrgLines; InitFont = Owner.CurrentStyle.PickFont(FontScale+Owner.CurrentStyle.DefaultFontSize,InitFontScale); - + // Compute Y-offsets of each line. Canvas.Font = InitFont; Canvas.TextSize("ABC",XS,TextHeight,InitFontScale,InitFontScale); @@ -137,7 +137,7 @@ function InitSize() bShowScrollbar = (MaxHeight>=CompPos[3]); bClickable = bShowScrollbar; bCanFocus = bShowScrollbar; - + if (bShowScrollbar) { if (ScrollBar==None) @@ -148,7 +148,7 @@ function InitSize() ScrollBar.ParentComponent = Self; ScrollBar.InitMenu(); } - + // Compute scrollbar size and X-position. for (i=0; i<4; ++i) ScrollBar.InputPos[i] = CompPos[i]; @@ -192,21 +192,21 @@ final function ParseLines(float ClipX) // Add new line. Lines.Insert(i+1,1); - + // Append the remaining lines there. for (n=j; nOwner.ScreenSize.Y) Y = CompPos[1]-TY; - + if (CurrentAlpha<255) CurrentAlpha = Min(CurrentAlpha+25,255); @@ -64,4 +64,5 @@ function PreDraw() defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/KFPawn_ZedSirenX.uc b/ServerExt/Classes/KFPawn_ZedSirenX.uc index da88085..39099b4 100644 --- a/ServerExt/Classes/KFPawn_ZedSirenX.uc +++ b/ServerExt/Classes/KFPawn_ZedSirenX.uc @@ -10,4 +10,4 @@ defaultproperties Begin Object Name=SpecialMoveHandler_0 SpecialMoveClasses(SM_SonicAttack)=class'ExtSM_Siren_Scream' End Object -} \ No newline at end of file +} diff --git a/ServerExt/Classes/MS_Game.uc b/ServerExt/Classes/MS_Game.uc index 3ed48bb..b6b9f48 100644 --- a/ServerExt/Classes/MS_Game.uc +++ b/ServerExt/Classes/MS_Game.uc @@ -49,4 +49,4 @@ defaultproperties { PlayerControllerClass=class'MS_PC' HUDType=class'MS_HUD' -} \ No newline at end of file +} diff --git a/ServerExt/Classes/MS_HUD.uc b/ServerExt/Classes/MS_HUD.uc index c7af18d..b20a911 100644 --- a/ServerExt/Classes/MS_HUD.uc +++ b/ServerExt/Classes/MS_HUD.uc @@ -47,7 +47,7 @@ final function RenderProgress() { local float Y,XL,YL,Sc; local int i; - + Canvas.Font = Font(DynamicLoadObject("UI_Canvas_Fonts.Font_Main",class'Font')); Sc = FMin(Canvas.ClipY/1000.f,3.f); if (bProgressDC) @@ -68,4 +68,5 @@ final function RenderProgress() defaultproperties { + } \ No newline at end of file diff --git a/ServerExt/Classes/MS_Input.uc b/ServerExt/Classes/MS_Input.uc index 5435b20..261b6c2 100644 --- a/ServerExt/Classes/MS_Input.uc +++ b/ServerExt/Classes/MS_Input.uc @@ -13,4 +13,4 @@ event bool FilterButtonInput(int ControllerId, Name Key, EInputEvent Event, floa defaultproperties { OnReceivedNativeInputKey=FilterButtonInput -} \ No newline at end of file +} diff --git a/ServerExt/Classes/MS_PC.uc b/ServerExt/Classes/MS_PC.uc index 8eb49ca..b072174 100644 --- a/ServerExt/Classes/MS_PC.uc +++ b/ServerExt/Classes/MS_PC.uc @@ -129,7 +129,7 @@ ignores SeePlayer, HearNoise, NotifyBump, TakeDamage, PhysicsVolumeChange, NextW defaultproperties { InputClass=class'MS_Input' - + Begin Object Class=MS_PendingData Name=UserPendingData End Object TravelData=UserPendingData diff --git a/ServerExt/Classes/MS_TMPUI.uc b/ServerExt/Classes/MS_TMPUI.uc index 6ef72b1..4a8f0ec 100644 --- a/ServerExt/Classes/MS_TMPUI.uc +++ b/ServerExt/Classes/MS_TMPUI.uc @@ -36,4 +36,4 @@ defaultproperties ReferencedObjects.Add(class'MS_PC') End Object Referencer=MSGameReference -} \ No newline at end of file +} diff --git a/ServerExt/Classes/MX_MiniGameBase.uc b/ServerExt/Classes/MX_MiniGameBase.uc index 26c6e54..ea81d45 100644 --- a/ServerExt/Classes/MX_MiniGameBase.uc +++ b/ServerExt/Classes/MX_MiniGameBase.uc @@ -59,7 +59,7 @@ final function bool Box8DirTrace(vector Start, vector Dir, vector HitTest, vecto if ((V Dot Dir)<0.f) // Moving out from origin. return false; V = Normal2D(V); - + // Check which normal axis to use. if (Abs(V.X)>Normal2D(ExtB).Y) { @@ -70,11 +70,11 @@ final function bool Box8DirTrace(vector Start, vector Dir, vector HitTest, vecto else if (V.Y<0) HitNorm = vect(0,1,0); else HitNorm = vect(0,-1,0); - + HitTime = 0.f; return true; } - + // Actually perform the trace check. tmp = Dir.X==0.f ? 0.00001 : (1.f / Dir.X); tmin = (V.X - Ext.X) * tmp; @@ -113,7 +113,7 @@ final function bool Box8DirTrace(vector Start, vector Dir, vector HitTest, vecto bMaxY = true; tmax = tymax; } - + if (tmin0.f) HitNorm = vect(-1,0,0); else HitNorm = vect(1,0,0); - + HitTime = tmax; return true; } diff --git a/ServerExt/Classes/MX_PongGame.uc b/ServerExt/Classes/MX_PongGame.uc index 4f83ed8..0e07f43 100644 --- a/ServerExt/Classes/MX_PongGame.uc +++ b/ServerExt/Classes/MX_PongGame.uc @@ -83,7 +83,7 @@ function StartGame() function Render(float XPos, float YPos, float XSize, float YSize) { local float H,W; - + ScreenHeight = YSize; // Score @@ -104,26 +104,26 @@ function Render(float XPos, float YPos, float XSize, float YSize) Canvas.SetPos(XPos+XSize*0.2,YPos+YSize*0.68); Canvas.DrawText(PlaysText@string(NumPlays),,W,W); } - + // Borders Canvas.SetDrawColor(Abs(Sin(H))*255.f,Abs(Sin(H+1.25))*255.f,Abs(Sin(H+2.35))*255.f,255); Canvas.SetPos(XPos,YPos); Canvas.DrawTile(Canvas.DefaultTexture,XSize,YSize*LevelBoarderSize,0,0,1,1); Canvas.SetPos(XPos,YPos+YSize*(1.f-LevelBoarderSize)); Canvas.DrawTile(Canvas.DefaultTexture,XSize,YSize*LevelBoarderSize,0,0,1,1); - + // Player H = PadHeight*YSize; W = PadWidth*XSize; Canvas.SetDrawColor(128,255,128,255); Canvas.SetPos(XPos+PlayerPad.X*XSize,YPos+PlayerPad.Y*YSize-H*0.5); Canvas.DrawTile(Canvas.DefaultTexture,W,H,0,0,1,1); - + // Enemy Canvas.SetDrawColor(255,68,68,255); Canvas.SetPos(XPos+EnemyPad.X*XSize-W,YPos+EnemyPad.Y*YSize-H*0.5); Canvas.DrawTile(Canvas.DefaultTexture,W,H,0,0,1,1); - + // Pong ball Canvas.SetDrawColor(255,255,86,255); BallWidth = BallHeight*(YSize/XSize); @@ -131,7 +131,7 @@ function Render(float XPos, float YPos, float XSize, float YSize) W = H*0.5; Canvas.SetPos(XPos+BallPos.X*XSize-W,YPos+BallPos.Y*YSize-W); Canvas.DrawTile(Canvas.DefaultTexture,H,H,0,0,1,1); - + // Trajectory preview ball /*Canvas.SetDrawColor(255,255,86,64); Canvas.SetPos(XPos+BallTrajectory.X*XSize-W,YPos+BallTrajectory.Y*YSize-W); @@ -218,10 +218,10 @@ final function CalcEndPosition() { local float T,DY; local vector P,V; - + if (BallVel.X<=0.f) // Never. return; - + V = BallVel; P = BallPos; @@ -401,7 +401,7 @@ function Tick(float Delta) EnemyPadVel = FClamp(EnemyPadVel+(HN.Y*Delta*HN.X*6.f),-DY,DY); } } - + // Update AI if (bRand) // Random motion. { @@ -415,7 +415,7 @@ function Tick(float Delta) EnemyPadVel += DY; else EnemyPadVel -= DY; } - + // Apply by velocity and limit movement. EnemyPad.Y = EnemyPad.Y+(EnemyPadVel*Delta); if (EnemyPad.Y=CurrentManager.UserPerks.Length) return; - + PendingPerk = CurrentManager.UserPerks[Index]; ExtPlayerController(GetPlayer()).SwitchToPerk(PendingPerk.Class); } @@ -303,7 +303,7 @@ defaultproperties OnDrawItem=DrawPerkInfo OnClickedItem=SwitchedPerk End Object - + Begin Object Class=KFGUI_ComponentList Name=PerkStats ID="Stats" XPosition=0.25 @@ -312,7 +312,7 @@ defaultproperties YSize=0.88 ListItemsPerPage=16 End Object - + Begin Object Class=UIR_PerkTraitList Name=PerkTraits ID="Traits" XPosition=0.625 @@ -321,7 +321,7 @@ defaultproperties YSize=0.88 OnSelectedRow=ShowTraitInfo End Object - + Begin Object Class=KFGUI_TextLable Name=CurPerkLabel ID="Info" XPosition=0.4 @@ -332,7 +332,7 @@ defaultproperties AlignY=1 TextFontInfo=(bClipText=true) End Object - + Begin Object Class=KFGUI_Button Name=ResetPerkButton ID="Reset" XPosition=0.25 @@ -363,7 +363,7 @@ defaultproperties OnClickRight=ButtonClicked bDisabled=true End Object - + Components.Add(PerksList) Components.Add(PerkStats) Components.Add(PerkTraits) diff --git a/ServerExt/Classes/UIP_PerkSelectionLobby.uc b/ServerExt/Classes/UIP_PerkSelectionLobby.uc index ea623d0..cdbbcab 100644 --- a/ServerExt/Classes/UIP_PerkSelectionLobby.uc +++ b/ServerExt/Classes/UIP_PerkSelectionLobby.uc @@ -19,7 +19,7 @@ function Timer() PerkList.ChangeListSize(CurrentManager.UserPerks.Length); if (PendingPerk!=None && !PendingPerk.bPerkNetReady) return; - + // Huge code block to handle stat updating, but actually pretty well optimized. if (PendingPerk!=OldUsedPerk) { @@ -76,7 +76,7 @@ function Timer() PerkLabel.SetText(LevelText$PendingPerk.GetLevelString()@PendingPerk.PerkName@"("$PointsText@PendingPerk.CurrentSP$")"); for (i=0; i > Pages; @@ -33,7 +33,7 @@ function InitMenu() PageSwitcher = KFGUI_SwitchMenuBar(FindComponentID('Pager')); Super(KFGUI_Page).InitMenu(); - + AddMenuButton('Mapvote',MapVoteButtonText,MapVoteButtonToolTip); AddMenuButton('Settings',SettingsButtonText,SettingsButtonToolTip); SkipTraderButton = AddMenuButton('SkipTrader',SkipTraderButtonText,SkipTraderButtonToolTip); @@ -41,7 +41,7 @@ function InitMenu() AddMenuButton('Close',CloseButtonText,CloseButtonToolTip); AddMenuButton('Disconnect',DisconnectButtonText,DisconnectButtonToolTip); AddMenuButton('Exit',ExitButtonText,ExitButtonToolTip); - + for (i=0; i=0; --i) @@ -175,7 +175,7 @@ function DrawMenu() Canvas.Font = Owner.CurrentStyle.PickFont(DefFont,FontScalar); YL = Owner.CurrentStyle.DefaultHeight; YHeight = YL*5.f; - + // Draw header. if (Canvas.ClipX<1000) { @@ -211,7 +211,7 @@ function DrawMenu() Y+=YL; Canvas.SetPos(XPos+26,Y); Canvas.DrawText(TimeText$": "$FormatTimeSM(KFGRI.ElapsedTime)$" | "$PlayersText$": "$NumPlayer$" | "$AliveText$": "$NumAlivePlayer$" | "$SpectatorsText$": "$NumSpec,,FontScalar,FontScalar); - + XPos += XScale*0.75-1; XScale *= 0.25; Canvas.SetDrawColor(18,8,8,FrameOpacity); @@ -223,7 +223,7 @@ function DrawMenu() DrawCenteredText(HeaderWaveText,XPos+XScale*0.5,Y,FontScalar); Y += YL; DrawCenteredText(KFGRI.WaveNum$"/"$(KFGRI.WaveMax-1),XPos+XScale*0.5,Y,FontScalar*1.1); - + // Scoreboard title line. Canvas.Font = Owner.CurrentStyle.PickFont(DefFont,FontScalar); YL = Owner.CurrentStyle.DefaultHeight; @@ -243,13 +243,13 @@ function DrawMenu() Canvas.SetDrawColor(32,32,128,FrameOpacity); else Canvas.SetDrawColor(128,32,32,FrameOpacity); Owner.CurrentStyle.DrawRectBox(XPos,YPos,XScale,YHeight,16,2); - + // Calc X offsets CashXPos = XScale*0.5; KillsXPos = XScale*0.7; AssistXPos = XScale*0.8; PingXPos = XScale*0.9; - + // Header texts Canvas.DrawColor = SBTextColor; Y = YPos+4; @@ -277,11 +277,11 @@ function DrawMenu() break; --i; } - + // Scoreboard background. Canvas.SetDrawColor(18,8,8,FrameOpacity); Owner.CurrentStyle.DrawRectBox(XPos,YPos,XScale,YHeight,16); - + // Setup listing. PlayersList.XPosition = (XPos+8.f) / InputPos[2]; PlayersList.YPosition = (YPos+8.f) / InputPos[3]; @@ -295,7 +295,7 @@ function DrawMenu() final function Texture2D FindAvatar(UniqueNetId ClientID) { local string S; - + S = KFPlayerController(GetPlayer()).GetSteamAvatar(ClientID); if (S=="") return None; @@ -328,16 +328,16 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float local ExtPlayerReplicationInfo PRI; local float XPos,YPos,XL,YL; local string S; - + if (Index==0) { // Setup font info. C.Font = SBFont; } PRI = PRIList[Index]; - + bFocus = bFocus || (bHasSelectedPlayer && RightClickPlayer==PRI); - + // Draw name entry background. if (PRI.bOnlySpectator) // Spectator - blue. { @@ -370,7 +370,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float C.DrawColor = C.DrawColor*0.6; Owner.CurrentStyle.DrawRectBox(0.f,YOffset,Width,Height-ScoreboardSpacing,10); Height-=ScoreboardSpacing; - + // Draw health bg. if (!bShowSpectatorsOnly) { @@ -398,7 +398,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float if (!PRI.bBot) PRI.Avatar = FindAvatar(PRI.UniqueId); } - + // Name C.SetPos(XPos,YOffset+2); if (PlayerIndex==Index) @@ -429,11 +429,11 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float YPos*=0.9; } C.DrawText(S,,YPos,YPos); - + // Other info background. C.SetDrawColor(4,4,4,255); Owner.CurrentStyle.DrawRectBox(CashXPos-4,YOffset+4,Width-CashXPos-8,Height-8,6); - + // Perk if (!bShowSpectatorsOnly) { @@ -478,7 +478,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float } C.DrawText(S,,YPos,YPos); } - + // Cash C.DrawColor = SBTextColor; YPos = YOffset+(Height-SBFontHeight)*0.5; @@ -486,17 +486,17 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float { C.SetPos(CashXPos,YPos); C.DrawText(string(int(PRI.Score)),,SBFontSize,SBFontSize); - + // Kills DrawCenteredText(string(PRI.Kills),KillsXPos,YPos,SBFontSize); - + // Assists DrawCenteredText(string(PRI.Assists),AssistXPos,YPos,SBFontSize); } - + // Ping DrawCenteredText(PRI.bBot ? BotText : string(PRI.Ping*4),PingXPos,YPos,SBFontSize); - + // Draw health. if (!bShowSpectatorsOnly) { @@ -520,7 +520,7 @@ function ClickedPlayer(int Index, bool bRight, int MouseX, int MouseY) return; bHasSelectedPlayer = true; RightClickPlayer = PRIList[Index]; - + // Check what items to disable. PC = GetPlayer(); PlayerContext.ItemRows[0].bDisabled = (PlayerIndex==Index || !PC.IsSpectating()); @@ -584,7 +584,7 @@ function ShowPlayerTooltip(int Index) { local ExtPlayerReplicationInfo PRI; local string S; - + PRI = PRIList[Index]; if (PRI!=None) { @@ -622,7 +622,7 @@ defaultproperties bAlwaysTop=true SBTextColor=(R=250,G=250,B=250,A=255) ScoreboardSpacing=4 - + Begin Object Class=KFGUI_List Name=PlayerList bDrawBackground=false OnDrawItem=DrawPlayerEntry @@ -640,10 +640,10 @@ defaultproperties OnClickLeft=ButtonClicked OnClickRight=ButtonClicked End Object - + Components.Add(PlayerList) Components.Add(B_ShowSpecs) - + Begin Object Class=KFGUI_RightClickMenu Name=PlayerContextMenu OnSelectedItem=SelectedRCItem OnBecameHidden=HidRightClickMenu diff --git a/ServerExt/Classes/UI_Scoreboard_CD.uc b/ServerExt/Classes/UI_Scoreboard_CD.uc index f4a1f13..5f934c7 100644 --- a/ServerExt/Classes/UI_Scoreboard_CD.uc +++ b/ServerExt/Classes/UI_Scoreboard_CD.uc @@ -23,7 +23,7 @@ function InitMenu() SpecButton.ButtonText=SpecButtonText; SpecButton.Tooltip=SpecButtonTooltip; - + PlayerContext.ItemRows.AddItem(NewFRowItem(SpectateThisPlayerText, false)); PlayerContext.ItemRows.AddItem(NewFRowItem(ViewPlayerProfileText, false)); PlayerContext.ItemRows.AddItem(NewFRowItem(MuteText, false)); @@ -155,7 +155,7 @@ function DrawMenu() S = " | " $FormatTimeSMH (KFGRI.ElapsedTime); Canvas.SetPos (XPos, YPos); Canvas.DrawText (S, , FontScalar, FontScalar); - + // Players | Alive | Spectators XPos = XPosCenter; @@ -187,7 +187,7 @@ function DrawMenu() S = " | "$SpectatorsText$" : " $NumSpec; Canvas.SetPos (XPos, YPos); Canvas.DrawText (S, , FontScalar, FontScalar); - + Width = Canvas.ClipX * 0.7; XPos = (Canvas.ClipX - Width) * 0.5; @@ -199,7 +199,7 @@ function DrawMenu() Canvas.DrawColor = MakeColor (250, 250, 250, 255); // Calc X offsets - + AdminXPos = Width * 0.0; PerkXPos = Width * 0.1; PlayerXPos = Width * 0.3; @@ -220,23 +220,23 @@ function DrawMenu() Canvas.SetPos (XPos + AssistXPos, YPos); Canvas.DrawText (HeaderAssistText, , FontScalar, FontScalar); - + Canvas.SetPos (XPos + CashXPos, YPos); Canvas.DrawText (HeaderDoshText, , FontScalar, FontScalar); Canvas.SetPos (XPos + StateXPos, YPos); Canvas.DrawText (HeaderStateText, , FontScalar, FontScalar); } - + Canvas.SetPos (XPos, YPos); Canvas.DrawText (HeaderRankText, , FontScalar, FontScalar); - + Canvas.SetPos (XPos + PlayerXPos, YPos); Canvas.DrawText (HeaderPlayerText, , FontScalar, FontScalar); Canvas.SetPos (XPos + PingXPos, YPos); Canvas.DrawText (HeaderPingText, , FontScalar, FontScalar); - + PRIList.Length = (bShowSpectatorsOnly ? NumSpec : NumPlayer); j = PRIList.Length; for (i=(KFGRI.PRIArray.Length-1); i>=0; --i) @@ -249,7 +249,7 @@ function DrawMenu() PlayerIndex = j; } } - + CurrentBoxY = (YL + 4) * MaxPlayerCount; while (CurrentBoxY > (Canvas.ClipY-YPos)) { @@ -260,7 +260,7 @@ function DrawMenu() break; } } - + PlayersList.XPosition = ((Canvas.ClipX - Width) * 0.5) / InputPos[2]; PlayersList.YPosition = (YPos + (YL + 4)) / InputPos[3]; PlayersList.XSize = (Width * 1.022) / InputPos[2]; @@ -276,27 +276,27 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float local string S, StrValue; local byte DefFont; local int Ping; - + KFPRI = PRIList[Index]; - + bFocus = bFocus || (bHasSelectedPlayer && RightClickPlayer==KFPRI); - + DefFont = Owner.CurrentStyle.DefaultFontSize; C.Font = Owner.CurrentStyle.PickFont(DefFont, FontScalar); - + if (KFPRI == GetPlayer().PlayerReplicationInfo) { if (bFocus) C.SetDrawColor(0, 83, 255, 150); else C.SetDrawColor (51, 30, 101, 150); } - else + else { if (bFocus) C.SetDrawColor(0, 83, 255, 150); else C.SetDrawColor (30, 30, 30, 150); } - + Owner.CurrentStyle.DrawRectBox (0.f, YOffset, Width, Height, 4); C.DrawColor = MakeColor (250, 250, 250, 255); @@ -309,7 +309,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float { C.SetPos (0.f + PerkXPos, YOffset + 2.5); C.DrawRect (Height-5, Height-5, KFPRI.ECurrentPerk.Default.PerkIcon); - + S = KFPRI.GetPerkLevelStr()@KFPRI.ECurrentPerk.Default.PerkName; C.SetPos (0.f + PerkXPos + Height, YOffset); C.DrawText (S, , FontScalar, FontScalar); @@ -318,7 +318,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float { C.SetPos (0.f + PerkXPos, YOffset + 2.5); C.DrawRect (Height-5, Height-5, KFPRI.CurrentPerkClass.Default.PerkIcon); - + S = KFPRI.CurrentPerkClass.Default.PerkName; C.SetPos (0.f + PerkXPos + Height, YOffset); C.DrawText (S, , FontScalar, FontScalar); @@ -331,7 +331,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float C.DrawText (S, , FontScalar, FontScalar); } } - + // Avatar if (KFPRI.Avatar!=None) { @@ -345,7 +345,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float if (!KFPRI.bBot) KFPRI.Avatar = FindAvatar(KFPRI.UniqueId); } - + // Rank if (KFPRI.ShowAdminName()) { @@ -362,7 +362,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float S = PlayerText; C.DrawColor = MakeColor(255,255,255,255); } - + // Rank C.SetPos (0.f + AdminXPos, YOffset); C.DrawText (S, , FontScalar, FontScalar); @@ -370,7 +370,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float // Player C.SetPos (0.f + PlayerXPos, YOffset); C.DrawText (KFPRI.PlayerName, , FontScalar, FontScalar); - + C.DrawColor = MakeColor(255,255,255,255); if (!bShowSpectatorsOnly) @@ -384,7 +384,7 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float C.SetDrawColor(255,255,51,255); C.SetPos (0.f + AssistXPos, YOffset); C.DrawText (string (KFPRI.Assists), , FontScalar, FontScalar); - + // Dosh C.SetDrawColor(51,255,51,255); C.SetPos (0.f + CashXPos, YOffset); @@ -404,13 +404,13 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float else if (KFPRI.PlayerHealth >= 30) C.DrawColor = MakeColor (250, 250, 0, 255); else C.DrawColor = MakeColor (250, 100, 100, 255); - + S = string (KFPRI.PlayerHealth) @"HP"; } C.SetPos (0.f + StateXPos, YOffset); C.DrawText (S, , FontScalar, FontScalar); - + C.DrawColor = MakeColor (250, 250, 250, 255); } @@ -420,13 +420,13 @@ function DrawPlayerEntry(Canvas C, int Index, float YOffset, float Height, float else { Ping = int(KFPRI.Ping * `PING_SCALE); - + if (Ping <= 100) C.DrawColor = MakeColor (0, 250, 0, 255); else if (Ping <= 200) C.DrawColor = MakeColor (250, 250, 0, 255); else C.DrawColor = MakeColor (250, 100, 100, 255); - + S = string(Ping); } @@ -438,7 +438,7 @@ function ShowPlayerTooltip(int Index) { local ExtPlayerReplicationInfo PRI; local string S; - + PRI = PRIList[Index]; if (PRI!=None) { @@ -466,7 +466,7 @@ function string ConvertValueLarge(int FValue) local string StrValue, StrType; local float FltValue; local int i; - + FltValue = float(FValue); StrValue = string(FltValue); if (FltValue < 10000.f) @@ -497,7 +497,7 @@ function SelectedRCItem(int Index) PC = GetPlayer(); KFPRI = KFPlayerReplicationInfo(PC.PlayerReplicationInfo); - + switch (Index) { case 3: // Vote kick. @@ -512,9 +512,9 @@ function SelectedRCItem(int Index) defaultproperties { MaxPlayerCount=25 - + Components.Empty - + Begin Object Class=KFGUI_List_CD Name=PlayerList bDrawBackground=false OnDrawItem=DrawPlayerEntry @@ -534,7 +534,7 @@ defaultproperties End Object Components.Add(PlayerList) Components.Add(B_ShowSpecs) - + Begin Object Class=KFGUI_RightClickMenu_CD Name=PlayerContextMenu OnSelectedItem=SelectedRCItem OnBecameHidden=HidRightClickMenu diff --git a/ServerExt/Classes/UI_UnloadInfo.uc b/ServerExt/Classes/UI_UnloadInfo.uc index d92a428..5ceeea2 100644 --- a/ServerExt/Classes/UI_UnloadInfo.uc +++ b/ServerExt/Classes/UI_UnloadInfo.uc @@ -23,12 +23,12 @@ function InitMenu() { UnloadPerkYesButton = KFGUI_Button(FindComponentID('Yes')); UnloadPerkNoButton = KFGUI_Button(FindComponentID('No')); - + UnloadPerkYesButton.ButtonText=ButtonYesText; UnloadPerkNoButton.ButtonText=ButtonNoText; UnloadPerkYesButton.ToolTip=ButtonYesToolTip; UnloadPerkNoButton.ToolTip=ButtonNoToolTip; - + InfoLabel = KFGUI_TextField(FindComponentID('Info')); Super.InitMenu(); } @@ -69,7 +69,7 @@ function ReceivedInfo(byte CallID, byte Code, int DataA, int DataB) { if (CurCallCode!=CallID) return; - + switch (Code) { case 0: @@ -93,7 +93,7 @@ defaultproperties YSize=0.45 bAlwaysTop=true bOnlyThisFocus=true - + Begin Object Class=KFGUI_TextField Name=WarningLabel ID="Info" XPosition=0.01 @@ -101,7 +101,7 @@ defaultproperties XSize=0.98 YSize=0.775 End Object - + Begin Object Class=KFGUI_Button Name=UnloadPerkYesButton ID="Yes" XPosition=0.2 @@ -121,7 +121,7 @@ defaultproperties OnClickLeft=ButtonClicked OnClickRight=ButtonClicked End Object - + Components.Add(WarningLabel) Components.Add(UnloadPerkYesButton) Components.Add(UnloadPerkNoButton) diff --git a/ServerExt/Classes/VSFPZedHands.uc b/ServerExt/Classes/VSFPZedHands.uc index 860303a..a565cb4 100644 --- a/ServerExt/Classes/VSFPZedHands.uc +++ b/ServerExt/Classes/VSFPZedHands.uc @@ -87,4 +87,4 @@ defaultproperties End Object Mesh=FPHandSkeletalMesh Components.Add(FPHandSkeletalMesh) -} \ No newline at end of file +} diff --git a/ServerExt/Classes/VSZombie.uc b/ServerExt/Classes/VSZombie.uc index 4efd4cc..912c8c5 100644 --- a/ServerExt/Classes/VSZombie.uc +++ b/ServerExt/Classes/VSZombie.uc @@ -35,7 +35,7 @@ function bool CanAttack(Actor Other) function bool IsFiring() { local byte i; - + for (i=0; iStrMap.Length) return ""; @@ -155,7 +155,7 @@ final function DebugData() local string S,SS; local array B; local int i; - + GetData(B); `Log("DEBUG DATA: Data size: "$B.Length); for (i=0; i Res) Res = Buffer; Res.Insert(0,1); Res[0] = ArVersion; - + // Add string map to start. // Write string map length. Res.Insert(1,2); @@ -182,7 +182,7 @@ function GetData(out array Res) Res[1] = l & 255; Res[2] = (l >> 8) & 255; o = 3; - + // write each entry. for (i=0; i S) // read string map length. StrMap.Length = Buffer[1] | (Buffer[2] << 8); o = 3; - + // read each string map entry. for (i=0; il) // See if list has overflown incase an admin has changed the max stats value. V.Length = l; @@ -60,7 +60,7 @@ static final function bool CheckBestTrack(PlayerReplicationInfo PRI, int Value, return false; } } - + for (i=0; i"$InfoStr$":"; if (!bSkipTrail) S $= ""; @@ -93,7 +93,7 @@ final function AddConfigEditbox(WebAdminQuery q, string InfoStr, string CurVal, final function AddConfigCheckbox(WebAdminQuery q, string InfoStr, bool bCur, string ResponseVar, string Tooltip) { local string S; - + S = bCur ? " checked" : ""; S = ""$InfoStr$":"; q.response.SendText(S); @@ -102,7 +102,7 @@ final function AddConfigCheckbox(WebAdminQuery q, string InfoStr, bool bCur, str final function AddConfigTextbox(WebAdminQuery q, string InfoStr, string CurVal, int Rows, string ResponseVar, string Tooltip) { local string S; - + S = ""$InfoStr$":"; S $= ""; q.response.SendText(S); @@ -180,7 +180,7 @@ function handleExtMod(WebAdminQuery q) GetV = ExtAdminUI.ConfigList[EditPageIndex].GetValue; SetV = ExtAdminUI.ConfigList[EditPageIndex].SetValue; z = int(GetV(ExtAdminUI.ConfigList[EditPageIndex].Configs[i].PropName,-1)); - + for (j=z; j>=0; --j) { if (q.request.getVariable("DEL"$j)=="1") @@ -202,7 +202,7 @@ function handleExtMod(WebAdminQuery q) if (bEditArray) { q.response.SendText(""); - + GetV = ExtAdminUI.ConfigList[EditPageIndex].GetValue; z = int(GetV(ExtAdminUI.ConfigList[EditPageIndex].Configs[i].PropName,-1)); @@ -227,7 +227,7 @@ function handleExtMod(WebAdminQuery q) break; } } - + q.response.SendText(""); } else @@ -262,7 +262,7 @@ function handleExtMod(WebAdminQuery q) } } } - + // Submit button q.response.SendText(""); } @@ -286,4 +286,4 @@ defaultproperties { ExtWebURL="/settings/ExtServerMod" EditPageIndex=-1 -} \ No newline at end of file +} diff --git a/ServerExtMut/Classes/ExtXMLOutput.uc b/ServerExtMut/Classes/ExtXMLOutput.uc index f7e26f2..14f263e 100644 --- a/ServerExtMut/Classes/ExtXMLOutput.uc +++ b/ServerExtMut/Classes/ExtXMLOutput.uc @@ -43,4 +43,4 @@ function ResetFile() defaultproperties { bFlushEachWrite=false -} \ No newline at end of file +} diff --git a/ServerExtMut/Classes/KFGI_Access.uc b/ServerExtMut/Classes/KFGI_Access.uc index e4c7ab8..938fa9f 100644 --- a/ServerExtMut/Classes/KFGI_Access.uc +++ b/ServerExtMut/Classes/KFGI_Access.uc @@ -13,5 +13,5 @@ function bool IsCustomZed(class KFPM) defaultproperties { - + } diff --git a/ServerExtMut/Classes/ServerExtMut.uc b/ServerExtMut/Classes/ServerExtMut.uc index 550d398..e17320e 100644 --- a/ServerExtMut/Classes/ServerExtMut.uc +++ b/ServerExtMut/Classes/ServerExtMut.uc @@ -82,12 +82,12 @@ function PostBeginPlay() if (WorldInfo.Game.BaseMutator==None) WorldInfo.Game.BaseMutator = Self; else WorldInfo.Game.BaseMutator.AddMutator(Self); - + if (bDeleteMe) // This was a duplicate instance of the mutator. return; SpawnPointer = class'ExtSpawnPointHelper'.Static.FindHelper(WorldInfo); // Start init world pathlist. - + //OnlineSubsystemSteamworks(class'GameEngine'.Static.GetOnlineSubsystem()).Int64ToUniqueNetId("",Id); //`Log("TEST"@class'OnlineSubsystem'.Static.UniqueNetIdToString(Id)); @@ -97,7 +97,7 @@ function PostBeginPlay() class'OnlineSubsystem'.Static.StringToUniqueNetId(DevList[i],Id); DevNetID[i] = Id; } - + ServerStatLoader = new (None) class'ExtPlayerStat'; WorldInfo.Game.HUDType = class'KFExtendedHUD'; WorldInfo.Game.PlayerControllerClass = class'ExtPlayerController'; @@ -105,7 +105,7 @@ function PostBeginPlay() WorldInfo.Game.DefaultPawnClass = class'ExtHumanPawn'; KFGameInfo(WorldInfo.Game).CustomizationPawnClass = class'ExtPawn_Customization'; KFGameInfo(WorldInfo.Game).KFGFxManagerClass = class'ExtMoviePlayer_Manager'; - + KFGIA = new(KFGameInfo(WorldInfo.Game)) class'KFGI_Access'; if (ServerMOTD=="") @@ -211,7 +211,7 @@ function PostBeginPlay() } } } - + // Bonus (pong) game contents. if (BonusGameSongs.Length>0) { @@ -283,7 +283,7 @@ static final function string GetStatFile(const out UniqueNetId UID) final function bool IsDev(const out UniqueNetId UID) { local int i; - + for (i=(DevNetID.Length-1); i>=0; --i) if (DevNetID[i]==UID) return true; @@ -314,7 +314,7 @@ function NotifyWaveChange() { local ExtPlayerController ExtPC; local KFProj_RicochetStickBullet KFBolt; - + if (bRespawnCheck) { bIsPostGame = (KF.WaveMax1 && InStr(Caps(PackageName), "KF") == 0) { @@ -404,7 +404,7 @@ function bool IsFromMod(Object O) if (Len(PackageName)>1 && InStr(Caps(PackageName), "KF") == 0) return false; } - + return true; } @@ -412,15 +412,15 @@ function bool HasModsInDamageInfo(DamageInfo DI) { local class DamageCauser; local class DamageType; - + foreach DI.DamageCausers(DamageCauser) if (IsFromMod(DamageCauser)) return true; - + foreach DI.DamageTypes(DamageType) if (IsFromMod(DamageType)) return true; - + return false; } @@ -434,19 +434,19 @@ function CustomXP(Controller Killer, Controller Killed) local KFPerk InstigatorPerk; local DamageInfo DamageInfo; local class DamagePerk; - + KFM = KFPawn_Monster(Killed.Pawn); foreach KFM.DamageHistory(DamageInfo) { DamagerKFPRI = KFPlayerReplicationInfo(DamageInfo.DamagerPRI); if (DamagerKFPRI == None) continue; - + // if no mods - exit the loop, the game will add experience by itself - if (!HasModsInDamageInfo(DamageInfo) && !KFGIA.IsCustomZed(KFM.class)) continue; - + if (!HasModsInDamageInfo(DamageInfo) && !KFGIA.IsCustomZed(KFM.class)) continue; + KFPC = KFPlayerController(DamagerKFPRI.Owner); if (KFPC == None) continue; - + i = CustomZedXPArray.Find('zedclass', KFM.Class); if (i != INDEX_NONE) { @@ -456,9 +456,9 @@ function CustomXP(Controller Killer, Controller Killed) { XP = KFM.static.GetXPValue(MyKFGI.GameDifficulty); } - + InstigatorPerk = KFPC.GetPerk(); - + // Special for survivalist - he gets experience for everything // and for TF2Sentry - it has no perk in DamageHistory if (InstigatorPerk.ShouldGetAllTheXP() || DamageInfo.DamagePerks.Length == 0) @@ -466,7 +466,7 @@ function CustomXP(Controller Killer, Controller Killed) KFPC.OnPlayerXPAdded(XP, InstigatorPerk.Class); continue; } - + XP /= DamageInfo.DamagePerks.Length; foreach DamageInfo.DamagePerks(DamagePerk) { @@ -481,10 +481,10 @@ function ScoreKill(Controller Killer, Controller Killed) local ExtPlayerController ExtPC; local ExtPerkManager KillersPerk; local KFPawn_Monster KFPM; - + if (bRespawnCheck && Killed.bIsPlayer) CheckRespawn(Killed); - + KFPM = KFPawn_Monster(Killed.Pawn); if (KFPM != None && Killed.GetTeamNum() != 0 && Killer != None && Killer.bIsPlayer && Killer.GetTeamNum() == 0) @@ -492,13 +492,13 @@ function ScoreKill(Controller Killer, Controller Killed) ExtPC = ExtPlayerController(Killer); if (ExtPC != None && ExtPC.ActivePerkManager != None) ExtPC.ActivePerkManager.PlayerKilled(KFPM, LastKillDamageType); - + if (bKillMessages && Killer.PlayerReplicationInfo != None) BroadcastKillMessage(Killed.Pawn, Killer); - + CustomXP(Killer, Killed); } - + if (MyKFGI != None && MyKFGI.IsZedTimeActive() && KFPM != None) { KFPC = KFPlayerController(Killer); @@ -512,11 +512,11 @@ function ScoreKill(Controller Killer, Controller Killed) } } } - + ExtPC = ExtPlayerController(Killed); if (ExtPC != None) CheckPerkChange(ExtPC); - + if (NextMutator != None) NextMutator.ScoreKill(Killer, Killed); } @@ -525,7 +525,7 @@ function bool PreventDeath(Pawn Killed, Controller Killer, class dam { if ((KFPawn_Human(Killed)!=None && CheckPreventDeath(KFPawn_Human(Killed),Killer,damageType)) || Super.PreventDeath(Killed,Killer,damageType,HitLocation)) return true; - + LastKillDamageType = damageType; if (Killed.Controller!=None && KFPawn_Monster(Killed)!=None) { @@ -551,7 +551,7 @@ final function GT_PlayerKilled(Controller Killer, Controller Killed, class damageType) { local ExtPlayerController E; - + if (Victim.IsA('KFPawn_Customization')) return false; E = ExtPlayerController(Victim.Controller); @@ -598,7 +598,7 @@ final function BroadcastFFDeath(Controller Killer, Pawn Killed, class510) { @@ -816,7 +816,7 @@ final function SendMOTD(ExtPlayerController PC) S = Mid(S,500); } PC.ReceiveServerMOTD(S,true); - + for (i=0; i Events; local SeqEvent_PlayerSpawned SpawnedEvent; - local LocalPlayer LP; + local LocalPlayer LP; if (NewPlayer.Pawn!=None) NewPlayer.Pawn.Destroy(); @@ -1144,16 +1144,16 @@ final function bool RespawnPlayer(Controller NewPlayer) // To fix custom post processing chain when not running in editor or PIE. if (KFPC != none) { - LP = LocalPlayer(KFPC.Player); - if (LP != None) - { - LP.RemoveAllPostProcessingChains(); - LP.InsertPostProcessingChain(LP.Outer.GetWorldPostProcessChain(),INDEX_NONE,true); + LP = LocalPlayer(KFPC.Player); + if (LP != None) + { + LP.RemoveAllPostProcessingChains(); + LP.InsertPostProcessingChain(LP.Outer.GetWorldPostProcessChain(),INDEX_NONE,true); if (KFPC.myHUD != None) { KFPC.myHUD.NotifyBindPostProcessEffects(); } - } + } } KFGameInfo(WorldInfo.Game).SetTeam(NewPlayer, KFGameInfo(WorldInfo.Game).Teams[0]); @@ -1180,7 +1180,7 @@ function PlayerBuyStats(ExtPlayerController PC, class Perk, int iS if (bGameHasEnded) return; - + P = PC.ActivePerkManager.FindPerk(Perk); if (P==None || !P.bPerkNetReady || iStat>=P.PerkStats.Length) return; @@ -1248,12 +1248,12 @@ function Tick(float DeltaTime) { local bool bCheckedWave; local ExtPlayerController ExtPC; - + if (KFGameReplicationInfo(WorldInfo.GRI).bTraderIsOpen && !bCheckedWave) { foreach WorldInfo.AllControllers(class'ExtPlayerController',ExtPC) CheckPerkChange(ExtPC); - + bCheckedWave = true; } else if (bCheckedWave) @@ -1267,7 +1267,7 @@ function PlayerBoughtTrait(ExtPlayerController PC, class PerkClass if (bGameHasEnded) return; - + P = PC.ActivePerkManager.FindPerk(PerkClass); if (P==None || !P.bPerkNetReady) return; @@ -1281,7 +1281,7 @@ function PlayerBoughtTrait(ExtPlayerController PC, class PerkClass cost = Trait.Static.GetTraitCost(P.PerkTraits[i].CurrentLevel); if (cost>P.CurrentSP || !Trait.Static.MeetsRequirements(P.PerkTraits[i].CurrentLevel,P)) return; - + PC.ActivePerkManager.bStatsDirty = true; P.CurrentSP-=cost; P.bForceNetUpdate = true; @@ -1313,7 +1313,7 @@ function PlayerUnloadInfo(ExtPlayerController PC, byte CallID, class PerkClass, if (bGameHasEnded) return; - + P = PC.ActivePerkManager.FindPerk(PerkClass); if (P==None || !P.bPerkNetReady) return; @@ -1400,7 +1400,7 @@ function AdminCommand(ExtPlayerController PC, int PlayerID, int Action) { local ExtPlayerController E; local int i; - + if (bNoAdminCommands) { PC.ClientMessage("Admin level commands are disabled.",'Priority'); @@ -1411,17 +1411,17 @@ function AdminCommand(ExtPlayerController PC, int PlayerID, int Action) PC.ClientMessage("You do not have enough admin priveleges.",'Priority'); return; } - + foreach WorldInfo.AllControllers(class'ExtPlayerController',E) if (E.PlayerReplicationInfo.PlayerID==PlayerID) break; - + if (E==None) { PC.ClientMessage("Action failed, missing playerID: "$PlayerID,'Priority'); return; } - + if (Action>=100) // Set perk level. { if (E.ActivePerkManager.CurrentPerk==None) @@ -1439,7 +1439,7 @@ function AdminCommand(ExtPlayerController PC, int PlayerID, int Action) Action = Min(Action-100000,E.ActivePerkManager.CurrentPerk.MaxPrestige); E.ActivePerkManager.CurrentPerk.CurrentPrestige = Action; PC.ClientMessage("Set "$E.PlayerReplicationInfo.PlayerName$"' perk "$E.ActivePerkManager.CurrentPerk.Default.PerkName$" prestige level to "$Action,'Priority'); - + E.ActivePerkManager.CurrentPerk.FullReset(true); } else @@ -1447,7 +1447,7 @@ function AdminCommand(ExtPlayerController PC, int PlayerID, int Action) Action = Clamp(Action-100,E.ActivePerkManager.CurrentPerk.MinimumLevel,E.ActivePerkManager.CurrentPerk.MaximumLevel); E.ActivePerkManager.CurrentPerk.CurrentEXP = E.ActivePerkManager.CurrentPerk.GetNeededExp(Action-1); PC.ClientMessage("Set "$E.PlayerReplicationInfo.PlayerName$"' perk "$E.ActivePerkManager.CurrentPerk.Default.PerkName$" level to "$Action,'Priority'); - + E.ActivePerkManager.CurrentPerk.SetInitialLevel(); E.ActivePerkManager.CurrentPerk.UpdatePRILevel(); } diff --git a/ServerExtMut/Classes/xMapVoteHistory.uc b/ServerExtMut/Classes/xMapVoteHistory.uc index 81ccbeb..9de9335 100644 --- a/ServerExtMut/Classes/xMapVoteHistory.uc +++ b/ServerExtMut/Classes/xMapVoteHistory.uc @@ -39,7 +39,7 @@ static final function GetHistory(int i, out int UpVotes, out int DownVotes, out static final function UpdateMapHistory(int iWon) { local int i; - + for (i=(Default.M.Length-1); i>=0; --i) { if (i==iWon) diff --git a/ServerExtMut/Classes/xVoteBroadcast.uc b/ServerExtMut/Classes/xVoteBroadcast.uc index c22f6d1..eb4412b 100644 --- a/ServerExtMut/Classes/xVoteBroadcast.uc +++ b/ServerExtMut/Classes/xVoteBroadcast.uc @@ -34,4 +34,5 @@ event AllowBroadcastLocalizedTeam(int TeamIndex, actor Sender, class"; if (!bNoTR) S = ""$S$""; @@ -206,4 +206,4 @@ defaultproperties { MapVoterURL="/settings/xMapVoter" EditSettingLine=-1 -} \ No newline at end of file +} diff --git a/ServerExtMut/Classes/xVotingHandler.uc b/ServerExtMut/Classes/xVotingHandler.uc index 1973c3f..424a4a8 100644 --- a/ServerExtMut/Classes/xVotingHandler.uc +++ b/ServerExtMut/Classes/xVotingHandler.uc @@ -36,12 +36,12 @@ function PostBeginPlay() if (WorldInfo.Game.BaseMutator==None) WorldInfo.Game.BaseMutator = Self; else WorldInfo.Game.BaseMutator.AddMutator(Self); - + if (bDeleteMe) // This was a duplicate instance of the mutator. return; InitConfig(); - + MapFile = string(WorldInfo.GetPackageName()); iCurrentHistory = class'xMapVoteHistory'.Static.GetMapHistory(MapFile,WorldInfo.Title); @@ -66,7 +66,7 @@ function PostBeginPlay() ++z; } } - + if (MaxMapsOnList>0) { // Remove random maps from list. @@ -81,16 +81,16 @@ function PostBeginPlay() function InitConfig() { local bool ConfigChanged; - + ConfigChanged = False; - - // Parameters to check each initialization + + // Parameters to check each initialization if (LastVotedGameInfo < 0 || LastVotedGameInfo >= GameModes.Length) LastVotedGameInfo = 0; - + if (MapChangeDelay == 0) MapChangeDelay = 3; - + if (GameModes.Length == 0) // None specified, so use current settings. { GameModes.Length = 1; @@ -105,28 +105,28 @@ function InitConfig() VoteTime = 35; ConfigChanged = True; } - + if (VoteNumForOrgy <= 0) { VoteNumForOrgy = 4; bNoMapVoteOrgy = False; ConfigChanged = True; } - - // Parameters that need to be added once when updating the config + + // Parameters that need to be added once when updating the config switch (ConfigVersion) { case 0: bEnableAnnouncer = True; - + case 2147483647: `log("[xVotingHandler] Config updated to version"@CurrentVersion); break; - + case CurrentVersion: `log("[xVotingHandler] Config is up-to-date"); break; - + default: `log("[xVotingHandler] The config version is higher than the current version (are you using an old mutator?)"); `log("[xVotingHandler] Config version is"@ConfigVersion@"but current version is"@CurrentVersion); @@ -158,7 +158,7 @@ function SetupBroadcast() local WebAdmin A; local xVoteWebApp xW; local byte i; - + B = Spawn(class'xVoteBroadcast'); B.Handler = Self; B.NextBroadcaster = WorldInfo.Game.BroadcastHandler; @@ -216,7 +216,7 @@ final function AddVote(int Count, int MapIndex, int GameIndex) final function LogoutPlayer(PlayerController PC) { local int i; - + for (i=(ActiveVoters.Length-1); i>=0; --i) if (ActiveVoters[i].PlayerOwner==PC) { @@ -229,7 +229,7 @@ final function LoginPlayer(PlayerController PC) { local xVotingReplication R; local int i; - + for (i=(ActiveVoters.Length-1); i>=0; --i) if (ActiveVoters[i].PlayerOwner==PC) return; @@ -261,7 +261,7 @@ function ClientDownloadInfo(xVotingReplication V) V.DownloadStage = 255; return; } - + switch (V.DownloadStage) { case 0: // Game modes. @@ -336,7 +336,7 @@ function ClientDisconnect(xVotingReplication V) final function float GetPctOf(int Nom, int Denom) { local float R; - + R = float(Nom) / float(Denom); return R; } @@ -357,17 +357,17 @@ final function TallyVotes(optional bool bForce) // First check for highest result. for (i=(ActiveVotes.Length-1); i>=0; --i) c = Max(c,ActiveVotes[i].NumVotes); - + if (c>0) { // Then check how many votes for the best. for (i=(ActiveVotes.Length-1); i>=0; --i) if (ActiveVotes[i].NumVotes==c) Candidates.AddItem(i); - + // Finally pick a random winner from the best. c = Candidates[Rand(Candidates.Length)]; - + // If more then "VoteNumForOrgy" voters and everyone voted same map?!!! Give the mapvote some orgy. if (bEnableAnnouncer && !bNoMapVoteOrgy && NumVotees >= VoteNumForOrgy && ActiveVotes.Length==1) { @@ -380,16 +380,16 @@ final function TallyVotes(optional bool bForce) { // Pick a random map to win. c = Rand(Maps.Length); - + // Pick a random gametype to win along with it. for (i=(GameModes.Length-1); i>=0; --i) if (Class'xUI_MapVote'.Static.BelongsToPrefix(Maps[c].MapName,GameModes[i].Prefix)) Candidates.AddItem(i); - + if (Candidates.Length==0) // Odd, a map without gametype... i = Rand(GameModes.Length); else i = Candidates[Rand(Candidates.Length)]; - + SwitchToLevel(i,c,false); } return; @@ -411,7 +411,7 @@ final function TallyVotes(optional bool bForce) return; } } - + // Check for mid-game voting timer. if (!bMapVoteTimer && NumVotees>0 && GetPctOf(c,NumVotees)>=MidGameVotePct) StartMidGameVote(true); @@ -514,7 +514,7 @@ final function SwitchToLevel(int GameIndex, int MapIndex, bool bAdminForce) if (bMapvoteHasEnded) return; - + Default.LastVotedGameInfo = GameIndex; Class.Static.StaticSaveConfig(); bMapvoteHasEnded = true; @@ -524,14 +524,14 @@ final function SwitchToLevel(int GameIndex, int MapIndex, bool bAdminForce) class'xMapVoteHistory'.Static.StaticSaveConfig(); bHistorySaved = true; } - + S = Maps[MapIndex].MapName$" ("$GameModes[GameIndex].GameName$")"; for (i=(ActiveVoters.Length-1); i>=0; --i) { KFPlayerController(ActiveVoters[i].PlayerOwner).ShowConnectionProgressPopup(PMT_AdminMessage,"Switching to level:",S); ActiveVoters[i].ClientNotifyVoteWin(GameIndex,MapIndex,bAdminForce); } - + PendingMapURL = Maps[MapIndex].MapName$"?Game="$GameModes[GameIndex].GameClass$"?Mutator="$PathName(BaseMutator); if (GameModes[GameIndex].Mutators!="") PendingMapURL $= ","$GameModes[GameIndex].Mutators; @@ -639,4 +639,4 @@ defaultproperties AnnouncerCues.Add(SoundCue'xVoteAnnouncer.VX_30_seconds_Cue') AnnouncerCues.Add(SoundCue'xVoteAnnouncer.VX_1_minute_Cue') AnnouncerCues.Add(SoundCue'xVoteAnnouncer.VX_HolyShit_Cue') -} \ No newline at end of file +}
Edit Array "$ExtAdminUI.ConfigList[EditPageIndex].Configs[i].UIName$"Delete Line
"$InfoStr$":