diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a3108ab --- /dev/null +++ b/.editorconfig @@ -0,0 +1,33 @@ +root = true + +# Global +[*] +indent_style = unset +indent_size = 4 +tab_width = 4 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = unset + +# Unreal Engine 3 / Source +[*.uc] +indent_style = tab + +[*.{uci,upkg}] + +# Unreal Engine 3 / i18n +[*.{chn,cht,cze,dan,deu,dut,esl,esn,fra,frc,hun,int,ita,jpn,kor,pol,por,ptb,rus,tur,ukr}] +charset = utf-16le + +# Other +[*.md] +indent_style = space +trim_trailing_whitespace = false + +[*.yml] +indent_style = space +indent_size = 2 + +[*.{txt,cfg,conf}] +indent_style = tab diff --git a/.github/issue_template.md b/.github/issue_template.md deleted file mode 100644 index 98a42db..0000000 --- a/.github/issue_template.md +++ /dev/null @@ -1,8 +0,0 @@ -### Details -Tell us exactly what happens, every single detail that you can think of - -### Screenshots -Provide a screenshot of the issue so we can debug it's not a user issue - -### Steps to reproduce -Tell us how to reproduce the problem, step by step diff --git a/.github/workflows/mega-linter.yml b/.github/workflows/mega-linter.yml new file mode 100644 index 0000000..a5ad237 --- /dev/null +++ b/.github/workflows/mega-linter.yml @@ -0,0 +1,74 @@ +--- +name: MegaLinter + +permissions: read-all + +on: + push: + pull_request: + branches: [master] + +env: + APPLY_FIXES: none + APPLY_FIXES_EVENT: pull_request + APPLY_FIXES_MODE: commit + DISABLE: SPELL + DISABLE_ERRORS_LINTERS: MARKDOWN_MARKDOWN_LINK_CHECK + EDITORCONFIG_EDITORCONFIG_CHECKER_FILTER_REGEX_EXCLUDE: 'xVoteAnnouncer.upk' + +concurrency: + group: ${{ github.ref }}-${{ github.workflow }} + cancel-in-progress: true + +jobs: + build: + name: MegaLinter + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v3 + with: + token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }} + + - name: MegaLinter + id: ml + uses: oxsecurity/megalinter@v6 + env: + VALIDATE_ALL_CODEBASE: true + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Archive production artifacts + if: ${{ success() }} || ${{ failure() }} + uses: actions/upload-artifact@v3 + with: + name: MegaLinter reports + path: | + megalinter-reports + mega-linter.log + + - name: Create Pull Request with applied fixes + id: cpr + if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'pull_request' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) + uses: peter-evans/create-pull-request@v5 + with: + token: ${{ secrets.PAT || secrets.GITHUB_TOKEN }} + commit-message: "[MegaLinter] Apply linters automatic fixes" + title: "[MegaLinter] Apply linters automatic fixes" + labels: bot + - name: Create PR output + if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'pull_request' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) + run: | + echo "Pull Request Number - ${{ steps.cpr.outputs.pull-request-number }}" + echo "Pull Request URL - ${{ steps.cpr.outputs.pull-request-url }}" + + - name: Prepare commit + if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'commit' && github.ref != 'refs/heads/main' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) + run: sudo chown -Rc $UID .git/ + - name: Commit and push applied linter fixes + if: steps.ml.outputs.has_updated_sources == 1 && (env.APPLY_FIXES_EVENT == 'all' || env.APPLY_FIXES_EVENT == github.event_name) && env.APPLY_FIXES_MODE == 'commit' && github.ref != 'refs/heads/main' && (github.event_name == 'push' || github.event.pull_request.head.repo.full_name == github.repository) + uses: stefanzweifel/git-auto-commit-action@v4 + with: + branch: ${{ github.event.pull_request.head.ref || github.head_ref || github.ref }} + commit_message: "[MegaLinter] Apply linters fixes" + commit_user_name: megalinter-bot + commit_user_email: nicolas.vuillamy@ox.security diff --git a/Localization/CHT/ServerExt.CHT b/Localization/CHT/ServerExt.CHT index d66b345..7121e1a 100644 Binary files a/Localization/CHT/ServerExt.CHT and b/Localization/CHT/ServerExt.CHT differ diff --git a/Localization/ESN/ServerExt.esn b/Localization/ESN/ServerExt.esn index 2d64d2a..4c748ea 100644 Binary files a/Localization/ESN/ServerExt.esn and b/Localization/ESN/ServerExt.esn differ diff --git a/Localization/INT/ServerExt.int b/Localization/INT/ServerExt.int index ebae823..3e1d577 100644 Binary files a/Localization/INT/ServerExt.int and b/Localization/INT/ServerExt.int differ diff --git a/Localization/JPN/ServerExt.jpn b/Localization/JPN/ServerExt.jpn index ad32395..f2ef2df 100644 Binary files a/Localization/JPN/ServerExt.jpn and b/Localization/JPN/ServerExt.jpn differ diff --git a/Localization/RUS/ServerExt.rus b/Localization/RUS/ServerExt.rus index f6de036..e153000 100644 Binary files a/Localization/RUS/ServerExt.rus and b/Localization/RUS/ServerExt.rus differ diff --git a/PublicationContent/description.txt b/PublicationContent/description.txt index 10a1ad5..232beac 100644 --- a/PublicationContent/description.txt +++ b/PublicationContent/description.txt @@ -24,7 +24,7 @@ The full changelog is available [url=https://steamcommunity.com/sharedfiles/file [h1]Usage (single player)[/h1] [olist] [*]Subscribe to this mutator; -[*]Start KF2; +[*]Start KF2; [*]Open console (`) and input: [code]open KF-BioticsLab?Mutator=ServerExtMut.ServerExtMut[/code] (You can add some options or replace KF-BioticsLab with the map you want) @@ -44,7 +44,7 @@ The full changelog is available [url=https://steamcommunity.com/sharedfiles/file [/olist] [h1]Mutator setup[/h1] -[url=https://steamcommunity.com/workshop/filedetails/discussion/2085786712/4241773359646835902/][u]Look here[/u][/url] +[url=https://steamcommunity.com/workshop/filedetails/discussion/2085786712/4241773359646835902/][u]Look here[/u][/url] [h1]Is it possible to make the game harder?[/h1] It will be more efficient to use ServerExt together with other mutators (which add new zeds or game modes). diff --git a/README.md b/README.md index 90e9f27..2e1ee51 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,11 @@ -[![](PublicationContent/mutbanner.png)](https://steamcommunity.com/sharedfiles/filedetails/?id=2085786712) +# Server Extension + +[![Banner](PublicationContent/mutbanner.png)](https://steamcommunity.com/sharedfiles/filedetails/?id=2085786712) [![Steam Workshop](https://img.shields.io/static/v1?message=workshop&logo=steam&labelColor=gray&color=blue&logoColor=white&label=steam%20)](https://steamcommunity.com/sharedfiles/filedetails/?id=2085786712) [![Steam Subscriptions](https://img.shields.io/steam/subscriptions/2085786712)](https://steamcommunity.com/sharedfiles/filedetails/?id=2085786712) [![Steam Favorites](https://img.shields.io/steam/favorites/2085786712)](https://steamcommunity.com/sharedfiles/filedetails/?id=2085786712) -[![Steam Update Date](https://img.shields.io/steam/update-date/2085786712)](https://steamcommunity.com/sharedfiles/filedetails/?id=2085786712) +[![MegaLinter](https://github.com/GenZmeY/KF2-Server-Extension/actions/workflows/mega-linter.yml/badge.svg?branch=master)](https://github.com/GenZmeY/KF2-Server-Extension/actions/workflows/mega-linter.yml) [![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/GenZmeY/KF2-Server-Extension)](https://github.com/GenZmeY/KF2-Server-Extension/tags) [![GitHub top language](https://img.shields.io/github/languages/top/GenZmeY/KF2-Server-Extension)](https://docs.unrealengine.com/udk/Three/WebHome.html) [![GitHub](https://img.shields.io/github/license/GenZmeY/KF2-Server-Extension)](LICENSE) @@ -16,7 +18,7 @@ *This is a further development of the ServerExt mutator from [Marco](https://forums.tripwireinteractive.com/index.php?threads/mutator-server-extension-mod.109463) and [Forrest Mark X](https://github.com/ForrestMarkX/KF2-Server-Extension).* -# Features +## Features - RPG elements (traits and stats); - New menu system; - Scoreboard that supports unlimited playercount on server; @@ -33,7 +35,7 @@ The full changelog is available on [steam workshop](https://steamcommunity.com/s **Note:** If you want to build/test/brew/publish a mutator without git-bash and/or scripts, follow [these instructions](https://tripwireinteractive.atlassian.net/wiki/spaces/KF2SW/pages/26247172/KF2+Code+Modding+How-to) instead of what is described here. -# Build +## Build 1. Install [Killing Floor 2](https://store.steampowered.com/app/232090/Killing_Floor_2/), Killing Floor 2 - SDK and [git for windows](https://git-scm.com/download/win); 2. open git-bash and go to any folder where you want to store ServerExt sources: `cd ` @@ -46,29 +48,13 @@ The full changelog is available on [steam workshop](https://steamcommunity.com/s 5. The compiled files will be here: `C:\Users\\Documents\My Games\KillingFloor2\KFGame\Unpublished\BrewedPC\Script\` -# Testing -Open git-bash in the ServerExt source folder and run command: -`./tools/builder -t` -(or `./tools/builder -ct` if you haven't compiled the mutator yet) - -A local single-user test will be launched with parameters from `builder.cfg` (edit this file if you want to test mutator with different parameters). - -# Using and configuring ServerExt +## Using and configuring ServerExt A detailed manual is available on the [mod page](https://steamcommunity.com/sharedfiles/filedetails/?id=2085786712) in the steam workshop. -# Publication in steam workshop -1. Modify the publish files if necessary, they are in the `PublicationContent`: -> description.txt -> preview.png -> tags.txt -> title.txt - -2. Run this command in the source folder: `./tools/builder -cbu` - -# Contributing +## Contributing **Participation is welcome!** -## Bug reports +### Bug reports If you find a bug, go to the [issue page](https://github.com/GenZmeY/KF2-Server-Extension/issues) and check if there is a description of your bug. If not, create a new issue. Describe what the bug looks like and how we can reproduce it. Attach screenshots if you think it might help. @@ -77,12 +63,12 @@ If it's a crash issue, be sure to include the `Launch.log` and `Launch_2.log` fi `C:\Users\\Documents\My Games\KillingFloor2\KFGame\Logs\` Please note that these files are overwritten every time you start the game/server. Therefore, you must take these files immediately after the game crashes in order not to lose information. -## Localization +### Localization The mutator supports localization and you can help translate it into other languages. It does not require any special knowledge or programming skills, so you just need to know the language into which you will translate. Here's a quick guide on how to do it: [localization guide](https://steamcommunity.com/workshop/filedetails/discussion/2085786712/2942494909176752884) -## Contribute code +### Contribute code You can help improve ServerExt by fixing bugs and adding new features. Before making a pull request, make sure that: 1. Your code is working correctly. @@ -91,8 +77,8 @@ Before making a pull request, make sure that: In the description of the pull request, describe the changes you made. -# License -[GNU GPLv3](LICENSE) +## License +[![license](https://www.gnu.org/graphics/gplv3-with-text-136x68.png)](LICENSE) *** diff --git a/ServerExt/Classes/ExtAutoPurchaseHelper.uc b/ServerExt/Classes/ExtAutoPurchaseHelper.uc index daa4df5..b49e073 100644 --- a/ServerExt/Classes/ExtAutoPurchaseHelper.uc +++ b/ServerExt/Classes/ExtAutoPurchaseHelper.uc @@ -48,7 +48,7 @@ function DoAutoPurchase() PotentialDosh = GetPotentialDosh(); bUpgradeSuccess = AttemptUpgrade(PotentialDosh+TotalDosh, OnPerkWeapons); } - + bAutoFillPurchasedItem = StartAutoFill(); if (DoIOwnThisWeapon(TopTierWeapon)) { @@ -56,7 +56,7 @@ function DoAutoPurchase() { bSecondaryWeaponPurchased = true; AttemptToPurchaseNextLowerTier(TotalDosh, OnPerkWeapons); - } + } } MyKFIM.ServerCloseTraderMenu(); @@ -73,11 +73,11 @@ function DoAutoPurchase() { AutoFillMessageString = class'KFCommon_LocalizedStrings'.default.AutoFillCompleteString; } - else + else { AutoFillMessageString = class'KFCommon_LocalizedStrings'.default.NoItemsPurchasedString; } - + if (MyGFxHUD != none) { @@ -89,7 +89,7 @@ function SellOnPerkWeapons() { local int i; local class 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++) @@ -126,8 +126,8 @@ function SellOffPerkWeapons() function InitializeOwnedItemList() { - local Inventory Inv; - local KFWeapon KFW; + local Inventory Inv; + local KFWeapon KFW; local KFPawn_Human KFP; local Ext_PerkBase EP; @@ -142,14 +142,14 @@ function InitializeOwnedItemList() // init armor purchase values ArmorItem.SpareAmmoCount = KFP.Armor; ArmorItem.MaxSpareAmmo = KFP.GetMaxArmor(); - ArmorItem.AmmoPricePerMagazine = TraderItems.ArmorPrice * ActivePerkManager.GetArmorDiscountMod(); - ArmorItem.DefaultItem.WeaponDef = TraderItems.ArmorDef; + ArmorItem.AmmoPricePerMagazine = TraderItems.ArmorPrice * ActivePerkManager.GetArmorDiscountMod(); + ArmorItem.DefaultItem.WeaponDef = TraderItems.ArmorDef; // init grenade purchase values GrenadeItem.SpareAmmoCount = MyKFIM.GrenadeCount; GrenadeItem.MaxSpareAmmo = ActivePerkManager.MaxGrenadeCount; - GrenadeItem.AmmoPricePerMagazine = TraderItems.GrenadePrice; - GrenadeItem.DefaultItem.WeaponDef = EP.GrenadeWeaponDef; + GrenadeItem.AmmoPricePerMagazine = TraderItems.GrenadePrice; + GrenadeItem.DefaultItem.WeaponDef = EP.GrenadeWeaponDef; // @temp: fill in stuff that is normally serialized in the archetype GrenadeItem.DefaultItem.AssociatedPerkClasses[0] = CurrentPerk.Class; @@ -161,12 +161,12 @@ function InitializeOwnedItemList() { // Set the weapon information and add it to the OwnedItemList SetWeaponInformation(KFW); - } + } } 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; @@ -217,24 +217,24 @@ function int AddItemByPriority(out SItemInformation WeaponInfo) // Add secondary ammo immediately after the main weapon if (WeaponInfo.DefaultItem.WeaponDef.static.UsesSecondaryAmmo()) - { - WeaponInfo.bIsSecondaryAmmo = true; + { + WeaponInfo.bIsSecondaryAmmo = true; WeaponInfo.SellPrice = 0; OwnedItemList.InsertItem(BestIndex + 1, WeaponInfo); - } + } if (MyGfxManager != none && MyGfxManager.TraderMenu != none) { - MyGfxManager.TraderMenu.OwnedItemList = OwnedItemList; + MyGfxManager.TraderMenu.OwnedItemList = OwnedItemList; } - return BestIndex; + return BestIndex; } 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..ef67ec5 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)); @@ -64,7 +64,7 @@ static final function SetCharacterMeshFromArch(KFCharacterInfo_Human C, KFPawn K if (KFPRI == none) { `Warn("Does not have a KFPRI" @ C); - return; + return; } EPRI = ExtPlayerReplicationInfo(KFPRI); bCustom = (EPRI!=None ? EPRI.UsesCustomChar() : false); @@ -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; @@ -341,13 +341,13 @@ static final function SetAttachmentMeshAndSkin(KFCharacterInfo_Human C, // Since cosmetic attachments are optional, do not choose index 0 if none is // specified unlike the the head and body meshes if (C.CosmeticVariants.Length > 0 && - CurrentAttachmentMeshIndex < C.CosmeticVariants.Length) + CurrentAttachmentMeshIndex < C.CosmeticVariants.Length) { if (KFPRI.StartLoadCosmeticContent(C, ECOSMETICTYPE_Attachment, CurrentAttachmentMeshIndex)) { 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) { @@ -531,7 +531,7 @@ static final function DetachConflictingAttachments(KFCharacterInfo_Human C, int return; if (C.CosmeticVariants.length > 0 && - NewAttachmentMeshIndex < C.CosmeticVariants.length) + NewAttachmentMeshIndex < C.CosmeticVariants.length) { // The socket that this attachment requires NewAttachmentSocketName = C.CosmeticVariants[NewAttachmentMeshIndex].AttachmentItem.SocketName; @@ -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; } @@ -580,19 +580,19 @@ static final function SetFirstPersonArmsFromArch(KFCharacterInfo_Human C, KFPawn if (KFPRI == none) { `Warn("Does not have a KFPRI" @ C); - return; + return; } 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..5efc563 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); + return (CurrentPerk!=None ? CurrentPerk.GetTightChokeModifier() : 1.f); } // SwitchSpeed @@ -921,7 +921,7 @@ defaultproperties { bTickIsDisabled=false NetPriority=3.5 - + // SWAT bumping BumpCooldown = 0.1f BumpMomentum=1.f diff --git a/ServerExt/Classes/ExtPerksContainer_Details.uc b/ServerExt/Classes/ExtPerksContainer_Details.uc index 1999533..cdbeec6 100644 --- a/ServerExt/Classes/ExtPerksContainer_Details.uc +++ b/ServerExt/Classes/ExtPerksContainer_Details.uc @@ -13,12 +13,12 @@ final function ExUpdateDetails(Ext_PerkBase PerkClass) DetailsProvider = CreateObject("Object"); - KFPC = KFPlayerController(GetPC()); + KFPC = KFPlayerController(GetPC()); if (KFPC != none) { KFGRI = KFGameReplicationInfo(KFPC.WorldInfo.GRI); - + DetailsProvider.SetString("ExperienceMessage", ExperienceString @ PerkClass.CurrentEXP); if (KFGRI != none) @@ -31,12 +31,12 @@ final function ExUpdateDetails(Ext_PerkBase PerkClass) for (i = 0; i < WeaponNames.length; i++) { - DetailsProvider.SetString("WeaponName" $ i, WeaponNames[i]); - DetailsProvider.SetString("WeaponImage" $ i, "img://"$WeaponSources[i]); + DetailsProvider.SetString("WeaponName" $ i, WeaponNames[i]); + DetailsProvider.SetString("WeaponImage" $ i, "img://"$WeaponSources[i]); } DetailsProvider.SetString("EXPAction1", "Kill zombies"); - //DetailsProvider.SetString("EXPAction2", PerkClass.default.EXPAction2); + //DetailsProvider.SetString("EXPAction2", PerkClass.default.EXPAction2); SetObject("detailsData", DetailsProvider); } @@ -53,7 +53,7 @@ final function ExUpdatePassives(Ext_PerkBase PerkClass) { PassiveObject = CreateObject("Object"); PassiveObject.SetString("PassiveTitle", PerkClass.GetStatUIStr(i)); - PassiveObject.SetString("PerkBonusModifier", ""); + PassiveObject.SetString("PerkBonusModifier", ""); PassiveObject.SetString("PerkBonusAmount", ""); PassivesProvider.SetElementObject(i, PassiveObject); } 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..140d8f9 100644 --- a/ServerExt/Classes/ExtPerksContainer_Selection.uc +++ b/ServerExt/Classes/ExtPerksContainer_Selection.uc @@ -4,29 +4,29 @@ var localized string PerkChangeWarning; function UpdatePerkSelection(byte SelectedPerkIndex) { - local int i; + local int i; local GFxObject DataProvider; local GFxObject TempObj; local ExtPlayerController KFPC; - local Ext_PerkBase PerkClass; + local Ext_PerkBase PerkClass; KFPC = ExtPlayerController(GetPC()); if (KFPC!=none && KFPC.ActivePerkManager!=None) { - DataProvider = CreateArray(); + DataProvider = CreateArray(); for (i = 0; i < KFPC.ActivePerkManager.UserPerks.Length; i++) { 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..9f2fc1f 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; @@ -31,7 +31,7 @@ function SetPerkFilterData(byte FilterIndex) SetString("filterText", OffPerkString); } - DataProvider = CreateArray(); + DataProvider = CreateArray(); for (i = 0; i < PrM.UserPerks.Length; i++) { FilterObject = CreateObject("Object"); diff --git a/ServerExt/Classes/ExtTraderContainer_PlayerInfo.uc b/ServerExt/Classes/ExtTraderContainer_PlayerInfo.uc index a65fa6c..5347dec 100644 --- a/ServerExt/Classes/ExtTraderContainer_PlayerInfo.uc +++ b/ServerExt/Classes/ExtTraderContainer_PlayerInfo.uc @@ -10,11 +10,11 @@ function SetPerkInfo() if (KFPC!=none && KFPC.ActivePerkManager!=None && KFPC.ActivePerkManager.CurrentPerk!=None) { CurrentPerk = KFPC.ActivePerkManager.CurrentPerk; - SetString("perkName", CurrentPerk.PerkName); - SetString("perkIconPath", CurrentPerk.GetPerkIconPath(CurrentPerk.CurrentLevel)); - SetInt("perkLevel", CurrentPerk.CurrentLevel); + SetString("perkName", CurrentPerk.PerkName); + SetString("perkIconPath", CurrentPerk.GetPerkIconPath(CurrentPerk.CurrentLevel)); + SetInt("perkLevel", CurrentPerk.CurrentLevel); V = CurrentPerk.GetProgressPercent()*100.f; - SetInt("xpBarValue", int(V)); + SetInt("xpBarValue", int(V)); } } @@ -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..a97a45e 100644 --- a/ServerExt/Classes/ExtTraderContainer_Store.uc +++ b/ServerExt/Classes/ExtTraderContainer_Store.uc @@ -12,7 +12,7 @@ function bool IsItemFiltered(STraderItem Item, optional bool bDebug) if ( Item.WeaponDef.default.PlatformRestriction != PR_All && class'KFUnlockManager'.static.IsPlatformRestricted( Item.WeaponDef.default.PlatformRestriction ) ) return true; - return false; + return false; } function RefreshWeaponListByPerk(byte FilterIndex, const out array ItemList) @@ -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..e8f37f2 100644 --- a/ServerExt/Classes/ExtWeaponSkinList.uc +++ b/ServerExt/Classes/ExtWeaponSkinList.uc @@ -2,11 +2,11 @@ class ExtWeaponSkinList extends Object; struct WeaponSkin { - var int Id; + var int Id; - var array MIC_1P; - var string MIC_3P; - var string MIC_Pickup; + var array MIC_1P; + var string MIC_3P; + var string MIC_Pickup; var class WeaponDef; }; @@ -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(); } @@ -87,12 +87,12 @@ defaultproperties { //Anodized Hazard AR15 Skins.Add((Id=3001, Weapondef=class'KFWeapDef_AR15', MIC_1P=("WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_1P_Mint_MIC"), MIC_3P="WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_3P_Pickup_MIC")) - Skins.Add((Id=3002, Weapondef=class'KFWeapDef_AR15', MIC_1P=("WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_3P_Pickup_MIC")) + Skins.Add((Id=3002, Weapondef=class'KFWeapDef_AR15', MIC_1P=("WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_3P_Pickup_MIC")) Skins.Add((Id=3003, Weapondef=class'KFWeapDef_AR15', MIC_1P=("WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet01_MAT.anodizedhazard_ar15.AnodizedHazard_AR15_3P_Pickup_MIC")) //Airlock 9mm Skins.Add((Id=3004, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_1P_Mint_MIC"), MIC_3P="WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_3P_Pickup_MIC")) - Skins.Add((Id=3005, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_3P_Pickup_MIC")) + Skins.Add((Id=3005, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_3P_Pickup_MIC")) Skins.Add((Id=3006, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet01_MAT.airlock_9mm.Airlock_9MM_3P_Pickup_MIC")) //Aeronaut Bullpup @@ -102,17 +102,17 @@ defaultproperties //Woodland AA12 Skins.Add((Id=3010, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_1P_Mint_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_3P_Mint_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_3P_Pickup_MIC")) - Skins.Add((Id=3011, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_3P_Pickup_MIC")) + Skins.Add((Id=3011, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_3P_Pickup_MIC")) Skins.Add((Id=3012, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_aa12.Woodland_AA12_3P_Pickup_MIC")) //Woodland Boomstick Skins.Add((Id=3013, Weapondef=class'KFWeapDef_DoubleBarrel', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_1P_Mint_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_3P_Mint_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_3P_Pickup_MIC")) - Skins.Add((Id=3014, Weapondef=class'KFWeapDef_DoubleBarrel', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_3P_Pickup_MIC")) + Skins.Add((Id=3014, Weapondef=class'KFWeapDef_DoubleBarrel', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_3P_Pickup_MIC")) Skins.Add((Id=3015, Weapondef=class'KFWeapDef_DoubleBarrel', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_doublebarrel.Woodland_DoubleBarrel_3P_Pickup_MIC")) //Woodland L85A2 Skins.Add((Id=3016, Weapondef=class'KFWeapDef_Bullpup', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_1P_Mint_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_3P_Mint_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_3P_Pickup_MIC")) - Skins.Add((Id=3017, Weapondef=class'KFWeapDef_Bullpup', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_3P_Mint_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_3P_Pickup_MIC")) + Skins.Add((Id=3017, Weapondef=class'KFWeapDef_Bullpup', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_3P_Mint_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_3P_Pickup_MIC")) Skins.Add((Id=3018, Weapondef=class'KFWeapDef_Bullpup', MIC_1P=("WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSetPSN03_MAT.woodland_bullpup.Woodland_Bullpup_3P_Pickup_MIC")) //Woodland Scar @@ -863,7 +863,7 @@ defaultproperties //Victorian Double Barrel Skins.Add((Id=4047, Weapondef=class'KFWeapDef_DoubleBarrel', MIC_1P=("WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_1P_Mint_MIC"), MIC_3P="WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_3P_Pickup_MIC")) - Skins.Add((Id=4046, Weapondef=class'KFWeapDef_DoubleBarrel', MIC_1P=("WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_3P_Pickup_MIC")) + Skins.Add((Id=4046, Weapondef=class'KFWeapDef_DoubleBarrel', MIC_1P=("WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_3P_Pickup_MIC")) Skins.Add((Id=4045, Weapondef=class'KFWeapDef_DoubleBarrel', MIC_1P=("WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet06_MAT.victorian_doublebarrel.Victorian_DoubleBarrel_3P_Pickup_MIC")) //Victorian M4 @@ -920,7 +920,7 @@ defaultproperties //Tactical AA12 Skins.Add((Id=4460, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_1P_Mint_MIC"), MIC_3P="WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_3P_Pickup_MIC")) - Skins.Add((Id=4459, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_3P_Pickup_MIC")) + Skins.Add((Id=4459, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_3P_Pickup_MIC")) Skins.Add((Id=4458, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet07_MAT.tactical_aa12.Tactical_AA12_3P_Pickup_MIC")) //Tactical AK12 @@ -980,92 +980,92 @@ defaultproperties //Deepstrike 9mm Skins.Add((Id=4359, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_3P_Pickup_MIC")) - Skins.Add((Id=4358, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_3P_Pickup_MIC")) + Skins.Add((Id=4358, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_3P_Pickup_MIC")) Skins.Add((Id=4357, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_9mm.Deepstrike_9mm_3P_Pickup_MIC")) //Deepstrike Crossbow Skins.Add((Id=4362, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_1P_Mint_MIC", "WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_3P_Pickup_MIC")) - Skins.Add((Id=4361, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_3P_Pickup_MIC")) + Skins.Add((Id=4361, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_3P_Pickup_MIC")) Skins.Add((Id=4360, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_1P_BattleScarred_MIC", "WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_crossbow.Deepstrike_Crossbow_3P_Pickup_MIC")) //Deepstrike Desert Eagle Skins.Add((Id=4365, Weapondef=class'KFWeapDef_Deagle', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_3P_Pickup_MIC")) - Skins.Add((Id=4364, Weapondef=class'KFWeapDef_Deagle', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_3P_Pickup_MIC")) + Skins.Add((Id=4364, Weapondef=class'KFWeapDef_Deagle', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_3P_Pickup_MIC")) Skins.Add((Id=4363, Weapondef=class'KFWeapDef_Deagle', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_deagle.Deepstrike_Deagle_3P_Pickup_MIC")) //Deepstrike Winchester 1894 Skins.Add((Id=4368, Weapondef=class'KFWeapDef_Winchester1894', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_3P_Pickup_MIC")) - Skins.Add((Id=4367, Weapondef=class'KFWeapDef_Winchester1894', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_3P_Pickup_MIC")) + Skins.Add((Id=4367, Weapondef=class'KFWeapDef_Winchester1894', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_3P_Pickup_MIC")) Skins.Add((Id=4366, Weapondef=class'KFWeapDef_Winchester1894', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_lar.Deepstrike_LAR_3P_Pickup_MIC")) //Deepstrike M79 Skins.Add((Id=4371, Weapondef=class'KFWeapDef_M79', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_3P_Pickup_MIC")) - Skins.Add((Id=4370, Weapondef=class'KFWeapDef_M79', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_3P_Pickup_MIC")) + Skins.Add((Id=4370, Weapondef=class'KFWeapDef_M79', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_3P_Pickup_MIC")) Skins.Add((Id=4369, Weapondef=class'KFWeapDef_M79', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_m79.Deepstrike_M79_3P_Pickup_MIC")) //Deepstrike RPG7 Skins.Add((Id=4374, Weapondef=class'KFWeapDef_RPG7', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_3P_Pickup_MIC")) - Skins.Add((Id=4373, Weapondef=class'KFWeapDef_RPG7', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_3P_Pickup_MIC")) + Skins.Add((Id=4373, Weapondef=class'KFWeapDef_RPG7', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_3P_Pickup_MIC")) Skins.Add((Id=4372, Weapondef=class'KFWeapDef_RPG7', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_rpg7.Deepstrike_RPG7_3P_Pickup_MIC")) //Deepstrike SCAR Skins.Add((Id=4377, Weapondef=class'KFWeapDef_SCAR', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_1P_Mint_MIC", "WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_3P_Pickup_MIC")) - Skins.Add((Id=4376, Weapondef=class'KFWeapDef_SCAR', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_3P_Pickup_MIC")) + Skins.Add((Id=4376, Weapondef=class'KFWeapDef_SCAR', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_3P_Pickup_MIC")) Skins.Add((Id=4375, Weapondef=class'KFWeapDef_SCAR', MIC_1P=("WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_1P_BattleScarred_MIC", "WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.deepstrike_scar.Deepstrike_SCAR_3P_Pickup_MIC")) //Horzine Elite Blue Kriss Skins.Add((Id=4572, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_1P_Mint_MIC", "WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_3P_Pickup_MIC")) - Skins.Add((Id=4571, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_3P_Pickup_MIC")) + Skins.Add((Id=4571, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_3P_Pickup_MIC")) Skins.Add((Id=4570, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_1P_BattleScarred_MIC", "WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineeliteblue_kriss.HorzineEliteBlue_Kriss_3P_Pickup_MIC")) //Horzine Elite Green Kriss Skins.Add((Id=4575, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_1P_Mint_MIC", "WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_3P_Pickup_MIC")) - Skins.Add((Id=4574, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_3P_Pickup_MIC")) + Skins.Add((Id=4574, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_3P_Pickup_MIC")) Skins.Add((Id=4573, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_1P_BattleScarred_MIC", "WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitegreen_kriss.HorzineEliteGreen_Kriss_3P_Pickup_MIC")) //Horzine Elite Red Kriss Skins.Add((Id=4578, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_1P_Mint_MIC", "WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_3P_Pickup_MIC")) - Skins.Add((Id=4577, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_3P_Pickup_MIC")) + Skins.Add((Id=4577, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_3P_Pickup_MIC")) Skins.Add((Id=4576, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_1P_BattleScarred_MIC", "WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitered_kriss.HorzineEliteRed_Kriss_3P_Pickup_MIC")) //Horzine Elite White Kriss Skins.Add((Id=4581, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_1P_Mint_MIC", "WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_3P_Pickup_MIC")) - Skins.Add((Id=4580, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_3P_Pickup_MIC")) + Skins.Add((Id=4580, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_1P_FieldTested_MIC", "WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_3P_Pickup_MIC")) Skins.Add((Id=4579, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_1P_BattleScarred_MIC", "WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet09_MAT.horzineelitewhite_kriss.HorzineEliteWhite_Kriss_3P_Pickup_MIC")) //Industrial Crossbow Skins.Add((Id=4720, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_1P_Mint_MIC", "WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_3P_Pickup_MIC")) - Skins.Add((Id=4719, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_1P_FieldTested_MIC", "WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_3P_Pickup_MIC")) + Skins.Add((Id=4719, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_1P_FieldTested_MIC", "WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_3P_Pickup_MIC")) Skins.Add((Id=4718, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_1P_BattleScarred_MIC", "WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_crossbow.Industrial_Crossbow_3P_Pickup_MIC")) //Shredder (Industrial) Kriss Skins.Add((Id=4723, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_3P_Pickup_MIC")) - Skins.Add((Id=4722, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_3P_Pickup_MIC")) + Skins.Add((Id=4722, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_3P_Pickup_MIC")) Skins.Add((Id=4721, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_kriss.Industrial_Kriss_3P_Pickup_MIC")) //Industrial M14EBR Skins.Add((Id=4726, Weapondef=class'KFWeapDef_M14EBR', MIC_1P=("WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_1P_Mint_MIC", "WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_3P_Pickup_MIC")) - Skins.Add((Id=4725, Weapondef=class'KFWeapDef_M14EBR', MIC_1P=("WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_1P_FieldTested_MIC", "WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_3P_Pickup_MIC")) + Skins.Add((Id=4725, Weapondef=class'KFWeapDef_M14EBR', MIC_1P=("WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_1P_FieldTested_MIC", "WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_3P_Pickup_MIC")) Skins.Add((Id=4724, Weapondef=class'KFWeapDef_M14EBR', MIC_1P=("WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_1P_BattleScarred_MIC", "WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_m14ebr.Industrial_M14EBR_3P_Pickup_MIC")) //Industrial MP5RAS Skins.Add((Id=4729, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_3P_Pickup_MIC")) - Skins.Add((Id=4728, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_3P_Pickup_MIC")) + Skins.Add((Id=4728, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_3P_Pickup_MIC")) Skins.Add((Id=4727, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_mp5ras.Industrial_MP5RAS_3P_Pickup_MIC")) //Jackhammer (Industrial) MP7 Skins.Add((Id=4732, Weapondef=class'KFWeapDef_MP7', MIC_1P=("WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_1P_Mint_MIC", "WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_3P_Pickup_MIC")) - Skins.Add((Id=4731, Weapondef=class'KFWeapDef_MP7', MIC_1P=("WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_1P_FieldTested_MIC", "WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_3P_Pickup_MIC")) + Skins.Add((Id=4731, Weapondef=class'KFWeapDef_MP7', MIC_1P=("WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_1P_FieldTested_MIC", "WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_3P_Pickup_MIC")) Skins.Add((Id=4730, Weapondef=class'KFWeapDef_MP7', MIC_1P=("WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_1P_BattleScarred_MIC", "WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_mp7.Industrial_MP7_3P_Pickup_MIC")) //Buzzsaw (Industrial) P90 Skins.Add((Id=4735, Weapondef=class'KFWeapDef_P90', MIC_1P=("WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_1P_Mint_MIC", "WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_3P_Pickup_MIC")) - Skins.Add((Id=4734, Weapondef=class'KFWeapDef_P90', MIC_1P=("WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_1P_FieldTested_MIC", "WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_3P_Pickup_MIC")) + Skins.Add((Id=4734, Weapondef=class'KFWeapDef_P90', MIC_1P=("WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_1P_FieldTested_MIC", "WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_3P_Pickup_MIC")) Skins.Add((Id=4733, Weapondef=class'KFWeapDef_P90', MIC_1P=("WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_1P_BattleScarred_MIC", "WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_p90.Industrial_P90_3P_Pickup_MIC")) //High Voltage (Industrial) Railgun Skins.Add((Id=4738, Weapondef=class'KFWeapDef_RailGun', MIC_1P=("WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_1P_Mint_MIC", "WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_3P_Pickup_MIC")) - Skins.Add((Id=4737, Weapondef=class'KFWeapDef_RailGun', MIC_1P=("WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_1P_FieldTested_MIC", "WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_3P_Pickup_MIC")) + Skins.Add((Id=4737, Weapondef=class'KFWeapDef_RailGun', MIC_1P=("WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_1P_FieldTested_MIC", "WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_3P_Pickup_MIC")) Skins.Add((Id=4736, Weapondef=class'KFWeapDef_RailGun', MIC_1P=("WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_1P_BattleScarred_MIC", "WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet10_MAT.industrial_railgun.Industrial_RailGun_3P_Pickup_MIC")) //Industrial SW500 @@ -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")) @@ -1162,7 +1162,7 @@ defaultproperties //Junkyard AA12 Skins.Add((Id=4614, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_1P_Mint_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_3P_Pickup_MIC")) - Skins.Add((Id=4613, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_3P_Pickup_MIC")) + Skins.Add((Id=4613, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_3P_Pickup_MIC")) Skins.Add((Id=4612, Weapondef=class'KFWeapDef_AA12', MIC_1P=("WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_aa12.Junkyard_AA12_3P_Pickup_MIC")) //Junkyard AK12 @@ -1192,12 +1192,12 @@ defaultproperties //Junkyard M4 Skins.Add((Id=4626, Weapondef=class'KFWeapDef_M4', MIC_1P=("WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_1P_Mint_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_3P_Pickup_MIC")) - Skins.Add((Id=4625, Weapondef=class'KFWeapDef_M4', MIC_1P=("WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_3P_Pickup_MIC")) + Skins.Add((Id=4625, Weapondef=class'KFWeapDef_M4', MIC_1P=("WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_3P_Pickup_MIC")) Skins.Add((Id=4624, Weapondef=class'KFWeapDef_M4', MIC_1P=("WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_m4.Junkyard_M4_3P_Pickup_MIC")) //Junkyard MP5RAS Skins.Add((Id=4629, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_1P_Mint_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_3P_Pickup_MIC")) - Skins.Add((Id=4628, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_3P_Pickup_MIC")) + Skins.Add((Id=4628, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_3P_Pickup_MIC")) Skins.Add((Id=4627, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_mp5ras.Junkyard_MP5RAS_3P_Pickup_MIC")) //Junkyard SCAR @@ -1207,7 +1207,7 @@ defaultproperties //Junkyard Winchester 1894 Skins.Add((Id=4635, Weapondef=class'KFWeapDef_Winchester1894', MIC_1P=("WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_1P_Mint_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_3P_Pickup_MIC")) - Skins.Add((Id=4634, Weapondef=class'KFWeapDef_Winchester1894', MIC_1P=("WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_3P_Pickup_MIC")) + Skins.Add((Id=4634, Weapondef=class'KFWeapDef_Winchester1894', MIC_1P=("WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_3P_Pickup_MIC")) Skins.Add((Id=4633, Weapondef=class'KFWeapDef_Winchester1894', MIC_1P=("WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet13_MAT.junkyard_winchester1894.Junkyard_Winchester1894_3P_Pickup_MIC")) //Headshot Weekly Centerfire @@ -1215,117 +1215,117 @@ defaultproperties //Horzine Elite White MP5RAS Skins.Add((Id=5033, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_1P_Mint_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_3P_Pickup_MIC")) - Skins.Add((Id=5032, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_3P_Pickup_MIC")) + Skins.Add((Id=5032, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_3P_Pickup_MIC")) Skins.Add((Id=5031, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitewhite_mp5ras.HorzineEliteWhite_MP5RAS_3P_Pickup_MIC")) //Horzine Elite Black MP5RAS Skins.Add((Id=5036, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_1P_Mint_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_3P_Pickup_MIC")) - Skins.Add((Id=5035, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_3P_Pickup_MIC")) + Skins.Add((Id=5035, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_3P_Pickup_MIC")) Skins.Add((Id=5034, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineeliteblack_mp5ras.HorzineEliteBlack_MP5RAS_3P_Pickup_MIC")) //Horzine Elite Green MP5RAS Skins.Add((Id=5039, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_1P_Mint_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_3P_Pickup_MIC")) - Skins.Add((Id=5038, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_3P_Pickup_MIC")) + Skins.Add((Id=5038, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_3P_Pickup_MIC")) Skins.Add((Id=5037, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitegreen_mp5ras.HorzineEliteGreen_MP5RAS_3P_Pickup_MIC")) //Horzine Elite Blue MP5RAS Skins.Add((Id=5042, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_1P_Mint_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_3P_Pickup_MIC")) - Skins.Add((Id=5041, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_3P_Pickup_MIC")) + Skins.Add((Id=5041, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_3P_Pickup_MIC")) Skins.Add((Id=5040, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineeliteblue_mp5ras.HorzineEliteBlue_MP5RAS_3P_Pickup_MIC")) //Horzine Elite Red MP5RAS Skins.Add((Id=5045, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_1P_Mint_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_3P_Pickup_MIC")) - Skins.Add((Id=5044, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_3P_Pickup_MIC")) + Skins.Add((Id=5044, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_3P_Pickup_MIC")) Skins.Add((Id=5043, Weapondef=class'KFWeapDef_MP5RAS', MIC_1P=("WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet15_MAT.horzineelitered_mp5ras.HorzineEliteRed_MP5RAS_3P_Pickup_MIC")) //Halloween 9mm Skins.Add((Id=5115, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_1P_Mint_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_3P_Pickup_MIC")) - Skins.Add((Id=5114, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_3P_Pickup_MIC")) + Skins.Add((Id=5114, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_3P_Pickup_MIC")) Skins.Add((Id=5113, Weapondef=class'KFWeapDef_9mm', MIC_1P=("WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_9mm.Halloween_9MM_3P_Pickup_MIC")) //Halloween Crossbow Skins.Add((Id=5118, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_1P_Mint_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_3P_Pickup_MIC")) - Skins.Add((Id=5117, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_3P_Pickup_MIC")) + Skins.Add((Id=5117, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_3P_Pickup_MIC")) Skins.Add((Id=5116, Weapondef=class'KFWeapDef_Crossbow', MIC_1P=("WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_crossbow.Halloween_Crossbow_3P_Pickup_MIC")) //Halloween Flamethrower Skins.Add((Id=5121, Weapondef=class'KFWeapDef_FlameThrower', MIC_1P=("WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_1P_Mint_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_3P_Pickup_MIC")) - Skins.Add((Id=5120, Weapondef=class'KFWeapDef_FlameThrower', MIC_1P=("WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_3P_Pickup_MIC")) + Skins.Add((Id=5120, Weapondef=class'KFWeapDef_FlameThrower', MIC_1P=("WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_3P_Pickup_MIC")) Skins.Add((Id=5119, Weapondef=class'KFWeapDef_FlameThrower', MIC_1P=("WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_flamethrower.Halloween_Flamethrower_3P_Pickup_MIC")) //Halloween Healer Skins.Add((Id=5124, Weapondef=class'KFWeapDef_Healer', MIC_1P=("WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_1P_Mint_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_3P_Pickup_MIC")) - Skins.Add((Id=5123, Weapondef=class'KFWeapDef_Healer', MIC_1P=("WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_3P_Pickup_MIC")) + Skins.Add((Id=5123, Weapondef=class'KFWeapDef_Healer', MIC_1P=("WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_3P_Pickup_MIC")) Skins.Add((Id=5122, Weapondef=class'KFWeapDef_Healer', MIC_1P=("WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_healer.Halloween_Healer_3P_Pickup_MIC")) //Halloween HZ12 Skins.Add((Id=5127, Weapondef=class'KFWeapDef_HZ12', MIC_1P=("WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_1P_Mint_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_3P_Pickup_MIC")) - Skins.Add((Id=5126, Weapondef=class'KFWeapDef_HZ12', MIC_1P=("WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_3P_Pickup_MIC")) + Skins.Add((Id=5126, Weapondef=class'KFWeapDef_HZ12', MIC_1P=("WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_3P_Pickup_MIC")) Skins.Add((Id=5125, Weapondef=class'KFWeapDef_HZ12', MIC_1P=("WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_hz12.Halloween_HZ12_3P_Pickup_MIC")) //Halloween Katana Skins.Add((Id=5130, Weapondef=class'KFWeapDef_Katana', MIC_1P=("WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_1P_Mint_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_3P_Pickup_MIC")) - Skins.Add((Id=5129, Weapondef=class'KFWeapDef_Katana', MIC_1P=("WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_3P_Pickup_MIC")) + Skins.Add((Id=5129, Weapondef=class'KFWeapDef_Katana', MIC_1P=("WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_3P_Pickup_MIC")) Skins.Add((Id=5128, Weapondef=class'KFWeapDef_Katana', MIC_1P=("WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_katana.Halloween_Katana_3P_Pickup_MIC")) //Halloween Kriss Skins.Add((Id=5133, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_1P_Mint_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_3P_Pickup_MIC")) - Skins.Add((Id=5132, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_3P_Pickup_MIC")) + Skins.Add((Id=5132, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_3P_Pickup_MIC")) Skins.Add((Id=5131, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_kriss.Halloween_Kriss_3P_Pickup_MIC")) //Halloween M79 Skins.Add((Id=5136, Weapondef=class'KFWeapDef_M79', MIC_1P=("WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_1P_Mint_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_3P_Pickup_MIC")) - Skins.Add((Id=5135, Weapondef=class'KFWeapDef_M79', MIC_1P=("WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_3P_Pickup_MIC")) + Skins.Add((Id=5135, Weapondef=class'KFWeapDef_M79', MIC_1P=("WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_3P_Pickup_MIC")) Skins.Add((Id=5134, Weapondef=class'KFWeapDef_M79', MIC_1P=("WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_m79.Halloween_M79_3P_Pickup_MIC")) //Halloween Stoner 63A Skins.Add((Id=5139, Weapondef=class'KFWeapDef_Stoner63A', MIC_1P=("WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_1P_Mint_MIC", "WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_Receiver_1P_Mint_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_3P_Pickup_MIC")) - Skins.Add((Id=5138, Weapondef=class'KFWeapDef_Stoner63A', MIC_1P=("WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_1P_FieldTested_MIC", "WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_Receiver_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_3P_Pickup_MIC")) + Skins.Add((Id=5138, Weapondef=class'KFWeapDef_Stoner63A', MIC_1P=("WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_1P_FieldTested_MIC", "WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_Receiver_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_3P_Pickup_MIC")) Skins.Add((Id=5137, Weapondef=class'KFWeapDef_Stoner63A', MIC_1P=("WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_1P_BattleScarred_MIC", "WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_Receiver_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet14_MAT.halloween_stoner63a.Halloween_Stoner63a_3P_Pickup_MIC")) //Neon MB500 Skins.Add((Id=5160, Weapondef=class'KFWeapDef_MB500', MIC_1P=("WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_1P_Mint_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_3P_Pickup_MIC")) - Skins.Add((Id=5159, Weapondef=class'KFWeapDef_MB500', MIC_1P=("WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_3P_Pickup_MIC")) + Skins.Add((Id=5159, Weapondef=class'KFWeapDef_MB500', MIC_1P=("WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_3P_Pickup_MIC")) Skins.Add((Id=5158, Weapondef=class'KFWeapDef_MB500', MIC_1P=("WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_mb500.Neon_MB500_3P_Pickup_MIC")) //Neon Railgun Skins.Add((Id=5163, Weapondef=class'KFWeapDef_RailGun', MIC_1P=("WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_1P_Mint_MIC", "WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_3P_Pickup_MIC")) - Skins.Add((Id=5162, Weapondef=class'KFWeapDef_RailGun', MIC_1P=("WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_1P_FieldTested_MIC", "WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_Scope_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_3P_Pickup_MIC")) + Skins.Add((Id=5162, Weapondef=class'KFWeapDef_RailGun', MIC_1P=("WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_1P_FieldTested_MIC", "WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_Scope_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_3P_Pickup_MIC")) Skins.Add((Id=5161, Weapondef=class'KFWeapDef_RailGun', MIC_1P=("WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_1P_BattleScarred_MIC", "WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_Scope_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_railgun.Neon_Railgun_3P_Pickup_MIC")) //Neon RPG7 Skins.Add((Id=5166, Weapondef=class'KFWeapDef_RPG7', MIC_1P=("WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_1P_Mint_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_3P_Pickup_MIC")) - Skins.Add((Id=5165, Weapondef=class'KFWeapDef_RPG7', MIC_1P=("WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_3P_Pickup_MIC")) + Skins.Add((Id=5165, Weapondef=class'KFWeapDef_RPG7', MIC_1P=("WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_3P_Pickup_MIC")) Skins.Add((Id=5164, Weapondef=class'KFWeapDef_RPG7', MIC_1P=("WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_rpg7.Neon_RPG7_3P_Pickup_MIC")) //Neon Scar Skins.Add((Id=5169, Weapondef=class'KFWeapDef_SCAR', MIC_1P=("WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_1P_Mint_MIC", "WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_3P_Pickup_MIC")) - Skins.Add((Id=5168, Weapondef=class'KFWeapDef_SCAR', MIC_1P=("WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_1P_FieldTested_MIC", "WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_Scope_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_3P_Pickup_MIC")) + Skins.Add((Id=5168, Weapondef=class'KFWeapDef_SCAR', MIC_1P=("WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_1P_FieldTested_MIC", "WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_Scope_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_3P_Pickup_MIC")) Skins.Add((Id=5167, Weapondef=class'KFWeapDef_SCAR', MIC_1P=("WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_1P_BattleScarred_MIC", "WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_Scope_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_scar.Neon_SCAR_3P_Pickup_MIC")) //Neon M1911 Skins.Add((Id=5172, Weapondef=class'KFWeapDef_Colt1911', MIC_1P=("WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_1P_Mint_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_3P_Pickup_MIC")) - Skins.Add((Id=5171, Weapondef=class'KFWeapDef_Colt1911', MIC_1P=("WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_3P_Pickup_MIC")) + Skins.Add((Id=5171, Weapondef=class'KFWeapDef_Colt1911', MIC_1P=("WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_3P_Pickup_MIC")) Skins.Add((Id=5170, Weapondef=class'KFWeapDef_Colt1911', MIC_1P=("WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_m1911.Neon_M1911_3P_Pickup_MIC")) //Neon Katana Skins.Add((Id=5175, Weapondef=class'KFWeapDef_Katana', MIC_1P=("WEP_SkinSet16_MAT.neon_katana.Neon_Katana_1P_Mint_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_katana.Neon_Katana_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_katana.Neon_Katana_3P_Pickup_MIC")) - Skins.Add((Id=5174, Weapondef=class'KFWeapDef_Katana', MIC_1P=("WEP_SkinSet16_MAT.neon_katana.Neon_Katana_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_katana.Neon_Katana_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_katana.Neon_Katana_3P_Pickup_MIC")) + Skins.Add((Id=5174, Weapondef=class'KFWeapDef_Katana', MIC_1P=("WEP_SkinSet16_MAT.neon_katana.Neon_Katana_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_katana.Neon_Katana_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_katana.Neon_Katana_3P_Pickup_MIC")) Skins.Add((Id=5173, Weapondef=class'KFWeapDef_Katana', MIC_1P=("WEP_SkinSet16_MAT.neon_katana.Neon_Katana_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_katana.Neon_Katana_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_katana.Neon_Katana_3P_Pickup_MIC")) //Neon Dragonsbreath Skins.Add((Id=5178, Weapondef=class'KFWeapDef_DragonsBreath', MIC_1P=("WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_1P_Mint_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_3P_Pickup_MIC")) - Skins.Add((Id=5177, Weapondef=class'KFWeapDef_DragonsBreath', MIC_1P=("WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_3P_Pickup_MIC")) + Skins.Add((Id=5177, Weapondef=class'KFWeapDef_DragonsBreath', MIC_1P=("WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_3P_Pickup_MIC")) Skins.Add((Id=5176, Weapondef=class'KFWeapDef_DragonsBreath', MIC_1P=("WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_dragonsbreath.Neon_DragonsBreath_3P_Pickup_MIC")) //Neon Kriss Skins.Add((Id=5181, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_1P_Mint_MIC", "WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_Sight_1P_Mint_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_3P_Pickup_MIC")) - Skins.Add((Id=5180, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_1P_FieldTested_MIC", "WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_Sight_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_3P_Pickup_MIC")) + Skins.Add((Id=5180, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_1P_FieldTested_MIC", "WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_Sight_1P_FieldTested_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_3P_Pickup_MIC")) Skins.Add((Id=5179, Weapondef=class'KFWeapDef_Kriss', MIC_1P=("WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_1P_BattleScarred_MIC", "WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_Sight_1P_BattleScarred_MIC"), MIC_3P="WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet16_MAT.neon_kriss.Neon_KRISS_3P_Pickup_MIC")) //Vault Pink MP7 Skins.Add((Id=5291, Weapondef=class'KFWeapDef_MP7', MIC_1P=("WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_1P_Mint_MIC", "WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_3P_Mint_MIC", MIC_Pickup="WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_3P_Pickup_MIC")) - Skins.Add((Id=5290, Weapondef=class'KFWeapDef_MP7', MIC_1P=("WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_1P_FieldTested_MIC", "WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_3P_Pickup_MIC")) + Skins.Add((Id=5290, Weapondef=class'KFWeapDef_MP7', MIC_1P=("WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_1P_FieldTested_MIC", "WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_3P_FieldTested_MIC", MIC_Pickup="WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_3P_Pickup_MIC")) Skins.Add((Id=5289, Weapondef=class'KFWeapDef_MP7', MIC_1P=("WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_1P_BattleScarred_MIC", "WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_Scope_1P_Mint_MIC"), MIC_3P="WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_3P_BattleScarred_MIC", MIC_Pickup="WEP_SkinSet17_MAT.cute_mp7.Vault_Cute_MP7_3P_Pickup_MIC")) //Vault Honorable Death AK12 @@ -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..bb27173 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(); @@ -1499,7 +1499,7 @@ simulated function float GetZedTimeExtensions(byte Level) simulated function float GetTightChokeModifier() { - return Modifiers[3]; + return Modifiers[3]; } defaultproperties @@ -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..67349cc 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,40 +205,40 @@ 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 + + SelfHealingSurgePct=0.1f MaxHealingSpeedBoost=30 HealingSpeedBoostDuration=5.f 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_TraitKnockback.uc b/ServerExt/Classes/Ext_TraitKnockback.uc index ef9fa77..a9a8d05 100644 --- a/ServerExt/Classes/Ext_TraitKnockback.uc +++ b/ServerExt/Classes/Ext_TraitKnockback.uc @@ -20,7 +20,7 @@ defaultproperties DefLevelCosts(2)=40 DefLevelCosts(3)=60 DefMinLevel=70 - + ChanceValues(0)=0.8 ChanceValues(1)=0.5 ChanceValues(2)=0.3 diff --git a/ServerExt/Classes/Ext_TraitMachineGunner.uc b/ServerExt/Classes/Ext_TraitMachineGunner.uc index 0177a73..6282953 100644 --- a/ServerExt/Classes/Ext_TraitMachineGunner.uc +++ b/ServerExt/Classes/Ext_TraitMachineGunner.uc @@ -15,7 +15,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_TraitSirenResistance.uc b/ServerExt/Classes/Ext_TraitSirenResistance.uc index 194fa9c..0801cfe 100644 --- a/ServerExt/Classes/Ext_TraitSirenResistance.uc +++ b/ServerExt/Classes/Ext_TraitSirenResistance.uc @@ -13,5 +13,5 @@ static function TraitDeActivate(Ext_PerkBase Perk, byte Level, optional Ext_Trai defaultproperties { DefLevelCosts(0)=50 - DefMinLevel=75 + DefMinLevel=75 } \ No newline at end of file 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..a5114d0 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); } @@ -54,7 +54,7 @@ static function ApplyEffectOn(KFPawn_Human Player, Ext_PerkBase Perk, byte Level { Inv = Player.CreateInventory(IC,Player.Weapon!=None); if (KFWeapon(Inv)!=None) - KFWeapon(Inv).bGivenAtStart = true; + KFWeapon(Inv).bGivenAtStart = true; } } if (M!=None) 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 +} diff --git a/builder.cfg b/builder.cfg index 7e4563e..9b4e0b6 100644 --- a/builder.cfg +++ b/builder.cfg @@ -7,7 +7,7 @@ StripSource="True" # Mutators to be compiled # Specify them with a space as a separator, -# Mutators will be compiled in the specified order +# Mutators will be compiled in the specified order PackageBuildOrder="ServerExt ServerExtMut" @@ -16,7 +16,7 @@ PackageBuildOrder="ServerExt ServerExtMut" # Packages you want to brew using @peelz's patched KFEditor. # Useful for cases where regular brew doesn't put *.upk inside the package. # Specify them with a space as a separator, -# The order doesn't matter +# The order doesn't matter PackagePeelzBrew="" @@ -24,7 +24,7 @@ PackagePeelzBrew="" # Mutators that will be uploaded to the workshop # Specify them with a space as a separator, -# The order doesn't matter +# The order doesn't matter PackageUpload="ServerExt ServerExtMut"
Edit Array "$ExtAdminUI.ConfigList[EditPageIndex].Configs[i].UIName$"Delete Line
"$InfoStr$":